PKG_NAME:=netdata
PKG_VERSION:=1.14.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_MAINTAINER:=Josef Schlehofer <pepe.schlehofer@gmail.com>, Daniel Engberg <daniel.engberg.lists@pyret.net>
PKG_LICENSE:=GPL-3.0+
APPBINARY=/usr/sbin/netdata
CONFIGFILE=/etc/netdata/netdata.conf
- start_service() {
+start_service() {
mkdir -m 0755 -p /var/cache/netdata
chown nobody /var/cache/netdata
mkdir -m 0755 -p /var/lib/netdata
procd_set_param file $CONFIGFILE
procd_set_param respawn
procd_close_instance
- }
+}
PKG_NAME:=syslog-ng
PKG_VERSION:=3.21.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_MAINTAINER:=Josef Schlehofer <josef.schlehofer@nic.cz>
PKG_LICENSE:=LGPL-2.1+
#!/bin/sh /etc/rc.common
-# Copyright (C) 2006-2016 OpenWrt.org
+# Copyright (C) 2006-2019 OpenWrt.org
START=50
start_service() {
[ -f /etc/syslog-ng.conf ] || return 1
procd_open_instance
- procd_set_param command /usr/sbin/syslog-ng
+ procd_set_param command /usr/sbin/syslog-ng --foreground
procd_close_instance
}
-
-reload_service() {
- stop
- start
-}
PKG_NAME:=diffutils
PKG_VERSION:=3.7
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GNU/diffutils
DEPENDS:=+USE_GLIBC:librt
TITLE:=diffutils
URL:=http://www.gnu.org/software/diffutils/
+ ALTERNATIVES:=\
+ 200:/usr/bin/cmp:/usr/bin/gnu-cmp \
+ 200:/usr/bin/diff:/usr/bin/gnu-diff \
+
endef
define Package/diffutils/description
define Package/diffutils/install
$(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/{sdiff,diff3,diff,cmp} $(1)/usr/bin/
-endef
-
-define Package/diffutils/preinst
-#!/bin/sh
-for x in sdiff diff3 diff cmp; do
- [ -L "$${IPKG_INSTROOT}/usr/bin/$$x" ] && rm -f "$${IPKG_INSTROOT}/usr/bin/$$x"
-done
-exit 0
-endef
-
-define Package/diffutils/postrm
-#!/bin/sh
-for x in sdiff diff3 diff cmp; do
- /bin/busybox $$x -h 2>&1 | grep -q BusyBox && ln -sf ../../bin/busybox /usr/bin/$$x
-done
-exit 0
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/{sdiff,diff3} $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/diff $(1)/usr/bin/gnu-diff
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/cmp $(1)/usr/bin/gnu-cmp
endef
$(eval $(call BuildPackage,diffutils))
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=pf-ring
-PKG_VERSION:=7.2.0
+PKG_VERSION:=7.4.0
PKG_RELEASE:=1
-PKG_MAINTAINER:=Banglang Huang <banglang.huang@foxmail.com>
-PKG_LICENSE:=GPL-2.0
+PKG_MAINTAINER:=Banglang Huang <banglang.huang@foxmail.com>
+PKG_LICENSE:=GPL-2.0-only
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/ntop/PF_RING/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=5d349ac37a6ece5966bf606a6f131d628b98d88654c2f502d3c4b8bbf6ef9796
-
+PKG_HASH:=e1c9cb44d8072854220f493c56fa5cba99a6b8336883939dc18b3e30c2954b68
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/PF_RING-$(PKG_VERSION)
+PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
CATEGORY:=Languages
endef
-define GoPackage/Environment
+define GoPackage/Environment/Default
GOOS=$(GO_OS) \
GOARCH=$(GO_ARCH) \
GO386=$(GO_386) \
CGO_CXXFLAGS="$(filter-out $(GO_CFLAGS_TO_REMOVE),$(TARGET_CXXFLAGS))"
endef
+GoPackage/Environment=$(call GoPackage/Environment/Default,)
+
# false if directory does not exist
GoPackage/is_dir_not_empty=$$$$($(FIND) $(1) -maxdepth 0 -type d \! -empty 2>/dev/null)
GO_VERSION_MAJOR_MINOR:=1.12
-GO_VERSION_PATCH:=5
+GO_VERSION_PATCH:=6
PKG_SOURCE:=go$(PKG_VERSION).src.tar.gz
PKG_SOURCE_URL:=$(GO_SOURCE_URLS)
-PKG_HASH:=2aa5f088cbb332e73fc3def546800616b38d3bfe6b8713b8a6404060f22503e8
+PKG_HASH:=c96c5ccc7455638ae1a8b7498a030fe653731c8391c5f8e79590bce72f92b4ca
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE
PKG_NAME:=luajit
PKG_VERSION:=2.1.0-beta3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=LuaJIT-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://luajit.org/download
CATEGORY:=Languages
TITLE:=LuaJIT
URL:=https://www.luajit.org
- DEPENDS:=@(i386||x86_64||arm||armeb||powerpc||mips||mipsel)
+ DEPENDS:=@(i386||x86_64||arm||armeb||aarch64||powerpc||mips||mipsel)
endef
define Package/luajit/description
endef
ifeq ($(HOST_ARCH),x86_64)
- ifeq ($(CONFIG_x86_64),)
+ ifeq ($(CONFIG_ARCH_64BIT),)
HOST_BITS := -m32
endif
endif
PKG_NPM_NAME:=homebridge
PKG_NAME:=node-$(PKG_NPM_NAME)
-PKG_VERSION:=0.4.49
+PKG_VERSION:=0.4.50
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NPM_NAME)-$(PKG_VERSION).tgz
PKG_SOURCE_URL:=http://registry.npmjs.org/$(PKG_NPM_NAME)/-/
-PKG_HASH:=1507c2ec513e6c8871d59537b502a1ed24c93e4cb59f1eca8c7fa35d77877cb3
+PKG_HASH:=85541254b44c0b70e38ed5e49a9c6a68a20467b99fe0ff3703ca9fc422ce879c
PKG_BUILD_DEPENDS:=node/host
PKG_USE_MIPS16:=0
CATEGORY:=Languages
TITLE:=The Perl intepreter
URL:=http://www.perl.com/
- DEPENDS:=+USE_GLIBC:libbsd +PERL_THREADS:libpthread
+ DEPENDS:=+USE_GLIBC:libbsd +PERL_THREADS:libpthread @!arc
endef
define Package/perl/description
PECL_LONGNAME:=Extended HTTP Support
PKG_VERSION:=3.2.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_HASH:=6fb7f038365fb1f3302f1b7e7d6b55d5c422bdea36057b1efe02bbe6ad3cc01b
PKG_NAME:=php7-pecl-http
PECL_cv_HAVE_LIBCURL_SecureTransport=no \
PECL_cv_HAVE_LIBCURL_GSKit=no \
PECL_cv_HAVE_LIBCURL_PolarSSL=no \
- PECL_cv_HAVE_LIBCURL_WolfSSL=$(if $(CONFIG_LIBCURL_CYASSL),yes,no) \
+ PECL_cv_HAVE_LIBCURL_WolfSSL=$(if $(CONFIG_LIBCURL_WOLFSSL),yes,no) \
PECL_cv_HAVE_LIBCURL_mbedTLS=$(if $(CONFIG_LIBCURL_MBEDTLS),yes,no) \
PECL_cv_HAVE_LIBCURL_axTLS=no \
PECL_cv_LIBCURL_TLSAUTH_SRP=$(if $(CONFIG_LIBCURL_TLS_SRP),yes,no) \
include $(TOPDIR)/rules.mk
PKG_NAME:=php
-PKG_VERSION:=7.2.18
+PKG_VERSION:=7.2.19
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_HASH:=9970dbb3ab1298c9e6aac54bebfa841c8ad14b18eead65594a68fa841364cb8d
+PKG_HASH:=4ffa2404a88d60e993a9fe69f829ebec3eb1e006de41b6048ce5e91bbeaa9282
PKG_FIXUP:=libtool autoreconf
PKG_BUILD_PARALLEL:=1
include $(TOPDIR)/rules.mk
PKG_NAME:=Flask
-PKG_VERSION:=1.0.2
+PKG_VERSION:=1.0.3
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/F/Flask
-PKG_HASH:=2271c0070dbcb5275fad4a82e29f23ab92682dc45f9dfbc22c02ba9b9322ce48
-PKG_BUILD_DEPENDS:=python python3
+PKG_HASH:=ad7c6d841e64296b962296c2c2dabc6543752985727af86a975072dea984b6f3
+
+PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE
-PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
-
-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)
include $(INCLUDE_DIR)/package.mk
include ../python3-package.mk
SECTION:=lang
CATEGORY:=Languages
SUBMENU:=Python
- URL:=http://github.com/pallets/flask/
TITLE:=python3-flask
+ URL:=https://github.com/pallets/flask/
DEPENDS:=+python3-asyncio +python3-click +python3-codecs +python3-decimal \
+python3-itsdangerous +python3-jinja2 +python3 +python3-logging \
+python3-markupsafe +python3-multiprocessing +python3-setuptools \
* If a replacement cannot be found, the program will be removed during "The Snap"
* Python 2 libraries will remain in the feed until "The Snap"
- * A Python 2-only library will be transitioned to Python 3 (or a suitable replacement found), if its Python 3 version is a dependency of another package in the feed
+ * For any Python 2-only libraries, a Python 3 version will be added (or a suitable replacement found), if its Python 3 version is a dependency of another package in the feed
* Python 2 libraries will receive normal updates until 31 October 2019
* From 31 October 2019 onward:
* Python 2-only libraries will receive security updates only
PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-bcrypt-$(PKG_VERSION)
+PKG_BUILD_DEPENDS:=libffi/host
+HOST_PYTHON_PACKAGE_BUILD_DEPENDS:="cffi>=1.1"
+HOST_PYTHON3_PACKAGE_BUILD_DEPENDS:="cffi>=1.1"
+
include $(INCLUDE_DIR)/package.mk
include ../python-package.mk
PKG_NAME:=django-appconf
PKG_VERSION:=1.0.2
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_LICENSE:=BSD-3-Clause
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
CATEGORY:=Languages
TITLE:=A helper class for handling configuration defaults of packaged apps gracefully.
URL:=http://django-appconf.readthedocs.org/
- DEPENDS:=+python +django
+ DEPENDS:=+python +python-django
endef
define Package/django-appconf/description
PKG_NAME:=django-compressor
PKG_VERSION:=2.2
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
PKG_LICENSE:=MIT
CATEGORY:=Languages
TITLE:=Compress CSS/JS into single cached files
URL:=http://django-compressor.readthedocs.org/
- DEPENDS:=+python +django +django-appconf +python-rcssmin
+ DEPENDS:=+python +python-django +django-appconf +python-rcssmin
VARIANT:=python
endef
PKG_NAME:=django-constance
PKG_VERSION:=2.3.1
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_LICENSE:=BSD-3-Clause
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_HASH:=a49735063b2c30015d2e52a90609ea9798da722ed070f091de51714758a5d018
PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-django-constance-$(PKG_VERSION)
+
include $(INCLUDE_DIR)/package.mk
include ../python-package.mk
+include ../python3-package.mk
+
+PKG_UNPACK:=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
-define Package/django-constance
+define Package/python-django-constance/Default
SUBMENU:=Python
SECTION:=lang
CATEGORY:=Languages
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
+define Package/python-django-constance
+$(call Package/python-django-constance/Default)
+ DEPENDS:= \
+ +PACKAGE_python-django-constance:python \
+ +PACKAGE_python-django-constance:python-django
+ VARIANT:=python
+endef
+
+define Package/python-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))
+define Package/python3-django-constance
+$(call Package/python-django-constance/Default)
+ DEPENDS:= \
+ +PACKAGE_python3-django-constance:python3 \
+ +PACKAGE_python3-django-constance:python3-django
+ VARIANT:=python3
endef
-define Package/django-constance/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
+define Package/python3-django-constance/description
+$(call define Package/python-django-constance/description)
+.
+(Variant for Python3)
endef
-$(eval $(call BuildPackage,django-constance))
+$(eval $(call PyPackage,python-django-constance))
+$(eval $(call BuildPackage,python-django-constance))
+$(eval $(call Py3Package,python3-django-constance))
+$(eval $(call BuildPackage,python3-django-constance))
PKG_NAME:=django-formtools
PKG_VERSION:=2.1
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_MAINTAINER:=Eneas U de Queiroz <cote2004-github@yahoo.com>
PKG_LICENSE:=BSD-3-Clause
CATEGORY:=Languages
TITLE:=High-level abstractions for Django forms
URL:=https://django-formtools.readthedocs.io/en/latest/
- DEPENDS:=+python +django
+ DEPENDS:=+python +python-django
VARIANT:=python
endef
PKG_NAME:=django-jsonfield
PKG_VERSION:=1.0.1
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_LICENSE:=BSD-3-Clause
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
CATEGORY:=Languages
TITLE:=JSONField for django models
URL:=https://github.com/bradjasper/django-jsonfield
- DEPENDS:=+python +django
+ DEPENDS:=+python +python-django
endef
define Package/django-jsonfield/description
PKG_NAME:=django-picklefield
PKG_VERSION:=1.1.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_LICENSE:=MIT
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
CATEGORY:=Languages
TITLE:=Pickled object field for Django
URL:=https://github.com/gintas/django-picklefield
- DEPENDS:=+python +django
+ DEPENDS:=+python +python-django
endef
define Package/django-picklefield/description
PKG_NAME:=django-postoffice
PKG_VERSION:=3.1.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_LICENSE:=MIT
PKG_SOURCE:=django-post_office-$(PKG_VERSION).tar.gz
CATEGORY:=Languages
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
+ DEPENDS:=+python +python-django +django-jsonfield
endef
define Package/django-postoffice/description
PKG_NAME:=django-ranged-response
PKG_VERSION:=0.2.0
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_MAINTAINER:=Eneas U de Queiroz <cote2004-github@yahoo.com>
PKG_LICENSE:=MIT
CATEGORY:=Languages
TITLE:=Add Content-Range: to FileResponse
URL:=https://github.com/wearespindle/django-ranged-fileresponse
- DEPENDS:=+python +django
+ DEPENDS:=+python +python-django
VARIANT:=python
endef
PKG_NAME:=django-restframework
PKG_VERSION:=3.9.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_LICENSE:=BSD-3-Clause
PKG_SOURCE:=djangorestframework-$(PKG_VERSION).tar.gz
CATEGORY:=Languages
TITLE:=Web APIs for Django, made easy.
URL:=https://www.django-rest-framework.org
- DEPENDS:=+python +django
+ DEPENDS:=+python +python-django
endef
define Package/django-restframework/description
PKG_NAME:=django-simple-captcha
PKG_VERSION:=0.5.11
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_MAINTAINER:=Eneas U de Queiroz <cote2004-github@yahoo.com>
PKG_LICENSE:=MIT
CATEGORY:=Languages
TITLE:=Simple Django captcha application
URL:=https://github.com/mbi/django-simple-captcha
- DEPENDS:=+python +python-six +django +pillow +django-ranged-response
+ DEPENDS:=+python +python-six +python-django +pillow +django-ranged-response
VARIANT:=python
endef
PKG_NAME:=django-statici18n
PKG_VERSION:=1.8.2
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_LICENSE:=BSD-3-Clause
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
CATEGORY:=Languages
TITLE:=A Django app that provides helper for generating JavaScript catalog to static files.
URL:=https://django-statici18n.readthedocs.org/
- DEPENDS:=+python +django
+ DEPENDS:=+python +python-django
endef
define Package/django-statici18n/description
PKG_NAME:=django-webpack-loader
PKG_VERSION:=0.6.0
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_MAINTAINER:=Eneas U de Queiroz <cote2004-github@yahoo.com>
PKG_LICENSE:=MIT
CATEGORY:=Languages
TITLE:=Transparently use webpack in django
URL:=https://github.com/owais/django-webpack-loader
- DEPENDS:=+python +django
+ DEPENDS:=+python +python-django
VARIANT:=python
endef
PKG_NAME:=django
PKG_VERSION:=1.11.17
-PKG_RELEASE=3
+PKG_RELEASE=4
PKG_SOURCE:=Django-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/D/Django
PKG_LICENSE_FILES:=LICENSE LICENSE.python
PKG_CPE_ID:=cpe:/a:djangoproject:django
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-django-$(PKG_VERSION)
+
include $(INCLUDE_DIR)/package.mk
include ../python-package.mk
+include ../python3-package.mk
+
+PKG_UNPACK:=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
-define Package/django
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- TITLE:=The web framework for perfectionists with deadlines.
- URL:=https://www.djangoproject.com/
- DEPENDS:=+python +python-pytz
+define Package/django/Default
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=The web framework for perfectionists with deadlines.
+ URL:=https://www.djangoproject.com/
endef
-define Package/django/description
- The web framework for perfectionists with deadlines.
+define Package/python-django
+$(call Package/django/Default)
+ DEPENDS:= \
+ +PACKAGE_python-django:python \
+ +PACKAGE_python-django:python-pytz
+ VARIANT:=python
endef
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+define Package/python-django/description
+ The web framework for perfectionists with deadlines.
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
+define Package/python3-django
+$(call Package/django/Default)
+ DEPENDS:= \
+ +PACKAGE_python3-django:python3 \
+ +PACKAGE_python3-django:python3-pytz
+ VARIANT:=python3
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
+define Package/python3-django/description
+$(call Package/python-django/description)
+.
+(Variant for Python3)
endef
-$(eval $(call BuildPackage,django))
+$(eval $(call PyPackage,python-django))
+$(eval $(call BuildPackage,python-django))
+
+$(eval $(call Py3Package,python3-django))
+$(eval $(call BuildPackage,python3-django))
PKG_NAME:=flup
PKG_VERSION:=1.0.3
-PKG_RELEASE:=2
-PKG_LICENSE:=BSD-3-Clause
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/f/flup
PKG_HASH:=5eb09f26eb0751f8380d8ac43d1dfb20e1d42eca0fa45ea9289fa532a79cd159
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-flup-$(PKG_VERSION)
+
PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=PKG-INFO
include $(INCLUDE_DIR)/package.mk
include ../python-package.mk
+include ../python3-package.mk
-define Package/flup
- SUBMENU:=Python
+PKG_UNPACK:=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
+
+define Package/flup/Default
SECTION:=lang
CATEGORY:=Languages
+ SUBMENU:=Python
TITLE:=Random assortment of WSGI servers
URL:=https://www.saddi.com/software/flup/
- DEPENDS:=+python
endef
-define Package/flup/description
- Random assortment of WSGI servers
+define Package/python-flup
+$(call Package/flup/Default)
+ DEPENDS+= \
+ +PACKAGE_python-flup:python-light \
+ +PACKAGE_python-flup:python-logging
+ VARIANT:=python
endef
-define Build/Compile
- $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+define Package/python3-flup
+$(call Package/flup/Default)
+ DEPENDS+= \
+ +PACKAGE_python3-flup:python3-light \
+ +PACKAGE_python3-flup:python3-logging
+ VARIANT:=python3
endef
-define Package/flup/install
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
+define Package/python-flup/description
+ Random assortment of WSGI servers.
endef
-$(eval $(call BuildPackage,flup))
+define Package/python3-flup/description
+$(call Package/python-flup/description)
+.
+(Variant for Python3)
+endef
+
+$(eval $(call PyPackage,python-flup))
+$(eval $(call BuildPackage,python-flup))
+$(eval $(call BuildPackage,python-flup-src))
+
+$(eval $(call Py3Package,python3-flup))
+$(eval $(call BuildPackage,python3-flup))
+$(eval $(call BuildPackage,python3-flup-src))
PKG_NAME:=itsdangerous
PKG_VERSION:=1.1.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/i/itsdangerous
PKG_HASH:=321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19
-PKG_BUILD_DEPENDS:=python python3
+
+PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE
-PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
-
-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)
include $(INCLUDE_DIR)/package.mk
include ../python3-package.mk
SECTION:=lang
CATEGORY:=Languages
SUBMENU:=Python
- URL:=http://github.com/mitsuhiko/itsdangerous
- TITLE:=python3-itsdangerous
+ TITLE:=ItsDangerous
+ URL:=https://palletsprojects.com/p/itsdangerous/
DEPENDS:=+python3-light
VARIANT:=python3
endef
define Package/python3-itsdangerous/description
-Various helpers to pass trusted data to untrusted environments and back.
+ Various helpers to pass trusted data to untrusted environments and back.
endef
$(eval $(call Py3Package,python3-itsdangerous))
$(eval $(call BuildPackage,python3-itsdangerous))
+$(eval $(call BuildPackage,python3-itsdangerous-src))
+
include $(TOPDIR)/rules.mk
PKG_NAME:=python-certifi
-PKG_VERSION:=2019.3.9
-PKG_RELEASE:=2
+PKG_VERSION:=2019.6.16
+PKG_RELEASE:=1
PKG_MAINTAINER:=Eneas U de Queiroz <cote2004-github@yahoo.com>
PKG_LICENSE:=MPL-2.0
PKG_SOURCE:=certifi-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/c/certifi
-PKG_HASH:=b26104d6835d1f5e49452a26eb2ff87fe7090b89dfcaee5ea2212697e1e1d7ae
+PKG_HASH:=945e3ba63a0b9f577b1395204e13c3a231f9bc0223888be653286534e5873695
PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-certifi-$(PKG_VERSION)
include $(TOPDIR)/rules.mk
PKG_NAME:=pycurl
-PKG_VERSION:=7.43.0.2
-PKG_RELEASE:=2
+PKG_VERSION:=7.43.0.3
+PKG_RELEASE:=1
PKG_SOURCE:=pycurl-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/p/pycurl
-PKG_HASH:=0f0cdfc7a92d4f2a5c44226162434e34f7d6967d3af416a6f1448649c09a25a4
+PKG_HASH:=6f08330c5cf79fa8ef68b9912b9901db7ffd34b63e225dce74db56bb21deda8e
PKG_MAINTAINER:=Waldemar Konik <informatyk74@interia.pl>
PKG_LICENSE:=LGPL-2.1
+++ /dev/null
-From bb7d7a803665005cc72ad68a388e9e937ff3d2f6 Mon Sep 17 00:00:00 2001
-From: Josef Schlehofer <pepe.schlehofer@gmail.com>
-Date: Sat, 23 Mar 2019 21:02:17 +0100
-Subject: [PATCH] support for mbedTLS
-
----
- INSTALL.rst | 4 ++--
- doc/thread-safety.rst | 2 +-
- setup.py | 28 +++++++++++++++++++++-------
- src/module.c | 6 ++++--
- src/pycurl.h | 7 ++++++-
- src/threadsupport.c | 39 +++++++++++++++++++++++++++++++++++++++
- 6 files changed, 73 insertions(+), 13 deletions(-)
-
-diff --git a/INSTALL.rst b/INSTALL.rst
-index 8ad8b4f..da70d25 100644
---- a/INSTALL.rst
-+++ b/INSTALL.rst
-@@ -53,7 +53,7 @@ It will then fail at runtime as follows::
-
- To fix this, you need to tell ``setup.py`` what SSL backend is used::
-
-- python setup.py --with-[openssl|gnutls|nss] install
-+ python setup.py --with-[openssl|gnutls|nss|mbedtls] install
-
- Note: as of PycURL 7.21.5, setup.py accepts ``--with-openssl`` option to
- indicate that libcurl is built against OpenSSL. ``--with-ssl`` is an alias
-@@ -85,7 +85,7 @@ environment variable::
- The same applies to the SSL backend, if you need to specify it (see the SSL
- note above)::
-
-- export PYCURL_SSL_LIBRARY=[openssl|gnutls|nss]
-+ export PYCURL_SSL_LIBRARY=[openssl|gnutls|nss|mbedtls]
- easy_install pycurl
-
-
-diff --git a/doc/thread-safety.rst b/doc/thread-safety.rst
-index 5ba3f3e..ae2b9e5 100644
---- a/doc/thread-safety.rst
-+++ b/doc/thread-safety.rst
-@@ -21,7 +21,7 @@ For Python programs using PycURL, this means:
- Python code *outside of a libcurl callback for the PycURL object in question*
- is unsafe.
-
--PycURL handles the necessary SSL locks for OpenSSL/LibreSSL, GnuTLS and NSS.
-+PycURL handles the necessary SSL locks for OpenSSL/LibreSSL, GnuTLS, NSS and mbedTLS.
-
- A special situation exists when libcurl uses the standard C library
- name resolver (i.e., not threaded nor c-ares resolver). By default libcurl
-diff --git a/setup.py b/setup.py
-index e1e6925..5ab437f 100644
---- a/setup.py
-+++ b/setup.py
-@@ -143,6 +143,7 @@ class ExtensionConfiguration(object):
- '--with-ssl': self.using_openssl,
- '--with-gnutls': self.using_gnutls,
- '--with-nss': self.using_nss,
-+ '--with-mbedtls': self.using_mbedtls,
- }
-
- def detect_ssl_option(self):
-@@ -152,20 +153,20 @@ class ExtensionConfiguration(object):
- if option != other_option:
- if scan_argv(self.argv, other_option) is not None:
- raise ConfigurationError('Cannot give both %s and %s' % (option, other_option))
--
-+
- return option
-
- def detect_ssl_backend(self):
- ssl_lib_detected = False
--
-+
- if 'PYCURL_SSL_LIBRARY' in os.environ:
- ssl_lib = os.environ['PYCURL_SSL_LIBRARY']
-- if ssl_lib in ['openssl', 'gnutls', 'nss']:
-+ if ssl_lib in ['openssl', 'gnutls', 'nss', 'mbedtls']:
- ssl_lib_detected = True
- getattr(self, 'using_%s' % ssl_lib)()
- else:
- raise ConfigurationError('Invalid value "%s" for PYCURL_SSL_LIBRARY' % ssl_lib)
--
-+
- option = self.detect_ssl_option()
- if option:
- ssl_lib_detected = True
-@@ -194,6 +195,10 @@ class ExtensionConfiguration(object):
- self.using_nss()
- ssl_lib_detected = True
- break
-+ if arg[2:] == 'mbedtls':
-+ self.using_nss()
-+ ssl_lib_detected = True
-+ break
-
- if not ssl_lib_detected and len(self.argv) == len(self.original_argv) \
- and not os.environ.get('PYCURL_CURL_CONFIG') \
-@@ -201,7 +206,7 @@ class ExtensionConfiguration(object):
- # this path should only be taken when no options or
- # configuration environment variables are given to setup.py
- ssl_lib_detected = self.detect_ssl_lib_on_centos6()
--
-+
- self.ssl_lib_detected = ssl_lib_detected
-
- def curl_config(self):
-@@ -301,7 +306,7 @@ class ExtensionConfiguration(object):
- if errtext:
- msg += ":\n" + errtext
- raise ConfigurationError(msg)
--
-+
- # hack
- self.sslhintbuf = sslhintbuf
-
-@@ -327,7 +332,7 @@ specify the SSL backend manually.''')
- self.library_dirs.append(arg[2:])
- else:
- self.extra_link_args.append(arg)
--
-+
- if not self.libraries:
- self.libraries.append("curl")
-
-@@ -354,6 +359,9 @@ specify the SSL backend manually.''')
- elif ssl_version.startswith('NSS/'):
- self.using_nss()
- ssl_lib_detected = True
-+ elif ssl_version.startswith('mbedTLS/'):
-+ self.using_mbedtls()
-+ ssl_lib_detected = 'mbedtls'
- return ssl_lib_detected
-
- def detect_ssl_lib_on_centos6(self):
-@@ -505,6 +513,11 @@ specify the SSL backend manually.''')
- self.libraries.append('ssl3')
- self.define_macros.append(('HAVE_CURL_SSL', 1))
-
-+ def using_mbedtls(self):
-+ self.define_macros.append(('HAVE_CURL_MBEDTLS', 1))
-+ self.libraries.append('mbedtls')
-+ self.define_macros.append(('HAVE_CURL_SSL', 1))
-+
- def get_bdist_msi_version_hack():
- # workaround for distutils/msi version requirement per
- # epydoc.sourceforge.net/stdlib/distutils.version.StrictVersion-class.html -
-@@ -871,6 +884,7 @@ PycURL Unix options:
- --with-ssl legacy alias for --with-openssl
- --with-gnutls libcurl is linked against GnuTLS
- --with-nss libcurl is linked against NSS
-+ --with-mbedtls libcurl is linked against mbedTLS
- '''
-
- windows_help = '''\
-diff --git a/src/module.c b/src/module.c
-index 2331ae8..7fdb25a 100644
---- a/src/module.c
-+++ b/src/module.c
-@@ -328,7 +328,7 @@ initpycurl(void)
- PyObject *collections_module = NULL;
- PyObject *named_tuple = NULL;
- PyObject *arglist = NULL;
--
-+
- assert(Curl_Type.tp_weaklistoffset > 0);
- assert(CurlMulti_Type.tp_weaklistoffset > 0);
- assert(CurlShare_Type.tp_weaklistoffset > 0);
-@@ -355,6 +355,8 @@ initpycurl(void)
- runtime_ssl_lib = "gnutls";
- } else if (!strncmp(vi->ssl_version, "NSS/", 4)) {
- runtime_ssl_lib = "nss";
-+ } else if (!strncmp(vi->ssl_version, "mbedTLS/", 2)) {
-+ runtime_ssl_lib = "mbedtls";
- } else {
- runtime_ssl_lib = "none/other";
- }
-@@ -461,7 +463,7 @@ initpycurl(void)
- /* constants for ioctl callback argument values */
- insint_c(d, "IOCMD_NOP", CURLIOCMD_NOP);
- insint_c(d, "IOCMD_RESTARTREAD", CURLIOCMD_RESTARTREAD);
--
-+
- /* opensocketfunction return value */
- insint_c(d, "SOCKET_BAD", CURL_SOCKET_BAD);
-
-diff --git a/src/pycurl.h b/src/pycurl.h
-index 65290f7..2294cb8 100644
---- a/src/pycurl.h
-+++ b/src/pycurl.h
-@@ -174,6 +174,11 @@ pycurl_inet_ntop (int family, void *addr, char *string, size_t string_size);
- # define COMPILE_SSL_LIB "gnutls"
- # elif defined(HAVE_CURL_NSS)
- # define COMPILE_SSL_LIB "nss"
-+# elif defined(HAVE_CURL_MBEDTLS)
-+# include <mbedtls/ssl.h>
-+# define PYCURL_NEED_SSL_TSL
-+# define PYCURL_NEED_MBEDTLS_TSL
-+# define COMPILE_SSL_LIB "mbedtls"
- # else
- # ifdef _MSC_VER
- /* sigh */
-@@ -190,7 +195,7 @@ pycurl_inet_ntop (int family, void *addr, char *string, size_t string_size);
- /* since we have no crypto callbacks for other ssl backends,
- * no reason to require users match those */
- # define COMPILE_SSL_LIB "none/other"
--# endif /* HAVE_CURL_OPENSSL || HAVE_CURL_GNUTLS || HAVE_CURL_NSS */
-+# endif /* HAVE_CURL_OPENSSL || HAVE_CURL_GNUTLS || HAVE_CURL_NSS || HAVE_CURL_MBEDTLS */
- #else
- # define COMPILE_SSL_LIB "none/other"
- #endif /* HAVE_CURL_SSL */
-diff --git a/src/threadsupport.c b/src/threadsupport.c
-index 6ca07f5..51abffd 100644
---- a/src/threadsupport.c
-+++ b/src/threadsupport.c
-@@ -232,6 +232,45 @@ pycurl_ssl_cleanup(void)
- }
- #endif
-
-+/* mbedTLS */
-+
-+#ifdef PYCURL_NEED_MBEDTLS_TSL
-+static int
-+pycurl_ssl_mutex_create(void **m)
-+{
-+ if ((*((PyThread_type_lock *) m) = PyThread_allocate_lock()) == NULL) {
-+ return -1;
-+ } else {
-+ return 0;
-+ }
-+}
-+
-+static int
-+pycurl_ssl_mutex_destroy(void **m)
-+{
-+ PyThread_free_lock(*((PyThread_type_lock *) m));
-+ return 0;
-+}
-+
-+static int
-+pycurl_ssl_mutex_lock(void **m)
-+{
-+ return !PyThread_acquire_lock(*((PyThread_type_lock *) m), 1);
-+}
-+
-+PYCURL_INTERNAL int
-+pycurl_ssl_init(void)
-+{
-+ return 0;
-+}
-+
-+PYCURL_INTERNAL void
-+pycurl_ssl_cleanup(void)
-+{
-+ return;
-+}
-+#endif
-+
- /*************************************************************************
- // CurlShareObject
- **************************************************************************/
---
-2.17.0.windows.1
-
--- /dev/null
+#
+# Copyright (C) 2019 CZ.NIC, z. s. p. o. (https://www.nic.cz/)
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-markdown
+PKG_VERSION:=3.1.1
+PKG_RELEASE:=1
+
+PKG_SOURCE:=Markdown-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/m/markdown/
+PKG_HASH:=2e50876bcdd74517e7b71f3e7a76102050edec255b3983403f1a63e7c8a41e7a
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/Markdown-$(PKG_VERSION)
+
+PKG_MAINTAINER:=Josef Schlehofer <josef.schlehofer@nic.cz>
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=LICENSE.md
+
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-markdown
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=Markdown implementation in Python
+ URL:=https://python-markdown.github.io/
+ DEPENDS:= \
+ +python3-light \
+ +python3-setuptools \
+ +python3-logging
+ VARIANT:=python3
+endef
+
+define Package/python3-markdown/description
+ A fast and complete Python implementation of Markdown.
+endef
+
+$(eval $(call Py3Package,python3-markdown))
+$(eval $(call BuildPackage,python3-markdown))
+$(eval $(call BuildPackage,python3-markdown-src))
PKG_NAME:=python-pytz
PKG_VERSION:=2019.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=pytz-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/p/pytz
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE.txt
-HOST_BUILD_DEPENDS:=python/host
-
-include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/package.mk
include ../python-package.mk
include ../python3-package.mk
PKG_UNPACK:=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
-HOST_UNPACK:=$(HOST_TAR) -C $(HOST_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
define Package/python-pytz/Default
SUBMENU:=Python
(Variant for Python3)
endef
-define Host/Compile
- $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR_HOSTPKG)")
-endef
-
-Host/Install:=
-
-$(eval $(call HostBuild))
-
$(eval $(call PyPackage,python-pytz))
$(eval $(call BuildPackage,python-pytz))
$(eval $(call BuildPackage,python-pytz-src))
include $(TOPDIR)/rules.mk
PKG_NAME:=python-twisted
-PKG_VERSION:=19.2.0
+PKG_VERSION:=19.2.1
PKG_RELEASE:=1
PKG_SOURCE:=Twisted-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/T/Twisted
-PKG_HASH:=1708e1928ae84ec9d3ebab0d427e20e1e38ff721b15bbced476d047d4a43abbe
+PKG_HASH:=fa2c04c2d68a9be7fc3975ba4947f653a57a656776f24be58ff0fe4b9aaf3e52
PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-twisted-$(PKG_VERSION)
PKG_BUILD_DEPENDS:=libtirpc
include $(TOPDIR)/rules.mk
PKG_NAME:=python-zeroconf
-PKG_VERSION:=0.22.0
+PKG_VERSION:=0.23.0
PKG_RELEASE:=1
PKG_SOURCE:=zeroconf-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://pypi.python.org/packages/source/z/zeroconf/
-PKG_HASH:=fe66582c7b3ecc229ea4555b6d9da9bc26fc70134811e980b4fbd033e472b825
+PKG_HASH:=e0c333b967c48f8b2e5cc94a1d4d28893023fb06dfd797ee384a94cdd1d0eef5
PKG_BUILD_DIR:=$(BUILD_DIR)/zeroconf-$(PKG_VERSION)
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include $(1)/usr/lib $(1)/usr/lib/pkgconfig
- $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_DIR) $(2)/bin
$(INSTALL_DIR) $(1)/usr/lib/python$(PYTHON_VERSION)-openwrt
$(CP) \
$(PKG_INSTALL_DIR)/usr/include/python$(PYTHON_VERSION) \
$(1)/usr/lib/pkgconfig
$(INSTALL_BIN) \
./files/python-config.in \
- $(1)/usr/bin/python$(PYTHON_VERSION)-config
+ $(2)/bin/python$(PYTHON_VERSION)-config
$(SED) \
's|@EXENAME@|$(HOST_PYTHON_DIR)/bin/python$(PYTHON_VERSION)|' \
- $(1)/usr/bin/python$(PYTHON_VERSION)-config
+ -e 's|@TARGET_PREFIX@|$(PYTHON_DIR)|' \
+ $(2)/bin/python$(PYTHON_VERSION)-config
$(CP) \
$(PKG_INSTALL_DIR)/usr/lib/python$(PYTHON_VERSION)/_sysconfigdata.py \
$(1)/usr/lib/python$(PYTHON_VERSION)-openwrt/_sysconfigdatatarget.py
# start changes
host_prefix = sysconfig.PREFIX
-target_bin_dir = os.path.dirname(os.path.abspath(__file__))
-target_prefix = os.path.normpath(os.path.join(target_bin_dir, '..'))
+target_prefix = '@TARGET_PREFIX@'
target_data_dir = os.path.join(target_prefix, 'lib', 'python' + sysconfig.get_config_var('VERSION') + '-openwrt')
sys.path.append(target_data_dir)
--- /dev/null
+#
+# Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/)
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=Flask-Login
+PKG_VERSION:=0.4.1
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/f/flask-login/
+PKG_HASH:=c815c1ac7b3e35e2081685e389a665f2c74d7e077cb93cecabaea352da4752ec
+
+PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-flask-login
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=User session management plugin for Flask
+ URL:=https://github.com/maxcountryman/flask-login
+ DEPENDS:=+python3-light +python3-flask
+ VARIANT:=python3
+endef
+
+define Package/python3-flask-login/description
+ Flask-Login provides user session management for Flask.
+ It handles the common tasks of logging in, logging out,
+ and remembering your users’ sessions over extended periods of time.
+endef
+
+$(eval $(call Py3Package,python3-flask-login))
+$(eval $(call BuildPackage,python3-flask-login))
+$(eval $(call BuildPackage,python3-flask-login-src))
--- /dev/null
+#
+# Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/)
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=maxminddb
+PKG_VERSION:=1.4.1
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/m/maxminddb/
+PKG_HASH:=df1451bcd848199905ac0de4631b3d02d6a655ad28ba5e5a4ca29a23358db712
+
+PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
+PKG_LICENSE:=Apache-2.0
+PKG_LICENSE_FILES:=LICENSE
+
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-maxminddb
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=Reader for the MaxMind DB format
+ URL:=https://dev.maxmind.com/
+ DEPENDS:=+python3-light +libmaxminddb
+ VARIANT:=python3
+endef
+
+define Package/python3-maxminddb/description
+ Module for reading MaxMind DB files
+endef
+
+$(eval $(call Py3Package,python3-maxminddb))
+$(eval $(call BuildPackage,python3-maxminddb))
+$(eval $(call BuildPackage,python3-maxminddb-src))
include $(TOPDIR)/rules.mk
PKG_NAME:=python3-pyroute2
-PKG_VERSION:=0.5.5
+PKG_VERSION:=0.5.6
PKG_RELEASE:=1
PKG_SOURCE:=pyroute2-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/p/pyroute2
-PKG_HASH:=ad679a91d453fe8426c4076d0da3a67265e5ccfe641879d75c9bc7660d075dfa
+PKG_HASH:=deae0e6191a04c3ee213c6fae6ed779602ef5da5ca5e2fa533f27bc04326bfbe
PKG_BUILD_DIR:=$(BUILD_DIR)/pyroute2-$(PKG_VERSION)
SECTION:=lang
CATEGORY:=Languages
TITLE:=Python netlink library
- URL:=http://github.com/svinota/pyroute2
+ URL:=https://github.com/svinota/pyroute2
DEPENDS:= \
+python3-light \
+python3-distutils \
PYTHON_VERSION_MICRO:=$(PYTHON3_VERSION_MICRO)
PKG_NAME:=python3
-PKG_RELEASE:=13
+PKG_RELEASE:=14
PKG_VERSION:=$(PYTHON_VERSION).$(PYTHON_VERSION_MICRO)
PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include $(1)/usr/lib $(1)/usr/lib/pkgconfig
- $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_DIR) $(2)/bin
$(CP) \
$(PKG_INSTALL_DIR)/usr/include/python$(PYTHON_VERSION) \
$(1)/usr/include/
$(1)/usr/lib/pkgconfig
$(INSTALL_BIN) \
$(PKG_INSTALL_DIR)/usr/bin/python$(PYTHON_VERSION)-config \
- $(1)/usr/bin/
+ $(2)/bin/
+ $(SED) \
+ 's|^prefix_real=.*$$$$|prefix_real="$(PYTHON3_DIR)"|' \
+ $(2)/bin/python$(PYTHON_VERSION)-config
endef
PYTHON3_BASE_LIB_FILES:= \
--- /dev/null
+From e359a7a3c4f9e70360a068bef19c95938fdacede Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Date: Wed, 23 Dec 2015 11:33:14 +0100
+Subject: [PATCH] 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.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ Lib/distutils/command/build_ext.py | 5 ++++-
+ Lib/distutils/sysconfig.py | 15 +++++++++++----
+ 2 files changed, 15 insertions(+), 5 deletions(-)
+
+diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py
+index 74de782d8a..d0c847b365 100644
+--- a/Lib/distutils/command/build_ext.py
++++ b/Lib/distutils/command/build_ext.py
+@@ -234,7 +234,10 @@ class build_ext(Command):
+ 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('.')
+diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
+index 2bcd1dd288..422c13fa4f 100644
+--- a/Lib/distutils/sysconfig.py
++++ b/Lib/distutils/sysconfig.py
+@@ -17,10 +17,17 @@ import sys
+ from .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)
+-BASE_PREFIX = os.path.normpath(sys.base_prefix)
+-BASE_EXEC_PREFIX = os.path.normpath(sys.base_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'))
++ BASE_PREFIX = PREFIX
++ BASE_EXEC_PREFIX = EXEC_PREFIX
++else:
++ PREFIX = os.path.normpath(sys.prefix)
++ EXEC_PREFIX = os.path.normpath(sys.exec_prefix)
++ BASE_PREFIX = os.path.normpath(sys.base_prefix)
++ BASE_EXEC_PREFIX = os.path.normpath(sys.base_exec_prefix)
+
+ # Path to the base directory of the project. On Windows the binary may
+ # live in project/PCbuild/win32 or project/PCbuild/amd64.
+--
+2.13.5
+
include $(TOPDIR)/rules.mk
PKG_NAME:=ruamel-yaml
-PKG_VERSION:=0.15.94
+PKG_VERSION:=0.15.97
PKG_RELEASE:=1
PKG_SOURCE:=ruamel.yaml-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/r/ruamel.yaml/
-PKG_HASH:=0939bcb399ad037ef903d74ccf2f8a074f06683bc89133ad19305067d34487c8
+PKG_HASH:=17dbf6b7362e7aee8494f7a0f5cffd44902a6331fe89ef0853b855a7930ab845
PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-ruamel.yaml-$(PKG_VERSION)
PKG_NAME:=boost
PKG_VERSION:=1.70.0
PKG_SOURCE_VERSION:=1_70_0
-PKG_RELEASE:=5
+PKG_RELEASE:=7
PKG_SOURCE:=$(PKG_NAME)_$(PKG_SOURCE_VERSION).tar.bz2
PKG_SOURCE_URL:=@SF/$(PKG_NAME)/$(PKG_NAME)/$(PKG_VERSION) https://dl.bintray.com/boostorg/release/$(PKG_VERSION)/source/
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)_$(PKG_SOURCE_VERSION)
-HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/$(PKG_NAME)_$(PKG_SOURCE_VERSION)
PKG_HASH:=430ae8354789de4fd19ee52f3b1f739e1fba576f0aded0897c3c2bc00fb38778
-PKG_LICENSE:=Boost Software License <http://www.boost.org/users/license.html>
+
PKG_MAINTAINER:=Carlos M. Ferreira <carlosmf.pt@gmail.com>
+PKG_LICENSE:=BSL-1.0
+PKG_LICENSE_FILES:=LICENSE_1_0.txt
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)_$(PKG_SOURCE_VERSION)
+HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/$(PKG_NAME)_$(PKG_SOURCE_VERSION)
PKG_BUILD_PARALLEL:=1
PKG_USE_MIPS16:=0
SECTION:=libs
CATEGORY:=Libraries
TITLE:=Boost C++ source library
- URL:=http://www.boost.org
+ URL:=https://www.boost.org
DEPENDS:=+libstdcpp +libpthread +librt
endef
bool "Shared"
config boost-runtime-static
- depends on @(!boost-shared-libs&&!boost-static-and-shared-libs)
+ depends on !boost-shared-libs&&!boost-static-and-shared-libs
bool "Static"
config boost-runtime-static-and-shared
- depends on @(boost-use-name-tags&&!boost-shared-libs&&!boost-static-and-shared-libs)
+ depends on boost-use-name-tags&&!boost-shared-libs&&!boost-static-and-shared-libs
bool "Both"
endchoice
default n
config boost-single-thread
- depends on @boost-use-name-tags
+ depends on boost-use-name-tags
bool "Single thread Support."
help
Compile Boost libraries in single-thread mode.
default n
config boost-build-type-complete
- depends on @boost-use-name-tags
+ depends on boost-use-name-tags
bool "Complete Boost Build."
help
Builds both release and debug libs. It will take much longer to compile.
select PACKAGE_boost-test
config boost-coroutine2
- depends on !@GCC_VERSION_4_8
+ depends on !GCC_VERSION_4_8
bool "Boost couroutine2 support."
select PACKAGE_boost-coroutine
default n
)
endmenu
- menu "Select Boost libraries for Host build"
- comment "Libraries for Host build"
-
- $(foreach lib,$(BOOST_LIBS), \
- config boost-host-build-$(lib)
- bool "Boost $(lib) $(if $(findstring python,$(lib)),$(paren_left)v$(if $(findstring 3,$(lib)),$(BOOST_PYTHON3_VER),$(BOOST_PYTHON_VER))$(paren_right) ,)library."
- default n
- )
- endmenu
-
endef
PKG_CONFIG_DEPENDS:= CONFIG_PACKAGE_boost-test
BOOST_DEPENDS+= +$(if $(4),$(4):boost-$(1),boost-$(1))
PKG_CONFIG_DEPENDS+= CONFIG_PACKAGE_boost-$(1)
- HOST_CONFIG_DEPENDS+= CONFIG_boost-host-build-$(1)
BOOST_LIBS+= $(1)
( cd $(HOST_BUILD_DIR)/tools/build/src/engine ; ./build.sh gcc )
( cd $(HOST_BUILD_DIR) ; \
- ./bootstrap.sh --prefix=$(STAGING_DIR_HOST) \
- --with-libraries=$(subst $() $(),$(comma),$(strip \
- headers \
- $(foreach lib,$(BOOST_LIBS), \
- $(if $(findstring python,$(lib)),,$(if $(CONFIG_boost-host-build-$(lib)),$(lib)))))) ; \
- ./b2 install )
+ ./bootstrap.sh --prefix=$(STAGING_DIR_HOSTPKG) \
+ --with-libraries=atomic,chrono,date_time,filesystem,headers,thread,system ;\
+ ./b2 --ignore-site-config install )
endef
CONFIGURE_PREFIX:=$(PKG_INSTALL_DIR)
#include <boost/asio/detail/cstdint.hpp>
#include <boost/asio/detail/eventfd_select_interrupter.hpp>
#include <boost/asio/detail/throw_error.hpp>
-@@ -46,14 +46,14 @@ eventfd_select_interrupter::eventfd_select_interrupter()
+@@ -46,14 +46,14 @@ eventfd_select_interrupter::eventfd_sele
void eventfd_select_interrupter::open_descriptors()
{
# if defined(EFD_CLOEXEC) && defined(EFD_NONBLOCK)
write_descriptor_ = read_descriptor_ =
::eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK);
-@@ -70,7 +70,7 @@ void eventfd_select_interrupter::open_descriptors()
+@@ -70,7 +70,7 @@ void eventfd_select_interrupter::open_de
::fcntl(read_descriptor_, F_SETFD, FD_CLOEXEC);
}
}
boost/variant/detail/apply_visitor_unary.hpp | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
-diff --git a/boost/variant/detail/apply_visitor_unary.hpp b/boost/variant/detail/apply_visitor_unary.hpp
-index 71610cb6..c3a741ef 100644
--- a/boost/variant/detail/apply_visitor_unary.hpp
+++ b/boost/variant/detail/apply_visitor_unary.hpp
@@ -23,6 +23,7 @@
};
typedef typename deduce_impl<begin_it>::type type;
-@@ -132,7 +133,7 @@ inline decltype(auto) apply_visitor(Visitor&& visitor, Visitable&& visitable,
+@@ -132,7 +133,7 @@ inline decltype(auto) apply_visitor(Visi
boost::detail::variant::has_result_type<Visitor>
>::type* = 0)
{
return ::boost::forward<Visitable>(visitable).apply_visitor(cpp14_vis);
}
-
-From 7331d648f46b6008138cbd22087b8c5c61ff7926 Mon Sep 17 00:00:00 2001
-From: Ed Catmur <ed@catmur.uk>
-Date: Sun, 21 Apr 2019 00:50:00 +0100
-Subject: [PATCH 2/2] Add test.
-
----
- libs/variant/test/const_ref_apply_visitor.cpp | 44 ++++++++++++++++++++++++++++++++
- 1 file changed, 44 insertions(+)
-
-diff --git a/libs/variant/test/const_ref_apply_visitor.cpp b/libs/variant/test/const_ref_apply_visitor.cpp
-index 0ec77bd4..72afff9e 100644
--- a/libs/variant/test/const_ref_apply_visitor.cpp
+++ b/libs/variant/test/const_ref_apply_visitor.cpp
-@@ -224,6 +224,44 @@ void test_cpp14_visitor(const variant_type& test_var, const variant_type& test_v
+@@ -217,6 +217,44 @@ void test_cpp14_visitor(const variant_ty
#endif
}
void test_cpp14_visitor(variant_type&& test_var)
{
std::cout << "Testing rvalue visitable for c++14\n";
-@@ -344,8 +382,14 @@ void run_cpp14_mixed_tests()
+@@ -333,8 +371,14 @@ void run_cpp14_mixed_tests()
void run_cpp14_tests()
{
#ifndef BOOST_NO_CXX14_DECLTYPE_AUTO
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE.md
PKG_VERSION:=0.8.21
-PKG_RELEASE:=1
+PKG_RELEASE:=3
# Use this for official releasees
PKG_HASH:=51892570f18d1667d0da4d0908a091e41b41c20db9835765677109a3d150cd26
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/cmake.mk
+include $(INCLUDE_DIR)/nls.mk
define Package/libelektra/Default
SECTION:=libs
define Package/libelektra-plugins
$(call Package/libelektra/Default)
TITLE:=Useful elektra plugins
- DEPENDS:=+libelektra-core
+ DEPENDS:=+libelektra-core $(ICONV_DEPENDS)
endef
define CONTENT_ELEKTRA_PLUGINS_TEXT
-DKDB_DEFAULT_RESOLVER=resolver_fm_pb_b \
-DKDB_DEFAULT_STORAGE=ini \
-DENABLE_OPTIMIZATIONS=OFF \
- -DPLUGINS="ALL;-multifile"
+ -DPLUGINS="ALL;-multifile" \
+ -DICONV_FIND_REQUIRED=ON \
+ -DICONV_INCLUDE_DIR="$(ICONV_PREFIX)/include" \
+ -DICONV_LIBRARY="$(ICONV_PREFIX)/lib"
CMAKE_HOST_OPTIONS = \
-DCMAKE_SKIP_RPATH=FALSE \
--- /dev/null
+--- a/src/plugins/crypto/openssl_operations.c
++++ b/src/plugins/crypto/openssl_operations.c
+@@ -25,6 +25,10 @@
+ #include <stdlib.h>
+ #include <string.h>
+
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#define EVP_CIPHER_CTX_reset EVP_CIPHER_CTX_cleanup
++#endif
++
+ #define KEY_BUFFER_SIZE (ELEKTRA_CRYPTO_SSL_KEYSIZE + ELEKTRA_CRYPTO_SSL_BLOCKSIZE)
+
+ /*
+@@ -144,8 +148,10 @@ int elektraCryptoOpenSSLInit (Key * errorKey ELEKTRA_UNUSED)
+ // initialize OpenSSL according to
+ // https://wiki.openssl.org/index.php/Library_Initialization
+ pthread_mutex_lock (&mutex_ssl);
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ OpenSSL_add_all_algorithms ();
+ ERR_load_crypto_strings ();
++#endif
+ pthread_mutex_unlock (&mutex_ssl);
+ return 1;
+ }
+@@ -246,8 +252,8 @@ void elektraCryptoOpenSSLHandleDestroy (elektraCryptoHandle * handle)
+ if (handle)
+ {
+ pthread_mutex_lock (&mutex_ssl);
+- EVP_CIPHER_CTX_cleanup (handle->encrypt);
+- EVP_CIPHER_CTX_cleanup (handle->decrypt);
++ EVP_CIPHER_CTX_reset (handle->encrypt);
++ EVP_CIPHER_CTX_reset (handle->decrypt);
+ EVP_CIPHER_CTX_free (handle->encrypt);
+ EVP_CIPHER_CTX_free (handle->decrypt);
+ pthread_mutex_unlock (&mutex_ssl);
include $(TOPDIR)/rules.mk
PKG_NAME:=fbthrift
-PKG_VERSION:=2019.05.27.00
-PKG_RELEASE:=1
-PKG_MAINTAINER:=Amol Bhave <ambhave@fb.com>
+PKG_VERSION:=2019.06.10.00
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/facebook/fbthrift/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=7c56dae532e60844520cef4ce03abd4911323fe340fdee0cc3a6a3e8adb09e3f
+PKG_HASH:=0897c66564a2742b24dd6ae77812b42987c3493944d1d5d40d4005d71deb7cb5
+PKG_MAINTAINER:=Amol Bhave <ambhave@fb.com>
+PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
+HOST_BUILD_DEPENDS:=libmstch/host
PKG_BUILD_DEPENDS:=fbthrift/host
-HOST_BUILD_DEPENDS:=boost/host libmstch/host
+
+HOST_BUILD_PARALLEL:=1
+PKG_BUILD_PARALLEL:=1
+CMAKE_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/cmake.mk
-HOST_BUILD_PREFIX:=$(STAGING_DIR_HOST)
-
-PKG_BUILD_PARALLEL:=1
-HOST_BUILD_PARALLEL:=1
-CMAKE_OPTIONS:= \
- -DBoost_NO_BOOST_CMAKE=ON \
- -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
- -DBUILD_SHARED_LIBS=ON
-CMAKE_HOST_OPTIONS:= \
- -DBoost_NO_BOOST_CMAKE=ON \
- -Dcompiler_only=ON
-HOST_LDFLAGS:=-Wl,-rpath=$(STAGING_DIR_HOST)/lib
-CMAKE_INSTALL:=1
-
define Package/fbthrift
SECTION:=libs
CATEGORY:=Libraries
TITLE:=Facebook's branch of Apache Thrift, including a new C++ server.
- DEPENDS:=+libwangle +libfmt +libmstch +librsocket-cpp +@boost-host-build-filesystem \
- +@boost-host-build-thread +@boost-host-build-system
+ DEPENDS:=+libwangle +libfmt +librsocket-cpp
endef
define Package/fbthrift/description
Facebook's branch of Apache Thrift, including a new C++ server.
endef
+CMAKE_HOST_OPTIONS += \
+ -DBoost_NO_BOOST_CMAKE=ON \
+ -DCMAKE_SKIP_RPATH=FALSE \
+ -DCMAKE_INSTALL_RPATH="${STAGING_DIR_HOSTPKG}/lib" \
+ -Dcompiler_only=ON
+
+CMAKE_OPTIONS += \
+ -DBoost_NO_BOOST_CMAKE=ON \
+ -DBUILD_SHARED_LIBS=ON \
+ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
+ -Dlib_only=ON \
+ -DTHRIFT1="$(STAGING_DIR_HOSTPKG)/bin/thrift1" \
+ -DTHRIFT_COMPILER_INCLUDE="$(STAGING_DIR_HOSTPKG)/include/"
+
define Package/fbthrift/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*.so* $(1)/usr/lib/
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=fbzmq
+PKG_VERSION:=2019.06.10.00
+PKG_RELEASE:=3
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/facebook/fbzmq/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=9bb9b2bd42951fa3458b5d6d25f3364c14a7efa3b78bef68a6c00ee6fcba5813
+
+PKG_MAINTAINER:=Amol Bhave <ambhave@fb.com>
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+
+CMAKE_SOURCE_SUBDIR:=fbzmq
+PKG_BUILD_PARALLEL:=1
+CMAKE_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/fbzmq
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=Facebook ZeroMQ wrappers.
+ DEPENDS:=+fbthrift +libzmq +libsigar
+endef
+
+define Package/fbzmq/description
+ Facebook ZeroMQ wrappers.
+endef
+
+CMAKE_OPTIONS += \
+ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
+ -DBUILD_TESTS=OFF \
+ -DBUILD_SHARED_LIBS=ON \
+ -DTHRIFT1="$(STAGING_DIR_HOSTPKG)/bin/thrift1" \
+ -DTHRIFT_COMPILER_INCLUDE="$(STAGING_DIR_HOSTPKG)/include/"
+
+TARGET_CXXFLAGS += -faligned-new
+
+define Package/fbzmq/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfbzmq.so* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,fbzmq))
--- /dev/null
+--- a/fbzmq/zmq/Message.cpp
++++ b/fbzmq/zmq/Message.cpp
+@@ -35,7 +35,7 @@ Message::allocate(size_t size) noexcept {
+ if (rc != 0) {
+ return folly::makeUnexpected(Error());
+ }
+- return std::move(msg);
++ return msg;
+ }
+
+ folly::Expected<Message, Error>
+@@ -58,7 +58,7 @@ Message::wrapBuffer(std::unique_ptr<folly::IOBuf> buf) noexcept {
+ delete ptr;
+ return folly::makeUnexpected(Error());
+ }
+- return std::move(msg);
++ return msg;
+ }
+
+ Message&
+--- a/fbzmq/zmq/Socket.cpp
++++ b/fbzmq/zmq/Socket.cpp
+@@ -449,7 +449,7 @@ SocketImpl::recv(int flags) const noexcept {
+ while (true) {
+ const int n = zmq_msg_recv(&(msg.msg_), ptr_, flags);
+ if (n >= 0) {
+- return std::move(msg);
++ return msg;
+ }
+
+ const int err = zmq_errno();
include $(TOPDIR)/rules.mk
PKG_NAME:=file
-PKG_VERSION:=5.36
+PKG_VERSION:=5.37
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://src.fedoraproject.org/lookaside/pkgs/file/ \
http://download.openpkg.org/components/cache/file/ \
ftp://ftp.astron.com/pub/file/
-PKG_HASH:=fb608290c0fd2405a8f63e5717abf6d03e22e183fb21884413d1edd918184379
+PKG_HASH:=e9c13967f7dd339a3c241b7710ba093560b9a33013491318e88e6b8b57bae07f
PKG_LICENSE:=BSD-2c
PKG_LICENSE_FILES:=COPYING
PKG_NAME:=getdns
PKG_VERSION:=1.5.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE
define Package/getdns/install
$(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libgetdns.so.* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgetdns.so.* $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/getdns_query $(1)/usr/sbin/getdns_query
endef
PKG_NAME:=hwloc
PKG_VERSION:=2.0.3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://download.open-mpi.org/release/$(PKG_NAME)/v2.0
SECTION:=libs
CATEGORY:=Libraries
TITLE+= libraries
+ DEPENDS+=+libpciaccess
endef
define Package/libhwloc/description
PKG_NAME:=ibrcommon
PKG_VERSION:=1.0.1
-PKG_RELEASE:=6
+PKG_RELEASE:=7
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.ibr.cs.tu-bs.de/projects/ibr-dtn/releases
PKG_INSTALL:=1
PKG_FIXUP:=libtool
+include $(INCLUDE_DIR)/uclibc++.mk
include $(INCLUDE_DIR)/package.mk
define Package/ibrcommon
SECTION:=libs
CATEGORY:=Libraries
- DEPENDS:=+libstdcpp +libpthread +librt +libnl +libopenssl
+ DEPENDS:=$(CXX_DEPENDS) +librt +libnl +libopenssl
TITLE:=IBR Common C++ Library
endef
PKG_NAME:=ibrdtn
PKG_VERSION:=1.0.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.ibr.cs.tu-bs.de/projects/ibr-dtn/releases
PKG_INSTALL:=1
PKG_FIXUP:=libtool
+include $(INCLUDE_DIR)/uclibc++.mk
include $(INCLUDE_DIR)/package.mk
define Package/ibrdtn
--- /dev/null
+From 199c86591edc7e82b92903efecadc4f69ea63370 Mon Sep 17 00:00:00 2001
+From: Johannes Morgenroth <jm@m-network.de>
+Date: Tue, 1 Jan 2019 11:25:50 +0100
+Subject: [PATCH] Add operator!=() to Bundle::block_elem
+
+Alternative implementations of libstdcpp as uclibc++ use it in
+the algorithm implemenetations.
+---
+ ibrdtn/data/Bundle.h | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/ibrdtn/data/Bundle.h b/ibrdtn/data/Bundle.h
+index 036a2a6fb..9bbc066d7 100644
+--- a/ibrdtn/data/Bundle.h
++++ b/ibrdtn/data/Bundle.h
+@@ -69,6 +69,9 @@ namespace dtn
+ bool operator==(const dtn::data::block_t &type) const {
+ return (**this) == type;
+ }
++ bool operator!=(const dtn::data::block_t &type) const {
++ return !((**this) == type);
++ }
+ };
+
+ typedef std::list<block_elem> block_list;
--- /dev/null
+From 6945698778caf7cdaace9ce8dae82162dbe2ee9f Mon Sep 17 00:00:00 2001
+From: Johannes Morgenroth <jm@m-network.de>
+Date: Thu, 3 Jan 2019 07:26:51 +0100
+Subject: [PATCH] Use const iterator in const function of MemoryBundleSet
+
+---
+ ibrdtn/data/MemoryBundleSet.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ibrdtn/data/MemoryBundleSet.cpp b/ibrdtn/data/MemoryBundleSet.cpp
+index 987342e6d..b67fdd393 100644
+--- a/ibrdtn/data/MemoryBundleSet.cpp
++++ b/ibrdtn/data/MemoryBundleSet.cpp
+@@ -134,7 +134,7 @@ namespace dtn
+ // the bundles set. This happen if the MemoryBundleSet gets deserialized.
+ if (!_consistent) return true;
+
+- bundle_set::iterator iter = _bundles.find(dtn::data::MetaBundle::create(bundle));
++ bundle_set::const_iterator iter = _bundles.find(dtn::data::MetaBundle::create(bundle));
+ return (iter != _bundles.end());
+ }
+
--- /dev/null
+From 1395d849d73147319ee422d2ce34de0bcb90e6f8 Mon Sep 17 00:00:00 2001
+From: Johannes Morgenroth <jm@m-network.de>
+Date: Thu, 3 Jan 2019 07:34:14 +0100
+Subject: [PATCH] Use std::streamoff instead of std::streampos
+
+---
+ ibrdtn/data/BundleMerger.cpp | 2 +-
+ ibrdtn/data/Dictionary.cpp | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/ibrdtn/data/BundleMerger.cpp b/ibrdtn/data/BundleMerger.cpp
+index 1cd20c522..b71a0849b 100644
+--- a/ibrdtn/data/BundleMerger.cpp
++++ b/ibrdtn/data/BundleMerger.cpp
+@@ -119,7 +119,7 @@ namespace dtn
+ }
+
+ ibrcommon::BLOB::iostream stream = c._blob.iostream();
+- (*stream).seekp(obj.fragmentoffset.get<std::streampos>());
++ (*stream).seekp(obj.fragmentoffset.get<std::streamoff>());
+
+ const dtn::data::PayloadBlock &p = obj.find<dtn::data::PayloadBlock>();
+ const Length plength = p.getLength();
+diff --git a/ibrdtn/data/Dictionary.cpp b/ibrdtn/data/Dictionary.cpp
+index 6299e66f3..208f90488 100644
+--- a/ibrdtn/data/Dictionary.cpp
++++ b/ibrdtn/data/Dictionary.cpp
+@@ -154,11 +154,11 @@ namespace dtn
+ {
+ char buffer[1024];
+
+- _bytestream.seekg(scheme.get<std::streampos>());
++ _bytestream.seekg(scheme.get<std::streamoff>());
+ _bytestream.get(buffer, 1024, '\0');
+ std::string scheme_str(buffer);
+
+- _bytestream.seekg(ssp.get<std::streampos>());
++ _bytestream.seekg(ssp.get<std::streamoff>());
+ _bytestream.get(buffer, 1024, '\0');
+ std::string ssp_str(buffer);
+
--- /dev/null
+From a5b9c2feeaabbd90c9734c5d865d471eed0d5e3a Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Thu, 28 Mar 2019 01:55:15 -0700
+Subject: [PATCH] Add operator!=() to BundleID and MetaBundle
+
+Needed for uClibc++.
+
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ ibrdtn/data/Bundle.cpp | 10 ++++++++++
+ ibrdtn/data/Bundle.h | 2 ++
+ 2 files changed, 12 insertions(+)
+
+diff --git a/ibrdtn/data/Bundle.cpp b/ibrdtn/data/Bundle.cpp
+index f515860..943544e 100644
+--- a/ibrdtn/data/Bundle.cpp
++++ b/ibrdtn/data/Bundle.cpp
+@@ -71,11 +71,21 @@ namespace dtn
+ return other == (const PrimaryBlock&)(*this);
+ }
+
++ bool Bundle::operator!=(const BundleID& other) const
++ {
++ return other != (const PrimaryBlock&)(*this);
++ }
++
+ bool Bundle::operator==(const MetaBundle& other) const
+ {
+ return other == (const PrimaryBlock&)(*this);
+ }
+
++ bool Bundle::operator!=(const MetaBundle& other) const
++ {
++ return other != (const PrimaryBlock&)(*this);
++ }
++
+ bool Bundle::operator!=(const Bundle& other) const
+ {
+ return (const PrimaryBlock&)(*this) != (const PrimaryBlock&)other;
+diff --git a/ibrdtn/data/Bundle.h b/ibrdtn/data/Bundle.h
+index 9bbc066..6a4ea47 100644
+--- a/ibrdtn/data/Bundle.h
++++ b/ibrdtn/data/Bundle.h
+@@ -97,7 +97,9 @@ namespace dtn
+ virtual ~Bundle();
+
+ bool operator==(const BundleID& other) const;
++ bool operator!=(const BundleID& other) const;
+ bool operator==(const MetaBundle& other) const;
++ bool operator!=(const MetaBundle& other) const;
+
+ bool operator==(const Bundle& other) const;
+ bool operator!=(const Bundle& other) const;
include $(TOPDIR)/rules.mk
PKG_NAME:=libaio
-PKG_VERSION:=0.3.111
+PKG_VERSION:=0.3.112
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://releases.pagure.org/libaio
-PKG_HASH:=62cf871ad8fd09eb3418f00aca7a7d449299b8e1de31c65f28bf6a2ef1fa502a
-PKG_MAINTAINER:=Steven Barth <cyrus@openwrt.org>
-PKG_LICENSE:=LGPL-2.1
+PKG_HASH:=ab0462f2c9d546683e5147b1ce9c195fe95d07fac5bf362f6c01637955c3b492
-PKG_ASLR_PIE:=1
-PKG_BUILD_PARALLEL:=1
+PKG_MAINTAINER:=Rosen Penev <rosenp@gmail.com>
+PKG_LICENSE:=LGPL-2.1-only
+PKG_LICENSE_FILES:=COPYING
+PKG_BUILD_PARALLEL:=1
PKG_USE_MIPS16:=0
+PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
URL:=http://lse.sourceforge.net/io/aio.html
endef
-define Build/Configure
-endef
-
-LIBAIO_CFLAGS:=-nostdlib -nostartfiles -I. $(TARGET_CFLAGS) $(TARGET_CPPFLAGS) $(FPIC)
-
-define Build/Compile
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- ARCH="$(ARCH)" \
- CC="$(TARGET_CROSS)gcc" \
- LD="$(TARGET_CROSS)ld" \
- CFLAGS="$(LIBAIO_CFLAGS)" \
- all
- $(MAKE) -C $(PKG_BUILD_DIR) \
- prefix="$(PKG_INSTALL_DIR)/usr" \
- install
-endef
-
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/libaio.h $(1)/usr/include/
+#endif /* _MIPS_SIM == _MIPS_SIM_NABI32 */
--- a/src/libaio.h
+++ b/src/libaio.h
-@@ -71,6 +71,7 @@ typedef enum io_iocb_cmd {
+@@ -72,6 +72,7 @@ typedef enum io_iocb_cmd {
/* big endian, 64 bits */
#elif defined(__powerpc64__) || defined(__s390x__) || \
#define KERNEL_RW_POINTER ((void *)0x10100000)
--- a/src/libaio.h
+++ b/src/libaio.h
-@@ -51,7 +51,8 @@ typedef enum io_iocb_cmd {
+@@ -52,7 +52,8 @@ typedef enum io_iocb_cmd {
/* little endian, 32 bits */
#if defined(__i386__) || (defined(__arm__) && !defined(__ARMEB__)) || \
defined(__cris__) || (defined(__riscv) && __riscv_xlen == 32) || \
(defined(__GNUC__) && defined(__BYTE_ORDER__) && \
__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ && __SIZEOF_LONG__ == 4)
-@@ -83,6 +84,7 @@ typedef enum io_iocb_cmd {
+@@ -84,6 +85,7 @@ typedef enum io_iocb_cmd {
/* big endian, 32 bits */
#elif defined(__PPC__) || defined(__s390__) || \
(defined(__arm__) && defined(__ARMEB__)) || \
--- a/src/libaio.h
+++ b/src/libaio.h
-@@ -52,7 +52,8 @@ typedef enum io_iocb_cmd {
+@@ -53,7 +53,8 @@ typedef enum io_iocb_cmd {
/* little endian, 32 bits */
#if defined(__i386__) || (defined(__arm__) && !defined(__ARMEB__)) || \
(defined(__sh__) && defined(__LITTLE_ENDIAN__)) || \
defined(__cris__) || (defined(__riscv) && __riscv_xlen == 32) || \
(defined(__GNUC__) && defined(__BYTE_ORDER__) && \
__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ && __SIZEOF_LONG__ == 4)
-@@ -62,6 +63,7 @@ typedef enum io_iocb_cmd {
+@@ -63,6 +64,7 @@ typedef enum io_iocb_cmd {
/* little endian, 64 bits */
#elif defined(__ia64__) || defined(__x86_64__) || defined(__alpha__) || \
(defined(__aarch64__) && defined(__AARCH64EL__)) || \
(defined(__riscv) && __riscv_xlen == 64) || \
(defined(__GNUC__) && defined(__BYTE_ORDER__) && \
-@@ -74,6 +76,7 @@ typedef enum io_iocb_cmd {
+@@ -75,6 +77,7 @@ typedef enum io_iocb_cmd {
#elif defined(__powerpc64__) || defined(__s390x__) || \
(defined(__hppa__) && defined(__arch64__)) || \
(defined(__sparc__) && defined(__arch64__)) || \
include $(TOPDIR)/rules.mk
PKG_NAME:=libcoap
-PKG_VERSION:=v4.1.2
+PKG_VERSION:=4.2.0
PKG_RELEASE:=1
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/obgm/libcoap
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)
-PKG_SOURCE_VERSION:=fa5248603049ddf95cc84608aad569120763bf2b
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_MIRROR_HASH:=0ab4bc9569a78904743cc3074fd1c0fc9c78c85fd510fef5145dd872523619e6
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/obgm/libcoap/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=9523e38da6ee8b2a8f5ce83ded64107dd1e514c7ad00cd74ccfe3454b679c271
PKG_MAINTAINER:=Anton Glukhov <anton.a.glukhov@gmail.com>
PKG_LICENSE:=GPL-2.0+ BSD-2-Clause
PKG_LICENSE_FILES:=COPYING LICENSE.GPL LICENSE.BSD
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
-
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
SECTION:=libs
CATEGORY:=Libraries
TITLE:=CoAP (RFC 7252) library
- URL:=http://libcoap.net/
+ URL:=https://libcoap.net/
+ ABI_VERSION:=2
endef
define Package/libcoap/description
CONFIGURE_ARGS += \
--enable-examples \
- --disable-documentation
-
-ifeq ($(CONFIG_BIG_ENDIAN),y)
-TARGET_CFLAGS += -DWORDS_BIGENDIAN
-endif
+ --disable-documentation \
+ --disable-doxygen \
+ --disable-dtls \
+ --disable-gcov \
+ --disable-tests
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
define Package/libcoap/install
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libcoap-1.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libcoap-$(ABI_VERSION).so* $(1)/usr/lib/
endef
define Package/coap-client/install
include $(TOPDIR)/rules.mk
PKG_NAME:=libdouble-conversion
-PKG_VERSION:=3.1.4
+PKG_VERSION:=3.1.5
PKG_RELEASE:=2
PKG_SOURCE:=double-conversion-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/google/double-conversion/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=95004b65e43fefc6100f337a25da27bb99b9ef8d4071a36a33b5e83eb1f82021
+PKG_HASH:=a63ecb93182134ba4293fd5f22d6e08ca417caafa244afaa751cbfddf6415b13
HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/double-conversion-$(PKG_VERSION)
PKG_BUILD_DIR:=$(BUILD_DIR)/double-conversion-$(PKG_VERSION)
PKG_LICENSE:=BSD-3c
PKG_LICENSE_FILES:=COPYING LICENSE
+CMAKE_INSTALL:=1
+
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/cmake.mk
endef
CMAKE_OPTIONS += \
- -DBUILD_SHARED_LIBS=ON \
- -DBUILD_TESTING=OFF
-
-define Build/InstallDev
- $(INSTALL_DIR) \
- $(1)/usr/lib \
- $(1)/usr/include/double-conversion
-
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/include/* \
- $(1)/usr/include/
-
- $(INSTALL_DATA) \
- $(PKG_INSTALL_DIR)/usr/lib/lib*.so* \
- $(1)/usr/lib/
-endef
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_TESTING=OFF
define Package/libdouble-conversion/install
- $(INSTALL_DIR) \
- $(1)/usr/lib
-
- $(INSTALL_DATA) \
- $(PKG_INSTALL_DIR)/usr/lib/lib*.so* \
- $(1)/usr/lib/
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*.so* $(1)/usr/lib/
endef
$(eval $(call BuildPackage,libdouble-conversion))
+++ /dev/null
---- a/double-conversion/utils.h
-+++ b/double-conversion/utils.h
-@@ -91,7 +91,7 @@ int main(int argc, char** argv) {
- defined(_POWER) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \
- defined(__sparc__) || defined(__sparc) || defined(__s390__) || \
- defined(__SH4__) || defined(__alpha__) || \
-- defined(_MIPS_ARCH_MIPS32R2) || \
-+ defined(_MIPS_ARCH_MIPS32R2) || defined(__ARMEB__) || \
- defined(__AARCH64EL__) || defined(__aarch64__) || defined(__AARCH64EB__) || \
- defined(__riscv) || \
- defined(__or1k__) || defined(__arc__) || \
include $(TOPDIR)/rules.mk
PKG_NAME:=libfizz
-PKG_VERSION:=2019.05.27.00
+PKG_VERSION:=2019.06.10.00
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/facebookincubator/fizz/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=d3f5325717a2af3684a41889d45b19e975cfff177faffdfaab8cb63df4e0318c
+PKG_HASH:=29a9b2d020b70b83bf27fa6332c07c4ae9cca3b82c5ac9214220a815d7f1fe7f
PKG_BUILD_DIR:=$(BUILD_DIR)/fizz-$(PKG_VERSION)
+PKG_MAINTAINER:=Amol Bhave <ambhave@fb.com>
PKG_LICENSE:=BSD
PKG_LICENSE_FILES:=LICENSE
-include $(INCLUDE_DIR)/package.mk
-include $(INCLUDE_DIR)/cmake.mk
-
PKG_BUILD_PARALLEL:=1
CMAKE_SOURCE_SUBDIR:=fizz
-CMAKE_OPTIONS:= \
- -DBUILD_EXAMPLES=OFF \
- -DBUILD_SHARED_LIBS=ON
CMAKE_INSTALL:=1
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
define Package/libfizz
SECTION:=libs
CATEGORY:=Libraries
Fizz currently supports TLS 1.3 drafts 28, 26 (both wire-compatible with the final specification), and 23.
endef
+CMAKE_OPTIONS += \
+ -DBUILD_EXAMPLES=OFF \
+ -DBUILD_SHARED_LIBS=ON
+
define Package/libfizz/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libfizz.so* $(1)/usr/lib/
include $(TOPDIR)/rules.mk
PKG_NAME:=libfolly
-PKG_VERSION:=2019.05.27.00
-PKG_RELEASE:=1
+PKG_VERSION:=2019.06.10.00
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/facebook/folly/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=7535937e4b4bde14e6c854dc55a5fe9f290ccf1918621f20678ebecd0c1239e1
+PKG_HASH:=afecd68815a83865d95a3a6b861abe8096beefae45c89566e0d510279b631b57
PKG_BUILD_DIR:=$(BUILD_DIR)/folly-$(PKG_VERSION)
+PKG_MAINTAINER:=Amol Bhave <ambhave@fb.com>
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
-include $(INCLUDE_DIR)/package.mk
-include $(INCLUDE_DIR)/cmake.mk
-
PKG_BUILD_PARALLEL:=1
-CMAKE_OPTIONS:= \
- -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
- -DCXX_STD=gnu++14 \
- -DFOLLY_HAVE_UNALIGNED_ACCESS_EXITCODE=OFF \
- -DFOLLY_HAVE_LINUX_VDSO_EXITCODE=OFF \
- -DFOLLY_HAVE_WCHAR_SUPPORT_EXITCODE=OFF \
- -DHAVE_VSNPRINTF_ERRORS_EXITCODE=OFF \
- -DFOLLY_HAVE_XSI_STRERROR_R_EXITCODE=0 \
- -DBUILD_SHARED_LIBS=ON
CMAKE_INSTALL:=1
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
define Package/libfolly
SECTION:=libs
CATEGORY:=Libraries
TITLE:=An open-source C++ library developed and used at Facebook.
URL:=https://github.com/facebook/folly
DEPENDS:=+boost +boost-context +boost-date_time +boost-filesystem +boost-program_options +boost-regex \
- +libopenssl +libdouble-conversion +libevent2 +glog +libsodium +libaio +libunwind +libatomic \
- +libbz2 +zlib +libzstd +liblzma +liblz4
+ +libopenssl +libdouble-conversion +libevent2 +glog +libsodium +libaio +libatomic \
+ +libbz2 +zlib +libzstd +liblzma +liblz4 +PACKAGE_libunwind:libunwind
endef
define Package/libfolly/description
This package includes the shared library.
endef
+CMAKE_OPTIONS += \
+ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
+ -DCXX_STD=gnu++14 \
+ -DFOLLY_HAVE_UNALIGNED_ACCESS_EXITCODE=OFF \
+ -DFOLLY_HAVE_LINUX_VDSO_EXITCODE=OFF \
+ -DFOLLY_HAVE_WCHAR_SUPPORT_EXITCODE=OFF \
+ -DHAVE_VSNPRINTF_ERRORS_EXITCODE=OFF \
+ -DFOLLY_HAVE_XSI_STRERROR_R_EXITCODE=0 \
+ -DBUILD_SHARED_LIBS=ON
+
define Package/libfolly/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libfolly*.so* $(1)/usr/lib/
--- /dev/null
+--- a/folly/CachelinePadded.h
++++ b/folly/CachelinePadded.h
+@@ -35,10 +35,6 @@ namespace folly {
+ */
+ template <typename T>
+ class CachelinePadded {
+- static_assert(
+- alignof(T) <= max_align_v,
+- "CachelinePadded does not support over-aligned types.");
+-
+ public:
+ template <typename... Args>
+ explicit CachelinePadded(Args&&... args)
+--- a/folly/external/farmhash/farmhash.cpp
++++ b/folly/external/farmhash/farmhash.cpp
+@@ -181,6 +181,7 @@
+
+ #undef bswap_32
+ #undef bswap_64
++#undef _BYTESWAP_H
+ #include <byteswap.h>
+
+ #endif
--- /dev/null
+--- a/folly/portability/Asm.h
++++ b/folly/portability/Asm.h
+@@ -38,7 +38,7 @@ inline void asm_volatile_pause() {
+ ::_mm_pause();
+ #elif defined(__i386__) || FOLLY_X64
+ asm volatile("pause");
+-#elif FOLLY_AARCH64 || defined(__arm__)
++#elif FOLLY_AARCH64 || (defined(__arm__) && !(__ARM_ARCH < 7))
+ asm volatile("yield");
+ #elif FOLLY_PPC64
+ asm volatile("or 27,27,27");
PKG_NAME:=libfstrm
PKG_VERSION:=0.5.0
-PKG_RELEASE=2
+PKG_RELEASE:=3
PKG_SOURCE:=fstrm-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://dl.farsightsecurity.com/dist/fstrm/
define Package/libfstrm/install
$(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libfstrm.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfstrm.so* $(1)/usr/lib/
endef
$(eval $(call BuildPackage,libfstrm))
include $(TOPDIR)/rules.mk
PKG_NAME:=libgabe
-PKG_VERSION:=0.99
-PKG_RELEASE:=2
+PKG_VERSION:=1.0
+PKG_RELEASE:=1
-PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/schanzen/libgabe/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=2a8c151a90c9ad8eaad073c8ad1482d66875e3433b0b4fd1e08424c0fc89e877
+PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=GPLv2
PKG_LICENSE_FILES:=COPYING
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_URL:=https://github.com/schanzen/libgabe.git
-PKG_SOURCE_VERSION:=a082729326155207312a5fc280d17844b69450f2
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.xz
-PKG_MIRROR_HASH:=74046e8c5657d2e5bcdc0e806983ad4e205a0ed0945f8ab802d7fe564c32e9bd
-
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
--- /dev/null
+From 9a0e73c5f6cbcf825eced89d26273a24f7266522 Mon Sep 17 00:00:00 2001
+From: "Schanzenbach, Martin" <martin.schanzenbach@aisec.fraunhofer.de>
+Date: Sun, 30 Sep 2018 20:38:37 +0200
+Subject: [PATCH] shared library
+
+---
+ Makefile.in | 13 ++++++-------
+ 1 file changed, 6 insertions(+), 7 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index f23bf90..c8c19fa 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -18,13 +18,12 @@ LDFLAGS = @LDFLAGS@ \
+
+ DISTNAME = @PACKAGE_TARNAME@-@PACKAGE_VERSION@
+
+-all: libgabe.a TAGS
++all: libgabe.so TAGS
+
+ # compilation and library making
+
+-libgabe.a: core.o misc.o
+- rm -f $@
+- ar rc $@ $^
++libgabe.so: core.o misc.o
++ $(CC) -shared -o $@ $^
+
+ # test: test.o libgabe.a
+ # $(CC) -o $@ $(LDFLAGS) $^
+@@ -44,14 +43,14 @@ dist: AUTHORS COPYING INSTALL NEWS README \
+ tar zc $(DISTNAME) > $(DISTNAME).tar.gz
+ rm -rf $(DISTNAME)
+
+-install: libgabe.a gabe.h
++install: libgabe.so gabe.h
+ $(top_srcdir)/mkinstalldirs -m 755 $(DESTDIR)$(libdir)
+ $(top_srcdir)/mkinstalldirs -m 755 $(DESTDIR)$(includedir)
+- $(top_srcdir)/install-sh -m 755 libgabe.a $(DESTDIR)$(libdir)
++ $(top_srcdir)/install-sh -m 755 libgabe.so $(DESTDIR)$(libdir)
+ $(top_srcdir)/install-sh -m 644 gabe.h $(DESTDIR)$(includedir)
+
+ uninstall:
+- /bin/rm -f $(DESTDIR)$(libdir)/libgabe.a
++ /bin/rm -f $(DESTDIR)$(libdir)/libgabe.so
+ /bin/rm -f $(DESTDIR)$(includedir)/gabe.h
+
+ # development and meta stuff
+--
+2.17.1
+
PKG_NAME:=gflags
PKG_VERSION:=2.2.2
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/gflags/gflags/tar.gz/v$(PKG_VERSION)?
PKG_HASH:=34af2f15cf7367513b352bdcd2493ab14ce43692d2dcd9dfc499492966c64dcf
+PKG_MAINTAINER:=Amol Bhave <ambhave@fb.com>
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=COPYING.txt
TITLE:=C++ library that implements commandline flags processing
DEPENDS:=+libstdcpp +libpthread
URL:=https://github.com/gflags/gflags
- MAINTAINER:=Amol Bhave <ambhave@fb.com>
endef
define Package/gflags/description
define Package/gflags/install
$(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libgflags.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgflags.so* $(1)/usr/lib/
endef
$(eval $(call BuildPackage,gflags))
include $(TOPDIR)/rules.mk
PKG_NAME:=libgphoto2
-PKG_VERSION:=2.5.22
+PKG_VERSION:=2.5.23
PKG_RELEASE:=1
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:=15d7327aa9a986af1e1dbfd8f15ba81352b67450d30e44562ce768ff9435ce58
+PKG_HASH:=d8af23364aa40fd8607f7e073df74e7ace05582f4ba13f1724d12d3c97e8852d
PKG_LICENSE:=LGPL-2.1
PKG_LICENSE_FILES:=COPYING
--enable-shared \
--enable-static \
--disable-rpath \
- --with-camlibs="all" \
+ --with-camlibs="all,outdated" \
--with-gdlib=no \
--with-libexif=no \
--with-libusb=no \
include $(TOPDIR)/rules.mk
PKG_NAME:=liblo
-PKG_VERSION:=0.29
+PKG_VERSION:=0.30
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/liblo
-PKG_HASH:=ace1b4e234091425c150261d1ca7070cece48ee3c228a5612d048116d864c06a
+PKG_HASH:=30a7c9de49a25ed7f2425a7a7415f5b14739def62431423d3419ea26fb978d1b
+PKG_MAINTAINER:=
PKG_LICENSE:=LGPL-2.1+
PKG_LICENSE_FILES:=COPYING
-PKG_MAINTAINER:=Nicolas Thill <nico@openwrt.org>
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
DEPENDS:= +liblo
endef
-TARGET_CFLAGS += \
- -Wno-error=maybe-uninitialized \
-
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/lo $(1)/usr/include/
+++ /dev/null
---- a/src/server.c
-+++ b/src/server.c
-@@ -48,7 +48,7 @@
- #include <netdb.h>
- #include <sys/socket.h>
- #ifdef HAVE_POLL
--#include <sys/poll.h>
-+#include <poll.h>
- #endif
- #include <sys/un.h>
- #include <arpa/inet.h>
--- /dev/null
+config LZ4_OPTIMIZE_SPEED
+ bool "Optimize for speed"
+ depends on PACKAGE_liblz4
+ help
+ This enables additional optimization and
+ increases performance considerably at
+ the expense of binary size.
include $(TOPDIR)/rules.mk
-# Although liblz4 exports a major.minor.patch version, it isn't always
-# 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:=v1.7.5
+PKG_VERSION:=1.9.1
PKG_RELEASE:=1
-PKG_LICENSE:=BSD-2-Clause
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/lz4/lz4/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=f8377c89dad5c9f266edc0be9b73595296ecafd5bfa1000de148096c50052dc4
+PKG_BUILD_DIR:=$(BUILD_DIR)/lz4-$(PKG_VERSION)
+
PKG_MAINTAINER:=Darik Horn <dajhorn@vanadac.com>
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_MIRROR_HASH:=afb362b970816e06dac4997d26dd7d2cdb83168510228d174d25b1044b271e18
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_URL:=https://github.com/lz4/lz4.git
-PKG_SOURCE_VERSION:=$(PKG_VERSION)
+PKG_BUILD_PARALLEL:=1
+CMAKE_INSTALL:=1
+CMAKE_SOURCE_SUBDIR:=contrib/cmake_unofficial
include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/lz4/Default
+ SUBMENU:=Compression
+ URL:=https://www.lz4.org/
+endef
define Package/liblz4
- SECTION:=libs
- CATEGORY:=Libraries
- TITLE:=Extremely fast compression
- URL:=http://www.lz4.org/
+$(call Package/lz4/Default)
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=Extremely fast compression
+ LICENSE:=BSD-2-Clause
+ LICENSE_FILES:=LICENSE lib/LICENSE
+ ABI_VERSION:=$(firstword $(subst .,$(space),$(PKG_VERSION)))
+ MENU:=1
endef
define Package/liblz4/description
even faster decoder. This package provides the liblz4 shared library.
endef
-TARGET_CFLAGS += $(FPIC)
+define Package/liblz4/config
+ source "$(SOURCE)/Config.in"
+endef
-define Build/Compile
- $(MAKE) -C "$(PKG_BUILD_DIR)/lib" $(MAKE_INSTALL_FLAGS) \
- CC="$(TARGET_CC)" \
- CFLAGS="$(TARGET_CFLAGS)" \
- PREFIX="$(CONFIGURE_PREFIX)" \
- install
+define Package/lz4
+$(call Package/lz4/Default)
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=Extremely fast compression
+ LICENSE:=GPL-2.0-or-later
+ LICENSE_FILES:=LICENSE programs/COPYING
+ DEPENDS:=+liblz4
endef
-define Build/InstallDev
- $(CP) $(PKG_INSTALL_DIR)/* $(1)/
+define Package/lz4/description
+ LZ4 - Fast real-time compression algorithm.
+ This package provides the lz4 binaries.
endef
+CMAKE_OPTIONS += \
+ -DCMAKE_INSTALL_MANDIR=/dev/null \
+ -DLZ4_BUILD_LEGACY_LZ4C=OFF
+
+ifeq ($(CONFIG_LZ4_OPTIMIZE_SPEED),y)
+ TARGET_CFLAGS := $(filter-out -O%,$(TARGET_CFLAGS)) -O3
+endif
+
+TARGET_CFLAGS += $(FPIC) -ffunction-sections -fdata-sections -flto
+TARGET_LDFLAGS += -Wl,--gc-sections
+
define Package/liblz4/install
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/liblz4.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/liblz4.so.$(ABI_VERSION)* $(1)/usr/lib/
+endef
+
+define Package/lz4/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/{lz4,lz4cat,unlz4} $(1)/usr/bin/
endef
$(eval $(call BuildPackage,liblz4))
+$(eval $(call BuildPackage,lz4))
PKG_NAME:=libmstch
PKG_VERSION:=1.0.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/no1msd/mstch/tar.gz/$(PKG_VERSION)?
PKG_BUILD_DIR:=$(BUILD_DIR)/mstch-$(PKG_VERSION)
HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/mstch-$(PKG_VERSION)
+PKG_MAINTAINER:=Amol Bhave <ambhave@fb.com>
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE
-HOST_BUILD_DEPENDS:=boost boost/host
-
-PKG_BUILD_DEPENDS:=boost
+HOST_BUILD_DEPENDS:=boost/host
+PKG_BUILD_PARALLEL:=1
+CMAKE_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/cmake.mk
-HOST_BUILD_PREFIX:=$(STAGING_DIR_HOST)
-
-PKG_BUILD_PARALLEL:=1
-CMAKE_INSTALL:=1
-CMAKE_OPTIONS:= \
- -DCMAKE_POSITION_INDEPENDENT_CODE=True
-
define Package/libmstch
SECTION:=libs
CATEGORY:=Libraries
TITLE:=Complete implementation of {{mustache}} templates using modern C++
DEPENDS:=+boost +boost-container
URL:=https://github.com/no1msd/mstch
- MAINTAINER:=Amol Bhave <ambhave@fb.com>
endef
define Package/libmstch/description
mstch is a complete implementation of {{mustache}} templates using modern C++
endef
+CMAKE_OPTIONS += \
+ -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE
+
$(eval $(call BuildPackage,libmstch))
$(eval $(call HostBuild))
PKG_NAME:=libnatpmp
PKG_VERSION:=20150609
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://miniupnp.tuxfamily.org/files
PKG_HASH:=e1aa9c4c4219bc06943d6b2130f664daee213fb262fcb94dd355815b8f4536b0
-PKG_MAINTAINER:=Hauke Mehrtens <hauke@hauke-m.de>
-PKG_LICENSE:=BSD-3c
+
+PKG_MAINTAINER:=Rosen Penev <rosenp@gmail.com>
+PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE
-PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+CMAKE_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
define Package/libnatpmp/Default
TITLE:=NAT Port Mapping Protocol (NAT-PMP)
- URL:=http://miniupnp.free.fr/libnatpmp.html
+ URL:=https://miniupnp.tuxfamily.org/libnatpmp.html
endef
define Package/libnatpmp/Default/description
SECTION:=libs
CATEGORY:=Libraries
TITLE+= library
+ ABI_VERSION:=1
endef
define Package/libnatpmp/description
This package contains the natpmp client.
endef
-MAKE_FLAGS += \
- COPTS="$(TARGET_CFLAGS)" \
- PREFIX="$(PKG_INSTALL_DIR)" \
- OS="Linux"
-
-define Build/InstallDev
- $(INSTALL_DIR) $(1)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/declspec.h $(1)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/natpmp.h $(1)/usr/include/
- $(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libnatpmp*.{so*,a} $(1)/usr/lib/
-endef
-
define Package/libnatpmp/install
$(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/libnatpmp.so.* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libnatpmp.so.* $(1)/usr/lib/
endef
define Package/natpmpc/install
+++ /dev/null
---- a/Makefile
-+++ b/Makefile
-@@ -56,7 +56,7 @@ else
- endif
- endif
-
--HEADERS = natpmp.h
-+HEADERS = natpmp.h declspec.h
-
- EXECUTABLES = testgetgateway natpmpc-shared natpmpc-static
-
--- /dev/null
+--- /dev/null
++++ b/CMakeLists.txt
+@@ -0,0 +1,50 @@
++cmake_minimum_required(VERSION 2.8.12)
++
++if(POLICY CMP0048)
++ cmake_policy(SET CMP0048 NEW)
++endif()
++
++project(natpmp C)
++
++set (NATPMP_VERSION 20150609)
++set (NATPMP_API_VERSION 1)
++
++set (NATPMP_SOURCES
++ natpmp.c
++ getgateway.c
++)
++
++if (WIN32)
++ set (NATPMP_SOURCES ${NATPMP_SOURCES} wingettimeofday.c)
++endif (WIN32)
++
++# Library itself
++add_library(natpmp SHARED ${NATPMP_SOURCES})
++set_target_properties (natpmp PROPERTIES OUTPUT_NAME "natpmp")
++set_target_properties (natpmp PROPERTIES VERSION ${NATPMP_VERSION})
++set_target_properties (natpmp PROPERTIES SOVERSION ${NATPMP_API_VERSION})
++target_compile_definitions(natpmp PRIVATE -DENABLE_STRNATPMPERR)
++target_include_directories(natpmp PUBLIC ${CMAKE_CURRENT_LIST_DIR})
++
++if (WIN32)
++ target_link_libraries(natpmp PUBLIC ws2_32 Iphlpapi)
++ target_compile_definitions(natpmp PUBLIC -DNATPMP_STATICLIB)
++endif (WIN32)
++
++install(TARGETS natpmp
++ RUNTIME DESTINATION bin
++ LIBRARY DESTINATION lib${LIB_SUFFIX}
++ ARCHIVE DESTINATION lib${LIB_SUFFIX})
++
++# Executables
++add_executable(natpmpc natpmpc.c)
++target_link_libraries(natpmpc natpmp)
++
++install(FILES natpmpc DESTINATION bin)
++
++add_executable(testgetgateway
++ testgetgateway.c
++ getgateway.c)
++target_link_libraries(testgetgateway natpmp)
++
++install(FILES natpmp.h DESTINATION include)
PKG_NAME:=libnetconf2
PKG_VERSION:=0.12-r1
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_LICENSE:=BSD-3-Clause
PKG_MAINTAINER:=Mislav Novakovic <mislav.novakovic@sartura.hr>
$(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/
+ $(CP) $(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/
PKG_NAME:=re2
PKG_VERSION:=2019-06-01
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/google/re2/tar.gz/$(PKG_VERSION)?
define Package/re2/install
$(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libre2.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libre2.so* $(1)/usr/lib/
endef
$(eval $(call BuildPackage,re2))
include $(TOPDIR)/rules.mk
PKG_NAME:=librsocket-cpp
-PKG_SOURCE_DATE:=2019-05-08
-PKG_SOURCE_VERSION:=ddc80392b17a3fadcbea09f82ea5f6936f0fd459
+PKG_SOURCE_DATE:=2019-06-11
+PKG_SOURCE_VERSION:=741f817fd519e0610cddb5783aae812355e19435
PKG_RELEASE:=1
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_DATE).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/rsocket/rsocket-cpp/tar.gz/$(PKG_SOURCE_VERSION)?
-PKG_HASH:=b9b5177be57f6cd23ff3592845b11209167f679b683cb73acbf351e7a3550a76
+PKG_HASH:=56886deba0f3594b4a430b1f515c90a138800b8e387440e6b8bf728d660f457a
PKG_BUILD_DIR:=$(BUILD_DIR)/rsocket-cpp-$(PKG_SOURCE_VERSION)
+PKG_MAINTAINER:=Amol Bhave <ambhave@fb.com>
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
-include $(INCLUDE_DIR)/package.mk
-include $(INCLUDE_DIR)/cmake.mk
-
PKG_BUILD_PARALLEL:=1
CMAKE_BINARY_SUBDIR:=builddir
-CMAKE_OPTIONS:= \
- -DBUILD_BENCHMARKS=OFF \
- -DBUILD_EXAMPLES=OFF \
- -DBUILD_TESTS=OFF \
- -DBUILD_SHARED_LIBS=ON
CMAKE_INSTALL:=1
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
define Package/librsocket-cpp
SECTION:=libs
CATEGORY:=Libraries
C++ implementation of reactive functional programming including both Observable and Flowable types.
endef
+CMAKE_OPTIONS += \
+ -DBUILD_BENCHMARKS=OFF \
+ -DBUILD_EXAMPLES=OFF \
+ -DBUILD_TESTS=OFF \
+ -DBUILD_SHARED_LIBS=ON
+
define Package/librsocket-cpp/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libReactiveSocket.so* $(1)/usr/lib/
+++ /dev/null
-diff --git a/yarpl/CMakeLists.txt b/yarpl/CMakeLists.txt
---- a/yarpl/CMakeLists.txt Fri May 03 07:45:18 2019 -0700
-+++ b/yarpl/CMakeLists.txt Tue May 07 02:03:23 2019 -0700
-@@ -21,7 +21,11 @@
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-unused-parameter")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-weak-vtables -Wno-padded")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer")
-- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -momit-leaf-frame-pointer")
-+ include(CheckCXXCompilerFlag)
-+ CHECK_CXX_COMPILER_FLAG("-momit-leaf-frame-pointer" HAVE_OMIT_LEAF_FRAME_POINTER)
-+ if(HAVE_OMIT_LEAF_FRAME_POINTER)
-+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -momit-leaf-frame-pointer")
-+ endif()
- endif()
-
- if(YARPL_WRAP_SHARED_IN_LOCK)
--- /dev/null
+--- a/yarpl/Refcounted.h
++++ b/yarpl/Refcounted.h
+@@ -42,7 +42,7 @@ std::shared_ptr<T> atomic_exchange(
+ auto refptr = ar->ref.lock();
+ auto old = std::move(*refptr);
+ *refptr = std::move(r);
+- return std::move(old);
++ return old;
+ }
+
+ template <typename T>
PKG_NAME:=libtins
PKG_VERSION:=4.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_MAINTAINER:= Steven Hessing <steven.hessing@gmail.com>
endef
define Package/libtins/install
- $(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libtins.so.* $(1)/usr/lib/
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libtins.so.* $(1)/usr/lib/
endef
$(eval $(call BuildPackage,libtins))
include $(TOPDIR)/rules.mk
PKG_NAME:=libuhttpd
-PKG_VERSION:=2.2.1
+PKG_VERSION:=2.2.2
PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=v$(PKG_VERSION)
PKG_SOURCE_URL=https://github.com/zhaojh329/libuhttpd.git
-PKG_MIRROR_HASH:=e6b3d540a0d32a77739ab6b028ded46fbf4997d241fabb578ef1f212581eea33
+PKG_MIRROR_HASH:=98f217238160489468fafe8c643b7f96f168c80000ee07d3ca808d54f4c6a608
CMAKE_INSTALL:=1
PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_SOURCE_SUBDIR)
define Package/libuhttpd/default/install
$(INSTALL_DIR) $(1)/usr/lib/ $(1)/usr/lib/lua/
- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libuhttpd.so* $(1)/usr/lib/
- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/lua/uhttpd.so* $(1)/usr/lib/lua/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libuhttpd.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/lua/uhttpd.so* $(1)/usr/lib/lua/
endef
Package/libuhttpd-nossl/install = $(Package/libuhttpd/default/install)
include $(TOPDIR)/rules.mk
PKG_NAME:=libupm
-PKG_VERSION:=1.7.1
+PKG_VERSION:=2.0.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/intel-iot-devkit/upm/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=b253742b01146f4b86e20714aa24e75ca1e9d46629eab9aa8db070ce94cf3619
+PKG_HASH:=7dd2f4165b71e071d100b58d6a392f3cf57b0f257c82ffabf49e931b5ed6bc23
PKG_BUILD_DIR:=$(BUILD_DIR)/upm-$(PKG_VERSION)
PKG_MAINTAINER:=John Crispin <blogic@openwrt.org>, Hirokazu MORIKAWA <morikw2@gmail.com>
PKG_LICENSE_FILES:=LICENSE
CMAKE_INSTALL:=1
+CMAKE_BINARY_SUBDIR:=build
PKG_USE_MIPS16:=0
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
adxrs610 am2315 apa102 apds9002 apds9930 at42qt1070 bh1749 bh1750 bh1792 biss0001 bma220 \
bma250e bmg160 bmi160 bmm150 bmp280 bmpx8x bmx055 bno055 button buzzer cjq4435 collision \
cwlsxxa dfrec dfrorp dfrph ds1307 ds1808lc ds18b20 ds2413 ecezo ecs1030 \
- ehr eldriver electromagnet emg enc03r flex gas gp2y0a gprs grove grovecollision groveehr \
- groveeldriver groveelectromagnet groveemg grovegprs grovegsr grovelinefinder grovemd \
- grovemoisture groveo2 grovescam grovespeaker groveultrasonic grovevdiv grovewater grovewfs \
+ ehr eldriver electromagnet emg enc03r flex gas gp2y0a gprs \
gsr guvas12d h3lis331dl hcsr04 hdc1000 hdxxvxta hka5 hlg150h hm11 hmc5883l hmtrp hp20x \
ht9170 htu21d hx711 ili9341 ims ina132 interfaces isd1820 itg3200 jhd1313m1 joystick12 kx122 \
kxcjk1013 kxtj3 l298 l3gd20 lcd lcdks lcm1602 ldt0028 led lidarlitev3 light linefinder lis2ds12 \
veml6070 water waterlevel wfs wheelencoder wt5001 xbee yg1006 zfm20 \
vcap t3311 hwxpxx h803x ozw curieimu
# (require libbacnet) tb7300 t8100 e50hx bacnetmstp
+# (require libtinyb) 2jciebu01_ble 2jciebu01_usb
define Package/libupm/Default
SECTION:=libs
define Package/libupm/install/Default-python
$(INSTALL_DIR) $(1)/usr/lib/python$(PYTHON_VERSION)/site-packages/upm
- $(CP) $(PKG_BUILD_DIR)/src/$(2)/python$(PYTHON_VERSION)/pyupm_$(2).py \
+ $(CP) $(CMAKE_BINARY_DIR)/$(if $(filter interfaces, $(2)),,src/)$(2)/python$(PYTHON_VERSION)/pyupm_$(2).py \
$(1)/usr/lib/python$(PYTHON_VERSION)/site-packages/upm/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/python$(PYTHON_VERSION)/site-packages/upm/_pyupm_$(2).so \
$(1)/usr/lib/python$(PYTHON_VERSION)/site-packages/upm/ ;
define Package/libupm/install/Default-python3
$(INSTALL_DIR) $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/upm
- $(CP) $(PKG_BUILD_DIR)/src/$(2)/python$(PYTHON3_VERSION)/pyupm_$(2).py \
+ $(CP) $(CMAKE_BINARY_DIR)/$(if $(filter interfaces, $(2)),,src/)$(2)/python$(PYTHON3_VERSION)/pyupm_$(2).py \
$(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/upm/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/python$(PYTHON3_VERSION)/site-packages/upm/_pyupm_$(2).so \
$(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/upm/ ;
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -225,14 +225,7 @@ include(GNUInstallDirs)
+@@ -231,14 +231,7 @@
set (LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}" CACHE PATH "Installation path for libraries")
# Make a version file containing the current version from git.
-# If git_describe fails, use a dirty version
-if (${VERSION} MATCHES -NOTFOUND)
- set (VERSION "v1.7.1")
++ set (VERSION "v2.0.0")
- message (WARNING "Failed to retrieve UPM version with 'git describe' (using "
- "${VERSION}). Check that git is installed and this is a valid git repo.")
-endif ()
-+set (VERSION "v1.7.1")
message (STATUS "UPM Version ${VERSION}")
--- /dev/null
+diff -urN a/src/bma250e/bma250e.cxx b/src/bma250e/bma250e.cxx
+--- a/src/bma250e/bma250e.cxx 2019-05-09 00:06:25.000000000 +0900
++++ b/src/bma250e/bma250e.cxx 2019-05-13 16:43:04.344536227 +0900
+@@ -195,35 +195,35 @@
+ fifoConfig(mode, axes);
+ }
+ if(tok.substr(0, 20) == "setInterruptEnable0:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(20), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(20), nullptr, 0);
+ setInterruptEnable0(bits);
+ }
+ if(tok.substr(0, 20) == "setInterruptEnable1:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(20), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(20), nullptr, 0);
+ setInterruptEnable1(bits);
+ }
+ if(tok.substr(0, 20) == "setInterruptEnable2:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(20), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(20), nullptr, 0);
+ setInterruptEnable2(bits);
+ }
+ if(tok.substr(0, 17) == "setInterruptMap0:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(17), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(17), nullptr, 0);
+ setInterruptMap0(bits);
+ }
+ if(tok.substr(0, 17) == "setInterruptMap1:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(17), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(17), nullptr, 0);
+ setInterruptMap1(bits);
+ }
+ if(tok.substr(0, 17) == "setInterruptMap2:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(17), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(17), nullptr, 0);
+ setInterruptMap2(bits);
+ }
+ if(tok.substr(0, 16) == "setInterruptSrc:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(16), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(16), nullptr, 0);
+ setInterruptSrc(bits);
+ }
+ if(tok.substr(0, 26) == "setInterruptOutputControl:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(26), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(26), nullptr, 0);
+ setInterruptOutputControl(bits);
+ }
+ if(tok.substr(0, 26) == "setInterruptLatchBehavior:") {
+diff -urN a/src/bmg160/bmg160.cxx b/src/bmg160/bmg160.cxx
+--- a/src/bmg160/bmg160.cxx 2019-05-09 00:06:25.000000000 +0900
++++ b/src/bmg160/bmg160.cxx 2019-05-13 16:44:25.516304666 +0900
+@@ -173,23 +173,23 @@
+ fifoConfig(mode, axes);
+ }
+ if(tok.substr(0, 20) == "setInterruptEnable0:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(20), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(20), nullptr, 0);
+ setInterruptEnable0(bits);
+ }
+ if(tok.substr(0, 17) == "setInterruptMap0:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(17), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(17), nullptr, 0);
+ setInterruptMap0(bits);
+ }
+ if(tok.substr(0, 17) == "setInterruptMap1:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(17), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(17), nullptr, 0);
+ setInterruptMap1(bits);
+ }
+ if(tok.substr(0, 16) == "setInterruptSrc:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(16), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(16), nullptr, 0);
+ setInterruptSrc(bits);
+ }
+ if(tok.substr(0, 26) == "setInterruptOutputControl:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(26), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(26), nullptr, 0);
+ setInterruptOutputControl(bits);
+ }
+ if(tok.substr(0, 26) == "setInterruptLatchBehavior:") {
+diff -urN a/src/bmm150/bmm150.cxx b/src/bmm150/bmm150.cxx
+--- a/src/bmm150/bmm150.cxx 2019-05-09 00:06:25.000000000 +0900
++++ b/src/bmm150/bmm150.cxx 2019-05-13 16:45:03.228197100 +0900
+@@ -170,19 +170,19 @@
+ setOpmode(opmode);
+ }
+ if(tok.substr(0, 19) == "setInterruptEnable:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(19), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(19), nullptr, 0);
+ setInterruptEnable(bits);
+ }
+ if(tok.substr(0, 19) == "setInterruptConfig:") {
+- u_int8_t bits = (u_int8_t)std::stoul(tok.substr(19), nullptr, 0);
++ uint8_t bits = (uint8_t)std::stoul(tok.substr(19), nullptr, 0);
+ setInterruptConfig(bits);
+ }
+ if(tok.substr(0, 17) == "setRepetitionsXY:") {
+- u_int8_t reps = (u_int8_t)std::stoul(tok.substr(17), nullptr, 0);
++ uint8_t reps = (uint8_t)std::stoul(tok.substr(17), nullptr, 0);
+ setRepetitionsXY(reps);
+ }
+ if(tok.substr(0, 16) == "setRepetitionsZ:") {
+- u_int8_t reps = (u_int8_t)std::stoul(tok.substr(16), nullptr, 0);
++ uint8_t reps = (uint8_t)std::stoul(tok.substr(16), nullptr, 0);
+ setRepetitionsZ(reps);
+ }
+ if(tok.substr(0, 14) == "setPresetMode:") {
include $(TOPDIR)/rules.mk
PKG_NAME:=libuv
-PKG_VERSION:=1.24.1
+PKG_VERSION:=1.29.1
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_HASH:=3dd3eeb7b00214b0226da55b38898d3f9481d0cf744d42faf82771e0f19f2b0a
+PKG_HASH:=1486043da5ccaf86d451a5fe93920c5b66770b132d92b6d0a15d636346ca570c
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-v$(PKG_VERSION)
PKG_BUILD_PARALLEL:=1
include $(TOPDIR)/rules.mk
PKG_NAME:=libwangle
-PKG_VERSION:=2019.05.27.00
+PKG_VERSION:=2019.06.10.00
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/facebook/wangle/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=935d94658133279d98de27ab7c78801c87f16414b8eec43766798acc5b14f549
+PKG_HASH:=3721c003aa5fce889699b0301705eced7a0ea4ab2e7e12af543dab3493ba8be9
PKG_BUILD_DIR:=$(BUILD_DIR)/wangle-$(PKG_VERSION)
+PKG_MAINTAINER:=Amol Bhave <ambhave@fb.com>
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
-include $(INCLUDE_DIR)/package.mk
-include $(INCLUDE_DIR)/cmake.mk
-
PKG_BUILD_PARALLEL:=1
CMAKE_SOURCE_SUBDIR:=wangle
-CMAKE_OPTIONS:= \
- -DBUILD_SHARED_LIBS=ON
CMAKE_INSTALL:=1
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
define Package/libwangle
SECTION:=libs
CATEGORY:=Libraries
This package includes the shared library.
endef
+CMAKE_OPTIONS:= \
+ -DBUILD_SHARED_LIBS=ON
+
define Package/libwangle/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libwangle.so* $(1)/usr/lib/
PKG_NAME:=libxml2
PKG_VERSION:=2.9.9
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://xmlsoft.org/sources/
A library for manipulating XML and HTML resources.
endef
+define Package/libxml2-dev
+ SECTION:=devel
+ CATEGORY:=Development
+ SUBMENU:=Libraries
+ TITLE:=Development files for libxml2
+ URL:=http://xmlsoft.org/
+ DEPENDS:=+libxml2
+endef
+
+define Package/libxml2-dev/description
+ A library for manipulating XML and HTML resources.
+
+ This package contains the headers and xml2-config binary.
+endef
+
+define Package/libxml2-utils
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=XML command line utilities (xmllint...)
+ URL:=http://xmlsoft.org/
+ DEPENDS:=+libxml2
+endef
+
+define Package/libxml2-utils/description
+ This package contains the binaries xmllint and xmlcatalog
+ from libxml2, a library for manipulating XML and HTML resources.
+endef
+
TARGET_CFLAGS += $(FPIC)
CONFIGURE_ARGS += \
define Package/libxml2/install
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libxml2.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libxml2.so.* $(1)/usr/lib/
+endef
+
+define Package/libxml2-dev/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/xml2-config $(1)/usr/bin/
+ $(SED) "s,$(STAGING_DIR),,g" $(1)/usr/bin/xml2-config
+
+ $(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/libxml2.so $(1)/usr/lib/
+
+ $(INSTALL_DIR) $(1)/usr/lib/{cmake,pkgconfig}
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/{cmake,pkgconfig} $(1)/usr/lib/
+ $(SED) "s,$(STAGING_DIR),,g" $(1)/usr/lib/pkgconfig/*.pc
+
+ $(INSTALL_DIR) $(1)/usr/share/aclocal
+ $(CP) $(PKG_INSTALL_DIR)/usr/share/aclocal/* $(1)/usr/share/aclocal
+endef
+
+define Package/libxml2-utils/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/xmllint $(1)/usr/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/xmlcatalog $(1)/usr/bin/
endef
define Host/Install
$(eval $(call HostBuild))
$(eval $(call BuildPackage,libxml2))
+$(eval $(call BuildPackage,libxml2-dev))
+$(eval $(call BuildPackage,libxml2-utils))
include $(TOPDIR)/rules.mk
PKG_NAME:=log4cplus
-PKG_VERSION:=2.0.3
+PKG_VERSION:=2.0.4
PKG_RELEASE:=2
-PKG_MAINTAINER:=BangLang Huang <banglang.huang@foxmail.com>, Rosy Song <rosysong@rosinson.com>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=https://github.com/log4cplus/log4cplus/releases/download/REL_2_0_3/
-PKG_HASH:=c55742c348d09b33219eea00d65b05bdd78ea967761b980b7134855fe24c5f73
+PKG_SOURCE_URL:=@SF/$(PKG_NAME)
+PKG_HASH:=faf15f3651e2d0f9f9cf2c1bfcb38ec4962f22f4a671410453a27c0976da5e36
+PKG_MAINTAINER:=BangLang Huang <banglang.huang@foxmail.com>, Rosy Song <rosysong@rosinson.com>
+PKG_LICENSE:=BSD-2-Clause Apache-2.0
PKG_LICENSE_FILES:=LICENSE
+
+HOST_BUILD_PARALLEL:=1
+PKG_BUILD_PARALLEL:=1
CMAKE_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
configuration. It is modeled after the Java log4j API.
endef
-TARGET_CFLAGS += -flto
-
-TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed
-
CMAKE_OPTIONS += \
-DLOG4CPLUS_BUILD_LOGGINGSERVER:BOOL=OFF \
-DLOG4CPLUS_BUILD_TESTING:BOOL=OFF \
-DUNICODE:BOOL=OFF \
-DWITH_ICONV:BOOL=OFF
-define Build/InstallDev
- $(INSTALL_DIR) $(1)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/log4cplus $(1)/usr/include/
- $(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/liblog4cplus*.so* $(1)/usr/lib
-endef
+TARGET_CFLAGS += -flto
+TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed
define Package/log4cplus/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/liblog4cplus*.so* $(1)/usr/lib
endef
-$(eval $(call HostBuild))
$(eval $(call BuildPackage,log4cplus))
+$(eval $(call HostBuild))
include $(TOPDIR)/rules.mk
PKG_NAME:=measurement-kit
-PKG_VERSION:=0.10.3
+PKG_VERSION:=0.10.4
PKG_RELEASE=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/measurement-kit/measurement-kit/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=04bc1832fbaa54a9fde4923e8f44a2f99610a862c228dd05977c36f54870d80f
+PKG_HASH:=6ca0d9e7a9c1ff0ea8713bf59fde9f87365acdc4b784a5a4bb3f35a77bc4b775
PKG_INSTALL:=1
PKG_FIXUP:=autoreconf
+++ /dev/null
-From 45904ae4548c848d053bea20e2f3e38189043c3a Mon Sep 17 00:00:00 2001
-From: Rosen Penev <rosenp@gmail.com>
-Date: Fri, 3 May 2019 23:37:10 -0700
-Subject: [PATCH] Fix compilation without deprecated OpenSSL APIs (#1785)
-
-Initialization is deprecated and causes compile errors with OpenSSL 1.1 when
-deprecated APIs are disabled.
----
- src/libmeasurement_kit/net/libssl.hpp | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/libmeasurement_kit/net/libssl.hpp b/src/libmeasurement_kit/net/libssl.hpp
-index eacee86ae..d1cecebbb 100644
---- a/src/libmeasurement_kit/net/libssl.hpp
-+++ b/src/libmeasurement_kit/net/libssl.hpp
-@@ -38,10 +38,12 @@ static inline void libssl_init_once(SharedPtr<Logger> logger) {
- static bool initialized = false;
- if (!initialized) {
- logger->debug2("initializing libssl once");
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
- SSL_library_init();
- ERR_load_crypto_strings();
- SSL_load_error_strings();
- OpenSSL_add_all_algorithms();
-+#endif
- initialized = true;
- }
- });
--without-gpm-support \
--with-colorsfile=/etc/newt/palette
-MAKE_VARS+= PYTHON_CONFIG_PATH="$(STAGING_DIR)/usr/bin"
+MAKE_VARS+= PYTHON_CONFIG_PATH="$(STAGING_DIR)/host/bin"
Build/Compile=$(call Build/Compile/Default,)
include $(TOPDIR)/rules.mk
PKG_NAME:=nss
-PKG_VERSION:=3.44
+PKG_VERSION:=3.44.1
PKG_RELEASE:=1
PKG_MAINTAINER:=Lucian Cristian <lucian.cristian@gmail.com>
PKG_LICENCE:=MPL-2.0
PKG_SOURCE_URL:= \
https://download.cdn.mozilla.net/pub/security/$(PKG_NAME)/releases/NSS_$(subst .,_,$(PKG_VERSION))_RTM/src \
https://archive.mozilla.org/pub/security/$(PKG_NAME)/releases/NSS_$(subst .,_,$(PKG_VERSION))_RTM/src
-PKG_HASH:=a5620e59b6eeedfd5a12c9298b50ad92e9898b223e214eb675e36f4ffb5b6aff
+PKG_HASH:=fce4cb80c989cde35416ecbe55920856015a35151c4f21be64470e4dd4de12f8
PKG_BUILD_PARALLEL:=0
include $(TOPDIR)/rules.mk
PKG_NAME:=opus
-PKG_VERSION:=1.3
+PKG_VERSION:=1.3.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://archive.mozilla.org/pub/opus
-PKG_HASH:=4f3d69aefdf2dbaf9825408e452a8a414ffc60494c70633560700398820dc550
+PKG_HASH:=65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d
PKG_MAINTAINER:=Ted Hess <thess@kitchensync.net>, Ian Leonard <antonlacon@gmail.com>
PKG_LICENSE:=BSD-3-Clause
include $(TOPDIR)/rules.mk
PKG_NAME:=p11-kit
-PKG_VERSION:=0.23.15
+PKG_VERSION:=0.23.16.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=f7c139a0c77a1f0012619003e542060ba8f94799a0ef463026db390680e4d798
PKG_SOURCE_URL:=https://github.com/p11-glue/p11-kit/releases/download/$(PKG_VERSION)
+PKG_HASH:=4b34e92ae36fa493e0d94366c767f06d5f9951e3d8581d10fd935d738db1574d
PKG_MAINTAINER:=Nikos Mavrogiannopoulos <n.mavrogiannopoulos@gmail.com>
PKG_LICENSE:=BSD-3c
way that they are discoverable.
endef
-TARGET_LDFLAGS += -Wl,--gc-sections
+TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed
CONFIGURE_ARGS+= \
--disable-debug \
+ --disable-rpath \
--disable-trust-module \
- --without-libffi
+ --without-libffi \
+ --without-systemd
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/p11-kit-1/p11-kit/
PKG_NAME:=poco
PKG_VERSION:=1.9.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://pocoproject.org/releases/$(PKG_NAME)-$(PKG_VERSION)
CATEGORY:=Libraries
TITLE:=Poco C++ libraries
URL:=https://www.pocoproject.org/
- DEPENDS:=+libstdcpp +libpthread +librt
+ DEPENDS:=+libstdcpp +libpthread +librt @!arc
MAINTAINER:=Jean-Michel Julien <jean-michel.julien@trilliantinc.com>
endef
include $(TOPDIR)/rules.mk
PKG_NAME:=speexdsp
-PKG_VERSION:=1.2rc3
+PKG_VERSION:=1.2.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://downloads.us.xiph.org/releases/speex/
-PKG_HASH:=4ae688600039f5d224bdf2e222d2fbde65608447e4c2f681585e4dca6df692f1
+PKG_SOURCE_URL:=https://downloads.us.xiph.org/releases/speex/
+PKG_HASH:=682042fc6f9bee6294ec453f470dadc26c6ff29b9c9e9ad2ffc1f4312fd64771
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
include $(TOPDIR)/rules.mk
PKG_NAME:=yaml
-PKG_VERSION:=0.2.1
+PKG_VERSION:=0.2.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://pyyaml.org/download/libyaml/
-PKG_HASH:=78281145641a080fb32d6e7a87b9c0664d611dcb4d542e90baf731f51cbb59cd
+PKG_HASH:=4a9100ab61047fd9bd395bcef3ce5403365cafd55c1e0d0299cde14958e47be9
+PKG_MAINTAINER:=
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=COPYING
-PKG_MAINTAINER:=Nicolas Thill <nico@openwrt.org>
-PKG_FIXUP:=autoreconf
-PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
PKG_NAME:=crtmpserver
PKG_SOURCE_DATE:=2015-10-04
PKG_SOURCE_VERSION:=b866fffca37c3b967a8878499cd2b91aa2587f34
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_DATE).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/shiretu/crtmpserver/tar.gz/$(PKG_SOURCE_VERSION)?
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/builders/make/output/dynamic/crtmpserver $(1)/usr/bin/
$(INSTALL_DIR) $(1)/usr/lib/crtmpserver
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/builders/make/output/dynamic/*.so $(1)/usr/lib/crtmpserver/
+ $(CP) $(PKG_BUILD_DIR)/builders/make/output/dynamic/*.so $(1)/usr/lib/crtmpserver/
$(foreach app,flvplayback samplefactory admin stresstest appselector vptests applestreamingclient proxypublish, \
$(INSTALL_DIR) $(1)/usr/lib/crtmpserver/$(app); \
$(INSTALL_BIN) $(PKG_BUILD_DIR)/builders/make/output/dynamic/applications/$(app)/lib$(app).so \
PKG_NAME:=ffmpeg
PKG_VERSION:=3.4.6
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://ffmpeg.org/releases/
$(CP) $(PKG_INSTALL_DIR)/usr/bin/ffprobe $(1)/usr/bin/
endef
+Package/ffprobe-custom/install = $(Package/ffprobe/install)
+
define Package/ffserver/install
$(INSTALL_DIR) $(1)/usr/bin
$(CP) $(PKG_INSTALL_DIR)/usr/bin/ffserver $(1)/usr/bin/
endef
+Package/ffserver-custom/install = $(Package/ffserver/install)
+
define Package/libffmpeg-custom/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avformat,avutil}.so.* $(1)/usr/lib/
include $(TOPDIR)/rules.mk
PKG_NAME:=gphoto2
-PKG_VERSION:=2.5.20
+PKG_VERSION:=2.5.23
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_HASH:=a36f03b50a8f040f185cbc757f957f03dc05a9210907199e6919ef3f970248f6
+PKG_HASH:=df87092100e7766c9d0a4323217c91908a9c891c0d3670ebf40b76903be458d1
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
include $(TOPDIR)/rules.mk
PKG_NAME:=graphicsmagick
-PKG_VERSION:=1.3.31
-PKG_RELEASE:=2
+PKG_VERSION:=1.3.32
+PKG_RELEASE:=1
PKG_BUILD_DIR:=$(BUILD_DIR)/GraphicsMagick-$(PKG_VERSION)
PKG_SOURCE:=GraphicsMagick-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@SF/graphicsmagick
-PKG_HASH:=69ee4ac6a49a818098f47f51c4f430ca9bb2493cb3594f322eb211b8aeb71f41
+PKG_HASH:=d1f70bc6d41de922199ce6b0a04af7b3492b2fc4a2be6ee24e0af4e15250db0a
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=Copyright.txt
--- /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:=imagemagick
+PKG_VERSION:=7.0.8
+PKG_REVISION:=49
+PKG_RELEASE:=1
+PKG_MAINTAINER:=Val Kulkov <val.kulkov@gmail.com>
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_REVISION).tar.gz
+PKG_SOURCE_URL:=http://github.com/ImageMagick/ImageMagick/archive/$(PKG_VERSION)-$(PKG_REVISION)
+PKG_HASH:=53f7963bbe81520e799e9e178a13757890ed43bc9faf2e86fae1cf58aea28575
+PKG_BUILD_DIR:=$(BUILD_DIR)/ImageMagick-$(PKG_VERSION)-$(PKG_REVISION)
+
+PKG_LICENSE:=Apache-2.0
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_USE_MIPS16:=0
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/imagemagick/Default
+ SECTION:=multimedia
+ CATEGORY:=Multimedia
+ TITLE:=Image manipulation tools
+ URL:=https://www.imagemagick.org/
+endef
+
+define Package/imagemagick
+ $(call Package/imagemagick/Default)
+ DEPENDS:=+libltdl +libpthread +zlib +libfreetype +libpng +libjpeg +libtiff
+endef
+
+define Package/imagemagick/description
+ImageMagick is a free and open-source software suite for displaying,
+converting, and editing raster image and vector image files.
+NOTE: this package may not be suitable for many embedded devices because
+of its large size. Consider using extroot or alternatively consider
+graphicsmagick which is smaller but similar in functionality.
+endef
+
+define Package/imagemagick/conffiles
+/etc/ImageMagick-7/colors.xml
+/etc/ImageMagick-7/delegates.xml
+/etc/ImageMagick-7/log.xml
+/etc/ImageMagick-7/mime.xml
+/etc/ImageMagick-7/policy.xml
+/etc/ImageMagick-7/quantization-table.xml
+/etc/ImageMagick-7/thresholds.xml
+/etc/ImageMagick-7/type-apple.xml
+/etc/ImageMagick-7/type-dejavu.xml
+/etc/ImageMagick-7/type-ghostscript.xml
+/etc/ImageMagick-7/type-urw-base35.xml
+/etc/ImageMagick-7/type-windows.xml
+/etc/ImageMagick-7/type.xml
+endef
+
+CONFIGURE_ARGS += \
+ --enable-shared \
+ --disable-static \
+ --disable-docs \
+ --enable-dependency-tracking \
+ --with-modules \
+ --with-threads \
+ --with-ltdl \
+ --with-zlib \
+ --disable-hdri \
+ --with-quantum-depth=8 \
+ --disable-deprecated \
+ --disable-cipher \
+ --without-bzlib \
+ --without-autotrace \
+ --without-djvu \
+ --without-dps \
+ --without-fftw \
+ --without-flif \
+ --without-fpx \
+ --without-fontconfig \
+ --without-gslib \
+ --without-gvc \
+ --without-heic \
+ --without-jbig \
+ --without-lcms \
+ --without-lqr \
+ --without-lzma \
+ --without-magick-plus-plus \
+ --without-openexr \
+ --without-openjp2 \
+ --without-raqm \
+ --without-raw \
+ --without-webp \
+ --without-x \
+ --without-zstd \
+ --without-gslib \
+ --without-gvc \
+ --without-pango \
+ --without-perl \
+ --without-rsvg \
+ --without-wmf \
+ --without-xml \
+ --with-freetype \
+ --with-jpeg \
+ --with-png \
+ --with-tiff
+
+TARGET_CFLAGS += -flto
+
+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
+ $(INSTALL_DATA) \
+ $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/* \
+ $(1)/usr/lib/pkgconfig/
+endef
+
+IMlibdir:=usr/lib/ImageMagick-$(PKG_VERSION)
+define Package/imagemagick/install
+ $(INSTALL_DIR) $(1)/etc $(1)/usr/bin $(1)/$(IMlibdir)
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so.* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
+ $(RM) $(1)/usr/bin/*-config
+ $(CP) $(PKG_INSTALL_DIR)/etc/ImageMagick-* $(1)/etc/
+ $(CP) $(PKG_INSTALL_DIR)/$(IMlibdir)/* $(1)/$(IMlibdir)/
+endef
+
+$(eval $(call BuildPackage,imagemagick))
include $(TOPDIR)/rules.mk
PKG_NAME:=youtube-dl
-PKG_VERSION:=2019.5.20
+PKG_VERSION:=2019.6.21
PKG_RELEASE:=1
PKG_SOURCE:=youtube_dl-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/y/youtube_dl/
-PKG_HASH:=f73babe4bbad1c1eab3b4d74042ed8204cd62820e8489db74d3087ff9a6575df
+PKG_HASH:=a64ffda79f467c81877d5452d775ebf858b43853ff7ce8644be3a80ebf3f9ea9
PKG_BUILD_DIR:=$(BUILD_DIR)/youtube_dl-$(PKG_VERSION)
SECTION:=multimedia
CATEGORY:=Multimedia
TITLE:=Utility to download videos from YouTube.com
- DEPENDS:=+ca-certificates
URL:=https://yt-dl.org
+ DEPENDS:=+ca-certificates
endef
define Package/youtube-dl/description
include $(TOPDIR)/rules.mk
PKG_NAME:=acme
-PKG_VERSION:=2.7.9
-PKG_RELEASE:=9
-PKG_LICENSE:=GPLv3
+PKG_VERSION:=2.8.1
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/Neilpang/acme.sh/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=25f8eef1a53584e3ebc653e1ae7763362ca97c40bb476ab7fee01aa50fa3a101
+PKG_HASH:=4fc55b2112058e563616893fefb56c5ff4895a7e6327e9f8416797fdc44d98e3
PKG_BUILD_DIR:=$(BUILD_DIR)/acme.sh-$(PKG_VERSION)
+
PKG_MAINTAINER:=Toke Høiland-Jørgensen <toke@toke.dk>
-PKGARCH:=all
+PKG_LICENSE:=GPL-3.0-only
+PKG_LICENSE_FILES:=LICENSE.md
LUCI_DIR:=/usr/lib/lua/luci
define Package/acme
SECTION:=net
CATEGORY:=Network
- DEPENDS:=+curl +ca-bundle +openssl-util +socat
+ DEPENDS:=+wget +ca-bundle +openssl-util +socat
TITLE:=ACME (Letsencrypt) client
+ URL:=https://acme.sh
+ PKGARCH:=all
endef
define Package/acme/description
CATEGORY:=Network
DEPENDS:=+acme
TITLE:=DNS API integration for ACME (Letsencrypt) client
+ PKGARCH:=all
endef
define Package/acme-dnsapi/description
TITLE:=ACME package - LuCI interface
DEPENDS:= lua luci-base +acme
SUBMENU:=3. Applications
+ PKGARCH:=all
endef
define Package/luci-app-acme/description
include $(TOPDIR)/rules.mk
PKG_NAME:=apfree-wifidog
-PKG_VERSION:=3.8.1588
+PKG_VERSION:=3.11.1716
PKG_RELEASE=1
PKG_LICENSE:=GPL-3.0-or-later
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/liudf0716/apfree_wifidog.git
PKG_SOURCE_VERSION:=$(PKG_VERSION)
-PKG_MIRROR_HASH:=0d10ad5a29358a7124ba75570894f48998af841519b0f295e3fcbed66ee7bccc
-
-PKG_INSTALL:=1
+PKG_MIRROR_HASH:=76eda57e40b919091281305344bc57fc732a779d7944f57bd5de87914ba127d1
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
SECTION:=net
CATEGORY:=Network
DEPENDS:=+zlib +iptables-mod-extra +iptables-mod-ipopt +kmod-ipt-nat +iptables-mod-nat-extra \
- +libjson-c +ipset +libip4tc +libevent2 +libevent2-openssl \
- +fping +libmosquitto +libuci +px5g
+ +libjson-c +ipset +libip4tc +libevent2 +libevent2-openssl +libuci +px5g
TITLE:=Apfree's wireless captive portal solution
URL:=https://github.com/liudf0716/apfree_wifidog
endef
The ApFree Wifidog project is a complete and embeddable captive portal
solution for wireless community groups or individuals who wish to open a free
Hotspot while still preventing abuse of their Internet connection.
-
It's enhanced wifidog
endef
define Package/apfree-wifidog/install
$(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/wifidog $(1)/usr/bin/wifidogx
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/wdctl $(1)/usr/bin/wdctlx
- $(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libhttpd.so* $(1)/usr/lib/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/wifidogx $(1)/usr/bin/wifidogx
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/wdctlx $(1)/usr/bin/wdctlx
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) ./files/wdping $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/etc
config wifidog
- option gateway_interface 'br-lan'
- option auth_server_hostname 'change wifidog.kunteng.org.cn to your auth server domain or ip'
- option auth_server_port 8001
- option auth_server_path '/wifidog/'
- option check_interval 60
- option client_timeout 5
- option httpd_max_conn 200
- option pool_mode 1
- option thread_number 5
- option queue_size 20
- option wired_passed 0
- option enable 0
+ option gateway_interface 'br-lan'
+ option auth_server_hostname 'change wifidog.kunteng.org.cn to your auth server domain or ip'
+ option auth_server_port 443
+ option auth_server_path '/wifidog/'
+ option check_interval 60
+ option client_timeout 5
+ option wired_passed 0
+ option disabled 1
USE_PROCD=1
PROG=/usr/bin/wifidogx
-CONFIGFILE=/tmp/wifidog.conf
+CONFIGFILE=/tmp/wifidogx.conf
EXTRA_COMMANDS="status"
EXTRA_HELP=" status Print the status of the service"
local delta_traffic
local check_interval
local client_timeout
- local httpd_max_conn
local trusted_domains
local js_filter
local trusted_maclist
[ -f ${CONFIGFILE} ] && rm -f ${CONFIGFILE}
- config_get enable "${cfg}" "enable" 0
- [ "${enable}" = "1" ] || return
+ config_get enable "${cfg}" "disabled" 0
+ [ "${enable}" = "0" ] || {
+ echo "wifidogx disabled in /etc/config/wifidogx file, please set disabled to 0 to enable it" >&2
+ return
+ }
default_gateway_id=$(sed -e 's/://g' /sys/class/net/br-lan/address)
config_get check_interval "${cfg}" "check_interval" "60"
config_get js_filter "${cfg}" "js_filter" 1
config_get client_timeout "${cfg}" "client_timeout" "5"
- config_get httpd_max_conn "${cfg}" "httpd_max_conn" "200"
config_get trusted_domains "${cfg}" "trusted_domains"
config_get trusted_maclist "${cfg}" "trusted_maclist"
config_get untrusted_maclist "${cfg}" "untrusted_maclist"
ClientTimeout $client_timeout
JsFilter $js_filter
WiredPassed $wired_passed
-
- HTTPDMaxConn $httpd_max_conn
-
- PoolMode $pool_mode
- ThreadNumber $thread_number
- QueueSize $queue_size
-
$set_trusted_domains
-
$set_untrusted_maclist
-
$set_trusted_maclist
-
$set_trusted_iplist
-
$set_trusted_pan_domains
-
$set_proxy_port
-
$set_no_auth
-
$set_apple_cna
-
$set_update_domain_interval
-
$set_dns_timeout
FirewallRuleSet global {
config_foreach prepare_wifidog_conf wifidog
[ ! -f ${CONFIGFILE} ] && {
- echo "no wifidog.conf, exit..."
- stop
+ echo "no wifidogx.conf, exit..." >&2
exit
}
}
[ -s ${APFREE_KEY} -a -s ${APFREE_CERT} ] || {
- echo "no cert or key, exit..."
- stop
+ echo "no cert or key, exit..." >&2
exit
}
include $(TOPDIR)/rules.mk
PKG_NAME:=ariang
-PKG_VERSION:=1.1.0
+PKG_VERSION:=1.1.1
PKG_RELEASE:=1
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/mayswind/AriaNg-DailyBuild
-PKG_MIRROR_HASH:=31a41eed1d812956bf0c482b961cc86ab1b9ad2863e9b17f383330d3067c444f
-PKG_SOURCE_VERSION:=ca6f9168bdfbfc1fd3cbb1bac4600010d3725c0c
+PKG_SOURCE_URL:=https://codeload.github.com/mayswind/AriaNg-DailyBuild/tar.gz/$(PKG_VERSION)?
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_HASH:=48f3f737a6a79ab140f6bc75b0b6fd377ccbb75c7b7260b38ad4e64dee97d9e8
+PKG_BUILD_DIR:=$(BUILD_DIR)/AriaNg-DailyBuild-$(PKG_VERSION)
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE
SUBMENU:=Download Manager
DEPENDS:=+aria2
TITLE:=AriaNg webui
- URL:=https://github.com/mayswind/AriaNg
+ URL:=https://ariang.mayswind.net
PKGARCH:=all
endef
include $(TOPDIR)/rules.mk
PKG_NAME:=banip
-PKG_VERSION:=0.1.3
+PKG_VERSION:=0.1.4
PKG_RELEASE:=1
PKG_LICENSE:=GPL-3.0+
PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
config source 'sslbl'
option ban_src 'https://sslbl.abuse.ch/blacklist/sslipblacklist.csv'
option ban_src_desc 'SSL Blacklist by abuse.ch (IPv4)'
- option ban_src_rset 'BEGIN{FS=\",\"}/^(([0-9]{1,3}\.){3}[0-9]{1,3},).*/{print \"add sslbl \"\$1}'
+ option ban_src_rset 'BEGIN{FS=\",\"}/(([0-9]{1,3}\.){3}[0-9]{1,3},).*/{print \"add sslbl \"\$2}'
option ban_src_settype 'ip'
option ban_src_ruletype 'src'
option ban_src_on '0'
do
procd_add_interface_trigger "interface.*.up" "${iface}" "${ban_init}" start
done
- procd_add_reload_trigger "banip" "firewall"
+ procd_add_reload_trigger "banip"
}
#
LC_ALL=C
PATH="/usr/sbin:/usr/bin:/sbin:/bin"
-ban_ver="0.1.3"
+ban_ver="0.1.4"
ban_sysver="unknown"
ban_enabled=0
ban_automatic="1"
done
fi
else
- if [ -x "${ban_ipset}" ] && [ -n "$("${ban_ipset}" -n list "${src_name}" 2>/dev/null)" ]
+ if [ -x "${ban_ipset}" ] && [ -n "$("${ban_ipset}" -q -n list "${src_name}")" ]
then
- "${ban_ipset}" destroy "${src_name}"
+ "${ban_ipset}" -q destroy "${src_name}"
fi
fi
}
if [ "${cnt}" -gt 0 ]
then
- if [ -x "${ban_ipset}" ] && [ -z "$("${ban_ipset}" -n list "${src_name}" 2>/dev/null)" ]
+ if [ -x "${ban_ipset}" ] && [ -z "$("${ban_ipset}" -q -n list "${src_name}")" ]
then
- "${ban_ipset}" create "${src_name}" hash:"${src_settype}" hashsize "${size}" maxelem 262144 family "${src_setipv}" counters
+ "${ban_ipset}" -q create "${src_name}" hash:"${src_settype}" hashsize "${size}" maxelem 262144 family "${src_setipv}" counters
else
- "${ban_ipset}" flush "${src_name}"
+ "${ban_ipset}" -q flush "${src_name}"
fi
-
"${ban_ipset}" -! restore < "${tmp_file}"
printf "%s\n" "1" > "${tmp_set}"
printf "%s\n" "${cnt}" > "${tmp_cnt}"
fi
f_iptadd
end_ts="$(date +%s)"
- f_log "debug" "f_ipset ::: name: ${src_name:-"-"}, mode: ${mode:-"-"}, settype: ${src_settype:-"-"}, setipv: ${src_setipv:-"-"}, ruletype: ${src_ruletype:-"-"}, count(sum/ip/cidr): ${cnt:-0}/${cnt_ip:-0}/${cnt_cidr:-0}, time(s): $((end_ts-start_ts))"
+ f_log "debug" "f_ipset ::: name: ${src_name:-"-"}, mode: ${mode:-"-"}, settype: ${src_settype:-"-"}, setipv: ${src_setipv:-"-"}, ruletype: ${src_ruletype:-"-"}, count(sum/ip/cidr): ${cnt:-0}/${cnt_ip:-0}/${cnt_cidr:-0}, time: $((end_ts-start_ts))"
;;
refresh)
- if [ -x "${ban_ipset}" ] && [ -n "$("${ban_ipset}" -n list "${src_name}" 2>/dev/null)" ]
+ ban_rc=4
+ if [ -x "${ban_ipset}" ] && [ -n "$("${ban_ipset}" -q -n list "${src_name}")" ]
then
- "${ban_ipset}" save "${src_name}" > "${tmp_file}"
+ "${ban_ipset}" -q save "${src_name}" > "${tmp_file}"
if [ -s "${tmp_file}" ]
then
+ ban_rc=0
cnt="$(($(wc -l 2>/dev/null < "${tmp_file}")-1))"
cnt_cidr="$(grep -cF "/" "${tmp_file}")"
cnt_ip="$((cnt-cnt_cidr))"
f_iptadd
fi
end_ts="$(date +%s)"
- f_log "debug" "f_ipset ::: name: ${src_name:-"-"}, mode: ${mode:-"-"}, count: ${cnt:-0}/${cnt_ip:-0}/${cnt_cidr:-0}, time(s): $((end_ts-start_ts))"
+ f_log "debug" "f_ipset ::: name: ${src_name:-"-"}, mode: ${mode:-"-"}, count: ${cnt:-0}/${cnt_ip:-0}/${cnt_cidr:-0}, time: $((end_ts-start_ts)), rc: ${ban_rc}"
;;
flush)
f_iptadd "remove"
- if [ -x "${ban_ipset}" ] && [ -n "$("${ban_ipset}" -n list "${src_name}" 2>/dev/null)" ]
+ if [ -x "${ban_ipset}" ] && [ -n "$("${ban_ipset}" -q -n list "${src_name}")" ]
then
- "${ban_ipset}" flush "${src_name}"
- "${ban_ipset}" destroy "${src_name}"
+ "${ban_ipset}" -q flush "${src_name}"
+ "${ban_ipset}" -q destroy "${src_name}"
fi
f_log "debug" "f_ipset ::: name: ${src_name:-"-"}, mode: ${mode:-"-"}"
;;
for source in ${ban_sources}
do
- if [ -x "${ban_ipset}" ] && [ -n "$("${ban_ipset}" -n list "${source}" 2>/dev/null)" ]
+ if [ -x "${ban_ipset}" ] && [ -n "$("${ban_ipset}" -q -n list "${source}")" ]
then
- "${ban_ipset}" destroy "${source}"
+ "${ban_ipset}" -q destroy "${source}"
fi
done
f_log "debug" "f_ipset ::: name: ${src_name:-"-"}, mode: ${mode:-"-"}"
continue
elif [ "${ban_action}" = "refresh" ]
then
+ start_ts="$(date +%s)"
f_ipset refresh
- continue
+ if [ ${ban_rc} -eq 0 ]
+ then
+ continue
+ fi
fi
# download queue processing
include $(TOPDIR)/rules.mk
PKG_NAME:=bind
-PKG_VERSION:=9.14.2
+PKG_VERSION:=9.14.3
PKG_RELEASE:=1
USERID:=bind=57:bind=57
PKG_SOURCE_URL:= \
https://www.mirrorservice.org/sites/ftp.isc.org/isc/bind9/$(PKG_VERSION) \
https://ftp.isc.org/isc/bind9/$(PKG_VERSION)
-PKG_HASH:=0e4027573726502ec038db3973a086c02508671723a4845e21da1769a5c27f0c
+PKG_HASH:=ce878aabcf01b61ed114522c32fff9e268b02da55b3c248349860bc3d0c8bdfa
PKG_FIXUP:=autoreconf
PKG_REMOVE_FILES:=aclocal.m4 libtool.m4
+++ /dev/null
---- a/config.h.in
-+++ b/config.h.in
-@@ -45,6 +45,9 @@
- /* Define to 1 if you have the `arc4random_uniform' function. */
- #undef HAVE_ARC4RANDOM_UNIFORM
-
-+/* Define if the ARM yield instruction is available */
-+#undef HAVE_ARM_YIELD
-+
- /* Define to 1 if the compiler supports __builtin_clz. */
- #undef HAVE_BUILTIN_CLZ
-
---- a/configure.ac
-+++ b/configure.ac
-@@ -421,8 +421,8 @@ AS_CASE([$host],
- [[]],
- [[__asm__ __volatile__ ("yield")]]
- )],
-- [AC_MSG_RESULT([yes])],
-- [AC_MSG_ERROR([no, try adding -march=native or -march=armv7-a to CFLAGS (see PLATFORMS.md for more information)])])])
-+ [AC_MSG_RESULT([yes]) AC_DEFINE([HAVE_ARM_YIELD],[1],[Define if the ARM yield instruction is available])],
-+ [AC_MSG_RESULT([no])])])
-
- AC_CHECK_FUNCS([sysctlbyname])
-
---- a/lib/isc/rwlock.c
-+++ b/lib/isc/rwlock.c
-@@ -54,7 +54,7 @@
- # define isc_rwlock_pause() __asm__ __volatile__ ("rep; nop")
- #elif defined(__ia64__)
- # define isc_rwlock_pause() __asm__ __volatile__ ("hint @pause")
--#elif defined(__arm__)
-+#elif defined(__arm__) && HAVE_ARM_YIELD
- # define isc_rwlock_pause() __asm__ __volatile__ ("yield")
- #elif defined(sun) && (defined(__sparc) || defined(__sparc__))
- # define isc_rwlock_pause() smt_pause()
PKG_NAME:=bridge-utils
PKG_VERSION:=1.6
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/linux/utils/net/$(PKG_NAME)
CATEGORY:=Base system
TITLE:=Ethernet bridging configuration utility
URL:=http://www.linuxfromscratch.org/blfs/view/svn/basicnet/bridge-utils.html
+ ALTERNATIVES:=300:/usr/sbin/brctl:/usr/libexec/bridge-utils-brctl
endef
define Package/bridge/description
--with-linux-headers="$(LINUX_DIR)" \
define Package/bridge/install
- $(INSTALL_DIR) $(1)/usr/sbin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/brctl/brctl $(1)/usr/sbin
-endef
-
-define Package/bridge/prerm
-#!/bin/sh
-$${IPKG_INSTROOT}/bin/busybox brctl -h 2>&1 | grep -q BusyBox && \
-ln -sf ../../bin/busybox $${IPKG_INSTROOT}/usr/sbin/brctl
-exit 0
+ $(INSTALL_DIR) $(1)/usr/libexec
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/brctl/brctl $(1)/usr/libexec/bridge-utils-brctl
endef
$(eval $(call BuildPackage,bridge))
config COOVACHILLI_NOSSL
bool "No SSL support"
-config COOVACHILLI_CYASSL
- bool "CyaSSL"
+config COOVACHILLI_WOLFSSL
+ bool "wolfSSL"
config COOVACHILLI_OPENSSL
bool "OpenSSL"
PKG_NAME:=coova-chilli
PKG_VERSION:=1.4
-PKG_MAINTAINER:=Jaehoon You <teslamint@gmail.com>
-PKG_LICENSE:=GPL-2.0+
-PKG_LICENSE_FILES:=COPYING
-PKG_RELEASE:=9
+PKG_RELEASE:=10
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/coova/coova-chilli/tar.gz/$(PKG_VERSION)?
PKG_HASH:=987647a4c8efe7b1e2d7108d56068e3bd7830d326680f0eaa2c705e4c59c46d9
+PKG_MAINTAINER:=Jaehoon You <teslamint@gmail.com>
+PKG_LICENSE:=GPL-2.0-or-later
+PKG_LICENSE_FILES:=COPYING
+
+PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
-PKG_CONFIG_DEPENDS := \
+PKG_CONFIG_DEPENDS:= \
COOVACHILLI_MINIPORTAL \
COOVACHILLI_REDIR \
COOVACHILLI_USERAGENT \
COOVACHILLI_UAMDOMAINFILE \
COOVACHILLI_LARGELIMITS \
COOVACHILLI_NOSSL \
- COOVACHILLI_CYASSL \
+ COOVACHILLI_WOLFSSL \
COOVACHILLI_OPENSSL
include $(INCLUDE_DIR)/package.mk
SUBMENU:=Captive Portals
SECTION:=net
CATEGORY:=Network
- DEPENDS:=+kmod-tun +librt +COOVACHILLI_CYASSL:libcyassl +COOVACHILLI_OPENSSL:libopenssl
+ DEPENDS:=+kmod-tun +librt +COOVACHILLI_WOLFSSL:libwolfssl +COOVACHILLI_OPENSSL:libopenssl
TITLE:=Wireless LAN HotSpot controller (Coova Chilli Version)
URL:=https://coova.github.io/
MENU:=1
DISABLE_NLS=
-TARGET_CFLAGS += $(FPIC)
+TARGET_CFLAGS += $(FPIC) -Wno-address-of-packed-member
CONFIGURE_VARS += \
ARCH="$(LINUX_KARCH)" \
$(if $(CONFIG_COOVACHILLI_LARGELIMITS),--enable,--disable)-largelimits \
$(if $(CONFIG_COOVACHILLI_UAMDOMAINFILE),--enable,--disable)-uamdomainfile \
$(if $(CONFIG_IPV6),--with,--without)-ipv6 \
- $(if $(CONFIG_COOVACHILLI_CYASSL),--with,--without)-cyassl \
+ $(if $(CONFIG_COOVACHILLI_WOLFSSL),--with,--without)-cyassl \
$(if $(CONFIG_COOVACHILLI_OPENSSL),--with,--without)-openssl \
$(if $(CONFIG_PACKAGE_kmod-ipt-coova),--with-nfcoova) \
)
--- /dev/null
+--- a/src/ms_chap.c
++++ b/src/ms_chap.c
+@@ -96,18 +96,18 @@ MakeKey(u_char *key, u_char *des_key)
+ des_key[6] = Get7Bits(key, 42);
+ des_key[7] = Get7Bits(key, 49);
+
+- des_set_odd_parity((des_cblock *)des_key);
++ DES_set_odd_parity((DES_cblock *)des_key);
+ }
+
+ static void /* IN 8 octets IN 7 octest OUT 8 octets */
+ DesEncrypt(u_char *clear, u_char *key, u_char *cipher)
+ {
+- des_cblock des_key;
+- des_key_schedule key_schedule;
++ DES_cblock des_key;
++ DES_key_schedule key_schedule;
+
+ MakeKey(key, des_key);
+- des_set_key(&des_key, key_schedule);
+- des_ecb_encrypt((des_cblock *)clear, (des_cblock *)cipher, key_schedule, 1);
++ DES_set_key(&des_key, &key_schedule);
++ DES_ecb_encrypt((DES_cblock *)clear, (DES_cblock *)cipher, &key_schedule, 1);
+ }
+
+ #define LENGTH 20
+--- a/src/ssl.c
++++ b/src/ssl.c
+@@ -35,11 +35,13 @@ openssl_env * initssl() {
+ if (openssl_init == 0) {
+ openssl_init = 1;
+ #ifdef HAVE_OPENSSL
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ if (_options.debug) {
+ SSL_load_error_strings();
+ }
+ SSL_library_init();
+ OpenSSL_add_all_algorithms();
++#endif
+ #else
+ matrixSslOpen();
+ syslog(LOG_DEBUG, "%s(%d): MatrixSslOpen()", __FUNCTION__, __LINE__);
+@@ -55,11 +57,13 @@ openssl_env * initssl_cli() {
+ if (openssl_init == 0) {
+ openssl_init = 1;
+ #ifdef HAVE_OPENSSL
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ if (_options.debug) {
+ SSL_load_error_strings();
+ }
+ SSL_library_init();
+ OpenSSL_add_all_algorithms();
++#endif
+ #else
+ matrixSslOpen();
+ syslog(LOG_DEBUG, "%s(%d): MatrixSslOpen()", __FUNCTION__, __LINE__);
+@@ -132,7 +136,7 @@ _openssl_env_init(openssl_env *env, char *engine, int server) {
+ if (_options.sslciphers) {
+ SSL_CTX_set_cipher_list(env->ctx, _options.sslciphers);
+ }
+-#ifdef HAVE_OPENSSL_ENGINE
++#ifndef OPENSSL_NO_ENGINE
+ if (engine) {
+ retry:
+ if ((env->engine = ENGINE_by_id(engine)) == NULL) {
+@@ -609,7 +613,7 @@ openssl_env_free(openssl_env *env) {
+ #endif
+ #ifdef HAVE_OPENSSL
+ if (env->ctx) SSL_CTX_free(env->ctx);
+-#ifdef HAVE_OPENSSL_ENGINE
++#ifndef OPENSSL_NO_ENGINE
+ if (env->engine) ENGINE_free(env->engine);
+ #endif
+ #endif
+--- a/src/ssl.h
++++ b/src/ssl.h
+@@ -41,6 +41,7 @@ typedef struct {
+ #include <openssl/ssl.h>
+ #include <openssl/pem.h>
+ #include <openssl/engine.h>
++#include <openssl/err.h>
+ #elif HAVE_CYASSL
+ #include <stdio.h>
+ #include <stdlib.h>
--- /dev/null
+--- a/configure.ac
++++ b/configure.ac
+@@ -397,7 +397,7 @@ AC_ARG_WITH([cyassl],
+ [AS_HELP_STRING([--with-cyassl], [enable support for cyassl])],[],[with_cyassl=no])
+
+ AS_IF([test x"$with_cyassl" != xno],
+- [AC_CHECK_LIB([cyassl], [CyaSSL_Init],
++ [AC_CHECK_LIB([cyassl], [wolfSSL_Init],
+ [AC_SUBST([LIBSSL], ["-lcyassl"])
+ AC_DEFINE([HAVE_CYASSL], [1],
+ [Define if you have cyassl])
+--- a/src/ippool.c
++++ b/src/ippool.c
+@@ -35,6 +35,7 @@ int ippool_print(int fd, struct ippool_t *this) {
+ char * sep = "-- %-15s ------------------------------------------------------------\n";
+
+ #define ERR 0
++#undef USED /* defined in <wolfssl/wolfcrypt/integer.h> */
+ #define USED 1
+ #define FREE 2
+ #define LIST 3
+--- a/src/md5.h
++++ b/src/md5.h
+@@ -35,7 +35,6 @@
+ #define MD5Update MD5_Update
+ #define MD5Final MD5_Final
+
+-typedef struct CYASSL_MD5_CTX MD5_CTX;
+ #else
+
+ struct MD5Context {
+--- a/src/ssl.c
++++ b/src/ssl.c
+@@ -131,7 +131,7 @@ _openssl_env_init(openssl_env *env, char *engine, int server) {
+ */
+ const long options = SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_COMPRESSION;
+ env->meth = SSLv23_method();
+- env->ctx = SSL_CTX_new(env->meth);
++ env->ctx = SSL_CTX_new((void *)env->meth);
+ SSL_CTX_set_options(env->ctx, options);
+ if (_options.sslciphers) {
+ SSL_CTX_set_cipher_list(env->ctx, _options.sslciphers);
+--- a/src/ssl.h
++++ b/src/ssl.h
+@@ -48,6 +48,8 @@ typedef struct {
+ #include <time.h>
+ #include <string.h>
+
++#define OPENSSL_NO_ENGINE
++#include <cyassl/options.h>
+ #include <cyassl/ssl.h>
+ #include <cyassl/openssl/bio.h>
+ #include <cyassl/openssl/crypto.h>
--- /dev/null
+--- a/src/redir.c
++++ b/src/redir.c
+@@ -3358,14 +3358,17 @@ int redir_main(struct redir_t *redir,
+ }
+
+ #define redir_memcopy(msgtype) \
++ do { \
+ redir_challenge(challenge); \
+ redir_chartohex(challenge, hexchal, REDIR_MD5LEN); \
+ msg.mtype = msgtype; \
+ memcpy(conn.s_state.redir.uamchal, challenge, REDIR_MD5LEN); \
+- if (_options.debug) syslog(LOG_DEBUG, "%s(%d): ---->>> resetting challenge: %s", __FUNCTION__, __LINE__, hexchal)
++ if (_options.debug) syslog(LOG_DEBUG, "%s(%d): ---->>> resetting challenge: %s", __FUNCTION__, __LINE__, hexchal); \
++ } while (0)
+
+ #ifdef USING_IPC_UNIX
+ #define redir_msg_send(msgopt) \
++ do { \
+ msg.mdata.opt = msgopt; \
+ memcpy(&msg.mdata.address, address, sizeof(msg.mdata.address)); \
+ memcpy(&msg.mdata.baddress, baddress, sizeof(msg.mdata.baddress)); \
+@@ -3375,9 +3378,11 @@ int redir_main(struct redir_t *redir,
+ syslog(LOG_ERR, "%s: write() failed! msgfd=%d type=%ld len=%d", \
+ strerror(errno), redir->msgfd, msg.mtype, (int)sizeof(msg.mdata)); \
+ return redir_main_exit(&socket, forked, rreq); \
+- }
++ } \
++ } while (0)
+ #else
+ #define redir_msg_send(msgopt) \
++ do { \
+ msg.mdata.opt = msgopt; \
+ memcpy(&msg.mdata.address, address, sizeof(msg.mdata.address)); \
+ memcpy(&msg.mdata.baddress, baddress, sizeof(msg.mdata.baddress)); \
+@@ -3387,7 +3392,8 @@ int redir_main(struct redir_t *redir,
+ syslog(LOG_ERR, "%s: msgsnd() failed! msgid=%d type=%ld len=%d", \
+ strerror(errno), redir->msgid, msg.mtype, (int)sizeof(msg.mdata)); \
+ return redir_main_exit(&socket, forked, rreq); \
+- }
++ } \
++ } while (0)
+ #endif
+
+ /*
PKG_VERSION:=2.7.8
# Release == build
# increase on changes of services files or tld_names.dat
-PKG_RELEASE:=9
+PKG_RELEASE:=10
PKG_LICENSE:=GPL-2.0
PKG_MAINTAINER:=
"ddo.jp" "http://free.ddo.jp/dnsupdate.php?dn=[DOMAIN]&pw=[PASSWORD]&ip=[IP]"
-"desec.io" "http://update.dedyn.io/?username=[USERNAME]&password=[PASSWORD]&hostname=[DOMAIN]&myipv4=[IP]" "good|nochg"
+"desec.io" "http://update.dedyn.io/update?username=[USERNAME]&password=[PASSWORD]&hostname=[DOMAIN]&myipv4=[IP]" "good|nochg"
"dhis.org" "http://[USERNAME]:[PASSWORD]@is.dhis.org/"
# "ddnss.de" "http://[USERNAME]:[PASSWORD]@ip6.ddnss.de/upd.php?host=[DOMAIN]&ip6=[IP]" "good|nochg"
"ddnss.de" "http://ip6.ddnss.de/upd.php?user=[USERNAME]&pwd=[PASSWORD]&host=[DOMAIN]&ip6=[IP]" "good|nochg"
-"desec.io" "http://update.dedyn.io/?username=[USERNAME]&password=[PASSWORD]&hostname=[DOMAIN]&myipv6=[IP]" "good|nochg"
+"desec.io" "http://update.dedyn.io/update?username=[USERNAME]&password=[PASSWORD]&hostname=[DOMAIN]&myipv6=[IP]" "good|nochg"
"dhis.org" "http://[USERNAME]:[PASSWORD]@is.dhis.org/"
include $(TOPDIR)/rules.mk
PKG_NAME:=dhcpcd
-PKG_VERSION:=7.0.8
+PKG_VERSION:=7.2.2
PKG_RELEASE:=1
PKG_SOURCE_URL:=ftp://roy.marples.name/pub/dhcpcd \
http://roy.marples.name/downloads/dhcpcd
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_HASH:=96968e883369ab4afd11eba9dfd9bb109f5dfff65b2814ce6c432f36362dc9b5
+PKG_HASH:=3db7ff18cba9274da1d2176fb3c7cbe23926a8e58d5c8e244ad55c62d38ba09e
PKG_LICENSE:=BSD-2c
PKG_LICENSE_FILES:=
PKG_MAINTAINER:=James Taylor <james@jtaylor.id.au>
PKG_LICENSE:=GPL-2.0-only
PKG_LICENSE_FILES:=COPYING
+PKG_CPE_ID:=cpe:/a:powerdns:dnsdist
PKG_INSTALL:=1
endef
define Package/dnsdist
- SECTION:=base
+ SECTION:=net
CATEGORY:=Network
+ SUBMENU:=IP Addresses and Names
TITLE:=dnsdist DNS-, DOS- and abuse-aware loadbalancer
DEPENDS:=+DNSDIST_OPENSSL:libopenssl +DNSDIST_GNUTLS:libgnutls +protobuf +re2 +libedit +libfstrm +libsodium +lua +boost +libnetsnmp +libatomic
URL:=https://dnsdist.org/
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=frp
+PKG_VERSION:=0.27.0
+PKG_RELEASE:=2
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/fatedier/frp/tar.gz/v${PKG_VERSION}?
+PKG_HASH:=5d2efd5d924c7a7f84a9f2838de6ab9b7d5ca070ab243edd404a5ca80237607c
+
+PKG_MAINTAINER:=Richard Yu <yurichard3839@gmail.com>
+PKG_LICENSE:=Apache-2.0
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_BUILD_DEPENDS:=golang/host
+PKG_BUILD_PARALLEL:=1
+PKG_USE_MIPS16:=0
+
+GO_PKG:=github.com/fatedier/frp
+GO_PKG_BUILD_PKG:=github.com/fatedier/frp/cmd/...
+
+include $(INCLUDE_DIR)/package.mk
+include ../../lang/golang/golang-package.mk
+
+define Package/frp/template
+ SECTION:=net
+ CATEGORY:=Network
+ SUBMENU:=Web Servers/Proxies
+ TITLE:=frp - fast reverse proxy
+ URL:=https://github.com/fatedier/frp
+ DEPENDS:=$(GO_ARCH_DEPENDS)
+endef
+
+define Package/frpc
+ $(call Package/frp/template)
+ TITLE+= (client)
+endef
+
+define Package/frps
+ $(call Package/frp/template)
+ TITLE+= (server)
+endef
+
+define Package/frp/description
+ frp is a fast reverse proxy to help you expose a local server behind
+ a NAT or firewall to the internet.
+endef
+Package/frpc/description = $(Package/frp/description)
+Package/frps/description = $(Package/frp/description)
+
+define Package/frp/install
+ $(call GoPackage/Package/Install/Bin,$(PKG_INSTALL_DIR))
+
+ $(INSTALL_DIR) $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/$(2) $(1)/usr/bin/
+ $(INSTALL_DIR) $(1)/etc/frp/$(2).d/
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/conf/$(2)_full.ini $(1)/etc/frp/$(2).d/
+ $(INSTALL_DIR) $(1)/etc/config/
+ $(INSTALL_CONF) ./files/$(2).config $(1)/etc/config/$(2)
+ $(INSTALL_DIR) $(1)/etc/init.d/
+ $(INSTALL_BIN) ./files/$(2).init $(1)/etc/init.d/$(2)
+endef
+
+define Package/frpc/install
+ $(call Package/frp/install,$(1),frpc)
+endef
+
+define Package/frps/install
+ $(call Package/frp/install,$(1),frps)
+endef
+
+$(eval $(call GoBinPackage,frpc))
+$(eval $(call BuildPackage,frpc))
+$(eval $(call GoBinPackage,frps))
+$(eval $(call BuildPackage,frps))
--- /dev/null
+config init
+ option stdout 1
+ option stderr 1
+ option user frpc
+ option group frpc
+ option respawn 1
+# OS environments pass to frp for config file template, see
+# https://github.com/fatedier/frp#configuration-file-template
+# list env 'ENV_NAME=value'
+# Config files include in temporary config file.
+# list conf_inc '/etc/frp/frps.d/frpc_full.ini'
+
+config conf 'common'
+ option server_addr 127.0.0.1
+ option server_port 7000
+# List options with name="_" will be directly appended to config file
+# list _ '# Key-A=Value-A'
+
+config conf 'ssh'
+ option type tcp
+ option local_ip 127.0.0.1
+ option local_port 22
+ option remote_port 6000
--- /dev/null
+#!/bin/sh /etc/rc.common
+
+START=99
+USE_PROCD=1
+
+NAME=frpc
+PROG=/usr/bin/$NAME
+
+_err() {
+ echo "$*" >&2
+ logger -p daemon.err -t "$NAME" "$*"
+}
+
+config_cb() {
+ [ $# -eq 0 ] && return
+
+ local type="$1"
+ local name="$2"
+ if [ "$type" = "conf" ]; then
+ echo "[$name]" >> "$conf_file"
+ option_cb() {
+ local option="$1"
+ local value="$2"
+ echo "$option = $value" >> "$conf_file"
+ }
+ list_cb() {
+ local name="$1"
+ local value="$2"
+ [ "$name" = "_" ] && echo "$value" >> "$conf_file"
+ }
+ else
+ [ "$type" = "init" ] && init_cfg="$name"
+ option_cb() { return 0; }
+ list_cb() { return 0; }
+ fi
+}
+
+start_service() {
+ local init_cfg=" "
+ local conf_file="/var/etc/$NAME.ini"
+
+ > "$conf_file"
+ config_load "$NAME"
+
+ local stdout stderr user group respawn env conf_inc
+ uci_validate_section "$NAME" init "$init_cfg" \
+ 'stdout:bool:1' \
+ 'stderr:bool:1' \
+ 'user:string' \
+ 'group:string' \
+ 'respawn:bool:1' \
+ 'env:list(string)' \
+ 'conf_inc:list(string)'
+
+ local err=$?
+ [ $err -ne 0 ] && {
+ _err "uci_validate_section returned $err"
+ return 1
+ }
+
+ [ -n "$conf_inc" ] && config_list_foreach "$init_cfg" conf_inc cat >> "$conf_file"
+
+ procd_open_instance
+ procd_set_param command "$PROG" -c "$conf_file"
+ procd_set_param stdout $stdout
+ procd_set_param stderr $stderr
+ [ -n "$user" ] && procd_set_param user "$user"
+ [ -n "$group" ] && procd_set_param group "$group"
+ [ $respawn -eq 1 ] && procd_set_param respawn
+ [ -n "$env" ] && config_list_foreach "$init_cfg" env "procd_append_param env"
+ procd_close_instance
+}
--- /dev/null
+config init
+ option stdout 1
+ option stderr 1
+ option user frps
+ option group frps
+ option respawn 1
+# OS environments pass to frp for config file template, see
+# https://github.com/fatedier/frp#configuration-file-template
+# list env 'ENV_NAME=value'
+# Config files include in temporary config file.
+# list conf_inc '/etc/frp/frps.d/frps_full.ini'
+
+config conf 'common'
+ option bind_port 7000
+# List options with name="_" will be directly appended to config file
+# list _ '# Key-A=Value-A'
--- /dev/null
+#!/bin/sh /etc/rc.common
+
+START=99
+USE_PROCD=1
+
+NAME=frps
+PROG=/usr/bin/$NAME
+
+_err() {
+ echo "$*" >&2
+ logger -p daemon.err -t "$NAME" "$*"
+}
+
+config_cb() {
+ [ $# -eq 0 ] && return
+
+ local type="$1"
+ local name="$2"
+ if [ "$type" = "conf" ]; then
+ echo "[$name]" >> "$conf_file"
+ option_cb() {
+ local option="$1"
+ local value="$2"
+ echo "$option = $value" >> "$conf_file"
+ }
+ list_cb() {
+ local name="$1"
+ local value="$2"
+ [ "$name" = "_" ] && echo "$value" >> "$conf_file"
+ }
+ else
+ [ "$type" = "init" ] && init_cfg="$name"
+ option_cb() { return 0; }
+ list_cb() { return 0; }
+ fi
+}
+
+start_service() {
+ local init_cfg=" "
+ local conf_file="/var/etc/$NAME.ini"
+
+ > "$conf_file"
+ config_load "$NAME"
+
+ local stdout stderr user group respawn env conf_inc
+ uci_validate_section "$NAME" init "$init_cfg" \
+ 'stdout:bool:1' \
+ 'stderr:bool:1' \
+ 'user:string' \
+ 'group:string' \
+ 'respawn:bool:1' \
+ 'env:list(string)' \
+ 'conf_inc:list(string)'
+
+ local err=$?
+ [ $err -ne 0 ] && {
+ _err "uci_validate_section returned $err"
+ return 1
+ }
+
+ [ -n "$conf_inc" ] && config_list_foreach "$init_cfg" conf_inc cat >> "$conf_file"
+
+ procd_open_instance
+ procd_set_param command "$PROG" -c "$conf_file"
+ procd_set_param stdout $stdout
+ procd_set_param stderr $stderr
+ [ -n "$user" ] && procd_set_param user "$user"
+ [ -n "$group" ] && procd_set_param group "$group"
+ [ $respawn -eq 1 ] && procd_set_param respawn
+ [ -n "$env" ] && config_list_foreach "$init_cfg" env "procd_append_param env"
+ procd_close_instance
+}
include $(TOPDIR)/rules.mk
PKG_NAME:=git
-PKG_VERSION:=2.21.0
+PKG_VERSION:=2.22.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/software/scm/git/
-PKG_HASH:=8ccb1ce743ee991d91697e163c47c11be4bf81efbdd9fb0b4a7ad77cc0020d28
+PKG_HASH:=159e4b599f8af4612e70b666600a3139541f8bacc18124daf2cbe8d1b934f29f
PKG_INSTALL:=1
PKG_FIXUP:=autoreconf
PKG_SOURCE_VERSION:=81939cb93670efcee8e99884d10d2676b02edba9
PKG_SOURCE_DATE:=20190228
PKG_MIRROR_HASH:=64a0fb7ad6a515559360de71df85dde152f55a60585668f15114bc1f55cf2742
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE_URL:=https://gnunet.org/git/gnunet-secushare.git
PKG_SOURCE_PROTO:=git
PKG_LICENSE:=GPL-3.0
define Package/gnunet-secushare-mysql/install
$(INSTALL_DIR) $(1)/usr/lib/gnunet
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/gnunet/libgnunet_plugin_psycstore_mysql.so* $(1)/usr/lib/gnunet/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/gnunet/libgnunet_plugin_psycstore_mysql.so* $(1)/usr/lib/gnunet/
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) ./files/gnunet-secushare-mysql.defaults $(1)/etc/uci-defaults/gnunet-secushare-mysql
endef
define Package/gnunet-secushare-pgsql/install
$(INSTALL_DIR) $(1)/usr/lib/gnunet
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/gnunet/libgnunet_plugin_psycstore_postgres.so* $(1)/usr/lib/gnunet/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/gnunet/libgnunet_plugin_psycstore_postgres.so* $(1)/usr/lib/gnunet/
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) ./files/gnunet-secushare-pgsql.defaults $(1)/etc/uci-defaults/gnunet-secushare-pgsql
endef
define Package/gnunet-secushare-sqlite/install
$(INSTALL_DIR) $(1)/usr/lib/gnunet
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/gnunet/libgnunet_plugin_psycstore_sqlite.so* $(1)/usr/lib/gnunet/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/gnunet/libgnunet_plugin_psycstore_sqlite.so* $(1)/usr/lib/gnunet/
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) ./files/gnunet-secushare-sqlite.defaults $(1)/etc/uci-defaults/gnunet-secushare-sqlite
endef
PKG_NAME:=gnunet
-PKG_VERSION:=0.11.4
-PKG_RELEASE:=1
+PKG_VERSION:=0.11.5
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@GNU/gnunet
-PKG_HASH:=7afeb638bd8b5a33c6b8dab24b90c5d7467439adc79794ff33218e9180f8b01b
+PKG_HASH:=98e0355ff0627bf88112b3b92a7522e98c0ae6071fc45efda5a33daed28199b3
PKG_LICENSE:=AGPL-3.0
PKG_LICENSE_FILES:=COPYING
( if [ "$(PLUGIN_$(1))" ]; then \
$(INSTALL_DIR) $$(1)/usr/lib/gnunet ; \
for plug in $(PLUGIN_$(1)); do \
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/gnunet/libgnunet_plugin_$$$$$$$$plug*.so $$(1)/usr/lib/gnunet ; \
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/gnunet/libgnunet_plugin_$$$$$$$$plug*.so $$(1)/usr/lib/gnunet ; \
done \
fi )
done )
( for plug in ats_proportional ats2_simple block_dht block_regex block_revocation transport_unix; do \
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/gnunet/libgnunet_plugin_$$$$plug*.so $(1)/usr/lib/gnunet ; \
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/gnunet/libgnunet_plugin_$$$$plug*.so $(1)/usr/lib/gnunet ; \
done )
( for lex in daemon-topology helper-nat-client \
include $(TOPDIR)/rules.mk
PKG_NAME:=gnurl
-PKG_VERSION:=7.64.1
+PKG_VERSION:=7.65.1
PKG_RELEASE:=1
PKG_SOURCE_URL:=https://ftp.gnu.org/gnu/gnunet
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=8ea67d505e2576f00d8a09485e6c04396af75388c17d77087a140f05e0ca2a96
+PKG_HASH:=37bb87993f9219f4c76195031f1b0311afde157a1b852d54f570e3195ad7af01
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=COPYING
include $(TOPDIR)/rules.mk
PKG_NAME:=haproxy
-PKG_VERSION:=1.8.20
-PKG_RELEASE:=1
-
-PKG_SOURCE:=haproxy-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://www.haproxy.org/download/1.8/src/
-PKG_HASH:=3228f78d5fe1dfbaccf41bf387e36b08eeef6e16330053cafde5fa303e262b16
+PKG_VERSION:=2.0.0
+PKG_RELEASE:=3
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://www.haproxy.org/download/2.0/src
+PKG_HASH:=fe0a0d69e1091066a91b8d39199c19af8748e0e872961c6fc43c91ec7a28ff20
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_LICENSE:=GPL-2.0
-MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>, \
+
+PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>, \
Christian Lachner <gladiac@gmail.com>
+PKG_LICENSE:=GPL-2.0-only
+PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk
ENABLE_REGPARM:=n
ifeq ($(CONFIG_TARGET_x86),y)
- ENABLE_REGPARM:=y
+ ENABLE_REGPARM:=y
endif
-LINUX_TARGET:=linux2628
+ifeq ($(CONFIG_USE_UCLIBC),y)
+ LINUX_TARGET:=linux-uclibc
+else
+ LINUX_TARGET:=linux-glibc
+endif
ifeq ($(BUILD_VARIANT),ssl)
ADDON+=USE_OPENSSL=1
CC="$(TARGET_CC)" \
PCREDIR="$(STAGING_DIR)/usr/" \
SMALL_OPTS="-DBUFSIZE=16384 -DMAXREWRITE=1030 -DSYSTEM_MAXCONN=165530" \
- USE_LINUX_TPROXY=1 USE_LINUX_SPLICE=1 USE_TFO=1 \
- USE_ZLIB=yes USE_PCRE=1 USE_PCRE_JIT=1 USE_GETADDRINFO=1 \
+ USE_LINUX_TPROXY=1 USE_LINUX_SPLICE=1 USE_TFO=1 USE_NS=1 \
+ USE_ZLIB=1 USE_PCRE=1 USE_PCRE_JIT=1 USE_GETADDRINFO=1 \
+ USE_THREAD=1 USE_PTHREAD_PSHARED=1 \
VERSION="$(PKG_VERSION)" SUBVERS="-$(PKG_RELEASE)" \
VERDATE="$(shell date -d @$(SOURCE_DATE_EPOCH) '+%Y/%m/%d')" IGNOREGIT=1 \
$(ADDON) \
- CFLAGS="$(TARGET_CFLAGS)" \
+ CFLAGS="$(TARGET_CFLAGS) -fno-strict-aliasing -Wdeclaration-after-statement -fwrapv -Wno-format-truncation -Wno-unused-label -Wno-sign-compare -Wno-unused-parameter -Wno-old-style-declaration -Wno-ignored-qualifiers -Wno-clobbered -Wno-missing-field-initializers -Wno-implicit-fallthrough -Wno-stringop-overflow -Wno-cast-function-type -Wtype-limits -Wshift-negative-value -Wshift-overflow=2 -Wduplicated-cond -Wnull-dereference" \
LD="$(TARGET_CC)" \
- LDFLAGS="$(TARGET_LDFLAGS) -latomic"
+ LDFLAGS="$(TARGET_LDFLAGS) -latomic" \
+ EXTRA_OBJS="contrib/prometheus-exporter/service-prometheus.o"
$(MAKE_VARS) $(MAKE) -C $(PKG_BUILD_DIR) \
DESTDIR="$(PKG_INSTALL_DIR)" \
$(MAKE_VARS) $(MAKE) -C $(PKG_BUILD_DIR)/contrib/halog \
DESTDIR="$(PKG_INSTALL_DIR)" \
$(MAKE_FLAGS) \
+ OPTIMIZE="$(TARGET_CFLAGS)" \
ADDLIB="-lcrypto" \
halog
endef
-# Example configuration file for HAProxy 1.3, refer to the url below for
+# Example configuration file for HAProxy 2.0, refer to the url below for
# a full documentation and examples for configuration:
-# http://haproxy.1wt.eu/download/1.3/doc/configuration.txt
+# https://cbonte.github.io/haproxy-dconv/2.0/configuration.html
# Global parameters
# limits like number of open file descriptors. Default is 1.
#nbproc 2
+# Default parameters
+defaults
+ # Default timeouts
+ timeout connect 5000ms
+ timeout client 50000ms
+ timeout server 50000ms
+
# Example HTTP proxy listener
listen my_http_proxy
# Round robin load balancing over two servers on port 123 forcing
# the address 192.168.1.1 and port 25 as source.
balance roundrobin
- #use next line for transparent proxy, so the servers can see the
- #original ip-address and remove source keyword in server definition
- #source 0.0.0.0 usesrc clientip
+ #use next line for transparent proxy, so the servers can see the
+ #original ip-address and remove source keyword in server definition
+ #source 0.0.0.0 usesrc clientip
server server01 192.168.1.10:123 source 192.168.1.1:25
server server02 192.168.1.20:123 source 192.168.1.1:25
#!/bin/sh
if [ "$ACTION" = add ]; then
-
/etc/init.d/haproxy enabled && \
/etc/init.d/haproxy start
fi
STOP=80
SERVICE_USE_PID=1
+EXTRA_COMMANDS="check"
HAPROXY_BIN="/usr/sbin/haproxy"
HAPROXY_CONFIG="/etc/haproxy.cfg"
}
reload() {
- $HAPROXY_BIN -D -q -f $HAPROXY_CONFIG -p $HAPROXY_PID -sf $(cat $HAPROXY_PID | tr "\n" " ")
- #$HAPROXY_BIN -D -q -f $HAPROXY_CONFIG -p $HAPROXY_PID -sf $(cat $HAPROXY_PID)
+ $HAPROXY_BIN -D -q -f $HAPROXY_CONFIG -p $HAPROXY_PID -sf $(cat $HAPROXY_PID)
+}
+
+check() {
+ $HAPROXY_BIN -c -q -V -f $HAPROXY_CONFIG
}
#!/bin/bash
-CLONEURL=http://git.haproxy.org/git/haproxy-1.8.git
-BASE_TAG=v1.8.20
+CLONEURL=http://git.haproxy.org/git/haproxy-2.0.git
+BASE_TAG=v2.0.0
TMP_REPODIR=tmprepo
PATCHESDIR=patches
--- /dev/null
+commit 032cff38c24d8359dc575423a94d19b6ad8bf848
+Author: Christopher Faulet <cfaulet@haproxy.com>
+Date: Mon Jun 17 11:44:47 2019 +0200
+
+ BUG/MEDIUM: h2/htx: Update data length of the HTX when the cookie list is built
+
+ When an H2 request is converted into an HTX message, All cookie headers are
+ grouped into one, each value separated by a semicolon (;). To do so, we add the
+ header "cookie" with the first value and then we update the value by appending
+ other cookies. But during this operation, only the size of the HTX block is
+ updated. And not the data length of the whole HTX message.
+
+ It is an old bug and it seems to work by chance till now. But it may lead to
+ undefined behaviour by time to time.
+
+ This patch must be backported to 2.0 and 1.9
+
+ (cherry picked from commit 0c6de00d7c842a682bba7586ef34fb10f69ec63c)
+ Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
+
+diff --git a/src/h2.c b/src/h2.c
+index 9681aca5..32c1ef16 100644
+--- a/src/h2.c
++++ b/src/h2.c
+@@ -737,6 +737,7 @@ int h2_make_htx_request(struct http_hdr *list, struct htx *htx, unsigned int *ms
+ goto fail;
+
+ htx_set_blk_value_len(blk, tl);
++ htx->data += vl+2;
+ *(char *)(htx_get_blk_ptr(htx, blk) + bs + 0) = ';';
+ *(char *)(htx_get_blk_ptr(htx, blk) + bs + 1) = ' ';
+ memcpy(htx_get_blk_ptr(htx, blk) + bs + 2, list[ck].v.ptr, vl);
+++ /dev/null
-commit cf2f1243373be97249567ffd259e975cc87068b8
-Author: Christopher Faulet <cfaulet@haproxy.com>
-Date: Mon Apr 29 13:12:02 2019 +0200
-
- BUG/MINOR: http: Call stream_inc_be_http_req_ctr() only one time per request
-
- The function stream_inc_be_http_req_ctr() is called at the beginning of the
- analysers AN_REQ_HTTP_PROCESS_FE/BE. It as an effect only on the backend. But we
- must be careful to call it only once. If the processing of HTTP rules is
- interrupted in the middle, when the analyser is resumed, we must not call it
- again. Otherwise, the tracked counters of the backend are incremented several
- times.
-
- This bug was reported in github. See issue #74.
-
- This fix should be backported as far as 1.6.
-
- (cherry picked from commit 1907ccc2f75b78ace1ee4acdfc60d48a76e3decd)
- Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
- (cherry picked from commit 319921866ea9ecc46215fea5679abc8efdfcbea5)
- [cf: HTX part was removed]
- Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
-
-diff --git a/src/proto_http.c b/src/proto_http.c
-index ccacd6a4..556cabad 100644
---- a/src/proto_http.c
-+++ b/src/proto_http.c
-@@ -3420,8 +3420,10 @@ int http_process_req_common(struct stream *s, struct channel *req, int an_bit, s
- req->buf->i,
- req->analysers);
-
-- /* just in case we have some per-backend tracking */
-- stream_inc_be_http_req_ctr(s);
-+ /* just in case we have some per-backend tracking. Only called the first
-+ * execution of the analyser. */
-+ if (!s->current_rule || s->current_rule_list != &px->http_req_rules)
-+ stream_inc_be_http_req_ctr(s);
-
- /* evaluate http-request rules */
- if (!LIST_ISEMPTY(&px->http_req_rules)) {
+++ /dev/null
-commit c1620a52a3def02b4837376385c416c03ca874c4
-Author: Kevin Zhu <ipandtcp@gmail.com>
-Date: Fri Apr 26 14:00:01 2019 +0800
-
- BUG/MEDIUM: spoe: arg len encoded in previous frag frame but len changed
-
- Fragmented arg will do fetch at every encode time, each fetch may get
- different result if SMP_F_MAY_CHANGE, for example res.payload, but
- the length already encoded in first fragment of the frame, that will
- cause SPOA decode failed and waste resources.
-
- This patch must be backported to 1.9 and 1.8.
-
- (cherry picked from commit f7f54280c8106e92a55243f5d60f8587e79602d1)
- Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
- (cherry picked from commit 3a838e526cdbc00ded5362e66f1ef3a441abc3c1)
- Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
-
-diff --git a/include/proto/spoe.h b/include/proto/spoe.h
-index 002cf7d7..2cdca10b 100644
---- a/include/proto/spoe.h
-+++ b/include/proto/spoe.h
-@@ -121,7 +121,7 @@ spoe_decode_buffer(char **buf, char *end, char **str, uint64_t *len)
- * many bytes has been encoded. If <*off> is zero at the end, it means that all
- * data has been encoded. */
- static inline int
--spoe_encode_data(struct sample *smp, unsigned int *off, char **buf, char *end)
-+spoe_encode_data(unsigned int *len, struct sample *smp, unsigned int *off, char **buf, char *end)
- {
- char *p = *buf;
- int ret;
-@@ -183,15 +183,16 @@ spoe_encode_data(struct sample *smp, unsigned int *off, char **buf, char *end)
- ret = spoe_encode_frag_buffer(chk->str, chk->len, &p, end);
- if (ret == -1)
- return -1;
-+ *len = chk->len;
- }
- else {
- /* The sample has been fragmented, encode remaining data */
-- ret = MIN(chk->len - *off, end - p);
-+ ret = MIN(*len - *off, end - p);
- memcpy(p, chk->str + *off, ret);
- p += ret;
- }
- /* Now update <*off> */
-- if (ret + *off != chk->len)
-+ if (ret + *off != *len)
- *off += ret;
- else
- *off = 0;
-diff --git a/include/types/spoe.h b/include/types/spoe.h
-index 53e7200c..cfaa42f8 100644
---- a/include/types/spoe.h
-+++ b/include/types/spoe.h
-@@ -304,6 +304,7 @@ struct spoe_context {
- struct spoe_message *curmsg; /* SPOE message from which to resume encoding */
- struct spoe_arg *curarg; /* SPOE arg in <curmsg> from which to resume encoding */
- unsigned int curoff; /* offset in <curarg> from which to resume encoding */
-+ unsigned int curlen; /* length of <curarg> need to be encode, for SMP_F_MAY_CHANGE data */
- unsigned int flags; /* SPOE_FRM_FL_* */
- } frag_ctx; /* Info about fragmented frames, valid on if SPOE_CTX_FL_FRAGMENTED is set */
- };
-diff --git a/src/flt_spoe.c b/src/flt_spoe.c
-index f6109778..0c0b3794 100644
---- a/src/flt_spoe.c
-+++ b/src/flt_spoe.c
-@@ -2172,6 +2172,7 @@ spoe_encode_message(struct stream *s, struct spoe_context *ctx,
- list_for_each_entry(arg, &msg->args, list) {
- ctx->frag_ctx.curarg = arg;
- ctx->frag_ctx.curoff = UINT_MAX;
-+ ctx->frag_ctx.curlen = 0;
-
- encode_argument:
- if (ctx->frag_ctx.curoff != UINT_MAX)
-@@ -2186,7 +2187,7 @@ spoe_encode_message(struct stream *s, struct spoe_context *ctx,
-
- /* Fetch the arguement value */
- smp = sample_process(s->be, s->sess, s, dir|SMP_OPT_FINAL, arg->expr, NULL);
-- ret = spoe_encode_data(smp, &ctx->frag_ctx.curoff, buf, end);
-+ ret = spoe_encode_data(&ctx->frag_ctx.curlen, smp, &ctx->frag_ctx.curoff, buf, end);
- if (ret == -1 || ctx->frag_ctx.curoff)
- goto too_big;
- }
--- /dev/null
+commit 5a8549e68225070d0b79cbbb9c5f791e103685e7
+Author: Christopher Faulet <cfaulet@haproxy.com>
+Date: Mon Jun 17 13:36:06 2019 +0200
+
+ BUG/MINOR: lua/htx: Make txn.req_req_* and txn.res_rep_* HTX aware
+
+ These bindings were not updated to support HTX streams.
+
+ This patch must be backported to 2.0 and 1.9. It fixes the issue #124.
+
+ (cherry picked from commit ea418748dd22331e9798cfd8f5e25b436cd577e3)
+ Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
+
+diff --git a/src/hlua.c b/src/hlua.c
+index 28abd083..32f0e8db 100644
+--- a/src/hlua.c
++++ b/src/hlua.c
+@@ -5375,7 +5375,13 @@ __LJMP static inline int hlua_http_rep_hdr(lua_State *L, struct hlua_txn *htxn,
+ if (!(re = regex_comp(reg, 1, 1, NULL)))
+ WILL_LJMP(luaL_argerror(L, 3, "invalid regex"));
+
+- http_transform_header_str(htxn->s, msg, name, name_len, value, re, action);
++ if (IS_HTX_STRM(htxn->s)) {
++ struct htx *htx = htxbuf(&msg->chn->buf);
++
++ htx_transform_header_str(htxn->s, msg->chn, htx, ist2(name, name_len), value, re, action);
++ }
++ else
++ http_transform_header_str(htxn->s, msg, name, name_len, value, re, action);
+ regex_free(re);
+ return 0;
+ }
--- /dev/null
+commit 661bfc3d0e1b7756db59d00d86e316f694cae3c6
+Author: Christopher Faulet <cfaulet@haproxy.com>
+Date: Mon Jun 17 14:07:46 2019 +0200
+
+ BUG/MINOR: mux-h1: Add the header connection in lower case in outgoing messages
+
+ When necessary, this header is directly added in outgoing messages by the H1
+ multiplexer. Because there is no HTX conversion first, the header name is not
+ converserted to its lower case version. So, it must be added in lower case by
+ the multiplexer.
+
+ This patch must be backported to 2.0 and 1.9.
+
+ (cherry picked from commit a110ecbd843e156dd01c6ac581c735be5e240d5b)
+ Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
+
+diff --git a/src/mux_h1.c b/src/mux_h1.c
+index 317f1a55..21deb354 100644
+--- a/src/mux_h1.c
++++ b/src/mux_h1.c
+@@ -1642,7 +1642,7 @@ static size_t h1_process_output(struct h1c *h1c, struct buffer *buf, size_t coun
+ /* There is no "Connection:" header and
+ * it the conn_mode must be
+ * processed. So do it */
+- n = ist("Connection");
++ n = ist("connection");
+ v = ist("");
+ h1_process_output_conn_mode(h1s, h1m, &v);
+ if (v.len) {
+++ /dev/null
-commit 72fdff1fdb5b82685dc3d2db23ece042195a0cbd
-Author: Christopher Faulet <cfaulet@haproxy.com>
-Date: Fri Apr 26 14:30:15 2019 +0200
-
- MINOR: spoe: Use the sample context to pass frag_ctx info during encoding
-
- This simplifies the API and hide the details in the sample. This way, only
- string and binary are aware of these info, because other types cannot be
- partially encoded.
-
- This patch may be backported to 1.9 and 1.8.
-
- (cherry picked from commit 85db3212b87b33f1a39a688546f4f53a5c4ba4da)
- Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
- (cherry picked from commit b93366e3ee44f5de93f01569fcdcd602f6d0703f)
- Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
-
-diff --git a/include/proto/spoe.h b/include/proto/spoe.h
-index 2cdca10b..cce13e50 100644
---- a/include/proto/spoe.h
-+++ b/include/proto/spoe.h
-@@ -117,11 +117,9 @@ spoe_decode_buffer(char **buf, char *end, char **str, uint64_t *len)
- *
- * If the value is too big to be encoded, depending on its type, then encoding
- * failed or the value is partially encoded. Only strings and binaries can be
-- * partially encoded. In this case, the offset <*off> is updated to known how
-- * many bytes has been encoded. If <*off> is zero at the end, it means that all
-- * data has been encoded. */
-+ * partially encoded. */
- static inline int
--spoe_encode_data(unsigned int *len, struct sample *smp, unsigned int *off, char **buf, char *end)
-+spoe_encode_data(struct sample *smp, char **buf, char *end)
- {
- char *p = *buf;
- int ret;
-@@ -164,12 +162,16 @@ spoe_encode_data(unsigned int *len, struct sample *smp, unsigned int *off, char
-
- case SMP_T_STR:
- case SMP_T_BIN: {
-+ /* If defined, get length and offset of the sample by reading the sample
-+ * context. ctx.a[0] is the pointer to the length and ctx.a[1] is the
-+ * pointer to the offset. If the offset is greater than 0, it means the
-+ * sample is partially encoded. In this case, we only need to encode the
-+ * reamining. When all the sample is encoded, the offset is reset to 0.
-+ * So the caller know it can try to encode the next sample. */
- struct chunk *chk = &smp->data.u.str;
-+ unsigned int *len = (smp->ctx.a[0] ? smp->ctx.a[0] : 0);
-+ unsigned int *off = (smp->ctx.a[1] ? smp->ctx.a[1] : 0);
-
-- /* Here, we need to know if the sample has already been
-- * partially encoded. If yes, we only need to encode the
-- * remaining, <*off> reprensenting the number of bytes
-- * already encoded. */
- if (!*off) {
- /* First evaluation of the sample : encode the
- * type (string or binary), the buffer length
-diff --git a/src/flt_spoe.c b/src/flt_spoe.c
-index 0c0b3794..66d8b045 100644
---- a/src/flt_spoe.c
-+++ b/src/flt_spoe.c
-@@ -2187,7 +2187,9 @@ spoe_encode_message(struct stream *s, struct spoe_context *ctx,
-
- /* Fetch the arguement value */
- smp = sample_process(s->be, s->sess, s, dir|SMP_OPT_FINAL, arg->expr, NULL);
-- ret = spoe_encode_data(&ctx->frag_ctx.curlen, smp, &ctx->frag_ctx.curoff, buf, end);
-+ smp->ctx.a[0] = &ctx->frag_ctx.curlen;
-+ smp->ctx.a[1] = &ctx->frag_ctx.curoff;
-+ ret = spoe_encode_data(smp, buf, end);
- if (ret == -1 || ctx->frag_ctx.curoff)
- goto too_big;
- }
--- /dev/null
+commit eaf650083924a697cde3379703984c5e7a5ebd41
+Author: Tim Duesterhus <tim@bastelstu.be>
+Date: Mon Jun 17 16:10:07 2019 +0200
+
+ BUG/MEDIUM: compression: Set Vary: Accept-Encoding for compressed responses
+
+ Make HAProxy set the `Vary: Accept-Encoding` response header if it compressed
+ the server response.
+
+ Technically the `Vary` header SHOULD also be set for responses that would
+ normally be compressed based off the current configuration, but are not due
+ to a missing or invalid `Accept-Encoding` request header or due to the
+ maximum compression rate being exceeded.
+
+ Not setting the header in these cases does no real harm, though: An
+ uncompressed response might be returned by a Cache, even if a compressed
+ one could be retrieved from HAProxy. This increases the traffic to the end
+ user if the cache is unable to compress itself, but it saves another
+ roundtrip to HAProxy.
+
+ see the discussion on the mailing list: https://www.mail-archive.com/haproxy@formilux.org/msg34221.html
+ Message-ID: 20190617121708.GA2964@1wt.eu
+
+ A small issue remains: The User-Agent is not added to the `Vary` header,
+ despite being relevant to the response. Adding the User-Agent header would
+ make responses effectively uncacheable and it's unlikely to see a Mozilla/4
+ in the wild in 2019.
+
+ Add a reg-test to ensure the behaviour as described in this commit message.
+
+ see issue #121
+ Should be backported to all branches with compression (i.e. 1.6+).
+
+ (cherry picked from commit 721d686bd10dc6993859f9026ad907753d1d2064)
+ Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
+
+diff --git a/reg-tests/compression/vary.vtc b/reg-tests/compression/vary.vtc
+new file mode 100644
+index 00000000..0a060e4b
+--- /dev/null
++++ b/reg-tests/compression/vary.vtc
+@@ -0,0 +1,187 @@
++varnishtest "Compression sets Vary header"
++
++#REQUIRE_VERSION=1.9
++#REQUIRE_OPTION=ZLIB|SLZ
++
++feature ignore_unknown_macro
++
++server s1 {
++ rxreq
++ expect req.url == "/plain/accept-encoding-gzip"
++ expect req.http.accept-encoding == "gzip"
++ txresp \
++ -hdr "Content-Type: text/plain" \
++ -bodylen 100
++
++ rxreq
++ expect req.url == "/plain/accept-encoding-invalid"
++ expect req.http.accept-encoding == "invalid"
++ txresp \
++ -hdr "Content-Type: text/plain" \
++ -bodylen 100
++
++ rxreq
++ expect req.url == "/plain/accept-encoding-null"
++ expect req.http.accept-encoding == "<undef>"
++ txresp \
++ -hdr "Content-Type: text/plain" \
++ -bodylen 100
++
++ rxreq
++ expect req.url == "/html/accept-encoding-gzip"
++ expect req.http.accept-encoding == "gzip"
++ txresp \
++ -hdr "Content-Type: text/html" \
++ -bodylen 100
++
++ rxreq
++ expect req.url == "/html/accept-encoding-invalid"
++ expect req.http.accept-encoding == "invalid"
++ txresp \
++ -hdr "Content-Type: text/html" \
++ -bodylen 100
++
++
++ rxreq
++ expect req.url == "/html/accept-encoding-null"
++ expect req.http.accept-encoding == "<undef>"
++ txresp \
++ -hdr "Content-Type: text/html" \
++ -bodylen 100
++
++ rxreq
++ expect req.url == "/dup-etag/accept-encoding-gzip"
++ expect req.http.accept-encoding == "gzip"
++ txresp \
++ -hdr "Content-Type: text/plain" \
++ -hdr "ETag: \"123\"" \
++ -hdr "ETag: \"123\"" \
++ -bodylen 100
++} -repeat 2 -start
++
++
++haproxy h1 -conf {
++ defaults
++ mode http
++ ${no-htx} option http-use-htx
++ timeout connect 1s
++ timeout client 1s
++ timeout server 1s
++
++ frontend fe-gzip
++ bind "fd@${fe_gzip}"
++ default_backend be-gzip
++
++ backend be-gzip
++ compression algo gzip
++ compression type text/plain
++ server www ${s1_addr}:${s1_port}
++
++ frontend fe-nothing
++ bind "fd@${fe_nothing}"
++ default_backend be-nothing
++
++ backend be-nothing
++ server www ${s1_addr}:${s1_port}
++} -start
++
++client c1 -connect ${h1_fe_gzip_sock} {
++ txreq -url "/plain/accept-encoding-gzip" \
++ -hdr "Accept-Encoding: gzip"
++ rxresp
++ expect resp.status == 200
++ expect resp.http.content-encoding == "gzip"
++ expect resp.http.vary == "Accept-Encoding"
++ gunzip
++ expect resp.bodylen == 100
++
++ txreq -url "/plain/accept-encoding-invalid" \
++ -hdr "Accept-Encoding: invalid"
++ rxresp
++ expect resp.status == 200
++ expect resp.http.vary == "<undef>"
++ expect resp.bodylen == 100
++
++ txreq -url "/plain/accept-encoding-null"
++ rxresp
++ expect resp.status == 200
++ expect resp.http.vary == "<undef>"
++ expect resp.bodylen == 100
++
++ txreq -url "/html/accept-encoding-gzip" \
++ -hdr "Accept-Encoding: gzip"
++ rxresp
++ expect resp.status == 200
++ expect resp.http.vary == "<undef>"
++ expect resp.bodylen == 100
++
++ txreq -url "/html/accept-encoding-invalid" \
++ -hdr "Accept-Encoding: invalid"
++ rxresp
++ expect resp.status == 200
++ expect resp.http.vary == "<undef>"
++ expect resp.bodylen == 100
++
++ txreq -url "/html/accept-encoding-null"
++ rxresp
++ expect resp.status == 200
++ expect resp.http.vary == "<undef>"
++ expect resp.bodylen == 100
++
++ txreq -url "/dup-etag/accept-encoding-gzip" \
++ -hdr "Accept-Encoding: gzip"
++ rxresp
++ expect resp.status == 200
++ expect resp.http.vary == "<undef>"
++ expect resp.bodylen == 100
++} -run
++
++# This Client duplicates c1, against the "nothing" frontend, ensuring no Vary header is ever set.
++client c2 -connect ${h1_fe_nothing_sock} {
++ txreq -url "/plain/accept-encoding-gzip" \
++ -hdr "Accept-Encoding: gzip"
++ rxresp
++ expect resp.status == 200
++ expect resp.http.vary == "<undef>"
++ expect resp.bodylen == 100
++
++ txreq -url "/plain/accept-encoding-invalid" \
++ -hdr "Accept-Encoding: invalid"
++ rxresp
++ expect resp.status == 200
++ expect resp.http.vary == "<undef>"
++ expect resp.bodylen == 100
++
++ txreq -url "/plain/accept-encoding-null"
++ rxresp
++ expect resp.status == 200
++ expect resp.http.vary == "<undef>"
++ expect resp.bodylen == 100
++
++ txreq -url "/html/accept-encoding-gzip" \
++ -hdr "Accept-Encoding: gzip"
++ rxresp
++ expect resp.status == 200
++ expect resp.http.vary == "<undef>"
++ expect resp.bodylen == 100
++
++ txreq -url "/html/accept-encoding-invalid" \
++ -hdr "Accept-Encoding: invalid"
++ rxresp
++ expect resp.status == 200
++ expect resp.http.vary == "<undef>"
++ expect resp.bodylen == 100
++
++ txreq -url "/html/accept-encoding-null"
++ rxresp
++ expect resp.status == 200
++ expect resp.http.vary == "<undef>"
++ expect resp.bodylen == 100
++
++ txreq -url "/dup-etag/accept-encoding-gzip" \
++ -hdr "Accept-Encoding: gzip"
++ rxresp
++ expect resp.status == 200
++ expect resp.http.vary == "<undef>"
++ expect resp.bodylen == 100
++} -run
+diff --git a/src/flt_http_comp.c b/src/flt_http_comp.c
+index b04dcd14..37f237fe 100644
+--- a/src/flt_http_comp.c
++++ b/src/flt_http_comp.c
+@@ -523,6 +523,9 @@ http_set_comp_reshdr(struct comp_state *st, struct stream *s, struct http_msg *m
+ }
+ }
+
++ if (http_header_add_tail2(msg, &txn->hdr_idx, "Vary: Accept-Encoding", 21) < 0)
++ goto error;
++
+ return 1;
+
+ error:
+@@ -577,6 +580,9 @@ htx_set_comp_reshdr(struct comp_state *st, struct stream *s, struct http_msg *ms
+ }
+ }
+
++ if (!http_add_header(htx, ist("Vary"), ist("Accept-Encoding")))
++ goto error;
++
+ return 1;
+
+ error:
+++ /dev/null
-commit dfc3718f0a302ea3deb5f1a325d35fce0e4cfa48
-Author: Yann Cézard <ycezard@viareport.com>
-Date: Thu Apr 25 14:48:38 2019 +0200
-
- DOC: contrib/modsecurity: Typos and fix the reject example
-
- Thanks to https://www.mail-archive.com/haproxy@formilux.org/msg30056.html
-
- This patch may be backported to 1.9 and 1.8.
-
- (cherry picked from commit 494ddbff478d880e48de490f2689607addac70bc)
- Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
- (cherry picked from commit 850896603086877641272d6e4075e66bd91f2e50)
- Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
-
-diff --git a/contrib/modsecurity/README b/contrib/modsecurity/README
-index e6cb305e..8031389d 100644
---- a/contrib/modsecurity/README
-+++ b/contrib/modsecurity/README
-@@ -88,15 +88,15 @@ HAProxy configuration. For example:
- balance roundrobin
- timeout connect 5s
- timeout server 3m
-- server iprep1 127.0.0.1:12345
-+ server modsec1 127.0.0.1:12345
-
- The modsecurity action is returned in a variable called txn.modsec.code. It
- contains the HTTP returned code. If the variable contains 0, the request is
- clean.
-
-- tcp-request content reject if { var(txn.modsec.code) -m int gt 0 }
-+ http-request deny if { var(txn.modsec.code) -m int gt 0 }
-
--With this rule, all the request not clean are reected.
-+With this rule, all the request not clean are rejected.
-
-
- Known bugs, limitations and TODO list
+++ /dev/null
-commit 95cf225d099dcb49eefcf4f5b648be604414ae0c
-Author: Yann Cézard <ycezard@viareport.com>
-Date: Thu Apr 25 14:30:23 2019 +0200
-
- BUG/MEDIUM: contrib/modsecurity: If host header is NULL, don't try to strdup it
-
- I discovered this bug when running OWASP regression tests against HAProxy +
- modsecurity-spoa (it's a POC to evaluate how it is working). I found out that
- modsecurity spoa will crash when the request doesn't have any Host header.
-
- See the pull request #86 on github for details.
-
- This patch must be backported to 1.9 and 1.8.
-
- (cherry picked from commit bf60f6b8033deddc86de5357d6099c7593fe44cc)
- Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
- (cherry picked from commit d988e3dddcbe1f48f3b24d1bb529fc9ecefde180)
- Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
-
-diff --git a/contrib/modsecurity/modsec_wrapper.c b/contrib/modsecurity/modsec_wrapper.c
-index 271ec15d..2f3987b4 100644
---- a/contrib/modsecurity/modsec_wrapper.c
-+++ b/contrib/modsecurity/modsec_wrapper.c
-@@ -325,7 +325,11 @@ int modsecurity_process(struct worker *worker, struct modsecurity_parameters *pa
- req->content_type = apr_table_get(req->headers_in, "Content-Type");
- req->content_encoding = apr_table_get(req->headers_in, "Content-Encoding");
- req->hostname = apr_table_get(req->headers_in, "Host");
-- req->parsed_uri.hostname = chunk_strdup(req, req->hostname, strlen(req->hostname));
-+ if (req->hostname != NULL) {
-+ req->parsed_uri.hostname = chunk_strdup(req, req->hostname, strlen(req->hostname));
-+ } else {
-+ req->parsed_uri.hostname = NULL;
-+ }
-
- lang = apr_table_get(req->headers_in, "Content-Languages");
- if (lang != NULL) {
--- /dev/null
+commit 8d09dc21dc913d1540d07d1019a51c430317eae1
+Author: Christopher Faulet <cfaulet@haproxy.com>
+Date: Tue Jun 18 09:37:00 2019 +0200
+
+ MINOR: htx: Add the function htx_change_blk_value_len()
+
+ As its name suggest, this function change the value length of a block. But it
+ also update the HTX message accordingly. It simplifies the HTX API. The function
+ htx_set_blk_value_len() is still available and must be used with caution because
+ this one does not update the HTX message. It just updates the HTX block. It
+ should be considered as an internal function. When possible,
+ htx_change_blk_value_len() should be used instead.
+
+ This function is used to fix a bug affecting the 2.0. So, this patch must be
+ backported to 2.0.
+
+ (cherry picked from commit bb0efcdd293de33607a6eba075971b49857375e2)
+ Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
+
+diff --git a/include/common/htx.h b/include/common/htx.h
+index 9631c618..7d15365a 100644
+--- a/include/common/htx.h
++++ b/include/common/htx.h
+@@ -470,7 +470,41 @@ static inline struct htx_blk *htx_get_next_blk(const struct htx *htx,
+ }
+
+ /* Changes the size of the value. It is the caller responsibility to change the
+- * value itself, make sure there is enough space and update allocated value.
++ * value itself, make sure there is enough space and update allocated
++ * value. This function updates the HTX message accordingly.
++ */
++static inline void htx_change_blk_value_len(struct htx *htx, struct htx_blk *blk, uint32_t newlen)
++{
++ enum htx_blk_type type = htx_get_blk_type(blk);
++ uint32_t oldlen, sz;
++ int32_t delta;
++
++ sz = htx_get_blksz(blk);
++ switch (type) {
++ case HTX_BLK_HDR:
++ case HTX_BLK_TLR:
++ oldlen = (blk->info >> 8) & 0xfffff;
++ blk->info = (type << 28) + (newlen << 8) + (blk->info & 0xff);
++ break;
++ default:
++ oldlen = blk->info & 0xfffffff;
++ blk->info = (type << 28) + newlen;
++ break;
++ }
++
++ /* Update HTTP message */
++ delta = (newlen - oldlen);
++ htx->data += delta;
++ if (blk->addr+sz == htx->tail_addr)
++ htx->tail_addr += delta;
++ else if (blk->addr+sz == htx->head_addr)
++ htx->head_addr += delta;
++}
++
++/* Changes the size of the value. It is the caller responsibility to change the
++ * value itself, make sure there is enough space and update allocated
++ * value. Unlike the function htx_change_blk_value_len(), this one does not
++ * update the HTX message. So it should be used with caution.
+ */
+ static inline void htx_set_blk_value_len(struct htx_blk *blk, uint32_t vlen)
+ {
--- /dev/null
+commit 41dc8432f87622145390dc1b1467a5ee14ba184c
+Author: Christopher Faulet <cfaulet@haproxy.com>
+Date: Tue Jun 18 09:49:16 2019 +0200
+
+ BUG/MEDIUM: htx: Fully update HTX message when the block value is changed
+
+ Everywhere the value length of a block is changed, calling the function
+ htx_set_blk_value_len(), the HTX message must be updated. But at many places,
+ because of the recent changes in the HTX structure, this update was only
+ partially done. tail_addr and head_addr values were not systematically updated.
+
+ In fact, the function htx_set_blk_value_len() was designed as an internal
+ function to the HTX API. And we used it from outside by convenience. But it is
+ really painfull and error prone to let the caller update the HTX message. So
+ now, we use the function htx_change_blk_value_len() wherever is possible. It
+ changes the value length of a block and updates the HTX message accordingly.
+
+ This patch must be backported to 2.0.
+
+ (cherry picked from commit 3e2638ee04407a1d9e9376f0c518f67fca7deaa4)
+ Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
+
+diff --git a/src/h2.c b/src/h2.c
+index 32c1ef16..990d602b 100644
+--- a/src/h2.c
++++ b/src/h2.c
+@@ -736,8 +736,7 @@ int h2_make_htx_request(struct http_hdr *list, struct htx *htx, unsigned int *ms
+ if (tl > fs)
+ goto fail;
+
+- htx_set_blk_value_len(blk, tl);
+- htx->data += vl+2;
++ htx_change_blk_value_len(htx, blk, tl);
+ *(char *)(htx_get_blk_ptr(htx, blk) + bs + 0) = ';';
+ *(char *)(htx_get_blk_ptr(htx, blk) + bs + 1) = ' ';
+ memcpy(htx_get_blk_ptr(htx, blk) + bs + 2, list[ck].v.ptr, vl);
+diff --git a/src/http_htx.c b/src/http_htx.c
+index 7322b337..bc26e5ba 100644
+--- a/src/http_htx.c
++++ b/src/http_htx.c
+@@ -461,10 +461,7 @@ int http_remove_header(struct htx *htx, struct http_hdr_ctx *ctx)
+ }
+ /* Update the block content and its len */
+ memmove(start, start+len, v.len-len);
+- htx_set_blk_value_len(blk, v.len-len);
+-
+- /* Update HTX msg */
+- htx->data -= len;
++ htx_change_blk_value_len(htx, blk, v.len-len);
+
+ /* Finally update the ctx */
+ ctx->value.ptr = start;
+diff --git a/src/htx.c b/src/htx.c
+index bfd136f4..81492598 100644
+--- a/src/htx.c
++++ b/src/htx.c
+@@ -406,15 +406,8 @@ void htx_truncate(struct htx *htx, uint32_t offset)
+ offset -= sz;
+ continue;
+ }
+- if (type == HTX_BLK_DATA) {
+- htx_set_blk_value_len(blk, offset);
+- htx->data -= (sz - offset);
+-
+- if (blk->addr+sz == htx->tail_addr)
+- htx->tail_addr -= offset;
+- else if (blk->addr+sz == htx->head_addr)
+- htx->head_addr -= offset;
+- }
++ if (type == HTX_BLK_DATA)
++ htx_change_blk_value_len(htx, blk, offset);
+ offset = 0;
+ }
+ while (blk)
+@@ -522,14 +515,7 @@ struct htx_blk *htx_add_data_atonce(struct htx *htx, struct ist data)
+ /* Append data and update the block itself */
+ ptr = htx_get_blk_ptr(htx, tailblk);
+ memcpy(ptr+sz, data.ptr, len);
+- htx_set_blk_value_len(tailblk, sz+len);
+-
+- /* Update HTTP message */
+- htx->data += len;
+- if (tailblk->addr+sz == htx->tail_addr)
+- htx->tail_addr += len;
+- else if (tailblk->addr+sz == htx->head_addr)
+- htx->head_addr += len;
++ htx_change_blk_value_len(htx, tailblk, sz+len);
+
+ if (data.len == len) {
+ blk = tailblk;
+@@ -988,14 +974,7 @@ size_t htx_add_data(struct htx *htx, const struct ist data)
+ /* Append data and update the block itself */
+ ptr = htx_get_blk_ptr(htx, tailblk);
+ memcpy(ptr + sz, data.ptr, len);
+- htx_set_blk_value_len(tailblk, sz + len);
+-
+- /* Update HTTP message */
+- htx->data += len;
+- if (tailblk->addr+sz == htx->tail_addr)
+- htx->tail_addr += len;
+- else if (tailblk->addr+sz == htx->head_addr)
+- htx->head_addr += len;
++ htx_change_blk_value_len(htx, tailblk, sz+len);
+
+ BUG_ON((int32_t)htx->tail_addr < 0);
+ BUG_ON((int32_t)htx->head_addr < 0);
+diff --git a/src/proto_htx.c b/src/proto_htx.c
+index 7f501366..d821e38c 100644
+--- a/src/proto_htx.c
++++ b/src/proto_htx.c
+@@ -4314,10 +4314,8 @@ static void htx_manage_client_side_cookies(struct stream *s, struct channel *req
+ hdr_end = (preserve_hdr ? del_from : hdr_beg);
+ }
+ if ((hdr_end - hdr_beg) != ctx.value.len) {
+- if (hdr_beg != hdr_end) {
+- htx_set_blk_value_len(ctx.blk, hdr_end - hdr_beg);
+- htx->data -= ctx.value.len - (hdr_end - hdr_beg);
+- }
++ if (hdr_beg != hdr_end)
++ htx_change_blk_value_len(htx, ctx.blk, hdr_end - hdr_beg);
+ else
+ http_remove_header(htx, &ctx);
+ }
+@@ -4495,8 +4493,7 @@ static void htx_manage_server_side_cookies(struct stream *s, struct channel *res
+ next += stripped_before;
+ hdr_end += stripped_before;
+
+- htx_set_blk_value_len(ctx.blk, hdr_end - hdr_beg);
+- htx->data -= ctx.value.len - (hdr_end - hdr_beg);
++ htx_change_blk_value_len(htx, ctx.blk, hdr_end - hdr_beg);
+ ctx.value.len = hdr_end - hdr_beg;
+ }
+
+++ /dev/null
-commit 86860896dc1841eb59cb95832d76a8093e8dc8c5
-Author: Christopher Faulet <cfaulet@haproxy.com>
-Date: Tue Apr 30 10:55:38 2019 +0200
-
- MINOR: examples: Use right locale for the last changelog date in haproxy.spec
-
- The last changelog entry was stamped with the wrong locale.
-
- No need to backport, it is specific to 1.8
-
-diff --git a/examples/haproxy.spec b/examples/haproxy.spec
-index f3e0c7e0..fe5215d7 100644
---- a/examples/haproxy.spec
-+++ b/examples/haproxy.spec
-@@ -74,7 +74,7 @@ fi
- %attr(0755,root,root) %config %{_sysconfdir}/rc.d/init.d/%{name}
-
- %changelog
--* jeu. avril 25 2019 Christopher Faulet <cfaulet@haproxy.com>
-+* Thu Apr 25 2019 Christopher Faulet <cfaulet@haproxy.com>
- - updated to 1.8.20
-
- * Mon Feb 11 2019 Willy Tarreau <w@1wt.eu>
+++ /dev/null
-commit 83af1f6b65806982640679823228976deebf5202
-Author: Willy Tarreau <w@1wt.eu>
-Date: Tue Apr 30 11:43:43 2019 +0200
-
- BUG/MAJOR: map/acl: real fix segfault during show map/acl on CLI
-
- A previous commit 8d85aa44d ("BUG/MAJOR: map: fix segfault during
- 'show map/acl' on cli.") was provided to address a concurrency issue
- between "show acl" and "clear acl" on the CLI. Sadly the code placed
- there was copy-pasted without changing the element type (which was
- struct stream in the original code) and not tested since the crash
- is still present.
-
- The reproducer is simple : load a large ACL file (e.g. geolocation
- addresses), issue "show acl #0" in loops in one window and issue a
- "clear acl #0" in the other one, haproxy crashes.
-
- This fix was also tested with threads enabled and looks good since
- the locking seems to work correctly in these areas though. It will
- have to be backported as far as 1.6 since the commit above went
- that far as well...
-
- (cherry picked from commit 49ee3b2f9a9e5d0b8d394938df527aa645ce72b4)
- Signed-off-by: Willy Tarreau <w@1wt.eu>
- (cherry picked from commit ac4be10f62ef72962d9cf0e6f2619e1e1c370d62)
- Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
-
-diff --git a/src/pattern.c b/src/pattern.c
-index 7eea9d96..21639569 100644
---- a/src/pattern.c
-+++ b/src/pattern.c
-@@ -1651,7 +1651,7 @@ int pat_ref_delete_by_id(struct pat_ref *ref, struct pat_ref_elt *refelt)
- LIST_DEL(&bref->users);
- LIST_INIT(&bref->users);
- if (elt->list.n != &ref->head)
-- LIST_ADDQ(&LIST_ELEM(elt->list.n, struct stream *, list)->back_refs, &bref->users);
-+ LIST_ADDQ(&LIST_ELEM(elt->list.n, typeof(elt), list)->back_refs, &bref->users);
- bref->ref = elt->list.n;
- }
- list_for_each_entry(expr, &ref->pat, list)
-@@ -1691,7 +1691,7 @@ int pat_ref_delete(struct pat_ref *ref, const char *key)
- LIST_DEL(&bref->users);
- LIST_INIT(&bref->users);
- if (elt->list.n != &ref->head)
-- LIST_ADDQ(&LIST_ELEM(elt->list.n, struct stream *, list)->back_refs, &bref->users);
-+ LIST_ADDQ(&LIST_ELEM(elt->list.n, typeof(elt), list)->back_refs, &bref->users);
- bref->ref = elt->list.n;
- }
- list_for_each_entry(expr, &ref->pat, list)
-@@ -2086,7 +2086,7 @@ void pat_ref_reload(struct pat_ref *ref, struct pat_ref *replace)
- LIST_DEL(&bref->users);
- LIST_INIT(&bref->users);
- if (elt->list.n != &ref->head)
-- LIST_ADDQ(&LIST_ELEM(elt->list.n, struct stream *, list)->back_refs, &bref->users);
-+ LIST_ADDQ(&LIST_ELEM(elt->list.n, typeof(elt), list)->back_refs, &bref->users);
- bref->ref = elt->list.n;
- }
- LIST_DEL(&elt->list);
-@@ -2175,7 +2175,7 @@ void pat_ref_prune(struct pat_ref *ref)
- LIST_DEL(&bref->users);
- LIST_INIT(&bref->users);
- if (elt->list.n != &ref->head)
-- LIST_ADDQ(&LIST_ELEM(elt->list.n, struct stream *, list)->back_refs, &bref->users);
-+ LIST_ADDQ(&LIST_ELEM(elt->list.n, typeof(elt), list)->back_refs, &bref->users);
- bref->ref = elt->list.n;
- }
- LIST_DEL(&elt->list);
--- /dev/null
+commit 3d574a587dc3704e93bcd29b16d54d96069667b4
+Author: Christopher Faulet <cfaulet@haproxy.com>
+Date: Tue Jun 18 12:22:38 2019 +0200
+
+ BUG/MEDIUM: mux-h2: Reset padlen when several frames are demux
+
+ In the function h2_process_demux(), if several frames are parsed, the padding
+ length must be reset between each frame. Otherwise we may wrongly think a frame
+ has a padding block because the previous one was padded.
+
+ This patch must be backported to 2.0 and 1.9.
+
+ (cherry picked from commit dd2a5620d594523cd515a629e105a9a2b64345bb)
+ Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
+
+diff --git a/src/mux_h2.c b/src/mux_h2.c
+index d02168df..c06d5d68 100644
+--- a/src/mux_h2.c
++++ b/src/mux_h2.c
+@@ -2316,6 +2316,7 @@ static void h2_process_demux(struct h2c *h2c)
+ break;
+ }
+
++ padlen = 0;
+ if (h2_ft_bit(hdr.ft) & H2_FT_PADDED_MASK && hdr.ff & H2_F_PADDED) {
+ /* If the frame is padded (HEADERS, PUSH_PROMISE or DATA),
+ * we read the pad length and drop it from the remaining
+++ /dev/null
-commit 7bd7a8d2b8889f604b807c21190d2e70328d6674
-Author: Christopher Faulet <cfaulet@haproxy.com>
-Date: Tue Apr 30 12:17:13 2019 +0200
-
- BUG/MEDIUM: listener: Fix how unlimited number of consecutive accepts is handled
-
- There is a bug when global.tune.maxaccept is set to -1 (no limit). It is pretty
- visible with one process (nbproc sets to 1). The functions listener_accept() and
- accept_queue_process() don't expect to handle negative maxaccept values. So
- instead of accepting incoming connections without any limit, none are never
- accepted and HAProxy loop infinitly in the scheduler.
-
- When there are 2 or more processes, the bug is a bit more subtile. The limit for
- a listener is set to 1. So only one connection is accepted at a time by a given
- listener. This happens because the listener's maxaccept value is an unsigned
- integer. In check_config_validity(), it is first set to UINT_MAX (-1 casted in
- an unsigned integer), and then some calculations on it leads to an integer
- overflow.
-
- To fix the bug, the listener's maxaccept value is now a signed integer. So, if a
- negative value is set for global.tune.maxaccept, we keep it untouched for the
- listener and no calculation is made on it. Then, in the listener code, this
- signed value is casted to a unsigned one. It simplifies all tests instead of
- dealing with negative values. So, it limits the number of connections accepted
- at a time to UINT_MAX at most. But, honestly, it not an issue.
-
- This patch must be backported to 1.9 and 1.8.
-
- (cherry picked from commit 102854cbbaa4d22466dddec9035d411db244082f)
- Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
- (cherry picked from commit bca4fb2d9d7f2966d9f8270fa1796fdc0dfc866d)
- Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
-
-diff --git a/include/types/listener.h b/include/types/listener.h
-index ea2eadb5..16ef6d7a 100644
---- a/include/types/listener.h
-+++ b/include/types/listener.h
-@@ -196,7 +196,7 @@ struct listener {
- int nbconn; /* current number of connections on this listener */
- int maxconn; /* maximum connections allowed on this listener */
- unsigned int backlog; /* if set, listen backlog */
-- unsigned int maxaccept; /* if set, max number of connections accepted at once */
-+ int maxaccept; /* if set, max number of connections accepted at once (-1 when disabled) */
- struct list proto_list; /* list in the protocol header */
- int (*accept)(struct listener *l, int fd, struct sockaddr_storage *addr); /* upper layer's accept() */
- enum obj_type *default_target; /* default target to use for accepted sessions or NULL */
-diff --git a/src/listener.c b/src/listener.c
-index 821c931a..74990c45 100644
---- a/src/listener.c
-+++ b/src/listener.c
-@@ -406,7 +406,7 @@ void listener_accept(int fd)
- {
- struct listener *l = fdtab[fd].owner;
- struct proxy *p;
-- int max_accept;
-+ unsigned int max_accept;
- int next_conn = 0;
- int next_feconn = 0;
- int next_actconn = 0;
-@@ -420,6 +420,10 @@ void listener_accept(int fd)
- if (!l)
- return;
- p = l->bind_conf->frontend;
-+
-+ /* if l->maxaccept is -1, then max_accept is UINT_MAX. It is not really
-+ * illimited, but it is probably enough.
-+ */
- max_accept = l->maxaccept ? l->maxaccept : 1;
-
- if (!(l->options & LI_O_UNLIMITED) && global.sps_lim) {
-@@ -480,7 +484,7 @@ void listener_accept(int fd)
- * worst case. If we fail due to system limits or temporary resource
- * shortage, we try again 100ms later in the worst case.
- */
-- for (; max_accept-- > 0; next_conn = next_feconn = next_actconn = 0) {
-+ for (; max_accept; next_conn = next_feconn = next_actconn = 0, max_accept--) {
- struct sockaddr_storage addr;
- socklen_t laddr = sizeof(addr);
- unsigned int count;
--- /dev/null
+commit 4fb65f421b4d650711e5d8b9dbcbf4bf589d26cc
+Author: Christopher Faulet <cfaulet@haproxy.com>
+Date: Wed Jun 19 09:25:58 2019 +0200
+
+ BUG/MEDIUM: mux-h2: Remove the padding length when a DATA frame size is checked
+
+ When a DATA frame is processed for a message with a content-length, we first
+ take care to not have a frame size that exceeds the remaining to
+ read. Otherwise, an error is triggered. But we must remove the padding length
+ from the frame size because the padding is not included in the announced
+ content-length.
+
+ This patch must be backported to 2.0 and 1.9.
+
+ (cherry picked from commit 4f09ec812adbd9336cddc054660a7fb5cd54b459)
+ Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
+
+diff --git a/src/mux_h2.c b/src/mux_h2.c
+index c06d5d68..5bb85181 100644
+--- a/src/mux_h2.c
++++ b/src/mux_h2.c
+@@ -2177,7 +2177,7 @@ static int h2c_frt_handle_data(struct h2c *h2c, struct h2s *h2s)
+ goto strm_err;
+ }
+
+- if ((h2s->flags & H2_SF_DATA_CLEN) && h2c->dfl > h2s->body_len) {
++ if ((h2s->flags & H2_SF_DATA_CLEN) && (h2c->dfl - h2c->dpl) > h2s->body_len) {
+ /* RFC7540#8.1.2 */
+ error = H2_ERR_PROTOCOL_ERROR;
+ goto strm_err;
--- /dev/null
+commit 3f0b1de623d09f8668db34c1be696f7245de7d50
+Author: Christopher Faulet <cfaulet@haproxy.com>
+Date: Wed Jun 19 10:50:38 2019 +0200
+
+ BUG/MEDIUM: lb_fwlc: Don't test the server's lb_tree from outside the lock
+
+ In the function fwlc_srv_reposition(), the server's lb_tree is tested from
+ outside the lock. So it is possible to remove it after the test and then call
+ eb32_insert() in fwlc_queue_srv() with a NULL root pointer, which is
+ invalid. Moving the test in the scope of the lock fixes the bug.
+
+ This issue was reported on Github, issue #126.
+
+ This patch must be backported to 2.0, 1.9 and 1.8.
+
+ (cherry picked from commit 1ae2a8878170ded922f2c4d32b6704af7689bbfd)
+ Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
+
+diff --git a/src/lb_fwlc.c b/src/lb_fwlc.c
+index 174dc67e..5fa81739 100644
+--- a/src/lb_fwlc.c
++++ b/src/lb_fwlc.c
+@@ -66,12 +66,11 @@ static inline void fwlc_queue_srv(struct server *s)
+ */
+ static void fwlc_srv_reposition(struct server *s)
+ {
+- if (!s->lb_tree)
+- return;
+-
+ HA_SPIN_LOCK(LBPRM_LOCK, &s->proxy->lbprm.lock);
+- fwlc_dequeue_srv(s);
+- fwlc_queue_srv(s);
++ if (s->lb_tree) {
++ fwlc_dequeue_srv(s);
++ fwlc_queue_srv(s);
++ }
+ HA_SPIN_UNLOCK(LBPRM_LOCK, &s->proxy->lbprm.lock);
+ }
+
+++ /dev/null
-commit 6e580b6e744011e87c337ebe2c082acfd5ca835a
-Author: Christopher Faulet <cfaulet@haproxy.com>
-Date: Tue Apr 30 14:03:56 2019 +0200
-
- MINOR: config: Test validity of tune.maxaccept during the config parsing
-
- Only -1 and positive integers from 0 to INT_MAX are accepted. An error is
- triggered during the config parsing for any other values.
-
- This patch may be backported to all supported versions.
-
- (cherry picked from commit 6b02ab87348090efec73b1dd24f414239669f279)
- Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
- (cherry picked from commit 2bbc40f8bc9a52ba0d03b25270ac0129cca29bba)
- Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
-
-diff --git a/src/cfgparse.c b/src/cfgparse.c
-index c178538b..8e325416 100644
---- a/src/cfgparse.c
-+++ b/src/cfgparse.c
-@@ -789,6 +789,8 @@ int cfg_parse_global(const char *file, int linenum, char **args, int kwm)
- global.tune.maxpollevents = atol(args[1]);
- }
- else if (!strcmp(args[0], "tune.maxaccept")) {
-+ long max;
-+
- if (alertif_too_many_args(1, file, linenum, args, &err_code))
- goto out;
- if (global.tune.maxaccept != 0) {
-@@ -801,7 +803,13 @@ int cfg_parse_global(const char *file, int linenum, char **args, int kwm)
- err_code |= ERR_ALERT | ERR_FATAL;
- goto out;
- }
-- global.tune.maxaccept = atol(args[1]);
-+ max = atol(args[1]);
-+ if (/*max < -1 || */max > INT_MAX) {
-+ ha_alert("parsing [%s:%d] : '%s' expects -1 or an integer from 0 to INT_MAX.\n", file, linenum, args[0]);
-+ err_code |= ERR_ALERT | ERR_FATAL;
-+ goto out;
-+ }
-+ global.tune.maxaccept = max;
- }
- else if (!strcmp(args[0], "tune.chksize")) {
- if (alertif_too_many_args(1, file, linenum, args, &err_code))
--- /dev/null
+commit 9eae8935663bc0b27c23018e8cc24ae9a3e31732
+Author: Frédéric Lécaille <flecaille@haproxy.com>
+Date: Thu Jun 20 09:31:04 2019 +0200
+
+ BUG/MAJOR: sample: Wrong stick-table name parsing in "if/unless" ACL condition.
+
+ This bug was introduced by 1b8e68e commit which supposed the stick-table was always
+ stored in struct arg at parsing time. This is never the case with the usage of
+ "if/unless" conditions in stick-table declared as backends. In this case, this is
+ the name of the proxy which must be considered as the stick-table name.
+
+ This must be backported to 2.0.
+
+ (cherry picked from commit 9417f4534ad742eda35c4cc3d1ccb390f75ea4b1)
+ Signed-off-by: Willy Tarreau <w@1wt.eu>
+
+diff --git a/src/sample.c b/src/sample.c
+index 67f59e84..77ec9b1e 100644
+--- a/src/sample.c
++++ b/src/sample.c
+@@ -1245,15 +1245,11 @@ int smp_resolve_args(struct proxy *p)
+ break;
+
+ case ARGT_TAB:
+- if (!arg->data.str.data) {
+- ha_alert("parsing [%s:%d] : missing table name in arg %d of %s%s%s%s '%s' %s proxy '%s'.\n",
+- cur->file, cur->line,
+- cur->arg_pos + 1, conv_pre, conv_ctx, conv_pos, ctx, cur->kw, where, p->id);
+- cfgerr++;
+- continue;
+- }
++ if (arg->data.str.data)
++ stktname = arg->data.str.area;
++ else
++ stktname = px->id;
+
+- stktname = arg->data.str.area;
+ t = stktable_find_by_name(stktname);
+ if (!t) {
+ ha_alert("parsing [%s:%d] : unable to find table '%s' referenced in arg %d of %s%s%s%s '%s' %s proxy '%s'.\n",
+++ /dev/null
-commit c6e03c1495fa51f9a98ed0bbe3230313c7c7201c
-Author: Christopher Faulet <cfaulet@haproxy.com>
-Date: Tue Apr 30 14:08:41 2019 +0200
-
- CLEANUP: config: Don't alter listener->maxaccept when nbproc is set to 1
-
- This patch only removes a useless calculation on listener->maxaccept when nbproc
- is set to 1. Indeed, the following formula has no effet in such case:
-
- listener->maxaccept = (listener->maxaccept + nbproc - 1) / nbproc;
-
- This patch may be backported as far as 1.5.
-
- (cherry picked from commit 02f3cf19ed803d20aff9294ce7cb732489951ff5)
- Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
- (cherry picked from commit 14203e3cf9404e57de5e274b453f0fe4f2174924)
- Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
-
-diff --git a/src/cfgparse.c b/src/cfgparse.c
-index 8e325416..3f6ea352 100644
---- a/src/cfgparse.c
-+++ b/src/cfgparse.c
-@@ -9018,9 +9018,8 @@ out_uri_auth_compat:
- * is bound to. Rememeber that maxaccept = -1 must be kept as it is
- * used to disable the limit.
- */
-- if (listener->maxaccept > 0) {
-- if (nbproc > 1)
-- listener->maxaccept = (listener->maxaccept + 1) / 2;
-+ if (listener->maxaccept > 0 && nbproc > 1) {
-+ listener->maxaccept = (listener->maxaccept + 1) / 2;
- listener->maxaccept = (listener->maxaccept + nbproc - 1) / nbproc;
- }
-
+++ /dev/null
-commit f95cf6ad70565ee2322cf23bc519b7bb0b3831b2
-Author: Olivier Houchard <ohouchard@haproxy.com>
-Date: Tue Apr 30 13:38:02 2019 +0200
-
- MINOR: threads: Implement HA_ATOMIC_LOAD().
-
- The same way we have HA_ATOMIC_STORE(), implement HA_ATOMIC_LOAD().
-
- This should be backported to 1.8 and 1.9, as we need it for a bug fix
- in port ranges.
-
- (cherry picked from commit 9ce62b5498b27fbf4217d9c25779d5b2ceca23f2)
- Signed-off-by: Olivier Houchard <cognet@ci0.org>
- (cherry picked from commit 358c979611370fa2bc3b8e47ed50a325cf9126cf)
- Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
-
-diff --git a/include/common/hathreads.h b/include/common/hathreads.h
-index 8134839a..11d7cab6 100644
---- a/include/common/hathreads.h
-+++ b/include/common/hathreads.h
-@@ -62,6 +62,7 @@ enum { tid = 0 };
- *(val) = new; \
- __old_xchg; \
- })
-+#define HA_ATOMIC_LOAD(val) *(val)
- #define HA_ATOMIC_STORE(val, new) ({*(val) = new;})
- #define HA_ATOMIC_UPDATE_MAX(val, new) \
- ({ \
-@@ -203,6 +204,16 @@ static inline unsigned long thread_isolated()
- } while (!__sync_bool_compare_and_swap(__val_xchg, __old_xchg, __new_xchg)); \
- __old_xchg; \
- })
-+
-+#define HA_ATOMIC_LOAD(val) \
-+ ({ \
-+ typeof(*(val)) ret; \
-+ __sync_synchronize(); \
-+ ret = *(volatile typeof(val))val; \
-+ __sync_synchronize(); \
-+ ret; \
-+ })
-+
- #define HA_ATOMIC_STORE(val, new) \
- ({ \
- typeof((val)) __val_store = (val); \
-@@ -221,6 +232,8 @@ static inline unsigned long thread_isolated()
- #define HA_ATOMIC_OR(val, flags) __atomic_or_fetch(val, flags, __ATOMIC_SEQ_CST)
- #define HA_ATOMIC_XCHG(val, new) __atomic_exchange_n(val, new, __ATOMIC_SEQ_CST)
- #define HA_ATOMIC_STORE(val, new) __atomic_store_n(val, new, __ATOMIC_SEQ_CST)
-+#define HA_ATOMIC_LOAD(val) __atomic_load_n(val, __ATOMIC_SEQ_CST)
-+
- #endif
-
- #define HA_ATOMIC_UPDATE_MAX(val, new) \
--- /dev/null
+--- a/Makefile
++++ b/Makefile
+@@ -327,6 +327,15 @@ ifeq ($(TARGET),linux-glibc)
+ USE_GETADDRINFO)
+ endif
+
++# For linux >= 2.6.28 and uclibc
++ifeq ($(TARGET),linux-uclibc)
++ set_target_defaults = $(call default_opts, \
++ USE_POLL USE_TPROXY USE_DL USE_RT USE_NETFILTER \
++ USE_CPU_AFFINITY USE_THREAD USE_EPOLL USE_FUTEX USE_LINUX_TPROXY \
++ USE_ACCEPT4 USE_LINUX_SPLICE USE_PRCTL USE_THREAD_DUMP USE_NS USE_TFO \
++ USE_GETADDRINFO)
++endif
++
+ # Solaris 8 and above
+ ifeq ($(TARGET),solaris)
+ # We also enable getaddrinfo() which works since solaris 8.
+++ /dev/null
-commit 31470e2ba2aabb4c6340fbc15cb5486ceb8c69c8
-Author: Olivier Houchard <ohouchard@haproxy.com>
-Date: Mon Apr 29 18:52:06 2019 +0200
-
- BUG/MEDIUM: port_range: Make the ring buffer lock-free.
-
- Port range uses a ring buffer, and unfortunately, when making haproxy
- multithreaded, it's been overlooked, and the ring buffer is not thread-safe.
- When specifying a source range, 2 or more threads could pick the same
- port, and of course only one of them could use the port, the others would
- always fail the connection.
- To fix this, make it a lock-free ring buffer. This is easier than usual
- because we know the ring buffer can never be full.
-
- This should be backported to 1.8 and 1.9.
-
- (cherry picked from commit 07425de71777b688e77a9c70a7088c13e66e41e9)
- Signed-off-by: Olivier Houchard <cognet@ci0.org>
- (cherry picked from commit bffb51147a4a5939e344b3c838628f9a944febef)
- Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
-
-diff --git a/include/proto/port_range.h b/include/proto/port_range.h
-index 8c63faca..f7e3f1d5 100644
---- a/include/proto/port_range.h
-+++ b/include/proto/port_range.h
-@@ -24,18 +24,22 @@
-
- #include <types/port_range.h>
-
-+#define GET_NEXT_OFF(range, off) ((off) == (range)->size - 1 ? 0 : (off) + 1)
-+
- /* return an available port from range <range>, or zero if none is left */
- static inline int port_range_alloc_port(struct port_range *range)
- {
- int ret;
-+ int get;
-+ int put;
-
-- if (!range->avail)
-- return 0;
-- ret = range->ports[range->get];
-- range->get++;
-- if (range->get >= range->size)
-- range->get = 0;
-- range->avail--;
-+ get = HA_ATOMIC_LOAD(&range->get);
-+ do {
-+ put = HA_ATOMIC_LOAD(&range->put_t);
-+ if (unlikely(put == get))
-+ return 0;
-+ ret = range->ports[get];
-+ } while (!(HA_ATOMIC_CAS(&range->get, &get, GET_NEXT_OFF(range, get))));
- return ret;
- }
-
-@@ -45,14 +49,28 @@ static inline int port_range_alloc_port(struct port_range *range)
- */
- static inline void port_range_release_port(struct port_range *range, int port)
- {
-+ int put;
-+
- if (!port || !range)
- return;
-
-- range->ports[range->put] = port;
-- range->avail++;
-- range->put++;
-- if (range->put >= range->size)
-- range->put = 0;
-+ put = range->put_h;
-+ /* put_h is reserved for producers, so that they can each get a
-+ * free slot, put_t is what is used by consumers to know if there's
-+ * elements available or not
-+ */
-+ /* First reserve or slot, we know the ring buffer can't be full,
-+ * as we will only ever release port we allocated before
-+ */
-+ while (!(HA_ATOMIC_CAS(&range->put_h, &put, GET_NEXT_OFF(range, put))));
-+ HA_ATOMIC_STORE(&range->ports[put], port);
-+ /* Wait until all the threads that got a slot before us are done */
-+ while ((volatile int)range->put_t != put)
-+ __ha_compiler_barrier();
-+ /* Let the world know we're done, and any potential consumer they
-+ * can use that port.
-+ */
-+ HA_ATOMIC_STORE(&range->put_t, GET_NEXT_OFF(range, put));
- }
-
- /* return a new initialized port range of N ports. The ports are not
-@@ -62,8 +80,10 @@ static inline struct port_range *port_range_alloc_range(int n)
- {
- struct port_range *ret;
- ret = calloc(1, sizeof(struct port_range) +
-- n * sizeof(((struct port_range *)0)->ports[0]));
-- ret->size = ret->avail = n;
-+ (n + 1) * sizeof(((struct port_range *)0)->ports[0]));
-+ ret->size = n + 1;
-+ /* Start at the first free element */
-+ ret->put_h = ret->put_t = n;
- return ret;
- }
-
-diff --git a/include/types/port_range.h b/include/types/port_range.h
-index 1d010f77..33455d2d 100644
---- a/include/types/port_range.h
-+++ b/include/types/port_range.h
-@@ -25,8 +25,7 @@
- #include <netinet/in.h>
-
- struct port_range {
-- int size, get, put; /* range size, and get/put positions */
-- int avail; /* number of available ports left */
-+ int size, get, put_h, put_t; /* range size, and get/put positions */
- uint16_t ports[0]; /* array of <size> ports, in host byte order */
- };
-
+++ /dev/null
---- a/src/ssl_sock.c
-+++ b/src/ssl_sock.c
-@@ -39,6 +39,7 @@
- #include <netdb.h>
- #include <netinet/tcp.h>
-
-+#include <openssl/bn.h>
- #include <openssl/crypto.h>
- #include <openssl/ssl.h>
- #include <openssl/x509.h>
-@@ -60,6 +61,17 @@
- #include <openssl/async.h>
- #endif
-
-+#ifndef OPENSSL_VERSION
-+#define OPENSSL_VERSION SSLEAY_VERSION
-+#define OpenSSL_version(x) SSLeay_version(x)
-+#define OpenSSL_version_num SSLeay
-+#endif
-+
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
-+#define X509_getm_notBefore X509_get_notBefore
-+#define X509_getm_notAfter X509_get_notAfter
-+#endif
-+
- #include <import/lru.h>
- #include <import/xxhash.h>
-
-@@ -217,7 +229,7 @@ static struct {
- .capture_cipherlist = 0,
- };
-
--#ifdef USE_THREAD
-+#if defined(USE_THREAD) && (OPENSSL_VERSION_NUMBER < 0x10100000L)
-
- static HA_RWLOCK_T *ssl_rwlocks;
-
-@@ -1716,8 +1728,8 @@ ssl_sock_do_create_cert(const char *servername, struct bind_conf *bind_conf, SSL
- ASN1_INTEGER_set(X509_get_serialNumber(newcrt), HA_ATOMIC_ADD(&ssl_ctx_serial, 1));
-
- /* Set duration for the certificate */
-- if (!X509_gmtime_adj(X509_get_notBefore(newcrt), (long)-60*60*24) ||
-- !X509_gmtime_adj(X509_get_notAfter(newcrt),(long)60*60*24*365))
-+ if (!X509_gmtime_adj(X509_getm_notBefore(newcrt), (long)-60*60*24) ||
-+ !X509_gmtime_adj(X509_getm_notAfter(newcrt),(long)60*60*24*365))
- goto mkcert_error;
-
- /* set public key in the certificate */
-@@ -6299,7 +6311,7 @@ smp_fetch_ssl_x_notafter(const struct arg *args, struct sample *smp, const char
- goto out;
-
- smp_trash = get_trash_chunk();
-- if (ssl_sock_get_time(X509_get_notAfter(crt), smp_trash) <= 0)
-+ if (ssl_sock_get_time(X509_getm_notAfter(crt), smp_trash) <= 0)
- goto out;
-
- smp->data.u.str = *smp_trash;
-@@ -6399,7 +6411,7 @@ smp_fetch_ssl_x_notbefore(const struct arg *args, struct sample *smp, const char
- goto out;
-
- smp_trash = get_trash_chunk();
-- if (ssl_sock_get_time(X509_get_notBefore(crt), smp_trash) <= 0)
-+ if (ssl_sock_get_time(X509_getm_notBefore(crt), smp_trash) <= 0)
- goto out;
-
- smp->data.u.str = *smp_trash;
-@@ -8976,10 +8988,12 @@ static void __ssl_sock_init(void)
- #endif
-
- xprt_register(XPRT_SSL, &ssl_sock);
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- SSL_library_init();
-+#endif
- cm = SSL_COMP_get_compression_methods();
- sk_SSL_COMP_zero(cm);
--#ifdef USE_THREAD
-+#if defined(USE_THREAD) && (OPENSSL_VERSION_NUMBER < 0x10100000L)
- ssl_locking_init();
- #endif
- #if (OPENSSL_VERSION_NUMBER >= 0x1000200fL && !defined OPENSSL_NO_TLSEXT && !defined OPENSSL_IS_BORINGSSL && !defined LIBRESSL_VERSION_NUMBER)
-@@ -9008,8 +9022,8 @@ static void __ssl_sock_init(void)
- #else /* OPENSSL_IS_BORINGSSL */
- OPENSSL_VERSION_TEXT
- "\nRunning on OpenSSL version : %s%s",
-- SSLeay_version(SSLEAY_VERSION),
-- ((OPENSSL_VERSION_NUMBER ^ SSLeay()) >> 8) ? " (VERSIONS DIFFER!)" : "");
-+ OpenSSL_version(OPENSSL_VERSION),
-+ ((OPENSSL_VERSION_NUMBER ^ OpenSSL_version_num()) >> 8) ? " (VERSIONS DIFFER!)" : "");
- #endif
- memprintf(&ptr, "%s\nOpenSSL library supports TLS extensions : "
- #if OPENSSL_VERSION_NUMBER < 0x00907000L
-@@ -9100,12 +9114,14 @@ static void __ssl_sock_deinit(void)
- }
- #endif
-
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- ERR_remove_state(0);
- ERR_free_strings();
-
- EVP_cleanup();
-+#endif
-
--#if OPENSSL_VERSION_NUMBER >= 0x00907000L
-+#if OPENSSL_VERSION_NUMBER >= 0x00907000L && OPENSSL_VERSION_NUMBER < 0x10100000L
- CRYPTO_cleanup_all_ex_data();
- #endif
- }
--- /dev/null
+--- a/include/common/openssl-compat.h
++++ b/include/common/openssl-compat.h
+@@ -217,7 +217,8 @@ static inline int EVP_PKEY_base_id(EVP_PKEY *pkey)
+ #define TLSEXT_signature_ecdsa 3
+ #endif
+
+-#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || (LIBRESSL_VERSION_NUMBER < 0x20700000L)
++#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || \
++ (defined(LIBRESSL_VERSION_NUMBER) && (LIBRESSL_VERSION_NUMBER < 0x20700000L))
+ #define X509_getm_notBefore X509_get_notBefore
+ #define X509_getm_notAfter X509_get_notAfter
+ #endif
PKG_NAME:=ibrdtn-tools
PKG_VERSION:=1.0.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.ibr.cs.tu-bs.de/projects/ibr-dtn/releases
PKG_INSTALL:=1
+include $(INCLUDE_DIR)/uclibc++.mk
include $(INCLUDE_DIR)/package.mk
define Package/ibrdtn-tools
PKG_NAME:=ibrdtnd
PKG_VERSION:=1.0.1
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.ibr.cs.tu-bs.de/projects/ibr-dtn/releases
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
+include $(INCLUDE_DIR)/uclibc++.mk
include $(INCLUDE_DIR)/package.mk
define Package/ibrdtnd
--- /dev/null
+--- a/src/security/SecurityKeyManager.cpp
++++ b/src/security/SecurityKeyManager.cpp
+@@ -29,6 +29,7 @@
+ #include <fstream>
+ #include <fcntl.h>
+
++#include <openssl/bn.h>
+ #include <openssl/pem.h>
+ #include <openssl/rsa.h>
+ #include <openssl/err.h>
+--- a/src/security/exchange/DHProtocol.cpp
++++ b/src/security/exchange/DHProtocol.cpp
+@@ -28,6 +28,7 @@
+ #include <ibrcommon/ssl/HMacStream.h>
+ #include <ibrcommon/Logger.h>
+
++#include <openssl/dh.h>
+ #include <openssl/rand.h>
+ #include <openssl/pem.h>
+ #include "openssl_compat.h"
include $(TOPDIR)/rules.mk
PKG_NAME:=inadyn
-PKG_VERSION:=2.3.1
-PKG_RELEASE:=2
-PKG_MAINTAINER:=
-PKG_LICENSE:=GPL-2.0
-PKG_LICENSE_FILES:=COPYING
+PKG_VERSION:=2.5
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://github.com/troglobit/inadyn/releases/download/v$(PKG_VERSION)
-PKG_HASH:=81c942db6eab27fa16e868175bdb7aff963eeee06d48bc5443e0dcd6f7c2da40
+PKG_HASH:=4a9ad208671f62912428413da0282450b2d2c4da38f3c95c4ac975d048c41fcd
+
+PKG_MAINTAINER:=
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=COPYING
-PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
/etc/inadyn.conf
endef
-CONFIGURE_ARGS += --enable-shared --disable-static --enable-openssl
+TARGET_CFLAGS += $(FPIC)
+
+CONFIGURE_ARGS += \
+ --enable-shared \
+ --disable-static \
+ --enable-openssl \
+ --without-pic
define Package/inadyn/install
$(INSTALL_DIR) $(1)/etc
$(INSTALL_DIR) $(1)/usr/sbin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/inadyn $(1)/usr/sbin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/inadyn $(1)/usr/sbin/
endef
$(eval $(call BuildPackage,inadyn))
+++ /dev/null
---- a/src/openssl.c
-+++ b/src/openssl.c
-@@ -25,17 +25,21 @@
-
- int ssl_init(void)
- {
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- SSL_library_init();
- SSL_load_error_strings();
- OpenSSL_add_all_algorithms();
-+#endif
-
- return 0;
- }
-
- void ssl_exit(void)
- {
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- ERR_free_strings();
- EVP_cleanup();
-+#endif
- }
-
- static int verify_callback(int preverify_ok, X509_STORE_CTX *ctx)
PKG_NAME:=kea
PKG_VERSION:=1.5.0
-PKG_RELEASE:=3
-PKG_MAINTAINER:=BangLang Huang<banglang.huang@foxmail.com>, Rosy Song<rosysong@rosinson.com>
-PKG_BUILD_DEPENDS:=boost log4cplus kea/host
-HOST_BUILD_DEPENDS:=boost boost/host log4cplus/host
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://ftp.isc.org/isc/kea/$(PKG_VERSION)/
-
+PKG_SOURCE_URL:=https://ftp.isc.org/isc/kea/$(PKG_VERSION)
PKG_HASH:=edce4fab68ca7af607cf7f5bc86596e04fe0ef4b8e88906e339cdefcf21daaec
-PKG_INSTALL:=1
-PKG_BUILD_PARALLEL:=1
+PKG_MAINTAINER:=BangLang Huang<banglang.huang@foxmail.com>, Rosy Song<rosysong@rosinson.com>
PKG_LICENSE:=MPL-2.0
+PKG_LICENSE_FILES:=COPYING
+
+HOST_BUILD_DEPENDS:=boost/host log4cplus/host openssl
+PKG_BUILD_DEPENDS:=kea/host
+HOST_BUILD_PARALLEL:=1
+PKG_BUILD_PARALLEL:=1
+
+PKG_INSTALL:=1
PKG_FIXUP:=autoreconf
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/host-build.mk
-HOST_BUILD_PREFIX:=$(STAGING_DIR_HOST)
-
define Package/kea/Default
SECTION:=net
CATEGORY:=Network
DEPENDS:=+kea-libs
endef
+HOST_CONFIGURE_ARGS += \
+ --with-boost-include="$(STAGING_DIR_HOSTPKG)" \
+ --with-log4cplus="$(STAGING_DIR_HOSTPKG)" \
+ --with-openssl="$(STAGING_DIR)/usr" \
+ --enable-boost-headers-only \
+ --enable-static-link
+
+HOST_LDFLAGS += \
+ -Wl,--gc-sections,--as-needed
+
CONFIGURE_ARGS += \
+ --with-boost-include="$(STAGING_DIR)/usr" \
--with-log4cplus="$(STAGING_DIR)/usr" \
--with-openssl="$(STAGING_DIR)/usr" \
+ --without-pic \
$(if $(CONFIG_PACKAGE_kea-perfdhcp),--enable-perfdhcp,)
CONFIGURE_VARS += \
cross_compiling="yes"
-HOST_CONFIGURE_ARGS += \
- --enable-static-link \
- --enable-boost-headers-only \
- --with-log4cplus="$(STAGING_DIR_HOSTPKG)" \
- --with-boost-include="$(STAGING_DIR)/usr/include" \
- --with-openssl="$(STAGING_DIR)/usr" \
- --without-pic
-
-HOST_LDFLAGS += \
- -Wl,--gc-sections,--as-needed
-
TARGET_CXXFLAGS += \
- $(FPIC) \
- -fdata-sections \
- -ffunction-sections
+ $(FPIC) \
+ -fdata-sections \
+ -ffunction-sections
TARGET_LDFLAGS += \
- -Wl,--gc-sections,--as-needed
+ -Wl,--gc-sections,--as-needed
# Only compile the kea-msg-compiler which we need for
# package compilation
include $(TOPDIR)/rules.mk
PKG_NAME:=knot
-PKG_VERSION:=2.8.1
+PKG_VERSION:=2.8.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://secure.nic.cz/files/knot-dns/
-PKG_HASH:=b21bf03e5cb6804df4e0e8b3898446349e86ddae5bf110edaf240d0ad1e2a2c6
+PKG_HASH:=00d24361a2406392c508904fad943536bae6369981686b4951378fc1c9a5a137
PKG_MAINTAINER:=Daniel Salzman <daniel.salzman@nic.cz>
PKG_LICENSE:=GPL-3.0 LGPL-2.0 0BSD BSD-3-Clause OLDAP-2.8
include $(TOPDIR)/rules.mk
PKG_NAME:=libreswan
-PKG_VERSION:=3.27
-PKG_RELEASE:=3
+PKG_VERSION:=3.29
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://download.libreswan.org/
-PKG_HASH:=ead07dd701116094b483dc57e54e2a5ee9a06d3982bb142260bcbf3d1faf7b82
+PKG_HASH:=d60e4160f43272b6307b697a13f79f56b5ec2bca61d83097ddadd8586a58ab3e
PKG_LICENSE:=GPL-2.0
PKG_MAINTAINER:=Lucian Cristian <lucian.cristian@gmail.com>
SUBMENU:=VPN
SECTION:=net
CATEGORY:=Network
- DEPENDS:= +libnss +librt +libevent2 +libevent2-pthreads +kmod-crypto-authenc \
- +kmod-crypto-hash +kmod-ipt-ipsec +iptables-mod-ipsec +ip-full +kmod-ip-vti \
- +kmod-ipsec +kmod-ipsec4 +kmod-crypto-rng +IPV6:kmod-ipsec6 +IPV6:kmod-ip6-vti
+ DEPENDS:= +IPV6:kmod-ip6-vti +IPV6:kmod-ipsec6 +ip-full +iptables-mod-ipsec \
+ +kmod-crypto-aead +kmod-crypto-authenc +kmod-crypto-gcm \
+ +kmod-crypto-hash +kmod-crypto-rng +kmod-ip-vti +kmod-ipsec \
+ +kmod-ipsec4 +kmod-ipt-ipsec +libevent2 +libevent2-pthreads \
+ +libldns +librt +libunbound-heavy +nss-utils +nspr
PROVIDES:=openswan
CONFLICTS:=strongswan
TITLE+= IPsec Server
/etc/ipsec.secrets
endef
-TARGET_CFLAGS+= -Wno-error=format-nonliteral
MAKE_FLAGS+= \
WERROR_CFLAGS=" " \
- USE_DNSSEC=false \
USE_LINUX_AUDIT=false \
USE_LABELED_IPSEC=false \
USE_NM=false \
USE_FIPSCHECK=false \
USE_LIBCAP_NG=false \
USE_SYSTEMD_WATCHDOG=false \
+ USE_SECCOMP=false\
INC_USRLOCAL="/usr" \
FINALRUNDIR="/var/run/pluto" \
ARCH="$(LINUX_KARCH)" \
- KERNELSRC="$(LINUX_DIR)"
define Build/Prepare
$(call Build/Prepare/Default)
--- /dev/null
+From 9126ec99ca9e136666cbba5b48a8a02cb11350e0 Mon Sep 17 00:00:00 2001
+From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
+Date: Mon, 15 Oct 2018 11:16:54 -0400
+Subject: [PATCH] Automatically detect whether Curve25519 is available in NSS
+ for USE_DH31
+
+currently, USE_DH31 defaults to true.
+
+On some platforms, where older versions of NSS are in use, this should
+default to false.
+
+This patch automatically detects such systems and disables USE_DH31 on
+those platforms.
+
+It produces some amount of noise on stderr about CURVE_25519 during
+the build on those older platforms, but that seems ok to me, since
+those platforms should know that they're missing a modern feature.
+
+If you prefer less noise, i'd be happy with any modification that does
+a similar sort of autodetection.
+
+diff --git a/mk/userland-cflags.mk b/mk/userland-cflags.mk
+index d0a88b1aa1..7d88874b1c 100644
+--- a/mk/userland-cflags.mk
++++ b/mk/userland-cflags.mk
+@@ -240,7 +240,7 @@ ifeq ($(USE_DH24),true)
+ USERLAND_CFLAGS += -DUSE_DH24
+ endif
+
+-USE_DH31 ?= true
++USE_DH31 ?= $(shell if printf '\#include <secoidt.h>\nint main() { return SEC_OID_CURVE25519; }\n'| $(CC) -x c $$(pkg-config --cflags nss) -o /dev/null -; then echo true; else echo false; fi )
+ ifeq ($(USE_DH31),true)
+ USERLAND_CFLAGS += -DUSE_DH31
+ endif
+++ /dev/null
-From 010a9f2bbdaa97024933be04eff1a48ff1f9b657 Mon Sep 17 00:00:00 2001
-From: Andrew Cagney <cagney@gnu.org>
-Date: Thu, 25 Oct 2018 21:00:59 -0400
-Subject: [PATCH] building: move kernel (klips) rules to mk/kernel.mk
-
----
- Makefile | 448 +-----------------------------------------------
- mk/kernel.mk | 468 +++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 474 insertions(+), 442 deletions(-)
- create mode 100644 mk/kernel.mk
-
-diff --git a/Makefile b/Makefile
-index b706defd0f..0b070966e6 100644
---- a/Makefile
-+++ b/Makefile
-@@ -97,119 +97,14 @@ KERNELREL=$(shell ${KVSHORTUTIL} ${KERNELSRC}/Makefile)
-
- # directories visited by all recursion
-
--# declaration for make's benefit
--.PHONY: def insert kpatch patches _patches _patches2.4 \
-- klipsdefaults programs man install \
-- precheck verset confcheck kernel \
-- module module24 module26 kinstall minstall minstall24 minstall26 \
-- moduleclean mod24clean module24clean mod26clean module26clean \
-- backup unpatch uninstall \
-- check \
--
--kpatch: unapplypatch applypatch klipsdefaults
--npatch: unapplynpatch applynpatch
--sarefpatch: unapplysarefpatch applysarefpatch
--
--unapplypatch:
-- @echo "info: making unapplypatch in `pwd` and KERNELSRC=\"${KERNELSRC}\";"
-- -@if [ -f ${KERNELSRC}/libreswan.patch ]; then \
-- echo Undoing previous patches; \
-- cat ${KERNELSRC}/libreswan.patch | (cd ${KERNELSRC} && patch -p1 -R --force -E -z .preipsec --reverse --ignore-whitespace ); \
-- fi
--
--applypatch:
-- @echo "info: Now performing forward patches in `pwd`";
-- ${MAKE} kernelpatch${KERNELREL} | tee ${KERNELSRC}/libreswan.patch | (cd ${KERNELSRC} && patch -p1 -b -z .preipsec --forward --ignore-whitespace )
--
--unapplynpatch:
-- @echo "info: making unapplynpatch (note the second N) in `pwd`";
-- -@if [ -f ${KERNELSRC}/natt.patch ]; then \
-- echo Undoing previous NAT patches; \
-- cat ${KERNELSRC}/natt.patch | (cd ${KERNELSRC} && patch -p1 -R --force -E -z .preipsec --reverse --ignore-whitespace ); \
-- fi
--
--applynpatch:
-- @echo "info: Now performing forward NAT patches in `pwd`";
-- ${MAKE} nattpatch${KERNELREL} | tee ${KERNELSRC}/natt.patch | (cd ${KERNELSRC} && patch -p1 -b -z .preipsec --forward --ignore-whitespace )
--
--unapplysarefpatch:
-- @echo "info: making unapplysarefpatch in `pwd`";
-- -@if [ -f ${KERNELSRC}/saref.patch ]; then \
-- echo Undoing previous saref patches; \
-- cat ${KERNELSRC}/saref.patch | (cd ${KERNELSRC} && patch -p1 -R --force -E -z .preng --reverse --ignore-whitespace ); \
-- fi
--
--applysarefpatch:
-- @echo "info: Now performing SAref patches in `pwd`";
-- ${MAKE} sarefpatch${KERNELREL} | tee ${KERNELSRC}/klipsng.patch | (cd ${KERNELSRC} && patch -p1 -b -z .preng --forward --ignore-whitespace )
--
--# patch kernel
--PATCHER=packaging/utils/patcher
--
--_patches:
-- echo "===============" >>out.kpatch
-- echo "`date` `cd $(KERNELSRC) ; pwd`" >>out.kpatch
-- $(MAKE) __patches$(KERNELREL) >>out.kpatch
--
--# Linux-2.4.0 version
--__patches2.4:
-- @$(PATCHER) -v -c $(KERNELSRC) Documentation/Configure.help \
-- 'CONFIG_KLIPS' $(PATCHES)/Documentation/Configure.help.fs2_2.patch
-- @$(PATCHER) -v $(KERNELSRC) net/Config.in \
-- 'CONFIG_KLIPS' $(PATCHES)/net/Config.in.fs2_4.patch
-- @$(PATCHER) -v $(KERNELSRC) net/Makefile \
-- 'CONFIG_KLIPS' $(PATCHES)/net/Makefile.fs2_4.patch
-- @$(PATCHER) -v $(KERNELSRC) net/ipv4/af_inet.c \
-- 'CONFIG_KLIPS' $(PATCHES)/net/ipv4/af_inet.c.fs2_4.patch
-- @$(PATCHER) -v $(KERNELSRC) net/ipv4/udp.c \
-- 'CONFIG_KLIPS' $(PATCHES)/net/ipv4/udp.c.fs2_4.patch
-- @$(PATCHER) -v $(KERNELSRC) include/net/sock.h \
-- 'CONFIG_KLIPS' $(PATCHES)/include/net/sock.h.fs2_4.patch
--# Removed patches, will unpatch automatically.
-- @$(PATCHER) -v $(KERNELSRC) include/linux/proc_fs.h
-- @$(PATCHER) -v $(KERNELSRC) net/core/dev.c
-- @$(PATCHER) -v $(KERNELSRC) net/ipv4/protocol.c
-- @$(PATCHER) -v $(KERNELSRC) drivers/net/Space.c
-- @$(PATCHER) -v $(KERNELSRC) include/linux/netlink.h
-- @$(PATCHER) -v $(KERNELSRC) net/netlink/af_netlink.c
-- @$(PATCHER) -v $(KERNELSRC) net/netlink/netlink_dev.c
-- @$(PATCHER) -v $(KERNELSRC) drivers/isdn/isdn_net.c
--
--klipsdefaults:
-- @KERNELDEFCONFIG=$(KERNELSRC)/arch/$(ARCH)/defconfig ; \
-- KERNELCONFIG=$(KCFILE) ; \
-- if ! egrep -q 'CONFIG_KLIPS' $$KERNELDEFCONFIG ; \
-- then \
-- set -x ; \
-- cp -a $$KERNELDEFCONFIG $$KERNELDEFCONFIG.orig ; \
-- chmod u+w $$KERNELDEFCONFIG ; \
-- cat $$KERNELDEFCONFIG $(KERNELKLIPS)/defconfig \
-- >$$KERNELDEFCONFIG.tmp ; \
-- rm -f $$KERNELDEFCONFIG ; \
-- cp -a $$KERNELDEFCONFIG.tmp $$KERNELDEFCONFIG ; \
-- rm -f $$KERNELDEFCONFIG.tmp ; \
-- fi ; \
-- if ! egrep -q 'CONFIG_KLIPS' $$KERNELCONFIG ; \
-- then \
-- set -x ; \
-- cp -a $$KERNELCONFIG $$KERNELCONFIG.orig ; \
-- chmod u+w $$KERNELCONFIG ; \
-- cat $$KERNELCONFIG $(KERNELKLIPS)/defconfig \
-- >$$KERNELCONFIG.tmp ; \
-- rm -f $$KERNELCONFIG ; \
-- cp -a $$KERNELCONFIG.tmp $$KERNELCONFIG ; \
-- rm -f $$KERNELCONFIG.tmp ; \
-- fi
--
--
--
- # programs
-
- ABSOBJDIR:=$(shell mkdir -p ${OBJDIR}; cd ${OBJDIR} && pwd)
- OBJDIRTOP=${ABSOBJDIR}
-
- # Recursive clean dealt with elsewhere.
--local-clean-base: moduleclean
-+.PHONY: local-clean-base
-+local-clean-base:
- $(foreach file,$(RPMTMPDIR) $(RPMDEST) out.*build out.*install, \
- rm -rf $(file) ; ) # but leave out.kpatch
-
-@@ -219,339 +114,13 @@ local-clean-base: moduleclean
- # $(OBJDIR), "distclean" does not depend on it. If it did, "make
- # distclean" would have the quirky behaviour of first creating
- # $(OBJDIR) only to then delete it.
--distclean: moduleclean module24clean module26clean clean-kvm-keys
-+.PHONY: distclean
-+distclean: clean-kvm-keys
- rm -f $(RPMTMPDIR) $(RPMDEST) out.*
- rm -rf testing/pluto/*/OUTPUT*
- rm -rf OBJ.* $(OBJDIR)
- rm -rf BACKUP
-
--# proxies for major kernel make operations
--
--# do-everything entries
--KINSERT_PRE=precheck verset insert
--PRE=precheck verset kpatch
--POST=confcheck programs kernel install
--MPOST=confcheck programs module install
--
--# preliminaries
--precheck:
-- @if test ! -d $(KERNELSRC) -a ! -L $(KERNELSRC) ; \
-- then \
-- echo '*** cannot find directory "$(KERNELSRC)"!!' ; \
-- echo '*** may be necessary to add symlink to kernel source' ; \
-- exit 1 ; \
-- fi
-- @if ! cd $(KERNELSRC) ; \
-- then \
-- echo '*** cannot "cd $(KERNELSRC)"!!' ; \
-- echo '*** may be necessary to add symlink to kernel source' ; \
-- exit 1 ; \
-- fi
-- @if test ! -f $(KCFILE) ; \
-- then \
-- echo '*** cannot find "$(KCFILE)"!!' ; \
-- echo '*** perhaps kernel has never been configured?' ; \
-- echo '*** please do that first; the results are necessary.' ; \
-- exit 1 ; \
-- fi
-- @if test ! -f $(VERFILE) ; \
-- then \
-- echo '*** cannot find "$(VERFILE)"!!' ; \
-- echo '*** perhaps kernel has never been compiled?' ; \
-- echo '*** please do that first; the results are necessary.' ; \
-- exit 1 ; \
-- fi
--
--# configuring (exit statuses disregarded, something fishy here sometimes)
--xcf:
-- -cd $(KERNELSRC) ; $(MAKE) $(KERNMAKEOPTS) xconfig
--mcf:
-- -cd $(KERNELSRC) ; $(MAKE) $(KERNMAKEOPTS) menuconfig
--pcf:
-- -cd $(KERNELSRC) ; $(MAKE) $(KERNMAKEOPTS) config
--
--ocf:
-- -cd $(KERNELSRC) ; $(MAKE) $(KERNMAKEOPTS) oldconfig
--
--rcf:
-- cd $(KERNELSRC) ; $(MAKE) $(KERNMAKEOPTS) ${NONINTCONFIG} </dev/null
-- cd $(KERNELSRC) ; $(MAKE) $(KERNMAKEOPTS) dep >/dev/null
--
--kclean:
-- -cd $(KERNELSRC) ; $(MAKE) $(KERNMAKEOPTS) clean
--
--confcheck:
-- @if test ! -f $(KCFILE) ; \
-- then echo '*** no kernel configuration file written!!' ; exit 1 ; \
-- fi
-- @if ! egrep -q '^CONFIG_KLIPS=[my]' $(KCFILE) ; \
-- then echo '*** IPsec not in kernel config ($(KCFILE))!!' ; exit 1 ; \
-- fi
-- @if ! egrep -q 'CONFIG_KLIPS[ ]+1' $(ACFILE) && \
-- ! egrep -q 'CONFIG_KLIPS_MODULE[ ]+1' $(ACFILE) ; \
-- then echo '*** IPsec in kernel config ($(KCFILE)),' ; \
-- echo '*** but not in config header file ($(ACFILE))!!' ; \
-- exit 1 ; \
-- fi
-- @if egrep -q '^CONFIG_KLIPS=m' $(KCFILE) && \
-- ! egrep -q '^CONFIG_MODULES=y' $(KCFILE) ; \
-- then echo '*** IPsec configured as module in kernel with no module support!!' ; exit 1 ; \
-- fi
-- @if ! egrep -q 'CONFIG_KLIPS_AH[ ]+1' $(ACFILE) && \
-- ! egrep -q 'CONFIG_KLIPS_ESP[ ]+1' $(ACFILE) ; \
-- then echo '*** IPsec configuration must include AH or ESP!!' ; exit 1 ; \
-- fi
--
--# kernel building, with error checks
--kernel:
-- rm -f out.kbuild out.kinstall
-- # undocumented kernel folklore: clean BEFORE dep.
-- # we run make dep separately, because there is no point in running ERRCHECK
-- # on the make dep output.
-- # see LKML thread "clean before or after dep?"
-- ( cd $(KERNELSRC) ; $(MAKE) $(KERNMAKEOPTS) $(KERNCLEAN) $(KERNDEP) )
-- ( cd $(KERNELSRC) ; $(MAKE) $(KERNMAKEOPTS) $(KERNEL) ) 2>&1 | tee out.kbuild
-- @if egrep -q '^CONFIG_MODULES=y' $(KCFILE) ; \
-- then set -x ; \
-- ( cd $(KERNELSRC) ; \
-- $(MAKE) $(KERNMAKEOPTS) modules 2>&1 ) | tee -a out.kbuild ; \
-- fi
-- ${ERRCHECK} out.kbuild
--
--# module-only building, with error checks
--ifneq ($(strip $(MOD24BUILDDIR)),)
--${MOD24BUILDDIR}/Makefile : ${LIBRESWANSRCDIR}/packaging/makefiles/module24.make
-- mkdir -p ${MOD24BUILDDIR}
-- cp ${LIBRESWANSRCDIR}/packaging/makefiles/module24.make ${MOD24BUILDDIR}/Makefile
--
--module:
-- @if [ -f ${KERNELSRC}/README.libreswan-2 ] ; then \
-- echo "WARNING: Kernel source ${KERNELSRC} has already been patched with libreswan-2, out of tree build might fail!"; \
-- fi;
-- @if [ -f ${KERNELSRC}/README.openswan ] ; then \
-- echo "WARNING: Kernel source ${KERNELSRC} has already been patched with openswan, out of tree build might fail!"; \
-- fi;
-- @if [ -f ${KERNELSRC}/README.openswan-2 ] ; then \
-- echo "WARNING: Kernel source ${KERNELSRC} has already been patched with openswan-2, out of tree build might fail!"; \
-- fi;
-- @if [ -f ${KERNELSRC}/README.freeswan ] ; then \
-- echo "ERROR: Kernel source ${KERNELSRC} has already been patched with freeswan, out of tree build will fail!"; \
-- fi;
-- @if [ -f ${KERNELSRC}/Rules.make ] ; then \
-- echo "Building module for a 2.4 kernel"; ${MAKE} module24 ; \
-- else echo "Building module for a 2.6 kernel"; ${MAKE} module26; \
-- fi;
--
--modclean moduleclean:
-- @if [ -f ${KERNELSRC}/Rules.make ] ; then \
-- echo "Cleaning module for a 2.4 kernel"; ${MAKE} module24clean ; \
-- else echo "Cleaning module for a 2.6 kernel"; ${MAKE} module26clean; \
-- fi;
--
--module24:
-- @if [ ! -f ${KERNELSRC}/Rules.make ] ; then \
-- echo "Warning: Building for a 2.4 kernel in what looks like a 2.6 tree"; \
-- fi ; \
-- ${MAKE} ${MOD24BUILDDIR}/Makefile
-- ${MAKE} -C ${MOD24BUILDDIR} LIBRESWANSRCDIR=${LIBRESWANSRCDIR} ARCH=${ARCH} V=${V} ${MODULE_FLAGS} MODULE_DEF_INCLUDE=${MODULE_DEF_INCLUDE} TOPDIR=${KERNELSRC} -f Makefile ipsec.o
-- @echo
-- @echo '========================================================='
-- @echo
-- @echo 'KLIPS24 module built successfully. '
-- @echo ipsec.o is in ${MOD24BUILDDIR}
-- @echo
-- @(cd ${MOD24BUILDDIR}; ls -l ipsec.o)
-- @(cd ${MOD24BUILDDIR}; size ipsec.o)
-- @echo
-- @echo 'use make minstall as root to install it'
-- @echo
-- @echo '========================================================='
-- @echo
--
--mod24clean module24clean:
-- rm -rf ${MOD24BUILDDIR}
--
--#autoodetect 2.4 and 2.6
--module_install minstall install-module:
-- @if [ -f $(KERNELSRC)/Rules.make ] ; then \
-- $(MAKE) minstall24 ; \
-- else \
-- $(MAKE) minstall26 ; \
-- fi;
--
--# Extract the value of MODLIB from the output of $(MAKE). Also hide
--# the sup-process $(MAKE) so that GNU Make doesn't always invoke the
--# target ("make -n" ignored).
--#
--# If $(MAKE) directly appears in a target (for instance in minstall26)
--# then GNU Make will assume that it is a recursive make invocation and
--# invoke the target regardless of -n.
--#
--# XXX: minstall24 should also use this.
--
--osmodlib-from-make = \
-- OSMODLIB=$$($(MAKE) $(1) 2>/dev/null | sed -n -e 's/^MODLIB[ :=]*\([^;]*\).*/\1/p' | head -1) ; \
-- test -z "$$OSMODLIB" || echo "OSMODLIB=$$OSMODLIB ($(MAKE) $(1))"
--
--# module-only install, with error checks
--minstall24:
-- ( OSMODLIB=`${MAKE} -C $(KERNELSRC) -p dummy | ( sed -n -e '/^MODLIB/p' -e '/^MODLIB/q' ; cat > /dev/null ) | sed -e 's/^MODLIB[ :=]*\([^;]*\).*/\1/'` ; \
-- if [ -z "$$OSMODLIB" ] ; then \
-- OSMODLIB=`${MAKE} -C $(KERNELSRC) -n -p modules_install | ( sed -n -e '/^MODLIB/p' -e '/^MODLIB/q' ; cat > /dev/null ) | sed -e 's/^MODLIB[ :=]*\([^;]*\).*/\1/'` ; \
-- fi ; \
-- if [ -z "$$OSMODLIB" ] ; then \
-- echo "No known place to install module. Aborting." ; \
-- exit 93 ; \
-- fi ; \
-- set -x ; \
-- mkdir -p $$OSMODLIB/kernel/$(OSMOD_DESTDIR) ; \
-- cp $(MOD24BUILDDIR)/ipsec.o $$OSMODLIB/kernel/$(OSMOD_DESTDIR) ; \
-- if [ -f /sbin/depmod ] ; then /sbin/depmod -a ; fi; \
-- if [ -n "$(OSMOD_DESTDIR)" ] ; then \
-- mkdir -p $$OSMODLIB/kernel/$(OSMOD_DESTDIR) ; \
-- if [ -f $$OSMODLIB/kernel/ipsec.o -a -f $$OSMODLIB/kernel/$(OSMOD_DESTDIR)/ipsec.o ] ; then \
-- echo "WARNING: two ipsec.o modules found in $$OSMODLIB/kernel:" ; \
-- ls -l $$OSMODLIB/kernel/ipsec.o $$OSMODLIB/kernel/$(OSMOD_DESTDIR)/ipsec.o ; \
-- exit 1; \
-- fi ; \
-- fi ; \
-- set -x ) ;
--
--
--else
--module:
-- echo 'Building in place is no longer supported. Please set MOD24BUILDDIR='
-- exit 1
--
--endif
--
--# module-only building, with error checks
--ifneq ($(strip $(MODBUILDDIR)),)
--${MODBUILDDIR}/Makefile : ${LIBRESWANSRCDIR}/packaging/makefiles/module.make
-- mkdir -p ${MODBUILDDIR}
-- echo ln -s -f ${LIBRESWANSRCDIR}/linux/net/ipsec/des/*.S ${MODBUILDDIR}
-- (rm -f ${MODBUILDDIR}/des; mkdir -p ${MODBUILDDIR}/des && cd ${MODBUILDDIR}/des && ln -s -f ${LIBRESWANSRCDIR}/linux/net/ipsec/des/* . && ln -s -f Makefile.fs2_6 Makefile)
-- (rm -f ${MODBUILDDIR}/aes; mkdir -p ${MODBUILDDIR}/aes && cd ${MODBUILDDIR}/aes && ln -s -f ${LIBRESWANSRCDIR}/linux/net/ipsec/aes/* . && ln -s -f Makefile.fs2_6 Makefile)
-- mkdir -p ${MODBUILDDIR}/aes
-- cp ${LIBRESWANSRCDIR}/packaging/makefiles/module.make ${MODBUILDDIR}/Makefile
-- ln -s -f ${LIBRESWANSRCDIR}/linux/net/ipsec/match*.S ${MODBUILDDIR}
--
--module26:
-- @if [ -f ${KERNELSRC}/Rules.make ] ; then \ echo "Warning: Building for a 2.6+ kernel in what looks like a 2.4 tree"; \
-- fi ; \
-- ${MAKE} ${MODBUILDDIR}/Makefile
-- ${MAKE} -C ${KERNELSRC} ${KERNELBUILDMFLAGS} BUILDDIR=${MODBUILDDIR} SUBDIRS=${MODBUILDDIR} INITSYSTEM=$(INITSYSTEM) MODULE_DEF_INCLUDE=${MODULE_DEF_INCLUDE} MODULE_DEFCONFIG=${MODULE_DEFCONFIG} MODULE_EXTRA_INCLUDE=${MODULE_EXTRA_INCLUDE} ARCH=${ARCH} V=${V} modules
-- @echo
-- @echo '========================================================='
-- @echo
-- @echo 'KLIPS module built successfully. '
-- @echo ipsec.ko is in ${MODBUILDDIR}
-- @echo
-- @(cd ${MODBUILDDIR}; ls -l ipsec.ko)
-- @(cd ${MODBUILDDIR}; size ipsec.ko)
-- @echo
-- @echo 'use make minstall as root to install it'
-- @echo
-- @echo '========================================================='
-- @echo
--
--mod26clean module26clean:
-- rm -rf ${MODBUILDDIR}
--
--# module-only install, with error checks
--minstall26:
-- $(call osmodlib-from-make,-C $(KERNELSRC) -p help) ; \
-- if [ -z "$$OSMODLIB" ] ; then \
-- $(call osmodlib-from-make,-C $(KERNELSRC) -n -p modules_install) ; \
-- fi ; \
-- if [ -z "$$OSMODLIB" ] ; then \
-- echo "No known place to install module. Aborting." ; \
-- exit 93 ; \
-- fi ; \
-- set -x ; \
-- mkdir -p $$OSMODLIB/kernel/$(OSMOD_DESTDIR) ; \
-- cp $(MODBUILDDIR)/ipsec.ko $$OSMODLIB/kernel/$(OSMOD_DESTDIR) ; \
-- if [ -f /sbin/depmod ] ; then \
-- /sbin/depmod -a ; \
-- fi ; \
-- if [ -n "$(OSMOD_DESTDIR)" ] ; then \
-- mkdir -p $$OSMODLIB/kernel/$(OSMOD_DESTDIR) ; \
-- if [ -f $$OSMODLIB/kernel/ipsec.ko -a -f $$OSMODLIB/kernel/$(OSMOD_DESTDIR)/ipsec.ko ] ; then \
-- echo "WARNING: two ipsec.ko modules found in $$OSMODLIB/kernel:" ; \
-- ls -l $$OSMODLIB/kernel/ipsec.ko $$OSMODLIB/kernel/$(OSMOD_DESTDIR)/ipsec.ko ; \
-- exit 1; \
-- fi ; \
-- fi
--
--
--else
--module26:
-- echo 'Building in place is no longer supported. Please set MODBUILDDIR='
-- exit 1
--
--endif
--
--# kernel install, with error checks
--kinstall:
-- rm -f out.kinstall
-- >out.kinstall
-- # undocumented kernel folklore: modules_install must precede install (observed on RHL8.0)
-- @if egrep -q '^CONFIG_MODULES=y' $(KCFILE) ; \
-- then set -x ; \
-- ( cd $(KERNELSRC) ; \
-- $(MAKE) $(KERNMAKEOPTS) modules_install 2>&1 ) | tee -a out.kinstall ; \
-- fi
-- ( cd $(KERNELSRC) ; $(MAKE) $(KERNMAKEOPTS) install ) 2>&1 | tee -a out.kinstall
-- ${ERRCHECK} out.kinstall
--
--kernelpatch3 kernelpatch3.5 kernelpatch2.6 kernelpatch:
-- packaging/utils/kernelpatch 2.6
--
--kernelpatch2.4:
-- packaging/utils/kernelpatch 2.4
--
--nattpatch:
-- if [ -f ${KERNELSRC}/Makefile ]; then \
-- ${MAKE} nattpatch${KERNELREL}; \
-- else echo "Cannot determine Linux kernel version. Perhaps you need to set KERNELSRC? (eg: export KERNELSRC=/usr/src/linux-`uname -r`/)"; exit 1; \
-- fi;
--
--sarefpatch2.6:
-- #cat patches/kernel/2.6.38/0001-SAREF-add-support-for-SA-selection-through-sendmsg.patch
-- #packaging/utils/sarefpatch 2.6
-- echo ""
--
--nattpatch2.6:
-- packaging/utils/nattpatch 2.6
--
--nattpatch2.4:
-- packaging/utils/nattpatch 2.4
--
--nattupdate:
-- (cd UMLPOOL && diff -u plain26/net/ipv4/udp.c.orig plain26/net/ipv4/udp.c; exit 0) >nat-t/net/ipv4/udp.c.os2_6.patch
--
--# take all the patches out of the kernel
--# (Note, a couple of files are modified by non-patch means; they are
--# included in "make backup".)
--unpatch:
-- @echo \"make unpatch\" is obsolete. See make unapplypatch.
-- exit 1
--
--_unpatch:
-- for f in `find $(KERNELSRC)/. -name '*.preipsec' -print` ; \
-- do \
-- echo "restoring $$f:" ; \
-- dir=`dirname $$f` ; \
-- core=`basename $$f .preipsec` ; \
-- cd $$dir ; \
-- mv -f $$core.preipsec $$core ; \
-- rm -f $$core.wipsec $$core.ipsecmd5 ; \
-- done
--
--# at the moment there is no difference between snapshot and release build
--snapready: buildready
--relready: buildready
--ready: devready
-
- # set up for build
- buildready:
-@@ -604,13 +173,6 @@ deb:
- #debuild -S -sa
- @echo "to build optional KLIPS kernel module, run make deb-klips"
-
--deb-klips:
-- sudo module-assistant prepare -u .
-- sudo dpkg -i ../libreswan-modules-source_`make -s showdebversion`_all.deb
-- sudo module-assistant -u . prepare
-- sudo module-assistant -u . build libreswan
--
--
- release:
- packaging/utils/makerelease
-
-@@ -654,3 +216,5 @@ install-fipshmac:
- include ${LIBRESWANSRCDIR}/mk/docker-targets.mk
- include ${LIBRESWANSRCDIR}/mk/kvm-targets.mk
- include ${LIBRESWANSRCDIR}/mk/web-targets.mk
-+include ${LIBRESWANSRCDIR}/mk/kernel.mk
-+
-diff --git a/mk/kernel.mk b/mk/kernel.mk
-new file mode 100644
-index 0000000000..187167d440
---- /dev/null
-+++ b/mk/kernel.mk
-@@ -0,0 +1,468 @@
-+# Libreswan master makefile
-+#
-+# Copyright (C) 1998-2002 Henry Spencer.
-+# Copyright (C) 2003-2004 Xelerance Corporation
-+# Copyright (C) 2017, Richard Guy Briggs <rgb@tricolour.ca>
-+# Copyright (C) 2015-2018 Andrew Cagney
-+#
-+# This program is free software; you can redistribute it and/or modify it
-+# under the terms of the GNU General Public License as published by the
-+# Free Software Foundation; either version 2 of the License, or (at your
-+# option) any later version. See <https://www.gnu.org/licenses/gpl2.txt>.
-+#
-+# This program is distributed in the hope that it will be useful, but
-+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-+# for more details.
-+#
-+
-+PATCHES=linux
-+# where KLIPS goes in the kernel
-+# note, some of the patches know the last part of this path
-+KERNELKLIPS=$(KERNELSRC)/net/ipsec
-+KERNELCRYPTODES=$(KERNELSRC)/crypto/ciphers/des
-+KERNELLIBFREESWAN=$(KERNELSRC)/lib/libfreeswan
-+KERNELLIBZLIB=$(KERNELSRC)/lib/zlib
-+KERNELINCLUDE=$(KERNELSRC)/include
-+
-+MAKEUTILS=packaging/utils
-+ERRCHECK=${MAKEUTILS}/errcheck
-+KVUTIL=${MAKEUTILS}/kernelversion
-+KVSHORTUTIL=${MAKEUTILS}/kernelversion-short
-+
-+# kernel details
-+# what variant of our patches should we use, and where is it
-+KERNELREL=$(shell ${KVSHORTUTIL} ${KERNELSRC}/Makefile)
-+
-+# directories visited by all recursion
-+
-+# declaration for make's benefit
-+.PHONY: def insert kpatch patches _patches _patches2.4 \
-+ klipsdefaults programs man install \
-+ precheck verset confcheck kernel \
-+ module module24 module26 kinstall minstall minstall24 minstall26 \
-+ moduleclean mod24clean module24clean mod26clean module26clean \
-+ backup unpatch uninstall \
-+ check \
-+
-+kpatch: unapplypatch applypatch klipsdefaults
-+npatch: unapplynpatch applynpatch
-+sarefpatch: unapplysarefpatch applysarefpatch
-+
-+unapplypatch:
-+ @echo "info: making unapplypatch in `pwd` and KERNELSRC=\"${KERNELSRC}\";"
-+ -@if [ -f ${KERNELSRC}/libreswan.patch ]; then \
-+ echo Undoing previous patches; \
-+ cat ${KERNELSRC}/libreswan.patch | (cd ${KERNELSRC} && patch -p1 -R --force -E -z .preipsec --reverse --ignore-whitespace ); \
-+ fi
-+
-+applypatch:
-+ @echo "info: Now performing forward patches in `pwd`";
-+ ${MAKE} kernelpatch${KERNELREL} | tee ${KERNELSRC}/libreswan.patch | (cd ${KERNELSRC} && patch -p1 -b -z .preipsec --forward --ignore-whitespace )
-+
-+unapplynpatch:
-+ @echo "info: making unapplynpatch (note the second N) in `pwd`";
-+ -@if [ -f ${KERNELSRC}/natt.patch ]; then \
-+ echo Undoing previous NAT patches; \
-+ cat ${KERNELSRC}/natt.patch | (cd ${KERNELSRC} && patch -p1 -R --force -E -z .preipsec --reverse --ignore-whitespace ); \
-+ fi
-+
-+applynpatch:
-+ @echo "info: Now performing forward NAT patches in `pwd`";
-+ ${MAKE} nattpatch${KERNELREL} | tee ${KERNELSRC}/natt.patch | (cd ${KERNELSRC} && patch -p1 -b -z .preipsec --forward --ignore-whitespace )
-+
-+unapplysarefpatch:
-+ @echo "info: making unapplysarefpatch in `pwd`";
-+ -@if [ -f ${KERNELSRC}/saref.patch ]; then \
-+ echo Undoing previous saref patches; \
-+ cat ${KERNELSRC}/saref.patch | (cd ${KERNELSRC} && patch -p1 -R --force -E -z .preng --reverse --ignore-whitespace ); \
-+ fi
-+
-+applysarefpatch:
-+ @echo "info: Now performing SAref patches in `pwd`";
-+ ${MAKE} sarefpatch${KERNELREL} | tee ${KERNELSRC}/klipsng.patch | (cd ${KERNELSRC} && patch -p1 -b -z .preng --forward --ignore-whitespace )
-+
-+# patch kernel
-+PATCHER=packaging/utils/patcher
-+
-+_patches:
-+ echo "===============" >>out.kpatch
-+ echo "`date` `cd $(KERNELSRC) ; pwd`" >>out.kpatch
-+ $(MAKE) __patches$(KERNELREL) >>out.kpatch
-+
-+# Linux-2.4.0 version
-+__patches2.4:
-+ @$(PATCHER) -v -c $(KERNELSRC) Documentation/Configure.help \
-+ 'CONFIG_KLIPS' $(PATCHES)/Documentation/Configure.help.fs2_2.patch
-+ @$(PATCHER) -v $(KERNELSRC) net/Config.in \
-+ 'CONFIG_KLIPS' $(PATCHES)/net/Config.in.fs2_4.patch
-+ @$(PATCHER) -v $(KERNELSRC) net/Makefile \
-+ 'CONFIG_KLIPS' $(PATCHES)/net/Makefile.fs2_4.patch
-+ @$(PATCHER) -v $(KERNELSRC) net/ipv4/af_inet.c \
-+ 'CONFIG_KLIPS' $(PATCHES)/net/ipv4/af_inet.c.fs2_4.patch
-+ @$(PATCHER) -v $(KERNELSRC) net/ipv4/udp.c \
-+ 'CONFIG_KLIPS' $(PATCHES)/net/ipv4/udp.c.fs2_4.patch
-+ @$(PATCHER) -v $(KERNELSRC) include/net/sock.h \
-+ 'CONFIG_KLIPS' $(PATCHES)/include/net/sock.h.fs2_4.patch
-+# Removed patches, will unpatch automatically.
-+ @$(PATCHER) -v $(KERNELSRC) include/linux/proc_fs.h
-+ @$(PATCHER) -v $(KERNELSRC) net/core/dev.c
-+ @$(PATCHER) -v $(KERNELSRC) net/ipv4/protocol.c
-+ @$(PATCHER) -v $(KERNELSRC) drivers/net/Space.c
-+ @$(PATCHER) -v $(KERNELSRC) include/linux/netlink.h
-+ @$(PATCHER) -v $(KERNELSRC) net/netlink/af_netlink.c
-+ @$(PATCHER) -v $(KERNELSRC) net/netlink/netlink_dev.c
-+ @$(PATCHER) -v $(KERNELSRC) drivers/isdn/isdn_net.c
-+
-+klipsdefaults:
-+ @KERNELDEFCONFIG=$(KERNELSRC)/arch/$(ARCH)/defconfig ; \
-+ KERNELCONFIG=$(KCFILE) ; \
-+ if ! egrep -q 'CONFIG_KLIPS' $$KERNELDEFCONFIG ; \
-+ then \
-+ set -x ; \
-+ cp -a $$KERNELDEFCONFIG $$KERNELDEFCONFIG.orig ; \
-+ chmod u+w $$KERNELDEFCONFIG ; \
-+ cat $$KERNELDEFCONFIG $(KERNELKLIPS)/defconfig \
-+ >$$KERNELDEFCONFIG.tmp ; \
-+ rm -f $$KERNELDEFCONFIG ; \
-+ cp -a $$KERNELDEFCONFIG.tmp $$KERNELDEFCONFIG ; \
-+ rm -f $$KERNELDEFCONFIG.tmp ; \
-+ fi ; \
-+ if ! egrep -q 'CONFIG_KLIPS' $$KERNELCONFIG ; \
-+ then \
-+ set -x ; \
-+ cp -a $$KERNELCONFIG $$KERNELCONFIG.orig ; \
-+ chmod u+w $$KERNELCONFIG ; \
-+ cat $$KERNELCONFIG $(KERNELKLIPS)/defconfig \
-+ >$$KERNELCONFIG.tmp ; \
-+ rm -f $$KERNELCONFIG ; \
-+ cp -a $$KERNELCONFIG.tmp $$KERNELCONFIG ; \
-+ rm -f $$KERNELCONFIG.tmp ; \
-+ fi
-+
-+
-+local-clean-base: moduleclean
-+distclean: moduleclean module24clean module26clean clean-kvm-keys
-+
-+# proxies for major kernel make operations
-+
-+# do-everything entries
-+KINSERT_PRE=precheck verset insert
-+PRE=precheck verset kpatch
-+POST=confcheck programs kernel install
-+MPOST=confcheck programs module install
-+
-+# preliminaries
-+precheck:
-+ @if test ! -d $(KERNELSRC) -a ! -L $(KERNELSRC) ; \
-+ then \
-+ echo '*** cannot find directory "$(KERNELSRC)"!!' ; \
-+ echo '*** may be necessary to add symlink to kernel source' ; \
-+ exit 1 ; \
-+ fi
-+ @if ! cd $(KERNELSRC) ; \
-+ then \
-+ echo '*** cannot "cd $(KERNELSRC)"!!' ; \
-+ echo '*** may be necessary to add symlink to kernel source' ; \
-+ exit 1 ; \
-+ fi
-+ @if test ! -f $(KCFILE) ; \
-+ then \
-+ echo '*** cannot find "$(KCFILE)"!!' ; \
-+ echo '*** perhaps kernel has never been configured?' ; \
-+ echo '*** please do that first; the results are necessary.' ; \
-+ exit 1 ; \
-+ fi
-+ @if test ! -f $(VERFILE) ; \
-+ then \
-+ echo '*** cannot find "$(VERFILE)"!!' ; \
-+ echo '*** perhaps kernel has never been compiled?' ; \
-+ echo '*** please do that first; the results are necessary.' ; \
-+ exit 1 ; \
-+ fi
-+
-+# configuring (exit statuses disregarded, something fishy here sometimes)
-+xcf:
-+ -cd $(KERNELSRC) ; $(MAKE) $(KERNMAKEOPTS) xconfig
-+mcf:
-+ -cd $(KERNELSRC) ; $(MAKE) $(KERNMAKEOPTS) menuconfig
-+pcf:
-+ -cd $(KERNELSRC) ; $(MAKE) $(KERNMAKEOPTS) config
-+
-+ocf:
-+ -cd $(KERNELSRC) ; $(MAKE) $(KERNMAKEOPTS) oldconfig
-+
-+rcf:
-+ cd $(KERNELSRC) ; $(MAKE) $(KERNMAKEOPTS) ${NONINTCONFIG} </dev/null
-+ cd $(KERNELSRC) ; $(MAKE) $(KERNMAKEOPTS) dep >/dev/null
-+
-+kclean:
-+ -cd $(KERNELSRC) ; $(MAKE) $(KERNMAKEOPTS) clean
-+
-+confcheck:
-+ @if test ! -f $(KCFILE) ; \
-+ then echo '*** no kernel configuration file written!!' ; exit 1 ; \
-+ fi
-+ @if ! egrep -q '^CONFIG_KLIPS=[my]' $(KCFILE) ; \
-+ then echo '*** IPsec not in kernel config ($(KCFILE))!!' ; exit 1 ; \
-+ fi
-+ @if ! egrep -q 'CONFIG_KLIPS[ ]+1' $(ACFILE) && \
-+ ! egrep -q 'CONFIG_KLIPS_MODULE[ ]+1' $(ACFILE) ; \
-+ then echo '*** IPsec in kernel config ($(KCFILE)),' ; \
-+ echo '*** but not in config header file ($(ACFILE))!!' ; \
-+ exit 1 ; \
-+ fi
-+ @if egrep -q '^CONFIG_KLIPS=m' $(KCFILE) && \
-+ ! egrep -q '^CONFIG_MODULES=y' $(KCFILE) ; \
-+ then echo '*** IPsec configured as module in kernel with no module support!!' ; exit 1 ; \
-+ fi
-+ @if ! egrep -q 'CONFIG_KLIPS_AH[ ]+1' $(ACFILE) && \
-+ ! egrep -q 'CONFIG_KLIPS_ESP[ ]+1' $(ACFILE) ; \
-+ then echo '*** IPsec configuration must include AH or ESP!!' ; exit 1 ; \
-+ fi
-+
-+# kernel building, with error checks
-+kernel:
-+ rm -f out.kbuild out.kinstall
-+ # undocumented kernel folklore: clean BEFORE dep.
-+ # we run make dep separately, because there is no point in running ERRCHECK
-+ # on the make dep output.
-+ # see LKML thread "clean before or after dep?"
-+ ( cd $(KERNELSRC) ; $(MAKE) $(KERNMAKEOPTS) $(KERNCLEAN) $(KERNDEP) )
-+ ( cd $(KERNELSRC) ; $(MAKE) $(KERNMAKEOPTS) $(KERNEL) ) 2>&1 | tee out.kbuild
-+ @if egrep -q '^CONFIG_MODULES=y' $(KCFILE) ; \
-+ then set -x ; \
-+ ( cd $(KERNELSRC) ; \
-+ $(MAKE) $(KERNMAKEOPTS) modules 2>&1 ) | tee -a out.kbuild ; \
-+ fi
-+ ${ERRCHECK} out.kbuild
-+
-+# module-only building, with error checks
-+ifneq ($(strip $(MOD24BUILDDIR)),)
-+${MOD24BUILDDIR}/Makefile : ${LIBRESWANSRCDIR}/packaging/makefiles/module24.make
-+ mkdir -p ${MOD24BUILDDIR}
-+ cp ${LIBRESWANSRCDIR}/packaging/makefiles/module24.make ${MOD24BUILDDIR}/Makefile
-+
-+module:
-+ @if [ -f ${KERNELSRC}/README.libreswan-2 ] ; then \
-+ echo "WARNING: Kernel source ${KERNELSRC} has already been patched with libreswan-2, out of tree build might fail!"; \
-+ fi;
-+ @if [ -f ${KERNELSRC}/README.openswan ] ; then \
-+ echo "WARNING: Kernel source ${KERNELSRC} has already been patched with openswan, out of tree build might fail!"; \
-+ fi;
-+ @if [ -f ${KERNELSRC}/README.openswan-2 ] ; then \
-+ echo "WARNING: Kernel source ${KERNELSRC} has already been patched with openswan-2, out of tree build might fail!"; \
-+ fi;
-+ @if [ -f ${KERNELSRC}/README.freeswan ] ; then \
-+ echo "ERROR: Kernel source ${KERNELSRC} has already been patched with freeswan, out of tree build will fail!"; \
-+ fi;
-+ @if [ -f ${KERNELSRC}/Rules.make ] ; then \
-+ echo "Building module for a 2.4 kernel"; ${MAKE} module24 ; \
-+ else echo "Building module for a 2.6 kernel"; ${MAKE} module26; \
-+ fi;
-+
-+modclean moduleclean:
-+ @if [ -f ${KERNELSRC}/Rules.make ] ; then \
-+ echo "Cleaning module for a 2.4 kernel"; ${MAKE} module24clean ; \
-+ else echo "Cleaning module for a 2.6 kernel"; ${MAKE} module26clean; \
-+ fi;
-+
-+module24:
-+ @if [ ! -f ${KERNELSRC}/Rules.make ] ; then \
-+ echo "Warning: Building for a 2.4 kernel in what looks like a 2.6 tree"; \
-+ fi ; \
-+ ${MAKE} ${MOD24BUILDDIR}/Makefile
-+ ${MAKE} -C ${MOD24BUILDDIR} LIBRESWANSRCDIR=${LIBRESWANSRCDIR} ARCH=${ARCH} V=${V} ${MODULE_FLAGS} MODULE_DEF_INCLUDE=${MODULE_DEF_INCLUDE} TOPDIR=${KERNELSRC} -f Makefile ipsec.o
-+ @echo
-+ @echo '========================================================='
-+ @echo
-+ @echo 'KLIPS24 module built successfully. '
-+ @echo ipsec.o is in ${MOD24BUILDDIR}
-+ @echo
-+ @(cd ${MOD24BUILDDIR}; ls -l ipsec.o)
-+ @(cd ${MOD24BUILDDIR}; size ipsec.o)
-+ @echo
-+ @echo 'use make minstall as root to install it'
-+ @echo
-+ @echo '========================================================='
-+ @echo
-+
-+mod24clean module24clean:
-+ rm -rf ${MOD24BUILDDIR}
-+
-+#autoodetect 2.4 and 2.6
-+module_install minstall install-module:
-+ @if [ -f $(KERNELSRC)/Rules.make ] ; then \
-+ $(MAKE) minstall24 ; \
-+ else \
-+ $(MAKE) minstall26 ; \
-+ fi;
-+
-+# Extract the value of MODLIB from the output of $(MAKE). Also hide
-+# the sup-process $(MAKE) so that GNU Make doesn't always invoke the
-+# target ("make -n" ignored).
-+#
-+# If $(MAKE) directly appears in a target (for instance in minstall26)
-+# then GNU Make will assume that it is a recursive make invocation and
-+# invoke the target regardless of -n.
-+#
-+# XXX: minstall24 should also use this.
-+
-+osmodlib-from-make = \
-+ OSMODLIB=$$($(MAKE) $(1) 2>/dev/null | sed -n -e 's/^MODLIB[ :=]*\([^;]*\).*/\1/p' | head -1) ; \
-+ test -z "$$OSMODLIB" || echo "OSMODLIB=$$OSMODLIB ($(MAKE) $(1))"
-+
-+# module-only install, with error checks
-+minstall24:
-+ ( OSMODLIB=`${MAKE} -C $(KERNELSRC) -p dummy | ( sed -n -e '/^MODLIB/p' -e '/^MODLIB/q' ; cat > /dev/null ) | sed -e 's/^MODLIB[ :=]*\([^;]*\).*/\1/'` ; \
-+ if [ -z "$$OSMODLIB" ] ; then \
-+ OSMODLIB=`${MAKE} -C $(KERNELSRC) -n -p modules_install | ( sed -n -e '/^MODLIB/p' -e '/^MODLIB/q' ; cat > /dev/null ) | sed -e 's/^MODLIB[ :=]*\([^;]*\).*/\1/'` ; \
-+ fi ; \
-+ if [ -z "$$OSMODLIB" ] ; then \
-+ echo "No known place to install module. Aborting." ; \
-+ exit 93 ; \
-+ fi ; \
-+ set -x ; \
-+ mkdir -p $$OSMODLIB/kernel/$(OSMOD_DESTDIR) ; \
-+ cp $(MOD24BUILDDIR)/ipsec.o $$OSMODLIB/kernel/$(OSMOD_DESTDIR) ; \
-+ if [ -f /sbin/depmod ] ; then /sbin/depmod -a ; fi; \
-+ if [ -n "$(OSMOD_DESTDIR)" ] ; then \
-+ mkdir -p $$OSMODLIB/kernel/$(OSMOD_DESTDIR) ; \
-+ if [ -f $$OSMODLIB/kernel/ipsec.o -a -f $$OSMODLIB/kernel/$(OSMOD_DESTDIR)/ipsec.o ] ; then \
-+ echo "WARNING: two ipsec.o modules found in $$OSMODLIB/kernel:" ; \
-+ ls -l $$OSMODLIB/kernel/ipsec.o $$OSMODLIB/kernel/$(OSMOD_DESTDIR)/ipsec.o ; \
-+ exit 1; \
-+ fi ; \
-+ fi ; \
-+ set -x ) ;
-+
-+
-+else
-+module:
-+ echo 'Building in place is no longer supported. Please set MOD24BUILDDIR='
-+ exit 1
-+
-+endif
-+
-+# module-only building, with error checks
-+ifneq ($(strip $(MODBUILDDIR)),)
-+${MODBUILDDIR}/Makefile : ${LIBRESWANSRCDIR}/packaging/makefiles/module.make
-+ mkdir -p ${MODBUILDDIR}
-+ echo ln -s -f ${LIBRESWANSRCDIR}/linux/net/ipsec/des/*.S ${MODBUILDDIR}
-+ (rm -f ${MODBUILDDIR}/des; mkdir -p ${MODBUILDDIR}/des && cd ${MODBUILDDIR}/des && ln -s -f ${LIBRESWANSRCDIR}/linux/net/ipsec/des/* . && ln -s -f Makefile.fs2_6 Makefile)
-+ (rm -f ${MODBUILDDIR}/aes; mkdir -p ${MODBUILDDIR}/aes && cd ${MODBUILDDIR}/aes && ln -s -f ${LIBRESWANSRCDIR}/linux/net/ipsec/aes/* . && ln -s -f Makefile.fs2_6 Makefile)
-+ mkdir -p ${MODBUILDDIR}/aes
-+ cp ${LIBRESWANSRCDIR}/packaging/makefiles/module.make ${MODBUILDDIR}/Makefile
-+ ln -s -f ${LIBRESWANSRCDIR}/linux/net/ipsec/match*.S ${MODBUILDDIR}
-+
-+module26:
-+ @if [ -f ${KERNELSRC}/Rules.make ] ; then \ echo "Warning: Building for a 2.6+ kernel in what looks like a 2.4 tree"; \
-+ fi ; \
-+ ${MAKE} ${MODBUILDDIR}/Makefile
-+ ${MAKE} -C ${KERNELSRC} ${KERNELBUILDMFLAGS} BUILDDIR=${MODBUILDDIR} SUBDIRS=${MODBUILDDIR} INITSYSTEM=$(INITSYSTEM) MODULE_DEF_INCLUDE=${MODULE_DEF_INCLUDE} MODULE_DEFCONFIG=${MODULE_DEFCONFIG} MODULE_EXTRA_INCLUDE=${MODULE_EXTRA_INCLUDE} ARCH=${ARCH} V=${V} modules
-+ @echo
-+ @echo '========================================================='
-+ @echo
-+ @echo 'KLIPS module built successfully. '
-+ @echo ipsec.ko is in ${MODBUILDDIR}
-+ @echo
-+ @(cd ${MODBUILDDIR}; ls -l ipsec.ko)
-+ @(cd ${MODBUILDDIR}; size ipsec.ko)
-+ @echo
-+ @echo 'use make minstall as root to install it'
-+ @echo
-+ @echo '========================================================='
-+ @echo
-+
-+mod26clean module26clean:
-+ rm -rf ${MODBUILDDIR}
-+
-+# module-only install, with error checks
-+minstall26:
-+ $(call osmodlib-from-make,-C $(KERNELSRC) -p help) ; \
-+ if [ -z "$$OSMODLIB" ] ; then \
-+ $(call osmodlib-from-make,-C $(KERNELSRC) -n -p modules_install) ; \
-+ fi ; \
-+ if [ -z "$$OSMODLIB" ] ; then \
-+ echo "No known place to install module. Aborting." ; \
-+ exit 93 ; \
-+ fi ; \
-+ set -x ; \
-+ mkdir -p $$OSMODLIB/kernel/$(OSMOD_DESTDIR) ; \
-+ cp $(MODBUILDDIR)/ipsec.ko $$OSMODLIB/kernel/$(OSMOD_DESTDIR) ; \
-+ if [ -f /sbin/depmod ] ; then \
-+ /sbin/depmod -a ; \
-+ fi ; \
-+ if [ -n "$(OSMOD_DESTDIR)" ] ; then \
-+ mkdir -p $$OSMODLIB/kernel/$(OSMOD_DESTDIR) ; \
-+ if [ -f $$OSMODLIB/kernel/ipsec.ko -a -f $$OSMODLIB/kernel/$(OSMOD_DESTDIR)/ipsec.ko ] ; then \
-+ echo "WARNING: two ipsec.ko modules found in $$OSMODLIB/kernel:" ; \
-+ ls -l $$OSMODLIB/kernel/ipsec.ko $$OSMODLIB/kernel/$(OSMOD_DESTDIR)/ipsec.ko ; \
-+ exit 1; \
-+ fi ; \
-+ fi
-+
-+
-+else
-+module26:
-+ echo 'Building in place is no longer supported. Please set MODBUILDDIR='
-+ exit 1
-+
-+endif
-+
-+# kernel install, with error checks
-+kinstall:
-+ rm -f out.kinstall
-+ >out.kinstall
-+ # undocumented kernel folklore: modules_install must precede install (observed on RHL8.0)
-+ @if egrep -q '^CONFIG_MODULES=y' $(KCFILE) ; \
-+ then set -x ; \
-+ ( cd $(KERNELSRC) ; \
-+ $(MAKE) $(KERNMAKEOPTS) modules_install 2>&1 ) | tee -a out.kinstall ; \
-+ fi
-+ ( cd $(KERNELSRC) ; $(MAKE) $(KERNMAKEOPTS) install ) 2>&1 | tee -a out.kinstall
-+ ${ERRCHECK} out.kinstall
-+
-+kernelpatch3 kernelpatch3.5 kernelpatch2.6 kernelpatch:
-+ packaging/utils/kernelpatch 2.6
-+
-+kernelpatch2.4:
-+ packaging/utils/kernelpatch 2.4
-+
-+nattpatch:
-+ if [ -f ${KERNELSRC}/Makefile ]; then \
-+ ${MAKE} nattpatch${KERNELREL}; \
-+ else echo "Cannot determine Linux kernel version. Perhaps you need to set KERNELSRC? (eg: export KERNELSRC=/usr/src/linux-`uname -r`/)"; exit 1; \
-+ fi;
-+
-+sarefpatch2.6:
-+ #cat patches/kernel/2.6.38/0001-SAREF-add-support-for-SA-selection-through-sendmsg.patch
-+ #packaging/utils/sarefpatch 2.6
-+ echo ""
-+
-+nattpatch2.6:
-+ packaging/utils/nattpatch 2.6
-+
-+nattpatch2.4:
-+ packaging/utils/nattpatch 2.4
-+
-+nattupdate:
-+ (cd UMLPOOL && diff -u plain26/net/ipv4/udp.c.orig plain26/net/ipv4/udp.c; exit 0) >nat-t/net/ipv4/udp.c.os2_6.patch
-+
-+# take all the patches out of the kernel
-+# (Note, a couple of files are modified by non-patch means; they are
-+# included in "make backup".)
-+unpatch:
-+ @echo \"make unpatch\" is obsolete. See make unapplypatch.
-+ exit 1
-+
-+_unpatch:
-+ for f in `find $(KERNELSRC)/. -name '*.preipsec' -print` ; \
-+ do \
-+ echo "restoring $$f:" ; \
-+ dir=`dirname $$f` ; \
-+ core=`basename $$f .preipsec` ; \
-+ cd $$dir ; \
-+ mv -f $$core.preipsec $$core ; \
-+ rm -f $$core.wipsec $$core.ipsecmd5 ; \
-+ done
+++ /dev/null
-From fa00316e8c5151747f3e80895e6afd9ee1a9c0cd Mon Sep 17 00:00:00 2001
-From: Andrew Cagney <cagney@gnu.org>
-Date: Thu, 25 Oct 2018 21:02:45 -0400
-Subject: [PATCH] building: when !USE_KLIPS=true cripple klips kernel module
- rules
-
----
- Makefile | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 0b070966e6..2fcf0229fd 100644
---- a/Makefile
-+++ b/Makefile
-@@ -216,5 +216,6 @@ install-fipshmac:
- include ${LIBRESWANSRCDIR}/mk/docker-targets.mk
- include ${LIBRESWANSRCDIR}/mk/kvm-targets.mk
- include ${LIBRESWANSRCDIR}/mk/web-targets.mk
-+ifeq ($(USE_KLIPS),true)
- include ${LIBRESWANSRCDIR}/mk/kernel.mk
--
-+endif
PKG_NAME:=linknx
PKG_VERSION:=0.0.1.37
-PKG_RELEASE:=1
-
-PKG_MAINTAINER:=Othmar Truniger <github@truniger.ch>
-PKG_LICENSE:=GPL-2.0+
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-${PKG_VERSION}.tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/linknx/linknx/tar.gz/$(PKG_VERSION)?
PKG_HASH:=3c3aaf8c409538153b15f5fb975a4485e58c4820cfea289a3f20777ba69782ab
-PKG_BUILD_DEPENDS:=argp-standalone
-PKG_FORTIFY_SOURCE:=1
+PKG_MAINTAINER:=Othmar Truniger <github@truniger.ch>
+PKG_LICENSE:=GPL-2.0-or-later
+PKG_LICENSE_FILES:=LICENSE
+PKG_BUILD_DEPENDS:=USE_UCLIBC:argp-standalone USE_MUSL:argp-standalone
PKG_FIXUP:=autoreconf
+include $(INCLUDE_DIR)/uclibc++.mk
include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
define Package/linknx
SECTION:=net
CATEGORY:=Network
TITLE:=KNX home automation platform
URL:=https://github.com/linknx/linknx
- DEPENDS:=+pthsem +lua +luac +libstdcpp +libcurl +libesmtp
+ DEPENDS:=+pthsem +lua +luac +libcurl +libesmtp $(CXX_DEPENDS) $(ICONV_DEPENDS)
endef
CONFIGURE_ARGS+= \
--- /dev/null
+From 8c025865f7cc57761d2227b897ba3980090391c2 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Mon, 24 Jun 2019 14:13:34 -0700
+Subject: [PATCH] Use AM_ICONV for properly supporting libiconv
+
+AM_ICONV does multiple things like checking the function parameters to
+avoid const problems.
+---
+ configure.ac | 1 +
+ src/Makefile.am | 2 +-
+ src/objectcontroller.cpp | 2 +-
+ 3 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 22f242c..23582cb 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -10,6 +10,7 @@ PKG_CONFIG=`which pkg-config`
+ AC_PROG_CXX
+ AC_PROG_CC
+ AC_PROG_RANLIB
++AM_ICONV
+ AC_CHECK_PTHSEM(2.0.4,yes,yes,no)
+ AC_CHECK_HEADER(argp.h,,[AC_MSG_ERROR([argp_parse not found])])
+ AC_SEARCH_LIBS(argp_parse,argp,,[AC_MSG_ERROR([argp_parse not found])])
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 6a4f493..6e0dc03 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -7,5 +7,5 @@ B64_CFLAGS=
+ B64_LIBS=
+ endif
+ AM_CPPFLAGS=-I$(top_srcdir)/include -I$(top_srcdir)/ticpp $(B64_CFLAGS) $(PTH_CPPFLAGS) $(LIBCURL_CPPFLAGS) $(LOG4CPP_CFLAGS) $(LUA_CFLAGS) $(MYSQL_CFLAGS) $(ESMTP_CFLAGS)
+-linknx_LDADD=$(top_srcdir)/ticpp/libticpp.a $(B64_LIBS) $(PTH_LDFLAGS) $(PTH_LIBS) $(LIBCURL) $(LOG4CPP_LIBS) $(LUA_LIBS) $(MYSQL_LIBS) $(ESMTP_LIBS) -lm
++linknx_LDADD=$(top_srcdir)/ticpp/libticpp.a $(LIBICONV) $(B64_LIBS) $(PTH_LDFLAGS) $(PTH_LIBS) $(LIBCURL) $(LOG4CPP_LIBS) $(LUA_LIBS) $(MYSQL_LIBS) $(ESMTP_LIBS) -lm
+ linknx_SOURCES=linknx.cpp logger.cpp ruleserver.cpp objectcontroller.cpp eibclient.c threads.cpp timermanager.cpp persistentstorage.cpp xmlserver.cpp smsgateway.cpp emailgateway.cpp knxconnection.cpp services.cpp suncalc.cpp luacondition.cpp ioport.cpp ruleserver.h objectcontroller.h threads.h timermanager.h persistentstorage.h xmlserver.h smsgateway.h emailgateway.h knxconnection.h services.h suncalc.h luacondition.h ioport.h logger.h
+diff --git a/src/objectcontroller.cpp b/src/objectcontroller.cpp
+index fb2fc3a..7622491 100644
+--- a/src/objectcontroller.cpp
++++ b/src/objectcontroller.cpp
+@@ -2925,7 +2925,7 @@ std::string StringObjectValue::transcode(const std::string &source, const std::s
+ iconv_t conversionDescriptor = iconv_open((targetEncoding + "//TRANSLIT").c_str(), sourceEncoding.c_str());
+ char cSource[source.size()];
+ memcpy(cSource, source.c_str(), source.size() + 1);
+- char *sourceStart = &cSource[0];
++ ICONV_CONST char *sourceStart = &cSource[0];
+ size_t sourceLength = source.size();
+ const size_t targetLength = source.size() * 5; // Should be pretty enough even in worst cases.
+ char targetChars[targetLength];
+
PKG_NAME:=lora-gateway-hal
PKG_VERSION:=5.0.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE_URL:=https://codeload.github.com/Lora-net/lora_gateway/tar.gz/v$(PKG_VERSION)?
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
$(CP) $(PKG_BUILD_DIR)/libloragw/inc/loragw_* $(1)/usr/include/libloragw
$(CP) $(PKG_BUILD_DIR)/libloragw/config.h $(1)/usr/include/libloragw
$(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/libloragw/libloragw.so* $(1)/usr/lib/
+ $(CP) $(PKG_BUILD_DIR)/libloragw/libloragw.so* $(1)/usr/lib/
$(LN) libloragw.so.0 $(1)/usr/lib/libloragw.so
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) $(PKG_BUILD_DIR)/loragw.pc $(1)/usr/lib/pkgconfig/
define Package/libloragw/install
$(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/libloragw/libloragw.so.* $(1)/usr/lib/
+ $(CP) $(PKG_BUILD_DIR)/libloragw/libloragw.so.* $(1)/usr/lib/
endef
define Package/libloragw-tests/install
include $(TOPDIR)/rules.mk
PKG_NAME:=mDNSResponder
-PKG_VERSION:=878.200.35
-PKG_RELEASE:=1
+PKG_VERSION:=IETF104
+PKG_RELEASE:=2
PKG_SOURCE:=mDNSResponder-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://opensource.apple.com/tarballs/mDNSResponder/
-PKG_HASH:=e777b4d7dbf5eb1552cb80090ad1ede319067ab6e45e3990d68aabf6e8b3f5a0
+PKG_SOURCE_URL:=https://opensource.apple.com/tarballs/mDNSResponder/IETF/
+PKG_HASH:=b3a76fd35cf2d561546c2fbeaea1e5998b7e04b8330afb918ea5fbdeb202162c
PKG_MAINTAINER:=
PKG_LICENSE:=Apache-2.0
+++ /dev/null
---- a/Clients/Makefile
-+++ b/Clients/Makefile
-@@ -27,6 +27,8 @@
-
- #############################################################################
-
-+CC = @cc
-+
- # On OS X the dns_sd library functions are included in libSystem, which is implicitly linked with every executable
- # If /usr/lib/libSystem.dylib exists, then we're on OS X, so we don't need also to link the "dns_sd" shared library
- ifneq "$(wildcard /usr/lib/libSystem.dylib)" ""
-@@ -46,10 +48,10 @@ build:
- mkdir build
-
- build/dns-sd: build dns-sd.c ClientCommon.c
-- $(CC) $(filter %.c %.o, $+) $(LIBS) -I../mDNSShared -Wall -o $@
-+ $(CC) $(CFLAGS) $(filter %.c %.o, $+) $(LIBS) -I../mDNSShared -Wall -o $@
-
- build/dns-sd64: build dns-sd.c ClientCommon.c
-- $(CC) $(filter %.c %.o, $+) $(LIBS) -I../mDNSShared -Wall -o $@ -m64
-+ $(CC) $(CFLAGS) $(filter %.c %.o, $+) $(LIBS) -I../mDNSShared -Wall -o $@ -m64
-
- # Note, we can make a 'fat' version of dns-sd using 'lipo', as shown below, but we
- # don't, because we don't want or need a 'fat' version of dns-sd, because it will
---- a/mDNSPosix/Makefile
-+++ b/mDNSPosix/Makefile
-@@ -54,11 +54,12 @@ COREDIR = ../mDNSCore
- SHAREDDIR ?= ../mDNSShared
- JDK = /usr/jdk
-
--CC = @cc
-+CC = @gcc
- BISON = @bison
- FLEX = @flex
- ST = @strip
--LD = ld -shared
-+LD = @ld
-+SOOPTS = -shared
- CP = cp
- RM = rm
- LN = ln -s -f
-@@ -92,7 +93,7 @@ CFLAGS_DEBUG = -O0 -DMDNS_DEBUGMSGS=0
- CFLAGS_OS = -DNOT_HAVE_DAEMON -DNOT_HAVE_SA_LEN -DNOT_HAVE_SOCKLEN_T -DNOT_HAVE_IF_NAMETOINDEX \
- -DLOG_PERROR=0 -D_XPG4_2 -D__EXTENSIONS__ -DHAVE_BROKEN_RECVIF_NAME -DTARGET_OS_SOLARIS
- CC = gcc
--LD = gcc -shared
-+LD = gcc
- LINKOPTS = -lsocket -lnsl -lresolv
- JAVACFLAGS_OS += -I$(JDK)/include/solaris
- ifneq ($(DEBUG),1)
-@@ -149,7 +150,8 @@ -D__MAC_OS_X_VERSION_MIN_REQUIRED=__MAC_OS_X_VERSION_10_4 \
- -DHAVE_STRLCPY=1 \
- -D__APPLE_USE_RFC_2292 #-Wunreachable-code
- CC = gcc
--LD = $(CC) -dynamiclib
-+LD = $(CC)
-+SOOPTS= -dynamiclib
- LINKOPTS = -lSystem
- LDSUFFIX = dylib
- JDK = /System/Library/Frameworks/JavaVM.framework/Home
-@@ -172,8 +174,9 @@ NSSLIBFILE := $(NSSLIBNAME)-$(NSSVERSIO
- NSSLINKNAME := $(NSSLIBNAME).so.2
- NSSINSTPATH := /lib
-
--# If not otherwise defined, we install into /usr/lib and /usr/include
-+# If not otherwise defined, we install into /usr/lib, /usr/include and /etc
- # and our startup script is called mdns (e.g. /etc/init.d/mdns)
-+ETCBASE?=/etc
- INSTBASE?=/usr
- STARTUPSCRIPTNAME?=mdns
-
-@@ -259,7 +262,7 @@ libdns_sd: setup $(BUILDDIR)/libdns_sd.$
- CLIENTLIBOBJS = $(OBJDIR)/dnssd_clientlib.c.so.o $(OBJDIR)/dnssd_clientstub.c.so.o $(OBJDIR)/dnssd_ipc.c.so.o
-
- $(BUILDDIR)/libdns_sd.$(LDSUFFIX): $(CLIENTLIBOBJS)
-- @$(LD) $(LINKOPTS) -o $@ $+
-+ @$(LD) $(SOOPTS) $(LINKOPTS) -o $@ $+
- @$(STRIP) $@
-
- Clients: setup libdns_sd ../Clients/build/dns-sd
-@@ -294,7 +297,7 @@ InstalledManPages: $(MANPATH)/man8/mdnsd
- InstalledClients: $(INSTBASE)/bin/dns-sd
- @echo $+ " installed"
-
--InstalledNSS: $(NSSINSTPATH)/$(NSSLINKNAME) /etc/nss_mdns.conf $(MANPATH)/man5/nss_mdns.conf.5 $(MANPATH)/man8/libnss_mdns.8
-+InstalledNSS: $(NSSINSTPATH)/$(NSSLINKNAME) $(ETCBASE)/nss_mdns.conf $(MANPATH)/man5/nss_mdns.conf.5 $(MANPATH)/man8/libnss_mdns.8
- @echo $+ " installed"
-
- # Note: If daemon already installed, we make sure it's stopped before overwriting it
-@@ -347,19 +350,21 @@ $(INSTBASE)/bin/dns-sd: ../Clients/build
-
- $(NSSINSTPATH)/$(NSSLINKNAME): $(NSSINSTPATH)/$(NSSLIBFILE)
- $(LN) $< $@
-- ldconfig
-+ifdef LDCONFIG
-+ $(LDCONFIG)
-+endif
-
- $(NSSINSTPATH)/$(NSSLIBFILE): $(BUILDDIR)/$(NSSLIBFILE)
- $(CP) $< $@
- chmod 444 $@
-
--/etc/nss_mdns.conf: nss_mdns.conf
-+$(ETCBASE)/nss_mdns.conf: nss_mdns.conf
- $(CP) $< $@
- chmod 444 $@
- # Check the nsswitch.conf file.
- # If 'mdns' does not already appear on the "hosts:" line, then add it right before 'dns'
-- cp -f /etc/nsswitch.conf /etc/nsswitch.conf.pre-mdns
-- sed -e '/mdns/!s/^\(hosts:.*\)dns\(.*\)/\1mdns dns\2/' /etc/nsswitch.conf.pre-mdns > /etc/nsswitch.conf
-+ -[ -f $(ETCBASE)/nsswitch.conf ] && cp -f $(ETCBASE)/nsswitch.conf $(ETCBASE)/nsswitch.conf.pre-mdns
-+ -[ -f $(ETCBASE)/nsswitch.conf ] && sed -e '/mdns/!s/^\(hosts:.*\)dns\(.*\)/\1mdns dns\2/' $(ETCBASE)/nsswitch.conf.pre-mdns > $(ETCBASE)/nsswitch.conf
-
- #############################################################################
--- /dev/null
+--- a/mDNSShared/PlatformCommon.c
++++ b/mDNSShared/PlatformCommon.c
+@@ -43,6 +43,10 @@
+ typedef unsigned int socklen_t;
+ #endif
+
++#ifndef TCP_NOTSENT_LOWAT
++#define TCP_NOTSENT_LOWAT 25
++#endif
++
+ #if MDNS_MALLOC_DEBUGGING
+ // We ONLY want this for malloc debugging--on a running production system we want to deal with
+ // malloc failures, not just die. There is a small performance penalty for enabling these options
+++ /dev/null
-diff --git a/Clients/Makefile b/Clients/Makefile
-index 383af31..925c20e 100755
---- a/Clients/Makefile
-+++ b/Clients/Makefile
-@@ -36,7 +36,7 @@ TARGETS = build/dns-sd build/dns-sd64
- LIBS =
- else
- TARGETS = build/dns-sd
--LIBS = -L../mDNSPosix/build/prod/ -ldns_sd
-+LIBS ?= -L../mDNSPosix/build/prod/ -ldns_sd
- endif
-
- all: $(TARGETS)
-diff --git a/mDNSPosix/PosixDaemon.c b/mDNSPosix/PosixDaemon.c
-index 88b3292..e86a6c7 100644
---- a/mDNSPosix/PosixDaemon.c
-+++ b/mDNSPosix/PosixDaemon.c
-@@ -37,6 +37,11 @@
- #include <fcntl.h>
- #include <pwd.h>
- #include <sys/types.h>
-+#ifdef __linux__
-+#include <sys/capability.h> /* !!! We require libcap-dev for this. Oh well. */
-+/* prctl is required to enable inheriting of capabilities across setuid */
-+#include <sys/prctl.h>
-+#endif /* __linux__ */
-
- #if __APPLE__
- #undef daemon
-@@ -184,16 +189,50 @@ int main(int argc, char **argv)
-
- Reconfigure(&mDNSStorage);
-
-+#ifdef __linux__
-+ /*
-+ * SO_BINDTODEVICE is privileged operation; however, we can get
-+ * around it using capabilities instead of remaining root.
-+ */
-+ if (mStatus_NoError == err)
-+ {
-+ if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) < 0)
-+ perror("prctl PR_SET_KEEPCAPS");
-+ }
-+#endif /* __linux__ */
-+
- // Now that we're finished with anything privileged, switch over to running as "nobody"
- if (mStatus_NoError == err)
- {
- const struct passwd *pw = getpwnam("nobody");
- if (pw != NULL)
-+ {
- setuid(pw->pw_uid);
-+#ifdef __linux__
-+ struct __user_cap_header_struct ch;
-+ struct __user_cap_data_struct cd[_LINUX_CAPABILITY_U32S_3];
-+
-+ memset(&ch, 0, sizeof(ch));
-+ ch.version = _LINUX_CAPABILITY_VERSION_3;
-+ ch.pid = getpid();
-+ memset(&cd[0], 0, sizeof(cd));
-+ /* CAP_NET_RAW is required to use SO_BINDTODEVICE */
-+ int caps = CAP_TO_MASK(CAP_NET_RAW);
-+ cd[0].permitted = caps;
-+ cd[0].effective = caps;
-+ if (capset(&ch, &cd[0]) < 0)
-+ perror("capset");
-+#endif /* __linux__ */
-+ }
- else
- LogMsg("WARNING: mdnsd continuing as root because user \"nobody\" does not exist");
- }
-
-+#ifdef __linux__
-+ if (mStatus_NoError == err)
-+ err = mDNSPlatformPosixRefreshInterfaceList(&mDNSStorage);
-+#endif /* __linux__ */
-+
- if (mStatus_NoError == err)
- err = MainLoop(&mDNSStorage);
-
-diff --git a/mDNSPosix/mDNSPosix.c b/mDNSPosix/mDNSPosix.c
-index 6effa12..7c1d6eb 100755
---- a/mDNSPosix/mDNSPosix.c
-+++ b/mDNSPosix/mDNSPosix.c
-@@ -733,6 +741,29 @@ mDNSlocal int SetupSocket(struct sockaddr *intfAddr, mDNSIPPort port, int interf
- if (err < 0) { err = errno; perror("setsockopt - IP_MULTICAST_TTL"); }
- }
-
-+#ifdef __linux__
-+#ifdef SO_BINDTODEVICE
-+ if (err == 0 && interfaceIndex)
-+ {
-+ char ifname[IFNAMSIZ];
-+ if (if_indextoname(interfaceIndex, ifname))
-+ {
-+ err = setsockopt(*sktPtr, SOL_SOCKET, SO_BINDTODEVICE, ifname, strlen(ifname));
-+ if (err < 0)
-+ {
-+ err = errno;
-+ perror("setsockopt - SO_BINDTODEVICE");
-+ }
-+ }
-+ else
-+ {
-+ err = errno;
-+ perror("if_indextoname");
-+ }
-+ }
-+#endif /* SO_BINDTODEVICE */
-+#endif /* __linux__ */
-+
- // And start listening for packets
- if (err == 0)
- {
-@@ -814,6 +845,29 @@ mDNSlocal int SetupSocket(struct sockaddr *intfAddr, mDNSIPPort port, int interf
- if (err < 0) { err = errno; perror("setsockopt - IPV6_MULTICAST_HOPS"); }
- }
-
-+#ifdef __linux__
-+#ifdef SO_BINDTODEVICE
-+ if (err == 0 && interfaceIndex)
-+ {
-+ char ifname[IFNAMSIZ];
-+ if (if_indextoname(interfaceIndex, ifname))
-+ {
-+ err = setsockopt(*sktPtr, SOL_SOCKET, SO_BINDTODEVICE, ifname, strlen(ifname));
-+ if (err < 0)
-+ {
-+ err = errno;
-+ perror("setsockopt - SO_BINDTODEVICE");
-+ }
-+ }
-+ else
-+ {
-+ err = errno;
-+ perror("if_indextoname");
-+ }
-+ }
-+#endif /* SO_BINDTODEVICE */
-+#endif /* __linux__ */
-+
- // And start listening for packets
- if (err == 0)
- {
-@@ -958,19 +1017,14 @@ mDNSlocal int SetupInterfaceList(mDNS *const m)
- int err = 0;
- struct ifi_info *intfList = get_ifi_info(AF_INET, mDNStrue);
- struct ifi_info *firstLoopback = NULL;
-+ struct ifi_info **p = &intfList;
-
- assert(m != NULL);
- debugf("SetupInterfaceList");
-
-- if (intfList == NULL) err = ENOENT;
--
- #if HAVE_IPV6
-- if (err == 0) /* Link the IPv6 list to the end of the IPv4 list */
-- {
-- struct ifi_info **p = &intfList;
-- while (*p) p = &(*p)->ifi_next;
-- *p = get_ifi_info(AF_INET6, mDNStrue);
-- }
-+ while (*p) p = &(*p)->ifi_next;
-+ *p = get_ifi_info(AF_INET6, mDNStrue);
- #endif
-
- if (err == 0)
-@@ -1046,7 +1100,7 @@ mDNSlocal mStatus OpenIfNotifySocket(int *pFD)
- /* Subscribe the socket to Link & IP addr notifications. */
- mDNSPlatformMemZero(&snl, sizeof snl);
- snl.nl_family = AF_NETLINK;
-- snl.nl_groups = RTMGRP_LINK | RTMGRP_IPV4_IFADDR;
-+ snl.nl_groups = RTMGRP_LINK | RTMGRP_IPV4_IFADDR | RTMGRP_IPV6_IFADDR;
- ret = bind(sock, (struct sockaddr *) &snl, sizeof snl);
- if (0 == ret)
- *pFD = sock;
-@@ -1124,11 +1178,18 @@ mDNSlocal mDNSu32 ProcessRoutingNotification(int sd)
- PrintNetLinkMsg(pNLMsg);
- #endif
-
-+ // this result isn't used anywhere as a number, just as
-+ // non-zero - however, I have seen devices with more than 32
-+ // interfaces at some point..
-+ // (on Linux, every tunnel increases index for example)
-+
- // Process the NetLink message
- if (pNLMsg->nlmsg_type == RTM_GETLINK || pNLMsg->nlmsg_type == RTM_NEWLINK)
-- result |= 1 << ((struct ifinfomsg*) NLMSG_DATA(pNLMsg))->ifi_index;
-+ result |= 1;
-+ // << ((struct ifinfomsg*) NLMSG_DATA(pNLMsg))->ifi_index;
- else if (pNLMsg->nlmsg_type == RTM_DELADDR || pNLMsg->nlmsg_type == RTM_NEWADDR)
-- result |= 1 << ((struct ifaddrmsg*) NLMSG_DATA(pNLMsg))->ifa_index;
-+ result |= 1;
-+ // << ((struct ifaddrmsg*) NLMSG_DATA(pNLMsg))->ifa_index;
-
- // Advance pNLMsg to the next message in the buffer
- if ((pNLMsg->nlmsg_flags & NLM_F_MULTI) != 0 && pNLMsg->nlmsg_type != NLMSG_DONE)
-@@ -1299,8 +1360,12 @@ mDNSexport mStatus mDNSPlatformInit(mDNS *const m)
- if (err == mStatus_NoError) err = SetupSocket(&sa, zeroIPPort, 0, &m->p->unicastSocket6);
- #endif
-
-+ // In Linux case, we can't set up sockets with different owner -
-+ // it blows up SO_REUSEPORT. So we do this step bit later.
-+#ifndef __linux__
- // Tell mDNS core about the network interfaces on this machine.
- if (err == mStatus_NoError) err = SetupInterfaceList(m);
-+#endif /* !__linux__ */
-
- // Tell mDNS core about DNS Servers
- mDNS_Lock(m);
-diff --git a/mDNSPosix/mDNSUNP.c b/mDNSPosix/mDNSUNP.c
-index b392fc7..f551ad5 100755
---- a/mDNSPosix/mDNSUNP.c
-+++ b/mDNSPosix/mDNSUNP.c
-@@ -63,6 +63,7 @@
- #if defined(AF_INET6) && HAVE_IPV6 && HAVE_LINUX
- #include <netdb.h>
- #include <arpa/inet.h>
-+#include <linux/if_addr.h>
-
- /* Converts a prefix length to IPv6 network mask */
- void plen_to_mask(int plen, char *addr) {
-@@ -127,6 +128,8 @@
- nitems = fscanf(fp, ifnameFmt, ifname);
- if (nitems != 1) break;
-
-+ if (flags & IFA_F_DEPRECATED) continue;
-+
- if (strcmp(lastname, ifname) == 0) {
- if (doaliases == 0)
- continue; /* already processed this interface */
-diff --git a/mDNSShared/dnsextd_parser.y b/mDNSShared/dnsextd_parser.y
-index 18c5990..d4b63ce 100644
---- a/mDNSShared/dnsextd_parser.y
-+++ b/mDNSShared/dnsextd_parser.y
-@@ -15,6 +15,8 @@
- * limitations under the License.
- */
-
-+%parse-param { void *context }
-+
- %{
- #include <stdio.h>
- #include <stdlib.h>
-@@ -23,7 +25,7 @@
- #include "DebugServices.h"
- #include "dnsextd.h"
-
--void yyerror( const char* error );
-+void yyerror( void *context, const char* error );
- int yylex(void);
-
-
-@@ -409,7 +419,7 @@ int yywrap(void);
-
- extern int yylineno;
-
--void yyerror( const char *str )
-+void yyerror( void *context, const char *str )
- {
- fprintf( stderr,"%s:%d: error: %s\n", g_filename, yylineno, str );
- }
+++ /dev/null
---- a/Clients/dns-sd.c
-+++ b/Clients/dns-sd.c
-@@ -2281,7 +2281,7 @@ Fail:
-
- // NOT static -- otherwise the compiler may optimize it out
- // The "@(#) " pattern is a special prefix the "what" command looks for
--const char VersionString_SCCS[] = "@(#) dns-sd " STRINGIFY(mDNSResponderVersion) " (" __DATE__ " " __TIME__ ")";
-+const char VersionString_SCCS[] = "@(#) dns-sd " STRINGIFY(mDNSResponderVersion);
-
- #if _BUILDING_XCODE_PROJECT_
- // If the process crashes, then this string will be magically included in the automatically-generated crash log
---- a/mDNSPosix/PosixDaemon.c
-+++ b/mDNSPosix/PosixDaemon.c
-@@ -290,9 +290,9 @@ asm (".desc ___crashreporter_info__, 0x1
-
- // For convenience when using the "strings" command, this is the last thing in the file
- #if mDNSResponderVersion > 1
--mDNSexport const char mDNSResponderVersionString_SCCS[] = "@(#) mDNSResponder-" STRINGIFY(mDNSResponderVersion) " (" __DATE__ " " __TIME__ ")";
-+mDNSexport const char mDNSResponderVersionString_SCCS[] = "@(#) mDNSResponder-" STRINGIFY(mDNSResponderVersion);
- #elif MDNS_VERSIONSTR_NODTS
- mDNSexport const char mDNSResponderVersionString_SCCS[] = "@(#) mDNSResponder (Engineering Build)";
- #else
--mDNSexport const char mDNSResponderVersionString_SCCS[] = "@(#) mDNSResponder (Engineering Build) (" __DATE__ " " __TIME__ ")";
-+mDNSexport const char mDNSResponderVersionString_SCCS[] = "@(#) mDNSResponder (Engineering Build)";
- #endif
---- a/mDNSShared/Java/JNISupport.c
-+++ b/mDNSShared/Java/JNISupport.c
-@@ -1069,4 +1069,4 @@ exit:
-
- // NOT static -- otherwise the compiler may optimize it out
- // The "@(#) " pattern is a special prefix the "what" command looks for
--const char VersionString_SCCS[] = "@(#) libjdns_sd " STRINGIFY(mDNSResponderVersion) " (" __DATE__ " " __TIME__ ")";
-+const char VersionString_SCCS[] = "@(#) libjdns_sd " STRINGIFY(mDNSResponderVersion);
---- a/mDNSShared/dnsextd.c
-+++ b/mDNSShared/dnsextd.c
-@@ -3136,7 +3136,7 @@ mDNS mDNSStorage;
-
- // For convenience when using the "strings" command, this is the last thing in the file
- // The "@(#) " pattern is a special prefix the "what" command looks for
--const char mDNSResponderVersionString_SCCS[] = "@(#) dnsextd " STRINGIFY(mDNSResponderVersion) " (" __DATE__ " " __TIME__ ")";
-+const char mDNSResponderVersionString_SCCS[] = "@(#) dnsextd " STRINGIFY(mDNSResponderVersion);
-
- #if _BUILDING_XCODE_PROJECT_
- // If the process crashes, then this string will be magically included in the automatically-generated crash log
---- a/mDNSShared/dnssd_clientlib.c
-+++ b/mDNSShared/dnssd_clientlib.c
-@@ -363,4 +363,4 @@ DNSServiceErrorType DNSSD_API TXTRecordG
-
- // NOT static -- otherwise the compiler may optimize it out
- // The "@(#) " pattern is a special prefix the "what" command looks for
--const char VersionString_SCCS_libdnssd[] DNSSD_USED = "@(#) libdns_sd " STRINGIFY(mDNSResponderVersion) " (" __DATE__ " " __TIME__ ")";
-+const char VersionString_SCCS_libdnssd[] DNSSD_USED = "@(#) libdns_sd " STRINGIFY(mDNSResponderVersion);
include $(TOPDIR)/rules.mk
PKG_NAME:=mosquitto
-PKG_VERSION:=1.6.2
+PKG_VERSION:=1.6.3
PKG_RELEASE:=1
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE.txt
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://mosquitto.org/files/source/
-PKG_HASH:=33499e78dfa0ca1cb488fd196fde940a66305bdfd44ba763ce2001db2569a08b
+PKG_HASH:=9ef5cc75f4fe31d7bf50654ddf4728ad9e1ae2e5609a4b42ecbbcb4a209ed17e
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk
+++ /dev/null
-diff --git a/lib/net_mosq.c b/lib/net_mosq.c
-index 745b170..bdcaa19 100644
---- a/lib/net_mosq.c
-+++ b/lib/net_mosq.c
-@@ -50,6 +50,7 @@ Contributors:
- #include <openssl/conf.h>
- #include <openssl/engine.h>
- #include <openssl/err.h>
-+#include <openssl/ui.h>
- #include <tls_mosq.h>
- #endif
-
+++ /dev/null
-diff --git a/lib/net_mosq.c b/lib/net_mosq.c
-index bdcaa19..f207e32 100644
---- a/lib/net_mosq.c
-+++ b/lib/net_mosq.c
-@@ -141,7 +141,9 @@ int net__init(void)
- | OPENSSL_INIT_ADD_ALL_DIGESTS \
- | OPENSSL_INIT_LOAD_CONFIG, NULL);
- # endif
-+#if !defined(OPENSSL_NO_ENGINE)
- ENGINE_load_builtin_engines();
-+#endif
- setup_ui_method();
- if(tls_ex_index_mosq == -1){
- tls_ex_index_mosq = SSL_get_ex_new_index(0, "client context", NULL, NULL, NULL);
-@@ -599,6 +601,7 @@ static int net__init_ssl_ctx(struct mosquitto *mosq)
- SSL_CTX_set_mode(mosq->ssl_ctx, SSL_MODE_RELEASE_BUFFERS);
- #endif
-
-+#if !defined(OPENSSL_NO_ENGINE)
- if(mosq->tls_engine){
- engine = ENGINE_by_id(mosq->tls_engine);
- if(!engine){
-@@ -615,12 +618,15 @@ static int net__init_ssl_ctx(struct mosquitto *mosq)
- ENGINE_set_default(engine, ENGINE_METHOD_ALL);
- ENGINE_free(engine); /* release the structural reference from ENGINE_by_id() */
- }
-+#endif
-
- if(mosq->tls_ciphers){
- ret = SSL_CTX_set_cipher_list(mosq->ssl_ctx, mosq->tls_ciphers);
- if(ret == 0){
- log__printf(mosq, MOSQ_LOG_ERR, "Error: Unable to set TLS ciphers. Check cipher list \"%s\".", mosq->tls_ciphers);
-+#if !defined(OPENSSL_NO_ENGINE)
- ENGINE_FINISH(engine);
-+#endif
- COMPAT_CLOSE(mosq->sock);
- mosq->sock = INVALID_SOCKET;
- net__print_ssl_error(mosq);
-@@ -647,7 +653,9 @@ static int net__init_ssl_ctx(struct mosquitto *mosq)
- log__printf(mosq, MOSQ_LOG_ERR, "Error: Unable to load CA certificates, check capath \"%s\".", mosq->tls_capath);
- }
- #endif
-+#if !defined(OPENSSL_NO_ENGINE)
- ENGINE_FINISH(engine);
-+#endif
- COMPAT_CLOSE(mosq->sock);
- mosq->sock = INVALID_SOCKET;
- net__print_ssl_error(mosq);
-@@ -672,7 +680,9 @@ static int net__init_ssl_ctx(struct mosquitto *mosq)
- #else
- log__printf(mosq, MOSQ_LOG_ERR, "Error: Unable to load client certificate \"%s\".", mosq->tls_certfile);
- #endif
-+#if !defined(OPENSSL_NO_ENGINE)
- ENGINE_FINISH(engine);
-+#endif
- COMPAT_CLOSE(mosq->sock);
- mosq->sock = INVALID_SOCKET;
- net__print_ssl_error(mosq);
-@@ -681,6 +691,7 @@ static int net__init_ssl_ctx(struct mosquitto *mosq)
- }
- if(mosq->tls_keyfile){
- if(mosq->tls_keyform == mosq_k_engine){
-+#if !defined(OPENSSL_NO_ENGINE)
- UI_METHOD *ui_method = net__get_ui_method();
- if(mosq->tls_engine_kpass_sha1){
- if(!ENGINE_ctrl_cmd(engine, ENGINE_SECRET_MODE, ENGINE_SECRET_MODE_SHA, NULL, NULL, 0)){
-@@ -714,6 +725,7 @@ static int net__init_ssl_ctx(struct mosquitto *mosq)
- net__print_ssl_error(mosq);
- return MOSQ_ERR_TLS;
- }
-+#endif
- }else{
- ret = SSL_CTX_use_PrivateKey_file(mosq->ssl_ctx, mosq->tls_keyfile, SSL_FILETYPE_PEM);
- if(ret != 1){
-@@ -722,7 +734,9 @@ static int net__init_ssl_ctx(struct mosquitto *mosq)
- #else
- log__printf(mosq, MOSQ_LOG_ERR, "Error: Unable to load client key file \"%s\".", mosq->tls_keyfile);
- #endif
-+#if !defined(OPENSSL_NO_ENGINE)
- ENGINE_FINISH(engine);
-+#endif
- COMPAT_CLOSE(mosq->sock);
- mosq->sock = INVALID_SOCKET;
- net__print_ssl_error(mosq);
-@@ -732,7 +746,9 @@ static int net__init_ssl_ctx(struct mosquitto *mosq)
- ret = SSL_CTX_check_private_key(mosq->ssl_ctx);
- if(ret != 1){
- log__printf(mosq, MOSQ_LOG_ERR, "Error: Client certificate/key are inconsistent.");
-+#if !defined(OPENSSL_NO_ENGINE)
- ENGINE_FINISH(engine);
-+#endif
- COMPAT_CLOSE(mosq->sock);
- mosq->sock = INVALID_SOCKET;
- net__print_ssl_error(mosq);
-diff --git a/lib/options.c b/lib/options.c
-index 005b781..6dc4262 100644
---- a/lib/options.c
-+++ b/lib/options.c
-@@ -255,6 +255,7 @@ int mosquitto_string_option(struct mosquitto *mosq, enum mosq_opt_t option, cons
- switch(option){
- case MOSQ_OPT_TLS_ENGINE:
- #ifdef WITH_TLS
-+# if !defined(OPENSSL_NO_ENGINE)
- eng = ENGINE_by_id(value);
- if(!eng){
- return MOSQ_ERR_INVAL;
-@@ -265,6 +266,7 @@ int mosquitto_string_option(struct mosquitto *mosq, enum mosq_opt_t option, cons
- return MOSQ_ERR_NOMEM;
- }
- return MOSQ_ERR_SUCCESS;
-+#endif
- #else
- return MOSQ_ERR_NOT_SUPPORTED;
- #endif
-diff --git a/src/net.c b/src/net.c
-index 74b4ee8..495f8b2 100644
---- a/src/net.c
-+++ b/src/net.c
-@@ -534,6 +534,7 @@ int net__socket_listen(struct mosquitto__listener *listener)
- return 1;
- }
- if(listener->tls_engine){
-+#if !defined(OPENSSL_NO_ENGINE)
- engine = ENGINE_by_id(listener->tls_engine);
- if(!engine){
- log__printf(NULL, MOSQ_LOG_ERR, "Error loading %s engine\n", listener->tls_engine);
-@@ -548,6 +549,7 @@ int net__socket_listen(struct mosquitto__listener *listener)
- }
- ENGINE_set_default(engine, ENGINE_METHOD_ALL);
- ENGINE_free(engine); /* release the structural reference from ENGINE_by_id() */
-+#endif
- }
- /* FIXME user data? */
- if(listener->require_certificate){
-@@ -560,10 +562,13 @@ int net__socket_listen(struct mosquitto__listener *listener)
- log__printf(NULL, MOSQ_LOG_ERR, "Error: Unable to load server certificate \"%s\". Check certfile.", listener->certfile);
- net__print_error(MOSQ_LOG_ERR, "Error: %s");
- COMPAT_CLOSE(sock);
-+#if !defined(OPENSSL_NO_ENGINE)
- ENGINE_FINISH(engine);
-+#endif
- return 1;
- }
- if(listener->tls_keyform == mosq_k_engine){
-+#if !defined(OPENSSL_NO_ENGINE)
- UI_METHOD *ui_method = net__get_ui_method();
- if(listener->tls_engine_kpass_sha1){
- if(!ENGINE_ctrl_cmd(engine, ENGINE_SECRET_MODE, ENGINE_SECRET_MODE_SHA, NULL, NULL, 0)){
-@@ -593,13 +598,16 @@ int net__socket_listen(struct mosquitto__listener *listener)
- ENGINE_FINISH(engine);
- return 1;
- }
-+#endif
- }else{
- rc = SSL_CTX_use_PrivateKey_file(listener->ssl_ctx, listener->keyfile, SSL_FILETYPE_PEM);
- if(rc != 1){
- log__printf(NULL, MOSQ_LOG_ERR, "Error: Unable to load server key file \"%s\". Check keyfile.", listener->keyfile);
- net__print_error(MOSQ_LOG_ERR, "Error: %s");
- COMPAT_CLOSE(sock);
-+#if !defined(OPENSSL_NO_ENGINE)
- ENGINE_FINISH(engine);
-+#endif
- return 1;
- }
- }
-@@ -608,7 +616,9 @@ int net__socket_listen(struct mosquitto__listener *listener)
- log__printf(NULL, MOSQ_LOG_ERR, "Error: Server certificate/key are inconsistent.");
- net__print_error(MOSQ_LOG_ERR, "Error: %s");
- COMPAT_CLOSE(sock);
-+#if !defined(OPENSSL_NO_ENGINE)
- ENGINE_FINISH(engine);
-+#endif
- return 1;
- }
- /* Load CRLs if they exist. */
-@@ -618,7 +628,9 @@ int net__socket_listen(struct mosquitto__listener *listener)
- log__printf(NULL, MOSQ_LOG_ERR, "Error: Unable to obtain TLS store.");
- net__print_error(MOSQ_LOG_ERR, "Error: %s");
- COMPAT_CLOSE(sock);
-+#if !defined(OPENSSL_NO_ENGINE)
- ENGINE_FINISH(engine);
-+#endif
- return 1;
- }
- lookup = X509_STORE_add_lookup(store, X509_LOOKUP_file());
-@@ -627,7 +639,9 @@ int net__socket_listen(struct mosquitto__listener *listener)
- log__printf(NULL, MOSQ_LOG_ERR, "Error: Unable to load certificate revocation file \"%s\". Check crlfile.", listener->crlfile);
- net__print_error(MOSQ_LOG_ERR, "Error: %s");
- COMPAT_CLOSE(sock);
-+#if !defined(OPENSSL_NO_ENGINE)
- ENGINE_FINISH(engine);
-+#endif
- return 1;
- }
- X509_STORE_set_flags(store, X509_V_FLAG_CRL_CHECK);
-@@ -644,7 +658,9 @@ int net__socket_listen(struct mosquitto__listener *listener)
-
- if(mosquitto__tls_server_ctx(listener)){
- COMPAT_CLOSE(sock);
-+#if !defined(OPENSSL_NO_ENGINE)
- ENGINE_FINISH(engine);
-+#endif
- return 1;
- }
- SSL_CTX_set_psk_server_callback(listener->ssl_ctx, psk_server_callback);
-@@ -654,7 +670,9 @@ int net__socket_listen(struct mosquitto__listener *listener)
- log__printf(NULL, MOSQ_LOG_ERR, "Error: Unable to set TLS PSK hint.");
- net__print_error(MOSQ_LOG_ERR, "Error: %s");
- COMPAT_CLOSE(sock);
-+#if !defined(OPENSSL_NO_ENGINE)
- ENGINE_FINISH(engine);
-+#endif
- return 1;
- }
- }
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://gitlab.com/netify.ai/public/netify-agent.git
-PKG_SOURCE_DATE:=2019-01-03
-PKG_SOURCE_VERSION:=v2.87
-#PKG_SOURCE_VERSION:=e846598bbe26eb6d631f1eda922c7141245f48e3
-PKG_MIRROR_HASH:=05af5b4e48ccfccf60cfb3c0b08c8bb3987d8957f17723520da4488798a7b68d
+PKG_SOURCE_DATE:=2019-06-06
+PKG_SOURCE_VERSION:=v2.88
+#PKG_SOURCE_VERSION:=367ddd2fca4b2edd5e71145e2adea1b58f750214
+PKG_MIRROR_HASH:=8ead41dc074a71626609bced1d584f8df87e39f5ad76dcca76021c1737150089
include $(INCLUDE_DIR)/package.mk
Netify Agent
============
-Copyright ©2015-2018 eGloo Incorporated ([www.egloo.ca](https://www.egloo.ca))
+Copyright ©2015-2019 eGloo Incorporated ([www.egloo.ca](https://www.egloo.ca))
-Deep-Packet Inspection Server
------------------------------
+Network Intelligence - Simplified
+---------------------------------
-The [Netify Agent](https://www.netify.ai/) is a deep-packet inspection server. The Agent is built on top of [nDPI](http://www.ntop.org/products/deep-packet-inspection/ndpi/) (formerly OpenDPI) to detect network protocols and applications. These detections can be saved locally, served over a UNIX or TCP socket, and/or "pushed" (via HTTP POSTs) to a remote third-party server. Flow metadata, network statistics, and detection classifications are stored using JSON encoding.
+The [Netify Agent](https://www.netify.ai/) is a deep-packet inspection server. The Agent is built on top of [nDPI](http://www.ntop.org/products/deep-packet-inspection/ndpi/) (formerly OpenDPI) to detect network protocols and applications. Detections can be saved locally, served over a UNIX or TCP socket, and/or "pushed" (via HTTP POSTs) to a remote third-party server. Flow metadata, network statistics, and detection classifications are stored using JSON encoding.
Optionally, the Netify Agent can be coupled with a [Netify Cloud](https://www.netify.ai/) subscription for further cloud processing, historical storage, machine-learning analysis, event notifications, device detection/identification, along with the option (on supported platforms) to take an active role in policing/bandwidth-shaping specific network protocols and applications.
- [Fedora](http://software.opensuse.org/download.html?project=home%3Aegloo&package=netifyd)
- [Ubuntu](http://software.opensuse.org/download.html?project=home%3Aegloo&package=netifyd)
+Developer Documentation
+-----------------------
+
+Further developer documentation can be found [here](https://www.netify.ai/developer/netify-agent).
+
Configuring/Building From Source
--------------------------------
include $(TOPDIR)/rules.mk
PKG_NAME:=nfs-kernel-server
-PKG_VERSION:=2.3.4
-PKG_RELEASE:=2
-PKG_HASH:=8a6bafd5a33c4259e6e5093d126384cbe33acb10135578b5faa60c40f2f5e995
+PKG_VERSION:=2.4.1
+PKG_RELEASE:=1
+PKG_HASH:=1a21bf8e8b8864d54d114aa7b0e87e48ec87a5d861de0c03c20e35f7e3c67721
PKG_SOURCE_URL:=@SF/nfs
PKG_SOURCE:=nfs-utils-$(PKG_VERSION).tar.xz
--- /dev/null
+--- a/support/nfsidmap/libnfsidmap.c
++++ b/support/nfsidmap/libnfsidmap.c
+@@ -89,6 +89,10 @@ gid_t nobody_gid = (gid_t)-1;
+ #define NFS4DNSTXTREC "_nfsv4idmapdomain"
+ #endif
+
++#ifndef NS_MAXMSG
++#define NS_MAXMSG 65535
++#endif
++
+ /* Default logging fuction */
+ static void default_logger(const char *fmt, ...)
+ {
include $(TOPDIR)/rules.mk
PKG_NAME:=nlbwmon
-PKG_RELEASE:=2
+PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/jow-/nlbwmon.git
-PKG_SOURCE_DATE:=2017-12-05
-PKG_SOURCE_VERSION:=75accd647459a8a4167f9baa402d116cad41caa9
-PKG_MIRROR_HASH:=821572fdd11bba4a62ecea0b0ddee24645d2ceccdfe7a83dfe5f5edea433ef02
+PKG_SOURCE_DATE:=2019-06-06
+PKG_SOURCE_VERSION:=4574e6e80e3a5ab8de65886baa0d563dfee589ff
+PKG_MIRROR_HASH:=559a8b04e8942c83e31a6a5e2576a5308fdc16349ed29e0b2d9fc182d715976d
CMAKE_INSTALL:=1
include $(TOPDIR)/rules.mk
PKG_NAME:=obfs4proxy
-PKG_VERSION:=0.0.10
+PKG_VERSION:=0.0.11
PKG_RELEASE:=1
PKG_SOURCE:=obfs4-$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://gitlab.com/yawning/obfs4/-/archive/$(PKG_NAME)-$(PKG_VERSION)/
-PKG_HASH:=0de856a33502005661f0491dc695dcaa1a7eb3f6cafbe689b99301a0d6762639
+PKG_HASH:=b0964479300a3ea899a4354fdeb5196e52544554f8edf6190142cddd1072526c
PKG_BUILD_DIR:=$(BUILD_DIR)/obfs4-$(PKG_NAME)-$(PKG_VERSION)
PKG_LICENSE:=BSD-2-Clause
PKG_NAME:=openconnect
PKG_VERSION:=8.03
-PKG_RELEASE:=1
-PKG_USE_MIPS16:=0
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=ftp://ftp.infradead.org/pub/openconnect/
PKG_HASH:=908cff9b1ce266b6bb7f969a7f62723543ab94719ba3c95a150fe3894cbc9ef2
-PKG_LICENSE:=LGPLv2.1+
+
+PKG_LICENSE:=LGPL-2.1-or-later
+PKG_LICENSE_FILES:=COPYING.LGPL
PKG_CONFIG_DEPENDS:= \
CONFIG_OPENCONNECT_GNUTLS \
CONFIG_OPENCONNECT_OPENSSL \
+PKG_USE_MIPS16:=0
include $(INCLUDE_DIR)/package.mk
DEPENDS:=+libxml2 +kmod-tun +resolveip +vpnc-scripts +OPENCONNECT_OPENSSL:libopenssl +OPENCONNECT_OPENSSL:p11-kit +OPENCONNECT_OPENSSL:libp11 +OPENCONNECT_GNUTLS:libgnutls +OPENCONNECT_GNUTLS:libtasn1 +OPENCONNECT_STOKEN:libstoken
TITLE:=OpenConnect VPN client (Cisco AnyConnect and Juniper/Pulse compatible)
MAINTAINER:=Nikos Mavrogiannopoulos <n.mavrogiannopoulos@gmail.com>
- URL:=http://www.infradead.org/openconnect/
+ URL:=https://www.infradead.org/openconnect/
SUBMENU:=VPN
endef
+++ /dev/null
-From 03ecd34e0137b3f0bf0d2fc3ab7f7d8b3682785e Mon Sep 17 00:00:00 2001
-From: Yousong Zhou <yszhou4tech@gmail.com>
-Date: Thu, 14 Dec 2017 18:03:35 +0800
-Subject: [PATCH] Fix compilation with libp11 version >= 0.4.7
-
-libp11 0.4.7 renamed then dropped macro definition in commits
-
- 4f0fce4: Error reporting fixes
- e4c641b: PKCS11 errors separated into P11 and CKR
-
-This change assumes that libp11 will restore compatibility by bringing
-back old forms of macro definition
-
-Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
----
- openssl-pkcs11.c | 18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
-
-diff --git a/openssl-pkcs11.c b/openssl-pkcs11.c
-index 61da123..ba7e491 100644
---- a/openssl-pkcs11.c
-+++ b/openssl-pkcs11.c
-@@ -30,6 +30,24 @@
- #include <libp11.h>
- #include <p11-kit/pkcs11.h>
-
-+#ifndef ERR_LIB_PKCS11
-+# if defined(ERR_LIB_CKR)
-+# define ERR_LIB_PKCS11 ERR_LIB_CKR
-+# elif defined(ERR_LIB_USER)
-+# define ERR_LIB_PKCS11 ERR_LIB_USER
-+# else
-+# error undefined macro ERR_LIB_PKCS11
-+# endif
-+#endif
-+
-+#ifndef PKCS11_F_PKCS11_LOGIN
-+# if defined(CKR_F_PKCS11_LOGIN)
-+# define PKCS11_F_PKCS11_LOGIN CKR_F_PKCS11_LOGIN
-+# else
-+# error undefined macro PKCS11_F_PKCS11_LOGIN
-+# endif
-+#endif
-+
- static PKCS11_CTX *pkcs11_ctx(struct openconnect_info *vpninfo)
- {
- PKCS11_CTX *ctx;
---
-1.8.3.1
-
--- /dev/null
+From 460c060dda115bc8066bb4b955453c673459b6cc Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Sun, 9 Jun 2019 23:36:53 -0700
+Subject: [PATCH] Fix compilation without deprecated OpenSSL 1.1 APIs
+
+Initialization and deinitialization is deprecated.
+
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ library.c | 4 ++++
+ openssl.c | 2 ++
+ tests/bad_dtls_test.c | 4 ++++
+ 3 files changed, 10 insertions(+)
+
+diff --git a/library.c b/library.c
+index 0e3d05e6..e45e93a2 100644
+--- a/library.c
++++ b/library.c
+@@ -38,6 +38,10 @@
+ #include "gnutls.h"
+ #endif
+
++#if defined(OPENCONNECT_OPENSSL)
++#include <openssl/bio.h>
++#endif
++
+ struct openconnect_info *openconnect_vpninfo_new(const char *useragent,
+ openconnect_validate_peer_cert_vfn validate_peer_cert,
+ openconnect_write_new_config_vfn write_new_config,
+diff --git a/openssl.c b/openssl.c
+index 2b1f07bd..e505f49a 100644
+--- a/openssl.c
++++ b/openssl.c
+@@ -1879,10 +1879,12 @@ int openconnect_init_ssl(void)
+ if (ret)
+ return ret;
+ #endif
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ SSL_library_init();
+ ERR_clear_error();
+ SSL_load_error_strings();
+ OpenSSL_add_all_algorithms();
++#endif
+ return 0;
+ }
+
+diff --git a/tests/bad_dtls_test.c b/tests/bad_dtls_test.c
+index ac8d3f1e..c123c8f8 100644
+--- a/tests/bad_dtls_test.c
++++ b/tests/bad_dtls_test.c
+@@ -752,8 +752,10 @@ int main(int argc, char *argv[])
+ int ret;
+ int i;
+
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ SSL_library_init();
+ SSL_load_error_strings();
++#endif
+
+ RAND_bytes(session_id, sizeof(session_id));
+ RAND_bytes(master_secret, sizeof(master_secret));
+@@ -910,8 +912,10 @@ int main(int argc, char *argv[])
+ printf("Cisco BadDTLS test: FAILED\n");
+ }
+
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ ERR_free_strings();
+ EVP_cleanup();
++#endif
+
+ return testresult?0:1;
+ }
+--
+2.17.1
+
--- /dev/null
+From afb6442533dc7475ed61642c3f5b295db1e6f561 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Sun, 9 Jun 2019 23:40:21 -0700
+Subject: [PATCH] Fix DTLS bug when lacking deprecated APIs
+
+HAVE_DTLS12 is for DTLSv1_method. This causes dtls_method to be NULL and
+crash.
+
+[dwmw2: Rework it quite a bit more]
+
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+Signed-off-by: David Woodhouse <dwmw2@infradead.org>
+---
+ configure.ac | 17 ++++++++++++++---
+ openssl-dtls.c | 49 ++++++++++++++++++++++++++-----------------------
+ 2 files changed, 40 insertions(+), 26 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 02096c51..f7557933 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -455,11 +455,22 @@ case "$ssl_library" in
+ AC_DEFINE(HAVE_DTLS1_STOP_TIMER, [1], [OpenSSL has dtls1_stop_timer() function])],
+ [AC_MSG_RESULT(no)])
+
+- AC_MSG_CHECKING([for DTLSv1_2_client_method() in OpenSSL])
++ # DTLS_client_method() and DTLSv1_2_client_method() were both added between
++ # OpenSSL v1.0.1 and v1.0.2. DTLSV1.2_client_method() was later deprecated
++ # in v1.1.0 so we use DTLS_client_method() as our check for DTLSv1.2 support
++ # and that's what we actually use in openssl-dtls.c too.
++ AC_MSG_CHECKING([for DTLS_client_method() in OpenSSL])
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <openssl/ssl.h>],
+- [DTLSv1_2_client_method();])],
++ [DTLS_client_method();])],
+ [AC_MSG_RESULT(yes)
+- AC_DEFINE(HAVE_DTLS12, [1], [OpenSSL has DTLSv1_2_client_method() function])],
++ AC_DEFINE(HAVE_DTLS12, [1], [OpenSSL has DTLS_client_method() function])],
++ [AC_MSG_RESULT(no)])
++
++ AC_MSG_CHECKING([for SSL_CTX_set_min_proto_version() in OpenSSL])
++ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <openssl/ssl.h>],
++ [SSL_CTX_set_min_proto_version((void *)0, 0);])],
++ [AC_MSG_RESULT(yes)
++ AC_DEFINE(HAVE_SSL_CTX_PROTOVER, [1], [OpenSSL has SSL_CTX_set_min_proto_version() function])],
+ [AC_MSG_RESULT(no)])
+
+ AC_CHECK_FUNC(HMAC_CTX_copy,
+diff --git a/openssl-dtls.c b/openssl-dtls.c
+index 5086440f..9e3c5d46 100644
+--- a/openssl-dtls.c
++++ b/openssl-dtls.c
+@@ -332,6 +332,7 @@ int start_dtls_handshake(struct openconnect_info *vpninfo, int dtls_fd)
+ const char *cipher = vpninfo->dtls_cipher;
+
+ #ifdef HAVE_DTLS12
++ /* These things should never happen unless they're supported */
+ if (vpninfo->cisco_dtls12) {
+ dtlsver = DTLS1_2_VERSION;
+ } else if (!strcmp(cipher, "OC-DTLS1_2-AES128-GCM")) {
+@@ -349,16 +350,16 @@ int start_dtls_handshake(struct openconnect_info *vpninfo, int dtls_fd)
+
+ if (!vpninfo->dtls_ctx) {
+ #ifdef HAVE_DTLS12
++ /* If we can use SSL_CTX_set_min_proto_version, do so. */
+ dtls_method = DTLS_client_method();
+ #endif
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
++#ifndef HAVE_SSL_CTX_PROTOVER
++ /* If !HAVE_DTLS12, dtlsver *MUST* be DTLS1_BAD_VER because it's set
++ * at the top of the function and nothing can change it. */
+ if (dtlsver == DTLS1_BAD_VER)
+ dtls_method = DTLSv1_client_method();
+-#ifdef HAVE_DTLS12
+- else if (dtlsver == DTLS1_2_VERSION)
+- dtls_method = DTLSv1_2_client_method();
+-#endif
+ #endif
++
+ vpninfo->dtls_ctx = SSL_CTX_new(dtls_method);
+ if (!vpninfo->dtls_ctx) {
+ vpn_progress(vpninfo, PRG_ERR,
+@@ -367,24 +368,26 @@ int start_dtls_handshake(struct openconnect_info *vpninfo, int dtls_fd)
+ vpninfo->dtls_attempt_period = 0;
+ return -EINVAL;
+ }
+- if (dtlsver) {
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+- if (dtlsver == DTLS1_BAD_VER)
+- SSL_CTX_set_options(vpninfo->dtls_ctx, SSL_OP_CISCO_ANYCONNECT);
+-#else
+- if (!SSL_CTX_set_min_proto_version(vpninfo->dtls_ctx, dtlsver) ||
+- !SSL_CTX_set_max_proto_version(vpninfo->dtls_ctx, dtlsver)) {
+- vpn_progress(vpninfo, PRG_ERR,
+- _("Set DTLS CTX version failed\n"));
+- openconnect_report_ssl_errors(vpninfo);
+- SSL_CTX_free(vpninfo->dtls_ctx);
+- vpninfo->dtls_ctx = NULL;
+- vpninfo->dtls_attempt_period = 0;
+- return -EINVAL;
+- }
++#ifdef HAVE_SSL_CTX_PROTOVER
++ if (dtlsver &&
++ (!SSL_CTX_set_min_proto_version(vpninfo->dtls_ctx, dtlsver) ||
++ !SSL_CTX_set_max_proto_version(vpninfo->dtls_ctx, dtlsver))) {
++ vpn_progress(vpninfo, PRG_ERR,
++ _("Set DTLS CTX version failed\n"));
++ openconnect_report_ssl_errors(vpninfo);
++ SSL_CTX_free(vpninfo->dtls_ctx);
++ vpninfo->dtls_ctx = NULL;
++ vpninfo->dtls_attempt_period = 0;
++ return -EINVAL;
++ }
++#else /* !HAVE_SSL_CTX_PROTOVER */
++ /* If we used the legacy version-specific methods, we need the special
++ * way to make TLSv1_client_method() do DTLS1_BAD_VER. */
++ if (dtlsver == DTLS1_BAD_VER)
++ SSL_CTX_set_options(vpninfo->dtls_ctx, SSL_OP_CISCO_ANYCONNECT);
+ #endif
+ #if defined (HAVE_DTLS12) && !defined(OPENSSL_NO_PSK)
+- } else {
++ if (!dtlsver) {
+ SSL_CTX_set_psk_client_callback(vpninfo->dtls_ctx, psk_callback);
+ /* For PSK we override the DTLS master secret with one derived
+ * from the HTTPS session. */
+@@ -401,9 +404,9 @@ int start_dtls_handshake(struct openconnect_info *vpninfo, int dtls_fd)
+ }
+ /* For SSL_CTX_set_cipher_list() */
+ cipher = "PSK";
+-
+-#endif
+ }
++#endif /* OPENSSL_NO_PSK */
++
+ /* If we don't readahead, then we do short reads and throw
+ away the tail of data packets. */
+ SSL_CTX_set_read_ahead(vpninfo->dtls_ctx, 1);
+--
+2.17.1
+
--- /dev/null
+From 97cafd182f5a5c2d13f57d7faeac8432aea9bbf8 Mon Sep 17 00:00:00 2001
+From: David Woodhouse <dwmw2@infradead.org>
+Date: Mon, 10 Jun 2019 12:34:43 +0100
+Subject: [PATCH] Disable encrypt-then-mac where possible with DTLS and OpenSSL
+
+There is pain here. Just don't bother.
+
+Signed-off-by: David Woodhouse <dwmw2@infradead.org>
+---
+ openssl-dtls.c | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/openssl-dtls.c b/openssl-dtls.c
+index 9e3c5d46..646bf71c 100644
+--- a/openssl-dtls.c
++++ b/openssl-dtls.c
+@@ -406,7 +406,17 @@ int start_dtls_handshake(struct openconnect_info *vpninfo, int dtls_fd)
+ cipher = "PSK";
+ }
+ #endif /* OPENSSL_NO_PSK */
+-
++#ifdef SSL_OP_NO_ENCRYPT_THEN_MAC
++ /* I'm fairly sure I wasn't lying when I said I had tested
++ * https://github.com/openssl/openssl/commit/e23d5071ec4c7aa6bb2b
++ * against GnuTLS both with and without EtM in 2016.
++ * Nevertheless, in 2019 it seems to be failing to negotiate
++ * at least for DTLS1_BAD_VER against ocserv with GnuTLS 3.6.7.
++ * Just turn it off. Real Cisco servers don't do it for
++ * DTLS1_BAD_VER, and we should be using GCM ciphersuites in
++ * newer versions of DTLS anyway so it's irrelevant. */
++ SSL_CTX_set_options(vpninfo->dtls_ctx, SSL_OP_NO_ENCRYPT_THEN_MAC);
++#endif
+ /* If we don't readahead, then we do short reads and throw
+ away the tail of data packets. */
+ SSL_CTX_set_read_ahead(vpninfo->dtls_ctx, 1);
+--
+2.17.1
+
# - Check and update kmod dependencies when necessary (runtime module load check in the least)
#
PKG_NAME:=openvswitch
-PKG_VERSION:=2.11.0
-PKG_RELEASE:=3
+PKG_VERSION:=2.11.1
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.openvswitch.org/releases/
-PKG_HASH:=f4b01d7376d7298bc6e7fa7a6067229ca7c7e299394e5ea9aff651d52edfdbee
+PKG_HASH:=c1296ae44a7b176150915e33bc497cc0a7a02caeba84ea43ce9b6a2509d9b5dc
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
ovs_kmod_upstream_name=kmod-$(call ovs_kmod_package_name,$(patsubst %-intree,%,$(1)))
ovs_kmod_package_provides=$(call ovs_kmod_upstream_name,$(1))
define OvsKmodPackageTemplate
+ifeq ($(if $(call ovs_kmod_is_intree,$(1)),$(ovs_kmod_intree_not_supported)),)
define KernelPackage/$(call ovs_kmod_package_name,$(1))
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Support
TITLE:=$(ovs_kmod_$(1)_title)
- DEPENDS:=$(ovs_kmod_$(1)_depends) $(if $(call ovs_kmod_is_intree,$(1)),@DEVEL $(if $(ovs_kmod_intree_not_supported),@BROKEN))
+ DEPENDS:=$(ovs_kmod_$(1)_depends) $(if $(call ovs_kmod_is_intree,$(1)),@DEVEL)
PROVIDES:=$(call ovs_kmod_package_provides,$(1))
KCONFIG:=$(ovs_kmod_$(1)_kconfig)
FILES:=$(ovs_kmod_$(1)_files)
endef
ovs_kmod_packages+=$(call ovs_kmod_package_name,$(1))
+endif
endef
ovs_kmod_openvswitch_title:=Open vSwitch kernel datapath (upstream)
ovs_kmod_openvswitch_kconfig:=CONFIG_OPENVSWITCH
ovs_kmod_openvswitch_depends:=\
- +kmod-lib-crc32c +kmod-mpls \
- +kmod-nf-nat +IPV6:kmod-nf-nat6 \
- +kmod-nf-conntrack +IPV6:kmod-nf-conntrack6
+ +kmod-lib-crc32c \
+ +kmod-nf-nat \
+ +IPV6:kmod-nf-nat6 \
+ +kmod-nf-conntrack \
+ +IPV6:kmod-nf-conntrack6 \
+ +(!LINUX_4_9&&!LINUX_4.14):kmod-nsh \
+
ovs_kmod_openvswitch_files:=$(ovs_kmod_upstream_dir)/openvswitch.ko
$(eval $(call OvsKmodPackageTemplate,openvswitch))
# enabled and selected on its own
#
ovs_kmod_openvswitch-intree_title:=Open vSwitch kernel datapath (in tree)
-ovs_kmod_openvswitch-intree_depends:=$(ovs_kmod_openvswitch_depends) +kmod-gre +IPV6:kmod-gre6
+ovs_kmod_openvswitch-intree_depends:=\
+ +kmod-lib-crc32c \
+ +kmod-nf-nat \
+ +IPV6:kmod-nf-nat6 \
+ +kmod-nf-conntrack \
+ +IPV6:kmod-nf-conntrack6 \
+ +kmod-gre +IPV6:kmod-gre6 \
+
ovs_kmod_openvswitch-intree_files:= $(ovs_kmod_intree_dir)/openvswitch.ko
$(eval $(call OvsKmodPackageTemplate,openvswitch-intree))
ovs_intree_kmod_enabled:=$(strip $(foreach c,$(ovs_intree_kmod_configs),$($(c))))
PKG_CONFIG_DEPENDS+=$(ovs_intree_kmod_configs)
ifneq ($(ovs_intree_kmod_enabled),)
- CONFIGURE_ARGS += --with-linux=$(LINUX_DIR)
+ ifeq ($(ovs_kmod_intree_not_supported),)
+ CONFIGURE_ARGS += --with-linux=$(LINUX_DIR)
+ else
+ $(warning XXX: openvswitch: intree kmods selected but not supported)
+ endif
endif
TARGET_CFLAGS += -flto -std=gnu99
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=ostiary
+PKG_VERSION:=4.0
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://ingles.homeunix.net/software/ost/latest/
+PKG_HASH:=1b6a0a8a17fd3aa0f6511cdda81558d54f11023a0c953201ddaaef35f56a82c4
+
+PKG_MAINTAINER:=Chris Geraghty <cgretski@hotmail.com>
+PKG_LICENSE:=GPL-2.0-only
+PKG_LICENSE_FILES:=COPYING
+
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/ostiary
+ SECTION:=base
+ CATEGORY:=Network
+ TITLE:=Secure remote execution utility
+ URL:=http://ingles.homeunix.net/software/ost/index.html
+endef
+
+define Package/ostiary/description
+ Replay-resistent predefined remote-command trigger
+endef
+
+define Package/ostiary/conffiles
+/etc/ostiary.cfg
+endef
+
+MAKE_FLAGS += all
+
+define Package/ostiary/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/ostiaryd $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/ostclient $(1)/usr/bin/
+ $(INSTALL_DIR) $(1)/etc
+ $(INSTALL_CONF) $(PKG_BUILD_DIR)/tests/ostiary.cfg $(1)/etc/ostiary.cfg
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/ostiaryd.init $(1)/etc/init.d/ostiary
+endef
+
+
+$(eval $(call BuildPackage,ostiary))
--- /dev/null
+#!/bin/sh /etc/rc.common
+
+START=99
+STOP=85
+
+USE_PROCD=1
+
+start_service()
+{
+
+ procd_open_instance
+ procd_set_param command /usr/bin/ostiaryd -c /etc/ostiary.cfg
+ procd_close_instance
+}
+
+
+reload_service() {
+ procd_send_signal ostiaryd
+}
PKG_NAME:=pagekitec
PKG_REV:=0.91.171102
PKG_VERSION:=$(PKG_REV)C
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_LICENSE:=Apache-2.0
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
define Package/libpagekite/install
$(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/libpagekite.so* $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpagekite.so* $(1)/usr/lib
endef
define Package/pagekitec/install
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=pdns
+PKG_VERSION:=4.1.10
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=https://downloads.powerdns.com/releases/
+PKG_HASH:=5a46cfde92caaaa2e85af9a15acb9ad81b56f4c8a8255c457e6938d8c0cb15c7
+
+PKG_MAINTAINER:=James Taylor <james@jtaylor.id.au>
+PKG_LICENCE:=GPL-2.0-only
+PKG_LICENCE_FILES:=COPYING
+PKG_CPE_ID:=cpe:/a:powerdns:authoritative_server
+
+PKG_FIXUP:=autoreconf
+
+PKG_INSTALL:=1
+
+PKG_BUILD_PARALLEL:=1
+
+PKG_BUILD_DEPENDS:=unixodbc/host
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/pdns/Default
+ SECTION:=net
+ CATEGORY:=Network
+ SUBMENU:=IP Addresses and Names
+ TITLE:=PowerDNS Authoritative Server
+ DEPENDS:=+libatomic
+ URL:=https://www.powerdns.com/auth.html
+endef
+
+define Package/pdns/description
+ PowerDNS is a versatile nameserver which supports a large number
+ of different backends ranging from simple zonefiles to relational
+ databases and load balancing/failover algorithms.
+ PowerDNS tries to emphasize speed and security.
+
+ This is the authoritative nameserver that answers questions about
+ domains that it knows about. You also need at least one backend installed to
+ serve data.
+endef
+
+PDNS_BACKENDS =
+
+define Package/pdns-backends
+$(call Package/pdns/Default)
+ TITLE+= (all backends)
+ DEPENDS+= $(PDNS_DEPENDS)
+ HIDDEN:=1
+endef
+
+define Package/pdns-backends/description
+ This meta package contains only dependencies for PowerDNS backends.
+endef
+
+# Create a meta-package of dependent backends (for ALL)
+define Package/pdns-backends/install
+ true
+endef
+
+define Package/pdns-tools
+ $(call Package/pdns/Default)
+ TITLE:=Tools for DNS debugging by PowerDNS
+ DEPENDS+=+boost +boost-program_options +libopenssl +p11-kit +protobuf
+endef
+
+define Package/pdns-tools/description
+ PowerDNS is a versatile nameserver which supports a large number
+ of different backends ranging from simple zonefiles to relational
+ databases and load balancing/failover algorithms.
+ PowerDNS tries to emphasize speed and security.
+
+ This package contains several tools to debug DNS issues. These tools do not
+ require any part of the PowerDNS server components to work.
+
+ * dnsbulktest: A resolver stress-tester
+ * dnsgram: Show per 5-second statistics to study intermittent resolver issues
+ * dnsreplay: Replay a pcap with DNS queries
+ * dnsscan: Prints the query-type amounts in a pcap
+ * dnsscope: Calculates statistics without replaying traffic
+ * dnstcpbench: Perform TCP benchmarking of DNS servers
+ * dnswasher: Clean a pcap of identifying IP information
+ * ixplore: Explore diffs from IXFRs
+ * nsec3dig: Calculate the correctness of NSEC3 proofs
+ * saxfr: AXFR zones and show extra information
+endef
+
+define Package/pdns
+ $(call Package/pdns/Default)
+ DEPENDS+=+boost +boost-program_options +liblua +libopenssl +libsodium +libsqlite3 +p11-kit
+endef
+
+define Package/pdns/config
+ menu "Select PowerDNS backends"
+ depends on PACKAGE_pdns
+ comment "PowerDNS backends"
+
+ $(foreach backend,$(PDNS_BACKENDS), \
+ config PACKAGE_pdns-backend-$(backend)
+ prompt "$(PDNS_BACKEND_$(backend)_DESC) backend"
+ default m if ALL
+ )
+ endmenu
+endef
+
+
+# 1: short name
+# 2: dependencies on other PowerDNS libraries (short name)
+# 3: dependencies on other packages
+# 4: conditional/inward dependencies
+define DefinePdnsBackend
+ PDNS_DEPENDS+= +pdns-backend-$(1)
+ PKG_CONFIG_DEPENDS+= CONFIG_PACKAGE_pdns-backend$(1)
+
+ PDNS_BACKENDS+= $(1)
+
+ PDNS_BACKEND_$(1)_DESC=$(if $(5),$(5),$(1))
+ PDNS_BACKEND_$(1)_LIB=$(if $(4),$(4),$(1))
+
+ define Package/pdns-backend-$(1)
+ $(call Package/pdns/Default)
+ TITLE+= ($(1))
+ DEPENDS+= pdns $$(foreach backend,$(2),+pdns-backend-$$(backend)) $(3)
+ HIDDEN:=1
+ endef
+
+ define Package/pdns-backend-$(1)/description
+ PowerDNS is a versatile nameserver which supports a large number
+ of different backends ranging from simple zonefiles to relational
+ databases and load balancing/failover algorithms.
+ PowerDNS tries to emphasize speed and security.
+
+ This package contains the $(if $(5),$(5),$(1)) backend for the PowerDNS nameserver.
+ endef
+endef
+
+$(eval $(call DefinePdnsBackend,mysql,,libmysqlclient,gmysql,MySQL))
+$(eval $(call DefinePdnsBackend,odbc,,unixodbc,godbc,ODBC))
+$(eval $(call DefinePdnsBackend,pgsql,,libpq,gpgsql,PostgreSQL))
+$(eval $(call DefinePdnsBackend,sqlite3,,libsqlite3,gsqlite3,SQLite 3))
+$(eval $(call DefinePdnsBackend,ldap,,libopenldap krb5-libs,,OpenLDAP))
+$(eval $(call DefinePdnsBackend,lua,,lua liblua,,Lua))
+$(eval $(call DefinePdnsBackend,mydns,,libmysqlclient,,MyDNS))
+$(eval $(call DefinePdnsBackend,pipe,,,,Pipe))
+$(eval $(call DefinePdnsBackend,remote,,,,Remote))
+
+define Package/pdns/conffiles
+/etc/powerdns/pdns.conf
+/etc/init.d/pdns
+endef
+
+CONFIGURE_ARGS+= \
+ --sysconfdir=/etc/powerdns \
+ --libdir=/usr/lib/powerdns \
+ --with-dynmodules="$(foreach backend,$(PDNS_BACKENDS),$(if $(CONFIG_PACKAGE_pdns-backend-$(backend)),$(PDNS_BACKEND_$(backend)_LIB),))" \
+ --with-modules="bind random" \
+ --with-mysql-lib=$(STAGING_DIR)/usr \
+ --with-mysql-includes=$(STAGING_DIR)/usr \
+ $(if $(CONFIG_PACKAGE_pdns-tools),--enable-tools,) \
+ --with-protobuf \
+ --enable-libsodium \
+ --enable-experimental-pkcs11
+
+define Package/pdns/install
+ $(INSTALL_DIR) $(1)/etc/powerdns
+ $(INSTALL_CONF) ./files/pdns.conf-dist $(1)/etc/powerdns/pdns.conf-dist
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/pdns.init $(1)/etc/init.d/pdns
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/pdns_control $(1)/usr/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/pdnsutil $(1)/usr/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/zone2sql $(1)/usr/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/zone2json $(1)/usr/bin/
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(CP) $(PKG_INSTALL_DIR)/usr/sbin/pdns_server $(1)/usr/sbin/
+endef
+
+define Package/pdns/Default/install
+ $(INSTALL_DIR) $(1)/usr/lib/powerdns/pdns
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/powerdns/pdns/lib$(PDNS_BACKEND_$(2)_LIB)backend.so $(1)/usr/lib/powerdns/pdns/
+endef
+
+define Package/pdns-tools/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/calidns $(1)/usr/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/dnsbulktest $(1)/usr/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/dnsgram $(1)/usr/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/dnspcap2protobuf $(1)/usr/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/dnsreplay $(1)/usr/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/dnsscan $(1)/usr/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/dnsscope $(1)/usr/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/dnstcpbench $(1)/usr/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/dnswasher $(1)/usr/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/dumresp $(1)/usr/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/ixplore $(1)/usr/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/nproxy $(1)/usr/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/nsec3dig $(1)/usr/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/pdns_notify $(1)/usr/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/saxfr $(1)/usr/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/sdig $(1)/usr/bin/
+endef
+
+define BuildPdnsBackend
+ define Package/pdns-backend-$(1)/install
+ $(call Package/pdns/Default/install,$$(1),$(1))
+ endef
+
+ $$(eval $$(call BuildPackage,pdns-backend-$(1)))
+endef
+
+$(foreach backend,$(PDNS_BACKENDS),$(eval $(call BuildPdnsBackend,$(backend))))
+$(eval $(call BuildPackage,pdns))
+$(eval $(call BuildPackage,pdns-tools))
--- /dev/null
+# Autogenerated configuration file template
+#################################
+# 8bit-dns Allow 8bit dns queries
+#
+# 8bit-dns=no
+
+#################################
+# allow-axfr-ips Allow zonetransfers only to these subnets
+#
+# allow-axfr-ips=127.0.0.0/8,::1
+
+#################################
+# allow-dnsupdate-from A global setting to allow DNS updates from these IP ranges.
+#
+# allow-dnsupdate-from=127.0.0.0/8,::1
+
+#################################
+# allow-notify-from Allow AXFR NOTIFY from these IP ranges. If empty, drop all incoming notifies.
+#
+# allow-notify-from=0.0.0.0/0,::/0
+
+#################################
+# allow-unsigned-notify Allow unsigned notifications for TSIG secured domains
+#
+# allow-unsigned-notify=yes
+
+#################################
+# allow-unsigned-supermaster Allow supermasters to create zones without TSIG signed NOTIFY
+#
+# allow-unsigned-supermaster=yes
+
+#################################
+# also-notify When notifying a domain, also notify these nameservers
+#
+# also-notify=
+
+#################################
+# any-to-tcp Answer ANY queries with tc=1, shunting to TCP
+#
+# any-to-tcp=yes
+
+#################################
+# api Enable/disable the REST API (including HTTP listener)
+#
+# api=no
+
+#################################
+# api-key Static pre-shared authentication key for access to the REST API
+#
+# api-key=
+
+#################################
+# api-logfile Location of the server logfile (used by the REST API)
+#
+# api-logfile=/var/log/pdns.log
+
+#################################
+# api-readonly Disallow data modification through the REST API when set
+#
+# api-readonly=no
+
+#################################
+# axfr-lower-serial Also AXFR a zone from a master with a lower serial
+#
+# axfr-lower-serial=no
+
+#################################
+# cache-ttl Seconds to store packets in the PacketCache
+#
+# cache-ttl=20
+
+#################################
+# carbon-interval Number of seconds between carbon (graphite) updates
+#
+# carbon-interval=30
+
+#################################
+# carbon-ourname If set, overrides our reported hostname for carbon stats
+#
+# carbon-ourname=
+
+#################################
+# carbon-server If set, send metrics in carbon (graphite) format to this server IP address
+#
+# carbon-server=
+
+#################################
+# chroot If set, chroot to this directory for more security
+#
+# chroot=
+
+#################################
+# config-dir Location of configuration directory (pdns.conf)
+#
+# config-dir=/usr/local/etc
+
+#################################
+# config-name Name of this virtual configuration - will rename the binary image
+#
+# config-name=
+
+#################################
+# control-console Debugging switch - don't use
+#
+# control-console=no
+
+#################################
+# daemon Operate as a daemon
+#
+# daemon=no
+
+#################################
+# default-ksk-algorithm Default KSK algorithm
+#
+# default-ksk-algorithm=ecdsa256
+
+#################################
+# default-ksk-size Default KSK size (0 means default)
+#
+# default-ksk-size=0
+
+#################################
+# default-soa-edit Default SOA-EDIT value
+#
+# default-soa-edit=
+
+#################################
+# default-soa-edit-signed Default SOA-EDIT value for signed zones
+#
+# default-soa-edit-signed=
+
+#################################
+# default-soa-mail mail address to insert in the SOA record if none set in the backend
+#
+# default-soa-mail=
+
+#################################
+# default-soa-name name to insert in the SOA record if none set in the backend
+#
+# default-soa-name=a.misconfigured.powerdns.server
+
+#################################
+# default-ttl Seconds a result is valid if not set otherwise
+#
+# default-ttl=3600
+
+#################################
+# default-zsk-algorithm Default ZSK algorithm
+#
+# default-zsk-algorithm=
+
+#################################
+# default-zsk-size Default ZSK size (0 means default)
+#
+# default-zsk-size=0
+
+#################################
+# direct-dnskey Fetch DNSKEY RRs from backend during DNSKEY synthesis
+#
+# direct-dnskey=no
+
+#################################
+# disable-axfr Disable zonetransfers but do allow TCP queries
+#
+# disable-axfr=no
+
+#################################
+# disable-axfr-rectify Disable the rectify step during an outgoing AXFR. Only required for regression testing.
+#
+# disable-axfr-rectify=no
+
+#################################
+# disable-syslog Disable logging to syslog, useful when running inside a supervisor that logs stdout
+#
+# disable-syslog=no
+
+#################################
+# disable-tcp Do not listen to TCP queries
+#
+# disable-tcp=no
+
+#################################
+# distributor-threads Default number of Distributor (backend) threads to start
+#
+# distributor-threads=3
+
+#################################
+# dname-processing If we should support DNAME records
+#
+# dname-processing=no
+
+#################################
+# dnssec-key-cache-ttl Seconds to cache DNSSEC keys from the database
+#
+# dnssec-key-cache-ttl=30
+
+#################################
+# dnsupdate Enable/Disable DNS update (RFC2136) support. Default is no.
+#
+# dnsupdate=no
+
+#################################
+# do-ipv6-additional-processing Do AAAA additional processing
+#
+# do-ipv6-additional-processing=yes
+
+#################################
+# domain-metadata-cache-ttl Seconds to cache domain metadata from the database
+#
+# domain-metadata-cache-ttl=60
+
+#################################
+# edns-subnet-processing If we should act on EDNS Subnet options
+#
+# edns-subnet-processing=no
+
+#################################
+# entropy-source If set, read entropy from this file
+#
+# entropy-source=/dev/urandom
+
+#################################
+# expand-alias Expand ALIAS records
+#
+# expand-alias=no
+
+#################################
+# forward-dnsupdate A global setting to allow DNS update packages that are for a Slave domain, to be forwarded to the master.
+#
+# forward-dnsupdate=yes
+
+#################################
+# forward-notify IP addresses to forward received notifications to regardless of master or slave settings
+#
+# forward-notify=
+
+#################################
+# guardian Run within a guardian process
+#
+# guardian=no
+
+#################################
+# include-dir Include *.conf files from this directory
+#
+# include-dir=
+
+#################################
+# launch Which backends to launch and order to query them in
+#
+# launch=
+
+#################################
+# load-modules Load this module - supply absolute or relative path
+#
+# load-modules=
+
+#################################
+# local-address Local IP addresses to which we bind
+#
+# local-address=0.0.0.0
+
+#################################
+# local-address-nonexist-fail Fail to start if one or more of the local-address's do not exist on this server
+#
+# local-address-nonexist-fail=yes
+
+#################################
+# local-ipv6 Local IP address to which we bind
+#
+# local-ipv6=::
+
+#################################
+# local-ipv6-nonexist-fail Fail to start if one or more of the local-ipv6 addresses do not exist on this server
+#
+# local-ipv6-nonexist-fail=yes
+
+#################################
+# local-port The port on which we listen
+#
+# local-port=53
+
+#################################
+# log-dns-details If PDNS should log DNS non-erroneous details
+#
+# log-dns-details=no
+
+#################################
+# log-dns-queries If PDNS should log all incoming DNS queries
+#
+# log-dns-queries=no
+
+#################################
+# log-timestamp Print timestamps in log lines
+#
+# log-timestamp=yes
+
+#################################
+# logging-facility Log under a specific facility
+#
+# logging-facility=
+
+#################################
+# loglevel Amount of logging. Higher is more. Do not set below 3
+#
+# loglevel=4
+
+#################################
+# lua-axfr-script Script to be used to edit incoming AXFRs
+#
+# lua-axfr-script=
+
+#################################
+# lua-dnsupdate-policy-script Lua script with DNS update policy handler
+#
+# lua-dnsupdate-policy-script=
+
+#################################
+# lua-prequery-script Lua script with prequery handler (DO NOT USE)
+#
+# lua-prequery-script=
+
+#################################
+# master Act as a master
+#
+# master=no
+
+#################################
+# max-cache-entries Maximum number of entries in the query cache
+#
+# max-cache-entries=1000000
+
+#################################
+# max-ent-entries Maximum number of empty non-terminals in a zone
+#
+# max-ent-entries=100000
+
+#################################
+# max-nsec3-iterations Limit the number of NSEC3 hash iterations
+#
+# max-nsec3-iterations=500
+
+#################################
+# max-packet-cache-entries Maximum number of entries in the packet cache
+#
+# max-packet-cache-entries=1000000
+
+#################################
+# max-queue-length Maximum queuelength before considering situation lost
+#
+# max-queue-length=5000
+
+#################################
+# max-signature-cache-entries Maximum number of signatures cache entries
+#
+# max-signature-cache-entries=
+
+#################################
+# max-tcp-connection-duration Maximum time in seconds that a TCP DNS connection is allowed to stay open.
+#
+# max-tcp-connection-duration=0
+
+#################################
+# max-tcp-connections Maximum number of TCP connections
+#
+# max-tcp-connections=20
+
+#################################
+# max-tcp-connections-per-client Maximum number of simultaneous TCP connections per client
+#
+# max-tcp-connections-per-client=0
+
+#################################
+# max-tcp-transactions-per-conn Maximum number of subsequent queries per TCP connection
+#
+# max-tcp-transactions-per-conn=0
+
+#################################
+# module-dir Default directory for modules
+#
+# module-dir=/usr/local/lib/pdns
+
+#################################
+# negquery-cache-ttl Seconds to store negative query results in the QueryCache
+#
+# negquery-cache-ttl=60
+
+#################################
+# no-shuffle Set this to prevent random shuffling of answers - for regression testing
+#
+# no-shuffle=off
+
+#################################
+# non-local-bind Enable binding to non-local addresses by using FREEBIND / BINDANY socket options
+#
+# non-local-bind=no
+
+#################################
+# only-notify Only send AXFR NOTIFY to these IP addresses or netmasks
+#
+# only-notify=0.0.0.0/0,::/0
+
+#################################
+# out-of-zone-additional-processing Do out of zone additional processing
+#
+# out-of-zone-additional-processing=yes
+
+#################################
+# outgoing-axfr-expand-alias Expand ALIAS records during outgoing AXFR
+#
+# outgoing-axfr-expand-alias=no
+
+#################################
+# overload-queue-length Maximum queuelength moving to packetcache only
+#
+# overload-queue-length=0
+
+#################################
+# prevent-self-notification Don't send notifications to what we think is ourself
+#
+# prevent-self-notification=yes
+
+#################################
+# query-cache-ttl Seconds to store query results in the QueryCache
+#
+# query-cache-ttl=20
+
+#################################
+# query-local-address Source IP address for sending queries
+#
+# query-local-address=0.0.0.0
+
+#################################
+# query-local-address6 Source IPv6 address for sending queries
+#
+# query-local-address6=::
+
+#################################
+# query-logging Hint backends that queries should be logged
+#
+# query-logging=no
+
+#################################
+# queue-limit Maximum number of milliseconds to queue a query
+#
+# queue-limit=1500
+
+#################################
+# receiver-threads Default number of receiver threads to start
+#
+# receiver-threads=1
+
+#################################
+# resolver Use this resolver for ALIAS and the internal stub resolver
+#
+# resolver=no
+
+#################################
+# retrieval-threads Number of AXFR-retrieval threads for slave operation
+#
+# retrieval-threads=2
+
+#################################
+# reuseport Enable higher performance on compliant kernels by using SO_REUSEPORT allowing each receiver thread to open its own socket
+#
+# reuseport=no
+
+#################################
+# security-poll-suffix Domain name from which to query security update notifications
+#
+# security-poll-suffix=secpoll.powerdns.com.
+
+#################################
+# server-id Returned when queried for 'id.server' TXT or NSID, defaults to hostname - disabled or custom
+#
+# server-id=
+
+#################################
+# setgid If set, change group id to this gid for more security
+#
+# setgid=
+
+#################################
+# setuid If set, change user id to this uid for more security
+#
+# setuid=
+
+#################################
+# signing-threads Default number of signer threads to start
+#
+# signing-threads=3
+
+#################################
+# slave Act as a slave
+#
+# slave=no
+
+#################################
+# slave-cycle-interval Schedule slave freshness checks once every .. seconds
+#
+# slave-cycle-interval=60
+
+#################################
+# slave-renotify If we should send out notifications for slaved updates
+#
+# slave-renotify=no
+
+#################################
+# soa-expire-default Default SOA expire
+#
+# soa-expire-default=604800
+
+#################################
+# soa-minimum-ttl Default SOA minimum ttl
+#
+# soa-minimum-ttl=3600
+
+#################################
+# soa-refresh-default Default SOA refresh
+#
+# soa-refresh-default=10800
+
+#################################
+# soa-retry-default Default SOA retry
+#
+# soa-retry-default=3600
+
+#################################
+# socket-dir Where the controlsocket will live, /var/run when unset and not chrooted
+#
+# socket-dir=
+
+#################################
+# tcp-control-address If set, PowerDNS can be controlled over TCP on this address
+#
+# tcp-control-address=
+
+#################################
+# tcp-control-port If set, PowerDNS can be controlled over TCP on this address
+#
+# tcp-control-port=53000
+
+#################################
+# tcp-control-range If set, remote control of PowerDNS is possible over these networks only
+#
+# tcp-control-range=127.0.0.0/8, 10.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, ::1/128, fe80::/10
+
+#################################
+# tcp-control-secret If set, PowerDNS can be controlled over TCP after passing this secret
+#
+# tcp-control-secret=
+
+#################################
+# tcp-fast-open Enable TCP Fast Open support on the listening sockets, using the supplied numerical value as the queue size
+#
+# tcp-fast-open=0
+
+#################################
+# tcp-idle-timeout Maximum time in seconds that a TCP DNS connection is allowed to stay open while being idle
+#
+# tcp-idle-timeout=5
+
+#################################
+# traceback-handler Enable the traceback handler (Linux only)
+#
+# traceback-handler=yes
+
+#################################
+# trusted-notification-proxy IP address of incoming notification proxy
+#
+# trusted-notification-proxy=
+
+#################################
+# udp-truncation-threshold Maximum UDP response size before we truncate
+#
+# udp-truncation-threshold=1680
+
+#################################
+# version-string PowerDNS version in packets - full, anonymous, powerdns or custom
+#
+# version-string=full
+
+#################################
+# webserver Start a webserver for monitoring (api=yes also enables the HTTP listener)
+#
+# webserver=no
+
+#################################
+# webserver-address IP Address of webserver/API to listen on
+#
+# webserver-address=127.0.0.1
+
+#################################
+# webserver-allow-from Webserver/API access is only allowed from these subnets
+#
+# webserver-allow-from=127.0.0.1,::1
+
+#################################
+# webserver-password Password required for accessing the webserver
+#
+# webserver-password=
+
+#################################
+# webserver-port Port of webserver/API to listen on
+#
+# webserver-port=8081
+
+#################################
+# webserver-print-arguments If the webserver should print arguments
+#
+# webserver-print-arguments=no
+
+#################################
+# write-pid Write a PID file
+#
+# write-pid=yes
+
+#################################
+# xfr-max-received-mbytes Maximum number of megabytes received from an incoming XFR
+#
+# xfr-max-received-mbytes=100
--- /dev/null
+#!/bin/sh /etc/rc.common
+START=99
+
+USE_PROCD=1
+
+start_service() {
+ [ -e /etc/powerdns/pdns.conf ] || return 1
+
+ procd_open_instance
+ procd_set_param command /usr/sbin/pdns_server --daemon=no --guardian=no
+ procd_set_param file /etc/powerdns/pdns.conf
+ procd_set_param respawn
+ procd_close_instance
+}
--- /dev/null
+--- a/pdns/Makefile.am
++++ b/pdns/Makefile.am
+@@ -54,7 +54,8 @@
+ bindparser.h \
+ named.conf.parsertest \
+ delaypipe.hh delaypipe.cc \
+- pdns.service.in
++ pdns.service.in \
++ lua_hpp.mk
+
+ BUILT_SOURCES = \
+ bind-dnssec.schema.sqlite3.sql.h \
+@@ -109,6 +108,12 @@
+
+ endif
+
++if !HAVE_LUA_HPP
++BUILT_SOURCES += lua.hpp
++nodist_pdns_server_SOURCES = lua.hpp
++CLEANFILES += lua.hpp
++endif
++
+ EXTRA_PROGRAMS = \
+ calidns \
+ comfun \
+@@ -1303,3 +1305,7 @@
+ pdns.service \
+ pdns@.service
+ endif
++
++if !HAVE_LUA_HPP
++include lua_hpp.mk
++endif
+--- /dev/null
++++ b/pdns/lua_hpp.mk
+@@ -0,0 +1,6 @@
++lua.hpp:
++ $(AM_V_GEN)echo 'extern "C" {' > $@
++ @echo '#include "lua.h"' >> $@
++ @echo '#include "lualib.h"' >> $@
++ @echo '#include "lauxlib.h"' >> $@
++ @echo '}' >> $@
+--- a/modules/luabackend/Makefile.am
++++ b/modules/luabackend/Makefile.am
+@@ -15,5 +15,15 @@
+ slave.cc \
+ supermaster.cc
+
++if !HAVE_LUA_HPP
++BUILT_SOURCES = lua.hpp
++nodist_libluabackend_la_SOURCES = lua.hpp
++CLEANFILES = lua.hpp
++endif
++
+ libluabackend_la_LDFLAGS = -module -avoid-version
+ libluabackend_la_LIBADD = $(LUA_LIBS)
++
++if !HAVE_LUA_HPP
++include ../../pdns/lua_hpp.mk
++endif
--- /dev/null
+--- a/pdns/Makefile.am
++++ b/pdns/Makefile.am
+@@ -68,11 +68,9 @@
+ backends/gsql/gsqlbackend.gcda \
+ backends/gsql/gsqlbackend.gcno \
+ backends/gsql/gsqlbackend.gcov \
+- dnsmessage.pb.cc dnsmessage.pb.h \
+- pdns.conf-dist
++ dnsmessage.pb.cc dnsmessage.pb.h
+
+ noinst_SCRIPTS = pdns.init
+-sysconf_DATA = pdns.conf-dist
+
+ sbin_PROGRAMS = pdns_server
+ bin_PROGRAMS = \
+@@ -1124,9 +1122,6 @@
+ endif
+ endif
+
+-pdns.conf-dist: pdns_server
+- $(AM_V_GEN)./pdns_server --no-config --config 2>/dev/null > $@
+-
+ testrunner_SOURCES = \
+ arguments.cc \
+ auth-caches.cc auth-caches.hh \
--- /dev/null
+--- a/m4/pdns_check_os.m4
++++ b/m4/pdns_check_os.m4
+@@ -35,16 +35,21 @@
+ AM_CONDITIONAL([HAVE_LINUX], [test "x$have_linux" = "xyes"])
+ AM_CONDITIONAL([HAVE_SOLARIS], [test "x$have_solaris" = "xyes"])
+
+- case "$host" in
+- mips* | powerpc-* )
+- AC_MSG_CHECKING([whether the linker accepts -latomic])
+- LDFLAGS="-latomic $LDFLAGS"
+- AC_LINK_IFELSE([m4_default([],[AC_LANG_PROGRAM()])],
+- [AC_MSG_RESULT([yes])],
+- [AC_MSG_ERROR([Unable to link against libatomic, cannot continue])]
+- )
+- ;;
+- esac
++ AC_MSG_CHECKING([whether -latomic is needed for __atomic builtins])
++ AC_LINK_IFELSE(
++ [AC_LANG_PROGRAM([[#include <stdint.h>]],
++ [[uint64_t val = 0; __atomic_add_fetch(&val, 1, __ATOMIC_RELAXED);]]
++ )],
++ [AC_MSG_RESULT([no])],
++ [LIBS="$LIBS -latomic"
++ AC_LINK_IFELSE(
++ [AC_LANG_PROGRAM([[#include <stdint.h>]],
++ [[uint64_t val = 0; __atomic_add_fetch(&val, 1, __ATOMIC_RELAXED);]]
++ )],
++ [AC_MSG_RESULT([yes])],
++ [AC_MSG_FAILURE([libatomic needed, but linking with -latomic failed, cannot continue])]
++ )]
++ )
+
+ AC_SUBST(THREADFLAGS)
+ AC_SUBST([DYNLINKFLAGS], [-export-dynamic])
--- /dev/null
+--- a/build-aux/gen-version
++++ b/build-aux/gen-version
+@@ -1,39 +1,4 @@
+ #!/bin/sh
+-VERSION="unknown"
+-
+-DIRTY=""
+-git status | grep -q clean || DIRTY='.dirty'
+-
+-# Special environment variable to signal that we are building a release, as this
+-# has consequences for the version number.
+-if [ "${IS_RELEASE}" = "YES" ]; then
+- TAG="$(git describe --tags --exact-match 2> /dev/null | cut -d- -f 2-)"
+- if [ -n "${TAG}" ]; then
+- # We're on a tag
+- echo "${TAG}${DIRTY}" > .version
+- printf "${TAG}${DIRTY}"
+- exit 0
+- fi
+- echo 'This is not a tag, either tag this commit or do not set $IS_RELEASE' >&2
+- exit 1
+-fi
+-
+-#
+-# Generate the version number based on the branch
+-#
+-if [ ! -z "$(git rev-parse --abbrev-ref HEAD 2> /dev/null)" ]; then
+- if $(git rev-parse --abbrev-ref HEAD | grep -q 'rel/'); then
+- REL_TYPE="$(git rev-parse --abbrev-ref HEAD | cut -d/ -f 2 | cut -d- -f 1)"
+- VERSION="$(git describe --match=${REL_TYPE}-* --tags --dirty=.dirty | cut -d- -f 2-)"
+- else
+- GIT_VERSION=$(git show --no-patch --format=format:%h HEAD)
+- BRANCH=".$(git rev-parse --abbrev-ref HEAD | perl -p -e 's/[^[:alnum:]]//g;')"
+- [ "${BRANCH}" = ".master" ] && BRANCH=''
+- VERSION="0.0${BRANCH}.${PDNS_BUILD_NUMBER}g${GIT_VERSION}${DIRTY}"
+- fi
+- echo "$VERSION" > .version
+-elif [ -f .version ]; then
+- VERSION="$(cat .version)"
+-fi
++VERSION="$(cat .version)"
+
+ printf $VERSION
--- /dev/null
+From 7ac0df2a59ddd6e92ede2bca590ec0c76eb67559 Mon Sep 17 00:00:00 2001
+From: James Taylor <james@jtaylor.id.au>
+Date: Tue, 25 Jun 2019 19:33:04 +1000
+Subject: [PATCH] auth: make sure we really are using glibc
+
+Make sure we're using glibc and not uclibc pretending to be glibc
+---
+ pdns/receiver.cc | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/pdns/receiver.cc b/pdns/receiver.cc
+index e6686787b3..209db7af89 100644
+--- a/pdns/receiver.cc
++++ b/pdns/receiver.cc
+@@ -354,7 +354,7 @@ static int guardian(int argc, char **argv)
+ }
+ }
+
+-#ifdef __GLIBC__
++#ifdef __GLIBC__ && !defined(__UCLIBC__)
+ #include <execinfo.h>
+ static void tbhandler(int num)
+ {
+@@ -386,7 +386,7 @@ int main(int argc, char **argv)
+ s_programname="pdns";
+ s_starttime=time(0);
+
+-#ifdef __GLIBC__
++#ifdef __GLIBC__ && !defined(__UCLIBC__)
+ signal(SIGSEGV,tbhandler);
+ signal(SIGFPE,tbhandler);
+ signal(SIGABRT,tbhandler);
+@@ -450,7 +450,7 @@ int main(int argc, char **argv)
+
+ // we really need to do work - either standalone or as an instance
+
+-#ifdef __GLIBC__
++#ifdef __GLIBC__ && !defined(__UCLIBC__)
+ if(!::arg().mustDo("traceback-handler")) {
+ g_log<<Logger::Warning<<"Disabling traceback handler"<<endl;
+ signal(SIGSEGV,SIG_DFL);
PKG_NAME:=prosody
PKG_VERSION:=0.11.2
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://prosody.im/downloads/source
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/prosody/net/websocket/*.lua $(1)/usr/lib/prosody/net/websocket/
$(INSTALL_DIR) $(1)/usr/lib/prosody/util
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/prosody/util/*.lua $(1)/usr/lib/prosody/util/
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/prosody/util/*.so $(1)/usr/lib/prosody/util/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/prosody/util/*.so $(1)/usr/lib/prosody/util/
$(INSTALL_DIR) $(1)/usr/lib/prosody/util/sasl
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/prosody/util/sasl/*.lua $(1)/usr/lib/prosody/util/sasl/
- #$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/prosody/util/sasl/*.so $(1)/usr/lib/prosody/util/sasl/
+ #$(CP) $(PKG_INSTALL_DIR)/usr/lib/prosody/util/sasl/*.so $(1)/usr/lib/prosody/util/sasl/
endef
define Package/prosody/postinst
PKG_NAME:=radicale
PKG_VERSION:=1.1.6
-PKG_RELEASE:=2
-PKG_MAINTAINER:=
+PKG_RELEASE:=3
+
+PKG_SOURCE:=Radicale-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/R/Radicale
+PKG_HASH:=c007198ea45ef797344672c681d4c13f8b4aa85c15c41a1156225767a405c92b
+PKG_BUILD_DIR:=$(BUILD_DIR)/Radicale-$(PKG_VERSION)
+
+PKG_MAINTAINER:=
PKG_LICENSE:=GPL-3.0
PKG_LICENSE_FILES:=COPYING
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL=https://github.com/Kozea/Radicale
-PKG_SOURCE_VERSION:=7568ec39f09a753217fb2d525c5f8db64f4d98f4
-PKG_MIRROR_HASH:=73de51e296479f860d4d8cd383a6aa34e8c702d9fca63b0499c7fcc2e794e6df
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_SUBDIR=$(PKG_NAME)-$(PKG_VERSION)
-
include $(INCLUDE_DIR)/package.mk
-include ../../lang/python/python-package.mk
include ../../lang/python/python3-package.mk
-# no default dependencies
-PKG_DEFAULT_DEPENDS:=
-
-define Package/radicale/Default
+define Package/radicale
SECTION:=net
CATEGORY:=Network
SUBMENU:=Web Servers/Proxies
- URL:=http://radicale.org/
TITLE:=Radicale CalDAV/CardDAV server
- PKGARCH:=all
+ URL:=https://radicale.org/
+ DEPENDS:= \
+ +python3-light \
+ +python3-codecs \
+ +python3-logging \
+ +python3-openssl \
+ +python3-urllib \
+ +python3-xml
USERID:=radicale=5232:radicale=5232
-endef
-define Package/radicale-py2
- $(call Package/radicale/Default)
- TITLE+= (Python 2)
- VARIANT:=2
- DEPENDS:=+python-logging +python-openssl +python-xml +python-codecs
-endef
-define Package/radicale-py3
- $(call Package/radicale/Default)
- TITLE+= (Python 3)
- VARIANT:=3
- DEPENDS:=+python3-logging +python3-openssl +python3-xml +python3-codecs +python3-email
-endef
-
-# shown in LuCI package description
-define Package/radicale-py2/description
-Radicale CalDAV/CardDAV server (Python 2) - Homepage: http://radicale.org/
-endef
-define Package/radicale-py3/description
-Radicale CalDAV/CardDAV server (Python 3) - Homepage: http://radicale.org/
+ PROVIDES:=radicale-py2 radicale-py3
+ VARIANT:=python3
endef
-# shown in make menuconfig <Help>
-define Package/radicale-py2/config
- help
- The Radicale Project is a CalDAV (calendar) and CardDAV (contact) server.
- It aims to be a light solution, easy to use, easy to install, easy to configure.
- As a consequence, it requires few software dependances and is pre-configured to work out-of-the-box.
- !!! Will install and use Python $(VARIANT) !!!
- .
- Version : $(PKG_VERSION)
- Homepage: http://radicale.org/
+define Package/radicale/description
+ The Radicale Project is a CalDAV (calendar) and CardDAV (contact) server. It
+ aims to be a light solution, easy to use, easy to install, easy to configure.
+ As a consequence, it requires few software dependances and is pre-configured to
+ work out-of-the-box.
endef
-Package/radicale-py3/config = $(Package/radicale-py2/config)
-define Package/radicale-py2/conffiles
+define Package/radicale/conffiles
/etc/config/radicale
/etc/radicale/users
/etc/radicale/rights
endef
-Package/radicale-py3/conffiles = $(Package/radicale-py2/conffiles)
-define Build/Configure
- # nothing to configure
-endef
-define Build/Compile
- # nothing to compile
-endef
-
-define Package/radicale-py2/preinst
- #!/bin/sh
- [ -n "$${IPKG_INSTROOT}" ] && exit 0 # if run within buildroot exit
-
- # stop service if PKG_UPGRADE
- [ "$${PKG_UPGRADE}" = "1" ] && /etc/init.d/radicale stop >/dev/null 2>&1
-
- exit 0 # suppress errors from stop command
-endef
-define Package/radicale-py3/preinst
-$(call Package/radicale-py2/preinst)
-endef
-
-define Package/radicale/inst_all
+define Py3Package/radicale/install
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/radicale.init $(1)/etc/init.d/radicale
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) ./files/radicale.config $(1)/etc/config/radicale
- $(INSTALL_DIR) $(1)/lib/upgrade/keep.d
- $(INSTALL_DATA) ./files/radicale.upgrade $(1)/lib/upgrade/keep.d/radicale
-
$(INSTALL_DIR) $(1)/etc/radicale/ssl
$(INSTALL_DATA) ./files/config.template $(1)/etc/radicale/config.template
$(INSTALL_DATA) ./files/logging.template $(1)/etc/radicale/logging.template
$(INSTALL_DATA) ./files/radicale.rights $(1)/etc/radicale/rights
$(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/radicale $(1)/usr/bin/
-endef
-define Package/radicale-py2/install
- $(call Package/radicale/inst_all, $(1))
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)/radicale
- $(CP) $(PKG_BUILD_DIR)/radicale/* $(1)$(PYTHON_PKG_DIR)/radicale
-endef
-define Package/radicale-py3/install
- $(call Package/radicale/inst_all, $(1))
- $(INSTALL_DIR) $(1)$(PYTHON3_PKG_DIR)/radicale
- $(CP) $(PKG_BUILD_DIR)/radicale/* $(1)$(PYTHON3_PKG_DIR)/radicale
-endef
-
-define Package/radicale-py2/postinst
- #!/bin/sh
- # patch /usr/bin/radicale force run using python2
- /bin/sed -i 's/python/python2/' $${IPKG_INSTROOT}/usr/bin/radicale
-endef
-define Package/radicale-py3/postinst
- #!/bin/sh
- # patch /usr/bin/radicale force run using python3
- /bin/sed -i 's/python/python3/' $${IPKG_INSTROOT}/usr/bin/radicale
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/radicale $(1)/usr/bin/
endef
-$(eval $(call BuildPackage,radicale-py2))
-$(eval $(call BuildPackage,radicale-py3))
+$(eval $(call Py3Package,radicale))
+$(eval $(call BuildPackage,radicale))
+$(eval $(call BuildPackage,radicale-src))
+++ /dev/null
-/etc/config/radicale
-/etc/radicale/users
-/etc/radicale/rights
-
PKG_NAME:=seafile-seahub
PKG_VERSION:=6.3.4
-PKG_RELEASE:=3
+PKG_RELEASE:=5
PKG_LICENSE:=Apache-2.0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_HASH:=53a9efdb6791fd3a2a191e89cb0f133632056046ec08adbb2ad72088e6161430
PKG_BUILD_DIR:=$(BUILD_DIR)/seahub-$(PKG_VERSION)-server
-PKG_BUILD_DEPENDS:=python-pytz/host
+HOST_PYTHON_PACKAGE_BUILD_DEPENDS:="django>=1.11"
include $(INCLUDE_DIR)/package.mk
include ../../lang/python/python-package.mk
+SEAFILE_PYTHON_DEPENDS:= \
+ simplejson chardet dateutil mysql pytz qrcode requests requests-oauthlib \
+ django django-constance
+
define Package/seafile-seahub
- SECTION:=net
- CATEGORY:=Network
- TITLE:=Seafile server - seahub component
- URL:=https://seafile.com/
- DEPENDS:=+python-simplejson +python +pillow +python-chardet +django +django-appconf \
- +django-compressor +django-constance +django-formtools +django-jsonfield \
- +django-picklefield +django-postoffice +django-restframework \
- +django-simple-captcha +django-statici18n +django-webpack-loader \
- +flup +gunicorn +openpyxl +python-dateutil +python-mysql \
- +python-qrcode +python-requests +python-requests-oauthlib +python-pytz
+ SECTION:=net
+ CATEGORY:=Network
+ TITLE:=Seafile server - seahub component
+ URL:=https://seafile.com/
+ DEPENDS:=+python +pillow +django-appconf \
+ +django-compressor +django-formtools +django-jsonfield \
+ +django-picklefield +django-postoffice +django-restframework \
+ +django-simple-captcha +django-statici18n +django-webpack-loader \
+ +python-flup +gunicorn +openpyxl \
+ $(foreach dep,$(SEAFILE_PYTHON_DEPENDS),+python-$(dep))
endef
define Build/Configure
endef
+MAKE_VARS += \
+ PYTHON="$(HOST_PYTHON_BIN)" \
+ DJANGO_ADMIN_PY="$(STAGING_DIR_HOSTPKG)/bin/django-admin"
+
define Build/Compile
+ $(call Build/Compile/HostPyPipInstall,$(HOST_PYTHON_PACKAGE_BUILD_DEPENDS))
$(call Build/Compile/Default,locale)
endef
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,6 @@
-+include $(TOPDIR)/rules.mk
-+include $(TOPDIR)/feeds/packages/lang/python/python-package.mk
++PYTHON ?= python
++DJANGO_ADMIN_PY ?= django-admin.py
+
PROJECT=seahub
locale:
@echo "--> Compile locales"
- django-admin.py compilemessages
-+ $(call HostPython,,$(STAGING_DIR)/usr/bin/django-admin.py compilemessages)
++ $(DJANGO_ADMIN_PY) compilemessages
@echo ""
uglify:
statici18n:
@echo "--> Generate JS locale files in static/scripts/i18n"
- python manage.py compilejsi18n
-+ $(call HostPython,,manage.py compilejsi18n)
++ $(PYTHON) manage.py compilejsi18n
collectstatic:
@echo "--> Collect django static files to media/assets"
rm -rf media/assets 2> /dev/null
- python manage.py collectstatic --noinput -i admin -i termsandconditions -i app -i sysadmin-app -i build.js
-+ $(call HostPython,,manage.py collectstatic --noinput -i admin -i termsandconditions -i app -i sysadmin-app -i build.js)
++ $(PYTHON) manage.py collectstatic --noinput -i admin -i termsandconditions -i app -i sysadmin-app -i build.js
compressstatic:
@echo "--> Compress static files(css) to media/CACHE"
rm -rf media/CACHE 2> /dev/null
- python manage.py compress
-+ $(call HostPython,,manage.py compress)
++ $(PYTHON) manage.py compress
clean:
@echo '--> Cleaning media/static cache & dist'
PKG_NAME:=seafile-server
PKG_VERSION:=6.3.4
-PKG_RELEASE:=5
+PKG_RELEASE:=6
PKG_LICENSE:=GPL-3.0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
TARGET_LDFLAGS += -Wl,-rpath-link=$(STAGING_DIR)/usr/lib -liconv \
-L$(STAGING_DIR)/usr/lib/mysql -lmysqlclient -lz -levent_openssl -levent
+ifdef CONFIG_GCC_LIBSSP
+TARGET_LDFLAGS += -lssp
+endif
+
define Package/seafile-server/conffiles
/etc/config/seafile
endef
# - check if default mode has changed from being tcp_only
#
PKG_NAME:=shadowsocks-libev
-PKG_VERSION:=3.2.5
-PKG_RELEASE:=3
+PKG_VERSION:=3.3.0
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/shadowsocks/shadowsocks-libev/releases/download/v$(PKG_VERSION)
-PKG_HASH:=02273d571b8bea067eefb203a43c142d052042179904f9050a1f20cb8dc5d242
+PKG_HASH:=9732f8b8f02ffeea261bcf15fbf104f826012f74dbee99d016b75f0894a39649
PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
PKG_INSTALL:=1
PKG_USE_MIPS16:=0
PKG_BUILD_PARALLEL:=1
+PKG_BUILD_DEPENDS:=c-ares pcre
include $(INCLUDE_DIR)/package.mk
SUBMENU:=Web Servers/Proxies
TITLE:=shadowsocks-libev $(1)
URL:=https://github.com/shadowsocks/shadowsocks-libev
- DEPENDS:=+libcares +libev +libmbedtls +libpcre +libpthread +libsodium +shadowsocks-libev-config +zlib
+ DEPENDS:=+libev +libmbedtls +libpthread +libsodium +shadowsocks-libev-config $(DEPENDS_$(1))
endef
define Package/shadowsocks-libev-$(1)/install
endef
+DEPENDS_ss-local = +libpcre
+DEPENDS_ss-server = +libcares +libpcre
+
SHADOWSOCKS_COMPONENTS:=ss-local ss-redir ss-tunnel ss-server
define shadowsocks-libev/templates
$(foreach component,$(SHADOWSOCKS_COMPONENTS),
--disable-assert \
--disable-ssp \
+TARGET_CFLAGS += -flto
+TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed
+
$(eval $(call BuildPackage,shadowsocks-libev-config))
$(eval $(call BuildPackage,shadowsocks-libev-ss-rules))
$(foreach component,$(SHADOWSOCKS_COMPONENTS), \
--- /dev/null
+#
+# Copyright (C) 2018-2019 Luiz Angelo Daros de Luca
+#
+# This is free software, licensed under the GNU General Public License v2.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=switchdev-poller
+PKG_VERSION:=1.0.1
+PKG_RELEASE:=1
+PKG_MAINTAINER:=Luiz Angelo Daros de Luca <luizluca@gmail.com>
+PKG_LICENSE:=GPLv2
+
+PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
+include $(INCLUDE_DIR)/package.mk
+
+define Package/switchdev-poller
+ SECTION:=net
+ CATEGORY:=Network
+ DEPENDS:=+swconfig
+ TITLE:=Poll switchdev port to bring CPU ports up/down
+ PKGARCH:=all
+endef
+
+define Package/switchdev-poller/description
+This service monitors switchdev ports and brings down CPU ports when
+all related non-CPU vlan ports are also down. Otherwise, it brings
+the port up.
+
+endef
+
+define Build/Compile
+endef
+
+define Package/switchdev-poller/install
+ $(CP) ./files/* $(1)
+endef
+
+$(eval $(call BuildPackage,switchdev-poller))
--- /dev/null
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2018-2019 Luiz Angelo Daros de Luca <luizluca@gmail.com>
+
+START=99
+USE_PROCD=1
+
+start_service() {
+ procd_open_instance switchdev-poller
+ procd_set_param command /usr/lib/switchdev-poller/switchdev-poller
+ procd_set_param stdout 1
+ procd_set_param stderr 0 # enable for extra debug info
+ procd_set_param respawn 3600 5 5
+ procd_close_instance
+}
+
+service_triggers() {
+ procd_add_reload_trigger network
+}
--- /dev/null
+#!/bin/sh
+# shellcheck disable=SC2039,SC1091
+# https://www.shellcheck.net/wiki/SC2039 -- In POSIX sh, SC2039: In POSIX sh, string replacement is undefined.
+# https://www.shellcheck.net/wiki/SC2039 -- In POSIX sh, string indexing is undefined.
+# https://www.shellcheck.net/wiki/SC1091 -- Not following: /lib/functions.sh:...
+# Copyright (C) 2018 Luiz Angelo Daros de Luca <luizluca@gmail.com>
+#
+# Pools switchdev for port changes
+#
+
+[ -n "$NICED" ] && NICED=1 exec nice -n 19 "$0" "$@"
+
+. /usr/share/libubox/jshn.sh
+. /lib/functions.sh
+
+cpu_ports=""
+
+json_init
+json_load "$(cat /etc/board.json)"
+
+switches=
+json_get_keys switches switch
+json_select switch
+for switch in $switches; do
+ echo Loading $switch >&2
+ json_select "$switch"
+ if json_is_a ports array; then
+ ports=
+ json_get_keys ports ports
+ json_select ports
+
+ for port in $ports; do
+ echo Checking port "$port" in "$switch" >&2
+ json_select "$port"
+ num=
+ json_get_vars num device
+ if [ -n "$device" ]; then
+ echo "Port ${switch}_$num is CPU port as $device" >&2
+ cpu_ports="$cpu_ports ${switch}_$num=$device"
+ fi
+ json_select ..
+ done
+ json_select ..
+ fi
+ json_select ..
+done
+
+each_switch_vlan() {
+ switch=
+ vlan=
+ ports=
+ config_get switch "$1" device
+ config_get vlan "$1" vlan
+ config_get ports "$1" ports
+
+ [ -n "$vlan" ] || { echo "No vlan for '$1'" >&2; return 1; }
+ [ -n "$switch" ] || { echo "No device for '$1'" >&2; return 1; }
+
+ vlan_ifnames=""
+ vlan_non_cpu_ports=""
+ echo Checking vlan "$vlan" in $switch >&2
+ for port in $ports; do
+ case $port in
+ *t) tagged=1; port=${port:0:-1} ;;
+ *) tagged= ;;
+ esac
+ echo "Checking port $port in $switch used by vlan $vlan" >&2
+
+ cpu_port_ifname=""
+ for cpu_port in $cpu_ports; do
+ device=${cpu_port#*=}
+ cpu_switchport=${cpu_port%=*}
+ [ "${cpu_switchport}" = "${switch}_${port}" ] || continue
+ echo "Port $port in $switch used by $vlan is a CPU port at $device" >&2
+
+ for device_tagged in $device_tagged; do
+ [ "${tagged}" = 1 ] && not_tagged=0 || not_tagged=1
+ if [ "$device_tagged" = "$device=${not_tagged}" ]; then
+ echo "Cannot control CPU port ${cpu_switchport} when it is used both as tagged and not tagged"
+ exit 1
+ fi
+ done
+ device_tagged="${device_tagged} ${device}=${tagged:-0}"
+ cpu_port_ifname=${device}${tagged+.$vlan}
+ done
+
+ if [ -n "$cpu_port_ifname" ]; then
+ vlan_ifnames="$vlan_ifnames $cpu_port_ifname"
+ continue
+ fi
+ vlan_non_cpu_ports="$vlan_non_cpu_ports ${port}"
+ done
+ vlan_non_cpu_switch_ports="${vlan_non_cpu_ports// /:${switch}_}"
+ vlan_non_cpu_switch_ports="${vlan_non_cpu_switch_ports:1}"
+ vlan_non_cpu_ports="${vlan_non_cpu_ports:1}"
+ for vlan_ifname in $vlan_ifnames; do
+ devices2ports="$devices2ports $vlan_ifname=${vlan_non_cpu_switch_ports}"
+ echo "Monitoring $switch (ports ${vlan_non_cpu_ports// /,}) for $vlan_ifname"
+ done
+}
+
+device_tagged=""
+devices2ports=""
+config_load network
+config_foreach each_switch_vlan switch_vlan
+
+cleanup() {
+ for device2ports in $devices2ports; do
+ device=${device2ports%=*}
+ ip link show dev ${device}_down >/dev/null 2>&1 && {
+ echo "Bringing up $device on exit..."
+ ip link set dev ${device}_down name ${device}
+ ip link set dev ${device} up >/dev/null 2>&1;
+ }
+ done
+ echo "Stopped poller"
+ exit
+}
+trap cleanup INT TERM
+echo "Starting poller"
+while true; do (
+for device2ports in $devices2ports; do
+ device=${device2ports%=*}
+ switch_ports=${device2ports#*=}
+ switch_ports=${switch_ports//:/ }
+ should_be_up=false
+ for switch_port in $switch_ports; do
+ state=$(eval echo \$${switch_port})
+ if [ -z "${state}" ]; then
+ switch=${switch_port%_*}
+ port=${switch_port#*_}
+ echo "Polling $switch_port..." >&2
+ swconfig dev $switch port $port get link | grep -q 'link:up' &&
+ state=up || state=down
+ eval "$switch_port=$state"
+ echo "State of $switch_port, used by $device, is $state" >&2
+ else
+ echo "State of $switch_port, used by $device, is $state (cached)" >&2
+ fi
+ [ $state = up ] && should_be_up=true
+ done
+
+ if $should_be_up; then
+ ip link show dev ${device}_down >/dev/null 2>&1 && {
+ echo "Bringing up $device..."
+ ip link set dev ${device}_down name ${device}
+ ip link set dev ${device} up >/dev/null 2>&1;
+ }
+ else
+ ip link show dev ${device} >/dev/null 2>&1 && {
+ echo "Bringing down $device..."
+ ip link set dev ${device} down >/dev/null 2>&1;
+ ip link set dev ${device} name ${device}_down
+ }
+
+ fi
+done )
+sleep 3
+done
include $(TOPDIR)/rules.mk
PKG_NAME:=travelmate
-PKG_VERSION:=1.4.7
+PKG_VERSION:=1.4.8
PKG_RELEASE:=1
PKG_LICENSE:=GPL-3.0+
PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
#
LC_ALL=C
PATH="/usr/sbin:/usr/bin:/sbin:/bin"
-trm_ver="1.4.7"
+trm_ver="1.4.8"
trm_sysver="unknown"
trm_enabled=0
trm_debug=0
trm_proactive=1
trm_netcheck=0
trm_captiveurl="http://captive.apple.com"
+trm_scanbuffer=1024
trm_minquality=35
trm_maxretry=5
trm_maxwait=30
#
f_main()
{
- local IFS cnt dev config scan scan_list scan_essid scan_bssid scan_quality faulty_list
+ local IFS cnt dev config spec scan_list scan_essid scan_bssid scan_quality faulty_list
local station_id sta sta_essid sta_bssid sta_radio sta_iface active_essid active_bssid active_radio
f_check "initial"
f_check "dev"
fi
json_get_var faulty_list "faulty_stations"
- f_log "debug" "f_main ::: iwinfo: ${trm_iwinfo:-"-"}, dev_list: ${trm_devlist:-"-"}, sta_list: ${trm_stalist:0:800}, faulty_list: ${faulty_list:-"-"}"
+ f_log "debug" "f_main ::: iwinfo: ${trm_iwinfo:-"-"}, dev_list: ${trm_devlist:-"-"}, sta_list: ${trm_stalist:0:${trm_scanbuffer}}, faulty_list: ${faulty_list:-"-"}"
# radio loop
#
for dev in ${trm_devlist}
f_log "debug" "f_main ::: sta_radio: ${sta_radio}, sta_essid: \"${sta_essid}\", sta_bssid: ${sta_bssid:-"-"}"
if [ -z "${scan_list}" ]
then
- scan_list="$(f_trim "$("${trm_iwinfo}" "${dev}" scan 2>/dev/null | \
- awk 'BEGIN{FS="[ ]"}/Address:/{var1=$NF}/ESSID:/{var2="";for(i=12;i<=NF;i++)if(var2==""){var2=$i}else{var2=var2" "$i};gsub(/,/,".",var2)}/Quality:/{split($NF,var0,"/");printf "%i,%s,%s\n",(var0[1]*100/var0[2]),var1,var2}' | \
- sort -rn | awk 'BEGIN{ORS=","}{print $0}' | awk '{print substr($0,1,4096)}')")"
- f_log "debug" "f_main ::: scan_list: ${scan_list:0:800}"
+ scan_list="$("${trm_iwinfo}" "${dev}" scan 2>/dev/null | \
+ awk 'BEGIN{FS="[ ]"}/Address:/{var1=$NF}/ESSID:/{var2="";for(i=12;i<=NF;i++)if(var2==""){var2=$i}else{var2=var2" "$i};
+ gsub(/,/,".",var2)}/Quality:/{split($NF,var0,"/");printf "%i,%s,%s\n",(var0[1]*100/var0[2]),var1,var2}' | \
+ sort -rn | awk -v buf="${trm_scanbuffer}" 'BEGIN{ORS=","}{print substr($0,1,buf)}')"
+ f_log "debug" "f_main ::: scan_buffer: ${trm_scanbuffer}, scan_list: ${scan_list}"
if [ -z "${scan_list}" ]
then
f_log "debug" "f_main ::: no scan results on '${dev}' - continue"
# scan loop
#
IFS=","
- for scan in ${scan_list}
+ for spec in ${scan_list}
do
if [ -z "${scan_quality}" ]
then
- scan_quality="${scan}"
+ scan_quality="${spec}"
elif [ -z "${scan_bssid}" ]
then
- scan_bssid="${scan}"
+ scan_bssid="${spec}"
elif [ -z "${scan_essid}" ]
then
- scan_essid="${scan}"
+ scan_essid="${spec}"
fi
if [ -n "${scan_quality}" ] && [ -n "${scan_bssid}" ] && [ -n "${scan_essid}" ]
then
include $(TOPDIR)/rules.mk
PKG_NAME:=unbound
-PKG_VERSION:=1.9.1
-PKG_RELEASE:=4
+PKG_VERSION:=1.9.2
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://nlnetlabs.nl/downloads/unbound
-PKG_HASH:=c3c0bf9b86ccba4ca64f93dd4fe7351308ab54293f297a67de5a8914c1dc59c5
+PKG_HASH:=6f7acec5cf451277fcda31729886ae7dd62537c4f506855603e3aa153fcb6b95
PKG_MAINTAINER:=Eric Luehrsen <ericluehrsen@gmail.com>
PKG_LICENSE:=BSD-3-Clause
define Package/libunbound/install
$(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libunbound.so.* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libunbound.so.* $(1)/usr/lib/
endef
Package/libunbound-heavy/install = $(Package/libunbound/install)
4 - Above and interfaces named <iface>.<hostname>.<domain>
option add_wan_fqdn '0'
- Level. Same as previous option only this applies to the WAN. WAN
- are inferred by a UCI `config dhcp` entry that contains the line
- option ignore '1'.
+ Level. Same as previous option only this applies to the WAN. WAN are
+ inferred by a UCI `config dhcp` entry that contains the 'option ignore 1'.
option dns64 '0'
- Boolean. Enable DNS64 through Unbound in order to bridge networks
- that are IPV6 only and IPV4 only (see RFC6052).
+ Boolean. Enable DNS64 through Unbound in order to bridge networks that are
+ IPV6 only and IPV4 only (see RFC6052).
option dns64_prefix '64:ff9b::/96'
- IPV6 Prefix. The IPV6 prefix wrapped on the IPV4 address for DNS64.
- You should use RFC6052 "well known" address, unless you also
- redirect to a proxy or gateway for your NAT64.
+ IPV6 Prefix. The IPV6 prefix wrapped on the IPV4 address for DNS64. You
+ should use RFC6052 "well known" address, unless you also redirect to a proxy
+ or gateway for your NAT64.
option dhcp_link 'none'
Program Name. Link to one of the supported programs we have scripts
Boolean. Skip all this UCI nonsense. Manually edit the
configuration. Make changes to /etc/unbound/unbound.conf.
+ option num_threads '1'
+ Count. Enable multithreading with the "heavy traffic" variant. Base variant
+ spins each as whole proces and is not efficient. Two threads may be used,
+ but they use one shared cache slab. More edges into an industrial setup,
+ and UCI simplificaitons may not be appropriate.
+
option protocol 'mixed'
Unbound can limit its protocol used for recursive queries.
ip4_only - old fashioned IPv4 upstream and downstream
default - Unbound built-in defaults
option query_minimize '0'
- Boolean. Enable a minor privacy option. Don't let each server know
- the next recursion. Query one piece at a time.
+ Boolean. Enable a minor privacy option. Don't let each server know the next
+ recursion. Query one piece at a time.
option query_min_strict '0'
- Boolean. Query minimize is best effort and will fall back to normal
- when it must. This option prevents the fall back, but less than
- standard name servers will fail to resolve their domains.
+ Boolean. Query minimize is best effort and will fall back to normal when it
+ must. This option prevents the fall back, but less than standard name
+ servers will fail to resolve their domains.
option rebind_localhost '0'
- Boolean. Prevent loopback "127.0.0.0/8" or "::1/128" responses.
- These may used by black hole servers for good purposes like
- ad-blocking or parental access control. Obviously these responses
- also can be used to for bad purposes.
+ Boolean. Prevent loopback "127.0.0.0/8" or "::1/128" responses. These may
+ used by black hole servers for good purposes like ad-blocking or parental
+ access control. Obviously these responses may be used to for bad purposes.
option rebind_protection '1'
Level. Block your local address responses from global DNS. A poisoned
large - about double of medium
option root_age '9'
- Days. >90 Disables. Age limit for Unbound root data like root
- DNSSEC key. Unbound uses RFC 5011 to manage root key. This could
- harm flash ROM. This activity is mapped to "tmpfs," but every so
- often it needs to be copied back to flash for the next reboot.
+ Days. >90 Disables. Age limit for Unbound root data like root DNSSEC key.
+ Unbound uses RFC 5011 to manage root key. This could harm flash ROM. This
+ activity is mapped to "tmpfs," but every so often it needs to be copied back
+ to flash for the next reboot.
option ttl_min '120'
- Seconds. Minimum TTL in cache. Recursion can be expensive without
- cache. A low TTL is normal for server migration. A low TTL can be
- abused for snoop-vertising (DNS hit counts; recording query IP).
- Typical to configure maybe 0~300, but 1800 is the maximum accepted.
+ Seconds. Minimum TTL in cache. Recursion can be expensive without cache. A
+ low TTL is normal for server migration. A low TTL can be abused for snoop-
+ vertising (DNS hit counts; recording query IP). Typical to configure maybe
+ 0~300, but 1800 is the maximum accepted.
option unbound_control '0'
Level. Enables unbound-control application access ports.
Boolean. Enable DNSSEC. Unbound names this the "validator" module.
option validator_ntp '1'
- Boolean. Disable DNSSEC time checks at boot. Once NTP confirms
- global real time, then DNSSEC is restarted at full strength. Many
- embedded devices don't have a real time power off clock. NTP needs
- DNS to resolve servers. This works around the chicken-and-egg.
+ Boolean. Disable DNSSEC time checks at boot. Once NTP confirms global real
+ time, then DNSSEC is restarted at full strength. Many embedded devices don't
+ have a real time power off clock. NTP needs DNS to resolve servers. This
+ works around the chicken-and-egg.
option verbosity '1'
Level. Sets Unbounds logging intensity.
list trigger_interface '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.
+ 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.
config zone
Boolean. Enable the zone clause.
option fallback 1
- Boolean. Permit normal recursion when the narrowly selected servers
- in this zone are unresponsive or return empty responses. Disable, if
- there are security concerns (forward only internal to organization).
+ Boolean. Permit normal recursion when the narrowly selected servers in this
+ zone are unresponsive or return empty responses. Disable, if there are
+ security concerns (forward only internal to organization).
option port 53
Port. Servers are contact on this port for plain DNS operations.
option resolv_conf 0
- Boolean. Use "resolv.conf" as it was filled by the DHCP client. This
- can be used to forward zones within your ISP (mail.example.net) or that
- have co-located services (streamed-movies.example.com). Recursion may
- not yield the most local result, but forwarding may instead.
+ Boolean. Use "resolv.conf" as it was filled by the DHCP client. This can be
+ used to forward zones within your ISP (mail.example.net) or that have co-
+ located services (streamed-movies.example.com). Recursion may not yield the
+ most local result, but forwarding may instead.
option tls_index (n/a)
Domain. Name TLS certificates are signed for (dns.example.net). If this
- option is ommitted, then Unbound will make the connection but not
- validate it.
+ option is ommitted, then Unbound will make connections but not validate.
option tls_port 853
Port. Servers are contact on this port for DNS over TLS operations.
auth_zone type only. Files "${zone_name}.zone" are expect in this path.
option zone_type (n/a)
- State. Required field or the clause is effectively disabled. Check
- Unbound documentation for clarity (unbound-conf).
+ State. Required field or the clause is effectively disabled. Check Unbound
+ documentation for clarity (unbound-conf).
auth_zone - prefetch whole zones from authoritative server (ICANN)
forward_zone - forward queries in these domains to the listed servers
stub_zone - force recursion of these domains to the listed servers
list server (n/a)
- IP. Every zone must have one server. Stub and forward require IP to
- prevent chicken and egg (due to UCI simplicity). Authoritative prefetch
- may use a server name.
+ IP. Every zone must have one server. Stub and forward require IP to prevent
+ chicken and egg (due to UCI simplicity). Authoritative prefetch may use a
+ server name.
list zone_name
- Domain. Every zone must represent some part of the DNS tree. It can be
- all of it "." or you internal organization domain "example.com." Within
- each zone clause all zone names will be matched to all servers.
+ Domain. Every zone must represent some part of the DNS tree. It can be all
+ of it "." or you internal organization domain "example.com." Within each
+ zone clause all zone names will be matched to all servers.
```
## Replaced Options
config unbound / option prefetch_root
- List the domains in a zone with type auth_zone and fill in the server
- or url fields. Root zones are ready but disabled in default install UCI.
+ List the domains in a zone with type auth_zone and fill in the server or url
+ fields. Root zones are ready but disabled in default install UCI.
config unbound / list domain_forward
List the domains in a zone with type forward_zone and enable the
resolv_conf option.
config unbound / list rebind_interface
- Enable rebind_protection at 2 and all DHCP interfaces are also
- protected for IPV6 GLA (parallel to subnets in add_local_fqdn).
+ Enable rebind_protection at 2 and all DHCP interfaces are also protected for
+ IPV6 GLA (parallel to subnets in add_local_fqdn).
if [ ! -f "$UB_TOTAL_CONF" ] || [ -n "$UB_BOOT" ] ; then
- # Unbound is can be a bit heavy, so wait some on first start but any
- # interface coming up affects the trigger and delay so guarantee start
+ # Unbound can be a bit heavy, so wait some on first start. Any interface
+ # up affects the trigger delay and will guarantee start.
procd_add_raw_trigger "interface.*.up" 3000 /etc/init.d/unbound restart
elif [ -n "$triggers" ] ; then
UB_N_EDNS_SIZE=1280
UB_N_RX_PORT=53
UB_N_ROOT_AGE=9
+UB_N_THREADS=1
UB_TTL_MIN=120
UB_TXT_DOMAIN=lan
fi
+ if [ "$UB_N_THREADS" -gt 1 ] \
+ && $PROG -h | grep -q "linked libs:.*libevent" ; then
+ # heavy variant using "threads" may need substantial resources
+ echo " num-threads: 2" >> $UB_CORE_CONF
+ else
+ # light variant with one "process" is much more efficient with light traffic
+ echo " num-threads: 1" >> $UB_CORE_CONF
+ fi
+
+
{
- # No threading
- echo " num-threads: 1"
+ # Limited threading (2) with one shared slab
echo " msg-cache-slabs: 1"
echo " rrset-cache-slabs: 1"
echo " infra-cache-slabs: 1"
echo " local-data: \"$UB_TXT_DOMAIN. $UB_XNS\""
echo " local-data: '$UB_TXT_DOMAIN. $UB_XTXT'"
echo
- # avoid upstream involvement in RFC6762
- echo " domain-insecure: local"
- echo " private-domain: local"
- echo " local-zone: local $UB_D_DOMAIN_TYPE"
- echo " local-data: \"local. $UB_XSOA\""
- echo " local-data: \"local. $UB_XNS\""
- echo " local-data: 'local. $UB_LTXT'"
- echo
+ if [ "$UB_TXT_DOMAIN" != "local" ] ; then
+ # avoid involvement in RFC6762, unless it is the local zone name
+ echo " local-zone: local always_nxdomain"
+ echo
+ fi
} >> $UB_HOST_CONF
zonetype=2
;;
- transparent|typetransparent)
+ inform|transparent|typetransparent)
{
# transparent will permit forward-zone: or stub-zone: clauses
echo " private-domain: $UB_TXT_DOMAIN"
config_get UB_N_EDNS_SIZE "$cfg" edns_size 1280
config_get UB_N_RX_PORT "$cfg" listen_port 53
config_get UB_N_ROOT_AGE "$cfg" root_age 9
+ config_get UB_N_THREADS "$cfg" num_threads 1
config_get UB_D_CONTROL "$cfg" unbound_control 0
config_get UB_D_DOMAIN_TYPE "$cfg" domain_type static
option listen_port '53'
option localservice '1'
option manual_conf '0'
+ option num_threads '1'
option protocol 'default'
option query_minimize '0'
option query_min_strict '0'
+++ /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:=yaaw
-PKG_VERSION:=2017-04-12
-PKG_RELEASE:=1
-
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/binux/yaaw.git
-PKG_MIRROR_HASH:=02c79d4233384df7b82e18740f96803da03260785a710be587b4c1554e900326
-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
- SECTION:=net
- CATEGORY:=Network
- SUBMENU:=Download Manager
- DEPENDS:=
- TITLE:=Yet another aria2 web frontend
- URL:=https://github.com/binux/yaaw
- PKGARCH:=all
-endef
-
-define Package/yaaw/description
- Yet Another Aria2 Web Frontend in pure HTML/CSS/Javascirpt.
-endef
-
-define Build/Compile
-endef
-
-define Package/yaaw/install
- $(INSTALL_DIR) $(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.12
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_LICENSE:=GPL-3.0
index 0cd955d1..add1d3ae 100644
--- a/make-linux.mk
+++ b/make-linux.mk
-@@ -71,11 +71,11 @@ ifeq ($(ZT_DEBUG),1)
+@@ -63,11 +63,11 @@ ifeq ($(ZT_DEBUG),1)
# C25519 in particular is almost UNUSABLE in -O0 even on a 3ghz box!
node/Salsa20.o node/SHA512.o node/C25519.o node/Poly1305.o: CXXFLAGS=-Wall -O2 -g -pthread $(INCLUDES) $(DEFS)
else
--- /dev/null
+--- a/make-linux.mk
++++ b/make-linux.mk
+@@ -231,7 +231,7 @@ ifeq ($(ZT_OFFICIAL),1)
+ endif
+
+ # ARM32 hell -- use conservative CFLAGS
+-ifeq ($(ZT_ARCHITECTURE),3)
++ifeq (0,3)
+ ifeq ($(shell if [ -e /usr/bin/dpkg ]; then dpkg --print-architecture; fi),armel)
+ override CFLAGS+=-march=armv5 -mfloat-abi=soft -msoft-float -mno-unaligned-access -marm
+ override CXXFLAGS+=-march=armv5 -mfloat-abi=soft -msoft-float -mno-unaligned-access -marm
index 49e14f70..8e766bfb 100644
--- a/make-linux.mk
+++ b/make-linux.mk
-@@ -75,7 +75,7 @@ else
+@@ -67,7 +67,7 @@ else
override CFLAGS+=-Wall -Wno-deprecated -pthread $(INCLUDES) -DNDEBUG $(DEFS)
CXXFLAGS?=-O3 -fstack-protector
override CXXFLAGS+=-Wall -Wno-deprecated -std=c++11 -pthread $(INCLUDES) -DNDEBUG $(DEFS)
include $(TOPDIR)/rules.mk
PKG_NAME:=znc
-PKG_VERSION:=1.7.3
-PKG_RELEASE:=3
+PKG_VERSION:=1.7.4
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://znc.in/releases \
https://znc.in/releases/archive
-PKG_HASH:=1e4cc31837a1e8e6cc310873659a167cec16a3fd4281cbc3bf364e42352c113d
+PKG_HASH:=b1a32921a8e6d79ee6c5900c8d07293026966db7c05aaac48984231befc49b71
PKG_MAINTAINER:=Jonas Gorski <jonas.gorski@gmail.com>
PKG_LICENSE:=Apache-2.0
PKG_NAME:=moc
PKG_VERSION:=2.5.2
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://ftp.daper.net/pub/soft/moc/stable/
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/mocp $(1)/usr/bin/
$(INSTALL_DIR) $(1)/usr/lib/moc/decoder_plugins
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/moc/decoder_plugins/*.so $(1)/usr/lib/moc/decoder_plugins
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/moc/decoder_plugins/*.so $(1)/usr/lib/moc/decoder_plugins
endef
$(eval $(call BuildPackage,moc))
include $(TOPDIR)/rules.mk
PKG_NAME:=btrfs-progs
-PKG_VERSION:=4.20.2
-PKG_RELEASE:=3
+PKG_VERSION:=5.1.1
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-v$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/linux/kernel/people/kdave/btrfs-progs
-PKG_HASH:=890f8b7e162f2bbfaa5c7b23e8b6f791fd3f325239a0510871fa4b45e4a80e7c
+PKG_HASH:=9cb91b7de9e10aa6bbf2b003f60bb3f5e5b1984a8008fad7c4b2d3978f5ebe1b
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-v$(PKG_VERSION)
PKG_MAINTAINER:=Karel Kočí <karel.koci@nic.cz>
SECTION:=utils
CATEGORY:=Utilities
SUBMENU:=Filesystem
- DEPENDS:=+libattr +libuuid +zlib +libblkid +liblzo +libpthread +BTRFS_PROGS_ZSTD:libzstd
TITLE:=Btrfs filesystems utilities
URL:=https://btrfs.wiki.kernel.org/
+ DEPENDS:=+libattr +libuuid +zlib +libblkid +liblzo +libpthread +BTRFS_PROGS_ZSTD:libzstd
endef
define Package/btrfs-progs/description
include $(TOPDIR)/rules.mk
PKG_NAME:=byobu
-PKG_VERSION:=5.127
+PKG_VERSION:=5.129
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.gz
PKG_SOURCE_URL:=https://launchpad.net/byobu/trunk/$(PKG_VERSION)/+download
-PKG_HASH:=4bafc7cb69ff5b0ab6998816d58cd1ef7175e5de75abc1dd7ffd6d5288a4f63b
+PKG_HASH:=e5135f20750c359b6371ee87cf2729c6038fbf3a6e66680e67f6a2125b07c2b9
PKG_LICENSE:=GPL-3.0
PKG_LICENSE_FILES:=COPYING
+++ /dev/null
---- a/usr/bin/byobu.in
-+++ b/usr/bin/byobu.in
-@@ -62,7 +62,7 @@ esac
- export BYOBU_BACKEND
-
- # Store the parent tty
--export BYOBU_TTY=$(tty)
-+export BYOBU_TTY=$(readlink /proc/$$/fd/0)
-
- # Get the default window name
- [ -n "$BYOBU_WINDOW_NAME" ] || BYOBU_WINDOW_NAME=-
---- a/usr/bin/byobu-launch.in
-+++ b/usr/bin/byobu-launch.in
-@@ -30,8 +30,8 @@
- # or edit your sshd_config, ssh_config, and set:
- # $HOME/.bashrc: export BYOBU_DISABLE=1
-
--_tty=$(tty)
--if [ "${_tty#/dev/ttyS}" != "$_tty" ]; then
-+_tty=$(readlink /proc/$$/fd/0)
-+if [ "${_tty#/dev/ttyS}" != "$_tty" ] && [ "${_tty#/dev/ttyAMA}" != "$_tty" ]; then
- # Don't autolaunch byobu on serial consoles
- # You can certainly run 'byobu' manually, though
- echo
--- /dev/null
+--- a/usr/bin/byobu-launch.in
++++ b/usr/bin/byobu-launch.in
+@@ -30,7 +30,7 @@
+ # or edit your sshd_config, ssh_config, and set:
+ # $HOME/.bashrc: export BYOBU_DISABLE=1
+
+-_tty=$(tty)
++_tty=$(readlink /proc/$$/fd/0)
+ if [ "${_tty#/dev/ttyS}" != "$_tty" ] && [ "${_tty#/dev/ttyAMA}" != "$_tty" ]; then
+ # Don't autolaunch byobu on serial consoles
+ # You can certainly run 'byobu' manually, though
+++ /dev/null
---- a/usr/bin/byobu-janitor.in
-+++ b/usr/bin/byobu-janitor.in
-@@ -41,7 +41,7 @@ DEFAULT_PROFILE="light"
- PROFILE="$BYOBU_CONFIG_DIR/profile"
-
- # Create byobu-exchange buffer file, with secure permissions, if it doesn't exist
--[ -e "$BYOBU_RUN_DIR/printscreen" ] || install -m 600 /dev/null "$BYOBU_RUN_DIR/printscreen"
-+[ -e "$BYOBU_RUN_DIR/printscreen" ] || { cp /dev/null "$BYOBU_RUN_DIR/printscreen"; chmod 600 "$BYOBU_RUN_DIR/printscreen"; }
-
- # Affects: users who launched using sudo, such that their config dir
- # is not writable by them
# By default, we won't bug the user with the display of network traffic
# below DISK_IO_THRESHOLD in kB/s; override in $BYOBU_CONFIG_DIR/status
[ -n "$DISK_IO_THRESHOLD" ] || DISK_IO_THRESHOLD=50
+--- a/usr/share/byobu/status/statusrc
++++ b/usr/share/byobu/status/statusrc
+@@ -36,8 +36,8 @@
+ # and your lsb_release is "precise", only "p" will be displayed
+ #RELEASE_ABBREVIATED=1
+
+-# Default: /
+-#MONITORED_DISK=/
++# Default: /overlay
++#MONITORED_DISK=/overlay
+
+ # Minimum disk throughput that triggers the notification (in kB/s)
+ # Default: 50
--- /dev/null
+--- a/usr/lib/byobu/services
++++ b/usr/lib/byobu/services
+@@ -24,6 +24,8 @@ __services_detail() {
+ }
+
+ service_running() {
++ pgrep "$1" >/dev/null
++ return $?
+ if [ -f "/etc/init/$1.conf" ]; then
+ # Use upstart
+ case "$(status $1 2>/dev/null)" in
+++ /dev/null
---- a/usr/lib/byobu/services
-+++ b/usr/lib/byobu/services
-@@ -24,7 +24,9 @@ __services_detail() {
- }
-
- service_running() {
-- if [ -f "/etc/init/$1.conf" ]; then
-+ if pgrep "$1" >/dev/null; then
-+ true
-+ elif [ -f "/etc/init/$1.conf" ]; then
- # Use upstart
- case "$(status $1 2>/dev/null)" in
- *running*)
--- a/usr/lib/byobu/users
+++ b/usr/lib/byobu/users
-@@ -22,20 +22,26 @@
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
-
- __users_detail() {
-- ps -ef | grep "sshd:.*@" | grep -v grep
-+ ps -ef 2>/dev/null | grep "sshd:.*@" | grep -v grep
+@@ -26,7 +26,12 @@ __users_detail() {
}
__users() {
if [ "$USERS_DISTINCT" = "1" ]; then
count=$(pgrep -fl 'sshd:.*@' | cut -f3 -d\ | cut -f1 -d@ | sort -u | wc -l)
else
- # Note: we'd like to use pgrep -c, however, this isn't available in
+@@ -34,6 +39,7 @@ __users() {
# busybox and some distro's pgrep (and it doesn't exit non-zero).
-- count=$(pgrep -f "^sshd:.*@|^/usr/sbin/sshd -i" | wc -l) || return
-+ count=$(pgrep -f "^sshd:.*@|^/usr/sbin/sshd -i" | wc -l)
-+ fi
+ count=$(pgrep -f "^sshd:.*@|^/usr/sbin/sshd -i" | wc -l) || return
fi
++ fi
if [ $count -gt 0 ]; then
-- color b w r; printf "%d" "$count"; color -; color w r; printf "#"; color --
-+ color b w r; printf "%d" "$count"; color -; color w r; printf "##"; color --
+ color b w r; printf "%d" "$count"; color -; color w r; printf "##"; color --
else
- rm -f "$BYOBU_RUN_DIR/status.$BYOBU_BACKEND/users"*
- fi
+++ /dev/null
---- a/usr/bin/byobu-export.in
-+++ b/usr/bin/byobu-export.in
-@@ -22,7 +22,7 @@ PKG="byobu"
- [ -z "${BYOBU_PREFIX}" ] && export BYOBU_PREFIX="@prefix@" || export BYOBU_PREFIX
- . "${BYOBU_PREFIX}/lib/${PKG}/include/common"
-
--gettext "
-+echo "
- The byobu-export utility is now deprecated.
-
- To install byobu on a system for which byobu is not packaged, or
---- a/usr/lib/byobu/menu
-+++ b/usr/lib/byobu/menu
-@@ -35,7 +35,7 @@ __menu() {
- else
- key="F9"
- fi
-- text=$(gettext "Menu" 2>/dev/null) || text="Menu"
-+ text="Menu"
- color k w; printf "%s:<" "$text"; color -; color b k w; printf "%s" "$key"; color k w; printf ">"
- }
-
+++ /dev/null
---- a/usr/bin/byobu-disable-prompt.in
-+++ b/usr/bin/byobu-disable-prompt.in
-@@ -17,6 +17,8 @@
- # You should have received a copy of the GNU General Public License
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-+[ -w "$HOME/.bashrc" ] || exit 1
-+
- PKG="byobu"
- [ -r "$HOME/.byoburc" ] && . "$HOME/.byoburc"
- [ -z "${BYOBU_PREFIX}" ] && export BYOBU_PREFIX="@prefix@" || export BYOBU_PREFIX
---- a/usr/bin/byobu-janitor.in
-+++ b/usr/bin/byobu-janitor.in
-@@ -112,6 +112,7 @@ killall -u $USER byobu-statusd >/dev/nul
- rm -f "$FLAG" "/var/run/screen/S-$USER/$PKG.reload-required"
-
- # Affects: Upgrades from <= byobu 5.50, install byobu prompt if using stock bashrc
-+if [ -r /etc/skel/.bashrc ] && [ -r "$HOME/.bashrc" ] && [ -w "$HOME/.bashrc" ]; then
- if ! (grep -qs "#byobu-prompt#$" "$HOME/.bashrc") && ! [ -e "$BYOBU_CONFIG_DIR/prompt" ]; then
- if eval $BYOBU_TEST diff >/dev/null 2>&1; then
- if diff /etc/skel/.bashrc "$HOME/.bashrc" >/dev/null 2>&1; then
-@@ -123,6 +124,7 @@ if ! (grep -qs "#byobu-prompt#$" "$HOME/
- fi
- fi
- fi
-+fi
- [ -r "$BYOBU_CONFIG_DIR/prompt" ] || printf "[ -r ${BYOBU_PREFIX}/share/${PKG}/profiles/bashrc ] && . ${BYOBU_PREFIX}/share/${PKG}/profiles/bashrc #byobu-prompt#\n" > "$BYOBU_CONFIG_DIR/prompt"
-
- # Affects: Upgrades from <= byobu 5.126, clear out ec2/rcs cost statuses
+++ /dev/null
---- a/usr/share/byobu/keybindings/f-keys.tmux
-+++ b/usr/share/byobu/keybindings/f-keys.tmux
-@@ -26,8 +26,8 @@ source $BYOBU_PREFIX/share/byobu/keybind
-
- # Byobu's Keybindings
- # Documented in: $BYOBU_PREFIX/share/doc/byobu/help.tmux.txt
--bind-key -n F1 new-window -k -n config byobu-config
--bind-key -n S-F1 new-window -k -n help "sh -c '$BYOBU_PAGER $BYOBU_PREFIX/share/doc/byobu/help.tmux.txt'"
-+bind-key -n F1 new-window -n config byobu-config
-+bind-key -n S-F1 new-window -n help "sh -c '$BYOBU_PAGER $BYOBU_PREFIX/share/doc/byobu/help.tmux.txt'"
- bind-key -n F2 new-window -c "#{pane_current_path}" \; rename-window "-"
- bind-key -n C-F2 display-panes \; split-window -h -c "#{pane_current_path}"
- bind-key -n S-F2 display-panes \; split-window -v -c "#{pane_current_path}"
-@@ -54,7 +54,7 @@ bind-key -n M-S-Left resize-pane -L
- bind-key -n M-S-Right resize-pane -R
- bind-key -n F5 source $BYOBU_PREFIX/share/byobu/profiles/tmuxrc
- bind-key -n M-F5 run-shell '$BYOBU_PREFIX/lib/byobu/include/toggle-utf8' \; source $BYOBU_PREFIX/share/byobu/profiles/tmuxrc
--bind-key -n S-F5 new-window -k "$BYOBU_PREFIX/lib/byobu/include/cycle-status" \; source $BYOBU_PREFIX/share/byobu/profiles/tmuxrc
-+bind-key -n S-F5 new-window "$BYOBU_PREFIX/lib/byobu/include/cycle-status" \; source $BYOBU_PREFIX/share/byobu/profiles/tmuxrc
- bind-key -n C-F5 send-keys ". $BYOBU_PREFIX/bin/byobu-reconnect-sockets" \; send-keys Enter
- bind-key -n C-S-F5 new-window -d "byobu-select-profile -r"
- bind-key -n F6 detach
-@@ -68,9 +68,9 @@ bind-key -n M-PPage copy-mode \; send-ke
- bind-key -n F8 command-prompt -p "(rename-window) " "rename-window '%%'"
- bind-key -n C-F8 command-prompt -p "(rename-session) " "rename-session '%%'"
- bind-key -n S-F8 next-layout
--bind-key -n M-S-F8 new-window -k "byobu-layout restore; clear; $SHELL"
-+bind-key -n M-S-F8 new-window "byobu-layout restore; clear; $SHELL"
- bind-key -n C-S-F8 command-prompt -p "Save byobu layout as:" "run-shell \"byobu-layout save '%%'\""
--bind-key -n F9 new-window -k -n config byobu-config
-+bind-key -n F9 new-window -n config byobu-config
- bind-key -n S-F9 command-prompt -p "Send command to all panes:" "run-shell \"$BYOBU_PREFIX/lib/byobu/include/tmux-send-command-to-all-panes '%%'\""
- bind-key -n C-F9 command-prompt -p "Send command to all windows:" "run-shell \"$BYOBU_PREFIX/lib/byobu/include/tmux-send-command-to-all-windows '%%'\""
- bind-key -n M-F9 display-panes \; setw synchronize-panes
+++ /dev/null
---- a/usr/lib/byobu/disk_io
-+++ b/usr/lib/byobu/disk_io
-@@ -53,6 +53,7 @@ __disk_io() {
- /dev/*) part="${mount_point}";;
- *) part=$(awk '$2 == mp { print $1 ; exit(0); }' "mp=$mount_point" /etc/mtab);;
- esac
-+ [ -e "$part" ] || return
- getdisk "$part"
- local disk=${_RET}
- local t2=$(date +%s) t1=
+++ /dev/null
---- a/usr/lib/byobu/hostname
-+++ b/usr/lib/byobu/hostname
-@@ -20,12 +20,16 @@
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
-
- __hostname_detail() {
-- hostname -f
-+ hostname -f 2>/dev/null
- }
-
- __hostname() {
- local h=
-- h=$(hostname -s 2>/dev/null || hostname)
-+ if eval $BYOBU_TEST hostname >/dev/null 2>&1; then
-+ h=$(hostname -s 2>/dev/null || hostname)
-+ elif [ -r /proc/sys/kernel/hostname ]; then
-+ read h < /proc/sys/kernel/hostname
-+ fi
- if metadata_available; then
- local cache="$BYOBU_RUN_DIR/cache.$BYOBU_BACKEND/hostname"
- # Background a retrieval of our public hostname
+++ /dev/null
---- a/usr/lib/byobu/logo
-+++ b/usr/lib/byobu/logo
-@@ -111,6 +111,10 @@ __logo() {
- logo=" lm "
- $MARKUP && printf "$(color g w)$logo$(color -)$(color g w)$(color -) " || printf "$logo"
- ;;
-+ *openwrt*)
-+ logo="OWrt"
-+ $MARKUP && printf "$(color b colour66 W)%s$(color -)" "$logo" || printf "$logo"
-+ ;;
- *red*hat*|*rhel*)
- logo=" RH "
- $MARKUP && printf "$(color R k)%s$(color -)" "$logo" || printf "$logo"
+++ /dev/null
---- a/usr/lib/byobu/processes
-+++ b/usr/lib/byobu/processes
-@@ -20,15 +20,15 @@
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
-
- __processes_detail() {
-- ps -ej
-+ ps -ej 2>/dev/null
- }
-
- __processes() {
- local count=
- if [ -r /proc ]; then
-- count=$(ls -d /proc/[0-9]* 2>/dev/null| wc -l)
-+ count=$(ls -d /proc/[0-9]* 2>/dev/null | wc -l)
- else
-- count=$(ps -ef | wc -l | awk '{print $1}')
-+ count=$(ps -ef | wc -l)
- fi
- [ -n "$count" ] || return
- color b y w; printf "%s" "$count"; color -; color y w; printf "&"; color --
+++ /dev/null
---- a/usr/lib/byobu/release
-+++ b/usr/lib/byobu/release
-@@ -30,7 +30,7 @@ __release() {
- true
- elif [ -r "/etc/os-release" ]; then
- # lsb_release is *really* slow; try to use /etc/os-release
-- release=$(. /etc/os-release && echo "$VERSION_ID")
-+ RELEASE=$(. /etc/os-release && echo "$VERSION_ID")
- elif [ -r "/etc/issue" ]; then
- # next try /etc/issue first
- local issue
+++ /dev/null
---- a/usr/lib/byobu/services
-+++ b/usr/lib/byobu/services
-@@ -45,7 +45,7 @@ service_running() {
- }
-
- __services() {
-- local services=
-+ local services="$SERVICES"
- # Users can define a list of services to monitor in $BYOBU_CONFIG_DIR/status
- if [ -z "$services" ]; then
- if [ -f "/etc/eucalyptus/eucalyptus.conf" ]; then
+++ /dev/null
---- a/usr/lib/byobu/updates_available
-+++ b/usr/lib/byobu/updates_available
-@@ -67,9 +67,16 @@ ___update_cache() {
- elif eval $BYOBU_TEST pacman >/dev/null; then
- # If pacman (Archlinux) exists, use it
- LC_ALL=C flock -xn "$flock" pacman -Sup | grep -vc "^\(::\| \)" >$mycache 2>/dev/null &
-+ elif eval $BYOBU_TEST opkg >/dev/null; then
-+ # If opkg (OpenWrt) exists, use it, also background if flock exists
-+ if eval $BYOBU_TEST flock >/dev/null; then
-+ flock -xn "$flock" opkg list-upgradable | wc -l >$mycache 2>/dev/null &
-+ else
-+ opkg list-upgradable | wc -l >$mycache &
-+ fi
- elif eval $BYOBU_TEST brew >/dev/null; then
- # If homebrew (Mac OSX) exists, use it, also background if flock exists
-- if eval $BYOBU_TEST flock; then
-+ if eval $BYOBU_TEST flock >/dev/null; then
- flock -xn "$flock" brew outdated | wc -l >$mycache 2>/dev/null &
- else
- brew outdated | wc -l >$mycache &
-@@ -106,6 +113,18 @@ ___update_needed() {
- [ "$db" -nt "$mycache" ] && return 0
- done
- return 1
-+ elif eval $BYOBU_TEST opkg >/dev/null; then
-+ # OpenWrt
-+ [ ! -e /var/lock/opkg.lock ] || return 1
-+ if [ -d /var/opkg-lists ]; then
-+ [ /var/opkg-lists -nt "$mycache" ]
-+ return $?
-+ else
-+ local u s
-+ read u s < "$mycache"
-+ [ "$u" -gt 0 ]
-+ return $?
-+ fi
- elif eval $BYOBU_TEST brew >/dev/null; then
- # Mac OSX
- # check if any new versions have been installed since
+++ /dev/null
---- a/usr/lib/byobu/whoami
-+++ b/usr/lib/byobu/whoami
-@@ -19,12 +19,28 @@
- # You should have received a copy of the GNU General Public License
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-+___get_user() {
-+ if eval $BYOBU_TEST whoami >/dev/null 2>&1; then
-+ whoami
-+ elif eval $BYOBU_TEST id >/dev/null 2>&1; then
-+ id -un
-+ fi
-+}
-+
- __whoami_detail() {
-- getent -- passwd "$USER"
-+ local user=$(___get_user)
-+ [ -n "$user" ] || return
-+ if eval $BYOBU_TEST getent >/dev/null 2>&1; then
-+ getent -- passwd "$user"
-+ else
-+ grep "^$user:" /etc/passwd
-+ fi
- }
-
- __whoami() {
-- color bold2; printf "%s@" "$(whoami)"; color -
-+ local user=$(___get_user)
-+ [ -n "$user" ] || return
-+ color bold2; printf "%s@" "$user"; color -
- }
-
- # vi: syntax=sh ts=4 noexpandtab
+++ /dev/null
---- a/usr/lib/byobu/wifi_quality
-+++ b/usr/lib/byobu/wifi_quality
-@@ -19,32 +19,61 @@
- # You should have received a copy of the GNU General Public License
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-+___get_dev_list() {
-+ if [ -n "$MONITORED_NETWORK" ]; then
-+ echo "$MONITORED_NETWORK"
-+ else
-+ iw dev | grep Interface | cut -f2 -d\
-+ fi
-+}
-+
- __wifi_quality_detail() {
-- /sbin/iwconfig 2>/dev/null
-+ if eval $BYOBU_TEST iw >/dev/null 2>&1; then
-+ local dev
-+ for dev in $(___get_dev_list); do
-+ iw dev "$dev" info
-+ iw dev "$dev" link
-+ echo
-+ done
-+ elif eval $BYOBU_TEST iwconfig >/dev/null 2>&1; then
-+ iwconfig 2>/dev/null
-+ fi
- }
-
- __wifi_quality() {
- local out bitrate quality
-- # iwconfig is expected to output lines like:
-- # Bit Rate=54 Mb/s Tx-Power=15 dBm
-- # Link Quality=60/70 Signal level=-50 dBm
-- # the awk below tokenizes the output and prints shell evalable results
-- out=`iwconfig $MONITORED_NETWORK 2>/dev/null |
-- awk '$0 ~ /[ ]*Link Quality./ {
-- sub(/.*=/,"",$2); split($2,a,"/");
-- printf "quality=%.0f\n", 100*a[1]/a[2] };
-- $0 ~ /[ ]*Bit Rate/ { sub(/.*[:=]/,"",$2); printf("bitrate=%s\n", $2); }
-- '`
-- eval "$out"
-- [ -z "$bitrate" ] && bitrate="0"
-- if [ -z "$quality" ] || [ "$quality" = "0" ]; then
-- quality="0"
-+ if eval $BYOBU_TEST iw >/dev/null 2>&1; then
-+ local dev
-+ for dev in $(___get_dev_list); do
-+ # signal to quality: https://superuser.com/a/1360447
-+ out=`iw dev "$dev" link 2>/dev/null |
-+ awk '$0 ~ /^\s*signal:/ { a = 100 * ($2 + 110) / 70;
-+ printf "quality=%.0f\n", (a > 100) ? 100 : ((a < 0) ? 0 : a); }
-+ $0 ~ /^\s*tx bitrate:/ { printf "bitrate=%s\n", $3; }
-+ '`
-+ eval "$out"
-+ [ -z "$bitrate" ] || [ -z "$quality" ] || break
-+ done
-+ elif eval $BYOBU_TEST iwconfig >/dev/null 2>&1; then
-+ # iwconfig is expected to output lines like:
-+ # Bit Rate=54 Mb/s Tx-Power=15 dBm
-+ # Link Quality=60/70 Signal level=-50 dBm
-+ # the awk below tokenizes the output and prints shell evalable results
-+ out=`iwconfig $MONITORED_NETWORK 2>/dev/null |
-+ awk '$0 ~ /[ ]*Link Quality./ {
-+ sub(/.*=/,"",$2); split($2,a,"/");
-+ printf "quality=%.0f\n", 100*a[1]/a[2] };
-+ $0 ~ /[ ]*Bit Rate/ { sub(/.*[:=]/,"",$2); printf("bitrate=%s\n", $2); }
-+ '`
-+ eval "$out"
- fi
-- if [ "$bitrate" = "0" ] || [ "$quality" = "0" ] || [ -z "$bitrate" ] || [ -z "$quality"]; then
-+ [ -n "$bitrate" ] || bitrate=0
-+ [ -n "$quality" ] || quality=0
-+ if [ "$bitrate" -gt 0 ] && [ "$quality" -gt 0 ]; then
-+ printf "${ICON_WIFI}"; color b C k; printf "%s" "$bitrate"; color -; color C k; printf "%s" "$ICON_MBPS"; color -; color b C k; printf "%s" "$quality"; color -; color C k; printf "%s" "$PCT"; color --
-+ else
- rm -f "$BYOBU_RUN_DIR/status.$BYOBU_BACKEND/wifi_quality"*
-- return
- fi
-- printf "${ICON_WIFI}"; color b C k; printf "%s" "$bitrate"; color -; color C k; printf "%s" "$ICON_MBPS"; color -; color b C k; printf "%s" "$quality"; color -; color C k; printf "%s" "$PCT"; color --
- }
-
- # vi: syntax=sh ts=4 noexpandtab
+++ /dev/null
---- a/usr/lib/byobu/raid
-+++ b/usr/lib/byobu/raid
-@@ -24,6 +24,7 @@ __raid_detail() {
- }
-
- __raid() {
-+ [ -r /proc/mdstat ] || return
- while read line; do
- local p msg
- # Errors in your raid
+++ /dev/null
---- a/usr/lib/byobu/session
-+++ b/usr/lib/byobu/session
-@@ -34,7 +34,7 @@ __session() {
- fi
- ;;
- screen)
-- local count=$(screen -ls | grep "^ .*\)$" | wc -l)
-+ local count=$(screen -ls | grep "^\s\+.*)$" | wc -l)
- if [ $count -gt 1 ]; then
- color u W k; printf "${ICON_SESSION}%S"; color --
- else
include $(TOPDIR)/rules.mk
PKG_NAME:=collectd
-PKG_VERSION:=5.8.1
-PKG_RELEASE:=6
+PKG_VERSION:=5.9.0
+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:=e796fda27ce06377f491ad91aa286962a68c2b54076aa77a29673d53204453da
+PKG_HASH:=7b220f8898a061f6e7f29a8c16697d1a198277f813da69474a67911097c0626b
PKG_FIXUP:=autoreconf
PKG_REMOVE_FILES:=aclocal.m4 libltdl/aclocal.m4
COLLECTD_PLUGINS_DISABLED:= \
amqp \
+ ampq1 \
apple_sensors \
aquaero \
barometer \
genericjmx \
gmond \
gps \
+ gpu_nvidia \
grpc \
hddtemp \
hugepages \
oracle \
ovs_events \
ovs_stats \
+ pcie_errors \
perl \
pf \
pinba \
write_redis \
write_riemann \
write_sensu \
+ write_stackdriver \
+ write_syslog \
write_tsdb \
xencpu \
xmms \
$(eval $(call BuildPlugin,ping,ping status input,ping,+PACKAGE_collectd-mod-ping:liboping))
$(eval $(call BuildPlugin,postgresql,PostgreSQL status input,postgresql,+PACKAGE_collectd-mod-postgresql:libpq))
$(eval $(call BuildPlugin,powerdns,PowerDNS server status input,powerdns,))
-$(eval $(call BuildPlugin,processes,process status input,processes,))
+$(eval $(call BuildPlugin,processes,process status input,processes,+PACKAGE_collectd-mod-processes:libmnl))
$(eval $(call BuildPlugin,protocols,network protocols input,protocols,))
$(eval $(call BuildPlugin,rrdtool,RRDtool output,rrdtool,+PACKAGE_collectd-mod-rrdtool:librrd1))
$(eval $(call BuildPlugin,sensors,lm_sensors input,sensors,+PACKAGE_collectd-mod-sensors:libsensors))
+++ /dev/null
-From d5a3c020d33cc33ee8049f54c7b4dffcd123bf83 Mon Sep 17 00:00:00 2001
-From: Pavel Rochnyack <pavel2000@ngs.ru>
-Date: Mon, 3 Dec 2018 18:34:14 +0700
-Subject: [PATCH] sensors: Removed checks for upper limit of
- SENSORS_API_VERSION
-
-That makes no more sense after lm-sensors got new maintainers.
-
-Closes: #3006
----
- src/sensors.c | 17 ++++++-----------
- 1 file changed, 6 insertions(+), 11 deletions(-)
-
-diff --git a/src/sensors.c b/src/sensors.c
-index f4ecda5e49..33982e061a 100644
---- a/src/sensors.c
-+++ b/src/sensors.c
-@@ -149,7 +149,7 @@ typedef struct featurelist {
- static char *conffile = SENSORS_CONF_PATH;
- /* #endif SENSORS_API_VERSION < 0x400 */
-
--#elif (SENSORS_API_VERSION >= 0x400) && (SENSORS_API_VERSION < 0x500)
-+#elif (SENSORS_API_VERSION >= 0x400)
- typedef struct featurelist {
- const sensors_chip_name *chip;
- const sensors_feature *feature;
-@@ -159,11 +159,6 @@ typedef struct featurelist {
-
- static char *conffile = NULL;
- static _Bool use_labels = 0;
--/* #endif (SENSORS_API_VERSION >= 0x400) && (SENSORS_API_VERSION < 0x500) */
--
--#else /* if SENSORS_API_VERSION >= 0x500 */
--#error "This version of libsensors is not supported yet. Please report this " \
-- "as bug."
- #endif
-
- static featurelist_t *first_feature = NULL;
-@@ -223,7 +218,7 @@ static int sensors_config(const char *key, const char *value) {
- if (IS_TRUE(value))
- ignorelist_set_invert(sensor_list, 0);
- }
--#if (SENSORS_API_VERSION >= 0x400) && (SENSORS_API_VERSION < 0x500)
-+#if (SENSORS_API_VERSION >= 0x400)
- else if (strcasecmp(key, "UseLabels") == 0) {
- use_labels = IS_TRUE(value) ? 1 : 0;
- }
-@@ -353,7 +348,7 @@ static int sensors_load_conf(void) {
- } /* while sensors_get_detected_chips */
- /* #endif SENSORS_API_VERSION < 0x400 */
-
--#elif (SENSORS_API_VERSION >= 0x400) && (SENSORS_API_VERSION < 0x500)
-+#elif (SENSORS_API_VERSION >= 0x400)
- chip_num = 0;
- while ((chip = sensors_get_detected_chips(NULL, &chip_num)) != NULL) {
- const sensors_feature *feature;
-@@ -410,7 +405,7 @@ static int sensors_load_conf(void) {
- } /* while (subfeature) */
- } /* while (feature) */
- } /* while (chip) */
--#endif /* (SENSORS_API_VERSION >= 0x400) && (SENSORS_API_VERSION < 0x500) */
-+#endif /* (SENSORS_API_VERSION >= 0x400) */
-
- if (first_feature == NULL) {
- sensors_cleanup();
-@@ -485,7 +480,7 @@ static int sensors_read(void) {
- } /* for fl = first_feature .. NULL */
- /* #endif SENSORS_API_VERSION < 0x400 */
-
--#elif (SENSORS_API_VERSION >= 0x400) && (SENSORS_API_VERSION < 0x500)
-+#elif (SENSORS_API_VERSION >= 0x400)
- for (featurelist_t *fl = first_feature; fl != NULL; fl = fl->next) {
- double value;
- int status;
-@@ -528,7 +523,7 @@ static int sensors_read(void) {
-
- sensors_submit(plugin_instance, type, type_instance, value);
- } /* for fl = first_feature .. NULL */
--#endif /* (SENSORS_API_VERSION >= 0x400) && (SENSORS_API_VERSION < 0x500) */
-+#endif /* (SENSORS_API_VERSION >= 0x400) */
-
- return 0;
- } /* int sensors_read */
-
+++ /dev/null
-From 6028f89df95b12219d735b277863f83e9f5ee9e9 Mon Sep 17 00:00:00 2001
-From: PJ Bostley <pbostley@gmail.com>
-Date: Sat, 20 Jan 2018 16:39:36 -0700
-Subject: [PATCH 1/2] Adding support for CDAB endian 32-bit modbus polls
-
----
- src/modbus.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
- 1 file changed, 56 insertions(+), 5 deletions(-)
-
-diff --git a/src/modbus.c b/src/modbus.c
-index 31f0c2da81..daa3c028f5 100644
---- a/src/modbus.c
-+++ b/src/modbus.c
-@@ -76,9 +76,13 @@
- enum mb_register_type_e /* {{{ */
- { REG_TYPE_INT16,
- REG_TYPE_INT32,
-+ REG_TYPE_INT32_CDAB,
- REG_TYPE_UINT16,
- REG_TYPE_UINT32,
-- REG_TYPE_FLOAT }; /* }}} */
-+ REG_TYPE_UINT32_CDAB,
-+ REG_TYPE_FLOAT,
-+ REG_TYPE_FLOAT_CDAB }; /* }}} */
-+
- enum mb_mreg_type_e /* {{{ */
- { MREG_HOLDING,
- MREG_INPUT }; /* }}} */
-@@ -425,7 +429,9 @@ static int mb_read_data(mb_host_t *host, mb_slave_t *slave, /* {{{ */
-
- if ((ds->ds[0].type != DS_TYPE_GAUGE) &&
- (data->register_type != REG_TYPE_INT32) &&
-- (data->register_type != REG_TYPE_UINT32)) {
-+ (data->register_type != REG_TYPE_INT32_CDAB) &&
-+ (data->register_type != REG_TYPE_UINT32) &&
-+ (data->register_type != REG_TYPE_UINT32_CDAB)) {
- NOTICE(
- "Modbus plugin: The data source of type \"%s\" is %s, not gauge. "
- "This will most likely result in problems, because the register type "
-@@ -434,8 +440,11 @@ static int mb_read_data(mb_host_t *host, mb_slave_t *slave, /* {{{ */
- }
-
- if ((data->register_type == REG_TYPE_INT32) ||
-+ (data->register_type == REG_TYPE_INT32_CDAB) ||
- (data->register_type == REG_TYPE_UINT32) ||
-- (data->register_type == REG_TYPE_FLOAT))
-+ (data->register_type == REG_TYPE_UINT32_CDAB) ||
-+ (data->register_type == REG_TYPE_FLOAT) ||
-+ (data->register_type == REG_TYPE_FLOAT_CDAB))
- values_num = 2;
- else
- values_num = 1;
-@@ -496,8 +505,8 @@ static int mb_read_data(mb_host_t *host, mb_slave_t *slave, /* {{{ */
- }
- if (status != values_num) {
- ERROR("Modbus plugin: modbus read function (%s/%s) failed. "
-- " status = %i, values_num = %i. Giving up.",
-- host->host, host->node, status, values_num);
-+ " status = %i, start_addr = %i, values_num = %i. Giving up.",
-+ host->host, host->node, status, data->register_base, values_num);
- #if LEGACY_LIBMODBUS
- modbus_close(&host->connection);
- #else
-@@ -521,6 +530,17 @@ static int mb_read_data(mb_host_t *host, mb_slave_t *slave, /* {{{ */
- "Returned float value is %g",
- (double)float_value);
-
-+ CAST_TO_VALUE_T(ds, vt, float_value);
-+ mb_submit(host, slave, data, vt);
-+ } else if (data->register_type == REG_TYPE_FLOAT_CDAB) {
-+ float float_value;
-+ value_t vt;
-+
-+ float_value = mb_register_to_float(values[1], values[0]);
-+ DEBUG("Modbus plugin: mb_read_data: "
-+ "Returned float value is %g",
-+ (double)float_value);
-+
- CAST_TO_VALUE_T(ds, vt, float_value);
- mb_submit(host, slave, data, vt);
- } else if (data->register_type == REG_TYPE_INT32) {
-@@ -535,6 +555,20 @@ static int mb_read_data(mb_host_t *host, mb_slave_t *slave, /* {{{ */
- "Returned int32 value is %" PRIi32,
- v.i32);
-
-+ CAST_TO_VALUE_T(ds, vt, v.i32);
-+ mb_submit(host, slave, data, vt);
-+ } else if (data->register_type == REG_TYPE_INT32_CDAB) {
-+ union {
-+ uint32_t u32;
-+ int32_t i32;
-+ } v;
-+ value_t vt;
-+
-+ v.u32 = (((uint32_t)values[1]) << 16) | ((uint32_t)values[0]);
-+ DEBUG("Modbus plugin: mb_read_data: "
-+ "Returned int32 value is %" PRIi32,
-+ v.i32);
-+
- CAST_TO_VALUE_T(ds, vt, v.i32);
- mb_submit(host, slave, data, vt);
- } else if (data->register_type == REG_TYPE_INT16) {
-@@ -561,6 +595,17 @@ static int mb_read_data(mb_host_t *host, mb_slave_t *slave, /* {{{ */
- "Returned uint32 value is %" PRIu32,
- v32);
-
-+ CAST_TO_VALUE_T(ds, vt, v32);
-+ mb_submit(host, slave, data, vt);
-+ } else if (data->register_type == REG_TYPE_UINT32_CDAB) {
-+ uint32_t v32;
-+ value_t vt;
-+
-+ v32 = (((uint32_t)values[1]) << 16) | ((uint32_t)values[0]);
-+ DEBUG("Modbus plugin: mb_read_data: "
-+ "Returned uint32 value is %" PRIu32,
-+ v32);
-+
- CAST_TO_VALUE_T(ds, vt, v32);
- mb_submit(host, slave, data, vt);
- } else /* if (data->register_type == REG_TYPE_UINT16) */
-@@ -702,12 +747,18 @@ static int mb_config_add_data(oconfig_item_t *ci) /* {{{ */
- data.register_type = REG_TYPE_INT16;
- else if (strcasecmp("Int32", tmp) == 0)
- data.register_type = REG_TYPE_INT32;
-+ else if (strcasecmp("Int32LE", tmp) == 0)
-+ data.register_type = REG_TYPE_INT32_CDAB;
- else if (strcasecmp("Uint16", tmp) == 0)
- data.register_type = REG_TYPE_UINT16;
- else if (strcasecmp("Uint32", tmp) == 0)
- data.register_type = REG_TYPE_UINT32;
-+ else if (strcasecmp("Uint32LE", tmp) == 0)
-+ data.register_type = REG_TYPE_UINT32_CDAB;
- else if (strcasecmp("Float", tmp) == 0)
- data.register_type = REG_TYPE_FLOAT;
-+ else if (strcasecmp("FloatLE", tmp) == 0)
-+ data.register_type = REG_TYPE_FLOAT_CDAB;
- else {
- ERROR("Modbus plugin: The register type \"%s\" is unknown.", tmp);
- status = -1;
-
-From 67afd2685892e69ababb489f48b9033ab5908f4d Mon Sep 17 00:00:00 2001
-From: PJ Bostley <pbostley@gmail.com>
-Date: Tue, 23 Jan 2018 15:33:23 -0700
-Subject: [PATCH 2/2] Adding documentation for the Modbus little endian modes
- where 32 bit values have thier registers swapped
-
----
- src/collectd.conf.pod | 18 +++++++++++++-----
- 1 file changed, 13 insertions(+), 5 deletions(-)
-
-diff --git a/src/collectd.conf.pod b/src/collectd.conf.pod
-index dfd785a2c8..e9715126e6 100644
---- a/src/collectd.conf.pod
-+++ b/src/collectd.conf.pod
-@@ -4139,11 +4139,19 @@ Configures the base register to read from the device. If the option
- B<RegisterType> has been set to B<Uint32> or B<Float>, this and the next
- register will be read (the register number is increased by one).
-
--=item B<RegisterType> B<Int16>|B<Int32>|B<Uint16>|B<Uint32>|B<Float>
--
--Specifies what kind of data is returned by the device. If the type is B<Int32>,
--B<Uint32> or B<Float>, two 16E<nbsp>bit registers will be read and the data is
--combined into one value. Defaults to B<Uint16>.
-+=item B<RegisterType> B<Int16>|B<Int32>|B<Uint16>|B<Uint32>|B<Float>|B<Int32LE>|B<Uint32LE>|B<FloatLE>
-+
-+Specifies what kind of data is returned by the device. This defaults to
-+B<Uint16>. If the type is B<Int32>, B<Int32LE>, B<Uint32>, B<Uint32LE>,
-+B<Float> or B<FloatLE>, two 16E<nbsp>bit registers at B<RegisterBase>
-+and B<RegisterBase+1> will be read and the data is combined into one
-+32E<nbsp>value. For B<Int32>, B<Uint32> and B<Float> the most significant
-+16E<nbsp>bits are in the register at B<RegisterBase> and the least
-+significant 16E<nbsp>bits are in the register at B<RegisterBase+1>.
-+For B<Int32LE>, B<Uint32LE>, or B<Float32LE>, the high and low order
-+registers are swapped with the most significant 16E<nbsp>bits in
-+the B<RegisterBase+1> and the least significant 16E<nbsp>bits in
-+B<RegisterBase>.
-
- =item B<RegisterCmd> B<ReadHolding>|B<ReadInput>
-
+++ /dev/null
-From eeabc41e703f39cae0ad7eb8a596045a5a2f25b4 Mon Sep 17 00:00:00 2001
-From: cekstam <christian.ekstam@gmail.com>
-Date: Tue, 27 Mar 2018 13:15:28 +0200
-Subject: [PATCH 1/3] Add scale and shift to modbus plugin
-
-Adding a Scale and Shift parameter to the modbus plugin in order to correct amplifed data
----
- src/collectd.conf.pod | 10 ++++++++++
- src/modbus.c | 18 ++++++++++++++----
- 2 files changed, 24 insertions(+), 4 deletions(-)
-
---- a/src/collectd.conf.pod
-+++ b/src/collectd.conf.pod
-@@ -4169,6 +4169,16 @@ supported.
- Sets the type instance to use when dispatching the value to I<collectd>. If
- unset, an empty string (no type instance) is used.
-
-+=item B<Scale> I<Value>
-+
-+The values taken from collectd are multiplied by I<Value>. The field is optional
-+and the default is B<1.0>.
-+
-+=item B<Shift> I<Value>
-+
-+I<Value> is added to values from collectd after they have been multiplied by
-+B<Scale> value. The field is optional and the default value is B<0.0>.
-+
- =back
-
- =item E<lt>B<Host> I<Name>E<gt> blocks
---- a/src/modbus.c
-+++ b/src/modbus.c
-@@ -105,6 +105,8 @@ struct mb_data_s /* {{{ */
- mb_mreg_type_t modbus_register_type;
- char type[DATA_MAX_NAME_LEN];
- char instance[DATA_MAX_NAME_LEN];
-+ double scale;
-+ double shift;
-
- mb_data_t *next;
- }; /* }}} */
-@@ -395,13 +397,13 @@ static int mb_init_connection(mb_host_t
- #define CAST_TO_VALUE_T(ds, vt, raw) \
- do { \
- if ((ds)->ds[0].type == DS_TYPE_COUNTER) \
-- (vt).counter = (counter_t)(raw); \
-+ (vt).counter = (((counter_t)(raw) * ds[0].scale) + ds[0].shift); \
- else if ((ds)->ds[0].type == DS_TYPE_GAUGE) \
-- (vt).gauge = (gauge_t)(raw); \
-+ (vt).gauge = (((gauge_t)(raw) * ds[0].scale) + ds[0].shift); \
- else if ((ds)->ds[0].type == DS_TYPE_DERIVE) \
-- (vt).derive = (derive_t)(raw); \
-+ (vt).derive = (((derive_t)(raw) * ds[0].scale) + ds[0].shift); \
- else /* if (ds->ds[0].type == DS_TYPE_ABSOLUTE) */ \
-- (vt).absolute = (absolute_t)(raw); \
-+ (vt).absolute = (((absolute_t)(raw) * ds[0].scale) + ds[0].shift); \
- } while (0)
-
- static int mb_read_data(mb_host_t *host, mb_slave_t *slave, /* {{{ */
-@@ -723,6 +725,8 @@ static int mb_config_add_data(oconfig_it
- data.name = NULL;
- data.register_type = REG_TYPE_UINT16;
- data.next = NULL;
-+ data.scale = 1;
-+ data.shift = 0;
-
- status = cf_util_get_string(ci, &data.name);
- if (status != 0)
-@@ -736,6 +740,12 @@ static int mb_config_add_data(oconfig_it
- else if (strcasecmp("Instance", child->key) == 0)
- status = cf_util_get_string_buffer(child, data.instance,
- sizeof(data.instance));
-+ else if (strcasecmp("Scale", child->key) == 0)
-+ status = cf_util_get_string_buffer(child, data.scale,
-+ sizeof(data.scale));
-+ else if (strcasecmp("Shift", child->key) == 0)
-+ status = cf_util_get_string_buffer(child, data.shift,
-+ sizeof(data.shift));
- else if (strcasecmp("RegisterBase", child->key) == 0)
- status = cf_util_get_int(child, &data.register_base);
- else if (strcasecmp("RegisterType", child->key) == 0) {
+++ /dev/null
-From e596496f5c783f4bba85c4d559502c98e4050465 Mon Sep 17 00:00:00 2001
-From: cekstam <christian.ekstam@gmail.com>
-Date: Tue, 27 Mar 2018 14:11:52 +0200
-Subject: [PATCH 2/3] correcting all the wrongs
-
-, data->scale, data->shift
----
- src/modbus.c | 32 +++++++++++++++-----------------
- 1 file changed, 15 insertions(+), 17 deletions(-)
-
---- a/src/modbus.c
-+++ b/src/modbus.c
-@@ -394,16 +394,16 @@ static int mb_init_connection(mb_host_t
- } /* }}} int mb_init_connection */
- #endif /* !LEGACY_LIBMODBUS */
-
--#define CAST_TO_VALUE_T(ds, vt, raw) \
-+#define CAST_TO_VALUE_T(ds, vt, raw, scale, shift) \
- do { \
- if ((ds)->ds[0].type == DS_TYPE_COUNTER) \
-- (vt).counter = (((counter_t)(raw) * ds[0].scale) + ds[0].shift); \
-+ (vt).counter = (((counter_t)(raw) * scale) + shift); \
- else if ((ds)->ds[0].type == DS_TYPE_GAUGE) \
-- (vt).gauge = (((gauge_t)(raw) * ds[0].scale) + ds[0].shift); \
-+ (vt).gauge = (((gauge_t)(raw) * scale) + shift); \
- else if ((ds)->ds[0].type == DS_TYPE_DERIVE) \
-- (vt).derive = (((derive_t)(raw) * ds[0].scale) + ds[0].shift); \
-+ (vt).derive = (((derive_t)(raw) * scale) + shift); \
- else /* if (ds->ds[0].type == DS_TYPE_ABSOLUTE) */ \
-- (vt).absolute = (((absolute_t)(raw) * ds[0].scale) + ds[0].shift); \
-+ (vt).absolute = (((absolute_t)(raw) * scale) + shift); \
- } while (0)
-
- static int mb_read_data(mb_host_t *host, mb_slave_t *slave, /* {{{ */
-@@ -532,7 +532,7 @@ static int mb_read_data(mb_host_t *host,
- "Returned float value is %g",
- (double)float_value);
-
-- CAST_TO_VALUE_T(ds, vt, float_value);
-+ CAST_TO_VALUE_T(ds, vt, float_value, data->scale, data->shift);
- mb_submit(host, slave, data, vt);
- } else if (data->register_type == REG_TYPE_FLOAT_CDAB) {
- float float_value;
-@@ -543,7 +543,7 @@ static int mb_read_data(mb_host_t *host,
- "Returned float value is %g",
- (double)float_value);
-
-- CAST_TO_VALUE_T(ds, vt, float_value);
-+ CAST_TO_VALUE_T(ds, vt, float_value, data->scale, data->shift);
- mb_submit(host, slave, data, vt);
- } else if (data->register_type == REG_TYPE_INT32) {
- union {
-@@ -557,7 +557,7 @@ static int mb_read_data(mb_host_t *host,
- "Returned int32 value is %" PRIi32,
- v.i32);
-
-- CAST_TO_VALUE_T(ds, vt, v.i32);
-+ CAST_TO_VALUE_T(ds, vt, v.i32, data->scale, data->shift);
- mb_submit(host, slave, data, vt);
- } else if (data->register_type == REG_TYPE_INT32_CDAB) {
- union {
-@@ -571,7 +571,7 @@ static int mb_read_data(mb_host_t *host,
- "Returned int32 value is %" PRIi32,
- v.i32);
-
-- CAST_TO_VALUE_T(ds, vt, v.i32);
-+ CAST_TO_VALUE_T(ds, vt, v.i32, data->scale, data->shift);
- mb_submit(host, slave, data, vt);
- } else if (data->register_type == REG_TYPE_INT16) {
- union {
-@@ -586,7 +586,7 @@ static int mb_read_data(mb_host_t *host,
- "Returned int16 value is %" PRIi16,
- v.i16);
-
-- CAST_TO_VALUE_T(ds, vt, v.i16);
-+ CAST_TO_VALUE_T(ds, vt, v.i16, data->scale, data->shift);
- mb_submit(host, slave, data, vt);
- } else if (data->register_type == REG_TYPE_UINT32) {
- uint32_t v32;
-@@ -597,7 +597,7 @@ static int mb_read_data(mb_host_t *host,
- "Returned uint32 value is %" PRIu32,
- v32);
-
-- CAST_TO_VALUE_T(ds, vt, v32);
-+ CAST_TO_VALUE_T(ds, vt, v32, data->scale, data->shift);
- mb_submit(host, slave, data, vt);
- } else if (data->register_type == REG_TYPE_UINT32_CDAB) {
- uint32_t v32;
-@@ -608,7 +608,7 @@ static int mb_read_data(mb_host_t *host,
- "Returned uint32 value is %" PRIu32,
- v32);
-
-- CAST_TO_VALUE_T(ds, vt, v32);
-+ CAST_TO_VALUE_T(ds, vt, v32, data->scale, data->shift);
- mb_submit(host, slave, data, vt);
- } else /* if (data->register_type == REG_TYPE_UINT16) */
- {
-@@ -618,7 +618,7 @@ static int mb_read_data(mb_host_t *host,
- "Returned uint16 value is %" PRIu16,
- values[0]);
-
-- CAST_TO_VALUE_T(ds, vt, values[0]);
-+ CAST_TO_VALUE_T(ds, vt, values[0], data->scale, data->shift);
- mb_submit(host, slave, data, vt);
- }
-
-@@ -741,11 +741,9 @@ static int mb_config_add_data(oconfig_it
- status = cf_util_get_string_buffer(child, data.instance,
- sizeof(data.instance));
- else if (strcasecmp("Scale", child->key) == 0)
-- status = cf_util_get_string_buffer(child, data.scale,
-- sizeof(data.scale));
-+ status = cf_util_get_double(child, &data.scale);
- else if (strcasecmp("Shift", child->key) == 0)
-- status = cf_util_get_string_buffer(child, data.shift,
-- sizeof(data.shift));
-+ status = cf_util_get_double(child, &data.shift);
- else if (strcasecmp("RegisterBase", child->key) == 0)
- status = cf_util_get_int(child, &data.register_base);
- else if (strcasecmp("RegisterType", child->key) == 0) {
+++ /dev/null
-From a00ab52931a587cf29c53a945e9295b4d7fe41ba Mon Sep 17 00:00:00 2001
-From: Daniel Golle <daniel@makrotopia.org>
-Date: Thu, 28 Mar 2019 01:52:04 +0100
-Subject: [PATCH] Add support for RS485 to modbus plugin
-
-Allow setting up RS485 mode for Modbus-RTU
----
- src/collectd.conf.pod | 6 +++++
- src/modbus.c | 55 +++++++++++++++++++++++++++++++++++++++----
- 2 files changed, 57 insertions(+), 4 deletions(-)
-
---- a/src/collectd.conf.pod
-+++ b/src/collectd.conf.pod
-@@ -4234,6 +4234,12 @@ For Modbus/RTU, specifies the path to th
- For Modbus/RTU, specifies the baud rate of the serial device.
- Note, connections currently support only 8/N/1.
-
-+=item B<UARTType> I<UARTType>
-+
-+For Modbus/RTU, specifies the type of the serial device.
-+RS232, RS422 and RS485 are supported. Defaults to RS232.
-+Available only on Linux systems with libmodbus>=2.9.4.
-+
- =item B<Interval> I<Interval>
-
- Sets the interval (in seconds) in which the values will be collected from this
---- a/src/modbus.c
-+++ b/src/modbus.c
-@@ -95,6 +95,12 @@ enum mb_conntype_e /* {{{ */
- MBCONN_RTU }; /* }}} */
- typedef enum mb_conntype_e mb_conntype_t;
-
-+enum mb_uarttype_e /* {{{ */
-+{ UARTTYPE_RS232,
-+ UARTTYPE_RS422,
-+ UARTTYPE_RS485 }; /* }}} */
-+typedef enum mb_uarttype_e mb_uarttype_t;
-+
- struct mb_data_s;
- typedef struct mb_data_s mb_data_t;
- struct mb_data_s /* {{{ */
-@@ -124,8 +130,9 @@ struct mb_host_s /* {{{ */
- char host[DATA_MAX_NAME_LEN];
- char node[NI_MAXHOST]; /* TCP hostname or RTU serial device */
- /* char service[NI_MAXSERV]; */
-- int port; /* for Modbus/TCP */
-- int baudrate; /* for Modbus/RTU */
-+ int port; /* for Modbus/TCP */
-+ int baudrate; /* for Modbus/RTU */
-+ mb_uarttype_t uarttype; /* UART type for Modbus/RTU */
- mb_conntype_t conntype;
- cdtime_t interval;
-
-@@ -390,6 +397,22 @@ static int mb_init_connection(mb_host_t
- return status;
- }
-
-+#if defined(linux) && LIBMODBUS_VERSION_CHECK(2, 9, 4)
-+ switch (host->uarttype) {
-+ case UARTTYPE_RS485:
-+ if (modbus_rtu_set_serial_mode(host->connection, MODBUS_RTU_RS485))
-+ DEBUG("Modbus plugin: Setting RS485 mode failed.");
-+ break;
-+ case UARTTYPE_RS422:
-+ /* libmodbus doesn't say anything about full-duplex symmetric RS422 UART */
-+ break;
-+ case UARTTYPE_RS232:
-+ break;
-+ default:
-+ DEBUG("Modbus plugin: Invalid UART type!.");
-+ }
-+#endif /* defined(linux) && LIBMODBUS_VERSION_CHECK(2, 9, 4) */
-+
- return 0;
- } /* }}} int mb_init_connection */
- #endif /* !LEGACY_LIBMODBUS */
-@@ -951,11 +974,35 @@ static int mb_config_add_host(oconfig_it
- status = -1;
- } else if (strcasecmp("Device", child->key) == 0) {
- status = cf_util_get_string_buffer(child, host->node, sizeof(host->node));
-- if (status == 0)
-+ if (status == 0) {
- host->conntype = MBCONN_RTU;
-+ host->uarttype = UARTTYPE_RS232;
-+ }
- } else if (strcasecmp("Baudrate", child->key) == 0)
- status = cf_util_get_int(child, &host->baudrate);
-- else if (strcasecmp("Interval", child->key) == 0)
-+ else if (strcasecmp("UARTType", child->key) == 0) {
-+#if defined(linux) && !LEGACY_LIBMODBUS && LIBMODBUS_VERSION_CHECK(2, 9, 4)
-+ char buffer[NI_MAXHOST];
-+ status = cf_util_get_string_buffer(child, buffer, sizeof(buffer));
-+ if (status != 0)
-+ break;
-+ if (strncmp(buffer, "RS485", 6) == 0)
-+ host->uarttype = UARTTYPE_RS485;
-+ else if (strncmp(buffer, "RS422", 6) == 0)
-+ host->uarttype = UARTTYPE_RS422;
-+ else if (strncmp(buffer, "RS232", 6) == 0)
-+ host->uarttype = UARTTYPE_RS232;
-+ else {
-+ ERROR("Modbus plugin: The UARTType \"%s\" is unknown.", buffer);
-+ status = -1;
-+ break;
-+ }
-+#else
-+ ERROR("Modbus plugin: Option `UARTType' not supported. Please "
-+ "upgrade libmodbus to at least 2.9.4");
-+ return -1;
-+#endif
-+ } else if (strcasecmp("Interval", child->key) == 0)
- status = cf_util_get_cdtime(child, &host->interval);
- else if (strcasecmp("Slave", child->key) == 0)
- /* Don't set status: Gracefully continue if a slave fails. */
/* consolidation_functions = */ NULL,
/* consolidation_functions_num = */ 0,
-@@ -949,6 +952,12 @@ static int rrd_config(const char *key, c
+@@ -944,6 +947,12 @@ static int rrd_config(const char *key, c
/* compar = */ rrd_compare_numeric);
free(value_copy);
} else if (strcasecmp("XFF", key) == 0) {
double tmp = atof(value);
if ((tmp < 0.0) || (tmp >= 1.0)) {
---- a/src/utils_rrdcreate.c
-+++ b/src/utils_rrdcreate.c
+--- a/src/utils/rrdcreate/rrdcreate.c
++++ b/src/utils/rrdcreate/rrdcreate.c
@@ -180,6 +180,9 @@ static int rra_get(char ***ret, const va
rts_num = rra_timespans_num;
}
rra_max = rts_num * rra_types_num;
assert(rra_max > 0);
---- a/src/utils_rrdcreate.h
-+++ b/src/utils_rrdcreate.h
+--- a/src/utils/rrdcreate/rrdcreate.h
++++ b/src/utils/rrdcreate/rrdcreate.h
@@ -40,6 +40,8 @@ struct rrdcreate_config_s {
int *timespans;
size_t timespans_num;
--- a/src/daemon/plugin.c
+++ b/src/daemon/plugin.c
-@@ -1099,7 +1099,7 @@ static int plugin_insert_read(read_func_
+@@ -1085,7 +1085,7 @@ static int plugin_insert_read(read_func_
int status;
llentry_t *le;
--- a/src/olsrd.c
+++ b/src/olsrd.c
-@@ -585,7 +585,7 @@ static int olsrd_read(void) /* {{{ */
+@@ -582,7 +582,7 @@ static int olsrd_read(void) /* {{{ */
if (fh == NULL)
return -1;
--- a/configure.ac
+++ b/configure.ac
-@@ -3327,9 +3327,9 @@ if test "x$with_libmodbus" = "xyes"; the
+@@ -3399,9 +3399,9 @@ if test "x$with_libmodbus" = "xyes"; the
SAVE_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $with_libmodbus_cflags"
--- a/src/modbus.c
+++ b/src/modbus.c
@@ -26,7 +26,7 @@
- #include "configfile.h"
#include "plugin.h"
+ #include "utils/common/common.h"
-#include <modbus.h>
+#include <modbus/modbus.h>
--- a/configure.ac
+++ b/configure.ac
-@@ -526,11 +526,7 @@ if test "x$ac_system" = "xLinux"; then
+@@ -531,11 +531,7 @@ if test "x$ac_system" = "xLinux"; then
[have_cpuid_h="no (cpuid.h not found)"]
)
--- a/configure.ac
+++ b/configure.ac
-@@ -710,6 +710,11 @@ AC_CACHE_CHECK([whether clock_boottime a
+@@ -721,6 +721,11 @@ AC_CACHE_CHECK([whether clock_boottime a
]
)
#
# Checks for typedefs, structures, and compiler characteristics.
-@@ -6127,6 +6132,7 @@ plugin_ipc="no"
+@@ -6392,6 +6397,7 @@ plugin_ipc="no"
plugin_ipmi="no"
plugin_ipvs="no"
plugin_irq="no"
plugin_load="no"
plugin_log_logstash="no"
plugin_mcelog="no"
-@@ -6538,6 +6544,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([iwinfo], [$with_iwinfo], [Common iwinfo wireless 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])
-@@ -6899,6 +6906,7 @@ AC_MSG_RESULT([ libyajl . . . . . . .
+@@ -6826,6 +6832,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([iwinfo], [$with_iwinfo], [Common iwinfo wireless 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])
+@@ -7193,6 +7200,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])
-@@ -6957,6 +6965,7 @@ AC_MSG_RESULT([ ipmi . . . . . . . .
+@@ -7253,6 +7261,7 @@ AC_MSG_RESULT([ ipmi . . . . . . . .
AC_MSG_RESULT([ iptables . . . . . . $enable_iptables])
AC_MSG_RESULT([ ipvs . . . . . . . . $enable_ipvs])
AC_MSG_RESULT([ irq . . . . . . . . . $enable_irq])
AC_MSG_RESULT([ logfile . . . . . . . $enable_logfile])
--- a/src/collectd.conf.in
+++ b/src/collectd.conf.in
-@@ -137,6 +137,7 @@
+@@ -138,6 +138,7 @@
#@BUILD_PLUGIN_IPTABLES_TRUE@LoadPlugin iptables
#@BUILD_PLUGIN_IPVS_TRUE@LoadPlugin ipvs
#@BUILD_PLUGIN_IRQ_TRUE@LoadPlugin irq
#@BUILD_PLUGIN_JAVA_TRUE@LoadPlugin java
@BUILD_PLUGIN_LOAD_TRUE@@BUILD_PLUGIN_LOAD_TRUE@LoadPlugin load
#@BUILD_PLUGIN_LPAR_TRUE@LoadPlugin lpar
-@@ -721,6 +722,12 @@
+@@ -767,6 +768,12 @@
# IgnoreSelected true
#</Plugin>
# JVMArg "-Djava.class.path=@prefix@/share/collectd/java/collectd-api.jar"
--- a/src/collectd.conf.pod
+++ b/src/collectd.conf.pod
-@@ -3521,6 +3521,27 @@ and all other interrupts are collected.
+@@ -3803,6 +3803,27 @@ and all other interrupts are collected.
=back
+ **/
+
+#include "collectd.h"
-+#include "common.h"
+#include "plugin.h"
-+#include "utils_ignorelist.h"
++#include "utils/common/common.h"
++#include "utils/ignorelist/ignorelist.h"
+
+#include <stdint.h>
+#include <iwinfo.h>
+}
--- a/src/types.db
+++ b/src/types.db
-@@ -269,6 +269,7 @@ voltage_threshold value:GAUGE:U:U,
- vs_memory value:GAUGE:0:9223372036854775807
- vs_processes value:GAUGE:0:65535
- vs_threads value:GAUGE:0:65535
+@@ -240,6 +240,7 @@ voltage_threshold value:GAUGE:U:U,
+ spam_check value:GAUGE:0:U
+ spam_score value:GAUGE:U:U
+ spl value:GAUGE:U:U
+stations value:GAUGE:0:256
-
- #
- # Legacy types
+ swap value:GAUGE:0:1099511627776
+ swap_io value:DERIVE:0:U
+ tcp_connections value:GAUGE:0:4294967295
--- a/Makefile.am
+++ b/Makefile.am
-@@ -997,6 +997,14 @@ irq_la_LDFLAGS = $(PLUGIN_LDFLAGS)
+@@ -1149,6 +1149,14 @@ irq_la_LDFLAGS = $(PLUGIN_LDFLAGS)
irq_la_LIBADD = libignorelist.la
endif
--- a/src/ping.c
+++ b/src/ping.c
-@@ -633,7 +633,7 @@ static int ping_read(void) /* {{{ */
+@@ -648,7 +648,7 @@ static int ping_read(void) /* {{{ */
((double)(pkg_recv * (pkg_recv - 1))));
/* Calculate drop rate. */
+++ /dev/null
---- a/src/lua.c
-+++ b/src/lua.c
-@@ -281,9 +281,6 @@ static int lua_cb_register_read(lua_Stat
-
- luaL_checktype(L, 1, LUA_TFUNCTION);
-
-- char function_name[DATA_MAX_NAME_LEN];
-- snprintf(function_name, sizeof(function_name), "lua/%s", lua_tostring(L, 1));
--
- int callback_id = clua_store_callback(L, 1);
- if (callback_id < 0)
- return luaL_error(L, "%s", "Storing callback function failed");
-@@ -298,6 +295,9 @@ static int lua_cb_register_read(lua_Stat
- if (cb == NULL)
- return luaL_error(L, "%s", "calloc failed");
-
-+ char function_name[DATA_MAX_NAME_LEN];
-+ snprintf(function_name, sizeof(function_name), "lua/%p", thread);
-+
- cb->lua_state = thread;
- cb->callback_id = callback_id;
- cb->lua_function_name = strdup(function_name);
-@@ -325,9 +325,6 @@ static int lua_cb_register_write(lua_Sta
-
- luaL_checktype(L, 1, LUA_TFUNCTION);
-
-- char function_name[DATA_MAX_NAME_LEN] = "";
-- snprintf(function_name, sizeof(function_name), "lua/%s", lua_tostring(L, 1));
--
- int callback_id = clua_store_callback(L, 1);
- if (callback_id < 0)
- return luaL_error(L, "%s", "Storing callback function failed");
-@@ -342,6 +339,9 @@ static int lua_cb_register_write(lua_Sta
- if (cb == NULL)
- return luaL_error(L, "%s", "calloc failed");
-
-+ char function_name[DATA_MAX_NAME_LEN] = "";
-+ snprintf(function_name, sizeof(function_name), "lua/%p", thread);
-+
- cb->lua_state = thread;
- cb->callback_id = callback_id;
- cb->lua_function_name = strdup(function_name);
PKG_NAME:=dosfstools
PKG_VERSION:=4.1
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://github.com/dosfstools/dosfstools/releases/download/v$(PKG_VERSION)/ \
The dosfstools package includes the mkfs.fat and fsck.fat utilities, which respectively make and check MS-DOS FAT filesystems.
endef
-TARGET_LDFLAGS += $(if $(ICONV_FULL),-liconv)
-
define Package/dosfstools/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/fatlabel $(1)/usr/sbin/
+++ /dev/null
-From 1c6c135ee15e449c1bf2e76d5307f83a3a1d7425 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
-Date: Tue, 11 Oct 2016 12:07:48 +0200
-Subject: [PATCH] Switch to AC_CHECK_LIB for iconv library linking.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-AC_SEARCH_LIB doesn't work properly for openwrt/lede when building dosfstools
-as a package.
-
-Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/configure.ac
-+++ b/configure.ac
-@@ -59,7 +59,7 @@ if test "x$with_udev" != "xno"; then
- [true])
- fi
-
--AC_SEARCH_LIBS(iconv_open, iconv)
-+AC_CHECK_LIB(iconv, iconv_open)
-
- # xxd (distributed with vim) is used in the testsuite
- AC_CHECK_PROG([XXD_FOUND], [xxd], [yes])
--- /dev/null
+From e18bcc65d5772e518c6496b439bad8a986f7e434 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Thu, 20 Jun 2019 15:18:19 -0700
+Subject: [PATCH] configure: Fix iconv check for cross compilation
+
+AC_CHECK_LIB is more friendly towards cross-compilation.
+
+Added check for libiconv_open as that can be used when the libc lacks iconv.
+---
+ configure.ac | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 07e8703..1b09964 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -75,7 +75,8 @@ if test "x$with_udev" != "xno"; then
+ [true])
+ fi
+
+-AC_SEARCH_LIBS(iconv_open, iconv)
++AC_CHECK_LIB(iconv, iconv_open)
++AC_CHECK_LIB(iconv, libiconv_open)
+
+ # xxd (distributed with vim) is used in the testsuite
+ AC_CHECK_PROG([XXD_FOUND], [xxd], [yes])
include $(TOPDIR)/rules.mk
PKG_NAME:=gammu
-PKG_VERSION:=1.39.0
-PKG_RELEASE:=3
+PKG_VERSION:=1.40.0
+PKG_RELEASE:=1
-PKG_SOURCE_URL:=https://dl.cihar.com/gammu/releases
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_HASH:=66d1d991d7a993fdf254d4c425f0fdd38c9cca15b1735936695a486067a6a9f8
+PKG_SOURCE_URL:=https://dl.cihar.com/gammu/releases
+PKG_HASH:=a760a3520d9f3a16a4ed73cefaabdbd86125bec73c6fa056ca3f0a4be8478dd6
PKG_MAINTAINER:=Vitaly Protsko <villy@sft.ru>
-PKG_LICENCE:=GPL-2.0
+PKG_LICENCE:=GPL-2.0-or-later
+PKG_LICENSE_FILES:=COPYING
PKG_BUILD_PARALLEL:=1
-PKG_INSTALL:=1
+CMAKE_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
CMAKE_OPTIONS += -DICONV_LIBRARIES:STRING=iconv
endif
-define Build/InstallDev
- mkdir -p $(1)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/gammu $(1)/usr/include/
- mkdir -p $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{Gammu*,gsmsd*} $(1)/usr/lib/
-endef
-
define Package/gammu/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gammu $(1)/usr/bin
-diff --git a/cmake/FindIconv.cmake b/cmake/FindIconv.cmake
-index 3ec0493..f716700 100644
--- a/cmake/FindIconv.cmake
+++ b/cmake/FindIconv.cmake
@@ -9,10 +9,10 @@
IF(APPLE)
FIND_PATH(ICONV_INCLUDE_DIR iconv.h
-diff --git a/configure b/configure
-index 4f51ca7..5b0d993 100755
--- a/configure
+++ b/configure
@@ -33,6 +33,7 @@ Usage: ./configure [options]
+++ /dev/null
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -511,8 +511,6 @@ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMP
- # MACRO_TUNE_LINKER("-pie")
- # These do not work on Windows right now
- if (NOT WIN32)
-- # Stack protector
-- MACRO_TUNE_COMPILER("-fstack-protector")
- # Mark code read only
- MACRO_TUNE_LINKER("-Wl,-zrelro")
- endif (NOT WIN32)
--enable-shared enables shared build
--enable-debug enables debug build
--enable-tiger enables Mac OS X 10.4 (Tiger) build
-@@ -51,6 +52,7 @@ SOURCE_DIR=`pwd`
+@@ -51,6 +52,7 @@ BUILD_DIR="$SOURCE_DIR/build-configure"
# cmake parameters
CMAKE_PREFIX=
All enable params have their disable counterparts.
-@@ -61,6 +62,7 @@ CMAKE_PYTHON=
+@@ -61,6 +62,7 @@ CMAKE_PROTECTION=
CMAKE_GNAP=
CMAKE_COMPLETE=
CMAKE_ICONV=
--- /dev/null
+--- a/libgammu/device/devfunc.c
++++ b/libgammu/device/devfunc.c
+@@ -24,6 +24,7 @@
+ # include <signal.h>
+ # include <sys/socket.h>
+ # include <sys/stat.h>
++# include <sys/select.h>
+ #endif
+
+ #include "devfunc.h"
PKG_LICENSE_FILES:=COPYING LICENSE
PKG_BUILD_PARALLEL:=1
-PKG_BUILD_DEPENDS:= python libcups
+PKG_BUILD_DEPENDS:=libcups
PKG_FIXUP:=autoreconf
include $(INCLUDE_DIR)/package.mk
PKG_NAME:=i2c-tools
PKG_VERSION:=4.1
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/software/utils/i2c-tools
define Package/libi2c/install
$(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/lib/libi2c.so* $(1)/usr/lib/
+ $(CP) $(PKG_BUILD_DIR)/lib/libi2c.so* $(1)/usr/lib/
endef
define Package/i2c-tools/install
PKG_NAME:=lm-sensors
PKG_VERSION:=3.5.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_VERSION_SUBST=$(subst .,-,$(PKG_VERSION))
PKG_SOURCE_URL:=https://codeload.github.com/lm-sensors/lm-sensors/tar.gz/V$(PKG_VERSION_SUBST)?
SECTION:=utils
CATEGORY:=Utilities
TITLE:=lm-sensors-detect
- DEPENDS+=+lm-sensors +perl +perlbase-essential +perlbase-fcntl +perlbase-file +perlbase-xsloader
+ DEPENDS+=+lm-sensors \
+ +PACKAGE_lm-sensors-detect:perl \
+ +PACKAGE_lm-sensors-detect:perlbase-essential \
+ +PACKAGE_lm-sensors-detect:perlbase-fcntl \
+ +PACKAGE_lm-sensors-detect:perlbase-file \
+ +PACKAGE_lm-sensors-detect:perlbase-xsloader
endef
define Package/libsensors
define Package/libsensors/install
$(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_DATA) $(PKG_BUILD_DIR)/lib/libsensors.so* $(1)/usr/lib
+ $(CP) $(PKG_BUILD_DIR)/lib/libsensors.so* $(1)/usr/lib
endef
$(eval $(call BuildPackage,lm-sensors))
PKG_NAME:=LVM2
PKG_VERSION:=2.03.02
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).tgz
PKG_SOURCE_URL:=https://sourceware.org/pub/lvm2
define Package/libdevmapper/install
$(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libdevmapper.so.* $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libdevmapper.so.* $(1)/usr/lib
endef
define Package/lvm2/install
PKG_NAME:=mariadb
PKG_VERSION:=10.2.24
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL := \
$(call Package/mariadb/Default)
DEPENDS:=mariadb-common \
$(MARIADB_COMMON_DEPENDS_EXE) \
- +!arc:libaio \
+ +libaio \
+liblzma \
+libpcre \
+resolveip
config MC_VFS
bool "Enable virtual filesystem support"
- default n
+ default y
help
This option enables the Virtual File System switch code to get
transparent access to the following file systems:
cpio, tar, fish, sfs, ftp, sftp, extfs.
- Disabled by default.
+ Enabled by default.
endmenu
include $(TOPDIR)/rules.mk
PKG_NAME:=mc
-PKG_VERSION:=4.8.22
+PKG_VERSION:=4.8.23
PKG_RELEASE:=1
PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
PKG_LICENSE:=GPL-3.0+
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://ftp.midnight-commander.org/
-PKG_HASH:=ee7868d7ba0498cf2cccefe107d7efee7f2571098806bba2aed5a159db801318
+PKG_HASH:=dd7f7ce74183307b0df25b5c3e60ad3293fd3d3d27d2f37dd7a10efce13dff1c
PKG_BUILD_PARALLEL:=1
PKG_FIXUP:=autoreconf gettext-version
PKG_BUILD_DEPENDS:=MC_VFS:libtirpc
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/mc $(1)/usr/bin
$(INSTALL_DIR) $(1)/etc/mc
$(INSTALL_DATA) $(PKG_BUILD_DIR)/misc/mc.charsets $(1)/etc/mc
- $(INSTALL_DATA) $(PKG_BUILD_DIR)/misc/mc.default.keymap $(1)/etc/mc
$(INSTALL_DATA) $(PKG_BUILD_DIR)/misc/mc.ext $(1)/etc/mc
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/misc/mc.default.keymap $(1)/etc/mc/mc.keymap
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/misc/filehighlight.ini $(1)/etc/mc
$(INSTALL_DIR) $(1)/usr/share/mc/help
$(INSTALL_DATA) $(PKG_BUILD_DIR)/doc/hlp/mc.hlp $(1)/usr/share/mc/help
$(INSTALL_DATA) $(PKG_BUILD_DIR)/misc/mc.menu $(1)/etc/mc
ln -sf mc $(1)/usr/bin/mcedit
endif
ifeq ($(CONFIG_MC_VFS),y)
- $(INSTALL_DATA) $(PKG_BUILD_DIR)/src/vfs/extfs/helpers/sfs.ini $(1)/etc/mc
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/src/vfs/sfs/sfs.ini $(1)/etc/mc
$(INSTALL_DIR) $(1)/usr/lib/mc/extfs.d
endif
endef
include $(TOPDIR)/rules.mk
PKG_NAME:=mg
-PKG_VERSION:=20180927
-PKG_RELEASE:=2
+PKG_VERSION:=6.5
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://github.com/ibara/mg/releases/download/mg-20180927
-PKG_HASH:=99b2fd2cf9d6474153d6c5769c818dd5514c147b8a8ad660a5e114bc1ebd504d
+PKG_SOURCE_URL:=https://codeload.github.com/ibara/mg/tar.gz/$(PKG_NAME)-$(PKG_VERSION)?
+PKG_HASH:=c18ab048c192921b5f826885b4087f3e82ec4272dce2e7ed7cde051cd0acf375
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_NAME)-$(PKG_VERSION)
PKG_MAINTAINER:=Hirokazu MORIKAWA <morikw2@gmail.com>
PKG_LICENSE:=PUBLICDOMAIN ISC BSD VARIOUS
diff -urN a/configure b/configure
---- a/configure 2018-09-28 01:38:31.000000000 +0900
-+++ b/configure 2019-05-22 15:17:05.722101952 +0900
-@@ -3,52 +3,7 @@
+--- a/configure 2019-03-03 22:17:03.000000000 +0900
++++ b/configure 2019-06-04 13:08:41.418919319 +0900
+@@ -3,51 +3,21 @@
# This configure script written by Brian Callahan <bcallah@openbsd.org>
# and released into the Public Domain.
- fi
- done
- return 1
--}
+cc="$CC"
++
++fgetlncheck() {
++ cat << EOF > conftest.c
++#include <stdio.h>
++int main(void){fgetln(NULL,NULL);return 0;}
++EOF
++ $cc $tflags -o conftest conftest.c > /dev/null 2>&1
++ if [ $? -eq 0 ] ; then
++ rm -f conftest conftest.c
++ return 0
++ else
++ rm -f conftest conftest.c
++ return 1
++ fi
+ }
- fgetlncheck() {
- cat << EOF > conftest.c
-@@ -162,18 +117,19 @@
+ fparselncheck() {
+@@ -211,18 +181,19 @@
fi
}
fi
}
-@@ -241,53 +197,9 @@
+@@ -290,54 +261,9 @@
ldflags="${ldflags}-static"
fi
- libs="$libs -lutil"
- ;;
- "xNetBSD")
+- cflags="$cflags -D_OPENBSD_SOURCE"
- libs="$libs -lutil"
- ;;
- "xDragonFly")
- ;;
-esac
+# OpenWrt
-+libs='-lncurses -lpcre'
++libs='-lncurses -lpcreposix'
+cflags="$cflags -D_GNU_SOURCE -D__dead=\"__attribute__((__noreturn__))\" -Dst_mtimespec=st_mtim"
cat << EOF > config.h
/* This file generated automatically by configure. */
-@@ -370,6 +282,15 @@
- echo "no"
- fi
+@@ -357,6 +283,15 @@
+
+ EOF
-+printf "checking for futimens... "
-+futimenscheck
++printf "checking for fgetln... "
++fgetlncheck
+if [ $? -eq 0 ] ; then
-+ echo "#define HAVE_FUTIMENS" >> config.h
++ echo "#define HAVE_FGETLN" >> config.h
+ echo "yes"
+else
+ echo "no"
+fi
+
- printf "creating Makefile... "
- cat << EOF > Makefile
- # This Makefile automatically generated by configure.
+ printf "checking for fparseln... "
+ fparselncheck
+ if [ $? -eq 0 ] ; then
+diff -urN a/fparseln.c b/fparseln.c
+--- a/fparseln.c 2019-03-03 22:17:03.000000000 +0900
++++ b/fparseln.c 2019-06-04 13:05:38.815543338 +0900
+@@ -74,6 +74,8 @@
+ #include "util.h"
+ #endif
+
++#ifndef HAVE_FGETLN
++
+ static char *
+ fgetln(FILE *fp, size_t *len)
+ {
+@@ -119,6 +121,8 @@
+ return buf;
+ }
+
++#endif /* !HAVE_FGETLN */
++
+ static int isescaped(const char *, const char *, int);
+
+ /* isescaped():
+diff -urN a/linux.h b/linux.h
+--- a/linux.h 2019-03-03 22:17:03.000000000 +0900
++++ b/linux.h 2019-06-04 13:45:21.787063324 +0900
+@@ -7,6 +7,7 @@
+ #endif
+ #include <sys/types.h>
+
++#include <sys/stat.h>
+ #include <stdio.h>
+
+ /* Defines */
include $(TOPDIR)/rules.mk
PKG_NAME:=nano
-PKG_VERSION:=4.2
+PKG_VERSION:=4.3
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GNU/nano
-PKG_HASH:=1143defce62e391b241252ffdb6e5c1ded56cfe26d46ee81b796abe0ccc45df9
+PKG_HASH:=00d3ad1a287a85b4bf83e5f06cedd0a9f880413682bebd52b4b1e2af8cfc0d81
PKG_LICENSE:=GPL-3.0+
PKG_LICENSE_FILES:=COPYING
PKG_NAME:=oath-toolkit
PKG_VERSION:=2.6.2
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=oath-toolkit-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SAVANNAH/oath-toolkit
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_DIR) $(1)/usr/lib
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/oathtool $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/liboath.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/liboath.so* $(1)/usr/lib/
endef
$(eval $(call BuildPackage,oath-toolkit))
PKG_NAME:=pciutils
PKG_VERSION:=3.6.2
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/software/utils/pciutils
CATEGORY:=Libraries
TITLE:=Linux PCI Libraries
URL:=http://mj.ucw.cz/pciutils.shtml
- DEPENDS:=
endef
-PCI_IDS_VER:=0.319
+PCI_IDS_VER:=0.324
PCI_IDS_FILE:=pci.ids.$(PCI_IDS_VER)
define Download/pci_ids
FILE:=$(PCI_IDS_FILE)
URL_FILE:=pci.ids
URL:=@GITHUB/vcrhonek/hwdata/v$(PCI_IDS_VER)
- HASH:=54154a6955f550b110c6a216943dcd69ba6188e68b80bee6efbaa03ef0df0a5f
+ HASH:=6dba287b4aaafb9582d6139eda22ee6580651b8557828b9598d99078a5f4217e
endef
$(eval $(call Download,pci_ids))
define Package/libpci/install
$(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib/
endef
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=pigz
+PKG_VERSION:=2.4
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://zlib.net/pigz/
+PKG_HASH:=a4f816222a7b4269bd232680590b579ccc72591f1bb5adafcd7208ca77e14f73
+
+PKG_MAINTAINER:=Ken Wong <xinxijishuwyq@gmail.com>
+PKG_LICENSE:=CUSTOM
+PKG_LICENSE_FILES:=README
+PKG_CPE_ID:=cpe:/a:zlib:pigz
+
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/pigz
+ SECTION:=utils
+ CATEGORY:=Utilities
+ SUBMENU:=Compression
+ TITLE:=pigz
+ URL:=https://zlib.net/pigz
+ DEPENDS:=+zlib
+endef
+
+define Package/pigz/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/pigz $(1)/usr/bin/pigz
+endef
+
+$(eval $(call BuildPackage,pigz))
+
--- /dev/null
+--- a/Makefile 2019-05-22 19:54:23.980451289 +0800
++++ b/Makefile 2019-06-10 10:32:58.054675929 +0800
+@@ -1,7 +1,7 @@
+-CC=gcc
+-CFLAGS=-O3 -Wall -Wextra -Wno-unknown-pragmas
+-LDFLAGS=
+-LIBS=-lm -lpthread -lz
++CC?=gcc
++CFLAGS?=-O3 -Wall -Wextra -Wno-unknown-pragmas
++LDFLAGS?=
++LIBS?=-lm -lpthread -lz
+ ZOPFLI=zopfli/src/zopfli/
+ ZOP=deflate.o blocksplitter.o tree.o lz77.o cache.o hash.o util.o squeeze.o katajainen.o
+
PKG_NAME:=powertop
PKG_VERSION:=2.10
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-v$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://01.org/sites/default/files/downloads/
and power management.
endef
+TARGET_CFLAGS += $(FPIC)
+ifeq ($(CONFIG_USE_UCLIBC),y)
+TARGET_CFLAGS += -fno-stack-protector
+endif
TARGET_LDFLAGS += $(if $(INTL_FULL),-lintl)
+CONFIGURE_ARGS += --without-pic
+
define Package/powertop/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/powertop \
+++ /dev/null
---- ./src/devices/devfreq.h.orig
-+++ ./src/devices/devfreq.h
-@@ -25,6 +25,7 @@
- #ifndef _INCLUDE_GUARD_DEVFREQ_H
- #define _INCLUDE_GUARD_DEVFREQ_H
-
-+#include <sys/time.h>
- #include "device.h"
- #include "../parameters/parameters.h"
-
-diff --git a/src/perf/perf.h b/src/perf/perf.h
-index ee072ae06d24..932588a684f9 100644
---- a/src/perf/perf.h
-+++ b/src/perf/perf.h
-@@ -26,6 +26,7 @@
- #define _INCLUDE_GUARD_PERF_H_
-
- #include <iostream>
-+#include <stdio.h>
-
-
- extern "C" {
PKG_NAME:=procps-ng
PKG_VERSION:=3.3.15
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@SF/procps-ng
define Package/procps-ng/install
$(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/libprocps.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libprocps.so* $(1)/usr/lib/
endef
define BuildPlugin
include $(TOPDIR)/rules.mk
PKG_NAME:=sysstat
-PKG_VERSION:=12.0.2
-PKG_RELEASE:=2
+PKG_VERSION:=12.0.5
+PKG_RELEASE:=1
PKG_LICENSE:=GPL-2.0
PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://pagesperso-orange.fr/sebastien.godard/
-PKG_HASH:=2d30947c8fabbb5015c229fbc149f2891db4926cdf165e5f099310795d8dac80
+PKG_HASH:=58583b0776b9addec69e42eebd6dd1a8e976da8a36bad2422659a1ad6c1a2600
PKG_INSTALL:=1
--- a/sa_common.c
+++ b/sa_common.c
-@@ -28,6 +28,7 @@
+@@ -29,6 +29,7 @@
#include <dirent.h>
#include <fcntl.h>
#include <libgen.h>
include $(TOPDIR)/rules.mk
PKG_NAME:=unrar
-PKG_VERSION:=5.7.3
+PKG_VERSION:=5.7.5
PKG_RELEASE:=1
PKG_SOURCE:=unrarsrc-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.rarlab.com/rar
-PKG_HASH:=40e856b78374f258d8a1f5f02c02f828c5392a0118c9300fd169a300b520a444
+PKG_HASH:=e1c2fddaa87a88b1535bfc10ca484f3c5af4e5a55fbb933f8819e26203bbe2ee
PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>, \
Ted Hess <thess@kitschensync.net>
PKG_NAME:=uvcdynctrl
PKG_VERSION:=0.2.5
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=libwebcam-src-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/libwebcam
PKG_HASH:=3ca5199c7b8398b655a7c38e3ad4191bb053b1486503287f20d30d141bda9d41
-PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>
-
PKG_BUILD_DIR:=$(BUILD_DIR)/libwebcam-$(PKG_VERSION)
+PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>
+CMAKE_INSTALL:=1
+
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
+include $(INCLUDE_DIR)/nls.mk
define Package/uvcdynctrl
SECTION:=utils
CATEGORY:=Utilities
DEPENDS:=+libwebcam
TITLE:=Manage dynamic controls in uvcvideo
+ LICENSE:=GPL-3.0-or-later
+ LICENSE_FILES:=uvcdynctrl/COPYING
URL:=https://sourceforge.net/projects/libwebcam/
MENU:=1
endef
define Package/libwebcam
SECTION:=libs
CATEGORY:=Libraries
- DEPENDS:=+libxml2 +libiconv-full
+ DEPENDS:=+libxml2 $(ICONV_DEPENDS)
TITLE:=Webcam library
+ LICENSE:=LGPL-3.0-or-later
+ LICENSE_FILES:=libwebcam/COPYING.LESSER
URL:=https://sourceforge.net/projects/libwebcam/
endef
$(call Package/uvcdynctrl/description)
endef
-TARGET_CFLAGS += -I$(STAGING_DIR)/usr/lib/libiconv-full/include -liconv
-TARGET_LDFLAGS += -L$(STAGING_DIR)/usr/lib/libiconv-full/lib
-
define Package/uvcdynctrl/install
$(INSTALL_DIR) $(1)/usr/{bin,share}
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/uvcdynctrl* $(1)/usr/bin/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libwebcam.so* $(1)/usr/lib/
endef
-define Build/InstallDev
- $(INSTALL_DIR) $(1)/usr/{include,lib}
- $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libwebcam.{a,so*} $(1)/usr/lib/
-endef
-
$(eval $(call BuildPackage,uvcdynctrl))
$(eval $(call BuildPackage,libwebcam))
--- /dev/null
+--- a/uvcdynctrl/CMakeLists.txt
++++ b/uvcdynctrl/CMakeLists.txt
+@@ -77,7 +77,7 @@ include_directories (../common/include)
+ include_directories (${CMAKE_CURRENT_BINARY_DIR})
+ link_directories (${LIBWEBCAM_BINARY_DIR}/webcam)
+
+-target_link_libraries (uvcdynctrl webcam)
++target_link_libraries (uvcdynctrl webcam iconv)
+
+ # Compiler flags
+ set_target_properties (uvcdynctrl PROPERTIES
PKG_NAME:=vim
PKG_VERSION:=8.1
-PKG_RELEASE:=3
+PKG_RELEASE:=4
VIMVER:=81
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
--- /dev/null
+--- a/src/getchar.c
++++ b/src/getchar.c
+@@ -1407,6 +1407,12 @@ openscript(
+ emsg(_(e_nesting));
+ return;
+ }
++
++ // Disallow sourcing a file in the sandbox, the commands would be executed
++ // later, possibly outside of the sandbox.
++ if (check_secure())
++ return;
++
+ #ifdef FEAT_EVAL
+ if (ignore_script)
+ /* Not reading from script, also don't open one. Warning message? */
PKG_NAME:=zstd
PKG_VERSION:=1.4.0
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/facebook/zstd/tar.gz/v$(PKG_VERSION)?
PKG_HASH:=63be339137d2b683c6d19a9e34f4fb684790e864fee13c7dd40e197a64c705c1
+PKG_MAINTAINER:=Amol Bhave <ambhave@fb.com>
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING
-include $(INCLUDE_DIR)/package.mk
-include $(INCLUDE_DIR)/host-build.mk
-include $(INCLUDE_DIR)/cmake.mk
-
PKG_BUILD_PARALLEL:=1
HOST_BUILD_PARALLEL:=1
CMAKE_SOURCE_SUBDIR:=build/cmake
CMAKE_INSTALL:=1
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
+include $(INCLUDE_DIR)/cmake.mk
+
ifeq ($(CONFIG_ZSTD_OPTIMIZE_O3),y)
TARGET_CFLAGS := $(filter-out -O%,$(TARGET_CFLAGS))
TARGET_CFLAGS += -O3
define Package/zstd/Default
SUBMENU:=Compression
URL:=https://github.com/facebook/zstd
- MAINTAINER:=Amol Bhave <ambhave@fb.com>
endef
define Package/libzstd
define Package/libzstd/install
$(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libzstd.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libzstd.so* $(1)/usr/lib/
endef
define Package/zstd/install
$(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/{unzstd,zstd,zstdcat,zstdmt} $(1)/usr/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/{unzstd,zstd,zstdcat,zstdmt} $(1)/usr/bin/
endef
$(eval $(call BuildPackage,libzstd))