+++ /dev/null
-#
-# Copyright (C) 2006-2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=aiccu
-PKG_VERSION:=20070115
-PKG_RELEASE:=16
-
-PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://www.sixxs.net/archive/sixxs/aiccu/unix
-PKG_MD5SUM:=c9bcc83644ed788e22a7c3f3d4021350
-PKG_LICENSE:=BSD-3-Clause
-PKG_LICENSE_FILES:=doc/LICENSE
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/aiccu/Default
- TITLE:=SixXS IPv6 Connectivity Client ($(1))
- SECTION:=net
- CATEGORY:=Network
- VARIANT:=$(2)
- DEPENDS:=+libpthread +ip +kmod-sit +kmod-tun $(3)
- URL:=http://www.sixxs.net/tools/aiccu/
- MAINTAINER:=Ondrej Caletka <ondrej@caletka.cz>
-endef
-
-Package/aiccu=$(call Package/aiccu/Default,without GNUTLS support,default)
-Package/aiccu-gnutls=$(call Package/aiccu/Default,with GNUTLS support,gnutls,+libgnutls)
-
-define Build/Configure
- $(SED) "s,strip,/bin/true," $(PKG_BUILD_DIR)/unix-console/Makefile
-endef
-
-ifeq ($(BUILD_VARIANT),gnutls)
-CONFIG_AICCU_GNUTLS:=y
-endif
-
-define Build/Compile
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC="$(TARGET_CC)" OS_NAME="Linux" OS_VERSION="$(LINUX_VERSION)" \
- EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
- EXTRA_LDFLAGS="$(TARGET_LDFLAGS) -pthread" \
- $(if $(CONFIG_AICCU_GNUTLS),HAVE_GNUTLS=1) \
- DEBUG=0
-endef
-
-define Package/aiccu/conffiles
-/etc/config/aiccu
-endef
-
-Package/aiccu-gnutls/conffiles=$(call Package/aiccu/conffiles)
-
-define Package/aiccu/install
- $(INSTALL_DIR) $(1)/usr/sbin $(1)/lib/netifd/proto $(1)/etc/hotplug.d/ntp
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/unix-console/$(PKG_NAME) $(1)/usr/sbin/
- $(INSTALL_BIN) ./files/aiccu.sh $(1)/lib/netifd/proto/aiccu.sh
- $(INSTALL_DATA) ./files/aiccu.hotplug $(1)/etc/hotplug.d/ntp/10-aiccu
-endef
-
-Package/aiccu-gnutls/install=$(call Package/aiccu/install,$(1))
-
-$(eval $(call BuildPackage,aiccu))
-$(eval $(call BuildPackage,aiccu-gnutls))
+++ /dev/null
-#!/bin/sh
-NTPSTRATUMFILE="/var/run/aiccu_ntp_stratum"
-echo $stratum > "$NTPSTRATUMFILE"
+++ /dev/null
-#!/bin/sh
-# aiccu.sh - AICCU proto
-# Copyright (c) 2014 OpenWrt.org
-
-[ -n "$INCLUDE_ONLY" ] || {
- . /lib/functions.sh
- . /lib/functions/network.sh
- . ../netifd-proto.sh
- init_proto "$@"
-}
-
-proto_aiccu_setup() {
- local cfg="$1"
- local iface="$2"
- local link="aiccu-$cfg"
-
- local username password protocol server ip6prefix tunnelid requiretls defaultroute nat heartbeat verbose sourcerouting ip6addr ntpsynctimeout
- json_get_vars username password protocol server ip6prefix tunnelid requiretls defaultroute nat heartbeat verbose sourcerouting ip6addr ntpsynctimeout
-
- [ -z "$username" -o -z "$password" ] && {
- proto_notify_error "$cfg" "MISSING_USERNAME_OR_PASSWORD"
- proto_block_restart "$cfg"
- return
- }
-
- ( proto_add_host_dependency "$cfg" 0.0.0.0 )
-
- CFGFILE="/var/etc/${link}.conf"
- PIDFILE="/var/run/${link}.pid"
- NTPSTRATUMFILE="/var/run/aiccu_ntp_stratum"
- mkdir -p /var/run /var/etc
-
- echo "username $username" > "$CFGFILE"
- echo "password $password" >> "$CFGFILE"
- echo "ipv6_interface $link" >> "$CFGFILE"
- [ -n "$server" ] && echo "server $server" >> "$CFGFILE"
- [ -n "$protocol" ] && echo "protocol $protocol" >> "$CFGFILE"
- [ -n "$tunnelid" ] && echo "tunnel_id $tunnelid" >> "$CFGFILE"
- [ "$requiretls" == 1 ] && echo "requiretls true" >> "$CFGFILE"
- [ "$nat" == 1 ] && echo "behindnat true" >> "$CFGFILE"
- [ "$heartbeat" == 1 ] && echo "makebeats true" >> "$CFGFILE"
- [ "$verbose" == 1 ] && echo "verbose true" >> "$CFGFILE"
- echo "defaultroute false" >> "$CFGFILE"
- echo "daemonize true" >> "$CFGFILE"
- echo "pidfile $PIDFILE" >> "$CFGFILE"
-
- # By default, wait at most 90 seconds for NTP sync
- [ -z "$ntpsynctimeout" ] && ntpsynctimeout=90
- for i in $(seq 1 $ntpsynctimeout); do
- [ -f "$NTPSTRATUMFILE" ] && \
- [ "$(cat $NTPSTRATUMFILE)" -lt 16 ] && \
- echo "NTP synced, stratum $(cat $NTPSTRATUMFILE)" && break
- [ "$(( $i % 10 ))" -eq 0 ] && echo "Waiting ${i} secs for NTP sync..."
- sleep 1
- done
-
- aiccu start "$CFGFILE"
-
- [ "$?" -ne 0 ] && {
- proto_notify_error "$cfg" "AICCU_FAILED_SEE_LOG"
- proto_block_restart "$cfg"
- return
- }
-
- proto_init_update "$link" 1
-
- local source=""
- [ "$sourcerouting" != "0" ] && source="::/128"
- [ "$defaultroute" != "0" ] && proto_add_ipv6_route "::" 0 "" "" "" "$source"
-
- [ -n "$ip6addr" ] && {
- local local6="${ip6addr%%/*}"
- local mask6="${ip6addr##*/}"
- [[ "$local6" = "$mask6" ]] && mask6=
- proto_add_ipv6_address "$local6" "$mask6"
- [ "$defaultroute" != "0" -a "$sourcerouting" != "0" ] && proto_add_ipv6_route "::" 0 "" "" "" "$local6/$mask6"
- }
-
- [ -n "$ip6prefix" ] && {
- proto_add_ipv6_prefix "$ip6prefix"
- [ "$defaultroute" != "0" -a "$sourcerouting" != "0" ] && proto_add_ipv6_route "::" 0 "" "" "" "$ip6prefix"
- }
-
- proto_send_update "$cfg"
-
-}
-
-proto_aiccu_teardown() {
- local cfg="$1"
- local link="aiccu-$cfg"
- CFGFILE="/var/etc/${link}.conf"
- PIDFILE="/var/run/${link}.pid"
- [ -f "$CFGFILE" -a -f "$PIDFILE" ] && {
- local pid="$(cat "$PIDFILE")"
- [ -d /proc/$pid -a $(cat /proc/$pid/comm) = "aiccu" ] && \
- aiccu stop "$CFGFILE"
- }
-}
-
-proto_aiccu_init_config() {
- no_device=1
- available=1
- proto_config_add_string "username"
- proto_config_add_string "password"
- proto_config_add_string "protocol"
- proto_config_add_string "server"
- proto_config_add_string "ip6addr:ip6addr"
- proto_config_add_string "ip6prefix:ip6addr"
- proto_config_add_string "tunnelid"
- proto_config_add_boolean "requiretls"
- proto_config_add_boolean "defaultroute"
- proto_config_add_boolean "sourcerouting"
- proto_config_add_boolean "nat"
- proto_config_add_boolean "heartbeat"
- proto_config_add_boolean "verbose"
- proto_config_add_int "ntpsynctimeout"
-}
-
-[ -n "$INCLUDE_ONLY" ] || {
- add_protocol aiccu
-}
+++ /dev/null
---- a/unix-console/Makefile
-+++ b/unix-console/Makefile
-@@ -25,7 +25,8 @@ CWARNS += -W -Wall -Wshadow -Wpointer-ar
- # CWARNS += -Wpacked
-
- #CFLAGS += $(CWARNS) -D_GNU_SOURCE -D_DEBUG -g3 -O0
--CFLAGS += $(CWARNS) -D_GNU_SOURCE
-+CFLAGS += $(CWARNS) $(EXTRA_CFLAGS) -D_GNU_SOURCE
-+LDFLAGS += $(EXTRA_LDFLAGS)
- CC = @gcc
- RM = rm
-
-@@ -40,25 +41,25 @@ CFLAGS += -D AICCU_CONSOLE
- # GnuTLS Support ?
- # Used by TIC to secure that communication
- # Currently defaultly builds only on Linux, but other platforms might easily also support it
--ifeq ($(shell uname | grep -c "Linux"),1)
-+ifneq ($(HAVE_GNUTLS),)
- CFLAGS += -D AICCU_GNUTLS
- LDFLAGS += -lgnutls
- endif
-
- # Linux
--ifeq ($(shell uname | grep -c "Linux"),1)
-+ifeq ($(OS_NAME),Linux)
- CFLAGS += -D_LINUX -D HAS_IFHEAD -D AICCU_TYPE="\"linux\""
- SRCS += ../common/aiccu_linux.c
- OBJS += ../common/aiccu_linux.o
--LDFLAGS += -lpthread -lresolv
-+LDFLAGS += -pthread -lresolv
- endif
-
- # FreeBSD
--ifeq ($(shell uname | grep -c "FreeBSD"),1)
-+ifeq ($(OS_NAME),FreeBSD)
- CFLAGS += -D_FREEBSD
-
- # FreeBSD 4.x
--ifeq ($(shell uname -r | cut -c 1),4)
-+ifeq ($(shell echo $(OS_VERSION) | cut -c 1),4)
- CFLAGS += -D AICCU_TYPE="\"freebsd4\""
- SRCS += ../common/aiccu_freebsd4.c
- OBJS += ../common/aiccu_freebsd4.o
-@@ -71,7 +72,7 @@ endif
- endif
-
- # DragonFlyBSD
--ifeq ($(shell uname | grep -c "DragonFly"),1)
-+ifeq ($(OS_NAME),DragonFly)
- CFLAGS += -D_DFBSD -D NEED_IFHEAD -D AICCU_TYPE="\"dragonfly\""
- SRCS += ../common/aiccu_freebsd4.c
- OBJS += ../common/aiccu_freebsd4.o
-@@ -79,7 +80,7 @@ CFLAGS += -pthread
- endif
-
- # NetBSD
--ifeq ($(shell uname | grep -c "NetBSD"),1)
-+ifeq ($(OS_NAME),NetBSD)
- CFLAGS += -D_NETBSD -D AICCU_TYPE="\"kame\""
-
- # Check if net/if_tun.h has TUNSIFHEAD and enable support for it
-@@ -97,10 +98,10 @@ CFLAGS += -pthread -D_NETBSD_SOURCE
- endif
-
- # OpenBSD
--ifeq ($(shell uname | grep -c "OpenBSD"),1)
-+ifeq ($(OS_NAME),OpenBSD)
- CFLAGS += -D_OPENBSD -D HAS_IFHEAD
- # 2.7-2.9
--ifeq ($(shell uname -r | cut -c 1),2)
-+ifeq ($(shell echo $(OS_VERSION) | cut -c 1),2)
- CFLAGS += -D AICCU_TYPE="\"openbsd2\""
- SRCS += ../common/aiccu_openbsd2.c
- OBJS += ../common/aiccu_openbsd2.o
-@@ -114,7 +115,7 @@ CFLAGS += -pthread
- endif
-
- # Darwin
--ifeq ($(shell uname | grep -c "Darwin"),1)
-+ifeq ($(OS_NAME),Darwin)
- CFLAGS += -D_DARWIN -D NEED_IFHEAD -D AICCU_TYPE="\"darwin\""
- SRCS += ../common/aiccu_darwin.c
- OBJS += ../common/aiccu_darwin.o
-@@ -122,7 +123,7 @@ LDFLAGS += -lresolv
- endif
-
- # SunOS / Solaris
--ifeq ($(shell uname | grep -c "SunOS"),1)
-+ifeq ($(OS_NAME),SunOS)
- CFLAGS += -D_SUNOS -D AICCU_TYPE="\"sunos\""
- SRCS += ../common/aiccu_sunos.c
- OBJS += ../common/aiccu_sunos.o
-@@ -130,7 +131,7 @@ LDFLAGS += -lsocket -lnsl -lresolv
- endif
-
- # AIX
--ifeq ($(shell uname | grep -c "AIX"),1)
-+ifeq ($(OS_NAME),AIX)
- CC = @/usr/vac/bin/xlc_r
- CFLAGS = -qthreaded -q64 -qlanglvl=stdc99 -bmaxdata:0xD0000000 -D_64BIT -g -qdbxextra -qfullpath -qheapdebug -qformat=all -qcheck=all
- CFLAGS += -D AICCU_CONSOLE
+++ /dev/null
---- /dev/null
-+++ b/common/dn_skipname.c
-@@ -0,0 +1,51 @@
-+#include <errno.h>
-+#include <resolv.h>
-+
-+/* Ripped from glibc 2.4 sources. */
-+
-+/*
-+ * ns_name_skip(ptrptr, eom)
-+ * Advance *ptrptr to skip over the compressed name it points at.
-+ * return:
-+ * 0 on success, -1 (with errno set) on failure.
-+ */
-+int ns_name_skip(const u_char **ptrptr, const u_char *eom)
-+{
-+ const u_char *cp;
-+ u_int n;
-+
-+ cp = *ptrptr;
-+ while (cp < eom && (n = *cp++) != 0)
-+ {
-+ /* Check for indirection. */
-+ switch (n & NS_CMPRSFLGS) {
-+ case 0: /* normal case, n == len */
-+ cp += n;
-+ continue;
-+ case NS_CMPRSFLGS: /* indirection */
-+ cp++;
-+ break;
-+ default: /* illegal type */
-+ errno = EMSGSIZE;
-+ return (-1);
-+ }
-+ break;
-+ }
-+ if (cp > eom)
-+ {
-+ errno = EMSGSIZE;
-+ return (-1);
-+ }
-+ *ptrptr = cp;
-+ return (0);
-+}
-+
-+int dn_skipname(const u_char *ptr, const u_char *eom)
-+{
-+ const u_char *saveptr = ptr;
-+
-+ if(ns_name_skip(&ptr, eom) == -1)
-+ return (-1);
-+ return (ptr - saveptr);
-+}
-+
---- a/unix-console/Makefile
-+++ b/unix-console/Makefile
-@@ -10,9 +10,9 @@
- # $Date: 2007-01-15 11:04:27 $
- # **********************************************************/
-
--SRCS = main.c ../common/tun.c ../common/aiccu.c ../common/hash_md5.c ../common/hash_sha1.c ../common/common.c ../common/heartbeat.c ../common/tic.c ../common/ayiya.c ../common/aiccu_test.c ../common/resolver.c
-+SRCS = main.c ../common/tun.c ../common/aiccu.c ../common/hash_md5.c ../common/hash_sha1.c ../common/common.c ../common/heartbeat.c ../common/tic.c ../common/ayiya.c ../common/aiccu_test.c ../common/resolver.c ../common/dn_skipname.c
- INCS = ../common/tun.h ../common/aiccu.h ../common/hash_md5.h ../common/hash_sha1.h ../common/common.h ../common/heartbeat.h ../common/tic.h ../common/ayiya.h ../common/resolver.h
--OBJS = main.o ../common/tun.o ../common/aiccu.o ../common/hash_md5.o ../common/hash_sha1.o ../common/common.o ../common/heartbeat.o ../common/tic.o ../common/ayiya.o ../common/aiccu_test.o ../common/resolver.o
-+OBJS = main.o ../common/tun.o ../common/aiccu.o ../common/hash_md5.o ../common/hash_sha1.o ../common/common.o ../common/heartbeat.o ../common/tic.o ../common/ayiya.o ../common/aiccu_test.o ../common/resolver.o ../common/dn_skipname.o
-
- # New features not fully implemented and thus disabled for now
- #CFLAGS += -D NEWSTUFF_TSP -D NEWSTUFF_TEEPEE
+++ /dev/null
---- a/common/resolver.c
-+++ b/common/resolver.c
-@@ -26,7 +26,7 @@
-
- int getrrs(const char *label, int rrtype, void gotrec(unsigned int num, int type, const char *record))
- {
--#ifdef _LINUX
-+#if defined(_LINUX) && defined(__GLIBC__) && !defined(__UCLIBC__)
- struct __res_state res;
- #endif
- unsigned char answer[8192];
-@@ -38,7 +38,7 @@ int getrrs(const char *label, int rrtype
- uint16_t type = 0, class = 0;
- uint32_t ttl = 0;
-
--#ifdef _LINUX
-+#if defined(_LINUX) && defined(__GLIBC__) && !defined(__UCLIBC__)
- memset(&res, 0, sizeof(res));
- res.options = RES_DEBUG;
- res_ninit(&res);
-@@ -47,7 +47,7 @@ int getrrs(const char *label, int rrtype
- #endif
-
- memset(answer, 0, sizeof(answer));
--#ifdef _LINUX
-+#if defined(_LINUX) && defined(__GLIBC__) && !defined(__UCLIBC__)
- ret = res_nquery(&res, label, C_IN, rrtype, answer, sizeof(answer));
- #else
- ret = res_query(label, C_IN, rrtype, answer, sizeof(answer));
+++ /dev/null
---- a/common/common.h
-+++ b/common/common.h
-@@ -50,6 +50,7 @@
- #include <signal.h>
- #include <sys/types.h>
- #include <sys/stat.h>
-+#include <sys/uio.h>
- #include <fcntl.h>
-
- #if defined(_SUNOS) || defined(_AIX) || defined(_DARWIN)
-@@ -91,7 +92,9 @@
- #include <sys/select.h>
-
- #include <net/if.h>
-+#if defined(__GLIBC__) || defined(__UCLIBC__)
- #include <netinet/if_ether.h>
-+#endif
- #ifdef linux
- #include <netpacket/packet.h>
- #include <linux/if_tun.h>
---- a/common/dn_skipname.c
-+++ b/common/dn_skipname.c
-@@ -1,6 +1,8 @@
- #include <errno.h>
- #include <resolv.h>
-
-+#include <sys/types.h>
-+
- /* Ripped from glibc 2.4 sources. */
-
- /*
+++ /dev/null
---- aiccu/common/common.c
-+++ aiccu/common/common.c
-@@ -271,8 +271,6 @@
- TLSSOCKET sock_alloc(void)
- {
- #ifdef AICCU_GNUTLS
-- /* Allow connections to servers that have OpenPGP keys as well */
-- const int cert_type_priority[3] = { GNUTLS_CRT_X509, GNUTLS_CRT_OPENPGP, 0 };
- int ret;
- #endif /* AICCU_GNUTLS*/
-
-@@ -300,7 +298,8 @@
- gnutls_set_default_priority(sock->session);
- /* XXX: Return value is not documented in GNUTLS documentation! */
-
-- gnutls_certificate_type_set_priority(sock->session, cert_type_priority);
-+ /* Allow connections to servers that have OpenPGP keys as well */
-+ gnutls_priority_set_direct(sock->session, "NORMAL:+CTYPE-OPENPGP", NULL);
- /* XXX: Return value is not documented in GNUTLS documentation! */
-
- /* Configure the x509 credentials for the current session */
-
PKG_SOURCE_SUBDIR=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=7e8562067d6a366c8cbaa8084396c33b7e12986b
-PKG_MAINTAINER=Joseph C. Lehner <joseph.c.lehner@gmail.com>
+PKG_MAINTAINER:=Joseph C. Lehner <joseph.c.lehner@gmail.com>
PKG_LICENSE=GPL-2.0
PKG_LICENSE_FILES=LICENSE
+++ /dev/null
-#
-# Copyright (C) 2007-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=chardet
-PKG_VERSION:=2.3.0
-PKG_RELEASE:=1
-PKG_LICENSE:=LGPL-2.1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://pypi.python.org/packages/source/c/chardet/
-PKG_MD5SUM:=25274d664ccb5130adae08047416e1a8
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/chardet
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- TITLE:=Universal encoding detector for Python 2 and 3
- URL:=https://github.com/chardet/chardet
- DEPENDS:=+python
-endef
-
-define Package/chardet/description
- Universal encoding detector for Python 2 and 3
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-define Package/chardet/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(INSTALL_DIR) $(1)/usr/bin
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/chardetect \
- $(1)/usr/bin
- # fix python exec path in scripts
- sed -i 's/#!.*/#!\/usr\/bin\/python/g' $(1)/usr/bin/chardetect
-endef
-
-$(eval $(call BuildPackage,chardet))
+++ /dev/null
-#
-# Copyright (C) 2007-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=django-appconf
-PKG_VERSION:=1.0.2
-PKG_RELEASE:=1
-PKG_LICENSE:=BSD-3-Clause
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/34/b9/d07195652ab494b026f7cb0341dd6e5f2e6e39be177abe05e2cec8bd46e4/
-PKG_MD5SUM:=cc11511a47088bc56531df67cd5d6261
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/django-appconf
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- TITLE:=A helper class for handling configuration defaults of packaged apps gracefully.
- URL:=http://django-appconf.readthedocs.org/
- DEPENDS:=+python +django
-endef
-
-define Package/django-appconf/description
- A helper class for handling configuration defaults of packaged apps gracefully.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-define Package/django-appconf/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call BuildPackage,django-appconf))
+++ /dev/null
-#
-# Copyright (C) 2007-2017 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=django-compressor
-PKG_VERSION:=2.1.1
-PKG_RELEASE:=1
-PKG_LICENSE:=MIT
-
-PKG_SOURCE:=django_compressor-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/38/58/03098a826062b856956c7169a8f778ec2b8e2767ddc63da0629062df5621/
-PKG_BUILD_DIR:=$(BUILD_DIR)/django_compressor-$(PKG_VERSION)/
-PKG_MD5SUM:=5e74141076b70272149ed07e6ce0ea56
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/django-compressor
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- TITLE:=Compresses linked and inline JavaScript or CSS into single cached files.
- URL:=http://django-compressor.readthedocs.org/
- DEPENDS:=+python +django
-endef
-
-define Package/django-compressor/description
- Compresses linked and inline JavaScript or CSS into single cached files.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-define Package/django-compressor/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call BuildPackage,django-compressor))
+++ /dev/null
-#
-# Copyright (C) 2007-2017 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=django-constance
-PKG_VERSION:=1.3.4
-PKG_RELEASE:=1
-PKG_LICENSE:=BSD-3-Clause
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/0c/19/74c6bbf29a7882bab377db7a4ca30b43e09173dc1e6cabe163dc8d6a3931/
-PKG_MD5SUM:=2e197701ed93082e5fa41df0f4742294
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/django-constance
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- TITLE:=Django live settings with pluggable backends, including Redis.
- URL:=https://github.com/jazzband/django-constance
- DEPENDS:=+python +django
-endef
-
-define Package/django-constance/description
- Django live settings with pluggable backends, including Redis.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-define Package/django-constance/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call BuildPackage,django-constance))
+++ /dev/null
-#
-# Copyright (C) 2007-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=django-jsonfield
-PKG_VERSION:=1.0.1
-PKG_RELEASE:=1
-PKG_LICENSE:=BSD-3-Clause
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/e4/b2/a079f0a2218e0eb7892edbf404e0bbfbb281a6bbf06966b775f5142ed159/
-PKG_MD5SUM:=2e5e737a3f93f3b5d7ae6026b1340167
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/django-jsonfield
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- TITLE:=JSONField for django models
- URL:=https://github.com/bradjasper/django-jsonfield
- DEPENDS:=+python +django
-endef
-
-define Package/django-jsonfield/description
- JSONField for django models
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-define Package/django-jsonfield/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call BuildPackage,django-jsonfield))
+++ /dev/null
-#
-# Copyright (C) 2007-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=django-picklefield
-PKG_VERSION:=0.3.2
-PKG_RELEASE:=1
-PKG_LICENSE:=MIT
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://pypi.python.org/packages/source/d/django-picklefield/
-PKG_MD5SUM:=b2c17ca9e03704ce33890e6aefc7b2e5
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/django-picklefield
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- TITLE:=Pickled object field for Django
- URL:=http://github.com/gintas/django-picklefield/
- DEPENDS:=+python +django
-endef
-
-define Package/django-picklefield/description
- Pickled object field for Django
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-define Package/django-picklefield/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call BuildPackage,django-picklefield))
+++ /dev/null
-#
-# Copyright (C) 2007-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=django-postoffice
-PKG_VERSION:=2.0.8
-PKG_RELEASE:=1
-PKG_LICENSE:=MIT
-
-PKG_SOURCE:=django-post_office-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/52/25/cc0cfe923f183d7c19b162cac3bf8430ddaed7bad28202b8f93a97d248a4/
-PKG_BUILD_DIR:=$(BUILD_DIR)/django-post_office-$(PKG_VERSION)/
-PKG_MD5SUM:=437bf62cef06381d346ae2bc087c0e3c
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/django-postoffice
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- TITLE:=A Django app to monitor and send mail asynchronously, complete with template support.
- URL:=https://github.com/ui/django-postoffice
- DEPENDS:=+python +django +django-jsonfield
-endef
-
-define Package/django-postoffice/description
- A Django app to monitor and send mail asynchronously, complete with template support.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-define Package/django-postoffice/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call BuildPackage,django-postoffice))
+++ /dev/null
-#
-# Copyright (C) 2007-2017 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=django-restframework
-PKG_VERSION:=3.5.4
-PKG_RELEASE:=1
-PKG_LICENSE:=BSD-3-Clause
-
-PKG_SOURCE:=djangorestframework-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/e9/24/86dfe19fb82a40a3d7a4c50371a8bd85b9277d3506698bf332a6d41d08f6/
-PKG_BUILD_DIR:=$(BUILD_DIR)/djangorestframework-$(PKG_VERSION)
-PKG_MD5SUM:=979808c387dad8d0ebb6025c39dc7b94
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/django-restframework
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- TITLE:=Web APIs for Django, made easy.
- URL:=http://www.django-rest-framework.org/
- DEPENDS:=+python +django
-endef
-
-define Package/django-restframework/description
- Web APIs for Django, made easy.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-define Package/django-restframework/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call BuildPackage,django-restframework))
+++ /dev/null
-#
-# Copyright (C) 2007-2017 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=django-statici18n
-PKG_VERSION:=1.3.0
-PKG_RELEASE:=1
-PKG_LICENSE:=BSD-3-Clause
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/86/6b/2c2e86a7e144ba7b064119eaafb2c8c67665c2a0e722f0819daa9657e551/
-PKG_MD5SUM:=61e22a6f2399f9f829308e4d91b36ee0
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/django-statici18n
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- TITLE:=A Django app that provides helper for generating JavaScript catalog to static files.
- URL:=http://django-statici18n.readthedocs.org/
- DEPENDS:=+python +django
-endef
-
-define Package/django-statici18n/description
- A Django app that provides helper for generating JavaScript catalog to static files.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-define Package/django-statici18n/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call BuildPackage,django-statici18n))
+++ /dev/null
-#
-# Copyright (C) 2007-2017 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=django
-PKG_VERSION:=1.8.17
-PKG_RELEASE=1
-PKG_LICENSE:=BSD-3-Clause
-
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/django/django.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=d3d12fc11da56e4ea8af37a22a9a0aa6579ab2d5
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/django
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- TITLE:=The web framework for perfectionists with deadlines.
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- URL:=https://www.djangoproject.com/
- DEPENDS:=+python
-endef
-
-define Package/django/description
- The web framework for perfectionists with deadlines.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-define Build/InstallDev
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(INSTALL_DIR) $(1)/usr/bin
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/django-admin.py \
- $(1)/usr/bin
-endef
-
-define Package/django/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(INSTALL_DIR) $(1)/usr/bin
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/django-admin.py \
- $(1)/usr/bin
- # fix python exec path
- sed -i 's/#!.*/#!\/usr\/bin\/python/g' $(1)/usr/bin/django-admin.py
-endef
-
-$(eval $(call BuildPackage,django))
+++ /dev/null
-#
-# Copyright (C) 2007-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=et_xmlfile
-PKG_VERSION:=1.0.1
-PKG_RELEASE:=1
-PKG_LICENSE:=MIT
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://pypi.python.org/packages/source/e/et_xmlfile/
-PKG_MD5SUM:=f47940fd9d556375420b2e276476cfaf
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/et_xmlfile
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- TITLE:=An implementation of lxml.xmlfile for the standard library
- URL:=https://bitbucket.org/openpyxl/et_xmlfile
- DEPENDS:=+python
-endef
-
-define Package/et_xmlfile/description
- An implementation of lxml.xmlfile for the standard library
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-define Package/et_xmlfile/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call BuildPackage,et_xmlfile))
+++ /dev/null
-#
-# Copyright (C) 2007-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=flup
-PKG_VERSION:=1.0.2
-PKG_RELEASE:=1
-PKG_LICENSE:=BSD-3-Clause
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://pypi.python.org/packages/source/f/flup/
-PKG_MD5SUM:=24dad7edc5ada31dddd49456ee8d5254
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/flup
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- TITLE:=Random assortment of WSGI servers
- URL:=http://www.saddi.com/software/flup/
- DEPENDS:=+python
-endef
-
-define Package/flup/description
- Random assortment of WSGI servers
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-define Package/flup/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call BuildPackage,flup))
+++ /dev/null
-#
-# Copyright (C) 2007-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=gunicorn
-PKG_VERSION:=19.6.0
-PKG_RELEASE=1
-PKG_LICENSE:=MIT
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/84/ce/7ea5396efad1cef682bbc4068e72a0276341d9d9d0f501da609fab9fcb80/
-PKG_MD5SUM:=338e5e8a83ea0f0625f768dba4597530
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/gunicorn
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- TITLE:=WSGI HTTP Server for UNIX
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- URL:=http://gunicorn.org/
- DEPENDS:=+python +python-setuptools
-endef
-
-define Package/gunicorn/description
- WSGI HTTP Server for UNIX
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-define Package/gunicorn/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(INSTALL_DIR) $(1)/usr/bin
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gunicorn* \
- $(1)/usr/bin
- # fix python exec path in scripts
- $(SED) 's/#!.*/#!\/usr\/bin\/python/g' $(1)/usr/bin/gunicorn*
-endef
-
-$(eval $(call BuildPackage,gunicorn))
+++ /dev/null
-#
-# Copyright (C) 2007-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=jdcal
-PKG_VERSION:=1.2
-PKG_RELEASE:=1
-PKG_LICENSE:=BSD-3-Clause
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://pypi.python.org/packages/source/j/jdcal/
-PKG_MD5SUM:=ab8d5ba300fd1eb01514f363d19b1eb9
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/jdcal
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- TITLE:=Julian dates from proleptic Gregorian and Julian calendars.
- URL:=http://github.com/phn/jdcal
- DEPENDS:=+python
-endef
-
-define Package/jdcal/description
- Julian dates from proleptic Gregorian and Julian calendars.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-define Package/jdcal/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call BuildPackage,jdcal))
PKG_NAME:=lpeg
PKG_VERSION:=0.12.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_MAINTAINER:=Dirk Chang <dirk@kooiot.com>
PKG_LICENSE:=MIT
endef
# add make variable overrides here
-MAKE_FLAGS +=
+MAKE_FLAGS += \
+ COPT="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS) -O2"
define Package/lpeg/install
$(INSTALL_DIR) $(1)/usr/lib/lua
TITLE:=Penlight
URL:=http://stevedonovan.github.io/Penlight/api/manual/01-introduction.md.html
DEPENDS:=+luafilesystem
- MAINTAINER:= Karl Palsson <karlp@remake.is>
+ MAINTAINER:=Karl Palsson <karlp@remake.is>
endef
define Package/lua-penlight/description
+++ /dev/null
-#
-# Copyright (C) 2008-2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=micropython-lib
-PKG_VERSION=1.8.6-$(PKG_SOURCE_VERSION)
-PKG_RELEASE:=1
-
-PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>
-PKG_LICENSE:=MIT, PSFL
-PKG_LICENSE_FILES:=LICENSE
-
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/micropython/micropython-lib.git
-PKG_SOURCE_VERSION:=f81e979c56dddb771ad36ec381b7f2c6cd12111f
-
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION)
-PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
-PKG_BUILD_PARALLEL:=1
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/micropython-lib
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- TITLE:=micropython-lib
- URL:=https://github.com/micropython/micropython-lib
- DEPENDS:=+micropython
-endef
-
-define Package/micropython-lib/description
- This package contains micropython-lib, a project to develop a non-monolothic
- standard library for Micro Python. Note that this is a work in progress and
- several libraries may be missing, incomplete or buggy.
-endef
-
-MAKE_FLAGS:=\
- PREFIX=$(PKG_BUILD_DIR)/_install_tmp/dist \
- install
-
-define Package/micropython-lib/install
- $(INSTALL_DIR) $(1)/usr/lib/micropython
- $(CP) $(PKG_BUILD_DIR)/_install_tmp/dist/* $(1)/usr/lib/micropython
-endef
-
-$(eval $(call BuildPackage,micropython-lib))
-
+++ /dev/null
-#
-# Copyright (C) 2008-2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=micropython
-PKG_VERSION=1.8.6-$(PKG_SOURCE_VERSION)
-PKG_RELEASE:=1
-
-PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>
-PKG_LICENSE:=MIT
-PKG_LICENSE_FILES:=LICENSE
-
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/micropython/micropython.git
-PKG_SOURCE_VERSION:=5a1d63fc14dae788f705403a43c2d8639b7dd9cd
-
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
-PKG_BUILD_PARALLEL:=1
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/micropython
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- TITLE:=Micro Python
- URL:=http://micropython.org
- DEPENDS:=+libffi
-endef
-
-define Package/micropython/description
- This package contains Micro Python, a lean and fast implementation of the Python 3.4 programming language
- that is optimised to run on a microcontroller (and low power computers).
-endef
-
-
-MAKE_FLAGS += -C $(PKG_BUILD_DIR)/unix
-
-define Build/Compile
- $(call Build/Compile/Default,axtls)
- $(call Build/Compile/Default)
-
-endef
-
-define Package/micropython/install
- $(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/unix/micropython $(1)/usr/bin/micropython
-endef
-
-$(eval $(call BuildPackage,micropython))
+++ /dev/null
-Index: micropython-1.5-20161117-e81a5353cb794b8d6c57317488e5db6a1c524755/unix/Makefile
-===================================================================
---- micropython-1.5-20161117-e81a5353cb794b8d6c57317488e5db6a1c524755.orig/unix/Makefile 2016-11-17 02:43:13.000000000 +0100
-+++ micropython-1.5-20161117-e81a5353cb794b8d6c57317488e5db6a1c524755/unix/Makefile 2016-11-17 16:49:02.937809018 +0100
-@@ -21,7 +21,7 @@
- INC += -I$(BUILD)
-
- # compiler settings
--CWARN = -Wall -Werror
-+CWARN = -Wall
- CWARN += -Wpointer-arith -Wuninitialized
- CFLAGS = $(INC) $(CWARN) -ansi -std=gnu99 -DUNIX $(CFLAGS_MOD) $(COPT) $(CFLAGS_EXTRA)
-
+++ /dev/null
-#
-# Copyright (C) 2007-2017 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=openpyxl
-PKG_VERSION:=2.4.2
-PKG_RELEASE:=1
-PKG_LICENSE:=MIT
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/56/c6/a2a7c36196e4732acceca093ce5961db907f5a855b557d6a727a7f59b8b4/
-PKG_MD5SUM:=28b6b5f74f01e6249e8c7f526c57a2e7
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/openpyxl
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- TITLE:=A Python library to read/write Excel 2010 xlsx/xlsm files
- URL:=https://openpyxl.readthedocs.org/
- DEPENDS:=+python +django
-endef
-
-define Package/openpyxl/description
- A Python library to read/write Excel 2010 xlsx/xlsm files
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-define Package/openpyxl/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call BuildPackage,openpyxl))
include $(TOPDIR)/rules.mk
PKG_NAME:=perl
-PKG_VERSION:=5.22.1
-PKG_RELEASE:=4
-
-PKG_SOURCE_URL:=ftp://ftp.cpan.org/pub/CPAN/src/5.0 \
- http://www.cpan.org/src/5.0 \
- ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/src/5.0 \
- http://ftp.mpi-sb.mpg.de/pub/perl/CPAN/src/5.0 \
- ftp://ftp.gmd.de/mirrors/CPAN/src/5.0 \
- http://ftp5.gwdg.de/pub/languages/perl/CPAN/src/ \
- ftp://ftp.funet.fi/pub/languages/perl/CPAN/src/5.0 \
- http://ftp.funet.fi/pub/languages/perl/CPAN/src/5.0
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_MD5SUM:=19295bbb775a3c36123161b9bf4892f1
+PKG_VERSION:=5.24.1
+PKG_RELEASE:=1
+
+PKG_SOURCE_URL:=\
+ https://cpan.metacpan.org/src/5.0 \
+ https://cpan.uib.no/src/5.0 \
+ https://mirrors.rit.edu/CPAN/src/5.0 \
+ https://mirror.transip.net/CPAN/src/5.0 \
+ https://mirrors.sonic.net/cpan/src/5.0 \
+ https://www.cpan.org/src/5.0
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_MD5SUM:=af6a84c7c3e2b8b269c105a5db2f6d53
+PKG_HASH:=03a77bac4505c270f1890ece75afc7d4b555090b41aa41ea478747e23b2afb3f
PKG_LICENSE:=GPL-1.0+ Artistic-1.0-Perl
PKG_LICENSE_FILES:=Copying Artistic README
d_dosuid='undef'
d_drand48proto='define'
d_dup2='define'
+d_duplocale='define'
d_eaccess='undef'
d_endgrent='define'
d_endgrent_r='undef'
d_fcntl_can_lock='define'
d_fd_macros='define'
d_fd_set='define'
+d_fdclose='undef'
d_fdim='define'
d_fgetpos='define'
d_finite='define'
d_fpclassl='undef'
d_fpgetround='undef'
d_fpos64_t='undef'
+d_freelocale='define'
d_frexpl='undef'
d_fs_data_s='undef'
d_fseeko='define'
d_memchr='define'
d_memcmp='define'
d_memcpy='define'
+d_memmem='define'
d_memmove='define'
d_memset='define'
d_mkdir='define'
d_ndbm='undef'
d_ndbm_h_uses_prototypes='undef'
d_nearbyint='define'
+d_newlocale='define'
d_nextafter='define'
d_nice='define'
d_nl_langinfo='define'
d_shmdt='define'
d_shmget='define'
d_sigaction='define'
+d_siginfo_si_addr='define'
+d_siginfo_si_band='define'
+d_siginfo_si_errno='define'
+d_siginfo_si_fd='define'
+d_siginfo_si_pid='define'
+d_siginfo_si_status='define'
+d_siginfo_si_uid='define'
+d_siginfo_si_value='define'
d_signbit='undef'
d_sigprocmask='define'
d_sigsetjmp='define'
d_union_semun='undef'
d_unordered='undef'
d_unsetenv='define'
+d_uselocale='define'
d_usleep='define'
d_usleepproto='define'
d_ustat='define'
# Set the version here
PERL_REVISION=5
-PERL_VERSION=22
+PERL_VERSION=24
PERL_SUBVERSION=1
# (api_revison, api_version, api_subversion) = (revision, version, 0) usually
PERL_API_REVISION=5
-PERL_API_VERSION=22
+PERL_API_VERSION=24
PERL_API_SUBVERSION=0
known_extensions='B Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/Glob Filter/Util/Call GDBM_File Hash/Util I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Text/Soundex Time/HiRes Time/Piece Unicode/Normalize Win32 Win32API/File Win32CORE XS/APItest XS/Typemap attrs re threads threads/shared Hash/Util/FieldHash'
--- a/Makefile.SH
+++ b/Makefile.SH
-@@ -316,22 +316,11 @@ MANIFEST_SRT = MANIFEST.srt
+@@ -333,22 +333,11 @@ MANIFEST_SRT = MANIFEST.srt
!GROK!THIS!
+++ /dev/null
-perl: Work around recompile failures
-
-Apparently, recompiling/relinking fails under some circumstances. This
-patch has been reported to work around that issue.
-
---- a/Makefile.SH
-+++ b/Makefile.SH
-@@ -818,7 +818,7 @@ $(LIBPERL): $& $(obj) $(DYNALOADER) $(LI
- true)
- $spitshell >>$Makefile <<'!NO!SUBS!'
- rm -f $@
-- $(LD) -o $@ $(SHRPLDFLAGS) $(obj) $(DYNALOADER) $(libs)
-+ $(CC) -o $@ $(SHRPLDFLAGS) $(obj) $(DYNALOADER) $(libs)
- !NO!SUBS!
- case "$osname" in
- aix)
--- /dev/null
+--- a/cpan/podlators/Makefile.PL
++++ b/cpan/podlators/Makefile.PL
+@@ -18,6 +18,19 @@ use Config;
+ use ExtUtils::MakeMaker;
+ use File::Spec;
+
++foreach (glob('scripts/pod*.PL')) {
++ # The various pod*.PL extractors change directory. Doing that with relative
++ # paths in @INC breaks. It seems the lesser of two evils to copy (to avoid)
++ # the chdir doing anything, than to attempt to convert lib paths to
++ # absolute, and potentially run into problems with quoting special
++ # characters in the path to our build dir (such as spaces)
++ require File::Copy;
++
++ my $temp = $_;
++ $temp =~ s!scripts/!!;
++ File::Copy::copy($_, $temp) or die "Can't copy $temp to $_: $!";
++}
++
+ # Generate full paths for scripts distributed in the bin directory. Appends
+ # the .com extension to scripts on VMS, unless they already have the .PL
+ # extension.
+@@ -28,7 +41,7 @@ use File::Spec;
+ # (Scalar) Space-separated relative paths from top of distribution
+ sub scripts {
+ my (@scripts) = @_;
+- my @paths = map { File::Spec->catfile('scripts', $_) } @scripts;
++ my @paths = @scripts;
+ if ($^O eq 'VMS') {
+ @paths = map { m{ [.] PL \z }xms ? $_ : $_ . '.com' } @paths;
+ }
+@@ -77,8 +90,8 @@ my %metadata = (
+
+ # Override the files that generate section 1 man pages.
+ MAN1PODS => {
+- man1pod('scripts', 'pod2man.PL'),
+- man1pod('scripts', 'pod2text.PL'),
++ man1pod('.', 'pod2man.PL'),
++ man1pod('.', 'pod2text.PL'),
+
+ # Perl core uses a separate copy in the top-level pod directory.
+ ($ENV{PERL_CORE} ? () : man1pod('pod', 'perlpodstyle.pod')),
+++ /dev/null
---- a/t/op/tie_fetch_count.t
-+++ b/t/op/tie_fetch_count.t
-@@ -250,12 +250,17 @@ for ([chdir=>''],[chmod=>'0,'],[chown=>'
- check_count "$op $args\\\$tied_glob$postargs";
- }
-
--$dummy = crypt $var,0; check_count 'crypt $tied, ...';
--$dummy = crypt 0,$var; check_count 'crypt ..., $tied';
--$var = substr(chr 256,0,0);
--$dummy = crypt $var,0; check_count 'crypt $tied_utf8, ...';
--$var = substr(chr 256,0,0);
--$dummy = crypt 0,$var; check_count 'crypt ..., $tied_utf8';
-+SKIP: {
-+ use Config;
-+ skip "crypt() is unavailable", 4, unless defined $Config{'d_crypt'};
-+
-+ $dummy = crypt $var,0; check_count 'crypt $tied, ...';
-+ $dummy = crypt 0,$var; check_count 'crypt ..., $tied';
-+ $var = substr(chr 256,0,0);
-+ $dummy = crypt $var,0; check_count 'crypt $tied_utf8, ...';
-+ $var = substr(chr 256,0,0);
-+ $dummy = crypt 0,$var; check_count 'crypt ..., $tied_utf8';
-+}
-
- SKIP:
- {
+++ /dev/null
-From b6307f728a4f842a54ea96959e386c7daa92ece1 Mon Sep 17 00:00:00 2001
-From: Tony Cook <tony@develop-help.com>
-Date: Tue, 15 Dec 2015 10:56:54 +1100
-Subject: [perl #126862] ensure File::Spec::canonpath() preserves taint
-
-Previously the unix specific XS implementation of canonpath() would
-return an untainted path when supplied a tainted path.
-
-For the empty string case, newSVpvs() already sets taint as needed on
-its result.
----
- dist/PathTools/Cwd.xs | 1 +
- dist/PathTools/t/taint.t | 19 ++++++++++++++++++-
- 2 files changed, 19 insertions(+), 1 deletion(-)
-
---- a/dist/PathTools/Cwd.xs
-+++ b/dist/PathTools/Cwd.xs
-@@ -535,6 +535,7 @@ THX_unix_canonpath(pTHX_ SV *path)
- *o = 0;
- SvPOK_on(retval);
- SvCUR_set(retval, o - SvPVX(retval));
-+ SvTAINT(retval);
- return retval;
- }
-
---- a/dist/PathTools/t/taint.t
-+++ b/dist/PathTools/t/taint.t
-@@ -12,7 +12,7 @@ use Test::More;
- BEGIN {
- plan(
- ${^TAINT}
-- ? (tests => 17)
-+ ? (tests => 21)
- : (skip_all => "A perl without taint support")
- );
- }
-@@ -34,3 +34,20 @@ foreach my $func (@Functions) {
-
- # Previous versions of Cwd tainted $^O
- is !tainted($^O), 1, "\$^O should not be tainted";
-+
-+{
-+ # [perl #126862] canonpath() loses taint
-+ my $tainted = substr($ENV{PATH}, 0, 0);
-+ # yes, getcwd()'s result should be tainted, and is tested above
-+ # but be sure
-+ ok tainted(File::Spec->canonpath($tainted . Cwd::getcwd)),
-+ "canonpath() keeps taint on non-empty string";
-+ ok tainted(File::Spec->canonpath($tainted)),
-+ "canonpath() keeps taint on empty string";
-+
-+ (Cwd::getcwd() =~ /^(.*)/);
-+ my $untainted = $1;
-+ ok !tainted($untainted), "make sure our untainted value is untainted";
-+ ok !tainted(File::Spec->canonpath($untainted)),
-+ "canonpath() doesn't add taint to untainted string";
-+}
+++ /dev/null
-From: Tony Cook <tony@develop-help.com>
-Date: Wed, 27 Jan 2016 00:52:15 +0000 (+1100)
-Subject: remove duplicate environment variables from environ
-X-Git-Url: http://perl5.git.perl.org/perl.git/commitdiff_plain/ae37b791a73a9e78dedb89fb2429d2628cf58076
-
-remove duplicate environment variables from environ
-
-If we see duplicate environment variables while iterating over
-environ[]:
-
-a) make sure we use the same value in %ENV that getenv() returns.
-
-Previously on a duplicate, %ENV would have the last entry for the name
-from environ[], but a typical getenv() would return the first entry.
-
-Rather than assuming all getenv() implementations return the first entry
-explicitly call getenv() to ensure they agree.
-
-b) remove duplicate entries from environ
-
-Previously if there was a duplicate definition for a name in environ[]
-setting that name in %ENV could result in an unsafe value being passed
-to a child process, so ensure environ[] has no duplicates.
-
-CVE-2016-2381
----
-
---- a/perl.c
-+++ b/perl.c
-@@ -4298,23 +4298,70 @@ S_init_postdump_symbols(pTHX_ int argc,
- }
- if (env) {
- char *s, *old_var;
-+ STRLEN nlen;
- SV *sv;
-+ HV *dups = newHV();
-+
- for (; *env; env++) {
- old_var = *env;
-
- if (!(s = strchr(old_var,'=')) || s == old_var)
- continue;
-+ nlen = s - old_var;
-
- #if defined(MSDOS) && !defined(DJGPP)
- *s = '\0';
- (void)strupr(old_var);
- *s = '=';
- #endif
-- sv = newSVpv(s+1, 0);
-- (void)hv_store(hv, old_var, s - old_var, sv, 0);
-+ if (hv_exists(hv, old_var, nlen)) {
-+ const char *name = savepvn(old_var, nlen);
-+
-+ /* make sure we use the same value as getenv(), otherwise code that
-+ uses getenv() (like setlocale()) might see a different value to %ENV
-+ */
-+ sv = newSVpv(PerlEnv_getenv(name), 0);
-+
-+ /* keep a count of the dups of this name so we can de-dup environ later */
-+ if (hv_exists(dups, name, nlen))
-+ ++SvIVX(*hv_fetch(dups, name, nlen, 0));
-+ else
-+ (void)hv_store(dups, name, nlen, newSViv(1), 0);
-+
-+ Safefree(name);
-+ }
-+ else {
-+ sv = newSVpv(s+1, 0);
-+ }
-+ (void)hv_store(hv, old_var, nlen, sv, 0);
- if (env_is_not_environ)
- mg_set(sv);
- }
-+ if (HvKEYS(dups)) {
-+ /* environ has some duplicate definitions, remove them */
-+ HE *entry;
-+ hv_iterinit(dups);
-+ while ((entry = hv_iternext_flags(dups, 0))) {
-+ STRLEN nlen;
-+ const char *name = HePV(entry, nlen);
-+ IV count = SvIV(HeVAL(entry));
-+ IV i;
-+ SV **valp = hv_fetch(hv, name, nlen, 0);
-+
-+ assert(valp);
-+
-+ /* try to remove any duplicate names, depending on the
-+ * implementation used in my_setenv() the iteration might
-+ * not be necessary, but let's be safe.
-+ */
-+ for (i = 0; i < count; ++i)
-+ my_setenv(name, 0);
-+
-+ /* and set it back to the value we set $ENV{name} to */
-+ my_setenv(name, SvPV_nolen(*valp));
-+ }
-+ }
-+ SvREFCNT_dec_NN(dups);
- }
- #endif /* USE_ENVIRON_ARRAY */
- #endif /* !PERL_MICRO */
# This makefile simplifies perl module builds.
#
-PERL_VERSION:=5.22
+PERL_VERSION:=5.24
# Build environment
HOST_PERL_PREFIX:=$(STAGING_DIR_HOSTPKG)/usr
PECL_LONGNAME:=Extended HTTP Support
PKG_VERSION:=3.1.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_MD5SUM:=e3de67b156e7d5f6c2e5eb1e2b5f0acceb7004f1260d68c9f8b2c0f9629aabf0
PKG_NAME:=php7-pecl-http
--- /dev/null
+From ab5b4e3acd2b0379e5d8bc95a8d4f83ce5c91fb7 Mon Sep 17 00:00:00 2001
+From: Michael Heimpold <mhei@heimpold.de>
+Date: Sun, 4 Jun 2017 15:00:33 +0200
+Subject: [PATCH] Handle NULL strings gracefully during constant registration
+
+When libcurl is compiled not using e.g. libz or SSL, then a call to
+curl_version_info could return NULL in the corresponding fields of
+curl_version_info_data.
+
+Passing such NULL pointers down to REGISTER_NS_STRING_CONSTANT results
+in a segfault during php startup, so let's check for this special case
+and register a NULL constant in this case.
+
+Signed-off-by: Michael Heimpold <mhei@heimpold.de>
+---
+ src/php_http_client_curl.c | 16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/src/php_http_client_curl.c b/src/php_http_client_curl.c
+index f286324..f07bb8f 100644
+--- a/src/php_http_client_curl.c
++++ b/src/php_http_client_curl.c
+@@ -2429,6 +2429,14 @@ php_http_client_ops_t *php_http_client_curl_get_ops(void)
+ return &php_http_client_curl_ops;
+ }
+
++#define REGISTER_NS_STRING_OR_NULL_CONSTANT(ns, name, str, flags) \
++ do { \
++ if ((str) != NULL) { \
++ REGISTER_NS_STRING_CONSTANT(ns, name, str, flags); \
++ } else { \
++ REGISTER_NS_NULL_CONSTANT(ns, name, flags); \
++ } \
++ } while (0)
+
+ PHP_MINIT_FUNCTION(http_client_curl)
+ {
+@@ -2509,12 +2517,12 @@ PHP_MINIT_FUNCTION(http_client_curl)
+ REGISTER_NS_STRING_CONSTANT("http\\Client\\Curl", "VERSIONS", curl_version(), CONST_CS|CONST_PERSISTENT);
+ #if CURLVERSION_NOW >= 0
+ REGISTER_NS_STRING_CONSTANT("http\\Client\\Curl\\Versions", "CURL", (char *) info->version, CONST_CS|CONST_PERSISTENT);
+- REGISTER_NS_STRING_CONSTANT("http\\Client\\Curl\\Versions", "SSL", (char *) info->ssl_version, CONST_CS|CONST_PERSISTENT);
+- REGISTER_NS_STRING_CONSTANT("http\\Client\\Curl\\Versions", "LIBZ", (char *) info->libz_version, CONST_CS|CONST_PERSISTENT);
++ REGISTER_NS_STRING_OR_NULL_CONSTANT("http\\Client\\Curl\\Versions", "SSL", (char *) info->ssl_version, CONST_CS|CONST_PERSISTENT);
++ REGISTER_NS_STRING_OR_NULL_CONSTANT("http\\Client\\Curl\\Versions", "LIBZ", (char *) info->libz_version, CONST_CS|CONST_PERSISTENT);
+ # if CURLVERSION_NOW >= 1
+- REGISTER_NS_STRING_CONSTANT("http\\Client\\Curl\\Versions", "ARES", (char *) info->ares, CONST_CS|CONST_PERSISTENT);
++ REGISTER_NS_STRING_OR_NULL_CONSTANT("http\\Client\\Curl\\Versions", "ARES", (char *) info->ares, CONST_CS|CONST_PERSISTENT);
+ # if CURLVERSION_NOW >= 2
+- REGISTER_NS_STRING_CONSTANT("http\\Client\\Curl\\Versions", "IDN", (char *) info->libidn, CONST_CS|CONST_PERSISTENT);
++ REGISTER_NS_STRING_OR_NULL_CONSTANT("http\\Client\\Curl\\Versions", "IDN", (char *) info->libidn, CONST_CS|CONST_PERSISTENT);
+ # endif
+ # endif
+ #endif
+--
+2.7.4
+
include $(TOPDIR)/rules.mk
PKG_NAME:=php
-PKG_VERSION:=7.1.4
-PKG_RELEASE:=5
+PKG_VERSION:=7.1.6
+PKG_RELEASE:=1
PKG_MAINTAINER:=Michael Heimpold <mhei@heimpold.de>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://www.php.net/distributions/
-PKG_MD5SUM:=a74c13f8779349872b365e6732e8c98e
-PKG_HASH:=71514386adf3e963df087c2044a0b3747900b8b1fc8da3a99f0a0ae9180d300b
+PKG_MD5SUM:=eafc7a79cc8cc62c9292c96f9c9ccf90
+PKG_HASH:=01584dc521ab7ec84b502b61952f573652fe6aa00c18d6d844fb9209f14b245b
PKG_FIXUP:=libtool autoreconf
PKG_BUILD_PARALLEL:=1
+++ /dev/null
---- a/ext/gettext/config.m4
-+++ b/ext/gettext/config.m4
-@@ -32,3 +32,2 @@
- )
-- LDFLAGS=$O_LDFLAGS
-
-@@ -48,3 +48,4 @@
- AC_CHECK_LIB($GETTEXT_CHECK_IN_LIB, bind_textdomain_codeset, [AC_DEFINE(HAVE_BIND_TEXTDOMAIN_CODESET, 1, [ ])])
-+ LDFLAGS=$O_LDFLAGS
-
- fi
+++ /dev/null
---- a/configure.in 2017-04-14 11:53:48.345481008 -0600
-+++ b/configure.in 2017-04-14 11:58:47.887644651 -0600
-@@ -497,6 +497,7 @@
- locale.h \
- monetary.h \
- netdb.h \
-+poll.h \
- pwd.h \
- resolv.h \
- signal.h \
-@@ -509,7 +510,6 @@
- sys/file.h \
- sys/mman.h \
- sys/mount.h \
--sys/poll.h \
- sys/resource.h \
- sys/select.h \
- sys/socket.h \
---- a/main/php_network.h 2017-04-11 09:37:35.000000000 -0600
-+++ b/main/php_network.h 2017-04-14 12:00:00.736168983 -0600
-@@ -122,8 +122,8 @@
- /* uncomment this to debug poll(2) emulation on systems that have poll(2) */
- /* #define PHP_USE_POLL_2_EMULATION 1 */
-
--#if defined(HAVE_SYS_POLL_H) && defined(HAVE_POLL)
--# include <sys/poll.h>
-+#if defined(HAVE_POLL_H) && defined(HAVE_POLL)
-+# include <poll.h>
- typedef struct pollfd php_pollfd;
- #else
- typedef struct _php_pollfd {
---- a/main/network.c 2017-04-11 09:37:35.000000000 -0600
-+++ b/main/network.c 2017-04-14 11:59:44.528052372 -0600
-@@ -51,8 +51,8 @@
- #ifdef HAVE_SYS_SELECT_H
- #include <sys/select.h>
- #endif
--#if HAVE_SYS_POLL_H
--#include <sys/poll.h>
-+#if HAVE_POLL_H
-+#include <poll.h>
- #endif
-
- #if defined(NETWARE)
---- a/main/fastcgi.c 2017-04-11 09:37:35.000000000 -0600
-+++ b/main/fastcgi.c 2017-04-14 12:01:06.924644901 -0600
-@@ -76,8 +76,8 @@
- # include <netdb.h>
- # include <signal.h>
-
--# if defined(HAVE_SYS_POLL_H) && defined(HAVE_POLL)
--# include <sys/poll.h>
-+# if defined(HAVE_POLL_H) && defined(HAVE_POLL)
-+# include <poll.h>
- # endif
- # if defined(HAVE_SYS_SELECT_H)
- # include <sys/select.h>
-@@ -1430,7 +1430,7 @@
- break;
- #else
- if (req->fd >= 0) {
--#if defined(HAVE_SYS_POLL_H) && defined(HAVE_POLL)
-+#if defined(HAVE_POLL_H) && defined(HAVE_POLL)
- struct pollfd fds;
- int ret;
-
+++ /dev/null
-#
-# Copyright © 1997-2011 by Secret Labs AB
-# Copyright © 1995-2011 by Fredrik Lundh
-# Copyright © 2016 by Alex Clark and contributors
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=pillow
-PKG_VERSION:=3.3.1
-PKG_RELEASE=1
-PKG_LICENSE:=CUSTOM
-PKG_LICENSE_FILES:=LICENSE
-
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/python-pillow/Pillow.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=aab33141f381d5577cdef9033b7fdff79122a10c
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/pillow
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- TITLE:=The friendly PIL fork
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- URL:=https://python-pillow.org/
- DEPENDS:=+python +libfreetype +libjpeg +zlib +libtiff
-endef
-
-define Package/pillow/description
- The friendly PIL fork
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-define Package/pillow/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(INSTALL_DIR) $(1)/usr/bin
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)/
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin
- $(CP) $(PKG_BUILD_DIR)/LICENSE $(1)$(PYTHON_PKG_DIR)/PIL/
-endef
-
-$(eval $(call BuildPackage,pillow))
+++ /dev/null
-diff -rupN pillow-3.3.1.orig/setup.py pillow-3.3.1/setup.py
---- pillow-3.3.1.orig/setup.py 2016-08-22 17:45:05.000000000 +0200
-+++ pillow-3.3.1/setup.py 2016-08-22 18:09:51.947745155 +0200
-@@ -111,12 +111,12 @@ except (ImportError, OSError):
-
- NAME = 'Pillow'
- PILLOW_VERSION = '3.3.1'
--JPEG_ROOT = None
-+JPEG_ROOT = _lib_include(os.environ['STAGING_DIR'] + "/usr")
- JPEG2K_ROOT = None
--ZLIB_ROOT = None
-+ZLIB_ROOT = _lib_include(os.environ['STAGING_DIR'] + "/usr")
- IMAGEQUANT_ROOT = None
--TIFF_ROOT = None
--FREETYPE_ROOT = None
-+TIFF_ROOT = _lib_include(os.environ['STAGING_DIR'] + "/usr")
-+FREETYPE_ROOT = _lib_include(os.environ['STAGING_DIR'] + "/usr")
- LCMS_ROOT = None
-
-
-@@ -221,161 +221,6 @@ class pil_build_ext(build_ext):
- _add_directory(include_dirs, os.path.join(prefix, "include"))
-
- #
-- # add platform directories
--
-- if self.disable_platform_guessing:
-- pass
--
-- elif sys.platform == "cygwin":
-- # pythonX.Y.dll.a is in the /usr/lib/pythonX.Y/config directory
-- _add_directory(library_dirs,
-- os.path.join("/usr/lib", "python%s" %
-- sys.version[:3], "config"))
--
-- elif sys.platform == "darwin":
-- # attempt to make sure we pick freetype2 over other versions
-- _add_directory(include_dirs, "/sw/include/freetype2")
-- _add_directory(include_dirs, "/sw/lib/freetype2/include")
-- # fink installation directories
-- _add_directory(library_dirs, "/sw/lib")
-- _add_directory(include_dirs, "/sw/include")
-- # darwin ports installation directories
-- _add_directory(library_dirs, "/opt/local/lib")
-- _add_directory(include_dirs, "/opt/local/include")
--
-- # if Homebrew is installed, use its lib and include directories
-- try:
-- prefix = subprocess.check_output(['brew', '--prefix']).strip(
-- ).decode('latin1')
-- except:
-- # Homebrew not installed
-- prefix = None
--
-- ft_prefix = None
--
-- if prefix:
-- # add Homebrew's include and lib directories
-- _add_directory(library_dirs, os.path.join(prefix, 'lib'))
-- _add_directory(include_dirs, os.path.join(prefix, 'include'))
-- ft_prefix = os.path.join(prefix, 'opt', 'freetype')
--
-- if ft_prefix and os.path.isdir(ft_prefix):
-- # freetype might not be linked into Homebrew's prefix
-- _add_directory(library_dirs, os.path.join(ft_prefix, 'lib'))
-- _add_directory(include_dirs,
-- os.path.join(ft_prefix, 'include'))
-- else:
-- # fall back to freetype from XQuartz if
-- # Homebrew's freetype is missing
-- _add_directory(library_dirs, "/usr/X11/lib")
-- _add_directory(include_dirs, "/usr/X11/include")
--
-- elif sys.platform.startswith("linux"):
-- arch_tp = (plat.processor(), plat.architecture()[0])
-- if arch_tp == ("x86_64", "32bit"):
-- # 32-bit build on 64-bit machine.
-- _add_directory(library_dirs, "/usr/lib/i386-linux-gnu")
-- else:
-- for platform_ in arch_tp:
--
-- if not platform_:
-- continue
--
-- if platform_ in ["x86_64", "64bit"]:
-- _add_directory(library_dirs, "/lib64")
-- _add_directory(library_dirs, "/usr/lib64")
-- _add_directory(library_dirs,
-- "/usr/lib/x86_64-linux-gnu")
-- break
-- elif platform_ in ["i386", "i686", "32bit"]:
-- _add_directory(library_dirs, "/usr/lib/i386-linux-gnu")
-- break
-- elif platform_ in ["aarch64"]:
-- _add_directory(library_dirs, "/usr/lib64")
-- _add_directory(library_dirs,
-- "/usr/lib/aarch64-linux-gnu")
-- break
-- elif platform_ in ["arm", "armv7l"]:
-- _add_directory(library_dirs,
-- "/usr/lib/arm-linux-gnueabi")
-- break
-- elif platform_ in ["ppc64"]:
-- _add_directory(library_dirs, "/usr/lib64")
-- _add_directory(library_dirs,
-- "/usr/lib/ppc64-linux-gnu")
-- _add_directory(library_dirs,
-- "/usr/lib/powerpc64-linux-gnu")
-- break
-- elif platform_ in ["ppc"]:
-- _add_directory(library_dirs, "/usr/lib/ppc-linux-gnu")
-- _add_directory(library_dirs,
-- "/usr/lib/powerpc-linux-gnu")
-- break
-- elif platform_ in ["s390x"]:
-- _add_directory(library_dirs, "/usr/lib64")
-- _add_directory(library_dirs,
-- "/usr/lib/s390x-linux-gnu")
-- break
-- elif platform_ in ["s390"]:
-- _add_directory(library_dirs, "/usr/lib/s390-linux-gnu")
-- break
-- else:
-- raise ValueError(
-- "Unable to identify Linux platform: `%s`" % platform_)
--
-- # XXX Kludge. Above /\ we brute force support multiarch. Here we
-- # try Barry's more general approach. Afterward, something should
-- # work ;-)
-- self.add_multiarch_paths()
--
-- elif sys.platform.startswith("gnu"):
-- self.add_multiarch_paths()
--
-- elif sys.platform.startswith("freebsd"):
-- _add_directory(library_dirs, "/usr/local/lib")
-- _add_directory(include_dirs, "/usr/local/include")
--
-- elif sys.platform.startswith("netbsd"):
-- _add_directory(library_dirs, "/usr/pkg/lib")
-- _add_directory(include_dirs, "/usr/pkg/include")
--
-- elif sys.platform.startswith("sunos5"):
-- _add_directory(library_dirs, "/opt/local/lib")
-- _add_directory(include_dirs, "/opt/local/include")
--
-- # FIXME: check /opt/stuff directories here?
--
-- # standard locations
-- if not self.disable_platform_guessing:
-- _add_directory(library_dirs, "/usr/local/lib")
-- _add_directory(include_dirs, "/usr/local/include")
--
-- _add_directory(library_dirs, "/usr/lib")
-- _add_directory(include_dirs, "/usr/include")
-- # alpine, at least
-- _add_directory(library_dirs, "/lib")
--
-- # on Windows, look for the OpenJPEG libraries in the location that
-- # the official installer puts them
-- if sys.platform == "win32":
-- program_files = os.environ.get('ProgramFiles', '')
-- best_version = (0, 0)
-- best_path = None
-- for name in os.listdir(program_files):
-- if name.startswith('OpenJPEG '):
-- version = tuple([int(x) for x in name[9:].strip().split(
-- '.')])
-- if version > best_version:
-- best_version = version
-- best_path = os.path.join(program_files, name)
--
-- if best_path:
-- _dbg('Adding %s to search list', best_path)
-- _add_directory(library_dirs, os.path.join(best_path, 'lib'))
-- _add_directory(include_dirs,
-- os.path.join(best_path, 'include'))
--
-- #
- # insert new dirs *before* default libs, to avoid conflicts
- # between Python PYD stub libs and real libraries
-
+++ /dev/null
-#
-# Copyright (C) 2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=attrs
-PKG_VERSION:=16.2.0
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/6b/71/1682316894ed80b362b9102e7a10997136d8dc1213c36a9f0515c451373a
-PKG_MD5SUM:=442b73d049af046ced010671b7bfd0e9
-
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-PKG_LICENSE:=MIT
-PKG_LICENSE_FILES:=LICENSE
-PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-attrs
- SECTION:=lang
- CATEGORY:=Languages
- SUBMENU:=Python
- TITLE:=python-attrs
- URL:=https://attrs.readthedocs.org/
- DEPENDS:=+python-light
-endef
-
-define Package/python-attrs/description
-attrs is an MIT-licensed Python package with class decorators that ease
-the chores of implementing the most common attribute-related object
-protocols.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
-endef
-
-$(eval $(call PyPackage,python-attrs))
-$(eval $(call BuildPackage,python-attrs))
+++ /dev/null
-#
-# Copyright (C) 2015-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=cffi
-PKG_VERSION:=1.8.3
-PKG_RELEASE:=2
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/0a/f3/686af8873b70028fccf67b15c78fd4e4667a3da995007afc71e786d61b0a
-PKG_HASH:=c321bd46faa7847261b89c0469569530cad5a41976bb6dba8202c0159f476568
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-$(PKG_NAME)-$(PKG_VERSION)
-PKG_UNPACK=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
-
-HOST_BUILD_DEPENDS:=libffi/host python-pycparser/host
-ifdef CONFIG_PACKAGE_python-cffi
-HOST_BUILD_DEPENDS+=python/host
-endif
-ifdef CONFIG_PACKAGE_python3-cffi
-HOST_BUILD_DEPENDS+=python3/host
-endif
-
-PKG_LICENSE:=MIT
-PKG_LICENSE_FILES:=LICENSE
-PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
-
-include $(INCLUDE_DIR)/host-build.mk
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-$(call include_mk, python3-package.mk)
-
-define Package/python-cffi/Default
- SECTION:=lang
- CATEGORY:=Languages
- SUBMENU:=Python
- URL:=http://cffi.readthedocs.org/
- DEPENDS:=+libffi
-endef
-
-define Package/python-cffi
-$(call Package/python-cffi/Default)
- TITLE:=python-cffi
- DEPENDS+=+python-light +python-pycparser
- VARIANT:=python
-endef
-
-define Package/python3-cffi
-$(call Package/python-cffi/Default)
- TITLE:=python3-cffi
- DEPENDS+=+python3-light +python3-pycparser
- VARIANT:=python3
-endef
-
-define Package/python-cffi/description
-Foreign Function Interface for Python calling C code.
-endef
-
-define Package/python3-cffi/description
-$(call Package/python-cffi/description)
-.
-(Variant for Python3)
-endef
-
-ifdef CONFIG_PACKAGE_python-cffi
-define Host/Compile/python-cffi
- $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR_HOSTPKG)")
-endef
-endif
-
-ifdef CONFIG_PACKAGE_python3-cffi
-define Host/Compile/python3-cffi
- $(call Build/Compile/HostPy3Mod,,install --prefix="" --root="$(STAGING_DIR_HOSTPKG)")
-endef
-endif
-
-define Host/Compile
-$(call Host/Compile/python-cffi)
-$(call Host/Compile/python3-cffi)
-endef
-
-define Host/Install
-endef
-
-$(eval $(call HostBuild))
-
-$(eval $(call PyPackage,python-cffi))
-$(eval $(call BuildPackage,python-cffi))
-
-$(eval $(call Py3Package,python3-cffi))
-$(eval $(call BuildPackage,python3-cffi))
+++ /dev/null
-#
-# Copyright (C) 2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=python-crcmod
-PKG_VERSION:=1.7
-PKG_RELEASE:=1
-PKG_MAINTAINER:=Micke Prag <micke.prag@telldus.se>
-PKG_LICENSE:=MIT
-
-PKG_SOURCE:=crcmod-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://pypi.python.org/packages/source/c/crcmod/
-PKG_MD5SUM:=2d5b92117d958dcead94f9e17f54cd32
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/crcmod-$(PKG_VERSION)
-PKG_BUILD_DEPENDS:=python
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-crcmod
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- TITLE:=python-crcmod
- URL:=http://crcmod.sourceforge.net/
- DEPENDS:=+python-light
-endef
-
-define Package/python-crcmod/description
- The software in this package is a Python module for generating objects that compute the Cyclic Redundancy Check (CRC). There is no attempt in this package to explain how the CRC works. There are a number of resources on the web that give a good explanation of the algorithms. Just do a Google search for "crc calculation" and browse till you find what you need. Another resource can be found in chapter 20 of the book "Numerical Recipes in C" by Press et. al.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix="$(PKG_INSTALL_DIR)/usr")
-endef
-
-define Package/python-crcmod/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call BuildPackage,python-crcmod))
+++ /dev/null
-#
-# Copyright (C) 2009-2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=pycrypto
-PKG_VERSION:=2.6.1
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/
-PKG_MD5SUM:=55a61a054aa66812daf5161a0d5d7eda
-
-PKG_LICENSE:=Public Domain
-PKG_LICENSE_FILES:=COPYRIGHT
-PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-crypto
- SECTION:=lang-python
- CATEGORY:=Languages
- SUBMENU:=Python
- TITLE:=python-crypto
- URL:=http://www.pycrypto.org/
- DEPENDS:=+python +libgmp
-endef
-
-define Package/python-crypto/description
-A collection of both secure hash functions (such as MD5 and SHA),
-and various encryption algorithms (AES, DES, IDEA, RSA, ElGamal, etc.).
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,\
- install --prefix=/usr --root=$(PKG_INSTALL_DIR),\
- CONFIG_BIG_ENDIAN="$(CONFIG_BIG_ENDIAN)" \
- )
-endef
-
-define Package/python-crypto/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)/
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)/
-endef
-
-$(eval $(call PyPackage,python-crypto))
-$(eval $(call BuildPackage,python-crypto))
+++ /dev/null
---- a/setup.py
-+++ b/setup.py
-@@ -370,7 +370,7 @@ kw = {'name':"pycrypto",
- 'ext_modules': plat_ext + [
- # _fastmath (uses GNU mp library)
- Extension("Crypto.PublicKey._fastmath",
-- include_dirs=['src/','/usr/include/'],
-+ include_dirs=['src/'],
- libraries=['gmp'],
- sources=["src/_fastmath.c"]),
-
+++ /dev/null
---- a/setup.py
-+++ b/setup.py
-@@ -100,6 +100,10 @@
- w(kwd.get("end", "\n"))
-
- def endianness_macro():
-+ if os.environ["CONFIG_BIG_ENDIAN"] == "y":
-+ return ('PCT_BIG_ENDIAN', 1)
-+ else:
-+ return ('PCT_LITTLE_ENDIAN', 1)
- s = struct.pack("@I", 0x33221100)
- if s == "\x00\x11\x22\x33".encode(): # little endian
- return ('PCT_LITTLE_ENDIAN', 1)
+++ /dev/null
-#
-# Copyright (C) 2015-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=cryptography
-PKG_VERSION:=1.5.1
-PKG_RELEASE:=2
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/21/e1/37fc14f9d77924e84ba0dcb88eb8352db914583af229287c6c965d66ba0d
-PKG_MD5SUM:=66a3e01f5f436d2413ef47b7e6bb7729
-
-PKG_BUILD_DEPENDS:=python-cffi/host
-
-PKG_LICENSE:=Apache-2.0 BSD-3-Clause
-PKG_LICENSE_FILES:=LICENSE.APACHE LICENSE.BSD
-PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-cryptography
- SECTION:=lang
- CATEGORY:=Languages
- SUBMENU:=Python
- TITLE:=python-cryptography
- URL:=https://github.com/pyca/cryptography
- DEPENDS:=+libopenssl +python +python-cffi +python-enum34 +python-idna +python-ipaddress +python-pyasn1 +python-six +python-setuptools
-endef
-
-define Package/python-cryptography/description
-cryptography is a package which provides cryptographic recipes and
-primitives to Python developers. Our goal is for it to be your "cryptographic
-standard library". It supports Python 2.6-2.7, Python 3.3+, and PyPy 2.6+.
-endef
-
-define PyPackage/python-cryptography/filespec
-+|$(PYTHON_PKG_DIR)
--|$(PYTHON_PKG_DIR)/cryptography/hazmat/backends/commoncrypto
--|$(PYTHON_PKG_DIR)/cryptography/hazmat/bindings/commoncrypto
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
-endef
-
-$(eval $(call PyPackage,python-cryptography))
-$(eval $(call BuildPackage,python-cryptography))
+++ /dev/null
-diff --git a/setup.py b/setup.py
-index b5c05df..a777dd7 100644
---- a/setup.py
-+++ b/setup.py
-@@ -266,6 +266,7 @@ class DummyPyTest(test):
- with open(os.path.join(base_dir, "README.rst")) as f:
- long_description = f.read()
-
-+setup_requirements=[]
-
- setup(
- name=about["__title__"],
+++ /dev/null
-#
-# Copyright (C) 2007-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=python-dateutil
-PKG_VERSION:=2.6.0
-PKG_RELEASE:=1
-PKG_LICENSE:=BSD-2-Clause
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/51/fc/39a3fbde6864942e8bb24c93663734b74e281b984d1b8c4f95d64b0c21f6/
-PKG_MD5SUM:=6e38f91e8c94c15a79ce22768dfeca87
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-dateutil
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- TITLE:=Extensions to the standard Python datetime module
- URL:=https://dateutil.readthedocs.org/
- DEPENDS:=+python +python-six
-endef
-
-define Package/python-dateutil/description
- Extensions to the standard Python datetime module
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-define Package/python-dateutil/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call BuildPackage,python-dateutil))
+++ /dev/null
-#
-# Copyright (C) 2014 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=python-dns
-PKG_RELEASE:=2
-PKG_VERSION:=1.15.0
-PKG_SOURCE_URL:=http://www.dnspython.org/kits/$(PKG_VERSION)
-PKG_MD5SUM:=63a679089822fb86127867c315286dc5
-PKG_SOURCE:=dnspython-$(PKG_VERSION).tar.gz
-PKG_MAINTAINER:=Denis Shulyaka <Shulyaka@gmail.com>
-PKG_LICENSE:=ISC
-PKG_LICENSE_FILES:=LICENSE
-PKG_BUILD_DIR:=$(BUILD_DIR)/dnspython-$(PKG_VERSION)
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-dns
- SECTION:=language-python
- CATEGORY:=Languages
- SUBMENU:=Python
- TITLE:=dnspython
- URL:=http://www.dnspython.org/
- DEPENDS:=+python
-endef
-
-define Package/python-dns/description
- dnspython is a DNS toolkit for Python. It supports almost all record types. It can be used for queries, zone transfers, and dynamic updates. It supports TSIG authenticated messages and EDNS0.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,\
- install --prefix=/usr --root="$(PKG_INSTALL_DIR)" \
- )
-endef
-
-$(eval $(call PyPackage,python-dns))
-$(eval $(call BuildPackage,python-dns))
+++ /dev/null
-#
-# Copyright (C) 2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=python-egenix-mx-base
-PKG_VERSION:=3.2.8
-PKG_RELEASE:=1
-PKG_MAINTAINER:=Dmitry Trefilov <the-alien@live.ru>
-PKG_LICENSE:=eGenix.com Public License 1.1.0
-PKG_LICENSE_FILES:=LICENSE COPYRIGHT
-
-PKG_SOURCE:=egenix-mx-base-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://downloads.egenix.com/python/
-PKG_MD5SUM:=9d9d3a25f9dc051a15e97f452413423b
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/egenix-mx-base-$(PKG_VERSION)
-PKG_BUILD_DEPENDS:=python
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-egenix-mx-base
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- DEPENDS:=+USE_EGLIBC:librt +USE_UCLIBC:librt +python
- TITLE:=Egenix mxBase
- URL:=http://www.egenix.com/products/python/mxBase/
-endef
-
-define Package/python-egenix-mx-base/description
- The eGenix.com mx Base Distribution for Python is a collection
- of professional quality software tools which enhance Python's
- usability in many important areas such as fast text searching,
- date/time processing and high speed data types.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix="$(PKG_INSTALL_DIR)/usr")
-endef
-
-define PyPackage/python-egenix-mx-base/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call PyPackage,python-egenix-mx-base))
-$(eval $(call BuildPackage,python-egenix-mx-base))
+++ /dev/null
-#
-# Copyright (C) 2015-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=enum34
-PKG_VERSION:=1.1.6
-PKG_RELEASE:=2
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/bf/3e/31d502c25302814a7c2f1d3959d2a3b3f78e509002ba91aea64993936876
-PKG_MD5SUM:=5f13a0841a61f7fc295c514490d120d0
-
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-PKG_LICENSE:=BSD-3-Clause
-PKG_LICENSE_FILES:=enum/LICENSE
-PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-enum34
- SECTION:=lang
- CATEGORY:=Languages
- SUBMENU:=Python
- TITLE:=python-enum34
- URL:=https://pypi.python.org/pypi/enum34/
- DEPENDS:=+python-light
-endef
-
-define Package/python-enum34/description
-enum34 is the new Python stdlib enum module available in Python 3.4
-backported for previous versions of Python from 2.4 to 3.3.
-endef
-
-define PyPackage/python-enum34/filespec
-+|$(PYTHON_PKG_DIR)
--|$(PYTHON_PKG_DIR)/enum/test.py
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-$(eval $(call PyPackage,python-enum34))
-$(eval $(call BuildPackage,python-enum34))
+++ /dev/null
-diff -r f24487b45cd0 setup.py
---- a/setup.py Sun May 15 20:28:23 2016 -0700
-+++ b/setup.py Wed Jul 27 22:49:13 2016 +0800
-@@ -63,15 +63,6 @@
- version='1.1.6',\r
- url='https://bitbucket.org/stoneleaf/enum34',\r
- packages=['enum'],\r
-- package_data={\r
-- 'enum' : [\r
-- 'LICENSE',\r
-- 'README',\r
-- 'doc/enum.rst',\r
-- 'doc/enum.pdf',\r
-- 'test.py',\r
-- ]\r
-- },\r
- license='BSD License',\r
- description='Python 3.4 Enum backported to 3.3, 3.2, 3.1, 2.7, 2.6, 2.5, and 2.4',\r
- long_description=long_desc,\r
+++ /dev/null
-#
-# Copyright (C) 2015-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=gmpy2
-PKG_VERSION:=2.0.8
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).zip
-PKG_SOURCE_URL:=https://pypi.python.org/packages/90/f4/9a2e384b325b69bc5827b9a6510a8fb4a51698c915c06a3f25a86458892a
-PKG_MD5SUM:=56d40bddcf8f22be0a36d60f764f3241
-
-PKG_LICENSE:=LGPL-3.0+
-PKG_LICENSE_FILES:=COPYING.LESSER
-PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-gmpy2
- SECTION:=lang
- CATEGORY:=Languages
- SUBMENU:=Python
- TITLE:=python-gmpy2
- URL:=http://code.google.com/p/gmpy/
- DEPENDS:=+libgmp +python-light
-endef
-
-define Package/python-gmpy2/description
-gmpy2 is a C-coded Python extension module that supports multiple-precision
-arithmetic. gmpy2 is the successor to the original gmpy module. The gmpy module
-only supported the GMP multiple-precision library. gmpy2 adds support for the
-MPFR (correctly rounded real floating-point arithmetic) and MPC (correctly
-rounded complex floating-point arithmetic) libraries. gmpy2 also updates the
-API and naming conventions to be more consistent and support the additional
-functionality.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)" --nompfr)
-endef
-
-$(eval $(call PyPackage,python-gmpy2))
-$(eval $(call BuildPackage,python-gmpy2))
+++ /dev/null
-#
-# Copyright (C) 2015-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=idna
-PKG_VERSION:=2.1
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/source/i/idna
-PKG_MD5SUM:=f6473caa9c5e0cc1ad3fd5d04c3c114b
-
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-PKG_LICENSE:=BSD-3-Clause
-PKG_LICENSE_FILES:=LICENSE.rst
-PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-idna
- SECTION:=lang
- CATEGORY:=Languages
- SUBMENU:=Python
- TITLE:=python-idna
- URL:=https://github.com/kjd/idna
- DEPENDS:=+python-light
-endef
-
-define Package/python-idna/description
-A library to support the Internationalised Domain Names in Applications
-(IDNA) protocol as specified in RFC 5891. This version of the protocol
-is often referred to as "IDNA2008" and can produce different results
-from the earlier standard from 2003.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-$(eval $(call PyPackage,python-idna))
-$(eval $(call BuildPackage,python-idna))
+++ /dev/null
-#
-# Copyright (C) 2015-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ipaddress
-PKG_VERSION:=1.0.17
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/bb/26/3b64955ff73f9e3155079b9ed31812afdfa5333b5c76387454d651ef593a
-PKG_MD5SUM:=8bbf0326719fafb1f453921ef96729fe
-
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-PKG_LICENSE:=Python-2.0
-PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-ipaddress
- SECTION:=lang
- CATEGORY:=Languages
- SUBMENU:=Python
- TITLE:=python-ipaddress
- URL:=https://github.com/phihag/ipaddress
- DEPENDS:=+python-light
-endef
-
-define Package/python-ipaddress/description
-Python 3.3+'s ipaddress for Python 2.6, 2.7, 3.2.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-$(eval $(call PyPackage,python-ipaddress))
-$(eval $(call BuildPackage,python-ipaddress))
+++ /dev/null
-#
-# Copyright (C) 2016-2017 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=python-ldap
-PKG_VERSION:=2.4.32
-PKG_RELEASE:=1
-PKG_MAINTAINER:=Dmitry Trefilov <the-alien@live.ru>
-PKG_LICENSE:=Python-style
-PKG_LICENSE_FILES:=LICENSE
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/67/d9/fa0ea70d1792875745116ad62ac8d4bcb07550b15cded591bb57df6a6d9a
-PKG_MD5SUM:=7c46c8a04acc227a778c7900c87cdfc7
-
-PKG_BUILD_DEPENDS:=python libopenldap
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-ldap
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- DEPENDS:=+libopenldap +python
- TITLE:=Python modules for implementing LDAP clients
- URL:=http://python-ldap.org/
-endef
-
-define Package/python-ldap/description
- python-ldap provides an object-oriented API to access LDAP directory
- servers from Python programs. Mainly it wraps the OpenLDAP 2.x libs
- for that purpose. Additionally the package contains modules for
- other LDAP-related stuff (e.g. processing LDIF, LDAPURLs, LDAPv3
- schema, LDAPv3 extended operations and controls, etc.).
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,build_ext \
- --include-dirs="$(STAGING_DIR)/usr/include:$(STAGING_DIR)/usr/include/sasl" \
- --library-dirs="$(STAGING_DIR)/usr/lib:$(STAGING_DIR)/usr/lib/sasl2" \
- build_py \
- install --prefix="$(PKG_INSTALL_DIR)/usr")
-endef
-
-define PyPackage/python-ldap/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call PyPackage,python-ldap))
-$(eval $(call BuildPackage,python-ldap))
+++ /dev/null
-From: Dmitrij Trefilov <the-alien@live.ru>
-
-Subject: [PATCH] lang: removed hardcoded include and library directories from setup.cfg
-Signed-off-by: Dmitrij Trefilov <the-alien@live.ru>
----
---- a/setup.cfg
-+++ b/setup.cfg
-@@ -1,6 +1,6 @@
- [_ldap]
--library_dirs = /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64
--include_dirs = /usr/include /usr/include/sasl /usr/local/include /usr/local/include/sasl
-+library_dirs =
-+include_dirs =
- defines = HAVE_SASL HAVE_TLS HAVE_LIBLDAP_R
- extra_compile_args =
- extra_objects =
+++ /dev/null
-#
-# Copyright (C) 2007-2014 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=MySQL-python
-PKG_VERSION:=1.2.5
-PKG_RELEASE:=1
-PKG_LICENSE:=GPL-2.0
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).zip
-PKG_SOURCE_URL:=https://pypi.python.org/packages/source/M/MySQL-python/
-PKG_MD5SUM:=654f75b302db6ed8dc5a898c625e030c
-
-PKG_BUILD_DEPENDS:=python python-setuptools libmysqlclient
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-mysql
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- TITLE:=MySQL database adapter for Python
- URL:=https://pypi.python.org/pypi/MySQL-python
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- DEPENDS:=+python +libmysqlclient
-endef
-
-define Package/python-mysql/description
- MySQLdb is an thread-compatible interface to the popular MySQL database
- server that provides the Python database API.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-define Package/python-mysql/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call BuildPackage,python-mysql))
+++ /dev/null
---- MySQL-python-1.2.2/site_orig.cfg 2007-08-15 12:58:40.000000000 +0200
-+++ MySQL-python-1.2.2/site.cfg 2007-08-15 12:58:49.000000000 +0200
-@@ -4,7 +4,7 @@
- # static: link against a static library (probably required for embedded)
-
- embedded = False
--threadsafe = True
-+threadsafe = False
- static = False
-
- # The path to mysql_config.
+++ /dev/null
-#
-# Copyright (C) 2016 Yousong Zhou <yszhou4tech@gmail.com>
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=python-packages
-PKG_VERSION:=1.0
-PKG_RELEASE:=1
-
-PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
-
-#
-# NOTE: move the host module installation to Host/Compile when
-# HOST_CONFIG_DEPENDS is supported
-#
-# NOTE: PKG_CONFIG_DEPENDS cannot correctly track changes of string type config
-# options, so you may want to do manual cleanup on config change.
-#
-PKG_CONFIG_DEPENDS:= \
- CONFIG_PACKAGE_python-packages-list-host \
- CONFIG_PACKAGE_python-packages-list \
- CONFIG_PACKAGE_python-packages-list-cleanup \
- CONFIG_PACKAGE_python-packages-envs \
- CONFIG_PACKAGE_python-packages-extra-deps \
- CONFIG_PACKAGE_python-packages-index-url \
- CONFIG_PACKAGE_python-packages-pip-opts \
-
-PKG_BUILD_DEPENDS:=python python/host
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-packages
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- TITLE:=A dummy package for packaging python modules with pip
- DEPENDS:=@DEVEL +python
-endef
-
-define Package/python-packages/config
-if PACKAGE_python-packages
-config PACKAGE_python-packages-list-host
- string "List of python packages to install on host"
-config PACKAGE_python-packages-list
- string "List of python packages to install on target"
-config PACKAGE_python-packages-list-cleanup
- string "List of python packages to cleanup to avoid clash with existing packages"
-config PACKAGE_python-packages-envs
- string "Extra environment variables to pass on to pip and its children on target build"
-config PACKAGE_python-packages-extra-deps
- string "List of deps fulfilled but not tracked by the build system"
-config PACKAGE_python-packages-index-url
- string "Index URL passed to pip with --index-url"
-config PACKAGE_python-packages-pip-opts
- string "Additional arguments to pip command line"
-endif
-endef
-
-CONFIG_PACKAGE_python-packages-list-host:=$(call qstrip,$(CONFIG_PACKAGE_python-packages-list-host))
-CONFIG_PACKAGE_python-packages-list:=$(call qstrip,$(CONFIG_PACKAGE_python-packages-list))
-CONFIG_PACKAGE_python-packages-list-cleanup:=$(call qstrip,$(CONFIG_PACKAGE_python-packages-list-cleanup))
-CONFIG_PACKAGE_python-packages-envs:=$(call qstrip,$(CONFIG_PACKAGE_python-packages-envs))
-CONFIG_PACKAGE_python-packages-extra-deps:=$(call qstrip,$(CONFIG_PACKAGE_python-packages-extra-deps))
-CONFIG_PACKAGE_python-packages-pip-opts:=$(call qstrip,$(CONFIG_PACKAGE_python-packages-pip-opts))
-
-HOST_PYTHON_PIP:=$(STAGING_DIR_HOSTPKG)/bin/pip$(PYTHON_VERSION)
-
-decr=$(word $(1),0 1 2 3 4 5 6 7 8 9 10)
-recur=$(if $(subst 0,,$(2)),$(call recur,$(1),$(call decr,$(2)),$(call $(1)$(2),$(3))),$(3))
-_req2dir1=$(subst >,gt,$(1))
-_req2dir2=$(subst <,lt,$(1))
-_req2dir3=$(subst >=,geq,$(1))
-_req2dir4=$(subst <=,leq,$(1))
-_req2dir5=$(subst ://,:::,$(1))
-_req2dir6=$(subst *,_,$(1))
-_req2dir7=$(subst ?,_,$(1))
-req2dir=$(call recur,_req2dir,7,$(1))
-
-# --ignore-installed, it may happen that host pip will ignore target install if
-# it was already installed as host module, e.g. cffi deps of cryptograph
-HOST_PYTHON_PIP_INSTALL=$(HOST_PYTHON_PIP) install \
- --root=$(1) \
- --prefix=$(2) \
- --ignore-installed \
- --no-compile \
- $(if $(CONFIG_PACKAGE_python-packages-index-url), --index-url $(CONFIG_PACKAGE_python-packages-index-url)) \
- $(if $(CONFIG_PACKAGE_python-packages-pip-opts), $(CONFIG_PACKAGE_python-packages-pip-opts)) \
-
-HOST_PYTHON_PIP_INSTALL_HOST:=$(call HOST_PYTHON_PIP_INSTALL,$(STAGING_DIR_HOSTPKG),"")
-HOST_PYTHON_PIP_INSTALL_TARGET=$(call HOST_PYTHON_PIP_INSTALL,$(PKG_INSTALL_DIR)/$(call req2dir,$(pkg)),/usr)
-HOST_PYTHON_PIP_INSTALL_CLEANUP:=$(call HOST_PYTHON_PIP_INSTALL,$(PKG_INSTALL_DIR)/_cleanup,/usr)
-
-define Build/Compile
- $(foreach pkg,$(CONFIG_PACKAGE_python-packages-list-host),
- $(call Build/Compile/HostPyRunHost,,$(HOST_PYTHON_PIP_INSTALL_HOST) $(pkg))
- )
- $(foreach pkg,$(CONFIG_PACKAGE_python-packages-list),
- $(call Build/Compile/HostPyRunTarget,,$(call HOST_PYTHON_PIP_INSTALL_TARGET,$(pkg)) $(pkg),$(CONFIG_PACKAGE_python-packages-envs))
- )
- $(foreach pkg,$(CONFIG_PACKAGE_python-packages-list-cleanup),
- $(call Build/Compile/HostPyRunTarget,,$(HOST_PYTHON_PIP_INSTALL_CLEANUP) $(pkg),$(CONFIG_PACKAGE_python-packages-envs))
- )
-endef
-
-define Package/python-packages/install
- $(foreach pkg,$(CONFIG_PACKAGE_python-packages-list),
- $(CP) "$(PKG_INSTALL_DIR)/$(call req2dir,$(pkg))"/* $(1)
- )
-
- find "$(PKG_INSTALL_DIR)/_cleanup" -mindepth 1 -depth | while read sf; do \
- tf="$$$${sf#$(PKG_INSTALL_DIR)/_cleanup/}"; \
- tf="$(1)/$$$$tf"; \
- if [ -f "$$$$tf" -o -L "$$$$tf" ]; then \
- rm -vf "$$$$tf"; \
- elif [ -d "$$$$tf" ]; then \
- rmdir -v -p "$$$$tf" || true; \
- fi \
- done
-endef
-
-define Package/python-packages/extra_provides
- echo $(CONFIG_PACKAGE_python-packages-extra-deps) | tr ' ' '\n'
-endef
-
-$(eval $(call BuildPackage,python-packages))
+++ /dev/null
-This package allows users to package python modules without creating package
-Makefiles for each individual module and their dependencies. It provides a
-way making packaging python packages faster and may also facilitate the process
-of developing Makefiles for new python packages
-
-This is a raw DEVEL only package. Using it may entail a lot of implementation
-details and you may need to resolve target dependencies and package details on
-your own
-
-- Third party python packages may depend on features not included in e.g.
- python-light
-- Some python modules may require host install of another module to progress,
- e.g. target cryptography requires host cffi
-- Some python modules have external C library dependencies, e.g. pyOpenSSL
- requires openssl libs
-- Some packages may have an autoconf configure script whose arguments we
- cannot control with pip and has to be passed on (hacked) by overriding some
- environment variables
-
-## How it works
-
-1. Install host modules required for building target modules
-2. Install each target module to separate directories
-3. Install another copy of modules for cleanup purposes to make list of
- installed files to be removed from target modules installed in step 2
-
-Why should it be so
-
-1. Installing target cryptography requires host installation of cffi module
-2. cryptography requires setuptools and pip will install its own copy with
- --ignore-installed. When PACKAGE_python-setuptools is also selected, opkg
- will complain of data file clashes if it was not removed here.
-
-Pip will handle dependency requirements of python modules, but external
-dependencies like c libraries has to be prepared by the build system. The
-issue is that there is currently no way to express such dependencies, thus may
-cause build failure, e.g. pycrypto requires the presence of libgmp to build
-successfully.
-
-## Tips
-
-If something goes wrong, we can add additional arguments to pip command
-line to check the detailed build process. Some useful arguments may be
-
-- -v, for verbose output. Repeat this option if the current level of
- verbosity is not enough
-- --no-clean, for preserving pip build dir on build failure
-
-## Examples
-
-tornado (python-only module)
-
- CONFIG_PACKAGE_python-packages=y
- CONFIG_PACKAGE_python-packages-list="tornado==4.4.2"
-
-cryptography (requires installation of host modules and cleanup on target modules)
-
- CONFIG_PACKAGE_python-packages=y
- CONFIG_PACKAGE_python-packages-list-host="cffi"
- CONFIG_PACKAGE_python-packages-list="cryptography"
- CONFIG_PACKAGE_python-packages-list-cleanup="setuptools"
-
-pycrypto 2.7a1 (python module with autoconf configure script; depends on
-libgmp; broken wmmintrin.h). 2.6.1 does not work because of a flaw in
-the setup.py hardcoding host include directory
-
- CONFIG_PACKAGE_libgmp=y
- CONFIG_PACKAGE_python-packages=y
- CONFIG_PACKAGE_python-packages-list="https://github.com/dlitz/pycrypto/archive/v2.7a1.tar.gz"
- CONFIG_PACKAGE_python-packages-envs="ac_cv_header_wmmintrin_h=no build_alias=$(GNU_HOST_NAME) host_alias=$(GNU_TARGET_NAME) target_alias=$(GNU_TARGET_NAME)"
- CONFIG_PACKAGE_python-packages-extra-deps="libgmp.so.10"
-
+++ /dev/null
-#
-# Copyright (C) 2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=Parsley
-PKG_VERSION:=1.3
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/source/P/Parsley
-PKG_MD5SUM:=92bc256e5f73810a609dc7874637ad31
-
-PKG_LICENSE:=MIT
-PKG_LICENSE_FILES:=LICENSE
-PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-parsley
- SECTION:=lang
- CATEGORY:=Languages
- SUBMENU:=Python
- TITLE:=python-parsley
- URL:=http://launchpad.net/parsley
- DEPENDS:=+python-light
-endef
-
-define Package/python-parsley/description
-Parsing and pattern matching made easy.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
-endef
-
-$(eval $(call PyPackage,python-parsley))
-$(eval $(call BuildPackage,python-parsley))
+++ /dev/null
-diff -Nur a/setup.py b/setup.py
---- a/setup.py 2015-09-09 10:45:25.000000000 +0800
-+++ b/setup.py 2015-12-01 17:31:03.143409843 +0800
-@@ -14,7 +14,6 @@
- author_email="washort42@gmail.com",
- license="MIT License",
- long_description=open("README").read(),
-- packages=["ometa", "terml", "ometa._generated", "terml._generated",
-- "ometa.test", "terml.test"],
-+ packages=["ometa", "terml", "ometa._generated", "terml._generated"],
- py_modules=["parsley"]
- )
+++ /dev/null
-#
-# Copyright (C) 2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=python-pcapy
-PKG_VERSION:=0.11.1
-PKG_RELEASE:=1
-PKG_MAINTAINER:=Andrew McConachie <andrew@depht.com>
-PKG_LICENSE:=Apache-1.1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/CoreSecurity/pcapy.git
-PKG_SOURCE_VERSION:=b91a418374d1636408c435f11799ef725ef70097
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-pcapy
- SECTION:=language-python
- CATEGORY:=Languages
- SUBMENU:=Python
- TITLE:=python-pcapy
- URL:=https://www.coresecurity.com/corelabs-research/open-source-tools/pcapy
- DEPENDS:=+python +libpcap +libstdcpp
-endef
-
-define Package/python-pcapy/description
- Pcapy is a Python extension module that interfaces with the libpcap packet capture library. Pcapy enables python scripts to capture packets on the network. Pcapy is highly effective when used in conjunction with a packet-handling package such as Impacket, which is a collection of Python classes for constructing and dissecting network packets.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,\
- install --prefix=/usr --root="$(PKG_INSTALL_DIR)" \
- )
-endef
-
-$(eval $(call PyPackage,python-pcapy))
-$(eval $(call BuildPackage,python-pcapy))
+++ /dev/null
-#
-# Copyright (C) 2015-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=ply
-PKG_VERSION:=3.9
-PKG_RELEASE:=2
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://www.dabeaz.com/ply
-PKG_HASH:=0d7e2940b9c57151392fceaa62b0865c45e06ce1e36687fd8d03f011a907f43e
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-$(PKG_NAME)-$(PKG_VERSION)
-PKG_UNPACK=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
-
-HOST_BUILD_DEPENDS:=
-ifdef CONFIG_PACKAGE_python-ply
-HOST_BUILD_DEPENDS+=python/host
-endif
-ifdef CONFIG_PACKAGE_python3-ply
-HOST_BUILD_DEPENDS+=python3/host
-endif
-
-PKG_LICENSE:=BSD-3-Clause
-PKG_LICENSE_FILES:=README.md
-PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
-
-include $(INCLUDE_DIR)/host-build.mk
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-$(call include_mk, python3-package.mk)
-
-define Package/python-ply/Default
- SECTION:=lang
- CATEGORY:=Languages
- SUBMENU:=Python
- URL:=http://www.dabeaz.com/ply/
-endef
-
-define Package/python-ply
-$(call Package/python-ply/Default)
- TITLE:=python-ply
- DEPENDS:=+python-light
- VARIANT:=python
-endef
-
-define Package/python3-ply
-$(call Package/python-ply/Default)
- TITLE:=python3-ply
- DEPENDS:=+python3-light
- VARIANT:=python3
-endef
-
-define Package/python-ply/description
-PLY is a 100% Python implementation of the common parsing tools lex
-and yacc.
-endef
-
-define Package/python3-ply/description
-$(call Package/python-ply/description)
-.
-(Variant for Python3)
-endef
-
-ifdef CONFIG_PACKAGE_python-ply
-define Host/Compile/python-ply
- $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR_HOSTPKG)")
-endef
-endif
-
-ifdef CONFIG_PACKAGE_python3-ply
-define Host/Compile/python3-ply
- $(call Build/Compile/HostPy3Mod,,install --prefix="" --root="$(STAGING_DIR_HOSTPKG)")
-endef
-endif
-
-define Host/Compile
-$(call Host/Compile/python-ply)
-$(call Host/Compile/python3-ply)
-endef
-
-define Host/Install
-endef
-
-$(eval $(call HostBuild))
-
-$(eval $(call PyPackage,python-ply))
-$(eval $(call BuildPackage,python-ply))
-
-$(eval $(call Py3Package,python3-ply))
-$(eval $(call BuildPackage,python3-ply))
+++ /dev/null
-#
-# Copyright (C) 2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=python-psycopg2
-PKG_VERSION:=2.6.2
-PKG_RELEASE:=1
-PKG_MAINTAINER:=Dmitry Trefilov <the-alien@live.ru>
-PKG_LICENSE:=LGPL-3.0+
-PKG_LICENSE_FILES:=LICENSE
-
-PKG_SOURCE:=psycopg2-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://initd.org/psycopg/tarballs/PSYCOPG-2-6/
-PKG_MD5SUM:=4a392949ba31a378a18ed3e775a4693f
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/psycopg2-$(PKG_VERSION)
-PKG_BUILD_DEPENDS:=python libpq python/host
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-psycopg2
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- TITLE:=PostgreSQL database adapter for Python
- URL:=http://www.initd.org/
- DEPENDS:=+python +libpq +python-egenix-mx-base
-endef
-
-define Package/python-psycopg2/description
- Psycopg is the most popular PostgreSQL adapter for the Python programming language
-endef
-
-define Build/Compile
- # The PATH var is required so that psycopg2's setup.py script finds pg_config
- $(call Build/Compile/PyMod,., \
- install --prefix=/usr --root=$(PKG_INSTALL_DIR), \
- PATH=$(STAGING_DIR)/usr/bin:$(PATH))
-endef
-
-define Package/python-psycopg2/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call PyPackage,python-psycopg2))
-$(eval $(call BuildPackage,python-psycopg2))
+++ /dev/null
-#
-# Copyright (C) 2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=pyasn1-modules
-PKG_VERSION:=0.0.8
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pyasn1-modules
-PKG_MD5SUM:=178129bc7fbf07215c25230c5f053f81
-
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-PKG_LICENSE:=BSD-2-Clause
-PKG_LICENSE_FILES:=LICENSE.txt
-PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-pyasn1-modules
- SECTION:=lang
- CATEGORY:=Languages
- SUBMENU:=Python
- TITLE:=python-pyasn1-modules
- URL:=http://sourceforge.net/projects/pyasn1/
- DEPENDS:=+python-light +python-pyasn1
-endef
-
-define Package/python-pyasn1-modules/description
-This is a small but growing collection of ASN.1 data structures
-expressed in Python terms using pyasn1 data model.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
-endef
-
-$(eval $(call PyPackage,python-pyasn1-modules))
-$(eval $(call BuildPackage,python-pyasn1-modules))
+++ /dev/null
-#
-# Copyright (C) 2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=pyasn1
-PKG_VERSION:=0.1.9
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pyasn1
-PKG_MD5SUM:=f00a02a631d4016818659d1cc38d229a
-
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-PKG_LICENSE:=BSD-2-Clause
-PKG_LICENSE_FILES:=LICENSE.txt
-PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-pyasn1
- SECTION:=lang
- CATEGORY:=Languages
- SUBMENU:=Python
- TITLE:=python-pyasn1
- URL:=http://pyasn1.sourceforge.net/
- DEPENDS:=+python-light
-endef
-
-define Package/python-pyasn1/description
-This is an implementation of ASN.1 types and codecs in Python programming
-language. It has been first written to support particular protocol (SNMP)
-but then generalized to be suitable for a wide range of protocols
-based on ASN.1 specification.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-$(eval $(call PyPackage,python-pyasn1))
-$(eval $(call BuildPackage,python-pyasn1))
+++ /dev/null
-#
-# Copyright (C) 2015-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=pycparser
-PKG_VERSION:=2.14
-PKG_RELEASE:=4
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pycparser
-PKG_HASH:=7959b4a74abdc27b312fed1c21e6caf9309ce0b29ea86b591fd2e99ecdf27f73
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-$(PKG_NAME)-$(PKG_VERSION)
-PKG_UNPACK=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
-
-HOST_BUILD_DEPENDS:=python-ply/host
-ifdef CONFIG_PACKAGE_python-pycparser
-HOST_BUILD_DEPENDS+=python/host
-endif
-ifdef CONFIG_PACKAGE_python3-pycparser
-HOST_BUILD_DEPENDS+=python3/host
-endif
-
-PKG_LICENSE:=BSD-3-Clause
-PKG_LICENSE_FILES:=LICENSE
-PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
-
-include $(INCLUDE_DIR)/host-build.mk
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-$(call include_mk, python3-package.mk)
-
-define Package/python-pycparser/Default
- SECTION:=lang
- CATEGORY:=Languages
- SUBMENU:=Python
- URL:=https://github.com/eliben/pycparser
-endef
-
-define Package/python-pycparser
-$(call Package/python-pycparser/Default)
- TITLE:=python-pycparser
- DEPENDS:=+python-light +python-ply
- VARIANT:=python
-endef
-
-define Package/python3-pycparser
-$(call Package/python-pycparser/Default)
- TITLE:=python3-pycparser
- DEPENDS:=+python3-light +python3-ply
- VARIANT:=python3
-endef
-
-define Package/python-pycparser/description
-pycparser is a parser for the C language, written in pure Python. It is a
-module designed to be easily integrated into applications that need to parse
-C source code.
-endef
-
-define Package/python3-pycparser/description
-$(call Package/python-pycparser/description)
-.
-(Variant for Python3)
-endef
-
-ifdef CONFIG_PACKAGE_python-pycparser
-define Host/Compile/python-pycparser
- $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR_HOSTPKG)")
-endef
-endif
-
-ifdef CONFIG_PACKAGE_python3-pycparser
-define Host/Compile/python3-pycparser
- $(call Build/Compile/HostPy3Mod,,install --prefix="" --root="$(STAGING_DIR_HOSTPKG)")
-endef
-endif
-
-define Host/Compile
-$(call Host/Compile/python-pycparser)
-$(call Host/Compile/python3-pycparser)
-endef
-
-define Host/Install
-endef
-
-$(eval $(call HostBuild))
-
-$(eval $(call PyPackage,python-pycparser))
-$(eval $(call BuildPackage,python-pycparser))
-
-$(eval $(call Py3Package,python3-pycparser))
-$(eval $(call BuildPackage,python3-pycparser))
+++ /dev/null
-diff --git a/pycparser/c_lexer.py b/pycparser/c_lexer.py
-index cbb9d26..cbd7742 100644
---- a/pycparser/c_lexer.py
-+++ b/pycparser/c_lexer.py
-@@ -9,8 +9,8 @@
- import re
- import sys
-
--from .ply import lex
--from .ply.lex import TOKEN
-+from ply import lex
-+from ply.lex import TOKEN
-
-
- class CLexer(object):
-diff --git a/pycparser/c_parser.py b/pycparser/c_parser.py
-index f4f7453..5c0ca88 100644
---- a/pycparser/c_parser.py
-+++ b/pycparser/c_parser.py
-@@ -8,7 +8,7 @@
- #------------------------------------------------------------------------------
- import re
-
--from .ply import yacc
-+from ply import yacc
-
- from . import c_ast
- from .c_lexer import CLexer
-diff --git a/setup.py b/setup.py
-index fdccbb3..036a10b 100644
---- a/setup.py
-+++ b/setup.py
-@@ -49,7 +49,7 @@ setup(
- classifiers = [
- 'Programming Language :: Python :: 2',
- 'Programming Language :: Python :: 3',],
-- packages=['pycparser', 'pycparser.ply'],
-+ packages=['pycparser'],
- package_data={'pycparser': ['*.cfg']},
- cmdclass={'install': install, 'sdist': sdist},
- )
+++ /dev/null
-#
-# Copyright (C) 2015-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=pyOpenSSL
-PKG_VERSION:=16.1.0
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/15/1e/79c75db50e57350a7cefb70b110255757e9abd380a50ebdc0cfd853b7450
-PKG_MD5SUM:=d8100b0c333f0eeadaf05914da8792a6
-
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-PKG_LICENSE:=Apache-2.0
-PKG_LICENSE_FILES:=LICENSE
-PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-pyopenssl
- SECTION:=lang
- CATEGORY:=Languages
- SUBMENU:=Python
- TITLE:=python-pyopenssl
- URL:=https://github.com/pyca/pyopenssl
- DEPENDS:=+python-light +python-cryptography +python-six
-endef
-
-define Package/python-pyopenssl/description
-Python wrapper module around the OpenSSL library
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
-endef
-
-$(eval $(call PyPackage,python-pyopenssl))
-$(eval $(call BuildPackage,python-pyopenssl))
+++ /dev/null
-#
-# Copyright (C) 2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=pyptlib
-PKG_VERSION:=0.0.6
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pyptlib
-PKG_MD5SUM:=2fc7b8803777451c1fad3d5e25f1b99c
-
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-PKG_LICENSE:=BSD-3-Clause
-PKG_LICENSE_FILES:=LICENSE
-PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-pyptlib
- SECTION:=lang
- CATEGORY:=Languages
- SUBMENU:=Python
- TITLE:=python-pyptlib
- URL:=https://pypi.python.org/pypi/pyptlib
- DEPENDS:=+python-light
-endef
-
-define Package/python-pyptlib/description
-A python implementation of the Pluggable Transports for Circumvention
-specification for Tor
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
-endef
-
-$(eval $(call PyPackage,python-pyptlib))
-$(eval $(call BuildPackage,python-pyptlib))
+++ /dev/null
-#
-# Copyright (C) 2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=python-pyserial
-PKG_VERSION:=3.1.1
-PKG_RELEASE:=1
-PKG_MAINTAINER:=Micke Prag <micke.prag@telldus.se>
-PKG_LICENSE:=Python-2.0
-
-PKG_SOURCE:=pyserial-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://pypi.python.org/packages/3c/d8/a9fa247ca60b02b3bebbd61766b4f321393b57b13c53b18f6f62cf172c08/
-PKG_MD5SUM:=2f72100de3e410b36d575e12e82e9d27
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/pyserial-$(PKG_VERSION)
-PKG_BUILD_DEPENDS:=python
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-pyserial
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- TITLE:=python-pyserial
- URL:=http://pyserial.sourceforge.net
- DEPENDS:=+python-light
-endef
-
-define Package/python-pyserial/description
- serial port python bindings
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root="$(PKG_INSTALL_DIR)")
-endef
-
-define Package/python-pyserial/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call BuildPackage,python-pyserial))
+++ /dev/null
-#
-# Copyright (C) 2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=service_identity
-PKG_VERSION:=16.0.0
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/source/s/service_identity
-PKG_MD5SUM:=d52392597b9c44a740abf322bfdb21e6
-
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-PKG_LICENSE:=MIT
-PKG_LICENSE_FILES:=LICENSE
-PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-service-identity
- SECTION:=lang
- CATEGORY:=Languages
- SUBMENU:=Python
- TITLE:=python-service-identity
- URL:=https://github.com/pyca/service_identity
- DEPENDS:=+python-light +python-attrs +python-pyasn1 +python-pyasn1-modules +python-pyopenssl
-endef
-
-define Package/python-service-identity/description
-service_identity aspires to give you all the tools you need for
-verifying whether a certificate is valid for the intended purposes.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
-endef
-
-$(eval $(call PyPackage,python-service-identity))
-$(eval $(call BuildPackage,python-service-identity))
+++ /dev/null
-#
-# Copyright (C) 2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=six
-PKG_VERSION:=1.10.0
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/source/s/six
-PKG_MD5SUM:=34eed507548117b2ab523ab14b2f8b55
-
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-PKG_LICENSE:=MIT
-PKG_LICENSE_FILES:=LICENSE
-PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-six
- SECTION:=lang
- CATEGORY:=Languages
- SUBMENU:=Python
- TITLE:=python-six
- URL:=https://pypi.python.org/pypi/six
- DEPENDS:=+python-light
-endef
-
-define Package/python-six/description
-Six is a Python 2 and 3 compatibility library. It provides utility functions
-for smoothing over the differences between the Python versions with the goal of
-writing Python code that is compatible on both Python versions. See the
-documentation for more information on what is provided.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-$(eval $(call PyPackage,python-six))
-$(eval $(call BuildPackage,python-six))
+++ /dev/null
-#
-# Copyright (C) 2015-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=txsocksx
-PKG_VERSION:=1.15.0.2
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/source/t/txsocksx
-PKG_MD5SUM:=0266b9ae7b58f7550a49683afebf65ba
-
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-PKG_LICENSE:=ISC
-PKG_LICENSE_FILES:=COPYING
-PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-txsocksx
- SECTION:=lang
- CATEGORY:=Languages
- SUBMENU:=Python
- TITLE:=python-txsocksx
- URL:=https://github.com/habnabit/txsocksx
- DEPENDS:=+python-light +python-parsley +twisted
-endef
-
-define Package/python-txsocksx/description
-txsocksx is SOCKS4/4a and SOCKS5 client endpoints for Twisted 10.1 or
-greater.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,, \
- install --prefix="/usr" --root="$(PKG_INSTALL_DIR)", \
- PKG_VERSION="$(PKG_VERSION)" \
- )
-endef
-
-$(eval $(call PyPackage,python-txsocksx))
-$(eval $(call BuildPackage,python-txsocksx))
+++ /dev/null
-diff --git a/setup.py b/setup.py
-index 7979f89..3873a1e 100644
---- a/setup.py
-+++ b/setup.py
-@@ -35,5 +35,5 @@ setup(
- 'version_module_paths': ['txsocksx/_version.py'],
- },
- install_requires=install_requires,
-- packages=['txsocksx', 'txsocksx.test'],
-+ packages=['txsocksx'],
- )
+++ /dev/null
-diff --git a/setup.py b/setup.py
-index 7979f89..5e1abb3 100644
---- a/setup.py
-+++ b/setup.py
-@@ -1,6 +1,8 @@
- # Copyright (c) Aaron Gallagher <_@habnab.it>
- # See COPYING for details.
-
-+import os
-+
- from setuptools import setup
-
-
-@@ -30,10 +32,11 @@ setup(
- ],
- license='ISC',
-
-- setup_requires=['vcversioner>=1'],
-- vcversioner={
-- 'version_module_paths': ['txsocksx/_version.py'],
-- },
-+ #setup_requires=['vcversioner>=1'],
-+ #vcversioner={
-+ # 'version_module_paths': ['txsocksx/_version.py'],
-+ #},
-+ version=os.environ.get('PKG_VERSION'),
- install_requires=install_requires,
- packages=['txsocksx', 'txsocksx.test'],
- )
+++ /dev/null
-#
-# Copyright (C) 2007-2017 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=python-urllib3
-PKG_VERSION:=1.20
-PKG_RELEASE:=1
-PKG_LICENSE:=MIT
-
-PKG_SOURCE:=urllib3-$(PKG_VERSION).tar.gz
-PKG_BUILD_DIR:=$(BUILD_DIR)/urllib3-$(PKG_VERSION)/
-PKG_SOURCE_URL:=https://pypi.python.org/packages/20/56/a6aa403b0998f857b474a538343ee483f5c02491bd1aebf61d42a3f60f77/
-PKG_MD5SUM:=34691d4e7e20a8e9cdb452ea24fc38e7
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-urllib3
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- TITLE:=HTTP library with thread-safe connection pooling, file post, and more.
- URL:=https://urllib3.readthedocs.io/
- DEPENDS:=+python
-endef
-
-define Package/python-urllib3/description
- HTTP library with thread-safe connection pooling, file post, and more.
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-define Package/python-urllib3/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call BuildPackage,python-urllib3))
+++ /dev/null
-#
-# Copyright (C) 2008-2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=PyYAML
-PKG_VERSION:=3.11
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://pyyaml.org/download/pyyaml/
-PKG_MD5SUM:=f50e08ef0fe55178479d3a618efe21db
-
-PKG_LICENSE:=MIT
-PKG_LICENSE_FILES:=COPYING
-PKG_MAINTAINER:=Nicolas Thill <nico@openwrt.org>
-
-PKG_BUILD_DEPENDS:=python
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/python-yaml
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- TITLE:=YAML parser and emitter for Python
- URL:=http://pyyaml.org/wiki/PyYAML
- DEPENDS:=+python +libyaml
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,\
- --with-libyaml install --prefix="$(PKG_INSTALL_DIR)/usr" \
- )
-endef
-
-$(eval $(call PyPackage,python-yaml))
-$(eval $(call BuildPackage,python-yaml))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-# For PYTHON_VERSION
-include ./files/python-version.mk
-
-PKG_NAME:=python
-PKG_VERSION:=$(PYTHON_VERSION).$(PYTHON_VERSION_MICRO)
-PKG_RELEASE:=5
-
-PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=https://www.python.org/ftp/python/$(PKG_VERSION)
-PKG_MD5SUM:=53b43534153bb2a0363f08bae8b9d990
-PKG_HASH:=35d543986882f78261f97787fd3e06274bfa6df29fac9b4a94f73930ff98f731
-
-PKG_LICENSE:=PSF
-PKG_LICENSE_FILES:=LICENSE Modules/_ctypes/libffi_msvc/LICENSE Modules/_ctypes/darwin/LICENSE Modules/_ctypes/libffi/LICENSE Modules/_ctypes/libffi_osx/LICENSE Tools/pybench/LICENSE
-
-# This file provides the necsessary host build variables
-include ./files/python-host.mk
-
-# For PyPackage
-include ./files/python-package.mk
-
-PKG_INSTALL:=1
-PKG_BUILD_PARALLEL:=1
-HOST_BUILD_PARALLEL:=1
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/Python-$(PKG_VERSION)
-HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/Python-$(PKG_VERSION)
-
-PKG_BUILD_DEPENDS:=python/host
-HOST_BUILD_DEPENDS:=bzip2/host expat/host
-
-include $(INCLUDE_DIR)/host-build.mk
-include $(INCLUDE_DIR)/package.mk
-
-define Package/python/Default
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- TITLE:=Python $(PYTHON_VERSION) programming language
- URL:=https://www.python.org/
- MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
-endef
-
-define Package/python/Default/description
- Python is a dynamic object-oriented programming language that can be used
- for many kinds of software development. It offers strong support for
- integration with other languages and tools, comes with extensive standard
- libraries, and can be learned in a few days. Many Python programmers
- report substantial productivity gains and feel the language encourages
- the development of higher quality, more maintainable code.
-endef
-
-define Package/python-pip-conf
-$(call Package/python/Default)
- TITLE:=Configuration file for pip/pip3
- URL:=https://pip.pypa.io
-endef
-
-define Package/python-pip-conf/description
- Configuration file for pip/pip3
-endef
-
-define Package/python-base
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) interpreter
- DEPENDS:=+libpthread +zlib
-endef
-
-define Package/python-base/description
- This package contains only the interpreter and the bare minimum
- for the interpreter to start.
-endef
-
-define Package/python-light
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) light installation
- DEPENDS:=+python-base +libffi +libbz2
-endef
-
-define Package/python-light/description
- This package is essentially the python-base package plus
- a few of the rarely used (and big) libraries stripped out
- into separate packages.
-endef
-
-PYTHON_LIB_FILES_DEL:=
-PYTHON_PACKAGES:=
-PYTHON_PACKAGES_DEPENDS:=
-define PyBasePackage
- PYTHON_PACKAGES+=$(1)
- ifeq ($(3),)
- PYTHON_PACKAGES_DEPENDS+=$(1)
- endif
- PYTHON_LIB_FILES_DEL+=$(2)
- define PyPackage/$(1)/filespec
- ifneq ($(2),)
- $(subst $(space),$(newline),$(foreach lib_file,$(2),+|$(lib_file)))
- -|/usr/lib/python$(PYTHON_VERSION)/*/test
- -|/usr/lib/python$(PYTHON_VERSION)/*/tests
- endif
- endef
-endef
-
-include ./files/python-package-*.mk
-
-define Package/python
-$(call Package/python/Default)
- DEPENDS:=+python-light $(foreach package,$(PYTHON_PACKAGES_DEPENDS),+$(package))
-endef
-
-define Package/python/description
- This package contains the (almost) full Python install.
- It's python-light + all other packages.
-endef
-
-MAKE_FLAGS+=\
- CROSS_COMPILE=yes \
- LD="$(TARGET_CC)" \
- PGEN=pgen2
-
-EXTRA_CFLAGS+= \
- -DNDEBUG -fno-inline
-EXTRA_LDFLAGS+= \
- -L$(PKG_BUILD_DIR)
-
-ENABLE_IPV6:=
-ifeq ($(CONFIG_IPV6),y)
- ENABLE_IPV6 += --enable-ipv6
-endif
-
-PYTHON_FOR_BUILD:= \
- _PYTHON_PROJECT_BASE=$(PKG_BUILD_DIR) \
- _PYTHON_HOST_PLATFORM=linux2 \
- PYTHONPATH="$(PKG_BUILD_DIR)/Lib:$(PKG_BUILD_DIR)/build/lib.linux2-$(PYTHON_VERSION)" \
- _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata \
- $(HOST_PYTHON_BIN)
-
-CONFIGURE_ARGS+= \
- --sysconfdir=/etc \
- --enable-shared \
- --without-cxx-main \
- --with-threads \
- --with-system-ffi \
- --with-ensurepip=no \
- --without-pymalloc \
- PYTHON_FOR_BUILD="$(PYTHON_FOR_BUILD)" \
- $(ENABLE_IPV6) \
- CONFIG_SITE="$(PKG_BUILD_DIR)/config.site" \
- OPT="$(TARGET_CFLAGS)"
-
-define Build/Prepare
- $(call Build/Prepare/Default)
- $(CP) ./files/config.site $(PKG_BUILD_DIR)/config.site
-endef
-
-ifdef CONFIG_PACKAGE_python-setuptools
-define Build/Compile/python-setuptools
- $(STAGING_DIR_HOSTPKG)/bin/pip install \
- --ignore-installed \
- --root=$(PKG_BUILD_DIR)/install-setuptools --prefix=. \
- $(PKG_BUILD_DIR)/Lib/ensurepip/_bundled/setuptools-*.whl
-endef
-endif # CONFIG_PACKAGE_python-setuptools
-
-ifdef CONFIG_PACKAGE_python-pip
-define Build/Compile/python-pip
- $(STAGING_DIR_HOSTPKG)/bin/pip install \
- --ignore-installed \
- --root=$(PKG_BUILD_DIR)/install-pip --prefix=. \
- $(PKG_BUILD_DIR)/Lib/ensurepip/_bundled/pip-*.whl
-endef
-endif # CONFIG_PACKAGE_python-pip
-
-define Build/Compile
- $(call Build/Compile/Default)
- # Use host pip to install python-setuptools
- $(call Build/Compile/python-setuptools)
- $(call Build/Compile/python-pip)
-endef
-
-define Build/InstallDev
- $(INSTALL_DIR) $(STAGING_DIR)/mk/
- $(INSTALL_DIR) $(1)/usr/include/ $(1)/usr/lib/ $(1)/usr/lib/pkgconfig
- $(INSTALL_DIR) $(1)/usr/lib/python$(PYTHON_VERSION)/
- $(INSTALL_DATA) \
- ./files/python-package.mk \
- ./files/python-host.mk \
- ./files/python-version.mk \
- ./files/python-package-install.sh \
- $(STAGING_DIR)/mk/
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/include/python$(PYTHON_VERSION) \
- $(1)/usr/include/
- $(CP) \
- $(HOST_PYTHON_LIB_DIR) \
- $(PKG_INSTALL_DIR)/usr/lib/libpython$(PYTHON_VERSION).so* \
- $(1)/usr/lib/
- $(CP) \
- $(HOST_PYTHON_DIR)/lib/pkgconfig/python.pc \
- $(HOST_PYTHON_DIR)/lib/pkgconfig/python2.pc \
- $(HOST_PYTHON_DIR)/lib/pkgconfig/python-$(PYTHON_VERSION).pc \
- $(1)/usr/lib/pkgconfig
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/lib/python$(PYTHON_VERSION)/config \
- $(1)/usr/lib/python$(PYTHON_VERSION)/
-endef
-
-PYTHON_BASE_LIB_FILES:= \
- /usr/lib/python$(PYTHON_VERSION)/_abcoll.py \
- /usr/lib/python$(PYTHON_VERSION)/_sysconfigdata.py \
- /usr/lib/python$(PYTHON_VERSION)/_weakrefset.py \
- /usr/lib/python$(PYTHON_VERSION)/abc.py \
- /usr/lib/python$(PYTHON_VERSION)/copy_reg.py \
- /usr/lib/python$(PYTHON_VERSION)/genericpath.py \
- /usr/lib/python$(PYTHON_VERSION)/linecache.py \
- /usr/lib/python$(PYTHON_VERSION)/posixpath.py \
- /usr/lib/python$(PYTHON_VERSION)/os.py \
- /usr/lib/python$(PYTHON_VERSION)/re.py \
- /usr/lib/python$(PYTHON_VERSION)/site.py \
- /usr/lib/python$(PYTHON_VERSION)/sre_compile.py \
- /usr/lib/python$(PYTHON_VERSION)/sre_constants.py \
- /usr/lib/python$(PYTHON_VERSION)/sre_parse.py \
- /usr/lib/python$(PYTHON_VERSION)/sysconfig.py \
- /usr/lib/python$(PYTHON_VERSION)/stat.py \
- /usr/lib/python$(PYTHON_VERSION)/traceback.py \
- /usr/lib/python$(PYTHON_VERSION)/types.py \
- /usr/lib/python$(PYTHON_VERSION)/UserDict.py \
- /usr/lib/python$(PYTHON_VERSION)/warnings.py
-
-PYTHON_LIB_FILES_DEL+=$(PYTHON_BASE_LIB_FILES)
-
-define PyPackage/python-base/filespec
-+|/usr/bin/python$(PYTHON_VERSION)
-$(subst $(space),$(newline),$(foreach lib_file,$(PYTHON_BASE_LIB_FILES),+|$(lib_file)))
-endef
-
-define PyPackage/python-light/filespec
-+|/usr/lib/python$(PYTHON_VERSION)
--|/usr/lib/python$(PYTHON_VERSION)/distutils/cygwinccompiler.py
--|/usr/lib/python$(PYTHON_VERSION)/distutils/command/wininst*
--|/usr/lib/python$(PYTHON_VERSION)/ensurepip
--|/usr/lib/python$(PYTHON_VERSION)/idlelib
--|/usr/lib/python$(PYTHON_VERSION)/lib-tk
--|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_testcapi.so
--|/usr/lib/python$(PYTHON_VERSION)/pdb.doc
--|/usr/lib/python$(PYTHON_VERSION)/test
--|/usr/lib/python$(PYTHON_VERSION)/webbrowser.py
--|/usr/lib/python$(PYTHON_VERSION)/*/test
--|/usr/lib/python$(PYTHON_VERSION)/*/tests
--|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/readline.so
-$(subst $(space),$(newline),$(foreach lib_file,$(PYTHON_LIB_FILES_DEL),-|$(lib_file)))
-endef
-
-define PyPackage/python-base/install
- $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib
- $(LN) python$(PYTHON_VERSION) $(1)/usr/bin/python
- $(LN) python$(PYTHON_VERSION) $(1)/usr/bin/python2
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpython$(PYTHON_VERSION).so* $(1)/usr/lib/
-endef
-
-define PyPackage/python/filespec
--|$(PYTHON_PKG_DIR)
-endef
-
-define Package/python-pip-conf/install
- $(INSTALL_DIR) $(1)/etc
- $(CP) ./files/pip.conf $(1)/etc
-endef
-
-HOST_LDFLAGS += \
- $$$$(pkg-config --static --libs libcrypto libssl)
-
-HOST_CONFIGURE_ARGS+= \
- --without-cxx-main \
- --without-pymalloc \
- --with-threads \
- --prefix=$(HOST_PYTHON_DIR) \
- --exec-prefix=$(HOST_PYTHON_DIR) \
- --with-system-expat=$(STAGING_DIR_HOSTPKG) \
- --with-system-ffi=no \
- --with-ensurepip=install \
- CONFIG_SITE=
-
-define Host/Install
- $(MAKE) -C $(HOST_BUILD_DIR) install
- $(INSTALL_DIR) $(HOST_PYTHON_DIR)/bin/
- $(INSTALL_BIN) $(HOST_BUILD_DIR)/Parser/pgen $(HOST_PYTHON_DIR)/bin/pgen2
-endef
-
-$(eval $(call HostBuild))
-
-$(foreach package, $(PYTHON_PACKAGES), \
- $(eval $(call PyPackage,$(package))) \
- $(eval $(call BuildPackage,$(package))) \
- $(eval $(call BuildPackage,$(package)-src)) \
-)
-
-$(eval $(call PyPackage,python-base))
-$(eval $(call PyPackage,python-light))
-$(eval $(call PyPackage,python))
-
-$(eval $(call BuildPackage,python-pip-conf))
-
-$(eval $(call BuildPackage,python-base))
-$(eval $(call BuildPackage,python-light))
-$(eval $(call BuildPackage,python))
-
-$(eval $(call BuildPackage,python-base-src))
-$(eval $(call BuildPackage,python-light-src))
-$(eval $(call BuildPackage,python-src))
--- /dev/null
+#
+# Copyright (C) 2007-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=chardet
+PKG_VERSION:=2.3.0
+PKG_RELEASE:=1
+PKG_LICENSE:=LGPL-2.1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://pypi.python.org/packages/source/c/chardet/
+PKG_MD5SUM:=25274d664ccb5130adae08047416e1a8
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/chardet
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ TITLE:=Universal encoding detector for Python 2 and 3
+ URL:=https://github.com/chardet/chardet
+ DEPENDS:=+python
+endef
+
+define Package/chardet/description
+ Universal encoding detector for Python 2 and 3
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Package/chardet/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/chardetect \
+ $(1)/usr/bin
+ # fix python exec path in scripts
+ sed -i 's/#!.*/#!\/usr\/bin\/python/g' $(1)/usr/bin/chardetect
+endef
+
+$(eval $(call BuildPackage,chardet))
--- /dev/null
+#
+# Copyright (C) 2007-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=django-appconf
+PKG_VERSION:=1.0.2
+PKG_RELEASE:=1
+PKG_LICENSE:=BSD-3-Clause
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/34/b9/d07195652ab494b026f7cb0341dd6e5f2e6e39be177abe05e2cec8bd46e4/
+PKG_MD5SUM:=cc11511a47088bc56531df67cd5d6261
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/django-appconf
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ TITLE:=A helper class for handling configuration defaults of packaged apps gracefully.
+ URL:=http://django-appconf.readthedocs.org/
+ DEPENDS:=+python +django
+endef
+
+define Package/django-appconf/description
+ A helper class for handling configuration defaults of packaged apps gracefully.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Package/django-appconf/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call BuildPackage,django-appconf))
--- /dev/null
+#
+# Copyright (C) 2007-2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=django-compressor
+PKG_VERSION:=2.1.1
+PKG_RELEASE:=1
+PKG_LICENSE:=MIT
+
+PKG_SOURCE:=django_compressor-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/38/58/03098a826062b856956c7169a8f778ec2b8e2767ddc63da0629062df5621/
+PKG_BUILD_DIR:=$(BUILD_DIR)/django_compressor-$(PKG_VERSION)/
+PKG_MD5SUM:=5e74141076b70272149ed07e6ce0ea56
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/django-compressor
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ TITLE:=Compresses linked and inline JavaScript or CSS into single cached files.
+ URL:=http://django-compressor.readthedocs.org/
+ DEPENDS:=+python +django
+endef
+
+define Package/django-compressor/description
+ Compresses linked and inline JavaScript or CSS into single cached files.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Package/django-compressor/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call BuildPackage,django-compressor))
--- /dev/null
+#
+# Copyright (C) 2007-2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=django-constance
+PKG_VERSION:=1.3.4
+PKG_RELEASE:=1
+PKG_LICENSE:=BSD-3-Clause
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/0c/19/74c6bbf29a7882bab377db7a4ca30b43e09173dc1e6cabe163dc8d6a3931/
+PKG_MD5SUM:=2e197701ed93082e5fa41df0f4742294
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/django-constance
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ TITLE:=Django live settings with pluggable backends, including Redis.
+ URL:=https://github.com/jazzband/django-constance
+ DEPENDS:=+python +django
+endef
+
+define Package/django-constance/description
+ Django live settings with pluggable backends, including Redis.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Package/django-constance/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call BuildPackage,django-constance))
--- /dev/null
+#
+# Copyright (C) 2007-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=django-jsonfield
+PKG_VERSION:=1.0.1
+PKG_RELEASE:=1
+PKG_LICENSE:=BSD-3-Clause
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/e4/b2/a079f0a2218e0eb7892edbf404e0bbfbb281a6bbf06966b775f5142ed159/
+PKG_MD5SUM:=2e5e737a3f93f3b5d7ae6026b1340167
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/django-jsonfield
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ TITLE:=JSONField for django models
+ URL:=https://github.com/bradjasper/django-jsonfield
+ DEPENDS:=+python +django
+endef
+
+define Package/django-jsonfield/description
+ JSONField for django models
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Package/django-jsonfield/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call BuildPackage,django-jsonfield))
--- /dev/null
+#
+# Copyright (C) 2007-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=django-picklefield
+PKG_VERSION:=0.3.2
+PKG_RELEASE:=1
+PKG_LICENSE:=MIT
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://pypi.python.org/packages/source/d/django-picklefield/
+PKG_MD5SUM:=b2c17ca9e03704ce33890e6aefc7b2e5
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/django-picklefield
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ TITLE:=Pickled object field for Django
+ URL:=http://github.com/gintas/django-picklefield/
+ DEPENDS:=+python +django
+endef
+
+define Package/django-picklefield/description
+ Pickled object field for Django
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Package/django-picklefield/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call BuildPackage,django-picklefield))
--- /dev/null
+#
+# Copyright (C) 2007-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=django-postoffice
+PKG_VERSION:=2.0.8
+PKG_RELEASE:=1
+PKG_LICENSE:=MIT
+
+PKG_SOURCE:=django-post_office-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/52/25/cc0cfe923f183d7c19b162cac3bf8430ddaed7bad28202b8f93a97d248a4/
+PKG_BUILD_DIR:=$(BUILD_DIR)/django-post_office-$(PKG_VERSION)/
+PKG_MD5SUM:=437bf62cef06381d346ae2bc087c0e3c
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/django-postoffice
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ TITLE:=A Django app to monitor and send mail asynchronously, complete with template support.
+ URL:=https://github.com/ui/django-postoffice
+ DEPENDS:=+python +django +django-jsonfield
+endef
+
+define Package/django-postoffice/description
+ A Django app to monitor and send mail asynchronously, complete with template support.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Package/django-postoffice/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call BuildPackage,django-postoffice))
--- /dev/null
+#
+# Copyright (C) 2007-2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=django-restframework
+PKG_VERSION:=3.5.4
+PKG_RELEASE:=1
+PKG_LICENSE:=BSD-3-Clause
+
+PKG_SOURCE:=djangorestframework-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/e9/24/86dfe19fb82a40a3d7a4c50371a8bd85b9277d3506698bf332a6d41d08f6/
+PKG_BUILD_DIR:=$(BUILD_DIR)/djangorestframework-$(PKG_VERSION)
+PKG_MD5SUM:=979808c387dad8d0ebb6025c39dc7b94
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/django-restframework
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ TITLE:=Web APIs for Django, made easy.
+ URL:=http://www.django-rest-framework.org/
+ DEPENDS:=+python +django
+endef
+
+define Package/django-restframework/description
+ Web APIs for Django, made easy.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Package/django-restframework/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call BuildPackage,django-restframework))
--- /dev/null
+#
+# Copyright (C) 2007-2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=django-statici18n
+PKG_VERSION:=1.3.0
+PKG_RELEASE:=1
+PKG_LICENSE:=BSD-3-Clause
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/86/6b/2c2e86a7e144ba7b064119eaafb2c8c67665c2a0e722f0819daa9657e551/
+PKG_MD5SUM:=61e22a6f2399f9f829308e4d91b36ee0
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/django-statici18n
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ TITLE:=A Django app that provides helper for generating JavaScript catalog to static files.
+ URL:=http://django-statici18n.readthedocs.org/
+ DEPENDS:=+python +django
+endef
+
+define Package/django-statici18n/description
+ A Django app that provides helper for generating JavaScript catalog to static files.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Package/django-statici18n/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call BuildPackage,django-statici18n))
--- /dev/null
+#
+# Copyright (C) 2007-2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=django
+PKG_VERSION:=1.8.17
+PKG_RELEASE=1
+PKG_LICENSE:=BSD-3-Clause
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/django/django.git
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_VERSION:=d3d12fc11da56e4ea8af37a22a9a0aa6579ab2d5
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/django
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=The web framework for perfectionists with deadlines.
+ MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ URL:=https://www.djangoproject.com/
+ DEPENDS:=+python
+endef
+
+define Package/django/description
+ The web framework for perfectionists with deadlines.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/django-admin.py \
+ $(1)/usr/bin
+endef
+
+define Package/django/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/django-admin.py \
+ $(1)/usr/bin
+ # fix python exec path
+ sed -i 's/#!.*/#!\/usr\/bin\/python/g' $(1)/usr/bin/django-admin.py
+endef
+
+$(eval $(call BuildPackage,django))
--- /dev/null
+#
+# Copyright (C) 2007-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=et_xmlfile
+PKG_VERSION:=1.0.1
+PKG_RELEASE:=1
+PKG_LICENSE:=MIT
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://pypi.python.org/packages/source/e/et_xmlfile/
+PKG_MD5SUM:=f47940fd9d556375420b2e276476cfaf
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/et_xmlfile
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ TITLE:=An implementation of lxml.xmlfile for the standard library
+ URL:=https://bitbucket.org/openpyxl/et_xmlfile
+ DEPENDS:=+python
+endef
+
+define Package/et_xmlfile/description
+ An implementation of lxml.xmlfile for the standard library
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Package/et_xmlfile/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call BuildPackage,et_xmlfile))
+++ /dev/null
-#! /bin/sh
-#
-# Copyright (C) 2007-2014 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-ac_cv_file__dev_ptmx=yes
-ac_cv_file__dev_ptc=no
-ac_cv_buggy_getaddrinfo=no
-
+++ /dev/null
-[global]
-cache-dir=/tmp/.cache
-log-file=/tmp/pip-log.txt
+++ /dev/null
-#
-# Copyright (C) 2015-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-ifneq ($(__python_host_mk_inc),1)
-__python_host_mk_inc=1
-
-# For PYTHON_VERSION
-$(call include_mk, python-version.mk)
-
-HOST_PYTHON_DIR:=$(STAGING_DIR_HOSTPKG)
-HOST_PYTHON_INC_DIR:=$(HOST_PYTHON_DIR)/include/python$(PYTHON_VERSION)
-HOST_PYTHON_LIB_DIR:=$(HOST_PYTHON_DIR)/lib/python$(PYTHON_VERSION)
-
-HOST_PYTHON_PKG_DIR:=$(HOST_PYTHON_DIR)/lib/python$(PYTHON_VERSION)/site-packages
-
-HOST_PYTHON_BIN:=$(HOST_PYTHON_DIR)/bin/python$(PYTHON_VERSION)
-
-HOST_PYTHONPATH:=$(HOST_PYTHON_LIB_DIR):$(HOST_PYTHON_PKG_DIR)
-
-define HostPython
- if [ "$(strip $(3))" == "HOST" ]; then \
- export PYTHONPATH="$(HOST_PYTHONPATH)"; \
- export PYTHONDONTWRITEBYTECODE=0; \
- else \
- export PYTHONPATH="$(PYTHONPATH)"; \
- export PYTHONDONTWRITEBYTECODE=1; \
- export _python_sysroot="$(STAGING_DIR)"; \
- export _python_prefix="/usr"; \
- export _python_exec_prefix="/usr"; \
- fi; \
- export PYTHONOPTIMIZE=""; \
- $(1) \
- $(HOST_PYTHON_BIN) $(2);
-endef
-
-# $(1) => commands to execute before running pythons script
-# $(2) => python script and its arguments
-# $(3) => additional variables
-define Build/Compile/HostPyRunHost
- $(call HostPython, \
- $(if $(1),$(1);) \
- CC="$(HOSTCC)" \
- CCSHARED="$(HOSTCC) $(HOST_FPIC)" \
- CXX="$(HOSTCXX)" \
- LD="$(HOSTCC)" \
- LDSHARED="$(HOSTCC) -shared" \
- CFLAGS="$(HOST_CFLAGS)" \
- CPPFLAGS="$(HOST_CPPFLAGS) -I$(HOST_PYTHON_INC_DIR)" \
- LDFLAGS="$(HOST_LDFLAGS) -lpython$(PYTHON_VERSION) -Wl$(comma)-rpath=$(STAGING_DIR_HOSTPKG)/lib" \
- _PYTHON_HOST_PLATFORM=linux2 \
- $(3) \
- , \
- $(2) \
- , \
- HOST \
- )
-endef
-
-
-# $(1) => build subdir
-# $(2) => additional arguments to setup.py
-# $(3) => additional variables
-define Build/Compile/HostPyMod
- $(call Build/Compile/HostPyRunHost, \
- cd $(HOST_BUILD_DIR)/$(strip $(1)), \
- ./setup.py $(2), \
- $(3))
-endef
-
-define HostPy/Compile/Default
- $(call Build/Compile/HostPyMod,,\
- install --root="$(STAGING_DIR_HOSTPKG)" --prefix="" \
- --single-version-externally-managed \
- )
-endef
-
-endif # __python_host_mk_inc
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python-codecs
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) codecs + unicode support
- DEPENDS:=+python-light
-endef
-
-$(eval $(call PyBasePackage,python-codecs, \
- /usr/lib/python$(PYTHON_VERSION)/encodings \
- /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_codecs_cn.so \
- /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_codecs_hk.so \
- /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_codecs_iso2022.so \
- /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_codecs_jp.so \
- /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_codecs_kr.so \
- /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_codecs_tw.so \
- /usr/lib/python$(PYTHON_VERSION)/lib-dynload/unicodedata.so \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python-compiler
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) compiler module
- DEPENDS:=+python-light
-endef
-
-$(eval $(call PyBasePackage,python-compiler, \
- /usr/lib/python$(PYTHON_VERSION)/compiler \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python-ctypes
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) ctypes module
- DEPENDS:=+python-light
-endef
-
-$(eval $(call PyBasePackage,python-ctypes, \
- /usr/lib/python$(PYTHON_VERSION)/ctypes \
- /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_ctypes.so \
- /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_ctypes_test.so \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python-db
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) db module
- DEPENDS:=+python-light +libdb47
-endef
-
-$(eval $(call PyBasePackage,python-db, \
- /usr/lib/python$(PYTHON_VERSION)/bsddb \
- /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_bsddb.so \
- /usr/lib/python$(PYTHON_VERSION)/lib-dynload/dbm.so \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python-decimal
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) decimal module
- DEPENDS:=+python-light
-endef
-
-$(eval $(call PyBasePackage,python-decimal, \
- /usr/lib/python$(PYTHON_VERSION)/decimal.py \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python-dev
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) development files
- DEPENDS:=+python +python-lib2to3
-endef
-
-define PyPackage/python-dev/install
- $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/python*config $(1)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/python$(PYTHON_VERSION)/config/libpython$(PYTHON_VERSION).a $(1)/usr/lib
-endef
-
-$(eval $(call PyBasePackage,python-dev, \
- /usr/lib/python$(PYTHON_VERSION)/config \
- /usr/include/python$(PYTHON_VERSION) \
- /usr/lib/pkgconfig \
- , \
- DO_NOT_ADD_TO_PACKAGE_DEPENDS \
-))
-
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python-distutils
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) distutils
- DEPENDS:=+python-light
-endef
-
-$(eval $(call PyBasePackage,python-distutils, \
- /usr/lib/python$(PYTHON_VERSION)/distutils \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python-email
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) email module
- DEPENDS:=+python-light
-endef
-
-$(eval $(call PyBasePackage,python-email, \
- /usr/lib/python$(PYTHON_VERSION)/email \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python-gdbm
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) gdbm module
- DEPENDS:=+python-light +libgdbm
-endef
-
-$(eval $(call PyBasePackage,python-gdbm, \
- /usr/lib/python$(PYTHON_VERSION)/lib-dynload/gdbm.so \
-))
+++ /dev/null
-#!/bin/sh
-
-process_filespec() {
- local src_dir="$1"
- local dst_dir="$2"
- local filespec="$3"
- echo "$filespec" | (
- IFS='|'
- while read fop fspec fperm; do
- local fop=`echo "$fop" | tr -d ' \t\n'`
- if [ "$fop" = "+" ]; then
- if [ ! -e "${src_dir}${fspec}" ]; then
- echo "File not found '${src_dir}${fspec}'"
- exit 1
- fi
- dpath=`dirname "$fspec"`
- if [ -z "$fperm" ]; then
- dperm=`stat -c "%a" ${src_dir}${dpath}`
- fi
- mkdir -p -m$dperm ${dst_dir}${dpath}
- echo "copying: '$fspec'"
- cp -fpR ${src_dir}${fspec} ${dst_dir}${dpath}/
- if [ -n "$fperm" ]; then
- chmod -R $fperm ${dst_dir}${fspec}
- fi
- elif [ "$fop" = "-" ]; then
- echo "removing: '$fspec'"
- rm -fR ${dst_dir}${fspec}
- elif [ "$fop" = "=" ]; then
- echo "setting permissions: '$fperm' on '$fspec'"
- chmod -R $fperm ${dst_dir}${fspec}
- fi
- done
- )
-}
-
-src_dir="$1"
-dst_dir="$2"
-python="$3"
-mode="$4"
-filespec="$5"
-
-process_filespec "$src_dir" "$dst_dir" "$filespec" || {
- echo "process filespec error-ed"
- exit 1
-}
-
-if [ "$mode" == "sources" ] ; then
- # Copy only python source files
- find $dst_dir -not -name "*\.py" | xargs rm -f
- # Delete empty folders (if the case)
- find $dst_dir/usr -type d | xargs rmdir &> /dev/null
- rmdir $dst_dir/usr &> /dev/null
- exit 0
-fi
-
-# XXX [So that you won't goof as I did]
-# Note: Yes, I tried to use the -O & -OO flags here.
-# However the generated byte-codes were not portable.
-# So, we just stuck to un-optimized byte-codes,
-# which is still way better/faster than running
-# Python sources all the time.
-$python -m compileall -d '/' $dst_dir || {
- echo "python -m compileall err-ed"
- exit 1
-}
-# Delete source files and pyc [ un-optimized bytecode files ]
-# We may want to make this optimization thing configurable later, but not sure atm
-find $dst_dir -name "*\.py" | xargs rm -f
-
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python-lib2to3
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) lib2to3 module
- DEPENDS:=+python
-endef
-
-$(eval $(call PyBasePackage,python-lib2to3, \
- /usr/lib/python$(PYTHON_VERSION)/lib2to3 \
- , \
- DO_NOT_ADD_TO_PACKAGE_DEPENDS \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python-logging
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) logging module
- DEPENDS:=+python-light
-endef
-
-$(eval $(call PyBasePackage,python-logging, \
- /usr/lib/python$(PYTHON_VERSION)/logging \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python-multiprocessing
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) multiprocessing
- DEPENDS:=+python-light
-endef
-
-$(eval $(call PyBasePackage,python-multiprocessing, \
- /usr/lib/python$(PYTHON_VERSION)/multiprocessing \
- /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_multiprocessing.so \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python-ncurses
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) ncurses module
- DEPENDS:=+python-light +libncurses
-endef
-
-$(eval $(call PyBasePackage,python-ncurses, \
- /usr/lib/python$(PYTHON_VERSION)/curses \
- /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_curses.so \
- /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_curses_panel.so \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python-openssl
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) SSL module
- DEPENDS:=+python-light +libopenssl
-endef
-
-$(eval $(call PyBasePackage,python-openssl, \
- /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_hashlib.so \
- /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_ssl.so \
-))
+++ /dev/null
-#
-# Copyright (C) 2017 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python-pip
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) pip module
- VERSION:=$(PYTHON_PIP_VERSION)
- DEPENDS:=+python +python-setuptools +python-pip-conf
-endef
-
-define PyPackage/python-pip/install
- $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/python$(PYTHON_VERSION)/site-packages
- # Adjust shebang to proper python location on target
- sed "1s/.*/#\!\/usr\/bin\/python$(PYTHON_VERSION)/" -i $(PKG_BUILD_DIR)/install-pip/bin/*
- $(CP) $(PKG_BUILD_DIR)/install-pip/bin/* $(1)/usr/bin
- $(CP) \
- $(PKG_BUILD_DIR)/install-pip/lib/python$(PYTHON_VERSION)/site-packages/pip \
- $(1)/usr/lib/python$(PYTHON_VERSION)/site-packages/
-endef
-
-$(eval $(call PyBasePackage,python-pip, \
- , \
- DO_NOT_ADD_TO_PACKAGE_DEPENDS \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python-pydoc
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) pydoc module
- DEPENDS:=+python-light
-endef
-
-$(eval $(call PyBasePackage,python-pydoc, \
- /usr/lib/python$(PYTHON_VERSION)/doctest.py \
- /usr/lib/python$(PYTHON_VERSION)/pydoc.py \
- /usr/lib/python$(PYTHON_VERSION)/pydoc_data \
-))
+++ /dev/null
-#
-# Copyright (C) 2017 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python-setuptools
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) setuptools module
- VERSION:=$(PYTHON_SETUPTOOLS_VERSION)
- DEPENDS:=+python
-endef
-
-define PyPackage/python-setuptools/install
- $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/python$(PYTHON_VERSION)/site-packages
- # Adjust shebang to proper python location on target
- sed "1s/.*/#\!\/usr\/bin\/python$(PYTHON_VERSION)/" -i $(PKG_BUILD_DIR)/install-setuptools/bin/*
- $(CP) $(PKG_BUILD_DIR)/install-setuptools/bin/* $(1)/usr/bin
- $(CP) \
- $(PKG_BUILD_DIR)/install-setuptools/lib/python$(PYTHON_VERSION)/site-packages/pkg_resources \
- $(PKG_BUILD_DIR)/install-setuptools/lib/python$(PYTHON_VERSION)/site-packages/setuptools \
- $(PKG_BUILD_DIR)/install-setuptools/lib/python$(PYTHON_VERSION)/site-packages/easy_install.py \
- $(1)/usr/lib/python$(PYTHON_VERSION)/site-packages
-endef
-
-$(eval $(call PyBasePackage,python-setuptools, \
- , \
- DO_NOT_ADD_TO_PACKAGE_DEPENDS \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python-sqlite3
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) sqlite3 module
- DEPENDS:=+python-light +libsqlite3
-endef
-
-$(eval $(call PyBasePackage,python-sqlite3, \
- /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_sqlite3.so \
- /usr/lib/python$(PYTHON_VERSION)/sqlite3 \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python-unittest
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) unittest module
- DEPENDS:=+python-light
-endef
-
-$(eval $(call PyBasePackage,python-unittest, \
- /usr/lib/python$(PYTHON_VERSION)/unittest \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python-xml
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) xml libs
- DEPENDS:=+python-light +libexpat
-endef
-
-$(eval $(call PyBasePackage,python-xml, \
- /usr/lib/python$(PYTHON_VERSION)/xml \
- /usr/lib/python$(PYTHON_VERSION)/xmllib.py \
- /usr/lib/python$(PYTHON_VERSION)/xmlrpclib.py \
- /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_elementtree.so \
- /usr/lib/python$(PYTHON_VERSION)/lib-dynload/pyexpat.so \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-$(call include_mk, python-version.mk)
-
-PYTHON_DIR:=$(STAGING_DIR)/usr
-PYTHON_BIN_DIR:=$(PYTHON_DIR)/bin
-PYTHON_INC_DIR:=$(PYTHON_DIR)/include/python$(PYTHON_VERSION)
-PYTHON_LIB_DIR:=$(PYTHON_DIR)/lib/python$(PYTHON_VERSION)
-
-PYTHON_PKG_DIR:=/usr/lib/python$(PYTHON_VERSION)/site-packages
-
-PYTHON:=python$(PYTHON_VERSION)
-
-PYTHONPATH:=$(PYTHON_LIB_DIR):$(STAGING_DIR)/$(PYTHON_PKG_DIR):$(PKG_INSTALL_DIR)/$(PYTHON_PKG_DIR)
-
-# These configure args are needed in detection of path to Python header files
-# using autotools.
-CONFIGURE_ARGS += \
- _python_sysroot="$(STAGING_DIR)" \
- _python_prefix="/usr" \
- _python_exec_prefix="/usr"
-
-PKG_USE_MIPS16:=0
-# This is required in addition to PKG_USE_MIPS16:=0 because otherwise MIPS16
-# flags are inherited from the Python base package (via sysconfig module)
-ifdef CONFIG_USE_MIPS16
- TARGET_CFLAGS += -mno-mips16 -mno-interlink-mips16
-endif
-
-define PyPackage
-
- define Package/$(1)-src
- $(call Package/$(1))
- TITLE+= (sources)
- DEPENDS:=$$$$(foreach dep,$$$$(filter +python-%,$$$$(DEPENDS)),$$$$(dep)-src)
- endef
-
- define Package/$(1)-src/description
- $(call Package/$(1)/description).
- (Contains the Python sources for this package).
- endef
-
- # Add default PyPackage filespec none defined
- ifndef PyPackage/$(1)/filespec
- define PyPackage/$(1)/filespec
- +|$(PYTHON_PKG_DIR)
- endef
- endif
-
- ifndef PyPackage/$(1)/install
- define PyPackage/$(1)/install
- if [ -d $(PKG_INSTALL_DIR)/usr/bin ]; then \
- $(INSTALL_DIR) $$(1)/usr/bin ; \
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $$(1)/usr/bin/ ; \
- fi
- endef
- endif
-
- $(call shexport,PyPackage/$(1)/filespec)
-
- define Package/$(1)/install
- $(call PyPackage/$(1)/install,$$(1))
- find $(PKG_INSTALL_DIR) -name "*\.exe" | xargs rm -f
- if [ -e files/python-package-install.sh ] ; then \
- $(SHELL) files/python-package-install.sh \
- "$(PKG_INSTALL_DIR)" "$$(1)" \
- "$(HOST_PYTHON_BIN)" "$$(2)" \
- "$$$$$$$$$$(call shvar,PyPackage/$(1)/filespec)" ; \
- elif [ -e $(STAGING_DIR)/mk/python-package-install.sh ] ; then \
- $(SHELL) $(STAGING_DIR)/mk/python-package-install.sh \
- "$(PKG_INSTALL_DIR)" "$$(1)" \
- "$(HOST_PYTHON_BIN)" "$$(2)" \
- "$$$$$$$$$$(call shvar,PyPackage/$(1)/filespec)" ; \
- else \
- echo "No 'python-package-install.sh' script found" ; \
- exit 1 ; \
- fi
- endef
-
- define Package/$(1)-src/install
- $$(call Package/$(1)/install,$$(1),sources)
- endef
-endef
-
-$(call include_mk, python-host.mk)
-
-# $(1) => commands to execute before running pythons script
-# $(2) => python script and its arguments
-# $(3) => additional variables
-define Build/Compile/HostPyRunTarget
- $(call HostPython, \
- $(if $(1),$(1);) \
- CC="$(TARGET_CC)" \
- CCSHARED="$(TARGET_CC) $(FPIC)" \
- CXX="$(TARGET_CXX)" \
- LD="$(TARGET_CC)" \
- LDSHARED="$(TARGET_CC) -shared" \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="$(TARGET_CPPFLAGS) -I$(PYTHON_INC_DIR)" \
- LDFLAGS="$(TARGET_LDFLAGS) -lpython$(PYTHON_VERSION)" \
- _PYTHON_HOST_PLATFORM=linux2 \
- __PYVENV_LAUNCHER__="/usr/bin/$(PYTHON)" \
- $(3) \
- , \
- $(2) \
- )
-endef
-
-# $(1) => build subdir
-# $(2) => additional arguments to setup.py
-# $(3) => additional variables
-define Build/Compile/PyMod
- $(INSTALL_DIR) $(PKG_INSTALL_DIR)/$(PYTHON_PKG_DIR)
- $(call Build/Compile/HostPyRunTarget, \
- cd $(PKG_BUILD_DIR)/$(strip $(1)), \
- ./setup.py $(2), \
- $(3))
- find $(PKG_INSTALL_DIR) -name "*\.exe" | xargs rm -f
-endef
-
-define PyBuild/Compile/Default
- $(call Build/Compile/PyMod,, \
- install --prefix="/usr" --root="$(PKG_INSTALL_DIR)" \
- --single-version-externally-managed \
- )
-endef
-
-ifeq ($(BUILD_VARIANT),python)
-define Build/Compile
- $(call PyBuild/Compile/Default)
-endef
-endif # python
+++ /dev/null
-#
-# Copyright (C) 2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-PYTHON_VERSION:=2.7
-PYTHON_VERSION_MICRO:=13
-
-PYTHON_SETUPTOOLS_VERSION:=28.8.0
-PYTHON_PIP_VERSION:=9.0.1
-
--- /dev/null
+#
+# Copyright (C) 2007-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=flup
+PKG_VERSION:=1.0.2
+PKG_RELEASE:=1
+PKG_LICENSE:=BSD-3-Clause
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://pypi.python.org/packages/source/f/flup/
+PKG_MD5SUM:=24dad7edc5ada31dddd49456ee8d5254
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/flup
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ TITLE:=Random assortment of WSGI servers
+ URL:=http://www.saddi.com/software/flup/
+ DEPENDS:=+python
+endef
+
+define Package/flup/description
+ Random assortment of WSGI servers
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Package/flup/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call BuildPackage,flup))
--- /dev/null
+#
+# Copyright (C) 2007-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=gunicorn
+PKG_VERSION:=19.6.0
+PKG_RELEASE=1
+PKG_LICENSE:=MIT
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/84/ce/7ea5396efad1cef682bbc4068e72a0276341d9d9d0f501da609fab9fcb80/
+PKG_MD5SUM:=338e5e8a83ea0f0625f768dba4597530
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/gunicorn
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=WSGI HTTP Server for UNIX
+ MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ URL:=http://gunicorn.org/
+ DEPENDS:=+python +python-setuptools
+endef
+
+define Package/gunicorn/description
+ WSGI HTTP Server for UNIX
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Package/gunicorn/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gunicorn* \
+ $(1)/usr/bin
+ # fix python exec path in scripts
+ $(SED) 's/#!.*/#!\/usr\/bin\/python/g' $(1)/usr/bin/gunicorn*
+endef
+
+$(eval $(call BuildPackage,gunicorn))
--- /dev/null
+#
+# Copyright (C) 2007-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=jdcal
+PKG_VERSION:=1.2
+PKG_RELEASE:=1
+PKG_LICENSE:=BSD-3-Clause
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://pypi.python.org/packages/source/j/jdcal/
+PKG_MD5SUM:=ab8d5ba300fd1eb01514f363d19b1eb9
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/jdcal
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ TITLE:=Julian dates from proleptic Gregorian and Julian calendars.
+ URL:=http://github.com/phn/jdcal
+ DEPENDS:=+python
+endef
+
+define Package/jdcal/description
+ Julian dates from proleptic Gregorian and Julian calendars.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Package/jdcal/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call BuildPackage,jdcal))
--- /dev/null
+#
+# Copyright (C) 2008-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=micropython-lib
+PKG_VERSION=1.8.6-$(PKG_SOURCE_VERSION)
+PKG_RELEASE:=1
+
+PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>
+PKG_LICENSE:=MIT, PSFL
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/micropython/micropython-lib.git
+PKG_SOURCE_VERSION:=f81e979c56dddb771ad36ec381b7f2c6cd12111f
+
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION)
+PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/micropython-lib
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=micropython-lib
+ URL:=https://github.com/micropython/micropython-lib
+ DEPENDS:=+micropython
+endef
+
+define Package/micropython-lib/description
+ This package contains micropython-lib, a project to develop a non-monolothic
+ standard library for Micro Python. Note that this is a work in progress and
+ several libraries may be missing, incomplete or buggy.
+endef
+
+MAKE_FLAGS:=\
+ PREFIX=$(PKG_BUILD_DIR)/_install_tmp/dist \
+ install
+
+define Package/micropython-lib/install
+ $(INSTALL_DIR) $(1)/usr/lib/micropython
+ $(CP) $(PKG_BUILD_DIR)/_install_tmp/dist/* $(1)/usr/lib/micropython
+endef
+
+$(eval $(call BuildPackage,micropython-lib))
+
--- /dev/null
+#
+# Copyright (C) 2008-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=micropython
+PKG_VERSION=1.8.6-$(PKG_SOURCE_VERSION)
+PKG_RELEASE:=1
+
+PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/micropython/micropython.git
+PKG_SOURCE_VERSION:=5a1d63fc14dae788f705403a43c2d8639b7dd9cd
+
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/micropython
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=Micro Python
+ URL:=http://micropython.org
+ DEPENDS:=+libffi
+endef
+
+define Package/micropython/description
+ This package contains Micro Python, a lean and fast implementation of the Python 3.4 programming language
+ that is optimised to run on a microcontroller (and low power computers).
+endef
+
+
+MAKE_FLAGS += -C $(PKG_BUILD_DIR)/unix
+
+define Build/Compile
+ $(call Build/Compile/Default,axtls)
+ $(call Build/Compile/Default)
+
+endef
+
+define Package/micropython/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/unix/micropython $(1)/usr/bin/micropython
+endef
+
+$(eval $(call BuildPackage,micropython))
--- /dev/null
+Index: micropython-1.5-20161117-e81a5353cb794b8d6c57317488e5db6a1c524755/unix/Makefile
+===================================================================
+--- micropython-1.5-20161117-e81a5353cb794b8d6c57317488e5db6a1c524755.orig/unix/Makefile 2016-11-17 02:43:13.000000000 +0100
++++ micropython-1.5-20161117-e81a5353cb794b8d6c57317488e5db6a1c524755/unix/Makefile 2016-11-17 16:49:02.937809018 +0100
+@@ -21,7 +21,7 @@
+ INC += -I$(BUILD)
+
+ # compiler settings
+-CWARN = -Wall -Werror
++CWARN = -Wall
+ CWARN += -Wpointer-arith -Wuninitialized
+ CFLAGS = $(INC) $(CWARN) -ansi -std=gnu99 -DUNIX $(CFLAGS_MOD) $(COPT) $(CFLAGS_EXTRA)
+
--- /dev/null
+#
+# Copyright (C) 2007-2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=openpyxl
+PKG_VERSION:=2.4.2
+PKG_RELEASE:=1
+PKG_LICENSE:=MIT
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/56/c6/a2a7c36196e4732acceca093ce5961db907f5a855b557d6a727a7f59b8b4/
+PKG_MD5SUM:=28b6b5f74f01e6249e8c7f526c57a2e7
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/openpyxl
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ TITLE:=A Python library to read/write Excel 2010 xlsx/xlsm files
+ URL:=https://openpyxl.readthedocs.org/
+ DEPENDS:=+python +django
+endef
+
+define Package/openpyxl/description
+ A Python library to read/write Excel 2010 xlsx/xlsm files
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Package/openpyxl/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call BuildPackage,openpyxl))
+++ /dev/null
-From 6eeab87bc852481e599325549c854b701bf2e39f Mon Sep 17 00:00:00 2001
-From: Alexandru Ardelean <aa@ocedo.com>
-Date: Thu, 25 Sep 2014 18:18:29 +0300
-Subject: [PATCH] enable zlib
-
----
- Modules/Setup.dist | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Modules/Setup.dist b/Modules/Setup.dist
-index 01fb85f..01ac492 100644
---- a/Modules/Setup.dist
-+++ b/Modules/Setup.dist
-@@ -358,7 +358,7 @@ _symtable symtablemodule.c
- # Andrew Kuchling's zlib module.
- # This require zlib 1.1.3 (or later).
- # See http://www.gzip.org/zlib/
--#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
-+zlib zlibmodule.c -lz
-
- # Interface to the Expat XML parser
- #
---
-1.8.4.5
-
+++ /dev/null
-diff --git a/setup.py b/setup.py
-index cbdeaf3..5154412 100644
---- a/setup.py
-+++ b/setup.py
-@@ -480,7 +480,8 @@ class PyBuildExt(build_ext):
- add_dir_to_list(dir_list, directory)
-
- if os.path.normpath(sys.prefix) != '/usr' \
-- and not sysconfig.get_config_var('PYTHONFRAMEWORK'):
-+ and not sysconfig.get_config_var('PYTHONFRAMEWORK') \
-+ and not cross_compiling:
- # OSX note: Don't add LIBDIR and INCLUDEDIR to building a framework
- # (PYTHONFRAMEWORK is set) to avoid # linking problems when
- # building a framework with different architectures than
+++ /dev/null
-diff --git a/Makefile.pre.in b/Makefile.pre.in
-index 7f4ec2f..e270bf2 100644
---- a/Makefile.pre.in
-+++ b/Makefile.pre.in
-@@ -1038,6 +1038,7 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
- done; \
- done
- $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
-+ifeq (@COMPILE_ALL_TESTS@,yes)
- if test -d $(DESTDIR)$(LIBDEST)/distutils/tests; then \
- $(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \
- $(DESTDIR)$(LIBDEST)/distutils/tests ; \
-@@ -1064,6 +1065,7 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
- $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
- $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt
-+endif
-
- # Create the PLATDIR source directory, if one wasn't distributed..
- $(srcdir)/Lib/$(PLATDIR):
+++ /dev/null
-diff --git a/Python/pythonrun.c b/Python/pythonrun.c
-index 748a63b..cb6e291 100644
---- a/Python/pythonrun.c
-+++ b/Python/pythonrun.c
-@@ -79,7 +79,7 @@ int Py_InteractiveFlag; /* Needed by Py_FdIsInteractive() below */
- int Py_InspectFlag; /* Needed to determine whether to exit at SystemExit */
- int Py_NoSiteFlag; /* Suppress 'import site' */
- int Py_BytesWarningFlag; /* Warn on str(bytes) and str(buffer) */
--int Py_DontWriteBytecodeFlag; /* Suppress writing bytecode files (*.py[co]) */
-+int Py_DontWriteBytecodeFlag = 1; /* Suppress writing bytecode files (*.py[co]) */
- int Py_UseClassExceptionsFlag = 1; /* Needed by bltinmodule.c: deprecated */
- int Py_FrozenFlag; /* Needed by getpath.c */
- int Py_UnicodeFlag = 0; /* Needed by compile.c */
-@@ -174,7 +174,7 @@ Py_InitializeEx(int install_sigs)
- if ((p = Py_GETENV("PYTHONOPTIMIZE")) && *p != '\0')
- Py_OptimizeFlag = add_flag(Py_OptimizeFlag, p);
- if ((p = Py_GETENV("PYTHONDONTWRITEBYTECODE")) && *p != '\0')
-- Py_DontWriteBytecodeFlag = add_flag(Py_DontWriteBytecodeFlag, p);
-+ Py_DontWriteBytecodeFlag = atoi(p);
- /* The variable is only tested for existence here; _PyRandom_Init will
- check its value further. */
- if ((p = Py_GETENV("PYTHONHASHSEED")) && *p != '\0')
+++ /dev/null
-diff --git a/setup.py b/setup.py
-index 1d1ae72..511aed5 100644
---- a/setup.py
-+++ b/setup.py
-@@ -444,7 +444,8 @@ class PyBuildExt(build_ext):
- add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
- if cross_compiling:
- self.add_gcc_paths()
-- self.add_multiarch_paths()
-+ else:
-+ self.add_multiarch_paths()
-
- # Add paths specified in the environment variables LDFLAGS and
- # CPPFLAGS for header and library files.
+++ /dev/null
---- a/Lib/distutils/command/build_scripts.py
-+++ b/Lib/distutils/command/build_scripts.py
-@@ -89,6 +89,7 @@ class build_scripts (Command):
- adjust = 1
- post_interp = match.group(1) or ''
-
-+ adjust = 0
- if adjust:
- log.info("copying and adjusting %s -> %s", script,
- self.build_dir)
+++ /dev/null
-Adjust library/header paths for cross-compilation
-
-When cross-compiling third-party extensions, the get_python_inc() or
-get_python_lib() can be called, to return the path to headers or
-libraries. However, they use the sys.prefix of the host Python, which
-returns incorrect paths when cross-compiling (paths pointing to host
-headers and libraries).
-
-In order to fix this, we introduce the _python_sysroot, _python_prefix
-and _python_exec_prefix variables, that allow to override these
-values, and get correct header/library paths when cross-compiling
-third-party Python modules.
-
-The _python_sysroot variable is also used to prefix the LIBDIR value
-taken from the sysconfigdata module.
-
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-
-Index: b/Lib/distutils/sysconfig.py
-===================================================================
---- a/Lib/distutils/sysconfig.py
-+++ b/Lib/distutils/sysconfig.py
-@@ -19,8 +19,13 @@
- from distutils.errors import DistutilsPlatformError
-
- # These are needed in a couple of spots, so just compute them once.
--PREFIX = os.path.normpath(sys.prefix)
--EXEC_PREFIX = os.path.normpath(sys.exec_prefix)
-+if "_python_sysroot" in os.environ:
-+ _sysroot=os.environ.get('_python_sysroot')
-+ PREFIX = os.path.normpath(_sysroot + os.environ.get('_python_prefix'))
-+ EXEC_PREFIX = os.path.normpath(_sysroot + os.environ.get('_python_exec_prefix'))
-+else:
-+ PREFIX = os.path.normpath(sys.prefix)
-+ EXEC_PREFIX = os.path.normpath(sys.exec_prefix)
-
- # Path to the base directory of the project. On Windows the binary may
- # live in project/PCBuild9. If we're dealing with an x64 Windows build,
-Index: b/Lib/distutils/command/build_ext.py
-===================================================================
---- a/Lib/distutils/command/build_ext.py
-+++ b/Lib/distutils/command/build_ext.py
-@@ -237,7 +237,10 @@
- if (sysconfig.get_config_var('Py_ENABLE_SHARED')):
- if not sysconfig.python_build:
- # building third party extensions
-- self.library_dirs.append(sysconfig.get_config_var('LIBDIR'))
-+ libdir = sysconfig.get_config_var('LIBDIR')
-+ if "_python_sysroot" in os.environ:
-+ libdir = os.environ.get("_python_sysroot") + libdir
-+ self.library_dirs.append(libdir)
- else:
- # building python standard extensions
- self.library_dirs.append('.')
+++ /dev/null
-diff --git a/setup.py b/setup.py
-index 7868b7b..10ec68f 100644
---- a/setup.py
-+++ b/setup.py
-@@ -1067,6 +1067,7 @@ class PyBuildExt(build_ext):
- if db_setup_debug: print "db lib: ", dblib, "not found"
-
- except db_found:
-+ rt_dblib_dir = None if cross_compiling else dblib_dir
- if db_setup_debug:
- print "bsddb using BerkeleyDB lib:", db_ver, dblib
- print "bsddb lib dir:", dblib_dir, " inc dir:", db_incdir
-@@ -1081,7 +1082,7 @@ class PyBuildExt(build_ext):
- exts.append(Extension('_bsddb', ['_bsddb.c'],
- depends = ['bsddb.h'],
- library_dirs=dblib_dir,
-- runtime_library_dirs=dblib_dir,
-+ runtime_library_dirs=rt_dblib_dir,
- include_dirs=db_incs,
- libraries=dblibs))
- else:
-@@ -1292,10 +1293,11 @@ class PyBuildExt(build_ext):
- break
- elif cand == "bdb":
- if db_incs is not None:
-+ rt_dblib_dir = None if cross_compiling else dblib_dir
- print "building dbm using bdb"
- dbmext = Extension('dbm', ['dbmmodule.c'],
- library_dirs=dblib_dir,
-- runtime_library_dirs=dblib_dir,
-+ runtime_library_dirs=rt_dblib_dir,
- include_dirs=db_incs,
- define_macros=[
- ('HAVE_BERKDB_H', None),
+++ /dev/null
-diff --git a/setup.py b/setup.py
-index 7868b7b..544fa7e 100644
---- a/setup.py
-+++ b/setup.py
-@@ -452,8 +452,9 @@ class PyBuildExt(build_ext):
- # directly since an inconsistently reproducible issue comes up where
- # the environment variable is not set even though the value were passed
- # into configure and stored in the Makefile (issue found on OS X 10.3).
-+ rt_lib_dirs = [] if cross_compiling else self.compiler.runtime_library_dirs
- for env_var, arg_name, dir_list in (
-- ('LDFLAGS', '-R', self.compiler.runtime_library_dirs),
-+ ('LDFLAGS', '-R', rt_lib_dirs),
- ('LDFLAGS', '-L', self.compiler.library_dirs),
- ('CPPFLAGS', '-I', self.compiler.include_dirs)):
- env_val = sysconfig.get_config_var(env_var)
+++ /dev/null
-diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c
-index e478a57..eb297b4 100644
---- a/Modules/_cursesmodule.c
-+++ b/Modules/_cursesmodule.c
-@@ -117,7 +117,6 @@ char *PyCursesVersion = "2.2";
- #defines many common symbols (such as "lines") which breaks the
- curses module in other ways. So the code will just specify
- explicit prototypes here. */
--extern int setupterm(char *,int,int *);
- #ifdef __sgi
- #include <term.h>
- #endif
--- /dev/null
+#
+# Copyright © 1997-2011 by Secret Labs AB
+# Copyright © 1995-2011 by Fredrik Lundh
+# Copyright © 2016 by Alex Clark and contributors
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=pillow
+PKG_VERSION:=3.3.1
+PKG_RELEASE=1
+PKG_LICENSE:=CUSTOM
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/python-pillow/Pillow.git
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_VERSION:=aab33141f381d5577cdef9033b7fdff79122a10c
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/pillow
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=The friendly PIL fork
+ MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ URL:=https://python-pillow.org/
+ DEPENDS:=+python +libfreetype +libjpeg +zlib +libtiff
+endef
+
+define Package/pillow/description
+ The friendly PIL fork
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Package/pillow/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin
+ $(CP) $(PKG_BUILD_DIR)/LICENSE $(1)$(PYTHON_PKG_DIR)/PIL/
+endef
+
+$(eval $(call BuildPackage,pillow))
--- /dev/null
+diff -rupN pillow-3.3.1.orig/setup.py pillow-3.3.1/setup.py
+--- pillow-3.3.1.orig/setup.py 2016-08-22 17:45:05.000000000 +0200
++++ pillow-3.3.1/setup.py 2016-08-22 18:09:51.947745155 +0200
+@@ -111,12 +111,12 @@ except (ImportError, OSError):
+
+ NAME = 'Pillow'
+ PILLOW_VERSION = '3.3.1'
+-JPEG_ROOT = None
++JPEG_ROOT = _lib_include(os.environ['STAGING_DIR'] + "/usr")
+ JPEG2K_ROOT = None
+-ZLIB_ROOT = None
++ZLIB_ROOT = _lib_include(os.environ['STAGING_DIR'] + "/usr")
+ IMAGEQUANT_ROOT = None
+-TIFF_ROOT = None
+-FREETYPE_ROOT = None
++TIFF_ROOT = _lib_include(os.environ['STAGING_DIR'] + "/usr")
++FREETYPE_ROOT = _lib_include(os.environ['STAGING_DIR'] + "/usr")
+ LCMS_ROOT = None
+
+
+@@ -221,161 +221,6 @@ class pil_build_ext(build_ext):
+ _add_directory(include_dirs, os.path.join(prefix, "include"))
+
+ #
+- # add platform directories
+-
+- if self.disable_platform_guessing:
+- pass
+-
+- elif sys.platform == "cygwin":
+- # pythonX.Y.dll.a is in the /usr/lib/pythonX.Y/config directory
+- _add_directory(library_dirs,
+- os.path.join("/usr/lib", "python%s" %
+- sys.version[:3], "config"))
+-
+- elif sys.platform == "darwin":
+- # attempt to make sure we pick freetype2 over other versions
+- _add_directory(include_dirs, "/sw/include/freetype2")
+- _add_directory(include_dirs, "/sw/lib/freetype2/include")
+- # fink installation directories
+- _add_directory(library_dirs, "/sw/lib")
+- _add_directory(include_dirs, "/sw/include")
+- # darwin ports installation directories
+- _add_directory(library_dirs, "/opt/local/lib")
+- _add_directory(include_dirs, "/opt/local/include")
+-
+- # if Homebrew is installed, use its lib and include directories
+- try:
+- prefix = subprocess.check_output(['brew', '--prefix']).strip(
+- ).decode('latin1')
+- except:
+- # Homebrew not installed
+- prefix = None
+-
+- ft_prefix = None
+-
+- if prefix:
+- # add Homebrew's include and lib directories
+- _add_directory(library_dirs, os.path.join(prefix, 'lib'))
+- _add_directory(include_dirs, os.path.join(prefix, 'include'))
+- ft_prefix = os.path.join(prefix, 'opt', 'freetype')
+-
+- if ft_prefix and os.path.isdir(ft_prefix):
+- # freetype might not be linked into Homebrew's prefix
+- _add_directory(library_dirs, os.path.join(ft_prefix, 'lib'))
+- _add_directory(include_dirs,
+- os.path.join(ft_prefix, 'include'))
+- else:
+- # fall back to freetype from XQuartz if
+- # Homebrew's freetype is missing
+- _add_directory(library_dirs, "/usr/X11/lib")
+- _add_directory(include_dirs, "/usr/X11/include")
+-
+- elif sys.platform.startswith("linux"):
+- arch_tp = (plat.processor(), plat.architecture()[0])
+- if arch_tp == ("x86_64", "32bit"):
+- # 32-bit build on 64-bit machine.
+- _add_directory(library_dirs, "/usr/lib/i386-linux-gnu")
+- else:
+- for platform_ in arch_tp:
+-
+- if not platform_:
+- continue
+-
+- if platform_ in ["x86_64", "64bit"]:
+- _add_directory(library_dirs, "/lib64")
+- _add_directory(library_dirs, "/usr/lib64")
+- _add_directory(library_dirs,
+- "/usr/lib/x86_64-linux-gnu")
+- break
+- elif platform_ in ["i386", "i686", "32bit"]:
+- _add_directory(library_dirs, "/usr/lib/i386-linux-gnu")
+- break
+- elif platform_ in ["aarch64"]:
+- _add_directory(library_dirs, "/usr/lib64")
+- _add_directory(library_dirs,
+- "/usr/lib/aarch64-linux-gnu")
+- break
+- elif platform_ in ["arm", "armv7l"]:
+- _add_directory(library_dirs,
+- "/usr/lib/arm-linux-gnueabi")
+- break
+- elif platform_ in ["ppc64"]:
+- _add_directory(library_dirs, "/usr/lib64")
+- _add_directory(library_dirs,
+- "/usr/lib/ppc64-linux-gnu")
+- _add_directory(library_dirs,
+- "/usr/lib/powerpc64-linux-gnu")
+- break
+- elif platform_ in ["ppc"]:
+- _add_directory(library_dirs, "/usr/lib/ppc-linux-gnu")
+- _add_directory(library_dirs,
+- "/usr/lib/powerpc-linux-gnu")
+- break
+- elif platform_ in ["s390x"]:
+- _add_directory(library_dirs, "/usr/lib64")
+- _add_directory(library_dirs,
+- "/usr/lib/s390x-linux-gnu")
+- break
+- elif platform_ in ["s390"]:
+- _add_directory(library_dirs, "/usr/lib/s390-linux-gnu")
+- break
+- else:
+- raise ValueError(
+- "Unable to identify Linux platform: `%s`" % platform_)
+-
+- # XXX Kludge. Above /\ we brute force support multiarch. Here we
+- # try Barry's more general approach. Afterward, something should
+- # work ;-)
+- self.add_multiarch_paths()
+-
+- elif sys.platform.startswith("gnu"):
+- self.add_multiarch_paths()
+-
+- elif sys.platform.startswith("freebsd"):
+- _add_directory(library_dirs, "/usr/local/lib")
+- _add_directory(include_dirs, "/usr/local/include")
+-
+- elif sys.platform.startswith("netbsd"):
+- _add_directory(library_dirs, "/usr/pkg/lib")
+- _add_directory(include_dirs, "/usr/pkg/include")
+-
+- elif sys.platform.startswith("sunos5"):
+- _add_directory(library_dirs, "/opt/local/lib")
+- _add_directory(include_dirs, "/opt/local/include")
+-
+- # FIXME: check /opt/stuff directories here?
+-
+- # standard locations
+- if not self.disable_platform_guessing:
+- _add_directory(library_dirs, "/usr/local/lib")
+- _add_directory(include_dirs, "/usr/local/include")
+-
+- _add_directory(library_dirs, "/usr/lib")
+- _add_directory(include_dirs, "/usr/include")
+- # alpine, at least
+- _add_directory(library_dirs, "/lib")
+-
+- # on Windows, look for the OpenJPEG libraries in the location that
+- # the official installer puts them
+- if sys.platform == "win32":
+- program_files = os.environ.get('ProgramFiles', '')
+- best_version = (0, 0)
+- best_path = None
+- for name in os.listdir(program_files):
+- if name.startswith('OpenJPEG '):
+- version = tuple([int(x) for x in name[9:].strip().split(
+- '.')])
+- if version > best_version:
+- best_version = version
+- best_path = os.path.join(program_files, name)
+-
+- if best_path:
+- _dbg('Adding %s to search list', best_path)
+- _add_directory(library_dirs, os.path.join(best_path, 'lib'))
+- _add_directory(include_dirs,
+- os.path.join(best_path, 'include'))
+-
+- #
+ # insert new dirs *before* default libs, to avoid conflicts
+ # between Python PYD stub libs and real libraries
+
--- /dev/null
+#
+# Copyright (C) 2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=attrs
+PKG_VERSION:=16.2.0
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/6b/71/1682316894ed80b362b9102e7a10997136d8dc1213c36a9f0515c451373a
+PKG_MD5SUM:=442b73d049af046ced010671b7bfd0e9
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-attrs
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-attrs
+ URL:=https://attrs.readthedocs.org/
+ DEPENDS:=+python-light
+endef
+
+define Package/python-attrs/description
+attrs is an MIT-licensed Python package with class decorators that ease
+the chores of implementing the most common attribute-related object
+protocols.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
+endef
+
+$(eval $(call PyPackage,python-attrs))
+$(eval $(call BuildPackage,python-attrs))
--- /dev/null
+#
+# Copyright (C) 2015-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=cffi
+PKG_VERSION:=1.8.3
+PKG_RELEASE:=2
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/0a/f3/686af8873b70028fccf67b15c78fd4e4667a3da995007afc71e786d61b0a
+PKG_HASH:=c321bd46faa7847261b89c0469569530cad5a41976bb6dba8202c0159f476568
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-$(PKG_NAME)-$(PKG_VERSION)
+PKG_UNPACK=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
+
+HOST_BUILD_DEPENDS:=libffi/host python-pycparser/host
+ifdef CONFIG_PACKAGE_python-cffi
+HOST_BUILD_DEPENDS+=python/host
+endif
+ifdef CONFIG_PACKAGE_python3-cffi
+HOST_BUILD_DEPENDS+=python3/host
+endif
+
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/host-build.mk
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+$(call include_mk, python3-package.mk)
+
+define Package/python-cffi/Default
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ URL:=http://cffi.readthedocs.org/
+ DEPENDS:=+libffi
+endef
+
+define Package/python-cffi
+$(call Package/python-cffi/Default)
+ TITLE:=python-cffi
+ DEPENDS+=+python-light +python-pycparser
+ VARIANT:=python
+endef
+
+define Package/python3-cffi
+$(call Package/python-cffi/Default)
+ TITLE:=python3-cffi
+ DEPENDS+=+python3-light +python3-pycparser
+ VARIANT:=python3
+endef
+
+define Package/python-cffi/description
+Foreign Function Interface for Python calling C code.
+endef
+
+define Package/python3-cffi/description
+$(call Package/python-cffi/description)
+.
+(Variant for Python3)
+endef
+
+ifdef CONFIG_PACKAGE_python-cffi
+define Host/Compile/python-cffi
+ $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR_HOSTPKG)")
+endef
+endif
+
+ifdef CONFIG_PACKAGE_python3-cffi
+define Host/Compile/python3-cffi
+ $(call Build/Compile/HostPy3Mod,,install --prefix="" --root="$(STAGING_DIR_HOSTPKG)")
+endef
+endif
+
+define Host/Compile
+$(call Host/Compile/python-cffi)
+$(call Host/Compile/python3-cffi)
+endef
+
+define Host/Install
+endef
+
+$(eval $(call HostBuild))
+
+$(eval $(call PyPackage,python-cffi))
+$(eval $(call BuildPackage,python-cffi))
+
+$(eval $(call Py3Package,python3-cffi))
+$(eval $(call BuildPackage,python3-cffi))
--- /dev/null
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-crcmod
+PKG_VERSION:=1.7
+PKG_RELEASE:=1
+PKG_MAINTAINER:=Micke Prag <micke.prag@telldus.se>
+PKG_LICENSE:=MIT
+
+PKG_SOURCE:=crcmod-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://pypi.python.org/packages/source/c/crcmod/
+PKG_MD5SUM:=2d5b92117d958dcead94f9e17f54cd32
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/crcmod-$(PKG_VERSION)
+PKG_BUILD_DEPENDS:=python
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-crcmod
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=python-crcmod
+ URL:=http://crcmod.sourceforge.net/
+ DEPENDS:=+python-light
+endef
+
+define Package/python-crcmod/description
+ The software in this package is a Python module for generating objects that compute the Cyclic Redundancy Check (CRC). There is no attempt in this package to explain how the CRC works. There are a number of resources on the web that give a good explanation of the algorithms. Just do a Google search for "crc calculation" and browse till you find what you need. Another resource can be found in chapter 20 of the book "Numerical Recipes in C" by Press et. al.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix="$(PKG_INSTALL_DIR)/usr")
+endef
+
+define Package/python-crcmod/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call BuildPackage,python-crcmod))
--- /dev/null
+#
+# Copyright (C) 2009-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=pycrypto
+PKG_VERSION:=2.6.1
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/
+PKG_MD5SUM:=55a61a054aa66812daf5161a0d5d7eda
+
+PKG_LICENSE:=Public Domain
+PKG_LICENSE_FILES:=COPYRIGHT
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-crypto
+ SECTION:=lang-python
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-crypto
+ URL:=http://www.pycrypto.org/
+ DEPENDS:=+python +libgmp
+endef
+
+define Package/python-crypto/description
+A collection of both secure hash functions (such as MD5 and SHA),
+and various encryption algorithms (AES, DES, IDEA, RSA, ElGamal, etc.).
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,\
+ install --prefix=/usr --root=$(PKG_INSTALL_DIR),\
+ CONFIG_BIG_ENDIAN="$(CONFIG_BIG_ENDIAN)" \
+ )
+endef
+
+define Package/python-crypto/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)/
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)/
+endef
+
+$(eval $(call PyPackage,python-crypto))
+$(eval $(call BuildPackage,python-crypto))
--- /dev/null
+--- a/setup.py
++++ b/setup.py
+@@ -370,7 +370,7 @@ kw = {'name':"pycrypto",
+ 'ext_modules': plat_ext + [
+ # _fastmath (uses GNU mp library)
+ Extension("Crypto.PublicKey._fastmath",
+- include_dirs=['src/','/usr/include/'],
++ include_dirs=['src/'],
+ libraries=['gmp'],
+ sources=["src/_fastmath.c"]),
+
--- /dev/null
+--- a/setup.py
++++ b/setup.py
+@@ -100,6 +100,10 @@
+ w(kwd.get("end", "\n"))
+
+ def endianness_macro():
++ if os.environ["CONFIG_BIG_ENDIAN"] == "y":
++ return ('PCT_BIG_ENDIAN', 1)
++ else:
++ return ('PCT_LITTLE_ENDIAN', 1)
+ s = struct.pack("@I", 0x33221100)
+ if s == "\x00\x11\x22\x33".encode(): # little endian
+ return ('PCT_LITTLE_ENDIAN', 1)
--- /dev/null
+#
+# Copyright (C) 2015-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=cryptography
+PKG_VERSION:=1.5.1
+PKG_RELEASE:=2
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/21/e1/37fc14f9d77924e84ba0dcb88eb8352db914583af229287c6c965d66ba0d
+PKG_MD5SUM:=66a3e01f5f436d2413ef47b7e6bb7729
+
+PKG_BUILD_DEPENDS:=python-cffi/host
+
+PKG_LICENSE:=Apache-2.0 BSD-3-Clause
+PKG_LICENSE_FILES:=LICENSE.APACHE LICENSE.BSD
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-cryptography
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-cryptography
+ URL:=https://github.com/pyca/cryptography
+ DEPENDS:=+libopenssl +python +python-cffi +python-enum34 +python-idna +python-ipaddress +python-pyasn1 +python-six +python-setuptools
+endef
+
+define Package/python-cryptography/description
+cryptography is a package which provides cryptographic recipes and
+primitives to Python developers. Our goal is for it to be your "cryptographic
+standard library". It supports Python 2.6-2.7, Python 3.3+, and PyPy 2.6+.
+endef
+
+define PyPackage/python-cryptography/filespec
++|$(PYTHON_PKG_DIR)
+-|$(PYTHON_PKG_DIR)/cryptography/hazmat/backends/commoncrypto
+-|$(PYTHON_PKG_DIR)/cryptography/hazmat/bindings/commoncrypto
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
+endef
+
+$(eval $(call PyPackage,python-cryptography))
+$(eval $(call BuildPackage,python-cryptography))
--- /dev/null
+diff --git a/setup.py b/setup.py
+index b5c05df..a777dd7 100644
+--- a/setup.py
++++ b/setup.py
+@@ -266,6 +266,7 @@ class DummyPyTest(test):
+ with open(os.path.join(base_dir, "README.rst")) as f:
+ long_description = f.read()
+
++setup_requirements=[]
+
+ setup(
+ name=about["__title__"],
--- /dev/null
+#
+# Copyright (C) 2007-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-dateutil
+PKG_VERSION:=2.6.0
+PKG_RELEASE:=1
+PKG_LICENSE:=BSD-2-Clause
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/51/fc/39a3fbde6864942e8bb24c93663734b74e281b984d1b8c4f95d64b0c21f6/
+PKG_MD5SUM:=6e38f91e8c94c15a79ce22768dfeca87
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-dateutil
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ TITLE:=Extensions to the standard Python datetime module
+ URL:=https://dateutil.readthedocs.org/
+ DEPENDS:=+python +python-six
+endef
+
+define Package/python-dateutil/description
+ Extensions to the standard Python datetime module
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Package/python-dateutil/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call BuildPackage,python-dateutil))
--- /dev/null
+#
+# Copyright (C) 2014 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-dns
+PKG_RELEASE:=2
+PKG_VERSION:=1.15.0
+PKG_SOURCE_URL:=http://www.dnspython.org/kits/$(PKG_VERSION)
+PKG_MD5SUM:=63a679089822fb86127867c315286dc5
+PKG_SOURCE:=dnspython-$(PKG_VERSION).tar.gz
+PKG_MAINTAINER:=Denis Shulyaka <Shulyaka@gmail.com>
+PKG_LICENSE:=ISC
+PKG_LICENSE_FILES:=LICENSE
+PKG_BUILD_DIR:=$(BUILD_DIR)/dnspython-$(PKG_VERSION)
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-dns
+ SECTION:=language-python
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=dnspython
+ URL:=http://www.dnspython.org/
+ DEPENDS:=+python
+endef
+
+define Package/python-dns/description
+ dnspython is a DNS toolkit for Python. It supports almost all record types. It can be used for queries, zone transfers, and dynamic updates. It supports TSIG authenticated messages and EDNS0.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,\
+ install --prefix=/usr --root="$(PKG_INSTALL_DIR)" \
+ )
+endef
+
+$(eval $(call PyPackage,python-dns))
+$(eval $(call BuildPackage,python-dns))
--- /dev/null
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-egenix-mx-base
+PKG_VERSION:=3.2.8
+PKG_RELEASE:=1
+PKG_MAINTAINER:=Dmitry Trefilov <the-alien@live.ru>
+PKG_LICENSE:=eGenix.com Public License 1.1.0
+PKG_LICENSE_FILES:=LICENSE COPYRIGHT
+
+PKG_SOURCE:=egenix-mx-base-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://downloads.egenix.com/python/
+PKG_MD5SUM:=9d9d3a25f9dc051a15e97f452413423b
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/egenix-mx-base-$(PKG_VERSION)
+PKG_BUILD_DEPENDS:=python
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-egenix-mx-base
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ DEPENDS:=+USE_EGLIBC:librt +USE_UCLIBC:librt +python
+ TITLE:=Egenix mxBase
+ URL:=http://www.egenix.com/products/python/mxBase/
+endef
+
+define Package/python-egenix-mx-base/description
+ The eGenix.com mx Base Distribution for Python is a collection
+ of professional quality software tools which enhance Python's
+ usability in many important areas such as fast text searching,
+ date/time processing and high speed data types.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix="$(PKG_INSTALL_DIR)/usr")
+endef
+
+define PyPackage/python-egenix-mx-base/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call PyPackage,python-egenix-mx-base))
+$(eval $(call BuildPackage,python-egenix-mx-base))
--- /dev/null
+#
+# Copyright (C) 2015-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=enum34
+PKG_VERSION:=1.1.6
+PKG_RELEASE:=2
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/bf/3e/31d502c25302814a7c2f1d3959d2a3b3f78e509002ba91aea64993936876
+PKG_MD5SUM:=5f13a0841a61f7fc295c514490d120d0
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=enum/LICENSE
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-enum34
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-enum34
+ URL:=https://pypi.python.org/pypi/enum34/
+ DEPENDS:=+python-light
+endef
+
+define Package/python-enum34/description
+enum34 is the new Python stdlib enum module available in Python 3.4
+backported for previous versions of Python from 2.4 to 3.3.
+endef
+
+define PyPackage/python-enum34/filespec
++|$(PYTHON_PKG_DIR)
+-|$(PYTHON_PKG_DIR)/enum/test.py
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+$(eval $(call PyPackage,python-enum34))
+$(eval $(call BuildPackage,python-enum34))
--- /dev/null
+diff -r f24487b45cd0 setup.py
+--- a/setup.py Sun May 15 20:28:23 2016 -0700
++++ b/setup.py Wed Jul 27 22:49:13 2016 +0800
+@@ -63,15 +63,6 @@
+ version='1.1.6',\r
+ url='https://bitbucket.org/stoneleaf/enum34',\r
+ packages=['enum'],\r
+- package_data={\r
+- 'enum' : [\r
+- 'LICENSE',\r
+- 'README',\r
+- 'doc/enum.rst',\r
+- 'doc/enum.pdf',\r
+- 'test.py',\r
+- ]\r
+- },\r
+ license='BSD License',\r
+ description='Python 3.4 Enum backported to 3.3, 3.2, 3.1, 2.7, 2.6, 2.5, and 2.4',\r
+ long_description=long_desc,\r
--- /dev/null
+#
+# Copyright (C) 2015-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=gmpy2
+PKG_VERSION:=2.0.8
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).zip
+PKG_SOURCE_URL:=https://pypi.python.org/packages/90/f4/9a2e384b325b69bc5827b9a6510a8fb4a51698c915c06a3f25a86458892a
+PKG_MD5SUM:=56d40bddcf8f22be0a36d60f764f3241
+
+PKG_LICENSE:=LGPL-3.0+
+PKG_LICENSE_FILES:=COPYING.LESSER
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-gmpy2
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-gmpy2
+ URL:=http://code.google.com/p/gmpy/
+ DEPENDS:=+libgmp +python-light
+endef
+
+define Package/python-gmpy2/description
+gmpy2 is a C-coded Python extension module that supports multiple-precision
+arithmetic. gmpy2 is the successor to the original gmpy module. The gmpy module
+only supported the GMP multiple-precision library. gmpy2 adds support for the
+MPFR (correctly rounded real floating-point arithmetic) and MPC (correctly
+rounded complex floating-point arithmetic) libraries. gmpy2 also updates the
+API and naming conventions to be more consistent and support the additional
+functionality.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)" --nompfr)
+endef
+
+$(eval $(call PyPackage,python-gmpy2))
+$(eval $(call BuildPackage,python-gmpy2))
--- /dev/null
+#
+# Copyright (C) 2015-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=idna
+PKG_VERSION:=2.1
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/i/idna
+PKG_MD5SUM:=f6473caa9c5e0cc1ad3fd5d04c3c114b
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=LICENSE.rst
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-idna
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-idna
+ URL:=https://github.com/kjd/idna
+ DEPENDS:=+python-light
+endef
+
+define Package/python-idna/description
+A library to support the Internationalised Domain Names in Applications
+(IDNA) protocol as specified in RFC 5891. This version of the protocol
+is often referred to as "IDNA2008" and can produce different results
+from the earlier standard from 2003.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+$(eval $(call PyPackage,python-idna))
+$(eval $(call BuildPackage,python-idna))
--- /dev/null
+#
+# Copyright (C) 2015-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=ipaddress
+PKG_VERSION:=1.0.17
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/bb/26/3b64955ff73f9e3155079b9ed31812afdfa5333b5c76387454d651ef593a
+PKG_MD5SUM:=8bbf0326719fafb1f453921ef96729fe
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+PKG_LICENSE:=Python-2.0
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-ipaddress
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-ipaddress
+ URL:=https://github.com/phihag/ipaddress
+ DEPENDS:=+python-light
+endef
+
+define Package/python-ipaddress/description
+Python 3.3+'s ipaddress for Python 2.6, 2.7, 3.2.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+$(eval $(call PyPackage,python-ipaddress))
+$(eval $(call BuildPackage,python-ipaddress))
--- /dev/null
+#
+# Copyright (C) 2016-2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-ldap
+PKG_VERSION:=2.4.32
+PKG_RELEASE:=1
+PKG_MAINTAINER:=Dmitry Trefilov <the-alien@live.ru>
+PKG_LICENSE:=Python-style
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/67/d9/fa0ea70d1792875745116ad62ac8d4bcb07550b15cded591bb57df6a6d9a
+PKG_MD5SUM:=7c46c8a04acc227a778c7900c87cdfc7
+
+PKG_BUILD_DEPENDS:=python libopenldap
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-ldap
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ DEPENDS:=+libopenldap +python
+ TITLE:=Python modules for implementing LDAP clients
+ URL:=http://python-ldap.org/
+endef
+
+define Package/python-ldap/description
+ python-ldap provides an object-oriented API to access LDAP directory
+ servers from Python programs. Mainly it wraps the OpenLDAP 2.x libs
+ for that purpose. Additionally the package contains modules for
+ other LDAP-related stuff (e.g. processing LDIF, LDAPURLs, LDAPv3
+ schema, LDAPv3 extended operations and controls, etc.).
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,build_ext \
+ --include-dirs="$(STAGING_DIR)/usr/include:$(STAGING_DIR)/usr/include/sasl" \
+ --library-dirs="$(STAGING_DIR)/usr/lib:$(STAGING_DIR)/usr/lib/sasl2" \
+ build_py \
+ install --prefix="$(PKG_INSTALL_DIR)/usr")
+endef
+
+define PyPackage/python-ldap/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call PyPackage,python-ldap))
+$(eval $(call BuildPackage,python-ldap))
--- /dev/null
+From: Dmitrij Trefilov <the-alien@live.ru>
+
+Subject: [PATCH] lang: removed hardcoded include and library directories from setup.cfg
+Signed-off-by: Dmitrij Trefilov <the-alien@live.ru>
+---
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -1,6 +1,6 @@
+ [_ldap]
+-library_dirs = /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64
+-include_dirs = /usr/include /usr/include/sasl /usr/local/include /usr/local/include/sasl
++library_dirs =
++include_dirs =
+ defines = HAVE_SASL HAVE_TLS HAVE_LIBLDAP_R
+ extra_compile_args =
+ extra_objects =
--- /dev/null
+#
+# Copyright (C) 2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-lxml
+PKG_VERSION:=3.7.2
+PKG_RELEASE:=1
+
+PKG_SOURCE:=lxml-$(PKG_VERSION).tgz
+PKG_SOURCE_URL:=http://lxml.de/files/
+PKG_HASH:=59d9176360dbc3919e9d4bfca85c1ca64ab4f4ee00e6f119d7150ba887e3410a
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-lxml-$(PKG_VERSION)
+PKG_UNPACK=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
+
+PKG_LICENSE:=BSD
+PKG_LICENSE_FILES:=LICENSES.txt
+PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+$(call include_mk, python3-package.mk)
+
+define Package/python-lxml/Default
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ URL:=http://lxml.de
+ DEPENDS:=+libxml2 +libxslt +libexslt
+endef
+
+define Package/python-lxml
+$(call Package/python-lxml/Default)
+ TITLE:=python-lxml
+ DEPENDS+=+python-light +python-codecs
+ VARIANT:=python
+endef
+
+define Package/python3-lxml
+$(call Package/python-lxml/Default)
+ TITLE:=python3-lxml
+ DEPENDS+=+python3-light
+ VARIANT:=python3
+endef
+
+define Package/python-lxml/description
+The lxml XML toolkit is a Pythonic binding
+for the C libraries libxml2 and libxslt.
+endef
+
+define Package/python3-lxml/description
+$(call Package/python-lxml/description)
+.
+(Variant for Python3)
+endef
+
+TARGET_LDFLAGS += -lxml2 -lxslt -lexslt
+
+define PyBuild/Compile/Default
+ $(call Build/Compile/PyMod,, \
+ install --prefix="/usr" --root="$(PKG_INSTALL_DIR)" \
+ --static \
+ --single-version-externally-managed \
+ , \
+ INCLUDE="$(STAGING_DIR)/usr/include/ $(STAGING_DIR)/usr/include/libxml2" \
+ LIBRARY="$(STAGING_DIR)/usr/lib $(STAGING_DIR)/lib" \
+ CFLAGS="$(TARGET_CFLAGS)" \
+ LDFLAGS="$(TARGET_LDFLAGS)" \
+ )
+endef
+
+define Py3Build/Compile/Default
+ $(call Build/Compile/Py3Mod,, \
+ install --prefix="/usr" --root="$(PKG_INSTALL_DIR)" \
+ --static \
+ --single-version-externally-managed \
+ , \
+ INCLUDE="$(STAGING_DIR)/usr/include/ $(STAGING_DIR)/usr/include/libxml2" \
+ LIBRARY="$(STAGING_DIR)/usr/lib $(STAGING_DIR)/lib" \
+ CFLAGS="$(TARGET_CFLAGS)" \
+ LDFLAGS="$(TARGET_LDFLAGS)" \
+ )
+endef
+
+$(eval $(call PyPackage,python-lxml))
+$(eval $(call BuildPackage,python-lxml))
+
+$(eval $(call Py3Package,python3-lxml))
+$(eval $(call BuildPackage,python3-lxml))
--- /dev/null
+#
+# Copyright (C) 2007-2014 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=MySQL-python
+PKG_VERSION:=1.2.5
+PKG_RELEASE:=1
+PKG_LICENSE:=GPL-2.0
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).zip
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/M/MySQL-python/
+PKG_MD5SUM:=654f75b302db6ed8dc5a898c625e030c
+
+PKG_BUILD_DEPENDS:=python python-setuptools libmysqlclient
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-mysql
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=MySQL database adapter for Python
+ URL:=https://pypi.python.org/pypi/MySQL-python
+ MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ DEPENDS:=+python +libmysqlclient
+endef
+
+define Package/python-mysql/description
+ MySQLdb is an thread-compatible interface to the popular MySQL database
+ server that provides the Python database API.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Package/python-mysql/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call BuildPackage,python-mysql))
--- /dev/null
+--- MySQL-python-1.2.2/site_orig.cfg 2007-08-15 12:58:40.000000000 +0200
++++ MySQL-python-1.2.2/site.cfg 2007-08-15 12:58:49.000000000 +0200
+@@ -4,7 +4,7 @@
+ # static: link against a static library (probably required for embedded)
+
+ embedded = False
+-threadsafe = True
++threadsafe = False
+ static = False
+
+ # The path to mysql_config.
--- /dev/null
+#
+# Copyright (C) 2016 Yousong Zhou <yszhou4tech@gmail.com>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-packages
+PKG_VERSION:=1.0
+PKG_RELEASE:=1
+
+PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
+
+#
+# NOTE: move the host module installation to Host/Compile when
+# HOST_CONFIG_DEPENDS is supported
+#
+# NOTE: PKG_CONFIG_DEPENDS cannot correctly track changes of string type config
+# options, so you may want to do manual cleanup on config change.
+#
+PKG_CONFIG_DEPENDS:= \
+ CONFIG_PACKAGE_python-packages-list-host \
+ CONFIG_PACKAGE_python-packages-list \
+ CONFIG_PACKAGE_python-packages-list-cleanup \
+ CONFIG_PACKAGE_python-packages-envs \
+ CONFIG_PACKAGE_python-packages-extra-deps \
+ CONFIG_PACKAGE_python-packages-index-url \
+ CONFIG_PACKAGE_python-packages-pip-opts \
+
+PKG_BUILD_DEPENDS:=python python/host
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-packages
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=A dummy package for packaging python modules with pip
+ DEPENDS:=@DEVEL +python
+endef
+
+define Package/python-packages/config
+if PACKAGE_python-packages
+config PACKAGE_python-packages-list-host
+ string "List of python packages to install on host"
+config PACKAGE_python-packages-list
+ string "List of python packages to install on target"
+config PACKAGE_python-packages-list-cleanup
+ string "List of python packages to cleanup to avoid clash with existing packages"
+config PACKAGE_python-packages-envs
+ string "Extra environment variables to pass on to pip and its children on target build"
+config PACKAGE_python-packages-extra-deps
+ string "List of deps fulfilled but not tracked by the build system"
+config PACKAGE_python-packages-index-url
+ string "Index URL passed to pip with --index-url"
+config PACKAGE_python-packages-pip-opts
+ string "Additional arguments to pip command line"
+endif
+endef
+
+CONFIG_PACKAGE_python-packages-list-host:=$(call qstrip,$(CONFIG_PACKAGE_python-packages-list-host))
+CONFIG_PACKAGE_python-packages-list:=$(call qstrip,$(CONFIG_PACKAGE_python-packages-list))
+CONFIG_PACKAGE_python-packages-list-cleanup:=$(call qstrip,$(CONFIG_PACKAGE_python-packages-list-cleanup))
+CONFIG_PACKAGE_python-packages-envs:=$(call qstrip,$(CONFIG_PACKAGE_python-packages-envs))
+CONFIG_PACKAGE_python-packages-extra-deps:=$(call qstrip,$(CONFIG_PACKAGE_python-packages-extra-deps))
+CONFIG_PACKAGE_python-packages-pip-opts:=$(call qstrip,$(CONFIG_PACKAGE_python-packages-pip-opts))
+
+HOST_PYTHON_PIP:=$(STAGING_DIR_HOSTPKG)/bin/pip$(PYTHON_VERSION)
+
+decr=$(word $(1),0 1 2 3 4 5 6 7 8 9 10)
+recur=$(if $(subst 0,,$(2)),$(call recur,$(1),$(call decr,$(2)),$(call $(1)$(2),$(3))),$(3))
+_req2dir1=$(subst >,gt,$(1))
+_req2dir2=$(subst <,lt,$(1))
+_req2dir3=$(subst >=,geq,$(1))
+_req2dir4=$(subst <=,leq,$(1))
+_req2dir5=$(subst ://,:::,$(1))
+_req2dir6=$(subst *,_,$(1))
+_req2dir7=$(subst ?,_,$(1))
+req2dir=$(call recur,_req2dir,7,$(1))
+
+# --ignore-installed, it may happen that host pip will ignore target install if
+# it was already installed as host module, e.g. cffi deps of cryptograph
+HOST_PYTHON_PIP_INSTALL=$(HOST_PYTHON_PIP) install \
+ --root=$(1) \
+ --prefix=$(2) \
+ --ignore-installed \
+ --no-compile \
+ $(if $(CONFIG_PACKAGE_python-packages-index-url), --index-url $(CONFIG_PACKAGE_python-packages-index-url)) \
+ $(if $(CONFIG_PACKAGE_python-packages-pip-opts), $(CONFIG_PACKAGE_python-packages-pip-opts)) \
+
+HOST_PYTHON_PIP_INSTALL_HOST:=$(call HOST_PYTHON_PIP_INSTALL,$(STAGING_DIR_HOSTPKG),"")
+HOST_PYTHON_PIP_INSTALL_TARGET=$(call HOST_PYTHON_PIP_INSTALL,$(PKG_INSTALL_DIR)/$(call req2dir,$(pkg)),/usr)
+HOST_PYTHON_PIP_INSTALL_CLEANUP:=$(call HOST_PYTHON_PIP_INSTALL,$(PKG_INSTALL_DIR)/_cleanup,/usr)
+
+define Build/Compile
+ $(foreach pkg,$(CONFIG_PACKAGE_python-packages-list-host),
+ $(call Build/Compile/HostPyRunHost,,$(HOST_PYTHON_PIP_INSTALL_HOST) $(pkg))
+ )
+ $(foreach pkg,$(CONFIG_PACKAGE_python-packages-list),
+ $(call Build/Compile/HostPyRunTarget,,$(call HOST_PYTHON_PIP_INSTALL_TARGET,$(pkg)) $(pkg),$(CONFIG_PACKAGE_python-packages-envs))
+ )
+ $(foreach pkg,$(CONFIG_PACKAGE_python-packages-list-cleanup),
+ $(call Build/Compile/HostPyRunTarget,,$(HOST_PYTHON_PIP_INSTALL_CLEANUP) $(pkg),$(CONFIG_PACKAGE_python-packages-envs))
+ )
+endef
+
+define Package/python-packages/install
+ $(foreach pkg,$(CONFIG_PACKAGE_python-packages-list),
+ $(CP) "$(PKG_INSTALL_DIR)/$(call req2dir,$(pkg))"/* $(1)
+ )
+
+ find "$(PKG_INSTALL_DIR)/_cleanup" -mindepth 1 -depth | while read sf; do \
+ tf="$$$${sf#$(PKG_INSTALL_DIR)/_cleanup/}"; \
+ tf="$(1)/$$$$tf"; \
+ if [ -f "$$$$tf" -o -L "$$$$tf" ]; then \
+ rm -vf "$$$$tf"; \
+ elif [ -d "$$$$tf" ]; then \
+ rmdir -v -p "$$$$tf" || true; \
+ fi \
+ done
+endef
+
+define Package/python-packages/extra_provides
+ echo $(CONFIG_PACKAGE_python-packages-extra-deps) | tr ' ' '\n'
+endef
+
+$(eval $(call BuildPackage,python-packages))
--- /dev/null
+This package allows users to package python modules without creating package
+Makefiles for each individual module and their dependencies. It provides a
+way making packaging python packages faster and may also facilitate the process
+of developing Makefiles for new python packages
+
+This is a raw DEVEL only package. Using it may entail a lot of implementation
+details and you may need to resolve target dependencies and package details on
+your own
+
+- Third party python packages may depend on features not included in e.g.
+ python-light
+- Some python modules may require host install of another module to progress,
+ e.g. target cryptography requires host cffi
+- Some python modules have external C library dependencies, e.g. pyOpenSSL
+ requires openssl libs
+- Some packages may have an autoconf configure script whose arguments we
+ cannot control with pip and has to be passed on (hacked) by overriding some
+ environment variables
+
+## How it works
+
+1. Install host modules required for building target modules
+2. Install each target module to separate directories
+3. Install another copy of modules for cleanup purposes to make list of
+ installed files to be removed from target modules installed in step 2
+
+Why should it be so
+
+1. Installing target cryptography requires host installation of cffi module
+2. cryptography requires setuptools and pip will install its own copy with
+ --ignore-installed. When PACKAGE_python-setuptools is also selected, opkg
+ will complain of data file clashes if it was not removed here.
+
+Pip will handle dependency requirements of python modules, but external
+dependencies like c libraries has to be prepared by the build system. The
+issue is that there is currently no way to express such dependencies, thus may
+cause build failure, e.g. pycrypto requires the presence of libgmp to build
+successfully.
+
+## Tips
+
+If something goes wrong, we can add additional arguments to pip command
+line to check the detailed build process. Some useful arguments may be
+
+- -v, for verbose output. Repeat this option if the current level of
+ verbosity is not enough
+- --no-clean, for preserving pip build dir on build failure
+
+## Examples
+
+tornado (python-only module)
+
+ CONFIG_PACKAGE_python-packages=y
+ CONFIG_PACKAGE_python-packages-list="tornado==4.4.2"
+
+cryptography (requires installation of host modules and cleanup on target modules)
+
+ CONFIG_PACKAGE_python-packages=y
+ CONFIG_PACKAGE_python-packages-list-host="cffi"
+ CONFIG_PACKAGE_python-packages-list="cryptography"
+ CONFIG_PACKAGE_python-packages-list-cleanup="setuptools"
+
+pycrypto 2.7a1 (python module with autoconf configure script; depends on
+libgmp; broken wmmintrin.h). 2.6.1 does not work because of a flaw in
+the setup.py hardcoding host include directory
+
+ CONFIG_PACKAGE_libgmp=y
+ CONFIG_PACKAGE_python-packages=y
+ CONFIG_PACKAGE_python-packages-list="https://github.com/dlitz/pycrypto/archive/v2.7a1.tar.gz"
+ CONFIG_PACKAGE_python-packages-envs="ac_cv_header_wmmintrin_h=no build_alias=$(GNU_HOST_NAME) host_alias=$(GNU_TARGET_NAME) target_alias=$(GNU_TARGET_NAME)"
+ CONFIG_PACKAGE_python-packages-extra-deps="libgmp.so.10"
+
--- /dev/null
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=Parsley
+PKG_VERSION:=1.3
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/P/Parsley
+PKG_MD5SUM:=92bc256e5f73810a609dc7874637ad31
+
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-parsley
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-parsley
+ URL:=http://launchpad.net/parsley
+ DEPENDS:=+python-light
+endef
+
+define Package/python-parsley/description
+Parsing and pattern matching made easy.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
+endef
+
+$(eval $(call PyPackage,python-parsley))
+$(eval $(call BuildPackage,python-parsley))
--- /dev/null
+diff -Nur a/setup.py b/setup.py
+--- a/setup.py 2015-09-09 10:45:25.000000000 +0800
++++ b/setup.py 2015-12-01 17:31:03.143409843 +0800
+@@ -14,7 +14,6 @@
+ author_email="washort42@gmail.com",
+ license="MIT License",
+ long_description=open("README").read(),
+- packages=["ometa", "terml", "ometa._generated", "terml._generated",
+- "ometa.test", "terml.test"],
++ packages=["ometa", "terml", "ometa._generated", "terml._generated"],
+ py_modules=["parsley"]
+ )
--- /dev/null
+#
+# Copyright (C) 2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-pcapy
+PKG_VERSION:=0.11.1
+PKG_RELEASE:=1
+PKG_MAINTAINER:=Andrew McConachie <andrew@depht.com>
+PKG_LICENSE:=Apache-1.1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/CoreSecurity/pcapy.git
+PKG_SOURCE_VERSION:=b91a418374d1636408c435f11799ef725ef70097
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-pcapy
+ SECTION:=language-python
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-pcapy
+ URL:=https://www.coresecurity.com/corelabs-research/open-source-tools/pcapy
+ DEPENDS:=+python +libpcap +libstdcpp
+endef
+
+define Package/python-pcapy/description
+ Pcapy is a Python extension module that interfaces with the libpcap packet capture library. Pcapy enables python scripts to capture packets on the network. Pcapy is highly effective when used in conjunction with a packet-handling package such as Impacket, which is a collection of Python classes for constructing and dissecting network packets.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,\
+ install --prefix=/usr --root="$(PKG_INSTALL_DIR)" \
+ )
+endef
+
+$(eval $(call PyPackage,python-pcapy))
+$(eval $(call BuildPackage,python-pcapy))
--- /dev/null
+#
+# Copyright (C) 2015-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=ply
+PKG_VERSION:=3.9
+PKG_RELEASE:=2
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://www.dabeaz.com/ply
+PKG_HASH:=0d7e2940b9c57151392fceaa62b0865c45e06ce1e36687fd8d03f011a907f43e
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-$(PKG_NAME)-$(PKG_VERSION)
+PKG_UNPACK=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
+
+HOST_BUILD_DEPENDS:=
+ifdef CONFIG_PACKAGE_python-ply
+HOST_BUILD_DEPENDS+=python/host
+endif
+ifdef CONFIG_PACKAGE_python3-ply
+HOST_BUILD_DEPENDS+=python3/host
+endif
+
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=README.md
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/host-build.mk
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+$(call include_mk, python3-package.mk)
+
+define Package/python-ply/Default
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ URL:=http://www.dabeaz.com/ply/
+endef
+
+define Package/python-ply
+$(call Package/python-ply/Default)
+ TITLE:=python-ply
+ DEPENDS:=+python-light
+ VARIANT:=python
+endef
+
+define Package/python3-ply
+$(call Package/python-ply/Default)
+ TITLE:=python3-ply
+ DEPENDS:=+python3-light
+ VARIANT:=python3
+endef
+
+define Package/python-ply/description
+PLY is a 100% Python implementation of the common parsing tools lex
+and yacc.
+endef
+
+define Package/python3-ply/description
+$(call Package/python-ply/description)
+.
+(Variant for Python3)
+endef
+
+ifdef CONFIG_PACKAGE_python-ply
+define Host/Compile/python-ply
+ $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR_HOSTPKG)")
+endef
+endif
+
+ifdef CONFIG_PACKAGE_python3-ply
+define Host/Compile/python3-ply
+ $(call Build/Compile/HostPy3Mod,,install --prefix="" --root="$(STAGING_DIR_HOSTPKG)")
+endef
+endif
+
+define Host/Compile
+$(call Host/Compile/python-ply)
+$(call Host/Compile/python3-ply)
+endef
+
+define Host/Install
+endef
+
+$(eval $(call HostBuild))
+
+$(eval $(call PyPackage,python-ply))
+$(eval $(call BuildPackage,python-ply))
+
+$(eval $(call Py3Package,python3-ply))
+$(eval $(call BuildPackage,python3-ply))
--- /dev/null
+#
+# Copyright (C) 2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-psycopg2
+PKG_VERSION:=2.6.2
+PKG_RELEASE:=1
+PKG_MAINTAINER:=Dmitry Trefilov <the-alien@live.ru>
+PKG_LICENSE:=LGPL-3.0+
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_SOURCE:=psycopg2-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://initd.org/psycopg/tarballs/PSYCOPG-2-6/
+PKG_MD5SUM:=4a392949ba31a378a18ed3e775a4693f
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/psycopg2-$(PKG_VERSION)
+PKG_BUILD_DEPENDS:=python libpq python/host
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-psycopg2
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=PostgreSQL database adapter for Python
+ URL:=http://www.initd.org/
+ DEPENDS:=+python +libpq +python-egenix-mx-base
+endef
+
+define Package/python-psycopg2/description
+ Psycopg is the most popular PostgreSQL adapter for the Python programming language
+endef
+
+define Build/Compile
+ # The PATH var is required so that psycopg2's setup.py script finds pg_config
+ $(call Build/Compile/PyMod,., \
+ install --prefix=/usr --root=$(PKG_INSTALL_DIR), \
+ PATH=$(STAGING_DIR)/usr/bin:$(PATH))
+endef
+
+define Package/python-psycopg2/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call PyPackage,python-psycopg2))
+$(eval $(call BuildPackage,python-psycopg2))
--- /dev/null
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=pyasn1-modules
+PKG_VERSION:=0.0.8
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pyasn1-modules
+PKG_MD5SUM:=178129bc7fbf07215c25230c5f053f81
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+PKG_LICENSE:=BSD-2-Clause
+PKG_LICENSE_FILES:=LICENSE.txt
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-pyasn1-modules
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-pyasn1-modules
+ URL:=http://sourceforge.net/projects/pyasn1/
+ DEPENDS:=+python-light +python-pyasn1
+endef
+
+define Package/python-pyasn1-modules/description
+This is a small but growing collection of ASN.1 data structures
+expressed in Python terms using pyasn1 data model.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
+endef
+
+$(eval $(call PyPackage,python-pyasn1-modules))
+$(eval $(call BuildPackage,python-pyasn1-modules))
--- /dev/null
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=pyasn1
+PKG_VERSION:=0.1.9
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pyasn1
+PKG_MD5SUM:=f00a02a631d4016818659d1cc38d229a
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+PKG_LICENSE:=BSD-2-Clause
+PKG_LICENSE_FILES:=LICENSE.txt
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-pyasn1
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-pyasn1
+ URL:=http://pyasn1.sourceforge.net/
+ DEPENDS:=+python-light
+endef
+
+define Package/python-pyasn1/description
+This is an implementation of ASN.1 types and codecs in Python programming
+language. It has been first written to support particular protocol (SNMP)
+but then generalized to be suitable for a wide range of protocols
+based on ASN.1 specification.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+$(eval $(call PyPackage,python-pyasn1))
+$(eval $(call BuildPackage,python-pyasn1))
--- /dev/null
+#
+# Copyright (C) 2015-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=pycparser
+PKG_VERSION:=2.14
+PKG_RELEASE:=4
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pycparser
+PKG_HASH:=7959b4a74abdc27b312fed1c21e6caf9309ce0b29ea86b591fd2e99ecdf27f73
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-$(PKG_NAME)-$(PKG_VERSION)
+PKG_UNPACK=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
+
+HOST_BUILD_DEPENDS:=python-ply/host
+ifdef CONFIG_PACKAGE_python-pycparser
+HOST_BUILD_DEPENDS+=python/host
+endif
+ifdef CONFIG_PACKAGE_python3-pycparser
+HOST_BUILD_DEPENDS+=python3/host
+endif
+
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/host-build.mk
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+$(call include_mk, python3-package.mk)
+
+define Package/python-pycparser/Default
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ URL:=https://github.com/eliben/pycparser
+endef
+
+define Package/python-pycparser
+$(call Package/python-pycparser/Default)
+ TITLE:=python-pycparser
+ DEPENDS:=+python-light +python-ply
+ VARIANT:=python
+endef
+
+define Package/python3-pycparser
+$(call Package/python-pycparser/Default)
+ TITLE:=python3-pycparser
+ DEPENDS:=+python3-light +python3-ply
+ VARIANT:=python3
+endef
+
+define Package/python-pycparser/description
+pycparser is a parser for the C language, written in pure Python. It is a
+module designed to be easily integrated into applications that need to parse
+C source code.
+endef
+
+define Package/python3-pycparser/description
+$(call Package/python-pycparser/description)
+.
+(Variant for Python3)
+endef
+
+ifdef CONFIG_PACKAGE_python-pycparser
+define Host/Compile/python-pycparser
+ $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR_HOSTPKG)")
+endef
+endif
+
+ifdef CONFIG_PACKAGE_python3-pycparser
+define Host/Compile/python3-pycparser
+ $(call Build/Compile/HostPy3Mod,,install --prefix="" --root="$(STAGING_DIR_HOSTPKG)")
+endef
+endif
+
+define Host/Compile
+$(call Host/Compile/python-pycparser)
+$(call Host/Compile/python3-pycparser)
+endef
+
+define Host/Install
+endef
+
+$(eval $(call HostBuild))
+
+$(eval $(call PyPackage,python-pycparser))
+$(eval $(call BuildPackage,python-pycparser))
+
+$(eval $(call Py3Package,python3-pycparser))
+$(eval $(call BuildPackage,python3-pycparser))
--- /dev/null
+diff --git a/pycparser/c_lexer.py b/pycparser/c_lexer.py
+index cbb9d26..cbd7742 100644
+--- a/pycparser/c_lexer.py
++++ b/pycparser/c_lexer.py
+@@ -9,8 +9,8 @@
+ import re
+ import sys
+
+-from .ply import lex
+-from .ply.lex import TOKEN
++from ply import lex
++from ply.lex import TOKEN
+
+
+ class CLexer(object):
+diff --git a/pycparser/c_parser.py b/pycparser/c_parser.py
+index f4f7453..5c0ca88 100644
+--- a/pycparser/c_parser.py
++++ b/pycparser/c_parser.py
+@@ -8,7 +8,7 @@
+ #------------------------------------------------------------------------------
+ import re
+
+-from .ply import yacc
++from ply import yacc
+
+ from . import c_ast
+ from .c_lexer import CLexer
+diff --git a/setup.py b/setup.py
+index fdccbb3..036a10b 100644
+--- a/setup.py
++++ b/setup.py
+@@ -49,7 +49,7 @@ setup(
+ classifiers = [
+ 'Programming Language :: Python :: 2',
+ 'Programming Language :: Python :: 3',],
+- packages=['pycparser', 'pycparser.ply'],
++ packages=['pycparser'],
+ package_data={'pycparser': ['*.cfg']},
+ cmdclass={'install': install, 'sdist': sdist},
+ )
--- /dev/null
+#
+# Copyright (C) 2015-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=pyOpenSSL
+PKG_VERSION:=16.1.0
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/15/1e/79c75db50e57350a7cefb70b110255757e9abd380a50ebdc0cfd853b7450
+PKG_MD5SUM:=d8100b0c333f0eeadaf05914da8792a6
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+PKG_LICENSE:=Apache-2.0
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-pyopenssl
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-pyopenssl
+ URL:=https://github.com/pyca/pyopenssl
+ DEPENDS:=+python-light +python-cryptography +python-six
+endef
+
+define Package/python-pyopenssl/description
+Python wrapper module around the OpenSSL library
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
+endef
+
+$(eval $(call PyPackage,python-pyopenssl))
+$(eval $(call BuildPackage,python-pyopenssl))
--- /dev/null
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=pyptlib
+PKG_VERSION:=0.0.6
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pyptlib
+PKG_MD5SUM:=2fc7b8803777451c1fad3d5e25f1b99c
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-pyptlib
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-pyptlib
+ URL:=https://pypi.python.org/pypi/pyptlib
+ DEPENDS:=+python-light
+endef
+
+define Package/python-pyptlib/description
+A python implementation of the Pluggable Transports for Circumvention
+specification for Tor
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
+endef
+
+$(eval $(call PyPackage,python-pyptlib))
+$(eval $(call BuildPackage,python-pyptlib))
--- /dev/null
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-pyserial
+PKG_VERSION:=3.1.1
+PKG_RELEASE:=1
+PKG_MAINTAINER:=Micke Prag <micke.prag@telldus.se>
+PKG_LICENSE:=Python-2.0
+
+PKG_SOURCE:=pyserial-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://pypi.python.org/packages/3c/d8/a9fa247ca60b02b3bebbd61766b4f321393b57b13c53b18f6f62cf172c08/
+PKG_MD5SUM:=2f72100de3e410b36d575e12e82e9d27
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/pyserial-$(PKG_VERSION)
+PKG_BUILD_DEPENDS:=python
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-pyserial
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=python-pyserial
+ URL:=http://pyserial.sourceforge.net
+ DEPENDS:=+python-light
+endef
+
+define Package/python-pyserial/description
+ serial port python bindings
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root="$(PKG_INSTALL_DIR)")
+endef
+
+define Package/python-pyserial/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call BuildPackage,python-pyserial))
--- /dev/null
+#
+# Copyright (C) 2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=service_identity
+PKG_VERSION:=16.0.0
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/s/service_identity
+PKG_MD5SUM:=d52392597b9c44a740abf322bfdb21e6
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-service-identity
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-service-identity
+ URL:=https://github.com/pyca/service_identity
+ DEPENDS:=+python-light +python-attrs +python-pyasn1 +python-pyasn1-modules +python-pyopenssl
+endef
+
+define Package/python-service-identity/description
+service_identity aspires to give you all the tools you need for
+verifying whether a certificate is valid for the intended purposes.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
+endef
+
+$(eval $(call PyPackage,python-service-identity))
+$(eval $(call BuildPackage,python-service-identity))
--- /dev/null
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=six
+PKG_VERSION:=1.10.0
+PKG_RELEASE:=2
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/s/six
+PKG_MD5SUM:=34eed507548117b2ab523ab14b2f8b55
+
+HOST_BUILD_DEPENDS:=python/host
+PKG_BUILD_DEPENDS:=python
+
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/host-build.mk
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-six
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-six
+ URL:=https://pypi.python.org/pypi/six
+ DEPENDS:=+python-light
+endef
+
+define Package/python-six/description
+Six is a Python 2 and 3 compatibility library. It provides utility functions
+for smoothing over the differences between the Python versions with the goal of
+writing Python code that is compatible on both Python versions. See the
+documentation for more information on what is provided.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Host/Compile
+ $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR_HOSTPKG)")
+endef
+
+Host/Install:=
+
+$(eval $(call HostBuild))
+
+$(eval $(call PyPackage,python-six))
+$(eval $(call BuildPackage,python-six))
--- /dev/null
+#
+# Copyright (C) 2015-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=txsocksx
+PKG_VERSION:=1.15.0.2
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/t/txsocksx
+PKG_MD5SUM:=0266b9ae7b58f7550a49683afebf65ba
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+PKG_LICENSE:=ISC
+PKG_LICENSE_FILES:=COPYING
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-txsocksx
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-txsocksx
+ URL:=https://github.com/habnabit/txsocksx
+ DEPENDS:=+python-light +python-parsley +twisted
+endef
+
+define Package/python-txsocksx/description
+txsocksx is SOCKS4/4a and SOCKS5 client endpoints for Twisted 10.1 or
+greater.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,, \
+ install --prefix="/usr" --root="$(PKG_INSTALL_DIR)", \
+ PKG_VERSION="$(PKG_VERSION)" \
+ )
+endef
+
+$(eval $(call PyPackage,python-txsocksx))
+$(eval $(call BuildPackage,python-txsocksx))
--- /dev/null
+diff --git a/setup.py b/setup.py
+index 7979f89..3873a1e 100644
+--- a/setup.py
++++ b/setup.py
+@@ -35,5 +35,5 @@ setup(
+ 'version_module_paths': ['txsocksx/_version.py'],
+ },
+ install_requires=install_requires,
+- packages=['txsocksx', 'txsocksx.test'],
++ packages=['txsocksx'],
+ )
--- /dev/null
+diff --git a/setup.py b/setup.py
+index 7979f89..5e1abb3 100644
+--- a/setup.py
++++ b/setup.py
+@@ -1,6 +1,8 @@
+ # Copyright (c) Aaron Gallagher <_@habnab.it>
+ # See COPYING for details.
+
++import os
++
+ from setuptools import setup
+
+
+@@ -30,10 +32,11 @@ setup(
+ ],
+ license='ISC',
+
+- setup_requires=['vcversioner>=1'],
+- vcversioner={
+- 'version_module_paths': ['txsocksx/_version.py'],
+- },
++ #setup_requires=['vcversioner>=1'],
++ #vcversioner={
++ # 'version_module_paths': ['txsocksx/_version.py'],
++ #},
++ version=os.environ.get('PKG_VERSION'),
+ install_requires=install_requires,
+ packages=['txsocksx', 'txsocksx.test'],
+ )
--- /dev/null
+#
+# Copyright (C) 2007-2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-urllib3
+PKG_VERSION:=1.20
+PKG_RELEASE:=1
+PKG_LICENSE:=MIT
+
+PKG_SOURCE:=urllib3-$(PKG_VERSION).tar.gz
+PKG_BUILD_DIR:=$(BUILD_DIR)/urllib3-$(PKG_VERSION)/
+PKG_SOURCE_URL:=https://pypi.python.org/packages/20/56/a6aa403b0998f857b474a538343ee483f5c02491bd1aebf61d42a3f60f77/
+PKG_MD5SUM:=34691d4e7e20a8e9cdb452ea24fc38e7
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-urllib3
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ TITLE:=HTTP library with thread-safe connection pooling, file post, and more.
+ URL:=https://urllib3.readthedocs.io/
+ DEPENDS:=+python
+endef
+
+define Package/python-urllib3/description
+ HTTP library with thread-safe connection pooling, file post, and more.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Package/python-urllib3/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call BuildPackage,python-urllib3))
--- /dev/null
+#
+# Copyright (C) 2008-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=PyYAML
+PKG_VERSION:=3.11
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://pyyaml.org/download/pyyaml/
+PKG_MD5SUM:=f50e08ef0fe55178479d3a618efe21db
+
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=COPYING
+PKG_MAINTAINER:=Nicolas Thill <nico@openwrt.org>
+
+PKG_BUILD_DEPENDS:=python
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-yaml
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=YAML parser and emitter for Python
+ URL:=http://pyyaml.org/wiki/PyYAML
+ DEPENDS:=+python +libyaml
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,\
+ --with-libyaml install --prefix="$(PKG_INSTALL_DIR)/usr" \
+ )
+endef
+
+$(eval $(call PyPackage,python-yaml))
+$(eval $(call BuildPackage,python-yaml))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+# For PYTHON_VERSION
+include ./files/python-version.mk
+
+PKG_NAME:=python
+PKG_VERSION:=$(PYTHON_VERSION).$(PYTHON_VERSION_MICRO)
+PKG_RELEASE:=5
+
+PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=https://www.python.org/ftp/python/$(PKG_VERSION)
+PKG_MD5SUM:=53b43534153bb2a0363f08bae8b9d990
+PKG_HASH:=35d543986882f78261f97787fd3e06274bfa6df29fac9b4a94f73930ff98f731
+
+PKG_LICENSE:=PSF
+PKG_LICENSE_FILES:=LICENSE Modules/_ctypes/libffi_msvc/LICENSE Modules/_ctypes/darwin/LICENSE Modules/_ctypes/libffi/LICENSE Modules/_ctypes/libffi_osx/LICENSE Tools/pybench/LICENSE
+
+# This file provides the necsessary host build variables
+include ./files/python-host.mk
+
+# For PyPackage
+include ./files/python-package.mk
+
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+HOST_BUILD_PARALLEL:=1
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/Python-$(PKG_VERSION)
+HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/Python-$(PKG_VERSION)
+
+PKG_BUILD_DEPENDS:=python/host
+HOST_BUILD_DEPENDS:=bzip2/host expat/host
+
+include $(INCLUDE_DIR)/host-build.mk
+include $(INCLUDE_DIR)/package.mk
+
+define Package/python/Default
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=Python $(PYTHON_VERSION) programming language
+ URL:=https://www.python.org/
+ MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
+endef
+
+define Package/python/Default/description
+ Python is a dynamic object-oriented programming language that can be used
+ for many kinds of software development. It offers strong support for
+ integration with other languages and tools, comes with extensive standard
+ libraries, and can be learned in a few days. Many Python programmers
+ report substantial productivity gains and feel the language encourages
+ the development of higher quality, more maintainable code.
+endef
+
+define Package/python-pip-conf
+$(call Package/python/Default)
+ TITLE:=Configuration file for pip/pip3
+ URL:=https://pip.pypa.io
+endef
+
+define Package/python-pip-conf/description
+ Configuration file for pip/pip3
+endef
+
+define Package/python-base
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) interpreter
+ DEPENDS:=+libpthread +zlib
+endef
+
+define Package/python-base/description
+ This package contains only the interpreter and the bare minimum
+ for the interpreter to start.
+endef
+
+define Package/python-light
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) light installation
+ DEPENDS:=+python-base +libffi +libbz2
+endef
+
+define Package/python-light/description
+ This package is essentially the python-base package plus
+ a few of the rarely used (and big) libraries stripped out
+ into separate packages.
+endef
+
+PYTHON_LIB_FILES_DEL:=
+PYTHON_PACKAGES:=
+PYTHON_PACKAGES_DEPENDS:=
+define PyBasePackage
+ PYTHON_PACKAGES+=$(1)
+ ifeq ($(3),)
+ PYTHON_PACKAGES_DEPENDS+=$(1)
+ endif
+ PYTHON_LIB_FILES_DEL+=$(2)
+ define PyPackage/$(1)/filespec
+ ifneq ($(2),)
+ $(subst $(space),$(newline),$(foreach lib_file,$(2),+|$(lib_file)))
+ -|/usr/lib/python$(PYTHON_VERSION)/*/test
+ -|/usr/lib/python$(PYTHON_VERSION)/*/tests
+ endif
+ endef
+endef
+
+include ./files/python-package-*.mk
+
+define Package/python
+$(call Package/python/Default)
+ DEPENDS:=+python-light $(foreach package,$(PYTHON_PACKAGES_DEPENDS),+$(package))
+endef
+
+define Package/python/description
+ This package contains the (almost) full Python install.
+ It's python-light + all other packages.
+endef
+
+MAKE_FLAGS+=\
+ CROSS_COMPILE=yes \
+ LD="$(TARGET_CC)" \
+ PGEN=pgen2
+
+EXTRA_CFLAGS+= \
+ -DNDEBUG -fno-inline
+EXTRA_LDFLAGS+= \
+ -L$(PKG_BUILD_DIR)
+
+ENABLE_IPV6:=
+ifeq ($(CONFIG_IPV6),y)
+ ENABLE_IPV6 += --enable-ipv6
+endif
+
+PYTHON_FOR_BUILD:= \
+ _PYTHON_PROJECT_BASE=$(PKG_BUILD_DIR) \
+ _PYTHON_HOST_PLATFORM=linux2 \
+ PYTHONPATH="$(PKG_BUILD_DIR)/Lib:$(PKG_BUILD_DIR)/build/lib.linux2-$(PYTHON_VERSION)" \
+ _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata \
+ $(HOST_PYTHON_BIN)
+
+CONFIGURE_ARGS+= \
+ --sysconfdir=/etc \
+ --enable-shared \
+ --without-cxx-main \
+ --with-threads \
+ --with-system-ffi \
+ --with-ensurepip=no \
+ --without-pymalloc \
+ PYTHON_FOR_BUILD="$(PYTHON_FOR_BUILD)" \
+ $(ENABLE_IPV6) \
+ CONFIG_SITE="$(PKG_BUILD_DIR)/config.site" \
+ OPT="$(TARGET_CFLAGS)"
+
+define Build/Prepare
+ $(call Build/Prepare/Default)
+ $(CP) ./files/config.site $(PKG_BUILD_DIR)/config.site
+endef
+
+ifdef CONFIG_PACKAGE_python-setuptools
+define Build/Compile/python-setuptools
+ $(STAGING_DIR_HOSTPKG)/bin/pip install \
+ --ignore-installed \
+ --root=$(PKG_BUILD_DIR)/install-setuptools --prefix=. \
+ $(PKG_BUILD_DIR)/Lib/ensurepip/_bundled/setuptools-*.whl
+endef
+endif # CONFIG_PACKAGE_python-setuptools
+
+ifdef CONFIG_PACKAGE_python-pip
+define Build/Compile/python-pip
+ $(STAGING_DIR_HOSTPKG)/bin/pip install \
+ --ignore-installed \
+ --root=$(PKG_BUILD_DIR)/install-pip --prefix=. \
+ $(PKG_BUILD_DIR)/Lib/ensurepip/_bundled/pip-*.whl
+endef
+endif # CONFIG_PACKAGE_python-pip
+
+define Build/Compile
+ $(call Build/Compile/Default)
+ # Use host pip to install python-setuptools
+ $(call Build/Compile/python-setuptools)
+ $(call Build/Compile/python-pip)
+endef
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(STAGING_DIR)/mk/
+ $(INSTALL_DIR) $(1)/usr/include/ $(1)/usr/lib/ $(1)/usr/lib/pkgconfig
+ $(INSTALL_DIR) $(1)/usr/lib/python$(PYTHON_VERSION)/
+ $(INSTALL_DATA) \
+ ./files/python-package.mk \
+ ./files/python-host.mk \
+ ./files/python-version.mk \
+ ./files/python-package-install.sh \
+ $(STAGING_DIR)/mk/
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/include/python$(PYTHON_VERSION) \
+ $(1)/usr/include/
+ $(CP) \
+ $(HOST_PYTHON_LIB_DIR) \
+ $(PKG_INSTALL_DIR)/usr/lib/libpython$(PYTHON_VERSION).so* \
+ $(1)/usr/lib/
+ $(CP) \
+ $(HOST_PYTHON_DIR)/lib/pkgconfig/python.pc \
+ $(HOST_PYTHON_DIR)/lib/pkgconfig/python2.pc \
+ $(HOST_PYTHON_DIR)/lib/pkgconfig/python-$(PYTHON_VERSION).pc \
+ $(1)/usr/lib/pkgconfig
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/lib/python$(PYTHON_VERSION)/config \
+ $(1)/usr/lib/python$(PYTHON_VERSION)/
+endef
+
+PYTHON_BASE_LIB_FILES:= \
+ /usr/lib/python$(PYTHON_VERSION)/_abcoll.py \
+ /usr/lib/python$(PYTHON_VERSION)/_sysconfigdata.py \
+ /usr/lib/python$(PYTHON_VERSION)/_weakrefset.py \
+ /usr/lib/python$(PYTHON_VERSION)/abc.py \
+ /usr/lib/python$(PYTHON_VERSION)/copy_reg.py \
+ /usr/lib/python$(PYTHON_VERSION)/genericpath.py \
+ /usr/lib/python$(PYTHON_VERSION)/linecache.py \
+ /usr/lib/python$(PYTHON_VERSION)/posixpath.py \
+ /usr/lib/python$(PYTHON_VERSION)/os.py \
+ /usr/lib/python$(PYTHON_VERSION)/re.py \
+ /usr/lib/python$(PYTHON_VERSION)/site.py \
+ /usr/lib/python$(PYTHON_VERSION)/sre_compile.py \
+ /usr/lib/python$(PYTHON_VERSION)/sre_constants.py \
+ /usr/lib/python$(PYTHON_VERSION)/sre_parse.py \
+ /usr/lib/python$(PYTHON_VERSION)/sysconfig.py \
+ /usr/lib/python$(PYTHON_VERSION)/stat.py \
+ /usr/lib/python$(PYTHON_VERSION)/traceback.py \
+ /usr/lib/python$(PYTHON_VERSION)/types.py \
+ /usr/lib/python$(PYTHON_VERSION)/UserDict.py \
+ /usr/lib/python$(PYTHON_VERSION)/warnings.py
+
+PYTHON_LIB_FILES_DEL+=$(PYTHON_BASE_LIB_FILES)
+
+define PyPackage/python-base/filespec
++|/usr/bin/python$(PYTHON_VERSION)
+$(subst $(space),$(newline),$(foreach lib_file,$(PYTHON_BASE_LIB_FILES),+|$(lib_file)))
+endef
+
+define PyPackage/python-light/filespec
++|/usr/lib/python$(PYTHON_VERSION)
+-|/usr/lib/python$(PYTHON_VERSION)/distutils/cygwinccompiler.py
+-|/usr/lib/python$(PYTHON_VERSION)/distutils/command/wininst*
+-|/usr/lib/python$(PYTHON_VERSION)/ensurepip
+-|/usr/lib/python$(PYTHON_VERSION)/idlelib
+-|/usr/lib/python$(PYTHON_VERSION)/lib-tk
+-|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_testcapi.so
+-|/usr/lib/python$(PYTHON_VERSION)/pdb.doc
+-|/usr/lib/python$(PYTHON_VERSION)/test
+-|/usr/lib/python$(PYTHON_VERSION)/webbrowser.py
+-|/usr/lib/python$(PYTHON_VERSION)/*/test
+-|/usr/lib/python$(PYTHON_VERSION)/*/tests
+-|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/readline.so
+$(subst $(space),$(newline),$(foreach lib_file,$(PYTHON_LIB_FILES_DEL),-|$(lib_file)))
+endef
+
+define PyPackage/python-base/install
+ $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib
+ $(LN) python$(PYTHON_VERSION) $(1)/usr/bin/python
+ $(LN) python$(PYTHON_VERSION) $(1)/usr/bin/python2
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpython$(PYTHON_VERSION).so* $(1)/usr/lib/
+endef
+
+define PyPackage/python/filespec
+-|$(PYTHON_PKG_DIR)
+endef
+
+define Package/python-pip-conf/install
+ $(INSTALL_DIR) $(1)/etc
+ $(CP) ./files/pip.conf $(1)/etc
+endef
+
+HOST_LDFLAGS += \
+ $$$$(pkg-config --static --libs libcrypto libssl)
+
+HOST_CONFIGURE_ARGS+= \
+ --without-cxx-main \
+ --without-pymalloc \
+ --with-threads \
+ --prefix=$(HOST_PYTHON_DIR) \
+ --exec-prefix=$(HOST_PYTHON_DIR) \
+ --with-system-expat=$(STAGING_DIR_HOSTPKG) \
+ --with-system-ffi=no \
+ --with-ensurepip=install \
+ CONFIG_SITE=
+
+define Host/Install
+ $(MAKE) -C $(HOST_BUILD_DIR) install
+ $(INSTALL_DIR) $(HOST_PYTHON_DIR)/bin/
+ $(INSTALL_BIN) $(HOST_BUILD_DIR)/Parser/pgen $(HOST_PYTHON_DIR)/bin/pgen2
+endef
+
+$(eval $(call HostBuild))
+
+$(foreach package, $(PYTHON_PACKAGES), \
+ $(eval $(call PyPackage,$(package))) \
+ $(eval $(call BuildPackage,$(package))) \
+ $(eval $(call BuildPackage,$(package)-src)) \
+)
+
+$(eval $(call PyPackage,python-base))
+$(eval $(call PyPackage,python-light))
+$(eval $(call PyPackage,python))
+
+$(eval $(call BuildPackage,python-pip-conf))
+
+$(eval $(call BuildPackage,python-base))
+$(eval $(call BuildPackage,python-light))
+$(eval $(call BuildPackage,python))
+
+$(eval $(call BuildPackage,python-base-src))
+$(eval $(call BuildPackage,python-light-src))
+$(eval $(call BuildPackage,python-src))
--- /dev/null
+#! /bin/sh
+#
+# Copyright (C) 2007-2014 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+ac_cv_file__dev_ptmx=yes
+ac_cv_file__dev_ptc=no
+ac_cv_buggy_getaddrinfo=no
+
--- /dev/null
+[global]
+cache-dir=/tmp/.cache
+log-file=/tmp/pip-log.txt
--- /dev/null
+#
+# Copyright (C) 2015-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+ifneq ($(__python_host_mk_inc),1)
+__python_host_mk_inc=1
+
+# For PYTHON_VERSION
+$(call include_mk, python-version.mk)
+
+HOST_PYTHON_DIR:=$(STAGING_DIR_HOSTPKG)
+HOST_PYTHON_INC_DIR:=$(HOST_PYTHON_DIR)/include/python$(PYTHON_VERSION)
+HOST_PYTHON_LIB_DIR:=$(HOST_PYTHON_DIR)/lib/python$(PYTHON_VERSION)
+
+HOST_PYTHON_PKG_DIR:=$(HOST_PYTHON_DIR)/lib/python$(PYTHON_VERSION)/site-packages
+
+HOST_PYTHON_BIN:=$(HOST_PYTHON_DIR)/bin/python$(PYTHON_VERSION)
+
+HOST_PYTHONPATH:=$(HOST_PYTHON_LIB_DIR):$(HOST_PYTHON_PKG_DIR)
+
+define HostPython
+ if [ "$(strip $(3))" == "HOST" ]; then \
+ export PYTHONPATH="$(HOST_PYTHONPATH)"; \
+ export PYTHONDONTWRITEBYTECODE=0; \
+ else \
+ export PYTHONPATH="$(PYTHONPATH)"; \
+ export PYTHONDONTWRITEBYTECODE=1; \
+ export _python_sysroot="$(STAGING_DIR)"; \
+ export _python_prefix="/usr"; \
+ export _python_exec_prefix="/usr"; \
+ fi; \
+ export PYTHONOPTIMIZE=""; \
+ $(1) \
+ $(HOST_PYTHON_BIN) $(2);
+endef
+
+# $(1) => commands to execute before running pythons script
+# $(2) => python script and its arguments
+# $(3) => additional variables
+define Build/Compile/HostPyRunHost
+ $(call HostPython, \
+ $(if $(1),$(1);) \
+ CC="$(HOSTCC)" \
+ CCSHARED="$(HOSTCC) $(HOST_FPIC)" \
+ CXX="$(HOSTCXX)" \
+ LD="$(HOSTCC)" \
+ LDSHARED="$(HOSTCC) -shared" \
+ CFLAGS="$(HOST_CFLAGS)" \
+ CPPFLAGS="$(HOST_CPPFLAGS) -I$(HOST_PYTHON_INC_DIR)" \
+ LDFLAGS="$(HOST_LDFLAGS) -lpython$(PYTHON_VERSION) -Wl$(comma)-rpath=$(STAGING_DIR_HOSTPKG)/lib" \
+ _PYTHON_HOST_PLATFORM=linux2 \
+ $(3) \
+ , \
+ $(2) \
+ , \
+ HOST \
+ )
+endef
+
+
+# $(1) => build subdir
+# $(2) => additional arguments to setup.py
+# $(3) => additional variables
+define Build/Compile/HostPyMod
+ $(call Build/Compile/HostPyRunHost, \
+ cd $(HOST_BUILD_DIR)/$(strip $(1)), \
+ ./setup.py $(2), \
+ $(3))
+endef
+
+define HostPy/Compile/Default
+ $(call Build/Compile/HostPyMod,,\
+ install --root="$(STAGING_DIR_HOSTPKG)" --prefix="" \
+ --single-version-externally-managed \
+ )
+endef
+
+endif # __python_host_mk_inc
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-codecs
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) codecs + unicode support
+ DEPENDS:=+python-light
+endef
+
+$(eval $(call PyBasePackage,python-codecs, \
+ /usr/lib/python$(PYTHON_VERSION)/encodings \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_codecs_cn.so \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_codecs_hk.so \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_codecs_iso2022.so \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_codecs_jp.so \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_codecs_kr.so \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_codecs_tw.so \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/unicodedata.so \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-compiler
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) compiler module
+ DEPENDS:=+python-light
+endef
+
+$(eval $(call PyBasePackage,python-compiler, \
+ /usr/lib/python$(PYTHON_VERSION)/compiler \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-ctypes
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) ctypes module
+ DEPENDS:=+python-light
+endef
+
+$(eval $(call PyBasePackage,python-ctypes, \
+ /usr/lib/python$(PYTHON_VERSION)/ctypes \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_ctypes.so \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_ctypes_test.so \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-db
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) db module
+ DEPENDS:=+python-light +libdb47
+endef
+
+$(eval $(call PyBasePackage,python-db, \
+ /usr/lib/python$(PYTHON_VERSION)/bsddb \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_bsddb.so \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/dbm.so \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-decimal
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) decimal module
+ DEPENDS:=+python-light
+endef
+
+$(eval $(call PyBasePackage,python-decimal, \
+ /usr/lib/python$(PYTHON_VERSION)/decimal.py \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-dev
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) development files
+ DEPENDS:=+python +python-lib2to3
+endef
+
+define PyPackage/python-dev/install
+ $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/python*config $(1)/usr/bin
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/python$(PYTHON_VERSION)/config/libpython$(PYTHON_VERSION).a $(1)/usr/lib
+endef
+
+$(eval $(call PyBasePackage,python-dev, \
+ /usr/lib/python$(PYTHON_VERSION)/config \
+ /usr/include/python$(PYTHON_VERSION) \
+ /usr/lib/pkgconfig \
+ , \
+ DO_NOT_ADD_TO_PACKAGE_DEPENDS \
+))
+
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-distutils
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) distutils
+ DEPENDS:=+python-light
+endef
+
+$(eval $(call PyBasePackage,python-distutils, \
+ /usr/lib/python$(PYTHON_VERSION)/distutils \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-email
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) email module
+ DEPENDS:=+python-light
+endef
+
+$(eval $(call PyBasePackage,python-email, \
+ /usr/lib/python$(PYTHON_VERSION)/email \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-gdbm
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) gdbm module
+ DEPENDS:=+python-light +libgdbm
+endef
+
+$(eval $(call PyBasePackage,python-gdbm, \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/gdbm.so \
+))
--- /dev/null
+#!/bin/sh
+
+process_filespec() {
+ local src_dir="$1"
+ local dst_dir="$2"
+ local filespec="$3"
+ echo "$filespec" | (
+ IFS='|'
+ while read fop fspec fperm; do
+ local fop=`echo "$fop" | tr -d ' \t\n'`
+ if [ "$fop" = "+" ]; then
+ if [ ! -e "${src_dir}${fspec}" ]; then
+ echo "File not found '${src_dir}${fspec}'"
+ exit 1
+ fi
+ dpath=`dirname "$fspec"`
+ if [ -z "$fperm" ]; then
+ dperm=`stat -c "%a" ${src_dir}${dpath}`
+ fi
+ mkdir -p -m$dperm ${dst_dir}${dpath}
+ echo "copying: '$fspec'"
+ cp -fpR ${src_dir}${fspec} ${dst_dir}${dpath}/
+ if [ -n "$fperm" ]; then
+ chmod -R $fperm ${dst_dir}${fspec}
+ fi
+ elif [ "$fop" = "-" ]; then
+ echo "removing: '$fspec'"
+ rm -fR ${dst_dir}${fspec}
+ elif [ "$fop" = "=" ]; then
+ echo "setting permissions: '$fperm' on '$fspec'"
+ chmod -R $fperm ${dst_dir}${fspec}
+ fi
+ done
+ )
+}
+
+src_dir="$1"
+dst_dir="$2"
+python="$3"
+mode="$4"
+filespec="$5"
+
+process_filespec "$src_dir" "$dst_dir" "$filespec" || {
+ echo "process filespec error-ed"
+ exit 1
+}
+
+if [ "$mode" == "sources" ] ; then
+ # Copy only python source files
+ find $dst_dir -not -name "*\.py" | xargs rm -f
+ # Delete empty folders (if the case)
+ find $dst_dir/usr -type d | xargs rmdir &> /dev/null
+ rmdir $dst_dir/usr &> /dev/null
+ exit 0
+fi
+
+# XXX [So that you won't goof as I did]
+# Note: Yes, I tried to use the -O & -OO flags here.
+# However the generated byte-codes were not portable.
+# So, we just stuck to un-optimized byte-codes,
+# which is still way better/faster than running
+# Python sources all the time.
+$python -m compileall -d '/' $dst_dir || {
+ echo "python -m compileall err-ed"
+ exit 1
+}
+# Delete source files and pyc [ un-optimized bytecode files ]
+# We may want to make this optimization thing configurable later, but not sure atm
+find $dst_dir -name "*\.py" | xargs rm -f
+
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-lib2to3
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) lib2to3 module
+ DEPENDS:=+python
+endef
+
+$(eval $(call PyBasePackage,python-lib2to3, \
+ /usr/lib/python$(PYTHON_VERSION)/lib2to3 \
+ , \
+ DO_NOT_ADD_TO_PACKAGE_DEPENDS \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-logging
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) logging module
+ DEPENDS:=+python-light
+endef
+
+$(eval $(call PyBasePackage,python-logging, \
+ /usr/lib/python$(PYTHON_VERSION)/logging \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-multiprocessing
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) multiprocessing
+ DEPENDS:=+python-light
+endef
+
+$(eval $(call PyBasePackage,python-multiprocessing, \
+ /usr/lib/python$(PYTHON_VERSION)/multiprocessing \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_multiprocessing.so \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-ncurses
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) ncurses module
+ DEPENDS:=+python-light +libncurses
+endef
+
+$(eval $(call PyBasePackage,python-ncurses, \
+ /usr/lib/python$(PYTHON_VERSION)/curses \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_curses.so \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_curses_panel.so \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-openssl
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) SSL module
+ DEPENDS:=+python-light +libopenssl
+endef
+
+$(eval $(call PyBasePackage,python-openssl, \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_hashlib.so \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_ssl.so \
+))
--- /dev/null
+#
+# Copyright (C) 2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-pip
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) pip module
+ VERSION:=$(PYTHON_PIP_VERSION)
+ DEPENDS:=+python +python-setuptools +python-pip-conf
+endef
+
+define PyPackage/python-pip/install
+ $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/python$(PYTHON_VERSION)/site-packages
+ # Adjust shebang to proper python location on target
+ sed "1s/.*/#\!\/usr\/bin\/python$(PYTHON_VERSION)/" -i $(PKG_BUILD_DIR)/install-pip/bin/*
+ $(CP) $(PKG_BUILD_DIR)/install-pip/bin/* $(1)/usr/bin
+ $(CP) \
+ $(PKG_BUILD_DIR)/install-pip/lib/python$(PYTHON_VERSION)/site-packages/pip \
+ $(1)/usr/lib/python$(PYTHON_VERSION)/site-packages/
+endef
+
+$(eval $(call PyBasePackage,python-pip, \
+ , \
+ DO_NOT_ADD_TO_PACKAGE_DEPENDS \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-pydoc
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) pydoc module
+ DEPENDS:=+python-light
+endef
+
+$(eval $(call PyBasePackage,python-pydoc, \
+ /usr/lib/python$(PYTHON_VERSION)/doctest.py \
+ /usr/lib/python$(PYTHON_VERSION)/pydoc.py \
+ /usr/lib/python$(PYTHON_VERSION)/pydoc_data \
+))
--- /dev/null
+#
+# Copyright (C) 2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-setuptools
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) setuptools module
+ VERSION:=$(PYTHON_SETUPTOOLS_VERSION)
+ DEPENDS:=+python
+endef
+
+define PyPackage/python-setuptools/install
+ $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/python$(PYTHON_VERSION)/site-packages
+ # Adjust shebang to proper python location on target
+ sed "1s/.*/#\!\/usr\/bin\/python$(PYTHON_VERSION)/" -i $(PKG_BUILD_DIR)/install-setuptools/bin/*
+ $(CP) $(PKG_BUILD_DIR)/install-setuptools/bin/* $(1)/usr/bin
+ $(CP) \
+ $(PKG_BUILD_DIR)/install-setuptools/lib/python$(PYTHON_VERSION)/site-packages/pkg_resources \
+ $(PKG_BUILD_DIR)/install-setuptools/lib/python$(PYTHON_VERSION)/site-packages/setuptools \
+ $(PKG_BUILD_DIR)/install-setuptools/lib/python$(PYTHON_VERSION)/site-packages/easy_install.py \
+ $(1)/usr/lib/python$(PYTHON_VERSION)/site-packages
+endef
+
+$(eval $(call PyBasePackage,python-setuptools, \
+ , \
+ DO_NOT_ADD_TO_PACKAGE_DEPENDS \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-sqlite3
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) sqlite3 module
+ DEPENDS:=+python-light +libsqlite3
+endef
+
+$(eval $(call PyBasePackage,python-sqlite3, \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_sqlite3.so \
+ /usr/lib/python$(PYTHON_VERSION)/sqlite3 \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-unittest
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) unittest module
+ DEPENDS:=+python-light
+endef
+
+$(eval $(call PyBasePackage,python-unittest, \
+ /usr/lib/python$(PYTHON_VERSION)/unittest \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-xml
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) xml libs
+ DEPENDS:=+python-light +libexpat
+endef
+
+$(eval $(call PyBasePackage,python-xml, \
+ /usr/lib/python$(PYTHON_VERSION)/xml \
+ /usr/lib/python$(PYTHON_VERSION)/xmllib.py \
+ /usr/lib/python$(PYTHON_VERSION)/xmlrpclib.py \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_elementtree.so \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/pyexpat.so \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+$(call include_mk, python-version.mk)
+
+PYTHON_DIR:=$(STAGING_DIR)/usr
+PYTHON_BIN_DIR:=$(PYTHON_DIR)/bin
+PYTHON_INC_DIR:=$(PYTHON_DIR)/include/python$(PYTHON_VERSION)
+PYTHON_LIB_DIR:=$(PYTHON_DIR)/lib/python$(PYTHON_VERSION)
+
+PYTHON_PKG_DIR:=/usr/lib/python$(PYTHON_VERSION)/site-packages
+
+PYTHON:=python$(PYTHON_VERSION)
+
+PYTHONPATH:=$(PYTHON_LIB_DIR):$(STAGING_DIR)/$(PYTHON_PKG_DIR):$(PKG_INSTALL_DIR)/$(PYTHON_PKG_DIR)
+
+# These configure args are needed in detection of path to Python header files
+# using autotools.
+CONFIGURE_ARGS += \
+ _python_sysroot="$(STAGING_DIR)" \
+ _python_prefix="/usr" \
+ _python_exec_prefix="/usr"
+
+PKG_USE_MIPS16:=0
+# This is required in addition to PKG_USE_MIPS16:=0 because otherwise MIPS16
+# flags are inherited from the Python base package (via sysconfig module)
+ifdef CONFIG_USE_MIPS16
+ TARGET_CFLAGS += -mno-mips16 -mno-interlink-mips16
+endif
+
+define PyPackage
+
+ define Package/$(1)-src
+ $(call Package/$(1))
+ TITLE+= (sources)
+ DEPENDS:=$$$$(foreach dep,$$$$(filter +python-%,$$$$(DEPENDS)),$$$$(dep)-src)
+ endef
+
+ define Package/$(1)-src/description
+ $(call Package/$(1)/description).
+ (Contains the Python sources for this package).
+ endef
+
+ # Add default PyPackage filespec none defined
+ ifndef PyPackage/$(1)/filespec
+ define PyPackage/$(1)/filespec
+ +|$(PYTHON_PKG_DIR)
+ endef
+ endif
+
+ ifndef PyPackage/$(1)/install
+ define PyPackage/$(1)/install
+ if [ -d $(PKG_INSTALL_DIR)/usr/bin ]; then \
+ $(INSTALL_DIR) $$(1)/usr/bin ; \
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $$(1)/usr/bin/ ; \
+ fi
+ endef
+ endif
+
+ ifndef Package/$(1)/install
+ $(call shexport,PyPackage/$(1)/filespec)
+
+ define Package/$(1)/install
+ $(call PyPackage/$(1)/install,$$(1))
+ find $(PKG_INSTALL_DIR) -name "*\.exe" | xargs rm -f
+ if [ -e files/python-package-install.sh ] ; then \
+ $(SHELL) files/python-package-install.sh \
+ "$(PKG_INSTALL_DIR)" "$$(1)" \
+ "$(HOST_PYTHON_BIN)" "$$(2)" \
+ "$$$$$$$$$$(call shvar,PyPackage/$(1)/filespec)" ; \
+ elif [ -e $(STAGING_DIR)/mk/python-package-install.sh ] ; then \
+ $(SHELL) $(STAGING_DIR)/mk/python-package-install.sh \
+ "$(PKG_INSTALL_DIR)" "$$(1)" \
+ "$(HOST_PYTHON_BIN)" "$$(2)" \
+ "$$$$$$$$$$(call shvar,PyPackage/$(1)/filespec)" ; \
+ else \
+ echo "No 'python-package-install.sh' script found" ; \
+ exit 1 ; \
+ fi
+ endef
+
+ define Package/$(1)-src/install
+ $$(call Package/$(1)/install,$$(1),sources)
+ endef
+ endif # Package/$(1)/install
+endef
+
+$(call include_mk, python-host.mk)
+
+# $(1) => commands to execute before running pythons script
+# $(2) => python script and its arguments
+# $(3) => additional variables
+define Build/Compile/HostPyRunTarget
+ $(call HostPython, \
+ $(if $(1),$(1);) \
+ CC="$(TARGET_CC)" \
+ CCSHARED="$(TARGET_CC) $(FPIC)" \
+ CXX="$(TARGET_CXX)" \
+ LD="$(TARGET_CC)" \
+ LDSHARED="$(TARGET_CC) -shared" \
+ CFLAGS="$(TARGET_CFLAGS)" \
+ CPPFLAGS="$(TARGET_CPPFLAGS) -I$(PYTHON_INC_DIR)" \
+ LDFLAGS="$(TARGET_LDFLAGS) -lpython$(PYTHON_VERSION)" \
+ _PYTHON_HOST_PLATFORM=linux2 \
+ __PYVENV_LAUNCHER__="/usr/bin/$(PYTHON)" \
+ $(3) \
+ , \
+ $(2) \
+ )
+endef
+
+# $(1) => build subdir
+# $(2) => additional arguments to setup.py
+# $(3) => additional variables
+define Build/Compile/PyMod
+ $(INSTALL_DIR) $(PKG_INSTALL_DIR)/$(PYTHON_PKG_DIR)
+ $(call Build/Compile/HostPyRunTarget, \
+ cd $(PKG_BUILD_DIR)/$(strip $(1)), \
+ ./setup.py $(2), \
+ $(3))
+ find $(PKG_INSTALL_DIR) -name "*\.exe" | xargs rm -f
+endef
+
+define PyBuild/Compile/Default
+ $(call Build/Compile/PyMod,, \
+ install --prefix="/usr" --root="$(PKG_INSTALL_DIR)" \
+ --single-version-externally-managed \
+ )
+endef
+
+ifeq ($(BUILD_VARIANT),python)
+define Build/Compile
+ $(call PyBuild/Compile/Default)
+endef
+endif # python
--- /dev/null
+#
+# Copyright (C) 2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+PYTHON_VERSION:=2.7
+PYTHON_VERSION_MICRO:=13
+
+PYTHON_SETUPTOOLS_VERSION:=28.8.0
+PYTHON_PIP_VERSION:=9.0.1
+
--- /dev/null
+From 6eeab87bc852481e599325549c854b701bf2e39f Mon Sep 17 00:00:00 2001
+From: Alexandru Ardelean <aa@ocedo.com>
+Date: Thu, 25 Sep 2014 18:18:29 +0300
+Subject: [PATCH] enable zlib
+
+---
+ Modules/Setup.dist | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Modules/Setup.dist b/Modules/Setup.dist
+index 01fb85f..01ac492 100644
+--- a/Modules/Setup.dist
++++ b/Modules/Setup.dist
+@@ -358,7 +358,7 @@ _symtable symtablemodule.c
+ # Andrew Kuchling's zlib module.
+ # This require zlib 1.1.3 (or later).
+ # See http://www.gzip.org/zlib/
+-#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
++zlib zlibmodule.c -lz
+
+ # Interface to the Expat XML parser
+ #
+--
+1.8.4.5
+
--- /dev/null
+diff --git a/setup.py b/setup.py
+index cbdeaf3..5154412 100644
+--- a/setup.py
++++ b/setup.py
+@@ -480,7 +480,8 @@ class PyBuildExt(build_ext):
+ add_dir_to_list(dir_list, directory)
+
+ if os.path.normpath(sys.prefix) != '/usr' \
+- and not sysconfig.get_config_var('PYTHONFRAMEWORK'):
++ and not sysconfig.get_config_var('PYTHONFRAMEWORK') \
++ and not cross_compiling:
+ # OSX note: Don't add LIBDIR and INCLUDEDIR to building a framework
+ # (PYTHONFRAMEWORK is set) to avoid # linking problems when
+ # building a framework with different architectures than
--- /dev/null
+diff --git a/Makefile.pre.in b/Makefile.pre.in
+index 7f4ec2f..e270bf2 100644
+--- a/Makefile.pre.in
++++ b/Makefile.pre.in
+@@ -1038,6 +1038,7 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
+ done; \
+ done
+ $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
++ifeq (@COMPILE_ALL_TESTS@,yes)
+ if test -d $(DESTDIR)$(LIBDEST)/distutils/tests; then \
+ $(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \
+ $(DESTDIR)$(LIBDEST)/distutils/tests ; \
+@@ -1064,6 +1065,7 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
+ $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
+ -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+ $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt
++endif
+
+ # Create the PLATDIR source directory, if one wasn't distributed..
+ $(srcdir)/Lib/$(PLATDIR):
--- /dev/null
+diff --git a/Python/pythonrun.c b/Python/pythonrun.c
+index 748a63b..cb6e291 100644
+--- a/Python/pythonrun.c
++++ b/Python/pythonrun.c
+@@ -79,7 +79,7 @@ int Py_InteractiveFlag; /* Needed by Py_FdIsInteractive() below */
+ int Py_InspectFlag; /* Needed to determine whether to exit at SystemExit */
+ int Py_NoSiteFlag; /* Suppress 'import site' */
+ int Py_BytesWarningFlag; /* Warn on str(bytes) and str(buffer) */
+-int Py_DontWriteBytecodeFlag; /* Suppress writing bytecode files (*.py[co]) */
++int Py_DontWriteBytecodeFlag = 1; /* Suppress writing bytecode files (*.py[co]) */
+ int Py_UseClassExceptionsFlag = 1; /* Needed by bltinmodule.c: deprecated */
+ int Py_FrozenFlag; /* Needed by getpath.c */
+ int Py_UnicodeFlag = 0; /* Needed by compile.c */
+@@ -174,7 +174,7 @@ Py_InitializeEx(int install_sigs)
+ if ((p = Py_GETENV("PYTHONOPTIMIZE")) && *p != '\0')
+ Py_OptimizeFlag = add_flag(Py_OptimizeFlag, p);
+ if ((p = Py_GETENV("PYTHONDONTWRITEBYTECODE")) && *p != '\0')
+- Py_DontWriteBytecodeFlag = add_flag(Py_DontWriteBytecodeFlag, p);
++ Py_DontWriteBytecodeFlag = atoi(p);
+ /* The variable is only tested for existence here; _PyRandom_Init will
+ check its value further. */
+ if ((p = Py_GETENV("PYTHONHASHSEED")) && *p != '\0')
--- /dev/null
+diff --git a/setup.py b/setup.py
+index 1d1ae72..511aed5 100644
+--- a/setup.py
++++ b/setup.py
+@@ -444,7 +444,8 @@ class PyBuildExt(build_ext):
+ add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
+ if cross_compiling:
+ self.add_gcc_paths()
+- self.add_multiarch_paths()
++ else:
++ self.add_multiarch_paths()
+
+ # Add paths specified in the environment variables LDFLAGS and
+ # CPPFLAGS for header and library files.
--- /dev/null
+--- a/Lib/distutils/command/build_scripts.py
++++ b/Lib/distutils/command/build_scripts.py
+@@ -89,6 +89,7 @@ class build_scripts (Command):
+ adjust = 1
+ post_interp = match.group(1) or ''
+
++ adjust = 0
+ if adjust:
+ log.info("copying and adjusting %s -> %s", script,
+ self.build_dir)
--- /dev/null
+Adjust library/header paths for cross-compilation
+
+When cross-compiling third-party extensions, the get_python_inc() or
+get_python_lib() can be called, to return the path to headers or
+libraries. However, they use the sys.prefix of the host Python, which
+returns incorrect paths when cross-compiling (paths pointing to host
+headers and libraries).
+
+In order to fix this, we introduce the _python_sysroot, _python_prefix
+and _python_exec_prefix variables, that allow to override these
+values, and get correct header/library paths when cross-compiling
+third-party Python modules.
+
+The _python_sysroot variable is also used to prefix the LIBDIR value
+taken from the sysconfigdata module.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+
+Index: b/Lib/distutils/sysconfig.py
+===================================================================
+--- a/Lib/distutils/sysconfig.py
++++ b/Lib/distutils/sysconfig.py
+@@ -19,8 +19,13 @@
+ from distutils.errors import DistutilsPlatformError
+
+ # These are needed in a couple of spots, so just compute them once.
+-PREFIX = os.path.normpath(sys.prefix)
+-EXEC_PREFIX = os.path.normpath(sys.exec_prefix)
++if "_python_sysroot" in os.environ:
++ _sysroot=os.environ.get('_python_sysroot')
++ PREFIX = os.path.normpath(_sysroot + os.environ.get('_python_prefix'))
++ EXEC_PREFIX = os.path.normpath(_sysroot + os.environ.get('_python_exec_prefix'))
++else:
++ PREFIX = os.path.normpath(sys.prefix)
++ EXEC_PREFIX = os.path.normpath(sys.exec_prefix)
+
+ # Path to the base directory of the project. On Windows the binary may
+ # live in project/PCBuild9. If we're dealing with an x64 Windows build,
+Index: b/Lib/distutils/command/build_ext.py
+===================================================================
+--- a/Lib/distutils/command/build_ext.py
++++ b/Lib/distutils/command/build_ext.py
+@@ -237,7 +237,10 @@
+ if (sysconfig.get_config_var('Py_ENABLE_SHARED')):
+ if not sysconfig.python_build:
+ # building third party extensions
+- self.library_dirs.append(sysconfig.get_config_var('LIBDIR'))
++ libdir = sysconfig.get_config_var('LIBDIR')
++ if "_python_sysroot" in os.environ:
++ libdir = os.environ.get("_python_sysroot") + libdir
++ self.library_dirs.append(libdir)
+ else:
+ # building python standard extensions
+ self.library_dirs.append('.')
--- /dev/null
+diff --git a/setup.py b/setup.py
+index 7868b7b..10ec68f 100644
+--- a/setup.py
++++ b/setup.py
+@@ -1067,6 +1067,7 @@ class PyBuildExt(build_ext):
+ if db_setup_debug: print "db lib: ", dblib, "not found"
+
+ except db_found:
++ rt_dblib_dir = None if cross_compiling else dblib_dir
+ if db_setup_debug:
+ print "bsddb using BerkeleyDB lib:", db_ver, dblib
+ print "bsddb lib dir:", dblib_dir, " inc dir:", db_incdir
+@@ -1081,7 +1082,7 @@ class PyBuildExt(build_ext):
+ exts.append(Extension('_bsddb', ['_bsddb.c'],
+ depends = ['bsddb.h'],
+ library_dirs=dblib_dir,
+- runtime_library_dirs=dblib_dir,
++ runtime_library_dirs=rt_dblib_dir,
+ include_dirs=db_incs,
+ libraries=dblibs))
+ else:
+@@ -1292,10 +1293,11 @@ class PyBuildExt(build_ext):
+ break
+ elif cand == "bdb":
+ if db_incs is not None:
++ rt_dblib_dir = None if cross_compiling else dblib_dir
+ print "building dbm using bdb"
+ dbmext = Extension('dbm', ['dbmmodule.c'],
+ library_dirs=dblib_dir,
+- runtime_library_dirs=dblib_dir,
++ runtime_library_dirs=rt_dblib_dir,
+ include_dirs=db_incs,
+ define_macros=[
+ ('HAVE_BERKDB_H', None),
--- /dev/null
+diff --git a/setup.py b/setup.py
+index 7868b7b..544fa7e 100644
+--- a/setup.py
++++ b/setup.py
+@@ -452,8 +452,9 @@ class PyBuildExt(build_ext):
+ # directly since an inconsistently reproducible issue comes up where
+ # the environment variable is not set even though the value were passed
+ # into configure and stored in the Makefile (issue found on OS X 10.3).
++ rt_lib_dirs = [] if cross_compiling else self.compiler.runtime_library_dirs
+ for env_var, arg_name, dir_list in (
+- ('LDFLAGS', '-R', self.compiler.runtime_library_dirs),
++ ('LDFLAGS', '-R', rt_lib_dirs),
+ ('LDFLAGS', '-L', self.compiler.library_dirs),
+ ('CPPFLAGS', '-I', self.compiler.include_dirs)):
+ env_val = sysconfig.get_config_var(env_var)
--- /dev/null
+diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c
+index e478a57..eb297b4 100644
+--- a/Modules/_cursesmodule.c
++++ b/Modules/_cursesmodule.c
+@@ -117,7 +117,6 @@ char *PyCursesVersion = "2.2";
+ #defines many common symbols (such as "lines") which breaks the
+ curses module in other ways. So the code will just specify
+ explicit prototypes here. */
+-extern int setupterm(char *,int,int *);
+ #ifdef __sgi
+ #include <term.h>
+ #endif
--- /dev/null
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python3-bottle
+PKG_VERSION:=0.12.12
+PKG_RELEASE:=1
+
+PKG_LICENSE:=MIT
+PKG_MAINTAINER:=Luka Perkov <luka@openwrt.org>
+
+PKG_SOURCE:=bottle-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/f7/dd/8ceaa148eeed5371a83fa1fb5a54b01dfc95000799c649924ece23f9f0e1/
+PKG_MD5SUM:=3d4b6b0e22f67b421c273105b30d9a21fd147eaf0c1576172378ee034fbf5313
+PKG_BUILD_DIR:=$(BUILD_DIR)/bottle-$(PKG_VERSION)
+PKG_UNPACK=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python3-package.mk)
+
+define Package/python3-bottle
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=Bottle is a fast, simple and lightweight WSGI micro web-framework for Python
+ URL:=http://bottlepy.org
+ DEPENDS:=+python3
+endef
+
+define Package/python3-bottle/description
+ Bottle is a fast, simple and lightweight WSGI micro web-framework for Python.
+ It is distributed as a single file module and has no dependencies other than the
+ Python Standard Library.
+endef
+
+define Build/Configure
+endef
+
+define Build/Compile
+endef
+
+define Package/python3-bottle/install
+ $(INSTALL_DIR) $(1)$(PYTHON3_PKG_DIR)
+ $(CP) $(PKG_BUILD_DIR)/bottle.py $(1)$(PYTHON3_PKG_DIR)
+endef
+
+$(eval $(call BuildPackage,python3-bottle))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+# The file included below defines PYTHON_VERSION
+include ./files/python3-version.mk
+
+PYTHON_VERSION:=$(PYTHON3_VERSION)
+PYTHON_VERSION_MICRO:=$(PYTHON3_VERSION_MICRO)
+
+PKG_NAME:=python3
+PKG_RELEASE:=3
+PKG_VERSION:=$(PYTHON_VERSION).$(PYTHON_VERSION_MICRO)
+
+PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=https://www.python.org/ftp/python/$(PKG_VERSION)
+PKG_MD5SUM:=692b4fc3a2ba0d54d1495d4ead5b0b5c
+PKG_HASH:=a01810ddfcec216bcdb357a84bfaafdfaa0ca42bbdaa4cb7ff74f5a9961e4041
+
+PKG_LICENSE:=PSF
+PKG_LICENSE_FILES:=LICENSE Modules/_ctypes/libffi_msvc/LICENSE Modules/_ctypes/darwin/LICENSE Modules/_ctypes/libffi/LICENSE Modules/_ctypes/libffi_osx/LICENSE Tools/pybench/LICENSE
+
+# This file provides the necsessary host build variables
+include ./files/python3-host.mk
+
+# For Py3Package
+include ./files/python3-package.mk
+
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+HOST_BUILD_PARALLEL:=1
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/Python-$(PKG_VERSION)
+HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/Python-$(PKG_VERSION)
+
+PKG_BUILD_DEPENDS:=python3/host
+HOST_BUILD_DEPENDS:=bzip2/host expat/host libffi/host
+
+include $(INCLUDE_DIR)/host-build.mk
+include $(INCLUDE_DIR)/package.mk
+
+define Package/python3/Default
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=Python $(PYTHON_VERSION) programming language
+ URL:=https://www.python.org/
+ MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
+endef
+
+define Package/python3/Default/description
+ Python is a dynamic object-oriented programming language that can be used
+ for many kinds of software development. It offers strong support for
+ integration with other languages and tools, comes with extensive standard
+ libraries, and can be learned in a few days. Many Python programmers
+ report substantial productivity gains and feel the language encourages
+ the development of higher quality, more maintainable code.
+endef
+
+define Package/python3-base
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON_VERSION) interpreter
+ DEPENDS:=+libpthread +zlib
+endef
+
+define Package/python3-base/description
+ This package contains only the interpreter and the bare minimum
+ for the interpreter to start.
+endef
+
+define Package/python3-light
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON_VERSION) light installation
+ DEPENDS:=+python3-base +libffi +libbz2
+endef
+
+define Package/python3-light/description
+ This package is essentially the python3-base package plus
+ a few of the rarely used (and big) libraries stripped out
+ into separate packages.
+endef
+
+PYTHON3_LIB_FILES_DEL:=
+PYTHON3_PACKAGES:=
+PYTHON3_SO_SUFFIX:=cpython-$(PYTHON3_VERSION_MAJOR)$(PYTHON3_VERSION_MINOR).so
+PYTHON3_PACKAGES_DEPENDS:=
+define Py3BasePackage
+ PYTHON3_PACKAGES+=$(1)
+ ifeq ($(3),)
+ PYTHON3_PACKAGES_DEPENDS+=$(1)
+ endif
+ PYTHON3_LIB_FILES_DEL+=$(2)
+ define Py3Package/$(1)/filespec
+ ifneq ($(2),)
+ $(subst $(space),$(newline),$(foreach lib_file,$(2),+|$(lib_file)))
+ -|/usr/lib/python$(PYTHON_VERSION)/*/test
+ -|/usr/lib/python$(PYTHON_VERSION)/*/tests
+ endif
+ endef
+endef
+
+include ./files/python3-package-*.mk
+
+define Package/python3
+$(call Package/python3/Default)
+ DEPENDS:=+python3-light $(foreach package,$(PYTHON3_PACKAGES_DEPENDS),+$(package))
+endef
+
+define Package/python3/description
+ This package contains the (almost) full Python install.
+ It's python3-light + all other packages.
+endef
+
+MAKE_FLAGS+=\
+ CROSS_COMPILE=yes \
+ LD="$(TARGET_CC)" \
+ PGEN=pgen3
+
+EXTRA_CFLAGS+= \
+ -DNDEBUG -fno-inline
+EXTRA_LDFLAGS+= \
+ -L$(PKG_BUILD_DIR)
+
+ENABLE_IPV6:=
+ifeq ($(CONFIG_IPV6),y)
+ ENABLE_IPV6 += --enable-ipv6
+endif
+
+PYTHON_FOR_BUILD:= \
+ _PYTHON_PROJECT_BASE=$(PKG_BUILD_DIR) \
+ _PYTHON_HOST_PLATFORM=linux2 \
+ PYTHONPATH="$(PKG_BUILD_DIR)/Lib:$(PKG_BUILD_DIR)/build/lib.linux2-$(PYTHON_VERSION)" \
+ _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata \
+ $(HOST_PYTHON3_BIN)
+
+CONFIGURE_ARGS+= \
+ --sysconfdir=/etc \
+ --enable-shared \
+ --without-cxx-main \
+ --with-threads \
+ --with-system-ffi \
+ --with-ensurepip=no \
+ --without-pymalloc \
+ PYTHON_FOR_BUILD="$(PYTHON_FOR_BUILD)" \
+ $(ENABLE_IPV6) \
+ CONFIG_SITE="$(PKG_BUILD_DIR)/config.site" \
+ OPT="$(TARGET_CFLAGS)"
+
+define Build/Prepare
+ $(call Build/Prepare/Default)
+ $(CP) ./files/config.site $(PKG_BUILD_DIR)/config.site
+endef
+
+ifdef CONFIG_PACKAGE_python3-setuptools
+define Build/Compile/python3-setuptools
+ $(STAGING_DIR_HOSTPKG)/bin/pip3 install \
+ --ignore-installed \
+ --root=$(PKG_BUILD_DIR)/install-setuptools --prefix=. \
+ $(PKG_BUILD_DIR)/Lib/ensurepip/_bundled/setuptools-*.whl
+endef
+endif # CONFIG_PACKAGE_python3-setuptools
+
+ifdef CONFIG_PACKAGE_python3-pip
+define Build/Compile/python3-pip
+ $(STAGING_DIR_HOSTPKG)/bin/pip3 install \
+ --ignore-installed \
+ --root=$(PKG_BUILD_DIR)/install-pip --prefix=. \
+ $(PKG_BUILD_DIR)/Lib/ensurepip/_bundled/pip-*.whl
+endef
+endif # CONFIG_PACKAGE_python3-pip
+
+define Build/Compile
+ $(call Build/Compile/Default)
+ # Use host pip to install python-setuptools
+ $(call Build/Compile/python3-setuptools)
+ $(call Build/Compile/python3-pip)
+endef
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(STAGING_DIR)/mk/
+ $(INSTALL_DIR) $(1)/usr/include/ $(1)/usr/lib/
+ $(INSTALL_DIR) $(1)/usr/lib/python$(PYTHON_VERSION)/
+ $(INSTALL_DATA) \
+ ./files/python3-package.mk \
+ ./files/python3-host.mk \
+ ./files/python3-version.mk \
+ ./files/python3-package-install.sh \
+ $(STAGING_DIR)/mk/
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/include/python$(PYTHON_VERSION) \
+ $(1)/usr/include/
+ $(CP) \
+ $(HOST_PYTHON3_LIB_DIR) \
+ $(PKG_INSTALL_DIR)/usr/lib/libpython$(PYTHON_VERSION).so* \
+ $(1)/usr/lib/
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/lib/python$(PYTHON_VERSION)/config-$(PYTHON_VERSION) \
+ $(1)/usr/lib/python$(PYTHON_VERSION)/
+endef
+
+PYTHON3_BASE_LIB_FILES:= \
+ /usr/lib/python$(PYTHON_VERSION)/encodings \
+ /usr/lib/python$(PYTHON_VERSION)/_collections_abc.py \
+ /usr/lib/python$(PYTHON_VERSION)/_sitebuiltins.py \
+ /usr/lib/python$(PYTHON_VERSION)/_sysconfigdata.py \
+ /usr/lib/python$(PYTHON_VERSION)/_weakrefset.py \
+ /usr/lib/python$(PYTHON_VERSION)/abc.py \
+ /usr/lib/python$(PYTHON_VERSION)/codecs.py \
+ /usr/lib/python$(PYTHON_VERSION)/genericpath.py \
+ /usr/lib/python$(PYTHON_VERSION)/io.py \
+ /usr/lib/python$(PYTHON_VERSION)/os.py \
+ /usr/lib/python$(PYTHON_VERSION)/posixpath.py \
+ /usr/lib/python$(PYTHON_VERSION)/site.py \
+ /usr/lib/python$(PYTHON_VERSION)/sysconfig.py \
+ /usr/lib/python$(PYTHON_VERSION)/stat.py
+
+PYTHON3_LIB_FILES_DEL+=$(PYTHON3_BASE_LIB_FILES)
+
+define Py3Package/python3-base/filespec
++|/usr/bin/python$(PYTHON_VERSION)
+$(subst $(space),$(newline),$(foreach lib_file,$(PYTHON3_BASE_LIB_FILES),+|$(lib_file)))
+endef
+
+define Py3Package/python3-light/filespec
++|/usr/lib/python$(PYTHON_VERSION)
+-|/usr/lib/python$(PYTHON_VERSION)/distutils/cygwinccompiler.py
+-|/usr/lib/python$(PYTHON_VERSION)/distutils/command/wininst*
+-|/usr/lib/python$(PYTHON_VERSION)/ensurepip
+-|/usr/lib/python$(PYTHON_VERSION)/idlelib
+-|/usr/lib/python$(PYTHON_VERSION)/tkinter
+-|/usr/lib/python$(PYTHON_VERSION)/turtledemo
+-|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_test*.so
+-|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/readline*.so
+-|/usr/lib/python$(PYTHON_VERSION)/pdb.doc
+-|/usr/lib/python$(PYTHON_VERSION)/test
+-|/usr/lib/python$(PYTHON_VERSION)/webbrowser.py
+-|/usr/lib/python$(PYTHON_VERSION)/*/test
+-|/usr/lib/python$(PYTHON_VERSION)/*/tests
+-|/usr/lib/python$(PYTHON_VERSION)/_osx_support.py
+$(subst $(space),$(newline),$(foreach lib_file,$(PYTHON3_LIB_FILES_DEL),-|$(lib_file)))
+endef
+
+define Py3Package/python3-base/install
+ # Adding the lib-dynload folder (even just empty) suppresses 2 warnings when starting Python
+ $(INSTALL_DIR) $(1)/usr/lib/python$(PYTHON_VERSION)/lib-dynload/
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(LN) python$(PYTHON_VERSION) $(1)/usr/bin/python3
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpython$(PYTHON_VERSION).so* $(1)/usr/lib/
+endef
+
+define Py3Package/python3/filespec
+-|$(PYTHON3_PKG_DIR)
+endef
+
+HOST_LDFLAGS += \
+ $$$$(pkg-config --static --libs libcrypto libssl)
+
+HOST_CONFIGURE_ARGS+= \
+ --without-cxx-main \
+ --without-pymalloc \
+ --with-threads \
+ --prefix=$(HOST_PYTHON3_DIR) \
+ --exec-prefix=$(HOST_PYTHON3_DIR) \
+ --with-system-expat=$(STAGING_DIR_HOSTPKG) \
+ --with-system-ffi=no \
+ --with-ensurepip=install \
+ CONFIG_SITE=
+
+define Host/Compile
+ +$(HOST_MAKE_VARS) $(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) python Parser/pgen
+ +$(HOST_MAKE_VARS) $(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) sharedmods
+endef
+
+define Host/Install
+ $(MAKE) -C $(HOST_BUILD_DIR) install
+
+ $(INSTALL_DIR) $(HOST_PYTHON3_DIR)/bin/
+ $(INSTALL_BIN) $(HOST_BUILD_DIR)/Parser/pgen $(HOST_PYTHON3_DIR)/bin/pgen3
+ $(INSTALL_BIN) $(HOST_BUILD_DIR)/Programs/_freeze_importlib $(HOST_PYTHON3_DIR)/bin/_freeze_importlib
+endef
+
+$(eval $(call HostBuild))
+
+$(foreach package, $(PYTHON3_PACKAGES), \
+ $(eval $(call Py3Package,$(package))) \
+ $(eval $(call BuildPackage,$(package))) \
+ $(eval $(call BuildPackage,$(package)-src)) \
+)
+
+$(eval $(call Py3Package,python3-base))
+$(eval $(call Py3Package,python3-light))
+$(eval $(call Py3Package,python3))
+
+$(eval $(call BuildPackage,python3-base))
+$(eval $(call BuildPackage,python3-light))
+$(eval $(call BuildPackage,python3))
+
+$(eval $(call BuildPackage,python3-base-src))
+$(eval $(call BuildPackage,python3-light-src))
+$(eval $(call BuildPackage,python3-src))
--- /dev/null
+#! /bin/sh
+#
+# Copyright (C) 2007-2014 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+ac_cv_file__dev_ptmx=yes
+ac_cv_file__dev_ptc=no
+ac_cv_buggy_getaddrinfo=no
+
--- /dev/null
+#
+# Copyright (C) 2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+ifneq ($(__python3_host_mk_inc),1)
+__python3_host_mk_inc=1
+
+# For PYTHON3_VERSION
+$(call include_mk, python3-version.mk)
+
+HOST_PYTHON3_DIR:=$(STAGING_DIR_HOSTPKG)
+HOST_PYTHON3_INC_DIR:=$(HOST_PYTHON3_DIR)/include/python$(PYTHON3_VERSION)
+HOST_PYTHON3_LIB_DIR:=$(HOST_PYTHON3_DIR)/lib/python$(PYTHON3_VERSION)
+
+HOST_PYTHON3_PKG_DIR:=$(HOST_PYTHON3_DIR)/lib/python$(PYTHON3_VERSION)/site-packages
+
+HOST_PYTHON3_BIN:=$(HOST_PYTHON3_DIR)/bin/python$(PYTHON3_VERSION)
+
+HOST_PYTHON3PATH:=$(HOST_PYTHON3_LIB_DIR):$(HOST_PYTHON3_PKG_DIR)
+
+define HostPython3
+ if [ "$(strip $(3))" == "HOST" ]; then \
+ export PYTHONPATH="$(HOST_PYTHON3PATH)"; \
+ export PYTHONDONTWRITEBYTECODE=0; \
+ else \
+ export PYTHONPATH="$(PYTHON3PATH)"; \
+ export PYTHONDONTWRITEBYTECODE=1; \
+ export _python_sysroot="$(STAGING_DIR)"; \
+ export _python_prefix="/usr"; \
+ export _python_exec_prefix="/usr"; \
+ fi; \
+ export PYTHONOPTIMIZE=""; \
+ $(1) \
+ $(HOST_PYTHON3_BIN) $(2);
+endef
+
+# $(1) => commands to execute before running pythons script
+# $(2) => python script and its arguments
+# $(3) => additional variables
+define Build/Compile/HostPy3RunHost
+ $(call HostPython3, \
+ $(if $(1),$(1);) \
+ CC="$(HOSTCC)" \
+ CCSHARED="$(HOSTCC) $(HOST_FPIC)" \
+ CXX="$(HOSTCXX)" \
+ LD="$(HOSTCC)" \
+ LDSHARED="$(HOSTCC) -shared" \
+ CFLAGS="$(HOST_CFLAGS)" \
+ CPPFLAGS="$(HOST_CPPFLAGS) -I$(HOST_PYTHON3_INC_DIR)" \
+ LDFLAGS="$(HOST_LDFLAGS) -lpython$(PYTHON3_VERSION) -Wl$(comma)-rpath=$(STAGING_DIR_HOSTPKG)/lib" \
+ _PYTHON_HOST_PLATFORM=linux2 \
+ $(3) \
+ , \
+ $(2) \
+ , \
+ HOST \
+ )
+endef
+
+
+# $(1) => build subdir
+# $(2) => additional arguments to setup.py
+# $(3) => additional variables
+define Build/Compile/HostPy3Mod
+ $(call Build/Compile/HostPy3RunHost, \
+ cd $(HOST_BUILD_DIR)/$(strip $(1)), \
+ ./setup.py $(2), \
+ $(3))
+endef
+
+define HostPy3/Compile/Default
+ $(call Build/Compile/HostPy3Mod,,\
+ install --root="$(STAGING_DIR_HOSTPKG)" --prefix="" \
+ --single-version-externally-managed \
+ )
+endef
+
+endif # __python3_host_mk_inc
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-asyncio
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) asyncio module
+ DEPENDS:=+python3-light
+endef
+
+$(eval $(call Py3BasePackage,python3-asyncio, \
+ /usr/lib/python$(PYTHON3_VERSION)/asyncio \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-codecs
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) codecs + unicode support
+ DEPENDS:=+python3-light
+endef
+
+$(eval $(call Py3BasePackage,python3-codecs, \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_codecs_cn.$(PYTHON3_SO_SUFFIX) \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_codecs_hk.$(PYTHON3_SO_SUFFIX) \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_codecs_iso2022.$(PYTHON3_SO_SUFFIX) \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_codecs_jp.$(PYTHON3_SO_SUFFIX) \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_codecs_kr.$(PYTHON3_SO_SUFFIX) \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_codecs_tw.$(PYTHON3_SO_SUFFIX) \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/unicodedata.$(PYTHON3_SO_SUFFIX) \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-ctypes
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) ctypes module
+ DEPENDS:=+python3-light
+endef
+
+$(eval $(call Py3BasePackage,python3-ctypes, \
+ /usr/lib/python$(PYTHON3_VERSION)/ctypes \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_ctypes.$(PYTHON3_SO_SUFFIX) \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_ctypes_test.$(PYTHON3_SO_SUFFIX) \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-dbm
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) dbm module
+ DEPENDS:=+python3-light +libdb47
+endef
+
+$(eval $(call Py3BasePackage,python3-dbm, \
+ /usr/lib/python$(PYTHON3_VERSION)/dbm \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_dbm.$(PYTHON3_SO_SUFFIX) \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-decimal
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) decimal module
+ DEPENDS:=+python3-light
+endef
+
+$(eval $(call Py3BasePackage,python3-decimal, \
+ /usr/lib/python$(PYTHON3_VERSION)/decimal.py \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_decimal.$(PYTHON3_SO_SUFFIX) \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-dev
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) development files
+ DEPENDS:=+python3 +python3-lib2to3
+endef
+
+define Py3Package/python3-dev/install
+ $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/python$(PYTHON3_VERSION)-config $(1)/usr/bin
+ $(LN) python$(PYTHON3_VERSION)-config $(1)/usr/bin/python3-config
+ $(LN) python$(PYTHON_VERSION)/config-$(PYTHON_VERSION)/libpython$(PYTHON3_VERSION).a $(1)/usr/lib/
+endef
+
+$(eval $(call Py3BasePackage,python3-dev, \
+ /usr/lib/python$(PYTHON_VERSION)/config-$(PYTHON_VERSION) \
+ /usr/include/python$(PYTHON_VERSION) \
+ /usr/lib/pkgconfig \
+ , \
+ DO_NOT_ADD_TO_PACKAGE_DEPENDS \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-distutils
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) distutils module
+ DEPENDS:=+python3-light
+endef
+
+$(eval $(call Py3BasePackage,python3-distutils, \
+ /usr/lib/python$(PYTHON3_VERSION)/distutils \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-email
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) email module
+ DEPENDS:=+python3-light
+endef
+
+$(eval $(call Py3BasePackage,python3-email, \
+ /usr/lib/python$(PYTHON3_VERSION)/email \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-gdbm
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) gdbm module
+ DEPENDS:=+python3-light +libgdbm
+endef
+
+$(eval $(call Py3BasePackage,python3-gdbm, \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_gdbm.$(PYTHON3_SO_SUFFIX) \
+))
--- /dev/null
+#!/bin/sh
+
+process_filespec() {
+ local src_dir="$1"
+ local dst_dir="$2"
+ local filespec="$3"
+ echo "$filespec" | (
+ IFS='|'
+ while read fop fspec fperm; do
+ local fop=`echo "$fop" | tr -d ' \t\n'`
+ if [ "$fop" = "+" ]; then
+ if [ ! -e "${src_dir}${fspec}" ]; then
+ echo "File not found '${src_dir}${fspec}'"
+ exit 1
+ fi
+ dpath=`dirname "$fspec"`
+ if [ -z "$fperm" ]; then
+ dperm=`stat -c "%a" ${src_dir}${dpath}`
+ fi
+ mkdir -p -m$dperm ${dst_dir}${dpath}
+ echo "copying: '$fspec'"
+ cp -fpR ${src_dir}${fspec} ${dst_dir}${dpath}/
+ if [ -n "$fperm" ]; then
+ chmod -R $fperm ${dst_dir}${fspec}
+ fi
+ elif [ "$fop" = "-" ]; then
+ echo "removing: '$fspec'"
+ rm -fR ${dst_dir}${fspec}
+ elif [ "$fop" = "=" ]; then
+ echo "setting permissions: '$fperm' on '$fspec'"
+ chmod -R $fperm ${dst_dir}${fspec}
+ fi
+ done
+ )
+}
+
+src_dir="$1"
+dst_dir="$2"
+python="$3"
+mode="$4"
+filespec="$5"
+
+process_filespec "$src_dir" "$dst_dir" "$filespec" || {
+ echo "process filespec error-ed"
+ exit 1
+}
+
+if [ "$mode" == "sources" ] ; then
+ # Copy only python source files
+ find $dst_dir -not -name "*\.py" | xargs rm -f
+ # Delete empty folders (if the case)
+ find $dst_dir/usr -type d | xargs rmdir &> /dev/null
+ rmdir $dst_dir/usr &> /dev/null
+ exit 0
+fi
+
+# XXX [So that you won't goof as I did]
+# Note: Yes, I tried to use the -O & -OO flags here.
+# However the generated byte-codes were not portable.
+# So, we just stuck to un-optimized byte-codes,
+# which is still way better/faster than running
+# Python sources all the time.
+$python -m compileall -b -d '/' $dst_dir || {
+ echo "python -m compileall err-ed"
+ exit 1
+}
+# Delete source files and pyc [ un-optimized bytecode files ]
+# We may want to make this optimization thing configurable later, but not sure atm
+find $dst_dir -name "*\.py" | xargs rm -f
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-lib2to3
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) lib2to3 module
+ DEPENDS:=+python3
+endef
+
+$(eval $(call Py3BasePackage,python3-lib2to3, \
+ /usr/lib/python$(PYTHON3_VERSION)/lib2to3 \
+ , \
+ DO_NOT_ADD_TO_PACKAGE_DEPENDS \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-logging
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) logging module
+ DEPENDS:=+python3-light
+endef
+
+$(eval $(call Py3BasePackage,python3-logging, \
+ /usr/lib/python$(PYTHON3_VERSION)/logging \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-lzma
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) lzma module
+ DEPENDS:=+python3-light +liblzma
+endef
+
+$(eval $(call Py3BasePackage,python3-lzma, \
+ /usr/lib/python$(PYTHON3_VERSION)/lzma.py \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_lzma.$(PYTHON3_SO_SUFFIX) \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-multiprocessing
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) multiprocessing
+ DEPENDS:=+python3-light
+endef
+
+$(eval $(call Py3BasePackage,python3-multiprocessing, \
+ /usr/lib/python$(PYTHON3_VERSION)/multiprocessing \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_multiprocessing.$(PYTHON3_SO_SUFFIX) \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-ncurses
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) ncurses module
+ DEPENDS:=+python3-light +libncurses
+endef
+
+$(eval $(call Py3BasePackage,python3-ncurses, \
+ /usr/lib/python$(PYTHON3_VERSION)/curses \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_curses.$(PYTHON3_SO_SUFFIX) \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_curses_panel.$(PYTHON3_SO_SUFFIX) \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-openssl
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) SSL module
+ DEPENDS:=+python3-light +libopenssl
+endef
+
+$(eval $(call Py3BasePackage,python3-openssl, \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_hashlib.$(PYTHON3_SO_SUFFIX) \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_ssl.$(PYTHON3_SO_SUFFIX) \
+))
--- /dev/null
+#
+# Copyright (C) 2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-pip
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) pip module
+ VERSION:=$(PYTHON3_PIP_VERSION)
+ DEPENDS:=+python3 +python3-setuptools +python-pip-conf
+endef
+
+define Package/python3-pip/install
+ $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages
+ # Adjust shebang to proper python location on target
+ sed "1s/.*/#\!\/usr\/bin\/python$(PYTHON3_VERSION)/" -i $(PKG_BUILD_DIR)/install-pip/bin/*
+ $(CP) $(PKG_BUILD_DIR)/install-pip/bin/pip3* $(1)/usr/bin
+ $(CP) \
+ $(PKG_BUILD_DIR)/install-pip/lib/python$(PYTHON3_VERSION)/site-packages/pip \
+ $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/
+ find $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/ -name __pycache__ | xargs rm -rf
+endef
+
+$(eval $(call Py3BasePackage,python3-pip, \
+ , \
+ DO_NOT_ADD_TO_PACKAGE_DEPENDS \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-pydoc
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) pydoc module
+ DEPENDS:=+python3-light
+endef
+
+$(eval $(call Py3BasePackage,python3-pydoc, \
+ /usr/lib/python$(PYTHON3_VERSION)/doctest.py \
+ /usr/lib/python$(PYTHON3_VERSION)/pydoc.py \
+ /usr/lib/python$(PYTHON3_VERSION)/pydoc_data \
+))
--- /dev/null
+#
+# Copyright (C) 2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-setuptools
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) setuptools module
+ VERSION:=$(PYTHON3_SETUPTOOLS_VERSION)
+ DEPENDS:=+python3
+endef
+
+define Py3Package/python3-setuptools/install
+ $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages
+ # Adjust shebang to proper python location on target
+ sed "1s/.*/#\!\/usr\/bin\/python$(PYTHON3_VERSION)/" -i $(PKG_BUILD_DIR)/install-setuptools/bin/*
+ $(CP) $(PKG_BUILD_DIR)/install-setuptools/bin/easy_install-* $(1)/usr/bin
+ $(LN) easy_install-$(PYTHON3_VERSION) $(1)/usr/bin/easy_install-3
+ $(CP) \
+ $(PKG_BUILD_DIR)/install-setuptools/lib/python$(PYTHON3_VERSION)/site-packages/pkg_resources \
+ $(PKG_BUILD_DIR)/install-setuptools/lib/python$(PYTHON3_VERSION)/site-packages/setuptools \
+ $(PKG_BUILD_DIR)/install-setuptools/lib/python$(PYTHON3_VERSION)/site-packages/easy_install.py \
+ $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages
+ find $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/ -name __pycache__ | xargs rm -rf
+endef
+
+$(eval $(call Py3BasePackage,python3-setuptools, \
+ , \
+ DO_NOT_ADD_TO_PACKAGE_DEPENDS \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-sqlite3
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) sqlite3 module
+ DEPENDS:=+python3-light +libsqlite3
+endef
+
+$(eval $(call Py3BasePackage,python3-sqlite3, \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_sqlite3.$(PYTHON3_SO_SUFFIX) \
+ /usr/lib/python$(PYTHON3_VERSION)/sqlite3 \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-unittest
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) unittest module
+ DEPENDS:=+python3-light
+endef
+
+$(eval $(call Py3BasePackage,python3-unittest, \
+ /usr/lib/python$(PYTHON3_VERSION)/unittest \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-xml
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) xml libs
+ DEPENDS:=+python3-light
+endef
+
+$(eval $(call Py3BasePackage,python3-xml, \
+ /usr/lib/python$(PYTHON3_VERSION)/xml \
+ /usr/lib/python$(PYTHON3_VERSION)/xmlrpc \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_elementtree.$(PYTHON3_SO_SUFFIX) \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/pyexpat.$(PYTHON3_SO_SUFFIX) \
+))
--- /dev/null
+#
+# Copyright (C) 2007-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+$(call include_mk, python3-version.mk)
+
+PYTHON3_DIR:=$(STAGING_DIR)/usr
+PYTHON3_BIN_DIR:=$(PYTHON3_DIR)/bin
+PYTHON3_INC_DIR:=$(PYTHON3_DIR)/include/python$(PYTHON3_VERSION)
+PYTHON3_LIB_DIR:=$(PYTHON3_DIR)/lib/python$(PYTHON3_VERSION)
+
+PYTHON3_PKG_DIR:=/usr/lib/python$(PYTHON3_VERSION)/site-packages
+
+PYTHON3:=python$(PYTHON3_VERSION)
+
+PYTHON3PATH:=$(PYTHON3_LIB_DIR):$(STAGING_DIR)/$(PYTHON3_PKG_DIR):$(PKG_INSTALL_DIR)/$(PYTHON3_PKG_DIR)
+
+# These configure args are needed in detection of path to Python header files
+# using autotools.
+CONFIGURE_ARGS += \
+ _python_sysroot="$(STAGING_DIR)" \
+ _python_prefix="/usr" \
+ _python_exec_prefix="/usr"
+
+PKG_USE_MIPS16:=0
+# This is required in addition to PKG_USE_MIPS16:=0 because otherwise MIPS16
+# flags are inherited from the Python base package (via sysconfig module)
+ifdef CONFIG_USE_MIPS16
+ TARGET_CFLAGS += -mno-mips16 -mno-interlink-mips16
+endif
+
+define Py3Package
+
+ define Package/$(1)-src
+ $(call Package/$(1))
+ TITLE+= (sources)
+ DEPENDS:=$$$$(foreach dep,$$$$(filter +python3-%,$$$$(DEPENDS)),$$$$(dep)-src)
+ endef
+
+ define Package/$(1)-src/description
+ $(call Package/$(1)/description).
+ (Contains the Python3 sources for this package).
+ endef
+
+ # Add default PyPackage filespec none defined
+ ifndef Py3Package/$(1)/filespec
+ define Py3Package/$(1)/filespec
+ +|$(PYTHON3_PKG_DIR)
+ endef
+ endif
+
+ ifndef Py3Package/$(1)/install
+ define Py3Package/$(1)/install
+ if [ -d $(PKG_INSTALL_DIR)/usr/bin ]; then \
+ $(INSTALL_DIR) $$(1)/usr/bin ; \
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $$(1)/usr/bin/ ; \
+ fi
+ endef
+ endif
+
+ ifndef Package/$(1)/install
+ $(call shexport,Py3Package/$(1)/filespec)
+
+ define Package/$(1)/install
+ $(call Py3Package/$(1)/install,$$(1))
+ find $(PKG_INSTALL_DIR) -name "*\.exe" | xargs rm -f
+ if [ -e files/python3-package-install.sh ] ; then \
+ $(SHELL) files/python3-package-install.sh \
+ "$(PKG_INSTALL_DIR)" "$$(1)" \
+ "$(HOST_PYTHON3_BIN)" "$$(2)" \
+ "$$$$$$$$$$(call shvar,Py3Package/$(1)/filespec)" ; \
+ elif [ -e $(STAGING_DIR)/mk/python3-package-install.sh ] ; then \
+ $(SHELL) $(STAGING_DIR)/mk/python3-package-install.sh \
+ "$(PKG_INSTALL_DIR)" "$$(1)" \
+ "$(HOST_PYTHON3_BIN)" "$$(2)" \
+ "$$$$$$$$$$(call shvar,Py3Package/$(1)/filespec)" ; \
+ else \
+ echo "No 'python3-package-install.sh' script found" ; \
+ exit 1 ; \
+ fi
+ endef
+
+ define Package/$(1)-src/install
+ $$(call Package/$(1)/install,$$(1),sources)
+ endef
+ endif # Package/$(1)/install
+endef
+
+$(call include_mk, python3-host.mk)
+
+# $(1) => commands to execute before running pythons script
+# $(2) => python script and its arguments
+# $(3) => additional variables
+define Build/Compile/HostPy3RunTarget
+ $(call HostPython3, \
+ $(if $(1),$(1);) \
+ CC="$(TARGET_CC)" \
+ CCSHARED="$(TARGET_CC) $(FPIC)" \
+ CXX="$(TARGET_CXX)" \
+ LD="$(TARGET_CC)" \
+ LDSHARED="$(TARGET_CC) -shared" \
+ CFLAGS="$(TARGET_CFLAGS)" \
+ CPPFLAGS="$(TARGET_CPPFLAGS) -I$(PYTHON3_INC_DIR)" \
+ LDFLAGS="$(TARGET_LDFLAGS) -lpython$(PYTHON3_VERSION)" \
+ _PYTHON_HOST_PLATFORM=linux2 \
+ __PYVENV_LAUNCHER__="/usr/bin/$(PYTHON3)" \
+ $(3) \
+ , \
+ $(2) \
+ )
+endef
+
+# $(1) => build subdir
+# $(2) => additional arguments to setup.py
+# $(3) => additional variables
+define Build/Compile/Py3Mod
+ $(INSTALL_DIR) $(PKG_INSTALL_DIR)/$(PYTHON3_PKG_DIR)
+ $(call Build/Compile/HostPy3RunTarget, \
+ cd $(PKG_BUILD_DIR)/$(strip $(1)), \
+ ./setup.py $(2), \
+ $(3))
+ find $(PKG_INSTALL_DIR) -name "*\.exe" | xargs rm -f
+endef
+
+define Py3Build/Compile/Default
+ $(call Build/Compile/Py3Mod,, \
+ install --prefix="/usr" --root="$(PKG_INSTALL_DIR)" \
+ --single-version-externally-managed \
+ )
+endef
+
+ifeq ($(BUILD_VARIANT),python3)
+define Build/Compile
+ $(call Py3Build/Compile/Default)
+endef
+endif # python3
--- /dev/null
+#
+# Copyright (C) 2007-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+# Note: keep in sync with setuptools & pip
+PYTHON3_VERSION_MAJOR:=3
+PYTHON3_VERSION_MINOR:=6
+PYTHON3_VERSION_MICRO:=1
+
+PYTHON3_VERSION:=$(PYTHON3_VERSION_MAJOR).$(PYTHON3_VERSION_MINOR)
+
+PYTHON3_SETUPTOOLS_VERSION:=28.8.0
+PYTHON3_PIP_VERSION:=9.0.1
+
--- /dev/null
+From 6eeab87bc852481e599325549c854b701bf2e39f Mon Sep 17 00:00:00 2001
+From: Alexandru Ardelean <aa@ocedo.com>
+Date: Thu, 25 Sep 2014 18:18:29 +0300
+Subject: [PATCH] enable zlib
+
+---
+ Modules/Setup.dist | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Modules/Setup.dist b/Modules/Setup.dist
+index 01fb85f..01ac492 100644
+--- a/Modules/Setup.dist
++++ b/Modules/Setup.dist
+@@ -358,7 +358,7 @@ _symtable symtablemodule.c
+ # Andrew Kuchling's zlib module.
+ # This require zlib 1.1.3 (or later).
+ # See http://www.gzip.org/zlib/
+-#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
++zlib zlibmodule.c -lz
+
+ # Interface to the Expat XML parser
+ #
+--
+1.8.4.5
+
--- /dev/null
+diff --git a/Makefile.pre.in b/Makefile.pre.in
+index ce2c0aa..b0c8322 100644
+--- a/Makefile.pre.in
++++ b/Makefile.pre.in
+@@ -1256,41 +1256,6 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
+ done; \
+ done
+ $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
+- if test -d $(DESTDIR)$(LIBDEST)/distutils/tests; then \
+- $(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \
+- $(DESTDIR)$(LIBDEST)/distutils/tests ; \
+- fi
+- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
+- -d $(LIBDEST) -f \
+- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
+- $(DESTDIR)$(LIBDEST)
+- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
+- -d $(LIBDEST) -f \
+- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
+- $(DESTDIR)$(LIBDEST)
+- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- $(PYTHON_FOR_BUILD) -Wi -OO $(DESTDIR)$(LIBDEST)/compileall.py \
+- -d $(LIBDEST) -f \
+- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
+- $(DESTDIR)$(LIBDEST)
+- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
+- -d $(LIBDEST)/site-packages -f \
+- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
+- -d $(LIBDEST)/site-packages -f \
+- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- $(PYTHON_FOR_BUILD) -Wi -OO $(DESTDIR)$(LIBDEST)/compileall.py \
+- -d $(LIBDEST)/site-packages -f \
+- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
+- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt
+
+ # Create the PLATDIR source directory, if one wasn't distributed..
+ $(srcdir)/Lib/$(PLATDIR):
--- /dev/null
+diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
+index a17adf7..415b3f6 100644
+--- a/Python/pylifecycle.c
++++ b/Python/pylifecycle.c
+@@ -86,7 +86,7 @@ int Py_BytesWarningFlag; /* Warn on str(bytes) and str(buffer) */
+ int Py_UseClassExceptionsFlag = 1; /* Needed by bltinmodule.c: deprecated */
+ int Py_FrozenFlag; /* Needed by getpath.c */
+ int Py_IgnoreEnvironmentFlag; /* e.g. PYTHONPATH, PYTHONHOME */
+-int Py_DontWriteBytecodeFlag; /* Suppress writing bytecode files (*.py[co]) */
++int Py_DontWriteBytecodeFlag = 1; /* Suppress writing bytecode files (*.py[co]) */
+ int Py_NoUserSiteDirectory = 0; /* for -s and site.py */
+ int Py_UnbufferedStdioFlag = 0; /* Unbuffered binary std{in,out,err} */
+ int Py_HashRandomizationFlag = 0; /* for -R and PYTHONHASHSEED */
+@@ -309,7 +309,7 @@ _Py_InitializeEx_Private(int install_sigs, int install_importlib)
+ if ((p = Py_GETENV("PYTHONOPTIMIZE")) && *p != '\0')
+ Py_OptimizeFlag = add_flag(Py_OptimizeFlag, p);
+ if ((p = Py_GETENV("PYTHONDONTWRITEBYTECODE")) && *p != '\0')
+- Py_DontWriteBytecodeFlag = add_flag(Py_DontWriteBytecodeFlag, p);
++ Py_DontWriteBytecodeFlag = atoi(p);
+ /* The variable is only tested for existence here; _PyRandom_Init will
+ check its value further. */
+ if ((p = Py_GETENV("PYTHONHASHSEED")) && *p != '\0')
--- /dev/null
+diff --git a/setup.py b/setup.py
+index 7868b7b..9ae0ef2 100644
+--- a/setup.py
++++ b/setup.py
+@@ -444,7 +444,6 @@ class PyBuildExt(build_ext):
+ add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
+ if cross_compiling:
+ self.add_gcc_paths()
+- self.add_multiarch_paths()
+
+ # Add paths specified in the environment variables LDFLAGS and
+ # CPPFLAGS for header and library files.
--- /dev/null
+--- a/Lib/distutils/command/build_scripts.py
++++ b/Lib/distutils/command/build_scripts.py
+@@ -89,6 +89,7 @@ class build_scripts (Command):
+ adjust = 1
+ post_interp = match.group(1) or ''
+
++ adjust = 0
+ if adjust:
+ log.info("copying and adjusting %s -> %s", script,
+ self.build_dir)
--- /dev/null
+diff --git a/Lib/imp.py b/Lib/imp.py
+index 781ff23..beeac70 100644
+--- a/Lib/imp.py
++++ b/Lib/imp.py
+@@ -203,8 +203,9 @@ def load_package(name, path):
+ extensions = (machinery.SOURCE_SUFFIXES[:] +
+ machinery.BYTECODE_SUFFIXES[:])
+ for extension in extensions:
+- path = os.path.join(path, '__init__'+extension)
+- if os.path.exists(path):
++ init_path = os.path.join(path, '__init__'+extension)
++ if os.path.exists(init_path):
++ path = init_path
+ break
+ else:
+ raise ValueError('{!r} is not a package'.format(path))
--- /dev/null
+diff --git a/setup.py b/setup.py
+index 7868b7b..544fa7e 100644
+--- a/setup.py
++++ b/setup.py
+@@ -452,8 +452,9 @@ class PyBuildExt(build_ext):
+ # directly since an inconsistently reproducible issue comes up where
+ # the environment variable is not set even though the value were passed
+ # into configure and stored in the Makefile (issue found on OS X 10.3).
++ rt_lib_dirs = [] if cross_compiling else self.compiler.runtime_library_dirs
+ for env_var, arg_name, dir_list in (
+- ('LDFLAGS', '-R', self.compiler.runtime_library_dirs),
++ ('LDFLAGS', '-R', rt_lib_dirs),
+ ('LDFLAGS', '-L', self.compiler.library_dirs),
+ ('CPPFLAGS', '-I', self.compiler.include_dirs)):
+ env_val = sysconfig.get_config_var(env_var)
--- /dev/null
+diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c
+index 3bf2ca7..c156964 100644
+--- a/Modules/_cursesmodule.c
++++ b/Modules/_cursesmodule.c
+@@ -116,7 +116,6 @@ char *PyCursesVersion = "2.2";
+ #defines many common symbols (such as "lines") which breaks the
+ curses module in other ways. So the code will just specify
+ explicit prototypes here. */
+-extern int setupterm(char *,int,int *);
+ #ifdef __sgi
+ #include <term.h>
+ #endif
--- /dev/null
+diff --git a/configure b/configure
+index 274af7e..85bbf0e 100755
+--- a/configure
++++ b/configure
+@@ -10555,7 +10555,7 @@ for ac_func in alarm accept4 setitimer getitimer bind_textdomain_codeset chown \
+ sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy symlinkat sync \
+ sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
+ truncate uname unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4 \
+- wcscoll wcsftime wcsxfrm wmemcmp writev _getpty
++ wcscoll wcsxfrm wmemcmp writev _getpty
+ do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
--- /dev/null
+diff --git a/configure b/configure
+index e823a08..84c525f 100755
+--- a/configure
++++ b/configure
+@@ -14365,7 +14365,7 @@ $as_echo_n "checking ABIFLAGS... " >&6; }
+ $as_echo "$ABIFLAGS" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking SOABI" >&5
+ $as_echo_n "checking SOABI... " >&6; }
+-SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}${PLATFORM_TRIPLET:+-$PLATFORM_TRIPLET}
++SOABI='cpython-'`echo $VERSION | tr -d .`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SOABI" >&5
+ $as_echo "$SOABI" >&6; }
+
+diff --git a/configure.ac b/configure.ac
+index 56a73df..1855af5 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -4314,7 +4314,7 @@ AC_SUBST(SOABI)
+ AC_MSG_CHECKING(ABIFLAGS)
+ AC_MSG_RESULT($ABIFLAGS)
+ AC_MSG_CHECKING(SOABI)
+-SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}${PLATFORM_TRIPLET:+-$PLATFORM_TRIPLET}
++SOABI='cpython-'`echo $VERSION | tr -d .`
+ AC_MSG_RESULT($SOABI)
+
+ AC_SUBST(EXT_SUFFIX)
--- /dev/null
+diff --git a/setup.py b/setup.py
+index da67731..928e0de 100644
+--- a/setup.py
++++ b/setup.py
+@@ -293,6 +293,7 @@ class PyBuildExt(build_ext):
+ print("Failed to build these modules:")
+ print_three_column(failed)
+ print()
++ if cross_compiling: sys.exit(1)
+
+ if self.failed_on_import:
+ failed = self.failed_on_import[:]
--- /dev/null
+diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
+index 8bf1a70..c2708c3 100644
+--- a/Lib/distutils/sysconfig.py
++++ b/Lib/distutils/sysconfig.py
+@@ -424,6 +424,7 @@ def _init_posix():
+ platform=sys.platform,
+ multiarch=getattr(sys.implementation, '_multiarch', ''),
+ ))
++ name = '_sysconfigdata'
+ _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0)
+ build_time_vars = _temp.build_time_vars
+ global _config_vars
+diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
+index 9314e71..4861261 100644
+--- a/Lib/sysconfig.py
++++ b/Lib/sysconfig.py
+@@ -343,6 +343,7 @@ def get_makefile_filename():
+
+
+ def _get_sysconfigdata_name():
++ return '_sysconfigdata'
+ return os.environ.get('_PYTHON_SYSCONFIGDATA_NAME',
+ '_sysconfigdata_{abi}_{platform}_{multiarch}'.format(
+ abi=sys.abiflags,
+diff --git a/Makefile.pre.in b/Makefile.pre.in
+index cd7d33d..ad6572f 100644
+--- a/Makefile.pre.in
++++ b/Makefile.pre.in
+@@ -1301,7 +1301,7 @@ libinstall: build_all $(srcdir)/Modules/xxmodule.c
+ esac; \
+ done; \
+ done
+- $(INSTALL_DATA) `cat pybuilddir.txt`/_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH).py \
++ $(INSTALL_DATA) `cat pybuilddir.txt`/_sysconfigdata*.py \
+ $(DESTDIR)$(LIBDEST); \
+ $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
+ if test -d $(DESTDIR)$(LIBDEST)/distutils/tests; then \
+@@ -1436,7 +1436,7 @@ sharedinstall: sharedmods
+ --install-scripts=$(BINDIR) \
+ --install-platlib=$(DESTSHARED) \
+ --root=$(DESTDIR)/
+- -rm $(DESTDIR)$(DESTSHARED)/_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH).py
++ -rm $(DESTDIR)$(DESTSHARED)/_sysconfigdata*.py
+ -rm -r $(DESTDIR)$(DESTSHARED)/__pycache__
+
+ # Here are a couple of targets for MacOSX again, to install a full
+diff --git a/configure b/configure
+index cf95b27..8203fbb 100755
+--- a/configure
++++ b/configure
+@@ -14895,7 +14895,7 @@ LDVERSION='$(VERSION)$(ABIFLAGS)'
+ $as_echo "$LDVERSION" >&6; }
+
+
+-if test x$PLATFORM_TRIPLET = x; then
++if true ; then
+ LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}"
+ else
+ LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}"
+diff --git a/configure.ac b/configure.ac
+index 1d63813..25f25ed 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -4600,7 +4600,7 @@ AC_MSG_RESULT($LDVERSION)
+
+ dnl define LIBPL after ABIFLAGS and LDVERSION is defined.
+ AC_SUBST(PY_ENABLE_SHARED)
+-if test x$PLATFORM_TRIPLET = x; then
++if true ; then
+ LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}"
+ else
+ LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}"
--- /dev/null
+#
+# Copyright (C) 2007-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=pytz
+PKG_VERSION:=2016.6.1
+PKG_RELEASE:=1
+PKG_LICENSE:=MIT
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/5d/8e/6635d8f3f9f48c03bb925fab543383089858271f9cfd1216b83247e8df94/
+PKG_MD5SUM:=b6c28a3b968bc1d8badfb61b93874e03
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/pytz
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ TITLE:=World timezone definitions, modern and historical
+ URL:=https://sourceforge.net/projects/pytz/
+ DEPENDS:=+python
+endef
+
+define Package/pytz/description
+ World timezone definitions, modern and historical
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Package/pytz/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call BuildPackage,pytz))
--- /dev/null
+#
+# Copyright (C) 2007-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=rcssmin
+PKG_VERSION:=1.0.6
+PKG_RELEASE=1
+PKG_LICENSE:=Apache-2.0
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/ndparker/rcssmin.git
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_VERSION:=4764e3bc47ca8d44be3198892e73c51d8a0a9970
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/rcssmin
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=Fast CSS minifier for Python
+ MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ URL:=http://opensource.perlig.de/rcssmin/
+ DEPENDS:=+python
+endef
+
+define Package/rcssmin/description
+ Fast CSS minifier for Python
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+define Package/rcssmin/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call BuildPackage,rcssmin))
--- /dev/null
+#
+# Copyright (C) 2007-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=simplejson
+PKG_VERSION:=3.10.0
+PKG_RELEASE:=1
+PKG_LICENSE:=MIT
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/40/ad/52c1f3a562df3b210e8f165e1aa243a178c454ead65476a39fa3ce1847b6/
+PKG_MD5SUM:=426a9631d22851a7a970b1a677368b15
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/simplejson
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ TITLE:=Simple, fast, extensible JSON encoder/decoder for Python
+ URL:=http://simplejson.readthedocs.org/
+ DEPENDS:=+python
+endef
+
+define Package/simplejson/description
+ Simple, fast, extensible JSON encoder/decoder for Python
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Package/simplejson/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call BuildPackage,simplejson))
--- /dev/null
+#
+# Copyright (C) 2006-2011, 2015-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=twisted
+PKG_VERSION:=16.4.1
+PKG_RELEASE:=1
+
+PKG_SOURCE:=Twisted-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=https://pypi.python.org/packages/6b/23/8dbe86fc83215015e221fbd861a545c6ec5c9e9cd7514af114d1f64084ab \
+ http://twistedmatrix.com/Releases/Twisted/16.4
+PKG_MD5SUM:=c6d09bdd681f538369659111f079c29d
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/Twisted-$(PKG_VERSION)
+PKG_BUILD_DEPENDS:=python python-setuptools USE_MUSL:librpc
+
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/twisted
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=Python networking engine
+ URL:=http://twistedmatrix.com/
+ DEPENDS:=+python-light +zope-interface
+endef
+
+define Package/twisted/description
+ Twisted is a networking engine written in Python, supporting numerous
+ protocols. It contains a web server, numerous chat clients, chat servers,
+ mail servers, and more.
+endef
+
+define PyPackage/twisted/filespec
++|/usr/bin
+-|/usr/bin/tkconch
++|$(PYTHON_PKG_DIR)
+-|$(PYTHON_PKG_DIR)/twisted/conch/scripts/tkconch.py
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,, \
+ install --prefix="/usr" --root="$(PKG_INSTALL_DIR)" --no-compile, \
+ )
+endef
+
+$(eval $(call PyPackage,twisted))
+$(eval $(call BuildPackage,twisted))
--- /dev/null
+diff --git a/twisted/python/twisted-completion.zsh b/twisted/python/twisted-completion.zsh
+index 4d97aa5..9a8d4d8 100644
+--- a/twisted/python/twisted-completion.zsh
++++ b/twisted/python/twisted-completion.zsh
+@@ -1,4 +1,4 @@
+-#compdef twistd trial conch cftp ckeygen pyhtmlizer tkconch
++#compdef twistd trial conch cftp ckeygen pyhtmlizer
+ #
+ # This is the ZSH completion file for Twisted commands. It calls the current
+ # command-line with the special "--_shell-completion" option which is handled
--- /dev/null
+diff --git a/setup.py b/setup.py
+index e21ef70..a4d9ee8 100755
+--- a/setup.py
++++ b/setup.py
+@@ -55,13 +55,14 @@ def main(args):
+ setup_args = STATIC_PACKAGE_METADATA.copy()
+
+ setup_args.update(dict(
+- packages=setuptools.find_packages(),
++ packages=setuptools.find_packages(exclude=["*.test", "*.test.*"]),
+ install_requires=requirements,
+ conditionalExtensions=getExtensions(),
+ entry_points={
+ 'console_scripts': getConsoleScripts()
+ },
+ include_package_data=True,
++ exclude_package_data={'':['test/*']},
+ zip_safe=False,
+ extras_require=_EXTRAS_REQUIRE,
+ ))
+diff --git a/twisted/python/dist.py b/twisted/python/dist.py
+index dfff9dc..a05b716 100644
+--- a/twisted/python/dist.py
++++ b/twisted/python/dist.py
+@@ -191,11 +191,11 @@ def getExtensions():
+ Get the C extensions used for Twisted.
+ """
+ extensions = [
+- ConditionalExtension(
+- "twisted.test.raiser",
+- ["twisted/test/raiser.c"],
+- condition=lambda _: _isCPython
+- ),
++ #ConditionalExtension(
++ # "twisted.test.raiser",
++ # ["twisted/test/raiser.c"],
++ # condition=lambda _: _isCPython
++ #),
+ ConditionalExtension(
+ "twisted.internet.iocpreactor.iocpsupport",
+ ["twisted/internet/iocpreactor/iocpsupport/iocpsupport.c",
--- /dev/null
+#
+# Copyright (C) 2006-2011, 2015-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=zope.interface
+PKG_VERSION:=4.3.2
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/38/1b/d55c39f2cf442bd9fb2c59760ed058c84b57d25c680819c25f3aff741e1f
+PKG_MD5SUM:=5f7e15a5bcdfa3c6c0e93ffe45caf87c
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+PKG_LICENSE:=ZPL-2.1
+PKG_LICENSE_FILES:=LICENSE.txt
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/zope-interface
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=Zope interface
+ URL:=https://github.com/zopefoundation/zope.interface
+ DEPENDS:=+python-light
+endef
+
+define Package/zope-interface/description
+This package provides an implementation of "object interfaces" for
+Python. Interfaces are a mechanism for labeling objects as conforming to
+a given API or contract. So, this package can be considered as
+implementation of the Design By Contract methodology support in Python.
+endef
+
+define PyPackage/zope-interface/filespec
++|$(PYTHON_PKG_DIR)
+-|$(PYTHON_PKG_DIR)/zope/interface/common/tests
+-|$(PYTHON_PKG_DIR)/zope/interface/tests
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,, \
+ install --prefix="/usr" --root="$(PKG_INSTALL_DIR)" --no-compile, \
+ )
+endef
+
+$(eval $(call PyPackage,zope-interface))
+$(eval $(call BuildPackage,zope-interface))
+++ /dev/null
-#
-# Copyright (C) 2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=python3-bottle
-PKG_VERSION:=0.12.12
-PKG_RELEASE:=1
-
-PKG_LICENSE:=MIT
-PKG_MAINTAINER:=Luka Perkov <luka@openwrt.org>
-
-PKG_SOURCE:=bottle-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/f7/dd/8ceaa148eeed5371a83fa1fb5a54b01dfc95000799c649924ece23f9f0e1/
-PKG_MD5SUM:=3d4b6b0e22f67b421c273105b30d9a21fd147eaf0c1576172378ee034fbf5313
-PKG_BUILD_DIR:=$(BUILD_DIR)/bottle-$(PKG_VERSION)
-PKG_UNPACK=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python3-package.mk)
-
-define Package/python3-bottle
- SECTION:=lang
- CATEGORY:=Languages
- SUBMENU:=Python
- TITLE:=Bottle is a fast, simple and lightweight WSGI micro web-framework for Python
- URL:=http://bottlepy.org
- DEPENDS:=+python3
-endef
-
-define Package/python3-bottle/description
- Bottle is a fast, simple and lightweight WSGI micro web-framework for Python.
- It is distributed as a single file module and has no dependencies other than the
- Python Standard Library.
-endef
-
-define Build/Configure
-endef
-
-define Build/Compile
-endef
-
-define Package/python3-bottle/install
- $(INSTALL_DIR) $(1)$(PYTHON3_PKG_DIR)
- $(CP) $(PKG_BUILD_DIR)/bottle.py $(1)$(PYTHON3_PKG_DIR)
-endef
-
-$(eval $(call BuildPackage,python3-bottle))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-# The file included below defines PYTHON_VERSION
-include ./files/python3-version.mk
-
-PYTHON_VERSION:=$(PYTHON3_VERSION)
-PYTHON_VERSION_MICRO:=$(PYTHON3_VERSION_MICRO)
-
-PKG_NAME:=python3
-PKG_RELEASE:=1
-PKG_VERSION:=$(PYTHON_VERSION).$(PYTHON_VERSION_MICRO)
-
-PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=https://www.python.org/ftp/python/$(PKG_VERSION)
-PKG_MD5SUM:=692b4fc3a2ba0d54d1495d4ead5b0b5c
-PKG_HASH:=a01810ddfcec216bcdb357a84bfaafdfaa0ca42bbdaa4cb7ff74f5a9961e4041
-
-PKG_LICENSE:=PSF
-PKG_LICENSE_FILES:=LICENSE Modules/_ctypes/libffi_msvc/LICENSE Modules/_ctypes/darwin/LICENSE Modules/_ctypes/libffi/LICENSE Modules/_ctypes/libffi_osx/LICENSE Tools/pybench/LICENSE
-
-# This file provides the necsessary host build variables
-include ./files/python3-host.mk
-
-# For Py3Package
-include ./files/python3-package.mk
-
-PKG_INSTALL:=1
-PKG_BUILD_PARALLEL:=1
-HOST_BUILD_PARALLEL:=1
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/Python-$(PKG_VERSION)
-HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/Python-$(PKG_VERSION)
-
-PKG_BUILD_DEPENDS:=python3/host
-HOST_BUILD_DEPENDS:=bzip2/host expat/host libffi/host
-
-include $(INCLUDE_DIR)/host-build.mk
-include $(INCLUDE_DIR)/package.mk
-
-define Package/python3/Default
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- TITLE:=Python $(PYTHON_VERSION) programming language
- URL:=https://www.python.org/
- MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
-endef
-
-define Package/python3/Default/description
- Python is a dynamic object-oriented programming language that can be used
- for many kinds of software development. It offers strong support for
- integration with other languages and tools, comes with extensive standard
- libraries, and can be learned in a few days. Many Python programmers
- report substantial productivity gains and feel the language encourages
- the development of higher quality, more maintainable code.
-endef
-
-define Package/python3-base
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON_VERSION) interpreter
- DEPENDS:=+libpthread +zlib
-endef
-
-define Package/python3-base/description
- This package contains only the interpreter and the bare minimum
- for the interpreter to start.
-endef
-
-define Package/python3-light
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON_VERSION) light installation
- DEPENDS:=+python3-base +libffi +libbz2
-endef
-
-define Package/python3-light/description
- This package is essentially the python3-base package plus
- a few of the rarely used (and big) libraries stripped out
- into separate packages.
-endef
-
-PYTHON3_LIB_FILES_DEL:=
-PYTHON3_PACKAGES:=
-PYTHON3_SO_SUFFIX:=cpython-$(PYTHON3_VERSION_MAJOR)$(PYTHON3_VERSION_MINOR).so
-PYTHON3_PACKAGES_DEPENDS:=
-define Py3BasePackage
- PYTHON3_PACKAGES+=$(1)
- ifeq ($(3),)
- PYTHON3_PACKAGES_DEPENDS+=$(1)
- endif
- PYTHON3_LIB_FILES_DEL+=$(2)
- define Py3Package/$(1)/filespec
- ifneq ($(2),)
- $(subst $(space),$(newline),$(foreach lib_file,$(2),+|$(lib_file)))
- -|/usr/lib/python$(PYTHON_VERSION)/*/test
- -|/usr/lib/python$(PYTHON_VERSION)/*/tests
- endif
- endef
-endef
-
-include ./files/python3-package-*.mk
-
-define Package/python3
-$(call Package/python3/Default)
- DEPENDS:=+python3-light $(foreach package,$(PYTHON3_PACKAGES_DEPENDS),+$(package))
-endef
-
-define Package/python3/description
- This package contains the (almost) full Python install.
- It's python3-light + all other packages.
-endef
-
-MAKE_FLAGS+=\
- CROSS_COMPILE=yes \
- LD="$(TARGET_CC)" \
- PGEN=pgen3
-
-EXTRA_CFLAGS+= \
- -DNDEBUG -fno-inline
-EXTRA_LDFLAGS+= \
- -L$(PKG_BUILD_DIR)
-
-ENABLE_IPV6:=
-ifeq ($(CONFIG_IPV6),y)
- ENABLE_IPV6 += --enable-ipv6
-endif
-
-PYTHON_FOR_BUILD:= \
- _PYTHON_PROJECT_BASE=$(PKG_BUILD_DIR) \
- _PYTHON_HOST_PLATFORM=linux2 \
- PYTHONPATH="$(PKG_BUILD_DIR)/Lib:$(PKG_BUILD_DIR)/build/lib.linux2-$(PYTHON_VERSION)" \
- _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata \
- $(HOST_PYTHON3_BIN)
-
-CONFIGURE_ARGS+= \
- --sysconfdir=/etc \
- --enable-shared \
- --without-cxx-main \
- --with-threads \
- --with-system-ffi \
- --with-ensurepip=no \
- --without-pymalloc \
- PYTHON_FOR_BUILD="$(PYTHON_FOR_BUILD)" \
- $(ENABLE_IPV6) \
- CONFIG_SITE="$(PKG_BUILD_DIR)/config.site" \
- OPT="$(TARGET_CFLAGS)"
-
-define Build/Prepare
- $(call Build/Prepare/Default)
- $(CP) ./files/config.site $(PKG_BUILD_DIR)/config.site
-endef
-
-ifdef CONFIG_PACKAGE_python3-setuptools
-define Build/Compile/python3-setuptools
- $(STAGING_DIR_HOSTPKG)/bin/pip3 install \
- --ignore-installed \
- --root=$(PKG_BUILD_DIR)/install-setuptools --prefix=. \
- $(PKG_BUILD_DIR)/Lib/ensurepip/_bundled/setuptools-*.whl
-endef
-endif # CONFIG_PACKAGE_python3-setuptools
-
-ifdef CONFIG_PACKAGE_python3-pip
-define Build/Compile/python3-pip
- $(STAGING_DIR_HOSTPKG)/bin/pip3 install \
- --ignore-installed \
- --root=$(PKG_BUILD_DIR)/install-pip --prefix=. \
- $(PKG_BUILD_DIR)/Lib/ensurepip/_bundled/pip-*.whl
-endef
-endif # CONFIG_PACKAGE_python3-pip
-
-define Build/Compile
- $(call Build/Compile/Default)
- # Use host pip to install python-setuptools
- $(call Build/Compile/python3-setuptools)
- $(call Build/Compile/python3-pip)
-endef
-
-define Build/InstallDev
- $(INSTALL_DIR) $(STAGING_DIR)/mk/
- $(INSTALL_DIR) $(1)/usr/include/ $(1)/usr/lib/
- $(INSTALL_DIR) $(1)/usr/lib/python$(PYTHON_VERSION)/
- $(INSTALL_DATA) \
- ./files/python3-package.mk \
- ./files/python3-host.mk \
- ./files/python3-version.mk \
- ./files/python3-package-install.sh \
- $(STAGING_DIR)/mk/
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/include/python$(PYTHON_VERSION) \
- $(1)/usr/include/
- $(CP) \
- $(HOST_PYTHON3_LIB_DIR) \
- $(PKG_INSTALL_DIR)/usr/lib/libpython$(PYTHON_VERSION).so* \
- $(1)/usr/lib/
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/lib/python$(PYTHON_VERSION)/config-$(PYTHON_VERSION) \
- $(1)/usr/lib/python$(PYTHON_VERSION)/
-endef
-
-PYTHON3_BASE_LIB_FILES:= \
- /usr/lib/python$(PYTHON_VERSION)/encodings \
- /usr/lib/python$(PYTHON_VERSION)/_collections_abc.py \
- /usr/lib/python$(PYTHON_VERSION)/_sitebuiltins.py \
- /usr/lib/python$(PYTHON_VERSION)/_sysconfigdata.py \
- /usr/lib/python$(PYTHON_VERSION)/_weakrefset.py \
- /usr/lib/python$(PYTHON_VERSION)/abc.py \
- /usr/lib/python$(PYTHON_VERSION)/codecs.py \
- /usr/lib/python$(PYTHON_VERSION)/genericpath.py \
- /usr/lib/python$(PYTHON_VERSION)/io.py \
- /usr/lib/python$(PYTHON_VERSION)/os.py \
- /usr/lib/python$(PYTHON_VERSION)/posixpath.py \
- /usr/lib/python$(PYTHON_VERSION)/site.py \
- /usr/lib/python$(PYTHON_VERSION)/sysconfig.py \
- /usr/lib/python$(PYTHON_VERSION)/stat.py
-
-PYTHON3_LIB_FILES_DEL+=$(PYTHON3_BASE_LIB_FILES)
-
-define Py3Package/python3-base/filespec
-+|/usr/bin/python$(PYTHON_VERSION)
-$(subst $(space),$(newline),$(foreach lib_file,$(PYTHON3_BASE_LIB_FILES),+|$(lib_file)))
-endef
-
-define Py3Package/python3-light/filespec
-+|/usr/lib/python$(PYTHON_VERSION)
--|/usr/lib/python$(PYTHON_VERSION)/distutils/cygwinccompiler.py
--|/usr/lib/python$(PYTHON_VERSION)/distutils/command/wininst*
--|/usr/lib/python$(PYTHON_VERSION)/ensurepip
--|/usr/lib/python$(PYTHON_VERSION)/idlelib
--|/usr/lib/python$(PYTHON_VERSION)/tkinter
--|/usr/lib/python$(PYTHON_VERSION)/turtledemo
--|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_test*.so
--|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/readline*.so
--|/usr/lib/python$(PYTHON_VERSION)/pdb.doc
--|/usr/lib/python$(PYTHON_VERSION)/test
--|/usr/lib/python$(PYTHON_VERSION)/webbrowser.py
--|/usr/lib/python$(PYTHON_VERSION)/*/test
--|/usr/lib/python$(PYTHON_VERSION)/*/tests
--|/usr/lib/python$(PYTHON_VERSION)/_osx_support.py
-$(subst $(space),$(newline),$(foreach lib_file,$(PYTHON3_LIB_FILES_DEL),-|$(lib_file)))
-endef
-
-define Py3Package/python3-base/install
- # Adding the lib-dynload folder (even just empty) suppresses 2 warnings when starting Python
- $(INSTALL_DIR) $(1)/usr/lib/python$(PYTHON_VERSION)/lib-dynload/
- $(INSTALL_DIR) $(1)/usr/bin
- $(LN) python$(PYTHON_VERSION) $(1)/usr/bin/python3
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpython$(PYTHON_VERSION).so* $(1)/usr/lib/
-endef
-
-define Py3Package/python3/filespec
--|$(PYTHON3_PKG_DIR)
-endef
-
-HOST_LDFLAGS += \
- $$$$(pkg-config --static --libs libcrypto libssl)
-
-HOST_CONFIGURE_ARGS+= \
- --without-cxx-main \
- --without-pymalloc \
- --with-threads \
- --prefix=$(HOST_PYTHON3_DIR) \
- --exec-prefix=$(HOST_PYTHON3_DIR) \
- --with-system-expat=$(STAGING_DIR_HOSTPKG) \
- --with-system-ffi=no \
- --with-ensurepip=install \
- CONFIG_SITE=
-
-define Host/Compile
- +$(HOST_MAKE_VARS) $(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) python Parser/pgen
- +$(HOST_MAKE_VARS) $(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) sharedmods
-endef
-
-define Host/Install
- $(MAKE) -C $(HOST_BUILD_DIR) install
-
- $(INSTALL_DIR) $(HOST_PYTHON3_DIR)/bin/
- $(INSTALL_BIN) $(HOST_BUILD_DIR)/Parser/pgen $(HOST_PYTHON3_DIR)/bin/pgen3
- $(INSTALL_BIN) $(HOST_BUILD_DIR)/Programs/_freeze_importlib $(HOST_PYTHON3_DIR)/bin/_freeze_importlib
-endef
-
-$(eval $(call HostBuild))
-
-$(foreach package, $(PYTHON3_PACKAGES), \
- $(eval $(call Py3Package,$(package))) \
- $(eval $(call BuildPackage,$(package))) \
- $(eval $(call BuildPackage,$(package)-src)) \
-)
-
-$(eval $(call Py3Package,python3-base))
-$(eval $(call Py3Package,python3-light))
-$(eval $(call Py3Package,python3))
-
-$(eval $(call BuildPackage,python3-base))
-$(eval $(call BuildPackage,python3-light))
-$(eval $(call BuildPackage,python3))
-
-$(eval $(call BuildPackage,python3-base-src))
-$(eval $(call BuildPackage,python3-light-src))
-$(eval $(call BuildPackage,python3-src))
+++ /dev/null
-#! /bin/sh
-#
-# Copyright (C) 2007-2014 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-ac_cv_file__dev_ptmx=yes
-ac_cv_file__dev_ptc=no
-ac_cv_buggy_getaddrinfo=no
-
+++ /dev/null
-#
-# Copyright (C) 2017 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-ifneq ($(__python3_host_mk_inc),1)
-__python3_host_mk_inc=1
-
-# For PYTHON3_VERSION
-$(call include_mk, python3-version.mk)
-
-HOST_PYTHON3_DIR:=$(STAGING_DIR_HOSTPKG)
-HOST_PYTHON3_INC_DIR:=$(HOST_PYTHON3_DIR)/include/python$(PYTHON3_VERSION)
-HOST_PYTHON3_LIB_DIR:=$(HOST_PYTHON3_DIR)/lib/python$(PYTHON3_VERSION)
-
-HOST_PYTHON3_PKG_DIR:=$(HOST_PYTHON3_DIR)/lib/python$(PYTHON3_VERSION)/site-packages
-
-HOST_PYTHON3_BIN:=$(HOST_PYTHON3_DIR)/bin/python$(PYTHON3_VERSION)
-
-HOST_PYTHON3PATH:=$(HOST_PYTHON3_LIB_DIR):$(HOST_PYTHON3_PKG_DIR)
-
-define HostPython3
- if [ "$(strip $(3))" == "HOST" ]; then \
- export PYTHONPATH="$(HOST_PYTHON3PATH)"; \
- export PYTHONDONTWRITEBYTECODE=0; \
- else \
- export PYTHONPATH="$(PYTHON3PATH)"; \
- export PYTHONDONTWRITEBYTECODE=1; \
- export _python_sysroot="$(STAGING_DIR)"; \
- export _python_prefix="/usr"; \
- export _python_exec_prefix="/usr"; \
- fi; \
- export PYTHONOPTIMIZE=""; \
- $(1) \
- $(HOST_PYTHON3_BIN) $(2);
-endef
-
-# $(1) => commands to execute before running pythons script
-# $(2) => python script and its arguments
-# $(3) => additional variables
-define Build/Compile/HostPy3RunHost
- $(call HostPython3, \
- $(if $(1),$(1);) \
- CC="$(HOSTCC)" \
- CCSHARED="$(HOSTCC) $(HOST_FPIC)" \
- CXX="$(HOSTCXX)" \
- LD="$(HOSTCC)" \
- LDSHARED="$(HOSTCC) -shared" \
- CFLAGS="$(HOST_CFLAGS)" \
- CPPFLAGS="$(HOST_CPPFLAGS) -I$(HOST_PYTHON3_INC_DIR)" \
- LDFLAGS="$(HOST_LDFLAGS) -lpython$(PYTHON3_VERSION) -Wl$(comma)-rpath=$(STAGING_DIR_HOSTPKG)/lib" \
- _PYTHON_HOST_PLATFORM=linux2 \
- $(3) \
- , \
- $(2) \
- , \
- HOST \
- )
-endef
-
-
-# $(1) => build subdir
-# $(2) => additional arguments to setup.py
-# $(3) => additional variables
-define Build/Compile/HostPy3Mod
- $(call Build/Compile/HostPy3RunHost, \
- cd $(HOST_BUILD_DIR)/$(strip $(1)), \
- ./setup.py $(2), \
- $(3))
-endef
-
-define HostPy3/Compile/Default
- $(call Build/Compile/HostPy3Mod,,\
- install --root="$(STAGING_DIR_HOSTPKG)" --prefix="" \
- --single-version-externally-managed \
- )
-endef
-
-endif # __python3_host_mk_inc
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-asyncio
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) asyncio module
- DEPENDS:=+python3-light
-endef
-
-$(eval $(call Py3BasePackage,python3-asyncio, \
- /usr/lib/python$(PYTHON3_VERSION)/asyncio \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-codecs
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) codecs + unicode support
- DEPENDS:=+python3-light
-endef
-
-$(eval $(call Py3BasePackage,python3-codecs, \
- /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_codecs_cn.$(PYTHON3_SO_SUFFIX) \
- /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_codecs_hk.$(PYTHON3_SO_SUFFIX) \
- /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_codecs_iso2022.$(PYTHON3_SO_SUFFIX) \
- /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_codecs_jp.$(PYTHON3_SO_SUFFIX) \
- /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_codecs_kr.$(PYTHON3_SO_SUFFIX) \
- /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_codecs_tw.$(PYTHON3_SO_SUFFIX) \
- /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/unicodedata.$(PYTHON3_SO_SUFFIX) \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-ctypes
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) ctypes module
- DEPENDS:=+python3-light
-endef
-
-$(eval $(call Py3BasePackage,python3-ctypes, \
- /usr/lib/python$(PYTHON3_VERSION)/ctypes \
- /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_ctypes.$(PYTHON3_SO_SUFFIX) \
- /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_ctypes_test.$(PYTHON3_SO_SUFFIX) \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-dbm
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) dbm module
- DEPENDS:=+python3-light +libdb47
-endef
-
-$(eval $(call Py3BasePackage,python3-dbm, \
- /usr/lib/python$(PYTHON3_VERSION)/dbm \
- /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_dbm.$(PYTHON3_SO_SUFFIX) \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-decimal
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) decimal module
- DEPENDS:=+python3-light
-endef
-
-$(eval $(call Py3BasePackage,python3-decimal, \
- /usr/lib/python$(PYTHON3_VERSION)/decimal.py \
- /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_decimal.$(PYTHON3_SO_SUFFIX) \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-dev
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) development files
- DEPENDS:=+python3 +python3-lib2to3
-endef
-
-define Py3Package/python3-dev/install
- $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/python$(PYTHON3_VERSION)-config $(1)/usr/bin
- $(LN) python$(PYTHON3_VERSION)-config $(1)/usr/bin/python3-config
- $(LN) python$(PYTHON_VERSION)/config-$(PYTHON_VERSION)/libpython$(PYTHON3_VERSION).a $(1)/usr/lib/
-endef
-
-$(eval $(call Py3BasePackage,python3-dev, \
- /usr/lib/python$(PYTHON_VERSION)/config-$(PYTHON_VERSION) \
- /usr/include/python$(PYTHON_VERSION) \
- /usr/lib/pkgconfig \
- , \
- DO_NOT_ADD_TO_PACKAGE_DEPENDS \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-distutils
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) distutils module
- DEPENDS:=+python3-light
-endef
-
-$(eval $(call Py3BasePackage,python3-distutils, \
- /usr/lib/python$(PYTHON3_VERSION)/distutils \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-email
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) email module
- DEPENDS:=+python3-light
-endef
-
-$(eval $(call Py3BasePackage,python3-email, \
- /usr/lib/python$(PYTHON3_VERSION)/email \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-gdbm
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) gdbm module
- DEPENDS:=+python3-light +libgdbm
-endef
-
-$(eval $(call Py3BasePackage,python3-gdbm, \
- /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_gdbm.$(PYTHON3_SO_SUFFIX) \
-))
+++ /dev/null
-#!/bin/sh
-
-process_filespec() {
- local src_dir="$1"
- local dst_dir="$2"
- local filespec="$3"
- echo "$filespec" | (
- IFS='|'
- while read fop fspec fperm; do
- local fop=`echo "$fop" | tr -d ' \t\n'`
- if [ "$fop" = "+" ]; then
- if [ ! -e "${src_dir}${fspec}" ]; then
- echo "File not found '${src_dir}${fspec}'"
- exit 1
- fi
- dpath=`dirname "$fspec"`
- if [ -z "$fperm" ]; then
- dperm=`stat -c "%a" ${src_dir}${dpath}`
- fi
- mkdir -p -m$dperm ${dst_dir}${dpath}
- echo "copying: '$fspec'"
- cp -fpR ${src_dir}${fspec} ${dst_dir}${dpath}/
- if [ -n "$fperm" ]; then
- chmod -R $fperm ${dst_dir}${fspec}
- fi
- elif [ "$fop" = "-" ]; then
- echo "removing: '$fspec'"
- rm -fR ${dst_dir}${fspec}
- elif [ "$fop" = "=" ]; then
- echo "setting permissions: '$fperm' on '$fspec'"
- chmod -R $fperm ${dst_dir}${fspec}
- fi
- done
- )
-}
-
-src_dir="$1"
-dst_dir="$2"
-python="$3"
-mode="$4"
-filespec="$5"
-
-process_filespec "$src_dir" "$dst_dir" "$filespec" || {
- echo "process filespec error-ed"
- exit 1
-}
-
-if [ "$mode" == "sources" ] ; then
- # Copy only python source files
- find $dst_dir -not -name "*\.py" | xargs rm -f
- # Delete empty folders (if the case)
- find $dst_dir/usr -type d | xargs rmdir &> /dev/null
- rmdir $dst_dir/usr &> /dev/null
- exit 0
-fi
-
-# XXX [So that you won't goof as I did]
-# Note: Yes, I tried to use the -O & -OO flags here.
-# However the generated byte-codes were not portable.
-# So, we just stuck to un-optimized byte-codes,
-# which is still way better/faster than running
-# Python sources all the time.
-$python -m compileall -b -d '/' $dst_dir || {
- echo "python -m compileall err-ed"
- exit 1
-}
-# Delete source files and pyc [ un-optimized bytecode files ]
-# We may want to make this optimization thing configurable later, but not sure atm
-find $dst_dir -name "*\.py" | xargs rm -f
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-lib2to3
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) lib2to3 module
- DEPENDS:=+python3
-endef
-
-$(eval $(call Py3BasePackage,python3-lib2to3, \
- /usr/lib/python$(PYTHON3_VERSION)/lib2to3 \
- , \
- DO_NOT_ADD_TO_PACKAGE_DEPENDS \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-logging
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) logging module
- DEPENDS:=+python3-light
-endef
-
-$(eval $(call Py3BasePackage,python3-logging, \
- /usr/lib/python$(PYTHON3_VERSION)/logging \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-lzma
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) lzma module
- DEPENDS:=+python3-light +liblzma
-endef
-
-$(eval $(call Py3BasePackage,python3-lzma, \
- /usr/lib/python$(PYTHON3_VERSION)/lzma.py \
- /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_lzma.$(PYTHON3_SO_SUFFIX) \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-multiprocessing
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) multiprocessing
- DEPENDS:=+python3-light
-endef
-
-$(eval $(call Py3BasePackage,python3-multiprocessing, \
- /usr/lib/python$(PYTHON3_VERSION)/multiprocessing \
- /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_multiprocessing.$(PYTHON3_SO_SUFFIX) \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-ncurses
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) ncurses module
- DEPENDS:=+python3-light +libncurses
-endef
-
-$(eval $(call Py3BasePackage,python3-ncurses, \
- /usr/lib/python$(PYTHON3_VERSION)/curses \
- /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_curses.$(PYTHON3_SO_SUFFIX) \
- /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_curses_panel.$(PYTHON3_SO_SUFFIX) \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-openssl
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) SSL module
- DEPENDS:=+python3-light +libopenssl
-endef
-
-$(eval $(call Py3BasePackage,python3-openssl, \
- /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_hashlib.$(PYTHON3_SO_SUFFIX) \
- /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_ssl.$(PYTHON3_SO_SUFFIX) \
-))
+++ /dev/null
-#
-# Copyright (C) 2017 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-pip
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) pip module
- VERSION:=$(PYTHON3_PIP_VERSION)
- DEPENDS:=+python3 +python3-setuptools +python-pip-conf
-endef
-
-define Py3Package/python3-pip/install
- $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages
- # Adjust shebang to proper python location on target
- sed "1s/.*/#\!\/usr\/bin\/python$(PYTHON3_VERSION)/" -i $(PKG_BUILD_DIR)/install-pip/bin/*
- $(CP) $(PKG_BUILD_DIR)/install-pip/bin/pip3* $(1)/usr/bin
- $(CP) \
- $(PKG_BUILD_DIR)/install-pip/lib/python$(PYTHON3_VERSION)/site-packages/pip \
- $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/
-endef
-
-$(eval $(call Py3BasePackage,python3-pip, \
- , \
- DO_NOT_ADD_TO_PACKAGE_DEPENDS \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-pydoc
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) pydoc module
- DEPENDS:=+python3-light
-endef
-
-$(eval $(call Py3BasePackage,python3-pydoc, \
- /usr/lib/python$(PYTHON3_VERSION)/doctest.py \
- /usr/lib/python$(PYTHON3_VERSION)/pydoc.py \
- /usr/lib/python$(PYTHON3_VERSION)/pydoc_data \
-))
+++ /dev/null
-#
-# Copyright (C) 2017 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-setuptools
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) setuptools module
- VERSION:=$(PYTHON3_SETUPTOOLS_VERSION)
- DEPENDS:=+python3
-endef
-
-define Py3Package/python3-setuptools/install
- $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages
- # Adjust shebang to proper python location on target
- sed "1s/.*/#\!\/usr\/bin\/python$(PYTHON3_VERSION)/" -i $(PKG_BUILD_DIR)/install-setuptools/bin/*
- $(CP) $(PKG_BUILD_DIR)/install-setuptools/bin/easy_install-* $(1)/usr/bin
- $(LN) easy_install-$(PYTHON3_VERSION) $(1)/usr/bin/easy_install-3
- $(CP) \
- $(PKG_BUILD_DIR)/install-setuptools/lib/python$(PYTHON3_VERSION)/site-packages/pkg_resources \
- $(PKG_BUILD_DIR)/install-setuptools/lib/python$(PYTHON3_VERSION)/site-packages/setuptools \
- $(PKG_BUILD_DIR)/install-setuptools/lib/python$(PYTHON3_VERSION)/site-packages/easy_install.py \
- $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages
-endef
-
-$(eval $(call Py3BasePackage,python3-setuptools, \
- , \
- DO_NOT_ADD_TO_PACKAGE_DEPENDS \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-sqlite3
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) sqlite3 module
- DEPENDS:=+python3-light +libsqlite3
-endef
-
-$(eval $(call Py3BasePackage,python3-sqlite3, \
- /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_sqlite3.$(PYTHON3_SO_SUFFIX) \
- /usr/lib/python$(PYTHON3_VERSION)/sqlite3 \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-unittest
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) unittest module
- DEPENDS:=+python3-light
-endef
-
-$(eval $(call Py3BasePackage,python3-unittest, \
- /usr/lib/python$(PYTHON3_VERSION)/unittest \
-))
+++ /dev/null
-#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-xml
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) xml libs
- DEPENDS:=+python3-light
-endef
-
-$(eval $(call Py3BasePackage,python3-xml, \
- /usr/lib/python$(PYTHON3_VERSION)/xml \
- /usr/lib/python$(PYTHON3_VERSION)/xmlrpc \
- /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_elementtree.$(PYTHON3_SO_SUFFIX) \
- /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/pyexpat.$(PYTHON3_SO_SUFFIX) \
-))
+++ /dev/null
-#
-# Copyright (C) 2007-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-$(call include_mk, python3-version.mk)
-
-PYTHON3_DIR:=$(STAGING_DIR)/usr
-PYTHON3_BIN_DIR:=$(PYTHON3_DIR)/bin
-PYTHON3_INC_DIR:=$(PYTHON3_DIR)/include/python$(PYTHON3_VERSION)
-PYTHON3_LIB_DIR:=$(PYTHON3_DIR)/lib/python$(PYTHON3_VERSION)
-
-PYTHON3_PKG_DIR:=/usr/lib/python$(PYTHON3_VERSION)/site-packages
-
-PYTHON3:=python$(PYTHON3_VERSION)
-
-PYTHON3PATH:=$(PYTHON3_LIB_DIR):$(STAGING_DIR)/$(PYTHON3_PKG_DIR):$(PKG_INSTALL_DIR)/$(PYTHON3_PKG_DIR)
-
-# These configure args are needed in detection of path to Python header files
-# using autotools.
-CONFIGURE_ARGS += \
- _python_sysroot="$(STAGING_DIR)" \
- _python_prefix="/usr" \
- _python_exec_prefix="/usr"
-
-PKG_USE_MIPS16:=0
-# This is required in addition to PKG_USE_MIPS16:=0 because otherwise MIPS16
-# flags are inherited from the Python base package (via sysconfig module)
-ifdef CONFIG_USE_MIPS16
- TARGET_CFLAGS += -mno-mips16 -mno-interlink-mips16
-endif
-
-define Py3Package
-
- define Package/$(1)-src
- $(call Package/$(1))
- TITLE+= (sources)
- DEPENDS:=$$$$(foreach dep,$$$$(filter +python3-%,$$$$(DEPENDS)),$$$$(dep)-src)
- endef
-
- define Package/$(1)-src/description
- $(call Package/$(1)/description).
- (Contains the Python3 sources for this package).
- endef
-
- # Add default PyPackage filespec none defined
- ifndef Py3Package/$(1)/filespec
- define Py3Package/$(1)/filespec
- +|$(PYTHON3_PKG_DIR)
- endef
- endif
-
- ifndef Py3Package/$(1)/install
- define Py3Package/$(1)/install
- if [ -d $(PKG_INSTALL_DIR)/usr/bin ]; then \
- $(INSTALL_DIR) $$(1)/usr/bin ; \
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $$(1)/usr/bin/ ; \
- fi
- endef
- endif
-
- $(call shexport,Py3Package/$(1)/filespec)
-
- define Package/$(1)/install
- $(call Py3Package/$(1)/install,$$(1))
- find $(PKG_INSTALL_DIR) -name "*\.exe" | xargs rm -f
- if [ -e files/python3-package-install.sh ] ; then \
- $(SHELL) files/python3-package-install.sh \
- "$(PKG_INSTALL_DIR)" "$$(1)" \
- "$(HOST_PYTHON3_BIN)" "$$(2)" \
- "$$$$$$$$$$(call shvar,Py3Package/$(1)/filespec)" ; \
- elif [ -e $(STAGING_DIR)/mk/python3-package-install.sh ] ; then \
- $(SHELL) $(STAGING_DIR)/mk/python3-package-install.sh \
- "$(PKG_INSTALL_DIR)" "$$(1)" \
- "$(HOST_PYTHON3_BIN)" "$$(2)" \
- "$$$$$$$$$$(call shvar,Py3Package/$(1)/filespec)" ; \
- else \
- echo "No 'python3-package-install.sh' script found" ; \
- exit 1 ; \
- fi
- endef
-
- define Package/$(1)-src/install
- $$(call Package/$(1)/install,$$(1),sources)
- endef
-endef
-
-$(call include_mk, python3-host.mk)
-
-# $(1) => commands to execute before running pythons script
-# $(2) => python script and its arguments
-# $(3) => additional variables
-define Build/Compile/HostPy3RunTarget
- $(call HostPython3, \
- $(if $(1),$(1);) \
- CC="$(TARGET_CC)" \
- CCSHARED="$(TARGET_CC) $(FPIC)" \
- CXX="$(TARGET_CXX)" \
- LD="$(TARGET_CC)" \
- LDSHARED="$(TARGET_CC) -shared" \
- CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="$(TARGET_CPPFLAGS) -I$(PYTHON3_INC_DIR)" \
- LDFLAGS="$(TARGET_LDFLAGS) -lpython$(PYTHON3_VERSION)" \
- _PYTHON_HOST_PLATFORM=linux2 \
- __PYVENV_LAUNCHER__="/usr/bin/$(PYTHON3)" \
- $(3) \
- , \
- $(2) \
- )
-endef
-
-# $(1) => build subdir
-# $(2) => additional arguments to setup.py
-# $(3) => additional variables
-define Build/Compile/Py3Mod
- $(INSTALL_DIR) $(PKG_INSTALL_DIR)/$(PYTHON3_PKG_DIR)
- $(call Build/Compile/HostPy3RunTarget, \
- cd $(PKG_BUILD_DIR)/$(strip $(1)), \
- ./setup.py $(2), \
- $(3))
- find $(PKG_INSTALL_DIR) -name "*\.exe" | xargs rm -f
-endef
-
-define Py3Build/Compile/Default
- $(call Build/Compile/Py3Mod,, \
- install --prefix="/usr" --root="$(PKG_INSTALL_DIR)" \
- --single-version-externally-managed \
- )
-endef
-
-ifeq ($(BUILD_VARIANT),python3)
-define Build/Compile
- $(call Py3Build/Compile/Default)
-endef
-endif # python3
+++ /dev/null
-#
-# Copyright (C) 2007-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-# Note: keep in sync with setuptools & pip
-PYTHON3_VERSION_MAJOR:=3
-PYTHON3_VERSION_MINOR:=6
-PYTHON3_VERSION_MICRO:=1
-
-PYTHON3_VERSION:=$(PYTHON3_VERSION_MAJOR).$(PYTHON3_VERSION_MINOR)
-
-PYTHON3_SETUPTOOLS_VERSION:=28.8.0
-PYTHON3_PIP_VERSION:=9.0.1
-
+++ /dev/null
-From 6eeab87bc852481e599325549c854b701bf2e39f Mon Sep 17 00:00:00 2001
-From: Alexandru Ardelean <aa@ocedo.com>
-Date: Thu, 25 Sep 2014 18:18:29 +0300
-Subject: [PATCH] enable zlib
-
----
- Modules/Setup.dist | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Modules/Setup.dist b/Modules/Setup.dist
-index 01fb85f..01ac492 100644
---- a/Modules/Setup.dist
-+++ b/Modules/Setup.dist
-@@ -358,7 +358,7 @@ _symtable symtablemodule.c
- # Andrew Kuchling's zlib module.
- # This require zlib 1.1.3 (or later).
- # See http://www.gzip.org/zlib/
--#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
-+zlib zlibmodule.c -lz
-
- # Interface to the Expat XML parser
- #
---
-1.8.4.5
-
+++ /dev/null
-diff --git a/Makefile.pre.in b/Makefile.pre.in
-index ce2c0aa..b0c8322 100644
---- a/Makefile.pre.in
-+++ b/Makefile.pre.in
-@@ -1256,41 +1256,6 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
- done; \
- done
- $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
-- if test -d $(DESTDIR)$(LIBDEST)/distutils/tests; then \
-- $(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \
-- $(DESTDIR)$(LIBDEST)/distutils/tests ; \
-- fi
-- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
-- -d $(LIBDEST) -f \
-- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
-- $(DESTDIR)$(LIBDEST)
-- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
-- -d $(LIBDEST) -f \
-- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
-- $(DESTDIR)$(LIBDEST)
-- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -Wi -OO $(DESTDIR)$(LIBDEST)/compileall.py \
-- -d $(LIBDEST) -f \
-- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
-- $(DESTDIR)$(LIBDEST)
-- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
-- -d $(LIBDEST)/site-packages -f \
-- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
-- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
-- -d $(LIBDEST)/site-packages -f \
-- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
-- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -Wi -OO $(DESTDIR)$(LIBDEST)/compileall.py \
-- -d $(LIBDEST)/site-packages -f \
-- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
-- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
-- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt
-
- # Create the PLATDIR source directory, if one wasn't distributed..
- $(srcdir)/Lib/$(PLATDIR):
+++ /dev/null
-diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
-index a17adf7..415b3f6 100644
---- a/Python/pylifecycle.c
-+++ b/Python/pylifecycle.c
-@@ -86,7 +86,7 @@ int Py_BytesWarningFlag; /* Warn on str(bytes) and str(buffer) */
- int Py_UseClassExceptionsFlag = 1; /* Needed by bltinmodule.c: deprecated */
- int Py_FrozenFlag; /* Needed by getpath.c */
- int Py_IgnoreEnvironmentFlag; /* e.g. PYTHONPATH, PYTHONHOME */
--int Py_DontWriteBytecodeFlag; /* Suppress writing bytecode files (*.py[co]) */
-+int Py_DontWriteBytecodeFlag = 1; /* Suppress writing bytecode files (*.py[co]) */
- int Py_NoUserSiteDirectory = 0; /* for -s and site.py */
- int Py_UnbufferedStdioFlag = 0; /* Unbuffered binary std{in,out,err} */
- int Py_HashRandomizationFlag = 0; /* for -R and PYTHONHASHSEED */
-@@ -309,7 +309,7 @@ _Py_InitializeEx_Private(int install_sigs, int install_importlib)
- if ((p = Py_GETENV("PYTHONOPTIMIZE")) && *p != '\0')
- Py_OptimizeFlag = add_flag(Py_OptimizeFlag, p);
- if ((p = Py_GETENV("PYTHONDONTWRITEBYTECODE")) && *p != '\0')
-- Py_DontWriteBytecodeFlag = add_flag(Py_DontWriteBytecodeFlag, p);
-+ Py_DontWriteBytecodeFlag = atoi(p);
- /* The variable is only tested for existence here; _PyRandom_Init will
- check its value further. */
- if ((p = Py_GETENV("PYTHONHASHSEED")) && *p != '\0')
+++ /dev/null
-diff --git a/setup.py b/setup.py
-index 7868b7b..9ae0ef2 100644
---- a/setup.py
-+++ b/setup.py
-@@ -444,7 +444,6 @@ class PyBuildExt(build_ext):
- add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
- if cross_compiling:
- self.add_gcc_paths()
-- self.add_multiarch_paths()
-
- # Add paths specified in the environment variables LDFLAGS and
- # CPPFLAGS for header and library files.
+++ /dev/null
---- a/Lib/distutils/command/build_scripts.py
-+++ b/Lib/distutils/command/build_scripts.py
-@@ -89,6 +89,7 @@ class build_scripts (Command):
- adjust = 1
- post_interp = match.group(1) or ''
-
-+ adjust = 0
- if adjust:
- log.info("copying and adjusting %s -> %s", script,
- self.build_dir)
+++ /dev/null
-diff --git a/setup.py b/setup.py
-index 7868b7b..544fa7e 100644
---- a/setup.py
-+++ b/setup.py
-@@ -452,8 +452,9 @@ class PyBuildExt(build_ext):
- # directly since an inconsistently reproducible issue comes up where
- # the environment variable is not set even though the value were passed
- # into configure and stored in the Makefile (issue found on OS X 10.3).
-+ rt_lib_dirs = [] if cross_compiling else self.compiler.runtime_library_dirs
- for env_var, arg_name, dir_list in (
-- ('LDFLAGS', '-R', self.compiler.runtime_library_dirs),
-+ ('LDFLAGS', '-R', rt_lib_dirs),
- ('LDFLAGS', '-L', self.compiler.library_dirs),
- ('CPPFLAGS', '-I', self.compiler.include_dirs)):
- env_val = sysconfig.get_config_var(env_var)
+++ /dev/null
-diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c
-index 3bf2ca7..c156964 100644
---- a/Modules/_cursesmodule.c
-+++ b/Modules/_cursesmodule.c
-@@ -116,7 +116,6 @@ char *PyCursesVersion = "2.2";
- #defines many common symbols (such as "lines") which breaks the
- curses module in other ways. So the code will just specify
- explicit prototypes here. */
--extern int setupterm(char *,int,int *);
- #ifdef __sgi
- #include <term.h>
- #endif
+++ /dev/null
-diff --git a/configure b/configure
-index 274af7e..85bbf0e 100755
---- a/configure
-+++ b/configure
-@@ -10555,7 +10555,7 @@ for ac_func in alarm accept4 setitimer getitimer bind_textdomain_codeset chown \
- sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy symlinkat sync \
- sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
- truncate uname unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4 \
-- wcscoll wcsftime wcsxfrm wmemcmp writev _getpty
-+ wcscoll wcsxfrm wmemcmp writev _getpty
- do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
- ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+++ /dev/null
-diff --git a/configure b/configure
-index e823a08..84c525f 100755
---- a/configure
-+++ b/configure
-@@ -14365,7 +14365,7 @@ $as_echo_n "checking ABIFLAGS... " >&6; }
- $as_echo "$ABIFLAGS" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking SOABI" >&5
- $as_echo_n "checking SOABI... " >&6; }
--SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}${PLATFORM_TRIPLET:+-$PLATFORM_TRIPLET}
-+SOABI='cpython-'`echo $VERSION | tr -d .`
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SOABI" >&5
- $as_echo "$SOABI" >&6; }
-
-diff --git a/configure.ac b/configure.ac
-index 56a73df..1855af5 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -4314,7 +4314,7 @@ AC_SUBST(SOABI)
- AC_MSG_CHECKING(ABIFLAGS)
- AC_MSG_RESULT($ABIFLAGS)
- AC_MSG_CHECKING(SOABI)
--SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS}${PLATFORM_TRIPLET:+-$PLATFORM_TRIPLET}
-+SOABI='cpython-'`echo $VERSION | tr -d .`
- AC_MSG_RESULT($SOABI)
-
- AC_SUBST(EXT_SUFFIX)
+++ /dev/null
-diff --git a/setup.py b/setup.py
-index da67731..928e0de 100644
---- a/setup.py
-+++ b/setup.py
-@@ -293,6 +293,7 @@ class PyBuildExt(build_ext):
- print("Failed to build these modules:")
- print_three_column(failed)
- print()
-+ if cross_compiling: sys.exit(1)
-
- if self.failed_on_import:
- failed = self.failed_on_import[:]
+++ /dev/null
-diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
-index 8bf1a70..c2708c3 100644
---- a/Lib/distutils/sysconfig.py
-+++ b/Lib/distutils/sysconfig.py
-@@ -424,6 +424,7 @@ def _init_posix():
- platform=sys.platform,
- multiarch=getattr(sys.implementation, '_multiarch', ''),
- ))
-+ name = '_sysconfigdata'
- _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0)
- build_time_vars = _temp.build_time_vars
- global _config_vars
-diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
-index 9314e71..4861261 100644
---- a/Lib/sysconfig.py
-+++ b/Lib/sysconfig.py
-@@ -343,6 +343,7 @@ def get_makefile_filename():
-
-
- def _get_sysconfigdata_name():
-+ return '_sysconfigdata'
- return os.environ.get('_PYTHON_SYSCONFIGDATA_NAME',
- '_sysconfigdata_{abi}_{platform}_{multiarch}'.format(
- abi=sys.abiflags,
-diff --git a/Makefile.pre.in b/Makefile.pre.in
-index cd7d33d..ad6572f 100644
---- a/Makefile.pre.in
-+++ b/Makefile.pre.in
-@@ -1301,7 +1301,7 @@ libinstall: build_all $(srcdir)/Modules/xxmodule.c
- esac; \
- done; \
- done
-- $(INSTALL_DATA) `cat pybuilddir.txt`/_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH).py \
-+ $(INSTALL_DATA) `cat pybuilddir.txt`/_sysconfigdata*.py \
- $(DESTDIR)$(LIBDEST); \
- $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
- if test -d $(DESTDIR)$(LIBDEST)/distutils/tests; then \
-@@ -1436,7 +1436,7 @@ sharedinstall: sharedmods
- --install-scripts=$(BINDIR) \
- --install-platlib=$(DESTSHARED) \
- --root=$(DESTDIR)/
-- -rm $(DESTDIR)$(DESTSHARED)/_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH).py
-+ -rm $(DESTDIR)$(DESTSHARED)/_sysconfigdata*.py
- -rm -r $(DESTDIR)$(DESTSHARED)/__pycache__
-
- # Here are a couple of targets for MacOSX again, to install a full
-diff --git a/configure b/configure
-index cf95b27..8203fbb 100755
---- a/configure
-+++ b/configure
-@@ -14895,7 +14895,7 @@ LDVERSION='$(VERSION)$(ABIFLAGS)'
- $as_echo "$LDVERSION" >&6; }
-
-
--if test x$PLATFORM_TRIPLET = x; then
-+if true ; then
- LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}"
- else
- LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}"
-diff --git a/configure.ac b/configure.ac
-index 1d63813..25f25ed 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -4600,7 +4600,7 @@ AC_MSG_RESULT($LDVERSION)
-
- dnl define LIBPL after ABIFLAGS and LDVERSION is defined.
- AC_SUBST(PY_ENABLE_SHARED)
--if test x$PLATFORM_TRIPLET = x; then
-+if true ; then
- LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}"
- else
- LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}"
+++ /dev/null
-#
-# Copyright (C) 2007-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=pytz
-PKG_VERSION:=2016.6.1
-PKG_RELEASE:=1
-PKG_LICENSE:=MIT
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/5d/8e/6635d8f3f9f48c03bb925fab543383089858271f9cfd1216b83247e8df94/
-PKG_MD5SUM:=b6c28a3b968bc1d8badfb61b93874e03
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/pytz
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- TITLE:=World timezone definitions, modern and historical
- URL:=https://sourceforge.net/projects/pytz/
- DEPENDS:=+python
-endef
-
-define Package/pytz/description
- World timezone definitions, modern and historical
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-define Package/pytz/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call BuildPackage,pytz))
+++ /dev/null
-#
-# Copyright (C) 2007-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=rcssmin
-PKG_VERSION:=1.0.6
-PKG_RELEASE=1
-PKG_LICENSE:=Apache-2.0
-
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/ndparker/rcssmin.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=4764e3bc47ca8d44be3198892e73c51d8a0a9970
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/rcssmin
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- TITLE:=Fast CSS minifier for Python
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- URL:=http://opensource.perlig.de/rcssmin/
- DEPENDS:=+python
-endef
-
-define Package/rcssmin/description
- Fast CSS minifier for Python
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-define Build/InstallDev
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-define Package/rcssmin/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call BuildPackage,rcssmin))
+++ /dev/null
-#
-# Copyright (C) 2007-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=simplejson
-PKG_VERSION:=3.10.0
-PKG_RELEASE:=1
-PKG_LICENSE:=MIT
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/40/ad/52c1f3a562df3b210e8f165e1aa243a178c454ead65476a39fa3ce1847b6/
-PKG_MD5SUM:=426a9631d22851a7a970b1a677368b15
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/simplejson
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- TITLE:=Simple, fast, extensible JSON encoder/decoder for Python
- URL:=http://simplejson.readthedocs.org/
- DEPENDS:=+python
-endef
-
-define Package/simplejson/description
- Simple, fast, extensible JSON encoder/decoder for Python
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
-endef
-
-define Package/simplejson/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
-$(eval $(call BuildPackage,simplejson))
+++ /dev/null
-#
-# Copyright (C) 2006-2011, 2015-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=twisted
-PKG_VERSION:=16.4.1
-PKG_RELEASE:=1
-
-PKG_SOURCE:=Twisted-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=https://pypi.python.org/packages/6b/23/8dbe86fc83215015e221fbd861a545c6ec5c9e9cd7514af114d1f64084ab \
- http://twistedmatrix.com/Releases/Twisted/16.4
-PKG_MD5SUM:=c6d09bdd681f538369659111f079c29d
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/Twisted-$(PKG_VERSION)
-PKG_BUILD_DEPENDS:=python python-setuptools USE_MUSL:librpc
-
-PKG_LICENSE:=MIT
-PKG_LICENSE_FILES:=LICENSE
-PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/twisted
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- TITLE:=Python networking engine
- URL:=http://twistedmatrix.com/
- DEPENDS:=+python-light +zope-interface
-endef
-
-define Package/twisted/description
- Twisted is a networking engine written in Python, supporting numerous
- protocols. It contains a web server, numerous chat clients, chat servers,
- mail servers, and more.
-endef
-
-define PyPackage/twisted/filespec
-+|/usr/bin
--|/usr/bin/tkconch
-+|$(PYTHON_PKG_DIR)
--|$(PYTHON_PKG_DIR)/twisted/conch/scripts/tkconch.py
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,, \
- install --prefix="/usr" --root="$(PKG_INSTALL_DIR)" --no-compile, \
- )
-endef
-
-$(eval $(call PyPackage,twisted))
-$(eval $(call BuildPackage,twisted))
+++ /dev/null
-diff --git a/twisted/python/twisted-completion.zsh b/twisted/python/twisted-completion.zsh
-index 4d97aa5..9a8d4d8 100644
---- a/twisted/python/twisted-completion.zsh
-+++ b/twisted/python/twisted-completion.zsh
-@@ -1,4 +1,4 @@
--#compdef twistd trial conch cftp ckeygen pyhtmlizer tkconch
-+#compdef twistd trial conch cftp ckeygen pyhtmlizer
- #
- # This is the ZSH completion file for Twisted commands. It calls the current
- # command-line with the special "--_shell-completion" option which is handled
+++ /dev/null
-diff --git a/setup.py b/setup.py
-index e21ef70..a4d9ee8 100755
---- a/setup.py
-+++ b/setup.py
-@@ -55,13 +55,14 @@ def main(args):
- setup_args = STATIC_PACKAGE_METADATA.copy()
-
- setup_args.update(dict(
-- packages=setuptools.find_packages(),
-+ packages=setuptools.find_packages(exclude=["*.test", "*.test.*"]),
- install_requires=requirements,
- conditionalExtensions=getExtensions(),
- entry_points={
- 'console_scripts': getConsoleScripts()
- },
- include_package_data=True,
-+ exclude_package_data={'':['test/*']},
- zip_safe=False,
- extras_require=_EXTRAS_REQUIRE,
- ))
-diff --git a/twisted/python/dist.py b/twisted/python/dist.py
-index dfff9dc..a05b716 100644
---- a/twisted/python/dist.py
-+++ b/twisted/python/dist.py
-@@ -191,11 +191,11 @@ def getExtensions():
- Get the C extensions used for Twisted.
- """
- extensions = [
-- ConditionalExtension(
-- "twisted.test.raiser",
-- ["twisted/test/raiser.c"],
-- condition=lambda _: _isCPython
-- ),
-+ #ConditionalExtension(
-+ # "twisted.test.raiser",
-+ # ["twisted/test/raiser.c"],
-+ # condition=lambda _: _isCPython
-+ #),
- ConditionalExtension(
- "twisted.internet.iocpreactor.iocpsupport",
- ["twisted/internet/iocpreactor/iocpsupport/iocpsupport.c",
+++ /dev/null
-#
-# Copyright (C) 2006-2011, 2015-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=zope.interface
-PKG_VERSION:=4.3.2
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/38/1b/d55c39f2cf442bd9fb2c59760ed058c84b57d25c680819c25f3aff741e1f
-PKG_MD5SUM:=5f7e15a5bcdfa3c6c0e93ffe45caf87c
-
-PKG_BUILD_DEPENDS:=python python-setuptools
-
-PKG_LICENSE:=ZPL-2.1
-PKG_LICENSE_FILES:=LICENSE.txt
-PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
-
-include $(INCLUDE_DIR)/package.mk
-$(call include_mk, python-package.mk)
-
-define Package/zope-interface
- SECTION:=lang
- CATEGORY:=Languages
- SUBMENU:=Python
- TITLE:=Zope interface
- URL:=https://github.com/zopefoundation/zope.interface
- DEPENDS:=+python-light
-endef
-
-define Package/zope-interface/description
-This package provides an implementation of "object interfaces" for
-Python. Interfaces are a mechanism for labeling objects as conforming to
-a given API or contract. So, this package can be considered as
-implementation of the Design By Contract methodology support in Python.
-endef
-
-define PyPackage/zope-interface/filespec
-+|$(PYTHON_PKG_DIR)
--|$(PYTHON_PKG_DIR)/zope/interface/common/tests
--|$(PYTHON_PKG_DIR)/zope/interface/tests
-endef
-
-define Build/Compile
- $(call Build/Compile/PyMod,, \
- install --prefix="/usr" --root="$(PKG_INSTALL_DIR)" --no-compile, \
- )
-endef
-
-$(eval $(call PyPackage,zope-interface))
-$(eval $(call BuildPackage,zope-interface))
include $(TOPDIR)/rules.mk
PKG_NAME:=alsa-lib
-PKG_VERSION:=1.1.3
+PKG_VERSION:=1.1.4.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=ftp://ftp.alsa-project.org/pub/lib/ \
- http://alsa.cybermirror.org/lib/
-PKG_HASH:=71282502184c592c1a008e256c22ed0ba5728ca65e05273ceb480c70f515969c
+ http://distfiles.gentoo.org/distfiles/
+
+PKG_HASH:=91bb870c14d1c7c269213285eeed874fa3d28112077db061a3af8010d0885b76
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>, \
Peter Wagner <tripolar@gmx.at>
+++ /dev/null
---- a/src/Makefile.in
-+++ b/src/Makefile.in
-@@ -418,7 +418,7 @@ clean-libLTLIBRARIES:
- rm -f $${locs}; \
- }
- libasound.la: $(libasound_la_OBJECTS) $(libasound_la_DEPENDENCIES) $(EXTRA_libasound_la_DEPENDENCIES)
-- $(AM_V_CCLD)$(libasound_la_LINK) -rpath $(libdir) $(libasound_la_OBJECTS) $(libasound_la_LIBADD) $(LIBS)
-+ $(AM_V_CCLD)$(libasound_la_LINK) -rpath $(DESTDIR)$(libdir) $(libasound_la_OBJECTS) $(libasound_la_LIBADD) $(LIBS)
-
- mostlyclean-compile:
- -rm -f *.$(OBJEXT)
---- a/src/pcm/scopes/Makefile.in
-+++ b/src/pcm/scopes/Makefile.in
-@@ -348,7 +348,7 @@ clean-pkglibLTLIBRARIES:
- rm -f $${locs}; \
- }
- scope-level.la: $(scope_level_la_OBJECTS) $(scope_level_la_DEPENDENCIES) $(EXTRA_scope_level_la_DEPENDENCIES)
-- $(AM_V_CCLD)$(scope_level_la_LINK) -rpath $(pkglibdir) $(scope_level_la_OBJECTS) $(scope_level_la_LIBADD) $(LIBS)
-+ $(AM_V_CCLD)$(scope_level_la_LINK) -rpath $(DESTDIR)$(pkglibdir) $(scope_level_la_OBJECTS) $(scope_level_la_LIBADD) $(LIBS)
-
- mostlyclean-compile:
- -rm -f *.$(OBJEXT)
+++ /dev/null
-diff --git a/src/ucm/parser.c b/src/ucm/parser.c
-index c98373a..f520abc 100644
---- a/src/ucm/parser.c
-+++ b/src/ucm/parser.c
-@@ -32,6 +32,7 @@
-
- #include "ucm_local.h"
- #include <dirent.h>
-+#include <limits.h>
-
- /** The name of the environment variable containing the UCM directory */
- #define ALSA_CONFIG_UCM_VAR "ALSA_CONFIG_UCM"
+++ /dev/null
-diff --git a/aserver/aserver.c b/aserver/aserver.c
-index ac20706..46f731a 100644
---- a/aserver/aserver.c
-+++ b/aserver/aserver.c
-@@ -20,7 +20,7 @@
-
- #include <sys/shm.h>
- #include <sys/socket.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <sys/un.h>
- #include <sys/uio.h>
- #include <stdio.h>
-diff --git a/include/asoundlib-head.h b/include/asoundlib-head.h
-index 1ec611e..21e32c6 100644
---- a/include/asoundlib-head.h
-+++ b/include/asoundlib-head.h
-@@ -35,6 +35,6 @@
- #include <string.h>
- #include <fcntl.h>
- #include <assert.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <errno.h>
- #include <stdarg.h>
-diff --git a/include/asoundlib.h b/include/asoundlib.h
-index 3c2766e..a546194 100644
---- a/include/asoundlib.h
-+++ b/include/asoundlib.h
-@@ -35,7 +35,7 @@
- #include <string.h>
- #include <fcntl.h>
- #include <assert.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <errno.h>
- #include <stdarg.h>
- #include <endian.h>
-diff --git a/include/local.h b/include/local.h
-index 317f2e3..6a43a47 100644
---- a/include/local.h
-+++ b/include/local.h
-@@ -47,7 +47,7 @@
- #error Header defining endianness not defined
- #endif
- #include <stdarg.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <sys/types.h>
- #include <errno.h>
- #if defined(__linux__)
-diff --git a/src/control/control.c b/src/control/control.c
-index 134ba4c..6439b29 100644
---- a/src/control/control.c
-+++ b/src/control/control.c
-@@ -90,7 +90,7 @@ against the original design.
- #include <string.h>
- #include <fcntl.h>
- #include <signal.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <stdbool.h>
- #include "control_local.h"
-
-diff --git a/src/control/control_shm.c b/src/control/control_shm.c
-index bd07d4a..9a2e268 100644
---- a/src/control/control_shm.c
-+++ b/src/control/control_shm.c
-@@ -27,7 +27,7 @@
- #include <fcntl.h>
- #include <sys/shm.h>
- #include <sys/socket.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <sys/un.h>
- #include <sys/uio.h>
- #include <sys/mman.h>
-diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c
-index 0cf740f..a28589d 100644
---- a/src/pcm/pcm.c
-+++ b/src/pcm/pcm.c
-@@ -651,7 +651,7 @@ playback devices.
- #include <stdarg.h>
- #include <signal.h>
- #include <ctype.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <sys/mman.h>
- #include <limits.h>
- #include "pcm_local.h"
-diff --git a/src/pcm/pcm_direct.c b/src/pcm/pcm_direct.c
-index 6434983..b3c0b2d 100644
---- a/src/pcm/pcm_direct.c
-+++ b/src/pcm/pcm_direct.c
-@@ -30,7 +30,7 @@
- #include <grp.h>
- #include <sys/ioctl.h>
- #include <sys/mman.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <sys/shm.h>
- #include <sys/sem.h>
- #include <sys/wait.h>
-diff --git a/src/pcm/pcm_mmap.c b/src/pcm/pcm_mmap.c
-index 1948289..4cf220a 100644
---- a/src/pcm/pcm_mmap.c
-+++ b/src/pcm/pcm_mmap.c
-@@ -22,7 +22,7 @@
- #include <stdio.h>
- #include <malloc.h>
- #include <string.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <sys/mman.h>
- #ifdef HAVE_SYS_SHM_H
- #include <sys/shm.h>
-diff --git a/src/pcm/pcm_share.c b/src/pcm/pcm_share.c
-index 5d8aaf2..21a57fc 100644
---- a/src/pcm/pcm_share.c
-+++ b/src/pcm/pcm_share.c
-@@ -34,7 +34,7 @@
- #include <signal.h>
- #include <math.h>
- #include <sys/socket.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <pthread.h>
- #include "pcm_local.h"
-
-diff --git a/src/pcm/pcm_shm.c b/src/pcm/pcm_shm.c
-index a815ac6..4ee958c 100644
---- a/src/pcm/pcm_shm.c
-+++ b/src/pcm/pcm_shm.c
-@@ -36,7 +36,7 @@
- #include <sys/ioctl.h>
- #include <sys/shm.h>
- #include <sys/socket.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <sys/un.h>
- #include <sys/mman.h>
- #include <netinet/in.h>
-diff --git a/src/seq/seq.c b/src/seq/seq.c
-index 9279830..d2027cb 100644
---- a/src/seq/seq.c
-+++ b/src/seq/seq.c
-@@ -777,7 +777,7 @@ void event_filter(snd_seq_t *seq, snd_seq_event_t *ev)
-
- */
-
--#include <sys/poll.h>
-+#include <poll.h>
- #include "seq_local.h"
-
- /****************************************************************************
-diff --git a/src/shmarea.c b/src/shmarea.c
-index 9843aa8..eaa71f0 100644
---- a/src/shmarea.c
-+++ b/src/shmarea.c
-@@ -27,7 +27,7 @@
- #include <malloc.h>
- #include <string.h>
- #include <errno.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <sys/mman.h>
- #include <sys/shm.h>
- #include "list.h"
--- /dev/null
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -421,7 +421,7 @@ clean-libLTLIBRARIES:
+ rm -f $${locs}; \
+ }
+ libasound.la: $(libasound_la_OBJECTS) $(libasound_la_DEPENDENCIES) $(EXTRA_libasound_la_DEPENDENCIES)
+- $(AM_V_CCLD)$(libasound_la_LINK) -rpath $(libdir) $(libasound_la_OBJECTS) $(libasound_la_LIBADD) $(LIBS)
++ $(AM_V_CCLD)$(libasound_la_LINK) -rpath $(DESTDIR)$(libdir) $(libasound_la_OBJECTS) $(libasound_la_LIBADD) $(LIBS)
+
+ mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+--- a/src/pcm/scopes/Makefile.in
++++ b/src/pcm/scopes/Makefile.in
+@@ -348,7 +348,7 @@ clean-pkglibLTLIBRARIES:
+ rm -f $${locs}; \
+ }
+ scope-level.la: $(scope_level_la_OBJECTS) $(scope_level_la_DEPENDENCIES) $(EXTRA_scope_level_la_DEPENDENCIES)
+- $(AM_V_CCLD)$(scope_level_la_LINK) -rpath $(pkglibdir) $(scope_level_la_OBJECTS) $(scope_level_la_LIBADD) $(LIBS)
++ $(AM_V_CCLD)$(scope_level_la_LINK) -rpath $(DESTDIR)$(pkglibdir) $(scope_level_la_OBJECTS) $(scope_level_la_LIBADD) $(LIBS)
+
+ mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
--- /dev/null
+--- a/aserver/aserver.c
++++ b/aserver/aserver.c
+@@ -20,7 +20,7 @@
+
+ #include <sys/shm.h>
+ #include <sys/socket.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/un.h>
+ #include <sys/uio.h>
+ #include <stdio.h>
+--- a/include/asoundlib-head.h
++++ b/include/asoundlib-head.h
+@@ -35,6 +35,6 @@
+ #include <string.h>
+ #include <fcntl.h>
+ #include <assert.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdarg.h>
+--- a/include/asoundlib.h
++++ b/include/asoundlib.h
+@@ -35,7 +35,7 @@
+ #include <string.h>
+ #include <fcntl.h>
+ #include <assert.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <errno.h>
+ #include <stdarg.h>
+ #include <endian.h>
+--- a/include/local.h
++++ b/include/local.h
+@@ -47,7 +47,7 @@
+ #error Header defining endianness not defined
+ #endif
+ #include <stdarg.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/types.h>
+ #include <errno.h>
+ #if defined(__linux__)
+--- a/src/control/control.c
++++ b/src/control/control.c
+@@ -90,7 +90,7 @@ against the original design.
+ #include <string.h>
+ #include <fcntl.h>
+ #include <signal.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <stdbool.h>
+ #include "control_local.h"
+
+--- a/src/control/control_shm.c
++++ b/src/control/control_shm.c
+@@ -27,7 +27,7 @@
+ #include <fcntl.h>
+ #include <sys/shm.h>
+ #include <sys/socket.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/un.h>
+ #include <sys/uio.h>
+ #include <sys/mman.h>
+--- a/src/pcm/pcm.c
++++ b/src/pcm/pcm.c
+@@ -651,7 +651,7 @@ playback devices.
+ #include <stdarg.h>
+ #include <signal.h>
+ #include <ctype.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/mman.h>
+ #include <limits.h>
+ #include "pcm_local.h"
+--- a/src/pcm/pcm_direct.c
++++ b/src/pcm/pcm_direct.c
+@@ -30,7 +30,7 @@
+ #include <grp.h>
+ #include <sys/ioctl.h>
+ #include <sys/mman.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/shm.h>
+ #include <sys/sem.h>
+ #include <sys/wait.h>
+--- a/src/pcm/pcm_mmap.c
++++ b/src/pcm/pcm_mmap.c
+@@ -22,7 +22,7 @@
+ #include <stdio.h>
+ #include <malloc.h>
+ #include <string.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/mman.h>
+ #ifdef HAVE_SYS_SHM_H
+ #include <sys/shm.h>
+--- a/src/pcm/pcm_share.c
++++ b/src/pcm/pcm_share.c
+@@ -34,7 +34,7 @@
+ #include <signal.h>
+ #include <math.h>
+ #include <sys/socket.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <pthread.h>
+ #include "pcm_local.h"
+
+--- a/src/pcm/pcm_shm.c
++++ b/src/pcm/pcm_shm.c
+@@ -36,7 +36,7 @@
+ #include <sys/ioctl.h>
+ #include <sys/shm.h>
+ #include <sys/socket.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/un.h>
+ #include <sys/mman.h>
+ #include <netinet/in.h>
+--- a/src/seq/seq.c
++++ b/src/seq/seq.c
+@@ -777,7 +777,7 @@ void event_filter(snd_seq_t *seq, snd_se
+
+ */
+
+-#include <sys/poll.h>
++#include <poll.h>
+ #include "seq_local.h"
+
+ /****************************************************************************
+--- a/src/shmarea.c
++++ b/src/shmarea.c
+@@ -27,7 +27,7 @@
+ #include <malloc.h>
+ #include <string.h>
+ #include <errno.h>
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/mman.h>
+ #include <sys/shm.h>
+ #include "list.h"
include $(TOPDIR)/rules.mk
PKG_NAME:=avro-c
-PKG_VERSION:=1.8.1
+PKG_VERSION:=1.8.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@APACHE/avro/avro-$(PKG_VERSION)/c
-PKG_MD5SUM:=b268348536714541e10411823a1b59b0
+PKG_MD5SUM:=c2720c131307b84de71c8f147e73ecf6
PKG_MAINTAINER:=John Clark <inindev@gmail.com>
include $(TOPDIR)/rules.mk
PKG_NAME:=confuse
-PKG_VERSION:=3.0
+PKG_VERSION:=3.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://github.com/martinh/libconfuse/releases/download/v$(PKG_VERSION)
-PKG_HASH:=bb75174e02aa8b44fa1a872a47beeea1f5fe715ab669694c97803eb6127cc861
+PKG_HASH:=8171f31e0071d5e4460269fdcc8b4e748cf23b4bf6bbe672f718a136dd63ca66
PKG_MAINTAINER:=Daniel Engberg <daniel.engberg.lists@pyret.net>
PKG_LICENSE:=ISC
#
-# Copyright (C) 2008-2014 OpenWrt.org
-#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=faad2
-PKG_VERSION:=2.7
-PKG_RELEASE:=3
+PKG_VERSION:=2.8.0~cvs20161113
+PKG_RELEASE:=1
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=@SF/faac
-PKG_MD5SUM:=4c332fa23febc0e4648064685a3d4332
+PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.xz
+PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/f/$(PKG_NAME)
+PKG_HASH:=de34bce327eac8a89cd58b7d44dfb58988033de6fda0ab9582ed0585fc3fd07e
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
PKG_CONFIG_DEPENDS := \
include $(INCLUDE_DIR)/package.mk
-TARGET_CFLAGS += $(FPIC)
-
-# Use fixed point math, if we're using soft floats, and the user didn't
-# specifically ask to use floats anyways.
-ifeq ($(CONFIG_SOFT_FLOAT)-$(CONFIG_FAAD2_ALWAYS_USE_FLOATING_POINT),y-)
-TARGET_CFLAGS+= -DFIXED_POINT
-FAAD2_CONFIG_OPTS= --without-fp -nfp
-endif
-
define Package/faad2/Default
URL:=http://www.audiocoding.com/faad2.html
TITLE:=Freeware Advanced Audio Decoder
This package contains the library.
endef
-define Build/Configure
- # This replacement were do according to many comments on the web because of gcc 3.4.5 version (.6 included).-
- # which doesn't recognices the -iquote parameter to AM_CFLAGS
- ($(SED) 's,-iquote $$$$(top_srcdir),-I$$$$(top_srcdir),g' $(PKG_BUILD_DIR)/libfaad/Makefile.am; \
- $(SED) 's,-iquote $$$$(top_srcdir),-I$$$$(top_srcdir),g' $(PKG_BUILD_DIR)/libfaad/Makefile.in);
- (cd $(PKG_BUILD_DIR); rm -rf config.{cache,status}; \
- autoreconf -vif \
- );
- $(call Build/Configure/Default, \
- --with-mp4v2 \
- $(FAAD2_CONFIG_OPTS) \
- --without-xmms \
- , \
- FAAD2_CPPFLAGS="-fno-builtin-cos -fno-builtin-sin -fno-builtin-log" \
- )
-endef
+TARGET_CFLAGS += $(FPIC)
+CONFIGURE_ARGS+= --without-xmms
+
+# Use fixed point math, if we're using soft floats, and the user didn't
+# specifically ask to use floats anyways.
+#ifeq ($(CONFIG_SOFT_FLOAT)-$(CONFIG_FAAD2_ALWAYS_USE_FLOATING_POINT),y-)
+TARGET_CFLAGS+= -DFIXED_POINT
+CONFIGURE_ARGS+= -nfp
+#endif
+
+CONFIGURE_VARS+= CPPFLAGS="-fno-builtin-cos -fno-builtin-sin -fno-builtin-log"
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
include $(TOPDIR)/rules.mk
PKG_NAME:=glib2
-PKG_VERSION:=2.50.3
+PKG_VERSION:=2.52.2
PKG_RELEASE:=1
PKG_SOURCE:=glib-$(PKG_VERSION).tar.xz
PKG_BUILD_DIR:=$(BUILD_DIR)/glib-$(PKG_VERSION)
-PKG_SOURCE_URL:=@GNOME/glib/2.50
-PKG_HASH:=82ee94bf4c01459b6b00cb9db0545c2237921e3060c0b74cff13fbc020cfd999
+PKG_SOURCE_URL:=@GNOME/glib/2.52
+PKG_HASH:=f00e5d9e2a2948b1da25fcba734a6b7a40f556de8bc9f528a53f6569969ac5d0
PKG_BUILD_PARALLEL:=1
HOST_BUILD_PARALLEL:=1
--- a/gtk-doc.make
+++ b/gtk-doc.make
-@@ -282,7 +282,7 @@ uninstall-local:
+@@ -277,7 +277,7 @@ uninstall-local:
#
# Require gtk-doc when making dist
#
include $(TOPDIR)/rules.mk
PKG_NAME:=glpk
-PKG_VERSION:=4.60
+PKG_VERSION:=4.62
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
-PKG_MD5SUM:=eda7965907f6919ffc69801646f13c3e
+PKG_HASH:=096e4be3f83878ccf70e1fdb62ad1c178715ef8c0d244254c29e2f9f0c1afa70
+PKG_MD5SUM:=ad4f681463db1b78ad88b956b736fa25
PKG_LICENSE:=GPL-3.0
PKG_LICENSE_FILES:=COPYING
include $(TOPDIR)/rules.mk
PKG_NAME:=gnutls
-PKG_VERSION:=3.5.11
+PKG_VERSION:=3.5.13
PKG_RELEASE:=1
PKG_USE_MIPS16:=0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=ftp://ftp.gnutls.org/gcrypt/gnutls/v3.5
-PKG_HASH:=51765cc5579e250da77fbd7871507c517d01b15353cc40af7b67e9ec7b6fe28f
+PKG_HASH:=79f5480ad198dad5bc78e075f4a40c4a315a1b2072666919d2d05a08aec13096
#PKG_FIXUP:=autoreconf gettext-version
PKG_MAINTAINER:=Nikos Mavrogiannopoulos <nmav@gnutls.org>
PKG_LICENSE:=LGPLv2.1+
PKG_NAME:=icu4c
PKG_VERSION:=59.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-59_1-src.tgz
PKG_SOURCE_URL:=http://download.icu-project.org/files/$(PKG_NAME)/$(PKG_VERSION)
--- /dev/null
+From 0c82d6aa02c08e41b13c83b14782bd7024e25d59 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 15 Feb 2014 21:06:42 +0000
+Subject: [PATCH] Disable LDFLAGSICUDT for Linux
+
+Upstream-Status: Inappropriate [ OE Configuration ]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ source/config/mh-linux | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/config/mh-linux b/config/mh-linux
+index 366f0cc..2689aab 100644
+--- a/config/mh-linux
++++ b/config/mh-linux
+@@ -23,7 +23,7 @@ LD_RPATH= -Wl,-zorigin,-rpath,'$$'ORIGIN
+ LD_RPATH_PRE = -Wl,-rpath,
+
+ ## These are the library specific LDFLAGS
+-LDFLAGSICUDT=-nodefaultlibs -nostdlib
++# LDFLAGSICUDT=-nodefaultlibs -nostdlib
+
+ ## Compiler switch to embed a library name
+ # The initial tab in the next line is to prevent icu-config from reading it.
+--
+1.7.10.4
+
#
-# Copyright (C) 2006-2016 OpenWrt.org
-#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
PKG_NAME:=audiofile
PKG_VERSION:=0.3.6
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GNOME/$(PKG_NAME)/0.3
CONFIGURE_ARGS+= \
--enable-shared \
--enable-static \
- --disable-examples \
- --with-build-cc="$(HOSTCC)"
+ --disable-docs \
+ --disable-coverage \
+ --disable-examples
+
TARGET_CFLAGS+= $(FPIC)
--- /dev/null
+Description: Fix FTBFS with GCC 6
+Author: Michael Schwendt <mschwendt@fedoraproject.org>
+Origin: vendor, https://github.com/mpruett/audiofile/pull/27
+Bug-Debian: https://bugs.debian.org/812055
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+
+--- a/libaudiofile/modules/SimpleModule.h
++++ b/libaudiofile/modules/SimpleModule.h
+@@ -123,7 +123,7 @@ struct signConverter
+ typedef typename IntTypes<Format>::UnsignedType UnsignedType;
+
+ static const int kScaleBits = (Format + 1) * CHAR_BIT - 1;
+- static const int kMinSignedValue = -1 << kScaleBits;
++ static const int kMinSignedValue = 0-(1U<<kScaleBits);
+
+ struct signedToUnsigned : public std::unary_function<SignedType, UnsignedType>
+ {
--- /dev/null
+--- a/configure.ac
++++ b/configure.ac
+@@ -159,12 +159,8 @@ AC_CONFIG_FILES([
+ audiofile.pc
+ audiofile-uninstalled.pc
+ sfcommands/Makefile
+- test/Makefile
+- gtest/Makefile
+- examples/Makefile
+ libaudiofile/Makefile
+ libaudiofile/alac/Makefile
+ libaudiofile/modules/Makefile
+- docs/Makefile
+ Makefile])
+ AC_OUTPUT
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,6 +1,6 @@
+ ## Process this file with automake to produce Makefile.in
+
+-SUBDIRS = gtest libaudiofile sfcommands test examples docs
++SUBDIRS = libaudiofile sfcommands
+
+ EXTRA_DIST = \
+ ACKNOWLEDGEMENTS \
--- /dev/null
+Description: fix buffer overflow when changing both sample format and
+ number of channels
+Origin: backport, https://github.com/mpruett/audiofile/pull/25
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/audiofile/+bug/1502721
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=801102
+
+Index: audiofile-0.3.6/libaudiofile/modules/ModuleState.cpp
+===================================================================
+--- audiofile-0.3.6.orig/libaudiofile/modules/ModuleState.cpp 2015-10-20 08:00:58.036128202 -0400
++++ audiofile-0.3.6/libaudiofile/modules/ModuleState.cpp 2015-10-20 08:00:58.036128202 -0400
+@@ -402,7 +402,7 @@
+ addModule(new Transform(outfc, in.pcm, out.pcm));
+
+ if (in.channelCount != out.channelCount)
+- addModule(new ApplyChannelMatrix(infc, isReading,
++ addModule(new ApplyChannelMatrix(outfc, isReading,
+ in.channelCount, out.channelCount,
+ in.pcm.minClip, in.pcm.maxClip,
+ track->channelMatrix));
--- /dev/null
+From c48e4c6503f7dabd41f11d4c9c7b7f8960e7f2c0 Mon Sep 17 00:00:00 2001
+From: Antonio Larrosa <larrosa@kde.org>
+Date: Mon, 6 Mar 2017 12:51:22 +0100
+Subject: [PATCH] Always check the number of coefficients
+
+When building the library with NDEBUG, asserts are eliminated
+so it's better to always check that the number of coefficients
+is inside the array range.
+
+This fixes the 00191-audiofile-indexoob issue in #41
+---
+ libaudiofile/WAVE.cpp | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/libaudiofile/WAVE.cpp b/libaudiofile/WAVE.cpp
+index 0e81cf7..61f9541 100644
+--- a/libaudiofile/WAVE.cpp
++++ b/libaudiofile/WAVE.cpp
+@@ -281,6 +281,12 @@ status WAVEFile::parseFormat(const Tag &id, uint32_t size)
+
+ /* numCoefficients should be at least 7. */
+ assert(numCoefficients >= 7 && numCoefficients <= 255);
++ if (numCoefficients < 7 || numCoefficients > 255)
++ {
++ _af_error(AF_BAD_HEADER,
++ "Bad number of coefficients");
++ return AF_FAIL;
++ }
+
+ m_msadpcmNumCoefficients = numCoefficients;
+
+--
+2.11.0
+
--- /dev/null
+From 25eb00ce913452c2e614548d7df93070bf0d066f Mon Sep 17 00:00:00 2001
+From: Antonio Larrosa <larrosa@kde.org>
+Date: Mon, 6 Mar 2017 18:02:31 +0100
+Subject: [PATCH] clamp index values to fix index overflow in IMA.cpp
+
+This fixes #33
+(also reported at https://bugzilla.opensuse.org/show_bug.cgi?id=1026981
+and https://blogs.gentoo.org/ago/2017/02/20/audiofile-global-buffer-overflow-in-decodesample-ima-cpp/)
+---
+ libaudiofile/modules/IMA.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/libaudiofile/modules/IMA.cpp b/libaudiofile/modules/IMA.cpp
+index 7476d44..df4aad6 100644
+--- a/libaudiofile/modules/IMA.cpp
++++ b/libaudiofile/modules/IMA.cpp
+@@ -169,7 +169,7 @@ int IMA::decodeBlockWAVE(const uint8_t *encoded, int16_t *decoded)
+ if (encoded[1] & 0x80)
+ m_adpcmState[c].previousValue -= 0x10000;
+
+- m_adpcmState[c].index = encoded[2];
++ m_adpcmState[c].index = clamp(encoded[2], 0, 88);
+
+ *decoded++ = m_adpcmState[c].previousValue;
+
+@@ -210,7 +210,7 @@ int IMA::decodeBlockQT(const uint8_t *encoded, int16_t *decoded)
+ predictor -= 0x10000;
+
+ state.previousValue = clamp(predictor, MIN_INT16, MAX_INT16);
+- state.index = encoded[1] & 0x7f;
++ state.index = clamp(encoded[1] & 0x7f, 0, 88);
+ encoded += 2;
+
+ for (int n=0; n<m_framesPerPacket; n+=2)
+--
+2.11.0
+
--- /dev/null
+From 7d65f89defb092b63bcbc5d98349fb222ca73b3c Mon Sep 17 00:00:00 2001
+From: Antonio Larrosa <larrosa@kde.org>
+Date: Mon, 6 Mar 2017 13:54:52 +0100
+Subject: [PATCH] Check for multiplication overflow in sfconvert
+
+Checks that a multiplication doesn't overflow when
+calculating the buffer size, and if it overflows,
+reduce the buffer size instead of failing.
+
+This fixes the 00192-audiofile-signintoverflow-sfconvert case
+in #41
+---
+ sfcommands/sfconvert.c | 34 ++++++++++++++++++++++++++++++++--
+ 1 file changed, 32 insertions(+), 2 deletions(-)
+
+diff --git a/sfcommands/sfconvert.c b/sfcommands/sfconvert.c
+index 80a1bc4..970a3e4 100644
+--- a/sfcommands/sfconvert.c
++++ b/sfcommands/sfconvert.c
+@@ -45,6 +45,33 @@ void printusage (void);
+ void usageerror (void);
+ bool copyaudiodata (AFfilehandle infile, AFfilehandle outfile, int trackid);
+
++int firstBitSet(int x)
++{
++ int position=0;
++ while (x!=0)
++ {
++ x>>=1;
++ ++position;
++ }
++ return position;
++}
++
++#ifndef __has_builtin
++#define __has_builtin(x) 0
++#endif
++
++int multiplyCheckOverflow(int a, int b, int *result)
++{
++#if (defined __GNUC__ && __GNUC__ >= 5) || ( __clang__ && __has_builtin(__builtin_mul_overflow))
++ return __builtin_mul_overflow(a, b, result);
++#else
++ if (firstBitSet(a)+firstBitSet(b)>31) // int is signed, so we can't use 32 bits
++ return true;
++ *result = a * b;
++ return false;
++#endif
++}
++
+ int main (int argc, char **argv)
+ {
+ if (argc == 2)
+@@ -323,8 +350,11 @@ bool copyaudiodata (AFfilehandle infile, AFfilehandle outfile, int trackid)
+ {
+ int frameSize = afGetVirtualFrameSize(infile, trackid, 1);
+
+- const int kBufferFrameCount = 65536;
+- void *buffer = malloc(kBufferFrameCount * frameSize);
++ int kBufferFrameCount = 65536;
++ int bufferSize;
++ while (multiplyCheckOverflow(kBufferFrameCount, frameSize, &bufferSize))
++ kBufferFrameCount /= 2;
++ void *buffer = malloc(bufferSize);
+
+ AFframecount totalFrames = afGetFrameCount(infile, AF_DEFAULT_TRACK);
+ AFframecount totalFramesWritten = 0;
+--
+2.11.0
+
--- /dev/null
+From a2e9eab8ea87c4ffc494d839ebb4ea145eb9f2e6 Mon Sep 17 00:00:00 2001
+From: Antonio Larrosa <larrosa@kde.org>
+Date: Mon, 6 Mar 2017 18:59:26 +0100
+Subject: [PATCH] Actually fail when error occurs in parseFormat
+
+When there's an unsupported number of bits per sample or an invalid
+number of samples per block, don't only print an error message using
+the error handler, but actually stop parsing the file.
+
+This fixes #35 (also reported at
+https://bugzilla.opensuse.org/show_bug.cgi?id=1026983 and
+https://blogs.gentoo.org/ago/2017/02/20/audiofile-heap-based-buffer-overflow-in-imadecodeblockwave-ima-cpp/
+)
+---
+ libaudiofile/WAVE.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/libaudiofile/WAVE.cpp
++++ b/libaudiofile/WAVE.cpp
+@@ -332,6 +332,7 @@ status WAVEFile::parseFormat(const Tag &
+ {
+ _af_error(AF_BAD_NOT_IMPLEMENTED,
+ "IMA ADPCM compression supports only 4 bits per sample");
++ return AF_FAIL;
+ }
+
+ int bytesPerBlock = (samplesPerBlock + 14) / 8 * 4 * channelCount;
+@@ -339,6 +340,7 @@ status WAVEFile::parseFormat(const Tag &
+ {
+ _af_error(AF_BAD_CODEC_CONFIG,
+ "Invalid samples per block for IMA ADPCM compression");
++ return AF_FAIL;
+ }
+
+ track->f.sampleWidth = 16;
--- /dev/null
+From beacc44eb8cdf6d58717ec1a5103c5141f1b37f9 Mon Sep 17 00:00:00 2001
+From: Antonio Larrosa <larrosa@kde.org>
+Date: Mon, 6 Mar 2017 13:43:53 +0100
+Subject: [PATCH] Check for multiplication overflow in MSADPCM decodeSample
+
+Check for multiplication overflow (using __builtin_mul_overflow
+if available) in MSADPCM.cpp decodeSample and return an empty
+decoded block if an error occurs.
+
+This fixes the 00193-audiofile-signintoverflow-MSADPCM case of #41
+---
+ libaudiofile/modules/BlockCodec.cpp | 5 ++--
+ libaudiofile/modules/MSADPCM.cpp | 47 +++++++++++++++++++++++++++++++++----
+ 2 files changed, 46 insertions(+), 6 deletions(-)
+
+diff --git a/libaudiofile/modules/BlockCodec.cpp b/libaudiofile/modules/BlockCodec.cpp
+index 45925e8..4731be1 100644
+--- a/libaudiofile/modules/BlockCodec.cpp
++++ b/libaudiofile/modules/BlockCodec.cpp
+@@ -52,8 +52,9 @@ void BlockCodec::runPull()
+ // Decompress into m_outChunk.
+ for (int i=0; i<blocksRead; i++)
+ {
+- decodeBlock(static_cast<const uint8_t *>(m_inChunk->buffer) + i * m_bytesPerPacket,
+- static_cast<int16_t *>(m_outChunk->buffer) + i * m_framesPerPacket * m_track->f.channelCount);
++ if (decodeBlock(static_cast<const uint8_t *>(m_inChunk->buffer) + i * m_bytesPerPacket,
++ static_cast<int16_t *>(m_outChunk->buffer) + i * m_framesPerPacket * m_track->f.channelCount)==0)
++ break;
+
+ framesRead += m_framesPerPacket;
+ }
+diff --git a/libaudiofile/modules/MSADPCM.cpp b/libaudiofile/modules/MSADPCM.cpp
+index 8ea3c85..ef9c38c 100644
+--- a/libaudiofile/modules/MSADPCM.cpp
++++ b/libaudiofile/modules/MSADPCM.cpp
+@@ -101,24 +101,60 @@ static const int16_t adaptationTable[] =
+ 768, 614, 512, 409, 307, 230, 230, 230
+ };
+
++int firstBitSet(int x)
++{
++ int position=0;
++ while (x!=0)
++ {
++ x>>=1;
++ ++position;
++ }
++ return position;
++}
++
++#ifndef __has_builtin
++#define __has_builtin(x) 0
++#endif
++
++int multiplyCheckOverflow(int a, int b, int *result)
++{
++#if (defined __GNUC__ && __GNUC__ >= 5) || ( __clang__ && __has_builtin(__builtin_mul_overflow))
++ return __builtin_mul_overflow(a, b, result);
++#else
++ if (firstBitSet(a)+firstBitSet(b)>31) // int is signed, so we can't use 32 bits
++ return true;
++ *result = a * b;
++ return false;
++#endif
++}
++
++
+ // Compute a linear PCM value from the given differential coded value.
+ static int16_t decodeSample(ms_adpcm_state &state,
+- uint8_t code, const int16_t *coefficient)
++ uint8_t code, const int16_t *coefficient, bool *ok=NULL)
+ {
+ int linearSample = (state.sample1 * coefficient[0] +
+ state.sample2 * coefficient[1]) >> 8;
++ int delta;
+
+ linearSample += ((code & 0x08) ? (code - 0x10) : code) * state.delta;
+
+ linearSample = clamp(linearSample, MIN_INT16, MAX_INT16);
+
+- int delta = (state.delta * adaptationTable[code]) >> 8;
++ if (multiplyCheckOverflow(state.delta, adaptationTable[code], &delta))
++ {
++ if (ok) *ok=false;
++ _af_error(AF_BAD_COMPRESSION, "Error decoding sample");
++ return 0;
++ }
++ delta >>= 8;
+ if (delta < 16)
+ delta = 16;
+
+ state.delta = delta;
+ state.sample2 = state.sample1;
+ state.sample1 = linearSample;
++ if (ok) *ok=true;
+
+ return static_cast<int16_t>(linearSample);
+ }
+@@ -212,13 +248,16 @@ int MSADPCM::decodeBlock(const uint8_t *encoded, int16_t *decoded)
+ {
+ uint8_t code;
+ int16_t newSample;
++ bool ok;
+
+ code = *encoded >> 4;
+- newSample = decodeSample(*state[0], code, coefficient[0]);
++ newSample = decodeSample(*state[0], code, coefficient[0], &ok);
++ if (!ok) return 0;
+ *decoded++ = newSample;
+
+ code = *encoded & 0x0f;
+- newSample = decodeSample(*state[1], code, coefficient[1]);
++ newSample = decodeSample(*state[1], code, coefficient[1], &ok);
++ if (!ok) return 0;
+ *decoded++ = newSample;
+
+ encoded++;
+--
+2.11.0
+
--- /dev/null
+From ce536d707b8e2a26baca77320398c45238224ca7 Mon Sep 17 00:00:00 2001
+From: Antonio Larrosa <larrosa@kde.org>
+Date: Fri, 10 Mar 2017 15:40:02 +0100
+Subject: [PATCH] Fix signature of multiplyCheckOverflow. It returns a bool,
+ not an int
+
+---
+ libaudiofile/modules/MSADPCM.cpp | 2 +-
+ sfcommands/sfconvert.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/libaudiofile/modules/MSADPCM.cpp b/libaudiofile/modules/MSADPCM.cpp
+index ef9c38c..d8c9553 100644
+--- a/libaudiofile/modules/MSADPCM.cpp
++++ b/libaudiofile/modules/MSADPCM.cpp
+@@ -116,7 +116,7 @@ int firstBitSet(int x)
+ #define __has_builtin(x) 0
+ #endif
+
+-int multiplyCheckOverflow(int a, int b, int *result)
++bool multiplyCheckOverflow(int a, int b, int *result)
+ {
+ #if (defined __GNUC__ && __GNUC__ >= 5) || ( __clang__ && __has_builtin(__builtin_mul_overflow))
+ return __builtin_mul_overflow(a, b, result);
+diff --git a/sfcommands/sfconvert.c b/sfcommands/sfconvert.c
+index 970a3e4..367f7a5 100644
+--- a/sfcommands/sfconvert.c
++++ b/sfcommands/sfconvert.c
+@@ -60,7 +60,7 @@ int firstBitSet(int x)
+ #define __has_builtin(x) 0
+ #endif
+
+-int multiplyCheckOverflow(int a, int b, int *result)
++bool multiplyCheckOverflow(int a, int b, int *result)
+ {
+ #if (defined __GNUC__ && __GNUC__ >= 5) || ( __clang__ && __has_builtin(__builtin_mul_overflow))
+ return __builtin_mul_overflow(a, b, result);
+--
+2.11.0
+
--- /dev/null
+From: Antonio Larrosa <larrosa@kde.org>
+Date: Thu, 9 Mar 2017 10:21:18 +0100
+Subject: Check for division by zero in BlockCodec::runPull
+
+---
+ libaudiofile/modules/BlockCodec.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libaudiofile/modules/BlockCodec.cpp b/libaudiofile/modules/BlockCodec.cpp
+index 4731be1..eb2fb4d 100644
+--- a/libaudiofile/modules/BlockCodec.cpp
++++ b/libaudiofile/modules/BlockCodec.cpp
+@@ -47,7 +47,7 @@ void BlockCodec::runPull()
+
+ // Read the compressed data.
+ ssize_t bytesRead = read(m_inChunk->buffer, m_bytesPerPacket * blockCount);
+- int blocksRead = bytesRead >= 0 ? bytesRead / m_bytesPerPacket : 0;
++ int blocksRead = (bytesRead >= 0 && m_bytesPerPacket > 0) ? bytesRead / m_bytesPerPacket : 0;
+
+ // Decompress into m_outChunk.
+ for (int i=0; i<blocksRead; i++)
include $(TOPDIR)/rules.mk
PKG_NAME:=libcanfestival
-PKG_RELEASE:=5
+PKG_RELEASE:=6
PKG_SOURCE_VERSION:=8bfe0ac00cdb
PKG_SOURCE_URL:=http://dev.automforge.net/CanFestival-3/archive/$(PKG_SOURCE_VERSION).tar.bz2?_dummyfilename=
+++ /dev/null
---- a/drivers/can_socket/Makefile.in
-+++ b/drivers/can_socket/Makefile.in
-@@ -23,7 +23,7 @@
-
- CC = SUB_CC
- OPT_CFLAGS = -O2
--CFLAGS = SUB_OPT_CFLAGS
-+CFLAGS = SUB_OPT_CFLAGS -fhonour-copts
- PROG_CFLAGS = SUB_PROG_CFLAGS
- PREFIX = SUB_PREFIX
- TARGET = SUB_TARGET
---- a/src/Makefile.in
-+++ b/src/Makefile.in
-@@ -101,7 +101,7 @@ uninstall:
- rm -rf $(DESTDIR)$(PREFIX)/include/canfestival
-
- else
--CFLAGS = SUB_OPT_CFLAGS
-+CFLAGS = SUB_OPT_CFLAGS -fhonour-copts
-
- ifeq ($(TARGET),none)
- canfestival: libcanfestival.o
---- a/drivers/unix/Makefile.in
-+++ b/drivers/unix/Makefile.in
-@@ -85,7 +85,7 @@ install:
-
-
- else
--CFLAGS = SUB_OPT_CFLAGS
-+CFLAGS = SUB_OPT_CFLAGS -fhonour-copts
-
- driver: libcanfestival_$(TARGET).a
-
---- a/drivers/timers_unix/Makefile.in
-+++ b/drivers/timers_unix/Makefile.in
-@@ -23,7 +23,7 @@
-
- CC = SUB_CC
- OPT_CFLAGS = -O2
--CFLAGS = SUB_OPT_CFLAGS
-+CFLAGS = SUB_OPT_CFLAGS -fhonour-copts
- PROG_CFLAGS = SUB_PROG_CFLAGS
- OS_NAME = SUB_OS_NAME
- ARCH_NAME = SUB_ARCH_NAME
--- /dev/null
+--- a/drivers/can_socket/Makefile.in
++++ b/drivers/can_socket/Makefile.in
+@@ -23,7 +23,7 @@
+
+ CC = SUB_CC
+ OPT_CFLAGS = -O2
+-CFLAGS = SUB_OPT_CFLAGS
++CFLAGS ?= SUB_OPT_CFLAGS
+ PROG_CFLAGS = SUB_PROG_CFLAGS
+ PREFIX = SUB_PREFIX
+ TARGET = SUB_TARGET
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -101,7 +101,7 @@ uninstall:
+ rm -rf $(DESTDIR)$(PREFIX)/include/canfestival
+
+ else
+-CFLAGS = SUB_OPT_CFLAGS
++CFLAGS ?= SUB_OPT_CFLAGS
+
+ ifeq ($(TARGET),none)
+ canfestival: libcanfestival.o
+--- a/drivers/unix/Makefile.in
++++ b/drivers/unix/Makefile.in
+@@ -85,7 +85,7 @@ install:
+
+
+ else
+-CFLAGS = SUB_OPT_CFLAGS
++CFLAGS ?= SUB_OPT_CFLAGS
+
+ driver: libcanfestival_$(TARGET).a
+
+--- a/drivers/timers_unix/Makefile.in
++++ b/drivers/timers_unix/Makefile.in
+@@ -23,7 +23,7 @@
+
+ CC = SUB_CC
+ OPT_CFLAGS = -O2
+-CFLAGS = SUB_OPT_CFLAGS
++CFLAGS ?= SUB_OPT_CFLAGS
+ PROG_CFLAGS = SUB_PROG_CFLAGS
+ OS_NAME = SUB_OS_NAME
+ ARCH_NAME = SUB_ARCH_NAME
include $(TOPDIR)/rules.mk
PKG_NAME:=libdmapsharing
-PKG_VERSION:=2.9.35
+PKG_VERSION:=2.9.38
PKG_RELEASE:=1
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
PKG_SOURCE:=libdmapsharing-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.flyn.org/projects/libdmapsharing/
-PKG_MD5SUM:=02008e1998646d0bb6ca45784133b748
+PKG_MD5SUM:=2494161340c4c3c36907359eeddc4da3
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
endef
CONFIGURE_ARGS += \
- --disable-introspection \
- --disable-gtk-doc
+ --disable-check \
+ --disable-gtk-doc \
+ --disable-introspection
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/
+++ /dev/null
---- a/configure.ac
-+++ b/configure.ac
-@@ -357,7 +357,13 @@ if test -n "$BUILD_DPAPVIEW" ; then
- AC_WARN([will not build dpapview])
- fi
-
--PKG_CHECK_MODULES([CHECK], [check >= 0.9.4],have_check=yes,have_check=no)
-+dnl Test if --enable-unit-test given
-+AC_ARG_ENABLE(unit-test, [AC_HELP_STRING([--enable-unit-test],[enable unit test])])
-+if test "x$enable_unit_test" = "xyes" ; then
-+ PKG_CHECK_MODULES([CHECK], [check >= 0.9.4],have_check=yes,have_check=no)
-+else
-+ have_check=no
-+fi
- AM_CONDITIONAL(HAVE_CHECK, test x"$have_check" = "xyes")
- if test "x$have_check" = "xyes"; then
- AC_DEFINE(HAVE_CHECK, 1, [Define if check support is enabled])
-#
-# Copyright (C) 2007-2015 OpenWrt.org
-#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=libevdev
-PKG_VERSION:=1.4.6
+PKG_VERSION:=1.5.6
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://www.freedesktop.org/software/libevdev/
-PKG_MD5SUM:=9b3f25bd8fb0f8efa4944d34668dddc0
+PKG_HASH:=ecec7e9d66b1d3692f10b3b20aa97fb25e874a784c5552a7b1698091fef5a688
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=COPYING
include $(TOPDIR)/rules.mk
PKG_NAME:=libextractor
-PKG_VERSION:=1.3
-PKG_RELEASE:=4
+PKG_VERSION:=1.4
+PKG_RELEASE:=1
# ToDo:
# - package missing optional dependencies: libexiv2, gsf, librpm, smf, tidy
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
-PKG_MD5SUM:=35b8913dbebafe583a2781bf71509c48
-PKG_HASH:=868ad64c9a056d6b923d451d746935bffb1ddf5d89c3eb4f67d786001a3f7b7f
+PKG_MD5SUM:=226e77c58f09acb6b595ea6c6b93f673
+PKG_HASH:=84128170a4a9aa3a19942dd53fdf30ed17b56d7fae79b5f6e7e17a0d65d1f66c
PKG_LICENSE:=GPL-3.0
PKG_LICENSE_FILES:=COPYING
+++ /dev/null
---- a/src/plugins/gif_extractor.c
-+++ b/src/plugins/gif_extractor.c
-@@ -78,7 +78,11 @@ EXTRACTOR_gif_extract_method (struct EXT
- if (gif_file == NULL || gif_error != 0)
- {
- if (gif_file != NULL)
-+#if GIFLIB_MAJOR < 5 || GIFLIB_MINOR < 1
- EGifCloseFile (gif_file);
-+#else
-+ EGifCloseFile (gif_file, NULL);
-+#endif
- return; /* not a GIF */
- }
- #endif
-@@ -133,7 +137,11 @@ EXTRACTOR_gif_extract_method (struct EXT
- DGifGetExtensionNext(gif_file, &ext)) &&
- (NULL != ext) ) ; /* keep going */
- }
-+#if defined (GIF_LIB_VERSION) || GIFLIB_MAJOR < 5 || GIFLIB_MINOR < 1
- DGifCloseFile (gif_file);
-+#else
-+ DGifCloseFile (gif_file, NULL);
-+#endif
- }
-
- /* end of gif_extractor.c */
+++ /dev/null
---- a/src/plugins/thumbnailffmpeg_extractor.c
-+++ b/src/plugins/thumbnailffmpeg_extractor.c
-@@ -59,6 +59,20 @@
- #include <ffmpeg/swscale.h>
- #endif
-
-+#if USE_JPEG
-+#ifdef PIX_FMT_YUVJ420P
-+#define PIX_OUTPUT_FORMAT PIX_FMT_YUVJ420P
-+#else
-+#define PIX_OUTPUT_FORMAT AV_PIX_FMT_YUVJ420P
-+#endif
-+#else
-+#ifdef PIX_FMT_RGB24
-+#define PIX_OUTPUT_FORMAT PIX_FMT_RGB24
-+#else
-+#define PIX_OUTPUT_FORMAT AV_PIX_FMT_RGB24
-+#endif
-+#endif
-+
- /**
- * Set to 1 to enable debug output.
- */
-@@ -153,7 +167,7 @@
- static size_t
- create_thumbnail (int src_width, int src_height,
- int src_stride[],
-- enum PixelFormat src_pixfmt,
-+ enum AVPixelFormat src_pixfmt,
- const uint8_t * const src_data[],
- int dst_width, int dst_height,
- uint8_t **output_data,
-@@ -189,7 +203,8 @@
- if (NULL ==
- (scaler_ctx =
- sws_getContext (src_width, src_height, src_pixfmt,
-- dst_width, dst_height, PIX_FMT_RGB24,
-+ dst_width, dst_height,
-+ PIX_OUTPUT_FORMAT,
- SWS_BILINEAR, NULL, NULL, NULL)))
- {
- #if DEBUG
-@@ -199,7 +214,12 @@
- return 0;
- }
-
-- if (NULL == (dst_frame = avcodec_alloc_frame ()))
-+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
-+ dst_frame = av_frame_alloc ();
-+#else
-+ dst_frame = avcodec_alloc_frame();
-+#endif
-+ if (NULL == dst_frame)
- {
- #if DEBUG
- fprintf (stderr,
-@@ -209,18 +229,24 @@
- return 0;
- }
- if (NULL == (dst_buffer =
-- av_malloc (avpicture_get_size (PIX_FMT_RGB24, dst_width, dst_height))))
-+ av_malloc (avpicture_get_size (PIX_OUTPUT_FORMAT,
-+ dst_width, dst_height))))
- {
- #if DEBUG
- fprintf (stderr,
- "Failed to allocate the destination image buffer\n");
- #endif
-- av_free (dst_frame);
-+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
-+ av_frame_free (&dst_frame);
-+#else
-+ avcodec_free_frame (&dst_frame);
-+#endif
- sws_freeContext (scaler_ctx);
- return 0;
- }
- avpicture_fill ((AVPicture *) dst_frame, dst_buffer,
-- PIX_FMT_RGB24, dst_width, dst_height);
-+ PIX_OUTPUT_FORMAT,
-+ dst_width, dst_height);
- sws_scale (scaler_ctx,
- src_data,
- src_stride,
-@@ -236,7 +262,11 @@
- "Failed to allocate the encoder output buffer\n");
- #endif
- av_free (dst_buffer);
-- av_free (dst_frame);
-+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
-+ av_frame_free (&dst_frame);
-+#else
-+ avcodec_free_frame (&dst_frame);
-+#endif
- sws_freeContext (scaler_ctx);
- return 0;
- }
-@@ -249,13 +279,17 @@
- #endif
- av_free (encoder_output_buffer);
- av_free (dst_buffer);
-- av_free (dst_frame);
-+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
-+ av_frame_free (&dst_frame);
-+#else
-+ avcodec_free_frame (&dst_frame);
-+#endif
- sws_freeContext (scaler_ctx);
- return 0;
- }
- encoder_codec_ctx->width = dst_width;
- encoder_codec_ctx->height = dst_height;
-- encoder_codec_ctx->pix_fmt = PIX_FMT_RGB24;
-+ encoder_codec_ctx->pix_fmt = PIX_OUTPUT_FORMAT;
- opts = NULL;
- if (avcodec_open2 (encoder_codec_ctx, encoder_codec, &opts) < 0)
- {
-@@ -263,10 +297,14 @@
- fprintf (stderr,
- "Failed to open the encoder\n");
- #endif
-- av_free (encoder_codec_ctx);
-+ avcodec_free_context (&encoder_codec_ctx);
- av_free (encoder_output_buffer);
- av_free (dst_buffer);
-- av_free (dst_frame);
-+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
-+ av_frame_free (&dst_frame);
-+#else
-+ avcodec_free_frame (&dst_frame);
-+#endif
- sws_freeContext (scaler_ctx);
- return 0;
- }
-@@ -295,9 +333,13 @@
- cleanup:
- av_dict_free (&opts);
- avcodec_close (encoder_codec_ctx);
-- av_free (encoder_codec_ctx);
-+ avcodec_free_context (&encoder_codec_ctx);
- av_free (dst_buffer);
-- av_free (dst_frame);
-+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
-+ av_frame_free (&dst_frame);
-+#else
-+ avcodec_free_frame (&dst_frame);
-+#endif
- sws_freeContext (scaler_ctx);
- *output_data = encoder_output_buffer;
-
-@@ -406,18 +448,23 @@
- fprintf (stderr,
- "Failed to open image codec\n");
- #endif
-- av_free (codec_ctx);
-+ avcodec_free_context (&codec_ctx);
- return;
- }
- av_dict_free (&opts);
-- if (NULL == (frame = avcodec_alloc_frame ()))
-+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
-+ frame = av_frame_alloc ();
-+#else
-+ frame = avcodec_alloc_frame();
-+#endif
-+ if (NULL == frame)
- {
- #if DEBUG
- fprintf (stderr,
- "Failed to allocate frame\n");
- #endif
- avcodec_close (codec_ctx);
-- av_free (codec_ctx);
-+ avcodec_free_context (&codec_ctx);
- return;
- }
-
-@@ -441,9 +488,13 @@
- fprintf (stderr,
- "Failed to decode a complete frame\n");
- #endif
-- av_free (frame);
-+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
-+ av_frame_free (&frame);
-+#else
-+ avcodec_free_frame (&frame);
-+#endif
- avcodec_close (codec_ctx);
-- av_free (codec_ctx);
-+ avcodec_free_context (&codec_ctx);
- return;
- }
- calculate_thumbnail_dimensions (codec_ctx->width, codec_ctx->height,
-@@ -467,9 +518,13 @@
- err);
- av_free (encoded_thumbnail);
- }
-- av_free (frame);
-+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
-+ av_frame_free (&frame);
-+#else
-+ avcodec_free_frame (&frame);
-+#endif
- avcodec_close (codec_ctx);
-- av_free (codec_ctx);
-+ avcodec_free_context (&codec_ctx);
- }
-
-
-@@ -563,7 +618,12 @@
- return;
- }
-
-- if (NULL == (frame = avcodec_alloc_frame ()))
-+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
-+ frame = av_frame_alloc ();
-+#else
-+ frame = avcodec_alloc_frame();
-+#endif
-+ if (NULL == frame)
- {
- #if DEBUG
- fprintf (stderr,
-@@ -616,7 +676,11 @@
- fprintf (stderr,
- "Failed to decode a complete frame\n");
- #endif
-- av_free (frame);
-+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
-+ av_frame_free (&frame);
-+#else
-+ avcodec_free_frame (&frame);
-+#endif
- avcodec_close (codec_ctx);
- avformat_close_input (&format_ctx);
- av_free (io_ctx);
-@@ -643,7 +707,11 @@
- err);
- av_free (encoded_thumbnail);
- }
-- av_free (frame);
-+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
-+ av_frame_free (&frame);
-+#else
-+ avcodec_free_frame (&frame);
-+#endif
- avcodec_close (codec_ctx);
- avformat_close_input (&format_ctx);
- av_free (io_ctx);
---- a/src/plugins/previewopus_extractor.c
-+++ b/src/plugins/previewopus_extractor.c
-@@ -296,7 +296,12 @@
- /** Initialize one audio frame for reading from the input file */
- static int init_input_frame(AVFrame **frame)
- {
-- if (!(*frame = avcodec_alloc_frame())) {
-+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
-+ *frame = av_frame_alloc ();
-+#else
-+ *frame = avcodec_alloc_frame();
-+#endif
-+ if (NULL == *frame) {
- #if DEBUG
- fprintf(stderr, "Could not allocate input frame\n");
- #endif
-@@ -655,7 +660,11 @@
- av_freep(&converted_input_samples[0]);
- free(converted_input_samples);
- }
-+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
-+ av_frame_free (&input_frame);
-+#else
- avcodec_free_frame(&input_frame);
-+#endif
-
- return ret;
- }
-@@ -671,7 +680,12 @@
- int error;
-
- /** Create a new frame to store the audio samples. */
-- if (!(*frame = avcodec_alloc_frame())) {
-+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
-+ *frame = av_frame_alloc ();
-+#else
-+ *frame = avcodec_alloc_frame();
-+#endif
-+ if (NULL == *frame) {
- #if DEBUG
- fprintf(stderr, "Could not allocate output frame\n");
- #endif
-@@ -702,7 +716,11 @@
- #if DEBUG
- fprintf(stderr, "Could allocate output frame samples (error '%s')\n", get_error_text(error));
- #endif
-+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
-+ av_frame_free (frame);
-+#else
- avcodec_free_frame(frame);
-+#endif
- return error;
- }
-
-@@ -783,17 +801,29 @@
- #if DEBUG
- fprintf(stderr, "Could not read data from FIFO\n");
- #endif
-+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
-+ av_frame_free (&output_frame);
-+#else
- avcodec_free_frame(&output_frame);
-+#endif
- return AVERROR_EXIT;
- }
-
- /** Encode one frame worth of audio samples. */
- if (encode_audio_frame(output_frame, output_format_context,
- output_codec_context, &data_written)) {
-+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
-+ av_frame_free (&output_frame);
-+#else
- avcodec_free_frame(&output_frame);
-+#endif
- return AVERROR_EXIT;
- }
-+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
-+ av_frame_free (&output_frame);
-+#else
- avcodec_free_frame(&output_frame);
-+#endif
- return 0;
- }
- /** Write the trailer of the output file container. */
-@@ -907,7 +937,12 @@
- return;
- }
-
-- if (NULL == (frame = avcodec_alloc_frame ()))
-+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
-+ frame = av_frame_alloc ();
-+#else
-+ frame = avcodec_alloc_frame();
-+#endif
-+ if (NULL == frame)
- {
- #if DEBUG
- fprintf (stderr,
--- /dev/null
+#
+# Copyright (C) 2006-2012 OpenWrt.org
+# Copyright (C) 2017 Leonardo Medici
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libgphoto2
+PKG_VERSION:=2.5.14
+PKG_RELEASE:=2
+PORT_VERSION:=0.12.0
+PKG_MAINTAINER:=Leonardo Medici <leonardo_medici@me.com>
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=@SF/gphoto
+PKG_HASH:=d3ce70686fb87d6791b9adcbb6e5693bfbe1cfef9661c23c75eb8a699ec4e274
+PKG_LICENSE:=LGPL-2.1
+PKG_LICENSE_FILES:=COPYING
+
+PKG_FIXUP:=autoreconf
+PKG_LIBTOOL_PATHS:=. libgphoto2_port
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
+
+define Package/libgphoto2/Default
+ SECTION:=libs
+ CATEGORY:=Libraries
+ URL:=http://www.gphoto.org/
+endef
+
+define Package/libgphoto2
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libpthread +libltdl +libusb-compat +libusb-1.0 $(ICONV_DEPENDS)
+ TITLE:=The basic library of the gphoto2 program, version $(PKG_VERSION).
+ MENU:=1
+endef
+
+define Package/libgphoto2-port
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=libgphoto2 +libusb-1.0 +libusb-compat
+ TITLE:=Gphoto2 drivers for connect cameras
+endef
+
+define Package/libgphoto2-drivers-adc65
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for adc65 cameras
+endef
+
+define Package/libgphoto2-drivers-agfa_cl20
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for agfa_cl20 cameras
+endef
+
+define Package/libgphoto2-drivers-aox
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for aox cameras
+endef
+
+define Package/libgphoto2-drivers-ax203
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for ax203 cameras
+endef
+
+define Package/libgphoto2-drivers-barbie
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for barbie cameras
+endef
+
+define Package/libgphoto2-drivers-canon
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for canon cameras
+endef
+
+define Package/libgphoto2-drivers-casio_qv
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for casio_qv cameras
+endef
+
+define Package/libgphoto2-drivers-clicksmart310
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for clicksmart310 cameras
+endef
+
+define Package/libgphoto2-drivers-digigr8
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for digigr8 cameras
+endef
+
+define Package/libgphoto2-drivers-digita
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for digita cameras
+endef
+
+define Package/libgphoto2-drivers-dimera3500
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for dimera3500 cameras
+endef
+
+define Package/libgphoto2-drivers-directory
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for directory cameras
+endef
+
+define Package/libgphoto2-drivers-enigma13
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for enigma13 cameras
+endef
+
+define Package/libgphoto2-drivers-fuji
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for fuji cameras
+endef
+
+define Package/libgphoto2-drivers-gsmart300
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for gsmart300 cameras
+endef
+
+define Package/libgphoto2-drivers-hp215
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for hp215 cameras
+endef
+
+define Package/libgphoto2-drivers-iclick
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for iclick cameras
+endef
+
+define Package/libgphoto2-drivers-jamcam
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for jamcam cameras
+endef
+
+define Package/libgphoto2-drivers-jd11
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for jd11 cameras
+endef
+
+define Package/libgphoto2-drivers-jl2005a
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for jl2005a cameras
+endef
+
+define Package/libgphoto2-drivers-jl2005c
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for jl2005c cameras
+endef
+
+define Package/libgphoto2-drivers-kodak_dc120
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for kodak_dc120 cameras
+endef
+
+define Package/libgphoto2-drivers-kodak_dc210
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for kodak_dc210 cameras
+endef
+
+define Package/libgphoto2-drivers-kodak_dc240
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for kodak_dc240 cameras
+endef
+
+define Package/libgphoto2-drivers-kodak_dc3200
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for kodak_dc3200 cameras
+endef
+
+define Package/libgphoto2-drivers-kodak_ez200
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for kodak_ez200 cameras
+endef
+
+define Package/libgphoto2-drivers-konica
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for konica cameras
+endef
+
+define Package/libgphoto2-drivers-konica_qm150
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for konica_qm150 cameras
+endef
+
+define Package/libgphoto2-drivers-largan
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for largan cameras
+endef
+
+define Package/libgphoto2-drivers-lg_gsm
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for lg_gsm cameras
+endef
+
+define Package/libgphoto2-drivers-mars
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for mars cameras
+endef
+
+define Package/libgphoto2-drivers-dimagev
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for dimagev cameras
+endef
+
+define Package/libgphoto2-drivers-mustek
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for mustek cameras
+endef
+
+define Package/libgphoto2-drivers-panasonic_coolshot
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for panasonic_coolshot cameras
+endef
+
+define Package/libgphoto2-drivers-panasonic_l859
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for panasonic_l859 cameras
+endef
+
+define Package/libgphoto2-drivers-panasonic_dc1000
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for panasonic_dc1000 cameras
+endef
+
+define Package/libgphoto2-drivers-panasonic_dc1580
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for panasonic_dc1580 cameras
+endef
+
+define Package/libgphoto2-drivers-pccam300
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for pccam300 cameras
+endef
+
+define Package/libgphoto2-drivers-pccam600
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for pccam600 cameras
+endef
+
+define Package/libgphoto2-drivers-pentax
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for pentax cameras
+endef
+
+define Package/libgphoto2-drivers-polaroid_pdc320
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for polaroid_pdc320 cameras
+endef
+
+define Package/libgphoto2-drivers-polaroid_pdc640
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for polaroid_pdc640 cameras
+endef
+
+define Package/libgphoto2-drivers-polaroid_pdc700
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for polaroid_pdc700 cameras
+endef
+
+define Package/libgphoto2-drivers-ptp2
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for ptp2 cameras
+endef
+
+define Package/libgphoto2-drivers-ricoh
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for ricoh cameras
+endef
+
+define Package/libgphoto2-drivers-ricoh_g3
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for ricoh_g3 cameras
+endef
+
+define Package/libgphoto2-drivers-samsung
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for samsung cameras
+endef
+
+define Package/libgphoto2-drivers-sierra
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for sierra cameras
+endef
+
+define Package/libgphoto2-drivers-sipix_blink2
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for sipix_blink2 cameras
+endef
+
+define Package/libgphoto2-drivers-sipix_web2
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for sipix_web2 cameras
+endef
+
+define Package/libgphoto2-drivers-smal
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for smal cameras
+endef
+
+define Package/libgphoto2-drivers-sonix
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for sonix cameras
+endef
+
+define Package/libgphoto2-drivers-sony_dscf1
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for sony_dscf1 cameras
+endef
+
+define Package/libgphoto2-drivers-sony_dscf55
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for sony_dscf55 cameras
+endef
+
+define Package/libgphoto2-drivers-soundvision
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for soundvision cameras
+endef
+
+define Package/libgphoto2-drivers-spca50x
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for spca50x cameras
+endef
+
+define Package/libgphoto2-drivers-sq905
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for sq905 cameras
+endef
+
+define Package/libgphoto2-drivers-st2205
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for st2205 cameras
+endef
+
+define Package/libgphoto2-drivers-stv0674
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for stv0674 cameras
+endef
+
+define Package/libgphoto2-drivers-stv0680
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for stv0680 cameras
+endef
+
+define Package/libgphoto2-drivers-sx330z
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for sx330z cameras
+endef
+
+define Package/libgphoto2-drivers-topfield
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for topfield cameras
+endef
+
+define Package/libgphoto2-drivers-toshiba_pdrm11
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for toshiba_pdrm11 cameras
+endef
+
+define Package/libgphoto2-drivers-tp6801
+ $(call Package/libgphoto2/Default)
+ DEPENDS:=+libgphoto2-port
+ TITLE:=Gphoto2 drivers for tp6801 cameras
+endef
+
+CONFIGURE_ARGS += \
+ --enable-shared \
+ --enable-static \
+ --disable-rpath \
+ --with-camlibs="all" \
+ --with-gdlib=no \
+ --with-libexif=no \
+ --with-libusb=no \
+ --with-libusb-1.0=auto \
+ --with-libxml-2.0=no \
+ --without-included-ltdl \
+ --without-jpeg \
+ --without-libiconv-prefix \
+ --without-libintl-prefix \
+
+CONFIGURE_VARS += \
+ CPPFLAGS="$$$$CPPFLAGS $(ICONV_CFLAGS)" \
+ LDFLAGS="$$$$LDFLAGS $(ICONV_LDFLAGS)" \
+ LIBUSB_CFLAGS="$$$$CPPFLAGS" \
+ LIBUSB_LIBS="$$$$LDFLAGS -lusb" \
+ LIBS="-lltdl" \
+
+# LIBEXIF_CFLAGS="$$$$CPPFLAGS" \
+# LIBEXIF_LIBS="$$$$LDFLAGS -lexif" \
+
+# If OpenWrt is using the iconv stub, we disable iconv support
+# in libgphoto2 entirely since the stub lacks some essential
+# conversions like UCS-2 to UTF-8 which will let certain drivers
+# fail with "Failed to create iconv converter" .
+ifneq ($(ICONV_FULL),1)
+ CONFIGURE_VARS += am_cv_func_iconv=no am_cv_lib_iconv=no
+endif
+
+MAKE_FLAGS += \
+ LIBLTDL="" \
+
+TARGET_CFLAGS += $(FPIC)
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gphoto2{,-port}-config $(1)/usr/bin/
+ $(INSTALL_DIR) $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/gphoto2 $(1)/usr/include/
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2{,_port}.{a,so*} $(1)/usr/lib/
+ $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libgphoto2.pc $(1)/usr/lib/pkgconfig/
+ $(SED) 's,-I$$$${prefix}/include/gphoto2,,g' $(1)/usr/bin/gphoto2{,-port}-config
+ $(SED) 's,-I$$$${prefix}/include,,g' $(1)/usr/bin/gphoto2{,-port}-config
+ # remove annoying recursive symlink
+ rm -f $(1)/usr/include/gphoto2/gphoto2
+endef
+
+define Package/libgphoto2/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2{,_port}.so.* $(1)/usr/lib/
+ ln -s $(1)/usr/lib/libgphoto2_port.so.12 $(1)/usr/lib/libgphoto2_port.so.10
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/print-camera-list $(1)/usr/lib/libgphoto2/print-camera-list
+endef
+
+define Package/libgphoto2-port/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2_port/$(PORT_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2_port/$(PORT_VERSION)/*.so $(1)/usr/lib/libgphoto2_port/$(PORT_VERSION)
+endef
+
+define Package/libgphoto2-drivers-adc65/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/adc65.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-agfa_cl20/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/agfa_cl20.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-aox/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/aox.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-ax203/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/ax203.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-barbie/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/barbie.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-canon/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/canon.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-casio_qv/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/casio_qv.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-clicksmart310/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/clicksmart310.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-digigr8/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/digigr8.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-digita/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/digita.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-dimera3500/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/dimera3500.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-directory/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/directory.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-enigma13/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/enigma13.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-fuji/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/fuji.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-gsmart300/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/gsmart300.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-hp215/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/hp215.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-iclick/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/iclick.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-jamcam/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/jamcam.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-jd11/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/jd11.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-jl2005a/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/jl2005a.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-jl2005c/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/jl2005c.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-kodak_dc120/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/kodak_dc120.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-kodak_dc210/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/kodak_dc210.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-kodak_dc240/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/kodak_dc240.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-kodak_dc3200/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/kodak_dc3200.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-kodak_ez200/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/kodak_ez200.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-konica/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/konica.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-konica_qm150/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/konica_qm150.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-largan/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/largan.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-lg_gsm/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/lg_gsm.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-mars/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/mars.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-dimagev/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/dimagev.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-mustek/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/mustek.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-panasonic_coolshot/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/panasonic_coolshot.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-panasonic_l859/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/panasonic_l859.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-panasonic_dc1000/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/panasonic_dc1000.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-panasonic_dc1580/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/panasonic_dc1580.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-pccam300/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/pccam300.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-pccam600/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/pccam600.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-pentax/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/pentax.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-polaroid_pdc320/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/polaroid_pdc320.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-polaroid_pdc640/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/polaroid_pdc640.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-polaroid_pdc700/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/polaroid_pdc700.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-ptp2/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/ptp2.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-ricoh/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/ricoh.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-ricoh_g3/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/ricoh_g3.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-samsung/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/samsung.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-sierra/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/sierra.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-sipix_blink2/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/sipix_blink2.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-sipix_web2/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/sipix_web2.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-smal/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/smal.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-sonix/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/sonix.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-sony_dscf1/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/sony_dscf1.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-sony_dscf55/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/sony_dscf55.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-soundvision/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/soundvision.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-spca50x/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/spca50x.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-sq905/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/sq905.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-st2205/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/st2205.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-stv0674/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/stv0674.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-stv0680/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/stv0680.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-sx330z/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/sx330z.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-topfield/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/topfield.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-toshiba_pdrm11/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/toshiba_pdrm11.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+define Package/libgphoto2-drivers-tp6801/install
+ $(INSTALL_DIR) $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/$(PKG_VERSION)/tp6801.so $(1)/usr/lib/libgphoto2/$(PKG_VERSION)
+endef
+
+$(eval $(call BuildPackage,libgphoto2))
+$(eval $(call BuildPackage,libgphoto2-port))
+$(eval $(call BuildPackage,libgphoto2-drivers-adc65))
+$(eval $(call BuildPackage,libgphoto2-drivers-agfa_cl20))
+$(eval $(call BuildPackage,libgphoto2-drivers-aox))
+$(eval $(call BuildPackage,libgphoto2-drivers-ax203))
+$(eval $(call BuildPackage,libgphoto2-drivers-barbie))
+$(eval $(call BuildPackage,libgphoto2-drivers-canon))
+$(eval $(call BuildPackage,libgphoto2-drivers-casio_qv))
+$(eval $(call BuildPackage,libgphoto2-drivers-clicksmart310))
+$(eval $(call BuildPackage,libgphoto2-drivers-digigr8))
+$(eval $(call BuildPackage,libgphoto2-drivers-digita))
+$(eval $(call BuildPackage,libgphoto2-drivers-dimera3500))
+$(eval $(call BuildPackage,libgphoto2-drivers-directory))
+$(eval $(call BuildPackage,libgphoto2-drivers-enigma13))
+$(eval $(call BuildPackage,libgphoto2-drivers-fuji))
+$(eval $(call BuildPackage,libgphoto2-drivers-gsmart300))
+$(eval $(call BuildPackage,libgphoto2-drivers-hp215))
+$(eval $(call BuildPackage,libgphoto2-drivers-iclick))
+$(eval $(call BuildPackage,libgphoto2-drivers-jamcam))
+$(eval $(call BuildPackage,libgphoto2-drivers-jd11))
+$(eval $(call BuildPackage,libgphoto2-drivers-jl2005a))
+$(eval $(call BuildPackage,libgphoto2-drivers-jl2005c))
+$(eval $(call BuildPackage,libgphoto2-drivers-kodak_dc120))
+$(eval $(call BuildPackage,libgphoto2-drivers-kodak_dc210))
+$(eval $(call BuildPackage,libgphoto2-drivers-kodak_dc240))
+$(eval $(call BuildPackage,libgphoto2-drivers-kodak_dc3200))
+$(eval $(call BuildPackage,libgphoto2-drivers-kodak_ez200))
+$(eval $(call BuildPackage,libgphoto2-drivers-konica))
+$(eval $(call BuildPackage,libgphoto2-drivers-konica_qm150))
+$(eval $(call BuildPackage,libgphoto2-drivers-largan))
+$(eval $(call BuildPackage,libgphoto2-drivers-lg_gsm))
+$(eval $(call BuildPackage,libgphoto2-drivers-mars))
+$(eval $(call BuildPackage,libgphoto2-drivers-dimagev))
+$(eval $(call BuildPackage,libgphoto2-drivers-mustek))
+$(eval $(call BuildPackage,libgphoto2-drivers-panasonic_coolshot))
+$(eval $(call BuildPackage,libgphoto2-drivers-panasonic_l859))
+$(eval $(call BuildPackage,libgphoto2-drivers-panasonic_dc1000))
+$(eval $(call BuildPackage,libgphoto2-drivers-panasonic_dc1580))
+$(eval $(call BuildPackage,libgphoto2-drivers-pccam300))
+$(eval $(call BuildPackage,libgphoto2-drivers-pccam600))
+$(eval $(call BuildPackage,libgphoto2-drivers-pentax))
+$(eval $(call BuildPackage,libgphoto2-drivers-polaroid_pdc320))
+$(eval $(call BuildPackage,libgphoto2-drivers-polaroid_pdc640))
+$(eval $(call BuildPackage,libgphoto2-drivers-polaroid_pdc700))
+$(eval $(call BuildPackage,libgphoto2-drivers-ptp2))
+$(eval $(call BuildPackage,libgphoto2-drivers-ricoh))
+$(eval $(call BuildPackage,libgphoto2-drivers-ricoh_g3))
+$(eval $(call BuildPackage,libgphoto2-drivers-samsung))
+$(eval $(call BuildPackage,libgphoto2-drivers-sierra))
+$(eval $(call BuildPackage,libgphoto2-drivers-sipix_blink2))
+$(eval $(call BuildPackage,libgphoto2-drivers-sipix_web2))
+$(eval $(call BuildPackage,libgphoto2-drivers-smal))
+$(eval $(call BuildPackage,libgphoto2-drivers-sonix))
+$(eval $(call BuildPackage,libgphoto2-drivers-sony_dscf1))
+$(eval $(call BuildPackage,libgphoto2-drivers-sony_dscf55))
+$(eval $(call BuildPackage,libgphoto2-drivers-soundvision))
+$(eval $(call BuildPackage,libgphoto2-drivers-spca50x))
+$(eval $(call BuildPackage,libgphoto2-drivers-sq905))
+$(eval $(call BuildPackage,libgphoto2-drivers-st2205))
+$(eval $(call BuildPackage,libgphoto2-drivers-stv0674))
+$(eval $(call BuildPackage,libgphoto2-drivers-stv0680))
+$(eval $(call BuildPackage,libgphoto2-drivers-sx330z))
+$(eval $(call BuildPackage,libgphoto2-drivers-topfield))
+$(eval $(call BuildPackage,libgphoto2-drivers-toshiba_pdrm11))
+$(eval $(call BuildPackage,libgphoto2-drivers-tp6801))
--- /dev/null
+Index: libgphoto2-2.5.14/configure.ac
+===================================================================
+--- libgphoto2-2.5.14.orig/configure.ac
++++ libgphoto2-2.5.14/configure.ac
+@@ -209,7 +209,6 @@ ALL_LINGUAS="cs da de es eu fr hu it ja
+ GP_GETTEXT_HACK([${PACKAGE}-${LIBGPHOTO2_CURRENT_MIN}],[The gPhoto Team],[${MAIL_GPHOTO_TRANSLATION}])
+ AM_GNU_GETTEXT_VERSION([0.14.1])
+ AM_GNU_GETTEXT([external])
+-AM_PO_SUBDIRS()
+ AM_ICONV()
+ GP_GETTEXT_FLAGS()
+
+Index: libgphoto2-2.5.14/libgphoto2_port/configure.ac
+===================================================================
+--- libgphoto2-2.5.14.orig/libgphoto2_port/configure.ac
++++ libgphoto2-2.5.14/libgphoto2_port/configure.ac
+@@ -124,7 +124,6 @@ GP_GETTEXT_HACK([${PACKAGE}-${LIBGPHOTO2
+ ALL_LINGUAS="cs da de es eu fi fr it ja nl pl pt_BR ru sk sr sv uk vi zh_CN zh_TW"
+ AM_GNU_GETTEXT_VERSION([0.14.1])
+ AM_GNU_GETTEXT([external])
+-AM_PO_SUBDIRS()
+ AM_ICONV()
+ GP_GETTEXT_FLAGS()
--- /dev/null
+Index: libgphoto2-2.5.14/Makefile.am
+===================================================================
+--- libgphoto2-2.5.14.orig/Makefile.am
++++ libgphoto2-2.5.14/Makefile.am
+@@ -8,7 +8,7 @@ bin_SCRIPTS = gphoto2-config
+ EXTRA_DIST = HACKING MAINTAINERS TESTERS installcheck.mk
+
+ # Note: @subdirs@ lists all the directories from AC_CONFIG_SUBDIRS()
+-SUBDIRS = @subdirs@ libgphoto2 camlibs tests examples po packaging doc gphoto-m4
++SUBDIRS = @subdirs@ libgphoto2 camlibs packaging gphoto-m4
+
+ EXTRA_DIST += libgphoto2.pc.in
+ pkgconfig_DATA = libgphoto2.pc
+Index: libgphoto2-2.5.14/Makefile.in
+===================================================================
+--- libgphoto2-2.5.14.orig/Makefile.in
++++ libgphoto2-2.5.14/Makefile.in
+@@ -482,7 +482,7 @@ EXTRA_DIST = HACKING MAINTAINERS TESTERS
+ INSTALL README.in README README.packaging
+
+ # Note: @subdirs@ lists all the directories from AC_CONFIG_SUBDIRS()
+-SUBDIRS = @subdirs@ libgphoto2 camlibs tests examples po packaging doc gphoto-m4
++SUBDIRS = @subdirs@ libgphoto2 camlibs packaging gphoto-m4
+ pkgconfig_DATA = libgphoto2.pc
+ noinst_DATA = libgphoto2-uninstalled.pc
+ doc_DATA = AUTHORS COPYING NEWS ABOUT-NLS ChangeLog README \
+Index: libgphoto2-2.5.14/configure.ac
+===================================================================
+--- libgphoto2-2.5.14.orig/configure.ac
++++ libgphoto2-2.5.14/configure.ac
+@@ -635,20 +635,11 @@ gphoto-m4/Makefile
+ libgphoto2/Makefile
+ libgphoto2.pc
+ libgphoto2-uninstalled.pc
+-examples/Makefile
+-tests/Makefile
+-tests/ddb/Makefile
+-tests/ddb/check-ddb.sh
+ packaging/Makefile
+ packaging/linux-hotplug/Makefile
+ packaging/generic/Makefile
+ packaging/rpm/Makefile
+ packaging/rpm/package.spec
+-po/Makefile.in
+-doc/Makefile
+-doc/Doxyfile
+-doc/Doxyfile-internals
+-doc/api/Makefile
+ ],[
+ dnl This relies on this code being called for each of the above files
+ dnl with ac_file set to the filename.
+Index: libgphoto2-2.5.14/libgphoto2_port/Makefile.am
+===================================================================
+--- libgphoto2-2.5.14.orig/libgphoto2_port/Makefile.am
++++ libgphoto2-2.5.14/libgphoto2_port/Makefile.am
+@@ -25,7 +25,7 @@ udevscript_PROGRAMS =
+ bin_SCRIPTS = gphoto2-port-config
+
+ # The . stands for the current dir, i.e. the iolibs to build.
+-SUBDIRS = po libgphoto2_port test . doc gphoto-m4
++SUBDIRS = libgphoto2_port . gphoto-m4
+
+
+ ########################################################################
+Index: libgphoto2-2.5.14/libgphoto2_port/Makefile.in
+===================================================================
+--- libgphoto2-2.5.14.orig/libgphoto2_port/Makefile.in
++++ libgphoto2-2.5.14/libgphoto2_port/Makefile.in
+@@ -574,7 +574,7 @@ EXTRA_LTLIBRARIES = disk.la ptpip.la ser
+ bin_SCRIPTS = gphoto2-port-config
+
+ # The . stands for the current dir, i.e. the iolibs to build.
+-SUBDIRS = po libgphoto2_port test . doc gphoto-m4
++SUBDIRS = libgphoto2_port . gphoto-m4
+
+ ########################################################################
+ # All iolibs are defined as EXTRA_LTLIBRARIES. This requires that
+Index: libgphoto2-2.5.14/libgphoto2_port/configure.ac
+===================================================================
+--- libgphoto2-2.5.14.orig/libgphoto2_port/configure.ac
++++ libgphoto2-2.5.14/libgphoto2_port/configure.ac
+@@ -512,13 +512,10 @@ AC_SUBST([AM_LDFLAGS])
+ # ---------------------------------------------------------------------------
+ AC_CONFIG_FILES([
+ Makefile
+-po/Makefile.in
+ libgphoto2_port/Makefile
+ libgphoto2_port.pc
+ libgphoto2_port-uninstalled.pc
+ gphoto2-port-config
+-test/Makefile
+-doc/Makefile
+ gphoto-m4/Makefile
+ ])
+ AC_OUTPUT
-#
-# Copyright (C) 2007-2015 OpenWrt.org
-#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=libinput
-PKG_VERSION:=1.3.1
+PKG_VERSION:=1.7.3
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://www.freedesktop.org/software/libinput/
-PKG_MD5SUM:=458fc483f7227d3c4c330f4abd6dfa77
+PKG_HASH:=096d612d2711f0caa2de544976ff3729e6233511ab373808644cc2dd5affcb1d
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=COPYING
CATEGORY:=Libraries
TITLE:=a library to handle input devices
URL:=http://freedesktop.org/wiki/Software/libinput/
- DEPENDS:=+libevdev +mtdev +libudev
+ DEPENDS:=+libevdev +mtdev +libudev-fbsd
endef
define Package/libinput/description
--- a/src/libinput-util.c
+++ b/src/libinput-util.c
-@@ -216,18 +216,10 @@ parse_mouse_wheel_click_angle_property(c
- double
- parse_trackpoint_accel_property(const char *prop)
+@@ -31,7 +31,6 @@
+ #include "config.h"
+
+ #include <ctype.h>
+-#include <locale.h>
+ #include <stdarg.h>
+ #include <stdbool.h>
+ #include <stdio.h>
+--- a/src/libinput-util.h
++++ b/src/libinput-util.h
+@@ -30,7 +30,6 @@
+ #include <assert.h>
+ #include <errno.h>
+ #include <limits.h>
+-#include <locale.h>
+ #include <math.h>
+ #include <stdarg.h>
+ #include <stdbool.h>
+@@ -448,16 +447,8 @@ safe_atod(const char *str, double *val)
{
+ char *endptr;
+ double v;
- locale_t c_locale;
- double accel;
- char *endp;
- /* Create a "C" locale to force strtod to use '.' as separator */
- c_locale = newlocale(LC_NUMERIC_MASK, "C", (locale_t)0);
- if (c_locale == (locale_t)0)
-- return 0.0;
--
-- accel = strtod_l(prop, &endp, c_locale);
+- return false;
-
+- errno = 0;
+- v = strtod_l(str, &endptr, c_locale);
- freelocale(c_locale);
-+ accel = strtod(prop, &endp);
-
- if (*endp != '\0')
- return 0.0;
++ v = strtod(str, &endptr);
+ if (errno > 0)
+ return false;
+ if (str == endptr)
--- a/src/evdev-tablet.c
+++ b/src/evdev-tablet.c
-@@ -1155,9 +1155,11 @@ static void
+@@ -1204,9 +1204,11 @@ static void
tablet_mark_all_axes_changed(struct tablet_dispatch *tablet,
struct libinput_tablet_tool *tool)
{
include $(TOPDIR)/rules.mk
# Although liblz4 exports a major.minor.patch version, it isn't always
-# incremented for new releases, so use the release tag instead.
+# incremented for new releases. Check the NEWS file and instead use a
+# release tag when appropriate. (eg: PKG_VERSION:=r131)
PKG_NAME:=liblz4
-PKG_VERSION:=r131
+PKG_VERSION:=v1.7.5
PKG_RELEASE:=1
PKG_LICENSE:=BSD-2-Clause
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_PROTO:=git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_URL:=https://github.com/Cyan4973/lz4.git
+PKG_SOURCE_URL:=https://github.com/lz4/lz4.git
PKG_SOURCE_VERSION:=$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk
#
-# Copyright (C) 2011-2014 OpenWrt.org
-#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=libmpdclient
-PKG_VERSION:=2.10
+PKG_VERSION:=2.11
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://www.musicpd.org/download/libmpdclient/2/
-PGK_MD5SUM:=00606c630b905aa6196330373b366c29
+PGK_HASH:=15fe693893c0d7ea3f4c35c4016fbd0332836164178b20983eec9b470846baf6
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
PKG_LICENSE:=BSD-3-Clause
--- /dev/null
+#
+# Copyright (C) 2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libndpi
+PKG_VERSION:=1.8
+PKG_RELEASE:=1
+PKG_MAINTAINER:=Banglang Huang <banglang.huang@foxmail.com>
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/ntop/nDPI.git
+PKG_SOURCE_VERSION:=6450ae256cfd7a6006d39df4a29de32f2f6fb7eb
+
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_LICENSE:=LGPLv3
+
+PKG_INSTALL:=1
+PKG_FIXUP:=autoreconf
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/libndpi
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=Library for deep-packet inspection
+ URL:=https://github.com/ntop/nDPI
+ DEPENDS:=+libpcap +libjson-c
+endef
+
+define Package/libndpi/description
+ nDPI is an open source LGPLv3 library for deep-packet inspection.
+ Based on OpenDPI it includes ntop extensions.
+endef
+
+define Build/Configure
+ ( cd $(PKG_BUILD_DIR); ./autogen.sh )
+ $(call Build/Configure/Default)
+endef
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include/
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/include/libndpi-1.8.0/libndpi \
+ $(1)/usr/include/
+
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/lib/libndpi.so* \
+ $(1)/usr/lib/
+
+ $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libndpi.pc \
+ $(1)/usr/lib/pkgconfig/
+endef
+
+define Package/libndpi/install
+ $(INSTALL_DIR) $(1)/usr/lib/
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/lib/libndpi.so* \
+ $(1)/usr/lib/
+ $(INSTALL_DIR) $(1)/usr/bin/
+ $(CP) \
+ $(PKG_INSTALL_DIR)/usr/bin/ndpiReader \
+ $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,libndpi))
--- /dev/null
+#
+# Copyright (C) 2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libnetconf2
+
+PKG_LICENSE:=BSD-3-Clause
+PKG_MAINTAINER:=Mislav Novakovic <mislav.novakovic@sartura.hr>
+
+PKG_VERSION:=0.8.56
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_VERSION:=4d13eca938085298edbad6a731d77dfd55c8d514
+PKG_MIRROR_HASH:=88d1ab14a945c8c8c9fadfb248568294ac5f62dea3b8d99e60dbb8262f7107bc
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.bz2
+PKG_SOURCE_URL:=https://github.com/cesnet/libnetconf2/
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_SOURCE_VERSION)
+
+PKG_BUILD_ROOT:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
+PKG_BUILD_DIR:=$(PKG_BUILD_ROOT)
+
+PKG_BUILD_PARALLEL:=1
+PKG_INSTALL:=1
+
+CMAKE_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/libnetconf2
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=NETCONF library
+ URL:=$(PKG_SOURCE_URL)
+ DEPENDS:= +libyang +libssh +libopenssl
+endef
+
+define Package/libnetconf2/description
+ libnetconf2 is the NETCONF library in C intended for building NETCONF clients and servers.
+
+ libnetconf2 provides basic functions to connect NETCONF client and server to each other via
+ SSH, to send and receive NETCONF messages. NETCONF datastore implementation is not included.
+endef
+
+CMAKE_OPTIONS += \
+ -DCMAKE_INSTALL_PREFIX:PATH=/usr \
+ -DCMAKE_BUILD_TYPE:STRING=Release
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include/libnetconf2
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/libnetconf2/*.h $(1)/usr/include/libnetconf2/
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/*.h $(1)/usr/include/
+
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/libnetconf2.so* $(1)/usr/lib/
+
+ $(INSTALL_DIR) $(1)/usr/include/libnetconf2
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/include/libnetconf2/* $(1)/usr/include/libnetconf2/
+
+ $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libnetconf2.pc $(1)/usr/lib/pkgconfig/
+endef
+
+define Package/libnetconf2/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libnetconf2.so* $(1)/usr/lib/
+
+ $(INSTALL_DIR) $(1)/usr/share/libnetconf2
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/libnetconf2/*.yin $(1)/usr/share/libnetconf2/
+endef
+
+$(eval $(call BuildPackage,libnetconf2))
-#
-# Copyright (C) 2010-2014 OpenWrt.org
-#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
-LOWFAT_VERSION=0.30
-
PKG_NAME:=libowfat
-PKG_VERSION:=$(LOWFAT_VERSION)
+PKG_VERSION:=0.31
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://www.fefe.de/libowfat
-PKG_MD5SUM:=f0119532ea834ce9e80afe49d7d85512
+PKG_HASH:=d1e4ac1cfccbb7dc51d77d96398e6302d229ba7538158826c84cb4254c7e8a12
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
+PKG_BUILD_DEPENDS += libowfat/host
+
include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
# set to 1 to enable debugging
DEBUG=
LOWFAT_MAKEOPTS = $(TARGET_CONFIGURE_OPTS) \
CFLAGS="$(TARGET_CFLAGS) -I$(PKG_BUILD_DIR) -I$(STAGING_DIR)/usr/include" \
DEBUG="$(DEBUG)" \
- VERSION="$(LOWFAT_VERSION)" \
+ VERSION="$(PKG_VERSION)" \
+ OS="Linux"
+
+LOWFAT_HOST_MAKEOPTS = $(HOST_CONFIGURE_OPTS) \
+ CFLAGS="$(HOST_CFLAGS) -I$(HOST_BUILD_DIR) -I$(STAGING_DIR_HOSTPKG)/include" \
+ DEBUG="$(DEBUG)" \
+ VERSION="$(PKG_VERSION)" \
OS="Linux"
# work around a nasty gcc bug
$(MAKE) -C $(PKG_BUILD_DIR) $(LOWFAT_MAKEOPTS)
endef
+define Host/Compile
+ $(MAKE) -C $(HOST_BUILD_DIR) $(LOWFAT_HOST_MAKEOPTS) ent
+endef
+
+define Host/Install
+ $(INSTALL_DIR) $(STAGING_DIR_HOSTPKG)/bin
+ $(CP) $(HOST_BUILD_DIR)/ent $(STAGING_DIR_HOSTPKG)/bin/libowfat-ent
+endef
+
define Build/InstallDev
mkdir -p $(1)/usr/include/libowfat
$(CP) $(PKG_BUILD_DIR)/*.h $(1)/usr/include/libowfat
$(CP) $(PKG_BUILD_DIR)/*.a $(1)/usr/lib
endef
+$(eval $(call HostBuild))
$(eval $(call BuildPackage,libowfat))
--- a/GNUmakefile
+++ b/GNUmakefile
-@@ -278,6 +278,8 @@ socket_accept4.o socket_accept6.o socket
+@@ -343,6 +343,8 @@ socket_accept4.o socket_accept6.o socket
socket_local6.o socket_recv4.o socket_recv6.o socket_remote4.o \
socket_remote6.o: havesl.h
dns_nd6.o fmt_xlong.o scan_xlong.o fmt_ip6_flat.o $(TEXTCODE_OBJS): haveinline.h
iob_send.o scan_ip6if.o: havealloca.h
+@@ -372,6 +374,6 @@ update:
+ dl -n http://www.w3.org/TR/html5/entities.json
+
+ entities.h: entities.json ent
+- ./ent
++ libowfat-ent
+
+ scan_html.o: entities.h
include $(TOPDIR)/rules.mk
PKG_NAME:=libp11
-PKG_VERSION:=0.4.1
-PKG_RELEASE:=2
-PKG_MD5SUM:=70489f6dbe0b7fd72aab010c25016fa047723f67ea50ce9ae73bc8d38181b673
+PKG_VERSION:=0.4.6
+PKG_RELEASE:=1
+PKG_HASH:=03d4990c17c8dc1ba18a442a944acca6c03f4a3972be9aea6e727882f2be6d7c
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=LGPL-2.1+
-Index: libp11-0.4.1/src/Makefile.am
-===================================================================
---- libp11-0.4.1.orig/src/Makefile.am
-+++ libp11-0.4.1/src/Makefile.am
-@@ -36,12 +36,6 @@ pkcs11_la_LIBADD = $(libp11_la_OBJECTS)
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -47,13 +47,6 @@ pkcs11_la_LIBADD = $(libp11_la_OBJECTS)
pkcs11_la_LDFLAGS = $(AM_LDFLAGS) -module -shared -shrext $(SHARED_EXT) \
-avoid-version -export-symbols "$(srcdir)/pkcs11.exports"
-# OpenSSL older than 1.1.0 expected libpkcs11.so instead of pkcs11.so
-check-local: $(LTLIBRARIES)
- cd .libs && $(LN_S) -f pkcs11$(SHARED_EXT) libpkcs11$(SHARED_EXT)
+-
-install-exec-hook:
-- cd '$(DESTDIR)$(enginesdir)' && $(LN_S) -f pkcs11$(SHARED_EXT) libpkcs11$(SHARED_EXT)
+- cd '$(DESTDIR)$(enginesexecdir)' && $(LN_S) -f pkcs11$(SHARED_EXT) libpkcs11$(SHARED_EXT)
-
if WIN32
# def file required for MS users to build library
mylibdir=$(libdir)
-Index: libp11-0.4.1/src/Makefile.in
-===================================================================
---- libp11-0.4.1.orig/src/Makefile.in
-+++ libp11-0.4.1/src/Makefile.in
-@@ -839,7 +839,7 @@ distdir: $(DISTFILES)
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -844,7 +844,7 @@ distdir: $(DISTFILES)
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) config.h
installdirs:
-@@ -910,7 +910,7 @@ install-dvi-am:
+@@ -915,7 +915,7 @@ install-dvi-am:
- install-exec-am: install-libLTLIBRARIES
+ install-exec-am: install-enginesexecLTLIBRARIES install-libLTLIBRARIES
@$(NORMAL_INSTALL)
- $(MAKE) $(AM_MAKEFLAGS) install-exec-hook
+ $(MAKE) $(AM_MAKEFLAGS)
install-html: install-html-am
install-html-am:
-@@ -955,7 +955,7 @@ uninstall-am: uninstall-enginesLTLIBRARI
+@@ -960,7 +960,7 @@ uninstall-am: uninstall-enginesexecLTLIB
.MAKE: all check-am install-am install-exec-am install-strip
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am check-local clean \
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
- clean-enginesLTLIBRARIES clean-generic clean-libLTLIBRARIES \
- clean-libtool cscopelist-am ctags ctags-am distclean \
- distclean-compile distclean-generic distclean-hdr \
-@@ -963,7 +963,7 @@ uninstall-am: uninstall-enginesLTLIBRARI
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am \
- install-enginesLTLIBRARIES install-exec install-exec-am \
+ clean-enginesexecLTLIBRARIES clean-generic \
+ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
+ ctags-am distclean distclean-compile distclean-generic \
+@@ -968,7 +968,7 @@ uninstall-am: uninstall-enginesexecLTLIB
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-enginesexecLTLIBRARIES install-exec install-exec-am \
- install-exec-hook install-html install-html-am \
+ install-html install-html-am \
install-includeHEADERS install-info install-info-am \
install-libLTLIBRARIES install-man install-mylibDATA \
install-pdf install-pdf-am install-pkgconfigDATA install-ps \
-@@ -979,11 +979,6 @@ uninstall-am: uninstall-enginesLTLIBRARI
-
- $(srcdir)/config.h.in $(srcdir)/config.h.in~
-
--# OpenSSL older than 1.1.0 expected libpkcs11.so instead of pkcs11.so
--check-local: $(LTLIBRARIES)
-- cd .libs && $(LN_S) -f pkcs11$(SHARED_EXT) libpkcs11$(SHARED_EXT)
--install-exec-hook:
-- cd '$(DESTDIR)$(enginesdir)' && $(LN_S) -f pkcs11$(SHARED_EXT) libpkcs11$(SHARED_EXT)
- @WIN32_TRUE@.libs/@WIN_LIBPREFIX@p11-@LIBP11_LT_OLDEST@.dll.def: libp11.la
-
- .rc.lo:
include $(TOPDIR)/rules.mk
PKG_NAME:=libplist
-PKG_VERSION:=1.13
-PKG_RELEASE:=2
+PKG_VERSION:=2.0.0
+PKG_RELEASE:=3
PKG_MAINTAINER:=Lukasz Baj <l.baj@radytek.com>
PKG_LICENSE:=LGPL-2.1+
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/libimobiledevice/libplist.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=060eda6b1846968aa40b0d38dcf92ac46f933417
+PKG_SOURCE_VERSION:=62ec804736435fa34e37e66e228e17e2aacee1d7
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_FIXUP:=autoreconf
CONFIGURE_ARGS += \
--without-cython
+TARGET_LDFLAGS += -lz
+
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/plist $(1)/usr/include/
include $(TOPDIR)/rules.mk
PKG_NAME:=libsodium
-PKG_VERSION:=1.0.11
-PKG_RELEASE:=2
+PKG_VERSION:=1.0.12
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://download.libsodium.org/libsodium/releases
-PKG_MD5SUM:=b58928d035064b2a46fb564937b83540
+PKG_SOURCE_URL:=https://download.libsodium.org/libsodium/releases \
+https://github.com/jedisct1/libsodium/releases/download/$(PKG_VERSION)
+PKG_HASH:=b8648f1bb3a54b0251cf4ffa4f0d76ded13977d4fa7517d988f4c902dd8e2f95
PKG_FIXUP:=libtool autoreconf
PKG_USE_MIPS16:=0
--- /dev/null
+#
+# Copyright (C) 2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_LICENSE:=LGPL-2.1+ BSD-2-Clause
+PKG_MAINTAINER:=Mislav Novakovic <mislav.novakovic@sartura.hr>
+
+PKG_NAME:=libssh
+PKG_VERSION:=0.7.5
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=https://red.libssh.org/attachments/download/218/
+PKG_MD5SUM:=d3fc864208bf607ad87cdee836894feb
+
+CMAKE_INSTALL:=1
+
+PKG_BUILD_PARALLEL:=1
+PKG_INSTALL:=1
+PKG_USE_MIPS16:=0
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/libssh
+ SECTION:=libs
+ CATEGORY:=Libraries
+ URL:=$(PKG_SOURCE_URL)
+ TITLE:=SSH library
+ DEPENDS:=+libpthread +librt +zlib +libopenssl
+endef
+
+define Package/libssh/description
+ libssh is a mulitplatform C library implementing the SSHv2 and SSHv1 protocol
+ for client and server implementations.
+endef
+
+CMAKE_OPTIONS = \
+ -DCMAKE_INSTALL_PREFIX:PATH=/usr \
+ -DCMAKE_BUILD_TYPE:STRING=Release \
+ -DHAVE_STRTOULL=1 \
+ -DHAVE_GETADDRINFO=1 \
+ -DHAVE_TERMIOS_H=1 \
+ -DWITH_EXAMPLES:BOOL=OFF \
+ -DWITH_GCRYPT:BOOL=OFF \
+ -DWITH_GSSAPI:BOOL=OFF \
+ -DWITH_LIBZ:BOOL=ON \
+ -DWITH_NACL:BOOL=OFF \
+ -DWITH_PCAP:BOOL=OFF \
+ -DWITH_SERVER:BOOL=ON \
+ -DWITH_SFTP:BOOL=ON \
+ -DWITH_SSH1:BOOL=OFF \
+ -DWITH_TESTING:BOOL=OFF \
+
+ifeq ($(CONFIG_BIG_ENDIAN),y)
+CMAKE_OPTIONS += -DWITH_BIG_ENDIAN=ON
+else
+CMAKE_OPTIONS += -DWITH_BIG_ENDIAN=OFF
+endif
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include/libssh/
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/include/libssh/* $(1)/usr/include/libssh/
+
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libssh* $(1)/usr/lib/
+
+ $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/* $(1)/usr/lib/pkgconfig/
+endef
+
+define Package/libssh/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libssh* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,libssh))
--- /dev/null
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -35,10 +35,6 @@ include(DefineInstallationPaths)
+ include(DefineOptions.cmake)
+ include(CPackConfig.cmake)
+
+-# disallow in-source build
+-include(MacroEnsureOutOfSourceBuild)
+-macro_ensure_out_of_source_build("${PROJECT_NAME} requires an out of source build. Please create a separate build directory and run 'cmake /path/to/${PROJECT_NAME} [options]' there.")
+-
+ # search for libraries
+ if (WITH_ZLIB)
+ find_package(ZLIB REQUIRED)
+--- a/ConfigureChecks.cmake
++++ b/ConfigureChecks.cmake
+@@ -5,7 +5,6 @@ include(CheckFunctionExists)
+ include(CheckLibraryExists)
+ include(CheckTypeSize)
+ include(CheckCXXSourceCompiles)
+-include(TestBigEndian)
+
+ set(PACKAGE ${APPLICATION_NAME})
+ set(VERSION ${APPLICATION_VERSION})
+@@ -270,6 +269,8 @@ if (WITH_GSSAPI AND NOT GSSAPI_FOUND)
+ endif (WITH_GSSAPI AND NOT GSSAPI_FOUND)
+
+ # ENDIAN
+-if (NOT WIN32)
+- test_big_endian(WORDS_BIGENDIAN)
+-endif (NOT WIN32)
++if (WITH_BIG_ENDIAN)
++ set(WORDS_BIGENDIAN 1)
++else (WITH_BIG_ENDIAN)
++ set(WORDS_BIGENDIAN 0)
++endif (WITH_BIG_ENDIAN)
--- /dev/null
+--- a/cmake/Modules/DefineCompilerFlags.cmake
++++ b/cmake/Modules/DefineCompilerFlags.cmake
+@@ -1,7 +1,6 @@
+ # define system dependent compiler flags
+
+ include(CheckCCompilerFlag)
+-include(CheckCCompilerFlagSSP)
+
+ if (UNIX AND NOT WIN32)
+ #
+@@ -21,11 +20,6 @@ if (UNIX AND NOT WIN32)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
+ endif (WITH_FPIC)
+
+- check_c_compiler_flag_ssp("-fstack-protector" WITH_STACK_PROTECTOR)
+- if (WITH_STACK_PROTECTOR)
+- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector")
+- endif (WITH_STACK_PROTECTOR)
+-
+ if (CMAKE_BUILD_TYPE)
+ string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER)
+ if (CMAKE_BUILD_TYPE_LOWER MATCHES (release|relwithdebinfo|minsizerel))
include $(TOPDIR)/rules.mk
PKG_NAME:=libtasn1
-PKG_VERSION:=4.9
+PKG_VERSION:=4.12
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
-PKG_MD5SUM:=4f6f7a8fd691ac2b8307c8ca365bad711db607d4ad5966f6938a9d2ecd65c920
+PKG_HASH:=6753da2e621257f33f5b051cc114d417e5206a0818fe0b1ecfd6153f70934753
PKG_LICENSE:=LGPLv2.1+
PKG_LICENSE_FILES:=COPYING.LIB
--- /dev/null
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libudev-fbsd
+
+PKG_RELEASE:=1
+PKG_VERSION:=20160820
+PKG_SOURCE_VERSION:=1f21323b817e70253d3c04bc8bedd61c477d0544
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/jiixyj/libudev-fbsd.git
+
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=COPYING
+PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
+
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/libudev-fbsd
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=small udev shim for FreeBSD/devd (and other non-systemd)
+ URL:=https://github.com/jiixyj/libudev-fbsd
+ DEPENDS:=libevdev
+ PROVIDES:=libudev
+ CONFLICTS:=libudev eudev udev
+endef
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib/
+ $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/* $(1)/usr/lib/pkgconfig/
+endef
+
+define Package/libudev-fbsd/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,libudev-fbsd))
--- /dev/null
+--- a/src/libudev.c
++++ b/src/libudev.c
+@@ -354,7 +354,7 @@ udev_device_get_subsystem(struct udev_de
+
+ const char *
+ udev_device_get_sysattr_value(
+- struct udev_device *udev_device __unused, const char *sysattr)
++ __attribute__ ((unused))struct udev_device *udev_device, const char *sysattr)
+ {
+ (void)sysattr;
+ LOG("stub: udev_device_get_sysattr_value %s\n", sysattr);
+@@ -469,7 +469,7 @@ udev_device_get_parent_with_subsystem_de
+ }
+
+ struct udev_enumerate *
+-udev_enumerate_new(struct udev *udev __unused)
++udev_enumerate_new( __attribute__ ((unused))struct udev *udev)
+ {
+ LOG("udev_enumerate_new\n");
+ struct udev_enumerate *u = calloc(1, sizeof(struct udev_enumerate));
+@@ -538,7 +538,7 @@ udev_enumerate_get_list_entry(struct ude
+
+ int
+ udev_enumerate_add_match_sysname(
+- struct udev_enumerate *udev_enumerate __unused, const char *sysname)
++ __attribute__ ((unused))struct udev_enumerate *udev_enumerate, const char *sysname)
+ {
+ (void)sysname;
+ LOG("stub: udev_enumerate_add_match_sysname %s\n", sysname);
+--- a/src/libudev.h
++++ b/src/libudev.h
+@@ -24,8 +24,8 @@ void udev_unref(struct udev *udev);
+ char const *udev_device_get_devnode(struct udev_device *udev_device);
+ dev_t udev_device_get_devnum(struct udev_device *udev_device);
+ char const *udev_device_get_property_value(
+- struct udev_device *dummy __unused, char const *property);
+-struct udev *udev_device_get_udev(struct udev_device *dummy __unused);
++ __attribute__ ((unused))struct udev_device *dummy, char const *property);
++struct udev *udev_device_get_udev( __attribute__ ((unused))struct udev_device *dummy);
+ struct udev_device *udev_device_new_from_syspath(
+ struct udev *udev, char const *syspath);
+ struct udev_device *udev_device_new_from_devnum(
--- /dev/null
+--- a/src/libudev.c
++++ b/src/libudev.c
+@@ -175,7 +175,7 @@ populate_properties_list(struct udev_dev
+
+ struct udev_list_entry **list_end = &udev_device->properties_list;
+
+- for (unsigned i = 0; i < nitems(ids); ++i) {
++ for (unsigned i = 0; i < (sizeof(ids) / sizeof(ids[0])); ++i) {
+ char const *id = ids[i];
+ struct udev_list_entry *le;
+
--- /dev/null
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -11,6 +11,7 @@ install(TARGETS udev LIBRARY DESTINATION
+ install(FILES libudev.h DESTINATION include)
+
+ set(PKG_CONFIG_NAME libudev)
++set(PKG_CONFIG_DESCRIPTION small udev shim for FreeBSD/devd)
+ set(PKG_CONFIG_REQUIRES libevdev)
+ set(PKG_CONFIG_LIBDIR "\${prefix}/lib")
+ set(PKG_CONFIG_INCLUDEDIR "\${prefix}/include")
+--- a/src/pkg-config.pc.cmake
++++ b/src/pkg-config.pc.cmake
+@@ -3,6 +3,7 @@ libdir=${PKG_CONFIG_LIBDIR}
+ includedir=${PKG_CONFIG_INCLUDEDIR}
+
+ Name: ${PKG_CONFIG_NAME}
++Description: ${PKG_CONFIG_DESCRIPTION}
+ Version: 143
+ Requires: ${PKG_CONFIG_REQUIRES}
+ Libs: ${PKG_CONFIG_LIBS}
include $(TOPDIR)/rules.mk
PKG_NAME:=libuv
-PKG_VERSION:=1.10.2
+PKG_VERSION:=1.11.0
PKG_RELEASE:=1
PKG_LICENSE_FILES:=LICENSE
PKG_SOURCE:=$(PKG_NAME)-v$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://dist.libuv.org/dist/v$(PKG_VERSION)/
-PKG_MD5SUM:=fad96b56f517c1ad3f274a19a10c53b2
+PKG_MD5SUM:=29bdf5e00fb8e0c8392aac53a2cc380a
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-v$(PKG_VERSION)
PKG_BUILD_PARALLEL:=1
--- /dev/null
+#
+# Copyright (C) 2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libyang
+PKG_VERSION:=0.12.174
+PKG_RELEASE=$(PKG_SOURCE_VERSION)
+
+PKG_LICENSE:=GPL-2.0+
+PKG_MAINTAINER:=Mislav Novakovic <mislav.novakovic@sartura.hr>
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/CESNET/libyang.git
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_VERSION:=7e811613b335afc8e1b2c0ee77e7b3f371bc9175
+PKG_MIRROR_HASH:=860865b294c628ad66ca5ef6848aae8df93e46325302914dbfb14264866f1678
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
+
+PKG_BUILD_PARALLEL:=1
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/libyang
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=YANG data modeling language library
+ URL:=$(PKG_SOURCE_URL)
+ DEPENDS:=+libpcre
+endef
+
+define Package/yanglint
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=YANG data modeling language utility
+ URL:=$(PKG_SOURCE_URL)
+ DEPENDS:=+libyang
+endef
+
+define Package/libyang/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.
+endef
+
+TARGET_LDFLAGS += -lm
+
+CMAKE_OPTIONS += \
+ -DCMAKE_INSTALL_PREFIX:PATH=/usr \
+ -DCMAKE_BUILD_TYPE:STRING=Release
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libyang.so* $(1)/usr/lib/
+
+ $(INSTALL_DIR) $(1)/usr/include/libyang
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/include/libyang/* $(1)/usr/include/libyang/
+
+ $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+ $(INSTALL_CONF) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libyang.pc $(1)/usr/lib/pkgconfig/
+endef
+
+define Package/libyang/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libyang.so* $(1)/usr/lib/
+
+ $(INSTALL_DIR) $(1)/usr/lib/libyang
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/libyang/* $(1)/usr/lib/libyang/
+endef
+
+define Package/yanglint/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/yanglint $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,libyang))
+$(eval $(call BuildPackage,yanglint))
PKG_SOURCE_VERSION:=0bde52df588e8969879a2cae51c3a4774ec62472
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_MAINTAINER:= Lucian Cristian <lucian.cristian@gmail.com>
+PKG_MAINTAINER:=Lucian Cristian <lucian.cristian@gmail.com>
PKG_LICENSE:=LGPL-2.1
PKG_LICENSE_FILES:=COPYING AUTHORS
PKG_NAME:=neon
PKG_VERSION:=0.30.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.webdav.org/neon
TARGET_CFLAGS += $(FPIC)
-TARGET_CPPFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
+TARGET_CPPFLAGS += -D_GNU_SOURCE
CONFIGURE_ARGS += \
--enable-shared \
include $(TOPDIR)/rules.mk
PKG_NAME:=openldap
-PKG_VERSION:=2.4.44
+PKG_VERSION:=2.4.45
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
ftp://sunsite.cnlab-switch.ch/mirror/OpenLDAP/openldap-release/ \
ftp://ftp.nl.uu.net/pub/unix/db/openldap/openldap-release/ \
ftp://ftp.plig.org/pub/OpenLDAP/openldap-release/
-PKG_MD5SUM:=693ac26de86231f8dcae2b4e9d768e51
+PKG_MD5SUM:=00ff8301277cdfd0af728a6927042a13
PKG_FIXUP:=autoreconf
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=COPYING
-PKG_MAINTAINER:=Ted Hess <thess@kitchensync.net> Ian Leonard <antonlacon@gmail.com>
+PKG_MAINTAINER:=Ted Hess <thess@kitchensync.net>, Ian Leonard <antonlacon@gmail.com>
PKG_INSTALL:=1
include $(TOPDIR)/rules.mk
PKG_NAME:=postgresql
-PKG_VERSION:=9.5.4
-PKG_RELEASE:=4
+PKG_VERSION:=9.4.12
+PKG_RELEASE:=1
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=PostgreSQL
https://ftp.postgresql.org/pub/source/v$(PKG_VERSION) \
http://ftp.postgresql.org/pub/source/v$(PKG_VERSION) \
ftp://ftp.postgresql.org/pub/source/v$(PKG_VERSION)
-PKG_MD5SUM:=cf5e571164ad66028ecd7dd8819e3765470d45bcd440d258b686be7e69c76ed0
+PKG_MD5SUM:=fca055481875d1c49e31c28443f56472a1474b3fbe25b7ae64440c6118f82e64
PKG_BUILD_PARALLEL:=1
PKG_USE_MIPS16:=0
PKG_FIXUP:=autoreconf
-#\r
-# Copyright (C) 2016 Dana H. Myers <k6jq@comcast.net>\r
-#\r
-# This is free software, licensed under the GNU General Public License v2.\r
-# See /LICENSE for more information.\r
-#\r
-\r
-include $(TOPDIR)/rules.mk\r
-\r
-PKG_NAME:=rxtx\r
-PKG_VERSION:=2.2pre2\r
-PKG_RELEASE:=1\r
-PKG_LICENSE:=LGPL-2.1\r
-PKG_MAINTAINER:=Dana H. Myers <k6jq@comcast.net>\r
-\r
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).zip\r
-PKG_SOURCE_URL:=http://rxtx.qbang.org/pub/rxtx/\r
-PKG_MD5SUM:=7eedb18e3f33a427e2b0e9be8ce3f94c\r
-\r
-PKG_FIXUP:=patch-libtool\r
-PKG_CHECK_FORMAT_SECURITY:=0\r
-\r
-include $(INCLUDE_DIR)/package.mk\r
-\r
-define Package/rxtx\r
- SECTION:=libs\r
- CATEGORY:=Libraries\r
- TITLE:=RX/TX Support for Java serial communications\r
- URL:=http://rxtx.qbang.org/wiki/index.php/Main_Page\r
- DEPENDS:=+libpthread\r
-endef\r
-\r
-define Package/rxtx/description\r
- RX/TX Support for Java serial communications\r
-endef\r
-\r
-CONFIGURE_ARGS += \\r
- --disable-PRINTER\r
-\r
-define Package/rxtx/install\r
- $(INSTALL_DIR) \\r
- $(1)/usr/lib/classpath\r
- $(CP) $(PKG_BUILD_DIR)/$(GNU_TARGET_NAME)-gnu/.libs/*.so \\r
- $(1)/usr/lib/classpath/\r
- $(CP) $(PKG_BUILD_DIR)/RXTXcomm.jar \\r
- $(1)/usr/lib/classpath/\r
-endef\r
-\r
-$(eval $(call BuildPackage,rxtx))\r
+#
+# Copyright (C) 2016 Dana H. Myers <k6jq@comcast.net>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=rxtx
+PKG_VERSION:=2.2pre2
+PKG_RELEASE:=1
+PKG_LICENSE:=LGPL-2.1
+PKG_MAINTAINER:=Dana H. Myers <k6jq@comcast.net>
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).zip
+PKG_SOURCE_URL:=http://rxtx.qbang.org/pub/rxtx/
+PKG_MD5SUM:=7eedb18e3f33a427e2b0e9be8ce3f94c
+
+PKG_FIXUP:=patch-libtool
+PKG_CHECK_FORMAT_SECURITY:=0
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/rxtx
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=RX/TX Support for Java serial communications
+ URL:=http://rxtx.qbang.org/wiki/index.php/Main_Page
+ DEPENDS:=+libpthread
+endef
+
+define Package/rxtx/description
+ RX/TX Support for Java serial communications
+endef
+
+CONFIGURE_ARGS += \
+ --disable-PRINTER
+
+define Package/rxtx/install
+ $(INSTALL_DIR) \
+ $(1)/usr/lib/classpath
+ $(CP) $(PKG_BUILD_DIR)/$(GNU_TARGET_NAME)-gnu/.libs/*.so \
+ $(1)/usr/lib/classpath/
+ $(CP) $(PKG_BUILD_DIR)/RXTXcomm.jar \
+ $(1)/usr/lib/classpath/
+endef
+
+$(eval $(call BuildPackage,rxtx))
include $(TOPDIR)/rules.mk
PKG_NAME:=sqlite
-PKG_VERSION:=3170000
+PKG_VERSION:=3190200
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-autoconf-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.sqlite.org/2017/
-PKG_MD5SUM:=450a95a7bde697c9fe4de9ae2fffdcca
-PKG_HASH:=a4e485ad3a16e054765baf6371826b5000beed07e626510896069c0bf013874c
+PKG_HASH:=ca5361fb01cc3ad63d6fd4eb2cb0b6398e629595896d3558f7e121d37dac2ffc
PKG_LICENSE:=PUBLICDOMAIN
PKG_LICENSE_FILES:=
--- /dev/null
+#
+# Copyright (C) 2017 Yousong Zhou <yszhou4tech@gmail.com>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=udns
+PKG_VERSION:=0.4
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://www.corpit.ru/mjt/udns
+PKG_LICENSE:=LGPL-2.1
+PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
+
+PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/libudns
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=DNS Resolver Library
+ URL:=http://www.corpit.ru/mjt/udns.html
+endef
+
+define Package/libudns/description
+ UDNS is a stub DNS resolver library with ability to perform both syncronous
+ and asyncronous DNS queries.
+endef
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/* $(1)/usr/lib
+endef
+
+define Package/libudns/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libudns.so* $(1)/usr/lib/
+endef
+
+define udns-utility-template
+ define Package/udns-$(1)
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:= $(2)
+ URL:=http://www.corpit.ru/mjt/udns.html
+ DEPENDS:=+libudns
+ endef
+
+ define Package/udns-$(1)/install
+ $(INSTALL_DIR) $$(1)/usr/bin
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/$(1) $$(1)/usr/bin/
+ endef
+
+endef
+
+CONFIGURE_ARGS += $(DISABLE_IPV6)
+
+$(eval $(call udns-utility-template,dnsget,a simple DNS query tool))
+$(eval $(call udns-utility-template,rblcheck,a simple DNSBL lookups tool))
+$(eval $(call udns-utility-template,ex-rdns,a parallel rDNS resolver))
+
+$(eval $(call BuildPackage,libudns))
+$(eval $(call BuildPackage,udns-dnsget))
+$(eval $(call BuildPackage,udns-rblcheck))
+$(eval $(call BuildPackage,udns-ex-rdns))
--- /dev/null
+--- a/dev/null 2017-05-06 19:04:40.272000000 +0800
++++ b/configure.ac 2017-05-13 20:56:26.761460807 +0800
+@@ -0,0 +1,56 @@
++# Copyright 2016 Yousong Zhou
++
++AC_PREREQ([2.67])
++AC_INIT([libudns], [0.4])
++AC_CONFIG_HEADERS([config.h])
++
++AM_INIT_AUTOMAKE([foreign])
++LT_INIT
++
++dnl Checks for programs.
++AC_PROG_CC
++AC_PROG_INSTALL
++AC_PROG_LN_S
++AC_PROG_LIBTOOL
++
++dnl Checks for library functions.
++AC_CHECK_LIB(socket, connect)
++AC_CHECK_FUNCS([malloc memset socket])
++AC_CHECK_FUNCS([getopt poll])
++AC_CHECK_FUNCS([inet_pton inet_ntop],
++ [AC_DEFINE([HAVE_INET_PTON_NTOP], [1], [Have inet_pton and inet_ntop])])
++
++AC_ARG_ENABLE(ipv6,
++ AC_HELP_STRING([--disable-ipv6],[disable IPv6 support]),
++ [case "${enable_ipv6}" in
++ no)
++ AC_MSG_NOTICE([disabling IPv6 at user request])
++ ipv6=no
++ ;;
++ yes)
++ ipv6=yes
++ force_ipv6=yes
++ ;;
++ *)
++ AC_MSG_ERROR([Invalid --enable-ipv6 argument \`$enable_ipv6'])
++ ;;
++ esac
++ ], [
++ dnl If nothing is specified, assume auto-detection.
++ ipv6=yes
++ force_ipv6=no
++ ]
++)
++
++if test "x$ipv6" = "xyes"; then
++ AC_CHECK_TYPE([struct sockaddr_in6],
++ [AC_DEFINE([HAVE_IPv6], [1], [Have ipv6 support])],
++ [if test "x$force_ipv6" = "xyes"; then
++ AC_MSG_ERROR([ipv6 support requested but cannot be fulfilled])
++ fi],
++ [#include <sys/socket.h>
++ #include <netinet/in.h>])
++fi
++
++AC_CONFIG_FILES([Makefile])
++AC_OUTPUT
+--- a/dev/null 2016-01-04 02:31:18.900000000 +0800
++++ b/Makefile.am 2016-02-22 20:12:01.938987311 +0800
+@@ -0,0 +1,16 @@
++# Copyright 2016 Yousong Zhou
++
++lib_LTLIBRARIES=libudns.la
++libudns_la_SOURCES= udns_dn.c udns_dntosp.c udns_parse.c udns_resolver.c udns_init.c \
++ udns_misc.c udns_XtoX.c \
++ udns_rr_a.c udns_rr_ptr.c udns_rr_mx.c udns_rr_txt.c udns_bl.c \
++ udns_rr_srv.c udns_rr_naptr.c udns_codes.c udns_jran.c
++include_HEADERS= udns.h
++
++bin_PROGRAMS = dnsget rblcheck ex-rdns
++dnsget_SOURCES = dnsget.c
++rblcheck_SOURCES = rblcheck.c
++ex_rdns_SOURCES = ex-rdns.c
++dnsget_LDADD = $(top_builddir)/libudns.la
++rblcheck_LDADD = $(top_builddir)/libudns.la
++ex_rdns_LDADD = $(top_builddir)/libudns.la
--- /dev/null
+#
+# Copyright (C) 2017 Lucian Cristian <lucian.cristian@gmail.com>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=clamsmtp
+PKG_VERSION:=1.10
+PKG_RELEASE:=1
+
+PKG_SOURCE_URL:=http://thewalter.net/stef/software/clamsmtp/
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_HASH:=a52fdb4b26e11ece30c478a806c95b1eda16f4e73937bd560ece7017fb0df92a
+
+MAINTAINER:=Lucian Cristian <lucian.cristian@gmail.com>
+PKG_LICENSE:=GPLv2
+
+PKG_FIXUP:=autoreconf
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/clamsmtp
+ SECTION:=mail
+ CATEGORY:=Mail
+ DEPENDS:=+libpthread
+ TITLE:=clamsmtp
+ URL:=http://thewalter.net/stef/software/clamsmtp/
+endef
+
+define Package/clamsmtp/description
+ ClamSMTP is an SMTP filter that allows you to check for viruses using the ClamAV anti-virus software.
+endef
+
+define Package/clamsmtp/install
+ $(INSTALL_DIR) $(1)/usr/sbin \
+ $(1)/etc/init.d
+ $(CP) $(PKG_BUILD_DIR)/src/clamsmtpd $(1)/usr/sbin/
+ $(CP) $(PKG_BUILD_DIR)/doc/clamsmtpd.conf $(1)/etc/
+ $(INSTALL_BIN) ./files/clamsmtpd.init $(1)/etc/init.d/clamsmtpd
+endef
+
+$(eval $(call BuildPackage,clamsmtp))
--- /dev/null
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2017 Lucian Cristian
+
+START=91
+USE_PROCD=1
+
+PROG=/usr/sbin/clamsmtpd
+
+start_service(){
+ procd_open_instance
+ procd_set_param command $PROG -p /var/run/clamsmtpd.pid
+ procd_close_instance
+}
+service_triggers(){
+ procd_add_reload_trigger "clamsmtpd"
+}
include $(TOPDIR)/rules.mk
PKG_NAME:=dovecot
-PKG_VERSION:=2.2.29.1
+PKG_VERSION:=2.2.30.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.dovecot.org/releases/2.2
-PKG_HASH:=ccfa9ffb7eb91e9e87c21c108324b911250c9ffa838bffb64b1caafadcb0f388
+PKG_HASH:=f3dba79c1ceeaa9dd0633f648d3a607704bf3d0591e7d48168084c8add87189e
PKG_LICENSE:=LGPL-2.1 MIT BSD-3-Clause Unique
PKG_LICENSE_FILES:=COPYING COPYING.LGPL COPYING.MIT
include $(TOPDIR)/rules.mk
PKG_NAME:=ffmpeg
-PKG_VERSION:=3.2.4
+PKG_VERSION:=3.2.5
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://ffmpeg.org/releases/
-PKG_MD5SUM:=39fd71024ac76ba35f04397021af5606
-PKG_HASH:=6e38ff14f080c98b58cf5967573501b8cb586e3a173b591f3807d8f0660daf7a
+PKG_MD5SUM:=b53ecfcbafca973f92bfb77815cce01e
+PKG_HASH:=0c0c15e999c66003b969c7a5d61c4a7e1d3dfbf3c809c23ff5537d583dd93323
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>, \
Ian Leonard <antonlacon@gmail.com>
--- /dev/null
+#
+# Copyright (C) 2006-2012 OpenWrt.org
+# Copyright (C) 2017 Leonardo Medici
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=gphoto2
+PKG_VERSION:=2.5.14
+PKG_RELEASE:=1
+PKG_MAINTAINER:=Leonardo Medici <leonardo_medici@me.com>
+
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=@SF/gphoto
+PKG_MD5SUM:=6c6a21b5e879330cdd71ef92dce36399
+PKG_HASH:=9302d02fb472d4936988382b7277ccdc4edaf7ede56c490278912ffd0627699c
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=COPYING
+
+PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/gphoto2
+ SECTION:=multimedia
+ CATEGORY:=Multimedia
+ TITLE:=Gphoto Digital Camera Control
+ URL:=http://www.gphoto.org/
+ DEPENDS:=+libgphoto2 +libpopt +libpthread +libreadline +libncurses +libexif +libjpeg
+endef
+
+define Package/gphoto2/description
+ For downloading and controlling digital cameras
+endef
+
+CONFIGURE_ARGS += \
+ --without-aalib \
+ --without-libiconv-prefix \
+ --without-libintl-prefix \
+
+CONFIGURE_VARS += \
+ LIBGPHOTO2_CFLAGS="$$$$CFLAGS -I$(STAGING_DIR)/usr/include/gphoto2 $$$$CPPFLAGS" \
+ LIBGPHOTO2_LIBS="$$$$LDFLAGS -lgphoto2 -lgphoto2_port -lltdl" \
+ LIBEXIF_CFLAGS="$$$$CFLAGS $$$$CPPFLAGS" \
+ LIBEXIF_LIBS="$$$$LDFLAGS -lexif" \
+ POPT_CFLAGS="$$$$CFLAGS $$$$CPPFLAGS" \
+ POPT_LIBS="$$$$LDFLAGS -lpopt" \
+
+define Package/gphoto2/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/$(PKG_NAME) $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,gphoto2))
--- /dev/null
+Index: gphoto2-2.5.14/Makefile.am
+===================================================================
+--- gphoto2-2.5.14.orig/Makefile.am
++++ gphoto2-2.5.14/Makefile.am
+@@ -1,4 +1,4 @@
+-SUBDIRS = gphoto-m4 contrib doc gphoto2 packaging po tests
++SUBDIRS = gphoto-m4 contrib doc gphoto2 packaging tests
+
+ ACLOCAL_AMFLAGS = -I auto-m4 -I gphoto-m4
+ EXTRA_DIST = README.md
+Index: gphoto2-2.5.14/Makefile.in
+===================================================================
+--- gphoto2-2.5.14.orig/Makefile.in
++++ gphoto2-2.5.14/Makefile.in
+@@ -390,7 +390,7 @@ target_alias = @target_alias@
+ top_build_prefix = @top_build_prefix@
+ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+-SUBDIRS = gphoto-m4 contrib doc gphoto2 packaging po tests
++SUBDIRS = gphoto-m4 contrib doc gphoto2 packaging tests
+ ACLOCAL_AMFLAGS = -I auto-m4 -I gphoto-m4
+ EXTRA_DIST = README.md
+ all: config.h
+Index: gphoto2-2.5.14/configure.ac
+===================================================================
+--- gphoto2-2.5.14.orig/configure.ac
++++ gphoto2-2.5.14/configure.ac
+@@ -59,10 +59,7 @@ dnl ------------------------------------
+ GP_GETTEXT_HACK([],[Lutz Müller and others],[${MAIL_GPHOTO_TRANSLATION}])
+ ALL_LINGUAS="az cs da de en_GB es eu fi fr hu id is it ja nl pa pl pt_BR ro ru rw sk sr sv uk vi zh_CN zh_TW"
+ AM_GNU_GETTEXT_VERSION([0.14.1])
+-AM_GNU_GETTEXT([external])
+-AM_PO_SUBDIRS()
+ AM_ICONV()
+-GP_GETTEXT_FLAGS()
+
+ dnl We cannot use AC_DEFINE_UNQUOTED() for these definitions, as
+ dnl we require make to do insert the proper $(datadir) value
+@@ -408,7 +405,6 @@ AC_SUBST([AM_LDFLAGS])
+ # Create output files
+ # ---------------------------------------------------------------------------
+ AC_CONFIG_FILES([
+-po/Makefile.in
+ Makefile
+ gphoto2/Makefile
+ gphoto-m4/Makefile
--- /dev/null
+Index: gphoto2-2.5.14/Makefile.am
+===================================================================
+--- gphoto2-2.5.14.orig/Makefile.am
++++ gphoto2-2.5.14/Makefile.am
+@@ -1,4 +1,4 @@
+-SUBDIRS = gphoto-m4 contrib doc gphoto2 packaging tests
++SUBDIRS = gphoto-m4 contrib gphoto2 packaging
+
+ ACLOCAL_AMFLAGS = -I auto-m4 -I gphoto-m4
+ EXTRA_DIST = README.md
+Index: gphoto2-2.5.14/Makefile.in
+===================================================================
+--- gphoto2-2.5.14.orig/Makefile.in
++++ gphoto2-2.5.14/Makefile.in
+@@ -390,7 +390,7 @@ target_alias = @target_alias@
+ top_build_prefix = @top_build_prefix@
+ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+-SUBDIRS = gphoto-m4 contrib doc gphoto2 packaging tests
++SUBDIRS = gphoto-m4 contrib gphoto2 packaging
+ ACLOCAL_AMFLAGS = -I auto-m4 -I gphoto-m4
+ EXTRA_DIST = README.md
+ all: config.h
+Index: gphoto2-2.5.14/configure.ac
+===================================================================
+--- gphoto2-2.5.14.orig/configure.ac
++++ gphoto2-2.5.14/configure.ac
+@@ -408,16 +408,10 @@ AC_CONFIG_FILES([
+ Makefile
+ gphoto2/Makefile
+ gphoto-m4/Makefile
+-doc/Makefile
+ contrib/Makefile
+ packaging/Makefile
+ packaging/rpm/Makefile
+ packaging/rpm/package.spec
+-tests/data/Makefile
+-tests/staging/subdir1/Makefile
+-tests/staging/subdir2/Makefile
+-tests/staging/Makefile
+-tests/Makefile
+ ])
+ AC_OUTPUT()dnl
+
--with-ogg="$(STAGING_DIR)/usr/include" \
--with-vorbis="$(STAGING_DIR)/usr/include"
-TARGET_LDFLAGS+= -logg
+TARGET_LDFLAGS+= -logg -lvorbisidec
define Package/ices/install
$(INSTALL_DIR) $(1)/usr/bin
include $(TOPDIR)/rules.mk
PKG_NAME:=minidlna
-PKG_VERSION:=1.1.6+git-8a996b
+PKG_VERSION:=1.2.0
PKG_RELEASE:=1
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL=http://git.code.sf.net/p/minidlna/git
-PKG_SOURCE_SUBDIR=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=8a996b4b624ef45538a5de10730b8e94c55e7768
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_MIRROR_HASH:=fddbb7c96b40e335a251b919ff5c674519f266a59b8a43011761ba952c0df1b6
+PKG_SOURCE_URL:=@SF/minidlna
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_HASH:=8d34436580c4c44be25976d5e46bc5b71af69bf441c4492774eac001164c4433
PKG_LICENSE:=GPL-2.0 BSD-3-Clause
PKG_LICENSE_FILES:=COPYING LICENCE.miniupnpd
--- a/upnpsoap.c
+++ b/upnpsoap.c
-@@ -1052,6 +1052,15 @@ callback(void *args, int argc, char **ar
+@@ -1095,6 +1095,15 @@ callback(void *args, int argc, char **ar
add_res(size, duration, bitrate, sampleFrequency, nrAudioChannels,
resolution, dlna_buf, mime, detailID, ext, passed_args);
}
break;
case ESamsungSeriesCDE:
case ELGDevice:
-@@ -1314,8 +1323,11 @@ BrowseContentDirectory(struct upnphttp *
+@@ -1357,8 +1366,11 @@ BrowseContentDirectory(struct upnphttp *
if (!where[0])
sqlite3_snprintf(sizeof(where), where, "PARENT_ID = '%q'", ObjectID);
ret = 0;
if (SortCriteria && !orderBy)
{
-@@ -1354,14 +1366,16 @@ BrowseContentDirectory(struct upnphttp *
+@@ -1397,14 +1409,16 @@ BrowseContentDirectory(struct upnphttp *
SoapError(h, 709, "Unsupported or invalid sort criteria");
goto browse_error;
}
-
sql = sqlite3_mprintf("SELECT %s, %s, %s, " COLUMNS
- "from OBJECTS o left join DETAILS d on (d.ID = o.DETAIL_ID)"
+ "from OBJECTS o left join DETAILS d on (d.ID = o.DETAIL_ID)"
- " where %s %s limit %d, %d;",
+ " where %s order by d.date limit %d, %d;",
objectid_sql, parentid_sql, refid_sql,
}
if( (ret != SQLITE_OK) && (zErrMsg != NULL) )
{
-@@ -1795,7 +1809,7 @@ SearchContentDirectory(struct upnphttp *
+@@ -1838,7 +1852,7 @@ SearchContentDirectory(struct upnphttp *
(*ContainerID == '*') ? NULL :
sqlite3_mprintf("UNION ALL " SELECT_COLUMNS
"from OBJECTS o left join DETAILS d on (d.ID = o.DETAIL_ID)"
sbin_PROGRAMS = minidlnad
check_PROGRAMS = testupnpdescgen
-
--- a/configure.ac
+++ b/configure.ac
-@@ -633,6 +633,8 @@ case "$target_os" in
+@@ -644,6 +644,8 @@ case "$target_os" in
esac
include $(TOPDIR)/rules.mk
PKG_NAME:=youtube-dl
-PKG_VERSION:=2017.02.17
+PKG_VERSION:=2017.06.05
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://yt-dl.org/downloads/$(PKG_VERSION)/
-PKG_MD5SUM:=d38dbe099af22eb9af35b0e8b274dc4e
+PKG_HASH:=7ca5143fb2b5d41a9752a4c866cac3f2f261174e
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
PKG_LICENSE:=Unlicense
PKG_LICENSE_FILES:=LICENSE
PKG_MAINTAINER:=Adrian Panella <ianchi74@outlook.com>
+PKG_BUILD_DEPENDS:=python/host
include $(INCLUDE_DIR)/package.mk
define Package/youtube-dl/install
$(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/youtube-dl $(1)/usr/bin/
+
+ python -m compileall $(PKG_BUILD_DIR)/youtube_dl/
+ cd $(PKG_BUILD_DIR) && zip --quiet youtube-dl-c.zip youtube_dl/*.pyc youtube_dl/*/*.pyc
+ cd $(PKG_BUILD_DIR) && zip --quiet --junk-paths youtube-dl-c.zip youtube_dl/__main__.pyc
+ echo '#!/usr/bin/env python' > $(PKG_BUILD_DIR)/youtube-dl-c
+ cat $(PKG_BUILD_DIR)/youtube-dl-c.zip >> $(PKG_BUILD_DIR)/youtube-dl-c
+
+ $(INSTALL_BIN) -T $(PKG_BUILD_DIR)/youtube-dl-c $(1)/usr/bin/youtube-dl
endef
$(eval $(call BuildPackage,youtube-dl))
PKG_NAME:=acme
PKG_SOURCE_VERSION:=7b40cbe8c1a52041351524bcde4b37665a7cdf79
PKG_VERSION:=1.6
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_LICENSE:=GPLv3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE).tar.xz
return 1
fi
log "Using webroot dir: $webroot"
- acme_args="$acme_args --webroot \"$webroot\""
+ acme_args="$acme_args --webroot $webroot"
fi
if ! $ACME --home "$STATE_DIR" --issue $acme_args; then
include $(TOPDIR)/rules.mk
PKG_NAME:=adblock
-PKG_VERSION:=2.6.3
+PKG_VERSION:=2.7.1
PKG_RELEASE:=1
PKG_LICENSE:=GPL-3.0+
PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
* => daily updates, approx. 1.500 entries
* [openphish](https://openphish.com)
* => numerous updates on the same day, approx. 1.800 entries
- * [palevo tracker](https://palevotracker.abuse.ch)
- * => daily updates, approx. 15 entries
* [ransomware tracker](https://ransomwaretracker.abuse.ch)
* => daily updates, approx. 150 entries
* [reg_cn](https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt)
* query function to quickly identify blocked (sub-)domains, e.g. for whitelisting
* optional: force dns requests to local resolver
* optional: force overall sort / duplicate removal for low memory devices (handle with care!)
-* optional: automatic block list backup & restore, backups will be (de-)compressed and restored on the fly in case of any runtime error
+* optional: 'manual mode' to re-use blocklist backups during startup, get fresh lists only via manual reload or restart action
+* optional: automatic block list backup & restore, they will be used in case of download errors or during startup in manual mode
* optional: add new adblock sources on your own via uci config
## Prerequisites
* adb\_triggerdelay => additional trigger delay in seconds before adblock processing starts (default: '2')
* adb\_forcedns => force dns requests to local resolver (default: '0', disabled)
* adb\_forcesrt => force overall sort on low memory devices with less than 64 MB RAM (default: '0', disabled)
+ * adb\_manmode => do not automatically update blocklists during startup, use blocklist backups instead (default: '0', disabled)
## Examples
**change default dns backend to 'unbound':**
<pre><code>
wget (default):
option adb_fetch="/usr/bin/wget"
- option adb_fetchparm="--no-config --quiet --no-cache --no-cookies --max-redirect=0 --timeout=10 --no-check-certificate -O"
+ option adb_fetchparm="--quiet --no-cache --no-cookies --max-redirect=0 --timeout=10 --no-check-certificate -O"
aria2c:
option adb_fetch '/usr/bin/aria2c'
**cronjob for a regular block list update (/etc/crontabs/root):**
<pre><code>
-0 06 * * * /etc/init.d/adblock start
+0 06 * * * /etc/init.d/adblock reload
</code></pre>
**blacklist entry (/etc/adblock/adblock.blacklist):**
option adb_src_rset '{FS=\"/\"} \$3 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$3)}'
option adb_src_desc 'focus on phishing, numerous updates on the same day, approx. 1.800 entries'
-config source 'palevo'
- option enabled '0'
- option adb_src 'https://palevotracker.abuse.ch/blocklists.php?download=domainblocklist'
- option adb_src_rset '\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
- option adb_src_desc 'focus on palevo worm, daily updates, approx. 15 entries'
-
config source 'ransomware'
option enabled '0'
option adb_src 'https://ransomwaretracker.abuse.ch/downloads/RW_DOMBL.txt'
#
LC_ALL=C
PATH="/usr/sbin:/usr/bin:/sbin:/bin"
-adb_ver="2.6.3"
+adb_ver="2.7.1"
adb_sysver="$(ubus -S call system board | jsonfilter -e '@.release.description')"
adb_enabled=1
adb_debug=0
+adb_minfree=2
+adb_manmode=0
adb_forcesrt=0
adb_forcedns=0
adb_backup=0
adb_whitelist="/etc/adblock/adblock.whitelist"
adb_whitelist_rset="\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\"^\"\$1\"\\\|[.]\"\$1)}"
adb_fetch="/usr/bin/wget"
-adb_fetchparm="--no-config --quiet --no-cache --no-cookies --max-redirect=0 --timeout=10 --no-check-certificate -O"
+adb_fetchparm="--quiet --no-cache --no-cookies --max-redirect=0 --timeout=10 --no-check-certificate -O"
adb_dnslist="dnsmasq unbound"
adb_dnsprefix="adb_list"
adb_rtfile="/tmp/adb_runtime.json"
#
f_envload()
{
- local dns_up cnt=0
+ local services dns_up cnt=0
- # source in system library
+ # source in system libraries
#
if [ -r "/lib/functions.sh" ] && [ -r "/usr/share/libubox/jshn.sh" ]
then
f_log "error" "system libraries not found"
fi
- # set dns backend environment
- #
- while [ ${cnt} -le 20 ]
- do
- for dns in ${adb_dnslist}
- do
- dns_up="$(ubus -S call service list "{\"name\":\"${dns}\"}" | jsonfilter -l1 -e "@.${dns}.instances.*.running")"
- if [ "${dns_up}" = "true" ]
- then
- case "${dns}" in
- dnsmasq)
- adb_dns="dnsmasq"
- adb_dnsdir="/tmp/dnsmasq.d"
- adb_dnshidedir="${adb_dnsdir}/.adb_hidden"
- adb_dnsformat="awk '{print \"local=/\"\$0\"/\"}'"
- break 2
- ;;
- unbound)
- adb_dns="unbound"
- adb_dnsdir="/var/lib/unbound"
- adb_dnshidedir="${adb_dnsdir}/.adb_hidden"
- adb_dnsformat="awk '{print \"local-zone: \042\"\$0\"\042 static\"}'"
- break 2
- ;;
- esac
- fi
- done
- sleep 1
- cnt=$((cnt+1))
- done
-
# parse global section by callback
#
config_cb()
fi
}
- # parse 'source' section
+ # parse 'source' sections
#
parse_config()
{
config_load adblock
config_foreach parse_config source
+ # set dns backend environment
+ #
+ while [ ${cnt} -le 20 ]
+ do
+ services="$(ubus -S call service list 2>/dev/null)"
+ if [ -n "${services}" ]
+ then
+ for dns in ${adb_dnslist}
+ do
+ dns_up="$(printf "%s" "${services}" | jsonfilter -l1 -e "@.${dns}.instances.*.running")"
+ if [ "${dns_up}" = "true" ]
+ then
+ case "${dns}" in
+ dnsmasq)
+ adb_dns="${dns}"
+ adb_dnsdir="${adb_dnsdir:="/tmp/dnsmasq.d"}"
+ adb_dnshidedir="${adb_dnsdir}/.adb_hidden"
+ adb_dnsformat="awk '{print \"local=/\"\$0\"/\"}'"
+ break 2
+ ;;
+ unbound)
+ adb_dns="${dns}"
+ adb_dnsdir="${adb_dnsdir:="/var/lib/unbound"}"
+ adb_dnshidedir="${adb_dnsdir}/.adb_hidden"
+ adb_dnsformat="awk '{print \"local-zone: \042\"\$0\"\042 static\"}'"
+ break 2
+ ;;
+ esac
+ fi
+ done
+ fi
+ sleep 1
+ cnt=$((cnt+1))
+ done
if [ -z "${adb_dns}" ] || [ -z "${adb_dnsformat}" ] || [ ! -x "$(command -v ${adb_dns})" ] || [ ! -d "${adb_dnsdir}" ]
then
f_log "error" "no active/supported DNS backend found"
then
if [ "$(readlink -fn "${adb_fetch}")" = "/usr/bin/wget-nossl" ]
then
- adb_fetchparm="--no-config --quiet --no-cache --no-cookies --max-redirect=0 --timeout=10 -O"
+ adb_fetchparm="--quiet --no-cache --no-cookies --max-redirect=0 --timeout=10 -O"
elif [ "$(readlink -fn "/bin/wget")" = "/bin/busybox" ] || [ "$(readlink -fn "${adb_fetch}")" = "/bin/busybox" ]
then
adb_fetch="/bin/busybox"
#
f_dnsrestart()
{
- local cnt=0
+ local dns_up mem_free cnt=0
"/etc/init.d/${adb_dns}" restart >/dev/null 2>&1
while [ ${cnt} -le 10 ]
do
- adb_dnsup="$(ubus -S call service list "{\"name\":\"${adb_dns}\"}" | jsonfilter -l1 -e "@.${adb_dns}.instances.*.running")"
- if [ "${adb_dnsup}" = "true" ]
+ dns_up="$(ubus -S call service list "{\"name\":\"${adb_dns}\"}" | jsonfilter -l1 -e "@.${adb_dns}.instances.*.running")"
+ if [ "${dns_up}" = "true" ]
then
- break
+ mem_free="$(awk '/^MemFree/ {print int($2/1000)}' "/proc/meminfo")"
+ if [ ${mem_free} -ge ${adb_minfree} ]
+ then
+ return 0
+ fi
fi
cnt=$((cnt+1))
sleep 1
done
+ return 1
}
# f_list: backup/restore/remove block lists
fi
adb_rc=${?}
;;
+ format)
+ if [ -s "${adb_tmpdir}/tmp.whitelist" ]
+ then
+ grep -vf "${adb_tmpdir}/tmp.whitelist" "${adb_tmpfile}" | eval "${adb_dnsformat}" > "${adb_dnsfile}"
+ else
+ eval "${adb_dnsformat}" "${adb_tmpfile}" > "${adb_dnsfile}"
+ fi
+ adb_rc=${?}
+ ;;
esac
f_log "debug" "name: ${src_name}, mode: ${mode}, count: ${cnt}, in_rc: ${in_rc}, out_rc: ${adb_rc}"
}
f_rmdns
f_dnsrestart
fi
- exit 255
+ exit 1
fi
fi
}
#
f_main()
{
- local enabled url cnt sum_cnt=0 mem_total=0
- local src_name src_rset shalla_archive
- mem_total="$(awk '$1 ~ /^MemTotal/ {printf $2}' "/proc/meminfo" 2>/dev/null)"
+ local src_name src_rset shalla_archive enabled url cnt sum_cnt=0
+ local mem_total="$(awk '/^MemTotal/ {print int($2/1000)}' "/proc/meminfo")"
f_log "info " "start adblock processing ..."
- f_log "debug" "action: ${adb_action}, backup: ${adb_backup}, dns: ${adb_dns}, fetch: ${adb_fetchinfo}, memory: ${mem_total}, force srt/dns: ${adb_forcesrt}/${adb_forcedns}"
+ f_log "debug" "action: ${adb_action}, manual_mode:${adb_manmode}, backup: ${adb_backup}, dns: ${adb_dns}, fetch: ${adb_fetchinfo}, mem_total: ${mem_total}, force_srt/_dns: ${adb_forcesrt}/${adb_forcedns}"
> "${adb_rtfile}"
for src_name in ${adb_sources}
do
continue
fi
+ # manual mode
+ #
+ if [ ${adb_manmode} -eq 1 ] && [ -z "${adb_action}" ]
+ then
+ adb_rc=4
+ f_list restore
+ if [ ${adb_rc} -eq 0 ] && [ -s "${adb_tmpfile}" ]
+ then
+ f_list format
+ continue
+ fi
+ fi
+
# download block list
#
if [ "${src_name}" = "blacklist" ]
then
- cat "${url}" 2>/dev/null > "${adb_tmpload}"
+ cat "${url}" > "${adb_tmpload}"
adb_rc=${?}
elif [ "${src_name}" = "shalla" ]
then
#
if [ ${adb_rc} -eq 0 ] && [ -s "${adb_tmpfile}" ]
then
- if [ -s "${adb_tmpdir}/tmp.whitelist" ]
- then
- grep -vf "${adb_tmpdir}/tmp.whitelist" "${adb_tmpfile}" 2>/dev/null | eval "${adb_dnsformat}" > "${adb_dnsfile}"
- else
- eval "${adb_dnsformat}" "${adb_tmpfile}" > "${adb_dnsfile}"
- fi
- adb_rc=${?}
+ f_list format
if [ ${adb_rc} -ne 0 ]
then
f_list remove
#
for src_name in $(ls -dASr "${adb_tmpdir}/${adb_dnsprefix}"* 2>/dev/null)
do
- if [ ${mem_total} -ge 64000 ] || [ ${adb_forcesrt} -eq 1 ]
+ if [ ${mem_total} -ge 64 ] || [ ${adb_forcesrt} -eq 1 ]
then
if [ -s "${adb_tmpdir}/blocklist.overall" ]
then
chown "${adb_dns}":"${adb_dns}" "${adb_dnsdir}/${adb_dnsprefix}"* 2>/dev/null
f_rmtemp
f_dnsrestart
- if [ "${adb_dnsup}" = "true" ]
+ if [ ${?} -eq 0 ]
then
json_init
json_add_object "data"
#
-# Copyright (C) 2012-2016 OpenWrt.org
+# Copyright (C) 2012-2017 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=aria2
-PKG_VERSION:=1.31.0
+PKG_VERSION:=1.32.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://github.com/aria2/aria2/releases/download/release-$(PKG_VERSION)/
-PKG_HASH:=7b85619048b23406f241e38a5b1b8b0bc2cae9e80fd117810c2a71ecca813f8c
+PKG_HASH:=546e9194a9135d665fce572cb93c88f30fb5601d113bfa19951107ced682dc50
PKG_INSTALL:=1
PKG_MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>, Hsing-Wang Liao <kuoruan@gmail.com>
PKG_LICENSE:=GPL-2.0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://freefr.dl.sourceforge.net/project/atftp/
-PKG_MD5SUM:=367bf401965fbed04585b1229c2191a8
+PKG_SOURCE_URL:=@SF/$(PKG_NAME)
+PKG_HASH:=ae4c6f09cadb8d2150c3ce32d88f19036a54e8211f22d723e97864bb5e18f92d
PKG_BUILD_DEPENDS:=libpcre libreadline
include $(TOPDIR)/rules.mk
PKG_NAME:=bind
-PKG_VERSION:=9.10.4-P5
+PKG_VERSION:=9.10.5
PKG_RELEASE:=1
USERID:=bind=57:bind=57
PKG_SOURCE_URL:= \
ftp://ftp.isc.org/isc/bind9/$(PKG_VERSION) \
http://www.mirrorservice.org/sites/ftp.isc.org/isc/bind9/$(PKG_VERSION)
-PKG_MD5SUM:=c53a3e34e7aabb16820b036ae9afd3c9
+PKG_MD5SUM:=8359e000eaec76efd6dfa186c12c3b93
PKG_FIXUP:=autoreconf
PKG_REMOVE_FILES:=aclocal.m4 libtool.m4
define Package/bind-dnssec
$(call Package/bind/Default)
- TITLE+= administration tools (dnssec-keygen and dnssec-signzone only)
+ TITLE+= administration tools (dnssec-keygen, dnssec-settime and dnssec-signzone only)
endef
define Package/bind-host
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/host $(1)/usr/bin/
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/dnssec-keygen $(1)/usr/sbin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/dnssec-settime $(1)/usr/sbin/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/dnssec-signzone $(1)/usr/sbin/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/named-checkconf $(1)/usr/sbin/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/named-checkzone $(1)/usr/sbin/
define Package/bind-dnssec/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/dnssec-keygen $(1)/usr/sbin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/dnssec-settime $(1)/usr/sbin/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/dnssec-signzone $(1)/usr/sbin/
endef
include $(TOPDIR)/rules.mk
PKG_NAME:=cgi-io
-PKG_RELEASE:=1
+PKG_RELEASE:=3
PKG_LICENSE:=GPL-2.0+
INCLUDE(CheckFunctionExists)
+FIND_PATH(ubus_include_dir libubus.h)
+INCLUDE_DIRECTORIES(${ubus_include_dir})
+
ADD_DEFINITIONS(-Os -Wall -Werror --std=gnu99 -g3 -Wmissing-declarations)
SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
pid_t pid;
time_t now;
int len;
+ int status;
int fds[2];
char buf[4096];
char datestr[16] = { 0 };
return -1;
default:
+ fcntl(fds[0], F_SETFL, fcntl(fds[0], F_GETFL) | O_NONBLOCK);
now = time(NULL);
strftime(datestr, sizeof(datestr) - 1, "%Y-%m-%d", localtime(&now));
printf("Content-Disposition: attachment; "
"filename=\"backup-%s-%s.tar.gz\"\r\n\r\n", hostname, datestr);
- while ((len = read(fds[0], buf, sizeof(buf))) > 0)
- fwrite(buf, len, 1, stdout);
+ do {
+ waitpid(pid, &status, 0);
- waitpid(pid, NULL, 0);
+ while ((len = read(fds[0], buf, sizeof(buf))) > 0) {
+ fwrite(buf, len, 1, stdout);
+ fflush(stdout);
+ }
+
+ } while (!WIFEXITED(status));
close(fds[0]);
close(fds[1]);
--- /dev/null
+#
+# Copyright (C) 2017 Bjørn Mork <bjorn@mork.no>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=conserver
+PKG_VERSION:=8.2.1
+PKG_RELEASE:=1
+PKG_MAINTAINER:=Bjørn Mork <bjorn@mork.no>
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://www.conserver.com/
+PKG_HASH:=251ae01997e8f3ee75106a5b84ec6f2a8eb5ff2f8092438eba34384a615153d0
+
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/conserver
+ SECTION:=net
+ CATEGORY:=Network
+ TITLE:=Connect multiple user to a serial console with logging
+ URL:=http://www.conserver.com/
+ DEPENDS:=+libopenssl
+endef
+
+define Package/conserver/description
+ Conserver is an application that allows multiple users to watch a
+ serial console at the same time. It can log the data, allows users
+ to take write-access of a console (one at a time), and has a
+ variety of bells and whistles to accentuate that basic
+ functionality. The idea is that conserver will log all your serial
+ traffic so you can go back and review why something crashed, look
+ at changes (if done on the console), or tie the console logs into a
+ monitoring system (just watch the logfiles it creates). With
+ multi-user capabilities you can work on equipment with others,
+ mentor, train, etc. It also does all that client-server stuff so
+ that, assuming you have a network connection, you can interact with
+ any of the equipment from home or wherever.
+endef
+
+define Package/conserver/conffiles
+/etc/conserver/conserver.cf
+/etc/conserver/conserver.passwd
+/etc/conserver/console.cf
+endef
+
+CONFIGURE_ARGS += \
+ --with-openssl \
+ --sysconfdir=/etc/conserver \
+ --with-port=3109 \
+ --with-logfile=/var/log/conserver/server.log
+
+define Package/conserver/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/conserver $(1)/usr/sbin/
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/console $(1)/usr/bin/
+ $(INSTALL_DIR) $(1)/etc/conserver
+ $(INSTALL_CONF) ./files/conserver.cf $(1)/etc/conserver/
+ $(INSTALL_CONF) ./files/console.cf $(1)/etc/conserver/
+ touch $(1)/etc/conserver/conserver.passwd
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/conserver.init $(1)/etc/init.d/conserver
+endef
+
+$(eval $(call BuildPackage,conserver))
--- /dev/null
+config * {
+}
+default full {
+ rw *;
+}
+default * {
+ logfile /var/log/conserver/&.log;
+ timestamp "";
+ include full;
+}
+access * {
+ trusted 127.0.0.1;
+}
--- /dev/null
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2017 Bjørn Mork <bjorn@mork.no>
+
+START=99
+STOP=99
+
+USE_PROCD=1
+
+start_service() {
+ [ -d /var/log/conserver ] || mkdir -m 0755 -p /var/log/conserver
+ procd_open_instance
+ procd_set_param command /usr/sbin/conserver
+ procd_close_instance
+}
--- /dev/null
+config * {
+ master localhost;
+ port 3109;
+}
--- /dev/null
+diff -ur conserver-8.2.1.old/autologin/Makefile.in conserver-8.2.1/autologin/Makefile.in
+--- conserver-8.2.1.old/autologin/Makefile.in 2013-09-14 00:46:49.000000000 +0200
++++ conserver-8.2.1/autologin/Makefile.in 2016-03-30 17:11:44.489446435 +0200
+@@ -9,7 +9,7 @@
+
+ ### Installation programs and flags
+ INSTALL = @INSTALL@
+-INSTALL_PROGRAM = @INSTALL_PROGRAM@ -s
++INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ LN_S = @LN_S@
+ MKDIR = @MKDIR@
+
+diff -ur conserver-8.2.1.old/conserver/Makefile.in conserver-8.2.1/conserver/Makefile.in
+--- conserver-8.2.1.old/conserver/Makefile.in 2013-09-14 00:46:53.000000000 +0200
++++ conserver-8.2.1/conserver/Makefile.in 2016-03-30 17:11:44.509446803 +0200
+@@ -14,7 +14,7 @@
+
+ ### Installation programs and flags
+ INSTALL = @INSTALL@
+-INSTALL_PROGRAM = @INSTALL_PROGRAM@ -s
++INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ LN_S = @LN_S@
+ MKDIR = @MKDIR@
+
+diff -ur conserver-8.2.1.old/console/Makefile.in conserver-8.2.1/console/Makefile.in
+--- conserver-8.2.1.old/console/Makefile.in 2013-09-14 00:46:55.000000000 +0200
++++ conserver-8.2.1/console/Makefile.in 2016-03-30 17:11:44.481446288 +0200
+@@ -10,7 +10,7 @@
+
+ ### Installation programs and flags
+ INSTALL = @INSTALL@
+-INSTALL_PROGRAM = @INSTALL_PROGRAM@ -s
++INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ LN_S = @LN_S@
+ MKDIR = @MKDIR@
+
+diff -ur conserver-8.2.1.old/contrib/chat/Makefile.in conserver-8.2.1/contrib/chat/Makefile.in
+--- conserver-8.2.1.old/contrib/chat/Makefile.in 2013-09-14 00:47:31.000000000 +0200
++++ conserver-8.2.1/contrib/chat/Makefile.in 2016-03-30 17:11:44.501446656 +0200
+@@ -10,7 +10,7 @@
+
+ ### Installation programs and flags
+ INSTALL = @INSTALL@
+-INSTALL_PROGRAM = @INSTALL_PROGRAM@ -s
++INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ LN_S = @LN_S@
+ MKDIR = @MKDIR@
+
PKG_NAME:=davfs2
PKG_VERSION:=1.5.4
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://download.savannah.gnu.org/releases/davfs2/
PKG_FIXUP:=gettext-version autoreconf
include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
define Package/davfs2
SECTION:=net
CATEGORY:=Network
SUBMENU:=Filesystem
- DEPENDS=+libneon +kmod-fuse +libfuse
+ DEPENDS=+libneon +kmod-fuse +libfuse $(ICONV_DEPENDS) $(INTL_DEPENDS)
TITLE:=Mount a WebDAV resource as a regular file system.
URL:=http://savannah.nongnu.org/projects/davfs2/
MAINTAINER:=Federico Di Marco <fededim@gmail.com>
/etc/davfs2/davfs2.conf
endef
-TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include
+TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include # $(ICONV_CFLAGS) $(INTL_CFLAGS)
-TARGET_CPPFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
+TARGET_CPPFLAGS += -D_GNU_SOURCE # $(ICONV_CPFLAGS) $(INTL_CPPFLAGS)
CONFIGURE_VARS += \
- LDFLAGS="$(TARGET_LDFLAGS) -L$(TOOLCHAIN_DIR)/usr/lib -L$(TOOLCHAIN_DIR)/lib"
+ LDFLAGS="$(TARGET_LDFLAGS) -L$(TOOLCHAIN_DIR)/usr/lib -L$(TOOLCHAIN_DIR)/lib $(if $(INTL_FULL),-lintl) $(if $(ICONV_FULL),-liconv)" #$(INTL_LDFLAGS) $(ICONV_LDFLAGS)
-CONFIGURE_ARGS += --with-neon="$(STAGING_DIR)/usr"
+CONFIGURE_ARGS += --with-neon="$(STAGING_DIR)/usr" --enable-largefile #--with-libintl-prefix=$(INTL_PREFIX) --with-libiconv-prefix=$(ICONV_PREFIX)
define Package/davfs2/install
$(INSTALL_DIR) $(1)/usr/sbin
--- /dev/null
+diff --git a/src/webdav.c b/src/webdav.c
+index 1ff7c7f..74cd957 100644
+--- a/src/webdav.c
++++ b/src/webdav.c
+@@ -25,7 +25,7 @@
+ #ifdef HAVE_FCNTL_H
+ #include <fcntl.h>
+ #endif
+-#ifdef HAVE_ICONV_H
++#ifdef HAVE_ICONV
+ #include <iconv.h>
+ #endif
+ #ifdef HAVE_LANGINFO_H
+@@ -231,7 +231,7 @@ static int initialized;
+ Needed by ssl_verify() which may be called at any time. */
+ static int have_terminal;
+
+-#ifdef HAVE_ICONV_H
++#ifdef HAVE_ICONV
+ /* Handle to convert character encoding from utf-8 to LC_CTYPE.
+ If NULL no conversion is done. */
+ static iconv_t from_utf_8;
+@@ -264,7 +264,7 @@ static char **cookie_list;
+ /* Private function prototypes and inline functions */
+ /*==================================================*/
+
+-#ifdef HAVE_ICONV_H
++#ifdef HAVE_ICONV
+ static void
+ convert(char **s, iconv_t conv);
+ #endif
+@@ -337,7 +337,7 @@ dav_init_webdav(const dav_args *args)
+ if (args->neon_debug & ~NE_DBG_HTTPPLAIN)
+ syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "Initializing webdav");
+
+-#ifdef HAVE_ICONV_H
++#ifdef HAVE_ICONV
+ char *lc_charset = nl_langinfo(CODESET);
+ if (lc_charset && strcasecmp(lc_charset, "UTF-8") != 0) {
+ from_utf_8 = iconv_open(lc_charset, "UTF-8");
include $(TOPDIR)/rules.mk
PKG_NAME:=dnscrypt-proxy
-PKG_VERSION:=1.9.4
-PKG_RELEASE:=3
+PKG_VERSION:=1.9.5
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=http://download.dnscrypt.org/dnscrypt-proxy
-PKG_MD5SUM:=fdf4a708e7922e13b14555f315ca8d5361aec89b0595b06fdbbcaacfa4e6f11e
+PKG_SOURCE_URL:=http://download.dnscrypt.org/dnscrypt-proxy \
+https://github.com/jedisct1/dnscrypt-proxy/releases/download/$(PKG_VERSION)
+PKG_HASH:=e89f5b9039979ab392302faf369ef7593155d5ea21580402a75bbc46329d1bb6
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
define Package/dnscrypt-proxy-resolvers
$(call Package/dnscrypt-proxy/Default)
TITLE:=Package with current list of dnscrypt-proxy resolvers
- VERSION:=$(PKG_VERSION)+git-20161129-f17bace-$(PKG_RELEASE)
+ VERSION:=$(PKG_VERSION)+git-20170530-60baef4-$(PKG_RELEASE)
endef
define Package/dnscrypt-proxy-resolvers/description
# option ephemeral_keys '0'
# more details at https://github.com/jedisct1/dnscrypt-proxy#public-key-client-authentication
# option client_key '/path/to/client_key'
+ # option log_level '6'
# option syslog '1'
# option syslog_prefix 'dnscrypt-proxy'
# option query_log_file '/path/to/logfile'
}
create_config_file() {
- local address port resolver resolvers_list ephemeral_keys client_key syslog syslog_prefix local_cache query_log_file block_ipv6 provider_name provider_key resolver_address
+ local address port resolver resolvers_list ephemeral_keys client_key log_level syslog syslog_prefix local_cache query_log_file block_ipv6 provider_name provider_key resolver_address
local config_path="$2"
+ local plugins_support_enabled=$(dnscrypt-proxy --version | grep 'Support for plugins: present' | wc -l)
[ ! -d "$CONFIG_DIR" ] && mkdir -p "$CONFIG_DIR"
[ -f "$config_path" ] && rm "$config_path"
config_get client_key $1 'client_key' ''
config_get syslog_prefix $1 'syslog_prefix' 'dnscrypt-proxy'
config_get query_log_file $1 'query_log_file' ''
+ config_get log_level $1 'log_level' '6'
config_get_bool syslog $1 'syslog' '1'
config_get_bool ephemeral_keys $1 'ephemeral_keys' '0'
config_get_bool local_cache $1 'local_cache' '0'
config_get_bool block_ipv6 $1 'block_ipv6' '0'
-
+
append_param_not_empty "ResolverName" "$resolver" $config_path
append_param "ResolversList" "$resolvers_list" $config_path
append_param_not_empty "ProviderName" "$provider_name" $config_path
append_param "LocalAddress" "$address:$port" $config_path
append_param_not_empty "ClientKey" "$client_key" $config_path
append_on_off "EphemeralKeys" $ephemeral_keys $config_path
+ append_param "LogLevel" "$log_level" $config_path
append_on_off "Syslog" $syslog $config_path
append_param "SyslogPrefix" "$syslog_prefix" $config_path
append_on_off "LocalCache" $local_cache $config_path
append_param_not_empty "QueryLogFile" "$query_log_file" $config_path
- append_yes_no "BlockIPv6" $block_ipv6 $config_path
+ if [ $plugins_support_enabled -ne 0 ]
+ then
+ append_yes_no "BlockIPv6" $block_ipv6 $config_path
+ else
+ log_ignored_param "block_ipv6"
+ fi
+
+ if [ $plugins_support_enabled -ne 0 ]
+ then
+ config_list_foreach $1 'blacklist' append_blacklists $config_path
+ else
+ log_ignored_param "blacklist"
+ fi
- config_list_foreach $1 'blacklist' append_blacklists $config_path
}
+log_ignored_param() {
+ local param_name=$1
+ logger -t dnscrypt-proxy -p user.warn dnscrypt-proxy plugins support not present, ignoring $param_name parameter...
+}
+
+
append_on_off() {
local param_name=$1
local param_value=$2
-Name,Full name,Description,Location,Coordinates,URL,Version,DNSSEC validation,No logs,Namecoin,Resolver address,Provider name,Provider public key,Provider public key TXT record\r
-adguard-dns-family-ns1,Adguard DNS Family Protection 1,Adguard DNS with safesearch and adult content blocking,Anycast,,https://adguard.com/en/adguard-dns/overview.html,1,no,yes,no,176.103.130.132:5443,2.dnscrypt.family.ns1.adguard.com,B831:5DD7:B14B:6EE3:20A4:70DC:2ED6:B1AA:398C:C9E5:86F8:5D45:45D6:B8C9:B500:5ABA,pk.family.ns1.adguard.com\r
-adguard-dns-family-ns2,Adguard DNS Family Protection 2,Adguard DNS with safesearch and adult content blocking,Anycast,,https://adguard.com/en/adguard-dns/overview.html,1,no,yes,no,176.103.130.134:5443,2.dnscrypt.family.ns2.adguard.com,8C21:17A9:EBC1:57D6:FB64:056F:0ADB:C11C:5D83:6734:73C4:6E25:8D9B:2F57:D4EE:351F,pk.family.ns2.adguard.com\r
-adguard-dns-ns1,Adguard DNS 1,Remove ads and protect your computer from malware,Anycast,,https://adguard.com/en/adguard-dns/overview.html,1,no,yes,no,176.103.130.130:5443,2.dnscrypt.default.ns1.adguard.com,D12B:47F2:52DC:F2C2:BBF8:9910:86EA:F79C:E449:5D8B:16C8:A0C4:322E:52CA:3F39:0873,pk.default.ns1.adguard.com\r
-adguard-dns-ns2,Adguard DNS 2,Remove ads and protect your computer from malware,Anycast,,https://adguard.com/en/adguard-dns/overview.html,1,no,yes,no,176.103.130.131:5443,2.dnscrypt.default.ns2.adguard.com,81D0:02D3:6A4C:A50C:473B:7479:650F:E12E:02B3:21CB:6138:562A:208E:403D:FDC5:5E94,pk.default.ns2.adguard.com\r
-cisco,Cisco OpenDNS,Remove your DNS blind spot,Anycast,,https://www.opendns.com,1,no,no,no,208.67.220.220,2.dnscrypt-cert.opendns.com,B735:1140:206F:225D:3E2B:D822:D7FD:691E:A1C3:3CC8:D666:8D0C:BE04:BFAB:CA43:FB79,\r
-cisco-familyshield,Cisco OpenDNS with FamilyShield,Block websites not suitable for children,Anycast,,https://www.opendns.com/home-internet-security/parental-controls/,1,no,no,no,208.67.220.123,2.dnscrypt-cert.opendns.com,B735:1140:206F:225D:3E2B:D822:D7FD:691E:A1C3:3CC8:D666:8D0C:BE04:BFAB:CA43:FB79,\r
-cisco-ipv6,Cisco OpenDNS over IPv6,Cisco OpenDNS IPv6 sandbox,Anycast,,https://www.opendns.com/about/innovations/ipv6/,1,no,no,no,[2620:0:ccc::2]:443,2.dnscrypt-cert.opendns.com,B735:1140:206F:225D:3E2B:D822:D7FD:691E:A1C3:3CC8:D666:8D0C:BE04:BFAB:CA43:FB79,\r
-cisco-port53,Cisco OpenDNS backward compatibility port 53,Remove your DNS blind spot,Anycast,,https://www.opendns.com,1,no,no,no,208.67.220.220:53,2.dnscrypt-cert.opendns.com,B735:1140:206F:225D:3E2B:D822:D7FD:691E:A1C3:3CC8:D666:8D0C:BE04:BFAB:CA43:FB79,\r
-cloudns-syd,CloudNS Sydney,CloudNS is an Australian based security focused DNS provider,"Sydney, AU",,https://cloudns.com.au,1,yes,yes,no,113.20.8.17,2.dnscrypt-cert-2.cloudns.com.au,67A4:323E:581F:79B9:BC54:825F:54FE:1025:8B4F:37EB:0D07:0BCE:4010:6195:D94F:E330,\r
-cs-cfi,CS cryptofree France DNSCrypt server,provided by cryptostorm.is,"Paris, France",,https://cryptostorm.is,1,no,yes,no,212.83.175.31,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
-cs-cfii,CS secondary cryptofree France DNSCrypt server,provided by cryptostorm.is,"Paris, France",,https://cryptostorm.is,1,no,yes,no,195.154.61.33,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
-cs-ch,CS Switzerland DNSCrypt server,provided by cryptostorm.is,"Baar, Switzerland",,https://cryptostorm.is,1,no,yes,no,185.60.147.77,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
-cs-de,CS Germany DNSCrypt server,provided by cryptostorm.is,"Frankfurt, Germany",,https://cryptostorm.is,1,no,yes,no,46.165.222.246,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
-cs-fr2,CS secondary France DNSCrypt server,provided by cryptostorm.is,"Paris, France",,https://cryptostorm.is,1,no,yes,yes,212.129.46.32,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
-cs-rome,CS Italy DNSCrypt server,provided by cryptostorm.is,"Buffalo, NY",,https://cryptostorm.is,1,no,yes,no,95.141.47.58,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
-cs-useast,CS New York City NY US DNSCrypt server,provided by cryptostorm.is,"Buffalo, NY",,https://cryptostorm.is,1,no,yes,no,173.234.159.235,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
-cs-usnorth,CS Chicago IL US DNSCrypt server,provided by cryptostorm.is,"Chicago, IL",,https://cryptostorm.is,1,no,yes,no,173.234.56.115,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
-cs-ussouth,CS Dallas TX US DNSCrypt server,provided by cryptostorm.is,"Dallas, TX",,https://cryptostorm.is,1,no,yes,no,70.32.38.67,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
-cs-ussouth2,CS Atlanta GA US DNSCrypt server,provided by cryptostorm.is,"Atlanta, GA",,https://cryptostorm.is,1,no,yes,no,108.62.19.131,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
-cs-uswest,CS Seattle WA US DNSCrypt server,provided by cryptostorm.is,"Seattle, WA",,https://cryptostorm.is,1,no,yes,yes,76.164.234.11,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
-cs-uswest2,CS Las Vegas NV US DNSCrypt server,provided by cryptostorm.is,"Las Vegas, NV",,https://cryptostorm.is,1,no,yes,no,104.238.194.235,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
-d0wn-au-ns1,D0wn Resolver Australia 01,Server provided by Martin 'd0wn' Albus,Australia,,https://dns.d0wn.biz,1,no,yes,yes,27.100.36.191,2.dnscrypt-cert.au.d0wn.biz,A7D9:0F8E:9A98:1381:176A:3D25:36DE:E865:8538:9CD8:78BC:C3B5:A146:23F1:C2EF:58D8,pubkey.au.dnscrypt.d0wn.biz\r
-d0wn-bg-ns1,D0wn Resolver Bulgaria 01,Server provided by Martin 'd0wn' Albus,Bulgaria,,https://dns.d0wn.biz,1,no,yes,yes,217.12.203.133,2.dnscrypt-cert.bg.d0wn.biz,423C:D823:B3EA:2015:F027:ECF1:5704:3EB7:764A:D02D:9447:56E6:51FD:D06F:E571:2FCC,pubkey.bg.dnscrypt.d0wn.biz\r
-d0wn-cy-ns1,D0wn Resolver Cyprus 01,Server provided by Martin 'd0wn' Albus,Cyprus,,https://dns.d0wn.biz,1,no,yes,yes,213.169.148.11,2.dnscrypt-cert.cy.d0wn.biz,2144:4FE7:59C3:13B9:FABB:FC2A:F975:9F9C:CD9A:2ED7:0978:3A25:7347:4B83:8F86:EA2B,pubkey.cy.dnscrypt.d0wn.biz\r
-d0wn-de-ns1,D0wn Resolver Germany 01,Server provided by Martin 'd0wn' Albus,Germany,,https://dns.d0wn.biz,1,no,yes,yes,82.211.31.248,2.dnscrypt-cert.de.d0wn.biz,B040:19F8:8D49:4682:41E3:EB58:5F61:173F:EF8E:55DA:0597:2DB7:27BB:C153:1DD8:D109,pubkey.de.dnscrypt.d0wn.biz\r
-d0wn-fr-ns2,D0wn Resolver France 02,Server provided by Martin 'd0wn' Albus,France,,https://dns.d0wn.biz,1,no,yes,yes,37.187.0.40,2.dnscrypt-cert.fr2.d0wn.biz,25A7:DB7B:7835:55D5:7DA4:7C0C:57F8:9C5F:0220:3D09:67E3:585A:723E:E0D1:CB38:F767,pubkey.fr2.dnscrypt.d0wn.biz\r
-d0wn-es-ns1,D0wn Resolver Spain 01- d0wn,Server provided by Martin 'd0wn' Albus,Spain,,https://dns.d0wn.biz,1,no,yes,yes,91.142.220.29,2.dnscrypt-cert.es.d0wn.biz,EB09:E854:AEDA:9705:CB47:ED69:EADD:4156:3653:82C5:C88D:A2E3:6917:3B54:4774:7505,pubkey.es.dnscrypt.d0wn.biz\r
-d0wn-gr-ns1,D0wn Resolver Greece 01,Server provided by Martin 'd0wn' Albus,Greece,,https://dns.d0wn.biz,1,no,yes,yes,85.25.105.193,2.dnscrypt-cert.gr.d0wn.biz,B19C:0B5C:48F2:58FA:0BE4:67F4:5F50:BC7F:985F:C544:8A4F:BC9D:5574:5A35:5701:8009,pubkey.gr.dnscrypt.d0wn.biz\r
-d0wn-hk-ns1,D0wn Resolver Hong Kong 01,Server provided by Martin 'd0wn' Albus,Hong Kong,,https://dns.d0wn.biz,1,no,yes,yes,45.124.66.200,2.dnscrypt-cert.hk.d0wn.biz,84ED:0DFF:7967:5DBD:2D93:65A2:A6AB:7F90:146F:A50B:048C:8C75:651B:AA55:7129:6740,pubkey.hk.dnscrypt.d0wn.biz\r
-d0wn-is-ns1,D0wn Resolver Iceland 01,Server provided by Martin 'd0wn' Albus,Iceland,,https://dns.d0wn.biz,1,no,yes,yes,37.235.49.61,2.dnscrypt-cert.is.d0wn.biz,2B28:974E:073A:6B38:722A:5BE1:F7A0:250C:508F:A809:238F:8F3D:76D8:6098:20D7:B2D9,pubkey.is.dnscrypt.d0wn.biz\r
-d0wn-lu-ns1,D0wn Resolver Luxembourg 01,Server provided by Martin 'd0wn' Albus,Luxembourg,,https://dns.d0wn.biz,1,no,yes,yes,104.244.72.13,2.dnscrypt-cert.lu.d0wn.biz,737B:B68B:7D3C:896F:260D:91C3:60A6:AD64:8CD3:1B22:4D5F:7089:490C:539F:2EC6:C309,pubkey.lu.dnscrypt.d0wn.biz\r
-d0wn-lu-ns1-ipv6,D0wn Resolver Luxembourg 01 over IPv6,Server provided by Martin 'd0wn' Albus,Luxembourg,,https://dns.d0wn.biz,1,no,yes,yes,[2605:6400:30:fbb5:0:1ce:1ce:babe]:443,2.dnscrypt-cert.lu.d0wn.biz,737B:B68B:7D3C:896F:260D:91C3:60A6:AD64:8CD3:1B22:4D5F:7089:490C:539F:2EC6:C309,pubkey.lu.dnscrypt.d0wn.biz\r
-d0wn-lv-ns1,D0wn Resolver Latvia 01,Server provided by Martin 'd0wn' Albus,Latvia,,https://dns.d0wn.biz,1,no,yes,yes,89.111.13.60,2.dnscrypt-cert.lv.d0wn.biz,9AC3:6B4C:7ADB:E7D6:D697:B6BF:151C:151A:B291:8C5D:B912:15F8:B986:5926:33A4:A5E1,pubkey.lv.dnscrypt.d0wn.biz\r
-d0wn-lv-ns2,D0wn Resolver Latvia 02,Server provided by Martin 'd0wn' Albus,Latvia,,https://dns.d0wn.biz,1,no,yes,yes,185.86.151.28,2.dnscrypt-cert.lv2.d0wn.biz,B111:F80C:E3E0:1C36:CC73:0995:009E:6351:EF08:0503:309D:9417:7AA3:8C67:916D:0CDF,pubkey.lv.dnscrypt.d0wn.biz\r
-d0wn-lv-ns2-ipv6,D0wn Resolver Latvia 01 over IPv6,Server provided by Martin 'd0wn' Albus,Latvia,,https://dns.d0wn.biz,1,no,yes,yes,[2a02:7aa0:1201::f60e:2719]:443,2.dnscrypt-cert.lv2.d0wn.biz,B111:F80C:E3E0:1C36:CC73:0995:009E:6351:EF08:0503:309D:9417:7AA3:8C67:916D:0CDF,pubkey.lv.dnscrypt.d0wn.biz\r
-d0wn-nl-ns3,D0wn Resolver Netherlands 03,Server provided by Martin 'd0wn' Albus,Netherlands,,https://dns.d0wn.biz,1,no,yes,yes,185.133.72.116,2.dnscrypt-cert.nl3.d0wn.biz,01FC:1AA9:F71F:F09E:55CE:0D04:9ACA:2B11:9536:319E:04A9:C3AE:77CB:127D:4C53:0651,pubkey.nl3.dnscrypt.d0wn.biz\r
-d0wn-nl-ns3-ipv6,D0wn Resolver Netherlands 03 over IPv6,Server provided by Martin 'd0wn' Albus,Netherlands,,https://dns.d0wn.biz,1,no,yes,yes,[2a06:7240:5:601:dead:beef:e3e7:7a9d]:443,2.dnscrypt-cert.nl3.d0wn.biz,01FC:1AA9:F71F:F09E:55CE:0D04:9ACA:2B11:9536:319E:04A9:C3AE:77CB:127D:4C53:0651,pubkey.nl2.dnscrypt.d0wn.biz\r
-d0wn-random-ns1,D0wn Resolver Moldova 01,Server provided by Martin 'd0wn' Albus,Moldova,,https://dns.d0wn.biz,1,no,yes,yes,178.17.170.133,2.dnscrypt-cert.random.d0wn.biz,A420:867F:ED5C:024C:C86A:EECE:AA05:194B:017F:D2FF:9E72:385A:874F:8CE5:6832:ED2E,pubkey.random.dnscrypt.d0wn.biz\r
-d0wn-random-ns2,D0wn Resolver Netherlands 02,Server provided by Martin 'd0wn' Albus,Netherlands,,https://dns.d0wn.biz,1,no,yes,yes,185.14.29.140,2.dnscrypt-cert.random2.d0wn.biz,7D73:F486:3C01:4CC9:B278:D107:F254:7A4F:1EA2:1081:07B0:CB82:645A:D8A4:B98A:B327,pubkey.random2.dnscrypt.d0wn.biz\r
-d0wn-ro-ns1,D0wn Resolver Romania 01,Server provided by Martin 'd0wn' Albus,Romania,,https://dns.d0wn.biz,1,no,yes,yes,77.81.104.121,2.dnscrypt-cert.ro.d0wn.biz,DA9E:6882:B0F8:335E:B5F4:A059:1B7D:EE6F:BD55:4451:93B4:13BF:AFFC:7D26:4527:CE1A,pubkey.ro.dnscrypt.d0wn.biz\r
-d0wn-ro-ns1-ipv6,D0wn Resolver Romania 01 over IPv6,Server provided by Martin 'd0wn' Albus,Romania,,https://dns.d0wn.biz,1,no,yes,yes,[2a04:9dc0:c1:7::cb9:f785]:443,2.dnscrypt-cert.ro.d0wn.biz,DA9E:6882:B0F8:335E:B5F4:A059:1B7D:EE6F:BD55:4451:93B4:13BF:AFFC:7D26:4527:CE1A,pubkey.ro.dnscrypt.d0wn.biz\r
-d0wn-ru-ns1,D0wn Resolver Russia 01,Server provided by Martin 'd0wn' Albus,Russia,,https://dns.d0wn.biz,1,no,yes,yes,91.214.71.181,2.dnscrypt-cert.ru.d0wn.biz,0ECA:BC40:E0A1:335F:0221:4240:AB86:2919:D16A:2393:CCEB:4B40:9EB9:4F24:3077:ED99,pubkey.ru.dnscrypt.d0wn.biz\r
-d0wn-se-ns1,D0wn Resolver Sweden 01,Server provided by Martin 'd0wn' Albus,Sweden,,https://dns.d0wn.biz,1,no,yes,yes,95.215.44.124,2.dnscrypt-cert.se.d0wn.biz,9D4F:762B:DD24:F77A:64B4:7E0F:F5C6:93FD:A02A:39E9:8FEC:0CEE:F252:3A5F:A403:C032,pubkey.se.dnscrypt.d0wn.biz\r
-d0wn-se-ns1-ipv6,D0wn Resolver Sweden 01 over IPv6,Server provided by Martin 'd0wn' Albus,Sweden,,https://dns.d0wn.biz,1,no,yes,yes,[2a02:7aa0:1619::4f50:a69]:443,2.dnscrypt-cert.se.d0wn.biz,9D4F:762B:DD24:F77A:64B4:7E0F:F5C6:93FD:A02A:39E9:8FEC:0CEE:F252:3A5F:A403:C032,pubkey.se.dnscrypt.d0wn.biz\r
-d0wn-sg-ns1,D0wn Resolver Singapore 01,Server provided by Martin 'd0wn' Albus,Singapore,,https://dns.d0wn.biz,1,no,yes,yes,128.199.248.105,2.dnscrypt-cert.sg.d0wn.biz,D82B:2B76:1DA0:8470:B55B:820C:FAAB:9F32:D632:E9E0:5616:2CE7:7D21:E970:98FF:4A34,pubkey.sg.dnscrypt.d0wn.biz\r
-d0wn-sg-ns2,D0wn Resolver Singapore 02,Server provided by Martin 'd0wn' Albus,Singapore,,https://dns.d0wn.biz,1,no,yes,yes,210.16.120.139,2.dnscrypt-cert.sg2.d0wn.biz,0F00:63C4:6EAF:29C3:29CD:E125:2033:6F0A:0C72:7CDD:F1F4:3D47:F95D:02BC:07F7:9FFC,pubkey.sg2.dnscrypt.d0wn.biz\r
-d0wn-sg-ns2-ipv6,D0wn Resolver Singapore 01 over IPv6,Server provided by Martin 'd0wn' Albus,Singapore,,https://dns.d0wn.biz,1,no,yes,yes,[2403:5680::1:200f]:443,2.dnscrypt-cert.sg2.d0wn.biz,0F00:63C4:6EAF:29C3:29CD:E125:2033:6F0A:0C72:7CDD:F1F4:3D47:F95D:02BC:07F7:9FFC,pubkey.sg.dnscrypt.d0wn.biz\r
-d0wn-tz-ns1,D0wn Resolver Tanzania 01,Server provided by Martin 'd0wn' Albus,Tanzania,,https://dns.d0wn.biz,1,no,yes,yes,41.79.69.13,2.dnscrypt-cert.tz.d0wn.biz,D606:15FB:D145:3BA1:4E76:8A3E:5C5C:B3AC:1746:1331:463D:A0AF:8CF7:DF04:DA4D:756D,pubkey.tz.dnscrypt.d0wn.biz\r
-d0wn-ua-ns1,D0wn Resolver Ukraine 01,Server provided by Martin 'd0wn' Albus,Ukraine,,https://dns.d0wn.biz,1,no,yes,yes,217.12.210.54,2.dnscrypt-cert.ua.d0wn.biz,3B1E:D468:FFD3:F261:20DE:E7F1:6A74:E1D5:D59E:B40D:F3EA:99BC:0B05:70CC:292D:99BA,pubkey.ua.dnscrypt.d0wn.biz\r
-d0wn-ua-ns1-ipv6,D0wn Resolver Ukraine 01 over IPv6,Server provided by Martin 'd0wn' Albus,Ukraine,,https://dns.d0wn.biz,1,no,yes,yes,[2a02:27a8:0:2::556]:443,2.dnscrypt-cert.ua.d0wn.biz,3B1E:D468:FFD3:F261:20DE:E7F1:6A74:E1D5:D59E:B40D:F3EA:99BC:0B05:70CC:292D:99BA,pubkey.ua.dnscrypt.d0wn.biz\r
-d0wn-uk-ns1,D0wn Resolver United Kingdom 01,Server provided by Martin 'd0wn' Albus,United Kingdom,,https://dns.d0wn.biz,1,no,yes,yes,185.121.25.85,2.dnscrypt-cert.uk.d0wn.biz,FADB:BE63:7FCD:FE22:0DBE:D433:438C:5A1D:C267:1E96:4B67:1918:B15F:9121:77D7:5B2E,pubkey.uk.dnscrypt.d0wn.biz\r
-d0wn-uk-ns1-ipv6,D0wn Resolver United Kingdom 01 over IPv6,Server provided by Martin 'd0wn' Albus,United Kingdom,,https://dns.d0wn.biz,1,no,yes,yes,[2a04:92c7:7:7::14ae:460a]:443,2.dnscrypt-cert.uk.d0wn.biz,FADB:BE63:7FCD:FE22:0DBE:D433:438C:5A1D:C267:1E96:4B67:1918:B15F:9121:77D7:5B2E,pubkey.uk.dnscrypt.d0wn.biz\r
-d0wn-us-ns1,D0wn Resolver United States of America 01,Server provided by Martin 'd0wn' Albus,United States of America,,https://dns.d0wn.biz,1,no,yes,yes,199.195.249.174,2.dnscrypt-cert.us.d0wn.biz,6741:6E7F:4744:194E:D725:91A2:1A62:A715:78F9:62CD:5263:84FC:DAA8:6C7E:4D9F:438B,pubkey.us.dnscrypt.d0wn.biz\r
-d0wn-us-ns1-ipv6,D0wn Resolver United States of America 01 over IPv6,Server provided by Martin 'd0wn' Albus,United States of America,,https://dns.d0wn.biz,1,no,yes,yes,[2605:6400:10:59:0:b19:b00b:babe]:443,2.dnscrypt-cert.us.d0wn.biz,6741:6E7F:4744:194E:D725:91A2:1A62:A715:78F9:62CD:5263:84FC:DAA8:6C7E:4D9F:438B,pubkey.us.dnscrypt.d0wn.biz\r
-d0wn-us-ns2,D0wn Resolver United States of America 02,Server provided by Martin 'd0wn' Albus,United States of America,,https://dns.d0wn.biz,1,no,yes,yes,209.141.53.57,2.dnscrypt-cert.us2.d0wn.biz,A22D:99C4:E2E9:CB94:67F0:E36A:619F:418B:466C:5786:C0B8:ACAA:B716:71F7:1F81:F5F8,pubkey.us.dnscrypt.d0wn.biz\r
-d0wn-us-ns2-ipv6,D0wn Resolver United States of America 02 over IPv6,Server provided by Martin 'd0wn' Albus,United States of America,,https://dns.d0wn.biz,1,no,yes,yes,[2605:6400:20:7d7:1:5ee:bad:c0de]:443,2.dnscrypt-cert.us2.d0wn.biz,A22D:99C4:E2E9:CB94:67F0:E36A:619F:418B:466C:5786:C0B8:ACAA:B716:71F7:1F81:F5F8,pubkey.us.dnscrypt.d0wn.biz\r
-dnscrypt.eu-dk,DNSCrypt.eu Denmark,"Free, non-logged, uncensored. Hosted by Netgroup.",Denmark,,https://dnscrypt.eu,1,yes,yes,no,77.66.84.233,2.dnscrypt-cert.resolver2.dnscrypt.eu,3748:5585:E3B9:D088:FD25:AD36:B037:01F5:520C:D648:9E9A:DD52:1457:4955:9F0A:9955,pubkey.resolver2.dnscrypt.eu\r
-dnscrypt.eu-dk-ipv6,DNSCrypt.eu Denmark over IPv6,"Free, non-logged, uncensored. Hosted by Netgroup.",Denmark,,https://dnscrypt.eu,1,yes,yes,no,[2001:1448:243::dc2]:443,2.dnscrypt-cert.resolver2.dnscrypt.eu,3748:5585:E3B9:D088:FD25:AD36:B037:01F5:520C:D648:9E9A:DD52:1457:4955:9F0A:9955,pubkey.resolver2.dnscrypt.eu\r
-dnscrypt.eu-nl,DNSCrypt.eu Holland,"Free, non-logged, uncensored. Hosted by RamNode.",Netherlands,,https://dnscrypt.eu,1,yes,yes,no,176.56.237.171,2.dnscrypt-cert.resolver1.dnscrypt.eu,67C0:0F2C:21C5:5481:45DD:7CB4:6A27:1AF2:EB96:9931:40A3:09B6:2B8D:1653:1185:9C66,pubkey.resolver1.dnscrypt.eu\r
-dnscrypt.org-fr,DNSCrypt.org France,DNSSEC/Non-logged/Uncensored - ARM server donated by Scaleway.com,"Paris, France",,https://fr.dnscrypt.org,2,yes,yes,no,212.47.228.136,2.dnscrypt-cert.fr.dnscrypt.org,E801:B84E:A606:BFB0:BAC0:CE43:445B:B15E:BA64:B02F:A3C4:AA31:AE10:636A:0790:324D,pubkey.fr.dnscrypt.org\r
-dyne.org,Dyne.org Server,Public DNSCrypt server provided by Dyne.org,"New York, US",,https://www.dyne.org,1,no,yes,no,198.199.70.248:5553,2.dnscrypt-cert.dyne.org,162F:051A:BACA:A042:A0C9:7769:91B4:BBA8:FE10:8F72:53CB:5077:A055:9BCF:AD39:73C5,\r
-fvz-anyone,Primary OpenNIC Anycast DNS Resolver,Fusl's public primary OpenNIC Tier2 Anycast DNS Resolver,Anycast,,http://dnsrec.meo.ws/,1,no,yes,yes,185.121.177.177,2.dnscrypt-cert.dnsrec.meo.ws,1A6A:D0A3:2B4C:5A61:A695:D153:670D:69AB:1690:3F9E:C3F7:F64F:13E5:35A3:18B2:28A5,\r
-fvz-anyone-ipv6,Primary OpenNIC Anycast DNS IPv6 Resolver,Fusl's public primary OpenNIC Tier2 Anycast DNS Resolver,Anycast,,http://dnsrec.meo.ws/,1,no,yes,yes,[2a05:dfc7:5::53]:443,2.dnscrypt-cert.dnsrec.meo.ws,1A6A:D0A3:2B4C:5A61:A695:D153:670D:69AB:1690:3F9E:C3F7:F64F:13E5:35A3:18B2:28A5,\r
-fvz-anytwo,Secondary OpenNIC Anycast DNS Resolver,Fusl's public secondary OpenNIC Tier2 Anycast DNS Resolver,Anycast,,http://dnsrec.meo.ws/,1,no,yes,yes,185.121.177.53,2.dnscrypt-cert.dnsrec.meo.ws,1A6A:D0A3:2B4C:5A61:A695:D153:670D:69AB:1690:3F9E:C3F7:F64F:13E5:35A3:18B2:28A5,\r
-fvz-anytwo-ipv6,Secondary OpenNIC Anycast DNS IPv6 Resolver,Fusl's public secondary OpenNIC Tier2 Anycast DNS Resolver,Anycast,,http://dnsrec.meo.ws/,1,no,yes,yes,[2a05:dfc7:5::5353]:443,2.dnscrypt-cert.dnsrec.meo.ws,1A6A:D0A3:2B4C:5A61:A695:D153:670D:69AB:1690:3F9E:C3F7:F64F:13E5:35A3:18B2:28A5,\r
-ipredator,Ipredator.se Server,Public DNSCrypt server in Sweden provided by Ipredator.se,Sweden,,https://www.ipredator.se,1,yes,yes,no,194.132.32.32,2.dnscrypt-cert.ipredator.se,C44C:566A:A8D6:46C4:32B1:04F5:3D00:961B:32DC:71CF:1C04:BD9E:B013:E480:E7A4:7828,pubkey.resolver2.ipredator.se\r
-ns0.dnscrypt.is,"ns0.dnscrypt.is in ReykjavÃk, Iceland","DNSSEC enabled, non-logging, uncensored. Sponsored by 1984 Hosting.","ReykjavÃk, Iceland",,https://dnscrypt.is,1,yes,yes,no,93.95.228.87,2.dnscrypt-cert.ns0.dnscrypt.is,EE41:6A83:451C:218F:37B2:B736:78C4:999F:7DE6:89D1:31D2:7866:7C8E:A8BB:1C95:B402,pubkey.ns0.dnscrypt.is\r
-okturtles,okTurtles,For a surveillance-free world. HTTPS is broken. DNSChain fixes it.,"Georgia, US","33.032501, -83.895699",http://okturtles.com/,1,no,yes,yes,23.226.227.93,2.dnscrypt-cert.okturtles.com,1D85:3953:E34F:AFD0:05F9:4C6F:D1CC:E635:D411:9904:0D48:D19A:5D35:0B6A:7C81:73CB,\r
-opennic-tumabox,TumaBox,Public DNS server operated by TumaBox.org,Germany,,http://wiki.tumabox.org/doku.php?id=dns,1,no,yes,yes,130.255.73.90:5353,2.tumabox.org,D591:7B11:6A35:3114:C238:AA99:A6EB:0C28:7CF7:6805:41AC:5DBF:A8A0:239E:228C:5B06,\r
-ovpnse,OVPN.se Integritet AB,Public DNS server in Sweden by OVPN.se,Sweden,"59.2877011, 18.0771273",https://www.ovpn.se,1,no,yes,no,46.227.67.134:55,2.dnscrypt-cert.dnscrypt01.ovpn.se,B0D6:3658:E23F:5AE1:495C:03C2:319D:D6F1:F2E1:E067:BD23:6F56:503F:27A8:C5D9:2390,\r
-soltysiak,Soltysiak,Public DNSCrypt server in Poland,Poland,"52.4014619, 16.9278078",http://dc1.soltysiak.com/,1,yes,yes,yes,178.216.201.222:2053,2.dnscrypt-cert.soltysiak.com,25C4:E188:2915:4697:8F9C:2BBD:B6A7:AFA4:01ED:A051:0508:5D53:03E7:1928:C066:8F21,pubkey.dc1.soltysiak.com\r
-soltysiak-ipv6,Soltysiak over IPv6,Public DNSCrypt server in Poland,Poland,"52.4014619, 16.9278078",http://dc1.soltysiak.com/,1,yes,yes,yes,[2001:470:70:4ff::2]:2053,2.dnscrypt-cert.soltysiak.com,25C4:E188:2915:4697:8F9C:2BBD:B6A7:AFA4:01ED:A051:0508:5D53:03E7:1928:C066:8F21,pubkey.dc1.soltysiak.com\r
-ventricle.us,Anatomical DNS,Public DNSCrypt resolver provided by Jacob Henner,"New York, NY",,https://jacobhenner.com,1,yes,yes,no,107.170.57.34,2.dnscrypt-cert.dnscrypt.ventricle.us,E985:F118:AD4E:3CC6:5FF2:2520:1890:C6F5:58B7:5B5A:52F5:6B17:CFEA:C100:5C8B:9BAA,pubkey.dnscrypt.ventricle.us\r
-yandex,Yandex,Yandex public DNS server,Anycast,,https://www.yandex.com,1,no,no,no,77.88.8.78:15353,2.dnscrypt-cert.browser.yandex.net,D384:C071:C9F7:4662:AF2A:CCD5:7B5D:CC97:14D4:07B6:AD36:01E1:AEDC:06D5:6D49:6327,\r
+Name,"Full name","Description","Location","Coordinates",URL,Version,DNSSEC validation,No logs,Namecoin,Resolver address,Provider name,Provider public key,Provider public key TXT record\r
+adguard-dns-family-ns1,"Adguard DNS Family Protection 1","Adguard DNS with safesearch and adult content blocking","Anycast","",https://adguard.com/en/adguard-dns/overview.html,1,no,yes,no,176.103.130.132:5443,2.dnscrypt.family.ns1.adguard.com,B831:5DD7:B14B:6EE3:20A4:70DC:2ED6:B1AA:398C:C9E5:86F8:5D45:45D6:B8C9:B500:5ABA,pk.family.ns1.adguard.com\r
+adguard-dns-family-ns2,"Adguard DNS Family Protection 2","Adguard DNS with safesearch and adult content blocking","Anycast","",https://adguard.com/en/adguard-dns/overview.html,1,no,yes,no,176.103.130.134:5443,2.dnscrypt.family.ns2.adguard.com,8C21:17A9:EBC1:57D6:FB64:056F:0ADB:C11C:5D83:6734:73C4:6E25:8D9B:2F57:D4EE:351F,pk.family.ns2.adguard.com\r
+adguard-dns-ns1,"Adguard DNS 1","Remove ads and protect your computer from malware","Anycast","",https://adguard.com/en/adguard-dns/overview.html,1,no,yes,no,176.103.130.130:5443,2.dnscrypt.default.ns1.adguard.com,D12B:47F2:52DC:F2C2:BBF8:9910:86EA:F79C:E449:5D8B:16C8:A0C4:322E:52CA:3F39:0873,pk.default.ns1.adguard.com\r
+adguard-dns-ns2,"Adguard DNS 2","Remove ads and protect your computer from malware","Anycast","",https://adguard.com/en/adguard-dns/overview.html,1,no,yes,no,176.103.130.131:5443,2.dnscrypt.default.ns2.adguard.com,81D0:02D3:6A4C:A50C:473B:7479:650F:E12E:02B3:21CB:6138:562A:208E:403D:FDC5:5E94,pk.default.ns2.adguard.com\r
+bn-ca0,"Babylon Network Canada 0","Non-logging, uncensored DNS resolver provided by Babylon Network","Quebec, Canada","",https://babylon.network,1,no,yes,no,149.56.229.28:5353,2.dnscrypt-cert.babylon.network,8794:070A:143D:35CA:1CA6:32E7:B189:3028:4EAE:5DAF:EBB4:01E3:DF52:E9F0:37AB:D182,pk.ca0.dnscrypt.babylon.network\r
+bn-ca0-ipv6,"Babylon Network Canada 0 (IPv6)","Non-logging, uncensored IPv6 DNS resolver provided by Babylon Network","Quebec, Canada","",https://babylon.network,1,no,yes,no,[2607:5300:60:3a71::28]:5353,2.dnscrypt-cert.babylon.network,8794:070A:143D:35CA:1CA6:32E7:B189:3028:4EAE:5DAF:EBB4:01E3:DF52:E9F0:37AB:D182,pk.ca0.dnscrypt.babylon.network\r
+bn-fr0,"Babylon Network France 0","Non-logging, uncensored DNS resolver provided by Babylon Network","Roubaix, France","",https://babylon.network,1,no,yes,no,5.135.66.222:5353,2.dnscrypt-cert.babylon.network,8794:070A:143D:35CA:1CA6:32E7:B189:3028:4EAE:5DAF:EBB4:01E3:DF52:E9F0:37AB:D182,pk.fr0.dnscrypt.babylon.network\r
+bn-fr0-ipv6,"Babylon Network France 0 (IPv6)","Non-logging, uncensored IPv6 DNS resolver provided by Babylon Network","Roubaix, France","",https://babylon.network,1,no,yes,no,[2001:41d0:8:4480::222]:5353,2.dnscrypt-cert.babylon.network,8794:070A:143D:35CA:1CA6:32E7:B189:3028:4EAE:5DAF:EBB4:01E3:DF52:E9F0:37AB:D182,pk.fr0.dnscrypt.babylon.network\r
+bn-fr1,"Babylon Network France 1","Non-logging, uncensored DNS resolver provided by Babylon Network","Roubaix, France","",https://babylon.network,1,no,yes,no,149.202.98.173:5353,2.dnscrypt-cert.babylon.network,8794:070A:143D:35CA:1CA6:32E7:B189:3028:4EAE:5DAF:EBB4:01E3:DF52:E9F0:37AB:D182,pk.fr1.dnscrypt.babylon.network\r
+bn-fr1-ipv6,"Babylon Network France 1 (IPv6)","Non-logging, uncensored IPv6 DNS resolver provided by Babylon Network","Roubaix, France","",https://babylon.network,1,no,yes,no,[2001:41d0:8:4528::173]:5353,2.dnscrypt-cert.babylon.network,8794:070A:143D:35CA:1CA6:32E7:B189:3028:4EAE:5DAF:EBB4:01E3:DF52:E9F0:37AB:D182,pk.fr1.dnscrypt.babylon.network\r
+cisco,"Cisco OpenDNS","Remove your DNS blind spot","Anycast","",https://www.opendns.com,1,no,no,no,208.67.220.220,2.dnscrypt-cert.opendns.com,B735:1140:206F:225D:3E2B:D822:D7FD:691E:A1C3:3CC8:D666:8D0C:BE04:BFAB:CA43:FB79,\r
+cisco-familyshield,"Cisco OpenDNS with FamilyShield","Block websites not suitable for children","Anycast","",https://www.opendns.com/home-internet-security/parental-controls/,1,no,no,no,208.67.220.123,2.dnscrypt-cert.opendns.com,B735:1140:206F:225D:3E2B:D822:D7FD:691E:A1C3:3CC8:D666:8D0C:BE04:BFAB:CA43:FB79,\r
+cisco-ipv6,"Cisco OpenDNS over IPv6","Cisco OpenDNS IPv6 sandbox","Anycast","",https://www.opendns.com/about/innovations/ipv6/,1,no,no,no,[2620:0:ccc::2]:443,2.dnscrypt-cert.opendns.com,B735:1140:206F:225D:3E2B:D822:D7FD:691E:A1C3:3CC8:D666:8D0C:BE04:BFAB:CA43:FB79,\r
+cs-caeast,"CS Canada east DNSCrypt server","provided by cryptostorm.is","Montreal, CA","",https://cryptostorm.is,1,no,yes,no,167.114.84.132:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-cawest,"CS Canada west DNSCrypt server","provided by cryptostorm.is","Vancouver, CA","",https://cryptostorm.is,1,no,yes,no,162.221.207.228:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-cfi,"CS cryptofree France DNSCrypt server","provided by cryptostorm.is","Paris, France","",https://cryptostorm.is,1,no,yes,no,212.83.175.31:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-cfii,"CS secondary cryptofree France DNSCrypt server","provided by cryptostorm.is","Paris, France","",https://cryptostorm.is,1,no,yes,no,195.154.61.33:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-ch,"CS Switzerland DNSCrypt server","provided by cryptostorm.is","Baar, Switzerland","",https://cryptostorm.is,1,no,yes,no,185.60.147.77:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-de,"CS Frankfurt, DE DNSCrypt server","provided by cryptostorm.is","Frankfurt, Germany","",https://cryptostorm.is,1,no,yes,no,46.165.222.246:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-de2,"CS secondary Frankfurt, DE DNSCrypt server","provided by cryptostorm.is","Frankfurt, Germany","",https://cryptostorm.is,1,no,yes,no,46.165.240.171:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-de3,"CS Dusseldorf, DE DNSCrypt server","provided by cryptostorm.is","Dusseldorf, Germany","",https://cryptostorm.is,1,no,yes,no,89.163.214.174:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-dk,"CS Denmark DNSCrypt server","provided by cryptostorm.is","Copenhagen, Denmark","",https://cryptostorm.is,1,no,yes,no,82.103.131.172:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-fi,"CS Finland DNSCrypt server","provided by cryptostorm.is","Helsinki, Finland","",https://cryptostorm.is,1,no,yes,no,185.117.118.20:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-fr,"CS France DNSCrypt server","provided by cryptostorm.is","Paris, France","",https://cryptostorm.is,1,no,yes,yes,212.129.46.86:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-fr2,"CS secondary France DNSCrypt server","provided by cryptostorm.is","Paris, France","",https://cryptostorm.is,1,no,yes,yes,212.129.46.32:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-lt,"CS Lithuania DNSCrypt server","provided by cryptostorm.is","Vilnius, Lithuania","",https://cryptostorm.is,1,no,yes,no,46.166.170.10:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-lv,"CS Latvia DNSCrypt server","provided by cryptostorm.is","Riga, Latvia","",https://cryptostorm.is,1,no,yes,no,80.233.134.52:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-md,"CS Moldova DNSCrypt server","provided by cryptostorm.is","Chisinau, Moldova","",https://cryptostorm.is,1,no,yes,no,176.123.3.249:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-nl,"CS Netherlands DNSCrypt server","provided by cryptostorm.is","Rotterdam, Netherlands","",https://cryptostorm.is,1,no,yes,no,213.163.64.208:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-pl,"CS Poland DNSCrypt server","provided by cryptostorm.is","Warsaw, Poland","",https://cryptostorm.is,1,no,yes,no,5.133.8.187:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-pt,"CS Portugal DNSCrypt server","provided by cryptostorm.is","Lisbon, Portugal","",https://cryptostorm.is,1,no,yes,yes,109.71.42.228:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-ro,"CS Romania DNSCrypt server","provided by cryptostorm.is","Romania","",https://cryptostorm.is,1,no,yes,no,5.254.96.195:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-rome,"CS Italy DNSCrypt server","provided by cryptostorm.is","Rome, Italy","",https://cryptostorm.is,1,no,yes,no,95.141.47.58:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-ru,"CS Russia DNSCrypt server","provided by cryptostorm.is","Saint Petersburg, Russia","",https://cryptostorm.is,1,no,yes,no,78.155.222.163:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-uk,"CS England DNSCrypt server","provided by cryptostorm.is","Rugby, England","",https://cryptostorm.is,1,no,yes,no,5.101.137.251:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-useast,"CS New York City NY US DNSCrypt server","provided by cryptostorm.is","Buffalo, NY","",https://cryptostorm.is,1,no,yes,no,173.234.159.235:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-usnorth,"CS Chicago IL US DNSCrypt server","provided by cryptostorm.is","Chicago, IL","",https://cryptostorm.is,1,no,yes,no,173.234.56.115:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-ussouth,"CS Dallas TX US DNSCrypt server","provided by cryptostorm.is","Dallas, TX","",https://cryptostorm.is,1,no,yes,no,70.32.38.67:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-ussouth2,"CS Atlanta GA US DNSCrypt server","provided by cryptostorm.is","Atlanta, GA","",https://cryptostorm.is,1,no,yes,no,108.62.19.131:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-uswest2,"CS Las Vegas NV US DNSCrypt server","provided by cryptostorm.is","Las Vegas, NV","",https://cryptostorm.is,1,no,yes,no,104.238.194.235:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-uswest3,"CS secondary Las Vegas NV US DNSCrypt server","provided by cryptostorm.is","Las Vegas, NV","",https://cryptostorm.is,1,no,yes,no,104.238.195.139:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+cs-uswest4,"CS Phoenix AZ US DNSCrypt server","provided by cryptostorm.is","Phoenix, AZ","",https://cryptostorm.is,1,no,yes,no,23.105.70.204:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,\r
+d0wn-at-ns1,"D0wn Resolver Austria 01","Server provided by Martin 'd0wn' Albus","Austria","",https://dns.d0wn.biz,1,yes,yes,no,79.133.33.52,2.dnscrypt-cert.at.d0wn.biz,717E:5DF4:1841:CD4B:D92E:CE16:ECCC:443D:B305:B03D:86E6:69B7:4AC1:FBB6:18D0:2BB4,pubkey.at.dnscrypt.d0wn.biz\r
+d0wn-bg-ns1,"D0wn Resolver Bulgaria 01","Server provided by Martin 'd0wn' Albus","Bulgaria","",https://dns.d0wn.biz,1,yes,yes,no,217.12.203.133,2.dnscrypt-cert.bg.d0wn.biz,423C:D823:B3EA:2015:F027:ECF1:5704:3EB7:764A:D02D:9447:56E6:51FD:D06F:E571:2FCC,pubkey.bg.dnscrypt.d0wn.biz\r
+d0wn-cr-ns1,"D0wn Resolver Costa Rica 01","Server provided by Martin 'd0wn' Albus","Costa Rica","",https://dns.d0wn.biz,1,yes,yes,no,138.59.17.208,2.dnscrypt-cert.cr.d0wn.biz,408B:5064:1EF0:575F:EC9A:BBF6:FC0A:F83A:F434:22BD:03FA:2663:81B3:DADD:1312:5A85,pubkey.cr.dnscrypt.d0wn.biz\r
+d0wn-cy-ns1,"D0wn Resolver Cyprus 01","Server provided by Martin 'd0wn' Albus","Cyprus","",https://dns.d0wn.biz,1,yes,yes,no,213.169.148.11,2.dnscrypt-cert.cy.d0wn.biz,2144:4FE7:59C3:13B9:FABB:FC2A:F975:9F9C:CD9A:2ED7:0978:3A25:7347:4B83:8F86:EA2B,pubkey.cy.dnscrypt.d0wn.biz\r
+d0wn-cz-ns1,"D0wn Resolver Czech Republic 01","Server provided by Martin 'd0wn' Albus","Czech Republic","",https://dns.d0wn.biz,1,yes,yes,no,81.2.237.32,2.dnscrypt-cert.cz.d0wn.biz,EE21:5055:4DA0:1367:BAC3:768A:7C1E:24BF:D777:ACD5:77A4:44F8:BDF3:84E0:5966:D855,pubkey.cz.dnscrypt.d0wn.biz\r
+d0wn-de-ns1,"D0wn Resolver Germany 01","Server provided by Martin 'd0wn' Albus","Germany","",https://dns.d0wn.biz,1,yes,yes,no,82.211.31.248,2.dnscrypt-cert.de.d0wn.biz,B040:19F8:8D49:4682:41E3:EB58:5F61:173F:EF8E:55DA:0597:2DB7:27BB:C153:1DD8:D109,pubkey.de.dnscrypt.d0wn.biz\r
+d0wn-de-ns1-ipv6,"D0wn Resolver Germany 01 over IPv6","Server provided by Martin 'd0wn' Albus","Germany","",https://dns.d0wn.biz,1,yes,yes,no,[2001:1608:10:195:3:dead:beef:cafe]:443,2.dnscrypt-cert.de.d0wn.biz,B040:19F8:8D49:4682:41E3:EB58:5F61:173F:EF8E:55DA:0597:2DB7:27BB:C153:1DD8:D109,pubkey.de.dnscrypt.d0wn.biz\r
+d0wn-de-ns2,"D0wn Resolver Germany 02","Server provided by Martin 'd0wn' Albus","Germany","",https://dns.d0wn.biz,1,yes,yes,no,185.137.15.105,2.dnscrypt-cert.de2.d0wn.biz,8C62:691A:A7EA:69D3:8A25:86AA:2715:87F0:9B11:9159:0663:55FC:1CD0:61C5:C863:1940,pubkey.de2.dnscrypt.d0wn.biz\r
+d0wn-dk-ns1,"D0wn Resolver Denmark 01","Server provided by Martin 'd0wn' Albus","Denmark","",https://dns.d0wn.biz,1,yes,yes,no,77.66.108.93,2.dnscrypt-cert.dk.d0wn.biz,0838:C9CF:2292:2D4C:4DB7:4A5E:ED10:DD36:66DD:9551:7238:6387:B7A0:2FA0:885A:5F77,pubkey.dk.dnscrypt.d0wn.biz\r
+d0wn-es-ns1,"D0wn Resolver Spain 01","Server provided by Martin 'd0wn' Albus","Spain","",https://dns.d0wn.biz,1,yes,yes,no,91.142.220.29,2.dnscrypt-cert.es.d0wn.biz,EB09:E854:AEDA:9705:CB47:ED69:EADD:4156:3653:82C5:C88D:A2E3:6917:3B54:4774:7505,pubkey.es.dnscrypt.d0wn.biz\r
+d0wn-fr-ns1,"D0wn Resolver France 01","Server provided by Martin 'd0wn' Albus","France","",https://dns.d0wn.biz,1,yes,yes,no,151.80.7.115:1053,2.dnscrypt-cert.fr.d0wn.biz,58A8:22D3:29EB:C14F:BCEB:45AF:42EB:2F58:C797:0AD3:ED31:397D:1D34:8636:2375:7251,pubkey.fr.dnscrypt.d0wn.biz\r
+d0wn-fr-ns2,"D0wn Resolver France 02","Server provided by Martin 'd0wn' Albus","France","",https://dns.d0wn.biz,1,yes,yes,no,37.187.0.40,2.dnscrypt-cert.fr2.d0wn.biz,25A7:DB7B:7835:55D5:7DA4:7C0C:57F8:9C5F:0220:3D09:67E3:585A:723E:E0D1:CB38:F767,pubkey.fr2.dnscrypt.d0wn.biz\r
+d0wn-fr-ns2-ipv6,"D0wn Resolver France 02 over IPv6","Server provided by Martin 'd0wn' Albus","France","",https://dns.d0wn.biz,1,yes,yes,no,[2001:41D0:A:0028::1]:443,2.dnscrypt-cert.fr2.d0wn.biz,25A7:DB7B:7835:55D5:7DA4:7C0C:57F8:9C5F:0220:3D09:67E3:585A:723E:E0D1:CB38:F767,pubkey.fr2.dnscrypt.d0wn.biz\r
+d0wn-gr-ns1,"D0wn Resolver Greece 01","Server provided by Martin 'd0wn' Albus","Greece","",https://dns.d0wn.biz,1,yes,yes,no,85.25.105.193,2.dnscrypt-cert.gr.d0wn.biz,B19C:0B5C:48F2:58FA:0BE4:67F4:5F50:BC7F:985F:C544:8A4F:BC9D:5574:5A35:5701:8009,pubkey.gr.dnscrypt.d0wn.biz\r
+d0wn-hk-ns1,"D0wn Resolver Hongkong 01","Server provided by Martin 'd0wn' Albus","Hongkong","",https://dns.d0wn.biz,1,yes,yes,no,45.124.66.200,2.dnscrypt-cert.hk.d0wn.biz,84ED:0DFF:7967:5DBD:2D93:65A2:A6AB:7F90:146F:A50B:048C:8C75:651B:AA55:7129:6740,pubkey.hk.dnscrypt.d0wn.biz\r
+d0wn-id-ns1,"D0wn Resolver Indonesia 01","Server provided by Martin 'd0wn' Albus","Indonesia","",https://dns.d0wn.biz,1,yes,yes,no,45.114.118.195,2.dnscrypt-cert.id.d0wn.biz,BE93:B3F1:2A3B:2448:8F33:F91F:9461:5F73:D5CA:56D6:C789:96DE:7A18:D4DE:5182:094D,pubkey.id.dnscrypt.d0wn.biz\r
+d0wn-is-ns1,"D0wn Resolver Iceland 01","Server provided by Martin 'd0wn' Albus","Iceland","",https://dns.d0wn.biz,1,yes,yes,no,37.235.49.61,2.dnscrypt-cert.is.d0wn.biz,2B28:974E:073A:6B38:722A:5BE1:F7A0:250C:508F:A809:238F:8F3D:76D8:6098:20D7:B2D9,pubkey.is.dnscrypt.d0wn.biz\r
+d0wn-is-ns2,"D0wn Resolver Iceland 02","Server provided by Martin 'd0wn' Albus","Iceland","",https://dns.d0wn.biz,1,yes,yes,no,93.95.226.165,2.dnscrypt-cert.is2.d0wn.biz,8460:34A9:C630:CA3C:04AC:4A90:1625:F17A:87B2:ACB9:4180:AC48:1E2C:10E8:CEDE:1A6F,pubkey.is2.dnscrypt.d0wn.biz\r
+d0wn-it-ns1,"D0wn Resolver Italy 01","Server provided by Martin 'd0wn' Albus","Italy","",https://dns.d0wn.biz,1,yes,yes,no,31.14.133.188,2.dnscrypt-cert.it.d0wn.biz,2DEC:CEF8:A4D0:57DE:0D1A:CE8E:0A3C:BEB8:2135:61A8:BF0E:7373:0BA0:EC38:C876:3B50,pubkey.it.dnscrypt.d0wn.biz\r
+d0wn-lv-ns1,"D0wn Resolver Latvia 01","Server provided by Martin 'd0wn' Albus","Latvia","",https://dns.d0wn.biz,1,yes,yes,no,89.111.13.60,2.dnscrypt-cert.lv.d0wn.biz,9AC3:6B4C:7ADB:E7D6:D697:B6BF:151C:151A:B291:8C5D:B912:15F8:B986:5926:33A4:A5E1,pubkey.lv.dnscrypt.d0wn.biz\r
+d0wn-lv-ns2,"D0wn Resolver Latvia 02","Server provided by Martin 'd0wn' Albus","Latvia","",https://dns.d0wn.biz,1,yes,yes,no,185.86.151.28,2.dnscrypt-cert.lv2.d0wn.biz,B111:F80C:E3E0:1C36:CC73:0995:009E:6351:EF08:0503:309D:9417:7AA3:8C67:916D:0CDF,pubkey.lv.dnscrypt.d0wn.biz\r
+d0wn-lv-ns2-ipv6,"D0wn Resolver Latvia 01 over IPv6","Server provided by Martin 'd0wn' Albus","Latvia","",https://dns.d0wn.biz,1,yes,yes,no,[2a02:7aa0:1201::f60e:2719]:443,2.dnscrypt-cert.lv2.d0wn.biz,B111:F80C:E3E0:1C36:CC73:0995:009E:6351:EF08:0503:309D:9417:7AA3:8C67:916D:0CDF,pubkey.lv.dnscrypt.d0wn.biz\r
+d0wn-md-ns1,"D0wn Resolver Moldova 01","Server provided by Martin 'd0wn' Albus","Moldova","",https://dns.d0wn.biz,1,yes,yes,no,178.17.170.67:1053,2.dnscrypt-cert.md.d0wn.biz,3DB2:C4CB:39E2:6B82:FDDF:6D91:1A65:D164:F4F0:D237:8CDD:0C37:469F:24BA:B9A0:F9FF,pubkey.md.dnscrypt.d0wn.biz\r
+d0wn-md-ns1-ipv6,"D0wn Resolver Moldova 01 over IPv6","Server provided by Martin 'd0wn' Albus","Moldova","",https://dns.d0wn.biz,1,yes,yes,no,[2a00:1dc0:cafe::ad86:fa7e]:1053,2.dnscrypt-cert.md.d0wn.biz,3DB2:C4CB:39E2:6B82:FDDF:6D91:1A65:D164:F4F0:D237:8CDD:0C37:469F:24BA:B9A0:F9FF,pubkey.md.dnscrypt.d0wn.biz\r
+d0wn-mx-ns1,"D0wn Resolver Mexico 01","Server provided by Martin 'd0wn' Albus","Mexico","",https://dns.d0wn.biz,1,yes,yes,no,201.131.126.212,2.dnscrypt-cert.mx.d0wn.biz,999E:63F0:0DE7:C171:3A72:5625:2A3F:097B:EC3A:D28F:BE28:7569:5C37:E80D:3D55:4FD0,pubkey.mx.dnscrypt.d0wn.biz\r
+d0wn-nl-ns1,"D0wn Resolver Netherlands 01","Server provided by Martin 'd0wn' Albus","Netherlands","",https://dns.d0wn.biz,1,yes,yes,no,95.85.9.86:1053,2.dnscrypt-cert.nl.d0wn.biz,7BE6:68FE:A505:FFA7:4C27:C2CA:F881:59DA:038C:5741:13AA:2556:A4D2:2D0B:B6F0:009E,pubkey.nl.dnscrypt.d0wn.biz\r
+d0wn-nl-ns1-ipv6,"D0wn Resolver Netherlands 01 over IPv6","Server provided by Martin 'd0wn' Albus","Netherlands","",https://dns.d0wn.biz,1,yes,yes,no,[2a03:b0c0:0:1010::62:f001]:1053,2.dnscrypt-cert.nl.d0wn.biz,7BE6:68FE:A505:FFA7:4C27:C2CA:F881:59DA:038C:5741:13AA:2556:A4D2:2D0B:B6F0:009E,pubkey.nl.dnscrypt.d0wn.biz\r
+d0wn-nl-ns2,"D0wn Resolver Netherlands 02","Server provided by Martin 'd0wn' Albus","Netherlands","",https://dns.d0wn.biz,1,yes,yes,no,185.83.217.248:1053,2.dnscrypt-cert.nl2.d0wn.biz,DFAA:B7D8:29E6:1F34:4FED:2610:4221:70C9:ADC7:7E9F:A65F:4A46:0BAE:A735:3186:3B99,pubkey.nl2.dnscrypt.d0wn.biz\r
+d0wn-nl-ns2-ipv6,"D0wn Resolver Netherlands 02 over IPv6","Server provided by Martin 'd0wn' Albus","Netherlands","",https://dns.d0wn.biz,1,yes,yes,no,[2a02:2ca0:64:22::2]:1053,2.dnscrypt-cert.nl2.d0wn.biz,DFAA:B7D8:29E6:1F34:4FED:2610:4221:70C9:ADC7:7E9F:A65F:4A46:0BAE:A735:3186:3B99,pubkey.nl2.dnscrypt.d0wn.biz\r
+d0wn-nl-ns3,"D0wn Resolver Netherlands 03","Server provided by Martin 'd0wn' Albus","Netherlands","",https://dns.d0wn.biz,1,yes,yes,no,185.133.72.116,2.dnscrypt-cert.nl3.d0wn.biz,01FC:1AA9:F71F:F09E:55CE:0D04:9ACA:2B11:9536:319E:04A9:C3AE:77CB:127D:4C53:0651,pubkey.nl3.dnscrypt.d0wn.biz\r
+d0wn-nl-ns3-ipv6,"D0wn Resolver Netherlands 03 over IPv6","Server provided by Martin 'd0wn' Albus","Netherlands","",https://dns.d0wn.biz,1,yes,yes,no,[2a06:7240:5:601:dead:beef:e3e7:7a9d]:443,2.dnscrypt-cert.nl3.d0wn.biz,01FC:1AA9:F71F:F09E:55CE:0D04:9ACA:2B11:9536:319E:04A9:C3AE:77CB:127D:4C53:0651,pubkey.nl3.dnscrypt.d0wn.biz\r
+d0wn-nl-ns4,"D0wn Resolver Netherlands 04","Server provided by Martin 'd0wn' Albus","Netherlands","",https://dns.d0wn.biz,1,yes,yes,no,31.220.43.105,2.dnscrypt-cert.nl4.d0wn.biz,2A4F:4389:5CE6:3230:B4C5:76A5:AC38:6418:4D12:6949:B160:FDB0:9166:ABB4:CEC6:0672,pubkey.nl4.dnscrypt.d0wn.biz\r
+d0wn-random-ns2,"D0wn Resolver Netherlands Random 02","Server provided by Martin 'd0wn' Albus","Netherlands","",https://dns.d0wn.biz,1,yes,yes,no,185.14.29.140,2.dnscrypt-cert.random2.d0wn.biz,7D73:F486:3C01:4CC9:B278:D107:F254:7A4F:1EA2:1081:07B0:CB82:645A:D8A4:B98A:B327,pubkey.random2.dnscrypt.d0wn.biz\r
+d0wn-random-ns2-ipv6,"D0wn Resolver Netherlands Random 02 over IPv6","Server provided by Martin 'd0wn' Albus","Netherlands","",https://dns.d0wn.biz,1,yes,yes,no,[2a00:1ca8:a7::1e9]:443,2.dnscrypt-cert.random2.d0wn.biz,7D73:F486:3C01:4CC9:B278:D107:F254:7A4F:1EA2:1081:07B0:CB82:645A:D8A4:B98A:B327,pubkey.random2.dnscrypt.d0wn.biz\r
+d0wn-ro-ns1,"D0wn Resolver Romania 01","Server provided by Martin 'd0wn' Albus","Romania","",https://dns.d0wn.biz,1,yes,yes,no,77.81.104.121,2.dnscrypt-cert.ro.d0wn.biz,DA9E:6882:B0F8:335E:B5F4:A059:1B7D:EE6F:BD55:4451:93B4:13BF:AFFC:7D26:4527:CE1A,pubkey.ro.dnscrypt.d0wn.biz\r
+d0wn-ro-ns1-ipv6,"D0wn Resolver Romania 01 over IPv6","Server provided by Martin 'd0wn' Albus","Romania","",https://dns.d0wn.biz,1,yes,yes,no,[2a04:9dc0:c1:7::cb9:f785]:443,2.dnscrypt-cert.ro.d0wn.biz,DA9E:6882:B0F8:335E:B5F4:A059:1B7D:EE6F:BD55:4451:93B4:13BF:AFFC:7D26:4527:CE1A,pubkey.ro.dnscrypt.d0wn.biz\r
+d0wn-ru-ns1,"D0wn Resolver Russia 01","Server provided by Martin 'd0wn' Albus","Russia","",https://dns.d0wn.biz,1,yes,yes,no,91.214.71.181,2.dnscrypt-cert.ru.d0wn.biz,0ECA:BC40:E0A1:335F:0221:4240:AB86:2919:D16A:2393:CCEB:4B40:9EB9:4F24:3077:ED99,pubkey.ru.dnscrypt.d0wn.biz\r
+d0wn-se-ns1,"D0wn Resolver Sweden 01","Server provided by Martin 'd0wn' Albus","Sweden","",https://dns.d0wn.biz,1,yes,yes,no,95.215.44.124,2.dnscrypt-cert.se.d0wn.biz,9D4F:762B:DD24:F77A:64B4:7E0F:F5C6:93FD:A02A:39E9:8FEC:0CEE:F252:3A5F:A403:C032,pubkey.se.dnscrypt.d0wn.biz\r
+d0wn-se-ns1-ipv6,"D0wn Resolver Sweden 01 over IPv6","Server provided by Martin 'd0wn' Albus","Sweden","",https://dns.d0wn.biz,1,yes,yes,no,[2a02:7aa0:1619::4f50:a69]:443,2.dnscrypt-cert.se.d0wn.biz,9D4F:762B:DD24:F77A:64B4:7E0F:F5C6:93FD:A02A:39E9:8FEC:0CEE:F252:3A5F:A403:C032,pubkey.se.dnscrypt.d0wn.biz\r
+d0wn-se-ns2,"D0wn Resolver Sweden 02","Server provided by Martin 'd0wn' Albus","Sweden","",https://dns.d0wn.biz,1,yes,yes,no,31.220.5.186,2.dnscrypt-cert.se2.d0wn.biz,C57D:D6A4:178E:ADE2:D0C0:B138:A4D4:074A:DF59:1488:8711:5CAC:EB60:A37B:3492:DA15,pubkey.se2.dnscrypt.d0wn.biz\r
+d0wn-sg-ns1,"D0wn Resolver Singapore 01","Server provided by Martin 'd0wn' Albus","Singapore","",https://dns.d0wn.biz,1,yes,yes,no,128.199.248.105,2.dnscrypt-cert.sg.d0wn.biz,D82B:2B76:1DA0:8470:B55B:820C:FAAB:9F32:D632:E9E0:5616:2CE7:7D21:E970:98FF:4A34,pubkey.sg.dnscrypt.d0wn.biz\r
+d0wn-sg-ns1-ipv6,"D0wn Resolver Singapore 01 over IPv6","Server provided by Martin 'd0wn' Albus","Singapore","",https://dns.d0wn.biz,1,yes,yes,no,[2400:6180:0:d0::38:d001]:443,2.dnscrypt-cert.sg.d0wn.biz,D82B:2B76:1DA0:8470:B55B:820C:FAAB:9F32:D632:E9E0:5616:2CE7:7D21:E970:98FF:4A34,pubkey.sg.dnscrypt.d0wn.biz\r
+d0wn-sg-ns2,"D0wn Resolver Singapore 02","Server provided by Martin 'd0wn' Albus","Singapore","",https://dns.d0wn.biz,1,yes,yes,no,210.16.120.139,2.dnscrypt-cert.sg2.d0wn.biz,0F00:63C4:6EAF:29C3:29CD:E125:2033:6F0A:0C72:7CDD:F1F4:3D47:F95D:02BC:07F7:9FFC,pubkey.sg2.dnscrypt.d0wn.biz\r
+d0wn-sg-ns2-ipv6,"D0wn Resolver Singapore 02 over IPv6","Server provided by Martin 'd0wn' Albus","Singapore","",https://dns.d0wn.biz,1,yes,yes,no,[2403:5680::1:200f]:443,2.dnscrypt-cert.sg2.d0wn.biz,0F00:63C4:6EAF:29C3:29CD:E125:2033:6F0A:0C72:7CDD:F1F4:3D47:F95D:02BC:07F7:9FFC,pubkey.sg2.dnscrypt.d0wn.biz\r
+d0wn-tz-ns1,"D0wn Resolver Tanzania 01","Server provided by Martin 'd0wn' Albus","Tanzania","",https://dns.d0wn.biz,1,yes,yes,no,41.79.69.13,2.dnscrypt-cert.tz.d0wn.biz,D606:15FB:D145:3BA1:4E76:8A3E:5C5C:B3AC:1746:1331:463D:A0AF:8CF7:DF04:DA4D:756D,pubkey.tz.dnscrypt.d0wn.biz\r
+d0wn-tz-ns1-ipv6,"D0wn Resolver Tanzania 01 over IPv6","Server provided by Martin 'd0wn' Albus","Tanzania","",https://dns.d0wn.biz,1,yes,yes,no,[2c0f:fda8:5::2ed1:d2ec]:443,2.dnscrypt-cert.tz.d0wn.biz,D606:15FB:D145:3BA1:4E76:8A3E:5C5C:B3AC:1746:1331:463D:A0AF:8CF7:DF04:DA4D:756D,pubkey.tz.dnscrypt.d0wn.biz\r
+d0wn-us-ns1,"D0wn Resolver United States of America 01","Server provided by Martin 'd0wn' Albus","United States of America","",https://dns.d0wn.biz,1,yes,yes,no,107.181.187.219,2.dnscrypt-cert.us.d0wn.biz,04BB:6100:7CFF:C72B:AF91:8942:F9DC:12A9:61A1:C6F2:177F:7CF9:F3C9:1B43:9FBE:6B80,pubkey.us.dnscrypt.d0wn.biz\r
+d0wn-us-ns2,"D0wn Resolver United States of America 02","Server provided by Martin 'd0wn' Albus","United States of America","",https://dns.d0wn.biz,1,yes,yes,no,192.252.222.24,2.dnscrypt-cert.us2.d0wn.biz,729B:FABE:2295:D469:E911:F97E:3EE4:F6DB:0190:EA6F:7CF3:F7EE:BB6B:99B1:698A:237D,pubkey.us2.dnscrypt.d0wn.biz\r
+d0wn-us-ns4,"D0wn Resolver United States of America 04","Server provided by Martin 'd0wn' Albus","United States of America","",https://dns.d0wn.biz,1,yes,yes,no,107.181.168.52,2.dnscrypt-cert.us4.d0wn.biz,F392:5D53:A315:66C2:ACF2:B2D2:8A69:6739:B066:1B8C:EF1B:3AFD:E828:0D83:D4EA:6D7D,pubkey.us4.dnscrypt.d0wn.biz\r
+d0wn-za-ns1,"D0wn Resolver South Africa 01","Server provided by Martin 'd0wn' Albus","South Africa","",https://dns.d0wn.biz,1,yes,yes,no,169.239.181.3,2.dnscrypt-cert.za.d0wn.biz,FBBD:0F3A:AF2B:B1BB:CD8F:9324:D5F6:A68C:E722:3890:8B90:92CF:F6D2:BF7C:9EC1:1368,pubkey.za.dnscrypt.d0wn.biz\r
+dnscrypt.eu-dk,"DNSCrypt.eu Denmark","Free, non-logged, uncensored. Hosted by Netgroup.","Denmark","",https://dnscrypt.eu,1,yes,yes,no,77.66.84.233,2.dnscrypt-cert.resolver2.dnscrypt.eu,3748:5585:E3B9:D088:FD25:AD36:B037:01F5:520C:D648:9E9A:DD52:1457:4955:9F0A:9955,pubkey.resolver2.dnscrypt.eu\r
+dnscrypt.eu-dk-ipv6,"DNSCrypt.eu Denmark over IPv6","Free, non-logged, uncensored. Hosted by Netgroup.","Denmark","",https://dnscrypt.eu,1,yes,yes,no,[2001:1448:243::dc2]:443,2.dnscrypt-cert.resolver2.dnscrypt.eu,3748:5585:E3B9:D088:FD25:AD36:B037:01F5:520C:D648:9E9A:DD52:1457:4955:9F0A:9955,pubkey.resolver2.dnscrypt.eu\r
+dnscrypt.eu-nl,"DNSCrypt.eu Holland","Free, non-logged, uncensored. Hosted by RamNode.","Netherlands","",https://dnscrypt.eu,1,yes,yes,no,176.56.237.171,2.dnscrypt-cert.resolver1.dnscrypt.eu,67C0:0F2C:21C5:5481:45DD:7CB4:6A27:1AF2:EB96:9931:40A3:09B6:2B8D:1653:1185:9C66,pubkey.resolver1.dnscrypt.eu\r
+dnscrypt.eu-nl-ipv6,"DNSCrypt.eu Holland over IPv6","Free, non-logged, uncensored. Hosted by RamNode.","Netherlands","",https://dnscrypt.eu,1,yes,yes,no,[2a00:d880:3:1::a6c1:2e89]:443,2.dnscrypt-cert.resolver1.dnscrypt.eu,67C0:0F2C:21C5:5481:45DD:7CB4:6A27:1AF2:EB96:9931:40A3:09B6:2B8D:1653:1185:9C66,pubkey.resolver1.dnscrypt.eu\r
+dnscrypt.nl-ns0,"DNSCrypt.nl The Netherlands (NL)","Public DNSCrypt server in Amsterdam, the Netherlands","Netherlands","",https://dnscrypt.nl,1,yes,yes,no,45.76.35.212,2.dnscrypt-cert.ns0.dnscrypt.nl,4C84:FB8C:0511:5DFA:5F97:C5ED:0329:1370:C78A:BCD6:4E15:DD53:AB08:DE72:FB84:4ACA,pkey.ns0.dnscrypt.nl\r
+dnscrypt.nl-ns0-ipv6,"DNSCrypt.nl The Netherlands (NL) over IPv6","Public DNSCrypt server in Amsterdam, the Netherlands","Netherlands","",https://dnscrypt.nl,1,yes,yes,no,[2001:19f0:5001:30a:5400:ff:fe58:7140]:443,2.dnscrypt-cert.ns0.dnscrypt.nl,4C84:FB8C:0511:5DFA:5F97:C5ED:0329:1370:C78A:BCD6:4E15:DD53:AB08:DE72:FB84:4ACA,pkey.ns0.dnscrypt.nl\r
+dnscrypt.org-fr,"DNSCrypt.org France","DNSSEC/Non-logged/Uncensored - ARM server donated by Scaleway.com","Paris, France","",https://fr.dnscrypt.org,2,yes,yes,no,212.47.228.136,2.dnscrypt-cert.fr.dnscrypt.org,E801:B84E:A606:BFB0:BAC0:CE43:445B:B15E:BA64:B02F:A3C4:AA31:AE10:636A:0790:324D,pubkey.fr.dnscrypt.org\r
+freetsa.org,"FreeTSA USA DNSCrypt server","Non-logged/Uncensored provided by freetsa.org","California","","https://freetsa.org",1,"yes","yes","no",205.185.116.116:553,2.dnscrypt-cert.freetsa.org,D8FF:BB42:E031:BE7A:7973:0B45:568D:496A:4E8A:CB59:AA83:66FD:6AB9:1E27:2A7D:16E4,pubkey.freetsa.org\r
+fvz-anyone,"Primary OpenNIC Anycast DNS Resolver","Fusl's public primary OpenNIC Tier2 Anycast DNS Resolver","Anycast","",http://dnsrec.meo.ws/,1,no,yes,no,185.121.177.177,2.dnscrypt-cert.dnsrec.meo.ws,1A6A:D0A3:2B4C:5A61:A695:D153:670D:69AB:1690:3F9E:C3F7:F64F:13E5:35A3:18B2:28A5,\r
+fvz-anyone-ipv6,"Primary OpenNIC Anycast DNS IPv6 Resolver","Fusl's public primary OpenNIC Tier2 Anycast DNS Resolver","Anycast","",http://dnsrec.meo.ws/,1,no,yes,no,[2a05:dfc7:5::53],2.dnscrypt-cert.dnsrec.meo.ws,1A6A:D0A3:2B4C:5A61:A695:D153:670D:69AB:1690:3F9E:C3F7:F64F:13E5:35A3:18B2:28A5,\r
+fvz-anytwo,"Secondary OpenNIC Anycast DNS Resolver","Fusl's public secondary OpenNIC Tier2 Anycast DNS Resolver","Anycast","",http://dnsrec.meo.ws/,1,no,yes,no,169.239.202.202,2.dnscrypt-cert.dnsrec.meo.ws,1A6A:D0A3:2B4C:5A61:A695:D153:670D:69AB:1690:3F9E:C3F7:F64F:13E5:35A3:18B2:28A5,\r
+fvz-anytwo-ipv6,"Secondary OpenNIC Anycast DNS IPv6 Resolver","Fusl's public secondary OpenNIC Tier2 Anycast DNS Resolver","Anycast","",http://dnsrec.meo.ws/,1,no,yes,no,[2a05:dfc7:5::5353],2.dnscrypt-cert.dnsrec.meo.ws,1A6A:D0A3:2B4C:5A61:A695:D153:670D:69AB:1690:3F9E:C3F7:F64F:13E5:35A3:18B2:28A5,\r
+ipredator,"Ipredator.se Server","Public DNSCrypt server in Sweden provided by Ipredator.se","Sweden","",https://www.ipredator.se,1,yes,yes,no,194.132.32.32,2.dnscrypt-cert.ipredator.se,C44C:566A:A8D6:46C4:32B1:04F5:3D00:961B:32DC:71CF:1C04:BD9E:B013:E480:E7A4:7828,pubkey.resolver2.ipredator.se\r
+ns0.dnscrypt.is,"ns0.dnscrypt.is in ReykjavÃk, Iceland","DNSSEC enabled, non-logging, uncensored. Sponsored by 1984 Hosting.","ReykjavÃk, Iceland","",https://dnscrypt.is,1,yes,yes,no,93.95.228.87,2.dnscrypt-cert.ns0.dnscrypt.is,EE41:6A83:451C:218F:37B2:B736:78C4:999F:7DE6:89D1:31D2:7866:7C8E:A8BB:1C95:B402,pubkey.ns0.dnscrypt.is\r
+nxd.ist,"nxd.ist","DNSSEC enabled, non-logging, uncensored.","San Francisco CA","",https://nxd.ist,1,yes,yes,no,104.196.239.247,2.dnscrypt-cert.nxd.ist,146D:E394:BDCD:25F5:AA68:822A:A9D7:4792:C07E:5DF2:7172:3CBD:2347:161A:4433:8F59,pubkey.nxd.ist\r
+okturtles,"okTurtles","For a surveillance-free world. HTTPS is broken. DNSChain fixes it.","Georgia, US","33.032501, -83.895699",http://okturtles.com/,1,no,yes,no,23.226.227.93,2.dnscrypt-cert.okturtles.com,1D85:3953:E34F:AFD0:05F9:4C6F:D1CC:E635:D411:9904:0D48:D19A:5D35:0B6A:7C81:73CB,\r
+opennic-tumabox,"TumaBox","Public DNS server operated by TumaBox.org","Germany","",http://wiki.tumabox.org/doku.php?id=dns,1,no,yes,no,130.255.73.90:5353,2.tumabox.org,D591:7B11:6A35:3114:C238:AA99:A6EB:0C28:7CF7:6805:41AC:5DBF:A8A0:239E:228C:5B06,\r
+opennic-tumabox-ipv6,"TumaBox over IPv6","Public DNS server operated by TumaBox.org","Germany","",http://wiki.tumabox.org/doku.php?id=dns,1,no,yes,no,[2a02:e00:fffd:139::9]:5353,2.tumabox.org,D591:7B11:6A35:3114:C238:AA99:A6EB:0C28:7CF7:6805:41AC:5DBF:A8A0:239E:228C:5B06,\r
+ovpnse,"OVPN.se Integritet AB","Public DNS server in Sweden by OVPN.se","Sweden","59.2877011, 18.0771273",https://www.ovpn.se,1,no,yes,no,46.227.67.134:55,2.dnscrypt-cert.dnscrypt01.ovpn.se,B0D6:3658:E23F:5AE1:495C:03C2:319D:D6F1:F2E1:E067:BD23:6F56:503F:27A8:C5D9:2390,\r
+soltysiak,"Soltysiak","Public DNSCrypt server in Poland","Poland","52.4014619, 16.9278078",http://dc1.soltysiak.com/,1,yes,yes,yes,178.216.201.222:2053,2.dnscrypt-cert.soltysiak.com,25C4:E188:2915:4697:8F9C:2BBD:B6A7:AFA4:01ED:A051:0508:5D53:03E7:1928:C066:8F21,pubkey.dc1.soltysiak.com\r
+soltysiak-ipv6,"Soltysiak over IPv6","Public DNSCrypt server in Poland","Poland","52.4014619, 16.9278078",http://dc1.soltysiak.com/,1,yes,yes,yes,[2001:470:70:4ff::2]:2053,2.dnscrypt-cert.soltysiak.com,25C4:E188:2915:4697:8F9C:2BBD:B6A7:AFA4:01ED:A051:0508:5D53:03E7:1928:C066:8F21,pubkey.dc1.soltysiak.com\r
+ventricle.us,"Anatomical DNS","Public DNSCrypt resolver provided by Jacob Henner","New York, NY","",https://jacobhenner.com,1,yes,yes,no,107.170.57.34,2.dnscrypt-cert.dnscrypt.ventricle.us,E985:F118:AD4E:3CC6:5FF2:2520:1890:C6F5:58B7:5B5A:52F5:6B17:CFEA:C100:5C8B:9BAA,pubkey.dnscrypt.ventricle.us\r
+yandex,"Yandex","Yandex public DNS server","Anycast","",https://www.yandex.com,1,no,no,no,77.88.8.78:15353,2.dnscrypt-cert.browser.yandex.net,D384:C071:C9F7:4662:AF2A:CCD5:7B5D:CC97:14D4:07B6:AD36:01E1:AEDC:06D5:6D49:6327,\r
include $(TOPDIR)/rules.mk
PKG_NAME:=dynapoint
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_MAINTAINER:=Tobias Ilte <tobias.ilte@campus.tu-berlin.de>
PKG_LICENSE:=GPL-3.0+
if (curl == 1) then
curl_interface = uci_cursor:get("dynapoint", "internet", "curl_interface")
end
+function get_system_sections(t)
+ for pos,val in pairs(t) do
+ if (type(val)=="table") then
+ get_system_sections(val);
+ elseif (type(val)=="string") then
+ if (pos == "hostname") then
+ localhostname = val
+ end
+ end
+ end
+end
if (tonumber(uci_cursor:get("dynapoint", "internet", "add_hostname_to_ssid")) == 1 ) then
- localhostname = uci_cursor:get("system", "system", "hostname")
+ get_system_sections(getConfType("system","system"))
+ if (not localhostname) then
+ error("Failed to obtain system hostname")
+ end
end
local table_names_rule = {}
elseif (val == "!internet") then
table_names_not_rule[#table_names_not_rule+1] = t[".name"]
if (localhostname) then
- ssids_not_rule[#ssids_not_rule+1] = t[".ssid"]
- ssids_with_hostname[#ssids_with_hostname+1] = t[".ssid"].."_"..localhostname
+ ssids_not_rule[#ssids_not_rule+1] = uci_cursor:get("wireless", t[".name"], "ssid")
+ ssids_with_hostname[#ssids_with_hostname+1] = uci_cursor:get("wireless", t[".name"], "ssid").."_"..localhostname
end
end
end
end
end
-
--print(table.getn(hosts))
get_dynapoint_sections(getConfType("wireless","wifi-iface"))
function change_wireless_config(switch_to_offline)
if (switch_to_offline == 1) then
log.syslog("info","Switched to OFFLINE")
-
for i = 1, #table_names_not_rule do
uci_cursor:set("wireless",table_names_not_rule[i], "disabled", "0")
if (localhostname) then
uci_cursor:set("wireless", table_names_not_rule[i], "ssid", ssids_with_hostname[i])
- log.syslog("info","Bring up new AP "..ssids_with_hostname[i])
- else
- log.syslog("info","Bring up new AP "..ssids_not_rule[i])
end
+ log.syslog("info","Bring up new AP "..uci_cursor:get("wireless", table_names_not_rule[i], "ssid"))
end
-
for i = 1, #table_names_rule do
uci_cursor:set("wireless",table_names_rule[i], "disabled", "1")
end
-
else
log.syslog("info","Switched to ONLINE")
for i = 1, #table_names_not_rule do
PKG_NAME:=fossil
PKG_VERSION:=1.34
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_LICENSE:=BSD-2-Clause
PKG_MAINTAINER:=Luka Perkov <luka@openwrt.org>
MAKE_FLAGS := \
TCC="$(TARGET_CC)" \
CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include -DFOSSIL_ENABLE_JSON" \
- LDFLAGS="$(TARGET_LDFLAGS) -Wl,-rpath=$(TOOLCHAIN_DIR)/lib -L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
+ LDFLAGS="$(TARGET_LDFLAGS) -Wl,-rpath=$(TOOLCHAIN_DIR)/lib -L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib -lm" \
define Build/Configure
endef
PKG_NAME:=fping
PKG_VERSION:=4.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://fping.org/dist/
--enable-ipv4 \
--enable-ipv6
+TARGET_CFLAGS += -std=gnu99
+
define Package/fping/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/fping $(1)/usr/bin/
+++ /dev/null
-# FreeRADIUS avanced configuration
-
-choice
- prompt "SSL library"
- default FREERADIUS_OPENSSL
- depends on PACKAGE_freeradius2-common
-
-config FREERADIUS_NOSSL
- bool "No SSL support"
-
-config FREERADIUS_OPENSSL
- bool "OpenSSL"
-
-endchoice
+++ /dev/null
-#
-# Copyright (C) 2008-2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=freeradius2
-PKG_VERSION:=2.2.9
-PKG_RELEASE:=1
-
-PKG_SOURCE:=freeradius-server-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=\
- ftp://ftp.freeradius.org/pub/freeradius/ \
- ftp://ftp.freeradius.org/pub/freeradius/old/
-PKG_MD5SUM:=d1398327ba4e23c75da06d8a0e01096b
-PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
-PKG_LICENSE:=GPL-2.0
-PKG_LICENSE_FILES:=COPYRIGHT LICENSE
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/freeradius-server-$(PKG_VERSION)
-PKG_FIXUP:=autoreconf
-PKG_CHECK_FORMAT_SECURITY:=0
-
-PKG_CONFIG_DEPENDS := \
- FREERADIUS_OPENSSL \
- FREERADIUS_NOSSL
-
-PKG_CHECK_FORMAT_SECURITY:=0
-include $(INCLUDE_DIR)/package.mk
-
-define Package/freeradius2/config
- source "$(SOURCE)/Config.in"
-endef
-
-define Package/freeradius2/Default
- SECTION:=net
- CATEGORY:=Network
- URL:=http://freeradius.org/
- SUBMENU:=FreeRADIUS (version 2)
-endef
-
-define Package/freeradius2
- $(call Package/freeradius2/Default)
- DEPENDS:=+libltdl +libreadline +freeradius2-common
- TITLE:=A flexible RADIUS server (version 2)
-endef
-
-define Package/freeradius2/conffiles
-/etc/freeradius2/clients.conf
-/etc/freeradius2/radiusd.conf
-/etc/freeradius2/sites/default
-endef
-
-define Package/freeradius2-democerts
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2
- TITLE:=Demo certificates to test the server
-endef
-
-define Package/freeradius2-common
- $(call Package/freeradius2/Default)
- TITLE:=common files
- DEPENDS:=+libpthread +FREERADIUS_OPENSSL:libopenssl +zlib
-endef
-
-define Package/freeradius2-mod-chap
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2
- TITLE:=CHAP module
-endef
-
-define Package/freeradius2-mod-chap/conffiles
-/etc/freeradius2/modules/chap
-endef
-
-define Package/freeradius2-mod-detail
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2
- TITLE:=Detailed accounting module
-endef
-
-define Package/freeradius2-mod-detail/conffiles
-/etc/freeradius2/modules/detail
-endef
-
-define Package/freeradius2-mod-eap
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2
- TITLE:=Base EAP module
-endef
-
-define Package/freeradius2-mod-eap/conffiles
-/etc/freeradius2/eap.conf
-endef
-
-define Package/freeradius2-mod-eap-gtc
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2-mod-eap
- TITLE:=EAP/GTC module
-endef
-
-define Package/freeradius2-mod-eap-md5
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2-mod-eap
- TITLE:=EAP/MD5 module
-endef
-
-define Package/freeradius2-mod-eap-mschapv2
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2-mod-eap +freeradius2-mod-mschap
- TITLE:=EAP/MS-CHAPv2 module
-endef
-
-define Package/freeradius2-mod-eap-peap
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2-mod-eap @FREERADIUS_OPENSSL
- TITLE:=EAP/PEAP module
-endef
-
-define Package/freeradius2-mod-eap-tls
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2-mod-eap @FREERADIUS_OPENSSL
- TITLE:=EAP/TLS module
-endef
-
-define Package/freeradius2-mod-eap-ttls
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2-mod-eap-tls
- TITLE:=EAP/TTLS module
-endef
-
-define Package/freeradius2-mod-exec
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2
- TITLE:=EXEC module
-endef
-
-define Package/freeradius2-mod-exec/conffiles
-/etc/freeradius2/modules/exec
-endef
-
-define Package/freeradius2-mod-expiration
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2
- TITLE:=Expiration module
-endef
-
-define Package/freeradius2-mod-expiration/conffiles
-/etc/freeradius2/modules/expiration
-endef
-
-define Package/freeradius2-mod-always
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2
- TITLE:=Always module
-endef
-
-define Package/freeradius2-mod-always/conffiles
-/etc/freeradius2/modules/always
-endef
-
-define Package/freeradius2-mod-expr
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2
- TITLE:=EXPR module
-endef
-
-define Package/freeradius2-mod-expr/conffiles
-/etc/freeradius2/modules/expr
-endef
-
-define Package/freeradius2-mod-attr-filter
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2
- TITLE:=ATTR filter module
-endef
-
-define Package/freeradius2-mod-attr-filter/conffiles
-/etc/freeradius2/modules/attr_filter
-/etc/freeradius2/attrs
-/etc/freeradius2/attrs.access_reject
-/etc/freeradius2/attrs.accounting_response
-/etc/freeradius2/attrs.pre-proxy
-endef
-
-define Package/freeradius2-mod-attr-rewrite
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2
- TITLE:=ATTR rewrite module
-endef
-
-define Package/freeradius2-mod-attr-rewrite/conffiles
-/etc/freeradius2/modules/attr_rewrite
-endef
-
-define Package/freeradius2-mod-files
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2
- TITLE:=Module using local files for authorization
-endef
-
-define Package/freeradius2-mod-files/conffiles
-/etc/freeradius2/acct_users
-/etc/freeradius2/preproxy_users
-/etc/freeradius2/users
-/etc/freeradius2/modules/files
-endef
-
-define Package/freeradius2-mod-passwd
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2
- TITLE:=Rlm passwd module
-endef
-
-define Package/freeradius2-mod-passwd/conffiles
-/etc/freeradius2/modules/passwd
-endef
-
-define Package/freeradius2-mod-ldap
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2 +libopenldap
- TITLE:=LDAP module
-endef
-
-define Package/freeradius2-mod-ldap/conffiles
-/etc/freeradius2/ldap.attrmap
-/etc/freeradius2/modules/ldap
-endef
-
-define Package/freeradius2-mod-logintime
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2
- TITLE:=Logintime module
-endef
-
-define Package/freeradius2-mod-logintime/conffiles
-/etc/freeradius2/modules/logintime
-endef
-
-define Package/freeradius2-mod-mschap
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2
- TITLE:=MS-CHAP and MS-CHAPv2 module
-endef
-
-define Package/freeradius2-mod-mschap/conffiles
-/etc/freeradius2/modules/mschap
-endef
-
-define Package/freeradius2-mod-pap
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2
- TITLE:=PAP module
-endef
-
-define Package/freeradius2-mod-pap/conffiles
-/etc/freeradius2/modules/pap
-endef
-
-define Package/freeradius2-mod-preprocess
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2
- TITLE:=Request pre-processing module
-endef
-
-define Package/freeradius2-mod-preprocess/conffiles
-/etc/freeradius2/hints
-/etc/freeradius2/huntgroups
-/etc/freeradius2/modules/preprocess
-endef
-
-define Package/freeradius2-mod-realm
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2
- TITLE:=Realms handling module
-endef
-
-define Package/freeradius2-mod-realm/conffiles
-/etc/freeradius2/proxy.conf
-/etc/freeradius2/modules/realm
-endef
-
-define Package/freeradius2-mod-sql
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2
- TITLE:=Base SQL module
-endef
-
-define Package/freeradius2-mod-sql/conffiles
-/etc/freeradius2/sql.conf
-endef
-
-define Package/freeradius2-mod-sql-mysql
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2-mod-sql +libmysqlclient-r
- TITLE:=MySQL module
-endef
-
-define Package/freeradius2-mod-sql-pgsql
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2-mod-sql +libpq
- TITLE:=PostgreSQL module
-endef
-
-define Package/freeradius2-mod-sql-sqlite
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2-mod-sql +libsqlite3
- TITLE:=SQLite module
-endef
-
-define Package/freeradius2-mod-sqlcounter
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2-mod-sql
- TITLE:=Generic SQL Counter module
-endef
-
-define Package/freeradius2-mod-radutmp
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2
- TITLE:=Radius UTMP module
-endef
-
-define Package/freeradius2-mod-radutmp/conffiles
-/etc/freeradius2/modules/radutmp
-/etc/freeradius2/modules/sradutmp
-endef
-
-define Package/freeradius2-utils
- $(call Package/freeradius2/Default)
- DEPENDS:=+freeradius2-common
- TITLE:=Misc. client utilities
-endef
-
-define Package/freeradius2-mod-sqllog
- $(call Package/freeradius2/Default)
- DEPENDS:=freeradius2
- TITLE:=SQL Logging module
-endef
-
-CONFIGURE_ARGS+= \
- --libdir=/usr/lib/freeradius2 \
- --libexecdir=/usr/lib/freeradius2 \
- --enable-shared \
- --disable-static \
- --disable-developer \
- --with-threads \
- $(if $(CONFIG_FREERADIUS_OPENSSL),--with,--without)-openssl \
- $(if $(CONFIG_FREERADIUS_OPENSSL),--with-openssl-includes="$(STAGING_DIR)/usr/include",) \
- $(if $(CONFIG_FREERADIUS_OPENSSL),--with-openssl-libraries="$(STAGING_DIR)/usr/lib",) \
- $(if $(CONFIG_FREERADIUS_OPENSSL),--disable-openssl-version-check,) \
- --with-system-libtool \
- --with-system-libltdl \
- --enable-strict-dependencies \
- --with-raddbdir=/etc/freeradius2 \
- --with-radacctdir=/var/db/radacct \
- --with-logdir=/var/log \
- --without-edir \
- --without-snmp \
- --without-rlm_checkval \
- --without-rlm_dbm \
- --without-rlm_counter \
- --with-rlm_expr \
- --with-rlm_eap \
- --without-rlm_eap_sim \
- --without-rlm_example \
- --without-rlm_ippool \
- --without-rlm_krb5 \
- --without-rlm_otp \
- --without-rlm_smsotp \
- --without-rlm_pam \
- --without-rlm_perl \
- --without-rlm_python \
- --without-rlm_smb \
- --with-rlm_sql \
- --with-rlm_sqlcounter \
- --without-rlm_sqlhpwippool \
- --without-rlm_sqlippool \
- --without-rlm_sql_db2 \
- --without-rlm_sql_firebird \
- --without-rlm_sql_freetds \
- --without-rlm_sql_iodbc \
- --without-rlm_sql_oracle \
- --without-rlm_sql_sybase \
- --without-rlm_sql_unixodbc \
- --without-rlm_sql_log \
- --without-rlm_unix \
- --without-rlm_eap_tnc \
- --without-rlm_eap_ikev2 \
- --without-rlm_opendirectory \
- --without-rlm_wimax \
- --without-rlm_ruby \
- --without-rlm_caching \
- --without-rlm_redis \
- --without-rlm_rediswho \
- --without-rlm_soh \
- --without-rlm_sim \
- --without-rlm_replicate \
- --without-rlm_protocol_filter \
- --without-rlm_policy \
- --without-rlm_linelog \
- --without-rlm_jradius \
- --without-rlm_fastusers \
- --without-rlm_eap_leap \
- --without-rlm_dynamic_clients \
- --without-rlm_digest \
- --without-rlm_cram \
- --without-rlm_copy_packet \
- --without-rlm_acct_unique \
- --without-rlm_acctlog
-
-
-PKG_DICTIONARIES:= \
- freeradius freeradius.internal \
- rfc2865 rfc2866 rfc2867 rfc2868 rfc2869 rfc3162 rfc3576 rfc3580 \
- rfc4372 rfc4675 rfc4679 \
- microsoft \
- wispr \
-
-ifneq ($(SDK)$(CONFIG_PACKAGE_freeradius2-mod-ldap),)
- CONFIGURE_ARGS+= \
- --with-rlm_ldap-include-dir="$(STAGING_DIR)/usr/include" \
- --with-rlm_ldap-lib-dir="$(STAGING_DIR)/usr/lib"
- CONFIGURE_LIBS+= -lcrypto -lssl
-else
- CONFIGURE_ARGS+= --without-rlm_ldap
-endif
-
-ifneq ($(SDK)$(CONFIG_PACKAGE_freeradius2-mod-sql-mysql),)
- CONFIGURE_ARGS+= \
- --with-mysql-include-dir="$(STAGING_DIR)/usr/include" \
- --with-mysql-lib-dir="$(STAGING_DIR)/usr/lib/mysql"
- CONFIGURE_LIBS+= -lz
- CONFIGURE_VARS+= ac_cv_lib_mysqlclient_r_mysql_init=yes
-else
- CONFIGURE_ARGS+= --without-rlm_sql_mysql
-endif
-
-ifneq ($(SDK)$(CONFIG_PACKAGE_freeradius2-mod-sql-pgsql),)
- CONFIGURE_ARGS+= \
- --with-rlm_sql_postgresql-include-dir="$(STAGING_DIR)/usr/include" \
- --with-rlm_sql_postgresql-lib-dir="$(STAGING_DIR)/usr/lib"
-else
- CONFIGURE_ARGS+= --without-rlm_sql_postgresql
-endif
-
-ifneq ($(SDK)$(CONFIG_PACKAGE_freeradius2-mod-sqllog),)
- CONFIGURE_ARGS+= \
- --with-rlm_sql_log \
- --with-experimental-modules \
-else
- CONFIGURE_ARGS+= --without-rlm_sql_log
-endif
-
-
-ifneq ($(SDK)$(CONFIG_PACKAGE_freeradius2-mod-sql-sqlite),)
- CONFIGURE_ARGS+= \
- --with-rlm_sql_sqlite \
- --with-experimental-modules \
- --with-sqlite-include-dir="$(STAGING_DIR)/usr/include" \
- --with-sqlite-lib-dir="$(STAGING_DIR)/usr/lib"
-else
- CONFIGURE_ARGS+= --without-rlm_sql_sqlite
-endif
-
-ifneq ($(SDK)$(CONFIG_PACKAGE_freeradius2-mod-eap-peap),)
- CONFIGURE_ARGS+= \
- --with-rlm_eap_peap \
- --with-rlm_eap_peap-include-dir="$(STAGING_DIR)/usr/include" \
- --with-rlm_eap_peap-lib-dir="$(STAGING_DIR)/usr/lib"
- CONFIGURE_LIBS+= -lcrypto -lssl
-else
- CONFIGURE_ARGS+= --without-rlm_eap_peap
-endif
-
-ifneq ($(SDK)$(CONFIG_PACKAGE_freeradius2-mod-eap-tls),)
- CONFIGURE_ARGS+= \
- --with-rlm_eap_tls \
- --with-rlm_eap_tls-include-dir="$(STAGING_DIR)/usr/include" \
- --with-rlm_eap_tls-lib-dir="$(STAGING_DIR)/usr/lib"
- CONFIGURE_LIBS+= -lcrypto -lssl
-else
- CONFIGURE_ARGS+= --without-rlm_eap_tls
-endif
-
-ifneq ($(SDK)$(CONFIG_PACKAGE_freeradius2-mod-eap-ttls),)
- CONFIGURE_ARGS+= \
- --with-rlm_eap_ttls \
- --with-rlm_eap_ttls-include-dir="$(STAGING_DIR)/usr/include" \
- --with-rlm_eap_ttls-lib-dir="$(STAGING_DIR)/usr/lib"
- CONFIGURE_LIBS+= -lcrypto -lssl
-else
- CONFIGURE_ARGS+= --without-rlm_eap_ttls
-endif
-
-ifneq ($(SDK)$(CONFIG_PACKAGE_freeradius2-mod-attr-rewrite),)
- CONFIGURE_ARGS+= --with-rlm_attr-rewrite
-else
- CONFIGURE_ARGS+= --without-rlm_attr-rewrite
-endif
-
-ifneq ($(SDK)$(CONFIG_PACKAGE_freeradius2-mod-radutmp),)
- CONFIGURE_ARGS+= --with-rlm_radutmp
-else
- CONFIGURE_ARGS+= --without-rlm_radutmp
-endif
-
-ifneq ($(SDK)$(CONFIG_PACKAGE_freeradius2-mod-logintime),)
- CONFIGURE_ARGS+= --with-rlm_logintime
-else
- CONFIGURE_ARGS+= --without-rlm_logintime
-endif
-
-ifneq ($(SDK)$(CONFIG_PACKAGE_freeradius2-mod-expiration),)
- CONFIGURE_ARGS+= --with-rlm_expiration
-else
- CONFIGURE_ARGS+= --without-rlm_expiration
-endif
-
-ifneq ($(SDK)$(CONFIG_PACKAGE_freeradius2-mod-always),)
- CONFIGURE_ARGS+= --with-rlm_always
-else
- CONFIGURE_ARGS+= --without-rlm_always
-endif
-
-CONFIGURE_VARS+= \
- LDFLAGS="$$$$LDFLAGS" \
- LIBS="$(CONFIGURE_LIBS)" \
- MYSQL_CONFIG="no" \
- ac_cv_lib_readline=no \
-
-define Build/Compile
- $(MAKE) -C $(PKG_BUILD_DIR) \
- R="$(PKG_INSTALL_DIR)" \
- INSTALLSTRIP="" \
- all certs install
-endef
-
-define Package/freeradius2-common/install
- $(INSTALL_DIR) $(1)/etc/freeradius2
- chmod 771 $(1)/etc/freeradius2
- $(CP) $(PKG_INSTALL_DIR)/etc/freeradius2/dictionary $(1)/etc/freeradius2/ ; \
- $(INSTALL_DIR) $(1)/usr/lib/freeradius2
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/freeradius2/libfreeradius-radius{,-*}.so $(1)/usr/lib/freeradius2
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/freeradius2/libfreeradius-eap{,-*}.so $(1)/usr/lib/freeradius2
- $(INSTALL_DIR) $(1)/usr/share/freeradius2
- $(CP) $(PKG_INSTALL_DIR)/usr/share/freeradius/dictionary $(1)/usr/share/freeradius2/
- $(SED) "s,^\(\$$$$INCLUDE\),#\1,g" $(1)/usr/share/freeradius2/dictionary
- for f in $(PKG_DICTIONARIES); do \
- $(CP) $(PKG_INSTALL_DIR)/usr/share/freeradius/dictionary.$$$${f} $(1)/usr/share/freeradius2/ ; \
- $(SED) "s,^#\(\$$$$INCLUDE dictionary\.$$$${f}\),\1,g" $(1)/usr/share/freeradius2/dictionary ; \
- done
-endef
-
-define Package/freeradius2/install
- $(INSTALL_DIR) $(1)/etc/freeradius2/modules
- $(INSTALL_DIR) $(1)/etc/freeradius2/sites
- for f in clients.conf radiusd.conf policy.conf; do \
- $(CP) $(PKG_INSTALL_DIR)/etc/freeradius2/$$$${f} $(1)/etc/freeradius2/ ; \
- done
- $(CP) $(PKG_INSTALL_DIR)/etc/freeradius2/sites-available/default $(1)/etc/freeradius2/sites/default
- $(INSTALL_DIR) $(1)/usr/sbin
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/radiusd $(1)/usr/sbin/
- $(INSTALL_DIR) $(1)/etc/init.d
- $(INSTALL_BIN) ./files/radiusd.init $(1)/etc/init.d/radiusd
-endef
-
-define Package/freeradius2-democerts/install
- $(INSTALL_DIR) $(1)/etc/freeradius2/certs
- $(CP) \
- $(PKG_BUILD_DIR)/raddb/certs/ca.pem \
- $(PKG_BUILD_DIR)/raddb/certs/dh \
- $(PKG_BUILD_DIR)/raddb/certs/random \
- $(PKG_BUILD_DIR)/raddb/certs/server.pem \
- $(1)/etc/freeradius2/certs/
-endef
-
-define Package/freeradius2-utils/install
- $(INSTALL_DIR) $(1)/usr/bin
- for f in radclient radeapclient radwho; do \
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/$$$${f} $(1)/usr/bin/ ; \
- done
-endef
-
-define BuildPlugin
- define Package/$(1)/install
- [ -z "$(2)" ] || $(INSTALL_DIR) $$(1)/usr/lib/freeradius2
- for m in $(2); do \
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/freeradius2/$$$$$$$${m}{,-*}.so $$(1)/usr/lib/freeradius2 ; \
- done
- [ -z "$(3)" ] || $(INSTALL_DIR) $$(1)/etc/freeradius2
- [ -z "$(4)" ] || $(INSTALL_DIR) $$(1)/etc/freeradius2/$(4)
- for f in $(3); do \
- $(CP) $(PKG_INSTALL_DIR)/etc/freeradius2/$$$$$$$${f} $$(1)/etc/freeradius2/$$$$$$$${f} ; \
- done
- endef
-
- $$(eval $$(call BuildPackage,$(1)))
-endef
-
-$(eval $(call BuildPackage,freeradius2))
-$(eval $(call BuildPackage,freeradius2-common))
-$(eval $(call BuildPackage,freeradius2-democerts))
-$(eval $(call BuildPlugin,freeradius2-mod-chap,rlm_chap,modules/chap,modules,))
-$(eval $(call BuildPlugin,freeradius2-mod-detail,rlm_detail,modules/detail,modules,))
-$(eval $(call BuildPlugin,freeradius2-mod-eap,rlm_eap,eap.conf))
-$(eval $(call BuildPlugin,freeradius2-mod-eap-gtc,rlm_eap_gtc,))
-$(eval $(call BuildPlugin,freeradius2-mod-eap-md5,rlm_eap_md5,))
-$(eval $(call BuildPlugin,freeradius2-mod-eap-mschapv2,rlm_eap_mschapv2,))
-$(eval $(call BuildPlugin,freeradius2-mod-eap-peap,rlm_eap_peap,))
-$(eval $(call BuildPlugin,freeradius2-mod-eap-tls,rlm_eap_tls,))
-$(eval $(call BuildPlugin,freeradius2-mod-eap-ttls,rlm_eap_ttls,))
-$(eval $(call BuildPlugin,freeradius2-mod-exec,rlm_exec,modules/exec modules/echo ,modules,))
-$(eval $(call BuildPlugin,freeradius2-mod-attr-rewrite,rlm_attr_rewrite,modules/attr_rewrite,modules,))
-$(eval $(call BuildPlugin,freeradius2-mod-files,rlm_files,acct_users preproxy_users users modules/files,modules,))
-$(eval $(call BuildPlugin,freeradius2-mod-passwd,rlm_passwd,modules/passwd,modules,))
-$(eval $(call BuildPlugin,freeradius2-mod-ldap,rlm_ldap,ldap.attrmap modules/ldap,modules,))
-$(eval $(call BuildPlugin,freeradius2-mod-mschap,rlm_mschap,modules/mschap,modules,))
-$(eval $(call BuildPlugin,freeradius2-mod-pap,rlm_pap,modules/pap,modules,))
-$(eval $(call BuildPlugin,freeradius2-mod-preprocess,rlm_preprocess,hints huntgroups modules/preprocess,modules,))
-$(eval $(call BuildPlugin,freeradius2-mod-realm,rlm_realm,proxy.conf modules/realm modules/inner-eap,modules,))
-$(eval $(call BuildPlugin,freeradius2-mod-sql,rlm_sql,sql.conf,))
-$(eval $(call BuildPlugin,freeradius2-mod-sql-mysql,rlm_sql_mysql,))
-$(eval $(call BuildPlugin,freeradius2-mod-sql-pgsql,rlm_sql_postgresql,))
-$(eval $(call BuildPlugin,freeradius2-mod-sql-sqlite,rlm_sql_sqlite,))
-$(eval $(call BuildPlugin,freeradius2-mod-sqlcounter,rlm_sqlcounter,))
-$(eval $(call BuildPlugin,freeradius2-mod-sqllog,rlm_sql_log,))
-$(eval $(call BuildPlugin,freeradius2-mod-radutmp,rlm_radutmp,modules/radutmp modules/sradutmp,modules,))
-$(eval $(call BuildPlugin,freeradius2-mod-logintime,rlm_logintime,modules/logintime,modules,))
-$(eval $(call BuildPlugin,freeradius2-mod-expr,rlm_expr,modules/expr,modules,))
-$(eval $(call BuildPlugin,freeradius2-mod-attr-filter,rlm_attr_filter,modules/attr_filter attrs attrs.access_reject attrs.accounting_response attrs.pre-proxy,modules,,))
-$(eval $(call BuildPlugin,freeradius2-mod-expiration,rlm_expiration,modules/expiration,modules,))
-$(eval $(call BuildPlugin,freeradius2-mod-always,rlm_always,modules/always,modules,))
-$(eval $(call BuildPackage,freeradius2-utils))
+++ /dev/null
-#!/bin/sh /etc/rc.common
-#
-# Copyright (C) 2006-2015 OpenWrt.org
-#
-
-USE_PROCD=1
-
-START=50
-
-NAME=radiusd
-PROG=/usr/sbin/radiusd
-DEFAULT=/etc/default/radiusd
-
-start_service()
-{
- [ -f $DEFAULT ] && . $DEFAULT
- mkdir -p /var/log
- mkdir -p /var/run
- mkdir -p /var/db/radacct
- mkdir -p /tmp/radiusd
-
- procd_open_instance
- procd_set_param command $PROG -f
- procd_set_param env LD_LIBRARY_PATH=/usr/lib/freeradius2
- [ -n "$IPADDR" ] && procd_append_param command -i $IPADDR
- [ -n "$OPTIONS" ] && procd_append_param command $OPTIONS
- procd_set_param respawn
- procd_close_instance
-}
+++ /dev/null
-Index: freeradius-server-2.2.7/Make.inc.in
-===================================================================
---- freeradius-server-2.2.7.orig/Make.inc.in
-+++ freeradius-server-2.2.7/Make.inc.in
-@@ -5,6 +5,7 @@
- #
-
- # Location of files.
-+SHELL = @SHELL@
- prefix = @prefix@
- exec_prefix = @exec_prefix@
- sysconfdir = @sysconfdir@
+++ /dev/null
-Index: freeradius-server-2.2.7/raddb/dictionary.in
-===================================================================
---- freeradius-server-2.2.7.orig/raddb/dictionary.in
-+++ freeradius-server-2.2.7/raddb/dictionary.in
-@@ -11,7 +11,7 @@
- #
- # The filename given here should be an absolute path.
- #
--$INCLUDE @prefix@/share/freeradius/dictionary
-+$INCLUDE @prefix@/share/freeradius2/dictionary
-
- #
- # Place additional attributes or $INCLUDEs here. They will
-Index: freeradius-server-2.2.7/raddb/eap.conf
-===================================================================
---- freeradius-server-2.2.7.orig/raddb/eap.conf
-+++ freeradius-server-2.2.7/raddb/eap.conf
-@@ -27,7 +27,7 @@
- # then that EAP type takes precedence over the
- # default type configured here.
- #
-- default_eap_type = md5
-+ default_eap_type = peap
-
- # A list is maintained to correlate EAP-Response
- # packets with EAP-Request packets. After a
-@@ -72,8 +72,8 @@
- # for wireless connections. It is insecure, and does
- # not provide for dynamic WEP keys.
- #
-- md5 {
-- }
-+# md5 {
-+# }
-
- # Cisco LEAP
- #
-@@ -87,8 +87,8 @@
- # User-Password, or the NT-Password attributes.
- # 'System' authentication is impossible with LEAP.
- #
-- leap {
-- }
-+# leap {
-+# }
-
- # Generic Token Card.
- #
-@@ -101,7 +101,7 @@
- # the users password will go over the wire in plain-text,
- # for anyone to see.
- #
-- gtc {
-+# gtc {
- # The default challenge, which many clients
- # ignore..
- #challenge = "Password: "
-@@ -118,8 +118,8 @@
- # configured for the request, and do the
- # authentication itself.
- #
-- auth_type = PAP
-- }
-+# auth_type = PAP
-+# }
-
- ## EAP-TLS
- #
-@@ -215,7 +215,7 @@
- # In these cases, fragment size should be
- # 1024 or less.
- #
-- # fragment_size = 1024
-+ fragment_size = 1024
-
- # include_length is a flag which is
- # by default set to yes If set to
-@@ -225,7 +225,7 @@
- # message is included ONLY in the
- # First packet of a fragment series.
- #
-- # include_length = yes
-+ include_length = yes
-
- # Check the Certificate Revocation List
- #
-@@ -297,7 +297,7 @@
- # for the server to print out an error message,
- # and refuse to start.
- #
-- make_cert_command = "${certdir}/bootstrap"
-+ # make_cert_command = "${certdir}/bootstrap"
-
- #
- # Elliptical cryptography configuration
-@@ -332,7 +332,7 @@
- # You probably also want "use_tunneled_reply = yes"
- # when using fast session resumption.
- #
-- cache {
-+ # cache {
- #
- # Enable it. The default is "no".
- # Deleting the entire "cache" subsection
-@@ -348,14 +348,14 @@
- # enable resumption for just one user
- # by setting the above attribute to "yes".
- #
-- enable = no
-+ # enable = no
-
- #
- # Lifetime of the cached entries, in hours.
- # The sessions will be deleted after this
- # time.
- #
-- lifetime = 24 # hours
-+ # lifetime = 24 # hours
-
- #
- # The maximum number of entries in the
-@@ -364,8 +364,8 @@
- # This could be set to the number of users
- # who are logged in... which can be a LOT.
- #
-- max_entries = 255
-- }
-+ # max_entries = 255
-+ # }
-
- #
- # As of version 2.1.10, client certificates can be
-@@ -503,7 +503,7 @@
- #
- # in the control items for a request.
- #
-- ttls {
-+# ttls {
- # The tunneled EAP session needs a default
- # EAP type which is separate from the one for
- # the non-tunneled EAP module. Inside of the
-@@ -511,7 +511,7 @@
- # If the request does not contain an EAP
- # conversation, then this configuration entry
- # is ignored.
-- default_eap_type = md5
-+# default_eap_type = mschapv2
-
- # The tunneled authentication request does
- # not usually contain useful attributes
-@@ -527,7 +527,7 @@
- # is copied to the tunneled request.
- #
- # allowed values: {no, yes}
-- copy_request_to_tunnel = no
-+# copy_request_to_tunnel = yes
-
- # The reply attributes sent to the NAS are
- # usually based on the name of the user
-@@ -540,7 +540,7 @@
- # the tunneled request.
- #
- # allowed values: {no, yes}
-- use_tunneled_reply = no
-+# use_tunneled_reply = no
-
- #
- # The inner tunneled request can be sent
-@@ -552,13 +552,13 @@
- # the virtual server that processed the
- # outer requests.
- #
-- virtual_server = "inner-tunnel"
-+# virtual_server = "inner-tunnel"
-
- # This has the same meaning as the
- # same field in the "tls" module, above.
- # The default value here is "yes".
- # include_length = yes
-- }
-+# }
-
- ##################################################
- #
-@@ -627,14 +627,14 @@
-
- # the PEAP module also has these configuration
- # items, which are the same as for TTLS.
-- copy_request_to_tunnel = no
-- use_tunneled_reply = no
-+ copy_request_to_tunnel = yes
-+ use_tunneled_reply = yes
-
- # When the tunneled session is proxied, the
- # home server may not understand EAP-MSCHAP-V2.
- # Set this entry to "no" to proxy the tunneled
- # EAP-MSCHAP-V2 as normal MSCHAPv2.
-- # proxy_tunneled_request_as_eap = yes
-+ proxy_tunneled_request_as_eap = no
-
- #
- # The inner tunneled request can be sent
-@@ -646,7 +646,8 @@
- # the virtual server that processed the
- # outer requests.
- #
-- virtual_server = "inner-tunnel"
-+ # virtual_server = "inner-tunnel"
-+ EAP-TLS-Require-Client-Cert = no
-
- # This option enables support for MS-SoH
- # see doc/SoH.txt for more info.
-Index: freeradius-server-2.2.7/raddb/modules/counter
-===================================================================
---- freeradius-server-2.2.7.orig/raddb/modules/counter
-+++ freeradius-server-2.2.7/raddb/modules/counter
-@@ -69,7 +69,7 @@
- # 'check-name' attribute.
- #
- counter daily {
-- filename = ${db_dir}/db.daily
-+ filename = ${radacctdir}/db.daily
- key = User-Name
- count-attribute = Acct-Session-Time
- reset = daily
-Index: freeradius-server-2.2.7/raddb/modules/pap
-===================================================================
---- freeradius-server-2.2.7.orig/raddb/modules/pap
-+++ freeradius-server-2.2.7/raddb/modules/pap
-@@ -18,5 +18,5 @@
- #
- # http://www.openldap.org/faq/data/cache/347.html
- pap {
-- auto_header = no
-+ auto_header = yes
- }
-Index: freeradius-server-2.2.7/raddb/modules/radutmp
-===================================================================
---- freeradius-server-2.2.7.orig/raddb/modules/radutmp
-+++ freeradius-server-2.2.7/raddb/modules/radutmp
-@@ -12,7 +12,7 @@ radutmp {
- # Where the file is stored. It's not a log file,
- # so it doesn't need rotating.
- #
-- filename = ${logdir}/radutmp
-+ filename = ${radacctdir}/radutmp
-
- # The field in the packet to key on for the
- # 'user' name, If you have other fields which you want
-Index: freeradius-server-2.2.7/raddb/modules/sradutmp
-===================================================================
---- freeradius-server-2.2.7.orig/raddb/modules/sradutmp
-+++ freeradius-server-2.2.7/raddb/modules/sradutmp
-@@ -10,7 +10,7 @@
- # then name "sradutmp" to identify it later in the "accounting"
- # section.
- radutmp sradutmp {
-- filename = ${logdir}/sradutmp
-+ filename = ${radacctdir}/sradutmp
- perm = 0644
- callerid = "no"
- }
-Index: freeradius-server-2.2.7/raddb/radiusd.conf.in
-===================================================================
---- freeradius-server-2.2.7.orig/raddb/radiusd.conf.in
-+++ freeradius-server-2.2.7/raddb/radiusd.conf.in
-@@ -66,7 +66,7 @@ name = radiusd
-
- # Location of config and logfiles.
- confdir = ${raddbdir}
--run_dir = ${localstatedir}/run/${name}
-+run_dir = ${localstatedir}/run
-
- # Should likely be ${localstatedir}/lib/radiusd
- db_dir = ${raddbdir}
-@@ -323,7 +323,7 @@ listen {
- # If your system does not support this feature, you will
- # get an error if you try to use it.
- #
--# interface = eth0
-+ interface = br-lan
-
- # Per-socket lists of clients. This is a very useful feature.
- #
-@@ -350,7 +350,7 @@ listen {
- # ipv6addr = ::
- port = 0
- type = acct
--# interface = eth0
-+ interface = br-lan
- # clients = per_socket_clients
- }
-
-@@ -576,8 +576,8 @@ security {
- #
- # allowed values: {no, yes}
- #
--proxy_requests = yes
--$INCLUDE proxy.conf
-+proxy_requests = no
-+#$INCLUDE proxy.conf
-
-
- # CLIENTS CONFIGURATION
-@@ -774,7 +774,7 @@ instantiate {
- # The entire command line (and output) must fit into 253 bytes.
- #
- # e.g. Framed-Pool = `%{exec:/bin/echo foo}`
-- exec
-+# exec
-
- #
- # The expression module doesn't do authorization,
-@@ -791,15 +791,15 @@ instantiate {
- # other xlat functions such as md5, sha1 and lc.
- #
- # We do not recommend removing it's listing here.
-- expr
-+# expr
-
- #
- # We add the counter module here so that it registers
- # the check-name attribute before any module which sets
- # it
- # daily
-- expiration
-- logintime
-+# expiration
-+# logintime
-
- # subsections here can be thought of as "virtual" modules.
- #
-@@ -823,7 +823,7 @@ instantiate {
- # to multiple times.
- #
- ######################################################################
--$INCLUDE policy.conf
-+#$INCLUDE policy.conf
-
- ######################################################################
- #
-@@ -833,9 +833,9 @@ $INCLUDE policy.conf
- # match the regular expression: /[a-zA-Z0-9_.]+/
- #
- # It allows you to define new virtual servers simply by placing
--# a file into the raddb/sites-enabled/ directory.
-+# a file into the /etc/freeradius2/sites/ directory.
- #
--$INCLUDE sites-enabled/
-+$INCLUDE sites/
-
- ######################################################################
- #
-@@ -843,7 +843,7 @@ $INCLUDE sites-enabled/
- # "authenticate {}", "accounting {}", have been moved to the
- # the file:
- #
--# raddb/sites-available/default
-+# /etc/freeradius2/sites/default
- #
- # This is the "default" virtual server that has the same
- # configuration as in version 1.0.x and 1.1.x. The default
-Index: freeradius-server-2.2.7/raddb/sites-available/default
-===================================================================
---- freeradius-server-2.2.7.orig/raddb/sites-available/default
-+++ freeradius-server-2.2.7/raddb/sites-available/default
-@@ -85,7 +85,7 @@ authorize {
- #
- # It takes care of processing the 'raddb/hints' and the
- # 'raddb/huntgroups' files.
-- preprocess
-+# preprocess
-
- #
- # If you want to have a log of authentication requests,
-@@ -96,7 +96,7 @@ authorize {
- #
- # The chap module will set 'Auth-Type := CHAP' if we are
- # handling a CHAP request and Auth-Type has not already been set
-- chap
-+# chap
-
- #
- # If the users are logging in with an MS-CHAP-Challenge
-@@ -104,13 +104,13 @@ authorize {
- # the MS-CHAP-Challenge attribute, and add 'Auth-Type := MS-CHAP'
- # to the request, which will cause the server to then use
- # the mschap module for authentication.
-- mschap
-+# mschap
-
- #
- # If you have a Cisco SIP server authenticating against
- # FreeRADIUS, uncomment the following line, and the 'digest'
- # line in the 'authenticate' section.
-- digest
-+# digest
-
- #
- # The WiMAX specification says that the Calling-Station-Id
-@@ -133,7 +133,7 @@ authorize {
- # Otherwise, when the first style of realm doesn't match,
- # the other styles won't be checked.
- #
-- suffix
-+# suffix
- # ntdomain
-
- #
-@@ -197,8 +197,8 @@ authorize {
- # Use the checkval module
- # checkval
-
-- expiration
-- logintime
-+# expiration
-+# logintime
-
- #
- # If no other module has claimed responsibility for
-@@ -279,7 +279,7 @@ authenticate {
- # If you have a Cisco SIP server authenticating against
- # FreeRADIUS, uncomment the following line, and the 'digest'
- # line in the 'authorize' section.
-- digest
-+# digest
-
- #
- # Pluggable Authentication Modules.
-@@ -296,7 +296,7 @@ authenticate {
- # be used for authentication ONLY for compatibility with legacy
- # FreeRADIUS configurations.
- #
-- unix
-+# unix
-
- # Uncomment it if you want to use ldap for authentication
- #
-@@ -332,8 +332,8 @@ authenticate {
- #
- # Pre-accounting. Decide which accounting type to use.
- #
--preacct {
-- preprocess
-+#preacct {
-+# preprocess
-
- #
- # Session start times are *implied* in RADIUS.
-@@ -356,7 +356,7 @@ preacct {
- #
- # Ensure that we have a semi-unique identifier for every
- # request, and many NAS boxes are broken.
-- acct_unique
-+# acct_unique
-
- #
- # Look for IPASS-style 'realm/', and if not found, look for
-@@ -366,13 +366,13 @@ preacct {
- # Accounting requests are generally proxied to the same
- # home server as authentication requests.
- # IPASS
-- suffix
-+# suffix
- # ntdomain
-
- #
- # Read the 'acct_users' file
-- files
--}
-+# files
-+#}
-
- #
- # Accounting. Log the accounting data.
-@@ -382,7 +382,7 @@ accounting {
- # Create a 'detail'ed log of the packets.
- # Note that accounting requests which are proxied
- # are also logged in the detail file.
-- detail
-+# detail
- # daily
-
- # Update the wtmp file
-@@ -434,7 +434,7 @@ accounting {
- exec
-
- # Filter attributes from the accounting response.
-- attr_filter.accounting_response
-+ #attr_filter.accounting_response
-
- #
- # See "Autz-Type Status-Server" for how this works.
-@@ -460,7 +460,7 @@ session {
- # Post-Authentication
- # Once we KNOW that the user has been authenticated, there are
- # additional steps we can take.
--post-auth {
-+#post-auth {
- # Get an address from the IP Pool.
- # main_pool
-
-@@ -490,7 +490,7 @@ post-auth {
- # ldap
-
- # For Exec-Program and Exec-Program-Wait
-- exec
-+# exec
-
- #
- # Calculate the various WiMAX keys. In order for this to work,
-@@ -574,18 +574,18 @@ post-auth {
- # Add the ldap module name (or instance) if you have set
- # 'edir_account_policy_check = yes' in the ldap module configuration
- #
-- Post-Auth-Type REJECT {
-- # log failed authentications in SQL, too.
-+# Post-Auth-Type REJECT {
-+# # log failed authentications in SQL, too.
- # sql
-
- # Insert EAP-Failure message if the request was
- # rejected by policy instead of because of an
- # authentication failure
-- eap
-+# eap
-
-- attr_filter.access_reject
-- }
--}
-+# attr_filter.access_reject
-+# }
-+#}
-
- #
- # When the server decides to proxy a request to a home server,
-@@ -595,7 +595,7 @@ post-auth {
- #
- # Only a few modules currently have this method.
- #
--pre-proxy {
-+#pre-proxy {
- # attr_rewrite
-
- # Uncomment the following line if you want to change attributes
-@@ -611,14 +611,14 @@ pre-proxy {
- # server, un-comment the following line, and the
- # 'detail pre_proxy_log' section, above.
- # pre_proxy_log
--}
-+#}
-
- #
- # When the server receives a reply to a request it proxied
- # to a home server, the request may be massaged here, in the
- # post-proxy stage.
- #
--post-proxy {
-+#post-proxy {
-
- # If you want to have a log of replies from a home server,
- # un-comment the following line, and the 'detail post_proxy_log'
-@@ -642,7 +642,7 @@ post-proxy {
- # hidden inside of the EAP packet, and the end server will
- # reject the EAP request.
- #
-- eap
-+# eap
-
- #
- # If the server tries to proxy a request and fails, then the
-@@ -664,5 +664,5 @@ post-proxy {
- # Post-Proxy-Type Fail {
- # detail
- # }
--}
-+#}
-
-Index: freeradius-server-2.2.7/raddb/users
-===================================================================
---- freeradius-server-2.2.7.orig/raddb/users
-+++ freeradius-server-2.2.7/raddb/users
-@@ -169,22 +169,22 @@
- # by the terminal server in which case there may not be a "P" suffix.
- # The terminal server sends "Framed-Protocol = PPP" for auto PPP.
- #
--DEFAULT Framed-Protocol == PPP
-- Framed-Protocol = PPP,
-- Framed-Compression = Van-Jacobson-TCP-IP
-+#DEFAULT Framed-Protocol == PPP
-+# Framed-Protocol = PPP,
-+# Framed-Compression = Van-Jacobson-TCP-IP
-
- #
- # Default for CSLIP: dynamic IP address, SLIP mode, VJ-compression.
- #
--DEFAULT Hint == "CSLIP"
-- Framed-Protocol = SLIP,
-- Framed-Compression = Van-Jacobson-TCP-IP
-+#DEFAULT Hint == "CSLIP"
-+# Framed-Protocol = SLIP,
-+# Framed-Compression = Van-Jacobson-TCP-IP
-
- #
- # Default for SLIP: dynamic IP address, SLIP mode.
- #
--DEFAULT Hint == "SLIP"
-- Framed-Protocol = SLIP
-+#DEFAULT Hint == "SLIP"
-+# Framed-Protocol = SLIP
-
- #
- # Last default: rlogin to our main server.
+++ /dev/null
-Index: freeradius-server-2.2.7/src/modules/rlm_ldap/configure
-===================================================================
---- freeradius-server-2.2.7.orig/src/modules/rlm_ldap/configure
-+++ freeradius-server-2.2.7/src/modules/rlm_ldap/configure
-@@ -1,10 +1,10 @@
- #! /bin/sh
- # From configure.in Revision.
- # Guess values for system-dependent variables and create Makefiles.
--# Generated by GNU Autoconf 2.61.
-+# Generated by GNU Autoconf 2.63.
- #
- # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
--# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
-+# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
- # This configure script is free software; the Free Software Foundation
- # gives unlimited permission to copy, distribute and modify it.
- ## --------------------- ##
-@@ -16,7 +16,7 @@ DUALCASE=1; export DUALCASE # for MKS sh
- if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
-- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-@@ -38,17 +38,45 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTE
- as_cr_digits='0123456789'
- as_cr_alnum=$as_cr_Letters$as_cr_digits
-
--# The user is always right.
--if test "${PATH_SEPARATOR+set}" != set; then
-- echo "#! /bin/sh" >conf$$.sh
-- echo "exit 0" >>conf$$.sh
-- chmod +x conf$$.sh
-- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-- PATH_SEPARATOR=';'
-+as_nl='
-+'
-+export as_nl
-+# Printing a long string crashes Solaris 7 /usr/bin/printf.
-+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-+ as_echo='printf %s\n'
-+ as_echo_n='printf %s'
-+else
-+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-+ as_echo_n='/usr/ucb/echo -n'
- else
-- PATH_SEPARATOR=:
-+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-+ as_echo_n_body='eval
-+ arg=$1;
-+ case $arg in
-+ *"$as_nl"*)
-+ expr "X$arg" : "X\\(.*\\)$as_nl";
-+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-+ esac;
-+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-+ '
-+ export as_echo_n_body
-+ as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
-- rm -f conf$$.sh
-+ export as_echo_body
-+ as_echo='sh -c $as_echo_body as_echo'
-+fi
-+
-+# The user is always right.
-+if test "${PATH_SEPARATOR+set}" != set; then
-+ PATH_SEPARATOR=:
-+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-+ PATH_SEPARATOR=';'
-+ }
- fi
-
- # Support unset when possible.
-@@ -64,8 +92,6 @@ fi
- # there to prevent editors from complaining about space-tab.
- # (If _AS_PATH_WALK were called with IFS unset, it would disable word
- # splitting by setting IFS to empty value.)
--as_nl='
--'
- IFS=" "" $as_nl"
-
- # Find who we are. Look in the path if we contain no directory separator.
-@@ -88,7 +114,7 @@ if test "x$as_myself" = x; then
- as_myself=$0
- fi
- if test ! -f "$as_myself"; then
-- echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
- { (exit 1); exit 1; }
- fi
-
-@@ -101,17 +127,10 @@ PS2='> '
- PS4='+ '
-
- # NLS nuisances.
--for as_var in \
-- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-- LC_TELEPHONE LC_TIME
--do
-- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
-- eval $as_var=C; export $as_var
-- else
-- ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-- fi
--done
-+LC_ALL=C
-+export LC_ALL
-+LANGUAGE=C
-+export LANGUAGE
-
- # Required to use basename.
- if expr a : '\(a\)' >/dev/null 2>&1 &&
-@@ -133,7 +152,7 @@ as_me=`$as_basename -- "$0" ||
- $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
--echo X/"$0" |
-+$as_echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{
- s//\1/
- q
-@@ -159,7 +178,7 @@ else
- as_have_required=no
- fi
-
-- if test $as_have_required = yes && (eval ":
-+ if test $as_have_required = yes && (eval ":
- (as_func_return () {
- (exit \$1)
- }
-@@ -241,7 +260,7 @@ IFS=$as_save_IFS
- if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
-- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-@@ -262,7 +281,7 @@ _ASEOF
- if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
-- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-@@ -342,10 +361,10 @@ fi
-
- if test "x$CONFIG_SHELL" != x; then
- for as_var in BASH_ENV ENV
-- do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-- done
-- export CONFIG_SHELL
-- exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
-+ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-+ done
-+ export CONFIG_SHELL
-+ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
- fi
-
-
-@@ -414,9 +433,10 @@ fi
-
- test \$exitcode = 0") || {
- echo No shell found that supports shell functions.
-- echo Please tell autoconf@gnu.org about your system,
-- echo including any error possibly output before this
-- echo message
-+ echo Please tell bug-autoconf@gnu.org about your system,
-+ echo including any error possibly output before this message.
-+ echo This can help us improve future autoconf versions.
-+ echo Configuration will now proceed without shell functions.
- }
-
-
-@@ -452,7 +472,7 @@ test \$exitcode = 0") || {
- s/-\n.*//
- ' >$as_me.lineno &&
- chmod +x "$as_me.lineno" ||
-- { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
- { (exit 1); exit 1; }; }
-
- # Don't try to exec as it changes $[0], causing all sort of problems
-@@ -480,7 +500,6 @@ case `echo -n x` in
- *)
- ECHO_N='-n';;
- esac
--
- if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-@@ -493,19 +512,22 @@ if test -d conf$$.dir; then
- rm -f conf$$.dir/conf$$.file
- else
- rm -f conf$$.dir
-- mkdir conf$$.dir
-+ mkdir conf$$.dir 2>/dev/null
- fi
--echo >conf$$.file
--if ln -s conf$$.file conf$$ 2>/dev/null; then
-- as_ln_s='ln -s'
-- # ... but there are two gotchas:
-- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-- # In both cases, we have to default to `cp -p'.
-- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-+if (echo >conf$$.file) 2>/dev/null; then
-+ if ln -s conf$$.file conf$$ 2>/dev/null; then
-+ as_ln_s='ln -s'
-+ # ... but there are two gotchas:
-+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-+ # In both cases, we have to default to `cp -p'.
-+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-+ as_ln_s='cp -p'
-+ elif ln conf$$.file conf$$ 2>/dev/null; then
-+ as_ln_s=ln
-+ else
- as_ln_s='cp -p'
--elif ln conf$$.file conf$$ 2>/dev/null; then
-- as_ln_s=ln
-+ fi
- else
- as_ln_s='cp -p'
- fi
-@@ -530,10 +552,10 @@ else
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
-- test -d "$1/.";
-+ test -d "$1/.";
- else
- case $1 in
-- -*)set "./$1";;
-+ -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
- ???[sx]*):;;*)false;;esac;fi
-@@ -578,57 +600,65 @@ PACKAGE_STRING=
- PACKAGE_BUGREPORT=
-
- ac_unique_file="rlm_ldap.c"
--ac_subst_vars='SHELL
--PATH_SEPARATOR
--PACKAGE_NAME
--PACKAGE_TARNAME
--PACKAGE_VERSION
--PACKAGE_STRING
--PACKAGE_BUGREPORT
--exec_prefix
--prefix
--program_transform_name
--bindir
--sbindir
--libexecdir
--datarootdir
--datadir
--sysconfdir
--sharedstatedir
--localstatedir
--includedir
--oldincludedir
--docdir
--infodir
--htmldir
--dvidir
--pdfdir
--psdir
--libdir
--localedir
--mandir
--DEFS
--ECHO_C
--ECHO_N
--ECHO_T
--LIBS
--build_alias
--host_alias
--target_alias
--CC
--CFLAGS
--LDFLAGS
--CPPFLAGS
--ac_ct_CC
--EXEEXT
--OBJEXT
--edir
--ldap_ldflags
--ldap_cflags
--targetname
-+ac_subst_vars='LTLIBOBJS
- LIBOBJS
--LTLIBOBJS'
-+targetname
-+ldap_cflags
-+ldap_ldflags
-+edir
-+OBJEXT
-+EXEEXT
-+ac_ct_CC
-+CPPFLAGS
-+LDFLAGS
-+CFLAGS
-+CC
-+target_alias
-+host_alias
-+build_alias
-+LIBS
-+ECHO_T
-+ECHO_N
-+ECHO_C
-+DEFS
-+mandir
-+localedir
-+libdir
-+psdir
-+pdfdir
-+dvidir
-+htmldir
-+infodir
-+docdir
-+oldincludedir
-+includedir
-+localstatedir
-+sharedstatedir
-+sysconfdir
-+datadir
-+datarootdir
-+libexecdir
-+sbindir
-+bindir
-+program_transform_name
-+prefix
-+exec_prefix
-+PACKAGE_BUGREPORT
-+PACKAGE_STRING
-+PACKAGE_VERSION
-+PACKAGE_TARNAME
-+PACKAGE_NAME
-+PATH_SEPARATOR
-+SHELL'
- ac_subst_files=''
-+ac_user_opts='
-+enable_option_checking
-+with_rlm_ldap_lib_dir
-+with_rlm_ldap_include_dir
-+enable_shared
-+with_threads
-+with_edir
-+'
- ac_precious_vars='build_alias
- host_alias
- target_alias
-@@ -642,6 +672,8 @@ CPPFLAGS'
- # Initialize some variables set by options.
- ac_init_help=
- ac_init_version=false
-+ac_unrecognized_opts=
-+ac_unrecognized_sep=
- # The variables have the same names as the options, with
- # dashes changed to underlines.
- cache_file=/dev/null
-@@ -740,13 +772,21 @@ do
- datarootdir=$ac_optarg ;;
-
- -disable-* | --disable-*)
-- ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
- # Reject names that are not valid shell variable names.
-- expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
-+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-+ { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
- { (exit 1); exit 1; }; }
-- ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
-- eval enable_$ac_feature=no ;;
-+ ac_useropt_orig=$ac_useropt
-+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-+ case $ac_user_opts in
-+ *"
-+"enable_$ac_useropt"
-+"*) ;;
-+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
-+ ac_unrecognized_sep=', ';;
-+ esac
-+ eval enable_$ac_useropt=no ;;
-
- -docdir | --docdir | --docdi | --doc | --do)
- ac_prev=docdir ;;
-@@ -759,13 +799,21 @@ do
- dvidir=$ac_optarg ;;
-
- -enable-* | --enable-*)
-- ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
-- expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
-+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-+ { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
- { (exit 1); exit 1; }; }
-- ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
-- eval enable_$ac_feature=\$ac_optarg ;;
-+ ac_useropt_orig=$ac_useropt
-+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-+ case $ac_user_opts in
-+ *"
-+"enable_$ac_useropt"
-+"*) ;;
-+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
-+ ac_unrecognized_sep=', ';;
-+ esac
-+ eval enable_$ac_useropt=\$ac_optarg ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-@@ -956,22 +1004,38 @@ do
- ac_init_version=: ;;
-
- -with-* | --with-*)
-- ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
-- expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-- { echo "$as_me: error: invalid package name: $ac_package" >&2
-+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-+ { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
- { (exit 1); exit 1; }; }
-- ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
-- eval with_$ac_package=\$ac_optarg ;;
-+ ac_useropt_orig=$ac_useropt
-+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-+ case $ac_user_opts in
-+ *"
-+"with_$ac_useropt"
-+"*) ;;
-+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
-+ ac_unrecognized_sep=', ';;
-+ esac
-+ eval with_$ac_useropt=\$ac_optarg ;;
-
- -without-* | --without-*)
-- ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
- # Reject names that are not valid shell variable names.
-- expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-- { echo "$as_me: error: invalid package name: $ac_package" >&2
-+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-+ { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
- { (exit 1); exit 1; }; }
-- ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
-- eval with_$ac_package=no ;;
-+ ac_useropt_orig=$ac_useropt
-+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-+ case $ac_user_opts in
-+ *"
-+"with_$ac_useropt"
-+"*) ;;
-+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
-+ ac_unrecognized_sep=', ';;
-+ esac
-+ eval with_$ac_useropt=no ;;
-
- --x)
- # Obsolete; use --with-x.
-@@ -991,7 +1055,7 @@ do
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries=$ac_optarg ;;
-
-- -*) { echo "$as_me: error: unrecognized option: $ac_option
-+ -*) { $as_echo "$as_me: error: unrecognized option: $ac_option
- Try \`$0 --help' for more information." >&2
- { (exit 1); exit 1; }; }
- ;;
-@@ -1000,16 +1064,16 @@ Try \`$0 --help' for more information."
- ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
- # Reject names that are not valid shell variable names.
- expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
-- { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
-+ { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2
- { (exit 1); exit 1; }; }
- eval $ac_envvar=\$ac_optarg
- export $ac_envvar ;;
-
- *)
- # FIXME: should be removed in autoconf 3.0.
-- echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-- echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
- ;;
-
-@@ -1018,22 +1082,38 @@ done
-
- if test -n "$ac_prev"; then
- ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-- { echo "$as_me: error: missing argument to $ac_option" >&2
-+ { $as_echo "$as_me: error: missing argument to $ac_option" >&2
- { (exit 1); exit 1; }; }
- fi
-
--# Be sure to have absolute directory names.
-+if test -n "$ac_unrecognized_opts"; then
-+ case $enable_option_checking in
-+ no) ;;
-+ fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2
-+ { (exit 1); exit 1; }; } ;;
-+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
-+ esac
-+fi
-+
-+# Check all directory arguments for consistency.
- for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
- datadir sysconfdir sharedstatedir localstatedir includedir \
- oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir
- do
- eval ac_val=\$$ac_var
-+ # Remove trailing slashes.
-+ case $ac_val in
-+ */ )
-+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
-+ eval $ac_var=\$ac_val;;
-+ esac
-+ # Be sure to have absolute directory names.
- case $ac_val in
- [\\/$]* | ?:[\\/]* ) continue;;
- NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
- esac
-- { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-+ { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
- { (exit 1); exit 1; }; }
- done
-
-@@ -1048,7 +1128,7 @@ target=$target_alias
- if test "x$host_alias" != x; then
- if test "x$build_alias" = x; then
- cross_compiling=maybe
-- echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
-+ $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used." >&2
- elif test "x$build_alias" != "x$host_alias"; then
- cross_compiling=yes
-@@ -1064,10 +1144,10 @@ test "$silent" = yes && exec 6>/dev/null
- ac_pwd=`pwd` && test -n "$ac_pwd" &&
- ac_ls_di=`ls -di .` &&
- ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-- { echo "$as_me: error: Working directory cannot be determined" >&2
-+ { $as_echo "$as_me: error: working directory cannot be determined" >&2
- { (exit 1); exit 1; }; }
- test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-- { echo "$as_me: error: pwd does not report name of working directory" >&2
-+ { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
- { (exit 1); exit 1; }; }
-
-
-@@ -1075,12 +1155,12 @@ test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
- if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then the parent directory.
-- ac_confdir=`$as_dirname -- "$0" ||
--$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-- X"$0" : 'X\(//\)[^/]' \| \
-- X"$0" : 'X\(//\)$' \| \
-- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
--echo X"$0" |
-+ ac_confdir=`$as_dirname -- "$as_myself" ||
-+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-+ X"$as_myself" : 'X\(//\)[^/]' \| \
-+ X"$as_myself" : 'X\(//\)$' \| \
-+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-+$as_echo X"$as_myself" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
-@@ -1107,12 +1187,12 @@ else
- fi
- if test ! -r "$srcdir/$ac_unique_file"; then
- test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
-+ { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
- { (exit 1); exit 1; }; }
- fi
- ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
- ac_abs_confdir=`(
-- cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
-+ cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2
- { (exit 1); exit 1; }; }
- pwd)`
- # When building in place, set srcdir=.
-@@ -1161,9 +1241,9 @@ Configuration:
-
- Installation directories:
- --prefix=PREFIX install architecture-independent files in PREFIX
-- [$ac_default_prefix]
-+ [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
-- [PREFIX]
-+ [PREFIX]
-
- By default, \`make install' will install all the files in
- \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
-@@ -1173,25 +1253,25 @@ for instance \`--prefix=\$HOME'.
- For better control, use the options below.
-
- Fine tuning of the installation directories:
-- --bindir=DIR user executables [EPREFIX/bin]
-- --sbindir=DIR system admin executables [EPREFIX/sbin]
-- --libexecdir=DIR program executables [EPREFIX/libexec]
-- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
-- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
-- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
-- --libdir=DIR object code libraries [EPREFIX/lib]
-- --includedir=DIR C header files [PREFIX/include]
-- --oldincludedir=DIR C header files for non-gcc [/usr/include]
-- --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
-- --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
-- --infodir=DIR info documentation [DATAROOTDIR/info]
-- --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
-- --mandir=DIR man documentation [DATAROOTDIR/man]
-- --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE]
-- --htmldir=DIR html documentation [DOCDIR]
-- --dvidir=DIR dvi documentation [DOCDIR]
-- --pdfdir=DIR pdf documentation [DOCDIR]
-- --psdir=DIR ps documentation [DOCDIR]
-+ --bindir=DIR user executables [EPREFIX/bin]
-+ --sbindir=DIR system admin executables [EPREFIX/sbin]
-+ --libexecdir=DIR program executables [EPREFIX/libexec]
-+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
-+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
-+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
-+ --libdir=DIR object code libraries [EPREFIX/lib]
-+ --includedir=DIR C header files [PREFIX/include]
-+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
-+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
-+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
-+ --infodir=DIR info documentation [DATAROOTDIR/info]
-+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
-+ --mandir=DIR man documentation [DATAROOTDIR/man]
-+ --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE]
-+ --htmldir=DIR html documentation [DOCDIR]
-+ --dvidir=DIR dvi documentation [DOCDIR]
-+ --pdfdir=DIR pdf documentation [DOCDIR]
-+ --psdir=DIR ps documentation [DOCDIR]
- _ACEOF
-
- cat <<\_ACEOF
-@@ -1203,6 +1283,7 @@ if test -n "$ac_init_help"; then
- cat <<\_ACEOF
-
- Optional Features:
-+ --disable-option-checking ignore unrecognized --enable/--with options
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --enable-shared[=PKGS] build shared libraries [default=yes]
-@@ -1234,15 +1315,17 @@ fi
- if test "$ac_init_help" = "recursive"; then
- # If there are subdirs, report their specific --help.
- for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-- test -d "$ac_dir" || continue
-+ test -d "$ac_dir" ||
-+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
-+ continue
- ac_builddir=.
-
- case "$ac_dir" in
- .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
- *)
-- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
- # A ".." for each directory in $ac_dir_suffix.
-- ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
-+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
- case $ac_top_builddir_sub in
- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-@@ -1278,7 +1361,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_
- echo &&
- $SHELL "$ac_srcdir/configure" --help=recursive
- else
-- echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
- fi || ac_status=$?
- cd "$ac_pwd" || { ac_status=$?; break; }
- done
-@@ -1288,10 +1371,10 @@ test -n "$ac_init_help" && exit $ac_stat
- if $ac_init_version; then
- cat <<\_ACEOF
- configure
--generated by GNU Autoconf 2.61
-+generated by GNU Autoconf 2.63
-
- Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
--2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
-+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
- This configure script is free software; the Free Software Foundation
- gives unlimited permission to copy, distribute and modify it.
- _ACEOF
-@@ -1302,7 +1385,7 @@ This file contains any messages produced
- running configure, to aid debugging if configure makes a mistake.
-
- It was created by $as_me, which was
--generated by GNU Autoconf 2.61. Invocation command line was
-+generated by GNU Autoconf 2.63. Invocation command line was
-
- $ $0 $@
-
-@@ -1338,7 +1421,7 @@ for as_dir in $PATH
- do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
-- echo "PATH: $as_dir"
-+ $as_echo "PATH: $as_dir"
- done
- IFS=$as_save_IFS
-
-@@ -1373,7 +1456,7 @@ do
- | -silent | --silent | --silen | --sile | --sil)
- continue ;;
- *\'*)
-- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- case $ac_pass in
- 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
-@@ -1425,11 +1508,12 @@ _ASBOX
- case $ac_val in #(
- *${as_nl}*)
- case $ac_var in #(
-- *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
--echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
-+ *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
-+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
- esac
- case $ac_var in #(
- _ | IFS | as_nl) ;; #(
-+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
- *) $as_unset $ac_var ;;
- esac ;;
- esac
-@@ -1459,9 +1543,9 @@ _ASBOX
- do
- eval ac_val=\$$ac_var
- case $ac_val in
-- *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
- esac
-- echo "$ac_var='\''$ac_val'\''"
-+ $as_echo "$ac_var='\''$ac_val'\''"
- done | sort
- echo
-
-@@ -1476,9 +1560,9 @@ _ASBOX
- do
- eval ac_val=\$$ac_var
- case $ac_val in
-- *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
- esac
-- echo "$ac_var='\''$ac_val'\''"
-+ $as_echo "$ac_var='\''$ac_val'\''"
- done | sort
- echo
- fi
-@@ -1494,8 +1578,8 @@ _ASBOX
- echo
- fi
- test "$ac_signal" != 0 &&
-- echo "$as_me: caught signal $ac_signal"
-- echo "$as_me: exit $exit_status"
-+ $as_echo "$as_me: caught signal $ac_signal"
-+ $as_echo "$as_me: exit $exit_status"
- } >&5
- rm -f core *.core core.conftest.* &&
- rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
-@@ -1537,21 +1621,24 @@ _ACEOF
-
-
- # Let the site file select an alternate cache file if it wants to.
--# Prefer explicitly selected file to automatically selected ones.
-+# Prefer an explicitly selected file to automatically selected ones.
-+ac_site_file1=NONE
-+ac_site_file2=NONE
- if test -n "$CONFIG_SITE"; then
-- set x "$CONFIG_SITE"
-+ ac_site_file1=$CONFIG_SITE
- elif test "x$prefix" != xNONE; then
-- set x "$prefix/share/config.site" "$prefix/etc/config.site"
-+ ac_site_file1=$prefix/share/config.site
-+ ac_site_file2=$prefix/etc/config.site
- else
-- set x "$ac_default_prefix/share/config.site" \
-- "$ac_default_prefix/etc/config.site"
-+ ac_site_file1=$ac_default_prefix/share/config.site
-+ ac_site_file2=$ac_default_prefix/etc/config.site
- fi
--shift
--for ac_site_file
-+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
- do
-+ test "x$ac_site_file" = xNONE && continue
- if test -r "$ac_site_file"; then
-- { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
--echo "$as_me: loading site script $ac_site_file" >&6;}
-+ { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
-+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
- sed 's/^/| /' "$ac_site_file" >&5
- . "$ac_site_file"
- fi
-@@ -1561,16 +1648,16 @@ if test -r "$cache_file"; then
- # Some versions of bash will fail to source /dev/null (special
- # files actually), so we avoid doing that.
- if test -f "$cache_file"; then
-- { echo "$as_me:$LINENO: loading cache $cache_file" >&5
--echo "$as_me: loading cache $cache_file" >&6;}
-+ { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5
-+$as_echo "$as_me: loading cache $cache_file" >&6;}
- case $cache_file in
- [\\/]* | ?:[\\/]* ) . "$cache_file";;
- *) . "./$cache_file";;
- esac
- fi
- else
-- { echo "$as_me:$LINENO: creating cache $cache_file" >&5
--echo "$as_me: creating cache $cache_file" >&6;}
-+ { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5
-+$as_echo "$as_me: creating cache $cache_file" >&6;}
- >$cache_file
- fi
-
-@@ -1584,29 +1671,38 @@ for ac_var in $ac_precious_vars; do
- eval ac_new_val=\$ac_env_${ac_var}_value
- case $ac_old_set,$ac_new_set in
- set,)
-- { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
--echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-+ { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,set)
-- { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
--echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-+ { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,);;
- *)
- if test "x$ac_old_val" != "x$ac_new_val"; then
-- { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
--echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-- { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
--echo "$as_me: former value: $ac_old_val" >&2;}
-- { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
--echo "$as_me: current value: $ac_new_val" >&2;}
-- ac_cache_corrupted=:
-+ # differences in whitespace do not lead to failure.
-+ ac_old_val_w=`echo x $ac_old_val`
-+ ac_new_val_w=`echo x $ac_new_val`
-+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
-+ { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-+ ac_cache_corrupted=:
-+ else
-+ { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
-+ eval $ac_var=\$ac_old_val
-+ fi
-+ { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5
-+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
-+ { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5
-+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
- fi;;
- esac
- # Pass precious variables to config.status.
- if test "$ac_new_set" = set; then
- case $ac_new_val in
-- *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
- *) ac_arg=$ac_var=$ac_new_val ;;
- esac
- case " $ac_configure_args " in
-@@ -1616,10 +1712,12 @@ echo "$as_me: current value: $ac_new_v
- fi
- done
- if $ac_cache_corrupted; then
-- { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
--echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-- { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
--echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
-+ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-+ { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-+ { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-+$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
- { (exit 1); exit 1; }; }
- fi
-
-@@ -1662,10 +1760,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
- set dummy ${ac_tool_prefix}gcc; ac_word=$2
--{ echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
- if test "${ac_cv_prog_CC+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
-+ $as_echo_n "(cached) " >&6
- else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-@@ -1678,7 +1776,7 @@ do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="${ac_tool_prefix}gcc"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
- done
-@@ -1689,11 +1787,11 @@ fi
- fi
- CC=$ac_cv_prog_CC
- if test -n "$CC"; then
-- { echo "$as_me:$LINENO: result: $CC" >&5
--echo "${ECHO_T}$CC" >&6; }
-+ { $as_echo "$as_me:$LINENO: result: $CC" >&5
-+$as_echo "$CC" >&6; }
- else
-- { echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6; }
-+ { $as_echo "$as_me:$LINENO: result: no" >&5
-+$as_echo "no" >&6; }
- fi
-
-
-@@ -1702,10 +1800,10 @@ if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "gcc", so it can be a program name with args.
- set dummy gcc; ac_word=$2
--{ echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
- if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
-+ $as_echo_n "(cached) " >&6
- else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-@@ -1718,7 +1816,7 @@ do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_CC="gcc"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
- done
-@@ -1729,11 +1827,11 @@ fi
- fi
- ac_ct_CC=$ac_cv_prog_ac_ct_CC
- if test -n "$ac_ct_CC"; then
-- { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
--echo "${ECHO_T}$ac_ct_CC" >&6; }
-+ { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-+$as_echo "$ac_ct_CC" >&6; }
- else
-- { echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6; }
-+ { $as_echo "$as_me:$LINENO: result: no" >&5
-+$as_echo "no" >&6; }
- fi
-
- if test "x$ac_ct_CC" = x; then
-@@ -1741,12 +1839,8 @@ fi
- else
- case $cross_compiling:$ac_tool_warned in
- yes:)
--{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
--whose name does not start with the host triplet. If you think this
--configuration is useful to you, please write to autoconf@gnu.org." >&5
--echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
--whose name does not start with the host triplet. If you think this
--configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
- ac_tool_warned=yes ;;
- esac
- CC=$ac_ct_CC
-@@ -1759,10 +1853,10 @@ if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
- set dummy ${ac_tool_prefix}cc; ac_word=$2
--{ echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
- if test "${ac_cv_prog_CC+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
-+ $as_echo_n "(cached) " >&6
- else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-@@ -1775,7 +1869,7 @@ do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="${ac_tool_prefix}cc"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
- done
-@@ -1786,11 +1880,11 @@ fi
- fi
- CC=$ac_cv_prog_CC
- if test -n "$CC"; then
-- { echo "$as_me:$LINENO: result: $CC" >&5
--echo "${ECHO_T}$CC" >&6; }
-+ { $as_echo "$as_me:$LINENO: result: $CC" >&5
-+$as_echo "$CC" >&6; }
- else
-- { echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6; }
-+ { $as_echo "$as_me:$LINENO: result: no" >&5
-+$as_echo "no" >&6; }
- fi
-
-
-@@ -1799,10 +1893,10 @@ fi
- if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
- set dummy cc; ac_word=$2
--{ echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
- if test "${ac_cv_prog_CC+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
-+ $as_echo_n "(cached) " >&6
- else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-@@ -1820,7 +1914,7 @@ do
- continue
- fi
- ac_cv_prog_CC="cc"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
- done
-@@ -1843,11 +1937,11 @@ fi
- fi
- CC=$ac_cv_prog_CC
- if test -n "$CC"; then
-- { echo "$as_me:$LINENO: result: $CC" >&5
--echo "${ECHO_T}$CC" >&6; }
-+ { $as_echo "$as_me:$LINENO: result: $CC" >&5
-+$as_echo "$CC" >&6; }
- else
-- { echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6; }
-+ { $as_echo "$as_me:$LINENO: result: no" >&5
-+$as_echo "no" >&6; }
- fi
-
-
-@@ -1858,10 +1952,10 @@ if test -z "$CC"; then
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
- set dummy $ac_tool_prefix$ac_prog; ac_word=$2
--{ echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
- if test "${ac_cv_prog_CC+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
-+ $as_echo_n "(cached) " >&6
- else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-@@ -1874,7 +1968,7 @@ do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
- done
-@@ -1885,11 +1979,11 @@ fi
- fi
- CC=$ac_cv_prog_CC
- if test -n "$CC"; then
-- { echo "$as_me:$LINENO: result: $CC" >&5
--echo "${ECHO_T}$CC" >&6; }
-+ { $as_echo "$as_me:$LINENO: result: $CC" >&5
-+$as_echo "$CC" >&6; }
- else
-- { echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6; }
-+ { $as_echo "$as_me:$LINENO: result: no" >&5
-+$as_echo "no" >&6; }
- fi
-
-
-@@ -1902,10 +1996,10 @@ if test -z "$CC"; then
- do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
- set dummy $ac_prog; ac_word=$2
--{ echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-+$as_echo_n "checking for $ac_word... " >&6; }
- if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
-+ $as_echo_n "(cached) " >&6
- else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-@@ -1918,7 +2012,7 @@ do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_CC="$ac_prog"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
- done
-@@ -1929,11 +2023,11 @@ fi
- fi
- ac_ct_CC=$ac_cv_prog_ac_ct_CC
- if test -n "$ac_ct_CC"; then
-- { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
--echo "${ECHO_T}$ac_ct_CC" >&6; }
-+ { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-+$as_echo "$ac_ct_CC" >&6; }
- else
-- { echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6; }
-+ { $as_echo "$as_me:$LINENO: result: no" >&5
-+$as_echo "no" >&6; }
- fi
-
-
-@@ -1945,12 +2039,8 @@ done
- else
- case $cross_compiling:$ac_tool_warned in
- yes:)
--{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
--whose name does not start with the host triplet. If you think this
--configuration is useful to you, please write to autoconf@gnu.org." >&5
--echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
--whose name does not start with the host triplet. If you think this
--configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
- ac_tool_warned=yes ;;
- esac
- CC=$ac_ct_CC
-@@ -1960,44 +2050,50 @@ fi
- fi
-
-
--test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-+test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-+{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
- See \`config.log' for more details." >&5
--echo "$as_me: error: no acceptable C compiler found in \$PATH
-+$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
- See \`config.log' for more details." >&2;}
-- { (exit 1); exit 1; }; }
-+ { (exit 1); exit 1; }; }; }
-
- # Provide some information about the compiler.
--echo "$as_me:$LINENO: checking for C compiler version" >&5
--ac_compiler=`set X $ac_compile; echo $2`
-+$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
-+set X $ac_compile
-+ac_compiler=$2
- { (ac_try="$ac_compiler --version >&5"
- case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_compiler --version >&5") 2>&5
- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
- { (ac_try="$ac_compiler -v >&5"
- case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_compiler -v >&5") 2>&5
- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
- { (ac_try="$ac_compiler -V >&5"
- case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_compiler -V >&5") 2>&5
- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-
- cat >conftest.$ac_ext <<_ACEOF
-@@ -2016,27 +2112,22 @@ main ()
- }
- _ACEOF
- ac_clean_files_save=$ac_clean_files
--ac_clean_files="$ac_clean_files a.out a.exe b.out"
-+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
- # Try to create an executable without -o first, disregard a.out.
- # It will help us diagnose broken compilers, and finding out an intuition
- # of exeext.
--{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
--echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }
--ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
--#
--# List of possible output files, starting from the most likely.
--# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
--# only as a last resort. b.out is created by i960 compilers.
--ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
--#
--# The IRIX 6 linker writes into existing files which may not be
--# executable, retaining their permissions. Remove them first so a
--# subsequent execution test works.
-+{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
-+$as_echo_n "checking for C compiler default output file name... " >&6; }
-+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-+
-+# The possible output files:
-+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-+
- ac_rmfiles=
- for ac_file in $ac_files
- do
- case $ac_file in
-- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
-+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
- * ) ac_rmfiles="$ac_rmfiles $ac_file";;
- esac
- done
-@@ -2047,10 +2138,11 @@ case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_link_default") 2>&5
- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
- # So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-@@ -2061,7 +2153,7 @@ for ac_file in $ac_files ''
- do
- test -f "$ac_file" || continue
- case $ac_file in
-- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )
-+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
- ;;
- [ab].out )
- # We found the default executable, but exeext='' is most
-@@ -2088,25 +2180,27 @@ else
- ac_file=''
- fi
-
--{ echo "$as_me:$LINENO: result: $ac_file" >&5
--echo "${ECHO_T}$ac_file" >&6; }
-+{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5
-+$as_echo "$ac_file" >&6; }
- if test -z "$ac_file"; then
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
-+{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-+{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables
- See \`config.log' for more details." >&5
--echo "$as_me: error: C compiler cannot create executables
-+$as_echo "$as_me: error: C compiler cannot create executables
- See \`config.log' for more details." >&2;}
-- { (exit 77); exit 77; }; }
-+ { (exit 77); exit 77; }; }; }
- fi
-
- ac_exeext=$ac_cv_exeext
-
- # Check that the compiler produces executables we can run. If not, either
- # the compiler is broken, or we cross compile.
--{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5
--echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; }
-+{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5
-+$as_echo_n "checking whether the C compiler works... " >&6; }
- # FIXME: These cross compiler hacks should be removed for Autoconf 3.0
- # If not cross compiling, check that we can run a simple program.
- if test "$cross_compiling" != yes; then
-@@ -2115,49 +2209,53 @@ if test "$cross_compiling" != yes; then
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cross_compiling=no
- else
- if test "$cross_compiling" = maybe; then
- cross_compiling=yes
- else
-- { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
-+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-+{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs.
- If you meant to cross compile, use \`--host'.
- See \`config.log' for more details." >&5
--echo "$as_me: error: cannot run C compiled programs.
-+$as_echo "$as_me: error: cannot run C compiled programs.
- If you meant to cross compile, use \`--host'.
- See \`config.log' for more details." >&2;}
-- { (exit 1); exit 1; }; }
-+ { (exit 1); exit 1; }; }; }
- fi
- fi
- fi
--{ echo "$as_me:$LINENO: result: yes" >&5
--echo "${ECHO_T}yes" >&6; }
-+{ $as_echo "$as_me:$LINENO: result: yes" >&5
-+$as_echo "yes" >&6; }
-
--rm -f a.out a.exe conftest$ac_cv_exeext b.out
-+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
- ac_clean_files=$ac_clean_files_save
- # Check that the compiler produces executables we can run. If not, either
- # the compiler is broken, or we cross compile.
--{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
--echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
--{ echo "$as_me:$LINENO: result: $cross_compiling" >&5
--echo "${ECHO_T}$cross_compiling" >&6; }
-+{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
-+$as_echo_n "checking whether we are cross compiling... " >&6; }
-+{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5
-+$as_echo "$cross_compiling" >&6; }
-
--{ echo "$as_me:$LINENO: checking for suffix of executables" >&5
--echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
-+{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5
-+$as_echo_n "checking for suffix of executables... " >&6; }
- if { (ac_try="$ac_link"
- case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- # If both `conftest.exe' and `conftest' are `present' (well, observable)
- # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
-@@ -2166,31 +2264,33 @@ eval "echo \"\$as_me:$LINENO: $ac_try_ec
- for ac_file in conftest.exe conftest conftest.*; do
- test -f "$ac_file" || continue
- case $ac_file in
-- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
-+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- break;;
- * ) break;;
- esac
- done
- else
-- { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
-+ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-+{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
- See \`config.log' for more details." >&5
--echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
-+$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
- See \`config.log' for more details." >&2;}
-- { (exit 1); exit 1; }; }
-+ { (exit 1); exit 1; }; }; }
- fi
-
- rm -f conftest$ac_cv_exeext
--{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
--echo "${ECHO_T}$ac_cv_exeext" >&6; }
-+{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
-+$as_echo "$ac_cv_exeext" >&6; }
-
- rm -f conftest.$ac_ext
- EXEEXT=$ac_cv_exeext
- ac_exeext=$EXEEXT
--{ echo "$as_me:$LINENO: checking for suffix of object files" >&5
--echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
-+{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5
-+$as_echo_n "checking for suffix of object files... " >&6; }
- if test "${ac_cv_objext+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
-+ $as_echo_n "(cached) " >&6
- else
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
-@@ -2213,40 +2313,43 @@ case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>&5
- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
- for ac_file in conftest.o conftest.obj conftest.*; do
- test -f "$ac_file" || continue;
- case $ac_file in
-- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;
-+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
- *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
- break;;
- esac
- done
- else
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
-+{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-+{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
- See \`config.log' for more details." >&5
--echo "$as_me: error: cannot compute suffix of object files: cannot compile
-+$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile
- See \`config.log' for more details." >&2;}
-- { (exit 1); exit 1; }; }
-+ { (exit 1); exit 1; }; }; }
- fi
-
- rm -f conftest.$ac_cv_objext conftest.$ac_ext
- fi
--{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
--echo "${ECHO_T}$ac_cv_objext" >&6; }
-+{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
-+$as_echo "$ac_cv_objext" >&6; }
- OBJEXT=$ac_cv_objext
- ac_objext=$OBJEXT
--{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
--echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
-+{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
- if test "${ac_cv_c_compiler_gnu+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
-+ $as_echo_n "(cached) " >&6
- else
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
-@@ -2272,20 +2375,21 @@ case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_compiler_gnu=yes
- else
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_compiler_gnu=no
-@@ -2295,15 +2399,19 @@ rm -f core conftest.err conftest.$ac_obj
- ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
- fi
--{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
--echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
--GCC=`test $ac_compiler_gnu = yes && echo yes`
-+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-+if test $ac_compiler_gnu = yes; then
-+ GCC=yes
-+else
-+ GCC=
-+fi
- ac_test_CFLAGS=${CFLAGS+set}
- ac_save_CFLAGS=$CFLAGS
--{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
--echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
-+{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-+$as_echo_n "checking whether $CC accepts -g... " >&6; }
- if test "${ac_cv_prog_cc_g+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
-+ $as_echo_n "(cached) " >&6
- else
- ac_save_c_werror_flag=$ac_c_werror_flag
- ac_c_werror_flag=yes
-@@ -2330,20 +2438,21 @@ case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_prog_cc_g=yes
- else
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
- CFLAGS=""
-@@ -2368,20 +2477,21 @@ case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- :
- else
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_c_werror_flag=$ac_save_c_werror_flag
-@@ -2407,20 +2517,21 @@ case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_prog_cc_g=yes
- else
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
-
-@@ -2435,8 +2546,8 @@ fi
- rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_c_werror_flag=$ac_save_c_werror_flag
- fi
--{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
--echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
-+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-+$as_echo "$ac_cv_prog_cc_g" >&6; }
- if test "$ac_test_CFLAGS" = set; then
- CFLAGS=$ac_save_CFLAGS
- elif test $ac_cv_prog_cc_g = yes; then
-@@ -2452,10 +2563,10 @@ else
- CFLAGS=
- fi
- fi
--{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
--echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
-+{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
-+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
- if test "${ac_cv_prog_cc_c89+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
-+ $as_echo_n "(cached) " >&6
- else
- ac_cv_prog_cc_c89=no
- ac_save_CC=$CC
-@@ -2526,20 +2637,21 @@ case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_prog_cc_c89=$ac_arg
- else
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
-
-@@ -2555,15 +2667,15 @@ fi
- # AC_CACHE_VAL
- case "x$ac_cv_prog_cc_c89" in
- x)
-- { echo "$as_me:$LINENO: result: none needed" >&5
--echo "${ECHO_T}none needed" >&6; } ;;
-+ { $as_echo "$as_me:$LINENO: result: none needed" >&5
-+$as_echo "none needed" >&6; } ;;
- xno)
-- { echo "$as_me:$LINENO: result: unsupported" >&5
--echo "${ECHO_T}unsupported" >&6; } ;;
-+ { $as_echo "$as_me:$LINENO: result: unsupported" >&5
-+$as_echo "unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c89"
-- { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
--echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
-+ { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
-+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
- esac
-
-
-@@ -2581,8 +2693,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
- if test "${with_rlm_ldap_lib_dir+set}" = set; then
- withval=$with_rlm_ldap_lib_dir; case "$withval" in
- no)
-- { { echo "$as_me:$LINENO: error: Need rlm-ldap-lib-dir" >&5
--echo "$as_me: error: Need rlm-ldap-lib-dir" >&2;}
-+ { { $as_echo "$as_me:$LINENO: error: Need rlm-ldap-lib-dir" >&5
-+$as_echo "$as_me: error: Need rlm-ldap-lib-dir" >&2;}
- { (exit 1); exit 1; }; }
- ;;
- yes)
-@@ -2601,8 +2713,8 @@ fi
- if test "${with_rlm_ldap_include_dir+set}" = set; then
- withval=$with_rlm_ldap_include_dir; case "$withval" in
- no)
-- { { echo "$as_me:$LINENO: error: Need rlm-ldap-include-dir" >&5
--echo "$as_me: error: Need rlm-ldap-include-dir" >&2;}
-+ { { $as_echo "$as_me:$LINENO: error: Need rlm-ldap-include-dir" >&5
-+$as_echo "$as_me: error: Need rlm-ldap-include-dir" >&2;}
- { (exit 1); exit 1; }; }
- ;;
- yes)
-@@ -2641,8 +2753,8 @@ fi
-
-
- if test "x$enable_shared" = "xno"; then
-- { echo "$as_me:$LINENO: WARNING: Static linking with libldap will probably result in unresolved symbols." >&5
--echo "$as_me: WARNING: Static linking with libldap will probably result in unresolved symbols." >&2;}
-+ { $as_echo "$as_me:$LINENO: WARNING: Static linking with libldap will probably result in unresolved symbols." >&5
-+$as_echo "$as_me: WARNING: Static linking with libldap will probably result in unresolved symbols." >&2;}
- fi
-
- rlm_ldap_with_threads=yes
-@@ -2661,10 +2773,10 @@ fi
-
-
- if test "x$rlm_ldap_with_threads" = "xyes"; then
-- { echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5
--echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6; }
-+ { $as_echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5
-+$as_echo_n "checking for pthread_create in -lpthread... " >&6; }
- if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
-+ $as_echo_n "(cached) " >&6
- else
- ac_check_lib_save_LIBS=$LIBS
- LIBS="-lpthread $LIBS"
-@@ -2696,39 +2808,43 @@ case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
-- } && test -s conftest$ac_exeext &&
-- $as_test_x conftest$ac_exeext; then
-+ } && test -s conftest$ac_exeext && {
-+ test "$cross_compiling" = yes ||
-+ $as_test_x conftest$ac_exeext
-+ }; then
- ac_cv_lib_pthread_pthread_create=yes
- else
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_lib_pthread_pthread_create=no
- fi
-
-+rm -rf conftest.dSYM
- rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- LIBS=$ac_check_lib_save_LIBS
- fi
--{ echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5
--echo "${ECHO_T}$ac_cv_lib_pthread_pthread_create" >&6; }
--if test $ac_cv_lib_pthread_pthread_create = yes; then
-+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5
-+$as_echo "$ac_cv_lib_pthread_pthread_create" >&6; }
-+if test "x$ac_cv_lib_pthread_pthread_create" = x""yes; then
- LIBS="-lpthread $LIBS"
- else
-- { echo "$as_me:$LINENO: checking for pthread_create in -lc_r" >&5
--echo $ECHO_N "checking for pthread_create in -lc_r... $ECHO_C" >&6; }
-+ { $as_echo "$as_me:$LINENO: checking for pthread_create in -lc_r" >&5
-+$as_echo_n "checking for pthread_create in -lc_r... " >&6; }
- if test "${ac_cv_lib_c_r_pthread_create+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
-+ $as_echo_n "(cached) " >&6
- else
- ac_check_lib_save_LIBS=$LIBS
- LIBS="-lc_r $LIBS"
-@@ -2761,33 +2877,37 @@ case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
-- } && test -s conftest$ac_exeext &&
-- $as_test_x conftest$ac_exeext; then
-+ } && test -s conftest$ac_exeext && {
-+ test "$cross_compiling" = yes ||
-+ $as_test_x conftest$ac_exeext
-+ }; then
- ac_cv_lib_c_r_pthread_create=yes
- else
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_lib_c_r_pthread_create=no
- fi
-
-+rm -rf conftest.dSYM
- rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- LIBS=$ac_check_lib_save_LIBS
- fi
--{ echo "$as_me:$LINENO: result: $ac_cv_lib_c_r_pthread_create" >&5
--echo "${ECHO_T}$ac_cv_lib_c_r_pthread_create" >&6; }
--if test $ac_cv_lib_c_r_pthread_create = yes; then
-+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_c_r_pthread_create" >&5
-+$as_echo "$ac_cv_lib_c_r_pthread_create" >&6; }
-+if test "x$ac_cv_lib_c_r_pthread_create" = x""yes; then
- LIBS="-lc_r $LIBS"
- else
- rlm_ldap_with_threads="no"
-@@ -2799,14 +2919,12 @@ fi
-
- fi
-
-- smart_try_dir=$rlm_ldap_lib_dir
-- if test "x$rlm_ldap_with_threads" = "xyes"; then
-
-
--sm_lib_safe=`echo "ldap_r" | sed 'y%./+-%__p_%'`
--sm_func_safe=`echo "ldap_init" | sed 'y%./+-%__p_%'`
--{ echo "$as_me:$LINENO: checking for ldap_init in -lldap_r" >&5
--echo $ECHO_N "checking for ldap_init in -lldap_r... $ECHO_C" >&6; }
-+sm_lib_safe=`echo "sasl" | sed 'y%./+-%__p_%'`
-+sm_func_safe=`echo "sasl_encode" | sed 'y%./+-%__p_%'`
-+{ $as_echo "$as_me:$LINENO: checking for sasl_encode in -lsasl" >&5
-+$as_echo_n "checking for sasl_encode in -lsasl... " >&6; }
-
- old_LIBS="$LIBS"
- smart_lib=
-@@ -2814,18 +2932,18 @@ smart_lib_dir=
-
- if test "x$smart_try_dir" != "x"; then
- for try in $smart_try_dir; do
-- LIBS="-L$try -lldap_r $old_LIBS"
-+ LIBS="-L$try -lsasl $old_LIBS"
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
--extern char ldap_init();
-+extern char sasl_encode();
- int
- main ()
- {
-- ldap_init()
-+ sasl_encode()
- ;
- return 0;
- }
-@@ -2836,26 +2954,30 @@ case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
-- } && test -s conftest$ac_exeext &&
-- $as_test_x conftest$ac_exeext; then
-- smart_lib="-L$try -lldap_r"
-+ } && test -s conftest$ac_exeext && {
-+ test "$cross_compiling" = yes ||
-+ $as_test_x conftest$ac_exeext
-+ }; then
-+ smart_lib="-L$try -lsasl"
- else
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
-
- fi
-
-+rm -rf conftest.dSYM
- rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- if test "x$smart_lib" != "x"; then
-@@ -2866,18 +2988,18 @@ rm -f core conftest.err conftest.$ac_obj
- fi
-
- if test "x$smart_lib" = "x"; then
-- LIBS="-lldap_r $old_LIBS"
-+ LIBS="-lsasl $old_LIBS"
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
--extern char ldap_init();
-+extern char sasl_encode();
- int
- main ()
- {
-- ldap_init()
-+ sasl_encode()
- ;
- return 0;
- }
-@@ -2888,26 +3010,30 @@ case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
-- } && test -s conftest$ac_exeext &&
-- $as_test_x conftest$ac_exeext; then
-- smart_lib="-lldap_r"
-+ } && test -s conftest$ac_exeext && {
-+ test "$cross_compiling" = yes ||
-+ $as_test_x conftest$ac_exeext
-+ }; then
-+ smart_lib="-lsasl"
- else
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
-
- fi
-
-+rm -rf conftest.dSYM
- rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- LIBS="$old_LIBS"
-@@ -2918,7 +3044,7 @@ if test "x$smart_lib" = "x"; then
-
- if test "x$LOCATE" != "x"; then
- DIRS=
-- file=libldap_r${libltdl_cv_shlibext}
-+ file=libsasl${libltdl_cv_shlibext}
-
- for x in `${LOCATE} $file 2>/dev/null`; do
- base=`echo $x | sed "s%/${file}%%"`
-@@ -2945,7 +3071,7 @@ eval "smart_lib_dir=\"\$smart_lib_dir $D
-
- if test "x$LOCATE" != "x"; then
- DIRS=
-- file=libldap_r.a
-+ file=libsasl.a
-
- for x in `${LOCATE} $file 2>/dev/null`; do
- base=`echo $x | sed "s%/${file}%%"`
-@@ -2970,18 +3096,18 @@ eval "smart_lib_dir=\"\$smart_lib_dir $D
-
-
- for try in $smart_lib_dir /usr/local/lib /opt/lib; do
-- LIBS="-L$try -lldap_r $old_LIBS"
-+ LIBS="-L$try -lsasl $old_LIBS"
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
--extern char ldap_init();
-+extern char sasl_encode();
- int
- main ()
- {
-- ldap_init()
-+ sasl_encode()
- ;
- return 0;
- }
-@@ -2992,26 +3118,30 @@ case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
-- } && test -s conftest$ac_exeext &&
-- $as_test_x conftest$ac_exeext; then
-- smart_lib="-L$try -lldap_r"
-+ } && test -s conftest$ac_exeext && {
-+ test "$cross_compiling" = yes ||
-+ $as_test_x conftest$ac_exeext
-+ }; then
-+ smart_lib="-L$try -lsasl"
- else
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
-
- fi
-
-+rm -rf conftest.dSYM
- rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- if test "x$smart_lib" != "x"; then
-@@ -3022,26 +3152,22 @@ rm -f core conftest.err conftest.$ac_obj
- fi
-
- if test "x$smart_lib" != "x"; then
-- { echo "$as_me:$LINENO: result: yes" >&5
--echo "${ECHO_T}yes" >&6; }
-+ { $as_echo "$as_me:$LINENO: result: yes" >&5
-+$as_echo "yes" >&6; }
- eval "ac_cv_lib_${sm_lib_safe}_${sm_func_safe}=yes"
- LIBS="$smart_lib $old_LIBS"
- SMART_LIBS="$smart_lib $SMART_LIBS"
- else
-- { echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6; }
-+ { $as_echo "$as_me:$LINENO: result: no" >&5
-+$as_echo "no" >&6; }
- fi
-
-- if test "x$ac_cv_lib_ldap_r_ldap_init" != "xyes"; then
-- fail="$fail libldap_r"
-- fi
-- else
-
-
--sm_lib_safe=`echo "ldap" | sed 'y%./+-%__p_%'`
--sm_func_safe=`echo "ldap_init" | sed 'y%./+-%__p_%'`
--{ echo "$as_me:$LINENO: checking for ldap_init in -lldap" >&5
--echo $ECHO_N "checking for ldap_init in -lldap... $ECHO_C" >&6; }
-+sm_lib_safe=`echo "lber" | sed 'y%./+-%__p_%'`
-+sm_func_safe=`echo "ber_init" | sed 'y%./+-%__p_%'`
-+{ $as_echo "$as_me:$LINENO: checking for ber_init in -llber" >&5
-+$as_echo_n "checking for ber_init in -llber... " >&6; }
-
- old_LIBS="$LIBS"
- smart_lib=
-@@ -3049,18 +3175,18 @@ smart_lib_dir=
-
- if test "x$smart_try_dir" != "x"; then
- for try in $smart_try_dir; do
-- LIBS="-L$try -lldap $old_LIBS"
-+ LIBS="-L$try -llber $old_LIBS"
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
--extern char ldap_init();
-+extern char ber_init();
- int
- main ()
- {
-- ldap_init()
-+ ber_init()
- ;
- return 0;
- }
-@@ -3071,26 +3197,30 @@ case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
-- } && test -s conftest$ac_exeext &&
-- $as_test_x conftest$ac_exeext; then
-- smart_lib="-L$try -lldap"
-+ } && test -s conftest$ac_exeext && {
-+ test "$cross_compiling" = yes ||
-+ $as_test_x conftest$ac_exeext
-+ }; then
-+ smart_lib="-L$try -llber"
- else
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
-
- fi
-
-+rm -rf conftest.dSYM
- rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- if test "x$smart_lib" != "x"; then
-@@ -3101,18 +3231,18 @@ rm -f core conftest.err conftest.$ac_obj
- fi
-
- if test "x$smart_lib" = "x"; then
-- LIBS="-lldap $old_LIBS"
-+ LIBS="-llber $old_LIBS"
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
--extern char ldap_init();
-+extern char ber_init();
- int
- main ()
- {
-- ldap_init()
-+ ber_init()
- ;
- return 0;
- }
-@@ -3123,26 +3253,30 @@ case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
-- } && test -s conftest$ac_exeext &&
-- $as_test_x conftest$ac_exeext; then
-- smart_lib="-lldap"
-+ } && test -s conftest$ac_exeext && {
-+ test "$cross_compiling" = yes ||
-+ $as_test_x conftest$ac_exeext
-+ }; then
-+ smart_lib="-llber"
- else
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
-
- fi
-
-+rm -rf conftest.dSYM
- rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- LIBS="$old_LIBS"
-@@ -3153,7 +3287,7 @@ if test "x$smart_lib" = "x"; then
-
- if test "x$LOCATE" != "x"; then
- DIRS=
-- file=libldap${libltdl_cv_shlibext}
-+ file=liblber${libltdl_cv_shlibext}
-
- for x in `${LOCATE} $file 2>/dev/null`; do
- base=`echo $x | sed "s%/${file}%%"`
-@@ -3180,7 +3314,7 @@ eval "smart_lib_dir=\"\$smart_lib_dir $D
-
- if test "x$LOCATE" != "x"; then
- DIRS=
-- file=libldap.a
-+ file=liblber.a
-
- for x in `${LOCATE} $file 2>/dev/null`; do
- base=`echo $x | sed "s%/${file}%%"`
-@@ -3205,18 +3339,18 @@ eval "smart_lib_dir=\"\$smart_lib_dir $D
-
-
- for try in $smart_lib_dir /usr/local/lib /opt/lib; do
-- LIBS="-L$try -lldap $old_LIBS"
-+ LIBS="-L$try -llber $old_LIBS"
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
--extern char ldap_init();
-+extern char ber_init();
- int
- main ()
- {
-- ldap_init()
-+ ber_init()
- ;
- return 0;
- }
-@@ -3227,26 +3361,30 @@ case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
-- } && test -s conftest$ac_exeext &&
-- $as_test_x conftest$ac_exeext; then
-- smart_lib="-L$try -lldap"
-+ } && test -s conftest$ac_exeext && {
-+ test "$cross_compiling" = yes ||
-+ $as_test_x conftest$ac_exeext
-+ }; then
-+ smart_lib="-L$try -llber"
- else
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
-
- fi
-
-+rm -rf conftest.dSYM
- rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- if test "x$smart_lib" != "x"; then
-@@ -3257,136 +3395,145 @@ rm -f core conftest.err conftest.$ac_obj
- fi
-
- if test "x$smart_lib" != "x"; then
-- { echo "$as_me:$LINENO: result: yes" >&5
--echo "${ECHO_T}yes" >&6; }
-+ { $as_echo "$as_me:$LINENO: result: yes" >&5
-+$as_echo "yes" >&6; }
- eval "ac_cv_lib_${sm_lib_safe}_${sm_func_safe}=yes"
- LIBS="$smart_lib $old_LIBS"
- SMART_LIBS="$smart_lib $SMART_LIBS"
- else
-- { echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6; }
-+ { $as_echo "$as_me:$LINENO: result: no" >&5
-+$as_echo "no" >&6; }
- fi
-
-- if test "x$ac_cv_lib_ldap_ldap_init" != "xyes"; then
-- fail="$fail libldap"
-- fi
-- fi
--
-
-- smart_try_dir=$rlm_ldap_include_dir
-+ smart_try_dir=$rlm_ldap_lib_dir
-+ if test "x$rlm_ldap_with_threads" = "xyes"; then
-
-
--ac_safe=`echo "ldap.h" | sed 'y%./+-%__pm%'`
--{ echo "$as_me:$LINENO: checking for ldap.h" >&5
--echo $ECHO_N "checking for ldap.h... $ECHO_C" >&6; }
-+sm_lib_safe=`echo "ldap_r" | sed 'y%./+-%__p_%'`
-+sm_func_safe=`echo "ldap_init" | sed 'y%./+-%__p_%'`
-+{ $as_echo "$as_me:$LINENO: checking for ldap_init in -lldap_r" >&5
-+$as_echo_n "checking for ldap_init in -lldap_r... " >&6; }
-
--old_CFLAGS="$CFLAGS"
--smart_include=
--smart_include_dir=
-+old_LIBS="$LIBS"
-+smart_lib=
-+smart_lib_dir=
-
- if test "x$smart_try_dir" != "x"; then
- for try in $smart_try_dir; do
-- CFLAGS="$old_CFLAGS -I$try"
-+ LIBS="-L$try -lldap_r $old_LIBS"
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
--
-- #include <ldap.h>
-+extern char ldap_init();
- int
- main ()
- {
-- int a = 1;
-+ ldap_init()
- ;
- return 0;
- }
- _ACEOF
--rm -f conftest.$ac_objext
--if { (ac_try="$ac_compile"
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (ac_try="$ac_link"
- case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-- (eval "$ac_compile") 2>conftest.er1
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
-+ (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
-- } && test -s conftest.$ac_objext; then
-- smart_include="-I$try"
-+ } && test -s conftest$ac_exeext && {
-+ test "$cross_compiling" = yes ||
-+ $as_test_x conftest$ac_exeext
-+ }; then
-+ smart_lib="-L$try -lldap_r"
- else
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
-- smart_include=
-+
- fi
-
--rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-- if test "x$smart_include" != "x"; then
-+rm -rf conftest.dSYM
-+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-+ conftest$ac_exeext conftest.$ac_ext
-+ if test "x$smart_lib" != "x"; then
- break;
- fi
- done
-- CFLAGS="$old_CFLAGS"
-+ LIBS="$old_LIBS"
- fi
-
--if test "x$smart_include" = "x"; then
-+if test "x$smart_lib" = "x"; then
-+ LIBS="-lldap_r $old_LIBS"
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
--
-- #include <ldap.h>
-+extern char ldap_init();
- int
- main ()
- {
-- int a = 1;
-+ ldap_init()
- ;
- return 0;
- }
- _ACEOF
--rm -f conftest.$ac_objext
--if { (ac_try="$ac_compile"
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (ac_try="$ac_link"
- case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-- (eval "$ac_compile") 2>conftest.er1
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
-+ (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
-- } && test -s conftest.$ac_objext; then
-- smart_include=" "
-+ } && test -s conftest$ac_exeext && {
-+ test "$cross_compiling" = yes ||
-+ $as_test_x conftest$ac_exeext
-+ }; then
-+ smart_lib="-lldap_r"
- else
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
-- smart_include=
-+
- fi
-
--rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+rm -rf conftest.dSYM
-+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-+ conftest$ac_exeext conftest.$ac_ext
-+ LIBS="$old_LIBS"
- fi
-
--if test "x$smart_include" = "x"; then
-+if test "x$smart_lib" = "x"; then
-
-
- if test "x$LOCATE" != "x"; then
- DIRS=
-- file=ldap.h
-+ file=libldap_r${libltdl_cv_shlibext}
-
- for x in `${LOCATE} $file 2>/dev/null`; do
- base=`echo $x | sed "s%/${file}%%"`
-@@ -3400,19 +3547,505 @@ if test "x$LOCATE" != "x"; then
- continue
- fi
-
-- already=`echo \$smart_include_dir ${DIRS} | ${GREP} ${dir}`
-+ already=`echo \$smart_lib_dir ${DIRS} | ${GREP} ${dir}`
- if test "x$already" = "x"; then
- DIRS="$DIRS $dir"
- fi
- done
- fi
-
--eval "smart_include_dir=\"\$smart_include_dir $DIRS\""
-+eval "smart_lib_dir=\"\$smart_lib_dir $DIRS\""
-
-
-- for try in $smart_include_dir /usr/local/include /opt/include; do
-- CFLAGS="$old_CFLAGS -I$try"
-- cat >conftest.$ac_ext <<_ACEOF
-+
-+if test "x$LOCATE" != "x"; then
-+ DIRS=
-+ file=libldap_r.a
-+
-+ for x in `${LOCATE} $file 2>/dev/null`; do
-+ base=`echo $x | sed "s%/${file}%%"`
-+ if test "x$x" = "x$base"; then
-+ continue;
-+ fi
-+
-+ dir=`${DIRNAME} $x 2>/dev/null`
-+ exclude=`echo ${dir} | ${GREP} /home`
-+ if test "x$exclude" != "x"; then
-+ continue
-+ fi
-+
-+ already=`echo \$smart_lib_dir ${DIRS} | ${GREP} ${dir}`
-+ if test "x$already" = "x"; then
-+ DIRS="$DIRS $dir"
-+ fi
-+ done
-+fi
-+
-+eval "smart_lib_dir=\"\$smart_lib_dir $DIRS\""
-+
-+
-+ for try in $smart_lib_dir /usr/local/lib /opt/lib; do
-+ LIBS="-L$try -lldap_r $old_LIBS"
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+extern char ldap_init();
-+int
-+main ()
-+{
-+ ldap_init()
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (ac_try="$ac_link"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
-+ (eval "$ac_link") 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest$ac_exeext && {
-+ test "$cross_compiling" = yes ||
-+ $as_test_x conftest$ac_exeext
-+ }; then
-+ smart_lib="-L$try -lldap_r"
-+else
-+ $as_echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+
-+fi
-+
-+rm -rf conftest.dSYM
-+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-+ conftest$ac_exeext conftest.$ac_ext
-+ if test "x$smart_lib" != "x"; then
-+ break;
-+ fi
-+ done
-+ LIBS="$old_LIBS"
-+fi
-+
-+if test "x$smart_lib" != "x"; then
-+ { $as_echo "$as_me:$LINENO: result: yes" >&5
-+$as_echo "yes" >&6; }
-+ eval "ac_cv_lib_${sm_lib_safe}_${sm_func_safe}=yes"
-+ LIBS="$smart_lib $old_LIBS"
-+ SMART_LIBS="$smart_lib $SMART_LIBS"
-+else
-+ { $as_echo "$as_me:$LINENO: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+ if test "x$ac_cv_lib_ldap_r_ldap_init" != "xyes"; then
-+ fail="$fail libldap_r"
-+ fi
-+ else
-+
-+
-+sm_lib_safe=`echo "ldap" | sed 'y%./+-%__p_%'`
-+sm_func_safe=`echo "ldap_init" | sed 'y%./+-%__p_%'`
-+{ $as_echo "$as_me:$LINENO: checking for ldap_init in -lldap" >&5
-+$as_echo_n "checking for ldap_init in -lldap... " >&6; }
-+
-+old_LIBS="$LIBS"
-+smart_lib=
-+smart_lib_dir=
-+
-+if test "x$smart_try_dir" != "x"; then
-+ for try in $smart_try_dir; do
-+ LIBS="-L$try -lldap $old_LIBS"
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+extern char ldap_init();
-+int
-+main ()
-+{
-+ ldap_init()
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (ac_try="$ac_link"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
-+ (eval "$ac_link") 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest$ac_exeext && {
-+ test "$cross_compiling" = yes ||
-+ $as_test_x conftest$ac_exeext
-+ }; then
-+ smart_lib="-L$try -lldap"
-+else
-+ $as_echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+
-+fi
-+
-+rm -rf conftest.dSYM
-+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-+ conftest$ac_exeext conftest.$ac_ext
-+ if test "x$smart_lib" != "x"; then
-+ break;
-+ fi
-+ done
-+ LIBS="$old_LIBS"
-+fi
-+
-+if test "x$smart_lib" = "x"; then
-+ LIBS="-lldap $old_LIBS"
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+extern char ldap_init();
-+int
-+main ()
-+{
-+ ldap_init()
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (ac_try="$ac_link"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
-+ (eval "$ac_link") 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest$ac_exeext && {
-+ test "$cross_compiling" = yes ||
-+ $as_test_x conftest$ac_exeext
-+ }; then
-+ smart_lib="-lldap"
-+else
-+ $as_echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+
-+fi
-+
-+rm -rf conftest.dSYM
-+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-+ conftest$ac_exeext conftest.$ac_ext
-+ LIBS="$old_LIBS"
-+fi
-+
-+if test "x$smart_lib" = "x"; then
-+
-+
-+if test "x$LOCATE" != "x"; then
-+ DIRS=
-+ file=libldap${libltdl_cv_shlibext}
-+
-+ for x in `${LOCATE} $file 2>/dev/null`; do
-+ base=`echo $x | sed "s%/${file}%%"`
-+ if test "x$x" = "x$base"; then
-+ continue;
-+ fi
-+
-+ dir=`${DIRNAME} $x 2>/dev/null`
-+ exclude=`echo ${dir} | ${GREP} /home`
-+ if test "x$exclude" != "x"; then
-+ continue
-+ fi
-+
-+ already=`echo \$smart_lib_dir ${DIRS} | ${GREP} ${dir}`
-+ if test "x$already" = "x"; then
-+ DIRS="$DIRS $dir"
-+ fi
-+ done
-+fi
-+
-+eval "smart_lib_dir=\"\$smart_lib_dir $DIRS\""
-+
-+
-+
-+if test "x$LOCATE" != "x"; then
-+ DIRS=
-+ file=libldap.a
-+
-+ for x in `${LOCATE} $file 2>/dev/null`; do
-+ base=`echo $x | sed "s%/${file}%%"`
-+ if test "x$x" = "x$base"; then
-+ continue;
-+ fi
-+
-+ dir=`${DIRNAME} $x 2>/dev/null`
-+ exclude=`echo ${dir} | ${GREP} /home`
-+ if test "x$exclude" != "x"; then
-+ continue
-+ fi
-+
-+ already=`echo \$smart_lib_dir ${DIRS} | ${GREP} ${dir}`
-+ if test "x$already" = "x"; then
-+ DIRS="$DIRS $dir"
-+ fi
-+ done
-+fi
-+
-+eval "smart_lib_dir=\"\$smart_lib_dir $DIRS\""
-+
-+
-+ for try in $smart_lib_dir /usr/local/lib /opt/lib; do
-+ LIBS="-L$try -lldap $old_LIBS"
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+extern char ldap_init();
-+int
-+main ()
-+{
-+ ldap_init()
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (ac_try="$ac_link"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
-+ (eval "$ac_link") 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest$ac_exeext && {
-+ test "$cross_compiling" = yes ||
-+ $as_test_x conftest$ac_exeext
-+ }; then
-+ smart_lib="-L$try -lldap"
-+else
-+ $as_echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+
-+fi
-+
-+rm -rf conftest.dSYM
-+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-+ conftest$ac_exeext conftest.$ac_ext
-+ if test "x$smart_lib" != "x"; then
-+ break;
-+ fi
-+ done
-+ LIBS="$old_LIBS"
-+fi
-+
-+if test "x$smart_lib" != "x"; then
-+ { $as_echo "$as_me:$LINENO: result: yes" >&5
-+$as_echo "yes" >&6; }
-+ eval "ac_cv_lib_${sm_lib_safe}_${sm_func_safe}=yes"
-+ LIBS="$smart_lib $old_LIBS"
-+ SMART_LIBS="$smart_lib $SMART_LIBS"
-+else
-+ { $as_echo "$as_me:$LINENO: result: no" >&5
-+$as_echo "no" >&6; }
-+fi
-+
-+ if test "x$ac_cv_lib_ldap_ldap_init" != "xyes"; then
-+ fail="$fail libldap"
-+ fi
-+ fi
-+
-+
-+ smart_try_dir=$rlm_ldap_include_dir
-+
-+
-+ac_safe=`echo "ldap.h" | sed 'y%./+-%__pm%'`
-+{ $as_echo "$as_me:$LINENO: checking for ldap.h" >&5
-+$as_echo_n "checking for ldap.h... " >&6; }
-+
-+old_CFLAGS="$CFLAGS"
-+smart_include=
-+smart_include_dir=
-+
-+if test "x$smart_try_dir" != "x"; then
-+ for try in $smart_try_dir; do
-+ CFLAGS="$old_CFLAGS -I$try"
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+ #include <ldap.h>
-+int
-+main ()
-+{
-+ int a = 1;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
-+ (eval "$ac_compile") 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
-+ smart_include="-I$try"
-+else
-+ $as_echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ smart_include=
-+fi
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+ if test "x$smart_include" != "x"; then
-+ break;
-+ fi
-+ done
-+ CFLAGS="$old_CFLAGS"
-+fi
-+
-+if test "x$smart_include" = "x"; then
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+ #include <ldap.h>
-+int
-+main ()
-+{
-+ int a = 1;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
-+ (eval "$ac_compile") 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
-+ smart_include=" "
-+else
-+ $as_echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ smart_include=
-+fi
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+fi
-+
-+if test "x$smart_include" = "x"; then
-+
-+
-+if test "x$LOCATE" != "x"; then
-+ DIRS=
-+ file=ldap.h
-+
-+ for x in `${LOCATE} $file 2>/dev/null`; do
-+ base=`echo $x | sed "s%/${file}%%"`
-+ if test "x$x" = "x$base"; then
-+ continue;
-+ fi
-+
-+ dir=`${DIRNAME} $x 2>/dev/null`
-+ exclude=`echo ${dir} | ${GREP} /home`
-+ if test "x$exclude" != "x"; then
-+ continue
-+ fi
-+
-+ already=`echo \$smart_include_dir ${DIRS} | ${GREP} ${dir}`
-+ if test "x$already" = "x"; then
-+ DIRS="$DIRS $dir"
-+ fi
-+ done
-+fi
-+
-+eval "smart_include_dir=\"\$smart_include_dir $DIRS\""
-+
-+
-+ for try in $smart_include_dir /usr/local/include /opt/include; do
-+ CFLAGS="$old_CFLAGS -I$try"
-+ cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -3434,20 +4067,21 @@ case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- smart_include="-I$try"
- else
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
- smart_include=
-@@ -3462,14 +4096,14 @@ rm -f core conftest.err conftest.$ac_obj
- fi
-
- if test "x$smart_include" != "x"; then
-- { echo "$as_me:$LINENO: result: yes" >&5
--echo "${ECHO_T}yes" >&6; }
-+ { $as_echo "$as_me:$LINENO: result: yes" >&5
-+$as_echo "yes" >&6; }
- eval "ac_cv_header_$ac_safe=yes"
- CFLAGS="$old_CFLAGS $smart_include"
- SMART_CFLAGS="$SMART_CFLAGS $smart_include"
- else
-- { echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6; }
-+ { $as_echo "$as_me:$LINENO: result: no" >&5
-+$as_echo "no" >&6; }
- fi
-
- if test "$ac_cv_header_ldap_h" != "yes"; then
-@@ -3478,10 +4112,10 @@ fi
-
-
- if test "x$fail" = "x"; then
-- { echo "$as_me:$LINENO: checking for ldap_start_tls_s" >&5
--echo $ECHO_N "checking for ldap_start_tls_s... $ECHO_C" >&6; }
-+ { $as_echo "$as_me:$LINENO: checking for ldap_start_tls_s" >&5
-+$as_echo_n "checking for ldap_start_tls_s... " >&6; }
- if test "${ac_cv_func_ldap_start_tls_s+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
-+ $as_echo_n "(cached) " >&6
- else
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
-@@ -3534,39 +4168,43 @@ case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
-- } && test -s conftest$ac_exeext &&
-- $as_test_x conftest$ac_exeext; then
-+ } && test -s conftest$ac_exeext && {
-+ test "$cross_compiling" = yes ||
-+ $as_test_x conftest$ac_exeext
-+ }; then
- ac_cv_func_ldap_start_tls_s=yes
- else
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_func_ldap_start_tls_s=no
- fi
-
-+rm -rf conftest.dSYM
- rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- fi
--{ echo "$as_me:$LINENO: result: $ac_cv_func_ldap_start_tls_s" >&5
--echo "${ECHO_T}$ac_cv_func_ldap_start_tls_s" >&6; }
--if test $ac_cv_func_ldap_start_tls_s = yes; then
-+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_ldap_start_tls_s" >&5
-+$as_echo "$ac_cv_func_ldap_start_tls_s" >&6; }
-+if test "x$ac_cv_func_ldap_start_tls_s" = x""yes; then
- SMART_CFLAGS="$SMART_CFLAGS -DHAVE_LDAP_START_TLS"
- fi
-
-- { echo "$as_me:$LINENO: checking for ldap_initialize" >&5
--echo $ECHO_N "checking for ldap_initialize... $ECHO_C" >&6; }
-+ { $as_echo "$as_me:$LINENO: checking for ldap_initialize" >&5
-+$as_echo_n "checking for ldap_initialize... " >&6; }
- if test "${ac_cv_func_ldap_initialize+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
-+ $as_echo_n "(cached) " >&6
- else
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
-@@ -3619,39 +4257,43 @@ case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
-- } && test -s conftest$ac_exeext &&
-- $as_test_x conftest$ac_exeext; then
-+ } && test -s conftest$ac_exeext && {
-+ test "$cross_compiling" = yes ||
-+ $as_test_x conftest$ac_exeext
-+ }; then
- ac_cv_func_ldap_initialize=yes
- else
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_func_ldap_initialize=no
- fi
-
-+rm -rf conftest.dSYM
- rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- fi
--{ echo "$as_me:$LINENO: result: $ac_cv_func_ldap_initialize" >&5
--echo "${ECHO_T}$ac_cv_func_ldap_initialize" >&6; }
--if test $ac_cv_func_ldap_initialize = yes; then
-+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_ldap_initialize" >&5
-+$as_echo "$ac_cv_func_ldap_initialize" >&6; }
-+if test "x$ac_cv_func_ldap_initialize" = x""yes; then
- SMART_CFLAGS="$SMART_CFLAGS -DHAVE_LDAP_INITIALIZE"
- fi
-
-- { echo "$as_me:$LINENO: checking for ldap_int_tls_config" >&5
--echo $ECHO_N "checking for ldap_int_tls_config... $ECHO_C" >&6; }
-+ { $as_echo "$as_me:$LINENO: checking for ldap_int_tls_config" >&5
-+$as_echo_n "checking for ldap_int_tls_config... " >&6; }
- if test "${ac_cv_func_ldap_int_tls_config+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
-+ $as_echo_n "(cached) " >&6
- else
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
-@@ -3704,32 +4346,36 @@ case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
-- } && test -s conftest$ac_exeext &&
-- $as_test_x conftest$ac_exeext; then
-+ } && test -s conftest$ac_exeext && {
-+ test "$cross_compiling" = yes ||
-+ $as_test_x conftest$ac_exeext
-+ }; then
- ac_cv_func_ldap_int_tls_config=yes
- else
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_func_ldap_int_tls_config=no
- fi
-
-+rm -rf conftest.dSYM
- rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- fi
--{ echo "$as_me:$LINENO: result: $ac_cv_func_ldap_int_tls_config" >&5
--echo "${ECHO_T}$ac_cv_func_ldap_int_tls_config" >&6; }
--if test $ac_cv_func_ldap_int_tls_config = yes; then
-+{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_ldap_int_tls_config" >&5
-+$as_echo "$ac_cv_func_ldap_int_tls_config" >&6; }
-+if test "x$ac_cv_func_ldap_int_tls_config" = x""yes; then
- SMART_CFLAGS="$SMART_CFLAGS -DHAVE_LDAP_INT_TLS_CONFIG"
- fi
-
-@@ -3738,11 +4384,11 @@ fi
-
- for ac_func in ldap_set_rebind_proc
- do
--as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
--{ echo "$as_me:$LINENO: checking for $ac_func" >&5
--echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
-+as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-+{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-+$as_echo_n "checking for $ac_func... " >&6; }
- if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
-+ $as_echo_n "(cached) " >&6
- else
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
-@@ -3795,44 +4441,51 @@ case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
-- } && test -s conftest$ac_exeext &&
-- $as_test_x conftest$ac_exeext; then
-+ } && test -s conftest$ac_exeext && {
-+ test "$cross_compiling" = yes ||
-+ $as_test_x conftest$ac_exeext
-+ }; then
- eval "$as_ac_var=yes"
- else
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
- eval "$as_ac_var=no"
- fi
-
-+rm -rf conftest.dSYM
- rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- fi
--ac_res=`eval echo '${'$as_ac_var'}'`
-- { echo "$as_me:$LINENO: result: $ac_res" >&5
--echo "${ECHO_T}$ac_res" >&6; }
--if test `eval echo '${'$as_ac_var'}'` = yes; then
-+ac_res=`eval 'as_val=${'$as_ac_var'}
-+ $as_echo "$as_val"'`
-+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-+$as_echo "$ac_res" >&6; }
-+as_val=`eval 'as_val=${'$as_ac_var'}
-+ $as_echo "$as_val"'`
-+ if test "x$as_val" = x""yes; then
- cat >>confdefs.h <<_ACEOF
--#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
- _ACEOF
-
- fi
- done
-
-- { echo "$as_me:$LINENO: checking whether ldap_set_rebind_proc takes 3 arguments" >&5
--echo $ECHO_N "checking whether ldap_set_rebind_proc takes 3 arguments... $ECHO_C" >&6; }
-+ { $as_echo "$as_me:$LINENO: checking whether ldap_set_rebind_proc takes 3 arguments" >&5
-+$as_echo_n "checking whether ldap_set_rebind_proc takes 3 arguments... " >&6; }
- if test "${ac_cv_ldap_set_rebind_proc+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
-+ $as_echo_n "(cached) " >&6
- else
-
- cat >conftest.$ac_ext <<_ACEOF
-@@ -3858,20 +4511,21 @@ case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
- esac
--eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-+$as_echo "$ac_try_echo") >&5
- (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then
- ac_cv_ldap_set_rebind_proc=3
- else
-- echo "$as_me: failed program was:" >&5
-+ $as_echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_cv_ldap_set_rebind_proc=2
-@@ -3879,8 +4533,8 @@ fi
-
- rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
--{ echo "$as_me:$LINENO: result: $ac_cv_ldap_set_rebind_proc" >&5
--echo "${ECHO_T}$ac_cv_ldap_set_rebind_proc" >&6; }
-+{ $as_echo "$as_me:$LINENO: result: $ac_cv_ldap_set_rebind_proc" >&5
-+$as_echo "$ac_cv_ldap_set_rebind_proc" >&6; }
- fi
-
- targetname=rlm_ldap
-@@ -3891,21 +4545,21 @@ fi
-
- if test x"$fail" != x""; then
- if test x"${enable_strict_dependencies}" = x"yes"; then
-- { { echo "$as_me:$LINENO: error: set --without-rlm_ldap to disable it explicitly." >&5
--echo "$as_me: error: set --without-rlm_ldap to disable it explicitly." >&2;}
-+ { { $as_echo "$as_me:$LINENO: error: set --without-rlm_ldap to disable it explicitly." >&5
-+$as_echo "$as_me: error: set --without-rlm_ldap to disable it explicitly." >&2;}
- { (exit 1); exit 1; }; }
- else
-- { echo "$as_me:$LINENO: WARNING: silently not building rlm_ldap." >&5
--echo "$as_me: WARNING: silently not building rlm_ldap." >&2;}
-- { echo "$as_me:$LINENO: WARNING: FAILURE: rlm_ldap requires: $fail." >&5
--echo "$as_me: WARNING: FAILURE: rlm_ldap requires: $fail." >&2;}
-+ { $as_echo "$as_me:$LINENO: WARNING: silently not building rlm_ldap." >&5
-+$as_echo "$as_me: WARNING: silently not building rlm_ldap." >&2;}
-+ { $as_echo "$as_me:$LINENO: WARNING: FAILURE: rlm_ldap requires: $fail." >&5
-+$as_echo "$as_me: WARNING: FAILURE: rlm_ldap requires: $fail." >&2;}
- if test x"$headersuggestion" != x; then
-- { echo "$as_me:$LINENO: WARNING: $headersuggestion" >&5
--echo "$as_me: WARNING: $headersuggestion" >&2;}
-+ { $as_echo "$as_me:$LINENO: WARNING: $headersuggestion" >&5
-+$as_echo "$as_me: WARNING: $headersuggestion" >&2;}
- fi
- if test x"$libsuggestion" != x; then
-- { echo "$as_me:$LINENO: WARNING: $libsuggestion" >&5
--echo "$as_me: WARNING: $libsuggestion" >&2;}
-+ { $as_echo "$as_me:$LINENO: WARNING: $libsuggestion" >&5
-+$as_echo "$as_me: WARNING: $libsuggestion" >&2;}
- fi
- targetname=""
- fi
-@@ -3966,11 +4620,12 @@ _ACEOF
- case $ac_val in #(
- *${as_nl}*)
- case $ac_var in #(
-- *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
--echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
-+ *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
-+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
- esac
- case $ac_var in #(
- _ | IFS | as_nl) ;; #(
-+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
- *) $as_unset $ac_var ;;
- esac ;;
- esac
-@@ -4003,12 +4658,12 @@ echo "$as_me: WARNING: Cache variable $a
- if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
- if test -w "$cache_file"; then
- test "x$cache_file" != "x/dev/null" &&
-- { echo "$as_me:$LINENO: updating cache $cache_file" >&5
--echo "$as_me: updating cache $cache_file" >&6;}
-+ { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5
-+$as_echo "$as_me: updating cache $cache_file" >&6;}
- cat confcache >$cache_file
- else
-- { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
--echo "$as_me: not updating unwritable cache $cache_file" >&6;}
-+ { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
-+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
- fi
- fi
- rm -f confcache
-@@ -4025,6 +4680,12 @@ test "x$exec_prefix" = xNONE && exec_pre
- # take arguments), then branch to the quote section. Otherwise,
- # look for a macro that doesn't take arguments.
- ac_script='
-+:mline
-+/\\$/{
-+ N
-+ s,\\\n,,
-+ b mline
-+}
- t clear
- :clear
- s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
-@@ -4054,7 +4715,7 @@ ac_ltlibobjs=
- for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
- # 1. Remove the extension, and $U if already installed.
- ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-- ac_i=`echo "$ac_i" | sed "$ac_script"`
-+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
- # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
- # will be set to the directory where LIBOBJS objects are built.
- ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-@@ -4067,11 +4728,12 @@ LTLIBOBJS=$ac_ltlibobjs
-
-
- : ${CONFIG_STATUS=./config.status}
-+ac_write_fail=0
- ac_clean_files_save=$ac_clean_files
- ac_clean_files="$ac_clean_files $CONFIG_STATUS"
--{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
--echo "$as_me: creating $CONFIG_STATUS" >&6;}
--cat >$CONFIG_STATUS <<_ACEOF
-+{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
-+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-+cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- #! $SHELL
- # Generated by $as_me.
- # Run this file to recreate the current configuration.
-@@ -4084,7 +4746,7 @@ ac_cs_silent=false
- SHELL=\${CONFIG_SHELL-$SHELL}
- _ACEOF
-
--cat >>$CONFIG_STATUS <<\_ACEOF
-+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
- ## --------------------- ##
- ## M4sh Initialization. ##
- ## --------------------- ##
-@@ -4094,7 +4756,7 @@ DUALCASE=1; export DUALCASE # for MKS sh
- if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
-- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-@@ -4116,17 +4778,45 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTE
- as_cr_digits='0123456789'
- as_cr_alnum=$as_cr_Letters$as_cr_digits
-
--# The user is always right.
--if test "${PATH_SEPARATOR+set}" != set; then
-- echo "#! /bin/sh" >conf$$.sh
-- echo "exit 0" >>conf$$.sh
-- chmod +x conf$$.sh
-- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-- PATH_SEPARATOR=';'
-+as_nl='
-+'
-+export as_nl
-+# Printing a long string crashes Solaris 7 /usr/bin/printf.
-+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-+ as_echo='printf %s\n'
-+ as_echo_n='printf %s'
-+else
-+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-+ as_echo_n='/usr/ucb/echo -n'
- else
-- PATH_SEPARATOR=:
-+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-+ as_echo_n_body='eval
-+ arg=$1;
-+ case $arg in
-+ *"$as_nl"*)
-+ expr "X$arg" : "X\\(.*\\)$as_nl";
-+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-+ esac;
-+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-+ '
-+ export as_echo_n_body
-+ as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
-- rm -f conf$$.sh
-+ export as_echo_body
-+ as_echo='sh -c $as_echo_body as_echo'
-+fi
-+
-+# The user is always right.
-+if test "${PATH_SEPARATOR+set}" != set; then
-+ PATH_SEPARATOR=:
-+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-+ PATH_SEPARATOR=';'
-+ }
- fi
-
- # Support unset when possible.
-@@ -4142,8 +4832,6 @@ fi
- # there to prevent editors from complaining about space-tab.
- # (If _AS_PATH_WALK were called with IFS unset, it would disable word
- # splitting by setting IFS to empty value.)
--as_nl='
--'
- IFS=" "" $as_nl"
-
- # Find who we are. Look in the path if we contain no directory separator.
-@@ -4166,7 +4854,7 @@ if test "x$as_myself" = x; then
- as_myself=$0
- fi
- if test ! -f "$as_myself"; then
-- echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
- { (exit 1); exit 1; }
- fi
-
-@@ -4179,17 +4867,10 @@ PS2='> '
- PS4='+ '
-
- # NLS nuisances.
--for as_var in \
-- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-- LC_TELEPHONE LC_TIME
--do
-- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
-- eval $as_var=C; export $as_var
-- else
-- ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-- fi
--done
-+LC_ALL=C
-+export LC_ALL
-+LANGUAGE=C
-+export LANGUAGE
-
- # Required to use basename.
- if expr a : '\(a\)' >/dev/null 2>&1 &&
-@@ -4211,7 +4892,7 @@ as_me=`$as_basename -- "$0" ||
- $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
--echo X/"$0" |
-+$as_echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{
- s//\1/
- q
-@@ -4262,7 +4943,7 @@ $as_unset CDPATH
- s/-\n.*//
- ' >$as_me.lineno &&
- chmod +x "$as_me.lineno" ||
-- { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
- { (exit 1); exit 1; }; }
-
- # Don't try to exec as it changes $[0], causing all sort of problems
-@@ -4290,7 +4971,6 @@ case `echo -n x` in
- *)
- ECHO_N='-n';;
- esac
--
- if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-@@ -4303,19 +4983,22 @@ if test -d conf$$.dir; then
- rm -f conf$$.dir/conf$$.file
- else
- rm -f conf$$.dir
-- mkdir conf$$.dir
-+ mkdir conf$$.dir 2>/dev/null
- fi
--echo >conf$$.file
--if ln -s conf$$.file conf$$ 2>/dev/null; then
-- as_ln_s='ln -s'
-- # ... but there are two gotchas:
-- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-- # In both cases, we have to default to `cp -p'.
-- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-+if (echo >conf$$.file) 2>/dev/null; then
-+ if ln -s conf$$.file conf$$ 2>/dev/null; then
-+ as_ln_s='ln -s'
-+ # ... but there are two gotchas:
-+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-+ # In both cases, we have to default to `cp -p'.
-+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-+ as_ln_s='cp -p'
-+ elif ln conf$$.file conf$$ 2>/dev/null; then
-+ as_ln_s=ln
-+ else
- as_ln_s='cp -p'
--elif ln conf$$.file conf$$ 2>/dev/null; then
-- as_ln_s=ln
-+ fi
- else
- as_ln_s='cp -p'
- fi
-@@ -4340,10 +5023,10 @@ else
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
-- test -d "$1/.";
-+ test -d "$1/.";
- else
- case $1 in
-- -*)set "./$1";;
-+ -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
- ???[sx]*):;;*)false;;esac;fi
-@@ -4366,7 +5049,7 @@ exec 6>&1
- # values after options handling.
- ac_log="
- This file was extended by $as_me, which was
--generated by GNU Autoconf 2.61. Invocation command line was
-+generated by GNU Autoconf 2.63. Invocation command line was
-
- CONFIG_FILES = $CONFIG_FILES
- CONFIG_HEADERS = $CONFIG_HEADERS
-@@ -4379,26 +5062,33 @@ on `(hostname || uname -n) 2>/dev/null |
-
- _ACEOF
-
--cat >>$CONFIG_STATUS <<_ACEOF
-+case $ac_config_files in *"
-+"*) set x $ac_config_files; shift; ac_config_files=$*;;
-+esac
-+
-+
-+
-+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- # Files that config.status was made for.
- config_files="$ac_config_files"
-
- _ACEOF
-
--cat >>$CONFIG_STATUS <<\_ACEOF
-+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
- ac_cs_usage="\
- \`$as_me' instantiates files from templates according to the
- current configuration.
-
--Usage: $0 [OPTIONS] [FILE]...
-+Usage: $0 [OPTION]... [FILE]...
-
- -h, --help print this help, then exit
- -V, --version print version number and configuration settings, then exit
-- -q, --quiet do not print progress messages
-+ -q, --quiet, --silent
-+ do not print progress messages
- -d, --debug don't remove temporary files
- --recheck update $as_me by reconfiguring in the same conditions
-- --file=FILE[:TEMPLATE]
-- instantiate the configuration file FILE
-+ --file=FILE[:TEMPLATE]
-+ instantiate the configuration file FILE
-
- Configuration files:
- $config_files
-@@ -4406,23 +5096,23 @@ $config_files
- Report bugs to <bug-autoconf@gnu.org>."
-
- _ACEOF
--cat >>$CONFIG_STATUS <<_ACEOF
-+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- ac_cs_version="\\
- config.status
--configured by $0, generated by GNU Autoconf 2.61,
-- with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
-+configured by $0, generated by GNU Autoconf 2.63,
-+ with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
-
--Copyright (C) 2006 Free Software Foundation, Inc.
-+Copyright (C) 2008 Free Software Foundation, Inc.
- This config.status script is free software; the Free Software Foundation
- gives unlimited permission to copy, distribute and modify it."
-
- ac_pwd='$ac_pwd'
- srcdir='$srcdir'
-+test -n "\$AWK" || AWK=awk
- _ACEOF
-
--cat >>$CONFIG_STATUS <<\_ACEOF
--# If no file are specified by the user, then we need to provide default
--# value. By we need to know if files were specified by the user.
-+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-+# The default lists apply if the user does not specify any file.
- ac_need_defaults=:
- while test $# != 0
- do
-@@ -4444,21 +5134,24 @@ do
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- ac_cs_recheck=: ;;
- --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-- echo "$ac_cs_version"; exit ;;
-+ $as_echo "$ac_cs_version"; exit ;;
- --debug | --debu | --deb | --de | --d | -d )
- debug=: ;;
- --file | --fil | --fi | --f )
- $ac_shift
-- CONFIG_FILES="$CONFIG_FILES $ac_optarg"
-+ case $ac_optarg in
-+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-+ esac
-+ CONFIG_FILES="$CONFIG_FILES '$ac_optarg'"
- ac_need_defaults=false;;
- --he | --h | --help | --hel | -h )
-- echo "$ac_cs_usage"; exit ;;
-+ $as_echo "$ac_cs_usage"; exit ;;
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil | --si | --s)
- ac_cs_silent=: ;;
-
- # This is an error.
-- -*) { echo "$as_me: error: unrecognized option: $1
-+ -*) { $as_echo "$as_me: error: unrecognized option: $1
- Try \`$0 --help' for more information." >&2
- { (exit 1); exit 1; }; } ;;
-
-@@ -4477,30 +5170,32 @@ if $ac_cs_silent; then
- fi
-
- _ACEOF
--cat >>$CONFIG_STATUS <<_ACEOF
-+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- if \$ac_cs_recheck; then
-- echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
-- CONFIG_SHELL=$SHELL
-+ set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-+ shift
-+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
-+ CONFIG_SHELL='$SHELL'
- export CONFIG_SHELL
-- exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-+ exec "\$@"
- fi
-
- _ACEOF
--cat >>$CONFIG_STATUS <<\_ACEOF
-+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
- exec 5>>config.log
- {
- echo
- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
- ## Running $as_me. ##
- _ASBOX
-- echo "$ac_log"
-+ $as_echo "$ac_log"
- } >&5
-
- _ACEOF
--cat >>$CONFIG_STATUS <<_ACEOF
-+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- _ACEOF
-
--cat >>$CONFIG_STATUS <<\_ACEOF
-+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
- # Handling of arguments.
- for ac_config_target in $ac_config_targets
-@@ -4508,8 +5203,8 @@ do
- case $ac_config_target in
- "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-
-- *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
--echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
-+ *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-+$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
- { (exit 1); exit 1; }; };;
- esac
- done
-@@ -4548,114 +5243,143 @@ $debug ||
- (umask 077 && mkdir "$tmp")
- } ||
- {
-- echo "$me: cannot create a temporary directory in ." >&2
-+ $as_echo "$as_me: cannot create a temporary directory in ." >&2
- { (exit 1); exit 1; }
- }
-
--#
--# Set up the sed scripts for CONFIG_FILES section.
--#
--
--# No need to generate the scripts if there are no CONFIG_FILES.
--# This happens for instance when ./config.status config.h
-+# Set up the scripts for CONFIG_FILES section.
-+# No need to generate them if there are no CONFIG_FILES.
-+# This happens for instance with `./config.status config.h'.
- if test -n "$CONFIG_FILES"; then
-
--_ACEOF
-
-+ac_cr='\r'
-+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-+ ac_cs_awk_cr='\\r'
-+else
-+ ac_cs_awk_cr=$ac_cr
-+fi
-+
-+echo 'BEGIN {' >"$tmp/subs1.awk" &&
-+_ACEOF
-
-
-+{
-+ echo "cat >conf$$subs.awk <<_ACEOF" &&
-+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
-+ echo "_ACEOF"
-+} >conf$$subs.sh ||
-+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-+ { (exit 1); exit 1; }; }
-+ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
- ac_delim='%!_!# '
- for ac_last_try in false false false false false :; do
-- cat >conf$$subs.sed <<_ACEOF
--SHELL!$SHELL$ac_delim
--PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
--PACKAGE_NAME!$PACKAGE_NAME$ac_delim
--PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
--PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
--PACKAGE_STRING!$PACKAGE_STRING$ac_delim
--PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
--exec_prefix!$exec_prefix$ac_delim
--prefix!$prefix$ac_delim
--program_transform_name!$program_transform_name$ac_delim
--bindir!$bindir$ac_delim
--sbindir!$sbindir$ac_delim
--libexecdir!$libexecdir$ac_delim
--datarootdir!$datarootdir$ac_delim
--datadir!$datadir$ac_delim
--sysconfdir!$sysconfdir$ac_delim
--sharedstatedir!$sharedstatedir$ac_delim
--localstatedir!$localstatedir$ac_delim
--includedir!$includedir$ac_delim
--oldincludedir!$oldincludedir$ac_delim
--docdir!$docdir$ac_delim
--infodir!$infodir$ac_delim
--htmldir!$htmldir$ac_delim
--dvidir!$dvidir$ac_delim
--pdfdir!$pdfdir$ac_delim
--psdir!$psdir$ac_delim
--libdir!$libdir$ac_delim
--localedir!$localedir$ac_delim
--mandir!$mandir$ac_delim
--DEFS!$DEFS$ac_delim
--ECHO_C!$ECHO_C$ac_delim
--ECHO_N!$ECHO_N$ac_delim
--ECHO_T!$ECHO_T$ac_delim
--LIBS!$LIBS$ac_delim
--build_alias!$build_alias$ac_delim
--host_alias!$host_alias$ac_delim
--target_alias!$target_alias$ac_delim
--CC!$CC$ac_delim
--CFLAGS!$CFLAGS$ac_delim
--LDFLAGS!$LDFLAGS$ac_delim
--CPPFLAGS!$CPPFLAGS$ac_delim
--ac_ct_CC!$ac_ct_CC$ac_delim
--EXEEXT!$EXEEXT$ac_delim
--OBJEXT!$OBJEXT$ac_delim
--edir!$edir$ac_delim
--ldap_ldflags!$ldap_ldflags$ac_delim
--ldap_cflags!$ldap_cflags$ac_delim
--targetname!$targetname$ac_delim
--LIBOBJS!$LIBOBJS$ac_delim
--LTLIBOBJS!$LTLIBOBJS$ac_delim
--_ACEOF
-+ . ./conf$$subs.sh ||
-+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-+ { (exit 1); exit 1; }; }
-
-- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 50; then
-+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
-+ if test $ac_delim_n = $ac_delim_num; then
- break
- elif $ac_last_try; then
-- { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
--echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
- { (exit 1); exit 1; }; }
- else
- ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
- fi
- done
-+rm -f conf$$subs.sh
-
--ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
--if test -n "$ac_eof"; then
-- ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
-- ac_eof=`expr $ac_eof + 1`
--fi
--
--cat >>$CONFIG_STATUS <<_ACEOF
--cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
--/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
--_ACEOF
--sed '
--s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
--s/^/s,@/; s/!/@,|#_!!_#|/
--:n
--t n
--s/'"$ac_delim"'$/,g/; t
--s/$/\\/; p
--N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
--' >>$CONFIG_STATUS <conf$$subs.sed
--rm -f conf$$subs.sed
--cat >>$CONFIG_STATUS <<_ACEOF
--:end
--s/|#_!!_#|//g
--CEOF$ac_eof
-+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
- _ACEOF
-+sed -n '
-+h
-+s/^/S["/; s/!.*/"]=/
-+p
-+g
-+s/^[^!]*!//
-+:repl
-+t repl
-+s/'"$ac_delim"'$//
-+t delim
-+:nl
-+h
-+s/\(.\{148\}\).*/\1/
-+t more1
-+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-+p
-+n
-+b repl
-+:more1
-+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-+p
-+g
-+s/.\{148\}//
-+t nl
-+:delim
-+h
-+s/\(.\{148\}\).*/\1/
-+t more2
-+s/["\\]/\\&/g; s/^/"/; s/$/"/
-+p
-+b
-+:more2
-+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-+p
-+g
-+s/.\{148\}//
-+t delim
-+' <conf$$subs.awk | sed '
-+/^[^""]/{
-+ N
-+ s/\n//
-+}
-+' >>$CONFIG_STATUS || ac_write_fail=1
-+rm -f conf$$subs.awk
-+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-+_ACAWK
-+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
-+ for (key in S) S_is_set[key] = 1
-+ FS = "\a"
-
-+}
-+{
-+ line = $ 0
-+ nfields = split(line, field, "@")
-+ substed = 0
-+ len = length(field[1])
-+ for (i = 2; i < nfields; i++) {
-+ key = field[i]
-+ keylen = length(key)
-+ if (S_is_set[key]) {
-+ value = S[key]
-+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
-+ len += length(value) + length(field[++i])
-+ substed = 1
-+ } else
-+ len += 1 + keylen
-+ }
-+
-+ print line
-+}
-+
-+_ACAWK
-+_ACEOF
-+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
-+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-+else
-+ cat
-+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
-+ || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5
-+$as_echo "$as_me: error: could not setup config files machinery" >&2;}
-+ { (exit 1); exit 1; }; }
-+_ACEOF
-
- # VPATH may cause trouble with some makes, so we remove $(srcdir),
- # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
-@@ -4672,19 +5396,21 @@ s/^[^=]*=[ ]*$//
- }'
- fi
-
--cat >>$CONFIG_STATUS <<\_ACEOF
-+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
- fi # test -n "$CONFIG_FILES"
-
-
--for ac_tag in :F $CONFIG_FILES
-+eval set X " :F $CONFIG_FILES "
-+shift
-+for ac_tag
- do
- case $ac_tag in
- :[FHLC]) ac_mode=$ac_tag; continue;;
- esac
- case $ac_mode$ac_tag in
- :[FHL]*:*);;
-- :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
--echo "$as_me: error: Invalid tag $ac_tag." >&2;}
-+ :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5
-+$as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
- { (exit 1); exit 1; }; };;
- :[FH]-) ac_tag=-:-;;
- :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-@@ -4713,26 +5439,38 @@ echo "$as_me: error: Invalid tag $ac_tag
- [\\/$]*) false;;
- *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
- esac ||
-- { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
--echo "$as_me: error: cannot find input file: $ac_f" >&2;}
-+ { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
-+$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
- { (exit 1); exit 1; }; };;
- esac
-- ac_file_inputs="$ac_file_inputs $ac_f"
-+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-+ ac_file_inputs="$ac_file_inputs '$ac_f'"
- done
-
- # Let's still pretend it is `configure' which instantiates (i.e., don't
- # use $as_me), people would be surprised to read:
- # /* config.h. Generated by config.status. */
-- configure_input="Generated from "`IFS=:
-- echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
-+ configure_input='Generated from '`
-+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
-+ `' by configure.'
- if test x"$ac_file" != x-; then
- configure_input="$ac_file. $configure_input"
-- { echo "$as_me:$LINENO: creating $ac_file" >&5
--echo "$as_me: creating $ac_file" >&6;}
-+ { $as_echo "$as_me:$LINENO: creating $ac_file" >&5
-+$as_echo "$as_me: creating $ac_file" >&6;}
- fi
-+ # Neutralize special characters interpreted by sed in replacement strings.
-+ case $configure_input in #(
-+ *\&* | *\|* | *\\* )
-+ ac_sed_conf_input=`$as_echo "$configure_input" |
-+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
-+ *) ac_sed_conf_input=$configure_input;;
-+ esac
-
- case $ac_tag in
-- *:-:* | *:-) cat >"$tmp/stdin";;
-+ *:-:* | *:-) cat >"$tmp/stdin" \
-+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-+$as_echo "$as_me: error: could not create $ac_file" >&2;}
-+ { (exit 1); exit 1; }; } ;;
- esac
- ;;
- esac
-@@ -4742,7 +5480,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
--echo X"$ac_file" |
-+$as_echo X"$ac_file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
-@@ -4768,7 +5506,7 @@ echo X"$ac_file" |
- as_dirs=
- while :; do
- case $as_dir in #(
-- *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
-+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
- *) as_qdir=$as_dir;;
- esac
- as_dirs="'$as_qdir' $as_dirs"
-@@ -4777,7 +5515,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
--echo X"$as_dir" |
-+$as_echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
-@@ -4798,17 +5536,17 @@ echo X"$as_dir" |
- test -d "$as_dir" && break
- done
- test -z "$as_dirs" || eval "mkdir $as_dirs"
-- } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
--echo "$as_me: error: cannot create directory $as_dir" >&2;}
-+ } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
- { (exit 1); exit 1; }; }; }
- ac_builddir=.
-
- case "$ac_dir" in
- .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
- *)
-- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
- # A ".." for each directory in $ac_dir_suffix.
-- ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
-+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
- case $ac_top_builddir_sub in
- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-@@ -4844,12 +5582,13 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_
-
- _ACEOF
-
--cat >>$CONFIG_STATUS <<\_ACEOF
-+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
- # If the template does not know about datarootdir, expand it.
- # FIXME: This hack should be removed a few years after 2.60.
- ac_datarootdir_hack=; ac_datarootdir_seen=
-
--case `sed -n '/datarootdir/ {
-+ac_sed_dataroot='
-+/datarootdir/ {
- p
- q
- }
-@@ -4858,13 +5597,14 @@ case `sed -n '/datarootdir/ {
- /@infodir@/p
- /@localedir@/p
- /@mandir@/p
--' $ac_file_inputs` in
-+'
-+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
- *datarootdir*) ac_datarootdir_seen=yes;;
- *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-- { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
--echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-+ { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
- _ACEOF
--cat >>$CONFIG_STATUS <<_ACEOF
-+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- ac_datarootdir_hack='
- s&@datadir@&$datadir&g
- s&@docdir@&$docdir&g
-@@ -4878,15 +5618,16 @@ _ACEOF
- # Neutralize VPATH when `$srcdir' = `.'.
- # Shell code in configure.ac might set extrasub.
- # FIXME: do we really want to maintain this feature?
--cat >>$CONFIG_STATUS <<_ACEOF
-- sed "$ac_vpsub
-+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-+ac_sed_extra="$ac_vpsub
- $extrasub
- _ACEOF
--cat >>$CONFIG_STATUS <<\_ACEOF
-+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
- :t
- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
--s&@configure_input@&$configure_input&;t t
-+s|@configure_input@|$ac_sed_conf_input|;t t
- s&@top_builddir@&$ac_top_builddir_sub&;t t
-+s&@top_build_prefix@&$ac_top_build_prefix&;t t
- s&@srcdir@&$ac_srcdir&;t t
- s&@abs_srcdir@&$ac_abs_srcdir&;t t
- s&@top_srcdir@&$ac_top_srcdir&;t t
-@@ -4895,21 +5636,28 @@ s&@builddir@&$ac_builddir&;t t
- s&@abs_builddir@&$ac_abs_builddir&;t t
- s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
- $ac_datarootdir_hack
--" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out
-+"
-+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
-+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-+$as_echo "$as_me: error: could not create $ac_file" >&2;}
-+ { (exit 1); exit 1; }; }
-
- test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
- { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
- { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
-- { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-+ { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
- which seems to be undefined. Please make sure it is defined." >&5
--echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
- which seems to be undefined. Please make sure it is defined." >&2;}
-
- rm -f "$tmp/stdin"
- case $ac_file in
-- -) cat "$tmp/out"; rm -f "$tmp/out";;
-- *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
-- esac
-+ -) cat "$tmp/out" && rm -f "$tmp/out";;
-+ *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
-+ esac \
-+ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-+$as_echo "$as_me: error: could not create $ac_file" >&2;}
-+ { (exit 1); exit 1; }; }
- ;;
-
-
-@@ -4924,6 +5672,11 @@ _ACEOF
- chmod +x $CONFIG_STATUS
- ac_clean_files=$ac_clean_files_save
-
-+test $ac_write_fail = 0 ||
-+ { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5
-+$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;}
-+ { (exit 1); exit 1; }; }
-+
-
- # configure is writing to config.log, and then calls config.status.
- # config.status does its own redirection, appending to config.log.
-@@ -4945,5 +5698,9 @@ if test "$no_create" != yes; then
- # would make configure fail if this is the last instruction.
- $ac_cs_success || { (exit 1); exit 1; }
- fi
-+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-+ { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-+fi
-
-
-Index: freeradius-server-2.2.7/src/modules/rlm_ldap/configure.in
-===================================================================
---- freeradius-server-2.2.7.orig/src/modules/rlm_ldap/configure.in
-+++ freeradius-server-2.2.7/src/modules/rlm_ldap/configure.in
-@@ -87,6 +87,9 @@ if test x$with_[]modname != xno; then
- )
- fi
-
-+ FR_SMART_CHECK_LIB(sasl, sasl_encode)
-+ FR_SMART_CHECK_LIB(lber, ber_init)
-+
- dnl Try only "-lldap_r" or "-lldap"
- dnl Static linking will probably not work, but nobody ever
- dnl complained about it.
+++ /dev/null
-Index: freeradius-server-2.2.7/src/modules/rules.mak
-===================================================================
---- freeradius-server-2.2.7.orig/src/modules/rules.mak
-+++ freeradius-server-2.2.7/src/modules/rules.mak
-@@ -63,10 +63,10 @@ $(LT_OBJS): $(SERVER_HEADERS)
- #
- #######################################################################
- %.lo: %.c
-- $(LIBTOOL) --mode=compile --tag=CC $(CC) $(CFLAGS) $(RLM_CFLAGS) -c $<
-+ $(LIBTOOL) --mode=compile --tag=CC $(CC) $(CFLAGS) $(CPPFLAGS) $(RLM_CFLAGS) -c $<
-
- %.lo: %.cpp
-- $(LIBTOOL) --mode=compile --tag=CXX $(CXX) $(CFLAGS) $(RLM_CFLAGS) -c $<
-+ $(LIBTOOL) --mode=compile --tag=CXX $(CXX) $(CFLAGS) $(CPPFLAGS) $(RLM_CFLAGS) -c $<
-
- ifneq ($(TARGET),)
- #######################################################################
+++ /dev/null
-Index: freeradius-server-2.2.7/configure.in
-===================================================================
---- freeradius-server-2.2.7.orig/configure.in
-+++ freeradius-server-2.2.7/configure.in
-@@ -820,35 +820,6 @@ if test "x$WITH_OPENSSL" = xyes; then
- OPENSSL_INCLUDE="-DOPENSSL_NO_KRB5"
- fi
-
-- dnl #
-- dnl # Now check that the header versions match the library
-- dnl #
-- AC_MSG_CHECKING([OpenSSL library and header version consistency])
-- AC_RUN_IFELSE(
-- [AC_LANG_PROGRAM(
-- [[
-- #include <stdio.h>
-- #include <openssl/opensslv.h>
-- #include <openssl/crypto.h>
-- ]],
-- [[
-- if (SSLeay() == OPENSSL_VERSION_NUMBER) {
-- return 0;
-- } else {
-- printf("library: %lx header: %lx... ", (unsigned long) SSLeay(), (unsigned long) OPENSSL_VERSION_NUMBER);
-- return 1;
-- }
-- ]]
-- )],
-- [
-- AC_MSG_RESULT(yes)
-- ],
-- [
-- AC_MSG_RESULT(no)
-- AC_MSG_FAILURE([OpenSSL library version does not match header version])
-- ]
-- )
--
- if test "x$OPENSSL_LIBS" = x; then
- LIBS=$old_LIBS
- LDFLAGS="$old_LDFLAGS"
/etc/freeradius3/mods-enabled/passwd
endef
-# LDAP support has not been ported
+define Package/freeradius3-mod-ldap
+ $(call Package/freeradius3/Default)
+ DEPENDS:=freeradius3 +libopenldap @FREERADIUS3_OPENSSL
+ TITLE:=LDAP Authentication
+endef
+
+define Package/freeradius3-mod-ldap/conffiles
+/etc/freeradius3/mods-available/ldap
+endef
define Package/freeradius3-mod-logintime
$(call Package/freeradius3/Default)
--without-rlm_idn \
--without-rlm_ippool \
--without-rlm_krb5 \
- --without-rlm_ldap \
--without-rlm_opendirectory \
--without-rlm_pam \
--without-rlm_perl \
CONFIGURE_ARGS+= --without-rlm_unix
endif
+ifneq ($(SDK)$(CONFIG_PACKAGE_freeradius3-mod-ldap),)
+ CONFIGURE_ARGS+= --with-rlm_ldap \
+ --with-rlm_ldap-include-dir="$(STAGING_DIR)/usr/include" \
+ --with-rlm_ldap-lib-dir="$(STAGING_DIR)/usr/lib"
+else
+ CONFIGURE_ARGS+= --without-rlm_ldap
+endif
+
CONFIGURE_VARS+= \
LDFLAGS="$$$$LDFLAGS" \
LIBS="$(CONFIGURE_LIBS)" \
$(eval $(call BuildPlugin,freeradius3-mod-expiration,rlm_expiration,))
$(eval $(call BuildPlugin,freeradius3-mod-expr,rlm_expr,))
$(eval $(call BuildPlugin,freeradius3-mod-files,rlm_files,))
+$(eval $(call BuildPlugin,freeradius3-mod-ldap,rlm_ldap,))
$(eval $(call BuildPlugin,freeradius3-mod-logintime,rlm_logintime,))
$(eval $(call BuildPlugin,freeradius3-mod-mschap,rlm_mschap,))
$(eval $(call BuildPlugin,freeradius3-mod-pap,rlm_pap,))
include $(TOPDIR)/rules.mk
PKG_NAME:=git
-PKG_VERSION:=2.12.2
+PKG_VERSION:=2.13.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/software/scm/git/
-PKG_HASH:=d21a9e23506e618d561fb25a8a7bd6134f927b86147930103487117a7a678c4a
+PKG_HASH:=3bc1becd983f77ab154a46801624369dbc40c3dd04b4c4b07ad026f5684688fe
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
--- a/Makefile
+++ b/Makefile
-@@ -1123,7 +1123,7 @@ else
+@@ -1137,7 +1137,7 @@ else
endif
curl_check := $(shell (echo 072200; $(CURL_CONFIG) --vernum | sed -e '/^70[BC]/s/^/0/') 2>/dev/null | sort -r | sed -ne 2p)
ifeq "$(curl_check)" "072200"
include $(TOPDIR)/rules.mk
PKG_NAME:=gnunet
-PKG_SOURCE_VERSION:=1c2ab4aa3b9b563ad2098984b5751e67d3267778
-PKG_MIRROR_HASH:=cb0286944b78616e381b049de678a3475b0a496055f40f8af5eea367c4d9c0c6
+PKG_SOURCE_VERSION:=55b06f18c66ede06a2cf437b652de3a7c75c902a
+PKG_MIRROR_HASH:=c19c5ae2c583aee69a66f35140bd41336ec4944fa6e99e3a47498d5c50aeaf11
-PKG_VERSION:=0.10.2-git-20170419-$(PKG_SOURCE_VERSION)
+PKG_VERSION:=0.10.2-git-20170608-$(PKG_SOURCE_VERSION)
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
CONFLICTS_fs-mysql:=gnunet-fs-pgsql gnunet-fs-sqlite
DEPENDS_pgsql:=+libpq
-LIB_pgsql:=postgres pq
+LIB_pgsql:=pq
DEPENDS_dhtcache-pgsql:=+gnunet-pgsql
PLUGIN_dhtcache-pgsql:=datacache_postgres
$(eval $(call BuildPackage,gnunet))
$(eval $(call BuildComponent,conversation,conversation component,))
$(eval $(call BuildComponent,datastore,data storage components,))
-$(eval $(call BuildComponent,dv,distance-vector routing component,y))
+# $(eval $(call BuildComponent,dv,distance-vector routing component,y))
$(eval $(call BuildComponent,experiments,experimental components,))
$(eval $(call BuildComponent,fs,file-sharing components,))
$(eval $(call BuildComponent,gns,name resolution components,y))
include $(TOPDIR)/rules.mk
PKG_NAME:=gnurl
-PKG_VERSION:=7.53.1
+PKG_VERSION:=7.54.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://gnunet.org/sites/default/files
-PKG_HASH:=cdac891a3253022b7fd75f6c71b279b5f35cc109f0b61d8068c79bca081802aa
+PKG_HASH:=4481f50a6c2bf3f1e161743333cb1bafea29dffc3cf535137bba2428ca90eb6b
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=COPYING
+++ /dev/null
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -153,7 +153,7 @@ CLEANFILES = $(VC6_LIBDSP) $(VC6_SRCDSP)
- bin_SCRIPTS = gnurl-config
-
- SUBDIRS = lib src include
--DIST_SUBDIRS = $(SUBDIRS) tests packages docs scripts
-+DIST_SUBDIRS = $(SUBDIRS) packages
-
- pkgconfigdir = $(libdir)/pkgconfig
- pkgconfig_DATA = libgnurl.pc
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -612,7 +612,7 @@ CLEANFILES = $(VC6_LIBDSP) $(VC6_SRCDSP)
-
- bin_SCRIPTS = gnurl-config
- SUBDIRS = lib src include
--DIST_SUBDIRS = $(SUBDIRS) tests packages docs scripts
-+DIST_SUBDIRS = $(SUBDIRS) packages
- pkgconfigdir = $(libdir)/pkgconfig
- pkgconfig_DATA = libgnurl.pc
- LIB_VAUTH_CFILES = vauth/vauth.c vauth/cleartext.c vauth/cram.c \
PKG_LICENSE_FILES:=COPYING
PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL=https://github.com/troglobit/inadyn
+PKG_SOURCE_URL:=https://github.com/troglobit/inadyn
PKG_SOURCE_SUBDIR=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=3b9ae1c22f96194232cc86ded33af9e0a1602af2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_NAME:=ipsec-tools
PKG_VERSION:=0.8.2
-PKG_RELEASE:=5
-PKG_MAINTAINER:=Noah Meyerhans <frodo@morgul.net>
+PKG_RELEASE:=6
+PKG_MAINTAINER:=Noah Meyerhans <frodo@morgul.net>, \
+ Vitaly Protsko <villy@sft.ru>
PKG_LICENSE := BSD-3-Clause
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
done
}
+manage_nonesa() {
+ local spdcmd
+ local item
+ local cout cin
+
+ if [ -z "$4" ]; then
+ $log "Bad usage of manage_nonesa"
+ errno=3; return 3
+ fi
+
+ case "$1" in
+ add|up|1) spdcmd=add ;;
+ del|down|0) spdcmd=delete ;;
+ *) errno=3; return 3 ;;
+ esac
+
+ case "$2" in
+ local|remote) ;;
+ *) errno=3; return 3 ;;
+ esac
+
+ for item in $3 ; do
+ if [ "$2" = "local" ]; then
+ cout="$4 $item"
+ cin="$item $4"
+ else
+ cout="$item $4"
+ cin="$4 $item"
+ fi
+ echo "
+spd$spdcmd $cout any -P out none;
+spd$spdcmd $cin any -P in none;
+" | /usr/sbin/setkey -c 1>&2
+ done
+}
. /lib/functions/network.sh
option p2_proposal 'example_prop2'
option local_net '192.168.8.0/24'
option remote_net '192.168.1.0/24'
+# you can exclude some local or remote
+# addresses from SA rules
+ list local_exclude '192.168.8.0/30'
+ list remote_exclude '192.168.1.128/29'
config sainfo 'welcome'
option p2_proposal 'example_in2'
echo -e " split_network include $locnet;\n}" >> $conf
elif [ -z "$client" ]; then
- manage_sa add $locnet $remnet $remote
+ config_list_foreach "$1" remote_exclude manage_nonesa add remote "$locnet"
+ config_list_foreach "$1" local_exclude manage_nonesa add local "$remnet"
+ manage_sa add "$locnet" "$remnet" $remote
test $? -gt 0 -o $errno -gt 0 && return $errno
- manage_fw add $confIntZone $confExtZone $remnet
+ manage_fw add $confIntZone $confExtZone "$remnet"
fi
}
errno=4; return 4
fi
- manage_sa del $locnet $remnet $2
- manage_fw del $confIntZone $confExtZone $remnet
+ config_list_foreach "$1" remote_exclude manage_nonesa del remote "$locnet"
+ config_list_foreach "$1" local_exclude manage_nonesa del local "$remnet"
+ manage_sa del "$locnet" "$remnet" $2
+ manage_fw del $confIntZone $confExtZone "$remnet"
}
destroy_tunnel() {
include $(TOPDIR)/rules.mk
PKG_NAME:=irssi
-PKG_VERSION:=1.0.2
-PKG_RELEASE:=2
+PKG_VERSION:=1.0.3
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=https://github.com/irssi/irssi/releases/download/1.0.2/
-PKG_HASH:=5c1c3cc2caf103aad073fadeb000e0f8cb3b416833a7f43ceb8bd9fcf275fbe9
+PKG_SOURCE_URL:=https://github.com/irssi/irssi/releases/download/1.0.3/
+PKG_HASH:=838220297dcbe7c8c42d01005059779a82f5b7b7e7043db37ad13f5966aff581
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
endef
define Package/isc-dhcp-server-$(BUILD_VARIANT)/install
- $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc
- $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/init.d
+ $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/init.d $(1)/etc/uci-defaults
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/dhcpd $(1)/usr/sbin
$(INSTALL_BIN) ./files/dhcpd.init $(1)/etc/init.d/dhcpd
- $(INSTALL_BIN) ./files/dhcpd.conf $(1)/etc
+ $(INSTALL_BIN) ./files/dhcpd.defaults $(1)/etc/uci-defaults
ifeq ($(BUILD_VARIANT),ipv6)
$(INSTALL_BIN) ./files/dhcpd6.init $(1)/etc/init.d/dhcpd6
$(INSTALL_BIN) ./files/dhcpd6.conf $(1)/etc
+++ /dev/null
-# dhcpd.conf
-
-authoritative;
-
-default-lease-time 3600;
-max-lease-time 86400;
-
-option domain-name-servers 192.168.1.1;
-
-subnet 192.168.1.0 netmask 255.255.255.0 {
- range 192.168.1.10 192.168.1.50;
- option routers 192.168.1.1;
-}
--- /dev/null
+#!/bin/sh
+uci -q get dhcp.isc_dhcpcd && exit 0
+touch /etc/config/dhcp
+
+uci batch <<EOF
+set dhcp.isc_dhcpd=isc_dhcpd
+set dhcp.isc_dhcpd.authoritative='1'
+set dhcp.isc_dhcpd.default_lease_time='3600'
+set dhcp.isc_dhcpd.max_lease_time='86400'
+commit dhcp
+EOF
#!/bin/sh /etc/rc.common
-START=65
+START=19
+USE_PROCD=1
+PROG=/usr/sbin/dhcpd
lease_file=/tmp/dhcpd.leases
-config_file=/etc/dhcpd.conf
-pid_file=/var/run/dhcpd.pid
+config_file=/tmp/run/dhcpd.conf
-start() {
- if [ ! -e $lease_file ]; then
- touch $lease_file
- fi
+time2seconds() {
+ local timestring=$1
+ local multiplier number suffix
+
+ suffix="${timestring//[0-9 ]}"
+ number="${timestring%%$suffix}"
+ [ "$number$suffix" != "$timestring" ] && return 1
+ case "$suffix" in
+ "" | s)
+ multiplier=1
+ ;;
+ m)
+ multiplier=60
+ ;;
+ h)
+ multiplier=3600
+ ;;
+ d)
+ multiplier=86400
+ ;;
+ w)
+ multiplier=604800
+ ;;
+ *)
+ return 1
+ ;;
+ esac
+ echo $(( number * multiplier ))
+}
- /usr/sbin/dhcpd -q -cf $config_file -lf $lease_file -pf $pid_file $dhcp_ifs
+# duplicated from dnsmasq init script
+hex_to_hostid() {
+ local var="$1"
+ local hex="${2#0x}" # strip optional "0x" prefix
- if [ $? -ne 0 ]; then
+ if [ -n "${hex//[0-9a-fA-F]/}" ]; then
+ # is invalid hex literal
return 1
fi
+
+ # convert into host id
+ export "$var=$(
+ printf "%0x:%0x" \
+ $(((0x$hex >> 16) % 65536)) \
+ $(( 0x$hex % 65536))
+ )"
+
+ return 0
}
-stop() {
- if [ ! -e $pid_file ]; then
- return 1
+static_host_add() {
+ local cfg="$1"
+ local broadcast hostid macn macs mac name ip leasetime
+
+ config_get macs "$cfg" "mac"
+ [ -n "$macs" ] || return 0
+ config_get name "$cfg" "name"
+ [ -n "$name" ] || return 0
+ config_get ip "$cfg" "ip"
+ [ -n "$ip" ] || return 0
+
+ config_get_bool broadcast "$cfg" "broadcast" 0
+ config_get dns "$cfg" "dns"
+ config_get gateway "$cfg" "gateway"
+ config_get leasetime "$cfg" "leasetime"
+ if [ -n "$leasetime" ] ; then
+ leasetime="$(time2seconds "$leasetime")"
+ [ "$?" -ne 0 ] && return 1
+ fi
+
+ config_get hostid "$cfg" "hostid"
+ if [ -n "$hostid" ] ; then
+ hex_to_hostid hostid "$hostid" || return 1
fi
- kill -9 `cat $pid_file`
+ macn=0
+ for mac in $macs; do
+ macn=$(( macn + 1 ))
+ done
- if [ $? -ne 0 ]; then
- return 1
+ for mac in $macs; do
+ local secname="$name"
+ if [ $macn -gt 1 ] ; then
+ secname="${name}-${mac//:}"
+ fi
+ echo "host $secname {"
+ echo " hardware ethernet $mac;"
+ echo " fixed-address $ip;"
+ echo " option host-name \"$name\";"
+ if [ "$broadcast" -eq 1 ] ; then
+ echo " always-broadcast true;"
+ fi
+ if [ -n "$leasetime" ] ; then
+ echo " default-lease-time $leasetime;"
+ echo " max-lease-time $leasetime;"
+ fi
+ if [ -n "$hostid" ] ; then
+ echo " option dhcp-client-identifier $hostid;"
+ fi
+ if [ -n "$dns" ] ; then
+ echo " option domain-name-servers $dns;"
+ fi
+ if [ -n "$gateway" ] ; then
+ echo " option routers $gateway;"
+ fi
+ echo "}"
+ done
+}
+
+static_hosts() {
+ config_foreach static_host_add host "$@"
+}
+
+gen_dhcp_subnet() {
+ echo "subnet $NETWORK netmask $NETMASK {"
+ echo " range $START $END;"
+ echo " option subnet-mask $netmask;"
+ if [ "$BROADCAST" != "0.0.0.0" ] ; then
+ echo " option broadcast-address $BROADCAST;"
+ fi
+ if [ "$dynamicdhcp" -eq 0 ] ; then
+ if [ "$authoritative" -eq 1 ] ; then
+ echo " deny unknown-clients;"
+ else
+ echo " ignore unknown-clients;"
+ fi
fi
+ if [ -n "$leasetime" ] ; then
+ echo " default-lease-time $leasetime;"
+ echo " max-lease-time $leasetime;"
+ fi
+ echo " option routers $gateway;"
+ echo " option domain-name-servers $DNS;"
+ echo "}"
+}
+
+dhcpd_add() {
+ local cfg="$1"
+ local dhcp6range="::"
+ local dynamicdhcp end gateway ifname ignore leasetime limit net netmask
+ local proto networkid start subnet
+ local IP NETMASK BROADCAST NETWORK PREFIX DNS START END
+
+ config_get_bool ignore "$cfg" "ignore" 0
+ [ "$ignore" = "0" ] || return 0
+
+ config_get net "$cfg" "interface"
+ [ -n "$net" ] || return 0
+
+ config_get start "$cfg" "start"
+ [ -n "$start" ] || return 0
+
+ config_get limit "$cfg" "limit"
+ [ -n "$limit" ] || return 0
+
+ network_get_subnet subnet "$net" || return 0
+ network_get_device ifname "$net" || return 0
+ network_get_protocol proto "$net" || return 0
+
+ [ static = "$proto" ] || return 0
+
+ config_get_bool dynamicdhcp "$cfg" "dynamicdhcp" 1
+
+ dhcp_ifs="$dhcp_ifs $ifname"
+
+ eval "$(ipcalc.sh $subnet $start $limit)"
+
+ config_get netmask "$cfg" "netmask" "$NETMASK"
+ config_get leasetime "$cfg" "leasetime"
+ if [ -n "$leasetime" ] ; then
+ leasetime="$(time2seconds "$leasetime")"
+ [ "$?" -ne 0 ] && return 1
+ fi
+
+ if network_get_dnsserver dnsserver "$net" ; then
+ for dnsserv in $dnsserver ; do
+ DNS="$DNS${DNS:+, }$dnsserv"
+ done
+ else
+ DNS="$IP"
+ fi
+
+ if ! network_get_gateway gateway "$net" ; then
+ gateway="$IP"
+ fi
+
+ gen_dhcp_subnet >> $config_file
+}
+
+general_config() {
+ local always_broadcast boot_unknown_clients log_facility
+ local default_lease_time max_lease_time
+ config_get_bool always_broadcast "isc_dhcpd" "always_broadcast" 0
+ config_get_bool authoritative "isc_dhcpd" "authoritative" 1
+ config_get_bool boot_unknown_clients "isc_dhcpd" "boot_unknown_clients" 1
+ config_get default_lease_time "isc_dhcpd" "default_lease_time" 3600
+ config_get max_lease_time "isc_dhcpd" "max_lease_time" 86400
+ config_get log_facility "isc_dhcpd" "log_facility"
+
+ [ $always_broadcast -eq 1 ] && echo "always-broadcast true;"
+ [ $authoritative -eq 1 ] && echo "authoritative;"
+ [ $boot_unknown_clients -eq 0 ] && echo "boot-unknown-clients false;"
+
+ default_lease_time="$(time2seconds "$default_lease_time")"
+ [ "$?" -ne 0 ] && return 1
+ max_lease_time="$(time2seconds "$max_lease_time")"
+ [ "$?" -ne 0 ] && return 1
+
+ if [ -n "$log_facility" ] ; then
+ echo "log-facility $log_facility;"
+ fi
+ echo "default-lease-time $default_lease_time;"
+ echo "max-lease-time $max_lease_time;"
+}
+
+start_service() {
+ if [ -n "$DHCPD_BOOT" ] ; then
+ return 0
+ fi
+
+ if [ ! -e $lease_file ] ; then
+ touch $lease_file
+ fi
+
+ dhcp_ifs=""
+
+ if [ -e "/etc/dhcpd.conf" ] ; then
+ config_file="/etc/dhcpd.conf"
+ else
+ . /lib/functions/network.sh
+
+ config_load dhcp
+ local authoritative
+ general_config > $config_file
+
+ config_foreach dhcpd_add dhcp
+
+ static_hosts >> $config_file
+
+ [ -z "$dhcp_ifs" ] && return 0
+ fi
+
+ procd_open_instance
+ procd_set_param command $PROG -q -f -cf $config_file -lf $lease_file $dhcp_ifs
+ procd_close_instance
+}
+
+boot() {
+ DHCPD_BOOT=1
+ start "$@"
+}
- rm $pid_file
+service_triggers()
+{
+ procd_add_reload_trigger "dhcp"
+ procd_add_raw_trigger "interface.*" 3000 /etc/init.d/dhcpd reload
}
PKG_NAME:=lighttpd
PKG_VERSION:=1.4.45
-PKG_RELEASE:=3
+PKG_RELEASE:=5
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://download.lighttpd.net/lighttpd/releases-1.4.x
#!/bin/sh /etc/rc.common
# Copyright (C) 2006-2011 OpenWrt.org
-SERVICE_USE_PID=1
-
START=50
+STOP=50
+
+USE_PROCD=1
+PROG=/usr/sbin/lighttpd
-start() {
+validate_conf() {
+ $PROG -tt -f /etc/lighttpd/lighttpd.conf >/dev/null 2>&1 || {
+ echo "validation failed"
+ return 1
+ }
+}
+
+start_service() {
user_exists http || user_add http
[ -d /var/log/lighttpd ] || {
mkdir -m 0775 -p /var/log/lighttpd
chgrp www-data /var/log/lighttpd
}
- service_start /usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf
-}
-stop() {
- service_stop /usr/sbin/lighttpd
-}
+ validate_conf || exit 1
-restart() {
- /usr/sbin/lighttpd -tt -f /etc/lighttpd/lighttpd.conf || exit 1
- stop
- start
+ procd_open_instance
+ procd_set_param command $PROG -D -f /etc/lighttpd/lighttpd.conf
+ procd_close_instance
}
PKG_NAME:=linuxptp
PKG_VERSION:=1.8
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_MAINTAINER:=Wojciech Dubowik <Wojciech.Dubowik@neratec.com>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
--- /dev/null
+From 60db5d0b0fd8be9afede7e8a14e708f5429f2023 Mon Sep 17 00:00:00 2001
+From: Florian Fainelli <f.fainelli@gmail.com>
+Date: Sun, 7 May 2017 11:16:06 -0700
+Subject: [PATCH] udp: Avoid including netdb.h
+
+netdb.h pulls in a large chain of include files:
+rpc/netdb.h
+rpc/types.h
+
+rpc/types.h re-defines TRUE/FALSE and does it in this way:
+
+ #ifndef FALSE
+ # define FALSE (0)
+ #endif
+
+ #ifndef TRUE
+ # define TRUE (1)
+ #endif
+
+And this later causes build problems that appear in this way:
+
+mipsel-linux-gnu-gcc -Wall -DVER=1.8 -D_GNU_SOURCE -DHAVE_CLOCK_ADJTIME
+-DHAVE_POSIX_SPAWN -DHAVE_ONESTEP_SYNC -Os -pipe -mno-branch-likely
+-mips32r2 -mtune=24kc -fno-caller-saves -Wno-unused-result
+-D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro
+-I/home/florian/dev/openwrt/trunk/staging_dir/target-mipsel-unknown-linux-gnu_glibc/usr/include
+-I/home/florian/dev/openwrt/trunk/staging_dir/target-mipsel-unknown-linux-gnu_glibc/include
+-I/home/florian/dev/toolchains/stbgcc-4.8-1.5/usr/include
+-I/home/florian/dev/toolchains/stbgcc-4.8-1.5/include
+-DHAVE_CLOCK_ADJTIME -DHAVE_POSIX_SPAWN -DHAVE_ONESTEP_SYNC -c -o
+udp.o udp.c
+In file included from
+/home/florian/dev/openwrt/trunk/staging_dir/target-mipsel-unknown-linux-gnu_glibc/usr/include/rpc/netdb.h:45:0,
+ from
+/home/florian/dev/toolchains/stbgcc-4.8-1.5/mipsel-linux-gnu/sys-root/usr/include/netdb.h:32,
+ from udp.c:23:
+pdt.h:25:7: error: expected identifier before '(' token
+ enum {FALSE, TRUE};
+ ^
+<builtin>: recipe for target 'udp.o' failed
+
+Upon inspection, it does not appear that netdb.h is providing any useful
+definition or declaration, so let's just remove its inclusion.
+
+Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
+---
+ udp.c | 1 -
+ udp6.c | 1 -
+ 2 files changed, 2 deletions(-)
+
+diff --git a/udp.c b/udp.c
+index 6dabc31836fe..530a2ee3748d 100644
+--- a/udp.c
++++ b/udp.c
+@@ -20,7 +20,6 @@
+ #include <errno.h>
+ #include <fcntl.h>
+ #include <net/if.h>
+-#include <netdb.h>
+ #include <netinet/in.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+diff --git a/udp6.c b/udp6.c
+index c229cac0c41c..89e27bf9e863 100644
+--- a/udp6.c
++++ b/udp6.c
+@@ -20,7 +20,6 @@
+ #include <errno.h>
+ #include <fcntl.h>
+ #include <net/if.h>
+-#include <netdb.h>
+ #include <netinet/in.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+--
+2.11.0
+
include $(TOPDIR)/rules.mk
PKG_NAME:=miniupnpc
-PKG_VERSION:=2.0.20161216
+PKG_VERSION:=2.0.20170509
PKG_RELEASE:=1
PKG_SOURCE_URL:=http://miniupnp.free.fr/files
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=01e14408d6fc628de9afabc4417b84adeaba4c0ec517e7b8e278cb2993dafd3e
+PKG_HASH:=d3c368627f5cdfb66d3ebd64ca39ba54d6ff14a61966dbecb8dd296b7039f16a
PKG_MAINTAINER:=Steven Barth <cyrus@openwrt.org>
PKG_INSTALL:=1
--- a/Makefile
+++ b/Makefile
-@@ -151,8 +151,8 @@ installpythonmodule3: pythonmodule3
+@@ -187,8 +187,8 @@ installpythonmodule3: pythonmodule3
python3 setup.py install
validateminixml: minixmlvalid
--- a/upnpcommands.c
+++ b/upnpcommands.c
-@@ -367,7 +367,7 @@ UPNP_AddPortMapping(const char * control
+@@ -370,7 +370,7 @@ UPNP_AddPortMapping(const char * control
AddPortMappingArgs[5].elt = "NewEnabled";
AddPortMappingArgs[5].val = "1";
AddPortMappingArgs[6].elt = "NewPortMappingDescription";
+ AddPortMappingArgs[6].val = desc?desc:"miniupnpc";
AddPortMappingArgs[7].elt = "NewLeaseDuration";
AddPortMappingArgs[7].val = leaseDuration?leaseDuration:"0";
- if(!(buffer = simpleUPnPcommand(-1, controlURL, servicetype,
+ buffer = simpleUPnPcommand(-1, controlURL, servicetype,
include $(TOPDIR)/rules.mk
PKG_NAME:=mosquitto
-PKG_VERSION:=1.4.11
-PKG_RELEASE:=2
+PKG_VERSION:=1.4.12
+PKG_RELEASE:=1
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE.txt
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://mosquitto.org/files/source/
-PKG_HASH:=ca47533bbc1b7c5e15d6e5d96d3efc59677f2515b6692263c34b7c48f33280c5
+PKG_HASH:=b12e2353f92cb76882ce7b7bddfea022b461b38cbe6e7fb7c969d0daeb379cf7
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk
$(INSTALL_BIN) $(PKG_BUILD_DIR)/client/mosquitto_pub $(1)/usr/bin/mosquitto_pub
$(INSTALL_BIN) $(PKG_BUILD_DIR)/client/mosquitto_sub $(1)/usr/bin/mosquitto_sub
endef
-Package/mosquitto-client-nossl/install = $(Package/mosquitto-client/install)
+Package/mosquitto-client-nossl/install = $(Package/mosquitto-client-ssl/install)
# This installs files into ./staging_dir/. so that you can cross compile from the host
define Build/InstallDev
+++ /dev/null
-commit f095176610597c8e95481a400375a742f2e96a3a
-Author: Karl Palsson <karlp@etactica.com>
-Date: Fri May 5 09:57:37 2017 +0000
-
- [344] Only link libanl when WITH_ADNS=yes
-
- Removes the hard link of libanl for Linux, leaving the protected link
- when WITH_ADNS is specified.
-
- Fixes: 433ee5c4d6852b507b43eae9c9a2c9028c6b48e5
-
- Signed-off-by: Karl Palsson <karlp@etactica.com>
-
-diff --git a/config.mk b/config.mk
-index 6e369c2..44639d2 100644
---- a/config.mk
-+++ b/config.mk
-@@ -159,10 +159,6 @@ ifeq ($(UNAME),QNX)
- LIB_LIBS:=$(LIB_LIBS) -lsocket
- endif
-
--ifeq ($(UNAME),Linux)
-- BROKER_LIBS:=$(BROKER_LIBS) -lanl
--endif
--
- ifeq ($(WITH_WRAP),yes)
- BROKER_LIBS:=$(BROKER_LIBS) -lwrap
- BROKER_CFLAGS:=$(BROKER_CFLAGS) -DWITH_WRAP
include $(TOPDIR)/rules.mk
PKG_NAME:=mwan3
-PKG_VERSION:=2.5.1
+PKG_VERSION:=2.5.2
PKG_RELEASE:=5
PKG_MAINTAINER:=Florian Eckert <fe@dev.tdt.de>
PKG_LICENSE:=GPLv2
[ -n "$DEVICE" ] || exit 3
fi
-[ -x /usr/bin/ip ] || exit 4
-[ -x /usr/sbin/ipset ] || exit 5
-[ -x /usr/sbin/iptables ] || exit 6
-[ -x /usr/sbin/ip6tables ] || exit 7
-[ -x /usr/bin/logger ] || exit 8
-
mwan3_set_connected_iptables
config_load mwan3
#!/bin/sh
-IP4="/usr/bin/ip -4"
-IP6="/usr/bin/ip -6"
-IPS="/usr/sbin/ipset"
-IPT4="/usr/sbin/iptables -t mangle -w"
-IPT6="/usr/sbin/ip6tables -t mangle -w"
-LOG="/usr/bin/logger -t mwan3 -p"
+IP4="ip -4"
+IP6="ip -6"
+IPS="ipset"
+IPT4="iptables -t mangle -w"
+IPT6="ip6tables -t mangle -w"
+LOG="logger -t mwan3 -p"
CONNTRACK_FILE="/proc/net/nf_conntrack"
mwan3_get_iface_id()
}
config_list_foreach $1 track_ip mwan3_list_track_ips
- if [ -e /var/run/mwan3track-$1.pid ] ; then
- kill $(cat /var/run/mwan3track-$1.pid) &> /dev/null
- fi
-
+ kill $(pgrep -f "mwan3track $1") &> /dev/null
if [ -n "$track_ips" ]; then
[ -x /usr/sbin/mwan3track ] && /usr/sbin/mwan3track $1 $2 $track_ips &
fi
mwan3_track_signal()
{
- local pid status
+ local pid
- if [ -f "/var/run/mwan3track-${1}.pid" ]; then
- pid="$(cat "/var/run/mwan3track-${1}.pid")"
- status="$(pgrep -f mwan3track | grep "${pid}")"
- if [ "${status}" != "" ]; then
- kill -USR1 "${pid}"
- else
- $LOG warn "Unable to send signal USR1 to mwan3track on interface $1 with pid ${pid}"
- fi
+ pid="$(pgrep -f "mwan3track $1")"
+ if [ "${pid}" != "" ]; then
+ kill -USR1 "${pid}"
else
- $LOG warn "Unable to find \"/var/run/mwan3track-${1}.pid\" file for mwan3track on interface $1"
+ $LOG warn "Unable to send signal USR1 to mwan3track on interface $1 with pid ${pid}"
fi
}
MWAN3_STATUS_DIR="/var/run/mwan3track"
MWAN3_PID_FILE="/var/run/mwan3track"
-IPS="/usr/sbin/ipset"
-IPT4="/usr/sbin/iptables -t mangle -w"
-IPT6="/usr/sbin/ip6tables -t mangle -w"
+IPS="ipset"
+IPT4="iptables -t mangle -w"
+IPT6="ip6tables -t mangle -w"
report_connected_v4() {
local address
local iface="${1}"
local iface_select="${2}"
local running="0"
- local pid=""
- local status=""
+ local pid
if [ "${iface}" = "${iface_select}" ] || [ "${iface_select}" = "" ]; then
- if [ -f "${MWAN3_PID_FILE}-${iface}.pid" ]; then
- pid="$(cat "${MWAN3_PID_FILE}-${iface}.pid")"
- status="$(pgrep -f mwan3track | grep "${pid}")"
- if [ "${status}" != "" ]; then
- running="1"
- fi
+ pid="$(pgrep -f "mwan3track $iface_selected")"
+ if [ "${pid}" != "" ]; then
+ running="1"
fi
json_add_object "${iface}"
#!/bin/sh
-[ -x /usr/bin/ip ] || exit 4
-[ -x /usr/sbin/ipset ] || exit 5
-[ -x /usr/sbin/iptables ] || exit 6
-[ -x /usr/sbin/ip6tables ] || exit 7
-[ -x /usr/bin/logger ] || exit 8
-
. /lib/functions.sh
. /lib/functions/network.sh
. /lib/mwan3/mwan3.sh
ACTION=ifdown INTERFACE=$1 /sbin/hotplug-call iface
- if [ -e /var/run/mwan3track-$1.pid ] ; then
- kill $(cat /var/run/mwan3track-$1.pid)
- fi
+ kill $(pgrep -f "mwan3track $1") &> /dev/null
}
ifup()
. /lib/functions.sh
-LOG="/usr/bin/logger -t $(basename "$0")[$$] -p"
+LOG="logger -t $(basename "$0")[$$] -p"
INTERFACE=""
DEVICE=""
clean_up() {
$LOG notice "Stopping mwan3track for interface \"${INTERFACE}\""
- rm "/var/run/mwan3track-${INTERFACE}.pid" &> /dev/null
- rm -rf "/var/run/mwan3track/${INTERFACE}" &> /dev/null
+ if [ "$(pgrep -f "mwan3track ${INTERFACE}")" = "" ]; then
+ rm -rf "/var/run/mwan3track/${INTERFACE}" &> /dev/null
+ fi
if [ -z "$(ls -A "/var/run/mwan3track")" ]; then
rm -rf "/var/run/mwan3track"
fi
INTERFACE=$1
DEVICE=$2
- echo "$$" > /var/run/mwan3track-$1.pid
mkdir -p /var/run/mwan3track/$1
trap clean_up SIGINT SIGTERM
trap if_down SIGUSR1
if [ $score -eq $up ]; then
$LOG notice "Interface $1 ($2) is online"
env -i ACTION=ifup INTERFACE=$1 DEVICE=$2 /sbin/hotplug-call iface
- rm /var/run/mwan3track-$1.pid
rm -rf "/var/run/mwan3track/${1}" &> /dev/null
exit 0
fi
fi
let turn++
+ mkdir -p "/var/run/mwan3track/${1}"
echo "${lost}" > /var/run/mwan3track/$1/LOST
echo "${score}" > /var/run/mwan3track/$1/SCORE
echo "${turn}" > /var/run/mwan3track/$1/TURN
PKG_NAME:=net-snmp
PKG_VERSION:=5.7.3
-PKG_RELEASE:=4
+PKG_RELEASE:=5
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/net-snmp
# option engineid 'LEDE'
option engineidtype '3'
option engineidnic 'eth0'
+
+config snmpd general
+# list network 'wan'
[ -n "$engineidnic" ] && echo "engineIDNic $engineidnic" >> $CONFIGFILE
}
+snmpd_setup_fw_rules() {
+ local net="$1"
+ local zone
+
+ zone=$(fw3 -q network "$net" 2>/dev/null)
+
+ local handled_zone
+ for handled_zone in $HANDLED_SNMP_ZONES; do
+ [ "$handled_zone" = "$zone" ] && return
+ done
+
+ json_add_object ""
+ json_add_string type rule
+ json_add_string src "$zone"
+ json_add_string proto udp
+ json_add_string dest_port 161
+ json_add_string target ACCEPT
+ json_close_object
+
+ HANDLED_SNMP_ZONES="$HANDLED_SNMP_ZONES $zone"
+}
+
start_service() {
[ -f "$CONFIGFILE" ] && rm -f "$CONFIGFILE"
procd_append_param netdev "$iface"
done
+ procd_open_data
+
+ json_add_array firewall
+ config_list_foreach general network snmpd_setup_fw_rules
+ json_close_array
+
+ procd_close_data
+
procd_close_instance
}
include $(TOPDIR)/rules.mk
PKG_NAME:=netatalk
-PKG_VERSION:=3.1.10
-PKG_RELEASE:=1
+PKG_VERSION:=3.1.11
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@SF/netatalk
-PKG_MD5SUM:=2b40161985bb32cff5660bf689a4704f15c33bb87565efc7805dd5c75ad1fcc7
+PKG_HASH:=3434472ba96d3bbe3b024274438daad83b784ced720f7662a4c1d0a1078799a6
PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
DEPENDS:=+libattr +libdb47 +libgcrypt +libopenssl $(LIBRPC_DEPENDS)
TITLE:=netatalk
URL:=http://netatalk.sourceforge.net
- MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
+ MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
endef
define Package/netatalk/decription
Protocol Suite.
endef
-define Package/netatalk/conffiles
-/etc/netatalk/afpd.conf
-endef
-
TARGET_CFLAGS += -std=gnu99
TARGET_LDFLAGS += $(LIBRPC)
$(CP) $(PKG_INSTALL_DIR)/usr/sbin/cnid_dbd $(1)/usr/sbin/
$(CP) $(PKG_INSTALL_DIR)/usr/sbin/cnid_metad $(1)/usr/sbin/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/uams/*.so $(1)/usr/lib/uams/
- $(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/afp.conf $(1)/etc/
- $(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/extmap.conf $(1)/etc/
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/afp.conf $(1)/etc/
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/extmap.conf $(1)/etc/
$(INSTALL_BIN) ./files/afpd.init $(1)/etc/init.d/afpd
endef
--- /dev/null
+if PACKAGE_netopeer2-keystored
+
+config SSH_KEYS
+ bool "Generate default ssh keys"
+ default y
+
+endif
--- /dev/null
+if PACKAGE_netopeer2-server
+
+config SSH_SERVER
+ bool "Install the default ssh server (openssh-server)"
+ default y
+
+endif
--- /dev/null
+#
+# Copyright (C) 2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+# Warning by default OpenWrt does not have a root password which is necessery for NETCONF server.
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=netopeer2
+
+PKG_LICENSE:=BSD-3-Clause
+PKG_MAINTAINER:=Mislav Novakovic <mislav.novakovic@sartura.hr>
+
+PKG_VERSION:=0.3.65
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_VERSION:=c204b59f9c2bb7e63eb907f33c44adbf208295ee
+PKG_MIRROR_HASH:=61a2b3e0ee9a3cf2f73715843f059c79292446ad3643f4eeb85d48d1e185c3b9
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.bz2
+PKG_SOURCE_URL:=https://github.com/CESNET/Netopeer2.git
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_SOURCE_VERSION)
+
+PKG_BUILD_ROOT:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
+PKG_BUILD_DIR:=$(PKG_BUILD_ROOT)
+
+PKG_BUILD_PARALLEL:=1
+PKG_INSTALL:=1
+
+CMAKE_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/netopeer2-server/config
+ source "$(SOURCE)/Config_server.in"
+endef
+
+define Package/netopeer2-keystored/config
+ source "$(SOURCE)/Config_keystored.in"
+endef
+
+define Package/netopeer2-server
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=NETCONF server
+ URL:=$(PKG_SOURCE_URL)
+ DEPENDS:=+libpthread +libyang +libnetconf2 +netopeer2-keystored +libsysrepo +sysrepocfg +sysrepoctl +sysrepo +SSH_SERVER:openssh-server
+ MENU:=1
+endef
+
+define Package/netopeer2-cli
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=Netopeer2 cli tool
+ URL:=$(PKG_SOURCE_URL)
+ DEPENDS:=+libpthread +libyang +libnetconf2 +libopenssl
+endef
+
+define Package/netopeer2-keystored
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=Netopeer2 key store management
+ URL:=$(PKG_SOURCE_URL)
+ DEPENDS:=+libopenssl +libsysrepo +sysrepo +sysrepocfg +sysrepoctl +SSH_KEYS:openssh-keygen +SSH_KEYS:openssl-util
+ MENU:=1
+endef
+
+define Package/netopeer2/description
+ 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.
+endef
+
+CMAKE_OPTIONS += \
+ -DCMAKE_INSTALL_PREFIX:PATH=/usr \
+ -DCMAKE_BUILD_TYPE:STRING=Release \
+ -DKEYSTORED_KEYS_DIR:STRING=/etc/keystored/keys
+
+define Build/Configure
+ $(eval PKG_BUILD_DIR:=$(PKG_BUILD_ROOT)/server)
+ $(call Build/Configure/Default)
+
+ $(eval PKG_BUILD_DIR:=$(PKG_BUILD_ROOT)/cli)
+ $(call Build/Configure/Default)
+
+ $(eval PKG_BUILD_DIR:=$(PKG_BUILD_ROOT)/keystored)
+ $(call Build/Configure/Default)
+endef
+
+define Build/Compile
+ $(eval PKG_BUILD_DIR:=$(PKG_BUILD_ROOT)/server)
+ $(call Build/Compile/Default)
+
+ $(eval PKG_BUILD_DIR:=$(PKG_BUILD_ROOT)/cli)
+ $(call Build/Compile/Default)
+
+ $(eval PKG_BUILD_DIR:=$(PKG_BUILD_ROOT)/keystored)
+ $(call Build/Compile/Default)
+endef
+
+define Package/netopeer2-server/install
+ $(INSTALL_DIR) $(1)/bin
+ $(INSTALL_BIN) $(PKG_BUILD_ROOT)/server/netopeer2-server $(1)/bin/
+
+ $(INSTALL_DIR) $(1)/etc/sysrepo/yang
+ $(INSTALL_DATA) $(PKG_BUILD_ROOT)/modules/ietf-ssh-server.yang $(1)/etc/sysrepo/yang/
+ $(INSTALL_DATA) $(PKG_BUILD_ROOT)/modules/ietf-tls-server.yang $(1)/etc/sysrepo/yang/
+ $(INSTALL_DATA) $(PKG_BUILD_ROOT)/modules/iana-crypt-hash.yang $(1)/etc/sysrepo/yang/
+ $(INSTALL_DATA) $(PKG_BUILD_ROOT)/modules/ietf-x509-cert-to-name.yang $(1)/etc/sysrepo/yang/
+ $(INSTALL_DATA) $(PKG_BUILD_ROOT)/modules/ietf-netconf-server.yang $(1)/etc/sysrepo/yang/
+ $(INSTALL_DATA) $(PKG_BUILD_ROOT)/modules/ietf-netconf-server.yang $(1)/etc/sysrepo/yang/
+ $(INSTALL_DATA) $(PKG_BUILD_ROOT)/modules/ietf-system.yang $(1)/etc/sysrepo/yang/
+
+ $(INSTALL_DIR) $(1)/etc/uci-defaults
+ $(INSTALL_BIN) ./files/netopeer2-server.default $(1)/etc/uci-defaults/99_netopeer2-server
+
+ $(INSTALL_DIR) $(1)/etc/init.d/
+ $(INSTALL_BIN) ./files/netopeer2-server.init $(1)/etc/init.d/netopeer2-server
+
+ $(INSTALL_DIR) $(1)/usr/share/netopeer2-server
+ $(INSTALL_DATA) ./files/stock_config.xml $(1)/usr/share/netopeer2-server
+endef
+
+define Package/netopeer2-cli/install
+ $(INSTALL_DIR) $(1)/bin
+ $(INSTALL_BIN) $(PKG_BUILD_ROOT)/cli/netopeer2-cli $(1)/bin/
+endef
+
+define Package/netopeer2-keystored/install
+ $(INSTALL_DIR) $(1)/usr/lib/sysrepo/plugins/
+ $(INSTALL_BIN) $(PKG_BUILD_ROOT)/keystored/libkeystored.so $(1)/usr/lib/sysrepo/plugins/
+
+ $(INSTALL_DIR) $(1)/etc/sysrepo/yang
+ $(INSTALL_DATA) $(PKG_BUILD_ROOT)/modules/ietf-keystore.yang $(1)/etc/sysrepo/yang
+
+ $(INSTALL_DIR) $(1)/etc/uci-defaults
+
+ $(INSTALL_DIR) $(1)/etc/keystored/keys
+ifeq ($(CONFIG_SSH_KEYS),y)
+ $(INSTALL_BIN) ./files/netopeer2-keystored-keygen.default $(1)/etc/uci-defaults/97_netopeer2-keystored
+else
+ $(INSTALL_BIN) ./files/netopeer2-keystored.default $(1)/etc/uci-defaults/97_netopeer2-keystored
+ #ssh key name is specified in ./files/stock_config.xml file, you will need to provide the ssh keys yourself.
+ $(INSTALL_DATA) ./files/ssh_host_rsa_key.pem $(1)/etc/keystored/keys
+ $(INSTALL_DATA) ./files/ssh_host_rsa_key.pub.pem $(1)/etc/keystored/keys
+endif
+
+ $(INSTALL_DIR) $(1)/usr/share/netopeer2-keystored
+ $(INSTALL_DATA) $(PKG_BUILD_ROOT)/keystored/stock_key_config.xml $(1)/usr/share/netopeer2-keystored
+endef
+
+$(eval $(call BuildPackage,netopeer2-server))
+$(eval $(call BuildPackage,netopeer2-cli))
+$(eval $(call BuildPackage,netopeer2-keystored))
--- /dev/null
+#!/bin/sh
+
+# Warning, problems can occur if the device restarts in the middle of this uci-default script
+
+if [ -x /bin/sysrepoctl ]; then
+ match=$(sysrepoctl -l | grep "ietf-keystore\ ")
+ if [ ! "$match" ]; then
+ sysrepoctl --install --yang=/etc/sysrepo/yang/ietf-keystore.yang -o root:root -p 600
+ if [ -x /bin/sysrepocfg ]; then
+ sysrepocfg -d startup -i /usr/share/netopeer2-keystored/stock_key_config.xml ietf-keystore
+ rm /usr/share/netopeer2-keystored/stock_key_config.xml
+ fi
+
+ #generate ssh keys
+ ssh-keygen -t rsa -f /tmp/ssh_host_rsa_key -N ""
+ openssl rsa -in /tmp/ssh_host_rsa_key -outform pem > /etc/keystored/keys/ssh_host_rsa_key.pem
+ openssl rsa -pubout -in /etc/keystored/keys/ssh_host_rsa_key.pem -out /etc/keystored/keys/ssh_host_rsa_key.pub.pem
+ rm /tmp/ssh_host_rsa_key
+ fi
+fi
+
+exit 0
--- /dev/null
+#!/bin/sh
+
+# Warning, problems can occur if the device restarts in the middle of this uci-default script
+
+if [ -x /bin/sysrepoctl ]; then
+ match=$(sysrepoctl -l | grep "ietf-keystore\ ")
+ if [ ! "$match" ]; then
+ sysrepoctl --install --yang=/etc/sysrepo/yang/ietf-keystore.yang -o root:root -p 600
+ if [ -x /bin/sysrepocfg ]; then
+ sysrepocfg -d startup -i /usr/share/netopeer2-keystored/stock_key_config.xml ietf-keystore
+ rm /usr/share/netopeer2-keystored/stock_key_config.xml
+ fi
+ fi
+fi
+
+exit 0
--- /dev/null
+#!/bin/sh
+
+# Warning, problems can occur if the device restarts in the middle of this uci-default script
+
+if [ -x /bin/sysrepoctl ]; then
+ match=$(sysrepoctl -l | grep "ietf-ssh-server\ ")
+ if [ ! "$match" ]; then
+ sysrepoctl --install --yang=/etc/sysrepo/yang/ietf-ssh-server.yang -p 600
+ fi
+
+ match=$(sysrepoctl -l | grep "ietf-tls-server\ ")
+ if [ ! "$match" ]; then
+ sysrepoctl --install --yang=/etc/sysrepo/yang/ietf-tls-server.yang -p 600
+ fi
+
+ match=$(sysrepoctl -l | grep "iana-crypt-hash\ ")
+ if [ ! "$match" ]; then
+ sysrepoctl --install --yang=/etc/sysrepo/yang/iana-crypt-hash.yang -p 600
+ fi
+
+ match=$(sysrepoctl -l | grep "ietf-x509-cert-to-name\ ")
+ if [ ! "$match" ]; then
+ sysrepoctl --install --yang=/etc/sysrepo/yang/ietf-x509-cert-to-name.yang -p 600
+ fi
+
+ match=$(sysrepoctl -l | grep "ietf-netconf-server\ ")
+ if [ ! "$match" ]; then
+ sysrepoctl --install --yang=/etc/sysrepo/yang/ietf-netconf-server.yang -o root:root -p 600
+ sysrepoctl -m ietf-netconf-server -e listen
+ sysrepoctl -m ietf-netconf-server -e ssh-listen
+ sysrepoctl -m ietf-netconf-server -e tls-listen
+ sysrepoctl -m ietf-netconf-server -e call-home
+ sysrepoctl -m ietf-netconf-server -e ssh-call-home
+ sysrepoctl -m ietf-netconf-server -e tls-call-home
+ if [ -x /bin/sysrepocfg ]; then
+ sysrepocfg -d startup -i /usr/share/netopeer2-server/stock_config.xml ietf-netconf-server
+ rm /usr/share/netopeer2-server/stock_config.xml
+ fi
+ fi
+
+ match=$(sysrepoctl -l | grep "ietf-system\ ")
+ if [ ! "$match" ]; then
+ sysrepoctl --install --yang=/etc/sysrepo/yang/ietf-system.yang -o root:root -p 600
+ sysrepoctl -m ietf-system -e authentication
+ sysrepoctl -m ietf-system -e local-users
+ fi
+fi
+
+exit 0
--- /dev/null
+#!/bin/sh /etc/rc.common
+
+START=99
+STOP=11
+
+USE_PROCD=1
+PROG=/bin/netopeer2-server
+
+start_service() {
+
+ PERSIST_FILE=/etc/sysrepo/data/ietf-keystore.persist
+
+ while [ ! -f $PERSIST_FILE ]
+ do
+ echo "no persist file yet"
+ sleep 3
+ done
+
+ RETRY_CNT=5
+ LAST_LINE=$(tail -n1 $PERSIST_FILE)
+
+ while [[ -f $PERSIST_FILE && $LAST_LINE != "</module>" ]]
+ do
+ sleep 1
+
+ echo "$RETRY_CNT: $LAST_LINE"
+ LAST_LINE=$(tail -n1 $PERSIST_FILE)
+ RETRY_CNT=$(($RETRY_CNT-1))
+
+ if [ $RETRY_CNT -le 0 ];
+ then
+ rm $PERSIST_FILE
+ RETRY_CNT=5
+ fi
+ done
+
+ procd_open_instance
+ procd_set_param command $PROG
+ procd_append_param command -d -v 0
+ procd_set_param respawn
+ procd_close_instance
+}
+
+stop_service()
+{
+ service_stop ${PROG}
+}
--- /dev/null
+<netconf-server xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-server">
+ <listen>
+ <endpoint>
+ <name>test_ssh_listen_endpt</name>
+ <ssh>
+ <address>::</address>
+ <port>830</port>
+ <host-keys>
+ <host-key>
+ <name>test_ssh_listen_key</name>
+ <public-key>ssh_host_rsa_key</public-key>
+ </host-key>
+ </host-keys>
+ </ssh>
+ </endpoint>
+ </listen>
+</netconf-server>
--- /dev/null
+Index: netopeer2-c204b59f9c2bb7e63eb907f33c44adbf208295ee/keystored/CMakeLists.txt
+===================================================================
+--- netopeer2-c204b59f9c2bb7e63eb907f33c44adbf208295ee.orig/keystored/CMakeLists.txt
++++ netopeer2-c204b59f9c2bb7e63eb907f33c44adbf208295ee/keystored/CMakeLists.txt
+@@ -105,6 +105,7 @@ endif()
+ install(DIRECTORY DESTINATION ${KEYSTORED_KEYS_DIR}
+ DIRECTORY_PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE)
+
++if(FALSE)
+ # install all the required modules and enable features
+ install(CODE "
+ execute_process(COMMAND ${SYSREPOCTL_EXECUTABLE} -l RESULT_VARIABLE RET OUTPUT_VARIABLE INSTALLED_MODULES ERROR_VARIABLE OUT)
+@@ -154,6 +155,7 @@ install(CODE "
+ message(FATAL_ERROR \" Command sysrepocfg import failed:\\n \${OUT}\")
+ endif()
+ endif()")
++endif()
+
+ # plugins should be installed into sysrepo plugins dir
+ install(TARGETS keystored DESTINATION ${SR_PLUGINS_DIR})
+Index: netopeer2-c204b59f9c2bb7e63eb907f33c44adbf208295ee/server/CMakeLists.txt
+===================================================================
+--- netopeer2-c204b59f9c2bb7e63eb907f33c44adbf208295ee.orig/server/CMakeLists.txt
++++ netopeer2-c204b59f9c2bb7e63eb907f33c44adbf208295ee/server/CMakeLists.txt
+@@ -147,6 +147,7 @@ include_directories(${SYSREPO_INCLUDE_DI
+ # install binary
+ install(TARGETS netopeer2-server DESTINATION ${CMAKE_INSTALL_BINDIR})
+
++if(FALSE)
+ # only for configuration
+ if (ENABLE_CONFIGURATION)
+ # find sysrepoctl
+@@ -239,6 +240,7 @@ if (ENABLE_CONFIGURATION)
+
+ endif()")
+ endif()
++endif()
+
+ # clean cmake cache
+ add_custom_target(cleancache
include $(TOPDIR)/rules.mk
PKG_NAME:=nginx
-PKG_VERSION:=1.10.3
+PKG_VERSION:=1.12.0
PKG_RELEASE:=1
PKG_SOURCE:=nginx-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://nginx.org/download/
-PKG_MD5SUM:=204a20cb4f0b0c9db746c630d89ff4ea
+PKG_HASH:=b4222e26fdb620a8d3c3a3a8b955e08b713672e1bc5198d1e4f462308a795b30
+PKG_MD5SUM:=995eb0a140455cf0cfc497e5bd7f94b3
PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
PKG_LICENSE:=2-clause BSD-like license
+ 'Y', '3', 'p', 'M', '\n'
+};
+
- int main() {
+ int main(void) {
- printf("%d", (int) sizeof($ngx_type));
+ printf("dummy use of object_code_block to avoid gc-section: %c", object_code_block[0]);
return 0;
PKG_NAME:=openconnect
PKG_VERSION:=7.08
-PKG_RELEASE:=1
+PKG_RELEASE:=3
PKG_USE_MIPS16:=0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
proto_openconnect_init_config() {
proto_config_add_string "server"
proto_config_add_int "port"
+ proto_config_add_int "mtu"
proto_config_add_string "username"
proto_config_add_string "serverhash"
proto_config_add_string "authgroup"
proto_config_add_string "password2"
proto_config_add_string "token_mode"
proto_config_add_string "token_secret"
- proto_config_add_string "interface"
proto_config_add_string "os"
proto_config_add_string "csd_wrapper"
no_device=1
proto_openconnect_setup() {
local config="$1"
- json_get_vars server port username serverhash authgroup password password2 interface token_mode token_secret os csd_wrapper
+ json_get_vars server port username serverhash authgroup password password2 token_mode token_secret os csd_wrapper mtu
grep -q tun /proc/modules || insmod tun
ifname="vpn-$config"
[ -n "$port" ] && port=":$port"
cmdline="$server$port -i "$ifname" --non-inter --syslog --script /lib/netifd/vpnc-script"
+ [ -n "$mtu" ] && cmdline="$cmdline --mtu $mtu"
# migrate to standard config files
[ -f "/etc/config/openconnect-user-cert-vpn-$config.pem" ] && mv "/etc/config/openconnect-user-cert-vpn-$config.pem" "/etc/openconnect/user-cert-vpn-$config.pem"
PKG_NAME:=openssh
PKG_VERSION:=7.5p1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/ \
$(INSTALL_DIR) $(1)/etc/ssh
chmod 0700 $(1)/etc/ssh
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/ssh/sshd_config $(1)/etc/ssh/
+ sed -r -i 's,^#(HostKey /etc/ssh/ssh_host_(rsa|ecdsa|ed25519)_key)$$$$,\1,' $(1)/etc/ssh/sshd_config
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/sshd.init $(1)/etc/init.d/sshd
$(INSTALL_DIR) $(1)/usr/sbin
-#
-# Copyright (C) 2006-2014 OpenWrt.org
-#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=opentracker
-PKG_VERSION:=20151211
-PKG_RELEASE:=2
-PKG_REV:=ba25d2b2a84a31eac2956b71cb12b4b0748b35f5
+PKG_VERSION:=20170428
+PKG_RELEASE:=1
+PKG_REV:=9c7be324f5a4306dd81eab2f982f87e2c42ffdf1
+PKG_MIRROR_HASH:=fda6098a9bdf080c852c5b513ada67d065c1286ad3d4617c05f3a3d9ebb81536
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=Beerware
PKG_NAME:=openvswitch
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_VERSION:=2.7.0
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_LICENSE:=Apache-2.0
PKG_SOURCE_URL:=http://openvswitch.org/releases/
PKG_HASH:=e492cf08a929b4a2178b7f9b01dc4ff562f44138b547b4e942078187b2445d2e
+PKG_BUILD_DEPENDS:=python-six/host
+
PKG_BUILD_PARALLEL:=1
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
define Package/openvswitch-python
$(call Package/openvswitch/Default)
TITLE:=Open vSwitch Python Support
- DEPENDS:=+openvswitch +PACKAGE_openvswitch-python:python
+ DEPENDS:=+openvswitch +python +python-six
endef
define Package/openvswitch-python/description
Provides bindings and libraries for using Python to manipulate/work with Open vSwitch.
endef
-define Package/openvswitch-ipsec
- $(call Package/openvswitch/Default)
- TITLE:=Open vSwitch GRE through IPsec tool
- DEPENDS:=+openvswitch-python
-endef
-
-define Package/openvswitch-ipsec/description
- The ovs-monitor-ipsec script provides support for encrypting GRE tunnels with
- IPsec.
-endef
-
-define Package/openvswitch-benchmark
- $(call Package/openvswitch/Default)
- TITLE:=Open vSwitch flow setup benchmark utility
- DEPENDS:=+openvswitch
-endef
-
-define Package/openvswitch-benchmark/description
- Utility for running OpenVSwitch benchmarking
-endef
-
OVS_BIN_TOOLS:=ovs-appctl ovs-ofctl ovs-dpctl ovs-vsctl ovsdb-client
define Package/openvswitch
$(call Package/openvswitch/Default)
$(CP) $(PKG_INSTALL_DIR)/usr/share/openvswitch/python/ovs/* $(1)/usr/lib/python$(PYTHON_VERSION)/ovs
endef
-define Package/openvswitch-ipsec/install
- $(INSTALL_DIR) $(1)/usr/sbin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/debian/ovs-monitor-ipsec $(1)/usr/sbin/
-endef
-
-define Package/openvswitch-benchmark/install
- $(INSTALL_DIR) $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ovs-benchmark $(1)/usr/bin/
-endef
-
define Package/openvswitch/install
:
endef
$(eval $(call BuildPackage,openvswitch-base))
$(eval $(call BuildPackage,openvswitch-python))
-$(eval $(call BuildPackage,openvswitch-ipsec))
-$(eval $(call BuildPackage,openvswitch-benchmark))
$(eval $(call BuildPackage,openvswitch))
$(eval $(call KernelPackage,openvswitch))
--- /dev/null
+From 7cf69704374e363fdda227803be3849233ba96f3 Mon Sep 17 00:00:00 2001
+From: Dario Ernst <Dario.Ernst@riverbed.com>
+Date: Fri, 25 Nov 2016 15:33:48 +0100
+Subject: [PATCH 4/4] disable-module-build
+
+---
+ datapath/linux/Makefile.main.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/datapath/linux/Makefile.main.in b/datapath/linux/Makefile.main.in
+index 7d18253..e5555a7 100644
+--- a/datapath/linux/Makefile.main.in
++++ b/datapath/linux/Makefile.main.in
+@@ -68,7 +68,7 @@ ifeq (,$(wildcard $(CONFIG_FILE)))
+ endif
+
+ default:
+- $(MAKE) -C $(KSRC) M=$(builddir) modules
++ @echo skipping module build
+
+ modules_install:
+ $(MAKE) -C $(KSRC) M=$(builddir) modules_install
+--
+2.9.3
+
include $(TOPDIR)/rules.mk
PKG_NAME:=radicale
-PKG_VERSION:=1.1.2
+PKG_VERSION:=1.1.3
PKG_RELEASE:=1
PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com>
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=https://github.com/Kozea/Radicale
PKG_SOURCE_SUBDIR=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=ee3cb8e8e69828faa865c145b32f5bb94259a62c
+PKG_SOURCE_VERSION:=d5171958ffe41e495ccaf2c02702d9acb0c6e6ad
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
include $(INCLUDE_DIR)/package.mk
PKG_NAME:=reaver
PKG_VERSION:=1.4
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
CONFIGURE_PATH:=src
MAKE_PATH:=src
+EXTRA_CFLAGS=$(TARGET_CPPFLAGS)
define Package/reaver
SECTION:=net
--- /dev/null
+Index: reaver-1.4/src/wps/Makefile
+===================================================================
+--- reaver-1.4.orig/src/wps/Makefile
++++ reaver-1.4/src/wps/Makefile
+@@ -4,31 +4,31 @@ INC=-I../utils -I ../
+ all: wps_attr_build.o wps_attr_parse.o wps_attr_process.o wps.o wps_common.o wps_dev_attr.o wps_enrollee.o wps_registrar.o wps_ufd.o
+
+ wps_attr_build.o:
+- $(CC) $(INC) wps_attr_build.c -c
++ $(CC) $(CFLAGS) $(INC) wps_attr_build.c -c
+
+ wps_attr_parse.o:
+- $(CC) $(INC) wps_attr_parse.c -c
++ $(CC) $(CFLAGS) $(INC) wps_attr_parse.c -c
+
+ wps_attr_process.o:
+- $(CC) $(INC) wps_attr_process.c -c
++ $(CC) $(CFLAGS) $(INC) wps_attr_process.c -c
+
+ wps.o:
+- $(CC) $(INC) wps.c -c
++ $(CC) $(CFLAGS) $(INC) wps.c -c
+
+ wps_common.o:
+- $(CC) $(INC) wps_common.c -c
++ $(CC) $(CFLAGS) $(INC) wps_common.c -c
+
+ wps_dev_attr.o:
+- $(CC) $(INC) wps_dev_attr.c -c
++ $(CC) $(CFLAGS) $(INC) wps_dev_attr.c -c
+
+ wps_enrollee.o:
+- $(CC) $(INC) wps_enrollee.c -c
++ $(CC) $(CFLAGS) $(INC) wps_enrollee.c -c
+
+ wps_registrar.o:
+- $(CC) $(INC) wps_registrar.c -c
++ $(CC) $(CFLAGS) $(INC) wps_registrar.c -c
+
+ wps_ufd.o:
+- $(CC) $(INC) wps_ufd.c -c
++ $(CC) $(CFLAGS) $(INC) wps_ufd.c -c
+
+ clean:
+ rm -f *.o
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=b59d754f838213d60b908aed0b7d4d5a81f273e2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_MAINTAINER:=Zhao, Gang <gang.zhao.42@gmail.com>
+PKG_MAINTAINER:=Gang Zhao <gang.zhao.42@gmail.com>
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=COPYING
#
# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2017 Yousong Zhou <yszhou4tech@gmail.com>
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=shadowsocks-libev
-PKG_VERSION:=2.6.1
+PKG_VERSION:=3.0.6
PKG_RELEASE:=1
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/shadowsocks/shadowsocks-libev.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE)
-PKG_SOURCE_VERSION:=a3bf80cf11e0a88589abdd87266b5351f270197c
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
-PKG_MAINTAINER:=Jian Chang <aa65535@live.com>
-PKG_MIRROR_MD5SUM:=fc60936d8b990fdecd69b908bc6b770b1c1e54598da6622cc9669750c76fa2d1
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://github.com/shadowsocks/shadowsocks-libev/releases/download/v$(PKG_VERSION)
+PKG_HASH:=7d9b43b0235a57c115bfe160efd54abef96bffcbfff61c5496e7c2800f0734ca
+PKG_MAINTAINER:=Jian Chang <aa65535@live.com>
PKG_LICENSE:=GPLv2
PKG_LICENSE_FILES:=LICENSE
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE)
-
PKG_INSTALL:=1
PKG_FIXUP:=autoreconf
PKG_USE_MIPS16:=0
include $(INCLUDE_DIR)/package.mk
-define Package/shadowsocks-libev/Default
+define Package/shadowsocks-libev
SECTION:=net
CATEGORY:=Network
- TITLE:=Lightweight Secured Socks5 Proxy $(2)
+ TITLE:=Lightweight Secured Socks5 Proxy
URL:=https://github.com/shadowsocks/shadowsocks-libev
- VARIANT:=$(1)
- DEPENDS:=$(3) +libpthread +ipset +ip +iptables-mod-tproxy +libpcre +zlib
+ DEPENDS:=+libev +libmbedtls +libpthread +libsodium +libudns \
+ +ipset +ip +iptables-mod-tproxy +libpcre +zlib
endef
-CONFIGURE_ARGS += \
- --disable-documentation \
-
-Package/shadowsocks-libev = $(call Package/shadowsocks-libev/Default,openssl,(OpenSSL),+libopenssl)
-Package/shadowsocks-libev-mbedtls = $(call Package/shadowsocks-libev/Default,mbedtls,(mbed TLS),+libmbedtls)
-
define Package/shadowsocks-libev/description
Shadowsocks-libev is a lightweight secured socks5 proxy for embedded devices and low end boxes.
endef
-Package/shadowsocks-libev-mbedtls/description = $(Package/shadowsocks-libev/description)
-
define Package/shadowsocks-libev/conffiles
/etc/config/shadowsocks-libev
endef
-Package/shadowsocks-libev-mbedtls/conffiles = $(Package/shadowsocks-libev/conffiles)
-
define Package/shadowsocks-libev/postinst
#!/bin/sh
uci -q batch <<-EOF >/dev/null
exit 0
endef
-Package/shadowsocks-libev-mbedtls/postinst = $(Package/shadowsocks-libev/postinst)
-
-ifeq ($(BUILD_VARIANT),mbedtls)
- CONFIGURE_ARGS += --with-crypto-library=mbedtls
-endif
-
define Package/shadowsocks-libev/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/ss-{redir,tunnel} $(1)/usr/bin
$(INSTALL_DATA) ./files/firewall.include $(1)/usr/share/shadowsocks-libev/firewall.include
endef
-Package/shadowsocks-libev-mbedtls/install = $(Package/shadowsocks-libev/install)
+CONFIGURE_ARGS += --disable-documentation
$(eval $(call BuildPackage,shadowsocks-libev))
-$(eval $(call BuildPackage,shadowsocks-libev-mbedtls))
--- /dev/null
+#
+# Copyright (C) 2008-2012 OpenWrt.org
+# Copyright (C) 2017 Willem van den Akker <wvdakker@wilsoft.nl>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=shorewall-core
+PKG_VERSION:=5.1.4.1
+PKG_DIRECTORY:=5.1
+PKG_RELEASE:=1
+PKG_MAINVERSION:=5.1.4
+
+PKG_SOURCE_URL:=http://www.shorewall.net/pub/shorewall/$(PKG_DIRECTORY)/shorewall-$(PKG_MAINVERSION)/
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_HASH:=118378698e0fa1216b52ace92fe9eae0f7d32c39becbc50837a895d7367674b2c973b1633c8919045d9d16dd2a5fdbedb9d62ff1513547ee4770a2e9116d8b1e
+
+PKG_MAINTAINER:=Willem van den Akker <wvdakker@wilsoft.nl>
+PKG_LICENSE:=GPL-2.0+
+PKG_LICENSE_FILES:=COPYING
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/shorewall-core
+ SECTION:=net
+ CATEGORY:=Network
+ DEPENDS:=+ip +iptables
+ TITLE:=Shorewall Core
+ URL:=http://www.shorewall.net/
+ SUBMENU:=Firewall
+endef
+
+define Package/shorewall-core/description
+ The Shoreline Firewall, is high-level tool for configuring Netfilter.
+ This package provides the core Shorewall libraries installed in /usr/share/shorewall/,
+ which are required for the rest of the Shorewall packages to work.
+endef
+
+define Package/shorewall-core/conffiles
+ /usr/share/shorewall/shorewallrc
+endef
+
+CONFIGURE_ARGS += \
+ vendor=openwrt
+
+define Build/Compile
+ DESTDIR=$(PKG_INSTALL_DIR) $(PKG_BUILD_DIR)/install.sh
+endef
+
+define Package/shorewall-core/install
+ $(INSTALL_DIR) $(1)/usr/share
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(CP) $(PKG_INSTALL_DIR)/usr/share/shorewall $(1)/usr/share
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/shorewall/wait4ifup $(1)/usr/share/shorewall
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/shorewall $(1)/usr/sbin
+endef
+
+$(eval $(call BuildPackage,shorewall-core))
--- /dev/null
+Index: shorewall-core-5.0.15.2/lib.common
+===================================================================
+--- shorewall-core-5.0.15.2.orig/lib.common 2016-12-20 23:42:20.000000000 +0100
++++ shorewall-core-5.0.15.2/lib.common 2017-01-02 11:33:03.026495427 +0100
+@@ -352,7 +352,7 @@
+
+ if [ -z "$MODULESDIR" ]; then
+ uname=$(uname -r)
+- MODULESDIR=/lib/modules/$uname/kernel/net/ipv${g_family}/netfilter:/lib/modules/$uname/kernel/net/netfilter:/lib/modules/$uname/kernel/net/sched:/lib/modules/$uname/extra:/lib/modules/$uname/extra/ipset
++ MODULESDIR=/lib/modules/$uname:/lib/modules/$uname/kernel/net/ipv${g_family}/netfilter:/lib/modules/$uname/kernel/net/netfilter:/lib/modules/$uname/kernel/net/sched:/lib/modules/$uname/extra:/lib/modules/$uname/extra/ipset
+ if [ -n "$extras" ]; then
+ for directory in $(split "$extras"); do
+ MODULESDIR="$MODULESDIR:/lib/modules/$uname/$directory"
+@@ -408,7 +408,7 @@
+
+ if [ -z "$MODULESDIR" ]; then
+ uname=$(uname -r)
+- MODULESDIR=/lib/modules/$uname/kernel/net/ipv${g_family}/netfilter:/lib/modules/$uname/kernel/net/netfilter:/lib/modules/$uname/kernel/net/sched:/lib/modules/$uname/extra:/lib/modules/$uname/extra/ipset
++ MODULESDIR=/lib/modules/$uname:/lib/modules/$uname/kernel/net/ipv${g_family}/netfilter:/lib/modules/$uname/kernel/net/netfilter:/lib/modules/$uname/kernel/net/sched:/lib/modules/$uname/extra:/lib/modules/$uname/extra/ipset
+ if [ -n "$extras" ]; then
+ for directory in $(split "$extras"); do
+ MODULESDIR="$MODULESDIR:/lib/modules/$uname/$directory"
--- /dev/null
+#
+# Copyright (C) 2008-2012 OpenWrt.org
+# Copyright (C) 2017 Willem van den Akker <wvdakker@wilsoft.nl>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=shorewall-lite
+PKG_VERSION:=5.1.4.1
+PKG_DIRECTORY:=5.1
+PKG_MAINVERSION:=5.1.4
+PKG_RELEASE:=1
+
+PKG_SOURCE_URL:=http://www.shorewall.net/pub/shorewall/$(PKG_DIRECTORY)/shorewall-$(PKG_MAINVERSION)/
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_HASH:=c06e365d06c484e7ef673e5a8597d70996f1008a00163aae2d7a53d0d720739a8b0317a093b3e75487ef1c8a02ac4c4c542480757226a974671f82ab08353896
+
+PKG_MAINTAINER:=Willem van den Akker <wvdakker@wilsoft.nl>
+PKG_LICENSE:=GPL-2.0+
+PKG_LICENSE_FILES:=COPYING
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/shorewall-lite
+ SECTION:=net
+ CATEGORY:=Network
+ DEPENDS:=+ip +iptables +shorewall-core
+ TITLE:=Shorewall Lite
+ URL:=http://www.shorewall.net/
+ SUBMENU:=Firewall
+endef
+
+define Package/shorewall-lite/description
+ The Shoreline Firewall, is high-level tool for configuring Netfilter.
+
+ Shorewall allows for central administration of multiple IPv4 firewalls
+ through use of Shorewall lite. The full Shorewall product is installed
+ on a central administrative system where compiled Shorewall scripts are
+ generated. These scripts are copied to the firewall systems where they
+ run under the control of Shorewall-lite.
+
+ Note: This is the IPv4 implementation of Shorewall.
+endef
+
+define Package/shorewall-lite/conffiles
+/etc/shorewall-lite/shorewall-lite.conf
+/etc/shorewall-lite/vardir
+endef
+
+CONFIGURE_ARGS += \
+ vendor=openwrt
+
+define Build/Compile
+ DESTDIR=$(PKG_INSTALL_DIR) $(PKG_BUILD_DIR)/install.sh
+endef
+
+define Package/shorewall-lite/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_DIR) $(1)/etc/hotplug.d/iface
+ $(INSTALL_DIR) $(1)/etc/shorewall-lite/state
+ $(INSTALL_DIR) $(1)/usr/share
+ $(INSTALL_BIN) ./files/hotplug_iface $(1)/etc/hotplug.d/iface/05-shorewall-lite
+ $(CP) $(PKG_INSTALL_DIR)/usr/share/shorewall-lite $(1)/usr/share
+ $(CP) $(PKG_INSTALL_DIR)/usr/sbin/shorewall-lite $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/shorewall-lite/shorecap $(1)/usr/share/shorewall-lite
+ $(INSTALL_BIN) ./files/hostname $(1)/usr/share/shorewall-lite
+ $(CP) $(PKG_INSTALL_DIR)/etc/shorewall-lite $(1)/etc
+ $(CP) $(PKG_INSTALL_DIR)/etc/init.d $(1)/etc
+ $(CP) ./files/vardir $(1)/etc/shorewall-lite
+endef
+
+$(eval $(call BuildPackage,shorewall-lite))
--- /dev/null
+#!/bin/sh
+cat /proc/sys/kernel/hostname
--- /dev/null
+#!/bin/sh
+
+# should restart shorewall-lite when an interface comes up
+
+[ ifup = "$ACTION" ] && {
+ /etc/init.d/shorewall-lite restart
+}
+
+[ ifdown = "$ACTION" ] && {
+ # might need to restore some routing
+ /etc/init.d/shorewall-lite restart
+}
--- /dev/null
+# move state dir out of ram
+VARDIR=/etc/shorewall-lite/state
+
--- /dev/null
+Index: shorewall-lite-5.0.15.2/install.sh
+===================================================================
+--- shorewall-lite-5.0.15.2.orig/install.sh 2016-12-20 18:41:05.000000000 +0100
++++ shorewall-lite-5.0.15.2/install.sh 2017-01-04 12:01:31.018724737 +0100
+@@ -549,7 +549,7 @@
+ chmod 755 ${DESTDIR}${SYSCONFDIR}
+ fi
+
+- install_file ${SYSCONFFILE} ${DESTDIR}${SYSCONFDIR}/${PRODUCT} 0640
++ install_file ${SYSCONFFILE} ${DESTDIR}${SYSCONFDIR}/${PRODUCT}/${SYSCONFFILE} 0640
+ echo "$SYSCONFFILE file installed in ${DESTDIR}${SYSCONFDIR}/${PRODUCT}"
+ fi
+
--- /dev/null
+--- a/shorewall-lite.conf 2012-08-08 16:29:23.000000000 +0200
++++ b/shorewall-lite.conf 2012-08-13 11:11:11.687938395 +0200
+@@ -28,7 +28,7 @@
+ # L O G G I N G
+ ###############################################################################
+
+-LOGFILE=
++LOGFILE=/dev/null
+
+ ###############################################################################
+ # L O C A T I O N O F F I L E S A N D D I R E C T O R I E S
\ No newline at end of file
--- /dev/null
+#
+# Copyright (C) 2008-2012 OpenWrt.org
+# Copyright (C) 2017 Willem van den Akker <wvdakker@wilsoft.nl>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=shorewall6-lite
+PKG_VERSION:=5.1.4.1
+PKG_DIRECTORY:=5.1
+PKG_MAINVERSION:=5.1.4
+PKG_RELEASE:=2
+
+PKG_SOURCE_URL:=http://www.shorewall.net/pub/shorewall/$(PKG_DIRECTORY)/shorewall-$(PKG_MAINVERSION)/
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_HASH:=b616c5886b5bc274e88052359ca4c8aa6df60a9706958698eac7fc362f1c893de00ed2272535d61a88cb6a786bae9b7cba64a835833a9f81c991fb2ffed8244b
+
+PKG_MAINTAINER:=Willem van den Akker <wvdakker@wilsoft.nl>
+PKG_LICENSE:=GPL-2.0+
+PKG_LICENSE_FILES:=COPYING
+
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/shorewall6-lite
+ SECTION:=net
+ CATEGORY:=Network
+ DEPENDS:=+ip +ip6tables +shorewall-core
+ TITLE:=Shorewall6 Lite
+ URL:=http://www.shorewall.net/
+ SUBMENU:=Firewall
+endef
+
+define Package/shorewall6-lite/description
+ The Shoreline Firewall, is high-level tool for configuring Netfilter.
+
+ Shorewall6 allows for central administration of multiple IPv6 firewalls
+ through use of Shorewall6 lite. The full Shorewall6 product is installed
+ on a central administrative system where compiled Shorewall6 scripts are
+ generated. These scripts are copied to the firewall systems where they
+ run under the control of Shorewall6-lite.
+
+ Note: This is the IPv6 implementation of Shorewall.
+endef
+
+define Package/shorewall6-lite/conffiles
+/etc/shorewall6-lite/shorewall6-lite.conf
+/etc/shorewall6-lite/vardir
+endef
+
+CONFIGURE_ARGS += \
+ vendor=openwrt
+
+define Build/Compile
+ DESTDIR=$(PKG_INSTALL_DIR) $(PKG_BUILD_DIR)/install.sh
+endef
+
+define Package/shorewall6-lite/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_DIR) $(1)/etc/hotplug.d/iface
+ $(INSTALL_DIR) $(1)/etc/shorewall6-lite/state
+ $(INSTALL_DIR) $(1)/usr/share
+ $(INSTALL_BIN) ./files/hotplug_iface $(1)/etc/hotplug.d/iface/05-shorewall6-lite
+ $(CP) $(PKG_INSTALL_DIR)/usr/share/shorewall6-lite $(1)/usr/share
+ $(CP) $(PKG_INSTALL_DIR)/usr/sbin/shorewall6-lite $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/shorewall6-lite/shorecap $(1)/usr/share/shorewall6-lite
+ $(INSTALL_BIN) ./files/hostname $(1)/usr/share/shorewall6-lite
+ $(CP) $(PKG_INSTALL_DIR)/etc/shorewall6-lite $(1)/etc
+ $(CP) $(PKG_INSTALL_DIR)/etc/init.d $(1)/etc
+ $(CP) ./files/vardir $(1)/etc/shorewall6-lite
+endef
+
+$(eval $(call BuildPackage,shorewall6-lite))
--- /dev/null
+#!/bin/sh
+cat /proc/sys/kernel/hostname
--- /dev/null
+#!/bin/sh
+
+# should restart shorewall6-lite when an interface comes up
+
+[ ifup = "$ACTION" ] && {
+ /etc/init.d/shorewall6-lite restart
+}
+
+[ ifdown = "$ACTION" ] && {
+ # might need to restore some routing
+ /etc/init.d/shorewall6-lite restart
+}
--- /dev/null
+# move state dir out of ram
+VARDIR=/etc/shorewall6-lite/state
--- /dev/null
+Index: shorewall6-lite-5.0.15.2/install.sh
+===================================================================
+--- shorewall6-lite-5.0.15.2.orig/install.sh 2016-12-20 18:41:05.000000000 +0100
++++ shorewall6-lite-5.0.15.2/install.sh 2017-01-04 12:01:31.018724737 +0100
+@@ -549,7 +549,7 @@
+ chmod 755 ${DESTDIR}${SYSCONFDIR}
+ fi
+
+- install_file ${SYSCONFFILE} ${DESTDIR}${SYSCONFDIR}/${PRODUCT} 0640
++ install_file ${SYSCONFFILE} ${DESTDIR}${SYSCONFDIR}/${PRODUCT}/${SYSCONFFILE} 0640
+ echo "$SYSCONFFILE file installed in ${DESTDIR}${SYSCONFDIR}/${PRODUCT}"
+ fi
+
--- /dev/null
+--- a/shorewall6-lite.conf 2012-08-08 16:29:23.000000000 +0200
++++ b/shorewall6-lite.conf 2012-08-13 11:11:11.687938395 +0200
+@@ -28,7 +28,7 @@
+ # L O G G I N G
+ ###############################################################################
+
+-LOGFILE=
++LOGFILE=/dev/null
+
+ ###############################################################################
+ # L O C A T I O N O F F I L E S A N D D I R E C T O R I E S
\ No newline at end of file
PKG_LICENSE_FILES:=COPYING
PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL=https://github.com/sipcapture/sipgrep
+PKG_SOURCE_URL:=https://github.com/sipcapture/sipgrep
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=df8a95b066569be92aa38cad01086ea595b36863
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
define Build/Configure
(cd $(PKG_BUILD_DIR); \
$(SCONS_VARS) \
+ CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \
scons \
prefix=/usr \
$(SCONS_OPTIONS) \
PKG_LICENSE_FILES:=COPYING
PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL=https://github.com/irontec/sngrep
+PKG_SOURCE_URL:=https://github.com/irontec/sngrep
PKG_SOURCE_SUBDIR=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=da791185cabeea5a6fcc7372157340b2d1369df7
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
include $(TOPDIR)/rules.mk
PKG_NAME:=socat
-PKG_VERSION:=1.7.3.1
+PKG_VERSION:=1.7.3.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://www.dest-unreach.org/socat/download
-PKG_MD5SUM:=d2da659540c38139f388e9437bfaae16bb458d174d056cb3228432a8f489fbaa
+PKG_HASH:=e3561f808739383eb10fada1e5d4f26883f0311b34fd0af7837d0c95ef379251
-PKG_MAINTAINER:= Ted Hess <thess@kitschensync.net>
+PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
PKG_LICENSE:=GPL-2.0 OpenSSL
PKG_LICENSE_FILES:=COPYING COPYING.OpenSSL
sc_cv_sys_tabdly_shift=11 \
sc_cv_sys_csize_shift=4
-TARGET_CFLAGS += \
- -include stddef.h
-
define Package/socat/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/socat $(1)/usr/bin/
+++ /dev/null
---- a/sslcls.c
-+++ b/sslcls.c
-@@ -55,6 +55,7 @@ const SSL_METHOD *sycSSLv2_server_method
- }
- #endif
-
-+#ifdef HAVE_SSLv3_client_method
- const SSL_METHOD *sycSSLv3_client_method(void) {
- const SSL_METHOD *result;
- Debug("SSLv3_client_method()");
-@@ -62,7 +63,9 @@ const SSL_METHOD *sycSSLv3_client_method
- Debug1("SSLv3_client_method() -> %p", result);
- return result;
- }
-+#endif
-
-+#ifdef HAVE_SSLv3_server_method
- const SSL_METHOD *sycSSLv3_server_method(void) {
- const SSL_METHOD *result;
- Debug("SSLv3_server_method()");
-@@ -70,6 +73,7 @@ const SSL_METHOD *sycSSLv3_server_method
- Debug1("SSLv3_server_method() -> %p", result);
- return result;
- }
-+#endif
-
- const SSL_METHOD *sycSSLv23_client_method(void) {
- const SSL_METHOD *result;
-@@ -331,14 +335,6 @@ void sycSSL_free(SSL *ssl) {
- return;
- }
-
--int sycRAND_egd(const char *path) {
-- int result;
-- Debug1("RAND_egd(\"%s\")", path);
-- result = RAND_egd(path);
-- Debug1("RAND_egd() -> %d", result);
-- return result;
--}
--
- DH *sycPEM_read_bio_DHparams(BIO *bp, DH **x, pem_password_cb *cb, void *u) {
- DH *result;
- Debug4("PEM_read_bio_DHparams(%p, %p, %p, %p)",
-@@ -375,7 +371,7 @@ int sycFIPS_mode_set(int onoff) {
- }
- #endif /* WITH_FIPS */
-
--#if OPENSSL_VERSION_NUMBER >= 0x00908000L
-+#if (OPENSSL_VERSION_NUMBER >= 0x00908000L) && !defined(OPENSSL_NO_COMP)
- const COMP_METHOD *sycSSL_get_current_compression(SSL *ssl) {
- const COMP_METHOD *result;
- Debug1("SSL_get_current_compression(%p)", ssl);
---- a/sslcls.h
-+++ b/sslcls.h
-@@ -47,7 +47,6 @@ X509 *sycSSL_get_peer_certificate(SSL *s
- int sycSSL_shutdown(SSL *ssl);
- void sycSSL_CTX_free(SSL_CTX *ctx);
- void sycSSL_free(SSL *ssl);
--int sycRAND_egd(const char *path);
-
- DH *sycPEM_read_bio_DHparams(BIO *bp, DH **x, pem_password_cb *cb, void *u);
-
-@@ -55,7 +54,7 @@ BIO *sycBIO_new_file(const char *filenam
-
- int sycFIPS_mode_set(int onoff);
-
--#if OPENSSL_VERSION_NUMBER >= 0x00908000L
-+#if (OPENSSL_VERSION_NUMBER >= 0x00908000L) && !defined(OPENSSL_NO_COMP)
- const COMP_METHOD *sycSSL_get_current_compression(SSL *ssl);
- const COMP_METHOD *sycSSL_get_current_expansion(SSL *ssl);
- const char *sycSSL_COMP_get_name(const COMP_METHOD *comp);
-@@ -98,7 +97,6 @@ const char *sycSSL_COMP_get_name(const C
- #define sycSSL_shutdown(s) SSL_shutdown(s)
- #define sycSSL_CTX_free(c) SSL_CTX_free(c)
- #define sycSSL_free(s) SSL_free(s)
--#define sycRAND_egd(p) RAND_egd(p)
-
- #define sycPEM_read_bio_DHparams(b,x,p,u) PEM_read_bio_DHparams(b,x,p,u)
-
---- a/test.sh
-+++ b/test.sh
-@@ -576,9 +576,6 @@ filloptionvalues() {
- *,dh,*) OPTS=$(echo "$OPTS" |sed "s/,dh,/,dh=/tmp/hugo,/g");;
- esac
- case "$OPTS" in
-- *,egd,*) OPTS=$(echo "$OPTS" |sed "s/,egd,/,egd=/tmp/hugo,/g");;
-- esac
-- case "$OPTS" in
- *,compress,*) OPTS=$(echo "$OPTS" |sed "s/,compress,/,compress=none,/g");;
- esac
- # PROXY
---- a/xio-openssl.c
-+++ b/xio-openssl.c
-@@ -108,7 +108,6 @@ const struct optdesc opt_openssl_key
- const struct optdesc opt_openssl_dhparam = { "openssl-dhparam", "dh", OPT_OPENSSL_DHPARAM, GROUP_OPENSSL, PH_SPEC, TYPE_FILENAME, OFUNC_SPEC };
- const struct optdesc opt_openssl_cafile = { "openssl-cafile", "cafile", OPT_OPENSSL_CAFILE, GROUP_OPENSSL, PH_SPEC, TYPE_FILENAME, OFUNC_SPEC };
- const struct optdesc opt_openssl_capath = { "openssl-capath", "capath", OPT_OPENSSL_CAPATH, GROUP_OPENSSL, PH_SPEC, TYPE_FILENAME, OFUNC_SPEC };
--const struct optdesc opt_openssl_egd = { "openssl-egd", "egd", OPT_OPENSSL_EGD, GROUP_OPENSSL, PH_SPEC, TYPE_FILENAME, OFUNC_SPEC };
- const struct optdesc opt_openssl_pseudo = { "openssl-pseudo", "pseudo", OPT_OPENSSL_PSEUDO, GROUP_OPENSSL, PH_SPEC, TYPE_BOOL, OFUNC_SPEC };
- #if OPENSSL_VERSION_NUMBER >= 0x00908000L
- const struct optdesc opt_openssl_compress = { "openssl-compress", "compress", OPT_OPENSSL_COMPRESS, GROUP_OPENSSL, PH_SPEC, TYPE_STRING, OFUNC_SPEC };
-@@ -147,7 +146,7 @@ int xio_reset_fips_mode(void) {
- static void openssl_conn_loginfo(SSL *ssl) {
- Notice1("SSL connection using %s", SSL_get_cipher(ssl));
-
--#if OPENSSL_VERSION_NUMBER >= 0x00908000L
-+#if (OPENSSL_VERSION_NUMBER >= 0x00908000L) && !defined(OPENSSL_NO_COMP)
- {
- const COMP_METHOD *comp, *expansion;
-
-@@ -722,7 +721,6 @@ int
- char *opt_dhparam = NULL; /* file name of DH params */
- char *opt_cafile = NULL; /* certificate authority file */
- char *opt_capath = NULL; /* certificate authority directory */
-- char *opt_egd = NULL; /* entropy gathering daemon socket path */
- #if OPENSSL_VERSION_NUMBER >= 0x00908000L
- char *opt_compress = NULL; /* compression method */
- #endif
-@@ -741,7 +739,6 @@ int
- retropt_string(opts, OPT_OPENSSL_CAPATH, &opt_capath);
- retropt_string(opts, OPT_OPENSSL_KEY, &opt_key);
- retropt_string(opts, OPT_OPENSSL_DHPARAM, &opt_dhparam);
-- retropt_string(opts, OPT_OPENSSL_EGD, &opt_egd);
- retropt_bool(opts,OPT_OPENSSL_PSEUDO, &opt_pseudo);
- #if OPENSSL_VERSION_NUMBER >= 0x00908000L
- retropt_string(opts, OPT_OPENSSL_COMPRESS, &opt_compress);
-@@ -877,10 +874,6 @@ int
- }
- }
-
-- if (opt_egd) {
-- sycRAND_egd(opt_egd);
-- }
--
- if (opt_pseudo) {
- long int randdata;
- /* initialize libc random from actual microseconds */
-@@ -1105,7 +1098,7 @@ static int openssl_SSL_ERROR_SSL(int lev
- if (e == ((ERR_LIB_RAND<<24)|
- (RAND_F_SSLEAY_RAND_BYTES<<12)|
- (RAND_R_PRNG_NOT_SEEDED)) /*0x24064064*/) {
-- Error("too few entropy; use options \"egd\" or \"pseudo\"");
-+ Error("too few entropy; use option \"pseudo\"");
- stat = STAT_NORETRY;
- } else {
- Msg2(level, "%s(): %s", funcname, ERR_error_string(e, buf));
---- a/xio-openssl.h
-+++ b/xio-openssl.h
-@@ -21,7 +21,6 @@ extern const struct optdesc opt_openssl_
- extern const struct optdesc opt_openssl_dhparam;
- extern const struct optdesc opt_openssl_cafile;
- extern const struct optdesc opt_openssl_capath;
--extern const struct optdesc opt_openssl_egd;
- extern const struct optdesc opt_openssl_pseudo;
- #if OPENSSL_VERSION_NUMBER >= 0x00908000L
- extern const struct optdesc opt_openssl_compress;
---- a/xioopts.c
-+++ b/xioopts.c
-@@ -412,7 +412,6 @@ const struct optname optionnames[] = {
- #ifdef ECHOPRT
- IF_TERMIOS("echoprt", &opt_echoprt)
- #endif
-- IF_OPENSSL("egd", &opt_openssl_egd)
- IF_ANY ("end-close", &opt_end_close)
- IF_TERMIOS("eof", &opt_veof)
- IF_TERMIOS("eol", &opt_veol)
-@@ -1102,7 +1101,6 @@ const struct optname optionnames[] = {
- IF_OPENSSL("openssl-compress", &opt_openssl_compress)
- #endif
- IF_OPENSSL("openssl-dhparam", &opt_openssl_dhparam)
-- IF_OPENSSL("openssl-egd", &opt_openssl_egd)
- #if WITH_FIPS
- IF_OPENSSL("openssl-fips", &opt_openssl_fips)
- #endif
---- a/xioopts.h
-+++ b/xioopts.h
-@@ -478,7 +478,6 @@ enum e_optcode {
- OPT_OPENSSL_COMPRESS,
- #endif
- OPT_OPENSSL_DHPARAM,
-- OPT_OPENSSL_EGD,
- OPT_OPENSSL_FIPS,
- OPT_OPENSSL_KEY,
- OPT_OPENSSL_METHOD,
include $(TOPDIR)/rules.mk
PKG_NAME:=strongswan
-PKG_VERSION:=5.5.2
+PKG_VERSION:=5.5.3
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=da976fca836f05fc7b7a38baab299745f960cb7640319969d239d8aa4ace9f6a
+PKG_HASH:=c5ea54b199174708de11af9b8f4ecf28b5b0743d4bc0e380e741f25b28c0f8d4
PKG_SOURCE_URL:=http://download.strongswan.org/ http://download2.strongswan.org/
PKG_LICENSE:=GPL-2.0+
PKG_MAINTAINER:=Stijn Tintel <stijn@linux-ipv6.be>
coupling \
ctr \
curl \
+ curve25519 \
des \
dhcp \
dnskey \
+strongswan-mod-coupling \
+strongswan-mod-ctr \
+strongswan-mod-curl \
+ +strongswan-mod-curve25519 \
+strongswan-mod-des \
+strongswan-mod-dhcp \
+strongswan-mod-dnskey \
$(eval $(call BuildPlugin,coupling,IKEv2 plugin to couple peer certificates permanently to authentication,))
$(eval $(call BuildPlugin,ctr,Counter Mode wrapper crypto,))
$(eval $(call BuildPlugin,curl,cURL fetcher plugin,+PACKAGE_strongswan-mod-curl:libcurl))
+$(eval $(call BuildPlugin,curve25519,Curve25519 Diffie-Hellman,))
$(eval $(call BuildPlugin,des,DES crypto,))
$(eval $(call BuildPlugin,dhcp,DHCP based attribute provider,))
$(eval $(call BuildPlugin,dnskey,DNS RR key decoding,))
--- a/src/libcharon/plugins/uci/uci_parser.c
+++ b/src/libcharon/plugins/uci/uci_parser.c
-@@ -78,7 +78,7 @@ METHOD(enumerator_t, section_enumerator_
+@@ -75,7 +75,7 @@ METHOD(enumerator_t, section_enumerator_
if (uci_lookup(this->ctx, &element, this->package,
this->current->name, "name") == UCI_OK)
{ /* use "name" attribute as config name if available ... */
}
else
{ /* ... or the section name becomes config name */
-@@ -93,7 +93,7 @@ METHOD(enumerator_t, section_enumerator_
+@@ -90,7 +90,7 @@ METHOD(enumerator_t, section_enumerator_
if (value && uci_lookup(this->ctx, &element, this->package,
this->current->name, this->keywords[i]) == UCI_OK)
{
+ *value = uci_to_option(element)->v.string;
}
}
- va_end(args);
+
--- a/configure.ac
+++ b/configure.ac
-@@ -133,6 +133,7 @@ ARG_DISBL_SET([fips-prf], [disable
+@@ -135,6 +135,7 @@ ARG_DISBL_SET([fips-prf], [disable
ARG_ENABL_SET([gcm], [enables the GCM AEAD wrapper crypto plugin.])
ARG_ENABL_SET([gcrypt], [enables the libgcrypt plugin.])
ARG_DISBL_SET([gmp], [disable GNU MP (libgmp) based crypto implementation plugin.])
ARG_DISBL_SET([curve25519], [disable Curve25519 Diffie-Hellman plugin.])
ARG_DISBL_SET([hmac], [disable HMAC crypto implementation plugin.])
ARG_ENABL_SET([md4], [enable MD4 software implementation plugin.])
-@@ -1362,6 +1363,7 @@ ADD_PLUGIN([gcrypt], [s ch
+@@ -1379,6 +1380,7 @@ ADD_PLUGIN([gcrypt], [s ch
ADD_PLUGIN([af-alg], [s charon scepclient pki scripts medsrv attest nm cmd aikgen])
ADD_PLUGIN([fips-prf], [s charon nm cmd])
- ADD_PLUGIN([gmp], [s charon scepclient pki scripts manager medsrv attest nm cmd aikgen])
+ ADD_PLUGIN([gmp], [s charon scepclient pki scripts manager medsrv attest nm cmd aikgen fuzz])
+ADD_PLUGIN([gmpdh], [s charon scepclient pki scripts manager medsrv attest nm cmd aikgen])
- ADD_PLUGIN([curve25519], [s charon scripts nm cmd])
+ ADD_PLUGIN([curve25519], [s charon pki scripts nm cmd])
ADD_PLUGIN([agent], [s charon nm cmd])
ADD_PLUGIN([keychain], [s charon cmd])
-@@ -1498,6 +1500,7 @@ AM_CONDITIONAL(USE_SHA3, test x$sha3 = x
+@@ -1516,6 +1518,7 @@ AM_CONDITIONAL(USE_SHA3, test x$sha3 = x
AM_CONDITIONAL(USE_MGF1, test x$mgf1 = xtrue)
AM_CONDITIONAL(USE_FIPS_PRF, test x$fips_prf = xtrue)
AM_CONDITIONAL(USE_GMP, test x$gmp = xtrue)
AM_CONDITIONAL(USE_CURVE25519, test x$curve25519 = xtrue)
AM_CONDITIONAL(USE_RDRAND, test x$rdrand = xtrue)
AM_CONDITIONAL(USE_AESNI, test x$aesni = xtrue)
-@@ -1756,6 +1759,7 @@ AC_CONFIG_FILES([
+@@ -1783,6 +1786,7 @@ AC_CONFIG_FILES([
src/libstrongswan/plugins/mgf1/Makefile
src/libstrongswan/plugins/fips_prf/Makefile
src/libstrongswan/plugins/gmp/Makefile
src/libstrongswan/plugins/aesni/Makefile
--- a/src/libstrongswan/Makefile.am
+++ b/src/libstrongswan/Makefile.am
-@@ -313,6 +313,13 @@ if MONOLITHIC
+@@ -323,6 +323,13 @@ if MONOLITHIC
endif
endif
--- /dev/null
+#
+# Copyright (C) 2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_LICENSE:=ASL-2.0
+PKG_MAINTAINER:=Mislav Novakovic <mislav.novakovic@sartura.hr>
+
+PKG_NAME:=sysrepo
+PKG_VERSION:=0.6.0
+PKG_RELEASE:=2
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_VERSION:=e4a5705a4c5293ba121048c71899b98243d99edf
+PKG_MIRROR_HASH:=aa0fb5d7c947dd428d9f573c84edf6237c8c1a4db92dcd4d7552a68d25277a39
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.bz2
+PKG_SOURCE_URL:=https://github.com/sysrepo/sysrepo.git
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_SOURCE_VERSION)
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
+
+CMAKE_INSTALL:=1
+
+PKG_BUILD_PARALLEL:=1
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/libsysrepo
+ SECTION:=utils
+ CATEGORY:=Utilities
+ URL:=$(PKG_SOURCE_URL)
+ TITLE:=YANG-based data store library
+ DEPENDS:=+libyang +libprotobuf-c +libev +libavl
+endef
+
+define Package/sysrepo
+ SECTION:=utils
+ CATEGORY:=Utilities
+ URL:=$(PKG_SOURCE_URL)
+ TITLE:=YANG-based data store daemon and plugin
+ DEPENDS:=+libsysrepo
+endef
+
+define Package/sysrepoctl
+ SECTION:=utils
+ CATEGORY:=Utilities
+ URL:=$(PKG_SOURCE_URL)
+ TITLE:=sysrepo cli tool
+ DEPENDS:=+libsysrepo
+endef
+
+define Package/sysrepocfg
+ SECTION:=utils
+ CATEGORY:=Utilities
+ URL:=$(PKG_SOURCE_URL)
+ TITLE:=sysrepo configuration tool
+ DEPENDS:=+libsysrepo
+endef
+
+define Package/sysrepo/description
+Sysrepo is an YANG-based configuration and operational state data store for Unix/Linux applications.
+endef
+
+CMAKE_OPTIONS += \
+ -DCMAKE_BUILD_TYPE:STRING=Release \
+ -DENABLE_TESTS:BOOL=FALSE \
+ -DBUILD_EXAMPLES:BOOL=FALSE \
+ -DCMAKE_DISABLE_FIND_PACKAGE_SWIG=TRUE \
+ -DGEN_LANGUAGE_BINDINGS:BOOL=FALSE \
+ -DREPOSITORY_LOC:PATH=/etc/sysrepo \
+ -DCMAKE_INSTALL_PREFIX:PATH=/usr \
+ -DENABLE_NACM:BOOL=FALSE \
+ -DREQUEST_TIMEOUT=6 \
+ -DLONG_REQUEST_TIMEOUT=30 \
+ -DCOMMIT_VERIFY_TIMEOUT=20 \
+ -DOPER_DATA_PROVIDE_TIMEOUT=4 \
+ -DNOTIF_AGE_TIMEOUT=120 \
+ -DNOTIF_TIME_WINDOW=20 \
+ -DUSE_SR_MEM_MGMT=0
+
+define Package/libsysrepo/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_BUILD_DIR)/src/libsysrepo.so* $(1)/usr/lib/
+
+ $(INSTALL_DIR) $(1)/etc/sysrepo/yang/internal
+ $(INSTALL_CONF) $(PKG_BUILD_DIR)/yang/sysrepo-module-dependencies.yang $(1)/etc/sysrepo/yang/internal
+ $(INSTALL_CONF) $(PKG_BUILD_DIR)/yang/sysrepo-notification-store.yang $(1)/etc/sysrepo/yang/internal
+ $(INSTALL_CONF) $(PKG_BUILD_DIR)/yang/sysrepo-persistent-data.yang $(1)/etc/sysrepo/yang/internal
+
+ $(INSTALL_DIR) $(1)/etc/sysrepo/yang
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/yang/ietf-netconf-acm@2012-02-22.yang $(1)/etc/sysrepo/yang/
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/yang/ietf-netconf-notifications.yang $(1)/etc/sysrepo/yang/
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/yang/nc-notifications.yang $(1)/etc/sysrepo/yang/
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/yang/notifications.yang $(1)/etc/sysrepo/yang/
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/yang/ietf-netconf@2011-06-01.yang $(1)/etc/sysrepo/yang/
+
+ $(INSTALL_DIR) $(1)/etc/sysrepo/data/internal
+ $(INSTALL_DIR) $(1)/etc/sysrepo/data/notifications
+
+ $(INSTALL_DIR) $(1)/etc/uci-defaults
+ $(INSTALL_BIN) ./files/libsysrepo.default $(1)/etc/uci-defaults/95_libsysrepo
+endef
+
+define Package/sysrepo/install
+ $(INSTALL_DIR) $(1)/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/sysrepod $(1)/bin/
+
+ $(INSTALL_DIR) $(1)/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/sysrepo-plugind $(1)/bin/
+
+ $(INSTALL_DIR) $(1)/etc/init.d/
+ $(INSTALL_BIN) ./files/sysrepo.init $(1)/etc/init.d/sysrepo
+endef
+
+define Package/sysrepoctl/install
+ $(INSTALL_DIR) $(1)/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/sysrepoctl $(1)/bin/
+endef
+
+define Package/sysrepocfg/install
+ $(INSTALL_DIR) $(1)/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/sysrepocfg $(1)/bin/
+endef
+
+$(eval $(call BuildPackage,libsysrepo))
+$(eval $(call BuildPackage,sysrepo))
+$(eval $(call BuildPackage,sysrepoctl))
+$(eval $(call BuildPackage,sysrepocfg))
--- /dev/null
+#!/bin/sh
+
+# Warning, problems can occur if the device restarts in the middle of this uci-default script
+
+if [ -x /bin/sysrepoctl ]; then
+ match=$(sysrepoctl -l | grep "ietf-netconf-acm\ ")
+ if [ ! "$match" ]; then
+ sysrepoctl --install --yang=/etc/sysrepo/yang/ietf-netconf-acm@2012-02-22.yang -p 644
+ fi
+
+ match=$(sysrepoctl -l | grep "ietf-netconf-notifications\ ")
+ if [ ! "$match" ]; then
+ sysrepoctl --install --yang=/etc/sysrepo/yang/ietf-netconf-notifications.yang -p 600
+ fi
+
+ match=$(sysrepoctl -l | grep "nc-notifications\ ")
+ if [ ! "$match" ]; then
+ sysrepoctl --install --yang=/etc/sysrepo/yang/nc-notifications.yang -p 666
+ fi
+
+ match=$(sysrepoctl -l | grep "notifications\ ")
+ if [ ! "$match" ]; then
+ sysrepoctl --install --yang=/etc/sysrepo/yang/notifications.yang -p 666
+ fi
+
+ match=$(sysrepoctl -l | grep "ietf-netconf\ ")
+ if [ ! "$match" ]; then
+ sysrepoctl --install --yang=/etc/sysrepo/yang/ietf-netconf@2011-06-01.yang -p 600
+ fi
+fi
+
+exit 0
--- /dev/null
+#!/bin/sh /etc/rc.common
+
+START=60
+STOP=10
+
+USE_PROCD=1
+PROG_DEAMON=/bin/sysrepod
+PROG_PLUGIN=/bin/sysrepo-plugind
+
+start_service() {
+ procd_open_instance
+ procd_set_param command ${PROG_DEAMON}
+ procd_append_param command -d -l 0
+ procd_set_param respawn
+ procd_close_instance
+
+ procd_open_instance
+ procd_set_param command ${PROG_PLUGIN}
+ procd_append_param command -d -l 0
+ procd_set_param respawn
+ procd_close_instance
+}
+
+stop_service()
+{
+ service_stop ${PROG_PLUGIN}
+ service_stop ${PROG_DEAMON}
+}
--- /dev/null
+Index: sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf/src/CMakeLists.txt
+===================================================================
+--- sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf.orig/src/CMakeLists.txt
++++ sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf/src/CMakeLists.txt
+@@ -21,14 +21,6 @@ set(GENERATED_PROTO_H "${COMMON_BIN_DIR}
+ set(GENERATED_PROTO_C "${COMMON_BIN_DIR}/${PROTO_NAME}.pb-c.c")
+
+ get_filename_component(ABS_PATH ${PROTO_FILE} PATH)
+-add_custom_command(
+- OUTPUT "${GENERATED_PROTO_C}"
+- "${GENERATED_PROTO_H}"
+- COMMAND ${PROTOBUFC_PROTOC_EXECUTABLE}
+- ARGS --c_out ${COMMON_BIN_DIR} -I ${ABS_PATH} ${PROTO_FILE}
+- DEPENDS ${PROTO_FILE}
+- COMMENT "Running C protocol buffer compiler on ${PROTO_FILE}"
+- VERBATIM )
+
+ configure_file("${COMMON_DIR}/sr_constants.h.in" "${COMMON_BIN_DIR}/sr_constants.h" ESCAPE_QUOTES @ONLY)
+
+Index: sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf/src/common/sysrepo.pb-c.c
+===================================================================
+--- /dev/null
++++ sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf/src/common/sysrepo.pb-c.c
+@@ -0,0 +1,10517 @@
++/* Generated by the protocol buffer compiler. DO NOT EDIT! */
++/* Generated from: sysrepo.proto */
++
++/* Do not generate deprecated warnings for self */
++#ifndef PROTOBUF_C__NO_DEPRECATED
++#define PROTOBUF_C__NO_DEPRECATED
++#endif
++
++#include "sysrepo.pb-c.h"
++void sr__value__init
++ (Sr__Value *message)
++{
++ static Sr__Value init_value = SR__VALUE__INIT;
++ *message = init_value;
++}
++size_t sr__value__get_packed_size
++ (const Sr__Value *message)
++{
++ assert(message->base.descriptor == &sr__value__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__value__pack
++ (const Sr__Value *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__value__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__value__pack_to_buffer
++ (const Sr__Value *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__value__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__Value *
++ sr__value__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__Value *)
++ protobuf_c_message_unpack (&sr__value__descriptor,
++ allocator, len, data);
++}
++void sr__value__free_unpacked
++ (Sr__Value *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__value__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__node__init
++ (Sr__Node *message)
++{
++ static Sr__Node init_value = SR__NODE__INIT;
++ *message = init_value;
++}
++size_t sr__node__get_packed_size
++ (const Sr__Node *message)
++{
++ assert(message->base.descriptor == &sr__node__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__node__pack
++ (const Sr__Node *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__node__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__node__pack_to_buffer
++ (const Sr__Node *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__node__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__Node *
++ sr__node__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__Node *)
++ protobuf_c_message_unpack (&sr__node__descriptor,
++ allocator, len, data);
++}
++void sr__node__free_unpacked
++ (Sr__Node *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__node__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__error__init
++ (Sr__Error *message)
++{
++ static Sr__Error init_value = SR__ERROR__INIT;
++ *message = init_value;
++}
++size_t sr__error__get_packed_size
++ (const Sr__Error *message)
++{
++ assert(message->base.descriptor == &sr__error__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__error__pack
++ (const Sr__Error *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__error__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__error__pack_to_buffer
++ (const Sr__Error *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__error__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__Error *
++ sr__error__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__Error *)
++ protobuf_c_message_unpack (&sr__error__descriptor,
++ allocator, len, data);
++}
++void sr__error__free_unpacked
++ (Sr__Error *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__error__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__session_start_req__init
++ (Sr__SessionStartReq *message)
++{
++ static Sr__SessionStartReq init_value = SR__SESSION_START_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__session_start_req__get_packed_size
++ (const Sr__SessionStartReq *message)
++{
++ assert(message->base.descriptor == &sr__session_start_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__session_start_req__pack
++ (const Sr__SessionStartReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__session_start_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__session_start_req__pack_to_buffer
++ (const Sr__SessionStartReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__session_start_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__SessionStartReq *
++ sr__session_start_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__SessionStartReq *)
++ protobuf_c_message_unpack (&sr__session_start_req__descriptor,
++ allocator, len, data);
++}
++void sr__session_start_req__free_unpacked
++ (Sr__SessionStartReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__session_start_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__session_start_resp__init
++ (Sr__SessionStartResp *message)
++{
++ static Sr__SessionStartResp init_value = SR__SESSION_START_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__session_start_resp__get_packed_size
++ (const Sr__SessionStartResp *message)
++{
++ assert(message->base.descriptor == &sr__session_start_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__session_start_resp__pack
++ (const Sr__SessionStartResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__session_start_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__session_start_resp__pack_to_buffer
++ (const Sr__SessionStartResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__session_start_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__SessionStartResp *
++ sr__session_start_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__SessionStartResp *)
++ protobuf_c_message_unpack (&sr__session_start_resp__descriptor,
++ allocator, len, data);
++}
++void sr__session_start_resp__free_unpacked
++ (Sr__SessionStartResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__session_start_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__session_stop_req__init
++ (Sr__SessionStopReq *message)
++{
++ static Sr__SessionStopReq init_value = SR__SESSION_STOP_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__session_stop_req__get_packed_size
++ (const Sr__SessionStopReq *message)
++{
++ assert(message->base.descriptor == &sr__session_stop_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__session_stop_req__pack
++ (const Sr__SessionStopReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__session_stop_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__session_stop_req__pack_to_buffer
++ (const Sr__SessionStopReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__session_stop_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__SessionStopReq *
++ sr__session_stop_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__SessionStopReq *)
++ protobuf_c_message_unpack (&sr__session_stop_req__descriptor,
++ allocator, len, data);
++}
++void sr__session_stop_req__free_unpacked
++ (Sr__SessionStopReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__session_stop_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__session_stop_resp__init
++ (Sr__SessionStopResp *message)
++{
++ static Sr__SessionStopResp init_value = SR__SESSION_STOP_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__session_stop_resp__get_packed_size
++ (const Sr__SessionStopResp *message)
++{
++ assert(message->base.descriptor == &sr__session_stop_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__session_stop_resp__pack
++ (const Sr__SessionStopResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__session_stop_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__session_stop_resp__pack_to_buffer
++ (const Sr__SessionStopResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__session_stop_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__SessionStopResp *
++ sr__session_stop_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__SessionStopResp *)
++ protobuf_c_message_unpack (&sr__session_stop_resp__descriptor,
++ allocator, len, data);
++}
++void sr__session_stop_resp__free_unpacked
++ (Sr__SessionStopResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__session_stop_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__session_refresh_req__init
++ (Sr__SessionRefreshReq *message)
++{
++ static Sr__SessionRefreshReq init_value = SR__SESSION_REFRESH_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__session_refresh_req__get_packed_size
++ (const Sr__SessionRefreshReq *message)
++{
++ assert(message->base.descriptor == &sr__session_refresh_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__session_refresh_req__pack
++ (const Sr__SessionRefreshReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__session_refresh_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__session_refresh_req__pack_to_buffer
++ (const Sr__SessionRefreshReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__session_refresh_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__SessionRefreshReq *
++ sr__session_refresh_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__SessionRefreshReq *)
++ protobuf_c_message_unpack (&sr__session_refresh_req__descriptor,
++ allocator, len, data);
++}
++void sr__session_refresh_req__free_unpacked
++ (Sr__SessionRefreshReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__session_refresh_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__session_refresh_resp__init
++ (Sr__SessionRefreshResp *message)
++{
++ static Sr__SessionRefreshResp init_value = SR__SESSION_REFRESH_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__session_refresh_resp__get_packed_size
++ (const Sr__SessionRefreshResp *message)
++{
++ assert(message->base.descriptor == &sr__session_refresh_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__session_refresh_resp__pack
++ (const Sr__SessionRefreshResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__session_refresh_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__session_refresh_resp__pack_to_buffer
++ (const Sr__SessionRefreshResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__session_refresh_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__SessionRefreshResp *
++ sr__session_refresh_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__SessionRefreshResp *)
++ protobuf_c_message_unpack (&sr__session_refresh_resp__descriptor,
++ allocator, len, data);
++}
++void sr__session_refresh_resp__free_unpacked
++ (Sr__SessionRefreshResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__session_refresh_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__session_check_req__init
++ (Sr__SessionCheckReq *message)
++{
++ static Sr__SessionCheckReq init_value = SR__SESSION_CHECK_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__session_check_req__get_packed_size
++ (const Sr__SessionCheckReq *message)
++{
++ assert(message->base.descriptor == &sr__session_check_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__session_check_req__pack
++ (const Sr__SessionCheckReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__session_check_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__session_check_req__pack_to_buffer
++ (const Sr__SessionCheckReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__session_check_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__SessionCheckReq *
++ sr__session_check_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__SessionCheckReq *)
++ protobuf_c_message_unpack (&sr__session_check_req__descriptor,
++ allocator, len, data);
++}
++void sr__session_check_req__free_unpacked
++ (Sr__SessionCheckReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__session_check_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__session_check_resp__init
++ (Sr__SessionCheckResp *message)
++{
++ static Sr__SessionCheckResp init_value = SR__SESSION_CHECK_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__session_check_resp__get_packed_size
++ (const Sr__SessionCheckResp *message)
++{
++ assert(message->base.descriptor == &sr__session_check_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__session_check_resp__pack
++ (const Sr__SessionCheckResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__session_check_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__session_check_resp__pack_to_buffer
++ (const Sr__SessionCheckResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__session_check_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__SessionCheckResp *
++ sr__session_check_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__SessionCheckResp *)
++ protobuf_c_message_unpack (&sr__session_check_resp__descriptor,
++ allocator, len, data);
++}
++void sr__session_check_resp__free_unpacked
++ (Sr__SessionCheckResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__session_check_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__session_switch_ds_req__init
++ (Sr__SessionSwitchDsReq *message)
++{
++ static Sr__SessionSwitchDsReq init_value = SR__SESSION_SWITCH_DS_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__session_switch_ds_req__get_packed_size
++ (const Sr__SessionSwitchDsReq *message)
++{
++ assert(message->base.descriptor == &sr__session_switch_ds_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__session_switch_ds_req__pack
++ (const Sr__SessionSwitchDsReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__session_switch_ds_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__session_switch_ds_req__pack_to_buffer
++ (const Sr__SessionSwitchDsReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__session_switch_ds_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__SessionSwitchDsReq *
++ sr__session_switch_ds_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__SessionSwitchDsReq *)
++ protobuf_c_message_unpack (&sr__session_switch_ds_req__descriptor,
++ allocator, len, data);
++}
++void sr__session_switch_ds_req__free_unpacked
++ (Sr__SessionSwitchDsReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__session_switch_ds_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__session_switch_ds_resp__init
++ (Sr__SessionSwitchDsResp *message)
++{
++ static Sr__SessionSwitchDsResp init_value = SR__SESSION_SWITCH_DS_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__session_switch_ds_resp__get_packed_size
++ (const Sr__SessionSwitchDsResp *message)
++{
++ assert(message->base.descriptor == &sr__session_switch_ds_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__session_switch_ds_resp__pack
++ (const Sr__SessionSwitchDsResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__session_switch_ds_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__session_switch_ds_resp__pack_to_buffer
++ (const Sr__SessionSwitchDsResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__session_switch_ds_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__SessionSwitchDsResp *
++ sr__session_switch_ds_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__SessionSwitchDsResp *)
++ protobuf_c_message_unpack (&sr__session_switch_ds_resp__descriptor,
++ allocator, len, data);
++}
++void sr__session_switch_ds_resp__free_unpacked
++ (Sr__SessionSwitchDsResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__session_switch_ds_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__session_set_opts_req__init
++ (Sr__SessionSetOptsReq *message)
++{
++ static Sr__SessionSetOptsReq init_value = SR__SESSION_SET_OPTS_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__session_set_opts_req__get_packed_size
++ (const Sr__SessionSetOptsReq *message)
++{
++ assert(message->base.descriptor == &sr__session_set_opts_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__session_set_opts_req__pack
++ (const Sr__SessionSetOptsReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__session_set_opts_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__session_set_opts_req__pack_to_buffer
++ (const Sr__SessionSetOptsReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__session_set_opts_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__SessionSetOptsReq *
++ sr__session_set_opts_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__SessionSetOptsReq *)
++ protobuf_c_message_unpack (&sr__session_set_opts_req__descriptor,
++ allocator, len, data);
++}
++void sr__session_set_opts_req__free_unpacked
++ (Sr__SessionSetOptsReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__session_set_opts_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__session_set_opts_resp__init
++ (Sr__SessionSetOptsResp *message)
++{
++ static Sr__SessionSetOptsResp init_value = SR__SESSION_SET_OPTS_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__session_set_opts_resp__get_packed_size
++ (const Sr__SessionSetOptsResp *message)
++{
++ assert(message->base.descriptor == &sr__session_set_opts_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__session_set_opts_resp__pack
++ (const Sr__SessionSetOptsResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__session_set_opts_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__session_set_opts_resp__pack_to_buffer
++ (const Sr__SessionSetOptsResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__session_set_opts_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__SessionSetOptsResp *
++ sr__session_set_opts_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__SessionSetOptsResp *)
++ protobuf_c_message_unpack (&sr__session_set_opts_resp__descriptor,
++ allocator, len, data);
++}
++void sr__session_set_opts_resp__free_unpacked
++ (Sr__SessionSetOptsResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__session_set_opts_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__version_verify_req__init
++ (Sr__VersionVerifyReq *message)
++{
++ static Sr__VersionVerifyReq init_value = SR__VERSION_VERIFY_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__version_verify_req__get_packed_size
++ (const Sr__VersionVerifyReq *message)
++{
++ assert(message->base.descriptor == &sr__version_verify_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__version_verify_req__pack
++ (const Sr__VersionVerifyReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__version_verify_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__version_verify_req__pack_to_buffer
++ (const Sr__VersionVerifyReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__version_verify_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__VersionVerifyReq *
++ sr__version_verify_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__VersionVerifyReq *)
++ protobuf_c_message_unpack (&sr__version_verify_req__descriptor,
++ allocator, len, data);
++}
++void sr__version_verify_req__free_unpacked
++ (Sr__VersionVerifyReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__version_verify_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__version_verify_resp__init
++ (Sr__VersionVerifyResp *message)
++{
++ static Sr__VersionVerifyResp init_value = SR__VERSION_VERIFY_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__version_verify_resp__get_packed_size
++ (const Sr__VersionVerifyResp *message)
++{
++ assert(message->base.descriptor == &sr__version_verify_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__version_verify_resp__pack
++ (const Sr__VersionVerifyResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__version_verify_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__version_verify_resp__pack_to_buffer
++ (const Sr__VersionVerifyResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__version_verify_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__VersionVerifyResp *
++ sr__version_verify_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__VersionVerifyResp *)
++ protobuf_c_message_unpack (&sr__version_verify_resp__descriptor,
++ allocator, len, data);
++}
++void sr__version_verify_resp__free_unpacked
++ (Sr__VersionVerifyResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__version_verify_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__schema_revision__init
++ (Sr__SchemaRevision *message)
++{
++ static Sr__SchemaRevision init_value = SR__SCHEMA_REVISION__INIT;
++ *message = init_value;
++}
++size_t sr__schema_revision__get_packed_size
++ (const Sr__SchemaRevision *message)
++{
++ assert(message->base.descriptor == &sr__schema_revision__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__schema_revision__pack
++ (const Sr__SchemaRevision *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__schema_revision__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__schema_revision__pack_to_buffer
++ (const Sr__SchemaRevision *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__schema_revision__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__SchemaRevision *
++ sr__schema_revision__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__SchemaRevision *)
++ protobuf_c_message_unpack (&sr__schema_revision__descriptor,
++ allocator, len, data);
++}
++void sr__schema_revision__free_unpacked
++ (Sr__SchemaRevision *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__schema_revision__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__schema_submodule__init
++ (Sr__SchemaSubmodule *message)
++{
++ static Sr__SchemaSubmodule init_value = SR__SCHEMA_SUBMODULE__INIT;
++ *message = init_value;
++}
++size_t sr__schema_submodule__get_packed_size
++ (const Sr__SchemaSubmodule *message)
++{
++ assert(message->base.descriptor == &sr__schema_submodule__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__schema_submodule__pack
++ (const Sr__SchemaSubmodule *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__schema_submodule__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__schema_submodule__pack_to_buffer
++ (const Sr__SchemaSubmodule *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__schema_submodule__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__SchemaSubmodule *
++ sr__schema_submodule__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__SchemaSubmodule *)
++ protobuf_c_message_unpack (&sr__schema_submodule__descriptor,
++ allocator, len, data);
++}
++void sr__schema_submodule__free_unpacked
++ (Sr__SchemaSubmodule *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__schema_submodule__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__schema__init
++ (Sr__Schema *message)
++{
++ static Sr__Schema init_value = SR__SCHEMA__INIT;
++ *message = init_value;
++}
++size_t sr__schema__get_packed_size
++ (const Sr__Schema *message)
++{
++ assert(message->base.descriptor == &sr__schema__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__schema__pack
++ (const Sr__Schema *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__schema__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__schema__pack_to_buffer
++ (const Sr__Schema *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__schema__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__Schema *
++ sr__schema__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__Schema *)
++ protobuf_c_message_unpack (&sr__schema__descriptor,
++ allocator, len, data);
++}
++void sr__schema__free_unpacked
++ (Sr__Schema *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__schema__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__list_schemas_req__init
++ (Sr__ListSchemasReq *message)
++{
++ static Sr__ListSchemasReq init_value = SR__LIST_SCHEMAS_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__list_schemas_req__get_packed_size
++ (const Sr__ListSchemasReq *message)
++{
++ assert(message->base.descriptor == &sr__list_schemas_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__list_schemas_req__pack
++ (const Sr__ListSchemasReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__list_schemas_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__list_schemas_req__pack_to_buffer
++ (const Sr__ListSchemasReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__list_schemas_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__ListSchemasReq *
++ sr__list_schemas_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__ListSchemasReq *)
++ protobuf_c_message_unpack (&sr__list_schemas_req__descriptor,
++ allocator, len, data);
++}
++void sr__list_schemas_req__free_unpacked
++ (Sr__ListSchemasReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__list_schemas_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__list_schemas_resp__init
++ (Sr__ListSchemasResp *message)
++{
++ static Sr__ListSchemasResp init_value = SR__LIST_SCHEMAS_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__list_schemas_resp__get_packed_size
++ (const Sr__ListSchemasResp *message)
++{
++ assert(message->base.descriptor == &sr__list_schemas_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__list_schemas_resp__pack
++ (const Sr__ListSchemasResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__list_schemas_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__list_schemas_resp__pack_to_buffer
++ (const Sr__ListSchemasResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__list_schemas_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__ListSchemasResp *
++ sr__list_schemas_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__ListSchemasResp *)
++ protobuf_c_message_unpack (&sr__list_schemas_resp__descriptor,
++ allocator, len, data);
++}
++void sr__list_schemas_resp__free_unpacked
++ (Sr__ListSchemasResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__list_schemas_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__get_schema_req__init
++ (Sr__GetSchemaReq *message)
++{
++ static Sr__GetSchemaReq init_value = SR__GET_SCHEMA_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__get_schema_req__get_packed_size
++ (const Sr__GetSchemaReq *message)
++{
++ assert(message->base.descriptor == &sr__get_schema_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__get_schema_req__pack
++ (const Sr__GetSchemaReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__get_schema_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__get_schema_req__pack_to_buffer
++ (const Sr__GetSchemaReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__get_schema_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__GetSchemaReq *
++ sr__get_schema_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__GetSchemaReq *)
++ protobuf_c_message_unpack (&sr__get_schema_req__descriptor,
++ allocator, len, data);
++}
++void sr__get_schema_req__free_unpacked
++ (Sr__GetSchemaReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__get_schema_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__get_schema_resp__init
++ (Sr__GetSchemaResp *message)
++{
++ static Sr__GetSchemaResp init_value = SR__GET_SCHEMA_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__get_schema_resp__get_packed_size
++ (const Sr__GetSchemaResp *message)
++{
++ assert(message->base.descriptor == &sr__get_schema_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__get_schema_resp__pack
++ (const Sr__GetSchemaResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__get_schema_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__get_schema_resp__pack_to_buffer
++ (const Sr__GetSchemaResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__get_schema_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__GetSchemaResp *
++ sr__get_schema_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__GetSchemaResp *)
++ protobuf_c_message_unpack (&sr__get_schema_resp__descriptor,
++ allocator, len, data);
++}
++void sr__get_schema_resp__free_unpacked
++ (Sr__GetSchemaResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__get_schema_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__get_item_req__init
++ (Sr__GetItemReq *message)
++{
++ static Sr__GetItemReq init_value = SR__GET_ITEM_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__get_item_req__get_packed_size
++ (const Sr__GetItemReq *message)
++{
++ assert(message->base.descriptor == &sr__get_item_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__get_item_req__pack
++ (const Sr__GetItemReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__get_item_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__get_item_req__pack_to_buffer
++ (const Sr__GetItemReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__get_item_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__GetItemReq *
++ sr__get_item_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__GetItemReq *)
++ protobuf_c_message_unpack (&sr__get_item_req__descriptor,
++ allocator, len, data);
++}
++void sr__get_item_req__free_unpacked
++ (Sr__GetItemReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__get_item_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__get_item_resp__init
++ (Sr__GetItemResp *message)
++{
++ static Sr__GetItemResp init_value = SR__GET_ITEM_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__get_item_resp__get_packed_size
++ (const Sr__GetItemResp *message)
++{
++ assert(message->base.descriptor == &sr__get_item_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__get_item_resp__pack
++ (const Sr__GetItemResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__get_item_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__get_item_resp__pack_to_buffer
++ (const Sr__GetItemResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__get_item_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__GetItemResp *
++ sr__get_item_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__GetItemResp *)
++ protobuf_c_message_unpack (&sr__get_item_resp__descriptor,
++ allocator, len, data);
++}
++void sr__get_item_resp__free_unpacked
++ (Sr__GetItemResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__get_item_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__get_items_req__init
++ (Sr__GetItemsReq *message)
++{
++ static Sr__GetItemsReq init_value = SR__GET_ITEMS_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__get_items_req__get_packed_size
++ (const Sr__GetItemsReq *message)
++{
++ assert(message->base.descriptor == &sr__get_items_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__get_items_req__pack
++ (const Sr__GetItemsReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__get_items_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__get_items_req__pack_to_buffer
++ (const Sr__GetItemsReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__get_items_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__GetItemsReq *
++ sr__get_items_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__GetItemsReq *)
++ protobuf_c_message_unpack (&sr__get_items_req__descriptor,
++ allocator, len, data);
++}
++void sr__get_items_req__free_unpacked
++ (Sr__GetItemsReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__get_items_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__get_items_resp__init
++ (Sr__GetItemsResp *message)
++{
++ static Sr__GetItemsResp init_value = SR__GET_ITEMS_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__get_items_resp__get_packed_size
++ (const Sr__GetItemsResp *message)
++{
++ assert(message->base.descriptor == &sr__get_items_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__get_items_resp__pack
++ (const Sr__GetItemsResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__get_items_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__get_items_resp__pack_to_buffer
++ (const Sr__GetItemsResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__get_items_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__GetItemsResp *
++ sr__get_items_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__GetItemsResp *)
++ protobuf_c_message_unpack (&sr__get_items_resp__descriptor,
++ allocator, len, data);
++}
++void sr__get_items_resp__free_unpacked
++ (Sr__GetItemsResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__get_items_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__get_subtree_req__init
++ (Sr__GetSubtreeReq *message)
++{
++ static Sr__GetSubtreeReq init_value = SR__GET_SUBTREE_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__get_subtree_req__get_packed_size
++ (const Sr__GetSubtreeReq *message)
++{
++ assert(message->base.descriptor == &sr__get_subtree_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__get_subtree_req__pack
++ (const Sr__GetSubtreeReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__get_subtree_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__get_subtree_req__pack_to_buffer
++ (const Sr__GetSubtreeReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__get_subtree_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__GetSubtreeReq *
++ sr__get_subtree_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__GetSubtreeReq *)
++ protobuf_c_message_unpack (&sr__get_subtree_req__descriptor,
++ allocator, len, data);
++}
++void sr__get_subtree_req__free_unpacked
++ (Sr__GetSubtreeReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__get_subtree_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__get_subtree_resp__init
++ (Sr__GetSubtreeResp *message)
++{
++ static Sr__GetSubtreeResp init_value = SR__GET_SUBTREE_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__get_subtree_resp__get_packed_size
++ (const Sr__GetSubtreeResp *message)
++{
++ assert(message->base.descriptor == &sr__get_subtree_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__get_subtree_resp__pack
++ (const Sr__GetSubtreeResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__get_subtree_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__get_subtree_resp__pack_to_buffer
++ (const Sr__GetSubtreeResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__get_subtree_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__GetSubtreeResp *
++ sr__get_subtree_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__GetSubtreeResp *)
++ protobuf_c_message_unpack (&sr__get_subtree_resp__descriptor,
++ allocator, len, data);
++}
++void sr__get_subtree_resp__free_unpacked
++ (Sr__GetSubtreeResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__get_subtree_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__get_subtrees_req__init
++ (Sr__GetSubtreesReq *message)
++{
++ static Sr__GetSubtreesReq init_value = SR__GET_SUBTREES_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__get_subtrees_req__get_packed_size
++ (const Sr__GetSubtreesReq *message)
++{
++ assert(message->base.descriptor == &sr__get_subtrees_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__get_subtrees_req__pack
++ (const Sr__GetSubtreesReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__get_subtrees_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__get_subtrees_req__pack_to_buffer
++ (const Sr__GetSubtreesReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__get_subtrees_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__GetSubtreesReq *
++ sr__get_subtrees_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__GetSubtreesReq *)
++ protobuf_c_message_unpack (&sr__get_subtrees_req__descriptor,
++ allocator, len, data);
++}
++void sr__get_subtrees_req__free_unpacked
++ (Sr__GetSubtreesReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__get_subtrees_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__get_subtrees_resp__init
++ (Sr__GetSubtreesResp *message)
++{
++ static Sr__GetSubtreesResp init_value = SR__GET_SUBTREES_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__get_subtrees_resp__get_packed_size
++ (const Sr__GetSubtreesResp *message)
++{
++ assert(message->base.descriptor == &sr__get_subtrees_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__get_subtrees_resp__pack
++ (const Sr__GetSubtreesResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__get_subtrees_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__get_subtrees_resp__pack_to_buffer
++ (const Sr__GetSubtreesResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__get_subtrees_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__GetSubtreesResp *
++ sr__get_subtrees_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__GetSubtreesResp *)
++ protobuf_c_message_unpack (&sr__get_subtrees_resp__descriptor,
++ allocator, len, data);
++}
++void sr__get_subtrees_resp__free_unpacked
++ (Sr__GetSubtreesResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__get_subtrees_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__get_subtree_chunk_req__init
++ (Sr__GetSubtreeChunkReq *message)
++{
++ static Sr__GetSubtreeChunkReq init_value = SR__GET_SUBTREE_CHUNK_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__get_subtree_chunk_req__get_packed_size
++ (const Sr__GetSubtreeChunkReq *message)
++{
++ assert(message->base.descriptor == &sr__get_subtree_chunk_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__get_subtree_chunk_req__pack
++ (const Sr__GetSubtreeChunkReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__get_subtree_chunk_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__get_subtree_chunk_req__pack_to_buffer
++ (const Sr__GetSubtreeChunkReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__get_subtree_chunk_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__GetSubtreeChunkReq *
++ sr__get_subtree_chunk_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__GetSubtreeChunkReq *)
++ protobuf_c_message_unpack (&sr__get_subtree_chunk_req__descriptor,
++ allocator, len, data);
++}
++void sr__get_subtree_chunk_req__free_unpacked
++ (Sr__GetSubtreeChunkReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__get_subtree_chunk_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__get_subtree_chunk_resp__init
++ (Sr__GetSubtreeChunkResp *message)
++{
++ static Sr__GetSubtreeChunkResp init_value = SR__GET_SUBTREE_CHUNK_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__get_subtree_chunk_resp__get_packed_size
++ (const Sr__GetSubtreeChunkResp *message)
++{
++ assert(message->base.descriptor == &sr__get_subtree_chunk_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__get_subtree_chunk_resp__pack
++ (const Sr__GetSubtreeChunkResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__get_subtree_chunk_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__get_subtree_chunk_resp__pack_to_buffer
++ (const Sr__GetSubtreeChunkResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__get_subtree_chunk_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__GetSubtreeChunkResp *
++ sr__get_subtree_chunk_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__GetSubtreeChunkResp *)
++ protobuf_c_message_unpack (&sr__get_subtree_chunk_resp__descriptor,
++ allocator, len, data);
++}
++void sr__get_subtree_chunk_resp__free_unpacked
++ (Sr__GetSubtreeChunkResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__get_subtree_chunk_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__set_item_req__init
++ (Sr__SetItemReq *message)
++{
++ static Sr__SetItemReq init_value = SR__SET_ITEM_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__set_item_req__get_packed_size
++ (const Sr__SetItemReq *message)
++{
++ assert(message->base.descriptor == &sr__set_item_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__set_item_req__pack
++ (const Sr__SetItemReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__set_item_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__set_item_req__pack_to_buffer
++ (const Sr__SetItemReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__set_item_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__SetItemReq *
++ sr__set_item_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__SetItemReq *)
++ protobuf_c_message_unpack (&sr__set_item_req__descriptor,
++ allocator, len, data);
++}
++void sr__set_item_req__free_unpacked
++ (Sr__SetItemReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__set_item_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__set_item_resp__init
++ (Sr__SetItemResp *message)
++{
++ static Sr__SetItemResp init_value = SR__SET_ITEM_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__set_item_resp__get_packed_size
++ (const Sr__SetItemResp *message)
++{
++ assert(message->base.descriptor == &sr__set_item_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__set_item_resp__pack
++ (const Sr__SetItemResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__set_item_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__set_item_resp__pack_to_buffer
++ (const Sr__SetItemResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__set_item_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__SetItemResp *
++ sr__set_item_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__SetItemResp *)
++ protobuf_c_message_unpack (&sr__set_item_resp__descriptor,
++ allocator, len, data);
++}
++void sr__set_item_resp__free_unpacked
++ (Sr__SetItemResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__set_item_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__set_item_str_req__init
++ (Sr__SetItemStrReq *message)
++{
++ static Sr__SetItemStrReq init_value = SR__SET_ITEM_STR_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__set_item_str_req__get_packed_size
++ (const Sr__SetItemStrReq *message)
++{
++ assert(message->base.descriptor == &sr__set_item_str_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__set_item_str_req__pack
++ (const Sr__SetItemStrReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__set_item_str_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__set_item_str_req__pack_to_buffer
++ (const Sr__SetItemStrReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__set_item_str_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__SetItemStrReq *
++ sr__set_item_str_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__SetItemStrReq *)
++ protobuf_c_message_unpack (&sr__set_item_str_req__descriptor,
++ allocator, len, data);
++}
++void sr__set_item_str_req__free_unpacked
++ (Sr__SetItemStrReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__set_item_str_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__set_item_str_resp__init
++ (Sr__SetItemStrResp *message)
++{
++ static Sr__SetItemStrResp init_value = SR__SET_ITEM_STR_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__set_item_str_resp__get_packed_size
++ (const Sr__SetItemStrResp *message)
++{
++ assert(message->base.descriptor == &sr__set_item_str_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__set_item_str_resp__pack
++ (const Sr__SetItemStrResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__set_item_str_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__set_item_str_resp__pack_to_buffer
++ (const Sr__SetItemStrResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__set_item_str_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__SetItemStrResp *
++ sr__set_item_str_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__SetItemStrResp *)
++ protobuf_c_message_unpack (&sr__set_item_str_resp__descriptor,
++ allocator, len, data);
++}
++void sr__set_item_str_resp__free_unpacked
++ (Sr__SetItemStrResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__set_item_str_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__delete_item_req__init
++ (Sr__DeleteItemReq *message)
++{
++ static Sr__DeleteItemReq init_value = SR__DELETE_ITEM_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__delete_item_req__get_packed_size
++ (const Sr__DeleteItemReq *message)
++{
++ assert(message->base.descriptor == &sr__delete_item_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__delete_item_req__pack
++ (const Sr__DeleteItemReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__delete_item_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__delete_item_req__pack_to_buffer
++ (const Sr__DeleteItemReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__delete_item_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__DeleteItemReq *
++ sr__delete_item_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__DeleteItemReq *)
++ protobuf_c_message_unpack (&sr__delete_item_req__descriptor,
++ allocator, len, data);
++}
++void sr__delete_item_req__free_unpacked
++ (Sr__DeleteItemReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__delete_item_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__delete_item_resp__init
++ (Sr__DeleteItemResp *message)
++{
++ static Sr__DeleteItemResp init_value = SR__DELETE_ITEM_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__delete_item_resp__get_packed_size
++ (const Sr__DeleteItemResp *message)
++{
++ assert(message->base.descriptor == &sr__delete_item_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__delete_item_resp__pack
++ (const Sr__DeleteItemResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__delete_item_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__delete_item_resp__pack_to_buffer
++ (const Sr__DeleteItemResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__delete_item_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__DeleteItemResp *
++ sr__delete_item_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__DeleteItemResp *)
++ protobuf_c_message_unpack (&sr__delete_item_resp__descriptor,
++ allocator, len, data);
++}
++void sr__delete_item_resp__free_unpacked
++ (Sr__DeleteItemResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__delete_item_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__move_item_req__init
++ (Sr__MoveItemReq *message)
++{
++ static Sr__MoveItemReq init_value = SR__MOVE_ITEM_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__move_item_req__get_packed_size
++ (const Sr__MoveItemReq *message)
++{
++ assert(message->base.descriptor == &sr__move_item_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__move_item_req__pack
++ (const Sr__MoveItemReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__move_item_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__move_item_req__pack_to_buffer
++ (const Sr__MoveItemReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__move_item_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__MoveItemReq *
++ sr__move_item_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__MoveItemReq *)
++ protobuf_c_message_unpack (&sr__move_item_req__descriptor,
++ allocator, len, data);
++}
++void sr__move_item_req__free_unpacked
++ (Sr__MoveItemReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__move_item_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__move_item_resp__init
++ (Sr__MoveItemResp *message)
++{
++ static Sr__MoveItemResp init_value = SR__MOVE_ITEM_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__move_item_resp__get_packed_size
++ (const Sr__MoveItemResp *message)
++{
++ assert(message->base.descriptor == &sr__move_item_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__move_item_resp__pack
++ (const Sr__MoveItemResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__move_item_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__move_item_resp__pack_to_buffer
++ (const Sr__MoveItemResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__move_item_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__MoveItemResp *
++ sr__move_item_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__MoveItemResp *)
++ protobuf_c_message_unpack (&sr__move_item_resp__descriptor,
++ allocator, len, data);
++}
++void sr__move_item_resp__free_unpacked
++ (Sr__MoveItemResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__move_item_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__validate_req__init
++ (Sr__ValidateReq *message)
++{
++ static Sr__ValidateReq init_value = SR__VALIDATE_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__validate_req__get_packed_size
++ (const Sr__ValidateReq *message)
++{
++ assert(message->base.descriptor == &sr__validate_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__validate_req__pack
++ (const Sr__ValidateReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__validate_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__validate_req__pack_to_buffer
++ (const Sr__ValidateReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__validate_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__ValidateReq *
++ sr__validate_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__ValidateReq *)
++ protobuf_c_message_unpack (&sr__validate_req__descriptor,
++ allocator, len, data);
++}
++void sr__validate_req__free_unpacked
++ (Sr__ValidateReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__validate_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__validate_resp__init
++ (Sr__ValidateResp *message)
++{
++ static Sr__ValidateResp init_value = SR__VALIDATE_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__validate_resp__get_packed_size
++ (const Sr__ValidateResp *message)
++{
++ assert(message->base.descriptor == &sr__validate_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__validate_resp__pack
++ (const Sr__ValidateResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__validate_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__validate_resp__pack_to_buffer
++ (const Sr__ValidateResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__validate_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__ValidateResp *
++ sr__validate_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__ValidateResp *)
++ protobuf_c_message_unpack (&sr__validate_resp__descriptor,
++ allocator, len, data);
++}
++void sr__validate_resp__free_unpacked
++ (Sr__ValidateResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__validate_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__commit_req__init
++ (Sr__CommitReq *message)
++{
++ static Sr__CommitReq init_value = SR__COMMIT_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__commit_req__get_packed_size
++ (const Sr__CommitReq *message)
++{
++ assert(message->base.descriptor == &sr__commit_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__commit_req__pack
++ (const Sr__CommitReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__commit_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__commit_req__pack_to_buffer
++ (const Sr__CommitReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__commit_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__CommitReq *
++ sr__commit_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__CommitReq *)
++ protobuf_c_message_unpack (&sr__commit_req__descriptor,
++ allocator, len, data);
++}
++void sr__commit_req__free_unpacked
++ (Sr__CommitReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__commit_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__commit_resp__init
++ (Sr__CommitResp *message)
++{
++ static Sr__CommitResp init_value = SR__COMMIT_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__commit_resp__get_packed_size
++ (const Sr__CommitResp *message)
++{
++ assert(message->base.descriptor == &sr__commit_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__commit_resp__pack
++ (const Sr__CommitResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__commit_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__commit_resp__pack_to_buffer
++ (const Sr__CommitResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__commit_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__CommitResp *
++ sr__commit_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__CommitResp *)
++ protobuf_c_message_unpack (&sr__commit_resp__descriptor,
++ allocator, len, data);
++}
++void sr__commit_resp__free_unpacked
++ (Sr__CommitResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__commit_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__discard_changes_req__init
++ (Sr__DiscardChangesReq *message)
++{
++ static Sr__DiscardChangesReq init_value = SR__DISCARD_CHANGES_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__discard_changes_req__get_packed_size
++ (const Sr__DiscardChangesReq *message)
++{
++ assert(message->base.descriptor == &sr__discard_changes_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__discard_changes_req__pack
++ (const Sr__DiscardChangesReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__discard_changes_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__discard_changes_req__pack_to_buffer
++ (const Sr__DiscardChangesReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__discard_changes_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__DiscardChangesReq *
++ sr__discard_changes_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__DiscardChangesReq *)
++ protobuf_c_message_unpack (&sr__discard_changes_req__descriptor,
++ allocator, len, data);
++}
++void sr__discard_changes_req__free_unpacked
++ (Sr__DiscardChangesReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__discard_changes_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__discard_changes_resp__init
++ (Sr__DiscardChangesResp *message)
++{
++ static Sr__DiscardChangesResp init_value = SR__DISCARD_CHANGES_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__discard_changes_resp__get_packed_size
++ (const Sr__DiscardChangesResp *message)
++{
++ assert(message->base.descriptor == &sr__discard_changes_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__discard_changes_resp__pack
++ (const Sr__DiscardChangesResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__discard_changes_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__discard_changes_resp__pack_to_buffer
++ (const Sr__DiscardChangesResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__discard_changes_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__DiscardChangesResp *
++ sr__discard_changes_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__DiscardChangesResp *)
++ protobuf_c_message_unpack (&sr__discard_changes_resp__descriptor,
++ allocator, len, data);
++}
++void sr__discard_changes_resp__free_unpacked
++ (Sr__DiscardChangesResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__discard_changes_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__copy_config_req__init
++ (Sr__CopyConfigReq *message)
++{
++ static Sr__CopyConfigReq init_value = SR__COPY_CONFIG_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__copy_config_req__get_packed_size
++ (const Sr__CopyConfigReq *message)
++{
++ assert(message->base.descriptor == &sr__copy_config_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__copy_config_req__pack
++ (const Sr__CopyConfigReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__copy_config_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__copy_config_req__pack_to_buffer
++ (const Sr__CopyConfigReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__copy_config_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__CopyConfigReq *
++ sr__copy_config_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__CopyConfigReq *)
++ protobuf_c_message_unpack (&sr__copy_config_req__descriptor,
++ allocator, len, data);
++}
++void sr__copy_config_req__free_unpacked
++ (Sr__CopyConfigReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__copy_config_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__copy_config_resp__init
++ (Sr__CopyConfigResp *message)
++{
++ static Sr__CopyConfigResp init_value = SR__COPY_CONFIG_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__copy_config_resp__get_packed_size
++ (const Sr__CopyConfigResp *message)
++{
++ assert(message->base.descriptor == &sr__copy_config_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__copy_config_resp__pack
++ (const Sr__CopyConfigResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__copy_config_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__copy_config_resp__pack_to_buffer
++ (const Sr__CopyConfigResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__copy_config_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__CopyConfigResp *
++ sr__copy_config_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__CopyConfigResp *)
++ protobuf_c_message_unpack (&sr__copy_config_resp__descriptor,
++ allocator, len, data);
++}
++void sr__copy_config_resp__free_unpacked
++ (Sr__CopyConfigResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__copy_config_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__lock_req__init
++ (Sr__LockReq *message)
++{
++ static Sr__LockReq init_value = SR__LOCK_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__lock_req__get_packed_size
++ (const Sr__LockReq *message)
++{
++ assert(message->base.descriptor == &sr__lock_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__lock_req__pack
++ (const Sr__LockReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__lock_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__lock_req__pack_to_buffer
++ (const Sr__LockReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__lock_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__LockReq *
++ sr__lock_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__LockReq *)
++ protobuf_c_message_unpack (&sr__lock_req__descriptor,
++ allocator, len, data);
++}
++void sr__lock_req__free_unpacked
++ (Sr__LockReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__lock_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__lock_resp__init
++ (Sr__LockResp *message)
++{
++ static Sr__LockResp init_value = SR__LOCK_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__lock_resp__get_packed_size
++ (const Sr__LockResp *message)
++{
++ assert(message->base.descriptor == &sr__lock_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__lock_resp__pack
++ (const Sr__LockResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__lock_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__lock_resp__pack_to_buffer
++ (const Sr__LockResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__lock_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__LockResp *
++ sr__lock_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__LockResp *)
++ protobuf_c_message_unpack (&sr__lock_resp__descriptor,
++ allocator, len, data);
++}
++void sr__lock_resp__free_unpacked
++ (Sr__LockResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__lock_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__unlock_req__init
++ (Sr__UnlockReq *message)
++{
++ static Sr__UnlockReq init_value = SR__UNLOCK_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__unlock_req__get_packed_size
++ (const Sr__UnlockReq *message)
++{
++ assert(message->base.descriptor == &sr__unlock_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__unlock_req__pack
++ (const Sr__UnlockReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__unlock_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__unlock_req__pack_to_buffer
++ (const Sr__UnlockReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__unlock_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__UnlockReq *
++ sr__unlock_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__UnlockReq *)
++ protobuf_c_message_unpack (&sr__unlock_req__descriptor,
++ allocator, len, data);
++}
++void sr__unlock_req__free_unpacked
++ (Sr__UnlockReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__unlock_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__unlock_resp__init
++ (Sr__UnlockResp *message)
++{
++ static Sr__UnlockResp init_value = SR__UNLOCK_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__unlock_resp__get_packed_size
++ (const Sr__UnlockResp *message)
++{
++ assert(message->base.descriptor == &sr__unlock_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__unlock_resp__pack
++ (const Sr__UnlockResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__unlock_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__unlock_resp__pack_to_buffer
++ (const Sr__UnlockResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__unlock_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__UnlockResp *
++ sr__unlock_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__UnlockResp *)
++ protobuf_c_message_unpack (&sr__unlock_resp__descriptor,
++ allocator, len, data);
++}
++void sr__unlock_resp__free_unpacked
++ (Sr__UnlockResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__unlock_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__subscribe_req__init
++ (Sr__SubscribeReq *message)
++{
++ static Sr__SubscribeReq init_value = SR__SUBSCRIBE_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__subscribe_req__get_packed_size
++ (const Sr__SubscribeReq *message)
++{
++ assert(message->base.descriptor == &sr__subscribe_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__subscribe_req__pack
++ (const Sr__SubscribeReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__subscribe_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__subscribe_req__pack_to_buffer
++ (const Sr__SubscribeReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__subscribe_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__SubscribeReq *
++ sr__subscribe_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__SubscribeReq *)
++ protobuf_c_message_unpack (&sr__subscribe_req__descriptor,
++ allocator, len, data);
++}
++void sr__subscribe_req__free_unpacked
++ (Sr__SubscribeReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__subscribe_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__subscribe_resp__init
++ (Sr__SubscribeResp *message)
++{
++ static Sr__SubscribeResp init_value = SR__SUBSCRIBE_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__subscribe_resp__get_packed_size
++ (const Sr__SubscribeResp *message)
++{
++ assert(message->base.descriptor == &sr__subscribe_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__subscribe_resp__pack
++ (const Sr__SubscribeResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__subscribe_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__subscribe_resp__pack_to_buffer
++ (const Sr__SubscribeResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__subscribe_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__SubscribeResp *
++ sr__subscribe_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__SubscribeResp *)
++ protobuf_c_message_unpack (&sr__subscribe_resp__descriptor,
++ allocator, len, data);
++}
++void sr__subscribe_resp__free_unpacked
++ (Sr__SubscribeResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__subscribe_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__unsubscribe_req__init
++ (Sr__UnsubscribeReq *message)
++{
++ static Sr__UnsubscribeReq init_value = SR__UNSUBSCRIBE_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__unsubscribe_req__get_packed_size
++ (const Sr__UnsubscribeReq *message)
++{
++ assert(message->base.descriptor == &sr__unsubscribe_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__unsubscribe_req__pack
++ (const Sr__UnsubscribeReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__unsubscribe_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__unsubscribe_req__pack_to_buffer
++ (const Sr__UnsubscribeReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__unsubscribe_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__UnsubscribeReq *
++ sr__unsubscribe_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__UnsubscribeReq *)
++ protobuf_c_message_unpack (&sr__unsubscribe_req__descriptor,
++ allocator, len, data);
++}
++void sr__unsubscribe_req__free_unpacked
++ (Sr__UnsubscribeReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__unsubscribe_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__unsubscribe_resp__init
++ (Sr__UnsubscribeResp *message)
++{
++ static Sr__UnsubscribeResp init_value = SR__UNSUBSCRIBE_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__unsubscribe_resp__get_packed_size
++ (const Sr__UnsubscribeResp *message)
++{
++ assert(message->base.descriptor == &sr__unsubscribe_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__unsubscribe_resp__pack
++ (const Sr__UnsubscribeResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__unsubscribe_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__unsubscribe_resp__pack_to_buffer
++ (const Sr__UnsubscribeResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__unsubscribe_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__UnsubscribeResp *
++ sr__unsubscribe_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__UnsubscribeResp *)
++ protobuf_c_message_unpack (&sr__unsubscribe_resp__descriptor,
++ allocator, len, data);
++}
++void sr__unsubscribe_resp__free_unpacked
++ (Sr__UnsubscribeResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__unsubscribe_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__check_enabled_running_req__init
++ (Sr__CheckEnabledRunningReq *message)
++{
++ static Sr__CheckEnabledRunningReq init_value = SR__CHECK_ENABLED_RUNNING_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__check_enabled_running_req__get_packed_size
++ (const Sr__CheckEnabledRunningReq *message)
++{
++ assert(message->base.descriptor == &sr__check_enabled_running_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__check_enabled_running_req__pack
++ (const Sr__CheckEnabledRunningReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__check_enabled_running_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__check_enabled_running_req__pack_to_buffer
++ (const Sr__CheckEnabledRunningReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__check_enabled_running_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__CheckEnabledRunningReq *
++ sr__check_enabled_running_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__CheckEnabledRunningReq *)
++ protobuf_c_message_unpack (&sr__check_enabled_running_req__descriptor,
++ allocator, len, data);
++}
++void sr__check_enabled_running_req__free_unpacked
++ (Sr__CheckEnabledRunningReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__check_enabled_running_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__check_enabled_running_resp__init
++ (Sr__CheckEnabledRunningResp *message)
++{
++ static Sr__CheckEnabledRunningResp init_value = SR__CHECK_ENABLED_RUNNING_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__check_enabled_running_resp__get_packed_size
++ (const Sr__CheckEnabledRunningResp *message)
++{
++ assert(message->base.descriptor == &sr__check_enabled_running_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__check_enabled_running_resp__pack
++ (const Sr__CheckEnabledRunningResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__check_enabled_running_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__check_enabled_running_resp__pack_to_buffer
++ (const Sr__CheckEnabledRunningResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__check_enabled_running_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__CheckEnabledRunningResp *
++ sr__check_enabled_running_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__CheckEnabledRunningResp *)
++ protobuf_c_message_unpack (&sr__check_enabled_running_resp__descriptor,
++ allocator, len, data);
++}
++void sr__check_enabled_running_resp__free_unpacked
++ (Sr__CheckEnabledRunningResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__check_enabled_running_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__module_install_notification__init
++ (Sr__ModuleInstallNotification *message)
++{
++ static Sr__ModuleInstallNotification init_value = SR__MODULE_INSTALL_NOTIFICATION__INIT;
++ *message = init_value;
++}
++size_t sr__module_install_notification__get_packed_size
++ (const Sr__ModuleInstallNotification *message)
++{
++ assert(message->base.descriptor == &sr__module_install_notification__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__module_install_notification__pack
++ (const Sr__ModuleInstallNotification *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__module_install_notification__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__module_install_notification__pack_to_buffer
++ (const Sr__ModuleInstallNotification *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__module_install_notification__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__ModuleInstallNotification *
++ sr__module_install_notification__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__ModuleInstallNotification *)
++ protobuf_c_message_unpack (&sr__module_install_notification__descriptor,
++ allocator, len, data);
++}
++void sr__module_install_notification__free_unpacked
++ (Sr__ModuleInstallNotification *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__module_install_notification__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__feature_enable_notification__init
++ (Sr__FeatureEnableNotification *message)
++{
++ static Sr__FeatureEnableNotification init_value = SR__FEATURE_ENABLE_NOTIFICATION__INIT;
++ *message = init_value;
++}
++size_t sr__feature_enable_notification__get_packed_size
++ (const Sr__FeatureEnableNotification *message)
++{
++ assert(message->base.descriptor == &sr__feature_enable_notification__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__feature_enable_notification__pack
++ (const Sr__FeatureEnableNotification *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__feature_enable_notification__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__feature_enable_notification__pack_to_buffer
++ (const Sr__FeatureEnableNotification *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__feature_enable_notification__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__FeatureEnableNotification *
++ sr__feature_enable_notification__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__FeatureEnableNotification *)
++ protobuf_c_message_unpack (&sr__feature_enable_notification__descriptor,
++ allocator, len, data);
++}
++void sr__feature_enable_notification__free_unpacked
++ (Sr__FeatureEnableNotification *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__feature_enable_notification__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__module_change_notification__init
++ (Sr__ModuleChangeNotification *message)
++{
++ static Sr__ModuleChangeNotification init_value = SR__MODULE_CHANGE_NOTIFICATION__INIT;
++ *message = init_value;
++}
++size_t sr__module_change_notification__get_packed_size
++ (const Sr__ModuleChangeNotification *message)
++{
++ assert(message->base.descriptor == &sr__module_change_notification__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__module_change_notification__pack
++ (const Sr__ModuleChangeNotification *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__module_change_notification__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__module_change_notification__pack_to_buffer
++ (const Sr__ModuleChangeNotification *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__module_change_notification__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__ModuleChangeNotification *
++ sr__module_change_notification__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__ModuleChangeNotification *)
++ protobuf_c_message_unpack (&sr__module_change_notification__descriptor,
++ allocator, len, data);
++}
++void sr__module_change_notification__free_unpacked
++ (Sr__ModuleChangeNotification *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__module_change_notification__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__subtree_change_notification__init
++ (Sr__SubtreeChangeNotification *message)
++{
++ static Sr__SubtreeChangeNotification init_value = SR__SUBTREE_CHANGE_NOTIFICATION__INIT;
++ *message = init_value;
++}
++size_t sr__subtree_change_notification__get_packed_size
++ (const Sr__SubtreeChangeNotification *message)
++{
++ assert(message->base.descriptor == &sr__subtree_change_notification__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__subtree_change_notification__pack
++ (const Sr__SubtreeChangeNotification *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__subtree_change_notification__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__subtree_change_notification__pack_to_buffer
++ (const Sr__SubtreeChangeNotification *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__subtree_change_notification__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__SubtreeChangeNotification *
++ sr__subtree_change_notification__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__SubtreeChangeNotification *)
++ protobuf_c_message_unpack (&sr__subtree_change_notification__descriptor,
++ allocator, len, data);
++}
++void sr__subtree_change_notification__free_unpacked
++ (Sr__SubtreeChangeNotification *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__subtree_change_notification__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__change__init
++ (Sr__Change *message)
++{
++ static Sr__Change init_value = SR__CHANGE__INIT;
++ *message = init_value;
++}
++size_t sr__change__get_packed_size
++ (const Sr__Change *message)
++{
++ assert(message->base.descriptor == &sr__change__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__change__pack
++ (const Sr__Change *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__change__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__change__pack_to_buffer
++ (const Sr__Change *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__change__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__Change *
++ sr__change__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__Change *)
++ protobuf_c_message_unpack (&sr__change__descriptor,
++ allocator, len, data);
++}
++void sr__change__free_unpacked
++ (Sr__Change *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__change__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__get_changes_req__init
++ (Sr__GetChangesReq *message)
++{
++ static Sr__GetChangesReq init_value = SR__GET_CHANGES_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__get_changes_req__get_packed_size
++ (const Sr__GetChangesReq *message)
++{
++ assert(message->base.descriptor == &sr__get_changes_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__get_changes_req__pack
++ (const Sr__GetChangesReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__get_changes_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__get_changes_req__pack_to_buffer
++ (const Sr__GetChangesReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__get_changes_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__GetChangesReq *
++ sr__get_changes_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__GetChangesReq *)
++ protobuf_c_message_unpack (&sr__get_changes_req__descriptor,
++ allocator, len, data);
++}
++void sr__get_changes_req__free_unpacked
++ (Sr__GetChangesReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__get_changes_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__get_changes_resp__init
++ (Sr__GetChangesResp *message)
++{
++ static Sr__GetChangesResp init_value = SR__GET_CHANGES_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__get_changes_resp__get_packed_size
++ (const Sr__GetChangesResp *message)
++{
++ assert(message->base.descriptor == &sr__get_changes_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__get_changes_resp__pack
++ (const Sr__GetChangesResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__get_changes_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__get_changes_resp__pack_to_buffer
++ (const Sr__GetChangesResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__get_changes_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__GetChangesResp *
++ sr__get_changes_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__GetChangesResp *)
++ protobuf_c_message_unpack (&sr__get_changes_resp__descriptor,
++ allocator, len, data);
++}
++void sr__get_changes_resp__free_unpacked
++ (Sr__GetChangesResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__get_changes_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__check_exec_perm_req__init
++ (Sr__CheckExecPermReq *message)
++{
++ static Sr__CheckExecPermReq init_value = SR__CHECK_EXEC_PERM_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__check_exec_perm_req__get_packed_size
++ (const Sr__CheckExecPermReq *message)
++{
++ assert(message->base.descriptor == &sr__check_exec_perm_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__check_exec_perm_req__pack
++ (const Sr__CheckExecPermReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__check_exec_perm_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__check_exec_perm_req__pack_to_buffer
++ (const Sr__CheckExecPermReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__check_exec_perm_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__CheckExecPermReq *
++ sr__check_exec_perm_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__CheckExecPermReq *)
++ protobuf_c_message_unpack (&sr__check_exec_perm_req__descriptor,
++ allocator, len, data);
++}
++void sr__check_exec_perm_req__free_unpacked
++ (Sr__CheckExecPermReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__check_exec_perm_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__check_exec_perm_resp__init
++ (Sr__CheckExecPermResp *message)
++{
++ static Sr__CheckExecPermResp init_value = SR__CHECK_EXEC_PERM_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__check_exec_perm_resp__get_packed_size
++ (const Sr__CheckExecPermResp *message)
++{
++ assert(message->base.descriptor == &sr__check_exec_perm_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__check_exec_perm_resp__pack
++ (const Sr__CheckExecPermResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__check_exec_perm_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__check_exec_perm_resp__pack_to_buffer
++ (const Sr__CheckExecPermResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__check_exec_perm_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__CheckExecPermResp *
++ sr__check_exec_perm_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__CheckExecPermResp *)
++ protobuf_c_message_unpack (&sr__check_exec_perm_resp__descriptor,
++ allocator, len, data);
++}
++void sr__check_exec_perm_resp__free_unpacked
++ (Sr__CheckExecPermResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__check_exec_perm_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__rpcreq__init
++ (Sr__RPCReq *message)
++{
++ static Sr__RPCReq init_value = SR__RPCREQ__INIT;
++ *message = init_value;
++}
++size_t sr__rpcreq__get_packed_size
++ (const Sr__RPCReq *message)
++{
++ assert(message->base.descriptor == &sr__rpcreq__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__rpcreq__pack
++ (const Sr__RPCReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__rpcreq__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__rpcreq__pack_to_buffer
++ (const Sr__RPCReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__rpcreq__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__RPCReq *
++ sr__rpcreq__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__RPCReq *)
++ protobuf_c_message_unpack (&sr__rpcreq__descriptor,
++ allocator, len, data);
++}
++void sr__rpcreq__free_unpacked
++ (Sr__RPCReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__rpcreq__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__rpcresp__init
++ (Sr__RPCResp *message)
++{
++ static Sr__RPCResp init_value = SR__RPCRESP__INIT;
++ *message = init_value;
++}
++size_t sr__rpcresp__get_packed_size
++ (const Sr__RPCResp *message)
++{
++ assert(message->base.descriptor == &sr__rpcresp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__rpcresp__pack
++ (const Sr__RPCResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__rpcresp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__rpcresp__pack_to_buffer
++ (const Sr__RPCResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__rpcresp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__RPCResp *
++ sr__rpcresp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__RPCResp *)
++ protobuf_c_message_unpack (&sr__rpcresp__descriptor,
++ allocator, len, data);
++}
++void sr__rpcresp__free_unpacked
++ (Sr__RPCResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__rpcresp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__event_notif_req__init
++ (Sr__EventNotifReq *message)
++{
++ static Sr__EventNotifReq init_value = SR__EVENT_NOTIF_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__event_notif_req__get_packed_size
++ (const Sr__EventNotifReq *message)
++{
++ assert(message->base.descriptor == &sr__event_notif_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__event_notif_req__pack
++ (const Sr__EventNotifReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__event_notif_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__event_notif_req__pack_to_buffer
++ (const Sr__EventNotifReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__event_notif_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__EventNotifReq *
++ sr__event_notif_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__EventNotifReq *)
++ protobuf_c_message_unpack (&sr__event_notif_req__descriptor,
++ allocator, len, data);
++}
++void sr__event_notif_req__free_unpacked
++ (Sr__EventNotifReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__event_notif_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__event_notif_resp__init
++ (Sr__EventNotifResp *message)
++{
++ static Sr__EventNotifResp init_value = SR__EVENT_NOTIF_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__event_notif_resp__get_packed_size
++ (const Sr__EventNotifResp *message)
++{
++ assert(message->base.descriptor == &sr__event_notif_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__event_notif_resp__pack
++ (const Sr__EventNotifResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__event_notif_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__event_notif_resp__pack_to_buffer
++ (const Sr__EventNotifResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__event_notif_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__EventNotifResp *
++ sr__event_notif_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__EventNotifResp *)
++ protobuf_c_message_unpack (&sr__event_notif_resp__descriptor,
++ allocator, len, data);
++}
++void sr__event_notif_resp__free_unpacked
++ (Sr__EventNotifResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__event_notif_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__event_notif_replay_req__init
++ (Sr__EventNotifReplayReq *message)
++{
++ static Sr__EventNotifReplayReq init_value = SR__EVENT_NOTIF_REPLAY_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__event_notif_replay_req__get_packed_size
++ (const Sr__EventNotifReplayReq *message)
++{
++ assert(message->base.descriptor == &sr__event_notif_replay_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__event_notif_replay_req__pack
++ (const Sr__EventNotifReplayReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__event_notif_replay_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__event_notif_replay_req__pack_to_buffer
++ (const Sr__EventNotifReplayReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__event_notif_replay_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__EventNotifReplayReq *
++ sr__event_notif_replay_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__EventNotifReplayReq *)
++ protobuf_c_message_unpack (&sr__event_notif_replay_req__descriptor,
++ allocator, len, data);
++}
++void sr__event_notif_replay_req__free_unpacked
++ (Sr__EventNotifReplayReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__event_notif_replay_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__event_notif_replay_resp__init
++ (Sr__EventNotifReplayResp *message)
++{
++ static Sr__EventNotifReplayResp init_value = SR__EVENT_NOTIF_REPLAY_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__event_notif_replay_resp__get_packed_size
++ (const Sr__EventNotifReplayResp *message)
++{
++ assert(message->base.descriptor == &sr__event_notif_replay_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__event_notif_replay_resp__pack
++ (const Sr__EventNotifReplayResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__event_notif_replay_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__event_notif_replay_resp__pack_to_buffer
++ (const Sr__EventNotifReplayResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__event_notif_replay_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__EventNotifReplayResp *
++ sr__event_notif_replay_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__EventNotifReplayResp *)
++ protobuf_c_message_unpack (&sr__event_notif_replay_resp__descriptor,
++ allocator, len, data);
++}
++void sr__event_notif_replay_resp__free_unpacked
++ (Sr__EventNotifReplayResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__event_notif_replay_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__data_provide_req__init
++ (Sr__DataProvideReq *message)
++{
++ static Sr__DataProvideReq init_value = SR__DATA_PROVIDE_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__data_provide_req__get_packed_size
++ (const Sr__DataProvideReq *message)
++{
++ assert(message->base.descriptor == &sr__data_provide_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__data_provide_req__pack
++ (const Sr__DataProvideReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__data_provide_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__data_provide_req__pack_to_buffer
++ (const Sr__DataProvideReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__data_provide_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__DataProvideReq *
++ sr__data_provide_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__DataProvideReq *)
++ protobuf_c_message_unpack (&sr__data_provide_req__descriptor,
++ allocator, len, data);
++}
++void sr__data_provide_req__free_unpacked
++ (Sr__DataProvideReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__data_provide_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__data_provide_resp__init
++ (Sr__DataProvideResp *message)
++{
++ static Sr__DataProvideResp init_value = SR__DATA_PROVIDE_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__data_provide_resp__get_packed_size
++ (const Sr__DataProvideResp *message)
++{
++ assert(message->base.descriptor == &sr__data_provide_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__data_provide_resp__pack
++ (const Sr__DataProvideResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__data_provide_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__data_provide_resp__pack_to_buffer
++ (const Sr__DataProvideResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__data_provide_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__DataProvideResp *
++ sr__data_provide_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__DataProvideResp *)
++ protobuf_c_message_unpack (&sr__data_provide_resp__descriptor,
++ allocator, len, data);
++}
++void sr__data_provide_resp__free_unpacked
++ (Sr__DataProvideResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__data_provide_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__module_install_req__init
++ (Sr__ModuleInstallReq *message)
++{
++ static Sr__ModuleInstallReq init_value = SR__MODULE_INSTALL_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__module_install_req__get_packed_size
++ (const Sr__ModuleInstallReq *message)
++{
++ assert(message->base.descriptor == &sr__module_install_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__module_install_req__pack
++ (const Sr__ModuleInstallReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__module_install_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__module_install_req__pack_to_buffer
++ (const Sr__ModuleInstallReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__module_install_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__ModuleInstallReq *
++ sr__module_install_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__ModuleInstallReq *)
++ protobuf_c_message_unpack (&sr__module_install_req__descriptor,
++ allocator, len, data);
++}
++void sr__module_install_req__free_unpacked
++ (Sr__ModuleInstallReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__module_install_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__module_install_resp__init
++ (Sr__ModuleInstallResp *message)
++{
++ static Sr__ModuleInstallResp init_value = SR__MODULE_INSTALL_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__module_install_resp__get_packed_size
++ (const Sr__ModuleInstallResp *message)
++{
++ assert(message->base.descriptor == &sr__module_install_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__module_install_resp__pack
++ (const Sr__ModuleInstallResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__module_install_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__module_install_resp__pack_to_buffer
++ (const Sr__ModuleInstallResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__module_install_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__ModuleInstallResp *
++ sr__module_install_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__ModuleInstallResp *)
++ protobuf_c_message_unpack (&sr__module_install_resp__descriptor,
++ allocator, len, data);
++}
++void sr__module_install_resp__free_unpacked
++ (Sr__ModuleInstallResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__module_install_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__feature_enable_req__init
++ (Sr__FeatureEnableReq *message)
++{
++ static Sr__FeatureEnableReq init_value = SR__FEATURE_ENABLE_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__feature_enable_req__get_packed_size
++ (const Sr__FeatureEnableReq *message)
++{
++ assert(message->base.descriptor == &sr__feature_enable_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__feature_enable_req__pack
++ (const Sr__FeatureEnableReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__feature_enable_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__feature_enable_req__pack_to_buffer
++ (const Sr__FeatureEnableReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__feature_enable_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__FeatureEnableReq *
++ sr__feature_enable_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__FeatureEnableReq *)
++ protobuf_c_message_unpack (&sr__feature_enable_req__descriptor,
++ allocator, len, data);
++}
++void sr__feature_enable_req__free_unpacked
++ (Sr__FeatureEnableReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__feature_enable_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__feature_enable_resp__init
++ (Sr__FeatureEnableResp *message)
++{
++ static Sr__FeatureEnableResp init_value = SR__FEATURE_ENABLE_RESP__INIT;
++ *message = init_value;
++}
++size_t sr__feature_enable_resp__get_packed_size
++ (const Sr__FeatureEnableResp *message)
++{
++ assert(message->base.descriptor == &sr__feature_enable_resp__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__feature_enable_resp__pack
++ (const Sr__FeatureEnableResp *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__feature_enable_resp__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__feature_enable_resp__pack_to_buffer
++ (const Sr__FeatureEnableResp *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__feature_enable_resp__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__FeatureEnableResp *
++ sr__feature_enable_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__FeatureEnableResp *)
++ protobuf_c_message_unpack (&sr__feature_enable_resp__descriptor,
++ allocator, len, data);
++}
++void sr__feature_enable_resp__free_unpacked
++ (Sr__FeatureEnableResp *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__feature_enable_resp__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__unsubscribe_destination_req__init
++ (Sr__UnsubscribeDestinationReq *message)
++{
++ static Sr__UnsubscribeDestinationReq init_value = SR__UNSUBSCRIBE_DESTINATION_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__unsubscribe_destination_req__get_packed_size
++ (const Sr__UnsubscribeDestinationReq *message)
++{
++ assert(message->base.descriptor == &sr__unsubscribe_destination_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__unsubscribe_destination_req__pack
++ (const Sr__UnsubscribeDestinationReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__unsubscribe_destination_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__unsubscribe_destination_req__pack_to_buffer
++ (const Sr__UnsubscribeDestinationReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__unsubscribe_destination_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__UnsubscribeDestinationReq *
++ sr__unsubscribe_destination_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__UnsubscribeDestinationReq *)
++ protobuf_c_message_unpack (&sr__unsubscribe_destination_req__descriptor,
++ allocator, len, data);
++}
++void sr__unsubscribe_destination_req__free_unpacked
++ (Sr__UnsubscribeDestinationReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__unsubscribe_destination_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__commit_timeout_req__init
++ (Sr__CommitTimeoutReq *message)
++{
++ static Sr__CommitTimeoutReq init_value = SR__COMMIT_TIMEOUT_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__commit_timeout_req__get_packed_size
++ (const Sr__CommitTimeoutReq *message)
++{
++ assert(message->base.descriptor == &sr__commit_timeout_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__commit_timeout_req__pack
++ (const Sr__CommitTimeoutReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__commit_timeout_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__commit_timeout_req__pack_to_buffer
++ (const Sr__CommitTimeoutReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__commit_timeout_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__CommitTimeoutReq *
++ sr__commit_timeout_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__CommitTimeoutReq *)
++ protobuf_c_message_unpack (&sr__commit_timeout_req__descriptor,
++ allocator, len, data);
++}
++void sr__commit_timeout_req__free_unpacked
++ (Sr__CommitTimeoutReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__commit_timeout_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__oper_data_timeout_req__init
++ (Sr__OperDataTimeoutReq *message)
++{
++ static Sr__OperDataTimeoutReq init_value = SR__OPER_DATA_TIMEOUT_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__oper_data_timeout_req__get_packed_size
++ (const Sr__OperDataTimeoutReq *message)
++{
++ assert(message->base.descriptor == &sr__oper_data_timeout_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__oper_data_timeout_req__pack
++ (const Sr__OperDataTimeoutReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__oper_data_timeout_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__oper_data_timeout_req__pack_to_buffer
++ (const Sr__OperDataTimeoutReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__oper_data_timeout_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__OperDataTimeoutReq *
++ sr__oper_data_timeout_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__OperDataTimeoutReq *)
++ protobuf_c_message_unpack (&sr__oper_data_timeout_req__descriptor,
++ allocator, len, data);
++}
++void sr__oper_data_timeout_req__free_unpacked
++ (Sr__OperDataTimeoutReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__oper_data_timeout_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__internal_state_data_req__init
++ (Sr__InternalStateDataReq *message)
++{
++ static Sr__InternalStateDataReq init_value = SR__INTERNAL_STATE_DATA_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__internal_state_data_req__get_packed_size
++ (const Sr__InternalStateDataReq *message)
++{
++ assert(message->base.descriptor == &sr__internal_state_data_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__internal_state_data_req__pack
++ (const Sr__InternalStateDataReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__internal_state_data_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__internal_state_data_req__pack_to_buffer
++ (const Sr__InternalStateDataReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__internal_state_data_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__InternalStateDataReq *
++ sr__internal_state_data_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__InternalStateDataReq *)
++ protobuf_c_message_unpack (&sr__internal_state_data_req__descriptor,
++ allocator, len, data);
++}
++void sr__internal_state_data_req__free_unpacked
++ (Sr__InternalStateDataReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__internal_state_data_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__notif_store_cleanup_req__init
++ (Sr__NotifStoreCleanupReq *message)
++{
++ static Sr__NotifStoreCleanupReq init_value = SR__NOTIF_STORE_CLEANUP_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__notif_store_cleanup_req__get_packed_size
++ (const Sr__NotifStoreCleanupReq *message)
++{
++ assert(message->base.descriptor == &sr__notif_store_cleanup_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__notif_store_cleanup_req__pack
++ (const Sr__NotifStoreCleanupReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__notif_store_cleanup_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__notif_store_cleanup_req__pack_to_buffer
++ (const Sr__NotifStoreCleanupReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__notif_store_cleanup_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__NotifStoreCleanupReq *
++ sr__notif_store_cleanup_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__NotifStoreCleanupReq *)
++ protobuf_c_message_unpack (&sr__notif_store_cleanup_req__descriptor,
++ allocator, len, data);
++}
++void sr__notif_store_cleanup_req__free_unpacked
++ (Sr__NotifStoreCleanupReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__notif_store_cleanup_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__delayed_msg_req__init
++ (Sr__DelayedMsgReq *message)
++{
++ static Sr__DelayedMsgReq init_value = SR__DELAYED_MSG_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__delayed_msg_req__get_packed_size
++ (const Sr__DelayedMsgReq *message)
++{
++ assert(message->base.descriptor == &sr__delayed_msg_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__delayed_msg_req__pack
++ (const Sr__DelayedMsgReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__delayed_msg_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__delayed_msg_req__pack_to_buffer
++ (const Sr__DelayedMsgReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__delayed_msg_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__DelayedMsgReq *
++ sr__delayed_msg_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__DelayedMsgReq *)
++ protobuf_c_message_unpack (&sr__delayed_msg_req__descriptor,
++ allocator, len, data);
++}
++void sr__delayed_msg_req__free_unpacked
++ (Sr__DelayedMsgReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__delayed_msg_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__nacm_reload_req__init
++ (Sr__NacmReloadReq *message)
++{
++ static Sr__NacmReloadReq init_value = SR__NACM_RELOAD_REQ__INIT;
++ *message = init_value;
++}
++size_t sr__nacm_reload_req__get_packed_size
++ (const Sr__NacmReloadReq *message)
++{
++ assert(message->base.descriptor == &sr__nacm_reload_req__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__nacm_reload_req__pack
++ (const Sr__NacmReloadReq *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__nacm_reload_req__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__nacm_reload_req__pack_to_buffer
++ (const Sr__NacmReloadReq *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__nacm_reload_req__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__NacmReloadReq *
++ sr__nacm_reload_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__NacmReloadReq *)
++ protobuf_c_message_unpack (&sr__nacm_reload_req__descriptor,
++ allocator, len, data);
++}
++void sr__nacm_reload_req__free_unpacked
++ (Sr__NacmReloadReq *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__nacm_reload_req__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__request__init
++ (Sr__Request *message)
++{
++ static Sr__Request init_value = SR__REQUEST__INIT;
++ *message = init_value;
++}
++size_t sr__request__get_packed_size
++ (const Sr__Request *message)
++{
++ assert(message->base.descriptor == &sr__request__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__request__pack
++ (const Sr__Request *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__request__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__request__pack_to_buffer
++ (const Sr__Request *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__request__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__Request *
++ sr__request__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__Request *)
++ protobuf_c_message_unpack (&sr__request__descriptor,
++ allocator, len, data);
++}
++void sr__request__free_unpacked
++ (Sr__Request *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__request__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__response__init
++ (Sr__Response *message)
++{
++ static Sr__Response init_value = SR__RESPONSE__INIT;
++ *message = init_value;
++}
++size_t sr__response__get_packed_size
++ (const Sr__Response *message)
++{
++ assert(message->base.descriptor == &sr__response__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__response__pack
++ (const Sr__Response *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__response__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__response__pack_to_buffer
++ (const Sr__Response *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__response__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__Response *
++ sr__response__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__Response *)
++ protobuf_c_message_unpack (&sr__response__descriptor,
++ allocator, len, data);
++}
++void sr__response__free_unpacked
++ (Sr__Response *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__response__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__notification__init
++ (Sr__Notification *message)
++{
++ static Sr__Notification init_value = SR__NOTIFICATION__INIT;
++ *message = init_value;
++}
++size_t sr__notification__get_packed_size
++ (const Sr__Notification *message)
++{
++ assert(message->base.descriptor == &sr__notification__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__notification__pack
++ (const Sr__Notification *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__notification__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__notification__pack_to_buffer
++ (const Sr__Notification *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__notification__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__Notification *
++ sr__notification__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__Notification *)
++ protobuf_c_message_unpack (&sr__notification__descriptor,
++ allocator, len, data);
++}
++void sr__notification__free_unpacked
++ (Sr__Notification *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__notification__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__notification_ack__init
++ (Sr__NotificationAck *message)
++{
++ static Sr__NotificationAck init_value = SR__NOTIFICATION_ACK__INIT;
++ *message = init_value;
++}
++size_t sr__notification_ack__get_packed_size
++ (const Sr__NotificationAck *message)
++{
++ assert(message->base.descriptor == &sr__notification_ack__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__notification_ack__pack
++ (const Sr__NotificationAck *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__notification_ack__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__notification_ack__pack_to_buffer
++ (const Sr__NotificationAck *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__notification_ack__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__NotificationAck *
++ sr__notification_ack__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__NotificationAck *)
++ protobuf_c_message_unpack (&sr__notification_ack__descriptor,
++ allocator, len, data);
++}
++void sr__notification_ack__free_unpacked
++ (Sr__NotificationAck *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__notification_ack__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__internal_request__init
++ (Sr__InternalRequest *message)
++{
++ static Sr__InternalRequest init_value = SR__INTERNAL_REQUEST__INIT;
++ *message = init_value;
++}
++size_t sr__internal_request__get_packed_size
++ (const Sr__InternalRequest *message)
++{
++ assert(message->base.descriptor == &sr__internal_request__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__internal_request__pack
++ (const Sr__InternalRequest *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__internal_request__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__internal_request__pack_to_buffer
++ (const Sr__InternalRequest *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__internal_request__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__InternalRequest *
++ sr__internal_request__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__InternalRequest *)
++ protobuf_c_message_unpack (&sr__internal_request__descriptor,
++ allocator, len, data);
++}
++void sr__internal_request__free_unpacked
++ (Sr__InternalRequest *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__internal_request__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++void sr__msg__init
++ (Sr__Msg *message)
++{
++ static Sr__Msg init_value = SR__MSG__INIT;
++ *message = init_value;
++}
++size_t sr__msg__get_packed_size
++ (const Sr__Msg *message)
++{
++ assert(message->base.descriptor == &sr__msg__descriptor);
++ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
++}
++size_t sr__msg__pack
++ (const Sr__Msg *message,
++ uint8_t *out)
++{
++ assert(message->base.descriptor == &sr__msg__descriptor);
++ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
++}
++size_t sr__msg__pack_to_buffer
++ (const Sr__Msg *message,
++ ProtobufCBuffer *buffer)
++{
++ assert(message->base.descriptor == &sr__msg__descriptor);
++ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
++}
++Sr__Msg *
++ sr__msg__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data)
++{
++ return (Sr__Msg *)
++ protobuf_c_message_unpack (&sr__msg__descriptor,
++ allocator, len, data);
++}
++void sr__msg__free_unpacked
++ (Sr__Msg *message,
++ ProtobufCAllocator *allocator)
++{
++ assert(message->base.descriptor == &sr__msg__descriptor);
++ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
++}
++static const ProtobufCEnumValue sr__value__types__enum_values_by_number[22] =
++{
++ { "LIST", "SR__VALUE__TYPES__LIST", 1 },
++ { "CONTAINER", "SR__VALUE__TYPES__CONTAINER", 2 },
++ { "CONTAINER_PRESENCE", "SR__VALUE__TYPES__CONTAINER_PRESENCE", 3 },
++ { "LEAF_EMPTY", "SR__VALUE__TYPES__LEAF_EMPTY", 4 },
++ { "BINARY", "SR__VALUE__TYPES__BINARY", 10 },
++ { "BITS", "SR__VALUE__TYPES__BITS", 11 },
++ { "BOOL", "SR__VALUE__TYPES__BOOL", 12 },
++ { "DECIMAL64", "SR__VALUE__TYPES__DECIMAL64", 13 },
++ { "ENUM", "SR__VALUE__TYPES__ENUM", 14 },
++ { "IDENTITYREF", "SR__VALUE__TYPES__IDENTITYREF", 15 },
++ { "INSTANCEID", "SR__VALUE__TYPES__INSTANCEID", 16 },
++ { "INT8", "SR__VALUE__TYPES__INT8", 17 },
++ { "INT16", "SR__VALUE__TYPES__INT16", 18 },
++ { "INT32", "SR__VALUE__TYPES__INT32", 19 },
++ { "INT64", "SR__VALUE__TYPES__INT64", 20 },
++ { "STRING", "SR__VALUE__TYPES__STRING", 21 },
++ { "UINT8", "SR__VALUE__TYPES__UINT8", 22 },
++ { "UINT16", "SR__VALUE__TYPES__UINT16", 23 },
++ { "UINT32", "SR__VALUE__TYPES__UINT32", 24 },
++ { "UINT64", "SR__VALUE__TYPES__UINT64", 25 },
++ { "ANYXML", "SR__VALUE__TYPES__ANYXML", 26 },
++ { "ANYDATA", "SR__VALUE__TYPES__ANYDATA", 27 },
++};
++static const ProtobufCIntRange sr__value__types__value_ranges[] = {
++{1, 0},{10, 4},{0, 22}
++};
++static const ProtobufCEnumValueIndex sr__value__types__enum_values_by_name[22] =
++{
++ { "ANYDATA", 21 },
++ { "ANYXML", 20 },
++ { "BINARY", 4 },
++ { "BITS", 5 },
++ { "BOOL", 6 },
++ { "CONTAINER", 1 },
++ { "CONTAINER_PRESENCE", 2 },
++ { "DECIMAL64", 7 },
++ { "ENUM", 8 },
++ { "IDENTITYREF", 9 },
++ { "INSTANCEID", 10 },
++ { "INT16", 12 },
++ { "INT32", 13 },
++ { "INT64", 14 },
++ { "INT8", 11 },
++ { "LEAF_EMPTY", 3 },
++ { "LIST", 0 },
++ { "STRING", 15 },
++ { "UINT16", 17 },
++ { "UINT32", 18 },
++ { "UINT64", 19 },
++ { "UINT8", 16 },
++};
++const ProtobufCEnumDescriptor sr__value__types__descriptor =
++{
++ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
++ "sr.Value.Types",
++ "Types",
++ "Sr__Value__Types",
++ "sr",
++ 22,
++ sr__value__types__enum_values_by_number,
++ 22,
++ sr__value__types__enum_values_by_name,
++ 2,
++ sr__value__types__value_ranges,
++ NULL,NULL,NULL,NULL /* reserved[1234] */
++};
++static const ProtobufCFieldDescriptor sr__value__field_descriptors[21] =
++{
++ {
++ "xpath",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Value, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "type",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_ENUM,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Value, type),
++ &sr__value__types__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "dflt",
++ 3,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_BOOL,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Value, dflt),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "binary_val",
++ 10,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Value, binary_val),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "bits_val",
++ 11,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Value, bits_val),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "bool_val",
++ 12,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_BOOL,
++ offsetof(Sr__Value, has_bool_val),
++ offsetof(Sr__Value, bool_val),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "decimal64_val",
++ 13,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_DOUBLE,
++ offsetof(Sr__Value, has_decimal64_val),
++ offsetof(Sr__Value, decimal64_val),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "enum_val",
++ 14,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Value, enum_val),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "identityref_val",
++ 15,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Value, identityref_val),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "instanceid_val",
++ 16,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Value, instanceid_val),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "int8_val",
++ 17,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_INT32,
++ offsetof(Sr__Value, has_int8_val),
++ offsetof(Sr__Value, int8_val),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "int16_val",
++ 18,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_INT32,
++ offsetof(Sr__Value, has_int16_val),
++ offsetof(Sr__Value, int16_val),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "int32_val",
++ 19,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_INT32,
++ offsetof(Sr__Value, has_int32_val),
++ offsetof(Sr__Value, int32_val),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "int64_val",
++ 20,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_INT64,
++ offsetof(Sr__Value, has_int64_val),
++ offsetof(Sr__Value, int64_val),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "string_val",
++ 21,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Value, string_val),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "uint8_val",
++ 22,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_UINT32,
++ offsetof(Sr__Value, has_uint8_val),
++ offsetof(Sr__Value, uint8_val),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "uint16_val",
++ 23,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_UINT32,
++ offsetof(Sr__Value, has_uint16_val),
++ offsetof(Sr__Value, uint16_val),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "uint32_val",
++ 24,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_UINT32,
++ offsetof(Sr__Value, has_uint32_val),
++ offsetof(Sr__Value, uint32_val),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "uint64_val",
++ 25,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_UINT64,
++ offsetof(Sr__Value, has_uint64_val),
++ offsetof(Sr__Value, uint64_val),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "anyxml_val",
++ 26,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Value, anyxml_val),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "anydata_val",
++ 27,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Value, anydata_val),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__value__field_indices_by_name[] = {
++ 20, /* field[20] = anydata_val */
++ 19, /* field[19] = anyxml_val */
++ 3, /* field[3] = binary_val */
++ 4, /* field[4] = bits_val */
++ 5, /* field[5] = bool_val */
++ 6, /* field[6] = decimal64_val */
++ 2, /* field[2] = dflt */
++ 7, /* field[7] = enum_val */
++ 8, /* field[8] = identityref_val */
++ 9, /* field[9] = instanceid_val */
++ 11, /* field[11] = int16_val */
++ 12, /* field[12] = int32_val */
++ 13, /* field[13] = int64_val */
++ 10, /* field[10] = int8_val */
++ 14, /* field[14] = string_val */
++ 1, /* field[1] = type */
++ 16, /* field[16] = uint16_val */
++ 17, /* field[17] = uint32_val */
++ 18, /* field[18] = uint64_val */
++ 15, /* field[15] = uint8_val */
++ 0, /* field[0] = xpath */
++};
++static const ProtobufCIntRange sr__value__number_ranges[2 + 1] =
++{
++ { 1, 0 },
++ { 10, 3 },
++ { 0, 21 }
++};
++const ProtobufCMessageDescriptor sr__value__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.Value",
++ "Value",
++ "Sr__Value",
++ "sr",
++ sizeof(Sr__Value),
++ 21,
++ sr__value__field_descriptors,
++ sr__value__field_indices_by_name,
++ 2, sr__value__number_ranges,
++ (ProtobufCMessageInit) sr__value__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__node__field_descriptors[3] =
++{
++ {
++ "value",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Node, value),
++ &sr__value__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "module_name",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Node, module_name),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "children",
++ 3,
++ PROTOBUF_C_LABEL_REPEATED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ offsetof(Sr__Node, n_children),
++ offsetof(Sr__Node, children),
++ &sr__node__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__node__field_indices_by_name[] = {
++ 2, /* field[2] = children */
++ 1, /* field[1] = module_name */
++ 0, /* field[0] = value */
++};
++static const ProtobufCIntRange sr__node__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 3 }
++};
++const ProtobufCMessageDescriptor sr__node__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.Node",
++ "Node",
++ "Sr__Node",
++ "sr",
++ sizeof(Sr__Node),
++ 3,
++ sr__node__field_descriptors,
++ sr__node__field_indices_by_name,
++ 1, sr__node__number_ranges,
++ (ProtobufCMessageInit) sr__node__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__error__field_descriptors[2] =
++{
++ {
++ "message",
++ 1,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Error, message),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "xpath",
++ 2,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Error, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__error__field_indices_by_name[] = {
++ 0, /* field[0] = message */
++ 1, /* field[1] = xpath */
++};
++static const ProtobufCIntRange sr__error__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 2 }
++};
++const ProtobufCMessageDescriptor sr__error__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.Error",
++ "Error",
++ "Sr__Error",
++ "sr",
++ sizeof(Sr__Error),
++ 2,
++ sr__error__field_descriptors,
++ sr__error__field_indices_by_name,
++ 1, sr__error__number_ranges,
++ (ProtobufCMessageInit) sr__error__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__session_start_req__field_descriptors[4] =
++{
++ {
++ "datastore",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_ENUM,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SessionStartReq, datastore),
++ &sr__data_store__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "user_name",
++ 2,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SessionStartReq, user_name),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "options",
++ 3,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SessionStartReq, options),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "commit_id",
++ 4,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_UINT32,
++ offsetof(Sr__SessionStartReq, has_commit_id),
++ offsetof(Sr__SessionStartReq, commit_id),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__session_start_req__field_indices_by_name[] = {
++ 3, /* field[3] = commit_id */
++ 0, /* field[0] = datastore */
++ 2, /* field[2] = options */
++ 1, /* field[1] = user_name */
++};
++static const ProtobufCIntRange sr__session_start_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 4 }
++};
++const ProtobufCMessageDescriptor sr__session_start_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.SessionStartReq",
++ "SessionStartReq",
++ "Sr__SessionStartReq",
++ "sr",
++ sizeof(Sr__SessionStartReq),
++ 4,
++ sr__session_start_req__field_descriptors,
++ sr__session_start_req__field_indices_by_name,
++ 1, sr__session_start_req__number_ranges,
++ (ProtobufCMessageInit) sr__session_start_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__session_start_resp__field_descriptors[1] =
++{
++ {
++ "session_id",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SessionStartResp, session_id),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__session_start_resp__field_indices_by_name[] = {
++ 0, /* field[0] = session_id */
++};
++static const ProtobufCIntRange sr__session_start_resp__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__session_start_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.SessionStartResp",
++ "SessionStartResp",
++ "Sr__SessionStartResp",
++ "sr",
++ sizeof(Sr__SessionStartResp),
++ 1,
++ sr__session_start_resp__field_descriptors,
++ sr__session_start_resp__field_indices_by_name,
++ 1, sr__session_start_resp__number_ranges,
++ (ProtobufCMessageInit) sr__session_start_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__session_stop_req__field_descriptors[1] =
++{
++ {
++ "session_id",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SessionStopReq, session_id),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__session_stop_req__field_indices_by_name[] = {
++ 0, /* field[0] = session_id */
++};
++static const ProtobufCIntRange sr__session_stop_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__session_stop_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.SessionStopReq",
++ "SessionStopReq",
++ "Sr__SessionStopReq",
++ "sr",
++ sizeof(Sr__SessionStopReq),
++ 1,
++ sr__session_stop_req__field_descriptors,
++ sr__session_stop_req__field_indices_by_name,
++ 1, sr__session_stop_req__number_ranges,
++ (ProtobufCMessageInit) sr__session_stop_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__session_stop_resp__field_descriptors[1] =
++{
++ {
++ "session_id",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SessionStopResp, session_id),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__session_stop_resp__field_indices_by_name[] = {
++ 0, /* field[0] = session_id */
++};
++static const ProtobufCIntRange sr__session_stop_resp__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__session_stop_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.SessionStopResp",
++ "SessionStopResp",
++ "Sr__SessionStopResp",
++ "sr",
++ sizeof(Sr__SessionStopResp),
++ 1,
++ sr__session_stop_resp__field_descriptors,
++ sr__session_stop_resp__field_indices_by_name,
++ 1, sr__session_stop_resp__number_ranges,
++ (ProtobufCMessageInit) sr__session_stop_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__session_refresh_req__field_descriptors NULL
++#define sr__session_refresh_req__field_indices_by_name NULL
++#define sr__session_refresh_req__number_ranges NULL
++const ProtobufCMessageDescriptor sr__session_refresh_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.SessionRefreshReq",
++ "SessionRefreshReq",
++ "Sr__SessionRefreshReq",
++ "sr",
++ sizeof(Sr__SessionRefreshReq),
++ 0,
++ sr__session_refresh_req__field_descriptors,
++ sr__session_refresh_req__field_indices_by_name,
++ 0, sr__session_refresh_req__number_ranges,
++ (ProtobufCMessageInit) sr__session_refresh_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__session_refresh_resp__field_descriptors[1] =
++{
++ {
++ "errors",
++ 1,
++ PROTOBUF_C_LABEL_REPEATED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ offsetof(Sr__SessionRefreshResp, n_errors),
++ offsetof(Sr__SessionRefreshResp, errors),
++ &sr__error__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__session_refresh_resp__field_indices_by_name[] = {
++ 0, /* field[0] = errors */
++};
++static const ProtobufCIntRange sr__session_refresh_resp__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__session_refresh_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.SessionRefreshResp",
++ "SessionRefreshResp",
++ "Sr__SessionRefreshResp",
++ "sr",
++ sizeof(Sr__SessionRefreshResp),
++ 1,
++ sr__session_refresh_resp__field_descriptors,
++ sr__session_refresh_resp__field_indices_by_name,
++ 1, sr__session_refresh_resp__number_ranges,
++ (ProtobufCMessageInit) sr__session_refresh_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__session_check_req__field_descriptors NULL
++#define sr__session_check_req__field_indices_by_name NULL
++#define sr__session_check_req__number_ranges NULL
++const ProtobufCMessageDescriptor sr__session_check_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.SessionCheckReq",
++ "SessionCheckReq",
++ "Sr__SessionCheckReq",
++ "sr",
++ sizeof(Sr__SessionCheckReq),
++ 0,
++ sr__session_check_req__field_descriptors,
++ sr__session_check_req__field_indices_by_name,
++ 0, sr__session_check_req__number_ranges,
++ (ProtobufCMessageInit) sr__session_check_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__session_check_resp__field_descriptors[1] =
++{
++ {
++ "errors",
++ 1,
++ PROTOBUF_C_LABEL_REPEATED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ offsetof(Sr__SessionCheckResp, n_errors),
++ offsetof(Sr__SessionCheckResp, errors),
++ &sr__error__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__session_check_resp__field_indices_by_name[] = {
++ 0, /* field[0] = errors */
++};
++static const ProtobufCIntRange sr__session_check_resp__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__session_check_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.SessionCheckResp",
++ "SessionCheckResp",
++ "Sr__SessionCheckResp",
++ "sr",
++ sizeof(Sr__SessionCheckResp),
++ 1,
++ sr__session_check_resp__field_descriptors,
++ sr__session_check_resp__field_indices_by_name,
++ 1, sr__session_check_resp__number_ranges,
++ (ProtobufCMessageInit) sr__session_check_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__session_switch_ds_req__field_descriptors[1] =
++{
++ {
++ "datastore",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_ENUM,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SessionSwitchDsReq, datastore),
++ &sr__data_store__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__session_switch_ds_req__field_indices_by_name[] = {
++ 0, /* field[0] = datastore */
++};
++static const ProtobufCIntRange sr__session_switch_ds_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__session_switch_ds_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.SessionSwitchDsReq",
++ "SessionSwitchDsReq",
++ "Sr__SessionSwitchDsReq",
++ "sr",
++ sizeof(Sr__SessionSwitchDsReq),
++ 1,
++ sr__session_switch_ds_req__field_descriptors,
++ sr__session_switch_ds_req__field_indices_by_name,
++ 1, sr__session_switch_ds_req__number_ranges,
++ (ProtobufCMessageInit) sr__session_switch_ds_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__session_switch_ds_resp__field_descriptors NULL
++#define sr__session_switch_ds_resp__field_indices_by_name NULL
++#define sr__session_switch_ds_resp__number_ranges NULL
++const ProtobufCMessageDescriptor sr__session_switch_ds_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.SessionSwitchDsResp",
++ "SessionSwitchDsResp",
++ "Sr__SessionSwitchDsResp",
++ "sr",
++ sizeof(Sr__SessionSwitchDsResp),
++ 0,
++ sr__session_switch_ds_resp__field_descriptors,
++ sr__session_switch_ds_resp__field_indices_by_name,
++ 0, sr__session_switch_ds_resp__number_ranges,
++ (ProtobufCMessageInit) sr__session_switch_ds_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__session_set_opts_req__field_descriptors[1] =
++{
++ {
++ "options",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SessionSetOptsReq, options),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__session_set_opts_req__field_indices_by_name[] = {
++ 0, /* field[0] = options */
++};
++static const ProtobufCIntRange sr__session_set_opts_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__session_set_opts_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.SessionSetOptsReq",
++ "SessionSetOptsReq",
++ "Sr__SessionSetOptsReq",
++ "sr",
++ sizeof(Sr__SessionSetOptsReq),
++ 1,
++ sr__session_set_opts_req__field_descriptors,
++ sr__session_set_opts_req__field_indices_by_name,
++ 1, sr__session_set_opts_req__number_ranges,
++ (ProtobufCMessageInit) sr__session_set_opts_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__session_set_opts_resp__field_descriptors NULL
++#define sr__session_set_opts_resp__field_indices_by_name NULL
++#define sr__session_set_opts_resp__number_ranges NULL
++const ProtobufCMessageDescriptor sr__session_set_opts_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.SessionSetOptsResp",
++ "SessionSetOptsResp",
++ "Sr__SessionSetOptsResp",
++ "sr",
++ sizeof(Sr__SessionSetOptsResp),
++ 0,
++ sr__session_set_opts_resp__field_descriptors,
++ sr__session_set_opts_resp__field_indices_by_name,
++ 0, sr__session_set_opts_resp__number_ranges,
++ (ProtobufCMessageInit) sr__session_set_opts_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__version_verify_req__field_descriptors[1] =
++{
++ {
++ "soname",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__VersionVerifyReq, soname),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__version_verify_req__field_indices_by_name[] = {
++ 0, /* field[0] = soname */
++};
++static const ProtobufCIntRange sr__version_verify_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__version_verify_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.VersionVerifyReq",
++ "VersionVerifyReq",
++ "Sr__VersionVerifyReq",
++ "sr",
++ sizeof(Sr__VersionVerifyReq),
++ 1,
++ sr__version_verify_req__field_descriptors,
++ sr__version_verify_req__field_indices_by_name,
++ 1, sr__version_verify_req__number_ranges,
++ (ProtobufCMessageInit) sr__version_verify_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__version_verify_resp__field_descriptors[1] =
++{
++ {
++ "soname",
++ 1,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__VersionVerifyResp, soname),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__version_verify_resp__field_indices_by_name[] = {
++ 0, /* field[0] = soname */
++};
++static const ProtobufCIntRange sr__version_verify_resp__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__version_verify_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.VersionVerifyResp",
++ "VersionVerifyResp",
++ "Sr__VersionVerifyResp",
++ "sr",
++ sizeof(Sr__VersionVerifyResp),
++ 1,
++ sr__version_verify_resp__field_descriptors,
++ sr__version_verify_resp__field_indices_by_name,
++ 1, sr__version_verify_resp__number_ranges,
++ (ProtobufCMessageInit) sr__version_verify_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__schema_revision__field_descriptors[3] =
++{
++ {
++ "revision",
++ 1,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SchemaRevision, revision),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "file_path_yang",
++ 2,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SchemaRevision, file_path_yang),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "file_path_yin",
++ 3,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SchemaRevision, file_path_yin),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__schema_revision__field_indices_by_name[] = {
++ 1, /* field[1] = file_path_yang */
++ 2, /* field[2] = file_path_yin */
++ 0, /* field[0] = revision */
++};
++static const ProtobufCIntRange sr__schema_revision__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 3 }
++};
++const ProtobufCMessageDescriptor sr__schema_revision__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.SchemaRevision",
++ "SchemaRevision",
++ "Sr__SchemaRevision",
++ "sr",
++ sizeof(Sr__SchemaRevision),
++ 3,
++ sr__schema_revision__field_descriptors,
++ sr__schema_revision__field_indices_by_name,
++ 1, sr__schema_revision__number_ranges,
++ (ProtobufCMessageInit) sr__schema_revision__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__schema_submodule__field_descriptors[2] =
++{
++ {
++ "submodule_name",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SchemaSubmodule, submodule_name),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "revision",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SchemaSubmodule, revision),
++ &sr__schema_revision__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__schema_submodule__field_indices_by_name[] = {
++ 1, /* field[1] = revision */
++ 0, /* field[0] = submodule_name */
++};
++static const ProtobufCIntRange sr__schema_submodule__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 2 }
++};
++const ProtobufCMessageDescriptor sr__schema_submodule__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.SchemaSubmodule",
++ "SchemaSubmodule",
++ "Sr__SchemaSubmodule",
++ "sr",
++ sizeof(Sr__SchemaSubmodule),
++ 2,
++ sr__schema_submodule__field_descriptors,
++ sr__schema_submodule__field_indices_by_name,
++ 1, sr__schema_submodule__number_ranges,
++ (ProtobufCMessageInit) sr__schema_submodule__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__schema__field_descriptors[8] =
++{
++ {
++ "module_name",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Schema, module_name),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "ns",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Schema, ns),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "prefix",
++ 3,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Schema, prefix),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "installed",
++ 4,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_BOOL,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Schema, installed),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "implemented",
++ 5,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_BOOL,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Schema, implemented),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "revision",
++ 6,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Schema, revision),
++ &sr__schema_revision__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "submodules",
++ 7,
++ PROTOBUF_C_LABEL_REPEATED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ offsetof(Sr__Schema, n_submodules),
++ offsetof(Sr__Schema, submodules),
++ &sr__schema_submodule__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "enabled_features",
++ 8,
++ PROTOBUF_C_LABEL_REPEATED,
++ PROTOBUF_C_TYPE_STRING,
++ offsetof(Sr__Schema, n_enabled_features),
++ offsetof(Sr__Schema, enabled_features),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__schema__field_indices_by_name[] = {
++ 7, /* field[7] = enabled_features */
++ 4, /* field[4] = implemented */
++ 3, /* field[3] = installed */
++ 0, /* field[0] = module_name */
++ 1, /* field[1] = ns */
++ 2, /* field[2] = prefix */
++ 5, /* field[5] = revision */
++ 6, /* field[6] = submodules */
++};
++static const ProtobufCIntRange sr__schema__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 8 }
++};
++const ProtobufCMessageDescriptor sr__schema__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.Schema",
++ "Schema",
++ "Sr__Schema",
++ "sr",
++ sizeof(Sr__Schema),
++ 8,
++ sr__schema__field_descriptors,
++ sr__schema__field_indices_by_name,
++ 1, sr__schema__number_ranges,
++ (ProtobufCMessageInit) sr__schema__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__list_schemas_req__field_descriptors NULL
++#define sr__list_schemas_req__field_indices_by_name NULL
++#define sr__list_schemas_req__number_ranges NULL
++const ProtobufCMessageDescriptor sr__list_schemas_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.ListSchemasReq",
++ "ListSchemasReq",
++ "Sr__ListSchemasReq",
++ "sr",
++ sizeof(Sr__ListSchemasReq),
++ 0,
++ sr__list_schemas_req__field_descriptors,
++ sr__list_schemas_req__field_indices_by_name,
++ 0, sr__list_schemas_req__number_ranges,
++ (ProtobufCMessageInit) sr__list_schemas_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__list_schemas_resp__field_descriptors[1] =
++{
++ {
++ "schemas",
++ 1,
++ PROTOBUF_C_LABEL_REPEATED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ offsetof(Sr__ListSchemasResp, n_schemas),
++ offsetof(Sr__ListSchemasResp, schemas),
++ &sr__schema__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__list_schemas_resp__field_indices_by_name[] = {
++ 0, /* field[0] = schemas */
++};
++static const ProtobufCIntRange sr__list_schemas_resp__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__list_schemas_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.ListSchemasResp",
++ "ListSchemasResp",
++ "Sr__ListSchemasResp",
++ "sr",
++ sizeof(Sr__ListSchemasResp),
++ 1,
++ sr__list_schemas_resp__field_descriptors,
++ sr__list_schemas_resp__field_indices_by_name,
++ 1, sr__list_schemas_resp__number_ranges,
++ (ProtobufCMessageInit) sr__list_schemas_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__get_schema_req__field_descriptors[5] =
++{
++ {
++ "module_name",
++ 1,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__GetSchemaReq, module_name),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "revision",
++ 2,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__GetSchemaReq, revision),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "submodule_name",
++ 3,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__GetSchemaReq, submodule_name),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "submodule_revision",
++ 4,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__GetSchemaReq, submodule_revision),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "yang_format",
++ 5,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_BOOL,
++ 0, /* quantifier_offset */
++ offsetof(Sr__GetSchemaReq, yang_format),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__get_schema_req__field_indices_by_name[] = {
++ 0, /* field[0] = module_name */
++ 1, /* field[1] = revision */
++ 2, /* field[2] = submodule_name */
++ 3, /* field[3] = submodule_revision */
++ 4, /* field[4] = yang_format */
++};
++static const ProtobufCIntRange sr__get_schema_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 5 }
++};
++const ProtobufCMessageDescriptor sr__get_schema_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.GetSchemaReq",
++ "GetSchemaReq",
++ "Sr__GetSchemaReq",
++ "sr",
++ sizeof(Sr__GetSchemaReq),
++ 5,
++ sr__get_schema_req__field_descriptors,
++ sr__get_schema_req__field_indices_by_name,
++ 1, sr__get_schema_req__number_ranges,
++ (ProtobufCMessageInit) sr__get_schema_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__get_schema_resp__field_descriptors[1] =
++{
++ {
++ "schema_content",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__GetSchemaResp, schema_content),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__get_schema_resp__field_indices_by_name[] = {
++ 0, /* field[0] = schema_content */
++};
++static const ProtobufCIntRange sr__get_schema_resp__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__get_schema_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.GetSchemaResp",
++ "GetSchemaResp",
++ "Sr__GetSchemaResp",
++ "sr",
++ sizeof(Sr__GetSchemaResp),
++ 1,
++ sr__get_schema_resp__field_descriptors,
++ sr__get_schema_resp__field_indices_by_name,
++ 1, sr__get_schema_resp__number_ranges,
++ (ProtobufCMessageInit) sr__get_schema_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__get_item_req__field_descriptors[1] =
++{
++ {
++ "xpath",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__GetItemReq, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__get_item_req__field_indices_by_name[] = {
++ 0, /* field[0] = xpath */
++};
++static const ProtobufCIntRange sr__get_item_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__get_item_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.GetItemReq",
++ "GetItemReq",
++ "Sr__GetItemReq",
++ "sr",
++ sizeof(Sr__GetItemReq),
++ 1,
++ sr__get_item_req__field_descriptors,
++ sr__get_item_req__field_indices_by_name,
++ 1, sr__get_item_req__number_ranges,
++ (ProtobufCMessageInit) sr__get_item_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__get_item_resp__field_descriptors[1] =
++{
++ {
++ "value",
++ 1,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__GetItemResp, value),
++ &sr__value__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__get_item_resp__field_indices_by_name[] = {
++ 0, /* field[0] = value */
++};
++static const ProtobufCIntRange sr__get_item_resp__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__get_item_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.GetItemResp",
++ "GetItemResp",
++ "Sr__GetItemResp",
++ "sr",
++ sizeof(Sr__GetItemResp),
++ 1,
++ sr__get_item_resp__field_descriptors,
++ sr__get_item_resp__field_indices_by_name,
++ 1, sr__get_item_resp__number_ranges,
++ (ProtobufCMessageInit) sr__get_item_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__get_items_req__field_descriptors[3] =
++{
++ {
++ "xpath",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__GetItemsReq, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "limit",
++ 2,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_UINT32,
++ offsetof(Sr__GetItemsReq, has_limit),
++ offsetof(Sr__GetItemsReq, limit),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "offset",
++ 3,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_UINT32,
++ offsetof(Sr__GetItemsReq, has_offset),
++ offsetof(Sr__GetItemsReq, offset),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__get_items_req__field_indices_by_name[] = {
++ 1, /* field[1] = limit */
++ 2, /* field[2] = offset */
++ 0, /* field[0] = xpath */
++};
++static const ProtobufCIntRange sr__get_items_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 3 }
++};
++const ProtobufCMessageDescriptor sr__get_items_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.GetItemsReq",
++ "GetItemsReq",
++ "Sr__GetItemsReq",
++ "sr",
++ sizeof(Sr__GetItemsReq),
++ 3,
++ sr__get_items_req__field_descriptors,
++ sr__get_items_req__field_indices_by_name,
++ 1, sr__get_items_req__number_ranges,
++ (ProtobufCMessageInit) sr__get_items_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__get_items_resp__field_descriptors[1] =
++{
++ {
++ "values",
++ 1,
++ PROTOBUF_C_LABEL_REPEATED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ offsetof(Sr__GetItemsResp, n_values),
++ offsetof(Sr__GetItemsResp, values),
++ &sr__value__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__get_items_resp__field_indices_by_name[] = {
++ 0, /* field[0] = values */
++};
++static const ProtobufCIntRange sr__get_items_resp__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__get_items_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.GetItemsResp",
++ "GetItemsResp",
++ "Sr__GetItemsResp",
++ "sr",
++ sizeof(Sr__GetItemsResp),
++ 1,
++ sr__get_items_resp__field_descriptors,
++ sr__get_items_resp__field_indices_by_name,
++ 1, sr__get_items_resp__number_ranges,
++ (ProtobufCMessageInit) sr__get_items_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__get_subtree_req__field_descriptors[1] =
++{
++ {
++ "xpath",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__GetSubtreeReq, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__get_subtree_req__field_indices_by_name[] = {
++ 0, /* field[0] = xpath */
++};
++static const ProtobufCIntRange sr__get_subtree_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__get_subtree_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.GetSubtreeReq",
++ "GetSubtreeReq",
++ "Sr__GetSubtreeReq",
++ "sr",
++ sizeof(Sr__GetSubtreeReq),
++ 1,
++ sr__get_subtree_req__field_descriptors,
++ sr__get_subtree_req__field_indices_by_name,
++ 1, sr__get_subtree_req__number_ranges,
++ (ProtobufCMessageInit) sr__get_subtree_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__get_subtree_resp__field_descriptors[1] =
++{
++ {
++ "tree",
++ 1,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__GetSubtreeResp, tree),
++ &sr__node__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__get_subtree_resp__field_indices_by_name[] = {
++ 0, /* field[0] = tree */
++};
++static const ProtobufCIntRange sr__get_subtree_resp__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__get_subtree_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.GetSubtreeResp",
++ "GetSubtreeResp",
++ "Sr__GetSubtreeResp",
++ "sr",
++ sizeof(Sr__GetSubtreeResp),
++ 1,
++ sr__get_subtree_resp__field_descriptors,
++ sr__get_subtree_resp__field_indices_by_name,
++ 1, sr__get_subtree_resp__number_ranges,
++ (ProtobufCMessageInit) sr__get_subtree_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__get_subtrees_req__field_descriptors[1] =
++{
++ {
++ "xpath",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__GetSubtreesReq, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__get_subtrees_req__field_indices_by_name[] = {
++ 0, /* field[0] = xpath */
++};
++static const ProtobufCIntRange sr__get_subtrees_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__get_subtrees_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.GetSubtreesReq",
++ "GetSubtreesReq",
++ "Sr__GetSubtreesReq",
++ "sr",
++ sizeof(Sr__GetSubtreesReq),
++ 1,
++ sr__get_subtrees_req__field_descriptors,
++ sr__get_subtrees_req__field_indices_by_name,
++ 1, sr__get_subtrees_req__number_ranges,
++ (ProtobufCMessageInit) sr__get_subtrees_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__get_subtrees_resp__field_descriptors[1] =
++{
++ {
++ "trees",
++ 1,
++ PROTOBUF_C_LABEL_REPEATED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ offsetof(Sr__GetSubtreesResp, n_trees),
++ offsetof(Sr__GetSubtreesResp, trees),
++ &sr__node__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__get_subtrees_resp__field_indices_by_name[] = {
++ 0, /* field[0] = trees */
++};
++static const ProtobufCIntRange sr__get_subtrees_resp__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__get_subtrees_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.GetSubtreesResp",
++ "GetSubtreesResp",
++ "Sr__GetSubtreesResp",
++ "sr",
++ sizeof(Sr__GetSubtreesResp),
++ 1,
++ sr__get_subtrees_resp__field_descriptors,
++ sr__get_subtrees_resp__field_indices_by_name,
++ 1, sr__get_subtrees_resp__number_ranges,
++ (ProtobufCMessageInit) sr__get_subtrees_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__get_subtree_chunk_req__field_descriptors[6] =
++{
++ {
++ "xpath",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__GetSubtreeChunkReq, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "single",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_BOOL,
++ 0, /* quantifier_offset */
++ offsetof(Sr__GetSubtreeChunkReq, single),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "slice_offset",
++ 3,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__GetSubtreeChunkReq, slice_offset),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "slice_width",
++ 4,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__GetSubtreeChunkReq, slice_width),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "child_limit",
++ 5,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__GetSubtreeChunkReq, child_limit),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "depth_limit",
++ 6,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__GetSubtreeChunkReq, depth_limit),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__get_subtree_chunk_req__field_indices_by_name[] = {
++ 4, /* field[4] = child_limit */
++ 5, /* field[5] = depth_limit */
++ 1, /* field[1] = single */
++ 2, /* field[2] = slice_offset */
++ 3, /* field[3] = slice_width */
++ 0, /* field[0] = xpath */
++};
++static const ProtobufCIntRange sr__get_subtree_chunk_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 6 }
++};
++const ProtobufCMessageDescriptor sr__get_subtree_chunk_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.GetSubtreeChunkReq",
++ "GetSubtreeChunkReq",
++ "Sr__GetSubtreeChunkReq",
++ "sr",
++ sizeof(Sr__GetSubtreeChunkReq),
++ 6,
++ sr__get_subtree_chunk_req__field_descriptors,
++ sr__get_subtree_chunk_req__field_indices_by_name,
++ 1, sr__get_subtree_chunk_req__number_ranges,
++ (ProtobufCMessageInit) sr__get_subtree_chunk_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__get_subtree_chunk_resp__field_descriptors[2] =
++{
++ {
++ "xpath",
++ 1,
++ PROTOBUF_C_LABEL_REPEATED,
++ PROTOBUF_C_TYPE_STRING,
++ offsetof(Sr__GetSubtreeChunkResp, n_xpath),
++ offsetof(Sr__GetSubtreeChunkResp, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "chunk",
++ 2,
++ PROTOBUF_C_LABEL_REPEATED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ offsetof(Sr__GetSubtreeChunkResp, n_chunk),
++ offsetof(Sr__GetSubtreeChunkResp, chunk),
++ &sr__node__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__get_subtree_chunk_resp__field_indices_by_name[] = {
++ 1, /* field[1] = chunk */
++ 0, /* field[0] = xpath */
++};
++static const ProtobufCIntRange sr__get_subtree_chunk_resp__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 2 }
++};
++const ProtobufCMessageDescriptor sr__get_subtree_chunk_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.GetSubtreeChunkResp",
++ "GetSubtreeChunkResp",
++ "Sr__GetSubtreeChunkResp",
++ "sr",
++ sizeof(Sr__GetSubtreeChunkResp),
++ 2,
++ sr__get_subtree_chunk_resp__field_descriptors,
++ sr__get_subtree_chunk_resp__field_indices_by_name,
++ 1, sr__get_subtree_chunk_resp__number_ranges,
++ (ProtobufCMessageInit) sr__get_subtree_chunk_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__set_item_req__field_descriptors[3] =
++{
++ {
++ "xpath",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SetItemReq, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "value",
++ 2,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SetItemReq, value),
++ &sr__value__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "options",
++ 3,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SetItemReq, options),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__set_item_req__field_indices_by_name[] = {
++ 2, /* field[2] = options */
++ 1, /* field[1] = value */
++ 0, /* field[0] = xpath */
++};
++static const ProtobufCIntRange sr__set_item_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 3 }
++};
++const ProtobufCMessageDescriptor sr__set_item_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.SetItemReq",
++ "SetItemReq",
++ "Sr__SetItemReq",
++ "sr",
++ sizeof(Sr__SetItemReq),
++ 3,
++ sr__set_item_req__field_descriptors,
++ sr__set_item_req__field_indices_by_name,
++ 1, sr__set_item_req__number_ranges,
++ (ProtobufCMessageInit) sr__set_item_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__set_item_resp__field_descriptors NULL
++#define sr__set_item_resp__field_indices_by_name NULL
++#define sr__set_item_resp__number_ranges NULL
++const ProtobufCMessageDescriptor sr__set_item_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.SetItemResp",
++ "SetItemResp",
++ "Sr__SetItemResp",
++ "sr",
++ sizeof(Sr__SetItemResp),
++ 0,
++ sr__set_item_resp__field_descriptors,
++ sr__set_item_resp__field_indices_by_name,
++ 0, sr__set_item_resp__number_ranges,
++ (ProtobufCMessageInit) sr__set_item_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__set_item_str_req__field_descriptors[3] =
++{
++ {
++ "xpath",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SetItemStrReq, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "value",
++ 2,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SetItemStrReq, value),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "options",
++ 3,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SetItemStrReq, options),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__set_item_str_req__field_indices_by_name[] = {
++ 2, /* field[2] = options */
++ 1, /* field[1] = value */
++ 0, /* field[0] = xpath */
++};
++static const ProtobufCIntRange sr__set_item_str_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 3 }
++};
++const ProtobufCMessageDescriptor sr__set_item_str_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.SetItemStrReq",
++ "SetItemStrReq",
++ "Sr__SetItemStrReq",
++ "sr",
++ sizeof(Sr__SetItemStrReq),
++ 3,
++ sr__set_item_str_req__field_descriptors,
++ sr__set_item_str_req__field_indices_by_name,
++ 1, sr__set_item_str_req__number_ranges,
++ (ProtobufCMessageInit) sr__set_item_str_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__set_item_str_resp__field_descriptors NULL
++#define sr__set_item_str_resp__field_indices_by_name NULL
++#define sr__set_item_str_resp__number_ranges NULL
++const ProtobufCMessageDescriptor sr__set_item_str_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.SetItemStrResp",
++ "SetItemStrResp",
++ "Sr__SetItemStrResp",
++ "sr",
++ sizeof(Sr__SetItemStrResp),
++ 0,
++ sr__set_item_str_resp__field_descriptors,
++ sr__set_item_str_resp__field_indices_by_name,
++ 0, sr__set_item_str_resp__number_ranges,
++ (ProtobufCMessageInit) sr__set_item_str_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__delete_item_req__field_descriptors[2] =
++{
++ {
++ "xpath",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__DeleteItemReq, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "options",
++ 3,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__DeleteItemReq, options),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__delete_item_req__field_indices_by_name[] = {
++ 1, /* field[1] = options */
++ 0, /* field[0] = xpath */
++};
++static const ProtobufCIntRange sr__delete_item_req__number_ranges[2 + 1] =
++{
++ { 1, 0 },
++ { 3, 1 },
++ { 0, 2 }
++};
++const ProtobufCMessageDescriptor sr__delete_item_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.DeleteItemReq",
++ "DeleteItemReq",
++ "Sr__DeleteItemReq",
++ "sr",
++ sizeof(Sr__DeleteItemReq),
++ 2,
++ sr__delete_item_req__field_descriptors,
++ sr__delete_item_req__field_indices_by_name,
++ 2, sr__delete_item_req__number_ranges,
++ (ProtobufCMessageInit) sr__delete_item_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__delete_item_resp__field_descriptors NULL
++#define sr__delete_item_resp__field_indices_by_name NULL
++#define sr__delete_item_resp__number_ranges NULL
++const ProtobufCMessageDescriptor sr__delete_item_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.DeleteItemResp",
++ "DeleteItemResp",
++ "Sr__DeleteItemResp",
++ "sr",
++ sizeof(Sr__DeleteItemResp),
++ 0,
++ sr__delete_item_resp__field_descriptors,
++ sr__delete_item_resp__field_indices_by_name,
++ 0, sr__delete_item_resp__number_ranges,
++ (ProtobufCMessageInit) sr__delete_item_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCEnumValue sr__move_item_req__move_position__enum_values_by_number[4] =
++{
++ { "BEFORE", "SR__MOVE_ITEM_REQ__MOVE_POSITION__BEFORE", 1 },
++ { "AFTER", "SR__MOVE_ITEM_REQ__MOVE_POSITION__AFTER", 2 },
++ { "FIRST", "SR__MOVE_ITEM_REQ__MOVE_POSITION__FIRST", 3 },
++ { "LAST", "SR__MOVE_ITEM_REQ__MOVE_POSITION__LAST", 4 },
++};
++static const ProtobufCIntRange sr__move_item_req__move_position__value_ranges[] = {
++{1, 0},{0, 4}
++};
++static const ProtobufCEnumValueIndex sr__move_item_req__move_position__enum_values_by_name[4] =
++{
++ { "AFTER", 1 },
++ { "BEFORE", 0 },
++ { "FIRST", 2 },
++ { "LAST", 3 },
++};
++const ProtobufCEnumDescriptor sr__move_item_req__move_position__descriptor =
++{
++ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
++ "sr.MoveItemReq.MovePosition",
++ "MovePosition",
++ "Sr__MoveItemReq__MovePosition",
++ "sr",
++ 4,
++ sr__move_item_req__move_position__enum_values_by_number,
++ 4,
++ sr__move_item_req__move_position__enum_values_by_name,
++ 1,
++ sr__move_item_req__move_position__value_ranges,
++ NULL,NULL,NULL,NULL /* reserved[1234] */
++};
++static const ProtobufCFieldDescriptor sr__move_item_req__field_descriptors[3] =
++{
++ {
++ "xpath",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__MoveItemReq, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "position",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_ENUM,
++ 0, /* quantifier_offset */
++ offsetof(Sr__MoveItemReq, position),
++ &sr__move_item_req__move_position__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "relative_item",
++ 3,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__MoveItemReq, relative_item),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__move_item_req__field_indices_by_name[] = {
++ 1, /* field[1] = position */
++ 2, /* field[2] = relative_item */
++ 0, /* field[0] = xpath */
++};
++static const ProtobufCIntRange sr__move_item_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 3 }
++};
++const ProtobufCMessageDescriptor sr__move_item_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.MoveItemReq",
++ "MoveItemReq",
++ "Sr__MoveItemReq",
++ "sr",
++ sizeof(Sr__MoveItemReq),
++ 3,
++ sr__move_item_req__field_descriptors,
++ sr__move_item_req__field_indices_by_name,
++ 1, sr__move_item_req__number_ranges,
++ (ProtobufCMessageInit) sr__move_item_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__move_item_resp__field_descriptors NULL
++#define sr__move_item_resp__field_indices_by_name NULL
++#define sr__move_item_resp__number_ranges NULL
++const ProtobufCMessageDescriptor sr__move_item_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.MoveItemResp",
++ "MoveItemResp",
++ "Sr__MoveItemResp",
++ "sr",
++ sizeof(Sr__MoveItemResp),
++ 0,
++ sr__move_item_resp__field_descriptors,
++ sr__move_item_resp__field_indices_by_name,
++ 0, sr__move_item_resp__number_ranges,
++ (ProtobufCMessageInit) sr__move_item_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__validate_req__field_descriptors NULL
++#define sr__validate_req__field_indices_by_name NULL
++#define sr__validate_req__number_ranges NULL
++const ProtobufCMessageDescriptor sr__validate_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.ValidateReq",
++ "ValidateReq",
++ "Sr__ValidateReq",
++ "sr",
++ sizeof(Sr__ValidateReq),
++ 0,
++ sr__validate_req__field_descriptors,
++ sr__validate_req__field_indices_by_name,
++ 0, sr__validate_req__number_ranges,
++ (ProtobufCMessageInit) sr__validate_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__validate_resp__field_descriptors[1] =
++{
++ {
++ "errors",
++ 1,
++ PROTOBUF_C_LABEL_REPEATED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ offsetof(Sr__ValidateResp, n_errors),
++ offsetof(Sr__ValidateResp, errors),
++ &sr__error__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__validate_resp__field_indices_by_name[] = {
++ 0, /* field[0] = errors */
++};
++static const ProtobufCIntRange sr__validate_resp__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__validate_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.ValidateResp",
++ "ValidateResp",
++ "Sr__ValidateResp",
++ "sr",
++ sizeof(Sr__ValidateResp),
++ 1,
++ sr__validate_resp__field_descriptors,
++ sr__validate_resp__field_indices_by_name,
++ 1, sr__validate_resp__number_ranges,
++ (ProtobufCMessageInit) sr__validate_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__commit_req__field_descriptors NULL
++#define sr__commit_req__field_indices_by_name NULL
++#define sr__commit_req__number_ranges NULL
++const ProtobufCMessageDescriptor sr__commit_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.CommitReq",
++ "CommitReq",
++ "Sr__CommitReq",
++ "sr",
++ sizeof(Sr__CommitReq),
++ 0,
++ sr__commit_req__field_descriptors,
++ sr__commit_req__field_indices_by_name,
++ 0, sr__commit_req__number_ranges,
++ (ProtobufCMessageInit) sr__commit_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__commit_resp__field_descriptors[1] =
++{
++ {
++ "errors",
++ 1,
++ PROTOBUF_C_LABEL_REPEATED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ offsetof(Sr__CommitResp, n_errors),
++ offsetof(Sr__CommitResp, errors),
++ &sr__error__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__commit_resp__field_indices_by_name[] = {
++ 0, /* field[0] = errors */
++};
++static const ProtobufCIntRange sr__commit_resp__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__commit_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.CommitResp",
++ "CommitResp",
++ "Sr__CommitResp",
++ "sr",
++ sizeof(Sr__CommitResp),
++ 1,
++ sr__commit_resp__field_descriptors,
++ sr__commit_resp__field_indices_by_name,
++ 1, sr__commit_resp__number_ranges,
++ (ProtobufCMessageInit) sr__commit_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__discard_changes_req__field_descriptors NULL
++#define sr__discard_changes_req__field_indices_by_name NULL
++#define sr__discard_changes_req__number_ranges NULL
++const ProtobufCMessageDescriptor sr__discard_changes_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.DiscardChangesReq",
++ "DiscardChangesReq",
++ "Sr__DiscardChangesReq",
++ "sr",
++ sizeof(Sr__DiscardChangesReq),
++ 0,
++ sr__discard_changes_req__field_descriptors,
++ sr__discard_changes_req__field_indices_by_name,
++ 0, sr__discard_changes_req__number_ranges,
++ (ProtobufCMessageInit) sr__discard_changes_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__discard_changes_resp__field_descriptors NULL
++#define sr__discard_changes_resp__field_indices_by_name NULL
++#define sr__discard_changes_resp__number_ranges NULL
++const ProtobufCMessageDescriptor sr__discard_changes_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.DiscardChangesResp",
++ "DiscardChangesResp",
++ "Sr__DiscardChangesResp",
++ "sr",
++ sizeof(Sr__DiscardChangesResp),
++ 0,
++ sr__discard_changes_resp__field_descriptors,
++ sr__discard_changes_resp__field_indices_by_name,
++ 0, sr__discard_changes_resp__number_ranges,
++ (ProtobufCMessageInit) sr__discard_changes_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__copy_config_req__field_descriptors[3] =
++{
++ {
++ "src_datastore",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_ENUM,
++ 0, /* quantifier_offset */
++ offsetof(Sr__CopyConfigReq, src_datastore),
++ &sr__data_store__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "dst_datastore",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_ENUM,
++ 0, /* quantifier_offset */
++ offsetof(Sr__CopyConfigReq, dst_datastore),
++ &sr__data_store__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "module_name",
++ 3,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__CopyConfigReq, module_name),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__copy_config_req__field_indices_by_name[] = {
++ 1, /* field[1] = dst_datastore */
++ 2, /* field[2] = module_name */
++ 0, /* field[0] = src_datastore */
++};
++static const ProtobufCIntRange sr__copy_config_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 3 }
++};
++const ProtobufCMessageDescriptor sr__copy_config_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.CopyConfigReq",
++ "CopyConfigReq",
++ "Sr__CopyConfigReq",
++ "sr",
++ sizeof(Sr__CopyConfigReq),
++ 3,
++ sr__copy_config_req__field_descriptors,
++ sr__copy_config_req__field_indices_by_name,
++ 1, sr__copy_config_req__number_ranges,
++ (ProtobufCMessageInit) sr__copy_config_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__copy_config_resp__field_descriptors NULL
++#define sr__copy_config_resp__field_indices_by_name NULL
++#define sr__copy_config_resp__number_ranges NULL
++const ProtobufCMessageDescriptor sr__copy_config_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.CopyConfigResp",
++ "CopyConfigResp",
++ "Sr__CopyConfigResp",
++ "sr",
++ sizeof(Sr__CopyConfigResp),
++ 0,
++ sr__copy_config_resp__field_descriptors,
++ sr__copy_config_resp__field_indices_by_name,
++ 0, sr__copy_config_resp__number_ranges,
++ (ProtobufCMessageInit) sr__copy_config_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__lock_req__field_descriptors[1] =
++{
++ {
++ "module_name",
++ 1,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__LockReq, module_name),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__lock_req__field_indices_by_name[] = {
++ 0, /* field[0] = module_name */
++};
++static const ProtobufCIntRange sr__lock_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__lock_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.LockReq",
++ "LockReq",
++ "Sr__LockReq",
++ "sr",
++ sizeof(Sr__LockReq),
++ 1,
++ sr__lock_req__field_descriptors,
++ sr__lock_req__field_indices_by_name,
++ 1, sr__lock_req__number_ranges,
++ (ProtobufCMessageInit) sr__lock_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__lock_resp__field_descriptors NULL
++#define sr__lock_resp__field_indices_by_name NULL
++#define sr__lock_resp__number_ranges NULL
++const ProtobufCMessageDescriptor sr__lock_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.LockResp",
++ "LockResp",
++ "Sr__LockResp",
++ "sr",
++ sizeof(Sr__LockResp),
++ 0,
++ sr__lock_resp__field_descriptors,
++ sr__lock_resp__field_indices_by_name,
++ 0, sr__lock_resp__number_ranges,
++ (ProtobufCMessageInit) sr__lock_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__unlock_req__field_descriptors[1] =
++{
++ {
++ "module_name",
++ 1,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__UnlockReq, module_name),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__unlock_req__field_indices_by_name[] = {
++ 0, /* field[0] = module_name */
++};
++static const ProtobufCIntRange sr__unlock_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__unlock_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.UnlockReq",
++ "UnlockReq",
++ "Sr__UnlockReq",
++ "sr",
++ sizeof(Sr__UnlockReq),
++ 1,
++ sr__unlock_req__field_descriptors,
++ sr__unlock_req__field_indices_by_name,
++ 1, sr__unlock_req__number_ranges,
++ (ProtobufCMessageInit) sr__unlock_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__unlock_resp__field_descriptors NULL
++#define sr__unlock_resp__field_indices_by_name NULL
++#define sr__unlock_resp__number_ranges NULL
++const ProtobufCMessageDescriptor sr__unlock_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.UnlockResp",
++ "UnlockResp",
++ "Sr__UnlockResp",
++ "sr",
++ sizeof(Sr__UnlockResp),
++ 0,
++ sr__unlock_resp__field_descriptors,
++ sr__unlock_resp__field_indices_by_name,
++ 0, sr__unlock_resp__number_ranges,
++ (ProtobufCMessageInit) sr__unlock_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__subscribe_req__field_descriptors[10] =
++{
++ {
++ "type",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_ENUM,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SubscribeReq, type),
++ &sr__subscription_type__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "destination",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SubscribeReq, destination),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "subscription_id",
++ 3,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SubscribeReq, subscription_id),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "module_name",
++ 4,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SubscribeReq, module_name),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "xpath",
++ 5,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SubscribeReq, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "notif_event",
++ 10,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_ENUM,
++ offsetof(Sr__SubscribeReq, has_notif_event),
++ offsetof(Sr__SubscribeReq, notif_event),
++ &sr__notification_event__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "priority",
++ 11,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_UINT32,
++ offsetof(Sr__SubscribeReq, has_priority),
++ offsetof(Sr__SubscribeReq, priority),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "enable_running",
++ 12,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_BOOL,
++ offsetof(Sr__SubscribeReq, has_enable_running),
++ offsetof(Sr__SubscribeReq, enable_running),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "enable_event",
++ 13,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_BOOL,
++ offsetof(Sr__SubscribeReq, has_enable_event),
++ offsetof(Sr__SubscribeReq, enable_event),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "api_variant",
++ 20,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_ENUM,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SubscribeReq, api_variant),
++ &sr__api_variant__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__subscribe_req__field_indices_by_name[] = {
++ 9, /* field[9] = api_variant */
++ 1, /* field[1] = destination */
++ 8, /* field[8] = enable_event */
++ 7, /* field[7] = enable_running */
++ 3, /* field[3] = module_name */
++ 5, /* field[5] = notif_event */
++ 6, /* field[6] = priority */
++ 2, /* field[2] = subscription_id */
++ 0, /* field[0] = type */
++ 4, /* field[4] = xpath */
++};
++static const ProtobufCIntRange sr__subscribe_req__number_ranges[3 + 1] =
++{
++ { 1, 0 },
++ { 10, 5 },
++ { 20, 9 },
++ { 0, 10 }
++};
++const ProtobufCMessageDescriptor sr__subscribe_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.SubscribeReq",
++ "SubscribeReq",
++ "Sr__SubscribeReq",
++ "sr",
++ sizeof(Sr__SubscribeReq),
++ 10,
++ sr__subscribe_req__field_descriptors,
++ sr__subscribe_req__field_indices_by_name,
++ 3, sr__subscribe_req__number_ranges,
++ (ProtobufCMessageInit) sr__subscribe_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__subscribe_resp__field_descriptors NULL
++#define sr__subscribe_resp__field_indices_by_name NULL
++#define sr__subscribe_resp__number_ranges NULL
++const ProtobufCMessageDescriptor sr__subscribe_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.SubscribeResp",
++ "SubscribeResp",
++ "Sr__SubscribeResp",
++ "sr",
++ sizeof(Sr__SubscribeResp),
++ 0,
++ sr__subscribe_resp__field_descriptors,
++ sr__subscribe_resp__field_indices_by_name,
++ 0, sr__subscribe_resp__number_ranges,
++ (ProtobufCMessageInit) sr__subscribe_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__unsubscribe_req__field_descriptors[4] =
++{
++ {
++ "type",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_ENUM,
++ 0, /* quantifier_offset */
++ offsetof(Sr__UnsubscribeReq, type),
++ &sr__subscription_type__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "destination",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__UnsubscribeReq, destination),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "subscription_id",
++ 3,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__UnsubscribeReq, subscription_id),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "module_name",
++ 4,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__UnsubscribeReq, module_name),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__unsubscribe_req__field_indices_by_name[] = {
++ 1, /* field[1] = destination */
++ 3, /* field[3] = module_name */
++ 2, /* field[2] = subscription_id */
++ 0, /* field[0] = type */
++};
++static const ProtobufCIntRange sr__unsubscribe_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 4 }
++};
++const ProtobufCMessageDescriptor sr__unsubscribe_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.UnsubscribeReq",
++ "UnsubscribeReq",
++ "Sr__UnsubscribeReq",
++ "sr",
++ sizeof(Sr__UnsubscribeReq),
++ 4,
++ sr__unsubscribe_req__field_descriptors,
++ sr__unsubscribe_req__field_indices_by_name,
++ 1, sr__unsubscribe_req__number_ranges,
++ (ProtobufCMessageInit) sr__unsubscribe_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__unsubscribe_resp__field_descriptors NULL
++#define sr__unsubscribe_resp__field_indices_by_name NULL
++#define sr__unsubscribe_resp__number_ranges NULL
++const ProtobufCMessageDescriptor sr__unsubscribe_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.UnsubscribeResp",
++ "UnsubscribeResp",
++ "Sr__UnsubscribeResp",
++ "sr",
++ sizeof(Sr__UnsubscribeResp),
++ 0,
++ sr__unsubscribe_resp__field_descriptors,
++ sr__unsubscribe_resp__field_indices_by_name,
++ 0, sr__unsubscribe_resp__number_ranges,
++ (ProtobufCMessageInit) sr__unsubscribe_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__check_enabled_running_req__field_descriptors[1] =
++{
++ {
++ "module_name",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__CheckEnabledRunningReq, module_name),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__check_enabled_running_req__field_indices_by_name[] = {
++ 0, /* field[0] = module_name */
++};
++static const ProtobufCIntRange sr__check_enabled_running_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__check_enabled_running_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.CheckEnabledRunningReq",
++ "CheckEnabledRunningReq",
++ "Sr__CheckEnabledRunningReq",
++ "sr",
++ sizeof(Sr__CheckEnabledRunningReq),
++ 1,
++ sr__check_enabled_running_req__field_descriptors,
++ sr__check_enabled_running_req__field_indices_by_name,
++ 1, sr__check_enabled_running_req__number_ranges,
++ (ProtobufCMessageInit) sr__check_enabled_running_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__check_enabled_running_resp__field_descriptors[1] =
++{
++ {
++ "enabled",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_BOOL,
++ 0, /* quantifier_offset */
++ offsetof(Sr__CheckEnabledRunningResp, enabled),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__check_enabled_running_resp__field_indices_by_name[] = {
++ 0, /* field[0] = enabled */
++};
++static const ProtobufCIntRange sr__check_enabled_running_resp__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__check_enabled_running_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.CheckEnabledRunningResp",
++ "CheckEnabledRunningResp",
++ "Sr__CheckEnabledRunningResp",
++ "sr",
++ sizeof(Sr__CheckEnabledRunningResp),
++ 1,
++ sr__check_enabled_running_resp__field_descriptors,
++ sr__check_enabled_running_resp__field_indices_by_name,
++ 1, sr__check_enabled_running_resp__number_ranges,
++ (ProtobufCMessageInit) sr__check_enabled_running_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__module_install_notification__field_descriptors[3] =
++{
++ {
++ "module_name",
++ 1,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__ModuleInstallNotification, module_name),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "revision",
++ 2,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__ModuleInstallNotification, revision),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "state",
++ 3,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_ENUM,
++ 0, /* quantifier_offset */
++ offsetof(Sr__ModuleInstallNotification, state),
++ &sr__module_state__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__module_install_notification__field_indices_by_name[] = {
++ 0, /* field[0] = module_name */
++ 1, /* field[1] = revision */
++ 2, /* field[2] = state */
++};
++static const ProtobufCIntRange sr__module_install_notification__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 3 }
++};
++const ProtobufCMessageDescriptor sr__module_install_notification__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.ModuleInstallNotification",
++ "ModuleInstallNotification",
++ "Sr__ModuleInstallNotification",
++ "sr",
++ sizeof(Sr__ModuleInstallNotification),
++ 3,
++ sr__module_install_notification__field_descriptors,
++ sr__module_install_notification__field_indices_by_name,
++ 1, sr__module_install_notification__number_ranges,
++ (ProtobufCMessageInit) sr__module_install_notification__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__feature_enable_notification__field_descriptors[3] =
++{
++ {
++ "module_name",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__FeatureEnableNotification, module_name),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "feature_name",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__FeatureEnableNotification, feature_name),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "enabled",
++ 3,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_BOOL,
++ 0, /* quantifier_offset */
++ offsetof(Sr__FeatureEnableNotification, enabled),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__feature_enable_notification__field_indices_by_name[] = {
++ 2, /* field[2] = enabled */
++ 1, /* field[1] = feature_name */
++ 0, /* field[0] = module_name */
++};
++static const ProtobufCIntRange sr__feature_enable_notification__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 3 }
++};
++const ProtobufCMessageDescriptor sr__feature_enable_notification__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.FeatureEnableNotification",
++ "FeatureEnableNotification",
++ "Sr__FeatureEnableNotification",
++ "sr",
++ sizeof(Sr__FeatureEnableNotification),
++ 3,
++ sr__feature_enable_notification__field_descriptors,
++ sr__feature_enable_notification__field_indices_by_name,
++ 1, sr__feature_enable_notification__number_ranges,
++ (ProtobufCMessageInit) sr__feature_enable_notification__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__module_change_notification__field_descriptors[2] =
++{
++ {
++ "event",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_ENUM,
++ 0, /* quantifier_offset */
++ offsetof(Sr__ModuleChangeNotification, event),
++ &sr__notification_event__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "module_name",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__ModuleChangeNotification, module_name),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__module_change_notification__field_indices_by_name[] = {
++ 0, /* field[0] = event */
++ 1, /* field[1] = module_name */
++};
++static const ProtobufCIntRange sr__module_change_notification__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 2 }
++};
++const ProtobufCMessageDescriptor sr__module_change_notification__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.ModuleChangeNotification",
++ "ModuleChangeNotification",
++ "Sr__ModuleChangeNotification",
++ "sr",
++ sizeof(Sr__ModuleChangeNotification),
++ 2,
++ sr__module_change_notification__field_descriptors,
++ sr__module_change_notification__field_indices_by_name,
++ 1, sr__module_change_notification__number_ranges,
++ (ProtobufCMessageInit) sr__module_change_notification__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__subtree_change_notification__field_descriptors[2] =
++{
++ {
++ "event",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_ENUM,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SubtreeChangeNotification, event),
++ &sr__notification_event__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "xpath",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__SubtreeChangeNotification, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__subtree_change_notification__field_indices_by_name[] = {
++ 0, /* field[0] = event */
++ 1, /* field[1] = xpath */
++};
++static const ProtobufCIntRange sr__subtree_change_notification__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 2 }
++};
++const ProtobufCMessageDescriptor sr__subtree_change_notification__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.SubtreeChangeNotification",
++ "SubtreeChangeNotification",
++ "Sr__SubtreeChangeNotification",
++ "sr",
++ sizeof(Sr__SubtreeChangeNotification),
++ 2,
++ sr__subtree_change_notification__field_descriptors,
++ sr__subtree_change_notification__field_indices_by_name,
++ 1, sr__subtree_change_notification__number_ranges,
++ (ProtobufCMessageInit) sr__subtree_change_notification__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__change__field_descriptors[3] =
++{
++ {
++ "changeOperation",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_ENUM,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Change, changeoperation),
++ &sr__change_operation__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "new_value",
++ 2,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Change, new_value),
++ &sr__value__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "old_value",
++ 3,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Change, old_value),
++ &sr__value__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__change__field_indices_by_name[] = {
++ 0, /* field[0] = changeOperation */
++ 1, /* field[1] = new_value */
++ 2, /* field[2] = old_value */
++};
++static const ProtobufCIntRange sr__change__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 3 }
++};
++const ProtobufCMessageDescriptor sr__change__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.Change",
++ "Change",
++ "Sr__Change",
++ "sr",
++ sizeof(Sr__Change),
++ 3,
++ sr__change__field_descriptors,
++ sr__change__field_indices_by_name,
++ 1, sr__change__number_ranges,
++ (ProtobufCMessageInit) sr__change__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__get_changes_req__field_descriptors[3] =
++{
++ {
++ "xpath",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__GetChangesReq, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "limit",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__GetChangesReq, limit),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "offset",
++ 3,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__GetChangesReq, offset),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__get_changes_req__field_indices_by_name[] = {
++ 1, /* field[1] = limit */
++ 2, /* field[2] = offset */
++ 0, /* field[0] = xpath */
++};
++static const ProtobufCIntRange sr__get_changes_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 3 }
++};
++const ProtobufCMessageDescriptor sr__get_changes_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.GetChangesReq",
++ "GetChangesReq",
++ "Sr__GetChangesReq",
++ "sr",
++ sizeof(Sr__GetChangesReq),
++ 3,
++ sr__get_changes_req__field_descriptors,
++ sr__get_changes_req__field_indices_by_name,
++ 1, sr__get_changes_req__number_ranges,
++ (ProtobufCMessageInit) sr__get_changes_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__get_changes_resp__field_descriptors[1] =
++{
++ {
++ "changes",
++ 1,
++ PROTOBUF_C_LABEL_REPEATED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ offsetof(Sr__GetChangesResp, n_changes),
++ offsetof(Sr__GetChangesResp, changes),
++ &sr__change__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__get_changes_resp__field_indices_by_name[] = {
++ 0, /* field[0] = changes */
++};
++static const ProtobufCIntRange sr__get_changes_resp__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__get_changes_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.GetChangesResp",
++ "GetChangesResp",
++ "Sr__GetChangesResp",
++ "sr",
++ sizeof(Sr__GetChangesResp),
++ 1,
++ sr__get_changes_resp__field_descriptors,
++ sr__get_changes_resp__field_indices_by_name,
++ 1, sr__get_changes_resp__number_ranges,
++ (ProtobufCMessageInit) sr__get_changes_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__check_exec_perm_req__field_descriptors[1] =
++{
++ {
++ "xpath",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__CheckExecPermReq, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__check_exec_perm_req__field_indices_by_name[] = {
++ 0, /* field[0] = xpath */
++};
++static const ProtobufCIntRange sr__check_exec_perm_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__check_exec_perm_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.CheckExecPermReq",
++ "CheckExecPermReq",
++ "Sr__CheckExecPermReq",
++ "sr",
++ sizeof(Sr__CheckExecPermReq),
++ 1,
++ sr__check_exec_perm_req__field_descriptors,
++ sr__check_exec_perm_req__field_indices_by_name,
++ 1, sr__check_exec_perm_req__number_ranges,
++ (ProtobufCMessageInit) sr__check_exec_perm_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__check_exec_perm_resp__field_descriptors[1] =
++{
++ {
++ "permitted",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_BOOL,
++ 0, /* quantifier_offset */
++ offsetof(Sr__CheckExecPermResp, permitted),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__check_exec_perm_resp__field_indices_by_name[] = {
++ 0, /* field[0] = permitted */
++};
++static const ProtobufCIntRange sr__check_exec_perm_resp__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__check_exec_perm_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.CheckExecPermResp",
++ "CheckExecPermResp",
++ "Sr__CheckExecPermResp",
++ "sr",
++ sizeof(Sr__CheckExecPermResp),
++ 1,
++ sr__check_exec_perm_resp__field_descriptors,
++ sr__check_exec_perm_resp__field_indices_by_name,
++ 1, sr__check_exec_perm_resp__number_ranges,
++ (ProtobufCMessageInit) sr__check_exec_perm_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__rpcreq__field_descriptors[7] =
++{
++ {
++ "action",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_BOOL,
++ 0, /* quantifier_offset */
++ offsetof(Sr__RPCReq, action),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "xpath",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__RPCReq, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "orig_api_variant",
++ 3,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_ENUM,
++ 0, /* quantifier_offset */
++ offsetof(Sr__RPCReq, orig_api_variant),
++ &sr__api_variant__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "input",
++ 4,
++ PROTOBUF_C_LABEL_REPEATED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ offsetof(Sr__RPCReq, n_input),
++ offsetof(Sr__RPCReq, input),
++ &sr__value__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "input_tree",
++ 5,
++ PROTOBUF_C_LABEL_REPEATED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ offsetof(Sr__RPCReq, n_input_tree),
++ offsetof(Sr__RPCReq, input_tree),
++ &sr__node__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "subscriber_address",
++ 10,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__RPCReq, subscriber_address),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "subscription_id",
++ 11,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_UINT32,
++ offsetof(Sr__RPCReq, has_subscription_id),
++ offsetof(Sr__RPCReq, subscription_id),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__rpcreq__field_indices_by_name[] = {
++ 0, /* field[0] = action */
++ 3, /* field[3] = input */
++ 4, /* field[4] = input_tree */
++ 2, /* field[2] = orig_api_variant */
++ 5, /* field[5] = subscriber_address */
++ 6, /* field[6] = subscription_id */
++ 1, /* field[1] = xpath */
++};
++static const ProtobufCIntRange sr__rpcreq__number_ranges[2 + 1] =
++{
++ { 1, 0 },
++ { 10, 5 },
++ { 0, 7 }
++};
++const ProtobufCMessageDescriptor sr__rpcreq__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.RPCReq",
++ "RPCReq",
++ "Sr__RPCReq",
++ "sr",
++ sizeof(Sr__RPCReq),
++ 7,
++ sr__rpcreq__field_descriptors,
++ sr__rpcreq__field_indices_by_name,
++ 2, sr__rpcreq__number_ranges,
++ (ProtobufCMessageInit) sr__rpcreq__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__rpcresp__field_descriptors[5] =
++{
++ {
++ "action",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_BOOL,
++ 0, /* quantifier_offset */
++ offsetof(Sr__RPCResp, action),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "xpath",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__RPCResp, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "orig_api_variant",
++ 3,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_ENUM,
++ 0, /* quantifier_offset */
++ offsetof(Sr__RPCResp, orig_api_variant),
++ &sr__api_variant__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "output",
++ 4,
++ PROTOBUF_C_LABEL_REPEATED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ offsetof(Sr__RPCResp, n_output),
++ offsetof(Sr__RPCResp, output),
++ &sr__value__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "output_tree",
++ 5,
++ PROTOBUF_C_LABEL_REPEATED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ offsetof(Sr__RPCResp, n_output_tree),
++ offsetof(Sr__RPCResp, output_tree),
++ &sr__node__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__rpcresp__field_indices_by_name[] = {
++ 0, /* field[0] = action */
++ 2, /* field[2] = orig_api_variant */
++ 3, /* field[3] = output */
++ 4, /* field[4] = output_tree */
++ 1, /* field[1] = xpath */
++};
++static const ProtobufCIntRange sr__rpcresp__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 5 }
++};
++const ProtobufCMessageDescriptor sr__rpcresp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.RPCResp",
++ "RPCResp",
++ "Sr__RPCResp",
++ "sr",
++ sizeof(Sr__RPCResp),
++ 5,
++ sr__rpcresp__field_descriptors,
++ sr__rpcresp__field_indices_by_name,
++ 1, sr__rpcresp__number_ranges,
++ (ProtobufCMessageInit) sr__rpcresp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCEnumValue sr__event_notif_req__notif_type__enum_values_by_number[4] =
++{
++ { "REALTIME", "SR__EVENT_NOTIF_REQ__NOTIF_TYPE__REALTIME", 1 },
++ { "REPLAY", "SR__EVENT_NOTIF_REQ__NOTIF_TYPE__REPLAY", 2 },
++ { "REPLAY_COMPLETE", "SR__EVENT_NOTIF_REQ__NOTIF_TYPE__REPLAY_COMPLETE", 3 },
++ { "REPLAY_STOP", "SR__EVENT_NOTIF_REQ__NOTIF_TYPE__REPLAY_STOP", 4 },
++};
++static const ProtobufCIntRange sr__event_notif_req__notif_type__value_ranges[] = {
++{1, 0},{0, 4}
++};
++static const ProtobufCEnumValueIndex sr__event_notif_req__notif_type__enum_values_by_name[4] =
++{
++ { "REALTIME", 0 },
++ { "REPLAY", 1 },
++ { "REPLAY_COMPLETE", 2 },
++ { "REPLAY_STOP", 3 },
++};
++const ProtobufCEnumDescriptor sr__event_notif_req__notif_type__descriptor =
++{
++ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
++ "sr.EventNotifReq.NotifType",
++ "NotifType",
++ "Sr__EventNotifReq__NotifType",
++ "sr",
++ 4,
++ sr__event_notif_req__notif_type__enum_values_by_number,
++ 4,
++ sr__event_notif_req__notif_type__enum_values_by_name,
++ 1,
++ sr__event_notif_req__notif_type__value_ranges,
++ NULL,NULL,NULL,NULL /* reserved[1234] */
++};
++static const ProtobufCEnumValue sr__event_notif_req__notif_flags__enum_values_by_number[2] =
++{
++ { "DEFAULT", "SR__EVENT_NOTIF_REQ__NOTIF_FLAGS__DEFAULT", 0 },
++ { "EPHEMERAL", "SR__EVENT_NOTIF_REQ__NOTIF_FLAGS__EPHEMERAL", 1 },
++};
++static const ProtobufCIntRange sr__event_notif_req__notif_flags__value_ranges[] = {
++{0, 0},{0, 2}
++};
++static const ProtobufCEnumValueIndex sr__event_notif_req__notif_flags__enum_values_by_name[2] =
++{
++ { "DEFAULT", 0 },
++ { "EPHEMERAL", 1 },
++};
++const ProtobufCEnumDescriptor sr__event_notif_req__notif_flags__descriptor =
++{
++ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
++ "sr.EventNotifReq.NotifFlags",
++ "NotifFlags",
++ "Sr__EventNotifReq__NotifFlags",
++ "sr",
++ 2,
++ sr__event_notif_req__notif_flags__enum_values_by_number,
++ 2,
++ sr__event_notif_req__notif_flags__enum_values_by_name,
++ 1,
++ sr__event_notif_req__notif_flags__value_ranges,
++ NULL,NULL,NULL,NULL /* reserved[1234] */
++};
++static const ProtobufCFieldDescriptor sr__event_notif_req__field_descriptors[9] =
++{
++ {
++ "type",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_ENUM,
++ 0, /* quantifier_offset */
++ offsetof(Sr__EventNotifReq, type),
++ &sr__event_notif_req__notif_type__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "options",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__EventNotifReq, options),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "xpath",
++ 3,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__EventNotifReq, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "values",
++ 4,
++ PROTOBUF_C_LABEL_REPEATED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ offsetof(Sr__EventNotifReq, n_values),
++ offsetof(Sr__EventNotifReq, values),
++ &sr__value__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "trees",
++ 5,
++ PROTOBUF_C_LABEL_REPEATED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ offsetof(Sr__EventNotifReq, n_trees),
++ offsetof(Sr__EventNotifReq, trees),
++ &sr__node__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "timestamp",
++ 6,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT64,
++ 0, /* quantifier_offset */
++ offsetof(Sr__EventNotifReq, timestamp),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "subscriber_address",
++ 10,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__EventNotifReq, subscriber_address),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "subscription_id",
++ 11,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_UINT32,
++ offsetof(Sr__EventNotifReq, has_subscription_id),
++ offsetof(Sr__EventNotifReq, subscription_id),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "do_not_send_reply",
++ 20,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_BOOL,
++ 0, /* quantifier_offset */
++ offsetof(Sr__EventNotifReq, do_not_send_reply),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__event_notif_req__field_indices_by_name[] = {
++ 8, /* field[8] = do_not_send_reply */
++ 1, /* field[1] = options */
++ 6, /* field[6] = subscriber_address */
++ 7, /* field[7] = subscription_id */
++ 5, /* field[5] = timestamp */
++ 4, /* field[4] = trees */
++ 0, /* field[0] = type */
++ 3, /* field[3] = values */
++ 2, /* field[2] = xpath */
++};
++static const ProtobufCIntRange sr__event_notif_req__number_ranges[3 + 1] =
++{
++ { 1, 0 },
++ { 10, 6 },
++ { 20, 8 },
++ { 0, 9 }
++};
++const ProtobufCMessageDescriptor sr__event_notif_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.EventNotifReq",
++ "EventNotifReq",
++ "Sr__EventNotifReq",
++ "sr",
++ sizeof(Sr__EventNotifReq),
++ 9,
++ sr__event_notif_req__field_descriptors,
++ sr__event_notif_req__field_indices_by_name,
++ 3, sr__event_notif_req__number_ranges,
++ (ProtobufCMessageInit) sr__event_notif_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__event_notif_resp__field_descriptors NULL
++#define sr__event_notif_resp__field_indices_by_name NULL
++#define sr__event_notif_resp__number_ranges NULL
++const ProtobufCMessageDescriptor sr__event_notif_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.EventNotifResp",
++ "EventNotifResp",
++ "Sr__EventNotifResp",
++ "sr",
++ sizeof(Sr__EventNotifResp),
++ 0,
++ sr__event_notif_resp__field_descriptors,
++ sr__event_notif_resp__field_indices_by_name,
++ 0, sr__event_notif_resp__number_ranges,
++ (ProtobufCMessageInit) sr__event_notif_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__event_notif_replay_req__field_descriptors[6] =
++{
++ {
++ "xpath",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__EventNotifReplayReq, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "start_time",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT64,
++ 0, /* quantifier_offset */
++ offsetof(Sr__EventNotifReplayReq, start_time),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "stop_time",
++ 3,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT64,
++ 0, /* quantifier_offset */
++ offsetof(Sr__EventNotifReplayReq, stop_time),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "subscriber_address",
++ 10,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__EventNotifReplayReq, subscriber_address),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "subscription_id",
++ 11,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__EventNotifReplayReq, subscription_id),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "api_variant",
++ 12,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_ENUM,
++ 0, /* quantifier_offset */
++ offsetof(Sr__EventNotifReplayReq, api_variant),
++ &sr__api_variant__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__event_notif_replay_req__field_indices_by_name[] = {
++ 5, /* field[5] = api_variant */
++ 1, /* field[1] = start_time */
++ 2, /* field[2] = stop_time */
++ 3, /* field[3] = subscriber_address */
++ 4, /* field[4] = subscription_id */
++ 0, /* field[0] = xpath */
++};
++static const ProtobufCIntRange sr__event_notif_replay_req__number_ranges[2 + 1] =
++{
++ { 1, 0 },
++ { 10, 3 },
++ { 0, 6 }
++};
++const ProtobufCMessageDescriptor sr__event_notif_replay_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.EventNotifReplayReq",
++ "EventNotifReplayReq",
++ "Sr__EventNotifReplayReq",
++ "sr",
++ sizeof(Sr__EventNotifReplayReq),
++ 6,
++ sr__event_notif_replay_req__field_descriptors,
++ sr__event_notif_replay_req__field_indices_by_name,
++ 2, sr__event_notif_replay_req__number_ranges,
++ (ProtobufCMessageInit) sr__event_notif_replay_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__event_notif_replay_resp__field_descriptors NULL
++#define sr__event_notif_replay_resp__field_indices_by_name NULL
++#define sr__event_notif_replay_resp__number_ranges NULL
++const ProtobufCMessageDescriptor sr__event_notif_replay_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.EventNotifReplayResp",
++ "EventNotifReplayResp",
++ "Sr__EventNotifReplayResp",
++ "sr",
++ sizeof(Sr__EventNotifReplayResp),
++ 0,
++ sr__event_notif_replay_resp__field_descriptors,
++ sr__event_notif_replay_resp__field_indices_by_name,
++ 0, sr__event_notif_replay_resp__number_ranges,
++ (ProtobufCMessageInit) sr__event_notif_replay_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__data_provide_req__field_descriptors[4] =
++{
++ {
++ "xpath",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__DataProvideReq, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "subscriber_address",
++ 10,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__DataProvideReq, subscriber_address),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "subscription_id",
++ 11,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__DataProvideReq, subscription_id),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "request_id",
++ 20,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT64,
++ 0, /* quantifier_offset */
++ offsetof(Sr__DataProvideReq, request_id),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__data_provide_req__field_indices_by_name[] = {
++ 3, /* field[3] = request_id */
++ 1, /* field[1] = subscriber_address */
++ 2, /* field[2] = subscription_id */
++ 0, /* field[0] = xpath */
++};
++static const ProtobufCIntRange sr__data_provide_req__number_ranges[3 + 1] =
++{
++ { 1, 0 },
++ { 10, 1 },
++ { 20, 3 },
++ { 0, 4 }
++};
++const ProtobufCMessageDescriptor sr__data_provide_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.DataProvideReq",
++ "DataProvideReq",
++ "Sr__DataProvideReq",
++ "sr",
++ sizeof(Sr__DataProvideReq),
++ 4,
++ sr__data_provide_req__field_descriptors,
++ sr__data_provide_req__field_indices_by_name,
++ 3, sr__data_provide_req__number_ranges,
++ (ProtobufCMessageInit) sr__data_provide_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__data_provide_resp__field_descriptors[3] =
++{
++ {
++ "xpath",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__DataProvideResp, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "values",
++ 2,
++ PROTOBUF_C_LABEL_REPEATED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ offsetof(Sr__DataProvideResp, n_values),
++ offsetof(Sr__DataProvideResp, values),
++ &sr__value__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "request_id",
++ 10,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT64,
++ 0, /* quantifier_offset */
++ offsetof(Sr__DataProvideResp, request_id),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__data_provide_resp__field_indices_by_name[] = {
++ 2, /* field[2] = request_id */
++ 1, /* field[1] = values */
++ 0, /* field[0] = xpath */
++};
++static const ProtobufCIntRange sr__data_provide_resp__number_ranges[2 + 1] =
++{
++ { 1, 0 },
++ { 10, 2 },
++ { 0, 3 }
++};
++const ProtobufCMessageDescriptor sr__data_provide_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.DataProvideResp",
++ "DataProvideResp",
++ "Sr__DataProvideResp",
++ "sr",
++ sizeof(Sr__DataProvideResp),
++ 3,
++ sr__data_provide_resp__field_descriptors,
++ sr__data_provide_resp__field_indices_by_name,
++ 2, sr__data_provide_resp__number_ranges,
++ (ProtobufCMessageInit) sr__data_provide_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__module_install_req__field_descriptors[4] =
++{
++ {
++ "module_name",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__ModuleInstallReq, module_name),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "revision",
++ 2,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__ModuleInstallReq, revision),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "file_name",
++ 3,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__ModuleInstallReq, file_name),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "installed",
++ 4,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_BOOL,
++ 0, /* quantifier_offset */
++ offsetof(Sr__ModuleInstallReq, installed),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__module_install_req__field_indices_by_name[] = {
++ 2, /* field[2] = file_name */
++ 3, /* field[3] = installed */
++ 0, /* field[0] = module_name */
++ 1, /* field[1] = revision */
++};
++static const ProtobufCIntRange sr__module_install_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 4 }
++};
++const ProtobufCMessageDescriptor sr__module_install_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.ModuleInstallReq",
++ "ModuleInstallReq",
++ "Sr__ModuleInstallReq",
++ "sr",
++ sizeof(Sr__ModuleInstallReq),
++ 4,
++ sr__module_install_req__field_descriptors,
++ sr__module_install_req__field_indices_by_name,
++ 1, sr__module_install_req__number_ranges,
++ (ProtobufCMessageInit) sr__module_install_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__module_install_resp__field_descriptors NULL
++#define sr__module_install_resp__field_indices_by_name NULL
++#define sr__module_install_resp__number_ranges NULL
++const ProtobufCMessageDescriptor sr__module_install_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.ModuleInstallResp",
++ "ModuleInstallResp",
++ "Sr__ModuleInstallResp",
++ "sr",
++ sizeof(Sr__ModuleInstallResp),
++ 0,
++ sr__module_install_resp__field_descriptors,
++ sr__module_install_resp__field_indices_by_name,
++ 0, sr__module_install_resp__number_ranges,
++ (ProtobufCMessageInit) sr__module_install_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__feature_enable_req__field_descriptors[3] =
++{
++ {
++ "module_name",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__FeatureEnableReq, module_name),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "feature_name",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__FeatureEnableReq, feature_name),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "enabled",
++ 3,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_BOOL,
++ 0, /* quantifier_offset */
++ offsetof(Sr__FeatureEnableReq, enabled),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__feature_enable_req__field_indices_by_name[] = {
++ 2, /* field[2] = enabled */
++ 1, /* field[1] = feature_name */
++ 0, /* field[0] = module_name */
++};
++static const ProtobufCIntRange sr__feature_enable_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 3 }
++};
++const ProtobufCMessageDescriptor sr__feature_enable_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.FeatureEnableReq",
++ "FeatureEnableReq",
++ "Sr__FeatureEnableReq",
++ "sr",
++ sizeof(Sr__FeatureEnableReq),
++ 3,
++ sr__feature_enable_req__field_descriptors,
++ sr__feature_enable_req__field_indices_by_name,
++ 1, sr__feature_enable_req__number_ranges,
++ (ProtobufCMessageInit) sr__feature_enable_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__feature_enable_resp__field_descriptors NULL
++#define sr__feature_enable_resp__field_indices_by_name NULL
++#define sr__feature_enable_resp__number_ranges NULL
++const ProtobufCMessageDescriptor sr__feature_enable_resp__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.FeatureEnableResp",
++ "FeatureEnableResp",
++ "Sr__FeatureEnableResp",
++ "sr",
++ sizeof(Sr__FeatureEnableResp),
++ 0,
++ sr__feature_enable_resp__field_descriptors,
++ sr__feature_enable_resp__field_indices_by_name,
++ 0, sr__feature_enable_resp__number_ranges,
++ (ProtobufCMessageInit) sr__feature_enable_resp__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__unsubscribe_destination_req__field_descriptors[1] =
++{
++ {
++ "destination",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__UnsubscribeDestinationReq, destination),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__unsubscribe_destination_req__field_indices_by_name[] = {
++ 0, /* field[0] = destination */
++};
++static const ProtobufCIntRange sr__unsubscribe_destination_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__unsubscribe_destination_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.UnsubscribeDestinationReq",
++ "UnsubscribeDestinationReq",
++ "Sr__UnsubscribeDestinationReq",
++ "sr",
++ sizeof(Sr__UnsubscribeDestinationReq),
++ 1,
++ sr__unsubscribe_destination_req__field_descriptors,
++ sr__unsubscribe_destination_req__field_indices_by_name,
++ 1, sr__unsubscribe_destination_req__number_ranges,
++ (ProtobufCMessageInit) sr__unsubscribe_destination_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__commit_timeout_req__field_descriptors[2] =
++{
++ {
++ "commit_id",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__CommitTimeoutReq, commit_id),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "expired",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_BOOL,
++ 0, /* quantifier_offset */
++ offsetof(Sr__CommitTimeoutReq, expired),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__commit_timeout_req__field_indices_by_name[] = {
++ 0, /* field[0] = commit_id */
++ 1, /* field[1] = expired */
++};
++static const ProtobufCIntRange sr__commit_timeout_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 2 }
++};
++const ProtobufCMessageDescriptor sr__commit_timeout_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.CommitTimeoutReq",
++ "CommitTimeoutReq",
++ "Sr__CommitTimeoutReq",
++ "sr",
++ sizeof(Sr__CommitTimeoutReq),
++ 2,
++ sr__commit_timeout_req__field_descriptors,
++ sr__commit_timeout_req__field_indices_by_name,
++ 1, sr__commit_timeout_req__number_ranges,
++ (ProtobufCMessageInit) sr__commit_timeout_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__oper_data_timeout_req__field_descriptors[1] =
++{
++ {
++ "request_id",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT64,
++ 0, /* quantifier_offset */
++ offsetof(Sr__OperDataTimeoutReq, request_id),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__oper_data_timeout_req__field_indices_by_name[] = {
++ 0, /* field[0] = request_id */
++};
++static const ProtobufCIntRange sr__oper_data_timeout_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__oper_data_timeout_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.OperDataTimeoutReq",
++ "OperDataTimeoutReq",
++ "Sr__OperDataTimeoutReq",
++ "sr",
++ sizeof(Sr__OperDataTimeoutReq),
++ 1,
++ sr__oper_data_timeout_req__field_descriptors,
++ sr__oper_data_timeout_req__field_indices_by_name,
++ 1, sr__oper_data_timeout_req__number_ranges,
++ (ProtobufCMessageInit) sr__oper_data_timeout_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__internal_state_data_req__field_descriptors[2] =
++{
++ {
++ "request_id",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT64,
++ 0, /* quantifier_offset */
++ offsetof(Sr__InternalStateDataReq, request_id),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "xpath",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__InternalStateDataReq, xpath),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__internal_state_data_req__field_indices_by_name[] = {
++ 0, /* field[0] = request_id */
++ 1, /* field[1] = xpath */
++};
++static const ProtobufCIntRange sr__internal_state_data_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 2 }
++};
++const ProtobufCMessageDescriptor sr__internal_state_data_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.InternalStateDataReq",
++ "InternalStateDataReq",
++ "Sr__InternalStateDataReq",
++ "sr",
++ sizeof(Sr__InternalStateDataReq),
++ 2,
++ sr__internal_state_data_req__field_descriptors,
++ sr__internal_state_data_req__field_indices_by_name,
++ 1, sr__internal_state_data_req__number_ranges,
++ (ProtobufCMessageInit) sr__internal_state_data_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__notif_store_cleanup_req__field_descriptors NULL
++#define sr__notif_store_cleanup_req__field_indices_by_name NULL
++#define sr__notif_store_cleanup_req__number_ranges NULL
++const ProtobufCMessageDescriptor sr__notif_store_cleanup_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.NotifStoreCleanupReq",
++ "NotifStoreCleanupReq",
++ "Sr__NotifStoreCleanupReq",
++ "sr",
++ sizeof(Sr__NotifStoreCleanupReq),
++ 0,
++ sr__notif_store_cleanup_req__field_descriptors,
++ sr__notif_store_cleanup_req__field_indices_by_name,
++ 0, sr__notif_store_cleanup_req__number_ranges,
++ (ProtobufCMessageInit) sr__notif_store_cleanup_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__delayed_msg_req__field_descriptors[1] =
++{
++ {
++ "message",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__DelayedMsgReq, message),
++ &sr__msg__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__delayed_msg_req__field_indices_by_name[] = {
++ 0, /* field[0] = message */
++};
++static const ProtobufCIntRange sr__delayed_msg_req__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
++const ProtobufCMessageDescriptor sr__delayed_msg_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.DelayedMsgReq",
++ "DelayedMsgReq",
++ "Sr__DelayedMsgReq",
++ "sr",
++ sizeof(Sr__DelayedMsgReq),
++ 1,
++ sr__delayed_msg_req__field_descriptors,
++ sr__delayed_msg_req__field_indices_by_name,
++ 1, sr__delayed_msg_req__number_ranges,
++ (ProtobufCMessageInit) sr__delayed_msg_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++#define sr__nacm_reload_req__field_descriptors NULL
++#define sr__nacm_reload_req__field_indices_by_name NULL
++#define sr__nacm_reload_req__number_ranges NULL
++const ProtobufCMessageDescriptor sr__nacm_reload_req__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.NacmReloadReq",
++ "NacmReloadReq",
++ "Sr__NacmReloadReq",
++ "sr",
++ sizeof(Sr__NacmReloadReq),
++ 0,
++ sr__nacm_reload_req__field_descriptors,
++ sr__nacm_reload_req__field_indices_by_name,
++ 0, sr__nacm_reload_req__number_ranges,
++ (ProtobufCMessageInit) sr__nacm_reload_req__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__request__field_descriptors[37] =
++{
++ {
++ "_id",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT64,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, _id),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "operation",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_ENUM,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, operation),
++ &sr__operation__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "session_start_req",
++ 10,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, session_start_req),
++ &sr__session_start_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "session_stop_req",
++ 11,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, session_stop_req),
++ &sr__session_stop_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "session_refresh_req",
++ 12,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, session_refresh_req),
++ &sr__session_refresh_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "session_check_req",
++ 13,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, session_check_req),
++ &sr__session_check_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "session_switch_ds_req",
++ 14,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, session_switch_ds_req),
++ &sr__session_switch_ds_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "session_set_opts_req",
++ 15,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, session_set_opts_req),
++ &sr__session_set_opts_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "version_verify_req",
++ 16,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, version_verify_req),
++ &sr__version_verify_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "list_schemas_req",
++ 20,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, list_schemas_req),
++ &sr__list_schemas_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "get_schema_req",
++ 21,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, get_schema_req),
++ &sr__get_schema_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "module_install_req",
++ 22,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, module_install_req),
++ &sr__module_install_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "feature_enable_req",
++ 23,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, feature_enable_req),
++ &sr__feature_enable_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "get_item_req",
++ 30,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, get_item_req),
++ &sr__get_item_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "get_items_req",
++ 31,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, get_items_req),
++ &sr__get_items_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "get_subtree_req",
++ 32,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, get_subtree_req),
++ &sr__get_subtree_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "get_subtrees_req",
++ 33,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, get_subtrees_req),
++ &sr__get_subtrees_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "get_subtree_chunk_req",
++ 34,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, get_subtree_chunk_req),
++ &sr__get_subtree_chunk_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "set_item_req",
++ 40,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, set_item_req),
++ &sr__set_item_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "delete_item_req",
++ 41,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, delete_item_req),
++ &sr__delete_item_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "move_item_req",
++ 42,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, move_item_req),
++ &sr__move_item_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "set_item_str_req",
++ 43,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, set_item_str_req),
++ &sr__set_item_str_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "validate_req",
++ 50,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, validate_req),
++ &sr__validate_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "commit_req",
++ 51,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, commit_req),
++ &sr__commit_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "discard_changes_req",
++ 52,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, discard_changes_req),
++ &sr__discard_changes_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "copy_config_req",
++ 53,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, copy_config_req),
++ &sr__copy_config_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "lock_req",
++ 60,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, lock_req),
++ &sr__lock_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "unlock_req",
++ 61,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, unlock_req),
++ &sr__unlock_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "subscribe_req",
++ 70,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, subscribe_req),
++ &sr__subscribe_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "unsubscribe_req",
++ 71,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, unsubscribe_req),
++ &sr__unsubscribe_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "check_enabled_running_req",
++ 72,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, check_enabled_running_req),
++ &sr__check_enabled_running_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "get_changes_req",
++ 73,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, get_changes_req),
++ &sr__get_changes_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "data_provide_req",
++ 80,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, data_provide_req),
++ &sr__data_provide_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "check_exec_perm_req",
++ 81,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, check_exec_perm_req),
++ &sr__check_exec_perm_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "rpc_req",
++ 82,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, rpc_req),
++ &sr__rpcreq__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "event_notif_req",
++ 83,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, event_notif_req),
++ &sr__event_notif_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "event_notif_replay_req",
++ 84,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Request, event_notif_replay_req),
++ &sr__event_notif_replay_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__request__field_indices_by_name[] = {
++ 0, /* field[0] = _id */
++ 30, /* field[30] = check_enabled_running_req */
++ 33, /* field[33] = check_exec_perm_req */
++ 23, /* field[23] = commit_req */
++ 25, /* field[25] = copy_config_req */
++ 32, /* field[32] = data_provide_req */
++ 19, /* field[19] = delete_item_req */
++ 24, /* field[24] = discard_changes_req */
++ 36, /* field[36] = event_notif_replay_req */
++ 35, /* field[35] = event_notif_req */
++ 12, /* field[12] = feature_enable_req */
++ 31, /* field[31] = get_changes_req */
++ 13, /* field[13] = get_item_req */
++ 14, /* field[14] = get_items_req */
++ 10, /* field[10] = get_schema_req */
++ 17, /* field[17] = get_subtree_chunk_req */
++ 15, /* field[15] = get_subtree_req */
++ 16, /* field[16] = get_subtrees_req */
++ 9, /* field[9] = list_schemas_req */
++ 26, /* field[26] = lock_req */
++ 11, /* field[11] = module_install_req */
++ 20, /* field[20] = move_item_req */
++ 1, /* field[1] = operation */
++ 34, /* field[34] = rpc_req */
++ 5, /* field[5] = session_check_req */
++ 4, /* field[4] = session_refresh_req */
++ 7, /* field[7] = session_set_opts_req */
++ 2, /* field[2] = session_start_req */
++ 3, /* field[3] = session_stop_req */
++ 6, /* field[6] = session_switch_ds_req */
++ 18, /* field[18] = set_item_req */
++ 21, /* field[21] = set_item_str_req */
++ 28, /* field[28] = subscribe_req */
++ 27, /* field[27] = unlock_req */
++ 29, /* field[29] = unsubscribe_req */
++ 22, /* field[22] = validate_req */
++ 8, /* field[8] = version_verify_req */
++};
++static const ProtobufCIntRange sr__request__number_ranges[9 + 1] =
++{
++ { 1, 0 },
++ { 10, 2 },
++ { 20, 9 },
++ { 30, 13 },
++ { 40, 18 },
++ { 50, 22 },
++ { 60, 26 },
++ { 70, 28 },
++ { 80, 32 },
++ { 0, 37 }
++};
++const ProtobufCMessageDescriptor sr__request__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.Request",
++ "Request",
++ "Sr__Request",
++ "sr",
++ sizeof(Sr__Request),
++ 37,
++ sr__request__field_descriptors,
++ sr__request__field_indices_by_name,
++ 9, sr__request__number_ranges,
++ (ProtobufCMessageInit) sr__request__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__response__field_descriptors[38] =
++{
++ {
++ "operation",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_ENUM,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, operation),
++ &sr__operation__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "result",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, result),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "error",
++ 3,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, error),
++ &sr__error__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "session_start_resp",
++ 10,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, session_start_resp),
++ &sr__session_start_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "session_stop_resp",
++ 11,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, session_stop_resp),
++ &sr__session_stop_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "session_refresh_resp",
++ 12,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, session_refresh_resp),
++ &sr__session_refresh_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "session_check_resp",
++ 13,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, session_check_resp),
++ &sr__session_check_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "session_switch_ds_resp",
++ 14,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, session_switch_ds_resp),
++ &sr__session_switch_ds_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "session_set_opts_resp",
++ 15,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, session_set_opts_resp),
++ &sr__session_set_opts_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "version_verify_resp",
++ 16,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, version_verify_resp),
++ &sr__version_verify_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "list_schemas_resp",
++ 20,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, list_schemas_resp),
++ &sr__list_schemas_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "get_schema_resp",
++ 21,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, get_schema_resp),
++ &sr__get_schema_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "module_install_resp",
++ 22,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, module_install_resp),
++ &sr__module_install_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "feature_enable_resp",
++ 23,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, feature_enable_resp),
++ &sr__feature_enable_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "get_item_resp",
++ 30,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, get_item_resp),
++ &sr__get_item_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "get_items_resp",
++ 31,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, get_items_resp),
++ &sr__get_items_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "get_subtree_resp",
++ 32,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, get_subtree_resp),
++ &sr__get_subtree_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "get_subtrees_resp",
++ 33,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, get_subtrees_resp),
++ &sr__get_subtrees_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "get_subtree_chunk_resp",
++ 34,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, get_subtree_chunk_resp),
++ &sr__get_subtree_chunk_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "set_item_resp",
++ 40,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, set_item_resp),
++ &sr__set_item_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "delete_item_resp",
++ 41,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, delete_item_resp),
++ &sr__delete_item_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "move_item_resp",
++ 42,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, move_item_resp),
++ &sr__move_item_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "set_item_str_resp",
++ 43,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, set_item_str_resp),
++ &sr__set_item_str_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "validate_resp",
++ 50,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, validate_resp),
++ &sr__validate_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "commit_resp",
++ 51,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, commit_resp),
++ &sr__commit_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "discard_changes_resp",
++ 52,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, discard_changes_resp),
++ &sr__discard_changes_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "copy_config_resp",
++ 53,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, copy_config_resp),
++ &sr__copy_config_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "lock_resp",
++ 60,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, lock_resp),
++ &sr__lock_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "unlock_resp",
++ 61,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, unlock_resp),
++ &sr__unlock_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "subscribe_resp",
++ 70,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, subscribe_resp),
++ &sr__subscribe_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "unsubscribe_resp",
++ 71,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, unsubscribe_resp),
++ &sr__unsubscribe_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "check_enabled_running_resp",
++ 72,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, check_enabled_running_resp),
++ &sr__check_enabled_running_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "get_changes_resp",
++ 73,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, get_changes_resp),
++ &sr__get_changes_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "data_provide_resp",
++ 80,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, data_provide_resp),
++ &sr__data_provide_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "check_exec_perm_resp",
++ 81,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, check_exec_perm_resp),
++ &sr__check_exec_perm_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "rpc_resp",
++ 82,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, rpc_resp),
++ &sr__rpcresp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "event_notif_resp",
++ 83,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, event_notif_resp),
++ &sr__event_notif_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "event_notif_replay_resp",
++ 84,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Response, event_notif_replay_resp),
++ &sr__event_notif_replay_resp__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__response__field_indices_by_name[] = {
++ 31, /* field[31] = check_enabled_running_resp */
++ 34, /* field[34] = check_exec_perm_resp */
++ 24, /* field[24] = commit_resp */
++ 26, /* field[26] = copy_config_resp */
++ 33, /* field[33] = data_provide_resp */
++ 20, /* field[20] = delete_item_resp */
++ 25, /* field[25] = discard_changes_resp */
++ 2, /* field[2] = error */
++ 37, /* field[37] = event_notif_replay_resp */
++ 36, /* field[36] = event_notif_resp */
++ 13, /* field[13] = feature_enable_resp */
++ 32, /* field[32] = get_changes_resp */
++ 14, /* field[14] = get_item_resp */
++ 15, /* field[15] = get_items_resp */
++ 11, /* field[11] = get_schema_resp */
++ 18, /* field[18] = get_subtree_chunk_resp */
++ 16, /* field[16] = get_subtree_resp */
++ 17, /* field[17] = get_subtrees_resp */
++ 10, /* field[10] = list_schemas_resp */
++ 27, /* field[27] = lock_resp */
++ 12, /* field[12] = module_install_resp */
++ 21, /* field[21] = move_item_resp */
++ 0, /* field[0] = operation */
++ 1, /* field[1] = result */
++ 35, /* field[35] = rpc_resp */
++ 6, /* field[6] = session_check_resp */
++ 5, /* field[5] = session_refresh_resp */
++ 8, /* field[8] = session_set_opts_resp */
++ 3, /* field[3] = session_start_resp */
++ 4, /* field[4] = session_stop_resp */
++ 7, /* field[7] = session_switch_ds_resp */
++ 19, /* field[19] = set_item_resp */
++ 22, /* field[22] = set_item_str_resp */
++ 29, /* field[29] = subscribe_resp */
++ 28, /* field[28] = unlock_resp */
++ 30, /* field[30] = unsubscribe_resp */
++ 23, /* field[23] = validate_resp */
++ 9, /* field[9] = version_verify_resp */
++};
++static const ProtobufCIntRange sr__response__number_ranges[9 + 1] =
++{
++ { 1, 0 },
++ { 10, 3 },
++ { 20, 10 },
++ { 30, 14 },
++ { 40, 19 },
++ { 50, 23 },
++ { 60, 27 },
++ { 70, 29 },
++ { 80, 33 },
++ { 0, 38 }
++};
++const ProtobufCMessageDescriptor sr__response__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.Response",
++ "Response",
++ "Sr__Response",
++ "sr",
++ sizeof(Sr__Response),
++ 38,
++ sr__response__field_descriptors,
++ sr__response__field_indices_by_name,
++ 9, sr__response__number_ranges,
++ (ProtobufCMessageInit) sr__response__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__notification__field_descriptors[10] =
++{
++ {
++ "type",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_ENUM,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Notification, type),
++ &sr__subscription_type__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "destination_address",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Notification, destination_address),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "source_address",
++ 3,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_STRING,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Notification, source_address),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "source_pid",
++ 4,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Notification, source_pid),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "subscription_id",
++ 5,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Notification, subscription_id),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "commit_id",
++ 6,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_UINT32,
++ offsetof(Sr__Notification, has_commit_id),
++ offsetof(Sr__Notification, commit_id),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "module_install_notif",
++ 10,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Notification, module_install_notif),
++ &sr__module_install_notification__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "feature_enable_notif",
++ 11,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Notification, feature_enable_notif),
++ &sr__feature_enable_notification__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "module_change_notif",
++ 12,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Notification, module_change_notif),
++ &sr__module_change_notification__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "subtree_change_notif",
++ 13,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Notification, subtree_change_notif),
++ &sr__subtree_change_notification__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__notification__field_indices_by_name[] = {
++ 5, /* field[5] = commit_id */
++ 1, /* field[1] = destination_address */
++ 7, /* field[7] = feature_enable_notif */
++ 8, /* field[8] = module_change_notif */
++ 6, /* field[6] = module_install_notif */
++ 2, /* field[2] = source_address */
++ 3, /* field[3] = source_pid */
++ 4, /* field[4] = subscription_id */
++ 9, /* field[9] = subtree_change_notif */
++ 0, /* field[0] = type */
++};
++static const ProtobufCIntRange sr__notification__number_ranges[2 + 1] =
++{
++ { 1, 0 },
++ { 10, 6 },
++ { 0, 10 }
++};
++const ProtobufCMessageDescriptor sr__notification__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.Notification",
++ "Notification",
++ "Sr__Notification",
++ "sr",
++ sizeof(Sr__Notification),
++ 10,
++ sr__notification__field_descriptors,
++ sr__notification__field_indices_by_name,
++ 2, sr__notification__number_ranges,
++ (ProtobufCMessageInit) sr__notification__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__notification_ack__field_descriptors[4] =
++{
++ {
++ "notif",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__NotificationAck, notif),
++ &sr__notification__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "result",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__NotificationAck, result),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "error",
++ 3,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__NotificationAck, error),
++ &sr__error__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "do_not_send_abort",
++ 4,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_BOOL,
++ 0, /* quantifier_offset */
++ offsetof(Sr__NotificationAck, do_not_send_abort),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__notification_ack__field_indices_by_name[] = {
++ 3, /* field[3] = do_not_send_abort */
++ 2, /* field[2] = error */
++ 0, /* field[0] = notif */
++ 1, /* field[1] = result */
++};
++static const ProtobufCIntRange sr__notification_ack__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 4 }
++};
++const ProtobufCMessageDescriptor sr__notification_ack__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.NotificationAck",
++ "NotificationAck",
++ "Sr__NotificationAck",
++ "sr",
++ sizeof(Sr__NotificationAck),
++ 4,
++ sr__notification_ack__field_descriptors,
++ sr__notification_ack__field_indices_by_name,
++ 1, sr__notification_ack__number_ranges,
++ (ProtobufCMessageInit) sr__notification_ack__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCFieldDescriptor sr__internal_request__field_descriptors[9] =
++{
++ {
++ "operation",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_ENUM,
++ 0, /* quantifier_offset */
++ offsetof(Sr__InternalRequest, operation),
++ &sr__operation__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "postpone_timeout",
++ 2,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_UINT32,
++ offsetof(Sr__InternalRequest, has_postpone_timeout),
++ offsetof(Sr__InternalRequest, postpone_timeout),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "unsubscribe_dst_req",
++ 10,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__InternalRequest, unsubscribe_dst_req),
++ &sr__unsubscribe_destination_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "commit_timeout_req",
++ 11,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__InternalRequest, commit_timeout_req),
++ &sr__commit_timeout_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "oper_data_timeout_req",
++ 12,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__InternalRequest, oper_data_timeout_req),
++ &sr__oper_data_timeout_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "internal_state_data_req",
++ 13,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__InternalRequest, internal_state_data_req),
++ &sr__internal_state_data_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "notif_store_cleanup_req",
++ 14,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__InternalRequest, notif_store_cleanup_req),
++ &sr__notif_store_cleanup_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "delayed_msg_req",
++ 15,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__InternalRequest, delayed_msg_req),
++ &sr__delayed_msg_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "nacm_reload_req",
++ 16,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__InternalRequest, nacm_reload_req),
++ &sr__nacm_reload_req__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__internal_request__field_indices_by_name[] = {
++ 3, /* field[3] = commit_timeout_req */
++ 7, /* field[7] = delayed_msg_req */
++ 5, /* field[5] = internal_state_data_req */
++ 8, /* field[8] = nacm_reload_req */
++ 6, /* field[6] = notif_store_cleanup_req */
++ 4, /* field[4] = oper_data_timeout_req */
++ 0, /* field[0] = operation */
++ 1, /* field[1] = postpone_timeout */
++ 2, /* field[2] = unsubscribe_dst_req */
++};
++static const ProtobufCIntRange sr__internal_request__number_ranges[2 + 1] =
++{
++ { 1, 0 },
++ { 10, 2 },
++ { 0, 9 }
++};
++const ProtobufCMessageDescriptor sr__internal_request__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.InternalRequest",
++ "InternalRequest",
++ "Sr__InternalRequest",
++ "sr",
++ sizeof(Sr__InternalRequest),
++ 9,
++ sr__internal_request__field_descriptors,
++ sr__internal_request__field_indices_by_name,
++ 2, sr__internal_request__number_ranges,
++ (ProtobufCMessageInit) sr__internal_request__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCEnumValue sr__msg__msg_type__enum_values_by_number[5] =
++{
++ { "REQUEST", "SR__MSG__MSG_TYPE__REQUEST", 1 },
++ { "RESPONSE", "SR__MSG__MSG_TYPE__RESPONSE", 2 },
++ { "NOTIFICATION", "SR__MSG__MSG_TYPE__NOTIFICATION", 3 },
++ { "NOTIFICATION_ACK", "SR__MSG__MSG_TYPE__NOTIFICATION_ACK", 4 },
++ { "INTERNAL_REQUEST", "SR__MSG__MSG_TYPE__INTERNAL_REQUEST", 5 },
++};
++static const ProtobufCIntRange sr__msg__msg_type__value_ranges[] = {
++{1, 0},{0, 5}
++};
++static const ProtobufCEnumValueIndex sr__msg__msg_type__enum_values_by_name[5] =
++{
++ { "INTERNAL_REQUEST", 4 },
++ { "NOTIFICATION", 2 },
++ { "NOTIFICATION_ACK", 3 },
++ { "REQUEST", 0 },
++ { "RESPONSE", 1 },
++};
++const ProtobufCEnumDescriptor sr__msg__msg_type__descriptor =
++{
++ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
++ "sr.Msg.MsgType",
++ "MsgType",
++ "Sr__Msg__MsgType",
++ "sr",
++ 5,
++ sr__msg__msg_type__enum_values_by_number,
++ 5,
++ sr__msg__msg_type__enum_values_by_name,
++ 1,
++ sr__msg__msg_type__value_ranges,
++ NULL,NULL,NULL,NULL /* reserved[1234] */
++};
++static const ProtobufCFieldDescriptor sr__msg__field_descriptors[8] =
++{
++ {
++ "type",
++ 1,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_ENUM,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Msg, type),
++ &sr__msg__msg_type__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "session_id",
++ 2,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT32,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Msg, session_id),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "request",
++ 3,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Msg, request),
++ &sr__request__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "response",
++ 4,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Msg, response),
++ &sr__response__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "notification",
++ 5,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Msg, notification),
++ &sr__notification__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "notification_ack",
++ 6,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Msg, notification_ack),
++ &sr__notification_ack__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "internal_request",
++ 7,
++ PROTOBUF_C_LABEL_OPTIONAL,
++ PROTOBUF_C_TYPE_MESSAGE,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Msg, internal_request),
++ &sr__internal_request__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++ {
++ "_sysrepo_mem_ctx",
++ 20,
++ PROTOBUF_C_LABEL_REQUIRED,
++ PROTOBUF_C_TYPE_UINT64,
++ 0, /* quantifier_offset */
++ offsetof(Sr__Msg, _sysrepo_mem_ctx),
++ NULL,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__msg__field_indices_by_name[] = {
++ 7, /* field[7] = _sysrepo_mem_ctx */
++ 6, /* field[6] = internal_request */
++ 4, /* field[4] = notification */
++ 5, /* field[5] = notification_ack */
++ 2, /* field[2] = request */
++ 3, /* field[3] = response */
++ 1, /* field[1] = session_id */
++ 0, /* field[0] = type */
++};
++static const ProtobufCIntRange sr__msg__number_ranges[2 + 1] =
++{
++ { 1, 0 },
++ { 20, 7 },
++ { 0, 8 }
++};
++const ProtobufCMessageDescriptor sr__msg__descriptor =
++{
++ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
++ "sr.Msg",
++ "Msg",
++ "Sr__Msg",
++ "sr",
++ sizeof(Sr__Msg),
++ 8,
++ sr__msg__field_descriptors,
++ sr__msg__field_indices_by_name,
++ 2, sr__msg__number_ranges,
++ (ProtobufCMessageInit) sr__msg__init,
++ NULL,NULL,NULL /* reserved[123] */
++};
++static const ProtobufCEnumValue sr__api_variant__enum_values_by_number[2] =
++{
++ { "VALUES", "SR__API_VARIANT__VALUES", 1 },
++ { "TREES", "SR__API_VARIANT__TREES", 2 },
++};
++static const ProtobufCIntRange sr__api_variant__value_ranges[] = {
++{1, 0},{0, 2}
++};
++static const ProtobufCEnumValueIndex sr__api_variant__enum_values_by_name[2] =
++{
++ { "TREES", 1 },
++ { "VALUES", 0 },
++};
++const ProtobufCEnumDescriptor sr__api_variant__descriptor =
++{
++ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
++ "sr.ApiVariant",
++ "ApiVariant",
++ "Sr__ApiVariant",
++ "sr",
++ 2,
++ sr__api_variant__enum_values_by_number,
++ 2,
++ sr__api_variant__enum_values_by_name,
++ 1,
++ sr__api_variant__value_ranges,
++ NULL,NULL,NULL,NULL /* reserved[1234] */
++};
++static const ProtobufCEnumValue sr__data_store__enum_values_by_number[3] =
++{
++ { "STARTUP", "SR__DATA_STORE__STARTUP", 1 },
++ { "RUNNING", "SR__DATA_STORE__RUNNING", 2 },
++ { "CANDIDATE", "SR__DATA_STORE__CANDIDATE", 3 },
++};
++static const ProtobufCIntRange sr__data_store__value_ranges[] = {
++{1, 0},{0, 3}
++};
++static const ProtobufCEnumValueIndex sr__data_store__enum_values_by_name[3] =
++{
++ { "CANDIDATE", 2 },
++ { "RUNNING", 1 },
++ { "STARTUP", 0 },
++};
++const ProtobufCEnumDescriptor sr__data_store__descriptor =
++{
++ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
++ "sr.DataStore",
++ "DataStore",
++ "Sr__DataStore",
++ "sr",
++ 3,
++ sr__data_store__enum_values_by_number,
++ 3,
++ sr__data_store__enum_values_by_name,
++ 1,
++ sr__data_store__value_ranges,
++ NULL,NULL,NULL,NULL /* reserved[1234] */
++};
++static const ProtobufCEnumValue sr__session_flags__enum_values_by_number[4] =
++{
++ { "SESS_DEFAULT", "SR__SESSION_FLAGS__SESS_DEFAULT", 0 },
++ { "SESS_CONFIG_ONLY", "SR__SESSION_FLAGS__SESS_CONFIG_ONLY", 1 },
++ { "SESS_ENABLE_NACM", "SR__SESSION_FLAGS__SESS_ENABLE_NACM", 2 },
++ { "SESS_NOTIFICATION", "SR__SESSION_FLAGS__SESS_NOTIFICATION", 1024 },
++};
++static const ProtobufCIntRange sr__session_flags__value_ranges[] = {
++{0, 0},{1024, 3},{0, 4}
++};
++static const ProtobufCEnumValueIndex sr__session_flags__enum_values_by_name[4] =
++{
++ { "SESS_CONFIG_ONLY", 1 },
++ { "SESS_DEFAULT", 0 },
++ { "SESS_ENABLE_NACM", 2 },
++ { "SESS_NOTIFICATION", 3 },
++};
++const ProtobufCEnumDescriptor sr__session_flags__descriptor =
++{
++ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
++ "sr.SessionFlags",
++ "SessionFlags",
++ "Sr__SessionFlags",
++ "sr",
++ 4,
++ sr__session_flags__enum_values_by_number,
++ 4,
++ sr__session_flags__enum_values_by_name,
++ 2,
++ sr__session_flags__value_ranges,
++ NULL,NULL,NULL,NULL /* reserved[1234] */
++};
++static const ProtobufCEnumValue sr__edit_flags__enum_values_by_number[3] =
++{
++ { "EDIT_DEFAULT", "SR__EDIT_FLAGS__EDIT_DEFAULT", 0 },
++ { "EDIT_NON_RECURSIVE", "SR__EDIT_FLAGS__EDIT_NON_RECURSIVE", 1 },
++ { "EDIT_STRICT", "SR__EDIT_FLAGS__EDIT_STRICT", 2 },
++};
++static const ProtobufCIntRange sr__edit_flags__value_ranges[] = {
++{0, 0},{0, 3}
++};
++static const ProtobufCEnumValueIndex sr__edit_flags__enum_values_by_name[3] =
++{
++ { "EDIT_DEFAULT", 0 },
++ { "EDIT_NON_RECURSIVE", 1 },
++ { "EDIT_STRICT", 2 },
++};
++const ProtobufCEnumDescriptor sr__edit_flags__descriptor =
++{
++ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
++ "sr.EditFlags",
++ "EditFlags",
++ "Sr__EditFlags",
++ "sr",
++ 3,
++ sr__edit_flags__enum_values_by_number,
++ 3,
++ sr__edit_flags__enum_values_by_name,
++ 1,
++ sr__edit_flags__value_ranges,
++ NULL,NULL,NULL,NULL /* reserved[1234] */
++};
++static const ProtobufCEnumValue sr__subscription_type__enum_values_by_number[10] =
++{
++ { "MODULE_INSTALL_SUBS", "SR__SUBSCRIPTION_TYPE__MODULE_INSTALL_SUBS", 1 },
++ { "FEATURE_ENABLE_SUBS", "SR__SUBSCRIPTION_TYPE__FEATURE_ENABLE_SUBS", 2 },
++ { "MODULE_CHANGE_SUBS", "SR__SUBSCRIPTION_TYPE__MODULE_CHANGE_SUBS", 10 },
++ { "SUBTREE_CHANGE_SUBS", "SR__SUBSCRIPTION_TYPE__SUBTREE_CHANGE_SUBS", 11 },
++ { "DP_GET_ITEMS_SUBS", "SR__SUBSCRIPTION_TYPE__DP_GET_ITEMS_SUBS", 20 },
++ { "RPC_SUBS", "SR__SUBSCRIPTION_TYPE__RPC_SUBS", 30 },
++ { "ACTION_SUBS", "SR__SUBSCRIPTION_TYPE__ACTION_SUBS", 31 },
++ { "EVENT_NOTIF_SUBS", "SR__SUBSCRIPTION_TYPE__EVENT_NOTIF_SUBS", 40 },
++ { "HELLO_SUBS", "SR__SUBSCRIPTION_TYPE__HELLO_SUBS", 50 },
++ { "COMMIT_END_SUBS", "SR__SUBSCRIPTION_TYPE__COMMIT_END_SUBS", 51 },
++};
++static const ProtobufCIntRange sr__subscription_type__value_ranges[] = {
++{1, 0},{10, 2},{20, 4},{30, 5},{40, 7},{50, 8},{0, 10}
++};
++static const ProtobufCEnumValueIndex sr__subscription_type__enum_values_by_name[10] =
++{
++ { "ACTION_SUBS", 6 },
++ { "COMMIT_END_SUBS", 9 },
++ { "DP_GET_ITEMS_SUBS", 4 },
++ { "EVENT_NOTIF_SUBS", 7 },
++ { "FEATURE_ENABLE_SUBS", 1 },
++ { "HELLO_SUBS", 8 },
++ { "MODULE_CHANGE_SUBS", 2 },
++ { "MODULE_INSTALL_SUBS", 0 },
++ { "RPC_SUBS", 5 },
++ { "SUBTREE_CHANGE_SUBS", 3 },
++};
++const ProtobufCEnumDescriptor sr__subscription_type__descriptor =
++{
++ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
++ "sr.SubscriptionType",
++ "SubscriptionType",
++ "Sr__SubscriptionType",
++ "sr",
++ 10,
++ sr__subscription_type__enum_values_by_number,
++ 10,
++ sr__subscription_type__enum_values_by_name,
++ 6,
++ sr__subscription_type__value_ranges,
++ NULL,NULL,NULL,NULL /* reserved[1234] */
++};
++static const ProtobufCEnumValue sr__notification_event__enum_values_by_number[4] =
++{
++ { "VERIFY_EV", "SR__NOTIFICATION_EVENT__VERIFY_EV", 1 },
++ { "APPLY_EV", "SR__NOTIFICATION_EVENT__APPLY_EV", 2 },
++ { "ABORT_EV", "SR__NOTIFICATION_EVENT__ABORT_EV", 3 },
++ { "ENABLED_EV", "SR__NOTIFICATION_EVENT__ENABLED_EV", 4 },
++};
++static const ProtobufCIntRange sr__notification_event__value_ranges[] = {
++{1, 0},{0, 4}
++};
++static const ProtobufCEnumValueIndex sr__notification_event__enum_values_by_name[4] =
++{
++ { "ABORT_EV", 2 },
++ { "APPLY_EV", 1 },
++ { "ENABLED_EV", 3 },
++ { "VERIFY_EV", 0 },
++};
++const ProtobufCEnumDescriptor sr__notification_event__descriptor =
++{
++ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
++ "sr.NotificationEvent",
++ "NotificationEvent",
++ "Sr__NotificationEvent",
++ "sr",
++ 4,
++ sr__notification_event__enum_values_by_number,
++ 4,
++ sr__notification_event__enum_values_by_name,
++ 1,
++ sr__notification_event__value_ranges,
++ NULL,NULL,NULL,NULL /* reserved[1234] */
++};
++static const ProtobufCEnumValue sr__module_state__enum_values_by_number[3] =
++{
++ { "UNINSTALLED", "SR__MODULE_STATE__UNINSTALLED", 1 },
++ { "IMPORTED", "SR__MODULE_STATE__IMPORTED", 2 },
++ { "IMPLEMENTED", "SR__MODULE_STATE__IMPLEMENTED", 3 },
++};
++static const ProtobufCIntRange sr__module_state__value_ranges[] = {
++{1, 0},{0, 3}
++};
++static const ProtobufCEnumValueIndex sr__module_state__enum_values_by_name[3] =
++{
++ { "IMPLEMENTED", 2 },
++ { "IMPORTED", 1 },
++ { "UNINSTALLED", 0 },
++};
++const ProtobufCEnumDescriptor sr__module_state__descriptor =
++{
++ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
++ "sr.ModuleState",
++ "ModuleState",
++ "Sr__ModuleState",
++ "sr",
++ 3,
++ sr__module_state__enum_values_by_number,
++ 3,
++ sr__module_state__enum_values_by_name,
++ 1,
++ sr__module_state__value_ranges,
++ NULL,NULL,NULL,NULL /* reserved[1234] */
++};
++static const ProtobufCEnumValue sr__change_operation__enum_values_by_number[4] =
++{
++ { "CREATED", "SR__CHANGE_OPERATION__CREATED", 1 },
++ { "MODIFIED", "SR__CHANGE_OPERATION__MODIFIED", 2 },
++ { "DELETED", "SR__CHANGE_OPERATION__DELETED", 3 },
++ { "MOVED", "SR__CHANGE_OPERATION__MOVED", 4 },
++};
++static const ProtobufCIntRange sr__change_operation__value_ranges[] = {
++{1, 0},{0, 4}
++};
++static const ProtobufCEnumValueIndex sr__change_operation__enum_values_by_name[4] =
++{
++ { "CREATED", 0 },
++ { "DELETED", 2 },
++ { "MODIFIED", 1 },
++ { "MOVED", 3 },
++};
++const ProtobufCEnumDescriptor sr__change_operation__descriptor =
++{
++ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
++ "sr.ChangeOperation",
++ "ChangeOperation",
++ "Sr__ChangeOperation",
++ "sr",
++ 4,
++ sr__change_operation__enum_values_by_number,
++ 4,
++ sr__change_operation__enum_values_by_name,
++ 1,
++ sr__change_operation__value_ranges,
++ NULL,NULL,NULL,NULL /* reserved[1234] */
++};
++static const ProtobufCEnumValue sr__operation__enum_values_by_number[43] =
++{
++ { "SESSION_START", "SR__OPERATION__SESSION_START", 10 },
++ { "SESSION_STOP", "SR__OPERATION__SESSION_STOP", 11 },
++ { "SESSION_REFRESH", "SR__OPERATION__SESSION_REFRESH", 12 },
++ { "SESSION_CHECK", "SR__OPERATION__SESSION_CHECK", 13 },
++ { "SESSION_SWITCH_DS", "SR__OPERATION__SESSION_SWITCH_DS", 14 },
++ { "SESSION_SET_OPTS", "SR__OPERATION__SESSION_SET_OPTS", 15 },
++ { "VERSION_VERIFY", "SR__OPERATION__VERSION_VERIFY", 16 },
++ { "LIST_SCHEMAS", "SR__OPERATION__LIST_SCHEMAS", 20 },
++ { "GET_SCHEMA", "SR__OPERATION__GET_SCHEMA", 21 },
++ { "MODULE_INSTALL", "SR__OPERATION__MODULE_INSTALL", 22 },
++ { "FEATURE_ENABLE", "SR__OPERATION__FEATURE_ENABLE", 23 },
++ { "GET_ITEM", "SR__OPERATION__GET_ITEM", 30 },
++ { "GET_ITEMS", "SR__OPERATION__GET_ITEMS", 31 },
++ { "GET_SUBTREE", "SR__OPERATION__GET_SUBTREE", 32 },
++ { "GET_SUBTREES", "SR__OPERATION__GET_SUBTREES", 33 },
++ { "GET_SUBTREE_CHUNK", "SR__OPERATION__GET_SUBTREE_CHUNK", 34 },
++ { "SET_ITEM", "SR__OPERATION__SET_ITEM", 40 },
++ { "DELETE_ITEM", "SR__OPERATION__DELETE_ITEM", 41 },
++ { "MOVE_ITEM", "SR__OPERATION__MOVE_ITEM", 42 },
++ { "SET_ITEM_STR", "SR__OPERATION__SET_ITEM_STR", 43 },
++ { "VALIDATE", "SR__OPERATION__VALIDATE", 50 },
++ { "COMMIT", "SR__OPERATION__COMMIT", 51 },
++ { "DISCARD_CHANGES", "SR__OPERATION__DISCARD_CHANGES", 52 },
++ { "COPY_CONFIG", "SR__OPERATION__COPY_CONFIG", 53 },
++ { "LOCK", "SR__OPERATION__LOCK", 60 },
++ { "UNLOCK", "SR__OPERATION__UNLOCK", 61 },
++ { "SUBSCRIBE", "SR__OPERATION__SUBSCRIBE", 70 },
++ { "UNSUBSCRIBE", "SR__OPERATION__UNSUBSCRIBE", 71 },
++ { "CHECK_ENABLED_RUNNING", "SR__OPERATION__CHECK_ENABLED_RUNNING", 72 },
++ { "GET_CHANGES", "SR__OPERATION__GET_CHANGES", 73 },
++ { "DATA_PROVIDE", "SR__OPERATION__DATA_PROVIDE", 80 },
++ { "CHECK_EXEC_PERMISSION", "SR__OPERATION__CHECK_EXEC_PERMISSION", 81 },
++ { "RPC", "SR__OPERATION__RPC", 82 },
++ { "ACTION", "SR__OPERATION__ACTION", 83 },
++ { "EVENT_NOTIF", "SR__OPERATION__EVENT_NOTIF", 84 },
++ { "EVENT_NOTIF_REPLAY", "SR__OPERATION__EVENT_NOTIF_REPLAY", 85 },
++ { "UNSUBSCRIBE_DESTINATION", "SR__OPERATION__UNSUBSCRIBE_DESTINATION", 101 },
++ { "COMMIT_TIMEOUT", "SR__OPERATION__COMMIT_TIMEOUT", 102 },
++ { "OPER_DATA_TIMEOUT", "SR__OPERATION__OPER_DATA_TIMEOUT", 103 },
++ { "INTERNAL_STATE_DATA", "SR__OPERATION__INTERNAL_STATE_DATA", 104 },
++ { "NOTIF_STORE_CLEANUP", "SR__OPERATION__NOTIF_STORE_CLEANUP", 105 },
++ { "DELAYED_MSG", "SR__OPERATION__DELAYED_MSG", 106 },
++ { "NACM_RELOAD", "SR__OPERATION__NACM_RELOAD", 107 },
++};
++static const ProtobufCIntRange sr__operation__value_ranges[] = {
++{10, 0},{20, 7},{30, 11},{40, 16},{50, 20},{60, 24},{70, 26},{80, 30},{101, 36},{0, 43}
++};
++static const ProtobufCEnumValueIndex sr__operation__enum_values_by_name[43] =
++{
++ { "ACTION", 33 },
++ { "CHECK_ENABLED_RUNNING", 28 },
++ { "CHECK_EXEC_PERMISSION", 31 },
++ { "COMMIT", 21 },
++ { "COMMIT_TIMEOUT", 37 },
++ { "COPY_CONFIG", 23 },
++ { "DATA_PROVIDE", 30 },
++ { "DELAYED_MSG", 41 },
++ { "DELETE_ITEM", 17 },
++ { "DISCARD_CHANGES", 22 },
++ { "EVENT_NOTIF", 34 },
++ { "EVENT_NOTIF_REPLAY", 35 },
++ { "FEATURE_ENABLE", 10 },
++ { "GET_CHANGES", 29 },
++ { "GET_ITEM", 11 },
++ { "GET_ITEMS", 12 },
++ { "GET_SCHEMA", 8 },
++ { "GET_SUBTREE", 13 },
++ { "GET_SUBTREES", 14 },
++ { "GET_SUBTREE_CHUNK", 15 },
++ { "INTERNAL_STATE_DATA", 39 },
++ { "LIST_SCHEMAS", 7 },
++ { "LOCK", 24 },
++ { "MODULE_INSTALL", 9 },
++ { "MOVE_ITEM", 18 },
++ { "NACM_RELOAD", 42 },
++ { "NOTIF_STORE_CLEANUP", 40 },
++ { "OPER_DATA_TIMEOUT", 38 },
++ { "RPC", 32 },
++ { "SESSION_CHECK", 3 },
++ { "SESSION_REFRESH", 2 },
++ { "SESSION_SET_OPTS", 5 },
++ { "SESSION_START", 0 },
++ { "SESSION_STOP", 1 },
++ { "SESSION_SWITCH_DS", 4 },
++ { "SET_ITEM", 16 },
++ { "SET_ITEM_STR", 19 },
++ { "SUBSCRIBE", 26 },
++ { "UNLOCK", 25 },
++ { "UNSUBSCRIBE", 27 },
++ { "UNSUBSCRIBE_DESTINATION", 36 },
++ { "VALIDATE", 20 },
++ { "VERSION_VERIFY", 6 },
++};
++const ProtobufCEnumDescriptor sr__operation__descriptor =
++{
++ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
++ "sr.Operation",
++ "Operation",
++ "Sr__Operation",
++ "sr",
++ 43,
++ sr__operation__enum_values_by_number,
++ 43,
++ sr__operation__enum_values_by_name,
++ 9,
++ sr__operation__value_ranges,
++ NULL,NULL,NULL,NULL /* reserved[1234] */
++};
+Index: sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf/src/common/sysrepo.pb-c.h
+===================================================================
+--- /dev/null
++++ sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf/src/common/sysrepo.pb-c.h
+@@ -0,0 +1,4236 @@
++/* Generated by the protocol buffer compiler. DO NOT EDIT! */
++/* Generated from: sysrepo.proto */
++
++#ifndef PROTOBUF_C_sysrepo_2eproto__INCLUDED
++#define PROTOBUF_C_sysrepo_2eproto__INCLUDED
++
++#include <protobuf-c/protobuf-c.h>
++
++PROTOBUF_C__BEGIN_DECLS
++
++#if PROTOBUF_C_VERSION_NUMBER < 1000000
++# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
++#elif 1001001 < PROTOBUF_C_MIN_COMPILER_VERSION
++# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
++#endif
++
++
++typedef struct _Sr__Value Sr__Value;
++typedef struct _Sr__Node Sr__Node;
++typedef struct _Sr__Error Sr__Error;
++typedef struct _Sr__SessionStartReq Sr__SessionStartReq;
++typedef struct _Sr__SessionStartResp Sr__SessionStartResp;
++typedef struct _Sr__SessionStopReq Sr__SessionStopReq;
++typedef struct _Sr__SessionStopResp Sr__SessionStopResp;
++typedef struct _Sr__SessionRefreshReq Sr__SessionRefreshReq;
++typedef struct _Sr__SessionRefreshResp Sr__SessionRefreshResp;
++typedef struct _Sr__SessionCheckReq Sr__SessionCheckReq;
++typedef struct _Sr__SessionCheckResp Sr__SessionCheckResp;
++typedef struct _Sr__SessionSwitchDsReq Sr__SessionSwitchDsReq;
++typedef struct _Sr__SessionSwitchDsResp Sr__SessionSwitchDsResp;
++typedef struct _Sr__SessionSetOptsReq Sr__SessionSetOptsReq;
++typedef struct _Sr__SessionSetOptsResp Sr__SessionSetOptsResp;
++typedef struct _Sr__VersionVerifyReq Sr__VersionVerifyReq;
++typedef struct _Sr__VersionVerifyResp Sr__VersionVerifyResp;
++typedef struct _Sr__SchemaRevision Sr__SchemaRevision;
++typedef struct _Sr__SchemaSubmodule Sr__SchemaSubmodule;
++typedef struct _Sr__Schema Sr__Schema;
++typedef struct _Sr__ListSchemasReq Sr__ListSchemasReq;
++typedef struct _Sr__ListSchemasResp Sr__ListSchemasResp;
++typedef struct _Sr__GetSchemaReq Sr__GetSchemaReq;
++typedef struct _Sr__GetSchemaResp Sr__GetSchemaResp;
++typedef struct _Sr__GetItemReq Sr__GetItemReq;
++typedef struct _Sr__GetItemResp Sr__GetItemResp;
++typedef struct _Sr__GetItemsReq Sr__GetItemsReq;
++typedef struct _Sr__GetItemsResp Sr__GetItemsResp;
++typedef struct _Sr__GetSubtreeReq Sr__GetSubtreeReq;
++typedef struct _Sr__GetSubtreeResp Sr__GetSubtreeResp;
++typedef struct _Sr__GetSubtreesReq Sr__GetSubtreesReq;
++typedef struct _Sr__GetSubtreesResp Sr__GetSubtreesResp;
++typedef struct _Sr__GetSubtreeChunkReq Sr__GetSubtreeChunkReq;
++typedef struct _Sr__GetSubtreeChunkResp Sr__GetSubtreeChunkResp;
++typedef struct _Sr__SetItemReq Sr__SetItemReq;
++typedef struct _Sr__SetItemResp Sr__SetItemResp;
++typedef struct _Sr__SetItemStrReq Sr__SetItemStrReq;
++typedef struct _Sr__SetItemStrResp Sr__SetItemStrResp;
++typedef struct _Sr__DeleteItemReq Sr__DeleteItemReq;
++typedef struct _Sr__DeleteItemResp Sr__DeleteItemResp;
++typedef struct _Sr__MoveItemReq Sr__MoveItemReq;
++typedef struct _Sr__MoveItemResp Sr__MoveItemResp;
++typedef struct _Sr__ValidateReq Sr__ValidateReq;
++typedef struct _Sr__ValidateResp Sr__ValidateResp;
++typedef struct _Sr__CommitReq Sr__CommitReq;
++typedef struct _Sr__CommitResp Sr__CommitResp;
++typedef struct _Sr__DiscardChangesReq Sr__DiscardChangesReq;
++typedef struct _Sr__DiscardChangesResp Sr__DiscardChangesResp;
++typedef struct _Sr__CopyConfigReq Sr__CopyConfigReq;
++typedef struct _Sr__CopyConfigResp Sr__CopyConfigResp;
++typedef struct _Sr__LockReq Sr__LockReq;
++typedef struct _Sr__LockResp Sr__LockResp;
++typedef struct _Sr__UnlockReq Sr__UnlockReq;
++typedef struct _Sr__UnlockResp Sr__UnlockResp;
++typedef struct _Sr__SubscribeReq Sr__SubscribeReq;
++typedef struct _Sr__SubscribeResp Sr__SubscribeResp;
++typedef struct _Sr__UnsubscribeReq Sr__UnsubscribeReq;
++typedef struct _Sr__UnsubscribeResp Sr__UnsubscribeResp;
++typedef struct _Sr__CheckEnabledRunningReq Sr__CheckEnabledRunningReq;
++typedef struct _Sr__CheckEnabledRunningResp Sr__CheckEnabledRunningResp;
++typedef struct _Sr__ModuleInstallNotification Sr__ModuleInstallNotification;
++typedef struct _Sr__FeatureEnableNotification Sr__FeatureEnableNotification;
++typedef struct _Sr__ModuleChangeNotification Sr__ModuleChangeNotification;
++typedef struct _Sr__SubtreeChangeNotification Sr__SubtreeChangeNotification;
++typedef struct _Sr__Change Sr__Change;
++typedef struct _Sr__GetChangesReq Sr__GetChangesReq;
++typedef struct _Sr__GetChangesResp Sr__GetChangesResp;
++typedef struct _Sr__CheckExecPermReq Sr__CheckExecPermReq;
++typedef struct _Sr__CheckExecPermResp Sr__CheckExecPermResp;
++typedef struct _Sr__RPCReq Sr__RPCReq;
++typedef struct _Sr__RPCResp Sr__RPCResp;
++typedef struct _Sr__EventNotifReq Sr__EventNotifReq;
++typedef struct _Sr__EventNotifResp Sr__EventNotifResp;
++typedef struct _Sr__EventNotifReplayReq Sr__EventNotifReplayReq;
++typedef struct _Sr__EventNotifReplayResp Sr__EventNotifReplayResp;
++typedef struct _Sr__DataProvideReq Sr__DataProvideReq;
++typedef struct _Sr__DataProvideResp Sr__DataProvideResp;
++typedef struct _Sr__ModuleInstallReq Sr__ModuleInstallReq;
++typedef struct _Sr__ModuleInstallResp Sr__ModuleInstallResp;
++typedef struct _Sr__FeatureEnableReq Sr__FeatureEnableReq;
++typedef struct _Sr__FeatureEnableResp Sr__FeatureEnableResp;
++typedef struct _Sr__UnsubscribeDestinationReq Sr__UnsubscribeDestinationReq;
++typedef struct _Sr__CommitTimeoutReq Sr__CommitTimeoutReq;
++typedef struct _Sr__OperDataTimeoutReq Sr__OperDataTimeoutReq;
++typedef struct _Sr__InternalStateDataReq Sr__InternalStateDataReq;
++typedef struct _Sr__NotifStoreCleanupReq Sr__NotifStoreCleanupReq;
++typedef struct _Sr__DelayedMsgReq Sr__DelayedMsgReq;
++typedef struct _Sr__NacmReloadReq Sr__NacmReloadReq;
++typedef struct _Sr__Request Sr__Request;
++typedef struct _Sr__Response Sr__Response;
++typedef struct _Sr__Notification Sr__Notification;
++typedef struct _Sr__NotificationAck Sr__NotificationAck;
++typedef struct _Sr__InternalRequest Sr__InternalRequest;
++typedef struct _Sr__Msg Sr__Msg;
++
++
++/* --- enums --- */
++
++typedef enum _Sr__Value__Types {
++ SR__VALUE__TYPES__LIST = 1,
++ SR__VALUE__TYPES__CONTAINER = 2,
++ SR__VALUE__TYPES__CONTAINER_PRESENCE = 3,
++ SR__VALUE__TYPES__LEAF_EMPTY = 4,
++ SR__VALUE__TYPES__BINARY = 10,
++ SR__VALUE__TYPES__BITS = 11,
++ SR__VALUE__TYPES__BOOL = 12,
++ SR__VALUE__TYPES__DECIMAL64 = 13,
++ SR__VALUE__TYPES__ENUM = 14,
++ SR__VALUE__TYPES__IDENTITYREF = 15,
++ SR__VALUE__TYPES__INSTANCEID = 16,
++ SR__VALUE__TYPES__INT8 = 17,
++ SR__VALUE__TYPES__INT16 = 18,
++ SR__VALUE__TYPES__INT32 = 19,
++ SR__VALUE__TYPES__INT64 = 20,
++ SR__VALUE__TYPES__STRING = 21,
++ SR__VALUE__TYPES__UINT8 = 22,
++ SR__VALUE__TYPES__UINT16 = 23,
++ SR__VALUE__TYPES__UINT32 = 24,
++ SR__VALUE__TYPES__UINT64 = 25,
++ SR__VALUE__TYPES__ANYXML = 26,
++ SR__VALUE__TYPES__ANYDATA = 27
++ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(SR__VALUE__TYPES)
++} Sr__Value__Types;
++typedef enum _Sr__MoveItemReq__MovePosition {
++ SR__MOVE_ITEM_REQ__MOVE_POSITION__BEFORE = 1,
++ SR__MOVE_ITEM_REQ__MOVE_POSITION__AFTER = 2,
++ SR__MOVE_ITEM_REQ__MOVE_POSITION__FIRST = 3,
++ SR__MOVE_ITEM_REQ__MOVE_POSITION__LAST = 4
++ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(SR__MOVE_ITEM_REQ__MOVE_POSITION)
++} Sr__MoveItemReq__MovePosition;
++/*
++ **
++ * @brief Type of the event notification.
++ */
++typedef enum _Sr__EventNotifReq__NotifType {
++ SR__EVENT_NOTIF_REQ__NOTIF_TYPE__REALTIME = 1,
++ SR__EVENT_NOTIF_REQ__NOTIF_TYPE__REPLAY = 2,
++ SR__EVENT_NOTIF_REQ__NOTIF_TYPE__REPLAY_COMPLETE = 3,
++ SR__EVENT_NOTIF_REQ__NOTIF_TYPE__REPLAY_STOP = 4
++ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(SR__EVENT_NOTIF_REQ__NOTIF_TYPE)
++} Sr__EventNotifReq__NotifType;
++/*
++ **
++ * @brief Flags used to override default session handling.
++ */
++typedef enum _Sr__EventNotifReq__NotifFlags {
++ /*
++ **< Notification will be handled normally.
++ */
++ SR__EVENT_NOTIF_REQ__NOTIF_FLAGS__DEFAULT = 0,
++ /*
++ **< Notification will not be stored in the notification store.
++ */
++ SR__EVENT_NOTIF_REQ__NOTIF_FLAGS__EPHEMERAL = 1
++ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(SR__EVENT_NOTIF_REQ__NOTIF_FLAGS)
++} Sr__EventNotifReq__NotifFlags;
++/*
++ **
++ * @brief Type of the message.
++ */
++typedef enum _Sr__Msg__MsgType {
++ /*
++ **< The message is a request.
++ */
++ SR__MSG__MSG_TYPE__REQUEST = 1,
++ /*
++ **< The message is a response to the request.
++ */
++ SR__MSG__MSG_TYPE__RESPONSE = 2,
++ /*
++ **< The message is a notification.
++ */
++ SR__MSG__MSG_TYPE__NOTIFICATION = 3,
++ /*
++ **< The message is a notification acknowledgment.
++ */
++ SR__MSG__MSG_TYPE__NOTIFICATION_ACK = 4,
++ /*
++ **< The message is an internal request, should not be used from the public API.
++ */
++ SR__MSG__MSG_TYPE__INTERNAL_REQUEST = 5
++ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(SR__MSG__MSG_TYPE)
++} Sr__Msg__MsgType;
++/*
++ **
++ * @brief Variant of the API. Currently only values (sr_val_t) vs. trees (sr_node_t).
++ */
++typedef enum _Sr__ApiVariant {
++ SR__API_VARIANT__VALUES = 1,
++ SR__API_VARIANT__TREES = 2
++ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(SR__API_VARIANT)
++} Sr__ApiVariant;
++/*
++ **
++ * @brief Datastore on which the configuration session will operate.
++ */
++typedef enum _Sr__DataStore {
++ SR__DATA_STORE__STARTUP = 1,
++ SR__DATA_STORE__RUNNING = 2,
++ SR__DATA_STORE__CANDIDATE = 3
++ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(SR__DATA_STORE)
++} Sr__DataStore;
++/*
++ **
++ * @brief Flags used to override default session handling.
++ */
++typedef enum _Sr__SessionFlags {
++ /*
++ **< Default (normal) session behavior.
++ */
++ SR__SESSION_FLAGS__SESS_DEFAULT = 0,
++ /*
++ **< Session will process only configuration data (e.g. sysrepo won't
++ *return any state data by ::sr_get_items / ::sr_get_items_iter calls).
++ */
++ SR__SESSION_FLAGS__SESS_CONFIG_ONLY = 1,
++ /*
++ **< Enable NETCONF access control for this session.
++ */
++ SR__SESSION_FLAGS__SESS_ENABLE_NACM = 2,
++ /*
++ **< Notification session (internal type of session).
++ */
++ SR__SESSION_FLAGS__SESS_NOTIFICATION = 1024
++ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(SR__SESSION_FLAGS)
++} Sr__SessionFlags;
++/*
++ **
++ * @brief Flags used to override default behavior of data manipulation calls.
++ */
++typedef enum _Sr__EditFlags {
++ /*
++ **< Default behavior - recursive and non-strict.
++ */
++ SR__EDIT_FLAGS__EDIT_DEFAULT = 0,
++ /*
++ **< Non-recursive behavior:
++ *by ::SetItemReq, all preceding nodes (parents) of the identified element must exist,
++ *by ::DeleteItemReq xpath must not identify an non-empty list or non-empty container.
++ */
++ SR__EDIT_FLAGS__EDIT_NON_RECURSIVE = 1,
++ /*
++ **< Strict behavior:
++ *by ::SetItemReq the identified element must not exist (similar to netconf create operation),
++ *by ::DeleteItemReq the identified element must exist (similar to netconf delete operation).
++ */
++ SR__EDIT_FLAGS__EDIT_STRICT = 2
++ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(SR__EDIT_FLAGS)
++} Sr__EditFlags;
++typedef enum _Sr__SubscriptionType {
++ SR__SUBSCRIPTION_TYPE__MODULE_INSTALL_SUBS = 1,
++ SR__SUBSCRIPTION_TYPE__FEATURE_ENABLE_SUBS = 2,
++ SR__SUBSCRIPTION_TYPE__MODULE_CHANGE_SUBS = 10,
++ SR__SUBSCRIPTION_TYPE__SUBTREE_CHANGE_SUBS = 11,
++ SR__SUBSCRIPTION_TYPE__DP_GET_ITEMS_SUBS = 20,
++ SR__SUBSCRIPTION_TYPE__RPC_SUBS = 30,
++ SR__SUBSCRIPTION_TYPE__ACTION_SUBS = 31,
++ SR__SUBSCRIPTION_TYPE__EVENT_NOTIF_SUBS = 40,
++ /*
++ **< Used only internally to test for inactive notification subscriptions.
++ */
++ SR__SUBSCRIPTION_TYPE__HELLO_SUBS = 50,
++ /*
++ **< Used only internally to notify about the end of the commit process.
++ */
++ SR__SUBSCRIPTION_TYPE__COMMIT_END_SUBS = 51
++ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(SR__SUBSCRIPTION_TYPE)
++} Sr__SubscriptionType;
++typedef enum _Sr__NotificationEvent {
++ SR__NOTIFICATION_EVENT__VERIFY_EV = 1,
++ SR__NOTIFICATION_EVENT__APPLY_EV = 2,
++ SR__NOTIFICATION_EVENT__ABORT_EV = 3,
++ SR__NOTIFICATION_EVENT__ENABLED_EV = 4
++ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(SR__NOTIFICATION_EVENT)
++} Sr__NotificationEvent;
++typedef enum _Sr__ModuleState {
++ SR__MODULE_STATE__UNINSTALLED = 1,
++ SR__MODULE_STATE__IMPORTED = 2,
++ SR__MODULE_STATE__IMPLEMENTED = 3
++ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(SR__MODULE_STATE)
++} Sr__ModuleState;
++typedef enum _Sr__ChangeOperation {
++ SR__CHANGE_OPERATION__CREATED = 1,
++ SR__CHANGE_OPERATION__MODIFIED = 2,
++ SR__CHANGE_OPERATION__DELETED = 3,
++ SR__CHANGE_OPERATION__MOVED = 4
++ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(SR__CHANGE_OPERATION)
++} Sr__ChangeOperation;
++/*
++ **
++ * @brief Requested operation.
++ */
++typedef enum _Sr__Operation {
++ SR__OPERATION__SESSION_START = 10,
++ SR__OPERATION__SESSION_STOP = 11,
++ SR__OPERATION__SESSION_REFRESH = 12,
++ SR__OPERATION__SESSION_CHECK = 13,
++ SR__OPERATION__SESSION_SWITCH_DS = 14,
++ SR__OPERATION__SESSION_SET_OPTS = 15,
++ SR__OPERATION__VERSION_VERIFY = 16,
++ SR__OPERATION__LIST_SCHEMAS = 20,
++ SR__OPERATION__GET_SCHEMA = 21,
++ SR__OPERATION__MODULE_INSTALL = 22,
++ SR__OPERATION__FEATURE_ENABLE = 23,
++ SR__OPERATION__GET_ITEM = 30,
++ SR__OPERATION__GET_ITEMS = 31,
++ SR__OPERATION__GET_SUBTREE = 32,
++ SR__OPERATION__GET_SUBTREES = 33,
++ SR__OPERATION__GET_SUBTREE_CHUNK = 34,
++ SR__OPERATION__SET_ITEM = 40,
++ SR__OPERATION__DELETE_ITEM = 41,
++ SR__OPERATION__MOVE_ITEM = 42,
++ SR__OPERATION__SET_ITEM_STR = 43,
++ SR__OPERATION__VALIDATE = 50,
++ SR__OPERATION__COMMIT = 51,
++ SR__OPERATION__DISCARD_CHANGES = 52,
++ SR__OPERATION__COPY_CONFIG = 53,
++ SR__OPERATION__LOCK = 60,
++ SR__OPERATION__UNLOCK = 61,
++ SR__OPERATION__SUBSCRIBE = 70,
++ SR__OPERATION__UNSUBSCRIBE = 71,
++ SR__OPERATION__CHECK_ENABLED_RUNNING = 72,
++ SR__OPERATION__GET_CHANGES = 73,
++ SR__OPERATION__DATA_PROVIDE = 80,
++ SR__OPERATION__CHECK_EXEC_PERMISSION = 81,
++ SR__OPERATION__RPC = 82,
++ SR__OPERATION__ACTION = 83,
++ SR__OPERATION__EVENT_NOTIF = 84,
++ SR__OPERATION__EVENT_NOTIF_REPLAY = 85,
++ SR__OPERATION__UNSUBSCRIBE_DESTINATION = 101,
++ SR__OPERATION__COMMIT_TIMEOUT = 102,
++ SR__OPERATION__OPER_DATA_TIMEOUT = 103,
++ SR__OPERATION__INTERNAL_STATE_DATA = 104,
++ SR__OPERATION__NOTIF_STORE_CLEANUP = 105,
++ SR__OPERATION__DELAYED_MSG = 106,
++ SR__OPERATION__NACM_RELOAD = 107
++ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(SR__OPERATION)
++} Sr__Operation;
++
++/* --- messages --- */
++
++/*
++ **
++ * @brief Value of an item stored (or to be stored) in the datastore.
++ * Can be mapped to sr_val_t data structure from sysrepo library API.
++ */
++struct _Sr__Value
++{
++ ProtobufCMessage base;
++ char *xpath;
++ Sr__Value__Types type;
++ protobuf_c_boolean dflt;
++ char *binary_val;
++ char *bits_val;
++ protobuf_c_boolean has_bool_val;
++ protobuf_c_boolean bool_val;
++ protobuf_c_boolean has_decimal64_val;
++ double decimal64_val;
++ char *enum_val;
++ char *identityref_val;
++ char *instanceid_val;
++ protobuf_c_boolean has_int8_val;
++ int32_t int8_val;
++ protobuf_c_boolean has_int16_val;
++ int32_t int16_val;
++ protobuf_c_boolean has_int32_val;
++ int32_t int32_val;
++ protobuf_c_boolean has_int64_val;
++ int64_t int64_val;
++ char *string_val;
++ protobuf_c_boolean has_uint8_val;
++ uint32_t uint8_val;
++ protobuf_c_boolean has_uint16_val;
++ uint32_t uint16_val;
++ protobuf_c_boolean has_uint32_val;
++ uint32_t uint32_val;
++ protobuf_c_boolean has_uint64_val;
++ uint64_t uint64_val;
++ char *anyxml_val;
++ char *anydata_val;
++};
++#define SR__VALUE__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__value__descriptor) \
++ , NULL, 0, 0, NULL, NULL, 0,0, 0,0, NULL, NULL, NULL, 0,0, 0,0, 0,0, 0,0, NULL, 0,0, 0,0, 0,0, 0,0, NULL, NULL }
++
++
++/*
++ **
++ * @brief Item stored (or to be stored) in the datastore represented as a tree node
++ * reflecting module schema. Can be mapped to sr_node_t data structure from sysrepo library API.
++ */
++struct _Sr__Node
++{
++ ProtobufCMessage base;
++ /*
++ **< Value of the node; member *xpath* is used to store node's name.
++ */
++ Sr__Value *value;
++ /*
++ **< Name of the module that defines scheme of this node.
++ */
++ char *module_name;
++ /*
++ **< Direct descendands of this node.
++ */
++ size_t n_children;
++ Sr__Node **children;
++};
++#define SR__NODE__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__node__descriptor) \
++ , NULL, NULL, 0,NULL }
++
++
++/*
++ **
++ * @brief Error message retuned from the Sysrepo Engine.
++ */
++struct _Sr__Error
++{
++ ProtobufCMessage base;
++ char *message;
++ char *xpath;
++};
++#define SR__ERROR__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__error__descriptor) \
++ , NULL, NULL }
++
++
++/*
++ **
++ * @brief Request for starting a session. Sent by sr_session_start API call.
++ */
++struct _Sr__SessionStartReq
++{
++ ProtobufCMessage base;
++ Sr__DataStore datastore;
++ char *user_name;
++ /*
++ **< Bitwise OR of SessionFlags.
++ */
++ uint32_t options;
++ /*
++ **< Applicable if SESS_NOTIFICATION was specified.
++ */
++ protobuf_c_boolean has_commit_id;
++ uint32_t commit_id;
++};
++#define SR__SESSION_START_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__session_start_req__descriptor) \
++ , 0, NULL, 0, 0,0 }
++
++
++/*
++ **
++ * @brief Response to session_start request.
++ */
++struct _Sr__SessionStartResp
++{
++ ProtobufCMessage base;
++ uint32_t session_id;
++};
++#define SR__SESSION_START_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__session_start_resp__descriptor) \
++ , 0 }
++
++
++/*
++ **
++ * @brief Request for stopping the session. Sent by sr_session_stop API call.
++ */
++struct _Sr__SessionStopReq
++{
++ ProtobufCMessage base;
++ uint32_t session_id;
++};
++#define SR__SESSION_STOP_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__session_stop_req__descriptor) \
++ , 0 }
++
++
++/*
++ **
++ * @brief Response to session_stop request.
++ */
++struct _Sr__SessionStopResp
++{
++ ProtobufCMessage base;
++ uint32_t session_id;
++};
++#define SR__SESSION_STOP_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__session_stop_resp__descriptor) \
++ , 0 }
++
++
++/*
++ **
++ * @brief Refreshes configuration data cached within the session.
++ * Sent by sr_session_refresh API call.
++ */
++struct _Sr__SessionRefreshReq
++{
++ ProtobufCMessage base;
++};
++#define SR__SESSION_REFRESH_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__session_refresh_req__descriptor) \
++ }
++
++
++/*
++ **
++ * @brief Response to sr_session_refresh request.
++ */
++struct _Sr__SessionRefreshResp
++{
++ ProtobufCMessage base;
++ size_t n_errors;
++ Sr__Error **errors;
++};
++#define SR__SESSION_REFRESH_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__session_refresh_resp__descriptor) \
++ , 0,NULL }
++
++
++/*
++ **
++ * @brief Checks aliveness and validity of the session & connection tied to it.
++ * Sent by sr_session_check API call.
++ */
++struct _Sr__SessionCheckReq
++{
++ ProtobufCMessage base;
++};
++#define SR__SESSION_CHECK_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__session_check_req__descriptor) \
++ }
++
++
++/*
++ **
++ * @brief Response to sr_session_check request.
++ */
++struct _Sr__SessionCheckResp
++{
++ ProtobufCMessage base;
++ size_t n_errors;
++ Sr__Error **errors;
++};
++#define SR__SESSION_CHECK_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__session_check_resp__descriptor) \
++ , 0,NULL }
++
++
++/*
++ **
++ * @brief Changes the datastore to which the session is tied to.
++ */
++struct _Sr__SessionSwitchDsReq
++{
++ ProtobufCMessage base;
++ Sr__DataStore datastore;
++};
++#define SR__SESSION_SWITCH_DS_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__session_switch_ds_req__descriptor) \
++ , 0 }
++
++
++/*
++ **
++ * @brief Response to sr_session_switch_ds request.
++ */
++struct _Sr__SessionSwitchDsResp
++{
++ ProtobufCMessage base;
++};
++#define SR__SESSION_SWITCH_DS_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__session_switch_ds_resp__descriptor) \
++ }
++
++
++/*
++ **
++ * @brief Request for modification of session options.
++ */
++struct _Sr__SessionSetOptsReq
++{
++ ProtobufCMessage base;
++ uint32_t options;
++};
++#define SR__SESSION_SET_OPTS_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__session_set_opts_req__descriptor) \
++ , 0 }
++
++
++/*
++ **
++ * @brief Response to sr_session_set_options.
++ */
++struct _Sr__SessionSetOptsResp
++{
++ ProtobufCMessage base;
++};
++#define SR__SESSION_SET_OPTS_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__session_set_opts_resp__descriptor) \
++ }
++
++
++/*
++ **
++ * @brief Request to verify version compatibility.
++ */
++struct _Sr__VersionVerifyReq
++{
++ ProtobufCMessage base;
++ char *soname;
++};
++#define SR__VERSION_VERIFY_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__version_verify_req__descriptor) \
++ , NULL }
++
++
++/*
++ **
++ * @brief Response to version verification.
++ */
++struct _Sr__VersionVerifyResp
++{
++ ProtobufCMessage base;
++ /*
++ **< server-side SONAME version in case of versions incompatibility.
++ */
++ char *soname;
++};
++#define SR__VERSION_VERIFY_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__version_verify_resp__descriptor) \
++ , NULL }
++
++
++/*
++ **
++ * @brief Schema revision details.
++ */
++struct _Sr__SchemaRevision
++{
++ ProtobufCMessage base;
++ /*
++ **< Latest revision date of the module.
++ */
++ char *revision;
++ /*
++ **< Absolute path to file where the schema is stored (YANG format).
++ */
++ char *file_path_yang;
++ /*
++ **< Absolute path to file where the schema is stored (.yin format).
++ */
++ char *file_path_yin;
++};
++#define SR__SCHEMA_REVISION__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__schema_revision__descriptor) \
++ , NULL, NULL, NULL }
++
++
++/*
++ **
++ * @brief Schema submodule information.
++ */
++struct _Sr__SchemaSubmodule
++{
++ ProtobufCMessage base;
++ /*
++ **< Submodule name
++ */
++ char *submodule_name;
++ /*
++ **< Revision of the submodule
++ */
++ Sr__SchemaRevision *revision;
++};
++#define SR__SCHEMA_SUBMODULE__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__schema_submodule__descriptor) \
++ , NULL, NULL }
++
++
++/*
++ **
++ * @brief Information about a schema installed in sysrepo datastore.
++ */
++struct _Sr__Schema
++{
++ ProtobufCMessage base;
++ /*
++ **< Name of the module.
++ */
++ char *module_name;
++ /*
++ **< Namespace of the module.
++ */
++ char *ns;
++ /*
++ **< Prefix of he module.
++ */
++ char *prefix;
++ /*
++ **< TRUE only for explicitly installed modules (those are always implemented).
++ */
++ protobuf_c_boolean installed;
++ /*
++ **< TRUE for implemented modules (do not have to be installed if they have augments,
++ *deviations or are targets for leafrefs of other implemented modules).
++ */
++ protobuf_c_boolean implemented;
++ /*
++ **< Revision of the module
++ */
++ Sr__SchemaRevision *revision;
++ /*
++ **< Submodules
++ */
++ size_t n_submodules;
++ Sr__SchemaSubmodule **submodules;
++ /*
++ **< Features enabled for the module
++ */
++ size_t n_enabled_features;
++ char **enabled_features;
++};
++#define SR__SCHEMA__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__schema__descriptor) \
++ , NULL, NULL, NULL, 0, 0, NULL, 0,NULL, 0,NULL }
++
++
++/*
++ **
++ * @brief Retrieves an array of schemas installed in the sysrepo datastore.
++ * Sent by sr_list_schemas API call.
++ */
++struct _Sr__ListSchemasReq
++{
++ ProtobufCMessage base;
++};
++#define SR__LIST_SCHEMAS_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__list_schemas_req__descriptor) \
++ }
++
++
++/*
++ **
++ * @brief Response to sr_list_schemas request.
++ */
++struct _Sr__ListSchemasResp
++{
++ ProtobufCMessage base;
++ size_t n_schemas;
++ Sr__Schema **schemas;
++};
++#define SR__LIST_SCHEMAS_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__list_schemas_resp__descriptor) \
++ , 0,NULL }
++
++
++/*
++ **
++ * @brief Retrieves the content of specified schema file.
++ * Sent by sr_get_schema API call.
++ */
++struct _Sr__GetSchemaReq
++{
++ ProtobufCMessage base;
++ char *module_name;
++ char *revision;
++ char *submodule_name;
++ char *submodule_revision;
++ protobuf_c_boolean yang_format;
++};
++#define SR__GET_SCHEMA_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__get_schema_req__descriptor) \
++ , NULL, NULL, NULL, NULL, 0 }
++
++
++/*
++ **
++ * @brief Response to sr_get_schema request.
++ */
++struct _Sr__GetSchemaResp
++{
++ ProtobufCMessage base;
++ char *schema_content;
++};
++#define SR__GET_SCHEMA_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__get_schema_resp__descriptor) \
++ , NULL }
++
++
++/*
++ **
++ * @brief Retrieves a single data element stored under provided path.
++ * Sent by sr_get_item API call.
++ */
++struct _Sr__GetItemReq
++{
++ ProtobufCMessage base;
++ char *xpath;
++};
++#define SR__GET_ITEM_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__get_item_req__descriptor) \
++ , NULL }
++
++
++/*
++ **
++ * @brief Response to get_item request.
++ */
++struct _Sr__GetItemResp
++{
++ ProtobufCMessage base;
++ Sr__Value *value;
++};
++#define SR__GET_ITEM_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__get_item_resp__descriptor) \
++ , NULL }
++
++
++/*
++ **
++ * @brief Retrieves an array of data elements stored under provided path.
++ * Sent by sr_get_items and sr_get_items_iter API calls.
++ */
++struct _Sr__GetItemsReq
++{
++ ProtobufCMessage base;
++ char *xpath;
++ /*
++ * The options below are applicable only for sr_get_items_iter
++ * (not set by sr_get_items).
++ */
++ protobuf_c_boolean has_limit;
++ uint32_t limit;
++ protobuf_c_boolean has_offset;
++ uint32_t offset;
++};
++#define SR__GET_ITEMS_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__get_items_req__descriptor) \
++ , NULL, 0,0, 0,0 }
++
++
++/*
++ **
++ * @brief Response to get_items / sr_get_items_iter request.
++ */
++struct _Sr__GetItemsResp
++{
++ ProtobufCMessage base;
++ size_t n_values;
++ Sr__Value **values;
++};
++#define SR__GET_ITEMS_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__get_items_resp__descriptor) \
++ , 0,NULL }
++
++
++/*
++ **
++ * @brief Retrieves a single subtree whose root is stored under provided path.
++ * Sent by sr_get_subtree API call.
++ */
++struct _Sr__GetSubtreeReq
++{
++ ProtobufCMessage base;
++ char *xpath;
++};
++#define SR__GET_SUBTREE_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__get_subtree_req__descriptor) \
++ , NULL }
++
++
++/*
++ **
++ * @brief Response to sr_get_subtree request.
++ */
++struct _Sr__GetSubtreeResp
++{
++ ProtobufCMessage base;
++ Sr__Node *tree;
++};
++#define SR__GET_SUBTREE_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__get_subtree_resp__descriptor) \
++ , NULL }
++
++
++/*
++ **
++ * @brief Retrieves an array of subtrees whose root nodes match provided path.
++ * Sent by sr_get_subtrees API call.
++ */
++struct _Sr__GetSubtreesReq
++{
++ ProtobufCMessage base;
++ char *xpath;
++};
++#define SR__GET_SUBTREES_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__get_subtrees_req__descriptor) \
++ , NULL }
++
++
++/*
++ **
++ * @brief Response to sr_get_subtrees request.
++ */
++struct _Sr__GetSubtreesResp
++{
++ ProtobufCMessage base;
++ size_t n_trees;
++ Sr__Node **trees;
++};
++#define SR__GET_SUBTREES_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__get_subtrees_resp__descriptor) \
++ , 0,NULL }
++
++
++/*
++ **
++ * @brief Retrieves a chunk of a single or multiple subtrees.
++ * A subtree chunk is also a tree, where the root node is the node referenced by XPath,
++ * the next level consists of its children skipping the first "slice_offset" nodes and including
++ * at most "slice_limit" nodes, while the remaining (depth_limit-2) levels always start with
++ * the first child (slice_offset is ignored) and include at most "child_limit" nodes.
++ * The chunk consists of at most "depth_limit" levels.
++ * @note Order of child nodes depends on the libyang implementation.
++ */
++struct _Sr__GetSubtreeChunkReq
++{
++ ProtobufCMessage base;
++ char *xpath;
++ protobuf_c_boolean single;
++ uint32_t slice_offset;
++ uint32_t slice_width;
++ uint32_t child_limit;
++ uint32_t depth_limit;
++};
++#define SR__GET_SUBTREE_CHUNK_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__get_subtree_chunk_req__descriptor) \
++ , NULL, 0, 0, 0, 0, 0 }
++
++
++/*
++ **
++ * @brief Response to sr_get_subtree_chunk request.
++ */
++struct _Sr__GetSubtreeChunkResp
++{
++ ProtobufCMessage base;
++ /*
++ **< JSON node-id of the root node for each subtree chunk
++ */
++ size_t n_xpath;
++ char **xpath;
++ /*
++ **< first chunk may carry mutliple trees
++ */
++ size_t n_chunk;
++ Sr__Node **chunk;
++};
++#define SR__GET_SUBTREE_CHUNK_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__get_subtree_chunk_resp__descriptor) \
++ , 0,NULL, 0,NULL }
++
++
++/*
++ **
++ * @brief Sets the value of the leaf, leaf-list or presence container.
++ * Sent by sr_set_item API call.
++ */
++struct _Sr__SetItemReq
++{
++ ProtobufCMessage base;
++ char *xpath;
++ Sr__Value *value;
++ /*
++ **< Bitwise OR of EditFlags
++ */
++ uint32_t options;
++};
++#define SR__SET_ITEM_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__set_item_req__descriptor) \
++ , NULL, NULL, 0 }
++
++
++/*
++ **
++ * @brief Response to sr_set_item request.
++ */
++struct _Sr__SetItemResp
++{
++ ProtobufCMessage base;
++};
++#define SR__SET_ITEM_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__set_item_resp__descriptor) \
++ }
++
++
++/*
++ **
++ * @brief Sets the value of the leaf, leaf-list or presence container.
++ * The value is transferred as string.
++ * Sent by sr_set_item_str API call.
++ */
++struct _Sr__SetItemStrReq
++{
++ ProtobufCMessage base;
++ char *xpath;
++ char *value;
++ /*
++ **< Bitwise OR of EditFlags
++ */
++ uint32_t options;
++};
++#define SR__SET_ITEM_STR_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__set_item_str_req__descriptor) \
++ , NULL, NULL, 0 }
++
++
++/*
++ **
++ * @brief Response to sr_set_item_str request.
++ */
++struct _Sr__SetItemStrResp
++{
++ ProtobufCMessage base;
++};
++#define SR__SET_ITEM_STR_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__set_item_str_resp__descriptor) \
++ }
++
++
++/*
++ **
++ * @brief Deletes the nodes under the specified xpath.
++ * Sent by sr_delete_item API call.
++ */
++struct _Sr__DeleteItemReq
++{
++ ProtobufCMessage base;
++ char *xpath;
++ /*
++ **< Bitwise OR of EditFlags
++ */
++ uint32_t options;
++};
++#define SR__DELETE_ITEM_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__delete_item_req__descriptor) \
++ , NULL, 0 }
++
++
++/*
++ **
++ * @brief Response to sr_delete_item request.
++ */
++struct _Sr__DeleteItemResp
++{
++ ProtobufCMessage base;
++};
++#define SR__DELETE_ITEM_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__delete_item_resp__descriptor) \
++ }
++
++
++/*
++ **
++ * @brief Move the instance of an ordered list in specified direction.
++ * Sent by sr_move_item API call.
++ */
++struct _Sr__MoveItemReq
++{
++ ProtobufCMessage base;
++ char *xpath;
++ Sr__MoveItemReq__MovePosition position;
++ char *relative_item;
++};
++#define SR__MOVE_ITEM_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__move_item_req__descriptor) \
++ , NULL, 0, NULL }
++
++
++/*
++ **
++ * @brief Response to sr_move_item request.
++ */
++struct _Sr__MoveItemResp
++{
++ ProtobufCMessage base;
++};
++#define SR__MOVE_ITEM_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__move_item_resp__descriptor) \
++ }
++
++
++/*
++ **
++ * @brief Perform the validation of changes made in current session, but do not
++ * commit nor discard them. Sent by sr_validate API call.
++ */
++struct _Sr__ValidateReq
++{
++ ProtobufCMessage base;
++};
++#define SR__VALIDATE_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__validate_req__descriptor) \
++ }
++
++
++/*
++ **
++ * @brief Response to sr_validate request.
++ */
++struct _Sr__ValidateResp
++{
++ ProtobufCMessage base;
++ size_t n_errors;
++ Sr__Error **errors;
++};
++#define SR__VALIDATE_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__validate_resp__descriptor) \
++ , 0,NULL }
++
++
++/*
++ **
++ * @brief Apply changes made in current session.
++ * Sent by sr_commit API call.
++ */
++struct _Sr__CommitReq
++{
++ ProtobufCMessage base;
++};
++#define SR__COMMIT_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__commit_req__descriptor) \
++ }
++
++
++/*
++ **
++ * @brief Response to sr_commit request.
++ */
++struct _Sr__CommitResp
++{
++ ProtobufCMessage base;
++ size_t n_errors;
++ Sr__Error **errors;
++};
++#define SR__COMMIT_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__commit_resp__descriptor) \
++ , 0,NULL }
++
++
++/*
++ **
++ * @brief Discard non-committed changes made in current session.
++ * Sent by sr_discard_changes API call.
++ */
++struct _Sr__DiscardChangesReq
++{
++ ProtobufCMessage base;
++};
++#define SR__DISCARD_CHANGES_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__discard_changes_req__descriptor) \
++ }
++
++
++/*
++ **
++ * @brief Response to sr_discard_changes request.
++ */
++struct _Sr__DiscardChangesResp
++{
++ ProtobufCMessage base;
++};
++#define SR__DISCARD_CHANGES_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__discard_changes_resp__descriptor) \
++ }
++
++
++/*
++ **
++ * @brief Replaces an entire configuration datastore with the contents of
++ * another complete configuration datastore. Sent by sr_copy_config request.
++ */
++struct _Sr__CopyConfigReq
++{
++ ProtobufCMessage base;
++ Sr__DataStore src_datastore;
++ Sr__DataStore dst_datastore;
++ /*
++ **< If not specified, the operation is performed on all
++ *modules that are currently active in the source datastore
++ */
++ char *module_name;
++};
++#define SR__COPY_CONFIG_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__copy_config_req__descriptor) \
++ , 0, 0, NULL }
++
++
++/*
++ **
++ * @brief Response to sr_copy_config request.
++ */
++struct _Sr__CopyConfigResp
++{
++ ProtobufCMessage base;
++};
++#define SR__COPY_CONFIG_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__copy_config_resp__descriptor) \
++ }
++
++
++/*
++ **
++ * @brief Locks specified data model or the datastore which the session is tied to.
++ * Sent by sr_lock_datastore and sr_lock_model API calls.
++ */
++struct _Sr__LockReq
++{
++ ProtobufCMessage base;
++ /*
++ **< If module name is not set, LockReq locks whole datastore.
++ */
++ char *module_name;
++};
++#define SR__LOCK_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__lock_req__descriptor) \
++ , NULL }
++
++
++/*
++ **
++ * @brief Response to sr_lock_datastore or sr_lock_model request.
++ */
++struct _Sr__LockResp
++{
++ ProtobufCMessage base;
++};
++#define SR__LOCK_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__lock_resp__descriptor) \
++ }
++
++
++/*
++ **
++ * @brief Unlocks specified data model or the datastore which the session is tied to.
++ * Sent by sr_unlock_datastore and sr_unlock_model API calls.
++ */
++struct _Sr__UnlockReq
++{
++ ProtobufCMessage base;
++ /*
++ **< If module name is not set, UnlockReq unlocks whole datastore.
++ */
++ char *module_name;
++};
++#define SR__UNLOCK_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__unlock_req__descriptor) \
++ , NULL }
++
++
++/*
++ **
++ * @brief Response to sr_lock_datastore or sr_lock_model request.
++ */
++struct _Sr__UnlockResp
++{
++ ProtobufCMessage base;
++};
++#define SR__UNLOCK_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__unlock_resp__descriptor) \
++ }
++
++
++struct _Sr__SubscribeReq
++{
++ ProtobufCMessage base;
++ Sr__SubscriptionType type;
++ char *destination;
++ uint32_t subscription_id;
++ char *module_name;
++ char *xpath;
++ protobuf_c_boolean has_notif_event;
++ Sr__NotificationEvent notif_event;
++ protobuf_c_boolean has_priority;
++ uint32_t priority;
++ protobuf_c_boolean has_enable_running;
++ protobuf_c_boolean enable_running;
++ protobuf_c_boolean has_enable_event;
++ protobuf_c_boolean enable_event;
++ Sr__ApiVariant api_variant;
++};
++#define SR__SUBSCRIBE_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__subscribe_req__descriptor) \
++ , 0, NULL, 0, NULL, NULL, 0,0, 0,0, 0,0, 0,0, 0 }
++
++
++struct _Sr__SubscribeResp
++{
++ ProtobufCMessage base;
++};
++#define SR__SUBSCRIBE_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__subscribe_resp__descriptor) \
++ }
++
++
++struct _Sr__UnsubscribeReq
++{
++ ProtobufCMessage base;
++ Sr__SubscriptionType type;
++ char *destination;
++ uint32_t subscription_id;
++ char *module_name;
++};
++#define SR__UNSUBSCRIBE_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__unsubscribe_req__descriptor) \
++ , 0, NULL, 0, NULL }
++
++
++struct _Sr__UnsubscribeResp
++{
++ ProtobufCMessage base;
++};
++#define SR__UNSUBSCRIBE_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__unsubscribe_resp__descriptor) \
++ }
++
++
++/*
++ **
++ * @brief Checks whether the module has any enabled subtree.
++ * Sent by sr_check_enabled_running.
++ */
++struct _Sr__CheckEnabledRunningReq
++{
++ ProtobufCMessage base;
++ char *module_name;
++};
++#define SR__CHECK_ENABLED_RUNNING_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__check_enabled_running_req__descriptor) \
++ , NULL }
++
++
++struct _Sr__CheckEnabledRunningResp
++{
++ ProtobufCMessage base;
++ protobuf_c_boolean enabled;
++};
++#define SR__CHECK_ENABLED_RUNNING_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__check_enabled_running_resp__descriptor) \
++ , 0 }
++
++
++struct _Sr__ModuleInstallNotification
++{
++ ProtobufCMessage base;
++ char *module_name;
++ char *revision;
++ Sr__ModuleState state;
++};
++#define SR__MODULE_INSTALL_NOTIFICATION__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__module_install_notification__descriptor) \
++ , NULL, NULL, 0 }
++
++
++struct _Sr__FeatureEnableNotification
++{
++ ProtobufCMessage base;
++ char *module_name;
++ char *feature_name;
++ protobuf_c_boolean enabled;
++};
++#define SR__FEATURE_ENABLE_NOTIFICATION__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__feature_enable_notification__descriptor) \
++ , NULL, NULL, 0 }
++
++
++struct _Sr__ModuleChangeNotification
++{
++ ProtobufCMessage base;
++ Sr__NotificationEvent event;
++ char *module_name;
++};
++#define SR__MODULE_CHANGE_NOTIFICATION__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__module_change_notification__descriptor) \
++ , 0, NULL }
++
++
++struct _Sr__SubtreeChangeNotification
++{
++ ProtobufCMessage base;
++ Sr__NotificationEvent event;
++ char *xpath;
++};
++#define SR__SUBTREE_CHANGE_NOTIFICATION__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__subtree_change_notification__descriptor) \
++ , 0, NULL }
++
++
++struct _Sr__Change
++{
++ ProtobufCMessage base;
++ Sr__ChangeOperation changeoperation;
++ Sr__Value *new_value;
++ Sr__Value *old_value;
++};
++#define SR__CHANGE__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__change__descriptor) \
++ , 0, NULL, NULL }
++
++
++/*
++ **
++ * @brief Retrieves an array of changes made under provided path.
++ * Sent by sr_get_changes_iter or sr_get_change_next API calls.
++ */
++struct _Sr__GetChangesReq
++{
++ ProtobufCMessage base;
++ char *xpath;
++ uint32_t limit;
++ uint32_t offset;
++};
++#define SR__GET_CHANGES_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__get_changes_req__descriptor) \
++ , NULL, 0, 0 }
++
++
++/*
++ **
++ * @brief Response to get_changes request.
++ */
++struct _Sr__GetChangesResp
++{
++ ProtobufCMessage base;
++ size_t n_changes;
++ Sr__Change **changes;
++};
++#define SR__GET_CHANGES_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__get_changes_resp__descriptor) \
++ , 0,NULL }
++
++
++/*
++ **
++ * @brief Sends a request to check if the owner of this session is authorized to invoke
++ * the protocol operation referenced by the xpath.
++ * Sent by sr_check_exec_permission.
++ */
++struct _Sr__CheckExecPermReq
++{
++ ProtobufCMessage base;
++ char *xpath;
++};
++#define SR__CHECK_EXEC_PERM_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__check_exec_perm_req__descriptor) \
++ , NULL }
++
++
++/*
++ **
++ * @brief Response to sr_check_exec_permission request.
++ */
++struct _Sr__CheckExecPermResp
++{
++ ProtobufCMessage base;
++ protobuf_c_boolean permitted;
++};
++#define SR__CHECK_EXEC_PERM_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__check_exec_perm_resp__descriptor) \
++ , 0 }
++
++
++/*
++ **
++ * @brief Sends a RPC / action request into the datastore, will be delivered to the RPC subscriber.
++ * Sent by sr_rpc_send / sr_rpc_send_tree and sr_action_send / sr_action_send_tree API calls.
++ */
++struct _Sr__RPCReq
++{
++ ProtobufCMessage base;
++ protobuf_c_boolean action;
++ char *xpath;
++ /*
++ **< which API variant was used to send RPC req.
++ */
++ Sr__ApiVariant orig_api_variant;
++ size_t n_input;
++ Sr__Value **input;
++ size_t n_input_tree;
++ Sr__Node **input_tree;
++ char *subscriber_address;
++ protobuf_c_boolean has_subscription_id;
++ uint32_t subscription_id;
++};
++#define SR__RPCREQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__rpcreq__descriptor) \
++ , 0, NULL, 0, 0,NULL, 0,NULL, NULL, 0,0 }
++
++
++/*
++ **
++ * @brief Response to sr_rpc_send / sr_rpc_send_tree or sr_action_send / sr_action_send_tree request.
++ */
++struct _Sr__RPCResp
++{
++ ProtobufCMessage base;
++ protobuf_c_boolean action;
++ char *xpath;
++ /*
++ **< which API variant was used to send RPC req.
++ */
++ Sr__ApiVariant orig_api_variant;
++ size_t n_output;
++ Sr__Value **output;
++ size_t n_output_tree;
++ Sr__Node **output_tree;
++};
++#define SR__RPCRESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__rpcresp__descriptor) \
++ , 0, NULL, 0, 0,NULL, 0,NULL }
++
++
++/*
++ **
++ * @brief Sends an event notification into the datastore, will be delivered to all notification subscribers.
++ * Sent by sr_event_notif_send API call.
++ */
++struct _Sr__EventNotifReq
++{
++ ProtobufCMessage base;
++ Sr__EventNotifReq__NotifType type;
++ /*
++ **< Bitwise OR of NotifFlags.
++ */
++ uint32_t options;
++ char *xpath;
++ size_t n_values;
++ Sr__Value **values;
++ size_t n_trees;
++ Sr__Node **trees;
++ uint64_t timestamp;
++ char *subscriber_address;
++ protobuf_c_boolean has_subscription_id;
++ uint32_t subscription_id;
++ protobuf_c_boolean do_not_send_reply;
++};
++#define SR__EVENT_NOTIF_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__event_notif_req__descriptor) \
++ , 0, 0, NULL, 0,NULL, 0,NULL, 0, NULL, 0,0, 0 }
++
++
++/*
++ **
++ * @brief Response to sr_event_notif_send request.
++ */
++struct _Sr__EventNotifResp
++{
++ ProtobufCMessage base;
++};
++#define SR__EVENT_NOTIF_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__event_notif_resp__descriptor) \
++ }
++
++
++/*
++ **
++ * @brief Sends a request to replay event notifications stored in the datastore.
++ * Sent by sr_event_notif_replay API call.
++ */
++struct _Sr__EventNotifReplayReq
++{
++ ProtobufCMessage base;
++ char *xpath;
++ uint64_t start_time;
++ uint64_t stop_time;
++ char *subscriber_address;
++ uint32_t subscription_id;
++ Sr__ApiVariant api_variant;
++};
++#define SR__EVENT_NOTIF_REPLAY_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__event_notif_replay_req__descriptor) \
++ , NULL, 0, 0, NULL, 0, 0 }
++
++
++/*
++ **
++ * @brief Response to sr_event_notif_replay request.
++ */
++struct _Sr__EventNotifReplayResp
++{
++ ProtobufCMessage base;
++};
++#define SR__EVENT_NOTIF_REPLAY_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__event_notif_replay_resp__descriptor) \
++ }
++
++
++/*
++ **
++ * @brief Requests operational data under given path form an operational data
++ * provider.
++ */
++struct _Sr__DataProvideReq
++{
++ ProtobufCMessage base;
++ char *xpath;
++ char *subscriber_address;
++ uint32_t subscription_id;
++ uint64_t request_id;
++};
++#define SR__DATA_PROVIDE_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__data_provide_req__descriptor) \
++ , NULL, NULL, 0, 0 }
++
++
++/*
++ **
++ * @brief Response to a request of operational data under given path form an
++ * operational data provider.
++ */
++struct _Sr__DataProvideResp
++{
++ ProtobufCMessage base;
++ char *xpath;
++ size_t n_values;
++ Sr__Value **values;
++ uint64_t request_id;
++};
++#define SR__DATA_PROVIDE_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__data_provide_resp__descriptor) \
++ , NULL, 0,NULL, 0 }
++
++
++/*
++ **
++ * @brief Requests installation / uinstallation of specified YANG model.
++ * Sent by sr_module_install internal API calls.
++ */
++struct _Sr__ModuleInstallReq
++{
++ ProtobufCMessage base;
++ char *module_name;
++ char *revision;
++ char *file_name;
++ protobuf_c_boolean installed;
++};
++#define SR__MODULE_INSTALL_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__module_install_req__descriptor) \
++ , NULL, NULL, NULL, 0 }
++
++
++/*
++ **
++ * @brief Response to sr_module_install request.
++ */
++struct _Sr__ModuleInstallResp
++{
++ ProtobufCMessage base;
++};
++#define SR__MODULE_INSTALL_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__module_install_resp__descriptor) \
++ }
++
++
++/*
++ **
++ * @brief Requests enabling / disabling of specified YANG feature within the
++ * YANG model. Sent by sr_feature_enable internal API calls.
++ */
++struct _Sr__FeatureEnableReq
++{
++ ProtobufCMessage base;
++ char *module_name;
++ char *feature_name;
++ protobuf_c_boolean enabled;
++};
++#define SR__FEATURE_ENABLE_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__feature_enable_req__descriptor) \
++ , NULL, NULL, 0 }
++
++
++/*
++ **
++ * @brief Response to sr_feature_enable request.
++ */
++struct _Sr__FeatureEnableResp
++{
++ ProtobufCMessage base;
++};
++#define SR__FEATURE_ENABLE_RESP__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__feature_enable_resp__descriptor) \
++ }
++
++
++/*
++ **
++ * @brief Internal request to unsubscribe all subscriptions of a subscriber on given destination address.
++ */
++struct _Sr__UnsubscribeDestinationReq
++{
++ ProtobufCMessage base;
++ char *destination;
++};
++#define SR__UNSUBSCRIBE_DESTINATION_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__unsubscribe_destination_req__descriptor) \
++ , NULL }
++
++
++/*
++ **
++ * @brief Internal request to timeout a commit, if it hasn't been terminated yet.
++ */
++struct _Sr__CommitTimeoutReq
++{
++ ProtobufCMessage base;
++ uint32_t commit_id;
++ protobuf_c_boolean expired;
++};
++#define SR__COMMIT_TIMEOUT_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__commit_timeout_req__descriptor) \
++ , 0, 0 }
++
++
++/*
++ **
++ * @brief Internal request to timeout a request for operational data, if it hasn't been terminated yet.
++ */
++struct _Sr__OperDataTimeoutReq
++{
++ ProtobufCMessage base;
++ uint64_t request_id;
++};
++#define SR__OPER_DATA_TIMEOUT_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__oper_data_timeout_req__descriptor) \
++ , 0 }
++
++
++/*
++ **
++ * @brief Internal request for internal state data (state data provided by Sysrepo Engine itself).
++ */
++struct _Sr__InternalStateDataReq
++{
++ ProtobufCMessage base;
++ uint64_t request_id;
++ char *xpath;
++};
++#define SR__INTERNAL_STATE_DATA_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__internal_state_data_req__descriptor) \
++ , 0, NULL }
++
++
++/*
++ **
++ * @brief Internal request to cleanup aged notifications in the Notification Store.
++ */
++struct _Sr__NotifStoreCleanupReq
++{
++ ProtobufCMessage base;
++};
++#define SR__NOTIF_STORE_CLEANUP_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__notif_store_cleanup_req__descriptor) \
++ }
++
++
++/*
++ **
++ * @brief Message to be delivered to the client after some timeout.
++ */
++struct _Sr__DelayedMsgReq
++{
++ ProtobufCMessage base;
++ Sr__Msg *message;
++};
++#define SR__DELAYED_MSG_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__delayed_msg_req__descriptor) \
++ , NULL }
++
++
++/*
++ **
++ * @brief Internal request to reload NACM configuration from the running datastore.
++ */
++struct _Sr__NacmReloadReq
++{
++ ProtobufCMessage base;
++};
++#define SR__NACM_RELOAD_REQ__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__nacm_reload_req__descriptor) \
++ }
++
++
++/*
++ **
++ * @brief Request for an operation.
++ */
++struct _Sr__Request
++{
++ ProtobufCMessage base;
++ /*
++ * Request ID used internally by sysrepo
++ */
++ uint64_t _id;
++ Sr__Operation operation;
++ Sr__SessionStartReq *session_start_req;
++ Sr__SessionStopReq *session_stop_req;
++ Sr__SessionRefreshReq *session_refresh_req;
++ Sr__SessionCheckReq *session_check_req;
++ Sr__SessionSwitchDsReq *session_switch_ds_req;
++ Sr__SessionSetOptsReq *session_set_opts_req;
++ Sr__VersionVerifyReq *version_verify_req;
++ Sr__ListSchemasReq *list_schemas_req;
++ Sr__GetSchemaReq *get_schema_req;
++ Sr__ModuleInstallReq *module_install_req;
++ Sr__FeatureEnableReq *feature_enable_req;
++ Sr__GetItemReq *get_item_req;
++ Sr__GetItemsReq *get_items_req;
++ Sr__GetSubtreeReq *get_subtree_req;
++ Sr__GetSubtreesReq *get_subtrees_req;
++ Sr__GetSubtreeChunkReq *get_subtree_chunk_req;
++ Sr__SetItemReq *set_item_req;
++ Sr__DeleteItemReq *delete_item_req;
++ Sr__MoveItemReq *move_item_req;
++ Sr__SetItemStrReq *set_item_str_req;
++ Sr__ValidateReq *validate_req;
++ Sr__CommitReq *commit_req;
++ Sr__DiscardChangesReq *discard_changes_req;
++ Sr__CopyConfigReq *copy_config_req;
++ Sr__LockReq *lock_req;
++ Sr__UnlockReq *unlock_req;
++ Sr__SubscribeReq *subscribe_req;
++ Sr__UnsubscribeReq *unsubscribe_req;
++ Sr__CheckEnabledRunningReq *check_enabled_running_req;
++ Sr__GetChangesReq *get_changes_req;
++ Sr__DataProvideReq *data_provide_req;
++ Sr__CheckExecPermReq *check_exec_perm_req;
++ Sr__RPCReq *rpc_req;
++ Sr__EventNotifReq *event_notif_req;
++ Sr__EventNotifReplayReq *event_notif_replay_req;
++};
++#define SR__REQUEST__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__request__descriptor) \
++ , 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }
++
++
++/*
++ **
++ * @brief Response to the received request.
++ */
++struct _Sr__Response
++{
++ ProtobufCMessage base;
++ Sr__Operation operation;
++ /*
++ **< Result of the operation. 0 on success, non-zero values map to sr_error_t enum in sysrepo.h.
++ */
++ uint32_t result;
++ /*
++ **< Additional error information.
++ */
++ Sr__Error *error;
++ Sr__SessionStartResp *session_start_resp;
++ Sr__SessionStopResp *session_stop_resp;
++ Sr__SessionRefreshResp *session_refresh_resp;
++ Sr__SessionCheckResp *session_check_resp;
++ Sr__SessionSwitchDsResp *session_switch_ds_resp;
++ Sr__SessionSetOptsResp *session_set_opts_resp;
++ Sr__VersionVerifyResp *version_verify_resp;
++ Sr__ListSchemasResp *list_schemas_resp;
++ Sr__GetSchemaResp *get_schema_resp;
++ Sr__ModuleInstallResp *module_install_resp;
++ Sr__FeatureEnableResp *feature_enable_resp;
++ Sr__GetItemResp *get_item_resp;
++ Sr__GetItemsResp *get_items_resp;
++ Sr__GetSubtreeResp *get_subtree_resp;
++ Sr__GetSubtreesResp *get_subtrees_resp;
++ Sr__GetSubtreeChunkResp *get_subtree_chunk_resp;
++ Sr__SetItemResp *set_item_resp;
++ Sr__DeleteItemResp *delete_item_resp;
++ Sr__MoveItemResp *move_item_resp;
++ Sr__SetItemStrResp *set_item_str_resp;
++ Sr__ValidateResp *validate_resp;
++ Sr__CommitResp *commit_resp;
++ Sr__DiscardChangesResp *discard_changes_resp;
++ Sr__CopyConfigResp *copy_config_resp;
++ Sr__LockResp *lock_resp;
++ Sr__UnlockResp *unlock_resp;
++ Sr__SubscribeResp *subscribe_resp;
++ Sr__UnsubscribeResp *unsubscribe_resp;
++ Sr__CheckEnabledRunningResp *check_enabled_running_resp;
++ Sr__GetChangesResp *get_changes_resp;
++ Sr__DataProvideResp *data_provide_resp;
++ Sr__CheckExecPermResp *check_exec_perm_resp;
++ Sr__RPCResp *rpc_resp;
++ Sr__EventNotifResp *event_notif_resp;
++ Sr__EventNotifReplayResp *event_notif_replay_resp;
++};
++#define SR__RESPONSE__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__response__descriptor) \
++ , 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }
++
++
++/*
++ **
++ * @brief Notification about an event that occurred in the datastore.
++ */
++struct _Sr__Notification
++{
++ ProtobufCMessage base;
++ Sr__SubscriptionType type;
++ char *destination_address;
++ char *source_address;
++ uint32_t source_pid;
++ uint32_t subscription_id;
++ protobuf_c_boolean has_commit_id;
++ uint32_t commit_id;
++ Sr__ModuleInstallNotification *module_install_notif;
++ Sr__FeatureEnableNotification *feature_enable_notif;
++ Sr__ModuleChangeNotification *module_change_notif;
++ Sr__SubtreeChangeNotification *subtree_change_notif;
++};
++#define SR__NOTIFICATION__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__notification__descriptor) \
++ , 0, NULL, NULL, 0, 0, 0,0, NULL, NULL, NULL, NULL }
++
++
++/*
++ **
++ * @brief Notification Acknowledgment.
++ */
++struct _Sr__NotificationAck
++{
++ ProtobufCMessage base;
++ /*
++ **< Original notification.
++ */
++ Sr__Notification *notif;
++ /*
++ **< Result of the notification (success / error code).
++ */
++ uint32_t result;
++ /*
++ **< Additional error information.
++ */
++ Sr__Error *error;
++ /*
++ **< If the result is error and this flag is set to true abort notification
++ * will not be delivered to this subscriber
++ * (Subscriber doesn't want notification about changes that he refused).
++ */
++ protobuf_c_boolean do_not_send_abort;
++};
++#define SR__NOTIFICATION_ACK__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__notification_ack__descriptor) \
++ , NULL, 0, NULL, 0 }
++
++
++/*
++ **
++ * @brief Internal request sent by sysrepo. Should not be used from the public API.
++ */
++struct _Sr__InternalRequest
++{
++ ProtobufCMessage base;
++ Sr__Operation operation;
++ protobuf_c_boolean has_postpone_timeout;
++ uint32_t postpone_timeout;
++ Sr__UnsubscribeDestinationReq *unsubscribe_dst_req;
++ Sr__CommitTimeoutReq *commit_timeout_req;
++ Sr__OperDataTimeoutReq *oper_data_timeout_req;
++ Sr__InternalStateDataReq *internal_state_data_req;
++ Sr__NotifStoreCleanupReq *notif_store_cleanup_req;
++ Sr__DelayedMsgReq *delayed_msg_req;
++ Sr__NacmReloadReq *nacm_reload_req;
++};
++#define SR__INTERNAL_REQUEST__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__internal_request__descriptor) \
++ , 0, 0,0, NULL, NULL, NULL, NULL, NULL, NULL, NULL }
++
++
++/*
++ **
++ * @brief Umbrella sysrepo message used for communication between sysrepo
++ * engine and client library.
++ */
++struct _Sr__Msg
++{
++ ProtobufCMessage base;
++ /*
++ **< Indicates type of the message.
++ */
++ Sr__Msg__MsgType type;
++ /*
++ **< Session identifier. Can be 0 (value is ignored) for session_start and version_verify requests.
++ */
++ uint32_t session_id;
++ /*
++ **< Filled in in case of type == REQUEST.
++ */
++ Sr__Request *request;
++ /*
++ **< Filled in in case of type == RESPONSE.
++ */
++ Sr__Response *response;
++ /*
++ **< Filled in in case of type == NOTIFICATION.
++ */
++ Sr__Notification *notification;
++ /*
++ **< Filled in in case of type == NOTIFICATION_ACK
++ */
++ Sr__NotificationAck *notification_ack;
++ /*
++ **< Filled in in case of type == INTERNAL.
++ */
++ Sr__InternalRequest *internal_request;
++ /*
++ **< Not part of the protocol. Used internally by Sysrepo to store a pointer to memory context.
++ */
++ uint64_t _sysrepo_mem_ctx;
++};
++#define SR__MSG__INIT \
++ { PROTOBUF_C_MESSAGE_INIT (&sr__msg__descriptor) \
++ , 0, 0, NULL, NULL, NULL, NULL, NULL, 0 }
++
++
++/* Sr__Value methods */
++void sr__value__init
++ (Sr__Value *message);
++size_t sr__value__get_packed_size
++ (const Sr__Value *message);
++size_t sr__value__pack
++ (const Sr__Value *message,
++ uint8_t *out);
++size_t sr__value__pack_to_buffer
++ (const Sr__Value *message,
++ ProtobufCBuffer *buffer);
++Sr__Value *
++ sr__value__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__value__free_unpacked
++ (Sr__Value *message,
++ ProtobufCAllocator *allocator);
++/* Sr__Node methods */
++void sr__node__init
++ (Sr__Node *message);
++size_t sr__node__get_packed_size
++ (const Sr__Node *message);
++size_t sr__node__pack
++ (const Sr__Node *message,
++ uint8_t *out);
++size_t sr__node__pack_to_buffer
++ (const Sr__Node *message,
++ ProtobufCBuffer *buffer);
++Sr__Node *
++ sr__node__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__node__free_unpacked
++ (Sr__Node *message,
++ ProtobufCAllocator *allocator);
++/* Sr__Error methods */
++void sr__error__init
++ (Sr__Error *message);
++size_t sr__error__get_packed_size
++ (const Sr__Error *message);
++size_t sr__error__pack
++ (const Sr__Error *message,
++ uint8_t *out);
++size_t sr__error__pack_to_buffer
++ (const Sr__Error *message,
++ ProtobufCBuffer *buffer);
++Sr__Error *
++ sr__error__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__error__free_unpacked
++ (Sr__Error *message,
++ ProtobufCAllocator *allocator);
++/* Sr__SessionStartReq methods */
++void sr__session_start_req__init
++ (Sr__SessionStartReq *message);
++size_t sr__session_start_req__get_packed_size
++ (const Sr__SessionStartReq *message);
++size_t sr__session_start_req__pack
++ (const Sr__SessionStartReq *message,
++ uint8_t *out);
++size_t sr__session_start_req__pack_to_buffer
++ (const Sr__SessionStartReq *message,
++ ProtobufCBuffer *buffer);
++Sr__SessionStartReq *
++ sr__session_start_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__session_start_req__free_unpacked
++ (Sr__SessionStartReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__SessionStartResp methods */
++void sr__session_start_resp__init
++ (Sr__SessionStartResp *message);
++size_t sr__session_start_resp__get_packed_size
++ (const Sr__SessionStartResp *message);
++size_t sr__session_start_resp__pack
++ (const Sr__SessionStartResp *message,
++ uint8_t *out);
++size_t sr__session_start_resp__pack_to_buffer
++ (const Sr__SessionStartResp *message,
++ ProtobufCBuffer *buffer);
++Sr__SessionStartResp *
++ sr__session_start_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__session_start_resp__free_unpacked
++ (Sr__SessionStartResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__SessionStopReq methods */
++void sr__session_stop_req__init
++ (Sr__SessionStopReq *message);
++size_t sr__session_stop_req__get_packed_size
++ (const Sr__SessionStopReq *message);
++size_t sr__session_stop_req__pack
++ (const Sr__SessionStopReq *message,
++ uint8_t *out);
++size_t sr__session_stop_req__pack_to_buffer
++ (const Sr__SessionStopReq *message,
++ ProtobufCBuffer *buffer);
++Sr__SessionStopReq *
++ sr__session_stop_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__session_stop_req__free_unpacked
++ (Sr__SessionStopReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__SessionStopResp methods */
++void sr__session_stop_resp__init
++ (Sr__SessionStopResp *message);
++size_t sr__session_stop_resp__get_packed_size
++ (const Sr__SessionStopResp *message);
++size_t sr__session_stop_resp__pack
++ (const Sr__SessionStopResp *message,
++ uint8_t *out);
++size_t sr__session_stop_resp__pack_to_buffer
++ (const Sr__SessionStopResp *message,
++ ProtobufCBuffer *buffer);
++Sr__SessionStopResp *
++ sr__session_stop_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__session_stop_resp__free_unpacked
++ (Sr__SessionStopResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__SessionRefreshReq methods */
++void sr__session_refresh_req__init
++ (Sr__SessionRefreshReq *message);
++size_t sr__session_refresh_req__get_packed_size
++ (const Sr__SessionRefreshReq *message);
++size_t sr__session_refresh_req__pack
++ (const Sr__SessionRefreshReq *message,
++ uint8_t *out);
++size_t sr__session_refresh_req__pack_to_buffer
++ (const Sr__SessionRefreshReq *message,
++ ProtobufCBuffer *buffer);
++Sr__SessionRefreshReq *
++ sr__session_refresh_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__session_refresh_req__free_unpacked
++ (Sr__SessionRefreshReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__SessionRefreshResp methods */
++void sr__session_refresh_resp__init
++ (Sr__SessionRefreshResp *message);
++size_t sr__session_refresh_resp__get_packed_size
++ (const Sr__SessionRefreshResp *message);
++size_t sr__session_refresh_resp__pack
++ (const Sr__SessionRefreshResp *message,
++ uint8_t *out);
++size_t sr__session_refresh_resp__pack_to_buffer
++ (const Sr__SessionRefreshResp *message,
++ ProtobufCBuffer *buffer);
++Sr__SessionRefreshResp *
++ sr__session_refresh_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__session_refresh_resp__free_unpacked
++ (Sr__SessionRefreshResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__SessionCheckReq methods */
++void sr__session_check_req__init
++ (Sr__SessionCheckReq *message);
++size_t sr__session_check_req__get_packed_size
++ (const Sr__SessionCheckReq *message);
++size_t sr__session_check_req__pack
++ (const Sr__SessionCheckReq *message,
++ uint8_t *out);
++size_t sr__session_check_req__pack_to_buffer
++ (const Sr__SessionCheckReq *message,
++ ProtobufCBuffer *buffer);
++Sr__SessionCheckReq *
++ sr__session_check_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__session_check_req__free_unpacked
++ (Sr__SessionCheckReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__SessionCheckResp methods */
++void sr__session_check_resp__init
++ (Sr__SessionCheckResp *message);
++size_t sr__session_check_resp__get_packed_size
++ (const Sr__SessionCheckResp *message);
++size_t sr__session_check_resp__pack
++ (const Sr__SessionCheckResp *message,
++ uint8_t *out);
++size_t sr__session_check_resp__pack_to_buffer
++ (const Sr__SessionCheckResp *message,
++ ProtobufCBuffer *buffer);
++Sr__SessionCheckResp *
++ sr__session_check_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__session_check_resp__free_unpacked
++ (Sr__SessionCheckResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__SessionSwitchDsReq methods */
++void sr__session_switch_ds_req__init
++ (Sr__SessionSwitchDsReq *message);
++size_t sr__session_switch_ds_req__get_packed_size
++ (const Sr__SessionSwitchDsReq *message);
++size_t sr__session_switch_ds_req__pack
++ (const Sr__SessionSwitchDsReq *message,
++ uint8_t *out);
++size_t sr__session_switch_ds_req__pack_to_buffer
++ (const Sr__SessionSwitchDsReq *message,
++ ProtobufCBuffer *buffer);
++Sr__SessionSwitchDsReq *
++ sr__session_switch_ds_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__session_switch_ds_req__free_unpacked
++ (Sr__SessionSwitchDsReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__SessionSwitchDsResp methods */
++void sr__session_switch_ds_resp__init
++ (Sr__SessionSwitchDsResp *message);
++size_t sr__session_switch_ds_resp__get_packed_size
++ (const Sr__SessionSwitchDsResp *message);
++size_t sr__session_switch_ds_resp__pack
++ (const Sr__SessionSwitchDsResp *message,
++ uint8_t *out);
++size_t sr__session_switch_ds_resp__pack_to_buffer
++ (const Sr__SessionSwitchDsResp *message,
++ ProtobufCBuffer *buffer);
++Sr__SessionSwitchDsResp *
++ sr__session_switch_ds_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__session_switch_ds_resp__free_unpacked
++ (Sr__SessionSwitchDsResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__SessionSetOptsReq methods */
++void sr__session_set_opts_req__init
++ (Sr__SessionSetOptsReq *message);
++size_t sr__session_set_opts_req__get_packed_size
++ (const Sr__SessionSetOptsReq *message);
++size_t sr__session_set_opts_req__pack
++ (const Sr__SessionSetOptsReq *message,
++ uint8_t *out);
++size_t sr__session_set_opts_req__pack_to_buffer
++ (const Sr__SessionSetOptsReq *message,
++ ProtobufCBuffer *buffer);
++Sr__SessionSetOptsReq *
++ sr__session_set_opts_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__session_set_opts_req__free_unpacked
++ (Sr__SessionSetOptsReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__SessionSetOptsResp methods */
++void sr__session_set_opts_resp__init
++ (Sr__SessionSetOptsResp *message);
++size_t sr__session_set_opts_resp__get_packed_size
++ (const Sr__SessionSetOptsResp *message);
++size_t sr__session_set_opts_resp__pack
++ (const Sr__SessionSetOptsResp *message,
++ uint8_t *out);
++size_t sr__session_set_opts_resp__pack_to_buffer
++ (const Sr__SessionSetOptsResp *message,
++ ProtobufCBuffer *buffer);
++Sr__SessionSetOptsResp *
++ sr__session_set_opts_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__session_set_opts_resp__free_unpacked
++ (Sr__SessionSetOptsResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__VersionVerifyReq methods */
++void sr__version_verify_req__init
++ (Sr__VersionVerifyReq *message);
++size_t sr__version_verify_req__get_packed_size
++ (const Sr__VersionVerifyReq *message);
++size_t sr__version_verify_req__pack
++ (const Sr__VersionVerifyReq *message,
++ uint8_t *out);
++size_t sr__version_verify_req__pack_to_buffer
++ (const Sr__VersionVerifyReq *message,
++ ProtobufCBuffer *buffer);
++Sr__VersionVerifyReq *
++ sr__version_verify_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__version_verify_req__free_unpacked
++ (Sr__VersionVerifyReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__VersionVerifyResp methods */
++void sr__version_verify_resp__init
++ (Sr__VersionVerifyResp *message);
++size_t sr__version_verify_resp__get_packed_size
++ (const Sr__VersionVerifyResp *message);
++size_t sr__version_verify_resp__pack
++ (const Sr__VersionVerifyResp *message,
++ uint8_t *out);
++size_t sr__version_verify_resp__pack_to_buffer
++ (const Sr__VersionVerifyResp *message,
++ ProtobufCBuffer *buffer);
++Sr__VersionVerifyResp *
++ sr__version_verify_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__version_verify_resp__free_unpacked
++ (Sr__VersionVerifyResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__SchemaRevision methods */
++void sr__schema_revision__init
++ (Sr__SchemaRevision *message);
++size_t sr__schema_revision__get_packed_size
++ (const Sr__SchemaRevision *message);
++size_t sr__schema_revision__pack
++ (const Sr__SchemaRevision *message,
++ uint8_t *out);
++size_t sr__schema_revision__pack_to_buffer
++ (const Sr__SchemaRevision *message,
++ ProtobufCBuffer *buffer);
++Sr__SchemaRevision *
++ sr__schema_revision__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__schema_revision__free_unpacked
++ (Sr__SchemaRevision *message,
++ ProtobufCAllocator *allocator);
++/* Sr__SchemaSubmodule methods */
++void sr__schema_submodule__init
++ (Sr__SchemaSubmodule *message);
++size_t sr__schema_submodule__get_packed_size
++ (const Sr__SchemaSubmodule *message);
++size_t sr__schema_submodule__pack
++ (const Sr__SchemaSubmodule *message,
++ uint8_t *out);
++size_t sr__schema_submodule__pack_to_buffer
++ (const Sr__SchemaSubmodule *message,
++ ProtobufCBuffer *buffer);
++Sr__SchemaSubmodule *
++ sr__schema_submodule__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__schema_submodule__free_unpacked
++ (Sr__SchemaSubmodule *message,
++ ProtobufCAllocator *allocator);
++/* Sr__Schema methods */
++void sr__schema__init
++ (Sr__Schema *message);
++size_t sr__schema__get_packed_size
++ (const Sr__Schema *message);
++size_t sr__schema__pack
++ (const Sr__Schema *message,
++ uint8_t *out);
++size_t sr__schema__pack_to_buffer
++ (const Sr__Schema *message,
++ ProtobufCBuffer *buffer);
++Sr__Schema *
++ sr__schema__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__schema__free_unpacked
++ (Sr__Schema *message,
++ ProtobufCAllocator *allocator);
++/* Sr__ListSchemasReq methods */
++void sr__list_schemas_req__init
++ (Sr__ListSchemasReq *message);
++size_t sr__list_schemas_req__get_packed_size
++ (const Sr__ListSchemasReq *message);
++size_t sr__list_schemas_req__pack
++ (const Sr__ListSchemasReq *message,
++ uint8_t *out);
++size_t sr__list_schemas_req__pack_to_buffer
++ (const Sr__ListSchemasReq *message,
++ ProtobufCBuffer *buffer);
++Sr__ListSchemasReq *
++ sr__list_schemas_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__list_schemas_req__free_unpacked
++ (Sr__ListSchemasReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__ListSchemasResp methods */
++void sr__list_schemas_resp__init
++ (Sr__ListSchemasResp *message);
++size_t sr__list_schemas_resp__get_packed_size
++ (const Sr__ListSchemasResp *message);
++size_t sr__list_schemas_resp__pack
++ (const Sr__ListSchemasResp *message,
++ uint8_t *out);
++size_t sr__list_schemas_resp__pack_to_buffer
++ (const Sr__ListSchemasResp *message,
++ ProtobufCBuffer *buffer);
++Sr__ListSchemasResp *
++ sr__list_schemas_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__list_schemas_resp__free_unpacked
++ (Sr__ListSchemasResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__GetSchemaReq methods */
++void sr__get_schema_req__init
++ (Sr__GetSchemaReq *message);
++size_t sr__get_schema_req__get_packed_size
++ (const Sr__GetSchemaReq *message);
++size_t sr__get_schema_req__pack
++ (const Sr__GetSchemaReq *message,
++ uint8_t *out);
++size_t sr__get_schema_req__pack_to_buffer
++ (const Sr__GetSchemaReq *message,
++ ProtobufCBuffer *buffer);
++Sr__GetSchemaReq *
++ sr__get_schema_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__get_schema_req__free_unpacked
++ (Sr__GetSchemaReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__GetSchemaResp methods */
++void sr__get_schema_resp__init
++ (Sr__GetSchemaResp *message);
++size_t sr__get_schema_resp__get_packed_size
++ (const Sr__GetSchemaResp *message);
++size_t sr__get_schema_resp__pack
++ (const Sr__GetSchemaResp *message,
++ uint8_t *out);
++size_t sr__get_schema_resp__pack_to_buffer
++ (const Sr__GetSchemaResp *message,
++ ProtobufCBuffer *buffer);
++Sr__GetSchemaResp *
++ sr__get_schema_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__get_schema_resp__free_unpacked
++ (Sr__GetSchemaResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__GetItemReq methods */
++void sr__get_item_req__init
++ (Sr__GetItemReq *message);
++size_t sr__get_item_req__get_packed_size
++ (const Sr__GetItemReq *message);
++size_t sr__get_item_req__pack
++ (const Sr__GetItemReq *message,
++ uint8_t *out);
++size_t sr__get_item_req__pack_to_buffer
++ (const Sr__GetItemReq *message,
++ ProtobufCBuffer *buffer);
++Sr__GetItemReq *
++ sr__get_item_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__get_item_req__free_unpacked
++ (Sr__GetItemReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__GetItemResp methods */
++void sr__get_item_resp__init
++ (Sr__GetItemResp *message);
++size_t sr__get_item_resp__get_packed_size
++ (const Sr__GetItemResp *message);
++size_t sr__get_item_resp__pack
++ (const Sr__GetItemResp *message,
++ uint8_t *out);
++size_t sr__get_item_resp__pack_to_buffer
++ (const Sr__GetItemResp *message,
++ ProtobufCBuffer *buffer);
++Sr__GetItemResp *
++ sr__get_item_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__get_item_resp__free_unpacked
++ (Sr__GetItemResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__GetItemsReq methods */
++void sr__get_items_req__init
++ (Sr__GetItemsReq *message);
++size_t sr__get_items_req__get_packed_size
++ (const Sr__GetItemsReq *message);
++size_t sr__get_items_req__pack
++ (const Sr__GetItemsReq *message,
++ uint8_t *out);
++size_t sr__get_items_req__pack_to_buffer
++ (const Sr__GetItemsReq *message,
++ ProtobufCBuffer *buffer);
++Sr__GetItemsReq *
++ sr__get_items_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__get_items_req__free_unpacked
++ (Sr__GetItemsReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__GetItemsResp methods */
++void sr__get_items_resp__init
++ (Sr__GetItemsResp *message);
++size_t sr__get_items_resp__get_packed_size
++ (const Sr__GetItemsResp *message);
++size_t sr__get_items_resp__pack
++ (const Sr__GetItemsResp *message,
++ uint8_t *out);
++size_t sr__get_items_resp__pack_to_buffer
++ (const Sr__GetItemsResp *message,
++ ProtobufCBuffer *buffer);
++Sr__GetItemsResp *
++ sr__get_items_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__get_items_resp__free_unpacked
++ (Sr__GetItemsResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__GetSubtreeReq methods */
++void sr__get_subtree_req__init
++ (Sr__GetSubtreeReq *message);
++size_t sr__get_subtree_req__get_packed_size
++ (const Sr__GetSubtreeReq *message);
++size_t sr__get_subtree_req__pack
++ (const Sr__GetSubtreeReq *message,
++ uint8_t *out);
++size_t sr__get_subtree_req__pack_to_buffer
++ (const Sr__GetSubtreeReq *message,
++ ProtobufCBuffer *buffer);
++Sr__GetSubtreeReq *
++ sr__get_subtree_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__get_subtree_req__free_unpacked
++ (Sr__GetSubtreeReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__GetSubtreeResp methods */
++void sr__get_subtree_resp__init
++ (Sr__GetSubtreeResp *message);
++size_t sr__get_subtree_resp__get_packed_size
++ (const Sr__GetSubtreeResp *message);
++size_t sr__get_subtree_resp__pack
++ (const Sr__GetSubtreeResp *message,
++ uint8_t *out);
++size_t sr__get_subtree_resp__pack_to_buffer
++ (const Sr__GetSubtreeResp *message,
++ ProtobufCBuffer *buffer);
++Sr__GetSubtreeResp *
++ sr__get_subtree_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__get_subtree_resp__free_unpacked
++ (Sr__GetSubtreeResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__GetSubtreesReq methods */
++void sr__get_subtrees_req__init
++ (Sr__GetSubtreesReq *message);
++size_t sr__get_subtrees_req__get_packed_size
++ (const Sr__GetSubtreesReq *message);
++size_t sr__get_subtrees_req__pack
++ (const Sr__GetSubtreesReq *message,
++ uint8_t *out);
++size_t sr__get_subtrees_req__pack_to_buffer
++ (const Sr__GetSubtreesReq *message,
++ ProtobufCBuffer *buffer);
++Sr__GetSubtreesReq *
++ sr__get_subtrees_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__get_subtrees_req__free_unpacked
++ (Sr__GetSubtreesReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__GetSubtreesResp methods */
++void sr__get_subtrees_resp__init
++ (Sr__GetSubtreesResp *message);
++size_t sr__get_subtrees_resp__get_packed_size
++ (const Sr__GetSubtreesResp *message);
++size_t sr__get_subtrees_resp__pack
++ (const Sr__GetSubtreesResp *message,
++ uint8_t *out);
++size_t sr__get_subtrees_resp__pack_to_buffer
++ (const Sr__GetSubtreesResp *message,
++ ProtobufCBuffer *buffer);
++Sr__GetSubtreesResp *
++ sr__get_subtrees_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__get_subtrees_resp__free_unpacked
++ (Sr__GetSubtreesResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__GetSubtreeChunkReq methods */
++void sr__get_subtree_chunk_req__init
++ (Sr__GetSubtreeChunkReq *message);
++size_t sr__get_subtree_chunk_req__get_packed_size
++ (const Sr__GetSubtreeChunkReq *message);
++size_t sr__get_subtree_chunk_req__pack
++ (const Sr__GetSubtreeChunkReq *message,
++ uint8_t *out);
++size_t sr__get_subtree_chunk_req__pack_to_buffer
++ (const Sr__GetSubtreeChunkReq *message,
++ ProtobufCBuffer *buffer);
++Sr__GetSubtreeChunkReq *
++ sr__get_subtree_chunk_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__get_subtree_chunk_req__free_unpacked
++ (Sr__GetSubtreeChunkReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__GetSubtreeChunkResp methods */
++void sr__get_subtree_chunk_resp__init
++ (Sr__GetSubtreeChunkResp *message);
++size_t sr__get_subtree_chunk_resp__get_packed_size
++ (const Sr__GetSubtreeChunkResp *message);
++size_t sr__get_subtree_chunk_resp__pack
++ (const Sr__GetSubtreeChunkResp *message,
++ uint8_t *out);
++size_t sr__get_subtree_chunk_resp__pack_to_buffer
++ (const Sr__GetSubtreeChunkResp *message,
++ ProtobufCBuffer *buffer);
++Sr__GetSubtreeChunkResp *
++ sr__get_subtree_chunk_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__get_subtree_chunk_resp__free_unpacked
++ (Sr__GetSubtreeChunkResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__SetItemReq methods */
++void sr__set_item_req__init
++ (Sr__SetItemReq *message);
++size_t sr__set_item_req__get_packed_size
++ (const Sr__SetItemReq *message);
++size_t sr__set_item_req__pack
++ (const Sr__SetItemReq *message,
++ uint8_t *out);
++size_t sr__set_item_req__pack_to_buffer
++ (const Sr__SetItemReq *message,
++ ProtobufCBuffer *buffer);
++Sr__SetItemReq *
++ sr__set_item_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__set_item_req__free_unpacked
++ (Sr__SetItemReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__SetItemResp methods */
++void sr__set_item_resp__init
++ (Sr__SetItemResp *message);
++size_t sr__set_item_resp__get_packed_size
++ (const Sr__SetItemResp *message);
++size_t sr__set_item_resp__pack
++ (const Sr__SetItemResp *message,
++ uint8_t *out);
++size_t sr__set_item_resp__pack_to_buffer
++ (const Sr__SetItemResp *message,
++ ProtobufCBuffer *buffer);
++Sr__SetItemResp *
++ sr__set_item_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__set_item_resp__free_unpacked
++ (Sr__SetItemResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__SetItemStrReq methods */
++void sr__set_item_str_req__init
++ (Sr__SetItemStrReq *message);
++size_t sr__set_item_str_req__get_packed_size
++ (const Sr__SetItemStrReq *message);
++size_t sr__set_item_str_req__pack
++ (const Sr__SetItemStrReq *message,
++ uint8_t *out);
++size_t sr__set_item_str_req__pack_to_buffer
++ (const Sr__SetItemStrReq *message,
++ ProtobufCBuffer *buffer);
++Sr__SetItemStrReq *
++ sr__set_item_str_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__set_item_str_req__free_unpacked
++ (Sr__SetItemStrReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__SetItemStrResp methods */
++void sr__set_item_str_resp__init
++ (Sr__SetItemStrResp *message);
++size_t sr__set_item_str_resp__get_packed_size
++ (const Sr__SetItemStrResp *message);
++size_t sr__set_item_str_resp__pack
++ (const Sr__SetItemStrResp *message,
++ uint8_t *out);
++size_t sr__set_item_str_resp__pack_to_buffer
++ (const Sr__SetItemStrResp *message,
++ ProtobufCBuffer *buffer);
++Sr__SetItemStrResp *
++ sr__set_item_str_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__set_item_str_resp__free_unpacked
++ (Sr__SetItemStrResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__DeleteItemReq methods */
++void sr__delete_item_req__init
++ (Sr__DeleteItemReq *message);
++size_t sr__delete_item_req__get_packed_size
++ (const Sr__DeleteItemReq *message);
++size_t sr__delete_item_req__pack
++ (const Sr__DeleteItemReq *message,
++ uint8_t *out);
++size_t sr__delete_item_req__pack_to_buffer
++ (const Sr__DeleteItemReq *message,
++ ProtobufCBuffer *buffer);
++Sr__DeleteItemReq *
++ sr__delete_item_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__delete_item_req__free_unpacked
++ (Sr__DeleteItemReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__DeleteItemResp methods */
++void sr__delete_item_resp__init
++ (Sr__DeleteItemResp *message);
++size_t sr__delete_item_resp__get_packed_size
++ (const Sr__DeleteItemResp *message);
++size_t sr__delete_item_resp__pack
++ (const Sr__DeleteItemResp *message,
++ uint8_t *out);
++size_t sr__delete_item_resp__pack_to_buffer
++ (const Sr__DeleteItemResp *message,
++ ProtobufCBuffer *buffer);
++Sr__DeleteItemResp *
++ sr__delete_item_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__delete_item_resp__free_unpacked
++ (Sr__DeleteItemResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__MoveItemReq methods */
++void sr__move_item_req__init
++ (Sr__MoveItemReq *message);
++size_t sr__move_item_req__get_packed_size
++ (const Sr__MoveItemReq *message);
++size_t sr__move_item_req__pack
++ (const Sr__MoveItemReq *message,
++ uint8_t *out);
++size_t sr__move_item_req__pack_to_buffer
++ (const Sr__MoveItemReq *message,
++ ProtobufCBuffer *buffer);
++Sr__MoveItemReq *
++ sr__move_item_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__move_item_req__free_unpacked
++ (Sr__MoveItemReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__MoveItemResp methods */
++void sr__move_item_resp__init
++ (Sr__MoveItemResp *message);
++size_t sr__move_item_resp__get_packed_size
++ (const Sr__MoveItemResp *message);
++size_t sr__move_item_resp__pack
++ (const Sr__MoveItemResp *message,
++ uint8_t *out);
++size_t sr__move_item_resp__pack_to_buffer
++ (const Sr__MoveItemResp *message,
++ ProtobufCBuffer *buffer);
++Sr__MoveItemResp *
++ sr__move_item_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__move_item_resp__free_unpacked
++ (Sr__MoveItemResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__ValidateReq methods */
++void sr__validate_req__init
++ (Sr__ValidateReq *message);
++size_t sr__validate_req__get_packed_size
++ (const Sr__ValidateReq *message);
++size_t sr__validate_req__pack
++ (const Sr__ValidateReq *message,
++ uint8_t *out);
++size_t sr__validate_req__pack_to_buffer
++ (const Sr__ValidateReq *message,
++ ProtobufCBuffer *buffer);
++Sr__ValidateReq *
++ sr__validate_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__validate_req__free_unpacked
++ (Sr__ValidateReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__ValidateResp methods */
++void sr__validate_resp__init
++ (Sr__ValidateResp *message);
++size_t sr__validate_resp__get_packed_size
++ (const Sr__ValidateResp *message);
++size_t sr__validate_resp__pack
++ (const Sr__ValidateResp *message,
++ uint8_t *out);
++size_t sr__validate_resp__pack_to_buffer
++ (const Sr__ValidateResp *message,
++ ProtobufCBuffer *buffer);
++Sr__ValidateResp *
++ sr__validate_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__validate_resp__free_unpacked
++ (Sr__ValidateResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__CommitReq methods */
++void sr__commit_req__init
++ (Sr__CommitReq *message);
++size_t sr__commit_req__get_packed_size
++ (const Sr__CommitReq *message);
++size_t sr__commit_req__pack
++ (const Sr__CommitReq *message,
++ uint8_t *out);
++size_t sr__commit_req__pack_to_buffer
++ (const Sr__CommitReq *message,
++ ProtobufCBuffer *buffer);
++Sr__CommitReq *
++ sr__commit_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__commit_req__free_unpacked
++ (Sr__CommitReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__CommitResp methods */
++void sr__commit_resp__init
++ (Sr__CommitResp *message);
++size_t sr__commit_resp__get_packed_size
++ (const Sr__CommitResp *message);
++size_t sr__commit_resp__pack
++ (const Sr__CommitResp *message,
++ uint8_t *out);
++size_t sr__commit_resp__pack_to_buffer
++ (const Sr__CommitResp *message,
++ ProtobufCBuffer *buffer);
++Sr__CommitResp *
++ sr__commit_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__commit_resp__free_unpacked
++ (Sr__CommitResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__DiscardChangesReq methods */
++void sr__discard_changes_req__init
++ (Sr__DiscardChangesReq *message);
++size_t sr__discard_changes_req__get_packed_size
++ (const Sr__DiscardChangesReq *message);
++size_t sr__discard_changes_req__pack
++ (const Sr__DiscardChangesReq *message,
++ uint8_t *out);
++size_t sr__discard_changes_req__pack_to_buffer
++ (const Sr__DiscardChangesReq *message,
++ ProtobufCBuffer *buffer);
++Sr__DiscardChangesReq *
++ sr__discard_changes_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__discard_changes_req__free_unpacked
++ (Sr__DiscardChangesReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__DiscardChangesResp methods */
++void sr__discard_changes_resp__init
++ (Sr__DiscardChangesResp *message);
++size_t sr__discard_changes_resp__get_packed_size
++ (const Sr__DiscardChangesResp *message);
++size_t sr__discard_changes_resp__pack
++ (const Sr__DiscardChangesResp *message,
++ uint8_t *out);
++size_t sr__discard_changes_resp__pack_to_buffer
++ (const Sr__DiscardChangesResp *message,
++ ProtobufCBuffer *buffer);
++Sr__DiscardChangesResp *
++ sr__discard_changes_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__discard_changes_resp__free_unpacked
++ (Sr__DiscardChangesResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__CopyConfigReq methods */
++void sr__copy_config_req__init
++ (Sr__CopyConfigReq *message);
++size_t sr__copy_config_req__get_packed_size
++ (const Sr__CopyConfigReq *message);
++size_t sr__copy_config_req__pack
++ (const Sr__CopyConfigReq *message,
++ uint8_t *out);
++size_t sr__copy_config_req__pack_to_buffer
++ (const Sr__CopyConfigReq *message,
++ ProtobufCBuffer *buffer);
++Sr__CopyConfigReq *
++ sr__copy_config_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__copy_config_req__free_unpacked
++ (Sr__CopyConfigReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__CopyConfigResp methods */
++void sr__copy_config_resp__init
++ (Sr__CopyConfigResp *message);
++size_t sr__copy_config_resp__get_packed_size
++ (const Sr__CopyConfigResp *message);
++size_t sr__copy_config_resp__pack
++ (const Sr__CopyConfigResp *message,
++ uint8_t *out);
++size_t sr__copy_config_resp__pack_to_buffer
++ (const Sr__CopyConfigResp *message,
++ ProtobufCBuffer *buffer);
++Sr__CopyConfigResp *
++ sr__copy_config_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__copy_config_resp__free_unpacked
++ (Sr__CopyConfigResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__LockReq methods */
++void sr__lock_req__init
++ (Sr__LockReq *message);
++size_t sr__lock_req__get_packed_size
++ (const Sr__LockReq *message);
++size_t sr__lock_req__pack
++ (const Sr__LockReq *message,
++ uint8_t *out);
++size_t sr__lock_req__pack_to_buffer
++ (const Sr__LockReq *message,
++ ProtobufCBuffer *buffer);
++Sr__LockReq *
++ sr__lock_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__lock_req__free_unpacked
++ (Sr__LockReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__LockResp methods */
++void sr__lock_resp__init
++ (Sr__LockResp *message);
++size_t sr__lock_resp__get_packed_size
++ (const Sr__LockResp *message);
++size_t sr__lock_resp__pack
++ (const Sr__LockResp *message,
++ uint8_t *out);
++size_t sr__lock_resp__pack_to_buffer
++ (const Sr__LockResp *message,
++ ProtobufCBuffer *buffer);
++Sr__LockResp *
++ sr__lock_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__lock_resp__free_unpacked
++ (Sr__LockResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__UnlockReq methods */
++void sr__unlock_req__init
++ (Sr__UnlockReq *message);
++size_t sr__unlock_req__get_packed_size
++ (const Sr__UnlockReq *message);
++size_t sr__unlock_req__pack
++ (const Sr__UnlockReq *message,
++ uint8_t *out);
++size_t sr__unlock_req__pack_to_buffer
++ (const Sr__UnlockReq *message,
++ ProtobufCBuffer *buffer);
++Sr__UnlockReq *
++ sr__unlock_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__unlock_req__free_unpacked
++ (Sr__UnlockReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__UnlockResp methods */
++void sr__unlock_resp__init
++ (Sr__UnlockResp *message);
++size_t sr__unlock_resp__get_packed_size
++ (const Sr__UnlockResp *message);
++size_t sr__unlock_resp__pack
++ (const Sr__UnlockResp *message,
++ uint8_t *out);
++size_t sr__unlock_resp__pack_to_buffer
++ (const Sr__UnlockResp *message,
++ ProtobufCBuffer *buffer);
++Sr__UnlockResp *
++ sr__unlock_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__unlock_resp__free_unpacked
++ (Sr__UnlockResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__SubscribeReq methods */
++void sr__subscribe_req__init
++ (Sr__SubscribeReq *message);
++size_t sr__subscribe_req__get_packed_size
++ (const Sr__SubscribeReq *message);
++size_t sr__subscribe_req__pack
++ (const Sr__SubscribeReq *message,
++ uint8_t *out);
++size_t sr__subscribe_req__pack_to_buffer
++ (const Sr__SubscribeReq *message,
++ ProtobufCBuffer *buffer);
++Sr__SubscribeReq *
++ sr__subscribe_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__subscribe_req__free_unpacked
++ (Sr__SubscribeReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__SubscribeResp methods */
++void sr__subscribe_resp__init
++ (Sr__SubscribeResp *message);
++size_t sr__subscribe_resp__get_packed_size
++ (const Sr__SubscribeResp *message);
++size_t sr__subscribe_resp__pack
++ (const Sr__SubscribeResp *message,
++ uint8_t *out);
++size_t sr__subscribe_resp__pack_to_buffer
++ (const Sr__SubscribeResp *message,
++ ProtobufCBuffer *buffer);
++Sr__SubscribeResp *
++ sr__subscribe_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__subscribe_resp__free_unpacked
++ (Sr__SubscribeResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__UnsubscribeReq methods */
++void sr__unsubscribe_req__init
++ (Sr__UnsubscribeReq *message);
++size_t sr__unsubscribe_req__get_packed_size
++ (const Sr__UnsubscribeReq *message);
++size_t sr__unsubscribe_req__pack
++ (const Sr__UnsubscribeReq *message,
++ uint8_t *out);
++size_t sr__unsubscribe_req__pack_to_buffer
++ (const Sr__UnsubscribeReq *message,
++ ProtobufCBuffer *buffer);
++Sr__UnsubscribeReq *
++ sr__unsubscribe_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__unsubscribe_req__free_unpacked
++ (Sr__UnsubscribeReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__UnsubscribeResp methods */
++void sr__unsubscribe_resp__init
++ (Sr__UnsubscribeResp *message);
++size_t sr__unsubscribe_resp__get_packed_size
++ (const Sr__UnsubscribeResp *message);
++size_t sr__unsubscribe_resp__pack
++ (const Sr__UnsubscribeResp *message,
++ uint8_t *out);
++size_t sr__unsubscribe_resp__pack_to_buffer
++ (const Sr__UnsubscribeResp *message,
++ ProtobufCBuffer *buffer);
++Sr__UnsubscribeResp *
++ sr__unsubscribe_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__unsubscribe_resp__free_unpacked
++ (Sr__UnsubscribeResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__CheckEnabledRunningReq methods */
++void sr__check_enabled_running_req__init
++ (Sr__CheckEnabledRunningReq *message);
++size_t sr__check_enabled_running_req__get_packed_size
++ (const Sr__CheckEnabledRunningReq *message);
++size_t sr__check_enabled_running_req__pack
++ (const Sr__CheckEnabledRunningReq *message,
++ uint8_t *out);
++size_t sr__check_enabled_running_req__pack_to_buffer
++ (const Sr__CheckEnabledRunningReq *message,
++ ProtobufCBuffer *buffer);
++Sr__CheckEnabledRunningReq *
++ sr__check_enabled_running_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__check_enabled_running_req__free_unpacked
++ (Sr__CheckEnabledRunningReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__CheckEnabledRunningResp methods */
++void sr__check_enabled_running_resp__init
++ (Sr__CheckEnabledRunningResp *message);
++size_t sr__check_enabled_running_resp__get_packed_size
++ (const Sr__CheckEnabledRunningResp *message);
++size_t sr__check_enabled_running_resp__pack
++ (const Sr__CheckEnabledRunningResp *message,
++ uint8_t *out);
++size_t sr__check_enabled_running_resp__pack_to_buffer
++ (const Sr__CheckEnabledRunningResp *message,
++ ProtobufCBuffer *buffer);
++Sr__CheckEnabledRunningResp *
++ sr__check_enabled_running_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__check_enabled_running_resp__free_unpacked
++ (Sr__CheckEnabledRunningResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__ModuleInstallNotification methods */
++void sr__module_install_notification__init
++ (Sr__ModuleInstallNotification *message);
++size_t sr__module_install_notification__get_packed_size
++ (const Sr__ModuleInstallNotification *message);
++size_t sr__module_install_notification__pack
++ (const Sr__ModuleInstallNotification *message,
++ uint8_t *out);
++size_t sr__module_install_notification__pack_to_buffer
++ (const Sr__ModuleInstallNotification *message,
++ ProtobufCBuffer *buffer);
++Sr__ModuleInstallNotification *
++ sr__module_install_notification__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__module_install_notification__free_unpacked
++ (Sr__ModuleInstallNotification *message,
++ ProtobufCAllocator *allocator);
++/* Sr__FeatureEnableNotification methods */
++void sr__feature_enable_notification__init
++ (Sr__FeatureEnableNotification *message);
++size_t sr__feature_enable_notification__get_packed_size
++ (const Sr__FeatureEnableNotification *message);
++size_t sr__feature_enable_notification__pack
++ (const Sr__FeatureEnableNotification *message,
++ uint8_t *out);
++size_t sr__feature_enable_notification__pack_to_buffer
++ (const Sr__FeatureEnableNotification *message,
++ ProtobufCBuffer *buffer);
++Sr__FeatureEnableNotification *
++ sr__feature_enable_notification__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__feature_enable_notification__free_unpacked
++ (Sr__FeatureEnableNotification *message,
++ ProtobufCAllocator *allocator);
++/* Sr__ModuleChangeNotification methods */
++void sr__module_change_notification__init
++ (Sr__ModuleChangeNotification *message);
++size_t sr__module_change_notification__get_packed_size
++ (const Sr__ModuleChangeNotification *message);
++size_t sr__module_change_notification__pack
++ (const Sr__ModuleChangeNotification *message,
++ uint8_t *out);
++size_t sr__module_change_notification__pack_to_buffer
++ (const Sr__ModuleChangeNotification *message,
++ ProtobufCBuffer *buffer);
++Sr__ModuleChangeNotification *
++ sr__module_change_notification__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__module_change_notification__free_unpacked
++ (Sr__ModuleChangeNotification *message,
++ ProtobufCAllocator *allocator);
++/* Sr__SubtreeChangeNotification methods */
++void sr__subtree_change_notification__init
++ (Sr__SubtreeChangeNotification *message);
++size_t sr__subtree_change_notification__get_packed_size
++ (const Sr__SubtreeChangeNotification *message);
++size_t sr__subtree_change_notification__pack
++ (const Sr__SubtreeChangeNotification *message,
++ uint8_t *out);
++size_t sr__subtree_change_notification__pack_to_buffer
++ (const Sr__SubtreeChangeNotification *message,
++ ProtobufCBuffer *buffer);
++Sr__SubtreeChangeNotification *
++ sr__subtree_change_notification__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__subtree_change_notification__free_unpacked
++ (Sr__SubtreeChangeNotification *message,
++ ProtobufCAllocator *allocator);
++/* Sr__Change methods */
++void sr__change__init
++ (Sr__Change *message);
++size_t sr__change__get_packed_size
++ (const Sr__Change *message);
++size_t sr__change__pack
++ (const Sr__Change *message,
++ uint8_t *out);
++size_t sr__change__pack_to_buffer
++ (const Sr__Change *message,
++ ProtobufCBuffer *buffer);
++Sr__Change *
++ sr__change__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__change__free_unpacked
++ (Sr__Change *message,
++ ProtobufCAllocator *allocator);
++/* Sr__GetChangesReq methods */
++void sr__get_changes_req__init
++ (Sr__GetChangesReq *message);
++size_t sr__get_changes_req__get_packed_size
++ (const Sr__GetChangesReq *message);
++size_t sr__get_changes_req__pack
++ (const Sr__GetChangesReq *message,
++ uint8_t *out);
++size_t sr__get_changes_req__pack_to_buffer
++ (const Sr__GetChangesReq *message,
++ ProtobufCBuffer *buffer);
++Sr__GetChangesReq *
++ sr__get_changes_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__get_changes_req__free_unpacked
++ (Sr__GetChangesReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__GetChangesResp methods */
++void sr__get_changes_resp__init
++ (Sr__GetChangesResp *message);
++size_t sr__get_changes_resp__get_packed_size
++ (const Sr__GetChangesResp *message);
++size_t sr__get_changes_resp__pack
++ (const Sr__GetChangesResp *message,
++ uint8_t *out);
++size_t sr__get_changes_resp__pack_to_buffer
++ (const Sr__GetChangesResp *message,
++ ProtobufCBuffer *buffer);
++Sr__GetChangesResp *
++ sr__get_changes_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__get_changes_resp__free_unpacked
++ (Sr__GetChangesResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__CheckExecPermReq methods */
++void sr__check_exec_perm_req__init
++ (Sr__CheckExecPermReq *message);
++size_t sr__check_exec_perm_req__get_packed_size
++ (const Sr__CheckExecPermReq *message);
++size_t sr__check_exec_perm_req__pack
++ (const Sr__CheckExecPermReq *message,
++ uint8_t *out);
++size_t sr__check_exec_perm_req__pack_to_buffer
++ (const Sr__CheckExecPermReq *message,
++ ProtobufCBuffer *buffer);
++Sr__CheckExecPermReq *
++ sr__check_exec_perm_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__check_exec_perm_req__free_unpacked
++ (Sr__CheckExecPermReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__CheckExecPermResp methods */
++void sr__check_exec_perm_resp__init
++ (Sr__CheckExecPermResp *message);
++size_t sr__check_exec_perm_resp__get_packed_size
++ (const Sr__CheckExecPermResp *message);
++size_t sr__check_exec_perm_resp__pack
++ (const Sr__CheckExecPermResp *message,
++ uint8_t *out);
++size_t sr__check_exec_perm_resp__pack_to_buffer
++ (const Sr__CheckExecPermResp *message,
++ ProtobufCBuffer *buffer);
++Sr__CheckExecPermResp *
++ sr__check_exec_perm_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__check_exec_perm_resp__free_unpacked
++ (Sr__CheckExecPermResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__RPCReq methods */
++void sr__rpcreq__init
++ (Sr__RPCReq *message);
++size_t sr__rpcreq__get_packed_size
++ (const Sr__RPCReq *message);
++size_t sr__rpcreq__pack
++ (const Sr__RPCReq *message,
++ uint8_t *out);
++size_t sr__rpcreq__pack_to_buffer
++ (const Sr__RPCReq *message,
++ ProtobufCBuffer *buffer);
++Sr__RPCReq *
++ sr__rpcreq__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__rpcreq__free_unpacked
++ (Sr__RPCReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__RPCResp methods */
++void sr__rpcresp__init
++ (Sr__RPCResp *message);
++size_t sr__rpcresp__get_packed_size
++ (const Sr__RPCResp *message);
++size_t sr__rpcresp__pack
++ (const Sr__RPCResp *message,
++ uint8_t *out);
++size_t sr__rpcresp__pack_to_buffer
++ (const Sr__RPCResp *message,
++ ProtobufCBuffer *buffer);
++Sr__RPCResp *
++ sr__rpcresp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__rpcresp__free_unpacked
++ (Sr__RPCResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__EventNotifReq methods */
++void sr__event_notif_req__init
++ (Sr__EventNotifReq *message);
++size_t sr__event_notif_req__get_packed_size
++ (const Sr__EventNotifReq *message);
++size_t sr__event_notif_req__pack
++ (const Sr__EventNotifReq *message,
++ uint8_t *out);
++size_t sr__event_notif_req__pack_to_buffer
++ (const Sr__EventNotifReq *message,
++ ProtobufCBuffer *buffer);
++Sr__EventNotifReq *
++ sr__event_notif_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__event_notif_req__free_unpacked
++ (Sr__EventNotifReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__EventNotifResp methods */
++void sr__event_notif_resp__init
++ (Sr__EventNotifResp *message);
++size_t sr__event_notif_resp__get_packed_size
++ (const Sr__EventNotifResp *message);
++size_t sr__event_notif_resp__pack
++ (const Sr__EventNotifResp *message,
++ uint8_t *out);
++size_t sr__event_notif_resp__pack_to_buffer
++ (const Sr__EventNotifResp *message,
++ ProtobufCBuffer *buffer);
++Sr__EventNotifResp *
++ sr__event_notif_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__event_notif_resp__free_unpacked
++ (Sr__EventNotifResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__EventNotifReplayReq methods */
++void sr__event_notif_replay_req__init
++ (Sr__EventNotifReplayReq *message);
++size_t sr__event_notif_replay_req__get_packed_size
++ (const Sr__EventNotifReplayReq *message);
++size_t sr__event_notif_replay_req__pack
++ (const Sr__EventNotifReplayReq *message,
++ uint8_t *out);
++size_t sr__event_notif_replay_req__pack_to_buffer
++ (const Sr__EventNotifReplayReq *message,
++ ProtobufCBuffer *buffer);
++Sr__EventNotifReplayReq *
++ sr__event_notif_replay_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__event_notif_replay_req__free_unpacked
++ (Sr__EventNotifReplayReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__EventNotifReplayResp methods */
++void sr__event_notif_replay_resp__init
++ (Sr__EventNotifReplayResp *message);
++size_t sr__event_notif_replay_resp__get_packed_size
++ (const Sr__EventNotifReplayResp *message);
++size_t sr__event_notif_replay_resp__pack
++ (const Sr__EventNotifReplayResp *message,
++ uint8_t *out);
++size_t sr__event_notif_replay_resp__pack_to_buffer
++ (const Sr__EventNotifReplayResp *message,
++ ProtobufCBuffer *buffer);
++Sr__EventNotifReplayResp *
++ sr__event_notif_replay_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__event_notif_replay_resp__free_unpacked
++ (Sr__EventNotifReplayResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__DataProvideReq methods */
++void sr__data_provide_req__init
++ (Sr__DataProvideReq *message);
++size_t sr__data_provide_req__get_packed_size
++ (const Sr__DataProvideReq *message);
++size_t sr__data_provide_req__pack
++ (const Sr__DataProvideReq *message,
++ uint8_t *out);
++size_t sr__data_provide_req__pack_to_buffer
++ (const Sr__DataProvideReq *message,
++ ProtobufCBuffer *buffer);
++Sr__DataProvideReq *
++ sr__data_provide_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__data_provide_req__free_unpacked
++ (Sr__DataProvideReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__DataProvideResp methods */
++void sr__data_provide_resp__init
++ (Sr__DataProvideResp *message);
++size_t sr__data_provide_resp__get_packed_size
++ (const Sr__DataProvideResp *message);
++size_t sr__data_provide_resp__pack
++ (const Sr__DataProvideResp *message,
++ uint8_t *out);
++size_t sr__data_provide_resp__pack_to_buffer
++ (const Sr__DataProvideResp *message,
++ ProtobufCBuffer *buffer);
++Sr__DataProvideResp *
++ sr__data_provide_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__data_provide_resp__free_unpacked
++ (Sr__DataProvideResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__ModuleInstallReq methods */
++void sr__module_install_req__init
++ (Sr__ModuleInstallReq *message);
++size_t sr__module_install_req__get_packed_size
++ (const Sr__ModuleInstallReq *message);
++size_t sr__module_install_req__pack
++ (const Sr__ModuleInstallReq *message,
++ uint8_t *out);
++size_t sr__module_install_req__pack_to_buffer
++ (const Sr__ModuleInstallReq *message,
++ ProtobufCBuffer *buffer);
++Sr__ModuleInstallReq *
++ sr__module_install_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__module_install_req__free_unpacked
++ (Sr__ModuleInstallReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__ModuleInstallResp methods */
++void sr__module_install_resp__init
++ (Sr__ModuleInstallResp *message);
++size_t sr__module_install_resp__get_packed_size
++ (const Sr__ModuleInstallResp *message);
++size_t sr__module_install_resp__pack
++ (const Sr__ModuleInstallResp *message,
++ uint8_t *out);
++size_t sr__module_install_resp__pack_to_buffer
++ (const Sr__ModuleInstallResp *message,
++ ProtobufCBuffer *buffer);
++Sr__ModuleInstallResp *
++ sr__module_install_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__module_install_resp__free_unpacked
++ (Sr__ModuleInstallResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__FeatureEnableReq methods */
++void sr__feature_enable_req__init
++ (Sr__FeatureEnableReq *message);
++size_t sr__feature_enable_req__get_packed_size
++ (const Sr__FeatureEnableReq *message);
++size_t sr__feature_enable_req__pack
++ (const Sr__FeatureEnableReq *message,
++ uint8_t *out);
++size_t sr__feature_enable_req__pack_to_buffer
++ (const Sr__FeatureEnableReq *message,
++ ProtobufCBuffer *buffer);
++Sr__FeatureEnableReq *
++ sr__feature_enable_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__feature_enable_req__free_unpacked
++ (Sr__FeatureEnableReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__FeatureEnableResp methods */
++void sr__feature_enable_resp__init
++ (Sr__FeatureEnableResp *message);
++size_t sr__feature_enable_resp__get_packed_size
++ (const Sr__FeatureEnableResp *message);
++size_t sr__feature_enable_resp__pack
++ (const Sr__FeatureEnableResp *message,
++ uint8_t *out);
++size_t sr__feature_enable_resp__pack_to_buffer
++ (const Sr__FeatureEnableResp *message,
++ ProtobufCBuffer *buffer);
++Sr__FeatureEnableResp *
++ sr__feature_enable_resp__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__feature_enable_resp__free_unpacked
++ (Sr__FeatureEnableResp *message,
++ ProtobufCAllocator *allocator);
++/* Sr__UnsubscribeDestinationReq methods */
++void sr__unsubscribe_destination_req__init
++ (Sr__UnsubscribeDestinationReq *message);
++size_t sr__unsubscribe_destination_req__get_packed_size
++ (const Sr__UnsubscribeDestinationReq *message);
++size_t sr__unsubscribe_destination_req__pack
++ (const Sr__UnsubscribeDestinationReq *message,
++ uint8_t *out);
++size_t sr__unsubscribe_destination_req__pack_to_buffer
++ (const Sr__UnsubscribeDestinationReq *message,
++ ProtobufCBuffer *buffer);
++Sr__UnsubscribeDestinationReq *
++ sr__unsubscribe_destination_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__unsubscribe_destination_req__free_unpacked
++ (Sr__UnsubscribeDestinationReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__CommitTimeoutReq methods */
++void sr__commit_timeout_req__init
++ (Sr__CommitTimeoutReq *message);
++size_t sr__commit_timeout_req__get_packed_size
++ (const Sr__CommitTimeoutReq *message);
++size_t sr__commit_timeout_req__pack
++ (const Sr__CommitTimeoutReq *message,
++ uint8_t *out);
++size_t sr__commit_timeout_req__pack_to_buffer
++ (const Sr__CommitTimeoutReq *message,
++ ProtobufCBuffer *buffer);
++Sr__CommitTimeoutReq *
++ sr__commit_timeout_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__commit_timeout_req__free_unpacked
++ (Sr__CommitTimeoutReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__OperDataTimeoutReq methods */
++void sr__oper_data_timeout_req__init
++ (Sr__OperDataTimeoutReq *message);
++size_t sr__oper_data_timeout_req__get_packed_size
++ (const Sr__OperDataTimeoutReq *message);
++size_t sr__oper_data_timeout_req__pack
++ (const Sr__OperDataTimeoutReq *message,
++ uint8_t *out);
++size_t sr__oper_data_timeout_req__pack_to_buffer
++ (const Sr__OperDataTimeoutReq *message,
++ ProtobufCBuffer *buffer);
++Sr__OperDataTimeoutReq *
++ sr__oper_data_timeout_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__oper_data_timeout_req__free_unpacked
++ (Sr__OperDataTimeoutReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__InternalStateDataReq methods */
++void sr__internal_state_data_req__init
++ (Sr__InternalStateDataReq *message);
++size_t sr__internal_state_data_req__get_packed_size
++ (const Sr__InternalStateDataReq *message);
++size_t sr__internal_state_data_req__pack
++ (const Sr__InternalStateDataReq *message,
++ uint8_t *out);
++size_t sr__internal_state_data_req__pack_to_buffer
++ (const Sr__InternalStateDataReq *message,
++ ProtobufCBuffer *buffer);
++Sr__InternalStateDataReq *
++ sr__internal_state_data_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__internal_state_data_req__free_unpacked
++ (Sr__InternalStateDataReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__NotifStoreCleanupReq methods */
++void sr__notif_store_cleanup_req__init
++ (Sr__NotifStoreCleanupReq *message);
++size_t sr__notif_store_cleanup_req__get_packed_size
++ (const Sr__NotifStoreCleanupReq *message);
++size_t sr__notif_store_cleanup_req__pack
++ (const Sr__NotifStoreCleanupReq *message,
++ uint8_t *out);
++size_t sr__notif_store_cleanup_req__pack_to_buffer
++ (const Sr__NotifStoreCleanupReq *message,
++ ProtobufCBuffer *buffer);
++Sr__NotifStoreCleanupReq *
++ sr__notif_store_cleanup_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__notif_store_cleanup_req__free_unpacked
++ (Sr__NotifStoreCleanupReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__DelayedMsgReq methods */
++void sr__delayed_msg_req__init
++ (Sr__DelayedMsgReq *message);
++size_t sr__delayed_msg_req__get_packed_size
++ (const Sr__DelayedMsgReq *message);
++size_t sr__delayed_msg_req__pack
++ (const Sr__DelayedMsgReq *message,
++ uint8_t *out);
++size_t sr__delayed_msg_req__pack_to_buffer
++ (const Sr__DelayedMsgReq *message,
++ ProtobufCBuffer *buffer);
++Sr__DelayedMsgReq *
++ sr__delayed_msg_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__delayed_msg_req__free_unpacked
++ (Sr__DelayedMsgReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__NacmReloadReq methods */
++void sr__nacm_reload_req__init
++ (Sr__NacmReloadReq *message);
++size_t sr__nacm_reload_req__get_packed_size
++ (const Sr__NacmReloadReq *message);
++size_t sr__nacm_reload_req__pack
++ (const Sr__NacmReloadReq *message,
++ uint8_t *out);
++size_t sr__nacm_reload_req__pack_to_buffer
++ (const Sr__NacmReloadReq *message,
++ ProtobufCBuffer *buffer);
++Sr__NacmReloadReq *
++ sr__nacm_reload_req__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__nacm_reload_req__free_unpacked
++ (Sr__NacmReloadReq *message,
++ ProtobufCAllocator *allocator);
++/* Sr__Request methods */
++void sr__request__init
++ (Sr__Request *message);
++size_t sr__request__get_packed_size
++ (const Sr__Request *message);
++size_t sr__request__pack
++ (const Sr__Request *message,
++ uint8_t *out);
++size_t sr__request__pack_to_buffer
++ (const Sr__Request *message,
++ ProtobufCBuffer *buffer);
++Sr__Request *
++ sr__request__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__request__free_unpacked
++ (Sr__Request *message,
++ ProtobufCAllocator *allocator);
++/* Sr__Response methods */
++void sr__response__init
++ (Sr__Response *message);
++size_t sr__response__get_packed_size
++ (const Sr__Response *message);
++size_t sr__response__pack
++ (const Sr__Response *message,
++ uint8_t *out);
++size_t sr__response__pack_to_buffer
++ (const Sr__Response *message,
++ ProtobufCBuffer *buffer);
++Sr__Response *
++ sr__response__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__response__free_unpacked
++ (Sr__Response *message,
++ ProtobufCAllocator *allocator);
++/* Sr__Notification methods */
++void sr__notification__init
++ (Sr__Notification *message);
++size_t sr__notification__get_packed_size
++ (const Sr__Notification *message);
++size_t sr__notification__pack
++ (const Sr__Notification *message,
++ uint8_t *out);
++size_t sr__notification__pack_to_buffer
++ (const Sr__Notification *message,
++ ProtobufCBuffer *buffer);
++Sr__Notification *
++ sr__notification__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__notification__free_unpacked
++ (Sr__Notification *message,
++ ProtobufCAllocator *allocator);
++/* Sr__NotificationAck methods */
++void sr__notification_ack__init
++ (Sr__NotificationAck *message);
++size_t sr__notification_ack__get_packed_size
++ (const Sr__NotificationAck *message);
++size_t sr__notification_ack__pack
++ (const Sr__NotificationAck *message,
++ uint8_t *out);
++size_t sr__notification_ack__pack_to_buffer
++ (const Sr__NotificationAck *message,
++ ProtobufCBuffer *buffer);
++Sr__NotificationAck *
++ sr__notification_ack__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__notification_ack__free_unpacked
++ (Sr__NotificationAck *message,
++ ProtobufCAllocator *allocator);
++/* Sr__InternalRequest methods */
++void sr__internal_request__init
++ (Sr__InternalRequest *message);
++size_t sr__internal_request__get_packed_size
++ (const Sr__InternalRequest *message);
++size_t sr__internal_request__pack
++ (const Sr__InternalRequest *message,
++ uint8_t *out);
++size_t sr__internal_request__pack_to_buffer
++ (const Sr__InternalRequest *message,
++ ProtobufCBuffer *buffer);
++Sr__InternalRequest *
++ sr__internal_request__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__internal_request__free_unpacked
++ (Sr__InternalRequest *message,
++ ProtobufCAllocator *allocator);
++/* Sr__Msg methods */
++void sr__msg__init
++ (Sr__Msg *message);
++size_t sr__msg__get_packed_size
++ (const Sr__Msg *message);
++size_t sr__msg__pack
++ (const Sr__Msg *message,
++ uint8_t *out);
++size_t sr__msg__pack_to_buffer
++ (const Sr__Msg *message,
++ ProtobufCBuffer *buffer);
++Sr__Msg *
++ sr__msg__unpack
++ (ProtobufCAllocator *allocator,
++ size_t len,
++ const uint8_t *data);
++void sr__msg__free_unpacked
++ (Sr__Msg *message,
++ ProtobufCAllocator *allocator);
++/* --- per-message closures --- */
++
++typedef void (*Sr__Value_Closure)
++ (const Sr__Value *message,
++ void *closure_data);
++typedef void (*Sr__Node_Closure)
++ (const Sr__Node *message,
++ void *closure_data);
++typedef void (*Sr__Error_Closure)
++ (const Sr__Error *message,
++ void *closure_data);
++typedef void (*Sr__SessionStartReq_Closure)
++ (const Sr__SessionStartReq *message,
++ void *closure_data);
++typedef void (*Sr__SessionStartResp_Closure)
++ (const Sr__SessionStartResp *message,
++ void *closure_data);
++typedef void (*Sr__SessionStopReq_Closure)
++ (const Sr__SessionStopReq *message,
++ void *closure_data);
++typedef void (*Sr__SessionStopResp_Closure)
++ (const Sr__SessionStopResp *message,
++ void *closure_data);
++typedef void (*Sr__SessionRefreshReq_Closure)
++ (const Sr__SessionRefreshReq *message,
++ void *closure_data);
++typedef void (*Sr__SessionRefreshResp_Closure)
++ (const Sr__SessionRefreshResp *message,
++ void *closure_data);
++typedef void (*Sr__SessionCheckReq_Closure)
++ (const Sr__SessionCheckReq *message,
++ void *closure_data);
++typedef void (*Sr__SessionCheckResp_Closure)
++ (const Sr__SessionCheckResp *message,
++ void *closure_data);
++typedef void (*Sr__SessionSwitchDsReq_Closure)
++ (const Sr__SessionSwitchDsReq *message,
++ void *closure_data);
++typedef void (*Sr__SessionSwitchDsResp_Closure)
++ (const Sr__SessionSwitchDsResp *message,
++ void *closure_data);
++typedef void (*Sr__SessionSetOptsReq_Closure)
++ (const Sr__SessionSetOptsReq *message,
++ void *closure_data);
++typedef void (*Sr__SessionSetOptsResp_Closure)
++ (const Sr__SessionSetOptsResp *message,
++ void *closure_data);
++typedef void (*Sr__VersionVerifyReq_Closure)
++ (const Sr__VersionVerifyReq *message,
++ void *closure_data);
++typedef void (*Sr__VersionVerifyResp_Closure)
++ (const Sr__VersionVerifyResp *message,
++ void *closure_data);
++typedef void (*Sr__SchemaRevision_Closure)
++ (const Sr__SchemaRevision *message,
++ void *closure_data);
++typedef void (*Sr__SchemaSubmodule_Closure)
++ (const Sr__SchemaSubmodule *message,
++ void *closure_data);
++typedef void (*Sr__Schema_Closure)
++ (const Sr__Schema *message,
++ void *closure_data);
++typedef void (*Sr__ListSchemasReq_Closure)
++ (const Sr__ListSchemasReq *message,
++ void *closure_data);
++typedef void (*Sr__ListSchemasResp_Closure)
++ (const Sr__ListSchemasResp *message,
++ void *closure_data);
++typedef void (*Sr__GetSchemaReq_Closure)
++ (const Sr__GetSchemaReq *message,
++ void *closure_data);
++typedef void (*Sr__GetSchemaResp_Closure)
++ (const Sr__GetSchemaResp *message,
++ void *closure_data);
++typedef void (*Sr__GetItemReq_Closure)
++ (const Sr__GetItemReq *message,
++ void *closure_data);
++typedef void (*Sr__GetItemResp_Closure)
++ (const Sr__GetItemResp *message,
++ void *closure_data);
++typedef void (*Sr__GetItemsReq_Closure)
++ (const Sr__GetItemsReq *message,
++ void *closure_data);
++typedef void (*Sr__GetItemsResp_Closure)
++ (const Sr__GetItemsResp *message,
++ void *closure_data);
++typedef void (*Sr__GetSubtreeReq_Closure)
++ (const Sr__GetSubtreeReq *message,
++ void *closure_data);
++typedef void (*Sr__GetSubtreeResp_Closure)
++ (const Sr__GetSubtreeResp *message,
++ void *closure_data);
++typedef void (*Sr__GetSubtreesReq_Closure)
++ (const Sr__GetSubtreesReq *message,
++ void *closure_data);
++typedef void (*Sr__GetSubtreesResp_Closure)
++ (const Sr__GetSubtreesResp *message,
++ void *closure_data);
++typedef void (*Sr__GetSubtreeChunkReq_Closure)
++ (const Sr__GetSubtreeChunkReq *message,
++ void *closure_data);
++typedef void (*Sr__GetSubtreeChunkResp_Closure)
++ (const Sr__GetSubtreeChunkResp *message,
++ void *closure_data);
++typedef void (*Sr__SetItemReq_Closure)
++ (const Sr__SetItemReq *message,
++ void *closure_data);
++typedef void (*Sr__SetItemResp_Closure)
++ (const Sr__SetItemResp *message,
++ void *closure_data);
++typedef void (*Sr__SetItemStrReq_Closure)
++ (const Sr__SetItemStrReq *message,
++ void *closure_data);
++typedef void (*Sr__SetItemStrResp_Closure)
++ (const Sr__SetItemStrResp *message,
++ void *closure_data);
++typedef void (*Sr__DeleteItemReq_Closure)
++ (const Sr__DeleteItemReq *message,
++ void *closure_data);
++typedef void (*Sr__DeleteItemResp_Closure)
++ (const Sr__DeleteItemResp *message,
++ void *closure_data);
++typedef void (*Sr__MoveItemReq_Closure)
++ (const Sr__MoveItemReq *message,
++ void *closure_data);
++typedef void (*Sr__MoveItemResp_Closure)
++ (const Sr__MoveItemResp *message,
++ void *closure_data);
++typedef void (*Sr__ValidateReq_Closure)
++ (const Sr__ValidateReq *message,
++ void *closure_data);
++typedef void (*Sr__ValidateResp_Closure)
++ (const Sr__ValidateResp *message,
++ void *closure_data);
++typedef void (*Sr__CommitReq_Closure)
++ (const Sr__CommitReq *message,
++ void *closure_data);
++typedef void (*Sr__CommitResp_Closure)
++ (const Sr__CommitResp *message,
++ void *closure_data);
++typedef void (*Sr__DiscardChangesReq_Closure)
++ (const Sr__DiscardChangesReq *message,
++ void *closure_data);
++typedef void (*Sr__DiscardChangesResp_Closure)
++ (const Sr__DiscardChangesResp *message,
++ void *closure_data);
++typedef void (*Sr__CopyConfigReq_Closure)
++ (const Sr__CopyConfigReq *message,
++ void *closure_data);
++typedef void (*Sr__CopyConfigResp_Closure)
++ (const Sr__CopyConfigResp *message,
++ void *closure_data);
++typedef void (*Sr__LockReq_Closure)
++ (const Sr__LockReq *message,
++ void *closure_data);
++typedef void (*Sr__LockResp_Closure)
++ (const Sr__LockResp *message,
++ void *closure_data);
++typedef void (*Sr__UnlockReq_Closure)
++ (const Sr__UnlockReq *message,
++ void *closure_data);
++typedef void (*Sr__UnlockResp_Closure)
++ (const Sr__UnlockResp *message,
++ void *closure_data);
++typedef void (*Sr__SubscribeReq_Closure)
++ (const Sr__SubscribeReq *message,
++ void *closure_data);
++typedef void (*Sr__SubscribeResp_Closure)
++ (const Sr__SubscribeResp *message,
++ void *closure_data);
++typedef void (*Sr__UnsubscribeReq_Closure)
++ (const Sr__UnsubscribeReq *message,
++ void *closure_data);
++typedef void (*Sr__UnsubscribeResp_Closure)
++ (const Sr__UnsubscribeResp *message,
++ void *closure_data);
++typedef void (*Sr__CheckEnabledRunningReq_Closure)
++ (const Sr__CheckEnabledRunningReq *message,
++ void *closure_data);
++typedef void (*Sr__CheckEnabledRunningResp_Closure)
++ (const Sr__CheckEnabledRunningResp *message,
++ void *closure_data);
++typedef void (*Sr__ModuleInstallNotification_Closure)
++ (const Sr__ModuleInstallNotification *message,
++ void *closure_data);
++typedef void (*Sr__FeatureEnableNotification_Closure)
++ (const Sr__FeatureEnableNotification *message,
++ void *closure_data);
++typedef void (*Sr__ModuleChangeNotification_Closure)
++ (const Sr__ModuleChangeNotification *message,
++ void *closure_data);
++typedef void (*Sr__SubtreeChangeNotification_Closure)
++ (const Sr__SubtreeChangeNotification *message,
++ void *closure_data);
++typedef void (*Sr__Change_Closure)
++ (const Sr__Change *message,
++ void *closure_data);
++typedef void (*Sr__GetChangesReq_Closure)
++ (const Sr__GetChangesReq *message,
++ void *closure_data);
++typedef void (*Sr__GetChangesResp_Closure)
++ (const Sr__GetChangesResp *message,
++ void *closure_data);
++typedef void (*Sr__CheckExecPermReq_Closure)
++ (const Sr__CheckExecPermReq *message,
++ void *closure_data);
++typedef void (*Sr__CheckExecPermResp_Closure)
++ (const Sr__CheckExecPermResp *message,
++ void *closure_data);
++typedef void (*Sr__RPCReq_Closure)
++ (const Sr__RPCReq *message,
++ void *closure_data);
++typedef void (*Sr__RPCResp_Closure)
++ (const Sr__RPCResp *message,
++ void *closure_data);
++typedef void (*Sr__EventNotifReq_Closure)
++ (const Sr__EventNotifReq *message,
++ void *closure_data);
++typedef void (*Sr__EventNotifResp_Closure)
++ (const Sr__EventNotifResp *message,
++ void *closure_data);
++typedef void (*Sr__EventNotifReplayReq_Closure)
++ (const Sr__EventNotifReplayReq *message,
++ void *closure_data);
++typedef void (*Sr__EventNotifReplayResp_Closure)
++ (const Sr__EventNotifReplayResp *message,
++ void *closure_data);
++typedef void (*Sr__DataProvideReq_Closure)
++ (const Sr__DataProvideReq *message,
++ void *closure_data);
++typedef void (*Sr__DataProvideResp_Closure)
++ (const Sr__DataProvideResp *message,
++ void *closure_data);
++typedef void (*Sr__ModuleInstallReq_Closure)
++ (const Sr__ModuleInstallReq *message,
++ void *closure_data);
++typedef void (*Sr__ModuleInstallResp_Closure)
++ (const Sr__ModuleInstallResp *message,
++ void *closure_data);
++typedef void (*Sr__FeatureEnableReq_Closure)
++ (const Sr__FeatureEnableReq *message,
++ void *closure_data);
++typedef void (*Sr__FeatureEnableResp_Closure)
++ (const Sr__FeatureEnableResp *message,
++ void *closure_data);
++typedef void (*Sr__UnsubscribeDestinationReq_Closure)
++ (const Sr__UnsubscribeDestinationReq *message,
++ void *closure_data);
++typedef void (*Sr__CommitTimeoutReq_Closure)
++ (const Sr__CommitTimeoutReq *message,
++ void *closure_data);
++typedef void (*Sr__OperDataTimeoutReq_Closure)
++ (const Sr__OperDataTimeoutReq *message,
++ void *closure_data);
++typedef void (*Sr__InternalStateDataReq_Closure)
++ (const Sr__InternalStateDataReq *message,
++ void *closure_data);
++typedef void (*Sr__NotifStoreCleanupReq_Closure)
++ (const Sr__NotifStoreCleanupReq *message,
++ void *closure_data);
++typedef void (*Sr__DelayedMsgReq_Closure)
++ (const Sr__DelayedMsgReq *message,
++ void *closure_data);
++typedef void (*Sr__NacmReloadReq_Closure)
++ (const Sr__NacmReloadReq *message,
++ void *closure_data);
++typedef void (*Sr__Request_Closure)
++ (const Sr__Request *message,
++ void *closure_data);
++typedef void (*Sr__Response_Closure)
++ (const Sr__Response *message,
++ void *closure_data);
++typedef void (*Sr__Notification_Closure)
++ (const Sr__Notification *message,
++ void *closure_data);
++typedef void (*Sr__NotificationAck_Closure)
++ (const Sr__NotificationAck *message,
++ void *closure_data);
++typedef void (*Sr__InternalRequest_Closure)
++ (const Sr__InternalRequest *message,
++ void *closure_data);
++typedef void (*Sr__Msg_Closure)
++ (const Sr__Msg *message,
++ void *closure_data);
++
++/* --- services --- */
++
++
++/* --- descriptors --- */
++
++extern const ProtobufCEnumDescriptor sr__api_variant__descriptor;
++extern const ProtobufCEnumDescriptor sr__data_store__descriptor;
++extern const ProtobufCEnumDescriptor sr__session_flags__descriptor;
++extern const ProtobufCEnumDescriptor sr__edit_flags__descriptor;
++extern const ProtobufCEnumDescriptor sr__subscription_type__descriptor;
++extern const ProtobufCEnumDescriptor sr__notification_event__descriptor;
++extern const ProtobufCEnumDescriptor sr__module_state__descriptor;
++extern const ProtobufCEnumDescriptor sr__change_operation__descriptor;
++extern const ProtobufCEnumDescriptor sr__operation__descriptor;
++extern const ProtobufCMessageDescriptor sr__value__descriptor;
++extern const ProtobufCEnumDescriptor sr__value__types__descriptor;
++extern const ProtobufCMessageDescriptor sr__node__descriptor;
++extern const ProtobufCMessageDescriptor sr__error__descriptor;
++extern const ProtobufCMessageDescriptor sr__session_start_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__session_start_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__session_stop_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__session_stop_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__session_refresh_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__session_refresh_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__session_check_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__session_check_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__session_switch_ds_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__session_switch_ds_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__session_set_opts_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__session_set_opts_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__version_verify_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__version_verify_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__schema_revision__descriptor;
++extern const ProtobufCMessageDescriptor sr__schema_submodule__descriptor;
++extern const ProtobufCMessageDescriptor sr__schema__descriptor;
++extern const ProtobufCMessageDescriptor sr__list_schemas_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__list_schemas_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__get_schema_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__get_schema_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__get_item_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__get_item_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__get_items_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__get_items_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__get_subtree_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__get_subtree_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__get_subtrees_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__get_subtrees_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__get_subtree_chunk_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__get_subtree_chunk_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__set_item_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__set_item_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__set_item_str_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__set_item_str_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__delete_item_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__delete_item_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__move_item_req__descriptor;
++extern const ProtobufCEnumDescriptor sr__move_item_req__move_position__descriptor;
++extern const ProtobufCMessageDescriptor sr__move_item_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__validate_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__validate_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__commit_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__commit_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__discard_changes_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__discard_changes_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__copy_config_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__copy_config_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__lock_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__lock_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__unlock_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__unlock_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__subscribe_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__subscribe_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__unsubscribe_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__unsubscribe_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__check_enabled_running_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__check_enabled_running_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__module_install_notification__descriptor;
++extern const ProtobufCMessageDescriptor sr__feature_enable_notification__descriptor;
++extern const ProtobufCMessageDescriptor sr__module_change_notification__descriptor;
++extern const ProtobufCMessageDescriptor sr__subtree_change_notification__descriptor;
++extern const ProtobufCMessageDescriptor sr__change__descriptor;
++extern const ProtobufCMessageDescriptor sr__get_changes_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__get_changes_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__check_exec_perm_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__check_exec_perm_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__rpcreq__descriptor;
++extern const ProtobufCMessageDescriptor sr__rpcresp__descriptor;
++extern const ProtobufCMessageDescriptor sr__event_notif_req__descriptor;
++extern const ProtobufCEnumDescriptor sr__event_notif_req__notif_type__descriptor;
++extern const ProtobufCEnumDescriptor sr__event_notif_req__notif_flags__descriptor;
++extern const ProtobufCMessageDescriptor sr__event_notif_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__event_notif_replay_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__event_notif_replay_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__data_provide_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__data_provide_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__module_install_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__module_install_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__feature_enable_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__feature_enable_resp__descriptor;
++extern const ProtobufCMessageDescriptor sr__unsubscribe_destination_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__commit_timeout_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__oper_data_timeout_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__internal_state_data_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__notif_store_cleanup_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__delayed_msg_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__nacm_reload_req__descriptor;
++extern const ProtobufCMessageDescriptor sr__request__descriptor;
++extern const ProtobufCMessageDescriptor sr__response__descriptor;
++extern const ProtobufCMessageDescriptor sr__notification__descriptor;
++extern const ProtobufCMessageDescriptor sr__notification_ack__descriptor;
++extern const ProtobufCMessageDescriptor sr__internal_request__descriptor;
++extern const ProtobufCMessageDescriptor sr__msg__descriptor;
++extern const ProtobufCEnumDescriptor sr__msg__msg_type__descriptor;
++
++PROTOBUF_C__END_DECLS
++
++
++#endif /* PROTOBUF_C_sysrepo_2eproto__INCLUDED */
--- /dev/null
+Index: sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf/CMakeLists.txt
+===================================================================
+--- sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf.orig/CMakeLists.txt
++++ sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf/CMakeLists.txt
+@@ -280,7 +280,7 @@ install (FILES ${INTERNAL_YANGS} DESTINA
+
+ # install NACM YANG module
+ if(ENABLE_NACM)
+- INSTALL_YANG("ietf-netconf-acm" "@2012-02-22" "644")
++ # INSTALL_YANG("ietf-netconf-acm" "@2012-02-22" "644")
+ endif(ENABLE_NACM)
+
+ find_package(PkgConfig QUIET)
+@@ -304,9 +304,9 @@ if(WITH_SYSTEMD)
+ FILES_MATCHING PATTERN "*.service")
+ endif()
+
+-INSTALL_YANG("ietf-netconf-notifications" "" "666")
+-INSTALL_YANG("nc-notifications" "" "666")
+-INSTALL_YANG("notifications" "" "666")
++# INSTALL_YANG("ietf-netconf-notifications" "" "666")
++# INSTALL_YANG("nc-notifications" "" "666")
++# INSTALL_YANG("notifications" "" "666")
+
+ if(GEN_LANGUAGE_BINDINGS)
+ add_subdirectory(swig)
--- /dev/null
+Index: sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf/inc/sysrepo.h
+===================================================================
+--- sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf.orig/inc/sysrepo.h
++++ sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf/inc/sysrepo.h
+@@ -51,6 +51,7 @@
+ * @ref xp_page "XPath Addressing" is used for node identification in data-related calls.
+ */
+
++#include <time.h>
+ #include <stdbool.h>
+ #include <stdint.h>
+ #include <stdlib.h>
--- /dev/null
+Index: sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf/src/clientlib/client_library.c
+===================================================================
+--- sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf.orig/src/clientlib/client_library.c
++++ sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf/src/clientlib/client_library.c
+@@ -405,14 +405,6 @@ sr_connect(const char *app_name, const s
+ if (SR_ERR_OK != rc) {
+ if (opts & SR_CONN_DAEMON_REQUIRED) {
+ if ((opts & SR_CONN_DAEMON_START) && (0 == getuid())) {
+- /* sysrepo daemon start requested and process is running under root privileges */
+- SR_LOG_DBG_MSG("Sysrepo daemon not detected, starting it.");
+- ret = system("sysrepod");
+- if (0 == ret) {
+- SR_LOG_INF_MSG("Sysrepo daemon has been started.");
+- } else {
+- SR_LOG_WRN("Unable to start sysrepo daemon, error code=%d.", ret);
+- }
+ /* retry to connect again in any case */
+ rc = cl_socket_connect(connection, SR_DAEMON_SOCKET);
+ CHECK_RC_LOG_GOTO(rc, cleanup, "Unable to connect to sysrepod: %s.", sr_strerror(rc));
CATEGORY:=Network
URL:=http://stgt.sourceforge.net/
TITLE:=userspace iSCSI target
- DEPENDS:=+libpthread +libaio @KERNEL_AIO @KERNEL_DIRECT_IO
+ DEPENDS:=+libpthread +libaio @KERNEL_AIO
endef
define Package/tgt/description
endef
define Build/Compile
- CC=$(TARGET_CC) CFLAGS="$(TARGET_CFLAGS)" $(MAKE) -C $(PKG_BUILD_DIR) \
+ CC=$(TARGET_CC) CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \
+ $(MAKE) -C $(PKG_BUILD_DIR) \
DESTDIR="$(PKG_INSTALL_DIR)" \
LD="$(TARGET_CC)" \
+ LDFLAGS="$(TARGET_LDFLAGS)" \
install-programs
endef
PKG_NAME:=unbound
PKG_VERSION:=1.6.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE
```
### Unbound and odhcpd
-You may ask can Unbound replace dnsmasq? You can have DHCP-DNS records with Unbound and odhcpd only. The UCI scripts will allow Unbound to act like dnsmasq. When odhcpd configures each DHCP lease, it will call a script. The script provided with Unbound will read the lease file for DHCP-DNS records. You **must install** `unbound-control`, because the lease records are added and removed without starting, stopping, flushing cache, or re-writing conf files. (_restart overhead can be excessive with even a few mobile devices._)
+You may ask, "can Unbound replace dnsmasq?" You can have DHCP-DNS records with Unbound and odhcpd only. The UCI scripts will allow Unbound to act like dnsmasq. When odhcpd configures each DHCP lease, it will call a script. The script provided with Unbound will read the lease file for DHCP-DNS records. You **must install** `unbound-control`, because the lease records are added and removed without starting, stopping, flushing cache, or re-writing conf files. (_restart overhead can be excessive with even a few mobile devices._)
Don't forget to disable or uninstall dnsmasq when you don't intend to use it. Strange results may occur. If you want to use default dnsmasq+odhcpd and add Unbound on top, then use the dnsmasq-serial or dnsmasq-parallel methods above.
option leasetime '12h'
option ra 'server'
option ra_management '1'
- # issue your ULA and avoid default [fe80::]
- list dns 'fdxx:xxxx:xxxx::1'
+ # odhcpd should issue ULA [fd00::/8] by default
...
config odhcpd 'odhcpd'
config unbound
Currently only one instance is supported.
+ option add_extra_dns '0'
+ Level. Execute traditional DNS overrides found in `/etc/config/dhcp`.
+ Optional so you may use other Unbound conf or redirect to NSD instance.
+ 0 - Ignore `/etc/config/dhcp`
+ 1 - Use only 'domain' clause (host records)
+ 2 - Use 'domain', 'mxhost', and 'srvhost' clauses
+ 3 - Use all of 'domain', 'mxhost', 'srvhost', and 'cname' clauses
+
option add_local_fqdn '0'
Level. This puts your routers host name in the LAN (local) DNS.
Each level is more detailed and comprehensive.
embedded devices don't have a real time power off clock. NTP needs
DNS to resolve servers. This works around the chicken-and-egg.
- list domain_insecure
- List. Domains or pointers that you wish to skip DNSSEC. Your DHCP
- domains and pointers in dnsmasq will get this automatically.
+ list domain_insecure 'www.example.com'
+ Domain. Domains that you wish to skip DNSSEC. Your DHCP
+ domains and pointers will get this automatically.
+
+ list trigger 'lan' 'wan'
+ Interface (logical). This option is a work around for netifd/procd
+ interaction with WAN DHCPv6. Minor RA or DHCP changes in IP6 can
+ cause netifd to execute procd interface reload. Limit Unbound procd
+ triggers to LAN and WAN (IP4 only) to prevent restart @2-3 minutes.
```
local dhcp_ls_old=$UNBOUND_VARDIR/dhcp_lease.old
local dhcp_ls_add=$UNBOUND_VARDIR/dhcp_lease.add
local dhcp_ls_del=$UNBOUND_VARDIR/dhcp_lease.del
- local dhcp_origin=$( uci get dhcp.@odhcpd[0].leasefile )
+ local dhcp_origin=$( uci_get dhcp.@odhcpd[0].leasefile )
config_load unbound
config_foreach odhcpd_settings unbound
stop_service() {
unbound_stop
-
+
# Wait! on restart Unbound may take time writing closure stats to syslog
pidof $PROG && sleep 1
}
##############################################################################
service_triggers() {
- # use soft reload to prevent continuous stop-start and cache flush
+ local trigger
+ local triggers=$( uci_get unbound.@unbound[0].trigger )
+
+ PROCD_RELOAD_DELAY=2000
procd_add_reload_trigger "unbound"
- procd_add_raw_trigger "interface.*.up" 2000 /etc/init.d/unbound reload
+
+ if [ -n "$triggers" ] ; then
+ for trigger in $triggers ; do
+ # due to some netifd/procd interactions with IP6, limit interfaces
+ procd_add_reload_interface_trigger "$trigger"
+ done
+ else
+ procd_add_raw_trigger "interface.*.up" 2000 /etc/init.d/unbound reload
+ fi
}
##############################################################################
#
##############################################################################
#
-# This builds the basic UCI components currently supported for Unbound. It is
-# intentionally NOT comprehensive and bundles a lot of options. The UCI is to
-# be a simpler presentation of the total Unbound conf set.
+# Unbound is a full featured recursive server with many options. The UCI
+# provided tries to simplify and bundle options. This should make Unbound
+# easier to deploy. Even light duty routers may resolve recursively instead of
+# depending on a stub with the ISP. The UCI also attempts to replicate dnsmasq
+# features as used in base LEDE/OpenWrt. If there is a desire for more
+# detailed tuning, then manual conf file overrides are also made available.
#
##############################################################################
UNBOUND_D_DOMAIN_TYPE=static
UNBOUND_D_DHCP_LINK=none
+UNBOUND_D_EXTRA_DNS=0
UNBOUND_D_LAN_FQDN=0
UNBOUND_D_PROTOCOL=mixed
UNBOUND_D_RESOURCE=small
##############################################################################
+# keep track of local-domain: assignments during inserted resource records
+UNBOUND_LIST_DOMAINS=""
+
+##############################################################################
+
UNBOUND_LIBDIR=/usr/lib/unbound
UNBOUND_VARDIR=/var/lib/unbound
UNBOUND_KEYFILE=$UNBOUND_VARDIR/root.key
UNBOUND_HINTFILE=$UNBOUND_VARDIR/root.hints
-UNBOUND_TIMEFILE=$UNBOUND_VARDIR/unbound.time
+UNBOUND_TIMEFILE=$UNBOUND_VARDIR/hotplug.time
##############################################################################
ifdashname="${ifname//./-}"
ipcommand="ip -o address show $ifname"
- addresses="$($ipcommand | awk '/inet/{sub(/\/.*/,"",$4); print $4}')"
- ulaprefix="$(uci_get network @globals[0] ula_prefix)"
+ addresses=$( $ipcommand | awk '/inet/{sub(/\/.*/,"",$4); print $4}' )
+ ulaprefix=$( uci_get network.@globals[0].ula_prefix )
host_fqdn="$UNBOUND_TXT_HOSTNAME.$UNBOUND_TXT_DOMAIN"
if_fqdn="$ifdashname.$host_fqdn"
##############################################################################
+create_local_zone() {
+ local target="$1"
+ local partial domain found
+
+
+ if [ -n "$UNBOUND_LIST_DOMAINS" ] ; then
+ for domain in $UNBOUND_LIST_DOMAINS ; do
+ case $target in
+ *"${domain}")
+ found=1
+ break
+ ;;
+
+ [A-Za-z0-9]*.[A-Za-z0-9]*)
+ found=0
+ ;;
+
+ *) # no dots
+ found=1
+ break
+ ;;
+ esac
+ done
+ else
+ found=0
+ fi
+
+
+ if [ $found -eq 0 ] ; then
+ # New Zone! Bundle local-zones: by first two name tiers "abcd.tld."
+ partial=$( echo "$target" | awk -F. '{ j=NF ; i=j-1; print $i"."$j }' )
+ UNBOUND_LIST_DOMAINS="$UNBOUND_LIST_DOMAINS $partial"
+ echo " local-zone: $partial. transparent" >> $UNBOUND_CONFFILE
+ fi
+}
+
+##############################################################################
+
+create_host_record() {
+ local cfg="$1"
+ local ip name
+
+ # basefiles dhcp "domain" clause which means host A, AAAA, and PRT record
+ config_get ip "$cfg" ip
+ config_get name "$cfg" name
+
+
+ if [ -n "$name" -a -n "$ip" ] ; then
+ create_local_zone "$name"
+
+ {
+ case $ip in
+ fe80:*|169.254.*)
+ echo " # note link address $ip for host $name"
+ ;;
+
+ [1-9a-f]*:*[0-9a-f])
+ echo " local-data: \"$name. 120 IN AAAA $ip\""
+ echo " local-data-ptr: \"$ip 120 $name\""
+ ;;
+
+ [1-9]*.*[0-9])
+ echo " local-data: \"$name. 120 IN A $ip\""
+ echo " local-data-ptr: \"$ip 120 $name\""
+ ;;
+ esac
+ } >> $UNBOUND_CONFFILE
+ fi
+}
+
+##############################################################################
+
+create_mx_record() {
+ local cfg="$1"
+ local domain relay pref
+
+ # Insert a static MX record
+ config_get domain "$cfg" domain
+ config_get relay "$cfg" relay
+ config_get pref "$cfg" pref 10
+
+
+ if [ -n "$domain" -a -n "$relay" ] ; then
+ create_local_zone "$domain"
+ echo " local-data: \"$domain. 120 IN MX $pref $relay.\"" \
+ >> $UNBOUND_CONFFILE
+ fi
+}
+
+##############################################################################
+
+create_srv_record() {
+ local cfg="$1"
+ local srv target port class weight
+
+ # Insert a static SRV record such as SIP server
+ config_get srv "$cfg" srv
+ config_get target "$cfg" target
+ config_get port "$cfg" port
+ config_get class "$cfg" class 10
+ config_get weight "$cfg" weight 10
+
+
+ if [ -n "$srv" -a -n "$target" -a -n "$port" ] ; then
+ create_local_zone "$srv"
+ echo " local-data: \"$srv. 120 IN SRV $class $weight $port $target.\"" \
+ >> $UNBOUND_CONFFILE
+ fi
+}
+
+##############################################################################
+
+create_cname_record() {
+ local cfg="$1"
+ local cname target
+
+ # Insert static CNAME record
+ config_get cname "$cfg" cname
+ config_get target "$cfg" target
+
+
+ if [ -n "$cname" -a -n "$target" ] ; then
+ create_local_zone "$cname"
+ echo " local-data: \"$cname. 120 IN CNAME $target.\"" >> $UNBOUND_CONFFILE
+ fi
+}
+
+##############################################################################
+
create_access_control() {
local cfg="$1"
local subnets subnets4 subnets6
unbound_mkdir() {
local resolvsym=0
- local dhcp_origin=$( uci get dhcp.@odhcpd[0].leasefile )
- local dhcp_dir=$( dirname "$dhcp_origin" )
+ local dhcp_origin=$( uci_get dhcp.@odhcpd[0].leasefile )
+ local dhcp_dir=$( dirname $dhcp_origin )
local filestuff
##############################################################################
+unbound_records() {
+ if [ "$UNBOUND_D_EXTRA_DNS" -gt 0 ] ; then
+ # Parasite from the uci.dhcp.domain clauses
+ config_load dhcp
+ config_foreach create_host_record domain
+ fi
+
+
+ if [ "$UNBOUND_D_EXTRA_DNS" -gt 1 ] ; then
+ config_foreach create_srv_record srvhost
+ config_foreach create_mx_record mxhost
+ fi
+
+
+ if [ "$UNBOUND_D_EXTRA_DNS" -gt 2 ] ; then
+ config_foreach create_cname_record cname
+ fi
+
+
+ echo >> $UNBOUND_CONFFILE
+}
+
+##############################################################################
+
unbound_uci() {
local cfg="$1"
local dnsmasqpath hostnm
- hostnm="$(uci_get system.@system[0].hostname | awk '{print tolower($0)}')"
+ hostnm=$( uci_get system.@system[0].hostname | awk '{print tolower($0)}' )
UNBOUND_TXT_HOSTNAME=${hostnm:-thisrouter}
config_get_bool UNBOUND_B_SLAAC6_MAC "$cfg" dhcp4_slaac6 0
config_get UNBOUND_D_DOMAIN_TYPE "$cfg" domain_type static
config_get UNBOUND_D_DHCP_LINK "$cfg" dhcp_link none
+ config_get UNBOUND_D_EXTRA_DNS "$cfg" add_extra_dns 0
config_get UNBOUND_D_LAN_FQDN "$cfg" add_local_fqdn 0
config_get UNBOUND_D_PROTOCOL "$cfg" protocol mixed
config_get UNBOUND_D_RECURSION "$cfg" recursion passive
config_get UNBOUND_TTL_MIN "$cfg" ttl_min 120
config_get UNBOUND_TXT_DOMAIN "$cfg" domain lan
+ UNBOUND_LIST_DOMAINS="nowhere $UNBOUND_TXT_DOMAIN"
if [ "$UNBOUND_D_DHCP_LINK" = "none" ] ; then
config_get_bool UNBOUND_B_DNSMASQ "$cfg" dnsmasq_link_dns 0
if [ "$UNBOUND_B_DNSMASQ" -gt 0 ] ; then
UNBOUND_D_DHCP_LINK=dnsmasq
-
-
+
+
if [ ! -f "$UNBOUND_TIMEFILE" ] ; then
logger -t unbound -s "Please use 'dhcp_link' selector instead"
fi
dnsmasq_link
else
unbound_hostname
+ unbound_records
fi
unbound_control
config unbound
+ option add_extra_dns '0'
option add_local_fqdn '1'
option add_wan_fqdn '0'
option dhcp_link 'none'
option unbound_control '0'
option validator '0'
option validator_ntp '1'
- #list domain_insecure ''
+ list trigger 'lan'
+ list trigger 'wan'
+ #list domain_insecure 'www.example.com'
PKG_NAME:=vsftpd
PKG_VERSION:=3.0.3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://security.appspot.com/downloads/
-PKG_MD5SUM:=da119d084bd3f98664636ea05b5bb398
+PKG_HASH:=9d4d2bf6e6e2884852ba4e69e157a2cecd68c5a7635d66a3a8cf8d898c955ef7
PKG_LICENSE:=GPLv2
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
SUBMENU:=File Transfer
SECTION:=net
CATEGORY:=Network
- TITLE:=A fast and secure FTP server
- URL:=http://vsftpd.beasts.org/
+ TITLE:=Fast and secure FTP server
+ URL:=https://security.appspot.com/vsftpd.html
MAINTAINER:=Cezary Jackiewicz <cezary@eko.one.pl>
endef
define Package/vsftpd/conffiles
/etc/vsftpd.conf
+/etc/vsftpd
endef
Package/vsftpd-tls/conffiles=$(Package/vsftpd/conffiles)
$(INSTALL_CONF) ./files/$(PKG_NAME).conf $(1)/etc/$(PKG_NAME).conf
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/$(PKG_NAME).init $(1)/etc/init.d/$(PKG_NAME)
+ $(INSTALL_DIR) $(1)/etc/vsftpd
endef
Package/vsftpd-tls/install=$(Package/vsftpd/install)
#syslog_enable=YES
#userlist_enable=YES
#userlist_deny=NO
-#userlist_file=/etc/vsftpd.users
+#userlist_file=/etc/vsftpd/vsftpd.users
#xferlog_enable=YES
#xferlog_file=/var/log/vsftpd.log
#xferlog_std_format=YES
###
### TLS/SSL options
-### example key generation: openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/config/vsftpd_privkey.pem -out /etc/config/vsftpd_cert.pem -subj /C="DE"/ST="Saxony"/L="Leipzig"/CN="OpenWrt"
+### example key generation: openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd_privkey.pem -out /etc/vsftpd/vsftpd_cert.pem -subj /C="DE"/ST="Saxony"/L="Leipzig"/CN="OpenWrt"
#ssl_enable=YES
#allow_anon_ssl=NO
#force_local_data_ssl=NO
#ssl_tlsv1=YES
#ssl_sslv2=NO
#ssl_sslv3=NO
-#rsa_cert_file=/etc/config/vsftpd_cert.pem
-#rsa_private_key_file=/etc/config/vsftpd_privkey.pem
+#rsa_cert_file=/etc/vsftpd/vsftpd_cert.pem
+#rsa_private_key_file=/etc/vsftpd/vsftpd_privkey.pem
#
-# Copyright (C) 2016 OpenWrt.org
+# Copyright (C) 2016-2017 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=webui-aria2
-PKG_SOURCE_DATE:=2017-04-02
+PKG_SOURCE_DATE:=2017-05-21
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/ziahamza/webui-aria2
-PKG_SOURCE_VERSION:=d2a662849a792bb8d7b83519bac1eeee0fcec4e9
+PKG_SOURCE_VERSION:=d1ce5b992680f4d03eeee899ed8280cbcab8961a
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE
$(1)/www/webui-aria2
$(CP) \
- $(PKG_BUILD_DIR)/flags/4x3/{cn,de,es,fr,it,nl,pl,ru,th,tr,tw,us}.svg \
+ $(PKG_BUILD_DIR)/flags/4x3/{cn,cz,de,es,fr,it,nl,pl,ru,th,tr,tw,us}.svg \
$(1)/www/webui-aria2/flags/4x3
endef
@@ -1 +1 @@
-.flag-icon,.flag-icon-background{background-repeat:no-repeat;background-size:contain;background-position:50%}.flag-icon{position:relative;display:inline-block;width:1.33333333em;line-height:1em}.flag-icon:before{content:"\00a0"}.flag-icon.flag-icon-squared{width:1em}.flag-icon-ad{background-image:url(../flags/4x3/ad.svg)}.flag-icon-ad.flag-icon-squared{background-image:url(../flags/1x1/ad.svg)}.flag-icon-ae{background-image:url(../flags/4x3/ae.svg)}.flag-icon-ae.flag-icon-squared{background-image:url(../flags/1x1/ae.svg)}.flag-icon-af{background-image:url(../flags/4x3/af.svg)}.flag-icon-af.flag-icon-squared{background-image:url(../flags/1x1/af.svg)}.flag-icon-ag{background-image:url(../flags/4x3/ag.svg)}.flag-icon-ag.flag-icon-squared{background-image:url(../flags/1x1/ag.svg)}.flag-icon-ai{background-image:url(../flags/4x3/ai.svg)}.flag-icon-ai.flag-icon-squared{background-image:url(../flags/1x1/ai.svg)}.flag-icon-al{background-image:url(../flags/4x3/al.svg)}.flag-icon-al.flag-icon-squared{background-image:url(../flags/1x1/al.svg)}.flag-icon-am{background-image:url(../flags/4x3/am.svg)}.flag-icon-am.flag-icon-squared{background-image:url(../flags/1x1/am.svg)}.flag-icon-ao{background-image:url(../flags/4x3/ao.svg)}.flag-icon-ao.flag-icon-squared{background-image:url(../flags/1x1/ao.svg)}.flag-icon-aq{background-image:url(../flags/4x3/aq.svg)}.flag-icon-aq.flag-icon-squared{background-image:url(../flags/1x1/aq.svg)}.flag-icon-ar{background-image:url(../flags/4x3/ar.svg)}.flag-icon-ar.flag-icon-squared{background-image:url(../flags/1x1/ar.svg)}.flag-icon-as{background-image:url(../flags/4x3/as.svg)}.flag-icon-as.flag-icon-squared{background-image:url(../flags/1x1/as.svg)}.flag-icon-at{background-image:url(../flags/4x3/at.svg)}.flag-icon-at.flag-icon-squared{background-image:url(../flags/1x1/at.svg)}.flag-icon-au{background-image:url(../flags/4x3/au.svg)}.flag-icon-au.flag-icon-squared{background-image:url(../flags/1x1/au.svg)}.flag-icon-aw{background-image:url(../flags/4x3/aw.svg)}.flag-icon-aw.flag-icon-squared{background-image:url(../flags/1x1/aw.svg)}.flag-icon-ax{background-image:url(../flags/4x3/ax.svg)}.flag-icon-ax.flag-icon-squared{background-image:url(../flags/1x1/ax.svg)}.flag-icon-az{background-image:url(../flags/4x3/az.svg)}.flag-icon-az.flag-icon-squared{background-image:url(../flags/1x1/az.svg)}.flag-icon-ba{background-image:url(../flags/4x3/ba.svg)}.flag-icon-ba.flag-icon-squared{background-image:url(../flags/1x1/ba.svg)}.flag-icon-bb{background-image:url(../flags/4x3/bb.svg)}.flag-icon-bb.flag-icon-squared{background-image:url(../flags/1x1/bb.svg)}.flag-icon-bd{background-image:url(../flags/4x3/bd.svg)}.flag-icon-bd.flag-icon-squared{background-image:url(../flags/1x1/bd.svg)}.flag-icon-be{background-image:url(../flags/4x3/be.svg)}.flag-icon-be.flag-icon-squared{background-image:url(../flags/1x1/be.svg)}.flag-icon-bf{background-image:url(../flags/4x3/bf.svg)}.flag-icon-bf.flag-icon-squared{background-image:url(../flags/1x1/bf.svg)}.flag-icon-bg{background-image:url(../flags/4x3/bg.svg)}.flag-icon-bg.flag-icon-squared{background-image:url(../flags/1x1/bg.svg)}.flag-icon-bh{background-image:url(../flags/4x3/bh.svg)}.flag-icon-bh.flag-icon-squared{background-image:url(../flags/1x1/bh.svg)}.flag-icon-bi{background-image:url(../flags/4x3/bi.svg)}.flag-icon-bi.flag-icon-squared{background-image:url(../flags/1x1/bi.svg)}.flag-icon-bj{background-image:url(../flags/4x3/bj.svg)}.flag-icon-bj.flag-icon-squared{background-image:url(../flags/1x1/bj.svg)}.flag-icon-bl{background-image:url(../flags/4x3/bl.svg)}.flag-icon-bl.flag-icon-squared{background-image:url(../flags/1x1/bl.svg)}.flag-icon-bm{background-image:url(../flags/4x3/bm.svg)}.flag-icon-bm.flag-icon-squared{background-image:url(../flags/1x1/bm.svg)}.flag-icon-bn{background-image:url(../flags/4x3/bn.svg)}.flag-icon-bn.flag-icon-squared{background-image:url(../flags/1x1/bn.svg)}.flag-icon-bo{background-image:url(../flags/4x3/bo.svg)}.flag-icon-bo.flag-icon-squared{background-image:url(../flags/1x1/bo.svg)}.flag-icon-bq{background-image:url(../flags/4x3/bq.svg)}.flag-icon-bq.flag-icon-squared{background-image:url(../flags/1x1/bq.svg)}.flag-icon-br{background-image:url(../flags/4x3/br.svg)}.flag-icon-br.flag-icon-squared{background-image:url(../flags/1x1/br.svg)}.flag-icon-bs{background-image:url(../flags/4x3/bs.svg)}.flag-icon-bs.flag-icon-squared{background-image:url(../flags/1x1/bs.svg)}.flag-icon-bt{background-image:url(../flags/4x3/bt.svg)}.flag-icon-bt.flag-icon-squared{background-image:url(../flags/1x1/bt.svg)}.flag-icon-bv{background-image:url(../flags/4x3/bv.svg)}.flag-icon-bv.flag-icon-squared{background-image:url(../flags/1x1/bv.svg)}.flag-icon-bw{background-image:url(../flags/4x3/bw.svg)}.flag-icon-bw.flag-icon-squared{background-image:url(../flags/1x1/bw.svg)}.flag-icon-by{background-image:url(../flags/4x3/by.svg)}.flag-icon-by.flag-icon-squared{background-image:url(../flags/1x1/by.svg)}.flag-icon-bz{background-image:url(../flags/4x3/bz.svg)}.flag-icon-bz.flag-icon-squared{background-image:url(../flags/1x1/bz.svg)}.flag-icon-ca{background-image:url(../flags/4x3/ca.svg)}.flag-icon-ca.flag-icon-squared{background-image:url(../flags/1x1/ca.svg)}.flag-icon-cc{background-image:url(../flags/4x3/cc.svg)}.flag-icon-cc.flag-icon-squared{background-image:url(../flags/1x1/cc.svg)}.flag-icon-cd{background-image:url(../flags/4x3/cd.svg)}.flag-icon-cd.flag-icon-squared{background-image:url(../flags/1x1/cd.svg)}.flag-icon-cf{background-image:url(../flags/4x3/cf.svg)}.flag-icon-cf.flag-icon-squared{background-image:url(../flags/1x1/cf.svg)}.flag-icon-cg{background-image:url(../flags/4x3/cg.svg)}.flag-icon-cg.flag-icon-squared{background-image:url(../flags/1x1/cg.svg)}.flag-icon-ch{background-image:url(../flags/4x3/ch.svg)}.flag-icon-ch.flag-icon-squared{background-image:url(../flags/1x1/ch.svg)}.flag-icon-ci{background-image:url(../flags/4x3/ci.svg)}.flag-icon-ci.flag-icon-squared{background-image:url(../flags/1x1/ci.svg)}.flag-icon-ck{background-image:url(../flags/4x3/ck.svg)}.flag-icon-ck.flag-icon-squared{background-image:url(../flags/1x1/ck.svg)}.flag-icon-cl{background-image:url(../flags/4x3/cl.svg)}.flag-icon-cl.flag-icon-squared{background-image:url(../flags/1x1/cl.svg)}.flag-icon-cm{background-image:url(../flags/4x3/cm.svg)}.flag-icon-cm.flag-icon-squared{background-image:url(../flags/1x1/cm.svg)}.flag-icon-cn{background-image:url(../flags/4x3/cn.svg)}.flag-icon-cn.flag-icon-squared{background-image:url(../flags/1x1/cn.svg)}.flag-icon-co{background-image:url(../flags/4x3/co.svg)}.flag-icon-co.flag-icon-squared{background-image:url(../flags/1x1/co.svg)}.flag-icon-cr{background-image:url(../flags/4x3/cr.svg)}.flag-icon-cr.flag-icon-squared{background-image:url(../flags/1x1/cr.svg)}.flag-icon-cu{background-image:url(../flags/4x3/cu.svg)}.flag-icon-cu.flag-icon-squared{background-image:url(../flags/1x1/cu.svg)}.flag-icon-cv{background-image:url(../flags/4x3/cv.svg)}.flag-icon-cv.flag-icon-squared{background-image:url(../flags/1x1/cv.svg)}.flag-icon-cw{background-image:url(../flags/4x3/cw.svg)}.flag-icon-cw.flag-icon-squared{background-image:url(../flags/1x1/cw.svg)}.flag-icon-cx{background-image:url(../flags/4x3/cx.svg)}.flag-icon-cx.flag-icon-squared{background-image:url(../flags/1x1/cx.svg)}.flag-icon-cy{background-image:url(../flags/4x3/cy.svg)}.flag-icon-cy.flag-icon-squared{background-image:url(../flags/1x1/cy.svg)}.flag-icon-cz{background-image:url(../flags/4x3/cz.svg)}.flag-icon-cz.flag-icon-squared{background-image:url(../flags/1x1/cz.svg)}.flag-icon-de{background-image:url(../flags/4x3/de.svg)}.flag-icon-de.flag-icon-squared{background-image:url(../flags/1x1/de.svg)}.flag-icon-dj{background-image:url(../flags/4x3/dj.svg)}.flag-icon-dj.flag-icon-squared{background-image:url(../flags/1x1/dj.svg)}.flag-icon-dk{background-image:url(../flags/4x3/dk.svg)}.flag-icon-dk.flag-icon-squared{background-image:url(../flags/1x1/dk.svg)}.flag-icon-dm{background-image:url(../flags/4x3/dm.svg)}.flag-icon-dm.flag-icon-squared{background-image:url(../flags/1x1/dm.svg)}.flag-icon-do{background-image:url(../flags/4x3/do.svg)}.flag-icon-do.flag-icon-squared{background-image:url(../flags/1x1/do.svg)}.flag-icon-dz{background-image:url(../flags/4x3/dz.svg)}.flag-icon-dz.flag-icon-squared{background-image:url(../flags/1x1/dz.svg)}.flag-icon-ec{background-image:url(../flags/4x3/ec.svg)}.flag-icon-ec.flag-icon-squared{background-image:url(../flags/1x1/ec.svg)}.flag-icon-ee{background-image:url(../flags/4x3/ee.svg)}.flag-icon-ee.flag-icon-squared{background-image:url(../flags/1x1/ee.svg)}.flag-icon-eg{background-image:url(../flags/4x3/eg.svg)}.flag-icon-eg.flag-icon-squared{background-image:url(../flags/1x1/eg.svg)}.flag-icon-eh{background-image:url(../flags/4x3/eh.svg)}.flag-icon-eh.flag-icon-squared{background-image:url(../flags/1x1/eh.svg)}.flag-icon-er{background-image:url(../flags/4x3/er.svg)}.flag-icon-er.flag-icon-squared{background-image:url(../flags/1x1/er.svg)}.flag-icon-es{background-image:url(../flags/4x3/es.svg)}.flag-icon-es.flag-icon-squared{background-image:url(../flags/1x1/es.svg)}.flag-icon-et{background-image:url(../flags/4x3/et.svg)}.flag-icon-et.flag-icon-squared{background-image:url(../flags/1x1/et.svg)}.flag-icon-fi{background-image:url(../flags/4x3/fi.svg)}.flag-icon-fi.flag-icon-squared{background-image:url(../flags/1x1/fi.svg)}.flag-icon-fj{background-image:url(../flags/4x3/fj.svg)}.flag-icon-fj.flag-icon-squared{background-image:url(../flags/1x1/fj.svg)}.flag-icon-fk{background-image:url(../flags/4x3/fk.svg)}.flag-icon-fk.flag-icon-squared{background-image:url(../flags/1x1/fk.svg)}.flag-icon-fm{background-image:url(../flags/4x3/fm.svg)}.flag-icon-fm.flag-icon-squared{background-image:url(../flags/1x1/fm.svg)}.flag-icon-fo{background-image:url(../flags/4x3/fo.svg)}.flag-icon-fo.flag-icon-squared{background-image:url(../flags/1x1/fo.svg)}.flag-icon-fr{background-image:url(../flags/4x3/fr.svg)}.flag-icon-fr.flag-icon-squared{background-image:url(../flags/1x1/fr.svg)}.flag-icon-ga{background-image:url(../flags/4x3/ga.svg)}.flag-icon-ga.flag-icon-squared{background-image:url(../flags/1x1/ga.svg)}.flag-icon-gb{background-image:url(../flags/4x3/gb.svg)}.flag-icon-gb.flag-icon-squared{background-image:url(../flags/1x1/gb.svg)}.flag-icon-gd{background-image:url(../flags/4x3/gd.svg)}.flag-icon-gd.flag-icon-squared{background-image:url(../flags/1x1/gd.svg)}.flag-icon-ge{background-image:url(../flags/4x3/ge.svg)}.flag-icon-ge.flag-icon-squared{background-image:url(../flags/1x1/ge.svg)}.flag-icon-gf{background-image:url(../flags/4x3/gf.svg)}.flag-icon-gf.flag-icon-squared{background-image:url(../flags/1x1/gf.svg)}.flag-icon-gg{background-image:url(../flags/4x3/gg.svg)}.flag-icon-gg.flag-icon-squared{background-image:url(../flags/1x1/gg.svg)}.flag-icon-gh{background-image:url(../flags/4x3/gh.svg)}.flag-icon-gh.flag-icon-squared{background-image:url(../flags/1x1/gh.svg)}.flag-icon-gi{background-image:url(../flags/4x3/gi.svg)}.flag-icon-gi.flag-icon-squared{background-image:url(../flags/1x1/gi.svg)}.flag-icon-gl{background-image:url(../flags/4x3/gl.svg)}.flag-icon-gl.flag-icon-squared{background-image:url(../flags/1x1/gl.svg)}.flag-icon-gm{background-image:url(../flags/4x3/gm.svg)}.flag-icon-gm.flag-icon-squared{background-image:url(../flags/1x1/gm.svg)}.flag-icon-gn{background-image:url(../flags/4x3/gn.svg)}.flag-icon-gn.flag-icon-squared{background-image:url(../flags/1x1/gn.svg)}.flag-icon-gp{background-image:url(../flags/4x3/gp.svg)}.flag-icon-gp.flag-icon-squared{background-image:url(../flags/1x1/gp.svg)}.flag-icon-gq{background-image:url(../flags/4x3/gq.svg)}.flag-icon-gq.flag-icon-squared{background-image:url(../flags/1x1/gq.svg)}.flag-icon-gr{background-image:url(../flags/4x3/gr.svg)}.flag-icon-gr.flag-icon-squared{background-image:url(../flags/1x1/gr.svg)}.flag-icon-gs{background-image:url(../flags/4x3/gs.svg)}.flag-icon-gs.flag-icon-squared{background-image:url(../flags/1x1/gs.svg)}.flag-icon-gt{background-image:url(../flags/4x3/gt.svg)}.flag-icon-gt.flag-icon-squared{background-image:url(../flags/1x1/gt.svg)}.flag-icon-gu{background-image:url(../flags/4x3/gu.svg)}.flag-icon-gu.flag-icon-squared{background-image:url(../flags/1x1/gu.svg)}.flag-icon-gw{background-image:url(../flags/4x3/gw.svg)}.flag-icon-gw.flag-icon-squared{background-image:url(../flags/1x1/gw.svg)}.flag-icon-gy{background-image:url(../flags/4x3/gy.svg)}.flag-icon-gy.flag-icon-squared{background-image:url(../flags/1x1/gy.svg)}.flag-icon-hk{background-image:url(../flags/4x3/hk.svg)}.flag-icon-hk.flag-icon-squared{background-image:url(../flags/1x1/hk.svg)}.flag-icon-hm{background-image:url(../flags/4x3/hm.svg)}.flag-icon-hm.flag-icon-squared{background-image:url(../flags/1x1/hm.svg)}.flag-icon-hn{background-image:url(../flags/4x3/hn.svg)}.flag-icon-hn.flag-icon-squared{background-image:url(../flags/1x1/hn.svg)}.flag-icon-hr{background-image:url(../flags/4x3/hr.svg)}.flag-icon-hr.flag-icon-squared{background-image:url(../flags/1x1/hr.svg)}.flag-icon-ht{background-image:url(../flags/4x3/ht.svg)}.flag-icon-ht.flag-icon-squared{background-image:url(../flags/1x1/ht.svg)}.flag-icon-hu{background-image:url(../flags/4x3/hu.svg)}.flag-icon-hu.flag-icon-squared{background-image:url(../flags/1x1/hu.svg)}.flag-icon-id{background-image:url(../flags/4x3/id.svg)}.flag-icon-id.flag-icon-squared{background-image:url(../flags/1x1/id.svg)}.flag-icon-ie{background-image:url(../flags/4x3/ie.svg)}.flag-icon-ie.flag-icon-squared{background-image:url(../flags/1x1/ie.svg)}.flag-icon-il{background-image:url(../flags/4x3/il.svg)}.flag-icon-il.flag-icon-squared{background-image:url(../flags/1x1/il.svg)}.flag-icon-im{background-image:url(../flags/4x3/im.svg)}.flag-icon-im.flag-icon-squared{background-image:url(../flags/1x1/im.svg)}.flag-icon-in{background-image:url(../flags/4x3/in.svg)}.flag-icon-in.flag-icon-squared{background-image:url(../flags/1x1/in.svg)}.flag-icon-io{background-image:url(../flags/4x3/io.svg)}.flag-icon-io.flag-icon-squared{background-image:url(../flags/1x1/io.svg)}.flag-icon-iq{background-image:url(../flags/4x3/iq.svg)}.flag-icon-iq.flag-icon-squared{background-image:url(../flags/1x1/iq.svg)}.flag-icon-ir{background-image:url(../flags/4x3/ir.svg)}.flag-icon-ir.flag-icon-squared{background-image:url(../flags/1x1/ir.svg)}.flag-icon-is{background-image:url(../flags/4x3/is.svg)}.flag-icon-is.flag-icon-squared{background-image:url(../flags/1x1/is.svg)}.flag-icon-it{background-image:url(../flags/4x3/it.svg)}.flag-icon-it.flag-icon-squared{background-image:url(../flags/1x1/it.svg)}.flag-icon-je{background-image:url(../flags/4x3/je.svg)}.flag-icon-je.flag-icon-squared{background-image:url(../flags/1x1/je.svg)}.flag-icon-jm{background-image:url(../flags/4x3/jm.svg)}.flag-icon-jm.flag-icon-squared{background-image:url(../flags/1x1/jm.svg)}.flag-icon-jo{background-image:url(../flags/4x3/jo.svg)}.flag-icon-jo.flag-icon-squared{background-image:url(../flags/1x1/jo.svg)}.flag-icon-jp{background-image:url(../flags/4x3/jp.svg)}.flag-icon-jp.flag-icon-squared{background-image:url(../flags/1x1/jp.svg)}.flag-icon-ke{background-image:url(../flags/4x3/ke.svg)}.flag-icon-ke.flag-icon-squared{background-image:url(../flags/1x1/ke.svg)}.flag-icon-kg{background-image:url(../flags/4x3/kg.svg)}.flag-icon-kg.flag-icon-squared{background-image:url(../flags/1x1/kg.svg)}.flag-icon-kh{background-image:url(../flags/4x3/kh.svg)}.flag-icon-kh.flag-icon-squared{background-image:url(../flags/1x1/kh.svg)}.flag-icon-ki{background-image:url(../flags/4x3/ki.svg)}.flag-icon-ki.flag-icon-squared{background-image:url(../flags/1x1/ki.svg)}.flag-icon-km{background-image:url(../flags/4x3/km.svg)}.flag-icon-km.flag-icon-squared{background-image:url(../flags/1x1/km.svg)}.flag-icon-kn{background-image:url(../flags/4x3/kn.svg)}.flag-icon-kn.flag-icon-squared{background-image:url(../flags/1x1/kn.svg)}.flag-icon-kp{background-image:url(../flags/4x3/kp.svg)}.flag-icon-kp.flag-icon-squared{background-image:url(../flags/1x1/kp.svg)}.flag-icon-kr{background-image:url(../flags/4x3/kr.svg)}.flag-icon-kr.flag-icon-squared{background-image:url(../flags/1x1/kr.svg)}.flag-icon-kw{background-image:url(../flags/4x3/kw.svg)}.flag-icon-kw.flag-icon-squared{background-image:url(../flags/1x1/kw.svg)}.flag-icon-ky{background-image:url(../flags/4x3/ky.svg)}.flag-icon-ky.flag-icon-squared{background-image:url(../flags/1x1/ky.svg)}.flag-icon-kz{background-image:url(../flags/4x3/kz.svg)}.flag-icon-kz.flag-icon-squared{background-image:url(../flags/1x1/kz.svg)}.flag-icon-la{background-image:url(../flags/4x3/la.svg)}.flag-icon-la.flag-icon-squared{background-image:url(../flags/1x1/la.svg)}.flag-icon-lb{background-image:url(../flags/4x3/lb.svg)}.flag-icon-lb.flag-icon-squared{background-image:url(../flags/1x1/lb.svg)}.flag-icon-lc{background-image:url(../flags/4x3/lc.svg)}.flag-icon-lc.flag-icon-squared{background-image:url(../flags/1x1/lc.svg)}.flag-icon-li{background-image:url(../flags/4x3/li.svg)}.flag-icon-li.flag-icon-squared{background-image:url(../flags/1x1/li.svg)}.flag-icon-lk{background-image:url(../flags/4x3/lk.svg)}.flag-icon-lk.flag-icon-squared{background-image:url(../flags/1x1/lk.svg)}.flag-icon-lr{background-image:url(../flags/4x3/lr.svg)}.flag-icon-lr.flag-icon-squared{background-image:url(../flags/1x1/lr.svg)}.flag-icon-ls{background-image:url(../flags/4x3/ls.svg)}.flag-icon-ls.flag-icon-squared{background-image:url(../flags/1x1/ls.svg)}.flag-icon-lt{background-image:url(../flags/4x3/lt.svg)}.flag-icon-lt.flag-icon-squared{background-image:url(../flags/1x1/lt.svg)}.flag-icon-lu{background-image:url(../flags/4x3/lu.svg)}.flag-icon-lu.flag-icon-squared{background-image:url(../flags/1x1/lu.svg)}.flag-icon-lv{background-image:url(../flags/4x3/lv.svg)}.flag-icon-lv.flag-icon-squared{background-image:url(../flags/1x1/lv.svg)}.flag-icon-ly{background-image:url(../flags/4x3/ly.svg)}.flag-icon-ly.flag-icon-squared{background-image:url(../flags/1x1/ly.svg)}.flag-icon-ma{background-image:url(../flags/4x3/ma.svg)}.flag-icon-ma.flag-icon-squared{background-image:url(../flags/1x1/ma.svg)}.flag-icon-mc{background-image:url(../flags/4x3/mc.svg)}.flag-icon-mc.flag-icon-squared{background-image:url(../flags/1x1/mc.svg)}.flag-icon-md{background-image:url(../flags/4x3/md.svg)}.flag-icon-md.flag-icon-squared{background-image:url(../flags/1x1/md.svg)}.flag-icon-me{background-image:url(../flags/4x3/me.svg)}.flag-icon-me.flag-icon-squared{background-image:url(../flags/1x1/me.svg)}.flag-icon-mf{background-image:url(../flags/4x3/mf.svg)}.flag-icon-mf.flag-icon-squared{background-image:url(../flags/1x1/mf.svg)}.flag-icon-mg{background-image:url(../flags/4x3/mg.svg)}.flag-icon-mg.flag-icon-squared{background-image:url(../flags/1x1/mg.svg)}.flag-icon-mh{background-image:url(../flags/4x3/mh.svg)}.flag-icon-mh.flag-icon-squared{background-image:url(../flags/1x1/mh.svg)}.flag-icon-mk{background-image:url(../flags/4x3/mk.svg)}.flag-icon-mk.flag-icon-squared{background-image:url(../flags/1x1/mk.svg)}.flag-icon-ml{background-image:url(../flags/4x3/ml.svg)}.flag-icon-ml.flag-icon-squared{background-image:url(../flags/1x1/ml.svg)}.flag-icon-mm{background-image:url(../flags/4x3/mm.svg)}.flag-icon-mm.flag-icon-squared{background-image:url(../flags/1x1/mm.svg)}.flag-icon-mn{background-image:url(../flags/4x3/mn.svg)}.flag-icon-mn.flag-icon-squared{background-image:url(../flags/1x1/mn.svg)}.flag-icon-mo{background-image:url(../flags/4x3/mo.svg)}.flag-icon-mo.flag-icon-squared{background-image:url(../flags/1x1/mo.svg)}.flag-icon-mp{background-image:url(../flags/4x3/mp.svg)}.flag-icon-mp.flag-icon-squared{background-image:url(../flags/1x1/mp.svg)}.flag-icon-mq{background-image:url(../flags/4x3/mq.svg)}.flag-icon-mq.flag-icon-squared{background-image:url(../flags/1x1/mq.svg)}.flag-icon-mr{background-image:url(../flags/4x3/mr.svg)}.flag-icon-mr.flag-icon-squared{background-image:url(../flags/1x1/mr.svg)}.flag-icon-ms{background-image:url(../flags/4x3/ms.svg)}.flag-icon-ms.flag-icon-squared{background-image:url(../flags/1x1/ms.svg)}.flag-icon-mt{background-image:url(../flags/4x3/mt.svg)}.flag-icon-mt.flag-icon-squared{background-image:url(../flags/1x1/mt.svg)}.flag-icon-mu{background-image:url(../flags/4x3/mu.svg)}.flag-icon-mu.flag-icon-squared{background-image:url(../flags/1x1/mu.svg)}.flag-icon-mv{background-image:url(../flags/4x3/mv.svg)}.flag-icon-mv.flag-icon-squared{background-image:url(../flags/1x1/mv.svg)}.flag-icon-mw{background-image:url(../flags/4x3/mw.svg)}.flag-icon-mw.flag-icon-squared{background-image:url(../flags/1x1/mw.svg)}.flag-icon-mx{background-image:url(../flags/4x3/mx.svg)}.flag-icon-mx.flag-icon-squared{background-image:url(../flags/1x1/mx.svg)}.flag-icon-my{background-image:url(../flags/4x3/my.svg)}.flag-icon-my.flag-icon-squared{background-image:url(../flags/1x1/my.svg)}.flag-icon-mz{background-image:url(../flags/4x3/mz.svg)}.flag-icon-mz.flag-icon-squared{background-image:url(../flags/1x1/mz.svg)}.flag-icon-na{background-image:url(../flags/4x3/na.svg)}.flag-icon-na.flag-icon-squared{background-image:url(../flags/1x1/na.svg)}.flag-icon-nc{background-image:url(../flags/4x3/nc.svg)}.flag-icon-nc.flag-icon-squared{background-image:url(../flags/1x1/nc.svg)}.flag-icon-ne{background-image:url(../flags/4x3/ne.svg)}.flag-icon-ne.flag-icon-squared{background-image:url(../flags/1x1/ne.svg)}.flag-icon-nf{background-image:url(../flags/4x3/nf.svg)}.flag-icon-nf.flag-icon-squared{background-image:url(../flags/1x1/nf.svg)}.flag-icon-ng{background-image:url(../flags/4x3/ng.svg)}.flag-icon-ng.flag-icon-squared{background-image:url(../flags/1x1/ng.svg)}.flag-icon-ni{background-image:url(../flags/4x3/ni.svg)}.flag-icon-ni.flag-icon-squared{background-image:url(../flags/1x1/ni.svg)}.flag-icon-nl{background-image:url(../flags/4x3/nl.svg)}.flag-icon-nl.flag-icon-squared{background-image:url(../flags/1x1/nl.svg)}.flag-icon-no{background-image:url(../flags/4x3/no.svg)}.flag-icon-no.flag-icon-squared{background-image:url(../flags/1x1/no.svg)}.flag-icon-np{background-image:url(../flags/4x3/np.svg)}.flag-icon-np.flag-icon-squared{background-image:url(../flags/1x1/np.svg)}.flag-icon-nr{background-image:url(../flags/4x3/nr.svg)}.flag-icon-nr.flag-icon-squared{background-image:url(../flags/1x1/nr.svg)}.flag-icon-nu{background-image:url(../flags/4x3/nu.svg)}.flag-icon-nu.flag-icon-squared{background-image:url(../flags/1x1/nu.svg)}.flag-icon-nz{background-image:url(../flags/4x3/nz.svg)}.flag-icon-nz.flag-icon-squared{background-image:url(../flags/1x1/nz.svg)}.flag-icon-om{background-image:url(../flags/4x3/om.svg)}.flag-icon-om.flag-icon-squared{background-image:url(../flags/1x1/om.svg)}.flag-icon-pa{background-image:url(../flags/4x3/pa.svg)}.flag-icon-pa.flag-icon-squared{background-image:url(../flags/1x1/pa.svg)}.flag-icon-pe{background-image:url(../flags/4x3/pe.svg)}.flag-icon-pe.flag-icon-squared{background-image:url(../flags/1x1/pe.svg)}.flag-icon-pf{background-image:url(../flags/4x3/pf.svg)}.flag-icon-pf.flag-icon-squared{background-image:url(../flags/1x1/pf.svg)}.flag-icon-pg{background-image:url(../flags/4x3/pg.svg)}.flag-icon-pg.flag-icon-squared{background-image:url(../flags/1x1/pg.svg)}.flag-icon-ph{background-image:url(../flags/4x3/ph.svg)}.flag-icon-ph.flag-icon-squared{background-image:url(../flags/1x1/ph.svg)}.flag-icon-pk{background-image:url(../flags/4x3/pk.svg)}.flag-icon-pk.flag-icon-squared{background-image:url(../flags/1x1/pk.svg)}.flag-icon-pl{background-image:url(../flags/4x3/pl.svg)}.flag-icon-pl.flag-icon-squared{background-image:url(../flags/1x1/pl.svg)}.flag-icon-pm{background-image:url(../flags/4x3/pm.svg)}.flag-icon-pm.flag-icon-squared{background-image:url(../flags/1x1/pm.svg)}.flag-icon-pn{background-image:url(../flags/4x3/pn.svg)}.flag-icon-pn.flag-icon-squared{background-image:url(../flags/1x1/pn.svg)}.flag-icon-pr{background-image:url(../flags/4x3/pr.svg)}.flag-icon-pr.flag-icon-squared{background-image:url(../flags/1x1/pr.svg)}.flag-icon-ps{background-image:url(../flags/4x3/ps.svg)}.flag-icon-ps.flag-icon-squared{background-image:url(../flags/1x1/ps.svg)}.flag-icon-pt{background-image:url(../flags/4x3/pt.svg)}.flag-icon-pt.flag-icon-squared{background-image:url(../flags/1x1/pt.svg)}.flag-icon-pw{background-image:url(../flags/4x3/pw.svg)}.flag-icon-pw.flag-icon-squared{background-image:url(../flags/1x1/pw.svg)}.flag-icon-py{background-image:url(../flags/4x3/py.svg)}.flag-icon-py.flag-icon-squared{background-image:url(../flags/1x1/py.svg)}.flag-icon-qa{background-image:url(../flags/4x3/qa.svg)}.flag-icon-qa.flag-icon-squared{background-image:url(../flags/1x1/qa.svg)}.flag-icon-re{background-image:url(../flags/4x3/re.svg)}.flag-icon-re.flag-icon-squared{background-image:url(../flags/1x1/re.svg)}.flag-icon-ro{background-image:url(../flags/4x3/ro.svg)}.flag-icon-ro.flag-icon-squared{background-image:url(../flags/1x1/ro.svg)}.flag-icon-rs{background-image:url(../flags/4x3/rs.svg)}.flag-icon-rs.flag-icon-squared{background-image:url(../flags/1x1/rs.svg)}.flag-icon-ru{background-image:url(../flags/4x3/ru.svg)}.flag-icon-ru.flag-icon-squared{background-image:url(../flags/1x1/ru.svg)}.flag-icon-rw{background-image:url(../flags/4x3/rw.svg)}.flag-icon-rw.flag-icon-squared{background-image:url(../flags/1x1/rw.svg)}.flag-icon-sa{background-image:url(../flags/4x3/sa.svg)}.flag-icon-sa.flag-icon-squared{background-image:url(../flags/1x1/sa.svg)}.flag-icon-sb{background-image:url(../flags/4x3/sb.svg)}.flag-icon-sb.flag-icon-squared{background-image:url(../flags/1x1/sb.svg)}.flag-icon-sc{background-image:url(../flags/4x3/sc.svg)}.flag-icon-sc.flag-icon-squared{background-image:url(../flags/1x1/sc.svg)}.flag-icon-sd{background-image:url(../flags/4x3/sd.svg)}.flag-icon-sd.flag-icon-squared{background-image:url(../flags/1x1/sd.svg)}.flag-icon-se{background-image:url(../flags/4x3/se.svg)}.flag-icon-se.flag-icon-squared{background-image:url(../flags/1x1/se.svg)}.flag-icon-sg{background-image:url(../flags/4x3/sg.svg)}.flag-icon-sg.flag-icon-squared{background-image:url(../flags/1x1/sg.svg)}.flag-icon-sh{background-image:url(../flags/4x3/sh.svg)}.flag-icon-sh.flag-icon-squared{background-image:url(../flags/1x1/sh.svg)}.flag-icon-si{background-image:url(../flags/4x3/si.svg)}.flag-icon-si.flag-icon-squared{background-image:url(../flags/1x1/si.svg)}.flag-icon-sj{background-image:url(../flags/4x3/sj.svg)}.flag-icon-sj.flag-icon-squared{background-image:url(../flags/1x1/sj.svg)}.flag-icon-sk{background-image:url(../flags/4x3/sk.svg)}.flag-icon-sk.flag-icon-squared{background-image:url(../flags/1x1/sk.svg)}.flag-icon-sl{background-image:url(../flags/4x3/sl.svg)}.flag-icon-sl.flag-icon-squared{background-image:url(../flags/1x1/sl.svg)}.flag-icon-sm{background-image:url(../flags/4x3/sm.svg)}.flag-icon-sm.flag-icon-squared{background-image:url(../flags/1x1/sm.svg)}.flag-icon-sn{background-image:url(../flags/4x3/sn.svg)}.flag-icon-sn.flag-icon-squared{background-image:url(../flags/1x1/sn.svg)}.flag-icon-so{background-image:url(../flags/4x3/so.svg)}.flag-icon-so.flag-icon-squared{background-image:url(../flags/1x1/so.svg)}.flag-icon-sr{background-image:url(../flags/4x3/sr.svg)}.flag-icon-sr.flag-icon-squared{background-image:url(../flags/1x1/sr.svg)}.flag-icon-ss{background-image:url(../flags/4x3/ss.svg)}.flag-icon-ss.flag-icon-squared{background-image:url(../flags/1x1/ss.svg)}.flag-icon-st{background-image:url(../flags/4x3/st.svg)}.flag-icon-st.flag-icon-squared{background-image:url(../flags/1x1/st.svg)}.flag-icon-sv{background-image:url(../flags/4x3/sv.svg)}.flag-icon-sv.flag-icon-squared{background-image:url(../flags/1x1/sv.svg)}.flag-icon-sx{background-image:url(../flags/4x3/sx.svg)}.flag-icon-sx.flag-icon-squared{background-image:url(../flags/1x1/sx.svg)}.flag-icon-sy{background-image:url(../flags/4x3/sy.svg)}.flag-icon-sy.flag-icon-squared{background-image:url(../flags/1x1/sy.svg)}.flag-icon-sz{background-image:url(../flags/4x3/sz.svg)}.flag-icon-sz.flag-icon-squared{background-image:url(../flags/1x1/sz.svg)}.flag-icon-tc{background-image:url(../flags/4x3/tc.svg)}.flag-icon-tc.flag-icon-squared{background-image:url(../flags/1x1/tc.svg)}.flag-icon-td{background-image:url(../flags/4x3/td.svg)}.flag-icon-td.flag-icon-squared{background-image:url(../flags/1x1/td.svg)}.flag-icon-tf{background-image:url(../flags/4x3/tf.svg)}.flag-icon-tf.flag-icon-squared{background-image:url(../flags/1x1/tf.svg)}.flag-icon-tg{background-image:url(../flags/4x3/tg.svg)}.flag-icon-tg.flag-icon-squared{background-image:url(../flags/1x1/tg.svg)}.flag-icon-th{background-image:url(../flags/4x3/th.svg)}.flag-icon-th.flag-icon-squared{background-image:url(../flags/1x1/th.svg)}.flag-icon-tj{background-image:url(../flags/4x3/tj.svg)}.flag-icon-tj.flag-icon-squared{background-image:url(../flags/1x1/tj.svg)}.flag-icon-tk{background-image:url(../flags/4x3/tk.svg)}.flag-icon-tk.flag-icon-squared{background-image:url(../flags/1x1/tk.svg)}.flag-icon-tl{background-image:url(../flags/4x3/tl.svg)}.flag-icon-tl.flag-icon-squared{background-image:url(../flags/1x1/tl.svg)}.flag-icon-tm{background-image:url(../flags/4x3/tm.svg)}.flag-icon-tm.flag-icon-squared{background-image:url(../flags/1x1/tm.svg)}.flag-icon-tn{background-image:url(../flags/4x3/tn.svg)}.flag-icon-tn.flag-icon-squared{background-image:url(../flags/1x1/tn.svg)}.flag-icon-to{background-image:url(../flags/4x3/to.svg)}.flag-icon-to.flag-icon-squared{background-image:url(../flags/1x1/to.svg)}.flag-icon-tr{background-image:url(../flags/4x3/tr.svg)}.flag-icon-tr.flag-icon-squared{background-image:url(../flags/1x1/tr.svg)}.flag-icon-tt{background-image:url(../flags/4x3/tt.svg)}.flag-icon-tt.flag-icon-squared{background-image:url(../flags/1x1/tt.svg)}.flag-icon-tv{background-image:url(../flags/4x3/tv.svg)}.flag-icon-tv.flag-icon-squared{background-image:url(../flags/1x1/tv.svg)}.flag-icon-tw{background-image:url(../flags/4x3/tw.svg)}.flag-icon-tw.flag-icon-squared{background-image:url(../flags/1x1/tw.svg)}.flag-icon-tz{background-image:url(../flags/4x3/tz.svg)}.flag-icon-tz.flag-icon-squared{background-image:url(../flags/1x1/tz.svg)}.flag-icon-ua{background-image:url(../flags/4x3/ua.svg)}.flag-icon-ua.flag-icon-squared{background-image:url(../flags/1x1/ua.svg)}.flag-icon-ug{background-image:url(../flags/4x3/ug.svg)}.flag-icon-ug.flag-icon-squared{background-image:url(../flags/1x1/ug.svg)}.flag-icon-um{background-image:url(../flags/4x3/um.svg)}.flag-icon-um.flag-icon-squared{background-image:url(../flags/1x1/um.svg)}.flag-icon-us{background-image:url(../flags/4x3/us.svg)}.flag-icon-us.flag-icon-squared{background-image:url(../flags/1x1/us.svg)}.flag-icon-uy{background-image:url(../flags/4x3/uy.svg)}.flag-icon-uy.flag-icon-squared{background-image:url(../flags/1x1/uy.svg)}.flag-icon-uz{background-image:url(../flags/4x3/uz.svg)}.flag-icon-uz.flag-icon-squared{background-image:url(../flags/1x1/uz.svg)}.flag-icon-va{background-image:url(../flags/4x3/va.svg)}.flag-icon-va.flag-icon-squared{background-image:url(../flags/1x1/va.svg)}.flag-icon-vc{background-image:url(../flags/4x3/vc.svg)}.flag-icon-vc.flag-icon-squared{background-image:url(../flags/1x1/vc.svg)}.flag-icon-ve{background-image:url(../flags/4x3/ve.svg)}.flag-icon-ve.flag-icon-squared{background-image:url(../flags/1x1/ve.svg)}.flag-icon-vg{background-image:url(../flags/4x3/vg.svg)}.flag-icon-vg.flag-icon-squared{background-image:url(../flags/1x1/vg.svg)}.flag-icon-vi{background-image:url(../flags/4x3/vi.svg)}.flag-icon-vi.flag-icon-squared{background-image:url(../flags/1x1/vi.svg)}.flag-icon-vn{background-image:url(../flags/4x3/vn.svg)}.flag-icon-vn.flag-icon-squared{background-image:url(../flags/1x1/vn.svg)}.flag-icon-vu{background-image:url(../flags/4x3/vu.svg)}.flag-icon-vu.flag-icon-squared{background-image:url(../flags/1x1/vu.svg)}.flag-icon-wf{background-image:url(../flags/4x3/wf.svg)}.flag-icon-wf.flag-icon-squared{background-image:url(../flags/1x1/wf.svg)}.flag-icon-ws{background-image:url(../flags/4x3/ws.svg)}.flag-icon-ws.flag-icon-squared{background-image:url(../flags/1x1/ws.svg)}.flag-icon-ye{background-image:url(../flags/4x3/ye.svg)}.flag-icon-ye.flag-icon-squared{background-image:url(../flags/1x1/ye.svg)}.flag-icon-yt{background-image:url(../flags/4x3/yt.svg)}.flag-icon-yt.flag-icon-squared{background-image:url(../flags/1x1/yt.svg)}.flag-icon-za{background-image:url(../flags/4x3/za.svg)}.flag-icon-za.flag-icon-squared{background-image:url(../flags/1x1/za.svg)}.flag-icon-zm{background-image:url(../flags/4x3/zm.svg)}.flag-icon-zm.flag-icon-squared{background-image:url(../flags/1x1/zm.svg)}.flag-icon-zw{background-image:url(../flags/4x3/zw.svg)}.flag-icon-zw.flag-icon-squared{background-image:url(../flags/1x1/zw.svg)}
\ No newline at end of file
-+.flag-icon,.flag-icon-background{background-repeat:no-repeat;background-size:contain;background-position:50%}.flag-icon{position:relative;display:inline-block;width:1.33333333em;line-height:1em}.flag-icon:before{content:"\00a0"}.flag-icon-cn{background-image:url(../flags/4x3/cn.svg)}.flag-icon-de{background-image:url(../flags/4x3/de.svg)}.flag-icon-es{background-image:url(../flags/4x3/es.svg)}.flag-icon-fr{background-image:url(../flags/4x3/fr.svg)}.flag-icon-it{background-image:url(../flags/4x3/it.svg)}.flag-icon-nl{background-image:url(../flags/4x3/nl.svg)}.flag-icon-pl{background-image:url(../flags/4x3/pl.svg)}.flag-icon-ru{background-image:url(../flags/4x3/ru.svg)}.flag-icon-th{background-image:url(../flags/4x3/th.svg)}.flag-icon-tr{background-image:url(../flags/4x3/tr.svg)}.flag-icon-tw{background-image:url(../flags/4x3/tw.svg)}.flag-icon-us{background-image:url(../flags/4x3/us.svg)}
++.flag-icon,.flag-icon-background{background-repeat:no-repeat;background-size:contain;background-position:50%}.flag-icon{position:relative;display:inline-block;width:1.33333333em;line-height:1em}.flag-icon:before{content:"\00a0"}.flag-icon-cn{background-image:url(../flags/4x3/cn.svg)}.flag-icon-cz{background-image:url(../flags/4x3/cz.svg)}.flag-icon-de{background-image:url(../flags/4x3/de.svg)}.flag-icon-es{background-image:url(../flags/4x3/es.svg)}.flag-icon-fr{background-image:url(../flags/4x3/fr.svg)}.flag-icon-it{background-image:url(../flags/4x3/it.svg)}.flag-icon-nl{background-image:url(../flags/4x3/nl.svg)}.flag-icon-pl{background-image:url(../flags/4x3/pl.svg)}.flag-icon-ru{background-image:url(../flags/4x3/ru.svg)}.flag-icon-th{background-image:url(../flags/4x3/th.svg)}.flag-icon-tr{background-image:url(../flags/4x3/tr.svg)}.flag-icon-tw{background-image:url(../flags/4x3/tw.svg)}.flag-icon-us{background-image:url(../flags/4x3/us.svg)}
\ No newline at end of file
PKG_NAME:=wireguard
-PKG_VERSION:=0.0.20170421
+PKG_VERSION:=0.0.20170613
PKG_RELEASE:=1
PKG_SOURCE:=WireGuard-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://git.zx2c4.com/WireGuard/snapshot/
-PKG_HASH:=03c82af774224cd171d000ee4a519b5e474cc6842ac04967773cf77b26750000
+PKG_HASH:=88ac77569eeb79c517318d58a0954caa0a4d2a6a1694e74c2a3b1c14438ac941
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
proto_config_add_string "private_key"
proto_config_add_int "listen_port"
proto_config_add_int "mtu"
- proto_config_add_string "preshared_key"
proto_config_add_string "fwmark"
available=1
no_proto_task=1
local peer_config="$1"
local public_key
+ local preshared_key
local allowed_ips
local route_allowed_ips
local endpoint_host
local persistent_keepalive
config_get public_key "${peer_config}" "public_key"
+ config_get preshared_key "${peer_config}" "preshared_key"
config_get allowed_ips "${peer_config}" "allowed_ips"
config_get_bool route_allowed_ips "${peer_config}" "route_allowed_ips" 0
config_get endpoint_host "${peer_config}" "endpoint_host"
# peer configuration
echo "[Peer]" >> "${wg_cfg}"
echo "PublicKey=${public_key}" >> "${wg_cfg}"
+ if [ "${preshared_key}" ]; then
+ echo "PresharedKey=${preshared_key}" >> "${wg_cfg}"
+ fi
for allowed_ip in $allowed_ips; do
echo "AllowedIPs=${allowed_ip}" >> "${wg_cfg}"
done
local private_key
local listen_port
local mtu
- local preshared_key
# load configuration
config_load network
config_get listen_port "${config}" "listen_port"
config_get addresses "${config}" "addresses"
config_get mtu "${config}" "mtu"
- config_get preshared_key "${config}" "preshared_key"
config_get fwmark "${config}" "fwmark"
# create interface
if [ "${listen_port}" ]; then
echo "ListenPort=${listen_port}" >> "${wg_cfg}"
fi
- if [ "${preshared_key}" ]; then
- echo "PresharedKey=${preshared_key}" >> "${wg_cfg}"
- fi
if [ "${fwmark}" ]; then
echo "FwMark=${fwmark}" >> "${wg_cfg}"
fi
sed -E 's/\[?([0-9.:a-f]+)\]?:([0-9]+)/\1 \2/' | \
while IFS=$'\t ' read -r key address port; do
[ -n "${port}" ] || continue
- echo "adding host depedency for ${address} at ${config}"
proto_add_host_dependency "${config}" "${address}"
done
#
-# Copyright (C) 2016 OpenWrt.org
+# Copyright (C) 2016-2017 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=yaaw
-PKG_VERSION:=2016-05-28
+PKG_VERSION:=2017-04-11
PKG_RELEASE:=1
-PKG_MAINTAINER:=Hsing-Wang Liao <kuoruan@gmail.com>
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/binux/yaaw.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=c28cde2252b707fe0661693f78c5e5e3beee09a1
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
+PKG_SOURCE_VERSION:=d3a8346c5b9c2c1875dc79e1db2533b584fc8def
PKG_LICENSE:=LGPL-3.0
+PKG_MAINTAINER:=Hsing-Wang Liao <kuoruan@gmail.com>
include $(INCLUDE_DIR)/package.mk
define Package/yaaw/install
$(INSTALL_DIR) $(1)/www/yaaw
- $(CP) $(PKG_BUILD_DIR)/js $(1)/www/yaaw
- $(CP) $(PKG_BUILD_DIR)/img $(1)/www/yaaw
- $(CP) $(PKG_BUILD_DIR)/css $(1)/www/yaaw
- $(CP) $(PKG_BUILD_DIR)/index.html $(1)/www/yaaw
- $(CP) $(PKG_BUILD_DIR)/offline.appcache $(1)/www/yaaw
+ $(CP) \
+ $(PKG_BUILD_DIR)/{css,img,js} \
+ $(1)/www/yaaw
+ $(CP) \
+ $(PKG_BUILD_DIR)/{index.html,offline.appcache} \
+ $(1)/www/yaaw
endef
$(eval $(call BuildPackage,yaaw))
PKG_NAME:=zerotier
PKG_VERSION:=1.2.4
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_LICENSE:=GPL-3.0
--- /dev/null
+Index: ZeroTierOne-1.2.4/ext/json/json.hpp
+===================================================================
+--- ZeroTierOne-1.2.4.orig/ext/json/json.hpp
++++ ZeroTierOne-1.2.4/ext/json/json.hpp
+@@ -64,7 +64,7 @@ SOFTWARE.
+ #endif
+ #elif defined(__GNUC__)
+ #define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
+- #if GCC_VERSION < 40900
++ #if GCC_VERSION < 40800
+ #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers"
+ #endif
+ #endif
include $(TOPDIR)/rules.mk
PKG_NAME:=fdk-aac
-PKG_VERSION=0.1.5
+PKG_VERSION:=0.1.5
PKG_RELEASE:=1
PKG_MAINTAINER:=Daniel Engberg <daniel.engberg.lists@pyret.net>
PKG_LICENSE:=Fraunhofer-FDK-AAC-for-Android
#
-# Copyright (C) 2006-2014 OpenWrt.org
-#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=mpc
-PKG_VERSION:=0.27
+PKG_VERSION:=0.28
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://www.musicpd.org/download/mpc/0
-PKG_MD5SUM:=d9430db9b9d7fb1eadbe4d13e8d97c66
+PKG_HASH:=a4337d06c85dc81a638821d30fce8a137a58d13d510be34a11c1cce95cabc547
+
PKG_LICENSE:=GPL-2.0+
PKG_LICENSE_FILES:=COPYING
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
#
-# Copyright (C) 2015-2016 Ted Hess
-#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=mpd
-PKG_VERSION:=0.19.19
-PKG_RELEASE:=2
+PKG_VERSION:=0.20.8
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=http://www.musicpd.org/download/mpd/0.19/
-PKG_MD5SUM:=6e4fca9a9c26dad08b61bac9a91802db
+PKG_SOURCE_URL:=http://www.musicpd.org/download/mpd/0.20/
+PKG_HASH:=7d177f29663c4a0997413401e52bbf11d2bb472773bbcf9294f839c4b8751e35
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
PKG_LICENSE:=GPL-2.0
CONFIG_IPV6 \
PKG_INSTALL:=1
+PKG_USE_MIPS16:=0
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
/etc/avahi/services/mpd.service
endef
+TARGET_CFLAGS += -ggdb3
+TARGET_LDFLAGS += -Wl,-rpath-link=$(STAGING_DIR)/usr/lib $(if $(ICONV_FULL),-liconv)
+EXTRA_CXXFLAGS += $(if $(CONFIG_GCC_VERSION_4_8),-std=gnu++11,-std=gnu++14)
+
CONFIGURE_ARGS += \
$(call autoconf_bool,CONFIG_IPV6,ipv6) \
--disable-debug \
$(if $(CONFIG_BUILD_PATENTED),MAD_CFLAGS="$(TARGET_CFLAGS)") \
$(if $(CONFIG_BUILD_PATENTED),MAD_LIBS="$(TARGET_LDFLAGS) -lmad") \
-TARGET_LDFLAGS += -Wl,-rpath-link=$(STAGING_DIR)/usr/lib $(if $(ICONV_FULL),-liconv)
-
ifeq ($(BUILD_VARIANT),full)
CONFIGURE_ARGS += \
--enable-fifo \
--enable-ffmpeg \
--enable-id3 \
- --enable-lastfm \
--enable-mms \
- --enable-oggflac \
+ --enable-flac \
--enable-pipe-output \
--enable-recorder-output \
--disable-shout \
--enable-sndfile \
--enable-vorbis \
--disable-vorbis-encoder \
- --with-faad="$(STAGING_DIR)/usr" \
--with-tremor=yes \
endif
--- a/src/decoder/plugins/FfmpegDecoderPlugin.cxx
+++ b/src/decoder/plugins/FfmpegDecoderPlugin.cxx
-@@ -777,6 +777,7 @@ static const char *const ffmpeg_mime_typ
+@@ -930,6 +930,7 @@ static const char *const ffmpeg_mime_typ
"audio/qcelp",
"audio/vorbis",
"audio/vorbis+ogg",
--- a/src/decoder/plugins/FfmpegDecoderPlugin.cxx
+++ b/src/decoder/plugins/FfmpegDecoderPlugin.cxx
-@@ -465,6 +465,13 @@ ffmpeg_probe(Decoder *decoder, InputStre
+@@ -478,6 +478,13 @@ ffmpeg_probe(DecoderClient *client, Inpu
unsigned char buffer[BUFFER_SIZE];
- size_t nbytes = decoder_read(decoder, is, buffer, BUFFER_SIZE);
+ size_t nbytes = decoder_read(client, is, buffer, BUFFER_SIZE);
+
+ if ((nbytes > 0) && (nbytes < 1024))
+ {
+ // Gobble some more data if header is small
-+ nbytes += decoder_read(decoder, is, buffer + nbytes, BUFFER_SIZE - nbytes);
++ nbytes += decoder_read(client, is, buffer + nbytes, BUFFER_SIZE - nbytes);
+ }
+
- if (nbytes <= PADDING || !is.LockRewind(IgnoreError()))
+ if (nbytes <= PADDING)
return nullptr;
PKG_LICENSE:=GPL-3.0
PKG_LICENSE_FILES:=LICENSE.txt
-PKG_MAINTAINER:= Ted Hess <thess@kitschensync.net>
+PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/ralph-irving/squeezelite.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=$(PKG_REV)
+PKG_MIRROR_HASH:=9ee01f36a81ccab5f003fc62afdcebfaa422c4f110d0a501e47617eb1c697768
PKG_MAINTAINER:=Maxim Storchak <m.storchak@gmail.com>
PKG_LICENSE:=LGPL-2.1 GPL-2.0
include $(TOPDIR)/rules.mk
PKG_NAME:=btrfs-progs
-PKG_VERSION:=4.7.2
-PKG_RELEASE:=1
+PKG_VERSION:=4.11
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-v$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/linux/kernel/people/kdave/btrfs-progs/
-PKG_MD5SUM:=f49bc9e143ffe60260c5bd70ef3b624576673f8b50f41e309892a425f7fbe60f
+PKG_MD5SUM:=25ba238f44b9a1a54e62f7b361bdc9d8
+PKG_HASH:=e17a68cc52a27d905b715445e91ddbaa4d42de4847d54836d6ed21e012dabf0e
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-v$(PKG_VERSION)
-PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
endef
progs = btrfs btrfs-debug-tree btrfs-find-root btrfs-image btrfs-map-logical \
- btrfs-show-super btrfstune btrfs-zero-log fsck.btrfs mkfs.btrfs
+ btrfs-select-super btrfstune btrfs-zero-log fsck.btrfs mkfs.btrfs
CONFIGURE_ARGS += \
--disable-backtrace \
--disable-convert \
--disable-documentation
+EXTRA_CFLAGS=$(TARGET_CPPFLAGS)
+
define Package/btrfs-progs/install
$(INSTALL_DIR) $(1)/usr/lib
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/libbtrfs.so* $(1)/usr/lib
include $(TOPDIR)/rules.mk
PKG_NAME:=ccid
-PKG_VERSION:=1.4.26
+PKG_VERSION:=1.4.27
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=https://alioth.debian.org/frs/download.php/file/4205
-PKG_MD5SUM:=3267bf708ab780c02f01f6241b7c7277cb892d30fd1179a9926a8cc0ca40be2f
+PKG_SOURCE_URL:=https://alioth.debian.org/frs/download.php/file/4218
+PKG_HASH:=a660e269606986cb94840ad5ba802ffb0cd23dd12b98f69a35035e0deb9dd137
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=LGPL-2.1+
PKG_LICENSE_FILES:=COPYING
include $(TOPDIR)/rules.mk
PKG_NAME:=collectd
-PKG_VERSION:=5.7.1
-PKG_RELEASE:=6
+PKG_VERSION:=5.7.2
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://collectd.org/files/ \
https://github.com/collectd/collectd/releases/download/collectd-$(PKG_VERSION)
-PKG_HASH:=7edd3643c0842215553b2421d5456f4e9a8a58b07e216b40a7e8e91026d8e501
+PKG_HASH:=9d20a0221569a8d6b80bbc52b86e5e84965f5bafdbf5dfc3790e0fed0763e592
PKG_FIXUP:=autoreconf
PKG_REMOVE_FILES:=aclocal.m4 libltdl/aclocal.m4
+++ /dev/null
-From f6be4f9b49b949b379326c3d7002476e6ce4f211 Mon Sep 17 00:00:00 2001
-From: Pavel Rochnyack <pavel2000@ngs.ru>
-Date: Mon, 3 Apr 2017 11:57:09 +0600
-Subject: [PATCH] network plugin: Fix endless loop DOS in parse_packet()
-
-When correct 'Signature part' is received by Collectd, configured without
-AuthFile option, condition for endless loop occurs due to missing increase
-of pointer to next unprocessed part.
-
-Fixes: CVE-2017-7401
-
-Signed-off-by: Florian Forster <octo@collectd.org>
-
-
---- a/src/network.c
-+++ b/src/network.c
-@@ -1003,14 +1003,6 @@ static int parse_part_sign_sha256(socken
- buffer_len = *ret_buffer_len;
- buffer_offset = 0;
-
-- if (se->data.server.userdb == NULL) {
-- c_complain(
-- LOG_NOTICE, &complain_no_users,
-- "network plugin: Received signed network packet but can't verify it "
-- "because no user DB has been configured. Will accept it.");
-- return (0);
-- }
--
- /* Check if the buffer has enough data for this structure. */
- if (buffer_len <= PART_SIGNATURE_SHA256_SIZE)
- return (-ENOMEM);
-@@ -1027,6 +1019,18 @@ static int parse_part_sign_sha256(socken
- return (-1);
- }
-
-+ if (se->data.server.userdb == NULL) {
-+ c_complain(
-+ LOG_NOTICE, &complain_no_users,
-+ "network plugin: Received signed network packet but can't verify it "
-+ "because no user DB has been configured. Will accept it.");
-+
-+ *ret_buffer = buffer + pss_head_length;
-+ *ret_buffer_len -= pss_head_length;
-+
-+ return (0);
-+ }
-+
- /* Copy the hash. */
- BUFFER_READ(pss.hash, sizeof(pss.hash));
-
--- a/configure.ac
+++ b/configure.ac
-@@ -3186,7 +3186,7 @@ then
+@@ -3278,7 +3278,7 @@ then
SAVE_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $with_libmodbus_cflags"
- [have_capability="no (<sys/capability.h> not found)"])
+have_capability="no"
if test "x$have_capability" = "xyes"; then
- AC_CHECK_LIB(cap, cap_get_bound,
+ AC_CHECK_LIB(cap, cap_get_proc,
[have_capability="yes"],
# For the turbostat plugin
have_asm_msrindex_h="no"
AC_CHECK_HEADERS(asm/msr-index.h, [have_asm_msrindex_h="yes"])
-@@ -5943,6 +5946,7 @@ plugin_interface="no"
+@@ -6035,6 +6038,7 @@ plugin_interface="no"
plugin_ipmi="no"
plugin_ipvs="no"
plugin_irq="no"
plugin_load="no"
plugin_log_logstash="no"
plugin_memory="no"
-@@ -6413,6 +6417,7 @@ AC_PLUGIN([ipmi], [$plugi
+@@ -6505,6 +6509,7 @@ AC_PLUGIN([ipmi], [$plugi
AC_PLUGIN([iptables], [$with_libiptc], [IPTables rule counters])
AC_PLUGIN([ipvs], [$plugin_ipvs], [IPVS connection statistics])
AC_PLUGIN([irq], [$plugin_irq], [IRQ statistics])
AC_PLUGIN([java], [$with_java], [Embed the Java Virtual Machine])
AC_PLUGIN([load], [$plugin_load], [System load])
AC_PLUGIN([log_logstash], [$plugin_log_logstash], [Logstash json_event compatible logging])
-@@ -6794,6 +6799,7 @@ AC_MSG_RESULT([ libyajl . . . . . . .
+@@ -6886,6 +6891,7 @@ AC_MSG_RESULT([ libyajl . . . . . . .
AC_MSG_RESULT([ oracle . . . . . . . $with_oracle])
AC_MSG_RESULT([ protobuf-c . . . . . $have_protoc_c])
AC_MSG_RESULT([ protoc 3 . . . . . . $have_protoc3])
AC_MSG_RESULT()
AC_MSG_RESULT([ Features:])
AC_MSG_RESULT([ daemon mode . . . . . $enable_daemon])
-@@ -6850,6 +6856,7 @@ AC_MSG_RESULT([ ipmi . . . . . . . .
+@@ -6942,6 +6948,7 @@ AC_MSG_RESULT([ ipmi . . . . . . . .
AC_MSG_RESULT([ iptables . . . . . . $enable_iptables])
AC_MSG_RESULT([ ipvs . . . . . . . . $enable_ipvs])
AC_MSG_RESULT([ irq . . . . . . . . . $enable_irq])
# JVMArg "-Djava.class.path=@prefix@/share/collectd/java/collectd-api.jar"
--- a/src/collectd.conf.pod
+++ b/src/collectd.conf.pod
-@@ -3127,6 +3127,27 @@ and all other interrupts are collected.
+@@ -3143,6 +3143,27 @@ and all other interrupts are collected.
=back
PKG_NAME:=coreutils
PKG_VERSION:=8.23
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GNU/coreutils
DEPENDS_mv = +libacl
DEPENDS_vdir = +libacl +libcap
+FILES_stdbuf := usr/lib/coreutils/libstdbuf.so
+
define Package/coreutils/Default
SECTION:=utils
CATEGORY:=Utilities
define Package/$(1)/install
$(INSTALL_DIR) $$(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/$(2) $$(1)/usr/bin/
+ $(foreach f,$(FILES_$(2)),
+ $(INSTALL_DIR) $$(1)/$(dir $(f))
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/$(f) $$(1)/$(f)
+ )
endef
$$(eval $$(call BuildPackage,$(1)))
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=cryptodev-linux
-PKG_VERSION:=1.9
+PKG_VERSION:=1.9.git-2017-05-29
PKG_RELEASE:=1
+PKG_SOURCE_URL:=https://github.com/cryptodev-linux/cryptodev-linux
PKG_SOURCE_PROTO:=git
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_MIRROR_HASH:=d2b49408682795a0e200c0e54a8605f72be4b11088e07b1cd4d48f6c1427b0f4
-PKG_SOURCE_URL:=https://github.com/cryptodev-linux/cryptodev-linux.git
-PKG_SOURCE_VERSION:=87d959d9a279c055b361de8e730fab6a7144edd7
+PKG_SOURCE_VERSION:=a705360197260d28535746ae98c461ba2cfb7a9e
+PKG_MIRROR_HASH:=553069ecf1f3d5d5652404aaf438610f555c94db4369c7c1db85210c4e3cdfee
-PKG_MAINTAINER:=Ansuel Smith ansuelsmth@gmail.com
+PKG_MAINTAINER:=Ansuel Smith <ansuelsmth@gmail.com>
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
include $(TOPDIR)/rules.mk
PKG_NAME:=cryptsetup
-PKG_VERSION:=1.7.2
+PKG_VERSION:=1.7.5
PKG_RELEASE:=1
PKG_LICENSE:=GPL-2.0+ LGPL-2.1+
PKG_LICENSE_FILES:=COPYING COPYING.LGPL
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/linux/utils/cryptsetup/v1.7
-PKG_MD5SUM:=a11a140cea496961222170944db01fc1
+PKG_HASH:=2b30cd1d0dd606a53ac77b406e1d37798d4b0762fa89de6ea546201906a251bd
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk
define Package/flent-tools
- SECTION:=util
+ SECTION:=utils
CATEGORY:=Utilities
TITLE:=Helper programs for the Flent test tool
URL:=https://flent.org
include $(TOPDIR)/rules.mk
PKG_NAME:=gammu
-PKG_VERSION:=1.38.1
+PKG_VERSION:=1.38.4
PKG_RELEASE:=1
PKG_SOURCE_URL:=http://dl.cihar.com/gammu/releases/
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_MD5SUM:=c87bd5293c02d8f4ac75ec785ea79fd3
+PKG_HASH:=a8ba1dc52ee82562abd57e9546c409f2f887f45187aae012fe43af0b730611ae
PKG_MAINTAINER:=Vitaly Protsko <villy@sft.ru>
PKG_LICENCE:=GPL-2.0
python=no \
implicit_link=no \
chrpath=no \
+ manbuild=no \
target="$(TARGET_CROSS:-=)"
define Build/InstallDev
--- /dev/null
+#
+# Copyright (C) 2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=jq
+PKG_VERSION:=1.5
+PKG_RELEASE:=1
+PKG_LICENSE:=BSD
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://github.com/stedolan/jq/releases/download/jq-$(PKG_VERSION)/
+PKG_MD5SUM:=0933532b086bd8b6a41c1b162b1731f9
+
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+ifdef CONFIG_USE_MIPS16
+ TARGET_CFLAGS += -fno-ipa-sra
+endif
+
+define Package/jq
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=Lightweight and flexible command-line JSON processor.
+ URL:=https://stedolan.github.io/jq/
+ MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
+endef
+
+define Package/jq/description
+ Lightweight and flexible command-line JSON processor.
+endef
+
+define Package/jq/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,jq))
--- /dev/null
+From 2d38a12d686a5156d4e7afb1fed7851805590582 Mon Sep 17 00:00:00 2001
+From: W-Mark Kubacki <wmark@hurrikane.de>
+Date: Fri, 19 Aug 2016 19:50:39 +0200
+Subject: [PATCH] Skip printing at MAX_DEPTH and deeper
+
+This addresses #1136, and mitigates a stack exhaustion when printing
+a very deeply nested term.
+---
+ src/jv_print.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/src/jv_print.c b/src/jv_print.c
+index 5f4f234..cf6651b 100644
+--- src/jv_print.c
++++ src/jv_print.c
+@@ -13,6 +13,10 @@
+ #include "jv_dtoa.h"
+ #include "jv_unicode.h"
+
++#ifndef MAX_DEPTH
++#define MAX_DEPTH 256
++#endif
++
+ #define ESC "\033"
+ #define COL(c) (ESC "[" c "m")
+ #define COLRESET (ESC "[0m")
+@@ -150,7 +154,9 @@ static void jv_dump_term(struct dtoa_context* C, jv x, int flags, int indent, FI
+ }
+ }
+ }
+- switch (jv_get_kind(x)) {
++ if (indent > MAX_DEPTH) {
++ put_str("<stripped: exceeds max depth>", F, S, flags & JV_PRINT_ISATTY);
++ } else switch (jv_get_kind(x)) {
+ default:
+ case JV_KIND_INVALID:
+ if (flags & JV_PRINT_INVALID) {
--- /dev/null
+From 8eb1367ca44e772963e704a700ef72ae2e12babd Mon Sep 17 00:00:00 2001
+From: Nicolas Williams <nico@cryptonector.com>
+Date: Sat, 24 Oct 2015 17:24:57 -0500
+Subject: [PATCH] Heap buffer overflow in tokenadd() (fix #105)
+
+This was an off-by one: the NUL terminator byte was not allocated on
+resize. This was triggered by JSON-encoded numbers longer than 256
+bytes.
+---
+ src/jv_parse.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/jv_parse.c b/src/jv_parse.c
+index 3102ed4..84245b8 100644
+--- src/jv_parse.c
++++ src/jv_parse.c
+@@ -383,7 +383,7 @@ static pfunc stream_token(struct jv_parser* p, char ch) {
+
+ static void tokenadd(struct jv_parser* p, char c) {
+ assert(p->tokenpos <= p->tokenlen);
+- if (p->tokenpos == p->tokenlen) {
++ if (p->tokenpos >= (p->tokenlen - 1)) {
+ p->tokenlen = p->tokenlen*2 + 256;
+ p->tokenbuf = jv_mem_realloc(p->tokenbuf, p->tokenlen);
+ }
+@@ -485,7 +485,7 @@ static pfunc check_literal(struct jv_parser* p) {
+ TRY(value(p, v));
+ } else {
+ // FIXME: better parser
+- p->tokenbuf[p->tokenpos] = 0; // FIXME: invalid
++ p->tokenbuf[p->tokenpos] = 0;
+ char* end = 0;
+ double d = jvp_strtod(&p->dtoa, p->tokenbuf, &end);
+ if (end == 0 || *end != 0)
PKG_NAME:=klish
PKG_VERSION:=2.1.3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://libcode.org/attachments/download/66/
More information about these tools is to be found on the klish web site.
endef
+TARGET_LDFLAGS += -lxml2 -lz
+TARGET_CFLAGS += -D_XOPEN_SOURCE=500
+
define Build/Configure
$(call Build/Configure/Default, \
--with-libxml2 \
# PKG_VERSION:=0.5.8
PKG_BASE_VERSION:=0.5.8
PKG_VERSION:=$(PKG_BASE_VERSION)+git2070222
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/lcdproc/lcdproc.git
MAKE_FLAGS += \
CFLAGS="$(TARGET_CFLAGS)" \
- LDFLAGS="$(TARGET_LDLAGS)"
+ LDFLAGS="$(TARGET_LDFLAGS)"
define Package/lcdproc-clients/install
include $(TOPDIR)/rules.mk
PKG_NAME:=LVM2
-PKG_VERSION:=2.02.165
+PKG_VERSION:=2.02.168
PKG_RELEASE:=1
PKG_LICENSE:=GPL-2.0 LGPL-2.1
PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).tgz
-PKG_SOURCE_URL:=ftp://sources.redhat.com/pub/lvm2/releases
-PKG_MD5SUM:=d459cfe50fd549fe41eeed4ef8fbca3f9833f68012f735adb3462483360e07c7
+PKG_SOURCE_URL:=ftp://sources.redhat.com/pub/lvm2/releases \
+ http://ftp.gwdg.de/pub/linux/sources.redhat.com/lvm2/
+PKG_HASH:=23a3d1cddd41b3ef51812ebf83e9fa491f502fe74130d4263be327a91914660d
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME).$(PKG_VERSION)
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=git://github.com/webstack/mbtools
+PKG_SOURCE_URL:=https://github.com/webstack/mbtools.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=149e9c69cec180f18cf8781cf5285b97352bf719
+PKG_MIRROR_HASH:=1e6e2f0e40b1c596bb55279bcedfac5a8deb86ef56978dce01a78877151c9352
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_FIXUP:=autoreconf
include $(TOPDIR)/rules.mk
PKG_NAME:=nano
-PKG_VERSION:=2.7.5
+PKG_VERSION:=2.8.4
PKG_RELEASE:=1
PKG_LICENSE:=GPL-3.0+
PKG_LICENSE_FILES:=COPYING
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GNU/nano
-PKG_MD5SUM:=002703e368e07882f75e304c8860d83d
-PKG_HASH:=a64d24e6bc4fc448376d038f9a755af77f8e748c9051b6f45bf85e783a7e67e4
+PKG_HASH:=c7cf264f0f3e4af43ecdbc4ec72c3b1e831c69a1a5f6512d5b0c109e6bac7b11
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
CONFIGURE_ARGS += \
--enable-tiny \
- --disable-glibtest \
--disable-utf8 \
- --without-slang \
- --disable-color \
+ --without-slang \
+ --disable-color \
CONFIGURE_VARS += \
ac_cv_header_regex_h=no \
define Package/libopensc-profile-$(subst _,-,$(firstword $(subst :, ,$(1))))
TITLE:=$(firstword $(subst :, ,$(1))) card profile for opensc
URL:=https://github.com/OpenSC/OpenSC/wiki
- SECTION:=lib
+ SECTION:=libs
CATEGORY:=Libraries
DEPENDS:=libopensc
endef
PKG_NAME:=openzwave
PKG_REV:=164
PKG_VERSION:=1.4.$(PKG_REV)
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://old.openzwave.com/downloads
define Package/libopenzwave
$(call Package/openzwave/default)
- SECTION:=Libs
+ SECTION:=libs
CATEGORY:=Libraries
TITLE:=Open-ZWave Library
endef
define Package/openzwave
$(call Package/openzwave/default)
- SECTION:=Utils
+ SECTION:=utils
CATEGORY:=Utilities
TITLE:=Open-ZWave MinOZW test utility
DEPENDS:=+libopenzwave +openzwave-config
define Package/openzwave-config
$(call Package/openzwave/default)
- SECTION:=Utils
+ SECTION:=utils
CATEGORY:=Utilities
TITLE:=Open-ZWave Device Configs
endef
MAKE_FLAGS += \
LD="$(TARGET_CROSS)g++" \
+ LIBDIR="$(PKG_BUILD_DIR)" \
PREFIX=$(CONFIGURE_PREFIX) \
instlibdir=/usr/lib \
pkgconfigdir=/usr/lib/pkgconfig \
PKG_NAME:=pciutils
PKG_VERSION:=3.5.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/software/utils/pciutils
endef
MAKE_FLAGS += \
- CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include" \
+ CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \
PREFIX="/usr" \
- HOST="$(GNU_TARGET_NAME)" \
+ HOST="Linux" \
HWDB="no" \
ZLIB="yes"
include $(TOPDIR)/rules.mk
PKG_NAME:=pcsc-lite
-PKG_VERSION:=1.8.20
+PKG_VERSION:=1.8.22
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=https://alioth.debian.org/frs/download.php/file/4203
-PKG_MD5SUM:=ec7d0114016c788c1c09859c84860f6cec6c4595436d23245105154b9c046bb2
+PKG_SOURCE_URL:=https://alioth.debian.org/frs/download.php/file/4225
+PKG_HASH:=6a358f61ed3b66a7f6e1f4e794a94c7be4c81b7a58ec360c33791e8d7d9bd405
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=COPYING
#
# Copyright (C) 2006-2016 OpenWrt.org
+# Copyright (C) 2017 Luiz Angelo Daros de Luca <luizluca@gmail.com>
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=sane-backends
-PKG_VERSION:=1.0.25
-PKG_RELEASE:=2
+PKG_VERSION:=1.0.27
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://fossies.org/linux/misc \
https://alioth.debian.org/frs/download.php/file/4146/
-PKG_MD5SUM:=f9ed5405b3c12f07c6ca51ee60225fe7
+PKG_HASH:=293747bf37275c424ebb2c833f8588601a60b2f9653945d5a3194875355e36c9
PKG_MAINTAINER:=Luiz Angelo Daros de Luca <luizluca@gmail.com>
PKG_LICENSE:=GPL-2.0 GPL-2.0+
PKG_LICENSE_FILES:=COPYING LICENSE
-PKG_FIXUP:=autoreconf
-PKG_REMOVE_FILES:=aclocal.m4
-
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
CONFIGURE_ARGS+= \
--enable-shared \
--enable-static \
- --disable-translations \
- --disable-latex \
--without-gphoto2 \
--without-snmp
$(eval $(call SaneBackend,umax1220u,the UMAX Astra 1220U and similar scanners))
$(eval $(call SaneBackend,umax_pp,Umax Astra parallel port flatbed scanners))
$(eval $(call SaneBackend,v4l,Video for Linux API,+libv4l +libjpeg))
-$(eval $(call SaneBackend,xerox_mfp,Xerox Phaser 3200MFP device))
+$(eval $(call SaneBackend,xerox_mfp,Xerox Phaser 3200MFP device,+libjpeg))
$(eval $(call BuildPackage,sane-backends))
$(eval $(call BuildPackage,sane-backends-all))
$(eval $(call BuildPackage,sane-frontends))
--- a/Makefile.in
+++ b/Makefile.in
-@@ -400,7 +400,7 @@ target_alias = @target_alias@
+@@ -423,7 +423,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+++ /dev/null
---- a/backend/pieusb_buffer.c
-+++ b/backend/pieusb_buffer.c
-@@ -104,11 +104,13 @@
-
- /* When creating the release backend, make complains about unresolved external
- * le16toh, although it finds the include <endian.h> */
-+#ifndef le16toh
- #if __BYTE_ORDER == __LITTLE_ENDIAN
- #define le16toh(x) (x)
- #else
- #define le16toh(x) __bswap_16 (x)
- #endif
-+#endif
-
- static void buffer_update_read_index(struct Pieusb_Read_Buffer* buffer, int increment);
-
+++ /dev/null
---- a/include/sane/sanei_udp.h
-+++ b/include/sane/sanei_udp.h
-@@ -27,6 +27,9 @@
- #include <netinet/in.h>
- #include <netdb.h>
- #endif
-+#ifdef HAVE_SYS_TYPES_H
-+#include <sys/types.h>
-+#endif
-
- extern SANE_Status sanei_udp_open(const char *host, int port, int *fdp);
- extern SANE_Status sanei_udp_open_broadcast(int *fdp);
---- a/backend/kvs20xx_cmd.h
-+++ b/backend/kvs20xx_cmd.h
-@@ -9,6 +9,10 @@
- Panasonic KV-S20xx USB-SCSI scanners.
- */
-
-+#ifdef HAVE_SYS_TYPES_H
-+#include <sys/types.h>
-+#endif
-+
- #define COMMAND_BLOCK 1
- #define DATA_BLOCK 2
- #define RESPONSE_BLOCK 3
---- a/backend/kvs40xx.h
-+++ b/backend/kvs40xx.h
-@@ -10,6 +10,9 @@
-
- #include "../include/sane/config.h"
- #include <semaphore.h>
-+#ifdef HAVE_SYS_TYPES_H
-+#include <sys/types.h>
-+#endif
-
- #undef BACKEND_NAME
- #define BACKEND_NAME kvs40xx
---- a/backend/hp5400.c
-+++ b/backend/hp5400.c
-@@ -67,6 +67,9 @@
- #include <stdlib.h> /* malloc, free */
- #include <string.h> /* memcpy */
- #include <stdio.h>
-+#ifdef HAVE_SYS_TYPES_H
-+#include <sys/types.h>
-+#endif
-
-
- #define HP5400_CONFIG_FILE "hp5400.conf"
---- a/backend/hp5590.c
-+++ b/backend/hp5590.c
-@@ -48,6 +48,9 @@
- #include <stdio.h>
- #include <string.h>
- #include <unistd.h>
-+#ifdef HAVE_SYS_TYPES_H
-+#include <sys/types.h>
-+#endif
-
- #include "../include/sane/sane.h"
- #define BACKEND_NAME hp5590
---- a/backend/epsonds-io.c
-+++ b/backend/epsonds-io.c
-@@ -16,6 +16,9 @@
- #include "sane/config.h"
- #include <ctype.h>
- #include <unistd.h> /* sleep */
-+#ifdef HAVE_SYS_TYPES_H
-+#include <sys/types.h>
-+#endif
-
- #include "epsonds.h"
- #include "epsonds-io.h"
---- a/configure.in
-+++ b/configure.in
-@@ -279,6 +279,9 @@ dnl ************************************
- dnl Checks for library functions
- dnl ***********************************************************************
+--- a/configure.ac
++++ b/configure.ac
+@@ -280,6 +280,9 @@ AS_IF([test x != x$ALLOCA],
+ [LTALLOCA=`echo "$ALLOCA" | sed 's/\.o$//; s/\.obj$//'`.lo])
+ AC_SUBST(LTALLOCA)
+dnl Check mkostemp (missing in uclibc)
+AC_CHECK_FUNC(mkostemp)
AC_CHECK_FUNC(gethostbyaddr,, [AC_CHECK_LIB(bind, gethostbyaddr, BIND_LIB="-lbind")])
--- a/include/sane/config.h.in
+++ b/include/sane/config.h.in
-@@ -207,6 +207,9 @@
+@@ -229,6 +229,9 @@
/* Define to 1 if you have the `mkdir' function. */
#undef HAVE_MKDIR
/* Define to 1 if you have a working `mmap' system call. */
#undef HAVE_MMAP
---- a/backend/pieusb_buffer.c
-+++ b/backend/pieusb_buffer.c
-@@ -112,6 +112,11 @@
- #endif
- #endif
-
-+#ifndef HAVE_MKOSTEMP
-+/* uclibc might not implement mkostemp GNU extension */
-+#define mkostemp(template, flags) mkstemp(template)
-+#endif
-+
- static void buffer_update_read_index(struct Pieusb_Read_Buffer* buffer, int increment);
-
- /* READER */
--- a/backend/Makefile.am
+++ b/backend/Makefile.am
-@@ -1142,7 +1142,7 @@ EXTRA_DIST += dll.aliases
+@@ -1122,7 +1122,7 @@ EXTRA_DIST += dll.aliases
nodist_libsane_la_SOURCES = dll-s.c
libsane_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=dll
libsane_la_LDFLAGS = $(DIST_LIBS_LDFLAGS)
--libsane_la_LIBADD = $(COMMON_LIBS) @PRELOADABLE_BACKENDS_ENABLED@ libdll_preload.la sane_strstatus.lo ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_pv8630.lo ../sanei/sanei_pp.lo ../sanei/sanei_thread.lo ../sanei/sanei_lm983x.lo ../sanei/sanei_access.lo ../sanei/sanei_net.lo ../sanei/sanei_wire.lo ../sanei/sanei_codec_bin.lo ../sanei/sanei_pa4s2.lo ../sanei/sanei_ab306.lo ../sanei/sanei_pio.lo ../sanei/sanei_tcp.lo ../sanei/sanei_udp.lo ../sanei/sanei_magic.lo $(DL_LIBS) $(LIBV4L_LIBS) $(MATH_LIB) $(IEEE1284_LIBS) $(TIFF_LIBS) $(JPEG_LIBS) $(GPHOTO2_LIBS) $(SOCKET_LIBS) $(USB_LIBS) $(AVAHI_LIBS) $(SCSI_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
-+libsane_la_LIBADD = $(COMMON_LIBS) @PRELOADABLE_BACKENDS_ENABLED@ libdll_preload.la sane_strstatus.lo ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_pv8630.lo ../sanei/sanei_pp.lo ../sanei/sanei_thread.lo ../sanei/sanei_lm983x.lo ../sanei/sanei_access.lo ../sanei/sanei_net.lo ../sanei/sanei_wire.lo ../sanei/sanei_codec_bin.lo ../sanei/sanei_pa4s2.lo ../sanei/sanei_ab306.lo ../sanei/sanei_pio.lo ../sanei/sanei_tcp.lo ../sanei/sanei_udp.lo ../sanei/sanei_magic.lo $(DL_LIBS) $(MATH_LIB) $(IEEE1284_LIBS) $(SOCKET_LIBS) $(USB_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
+-libsane_la_LIBADD = $(COMMON_LIBS) $(PRELOADABLE_BACKENDS_ENABLED) libdll_preload.la sane_strstatus.lo ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_pv8630.lo ../sanei/sanei_pp.lo ../sanei/sanei_thread.lo ../sanei/sanei_lm983x.lo ../sanei/sanei_access.lo ../sanei/sanei_net.lo ../sanei/sanei_wire.lo ../sanei/sanei_codec_bin.lo ../sanei/sanei_pa4s2.lo ../sanei/sanei_ab306.lo ../sanei/sanei_pio.lo ../sanei/sanei_tcp.lo ../sanei/sanei_udp.lo ../sanei/sanei_magic.lo $(DL_LIBS) $(LIBV4L_LIBS) $(MATH_LIB) $(IEEE1284_LIBS) $(TIFF_LIBS) $(JPEG_LIBS) $(GPHOTO2_LIBS) $(SOCKET_LIBS) $(USB_LIBS) $(AVAHI_LIBS) $(SCSI_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
++libsane_la_LIBADD = $(COMMON_LIBS) $(PRELOADABLE_BACKENDS_ENABLED) libdll_preload.la sane_strstatus.lo ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_pv8630.lo ../sanei/sanei_pp.lo ../sanei/sanei_thread.lo ../sanei/sanei_lm983x.lo ../sanei/sanei_access.lo ../sanei/sanei_net.lo ../sanei/sanei_wire.lo ../sanei/sanei_codec_bin.lo ../sanei/sanei_pa4s2.lo ../sanei/sanei_ab306.lo ../sanei/sanei_pio.lo ../sanei/sanei_tcp.lo ../sanei/sanei_udp.lo ../sanei/sanei_magic.lo $(DL_LIBS) $(MATH_LIB) $(IEEE1284_LIBS) $(SOCKET_LIBS) $(USB_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
# WARNING: Automake is getting this wrong so have to do it ourselves.
- libsane_la_DEPENDENCIES = $(COMMON_LIBS) @PRELOADABLE_BACKENDS_ENABLED@ libdll_preload.la sane_strstatus.lo ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_pv8630.lo ../sanei/sanei_pp.lo ../sanei/sanei_thread.lo ../sanei/sanei_lm983x.lo ../sanei/sanei_access.lo ../sanei/sanei_net.lo ../sanei/sanei_wire.lo ../sanei/sanei_codec_bin.lo ../sanei/sanei_pa4s2.lo ../sanei/sanei_ab306.lo ../sanei/sanei_pio.lo ../sanei/sanei_tcp.lo ../sanei/sanei_udp.lo ../sanei/sanei_magic.lo @SANEI_SANEI_JPEG_LO@
+ libsane_la_DEPENDENCIES = $(COMMON_LIBS) $(PRELOADABLE_BACKENDS_ENABLED) libdll_preload.la sane_strstatus.lo ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_pv8630.lo ../sanei/sanei_pp.lo ../sanei/sanei_thread.lo ../sanei/sanei_lm983x.lo ../sanei/sanei_access.lo ../sanei/sanei_net.lo ../sanei/sanei_wire.lo ../sanei/sanei_codec_bin.lo ../sanei/sanei_pa4s2.lo ../sanei/sanei_ab306.lo ../sanei/sanei_pio.lo ../sanei/sanei_tcp.lo ../sanei/sanei_udp.lo ../sanei/sanei_magic.lo $(SANEI_SANEI_JPEG_LO)
+--- a/backend/Makefile.in
++++ b/backend/Makefile.in
+@@ -2757,7 +2757,7 @@ libsane_dll_la_LIBADD = $(COMMON_LIBS) l
+ nodist_libsane_la_SOURCES = dll-s.c
+ libsane_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=dll
+ libsane_la_LDFLAGS = $(DIST_LIBS_LDFLAGS)
+-libsane_la_LIBADD = $(COMMON_LIBS) $(PRELOADABLE_BACKENDS_ENABLED) libdll_preload.la sane_strstatus.lo ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_pv8630.lo ../sanei/sanei_pp.lo ../sanei/sanei_thread.lo ../sanei/sanei_lm983x.lo ../sanei/sanei_access.lo ../sanei/sanei_net.lo ../sanei/sanei_wire.lo ../sanei/sanei_codec_bin.lo ../sanei/sanei_pa4s2.lo ../sanei/sanei_ab306.lo ../sanei/sanei_pio.lo ../sanei/sanei_tcp.lo ../sanei/sanei_udp.lo ../sanei/sanei_magic.lo $(DL_LIBS) $(LIBV4L_LIBS) $(MATH_LIB) $(IEEE1284_LIBS) $(TIFF_LIBS) $(JPEG_LIBS) $(GPHOTO2_LIBS) $(SOCKET_LIBS) $(USB_LIBS) $(AVAHI_LIBS) $(SCSI_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
++libsane_la_LIBADD = $(COMMON_LIBS) $(PRELOADABLE_BACKENDS_ENABLED) libdll_preload.la sane_strstatus.lo ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_pv8630.lo ../sanei/sanei_pp.lo ../sanei/sanei_thread.lo ../sanei/sanei_lm983x.lo ../sanei/sanei_access.lo ../sanei/sanei_net.lo ../sanei/sanei_wire.lo ../sanei/sanei_codec_bin.lo ../sanei/sanei_pa4s2.lo ../sanei/sanei_ab306.lo ../sanei/sanei_pio.lo ../sanei/sanei_tcp.lo ../sanei/sanei_udp.lo ../sanei/sanei_magic.lo $(DL_LIBS) $(MATH_LIB) $(IEEE1284_LIBS) $(SOCKET_LIBS) $(USB_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
+
+ # WARNING: Automake is getting this wrong so have to do it ourselves.
+ libsane_la_DEPENDENCIES = $(COMMON_LIBS) $(PRELOADABLE_BACKENDS_ENABLED) libdll_preload.la sane_strstatus.lo ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_pv8630.lo ../sanei/sanei_pp.lo ../sanei/sanei_thread.lo ../sanei/sanei_lm983x.lo ../sanei/sanei_access.lo ../sanei/sanei_net.lo ../sanei/sanei_wire.lo ../sanei/sanei_codec_bin.lo ../sanei/sanei_pa4s2.lo ../sanei/sanei_ab306.lo ../sanei/sanei_pio.lo ../sanei/sanei_tcp.lo ../sanei/sanei_udp.lo ../sanei/sanei_magic.lo $(SANEI_SANEI_JPEG_LO)
ATA and SCSI disks. It is derived from smartsuite.
endef
-# uses GNU configure
+ifeq ($(CONFIG_USE_UCLIBCXX),y)
+ UCXXCFLAGS:=-fno-builtin -fno-rtti -nostdinc++
+ UCXXCPPFLAGS:=-I$(STAGING_DIR)/usr/include/uClibc++
+ UCXXLIBS:=-nodefaultlibs -lc -luClibc++
+endif
CONFIGURE_VARS += \
- CXXFLAGS="$$$$CXXFLAGS -fno-builtin -fno-rtti -nostdinc++" \
- CPPFLAGS="$$$$CPPFLAGS -I$(STAGING_DIR)/usr/include/uClibc++ -I$(LINUX_DIR)/include" \
+ CXXFLAGS="$$$$CXXFLAGS $(UCXXCFLAGS)" \
+ CPPFLAGS="$$$$CPPFLAGS $(UCXXCPPFLAGS) -I$(LINUX_DIR)/include" \
LDFLAGS="$$$$LDFLAGS" \
- LIBS="-nodefaultlibs -lc -luClibc++ -lm $(LIBGCC_S) -lc" \
+ LIBS="$(UCXXLIBS) -lm $(LIBGCC_S) -lc" \
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) \
PKG_NAME:=squashfs-tools
PKG_VERSION:=4.3
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR)/squashfs-tools \
CC="$(TARGET_CC)" \
+ EXTRA_CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \
+ EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
$(MAKE_FLAGS) \
mksquashfs unsquashfs
endef
CATEGORY:=Libraries
endef
+TARGET_LDFLAGS += -lz
+
CONFIGURE_ARGS += \
--with-nettle
include $(TOPDIR)/rules.mk
PKG_NAME:=tmux
-PKG_VERSION:=2.3
+PKG_VERSION:=2.5
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/tmux/tmux/releases/download/$(PKG_VERSION)
-PKG_MD5SUM:=55313e132f0f42de7e020bf6323a1939ee02ab79c48634aa07475db41573852b
+PKG_HASH:=ae135ec37c1bf6b7750a84e3a35e93d91033a806943e034521c8af51b12d95df
PKG_MAINTAINER:=Maxim Storchak <m.storchak@gmail.com>
PKG_LICENSE:=ISC
PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
+PKG_FIXUP:=autoreconf
include $(INCLUDE_DIR)/package.mk
SUBMENU:=Terminal
TITLE:=Terminal multiplexer
DEPENDS:=+libncurses +libevent2 +libpthread +librt
- URL:=http://tmux.sourceforge.net/
+ URL:=http://tmux.github.io/
endef
define Package/tmux/description
tmux is a modern, BSD-licensed alternative to GNU screen.
endef
-MAKE_FLAGS += \
- PREFIX="/usr" \
- PLATFORM="linux"
-
define Package/tmux/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/tmux $(1)/usr/bin/
+++ /dev/null
-diff --git a/compat.h b/compat.h
-index 8666a1d..2a44a2b 100644
---- a/compat.h
-+++ b/compat.h
-@@ -223,7 +223,9 @@ int daemon(int, int);
- #ifndef HAVE_B64_NTOP
- /* b64_ntop.c */
- #undef b64_ntop /* for Cygwin */
--int b64_ntop(const char *, size_t, char *, size_t);
-+int local_b64_ntop(const char *, size_t, char *, size_t);
-+#else
-+#define local_b64_ntop b64_ntop
- #endif
-
- #ifndef HAVE_FORKPTY
-diff --git a/compat/b64_ntop.c b/compat/b64_ntop.c
-index 2b4dc2d..a1314ca 100644
---- a/compat/b64_ntop.c
-+++ b/compat/b64_ntop.c
-@@ -122,7 +122,7 @@ static const char Pad64 = '=';
- */
-
- int
--b64_ntop(uint8_t const *src, size_t srclength, char *target, size_t targsize) {
-+local_b64_ntop(uint8_t const *src, size_t srclength, char *target, size_t targsize) {
- size_t datalength = 0;
- uint8_t input[3];
- uint8_t output[4];
-diff --git a/tty.c b/tty.c
-index 7be952c..06dedab 100644
---- a/tty.c
-+++ b/tty.c
-@@ -1134,7 +1134,7 @@ tty_cmd_setselection(struct tty *tty, const struct tty_ctx *ctx)
- off = 4 * ((ctx->num + 2) / 3) + 1; /* storage for base64 */
- buf = xmalloc(off);
-
-- b64_ntop(ctx->ptr, ctx->num, buf, off);
-+ local_b64_ntop(ctx->ptr, ctx->num, buf, off);
- tty_putcode_ptr2(tty, TTYC_MS, "", buf);
-
- free(buf);
include $(TOPDIR)/rules.mk
PKG_NAME:=ttyd
-PKG_VERSION:=1.3.2+git-f60398
+PKG_VERSION:=1.3.3+git-04d5bc
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/tsl0922/ttyd.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=f60398fb0976d5a682f2a28c2e8f8b90ec1c4c2c
-PKG_MIRROR_HASH=687499f46471f018aadce1d71c72de8a7fdd2ea04b926d8eb9eaeb747e1f4388
+PKG_SOURCE_VERSION:=04d5bc1ecb59667d025a94e1967a83c24141f911
+PKG_MIRROR_HASH=87ea900f7bf67daf5131ecfcec0917e175d168ce52771012139c06dbafcc641d
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE