PKG_NAME:=erlang
PKG_VERSION:=21.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=otp_src_$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:= http://www.erlang.org/download/
--- /dev/null
+--- a/lib/crypto/c_src/crypto.c
++++ b/lib/crypto/c_src/crypto.c
+@@ -41,6 +41,7 @@
+ #include <openssl/des.h>
+ #endif /* #ifndef OPENSSL_NO_DES */
+ /* #include <openssl/idea.h> This is not supported on the openssl OTP requires */
++#include <openssl/dh.h>
+ #include <openssl/dsa.h>
+ #include <openssl/rsa.h>
+ #include <openssl/aes.h>
+@@ -177,7 +178,7 @@
+ #endif
+
+ #if OPENSSL_VERSION_NUMBER >= PACKED_OPENSSL_VERSION_PLAIN(1,1,0)
+-# ifndef HAS_LIBRESSL
++# if !defined(OPENSSL_NO_CHACHA) || !defined(OPENSSL_NO_POLY1305)
+ # define HAVE_CHACHA20_POLY1305
+ # endif
+ #endif
+@@ -197,8 +198,10 @@
+ /* If OPENSSL_NO_EC is set, there will be an error in ec.h included from engine.h
+ So if EC is disabled, you can't use Engine either....
+ */
++#if !defined(OPENSSL_NO_ENGINE)
+ # define HAS_ENGINE_SUPPORT
+ #endif
++#endif
+
+
+ #if defined(HAS_ENGINE_SUPPORT)
+@@ -910,7 +913,11 @@ static void engine_ctx_dtor(ErlNifEnv* env, struct engine_ctx* ctx) {
+
+ static int verify_lib_version(void)
+ {
++#if OPENSSL_VERSION_NUMBER < PACKED_OPENSSL_VERSION_PLAIN(1,1,0)
+ const unsigned long libv = SSLeay();
++#else
++ const unsigned long libv = OpenSSL_version_num();
++#endif
+ const unsigned long hdrv = OPENSSL_VERSION_NUMBER;
+
+ # define MAJOR_VER(V) ((unsigned long)(V) >> (7*4))
+@@ -1166,12 +1173,14 @@ static int initialize(ErlNifEnv* env, ERL_NIF_TERM load_info)
+ funcp = &get_crypto_callbacks;
+ #endif
+
++#if OPENSSL_VERSION_NUMBER < PACKED_OPENSSL_VERSION_PLAIN(1,1,0)
+ #ifdef OPENSSL_THREADS
+ enif_system_info(&sys_info, sizeof(sys_info));
+ if (sys_info.scheduler_threads > 1) {
+ nlocks = CRYPTO_num_locks();
+ }
+ /* else no need for locks */
++#endif
+ #endif
+
+ ccb = (*funcp)(nlocks);
+@@ -1183,15 +1192,21 @@ static int initialize(ErlNifEnv* env, ERL_NIF_TERM load_info)
+
+ CRYPTO_set_mem_functions(ccb->crypto_alloc, ccb->crypto_realloc, ccb->crypto_free);
+
++#if OPENSSL_VERSION_NUMBER < PACKED_OPENSSL_VERSION_PLAIN(1,1,0)
+ #ifdef OPENSSL_THREADS
+ if (nlocks > 0) {
+ CRYPTO_set_locking_callback(ccb->locking_function);
++#if OPENSSL_VERSION_NUMBER < 0x10000000
+ CRYPTO_set_id_callback(ccb->id_function);
++#else
++ CRYPTO_THREADID_set_callback(ccb->id_function);
++#endif
+ CRYPTO_set_dynlock_create_callback(ccb->dyn_create_function);
+ CRYPTO_set_dynlock_lock_callback(ccb->dyn_lock_function);
+ CRYPTO_set_dynlock_destroy_callback(ccb->dyn_destroy_function);
+ }
+ #endif /* OPENSSL_THREADS */
++#endif
+
+ init_digest_types(env);
+ init_cipher_types(env);
+@@ -1391,7 +1406,11 @@ static ERL_NIF_TERM info_lib(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]
+
+ static const char libname[] = "OpenSSL";
+ unsigned name_sz = strlen(libname);
++#if OPENSSL_VERSION_NUMBER < PACKED_OPENSSL_VERSION_PLAIN(1,1,0)
+ const char* ver = SSLeay_version(SSLEAY_VERSION);
++#else
++ const char* ver = OpenSSL_version(OPENSSL_VERSION);
++#endif
+ unsigned ver_sz = strlen(ver);
+ ERL_NIF_TERM name_term, ver_term;
+ int ver_num = OPENSSL_VERSION_NUMBER;
+--- a/lib/crypto/c_src/crypto_callback.c
++++ b/lib/crypto/c_src/crypto_callback.c
+@@ -83,7 +83,7 @@ static void crypto_free(void* ptr CCB_FILE_LINE_ARGS)
+ enif_free(ptr);
+ }
+
+-
++#if OPENSSL_VERSION_NUMBER < 0x10100000
+ #ifdef OPENSSL_THREADS /* vvvvvvvvvvvvvvv OPENSSL_THREADS vvvvvvvvvvvvvvvv */
+
+ static ErlNifRWLock** lock_vec = NULL; /* Static locks used by openssl */
+@@ -115,10 +115,17 @@ static void locking_function(int mode, int n, const char *file, int line)
+ locking(mode, lock_vec[n]);
+ }
+
++#if OPENSSL_VERSION_NUMBER < 0x10000000
+ static unsigned long id_function(void)
+ {
+ return (unsigned long) enif_thread_self();
+ }
++#else
++static void id_function(CRYPTO_THREADID *id)
++{
++ CRYPTO_THREADID_set_numeric(id, (unsigned long) enif_thread_self());
++}
++#endif
+
+ /* Dynamic locking, not used by current openssl version (0.9.8)
+ */
+@@ -136,6 +143,7 @@ static void dyn_destroy_function(struct CRYPTO_dynlock_value *ptr, const char *f
+ }
+
+ #endif /* ^^^^^^^^^^^^^^^^^^^^^^ OPENSSL_THREADS ^^^^^^^^^^^^^^^^^^^^^^ */
++#endif
+
+ DLLEXPORT struct crypto_callbacks* get_crypto_callbacks(int nlocks)
+ {
+@@ -146,7 +154,8 @@ DLLEXPORT struct crypto_callbacks* get_crypto_callbacks(int nlocks)
+ &crypto_alloc,
+ &crypto_realloc,
+ &crypto_free,
+-
++
++#if OPENSSL_VERSION_NUMBER < 0x10100000
+ #ifdef OPENSSL_THREADS
+ &locking_function,
+ &id_function,
+@@ -154,9 +163,11 @@ DLLEXPORT struct crypto_callbacks* get_crypto_callbacks(int nlocks)
+ &dyn_lock_function,
+ &dyn_destroy_function
+ #endif /* OPENSSL_THREADS */
++#endif
+ };
+
+ if (!is_initialized) {
++#if OPENSSL_VERSION_NUMBER < 0x10100000
+ #ifdef OPENSSL_THREADS
+ if (nlocks > 0) {
+ int i;
+@@ -169,6 +180,7 @@ DLLEXPORT struct crypto_callbacks* get_crypto_callbacks(int nlocks)
+ if (lock_vec[i]==NULL) return NULL;
+ }
+ }
++#endif
+ #endif
+ is_initialized = 1;
+ }
+--- a/lib/crypto/c_src/crypto_callback.h
++++ b/lib/crypto/c_src/crypto_callback.h
+@@ -34,9 +34,15 @@ struct crypto_callbacks
+ void (*crypto_free)(void* ptr CCB_FILE_LINE_ARGS);
+
+ /* openssl callbacks */
++#if OPENSSL_VERSION_NUMBER < 0x10100000
+ #ifdef OPENSSL_THREADS
+ void (*locking_function)(int mode, int n, const char *file, int line);
++ #if OPENSSL_VERSION_NUMBER < 0x10000000
+ unsigned long (*id_function)(void);
++ #else
++ void (*id_function)(CRYPTO_THREADID *id);
++ #endif
++#endif
+ struct CRYPTO_dynlock_value* (*dyn_create_function)(const char *file,
+ int line);
+ void (*dyn_lock_function)(int mode, struct CRYPTO_dynlock_value* ptr,
+--- a/lib/crypto/c_src/otp_test_engine.c
++++ b/lib/crypto/c_src/otp_test_engine.c
+@@ -42,8 +42,10 @@
+ && !defined(OPENSSL_NO_EC) \
+ && !defined(OPENSSL_NO_ECDH) \
+ && !defined(OPENSSL_NO_ECDSA)
++#if !defined(OPENSSL_NO_ENGINE)
+ # define HAVE_EC
+ #endif
++#endif
+
+ #if defined(HAVE_EC)
+ /* If OPENSSL_NO_EC is set, there will be an error in ec.h included from engine.h
+++ /dev/null
---- a/lib/crypto/c_src/crypto.c
-+++ b/lib/crypto/c_src/crypto.c
-@@ -41,6 +41,7 @@
- #include <openssl/des.h>
- #endif /* #ifndef OPENSSL_NO_DES */
- /* #include <openssl/idea.h> This is not supported on the openssl OTP requires */
-+#include <openssl/dh.h>
- #include <openssl/dsa.h>
- #include <openssl/rsa.h>
- #include <openssl/aes.h>
-@@ -197,8 +198,10 @@
- /* If OPENSSL_NO_EC is set, there will be an error in ec.h included from engine.h
- So if EC is disabled, you can't use Engine either....
- */
-+#if !defined(OPENSSL_NO_ENGINE)
- # define HAS_ENGINE_SUPPORT
- #endif
-+#endif
-
-
- #if defined(HAS_ENGINE_SUPPORT)
-@@ -1186,7 +1189,11 @@ static int initialize(ErlNifEnv* env, ERL_NIF_TERM load_info)
- #ifdef OPENSSL_THREADS
- if (nlocks > 0) {
- CRYPTO_set_locking_callback(ccb->locking_function);
-+#if OPENSSL_VERSION_NUMBER < 0x10000000
- CRYPTO_set_id_callback(ccb->id_function);
-+#else
-+ CRYPTO_THREADID_set_callback(ccb->id_function);
-+#endif
- CRYPTO_set_dynlock_create_callback(ccb->dyn_create_function);
- CRYPTO_set_dynlock_lock_callback(ccb->dyn_lock_function);
- CRYPTO_set_dynlock_destroy_callback(ccb->dyn_destroy_function);
---- a/lib/crypto/c_src/crypto_callback.c
-+++ b/lib/crypto/c_src/crypto_callback.c
-@@ -115,10 +115,17 @@ static void locking_function(int mode, int n, const char *file, int line)
- locking(mode, lock_vec[n]);
- }
-
-+#if OPENSSL_VERSION_NUMBER < 0x10000000
- static unsigned long id_function(void)
- {
- return (unsigned long) enif_thread_self();
- }
-+#else
-+static void id_function(CRYPTO_THREADID *id)
-+{
-+ CRYPTO_THREADID_set_numeric(id, (unsigned long) enif_thread_self());
-+}
-+#endif
-
- /* Dynamic locking, not used by current openssl version (0.9.8)
- */
---- a/lib/crypto/c_src/crypto_callback.h
-+++ b/lib/crypto/c_src/crypto_callback.h
-@@ -36,7 +36,11 @@ struct crypto_callbacks
- /* openssl callbacks */
- #ifdef OPENSSL_THREADS
- void (*locking_function)(int mode, int n, const char *file, int line);
-+ #if OPENSSL_VERSION_NUMBER < 0x10000000
- unsigned long (*id_function)(void);
-+ #else
-+ void (*id_function)(CRYPTO_THREADID *id);
-+ #endif
- struct CRYPTO_dynlock_value* (*dyn_create_function)(const char *file,
- int line);
- void (*dyn_lock_function)(int mode, struct CRYPTO_dynlock_value* ptr,
---- a/lib/crypto/c_src/otp_test_engine.c
-+++ b/lib/crypto/c_src/otp_test_engine.c
-@@ -42,8 +42,10 @@
- && !defined(OPENSSL_NO_EC) \
- && !defined(OPENSSL_NO_ECDH) \
- && !defined(OPENSSL_NO_ECDSA)
-+#if !defined(OPENSSL_NO_ENGINE)
- # define HAVE_EC
- #endif
-+#endif
-
- #if defined(HAVE_EC)
- /* If OPENSSL_NO_EC is set, there will be an error in ec.h included from engine.h
GO_VERSION_MAJOR_MINOR:=1.12
-GO_VERSION_PATCH:=4
+GO_VERSION_PATCH:=5
PKG_SOURCE:=go$(PKG_VERSION).src.tar.gz
PKG_SOURCE_URL:=$(GO_SOURCE_URLS)
-PKG_HASH:=4affc3e610cd8182c47abbc5b0c0e4e3c6a2b945b55aaa2ba952964ad9df1467
+PKG_HASH:=2aa5f088cbb332e73fc3def546800616b38d3bfe6b8713b8a6404060f22503e8
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_MIRROR_HASH:=23b4883aeb4fb90b2d0f338659f33a631f9df7a7e67c54115775a77d4ac3cc59
+PKG_MIRROR_HASH:=f109017711dd77d74a39bd1c0975be7edf726da0265f16496ea468481fac0b85
PKG_SOURCE_URL:=https://github.com/keplerproject/luafilesystem.git
PKG_SOURCE_VERSION:=de87218e9798c4dd1a40d65403d99e9e82e1cfa0
PKG_SOURCE_PROTO:=git
PKG_NPM_NAME:=node-hid
PKG_NAME:=$(PKG_NPM_NAME)
-PKG_VERSION:=0.7.7
-PKG_RELEASE:=2
+PKG_VERSION:=0.7.8
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NPM_NAME)-$(PKG_VERSION).tgz
PKG_SOURCE_URL:=https://registry.npmjs.org/$(PKG_NPM_NAME)/-/
-PKG_HASH:=ac14467265a64116114e99091cd557ca7953500285c78cb4bdf6b82fe262cca6
+PKG_HASH:=a1ebbfd33139f7a7cd8c6a617b57229f45bf9ea9fa81563b7806738951d1d581
PKG_BUILD_DEPENDS:=node/host
PKG_USE_MIPS16:=0
PKG_NPM_NAME:=homebridge
PKG_NAME:=node-$(PKG_NPM_NAME)
-PKG_VERSION:=0.4.48
-PKG_RELEASE:=2
+PKG_VERSION:=0.4.49
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NPM_NAME)-$(PKG_VERSION).tgz
PKG_SOURCE_URL:=http://registry.npmjs.org/$(PKG_NPM_NAME)/-/
-PKG_HASH:=020a4d882c04ed26a3c96b8a5e82768b29309cf461aa9a17f330887ed12e3e6b
+PKG_HASH:=1507c2ec513e6c8871d59537b502a1ed24c93e4cb59f1eca8c7fa35d77877cb3
PKG_BUILD_DEPENDS:=node/host
PKG_USE_MIPS16:=0
PKG_NPM_NAME:=serialport
PKG_NAME:=node-$(PKG_NPM_NAME)
-PKG_VERSION:=7.1.4
-PKG_RELEASE:=2
+PKG_VERSION:=7.1.5
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NPM_NAME)-$(PKG_VERSION).tgz
PKG_SOURCE_URL:=https://registry.npmjs.org/$(PKG_NPM_NAME)/-/
-PKG_HASH:=d6f60bd81fe94578dee8e82887a66c5b007ec3f346b13d8156dd94a46f2b4849
+PKG_HASH:=96996a97a5ba9cb2ad5fc5b249e2f653657e9c2bd6a45c8188ad64a76bf93340
PKG_BUILD_DEPENDS:=node/host
PKG_USE_MIPS16:=0
PKG_NAME:=node
PKG_VERSION:=v8.16.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=node-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://nodejs.org/dist/${PKG_VERSION}
PKG_HASH:=3515e8e01568a5dc4dff3d91a76ebc6724f5fa2fbb58b4b0c5da7b178a2f7340
URL:=https://nodejs.org/
DEPENDS:=@(HAS_FPU||KERNEL_MIPS_FPU_EMULATOR) @!arc @!armeb \
+libstdcpp +libopenssl +zlib +libnghttp2 +libuv +libhttp-parser \
- +USE_UCLIBC:libpthread +USE_UCLIBC:librt \
+NODEJS_ICU:icu
endef
--- /dev/null
+--- a/configure
++++ b/configure
+@@ -60,7 +60,7 @@
+
+ valid_os = ('win', 'mac', 'solaris', 'freebsd', 'openbsd', 'linux',
+ 'android', 'aix')
+-valid_arch = ('arm', 'arm64', 'ia32', 'mips', 'mipsel', 'mips64el', 'ppc',
++valid_arch = ('arm', 'arm64', 'ia32', 'mips', 'mipsel', 'mips64', 'mips64el', 'ppc',
+ 'ppc64', 'x32','x64', 'x86', 'x86_64', 's390', 's390x')
+ valid_arm_float_abi = ('soft', 'softfp', 'hard')
+ valid_arm_fpu = ('vfp', 'vfpv3', 'vfpv3-d16', 'neon')
+@@ -795,6 +795,9 @@
+ if rtn == 'mipsel' and '_LP64' in k:
+ rtn = 'mips64el'
+
++ if rtn == 'mips' and '_LP64' in k:
++ rtn = 'mips64'
++
+ return rtn
+
+
+@@ -877,7 +880,7 @@
+
+ if target_arch == 'arm':
+ configure_arm(o)
+- elif target_arch in ('mips', 'mipsel', 'mips64el'):
++ elif target_arch in ('mips', 'mipsel', 'mips64', 'mips64el'):
+ configure_mips(o)
+
+ if flavor == 'aix':
2. [Python 2 end-of-life](#python-2-end-of-life)
1. [Transition policy / schedule](#transition-policy--schedule)
3. [Introduction](#introduction)
-4. [Build considerations](#build-considerations)
-5. [General folder structure](#general-folder-structure)
-6. [Building a Python[3] package](#building-a-python3-package)
+4. [Using Python[3] in external/other package feeds](#using-python3-in-externalother-package-feeds)
+5. [Build considerations](#build-considerations)
+6. [General folder structure](#general-folder-structure)
+7. [Building a Python[3] package](#building-a-python3-package)
1. [PKG_BUILD_DIR](#pkg_build_dir)
2. [PKG_UNPACK](#pkg_unpack)
3. [Include python[3]-package.mk](#include-python3-packagemk)
If more packages (than the ones packaged here) are needed, they can be downloaded via [pip or pip3](https://pip.pypa.io). Note that the versions of `pip` & `setuptools` [available in this repo] are the ones that are packaged inside the Python & Python3 packages (yes, Python & Python3 come packaged with `pip` & `setuptools`).
+## Using Python[3] in external/other package feeds
+
+In the feeds.conf (or feeds.conf.default file, whatever is preferred), the packages repo should be present.
+
+Example
+```
+src-git packages https://git.openwrt.org/feed/packages.git
+src-git luci https://git.openwrt.org/project/luci.git
+src-git routing https://git.openwrt.org/feed/routing.git
+src-git telephony https://git.openwrt.org/feed/telephony.git
+#
+#
+src-git someotherfeed https://github.com/<github-user>/<some-other-package>
+```
+
+Assuming that there are Python packages in the `<some-other-package>`, they should include `python[3]-package.mk` like this:
+```
+include $(TOPDIR)/feeds/packages/lang/python/python-package.mk
+include $(TOPDIR)/feeds/packages/lang/python/python3-package.mk
+```
+
+Same rules apply for `python[3]-package.mk` as the Python packages in this repo.
+And if only 1 of `python-package.mk` or `python3-package.mk` is needed, then only the needed mk file should be included (though it's not an issue if both are included).
+
+**One important consideration:**: if the local name is not `packages`, it's something else, like `openwrt-packages`. And in `feeds.conf[.default]` it's:
+```
+src-git openwrt-packages https://git.openwrt.org/feed/packages.git
+```
+
+Then, the inclusions also change:
+```
+include $(TOPDIR)/feeds/openwrt-packages/lang/python/python-package.mk
+include $(TOPDIR)/feeds/openwrt-packages/lang/python/python3-package.mk
+```
+
+Each maintainer[s] of external packages feeds is responsible for the local name, and relative inclusion path back to this feed (which is named `packages` by default).
+
## Build considerations
In order to build the Python[3] interpreters, a host Python/Python3 interpreter needs to be built, in order to process some of the build for the target Python/Python3 build. The host Python[3] interpreters are also needed so that Python bytecodes are generated, so the host interpreters need to be the exact versions as on the target. And finally, the host Python[3] interpreters also provide pip & pip3, so that they may be used to install some Python[3] packages that are required to build other Python[3] packages.
include $(TOPDIR)/rules.mk
PKG_NAME:=Werkzeug
-PKG_VERSION:=0.14.1
+PKG_VERSION:=0.15.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/W/Werkzeug
-PKG_HASH:=c3fd7a7d41976d9f44db327260e263132466836cef6f91512889ed60ad26557c
+PKG_HASH:=0a73e8bb2ff2feecfc5d56e6f458f5b99290ef34f565ffb2665801ff7de6af7a
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=BSD-3-Clause
include $(TOPDIR)/rules.mk
PKG_NAME:=django-simple-captcha
-PKG_VERSION:=0.5.9
-PKG_RELEASE:=2
+PKG_VERSION:=0.5.11
+PKG_RELEASE:=1
+
+PKG_MAINTAINER:=Eneas U de Queiroz <cote2004-github@yahoo.com>
PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).zip
-PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/d/${PKG_NAME}
-PKG_HASH:=0c30a14f02502119fd1a4d308dd5d2b899d0f4284825a396bbb010afd904754a
+PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/d/$(PKG_NAME)
+PKG_HASH:=e14e5c4b207be3dffb200309e7ac7a48de1a2b3293f09eefedd9ab317c4d9a7f
include $(INCLUDE_DIR)/package.mk
include ../python-package.mk
SUBMENU:=Python
SECTION:=lang
CATEGORY:=Languages
- MAINTAINER:=Eneas U de Queiroz <cote2004-github@yahoo.com>
TITLE:=A very simple, yet powerful, Django captcha application
URL:=https://github.com/mbi/django-simple-captcha
DEPENDS:=+python +python-six +django +pillow +django-ranged-response
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=boto3
+PKG_VERSION:=1.9.135
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/b/boto3
+PKG_HASH:=5e5805992e873e5687b5ef3b4c56c386ccb4df1c3364f8b8601d289e2f275be1
+PKG_BUILD_DIR:=$(BUILD_DIR)/boto3-$(PKG_VERSION)
+
+PKG_MAINTAINER:=Daniel Danzberger <daniel@dd-wrt.com>
+PKG_LICENSE:=Apache-2.0
+PKG_LICENSE_FILES:=LICENSE
+
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-boto3
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=AWS SDK for Python (Boto3)
+ URL:=https://aws.amazon.com/sdk-for-python/
+ DEPENDS:=+python3 \
+ +python3-jmespath \
+ +python3-botocore \
+ +python3-s3transfer
+ VARIANT:=python3
+endef
+
+define Package/python3-boto3/description
+Boto3 is the Amazon Web Services (AWS) Software Development Kit (SDK) for Python,
+which allows Python developers to write software that makes use of services like Amazon S3 and Amazon EC2.
+endef
+
+$(eval $(call Py3Package,python3-boto3))
+$(eval $(call BuildPackage,python3-boto3))
+$(eval $(call BuildPackage,python3-boto3-src))
--- /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:=python-defusedxml
+PKG_VERSION:=0.6.0
+PKG_RELEASE:=1
+PKG_LICENSE:=Python-2.0
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Eneas U de Queiroz <cote2004-github@yahoo.com>
+
+PKG_SOURCE:=defusedxml-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/d/defusedxml
+PKG_HASH:=f684034d135af4c6cbb949b8a4d2ed61634515257a67299e5f940fbaa34377f5
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-defusedxml-$(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/python-defusedxml/Default
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=XML bomb protection for Python stdlib modules.
+ URL:=https://github.com/tiran/defusedxml
+endef
+
+define Package/python-defusedxml
+ $(call Package/python-defusedxml/Default)
+ DEPENDS:= \
+ +PACKAGE_python-defusedxml:python-light \
+ +PACKAGE_python-defusedxml:python-codecs \
+ +PACKAGE_python-defusedxml:python-xml
+ VARIANT:=python
+endef
+
+define Package/python3-defusedxml
+ $(call Package/python-defusedxml/Default)
+ DEPENDS:= \
+ +PACKAGE_python3-defusedxml:python3-light \
+ +PACKAGE_python3-defusedxml:python3-xml
+ VARIANT:=python3
+endef
+
+define Package/python-defusedxml/description
+ The defusedxml package contains several Python-only workarounds and fixes for
+ denial of service and other vulnerabilities in Python’s XML libraries.
+endef
+
+define Package/python3-defusedxml/description
+$(call Package/python-defusedxml/description)
+.
+(Variant for Python3)
+endef
+
+$(eval $(call PyPackage,python-defusedxml))
+$(eval $(call BuildPackage,python-defusedxml))
+$(eval $(call BuildPackage,python-defusedxml-src))
+
+$(eval $(call Py3Package,python3-defusedxml))
+$(eval $(call BuildPackage,python3-defusedxml))
+$(eval $(call BuildPackage,python3-defusedxml-src))
PKG_NAME:=python-packages
PKG_VERSION:=1.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
CONFIG_PACKAGE_python-packages-list-cleanup:=$(call qstrip,$(CONFIG_PACKAGE_python-packages-list-cleanup))
CONFIG_PACKAGE_python-packages-envs:=$(call qstrip,$(CONFIG_PACKAGE_python-packages-envs))
CONFIG_PACKAGE_python-packages-extra-deps:=$(call qstrip,$(CONFIG_PACKAGE_python-packages-extra-deps))
+CONFIG_PACKAGE_python-packages-index-url:=$(call qstrip,$(CONFIG_PACKAGE_python-packages-index-url))
CONFIG_PACKAGE_python-packages-pip-opts:=$(call qstrip,$(CONFIG_PACKAGE_python-packages-pip-opts))
HOST_PYTHON_PIP:=$(STAGING_DIR_HOSTPKG)/bin/pip$(PYTHON_VERSION)
--prefix=$(2) \
--ignore-installed \
--no-compile \
- $(if $(CONFIG_PACKAGE_python-packages-index-url), --index-url $(CONFIG_PACKAGE_python-packages-index-url)) \
+ $(if $(CONFIG_PACKAGE_python-packages-index-url), --index-url "$(CONFIG_PACKAGE_python-packages-index-url)") \
$(if $(CONFIG_PACKAGE_python-packages-pip-opts), $(CONFIG_PACKAGE_python-packages-pip-opts)) \
HOST_PYTHON_PIP_INSTALL_HOST:=$(call HOST_PYTHON_PIP_INSTALL,$(STAGING_DIR_HOSTPKG),"")
include $(TOPDIR)/rules.mk
PKG_NAME:=python-pyasn1-modules
-PKG_VERSION:=0.2.4
-PKG_RELEASE:=2
+PKG_VERSION:=0.2.5
+PKG_RELEASE:=1
PKG_SOURCE:=pyasn1-modules-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/p/pyasn1-modules
-PKG_HASH:=a52090e8c5841ebbf08ae455146792d9ef3e8445b21055d3a3b7ed9c712b7c7c
+PKG_HASH:=ef721f68f7951fab9b0404d42590f479e30d9005daccb1699b0a51bb4177db96
PKG_LICENSE:=BSD-2-Clause
PKG_LICENSE_FILES:=LICENSE.txt
include $(TOPDIR)/rules.mk
PKG_NAME:=python-requests
-PKG_VERSION:=2.21.0
-PKG_RELEASE:=2
+PKG_VERSION:=2.22.0
+PKG_RELEASE:=1
+
+PKG_MAINTAINER:=Josef Schlehofer <josef.schlehofer@nic.cz>, Alexandru Ardelean <ardeleanalex@gmail.com>
PKG_LICENSE:=Apache-2.0
+PKG_LICENSE_FILES:=LICENSE
+PKG_CPE_ID:=cpe:/a:python-requests:requests
PKG_SOURCE:=requests-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/r/requests
-PKG_HASH:=502a824f31acdacb3a35b6690b5fbf0bc41d63a24a45c4004352b0242707598e
+PKG_HASH:=11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4
+
PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-requests-$(PKG_VERSION)
PKG_CPE_ID:=cpe:/a:python-requests:requests
SUBMENU:=Python
SECTION:=lang
CATEGORY:=Languages
- MAINTAINER:=Josef Schlehofer <josef.schlehofer@nic.cz>, Alexandru Ardelean <ardeleanalex@gmail.com>
- URL:=http://python-requests.org/
+ TITLE:=HTTP library for Python
+ URL:=https://2.python-requests.org/
endef
define Package/python-requests
$(call Package/python-requests/Default)
- TITLE:=HTTP library for Python
DEPENDS:= \
+PACKAGE_python-requests:python \
+PACKAGE_python-requests:python-chardet \
define Package/python3-requests
$(call Package/python-requests/Default)
- TITLE:=HTTP library for Python3
DEPENDS:= \
+python3-light \
+python3-chardet \
endef
define Package/python-requests/description
- Requests is the only Non-GMO HTTP library for Python, safe for human consumption.
+ Requests is the only Non-GMO HTTP library for Python, safe for human consumption
endef
define Package/python3-requests/description
include $(TOPDIR)/rules.mk
PKG_NAME:=python-urllib3
-PKG_VERSION:=1.25
+PKG_VERSION:=1.25.2
PKG_RELEASE:=1
+PKG_MAINTAINER:=Josef Schlehofer <pepe.schlehofer@gmail.com>
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE.txt
PKG_CPE_ID:=cpe:/a:urllib3_project:urllib3
PKG_SOURCE:=urllib3-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/u/urllib3
-PKG_HASH:=f03eeb431c77b88cf8747d47e94233a91d0e0fdae1cf09e0b21405a885700266
+PKG_HASH:=a53063d8b9210a7bdec15e7b272776b9d42b2fd6816401a0d43006ad2f9902db
PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-urllib3-$(PKG_VERSION)
include $(TOPDIR)/rules.mk
PKG_NAME:=python-zeroconf
-PKG_VERSION:=0.21.3
+PKG_VERSION:=0.22.0
PKG_RELEASE:=1
PKG_SOURCE:=zeroconf-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://pypi.python.org/packages/source/z/zeroconf/
-PKG_HASH:=5b52dfdf4e665d98a17bf9aa50dea7a8c98e25f972d9c1d7660e2b978a1f5713
+PKG_HASH:=fe66582c7b3ecc229ea4555b6d9da9bc26fc70134811e980b4fbd033e472b825
PKG_BUILD_DIR:=$(BUILD_DIR)/zeroconf-$(PKG_VERSION)
--- /dev/null
+#
+# Copyright (C) 2019 Yousong Zhou <yszhou4tech@gmail.com>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python3-packages
+PKG_VERSION:=1.0
+PKG_RELEASE:=1
+
+PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
+
+#
+# NOTE: move the host module installation to Host/Compile when
+# HOST_CONFIG_DEPENDS is supported
+#
+# NOTE: PKG_CONFIG_DEPENDS cannot correctly track changes of string type config
+# options, so you may want to do manual cleanup on config change.
+#
+PKG_CONFIG_DEPENDS:= \
+ CONFIG_PACKAGE_python3-packages-list-host \
+ CONFIG_PACKAGE_python3-packages-list \
+ CONFIG_PACKAGE_python3-packages-list-cleanup \
+ CONFIG_PACKAGE_python3-packages-envs \
+ CONFIG_PACKAGE_python3-packages-extra-deps \
+ CONFIG_PACKAGE_python3-packages-index-url \
+ CONFIG_PACKAGE_python3-packages-pip-opts \
+
+PKG_BUILD_DEPENDS:=python3 python3/host
+
+include $(INCLUDE_DIR)/package.mk
+include ../python3-host.mk
+include ../python3-package.mk
+
+define Package/python3-packages
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=A dummy package for packaging python3 modules with pip
+ DEPENDS:=@DEVEL +python3
+endef
+
+define Package/python3-packages/config
+if PACKAGE_python3-packages
+config PACKAGE_python3-packages-list-host
+ string "List of python3 packages to install on host"
+config PACKAGE_python3-packages-list
+ string "List of python3 packages to install on target"
+config PACKAGE_python3-packages-list-cleanup
+ string "List of python3 packages to cleanup to avoid clash with existing packages"
+config PACKAGE_python3-packages-envs
+ string "Extra environment variables to pass on to pip and its children on target build"
+config PACKAGE_python3-packages-extra-deps
+ string "List of deps fulfilled but not tracked by the build system"
+config PACKAGE_python3-packages-index-url
+ string "Index URL passed to pip with --index-url"
+config PACKAGE_python3-packages-pip-opts
+ string "Additional arguments to pip command line"
+endif
+endef
+
+CONFIG_PACKAGE_python3-packages-list-host:=$(call qstrip,$(CONFIG_PACKAGE_python3-packages-list-host))
+CONFIG_PACKAGE_python3-packages-list:=$(call qstrip,$(CONFIG_PACKAGE_python3-packages-list))
+CONFIG_PACKAGE_python3-packages-list-cleanup:=$(call qstrip,$(CONFIG_PACKAGE_python3-packages-list-cleanup))
+CONFIG_PACKAGE_python3-packages-envs:=$(call qstrip,$(CONFIG_PACKAGE_python3-packages-envs))
+CONFIG_PACKAGE_python3-packages-extra-deps:=$(call qstrip,$(CONFIG_PACKAGE_python3-packages-extra-deps))
+CONFIG_PACKAGE_python3-packages-index-url:=$(call qstrip,$(CONFIG_PACKAGE_python3-packages-index-url))
+CONFIG_PACKAGE_python3-packages-pip-opts:=$(call qstrip,$(CONFIG_PACKAGE_python3-packages-pip-opts))
+
+decr=$(word $(1),0 1 2 3 4 5 6 7 8 9 10)
+recur=$(if $(subst 0,,$(2)),$(call recur,$(1),$(call decr,$(2)),$(call $(1)$(2),$(3))),$(3))
+_req2dir1=$(subst >,gt,$(1))
+_req2dir2=$(subst <,lt,$(1))
+_req2dir3=$(subst >=,geq,$(1))
+_req2dir4=$(subst <=,leq,$(1))
+_req2dir5=$(subst ://,:::,$(1))
+_req2dir6=$(subst *,_,$(1))
+_req2dir7=$(subst ?,_,$(1))
+req2dir=$(call recur,_req2dir,7,$(1))
+
+# --ignore-installed, it may happen that host pip will ignore target install if
+# it was already installed as host module, e.g. cffi deps of cryptograph
+#
+# --no-build-isolation, this is a new addition in pip3 and is needed when build
+# depends on host modules
+HOST_PYTHON3_PIP_INSTALL=$(HOST_PYTHON3_PIP) install \
+ --root=$(1) \
+ --prefix=$(2) \
+ --ignore-installed \
+ --no-build-isolation \
+ --no-compile \
+ $(if $(CONFIG_PACKAGE_python3-packages-index-url), --index-url "$(CONFIG_PACKAGE_python3-packages-index-url)") \
+ $(if $(CONFIG_PACKAGE_python3-packages-pip-opts), $(CONFIG_PACKAGE_python3-packages-pip-opts)) \
+
+HOST_PYTHON3_PIP_INSTALL_HOST:=$(call HOST_PYTHON3_PIP_INSTALL,$(STAGING_DIR_HOSTPKG),"")
+HOST_PYTHON3_PIP_INSTALL_TARGET=$(call HOST_PYTHON3_PIP_INSTALL,$(PKG_INSTALL_DIR)/$(call req2dir,$(pkg)),/usr)
+HOST_PYTHON3_PIP_INSTALL_CLEANUP:=$(call HOST_PYTHON3_PIP_INSTALL,$(PKG_INSTALL_DIR)/_cleanup,/usr)
+
+define Build/Compile
+ $(foreach pkg,$(CONFIG_PACKAGE_python3-packages-list-host),
+ $(call Build/Compile/HostPy3RunHost,,$(HOST_PYTHON3_PIP_INSTALL_HOST) $(pkg))
+ )
+ $(foreach pkg,$(CONFIG_PACKAGE_python3-packages-list),
+ $(call Build/Compile/HostPy3RunTarget,,$(call HOST_PYTHON3_PIP_INSTALL_TARGET,$(pkg)) $(pkg),$(CONFIG_PACKAGE_python3-packages-envs))
+ )
+ $(foreach pkg,$(CONFIG_PACKAGE_python3-packages-list-cleanup),
+ $(call Build/Compile/HostPy3RunTarget,,$(HOST_PYTHON3_PIP_INSTALL_CLEANUP) $(pkg),$(CONFIG_PACKAGE_python3-packages-envs))
+ )
+endef
+
+define Package/python3-packages/install
+ $(foreach pkg,$(CONFIG_PACKAGE_python3-packages-list),
+ $(CP) "$(PKG_INSTALL_DIR)/$(call req2dir,$(pkg))"/* $(1)
+ )
+
+ find "$(PKG_INSTALL_DIR)/_cleanup" -mindepth 1 -depth | while read sf; do \
+ tf="$$$${sf#$(PKG_INSTALL_DIR)/_cleanup/}"; \
+ tf="$(1)/$$$$tf"; \
+ if [ -f "$$$$tf" -o -L "$$$$tf" ]; then \
+ rm -vf "$$$$tf"; \
+ elif [ -d "$$$$tf" ]; then \
+ rmdir -v -p "$$$$tf" || true; \
+ fi \
+ done
+endef
+
+define Package/python3-packages/extra_provides
+ echo $(CONFIG_PACKAGE_python3-packages-extra-deps) | tr ' ' '\n'
+endef
+
+$(eval $(call BuildPackage,python3-packages))
--- /dev/null
+This package allows users to package python3 modules without creating package
+Makefiles for each individual module and their dependencies. It provides a
+way making packaging python3 packages faster and may also facilitate the process
+of developing Makefiles for new python3 packages
+
+This is a raw DEVEL only package. Using it may entails a lot of implementation
+details and you may need to resolve target dependencies and package details on
+your own
+
+- Third party python3 packages may depend on features not included in e.g.
+ python3-light
+- Some python3 modules may require host install of another module to progress,
+ e.g. target cryptography requires host cffi
+- Some python3 modules have external C library dependencies, e.g. pyOpenSSL
+ requires openssl libs
+- Some packages may have an autoconf configure script whose arguments we
+ cannot control with pip and has to be passed on (hacked) by overriding some
+ environment variables
+
+## How it works
+
+1. Install host modules required for building target modules
+2. Install each target module to separate directories
+3. Install another copy of modules for cleanup purposes to make list of
+ installed files to be removed from target modules installed in step 2
+
+Why should it be so
+
+1. Installing target cryptography requires host installation of cffi module
+2. cryptography requires setuptools and pip will install its own copy with
+ --ignore-installed. When PACKAGE_python3-setuptools is also selected, opkg
+ will complain of data file clashes if it was not removed here.
+
+Pip will handle dependency requirements of python3 modules, but external
+dependencies like c libraries has to be prepared by the build system. The
+issue is that there is currently no way to express such dependencies, thus may
+cause build failure, e.g. pycrypto requires the presence of libgmp to build
+successfully.
+
+## Tips
+
+If something goes wrong, we can add additional arguments to pip command
+line to check the detailed build process. Some useful arguments may be
+
+- -v, for verbose output. Repeat this option if the current level of
+ verbosity is not enough
+- --no-clean, for preserving pip build dir on build failure
+
+## Examples
+
+tornado (python-only module)
+
+ CONFIG_PACKAGE_python3-packages=y
+ CONFIG_PACKAGE_python3-packages-list="tornado==6.0.2"
+
+cryptography (requires installation of host modules and cleanup on target modules)
+
+ CONFIG_PACKAGE_python3-packages=y
+ CONFIG_PACKAGE_python3-packages-list-host="cffi"
+ CONFIG_PACKAGE_python3-packages-list="cryptography"
+ CONFIG_PACKAGE_python3-packages-list-cleanup="setuptools"
+
+pycrypto 2.7a1 (python module with autoconf configure script; depends on
+libgmp; broken wmmintrin.h). 2.6.1 does not work because of a flaw in
+the setup.py hardcoding host include directory
+
+ CONFIG_PACKAGE_libgmp=y
+ CONFIG_PACKAGE_python3-packages=y
+ CONFIG_PACKAGE_python3-packages-list="https://github.com/dlitz/pycrypto/archive/v2.7a1.tar.gz"
+ CONFIG_PACKAGE_python3-packages-envs="ac_cv_header_wmmintrin_h=no build_alias=$(GNU_HOST_NAME) host_alias=$(GNU_TARGET_NAME) target_alias=$(GNU_TARGET_NAME)"
+ CONFIG_PACKAGE_python3-packages-extra-deps="libgmp.so.10"
+
PKG_NAME:=apr
PKG_VERSION:=1.6.5
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@APACHE/apr/
PKG_HASH:=a67ca9fcf9c4ff59bce7f428a323c8b5e18667fdea7b0ebad47d194371b0a105
+
PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
-PKG_LICENSE:=Apache License
+PKG_LICENSE:=Apache-2.0
PKG_FIXUP:=autoreconf
PKG_REMOVE_FILES:=aclocal.m4 build/ltmain.sh
endef
TARGET_CFLAGS += $(FPIC)
-TARGET_CPPFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
CONFIGURE_ARGS += \
+ --without-pic \
--with-devrandom=/dev/urandom \
- --disable-dso \
$(call autoconf_bool,CONFIG_IPV6,ipv6)
# XXX: ac_cv_sizeof_struct_iovec=1 is just to trick configure
CONFIGURE_VARS += \
ac_cv_sizeof_struct_iovec=1 \
ac_cv_struct_rlimit=yes \
- apr_cv_process_shared_works=no \
- apr_cv_mutex_robust_shared=no \
+ ac_cv_func_sem_open=yes \
+ ac_cv_func_pthread_mutexattr_setpshared=yes \
+ apr_cv_mutex_robust_shared=yes \
apr_cv_tcp_nodelay_with_cork=yes \
- apr_cv_use_lfs64=yes \
- LDFLAGS="$$$$LDFLAGS -lpthread" \
+ apr_cv_sock_cloexec=yes \
+ apr_cv_process_shared_works=yes \
+ apr_cv_mutex_recursive=yes \
+ apr_cv_epoll_create1=yes \
+ apr_cv_epoll=yes \
+ apr_cv_dup3=yes \
+ apr_cv_accept4=yes
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/bin $(1)/usr/include/apr-1 $(1)/usr/lib $(1)/usr/lib/pkgconfig $(1)/usr/share/build-1
include/private/apr_escape_test_char.h
DISTCLEAN_TARGETS = config.cache config.log config.status \
include/apr.h include/arch/unix/apr_private.h \
-@@ -135,9 +134,9 @@ tools/gen_test_char.lo: tools/gen_test_c
+@@ -138,9 +137,9 @@ tools/gen_test_char.lo: tools/gen_test_c
$(APR_MKDIR) tools
$(LT_COMPILE)
# See /LICENSE for more information.
#
-#
+#
# Original Boost 1.51 Makefile by Mirko Vogt <mirko@openwrt.org>
# Dude, this "boost" is really one of the most crude stuff I ported yet.
#
PKG_NAME:=boost
PKG_VERSION:=1.70.0
PKG_SOURCE_VERSION:=1_70_0
-PKG_RELEASE:=2
+PKG_RELEASE:=5
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/
- chrono
- container
- context
- - contract
+ - contract
- coroutine (Deprecated - use Coroutine2)
- - coroutine2 (Requires GCC v5 and up)
- date_time
cannot be redefined by another shared library or executable. This mode is
not supported on some platforms, for example OS X.
-> Hidden:
- - Hidden symbols are not exported from shared libraries and cannot be
+ - Hidden symbols are not exported from shared libraries and cannot be
redefined by a different shared library or executable loaded in a process.
In this mode, public symbols have to be explicitly marked in the source code
to be exported from shared libraries. This is the recommended mode.
config boost-compile-visibility-global
bool "Global"
-
+
config boost-compile-visibility-protected
bool "Protected"
-
+
config boost-compile-visibility-hidden
bool "Hidden"
endchoice
config boost-shared-libs
bool "Shared"
-
+
config boost-static-libs
bool "Static"
-
+
config boost-static-and-shared-libs
bool "Both"
endchoice
- Not available if Shared libs are to be built.
-> Use both runtimes.
- Not available if Shared libs are to be built.
- - Two separate versions of Boost are built, linking each to a different runtime.
+ - Two separate versions of Boost are built, linking each to a different runtime.
- This option requires "Use tagged names" option to be active.
config boost-runtime-shared
config boost-runtime-static
depends on @(!boost-shared-libs&&!boost-static-and-shared-libs)
- bool "Static"
+ bool "Static"
config boost-runtime-static-and-shared
depends on @(boost-use-name-tags&&!boost-shared-libs&&!boost-static-and-shared-libs)
Chooses which boost variant should be selected:
-> Release: Optimizes Boost for release.
- Optimization: Speed; Debug Symbols: Off; Inlining: Full; Runtime Debugging: Off.
- -> Debug:
+ -> Debug:
- Optimization: Off; Debug Symbols: On; Inlining: Off; Runtime Debugging: On.
-> Profile:
- Profiling: On; Debug Symbols: On.
config boost-use-name-tags
bool "Use tagged names."
- help
+ help
Add name tags the lib files, to diferentiate each library version:
"-mt" for multi-threading.
"-d" for debugging.
config boost-single-thread
depends on @boost-use-name-tags
bool "Single thread Support."
- help
+ help
Compile Boost libraries in single-thread mode.
default n
-
+
config boost-build-type-complete
depends on @boost-use-name-tags
bool "Complete Boost Build."
- help
+ help
Builds both release and debug libs. It will take much longer to compile.
default n
endmenu
)
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)
define Host/Compile
# b2 does not provide a configure-script nor a Makefile
( 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 )
endef
CONFIGURE_PREFIX:=$(PKG_INSTALL_DIR)
# copies _all_ header files - independent of <--with-library>-argument above
$(INSTALL_DIR) $(1)/usr/lib
- # copies all compiled archive and shared object files
- $(CP) -v $(PKG_INSTALL_DIR)/lib/*.{a,so*} $(1)/usr/lib/ || :
+ # copies all cmake files, compiled archive and shared object files
+ $(CP) -v $(PKG_INSTALL_DIR)/lib/{*.{a,so*},cmake} $(1)/usr/lib/ || :
endef
define Host/Install
define BuildBoostLibrary
define Package/boost-$(1)/install
- $(call Package/boost/Default/install,$$(1),$(1))
+ $(call Package/boost/Default/install,$$(1),$(1))
endef
$$(eval $$(call BuildPackage,boost-$(1)))
--- /dev/null
+From cbdb354a274c8ab51a15dd43eafd02c2b6a576f0 Mon Sep 17 00:00:00 2001
+From: Edward Catmur <edward.catmur@mavensecurities.com>
+Date: Wed, 17 Apr 2019 15:05:37 +0100
+Subject: [PATCH 1/2] Copy variant cvref when determining result type
+
+Ensures that we can e.g. call apply_visitor on a lvalue variant
+---
+ 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 @@
+ # include <boost/mpl/size.hpp>
+ # include <boost/utility/declval.hpp>
+ # include <boost/core/enable_if.hpp>
++# include <boost/type_traits/copy_cv_ref.hpp>
+ # include <boost/type_traits/remove_reference.hpp>
+ # include <boost/variant/detail/has_result_type.hpp>
+ #endif
+@@ -85,7 +86,7 @@ namespace detail { namespace variant {
+ // This class serves only metaprogramming purposes. none of its methods must be called at runtime!
+ template <class Visitor, class Variant>
+ struct result_multideduce1 {
+- typedef typename Variant::types types;
++ typedef typename remove_reference<Variant>::type::types types;
+ typedef typename boost::mpl::begin<types>::type begin_it;
+ typedef typename boost::mpl::advance<
+ begin_it, boost::mpl::int_<boost::mpl::size<types>::type::value - 1>
+@@ -95,14 +96,14 @@ struct result_multideduce1 {
+ struct deduce_impl {
+ typedef typename boost::mpl::next<It>::type next_t;
+ typedef typename boost::mpl::deref<It>::type value_t;
+- typedef decltype(true ? boost::declval< Visitor& >()( boost::declval< value_t >() )
++ typedef decltype(true ? boost::declval< Visitor& >()( boost::declval< copy_cv_ref_t< value_t, Variant > >() )
+ : boost::declval< typename deduce_impl<next_t>::type >()) type;
+ };
+
+ template <class Dummy>
+ struct deduce_impl<last_it, Dummy> {
+ typedef typename boost::mpl::deref<last_it>::type value_t;
+- typedef decltype(boost::declval< Visitor& >()( boost::declval< value_t >() )) type;
++ typedef decltype(boost::declval< Visitor& >()( boost::declval< copy_cv_ref_t< value_t, Variant > >() )) type;
+ };
+
+ typedef typename deduce_impl<begin_it>::type type;
+@@ -132,7 +133,7 @@ inline decltype(auto) apply_visitor(Visitor&& visitor, Visitable&& visitable,
+ boost::detail::variant::has_result_type<Visitor>
+ >::type* = 0)
+ {
+- boost::detail::variant::result_wrapper1<Visitor, typename remove_reference<Visitable>::type> cpp14_vis(::boost::forward<Visitor>(visitor));
++ boost::detail::variant::result_wrapper1<Visitor, Visitable> cpp14_vis(::boost::forward<Visitor>(visitor));
+ 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
+ #endif
+ }
+
++void test_cpp14_visitor(variant_type& test_var)
++{
++ std::cout << "Testing lvalue visitable for c++14\n";
++
++ BOOST_TEST(boost::apply_visitor([](auto& v) { return lvalue_rvalue_detector()(v); }, test_var) == "lvalue reference");
++}
++
++void test_cpp14_mutable_visitor(variant_type& test_var)
++{
++ std::cout << "Testing lvalue visitable for c++14 with inline mutable lambda\n";
++
++ BOOST_TEST(boost::apply_visitor([](auto& v) mutable -> auto { return lvalue_rvalue_detector()(v); }, test_var) == "lvalue reference");
++}
++
++void test_cpp14_visitor(variant_type& test_var, variant_type& test_var2)
++{
++ std::cout << "Testing lvalue visitable for c++14\n";
++
++ BOOST_TEST(boost::apply_visitor([](auto& v, auto& vv) { return lvalue_rvalue_detector()(v, vv); }, test_var, test_var2)
++ == "lvalue reference, lvalue reference");
++}
++
++void test_cpp14_visitor(variant_type& test_var, variant_type& test_var2, variant_type& test_var3)
++{
++#if !defined(BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_HDR_TUPLE)
++ std::cout << "Testing lvalue visitable for c++14\n";
++
++ auto result = boost::apply_visitor([](auto& v, auto& t, auto& p) { return lvalue_rvalue_detector()(v, t, p); },
++ test_var, test_var2, test_var3);
++ std::cout << "result: " << result << std::endl;
++ BOOST_TEST(result == "lvalue reference, lvalue reference, lvalue reference");
++#else
++ (void)test_var;
++ (void)test_var2;
++ (void)test_var3;
++#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()
+ void run_cpp14_tests()
+ {
+ #ifndef BOOST_NO_CXX14_DECLTYPE_AUTO
++ variant_type const c1(10), c2(20), c3(30);
+ variant_type v1(10), v2(20), v3(30);
+
++ test_cpp14_visitor(c1);
++ test_cpp14_mutable_visitor(c1);
++ test_cpp14_visitor(c2, c3);
++ test_cpp14_visitor(c1, c2, c3);
++
+ test_cpp14_visitor(v1);
+ test_cpp14_mutable_visitor(v1);
+ test_cpp14_visitor(v2, v3);
--- /dev/null
+--- a/boost/math/tools/roots.hpp
++++ b/boost/math/tools/roots.hpp
+@@ -665,8 +665,8 @@ namespace detail
+ inline T discriminant(T const & a, T const & b, T const & c)
+ {
+ T w = 4*a*c;
+- T e = std::fma(-c, 4*a, w);
+- T f = std::fma(b, b, -w);
++ T e = fma(-c, 4*a, w);
++ T f = fma(b, b, -w);
+ return f + e;
+ }
+ }
+@@ -674,7 +674,6 @@ namespace detail
+ template<class T>
+ auto quadratic_roots(T const& a, T const& b, T const& c)
+ {
+- using std::copysign;
+ using std::sqrt;
+ if constexpr (std::is_integral<T>::value)
+ {
CATEGORY:=Libraries
TITLE+= (library)
ABI_VERSION:=$(PKG_VERSION)-$(PKG_RELEASE)
- DEPENDS:=+libstdcpp +libpthread
+ DEPENDS:=+libstdcpp +libpthread @!arc
endef
define Package/libbotan/description
PKG_NAME:=faad2
PKG_VERSION:=2.8.8
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/faac/faad2-src/$(PKG_NAME)-2.8.0
CONFIGURE_ARGS+= -nfp
endif
-ifeq ($(CONFIG_USE_UCLIBC),y)
- CONFIGURE_VARS+= CPPFLAGS="-fno-builtin-cos -fno-builtin-sin -fno-builtin-log"
-endif
-
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/*.h $(1)/usr/include
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=fbthrift
+PKG_VERSION:=2019.05.06.00
+PKG_RELEASE:=1
+PKG_MAINTAINER:=Amol Bhave <ambhave@fb.com>
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/facebook/fbthrift/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=563ad2cacbd29cd22da3a608da52a2ab831942592c0f47dbeeab7131d9291995
+
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_BUILD_DEPENDS:=fbthrift/host
+HOST_BUILD_DEPENDS:=boost/host libmstch/host
+
+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:=+libstdcpp +boost +boost-filesystem +libfolly +glog +libsodium \
+ +libwangle +libfmt +libyarpl +libmstch +librsocket-cpp \
+ +@boost-host-build-filesystem +@boost-host-build-system \
+ +@boost-host-build-thread
+endef
+
+define Package/fbthrift/description
+ Facebook's branch of Apache Thrift, including a new C++ server.
+endef
+
+define Package/fbthrift/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*.so* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,fbthrift))
+$(eval $(call HostBuild))
include $(TOPDIR)/rules.mk
PKG_NAME:=getdns
-PKG_VERSION:=1.5.0
+PKG_VERSION:=1.5.2
PKG_RELEASE:=1
PKG_LICENSE:=BSD-3-Clause
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://getdnsapi.net/dist/
-PKG_HASH:=577182c3ace919ee70cee5629505581a10dc530bd53fe5c241603ea91c84fa84
+PKG_HASH:=1826a6a221ea9e9301f2c1f5d25f6f5588e841f08b967645bf50c53b970694c0
PKG_FIXUP:=autoreconf
MAJOR_VERSION:=64
MINOR_VERSION:=2
PKG_VERSION:=$(MAJOR_VERSION).$(MINOR_VERSION)
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(MAJOR_VERSION)_$(MINOR_VERSION)-src.tgz
PKG_SOURCE_URL:=https://github.com/unicode-org/icu/releases/download/release-$(MAJOR_VERSION)-$(MINOR_VERSION)
--- /dev/null
+--- a/i18n/decimfmt.cpp
++++ b/i18n/decimfmt.cpp
+@@ -1812,7 +1812,7 @@ bool DecimalFormat::fastFormatDouble(double input, UnicodeString& output) const
+ return false;
+ }
+ if (std::isnan(input)
+- || std::trunc(input) != input
++ || trunc(input) != input
+ || input <= INT32_MIN
+ || input > INT32_MAX) {
+ return false;
+--- a/i18n/number_decimalquantity.cpp
++++ b/i18n/number_decimalquantity.cpp
+@@ -446,7 +446,7 @@ void DecimalQuantity::_setToDoubleFast(double n) {
+ for (; i <= -22; i += 22) n /= 1e22;
+ n /= DOUBLE_MULTIPLIERS[-i];
+ }
+- auto result = static_cast<int64_t>(std::round(n));
++ auto result = static_cast<int64_t>(round(n));
+ if (result != 0) {
+ _setToLong(result);
+ scale -= fracLength;
PKG_NAME:=libartnet
PKG_VERSION:=1.1.2
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/OpenLightingProject/libartnet/releases/download/1.1.2
PKG_HASH:=19cdda434e208a81ddd138377f11046364438e40e34542ae101d6aa3fcaec696
PKG_MAINTAINER:=Martijn Zilverschoon <martijn@friedzombie.com>
-
PKG_LICENSE:=GPL-2.1
PKG_LICENSE_FILES:=COPYING
+PKG_INSTALL:=1
+
include $(INCLUDE_DIR)/package.mk
define Package/libartnet
SECTION:=libs
CATEGORY:=Libraries
TITLE:=Libartnet is an implementation of the ArtNet protocol.
- URL:=http://www.openlighting.org/libartnet-main/
+ URL:=https://www.openlighting.org/libartnet-main/
endef
define Package/libartnet/description
transmission of DMX and related data over IP networks.
endef
-define Build/Configure
- $(call Build/Configure/Default)
-endef
-
-define Build/Compile
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
-endef
-
define Build/InstallDev
mkdir -p $(1)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/artnet $(1)/usr/include/
-diff --git a/artnet/transmit.c b/artnet/transmit.c
-index ce19b11..e882db9 100644
--- a/artnet/transmit.c
+++ b/artnet/transmit.c
@@ -163,7 +163,7 @@ int artnet_tx_tod_data(node n, int id) {
while (remaining > 0) {
- memset(&tod.data.toddata.tod,0x00, ARTNET_MAX_UID_COUNT);
-+ memset(&tod.data.toddata.tod,0x00, ARTNET_MAX_UID_COUNT * sizeof(tod.data.toddata.tod));
++ memset(&tod.data.toddata.tod,0x00, sizeof(tod.data.toddata.tod));
lim = min(ARTNET_MAX_UID_COUNT, remaining);
tod.data.toddata.blockCount = bloc++;
tod.data.toddata.uidCount = lim;
include $(TOPDIR)/rules.mk
PKG_NAME:=libevhtp
-PKG_VERSION:=1.1.6
-PKG_RELEASE:=3
-PKG_LICENSE:=BSD-3-Clause
+PKG_VERSION:=1.2.0
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/criticalstack/libevhtp/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=725dd0a32237b2a097cdc2003d09278a082ccce310aaba7441a5fd8fa8f26635
+PKG_HASH:=d8d98072693f5f68ccd74d327dedfa2f6add4446ac2799689c2f58dd480aa301
+
+PKG_MAINTAINER:=
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=LICENSE
-PKG_INSTALL:=1
+CMAKE_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
define Package/libevhtp
SECTION:=libs
CATEGORY:=Libraries
TITLE:=A more flexible replacement for libevent's httpd API
- MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
- URL:=https://github.com/ellzey/libevhtp
- DEPENDS:=+libevent2 +libevent2-openssl +libevent2-pthreads +libopenssl +libpthread
+ URL:=https://github.com/criticalstack/libevhtp
+ DEPENDS:=+libevent2 +libevent2-openssl +libevent2-pthreads
endef
define Package/libevhtp/description
meaning the developer never thought of it being used for creating a full-fledged HTTP service.
endef
-include $(INCLUDE_DIR)/cmake.mk
-
-define Build/InstallDev
- $(INSTALL_DIR) $(1)/usr/{include,lib}
- $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/* $(1)/usr/lib/
-endef
-
$(eval $(call BuildPackage,libevhtp))
--- a/evhtp.c
+++ b/evhtp.c
-@@ -1686,16 +1686,15 @@ _evhtp_ssl_thread_lock(int mode, int typ
+@@ -1817,16 +1817,15 @@ _evhtp_ssl_thread_lock(int mode, int typ
#endif
static void
_evhtp_ssl_delete_scache_ent(evhtp_ssl_ctx_t * ctx, evhtp_ssl_sess_t * sess) {
if (cfg->scache_del) {
(cfg->scache_del)(htp, sid, slen);
-@@ -1706,14 +1705,17 @@ static int
+@@ -1837,14 +1836,17 @@ static int
_evhtp_ssl_add_scache_ent(evhtp_ssl_t * ssl, evhtp_ssl_sess_t * sess) {
evhtp_connection_t * connection;
evhtp_ssl_cfg_t * cfg;
SSL_set_timeout(sess, cfg->scache_timeout);
-@@ -1725,7 +1727,7 @@ _evhtp_ssl_add_scache_ent(evhtp_ssl_t *
+@@ -1856,7 +1858,7 @@ _evhtp_ssl_add_scache_ent(evhtp_ssl_t *
}
static evhtp_ssl_sess_t *
evhtp_connection_t * connection;
evhtp_ssl_cfg_t * cfg;
evhtp_ssl_sess_t * sess;
-@@ -1767,12 +1769,12 @@ _evhtp_ssl_servername(evhtp_ssl_t * ssl,
+@@ -1898,12 +1900,12 @@ _evhtp_ssl_servername(evhtp_ssl_t * ssl,
connection->vhost_via_sni = 1;
SSL_set_SSL_CTX(ssl, evhtp_vhost->ssl_ctx);
}
return SSL_TLSEXT_ERR_OK;
-@@ -3017,15 +3019,21 @@ evhtp_ssl_init(evhtp_t * htp, evhtp_ssl_
+@@ -3197,15 +3199,21 @@ evhtp_ssl_init(evhtp_t * htp, evhtp_ssl_
return -1;
}
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
SSL_CTX_set_options(htp->ssl_ctx, SSL_MODE_RELEASE_BUFFERS);
-@@ -3062,7 +3070,11 @@ evhtp_ssl_init(evhtp_t * htp, evhtp_ssl_
+@@ -3242,7 +3250,11 @@ evhtp_ssl_init(evhtp_t * htp, evhtp_ssl_
SSL_CTX_set_verify(htp->ssl_ctx, cfg->verify_peer, cfg->x509_verify_cb);
if (cfg->x509_chk_issued_cb != NULL) {
#else
typedef void evhtp_ssl_sess_t;
typedef void evhtp_ssl_t;
-@@ -154,9 +159,9 @@ typedef int (*evhtp_headers_iterator)(ev
+@@ -157,9 +162,9 @@ typedef int (*evhtp_headers_iterator)(ev
typedef int (*evhtp_ssl_verify_cb)(int pre_verify, evhtp_x509_store_ctx_t * ctx);
typedef int (*evhtp_ssl_chk_issued_cb)(evhtp_x509_store_ctx_t * ctx, evhtp_x509_t * x, evhtp_x509_t * issuer);
+typedef evhtp_ssl_sess_t * (*evhtp_ssl_scache_get)(evhtp_connection_t * connection, evhtp_ssl_data_t * sid, int sid_len);
typedef void * (*evhtp_ssl_scache_init)(evhtp_t *);
- #define EVHTP_VERSION "1.1.6"
+ #define EVHTP_VERSION "1.2.0"
-diff --git a/evhtp.c b/evhtp.c
-index 24687be..b646925 100644
--- a/evhtp.c
+++ b/evhtp.c
-@@ -1667,9 +1667,9 @@ _evhtp_accept_cb(evserv_t * serv, int fd, struct sockaddr * s, int sl, void * ar
+@@ -1797,10 +1797,10 @@ _evhtp_accept_cb(evserv_t * serv, int fd, struct sockaddr * s, int sl, void * ar
+ }
#ifndef EVHTP_DISABLE_SSL
- #ifndef EVHTP_DISABLE_EVTHR
+-#ifndef EVHTP_DISABLE_EVTHR
-static unsigned long
-_evhtp_ssl_get_thread_id(void) {
- return (unsigned long)pthread_self();
++#if !defined(EVHTP_DISABLE_EVTHR) && (OPENSSL_VERSION_NUMBER < 0x10100000L)
+static void
+_evhtp_ssl_get_thread_id(CRYPTO_THREADID *id) {
+ CRYPTO_THREADID_set_numeric(id, (unsigned long)pthread_self());
}
static void
-@@ -2999,7 +2999,7 @@ evhtp_ssl_use_threads(void) {
+@@ -3050,7 +3050,9 @@ evhtp_use_threads(evhtp_t * htp, evhtp_thread_init_cb init_cb, int nthreads, voi
+ htp->thread_init_cbarg = arg;
+
+ #ifndef EVHTP_DISABLE_SSL
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ evhtp_ssl_use_threads();
++#endif
+ #endif
+
+ if (!(htp->thr_pool = evthr_pool_new(nthreads, _evhtp_thread_init, htp))) {
+@@ -3161,7 +3163,7 @@ evhtp_set_post_accept_cb(evhtp_t * htp, evhtp_post_accept_cb cb, void * arg) {
+ }
+
+ #ifndef EVHTP_DISABLE_SSL
+-#ifndef EVHTP_DISABLE_EVTHR
++#if !defined(EVHTP_DISABLE_EVTHR) && (OPENSSL_VERSION_NUMBER < 0x10100000L)
+ int
+ evhtp_ssl_use_threads(void) {
+ int i;
+@@ -3179,7 +3181,7 @@ evhtp_ssl_use_threads(void) {
pthread_mutex_init(&(ssl_locks[i]), NULL);
}
--- /dev/null
+--- a/test_proxy.c
++++ b/test_proxy.c
+@@ -5,6 +5,9 @@
+ #include <errno.h>
+ #include <evhtp.h>
+
++#ifndef SIGTERM
++#define SIGTERM 15
++#endif
+
+ int
+ make_request(evbase_t * evbase,
--- /dev/null
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -241,3 +241,4 @@ endif()
+ install (FILES evhtp.h DESTINATION include)
+ install (FILES htparse/htparse.h DESTINATION include)
+ install (FILES evthr/evthr.h DESTINATION include)
++install (FILES oniguruma/onigposix.h DESTINATION include)
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libfizz
+PKG_VERSION:=2019.05.06.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:=80d4089cef655192733a7b0536bd3e2dab9baf143ed99510308064ff4842ae11
+PKG_BUILD_DIR:=$(BUILD_DIR)/fizz-$(PKG_VERSION)
+
+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
+
+define Package/libfizz
+ SECTION:=libs
+ CATEGORY:=Libraries
+ DEPENDS:=+libfolly +boost +libopenssl +glog +gflags +libevent2 \
+ +libdouble-conversion +libsodium
+ TITLE:=C++14 implementation of the TLS-1.3 standard
+ URL:=https://github.com/facebookincubator/fizz
+endef
+
+define Package/libfizz/description
+ C++14 implementation of the TLS-1.3 standard.
+ Fizz currently supports TLS 1.3 drafts 28, 26 (both wire-compatible with the final specification), and 23.
+endef
+
+define Package/libfizz/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfizz.so* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,libfizz))
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libfolly
+PKG_VERSION:=2019.05.06.00
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/facebook/folly/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=59e88d792e4c917e2f37ac22c230af0056bce8aa7bacf2d9e94ceb177a7c1079
+PKG_BUILD_DIR:=$(BUILD_DIR)/folly-$(PKG_VERSION)
+
+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
+
+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:=+libstdcpp +boost +boost-context +boost-system +boost-thread \
+ +boost-date_time +boost-filesystem +boost-program_options +boost-regex \
+ +libbz2 +libopenssl +libdouble-conversion +libevent2 +glog +zlib +libzstd \
+ +gflags +libsodium +liblzma +libaio +liblz4 +libunwind +libatomic
+endef
+
+define Package/libfolly/description
+ An open-source C++ library developed and used at Facebook.
+ Folly (acronymed loosely after Facebook Open Source Library) is a library of
+ C++14 components designed with practicality and efficiency in mind.
+ Folly contains a variety of core library components used extensively at Facebook.
+ This package includes the shared library.
+endef
+
+define Package/libfolly/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfolly*.so* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,libfolly))
--- /dev/null
+Index: folly-2019.05.06.00/CMakeLists.txt
+===================================================================
+--- folly-2019.05.06.00.orig/CMakeLists.txt
++++ folly-2019.05.06.00/CMakeLists.txt
+@@ -109,17 +109,19 @@ configure_file(
+ auto_sources(files "*.cpp" "RECURSE" "${FOLLY_DIR}")
+ auto_sources(hfiles "*.h" "RECURSE" "${FOLLY_DIR}")
+
++string(REPLACE + \\+ FOLLY_DIR_ESCAPED ${FOLLY_DIR})
++
+ # Exclude tests, benchmarks, and other standalone utility executables from the
+ # library sources. Test sources are listed separately below.
+ REMOVE_MATCHES_FROM_LISTS(files hfiles
+ MATCHES
+- "^${FOLLY_DIR}/build/"
+- "^${FOLLY_DIR}/experimental/exception_tracer/"
+- "^${FOLLY_DIR}/experimental/pushmi/"
+- "^${FOLLY_DIR}/futures/exercises/"
+- "^${FOLLY_DIR}/logging/example/"
+- "^${FOLLY_DIR}/(.*/)?test/"
+- "^${FOLLY_DIR}/tools/"
++ "^${FOLLY_DIR_ESCAPED}/build/"
++ "^${FOLLY_DIR_ESCAPED}/experimental/exception_tracer/"
++ "^${FOLLY_DIR_ESCAPED}/experimental/pushmi/"
++ "^${FOLLY_DIR_ESCAPED}/futures/exercises/"
++ "^${FOLLY_DIR_ESCAPED}/logging/example/"
++ "^${FOLLY_DIR_ESCAPED}/(.*/)?test/"
++ "^${FOLLY_DIR_ESCAPED}/tools/"
+ "Benchmark.cpp$"
+ "Test.cpp$"
+ )
+@@ -169,7 +171,7 @@ list(APPEND hfiles
+ if (NOT FOLLY_USE_SYMBOLIZER)
+ REMOVE_MATCHES_FROM_LISTS(files hfiles
+ MATCHES
+- "^${FOLLY_DIR}/experimental/symbolizer/"
++ "^${FOLLY_DIR_ESCAPED}/experimental/symbolizer/"
+ )
+ list(REMOVE_ITEM files
+ ${FOLLY_DIR}/SingletonStackTrace.cpp
--- /dev/null
+Index: folly-2019.05.06.00/folly/stats/detail/BufferedStat-defs.h
+===================================================================
+--- folly-2019.05.06.00.orig/folly/stats/detail/BufferedStat-defs.h
++++ folly-2019.05.06.00/folly/stats/detail/BufferedStat-defs.h
+@@ -74,7 +74,6 @@ void BufferedStat<DigestT, ClockT>::doUp
+ TimePoint now,
+ const std::unique_lock<SharedMutex>& g,
+ UpdateMode updateMode) {
+- DCHECK(g.owns_lock());
+ // Check that no other thread has performed the slide after the check
+ auto oldExpiry = expiry_.load(std::memory_order_relaxed).tp;
+ if (now > oldExpiry || updateMode == UpdateMode::Now) {
--- /dev/null
+diff --git a/folly/CachelinePadded.h b/folly/CachelinePadded.h
+--- a/folly/CachelinePadded.h
++++ b/folly/CachelinePadded.h
+@@ -35,10 +35,6 @@
+ */
+ 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)
+diff --git a/folly/experimental/JSONSchema.cpp b/folly/experimental/JSONSchema.cpp
+--- a/folly/experimental/JSONSchema.cpp
++++ b/folly/experimental/JSONSchema.cpp
+@@ -25,6 +25,7 @@
+ #include <folly/Singleton.h>
+ #include <folly/String.h>
+ #include <folly/json.h>
++#include <folly/portability/Math.h>
+
+ namespace folly {
+ namespace jsonschema {
+@@ -141,7 +142,7 @@
+ return none;
+ }
+ if (schema_.isDouble() || value.isDouble()) {
+- const auto rem = std::remainder(value.asDouble(), schema_.asDouble());
++ const auto rem = folly::remainder(value.asDouble(), schema_.asDouble());
+ if (std::abs(rem) > std::numeric_limits<double>::epsilon()) {
+ return makeError("a multiple of ", schema_, value);
+ }
+diff --git a/folly/external/farmhash/farmhash.cpp b/folly/external/farmhash/farmhash.cpp
+--- 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
+diff --git a/folly/portability/Math.h b/folly/portability/Math.h
+--- a/folly/portability/Math.h
++++ b/folly/portability/Math.h
+@@ -20,21 +20,24 @@
+
+ namespace folly {
+
+-#ifndef __ANDROID__
++#if !defined(__ANDROID__) && !defined(__UCLIBC__)
+
+ /**
+- * Most platforms hopefully provide std::nextafter.
++ * Most platforms hopefully provide std::{nextafter,remainder}.
+ */
+
+ /* using override */ using std::nextafter;
++/* using override */ using std::remainder;
+
+-#else // !__ANDROID__
++#else // !__ANDROID__ && !__UCLIBC__
+
+ /**
+ * On Android, std::nextafter isn't implemented. However, the C functions and
+ * compiler builtins are still provided. Using the GCC builtin is actually
+ * slightly faster, as they're constexpr and the use cases within folly are in
+ * constexpr context.
++ *
++ * UCLIBC doesn't implement std::remainder. Use the builtin versions.
+ */
+
+ #if defined(__GNUC__) && !defined(__clang__)
+@@ -51,6 +54,18 @@
+ return __builtin_nextafterl(x, y);
+ }
+
++constexpr float remainder(float x, float y) {
++ return __builtin_remainderf(x, y);
++}
++
++constexpr double remainder(double x, double y) {
++ return __builtin_remainder(x, y);
++}
++
++constexpr long double remainder(long double x, long double y) {
++ return __builtin_remainderl(x, y);
++}
++
+ #else // __GNUC__
+
+ inline float nextafter(float x, float y) {
+@@ -65,6 +80,18 @@
+ return ::nextafterl(x, y);
+ }
+
++inline float remainder(float x, float y) {
++ return ::remainderf(x, y);
++}
++
++inline double remainder(double x, double y) {
++ return ::remainder(x, y);
++}
++
++inline long double remainder(long double x, long double y) {
++ return ::remainderl(x, y);
++}
++
+ #endif // __GNUC__
+
+ #endif // __ANDROID__
--- /dev/null
+diff --git a/folly/io/async/ssl/OpenSSLUtils.cpp b/folly/io/async/ssl/OpenSSLUtils.cpp
+index 0504cf8..a9c2775 100644
+--- a/folly/io/async/ssl/OpenSSLUtils.cpp
++++ b/folly/io/async/ssl/OpenSSLUtils.cpp
+@@ -155,8 +155,12 @@ static std::unordered_map<uint16_t, std::string> getOpenSSLCipherNames() {
+ SSL_CTX* ctx = nullptr;
+ SSL* ssl = nullptr;
+
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ const SSL_METHOD* meth = SSLv23_server_method();
+ OpenSSL_add_ssl_algorithms();
++#else
++ const SSL_METHOD* meth = TLS_server_method();
++#endif
+
+ if ((ctx = SSL_CTX_new(meth)) == nullptr) {
+ return ret;
+diff --git a/folly/portability/OpenSSL.h b/folly/portability/OpenSSL.h
+index a4f4b04..427bf95 100644
+--- a/folly/portability/OpenSSL.h
++++ b/folly/portability/OpenSSL.h
+@@ -27,6 +27,7 @@
+
+ #include <openssl/asn1.h>
+ #include <openssl/bio.h>
++#include <openssl/bn.h>
+ #include <openssl/crypto.h>
+ #include <openssl/dh.h>
+ #include <openssl/err.h>
+diff --git a/folly/ssl/OpenSSLCertUtils.cpp b/folly/ssl/OpenSSLCertUtils.cpp
+index 544bb4f..423dd2c 100644
+--- a/folly/ssl/OpenSSLCertUtils.cpp
++++ b/folly/ssl/OpenSSLCertUtils.cpp
+@@ -155,12 +155,17 @@ folly::Optional<std::string> OpenSSLCertUtils::toString(X509& x509) {
+ }
+ }
+
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#define X509_get0_notAfter X509_get_notAfter
++#define X509_get0_notBefore X509_get_notBefore
++#endif
++
+ std::string OpenSSLCertUtils::getNotAfterTime(X509& x509) {
+- return getDateTimeStr(X509_get_notAfter(&x509));
++ return getDateTimeStr(X509_get0_notAfter(&x509));
+ }
+
+ std::string OpenSSLCertUtils::getNotBeforeTime(X509& x509) {
+- return getDateTimeStr(X509_get_notBefore(&x509));
++ return getDateTimeStr(X509_get0_notBefore(&x509));
+ }
+
+ std::string OpenSSLCertUtils::getDateTimeStr(const ASN1_TIME* time) {
+diff --git a/folly/ssl/OpenSSLVersionFinder.h b/folly/ssl/OpenSSLVersionFinder.h
+index d0110d7..9d65580 100644
+--- a/folly/ssl/OpenSSLVersionFinder.h
++++ b/folly/ssl/OpenSSLVersionFinder.h
+@@ -18,6 +18,12 @@
+ #include <folly/Conv.h>
+ #include <folly/portability/OpenSSL.h>
+
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#define OPENSSL_VERSION SSLEAY_VERSION
++#define OpenSSL_version SSLeay_version
++#define OpenSSL_version_num SSLeay
++#endif
++
+ // This is used to find the OpenSSL version at runtime. Just returning
+ // OPENSSL_VERSION_NUMBER is insufficient as runtime version may be different
+ // from the compile-time version
+@@ -25,7 +31,7 @@ namespace folly {
+ namespace ssl {
+ inline std::string getOpenSSLLongVersion() {
+ #ifdef OPENSSL_VERSION_TEXT
+- return SSLeay_version(SSLEAY_VERSION);
++ return OpenSSL_version(OPENSSL_VERSION);
+ #elif defined(OPENSSL_VERSION_NUMBER)
+ return folly::format("0x{:x}", OPENSSL_VERSION_NUMBER).str();
+ #else
+@@ -35,7 +41,7 @@ inline std::string getOpenSSLLongVersion() {
+
+ inline uint64_t getOpenSSLNumericVersion() {
+ #ifdef OPENSSL_VERSION_NUMBER
+- return SSLeay();
++ return OpenSSL_version_num();
+ #else
+ return 0;
+ #endif
+diff --git a/folly/ssl/detail/OpenSSLThreading.cpp b/folly/ssl/detail/OpenSSLThreading.cpp
+index 3414fbd..ce345ab 100644
+--- a/folly/ssl/detail/OpenSSLThreading.cpp
++++ b/folly/ssl/detail/OpenSSLThreading.cpp
+@@ -115,6 +115,7 @@ struct SSLLock {
+ // SSLContext runs in such environments.
+ // Instead of declaring a static member we "new" the static
+ // member so that it won't be destructed on exit().
++#if !FOLLY_SSL_DETAIL_OPENSSL_IS_110
+ static std::unique_ptr<SSLLock[]>& locks() {
+ static auto locksInst = new std::unique_ptr<SSLLock[]>();
+ return *locksInst;
+@@ -128,8 +129,8 @@ static void callbackLocking(int mode, int n, const char*, int) {
+ }
+ }
+
+-static unsigned long callbackThreadID() {
+- return static_cast<unsigned long>(folly::getCurrentThreadID());
++static void callbackThreadID(CRYPTO_THREADID *id) {
++ return CRYPTO_THREADID_set_numeric(id, folly::getCurrentThreadID());
+ }
+
+ static CRYPTO_dynlock_value* dyn_create(const char*, int) {
+@@ -150,28 +151,33 @@ dyn_lock(int mode, struct CRYPTO_dynlock_value* lock, const char*, int) {
+ static void dyn_destroy(struct CRYPTO_dynlock_value* lock, const char*, int) {
+ delete lock;
+ }
++#endif
+
+ void installThreadingLocks() {
++#if !FOLLY_SSL_DETAIL_OPENSSL_IS_110
+ // static locking
+ locks() = std::make_unique<SSLLock[]>(size_t(CRYPTO_num_locks()));
+ for (auto it : lockTypes()) {
+ locks()[size_t(it.first)].lockType = it.second;
+ }
+- CRYPTO_set_id_callback(callbackThreadID);
++ CRYPTO_THREADID_set_callback(callbackThreadID);
+ CRYPTO_set_locking_callback(callbackLocking);
+ // dynamic locking
+ CRYPTO_set_dynlock_create_callback(dyn_create);
+ CRYPTO_set_dynlock_lock_callback(dyn_lock);
+ CRYPTO_set_dynlock_destroy_callback(dyn_destroy);
++#endif
+ }
+
+ void cleanupThreadingLocks() {
+- CRYPTO_set_id_callback(nullptr);
++#if !FOLLY_SSL_DETAIL_OPENSSL_IS_110
++ CRYPTO_THREADID_set_callback(nullptr);
+ CRYPTO_set_locking_callback(nullptr);
+ CRYPTO_set_dynlock_create_callback(nullptr);
+ CRYPTO_set_dynlock_lock_callback(nullptr);
+ CRYPTO_set_dynlock_destroy_callback(nullptr);
+ locks().reset();
++#endif
+ }
+
+ } // namespace detail
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libfstrm
+PKG_VERSION:=0.5.0
+PKG_RELEASE=1
+
+PKG_SOURCE:=fstrm-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://dl.farsightsecurity.com/dist/fstrm/
+PKG_HASH:=10ee7792a86face1d2271dc591652ab8c7af6976883887c69fdb11f10da135fc
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/fstrm-$(PKG_VERSION)
+
+PKG_MAINTAINER:=James Taylor <james@jtaylor.id.au>
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_FIXUP:=autoreconf
+PKG_BUILD_PARALLEL:=1
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/libfstrm
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=This is fstrm, a C implementation of the Frame Streams data transport protocol.
+endef
+
+define Package/libfstrm/description
+ fstrm is an optimized C implementation of Frame Streams that includes a fast,
+ lockless circular queue implementation and exposes library interfaces for
+ setting up a dedicated Frame Streams I/O thread and asynchronously submitting
+ data frames for transport from worker threads. It was originally written to
+ facilitate the addition of high speed binary logging to DNS servers written
+ in C using the dnstap log format.
+endef
+
+CONFIGURE_ARGS+= \
+ --disable-programs
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/*.h $(1)/usr/include/
+
+ $(INSTALL_DIR) $(1)/usr/include/fstrm
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/fstrm/*.h $(1)/usr/include/fstrm/
+
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfstrm.{a,so*} $(1)/usr/lib/
+
+ $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libfstrm.pc $(1)/usr/lib/pkgconfig/
+endef
+
+define Package/libfstrm/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libfstrm.so* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,libfstrm))
PKG_NAME:=libftdi
PKG_VERSION:=0.20
-PKG_RELEASE:=4
+PKG_RELEASE:=5
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.intra2net.com/en/developer/libftdi/download/
The library is linked with your program in userspace, no kernel driver required.
endef
+CMAKE_OPTIONS += -DBoost_NO_BOOST_CMAKE=ON
+
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/
$(CP) $(PKG_INSTALL_DIR)/usr/include/ftdi.h $(1)/usr/include/
PKG_NAME:=libftdi1
PKG_VERSION:=1.4
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://www.intra2net.com/en/developer/libftdi/download/
PKG_INSTALL:=1
PKG_USE_MIPS16:=0
-CMAKE_OPTIONS:=-DBUILD_TESTS=OFF
-
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
read. Otherwise, you will still get the old values.
endef
+CMAKE_OPTIONS:= \
+ -DBUILD_TESTS=OFF \
+ -DBoost_NO_BOOST_CMAKE=ON
+
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/libftdi1/
$(CP) $(PKG_INSTALL_DIR)/usr/include/libftdi1/ftdi.h $(1)/usr/include/libftdi1/
include $(TOPDIR)/rules.mk
PKG_NAME:=libimobiledevice
-PKG_VERSION:=1.2.1
-PKG_RELEASE:=2
+PKG_SOURCE_DATE:=2019-02-16
+PKG_SOURCE_VERSION:=0584aa90c93ff6ce46927b8d67887cb987ab9545
+PKG_RELEASE:=1
-PKG_MAINTAINER:=Lukasz Baj <l.baj@radytek.com>
+PKG_MAINTAINER:=
PKG_LICENSE:=LGPL-2.1+
PKG_LICENSE_FILES:=COPYING.LESSER
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/libimobiledevice/libimobiledevice.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=13bf235cac2201747de11652cf14fe2714ca0718
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_MIRROR_HASH:=4e8892b27f20216f86d69b36ad2229fca87cdf0a10f8d3e145d01841a492562a
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_DATE).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/libimobiledevice/libimobiledevice/tar.gz/$(PKG_SOURCE_VERSION)?
+PKG_HASH:=286e294aad60ef04a39ce70512a0e816415167c982f3e6c2988d9a6b8c5ee29b
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_SOURCE_VERSION)
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
define Package/libimobiledevice/Default
TITLE:=A library that talks to Apple devices.
- URL:=http://www.libimobiledevice.org/
+ URL:=https://www.libimobiledevice.org/
endef
define Package/libimobiledevice/Default/description
This package contains the libimobiledevice utilities.
endef
-CONFIGURE_VARS += \
- libusbmuxd_CFLAGS="-I$(STAGING_DIR)/usr/include" \
- libusbmuxd_LIBS="-L$(STAGING_DIR)/usr/lib -lusbmuxd" \
- openssl_CFLAGS=" " \
- openssl_LIBS="-L$(STAGING_DIR)/usr/lib -lssl -lcrypto"
-
-CONFIGURE_ARGS += \
- --without-cython \
- --disable-largefile
-
-TARGET_LDFLAGS += -Wl,-rpath-link=$(STAGING_DIR)/usr/lib
+CONFIGURE_VARS += ac_cv_sys_file_offset_bits=64
+CONFIGURE_ARGS += --without-cython
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
--- /dev/null
+--- a/common/userpref.c
++++ b/common/userpref.c
+@@ -37,6 +37,7 @@
+ #include <unistd.h>
+ #include <usbmuxd.h>
+ #ifdef HAVE_OPENSSL
++#include <openssl/bn.h>
+ #include <openssl/pem.h>
+ #include <openssl/rsa.h>
+ #include <openssl/x509.h>
+@@ -73,6 +74,11 @@ const ASN1_ARRAY_TYPE pkcs1_asn1_tab[] = {
+ };
+ #endif
+
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#define X509_set1_notBefore X509_set_notBefore
++#define X509_set1_notAfter X509_set_notAfter
++#endif
++
+ #ifdef WIN32
+ #define DIR_SEP '\\'
+ #define DIR_SEP_S "\\"
+@@ -420,9 +426,9 @@ userpref_error_t pair_record_generate_keys_and_certs(plist_t pair_record, key_da
+ /* set key validity */
+ ASN1_TIME* asn1time = ASN1_TIME_new();
+ ASN1_TIME_set(asn1time, time(NULL));
+- X509_set_notBefore(root_cert, asn1time);
++ X509_set1_notBefore(root_cert, asn1time);
+ ASN1_TIME_set(asn1time, time(NULL) + (60 * 60 * 24 * 365 * 10));
+- X509_set_notAfter(root_cert, asn1time);
++ X509_set1_notAfter(root_cert, asn1time);
+ ASN1_TIME_free(asn1time);
+
+ /* use root public key for root cert */
+@@ -453,9 +459,9 @@ userpref_error_t pair_record_generate_keys_and_certs(plist_t pair_record, key_da
+ /* set key validity */
+ ASN1_TIME* asn1time = ASN1_TIME_new();
+ ASN1_TIME_set(asn1time, time(NULL));
+- X509_set_notBefore(host_cert, asn1time);
++ X509_set1_notBefore(host_cert, asn1time);
+ ASN1_TIME_set(asn1time, time(NULL) + (60 * 60 * 24 * 365 * 10));
+- X509_set_notAfter(host_cert, asn1time);
++ X509_set1_notAfter(host_cert, asn1time);
+ ASN1_TIME_free(asn1time);
+
+ /* use host public key for host cert */
+@@ -533,9 +539,9 @@ userpref_error_t pair_record_generate_keys_and_certs(plist_t pair_record, key_da
+
+ ASN1_TIME* asn1time = ASN1_TIME_new();
+ ASN1_TIME_set(asn1time, time(NULL));
+- X509_set_notBefore(dev_cert, asn1time);
++ X509_set1_notBefore(dev_cert, asn1time);
+ ASN1_TIME_set(asn1time, time(NULL) + (60 * 60 * 24 * 365 * 10));
+- X509_set_notAfter(dev_cert, asn1time);
++ X509_set1_notAfter(dev_cert, asn1time);
+ ASN1_TIME_free(asn1time);
+
+ EVP_PKEY* pkey = EVP_PKEY_new();
+--- a/src/idevice.c
++++ b/src/idevice.c
+@@ -36,6 +36,7 @@
+ #include <usbmuxd.h>
+ #ifdef HAVE_OPENSSL
+ #include <openssl/err.h>
++#include <openssl/rsa.h>
+ #include <openssl/ssl.h>
+
+ #else
+@@ -49,6 +50,10 @@
+
+ #ifdef HAVE_OPENSSL
+
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#define TLS_method TLSv1_method
++#endif
++
+ #if OPENSSL_VERSION_NUMBER < 0x10002000L
+ static void SSL_COMP_free_compression_methods(void)
+ {
+@@ -721,7 +726,7 @@ LIBIMOBILEDEVICE_API idevice_error_t idevice_connection_enable_ssl(idevice_conne
+ }
+ BIO_set_fd(ssl_bio, (int)(long)connection->data, BIO_NOCLOSE);
+
+- SSL_CTX *ssl_ctx = SSL_CTX_new(TLSv1_method());
++ SSL_CTX *ssl_ctx = SSL_CTX_new(TLS_method());
+ if (ssl_ctx == NULL) {
+ debug_info("ERROR: Could not create SSL context.");
+ BIO_free(ssl_bio);
define Package/libmraa
$(call Package/libmraa/Default)
TITLE:=Intel IoT lowlevel IO C/C++ library
- DEPENDS:=+libstdcpp +libjson-c
+ DEPENDS:=+libstdcpp +libjson-c @!arc @!armeb @!ppc
endef
define Package/libmraa/description
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libmstch
+PKG_VERSION:=1.0.2
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/no1msd/mstch/tar.gz/$(PKG_VERSION)?
+PKG_HASH:=811ed61400d4e9d4f9ae0f7679a2ffd590f0b3c06b16f2798e1f89ab917cba6c
+PKG_BUILD_DIR:=$(BUILD_DIR)/mstch-$(PKG_VERSION)
+HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/mstch-$(PKG_VERSION)
+
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+
+HOST_BUILD_DEPENDS:=boost boost/host
+
+PKG_BUILD_DEPENDS:=boost
+
+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
+
+$(eval $(call BuildPackage,libmstch))
+$(eval $(call HostBuild))
include $(TOPDIR)/rules.mk
PKG_NAME:=libndpi
-PKG_VERSION:=2.6
+PKG_VERSION:=2.8
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/ntop/nDPI/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=efdfb68940385b18079920330528978765dc2a90c8163d10f63301bddadbf91e
+PKG_HASH:=f98def4d0e43818317b20e2887ce500b2d6a5a9c8ddb28cf57ae51caae0f33cc
PKG_BUILD_DIR:=$(BUILD_DIR)/nDPI-$(PKG_VERSION)
PKG_MAINTAINER:=Banglang Huang <banglang.huang@foxmail.com>
PKG_LICENSE_FILES:=COPYING
PKG_FIXUP:=autoreconf
+PKG_REMOVE_FILES:=autogen.sh
PKG_BUILD_DEPENDS:=libpcap
PKG_BUILD_PARALLEL:=1
-PKG_INSTALL:=1
include $(INCLUDE_DIR)/uclibc++.mk
include $(INCLUDE_DIR)/package.mk
Based on OpenDPI it includes ntop extensions.
endef
-define Build/Configure
- ( cd $(PKG_BUILD_DIR); ./autogen.sh )
- $(call Build/Configure/Default)
+define Build/Prepare
+ $(PKG_UNPACK)
+ $(Build/Patch)
+ mv $(PKG_BUILD_DIR)/configure.seed $(PKG_BUILD_DIR)/configure.ac
+ $(SED) "s/@NDPI_MAJOR@/2/g" \
+ -e "s/@NDPI_MINOR@/8/g" \
+ -e "s/@NDPI_PATCH@/0/g" \
+ -e "s/@NDPI_VERSION_SHORT@/2.8.0/g" \
+ $(PKG_BUILD_DIR)/configure.ac
endef
define Build/InstallDev
- $(INSTALL_DIR) $(1)/usr/include/
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/local/include/ndpi \
- $(1)/usr/include/
+ $(INSTALL_DIR) $(1)/usr/include/ndpi
+ $(CP) $(PKG_BUILD_DIR)/src/include/*.h \
+ $(1)/usr/include/ndpi/
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/local/lib/libndpi.so* \
+ $(CP) $(PKG_BUILD_DIR)/src/lib/libndpi.so* \
$(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/libdata/pkgconfig/libndpi.pc \
+ $(CP) $(PKG_BUILD_DIR)/libndpi.pc \
$(1)/usr/lib/pkgconfig/
endef
define Package/libndpi/install
$(INSTALL_DIR) $(1)/usr/lib/
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/local/lib/libndpi.so* \
+ $(CP) $(PKG_BUILD_DIR)/src/lib/libndpi.so* \
$(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/bin/
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/local/bin/ndpiReader \
+ $(CP) $(PKG_BUILD_DIR)/example/ndpiReader \
$(1)/usr/bin/
endef
include $(TOPDIR)/rules.mk
PKG_NAME:=libp11
-PKG_VERSION:=0.4.9
-PKG_RELEASE:=2
+PKG_VERSION:=0.4.10
+PKG_RELEASE:=1
PKG_SOURCE_URL:=https://github.com/OpenSC/libp11/releases/download/$(PKG_NAME)-$(PKG_VERSION)/
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=9d1c76d74c21ca224f96204982097ebc6b956f645b2b0b5f9c502a20e9ffcfd8
+PKG_HASH:=639ea43c3341e267214b712e1e5e12397fd2d350899e673dd1220f3c6b8e3db4
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=LGPL-2.1+
--- a/src/Makefile.am
+++ b/src/Makefile.am
-@@ -49,13 +49,6 @@ pkcs11_la_LIBADD = $(libp11_la_OBJECTS) $(OPENSSL_LIBS)
+@@ -49,13 +49,6 @@ pkcs11_la_LIBADD = $(libp11_la_OBJECTS)
pkcs11_la_LDFLAGS = $(AM_LDFLAGS) -module -shared -shrext $(SHARED_EXT) \
-avoid-version -export-symbols "$(srcdir)/pkcs11.exports"
mylibdir=$(libdir)
--- a/src/Makefile.in
+++ b/src/Makefile.in
-@@ -872,7 +872,7 @@ distdir: $(DISTFILES)
+@@ -899,7 +899,7 @@ distdir-am: $(DISTFILES)
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) config.h
installdirs:
-@@ -944,7 +944,7 @@ install-dvi-am:
+@@ -988,7 +988,7 @@ install-dvi-am:
install-exec-am: install-enginesexecLTLIBRARIES install-libLTLIBRARIES
@$(NORMAL_INSTALL)
install-html: install-html-am
install-html-am:
-@@ -989,7 +989,7 @@ uninstall-am: uninstall-enginesexecLTLIBRARIES \
-
+@@ -1051,14 +1051,14 @@ uninstall-am: uninstall-enginesexecLTLIB
.MAKE: all check-am install-am install-exec-am install-strip
--.PHONY: CTAGS GTAGS TAGS all all-am check check-am check-local clean \
-+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
- clean-enginesexecLTLIBRARIES clean-generic \
+ .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am \
+- check-local clean clean-enginesexecLTLIBRARIES clean-generic \
++ clean clean-enginesexecLTLIBRARIES clean-generic \
clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
ctags-am distclean distclean-compile distclean-generic \
-@@ -997,7 +997,7 @@ uninstall-am: uninstall-enginesexecLTLIBRARIES \
+ distclean-hdr distclean-libtool distclean-tags distdir dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-dvi install-dvi-am \
install-enginesexecLTLIBRARIES install-exec install-exec-am \
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=librsocket-cpp
+PKG_SOURCE_DATE:=2019-05-08
+PKG_SOURCE_VERSION:=ddc80392b17a3fadcbea09f82ea5f6936f0fd459
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/rsocket/rsocket-cpp/tar.gz/$(PKG_SOURCE_VERSION)?
+PKG_HASH:=b9b5177be57f6cd23ff3592845b11209167f679b683cb73acbf351e7a3550a76
+PKG_BUILD_DIR:=$(BUILD_DIR)/rsocket-cpp-$(PKG_SOURCE_VERSION)
+
+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
+
+define Package/librsocket-cpp
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=C++ implementation of RSocket
+ DEPENDS:=+libfolly +gflags +glog +libopenssl +libyarpl
+endef
+
+define Package/libyarpl
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=yarpl: Yet Another Reactive Programming Library
+ DEPENDS:=+libfolly +gflags +glog +libatomic
+endef
+
+define Package/librsocket-cpp/description
+ C++ implementation of RSocket, and Application protocol providing Reactive Streams semantics
+endef
+
+define Package/libyarpl/description
+ C++ implementation of reactive functional programming including both Observable and Flowable types.
+endef
+
+define Package/librsocket-cpp/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libReactiveSocket.so* $(1)/usr/lib/
+endef
+
+define Package/libyarpl/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libyarpl*.so* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,librsocket-cpp))
+$(eval $(call BuildPackage,libyarpl))
--- /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
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -67,7 +67,6 @@
+ if (RSOCKET_ASAN)
+ set(ASAN_FLAGS -fsanitize=address,undefined)
+ endif ()
+- set(EXTRA_LINK_FLAGS ${EXTRA_LINK_FLAGS} -fuse-ld=gold)
+
+ elseif (${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
+ if (RSOCKET_ASAN)
include $(TOPDIR)/rules.mk
PKG_NAME:=libseccomp
-PKG_VERSION:=2.4.0
+PKG_VERSION:=2.4.1
PKG_RELEASE:=1
PKG_USE_MIPS16:=0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/seccomp/libseccomp/releases/download/v$(PKG_VERSION)/
-PKG_HASH:=2e74c7e8b54b340ad5d472e59286c6758e1e1e96c6b43c3dbdc8ddafbf0e525d
+PKG_HASH:=1ca3735249af66a1b2f762fe6e710fcc294ad7185f1cc961e5bd83f9988006e8
PKG_MAINTAINER:=Nikos Mavrogiannopoulos <nmav@gnutls.org>
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
+# This is done instead of DEPENDS:=@!arc to avoid a recursive dependency when
+# the library is conditionally selected by util/lxc.
+define Package/libseccomp/config
+ depends on !arc
+endef
define Package/libseccomp/Default
SUBMENU:=
define Package/libseccomp
$(call Package/libseccomp/Default)
TITLE+= (library)
- DEPENDS+=
endef
define Package/scmp_sys_resolver
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libsigar
+PKG_SOURCE_DATE:=2017-02-21
+PKG_SOURCE_VERSION:=a6c61edf8c64e013411e8c9d753165cd03102c6e
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_DATE).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/boundary/sigar/tar.gz/$(PKG_SOURCE_VERSION)?
+PKG_HASH:=5232f0fa994ab60ad4622364fad0297c0054e04f0cfec9c586b14e33bbc387da
+PKG_BUILD_DIR:=$(BUILD_DIR)/sigar-$(PKG_SOURCE_VERSION)
+
+PKG_LICENSE:=Apache-2.0
+PKG_LICENSE_FILE:=LICENSE
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+PKG_BUILD_PARALLEL:=1
+CMAKE_INSTALL:=1
+
+define Package/libsigar
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=System Information Gatherer And Reporter
+ URL:=https://github.com/boundary/sigar
+ DEPENDS:=+libtirpc
+ MAINTAINER:=Amol Bhave <ambhave@fb.com>
+endef
+
+define Package/libsigar/description
+ System Information Gatherer And Reporter
+endef
+
+define Package/libsigar/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsigar.so* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,libsigar))
PKG_NAME:=libssh
PKG_VERSION:=0.7.6
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://www.libssh.org/files/0.7/
--- /dev/null
+--- a/src/dh.c
++++ b/src/dh.c
+@@ -131,11 +131,15 @@ int ssh_get_random(void *where, int len, int strong){
+
+ return 1;
+ #elif defined HAVE_LIBCRYPTO
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ if (strong) {
+ return RAND_bytes(where,len);
+ } else {
+ return RAND_pseudo_bytes(where,len);
+ }
++#else
++ return RAND_bytes(where,len);
++#endif
+ #endif
+
+ /* never reached */
+@@ -198,7 +202,9 @@ int ssh_crypto_init(void) {
+ }
+ bignum_bin2bn(p_group14_value, P_GROUP14_LEN, p_group14);
+
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ OpenSSL_add_all_algorithms();
++#endif
+
+ #endif
+
+@@ -219,8 +225,10 @@ void ssh_crypto_finalize(void) {
+ #ifdef HAVE_LIBGCRYPT
+ gcry_control(GCRYCTL_TERM_SECMEM);
+ #elif defined HAVE_LIBCRYPTO
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ EVP_cleanup();
+ CRYPTO_cleanup_all_ex_data();
++#endif
+ #endif
+ ssh_crypto_initialized=0;
+ }
--- /dev/null
+--- a/src/threads.c
++++ b/src/threads.c
+@@ -106,6 +106,8 @@ static int libgcrypt_thread_init(void){
+
+ static void **libcrypto_mutexes;
+
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
++
+ static void libcrypto_lock_callback(int mode, int i, const char *file, int line){
+ (void)file;
+ (void)line;
+@@ -160,6 +162,16 @@ static void libcrypto_thread_finalize(void){
+
+ }
+
++#else
++
++static int libcrypto_thread_init(void){
++ return SSH_OK;
++}
++
++static void libcrypto_thread_finalize(void){
++}
++#endif
++
+ #endif
+
+ /** @internal
include $(TOPDIR)/rules.mk
PKG_NAME:=libusbmuxd
-PKG_VERSION:=1.1.0
-PKG_RELEASE:=2
+PKG_SOURCE_DATE:=2019-03-23
+PKG_SOURCE_VERSION:=873252dc8b4e469c7dc692064ac616104fca5f65
+PKG_RELEASE:=1
PKG_MAINTAINER:=Lukasz Baj <l.baj@radytek.com>
PKG_LICENSE:=LGPL-2.1+
PKG_LICENSE_FILES:=COPYING.LGPLv2.1
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/libimobiledevice/libusbmuxd.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=4397b3376dc4e4cb1c991d0aed61ce6482614196
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_MIRROR_HASH:=e145b567cdefb1d2536f3eec863769c77474ce9a5d9c4c81ab0a75dc6fe3056a
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_DATE).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/libimobiledevice/libusbmuxd/tar.gz/$(PKG_SOURCE_VERSION)?
+PKG_HASH:=47e39ce87b05ca873c16efaa517247aa9db137625dd910d566fb3cd99b4a1d18
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_SOURCE_VERSION)
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
define Package/libusbmuxd/Default
TITLE:=USB multiplexing daemon
- URL:=http://www.libimobiledevice.org/
+ URL:=https://www.libimobiledevice.org/
endef
define Package/libusbmuxd/Default/description
This package contains the libusbmuxd utilities.
endef
-TARGET_CFLAGS += $(FPIC)
+CONFIGURE_ARGS += --with-pic
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
include $(TOPDIR)/rules.mk
PKG_NAME:=libuwsc
-PKG_VERSION:=3.2.2
+PKG_VERSION:=3.3.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL=https://codeload.github.com/zhaojh329/libuwsc/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=824a29446ba12171f8f08778667c6b3a0528e18c249f0cf1f89b5f129cd2aadd
+PKG_SOURCE_URL=https://github.com/zhaojh329/libuwsc/releases/download/v$(PKG_VERSION)
+PKG_HASH:=0bfff3e11d075a125a4f4c486dd17f0cdfef546dd0581116578c0d41f0f121ee
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
PKG_MAINTAINER:=Jianhui Zhao <jianhuizhao329@gmail.com>
-PKG_LICENSE:=LGPL-2.1
+PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE
PKG_BUILD_PARALLEL:=1
CMAKE_INSTALL:=1
+PKG_CONFIG_DEPENDS:= \
+ CONFIG_LIBUWSC_openssl_LUA_BINDING \
+ CONFIG_LIBUWSC_wolfssl_LUA_BINDING \
+ CONFIG_LIBUWSC_mbedtls_LUA_BINDING \
+ CONFIG_LIBUWSC_nossl_LUA_BINDING
+
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
define Package/libuwsc/Default
- TITLE:=A lightweight WebSocket client library based on libev
SECTION:=libs
CATEGORY:=Libraries
SUBMENU:=Networking
+ TITLE:=A lightweight WebSocket client library based on libev
URL:=https://github.com/zhaojh329/libuwsc
DEPENDS:=+libev $(2)
VARIANT:=$(1)
Package/libuwsc-mbedtls=$(call Package/libuwsc/Default,mbedtls,+PACKAGE_libuwsc-mbedtls:libmbedtls)
Package/libuwsc-nossl=$(call Package/libuwsc/Default,nossl)
+define Package/libuwsc/config
+menu "Configuration"
+ depends on PACKAGE_libuwsc-$(1)
+
+config LIBUWSC_$(1)_LUA_BINDING
+ bool
+ default n
+ prompt "Lua binding for libuwsc"
+endmenu
+endef
+
+Package/libuwsc-openssl/config=$(call Package/libuwsc/config,openssl)
+Package/libuwsc-wolfssl/config=$(call Package/libuwsc/config,wolfssl)
+Package/libuwsc-mbedtls/config=$(call Package/libuwsc/config,mbedtls)
+Package/libuwsc-nossl/config=$(call Package/libuwsc/config,nossl)
+
ifeq ($(BUILD_VARIANT),openssl)
CMAKE_OPTIONS += -DUWSC_USE_OPENSSL=ON
else ifeq ($(BUILD_VARIANT),wolfssl)
CMAKE_OPTIONS += -DUWSC_SSL_SUPPORT=OFF
endif
+ifneq ($(CONFIG_LIBUWSC_$(BUILD_VARIANT)_LUA_BINDING),)
+ CMAKE_OPTIONS += -DUWSC_LUA_SUPPORT=ON
+endif
+
define Package/libuwsc-$(BUILD_VARIANT)/install
- $(INSTALL_DIR) $(1)/usr/lib/
+ $(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libuwsc.so* $(1)/usr/lib/
+ifneq ($(CONFIG_LIBUWSC_$(BUILD_VARIANT)_LUA_BINDING),)
+ $(INSTALL_DIR) $(1)/usr/lib/lua
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/lua/uwsc.so $(1)/usr/lib/lua
+endif
endef
$(eval $(call BuildPackage,libuwsc-openssl))
--- /dev/null
+Index: libuwsc-3.3.1/cmake/Modules/FindLua.cmake
+===================================================================
+--- /dev/null
++++ libuwsc-3.3.1/cmake/Modules/FindLua.cmake
+@@ -0,0 +1,18 @@
++# - Try to find lua
++# Once done this will define
++# LUA_FOUND - System has lua
++# LUA_INCLUDE_DIR - The lua include directories
++# LUA_LIBRARY - The libraries needed to use lua
++
++find_path(LUA_INCLUDE_DIR lua.h)
++find_library(LUA_LIBRARY lua)
++
++include(FindPackageHandleStandardArgs)
++# handle the QUIETLY and REQUIRED arguments and set LUA_FOUND to TRUE
++# if all listed variables are TRUE and the requested version matches.
++find_package_handle_standard_args(Lua REQUIRED_VARS
++ LUA_LIBRARY LUA_INCLUDE_DIR
++ VERSION_VAR LUA_VERSION)
++
++mark_as_advanced(LUA_INCLUDE_DIR LUA_LIBRARY)
++
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libwangle
+PKG_VERSION:=2019.05.06.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:=de145e3748a5f71be1883ad2ea4be37e99f99fcb1838a6a258ca2c4cd0d053e7
+PKG_BUILD_DIR:=$(BUILD_DIR)/wangle-$(PKG_VERSION)
+
+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
+
+define Package/libwangle
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=Wangle: C++ networking library
+ DEPENDS:=+libstdcpp +libfolly +libsodium +libfizz
+endef
+
+define Package/libwangle/description
+ Wangle is a framework providing a set of common client/server abstractions for building services in a consistent, modular, and composable way.
+ This package includes the shared library.
+endef
+
+define Package/libwangle/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libwangle.so* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,libwangle))
include $(TOPDIR)/rules.mk
PKG_NAME:=x264
-PKG_VERSION:=snapshot-20181006-2245
+PKG_VERSION:=snapshot-20190324-2245
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://download.videolan.org/x264/snapshots/
PKG_MAINTAINER:=Adrian Panella <ianchi74@outlook.com>
-PKG_HASH:=eae60e969958c0759554d5e338dea9b91f1f1fe85d9523c152c2259d8546f469
+PKG_HASH:=68010057edaadffc7593933d13084e8d32e041c42b17c089513d88c917f2ad54
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
-PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
-TARGET_CFLAGS:=$(filter-out -O%,$(TARGET_CFLAGS)) -std=gnu99 -fPIC -O3 -ffast-math -I.
-MAKE_FLAGS+= LD="$(TARGET_CC) -o"
+TARGET_CFLAGS:=$(filter-out -O%,$(TARGET_CFLAGS))
+MAKE_FLAGS:=$(filter-out LD=%,$(MAKE_FLAGS)) LD="$(TARGET_CC) -o"
-# ARM ASM depends on ARM1156 or later, blacklist earlier or incompatible cores
-# AMD Geode LX and i486 do not have SSE
-CPU_ASM_BLACKLIST:=geode i486 arm920t arm926ej-s arm1136j-s arm1176jzf-s fa526 mpcore xscale \
- 464fp mips32 24kc 34kc 74kc octeon mips64
+# Instead of blacklisting a boatload of platforms just enable
+# optimization where it makes sense (matters) ie ARMv7+ and x86_64
-ifneq ($(CONFIG_SOFT_FLOAT)$(findstring $(call qstrip,$(CONFIG_CPU_TYPE)),$(CPU_ASM_BLACKLIST)),)
- CONFIGURE_VARS+= AS=
- MAKE_FLAGS+= AS=
- CONFIGURE_ARGS += --disable-asm
-else
+ifneq ($(findstring cortex-a,$(CPU_TYPE)),)
CONFIGURE_ARGS += --enable-lto
-ifneq ($(CONFIG_TARGET_x86),)
-ifeq ($(CONFIG_NASM),y)
- CONFIGURE_VARS+= AS=nasm
- MAKE_FLAGS+= AS=nasm
-else
- CONFIGURE_VARS+= AS=
- MAKE_FLAGS+= AS=
- CONFIGURE_ARGS += --disable-asm
-endif
-endif
+ else
+ ifneq ($(CONFIG_TARGET_x86_64),)
+ CONFIGURE_ARGS += --enable-lto
+ ifeq ($(CONFIG_NASM),y)
+ CONFIGURE_VARS+= AS=nasm
+ MAKE_FLAGS+= AS=nasm
+ endif
+ else
+ CONFIGURE_ARGS += --disable-asm
+ endif
endif
CONFIGURE_ARGS += \
+ --disable-cli \
--enable-shared \
+ --disable-opencl \
--enable-pic \
- --enable-strip \
- --disable-cli \
--disable-avs \
--disable-ffms \
+ --disable-gpac \
--disable-lsmash
define Package/libx264
--- /dev/null
+From 66b120079fb21ed38cab0900c63360b0a7853eaa Mon Sep 17 00:00:00 2001
+From: Christopher Larson <chris_larson@mentor.com>
+Date: Tue, 13 Dec 2016 14:22:32 -0700
+Subject: [PATCH] Fix X32 build by disabling asm
+
+This applies gentoo's x32 patch, adjusted slightly, which disables asm support
+for x32 as well as correcting -m.
+
+Debian has a different patch which does the same, and there's a superior yet
+out of date patch series on the x264 list which keeps asm support enabled, but
+doesn't successfully build at this time, and my assembly is very rusty.
+
+Upstream-Status: Pending
+Signed-off-by: Christopher Larson <chris_larson@mentor.com>
+---
+ configure | 14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+--- a/configure
++++ b/configure
+@@ -736,7 +736,13 @@ case $host_cpu in
+ AS_EXT=".asm"
+ ASFLAGS="$ASFLAGS -DARCH_X86_64=1 -I\$(SRCPATH)/common/x86/"
+ stack_alignment=16
+- [ $compiler = GNU ] && CFLAGS="-m64 $CFLAGS" && LDFLAGS="-m64 $LDFLAGS"
++ if [ $compiler = GNU ]; then
++ if cpp_check "" "" "__ILP32__" ; then
++ CFLAGS="-mx32 $CFLAGS" && LDFLAGS="-mx32 $LDFLAGS"
++ else
++ CFLAGS="-m64 $CFLAGS" && LDFLAGS="-m64 $LDFLAGS"
++ fi
++ fi
+ if [ "$SYS" = MACOSX ]; then
+ ASFLAGS="$ASFLAGS -f macho64 -DPREFIX"
+ if cc_check '' "-arch x86_64"; then
+@@ -755,7 +761,11 @@ case $host_cpu in
+ RCFLAGS="--target=pe-x86-64 $RCFLAGS"
+ fi
+ else
+- ASFLAGS="$ASFLAGS -f elf64"
++ if cpp_check "" "" "__ILP32__" ; then
++ asm=no
++ else
++ ASFLAGS="$ASFLAGS -f elf64"
++ fi
+ fi
+ ;;
+ powerpc*)
--- /dev/null
+From a72bf499a0674fc75eedf15008b424e28f67e4bd Mon Sep 17 00:00:00 2001
+From: Andrei Gherzan <andrei@gherzan.ro>
+Date: Fri, 2 Feb 2018 15:10:08 +0200
+Subject: [PATCH] dont default to cortex-a9 with neon
+
+-march flag is not in CFLAGS so this will always default to
+ -mcpu=cortex-a8 -mfpu=neon.
+
+Upstream-Status: Pending
+
+Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
+Signed-off-by: Maxin B. John <maxin.john@intel.com>
+---
+ configure | 3 ---
+ 1 file changed, 3 deletions(-)
+
+--- a/configure
++++ b/configure
+@@ -940,9 +940,6 @@ if [ $asm = auto -a \( $ARCH = X86 -o $A
+ fi
+
+ if [ $asm = auto -a $ARCH = ARM ] ; then
+- # set flags so neon is built by default
+- [ $compiler == CL ] || echo $CFLAGS | grep -Eq '(-mcpu|-march|-mfpu)' || CFLAGS="$CFLAGS -mcpu=cortex-a8 -mfpu=neon"
+-
+ cc_check '' '' '__asm__("add r0, r1, r2");' && define HAVE_ARM_INLINE_ASM
+ if [ $compiler = CL ] && cpp_check '' '' 'defined(_M_ARM) && _M_ARM >= 7' ; then
+ define HAVE_ARMV6
PKG_NAME:=xerces-c
PKG_VERSION:=3.2.2
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@APACHE/xerces/c/3/sources
PKG_HASH:=6daca3b23364d8d883dc77a73f681242f69389e3564543287ed3d073007e0a8e
-PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
+PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
--enable-msgloader-inmemory \
--enable-netaccessor-socket \
--enable-transcoder-iconv \
- --without-pic
+ --with-pic
-TARGET_CFLAGS += $(FPIC)
TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed
define Build/InstallDev
PKG_NAME:=loudmouth
PKG_VERSION:=1.5.3
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/mcabber/loudmouth/tar.gz/$(PKG_VERSION)?
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
define Package/loudmouth
SECTION:=libs
include $(TOPDIR)/rules.mk
PKG_NAME:=measurement-kit
-PKG_VERSION:=0.10.1
+PKG_VERSION:=0.10.3
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:=4caf856ebbb28633c7593a9b5b8ee79f0c0436d05ae7391cc59e8d72b260911a
+PKG_HASH:=04bc1832fbaa54a9fde4923e8f44a2f99610a862c228dd05977c36f54870d80f
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;
+ }
+ });
include $(TOPDIR)/rules.mk
PKG_NAME:=nss
-PKG_VERSION:=3.43
-PKG_RELEASE:=2
+PKG_VERSION:=3.44
+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:=f30bc1b7330887b75de9fec37dbc173001758dc43fb095ffbc45dac4093fe2ca
+PKG_HASH:=a5620e59b6eeedfd5a12c9298b50ad92e9898b223e214eb675e36f4ffb5b6aff
PKG_BUILD_PARALLEL:=0
include $(TOPDIR)/rules.mk
PKG_NAME:=pcre
-PKG_VERSION:=8.42
-PKG_RELEASE:=2
+PKG_VERSION:=8.43
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@SF/$(PKG_NAME)
-PKG_HASH:=2cd04b7c887808be030254e8d77de11d3fe9d4505c39d4b15d2664ffe8bf9301
+PKG_HASH:=91e762520003013834ac1adb4a938d53b22a216341c061b0cf05603b290faf6b
PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
PKG_LICENSE:=BSD-3-Clause
PKG_NAME:=quasselc
PKG_SOURCE_DATE:=2017-01-11
PKG_SOURCE_VERSION:=a0a1e6bd87d3eac68b5369972d1c2035cfe47e94
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_DATE).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/phhusson/QuasselC/tar.gz/$(PKG_SOURCE_VERSION)?
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
MAKE_FLAGS += prefix=$(STAGING_DIR)/usr libdir=$(STAGING_DIR)/usr/lib includedir=$(STAGING_DIR)/usr/include
MAKE_INSTALL_FLAGS += prefix=/usr libdir=/usr/lib includedir=/usr/include
include $(TOPDIR)/rules.mk
PKG_NAME:=dovecot
-PKG_VERSION:=2.3.5.2
+PKG_VERSION:=2.3.6
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.dovecot.org/releases/2.3
-PKG_HASH:=ba14e41aefd81a868a35b83bcb54194116106424d37690519b50ea83c0f31bf2
-PKG_LICENSE:=LGPL-2.1 MIT BSD-3-Clause Unique
+PKG_HASH:=ed1d8dc1beeae9c6c73deac73a62ef19fe9262fbffd86604a3f690452f5536c7
+PKG_LICENSE:=LGPL-2.1-only MIT BSD-3-Clause
PKG_LICENSE_FILES:=COPYING COPYING.LGPL COPYING.MIT
PKG_MAINTAINER:=Lucian Cristian <lucian.cristian@gmail.com>
--without-lzma \
--without-lz4 \
--without-sodium \
+ --without-docs \
$(if $(CONFIG_DOVECOT_GSSAPI),--with-gssapi=yes,--with-gssapi=no) \
$(if $(CONFIG_DOVECOT_LDAP),--with-ldap=yes,--with-ldap=no) \
$(if $(CONFIG_DOVECOT_MYSQL),--with-mysql=yes,--with-mysql=no) \
define Package/dovecot/install
$(INSTALL_DIR) $(1)/etc/init.d \
$(1)/etc/dovecot \
- $(1)/usr/share/doc/dovecot \
$(1)/usr/lib/dovecot \
$(1)/usr/libexec/dovecot \
$(1)/usr/bin \
$(1)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/etc/dovecot/* $(1)/etc/dovecot/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/dovecot/* $(1)/usr/lib/dovecot/
$(CP) $(PKG_INSTALL_DIR)/usr/libexec/dovecot/* $(1)/usr/libexec/dovecot/
- $(CP) $(PKG_INSTALL_DIR)/usr/share/doc/dovecot/example-config $(1)/usr/share/doc/dovecot/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/doveconf $(1)/usr/bin/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/* $(1)/usr/sbin/
$(INSTALL_BIN) ./files/dovecot.init $(1)/etc/init.d/dovecot
PKG_NAME:=msmtp
PKG_VERSION:=1.8.4
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://marlam.de/msmtp/releases
--without-macosx-keyring \
--without-msmtpd
-ifneq ($(CONFIG_USE_UCLIBC),)
- CONFIGURE_ARGS += --disable-gai-idn
-endif
-
ifeq ($(BUILD_VARIANT),ssl)
CONFIGURE_ARGS += --with-tls=gnutls
else
include $(TOPDIR)/rules.mk
PKG_NAME:=postfix
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_VERSION:=3.4.4
PKG_SOURCE_URL:= \
https://cdn.postfix.johnriley.me/mirrors/postfix-release/official/ \
--- /dev/null
+From 4fe5b1f216f1643080299bdb35e07f07b9c2caae Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Thu, 2 May 2019 22:28:57 -0700
+Subject: [PATCH] dns_lookup: Fix compilation with uClibc-ng
+
+uClibc-ng does not have res_send or res_nsend. ifdef the entire function.
+---
+ src/dns/dns_lookup.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/dns/dns_lookup.c b/src/dns/dns_lookup.c
+index 1ea98b3..d7771d4 100644
+--- a/src/dns/dns_lookup.c
++++ b/src/dns/dns_lookup.c
+@@ -311,6 +311,10 @@ typedef struct DNS_REPLY {
+ static int dns_res_query(const char *name, int class, int type,
+ unsigned char *answer, int anslen)
+ {
++#ifdef __UCLIBC__
++ msg_info("dns_res_query() is not supported under uClibc");
++ return 0;
++#else
+ unsigned char msg_buf[MAX_DNS_QUERY_SIZE];
+ HEADER *reply_header = (HEADER *) answer;
+ int len;
+@@ -369,6 +373,7 @@ static int dns_res_query(const char *name, int class, int type,
+ }
+ return (len);
+ }
++#endif
+ }
+
+ /* dns_res_search - res_search() that can return negative replies */
+--
+2.17.1
+
PKG_NAME:=tvheadend
PKG_VERSION:=4.0.10
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/tvheadend/tvheadend/tar.gz/v$(PKG_VERSION)?
--disable-libav \
--enable-bundle
-TARGET_CFLAGS += -Wno-error=pointer-compare
-
define Build/Prepare
$(call Build/Prepare/Default)
echo 'Tvheadend $(shell echo $(PKG_SOURCE_VERSION) | sed "s/^v//")~openwrt$(PKG_RELEASE)' \
--- /dev/null
+diff --git a/Makefile b/Makefile
+index 8c5e380..baef144 100644
+--- a/Makefile
++++ b/Makefile
+@@ -28,7 +28,7 @@ PROG := $(BUILDDIR)/tvheadend
+ #
+
+ CFLAGS += -g -O2 -Wunused-result
+-CFLAGS += -Wall -Werror -Wwrite-strings -Wno-deprecated-declarations
++#CFLAGS += -Wall -Werror -Wwrite-strings -Wno-deprecated-declarations
+ CFLAGS += -Wmissing-prototypes
+ CFLAGS += -fms-extensions -funsigned-char -fno-strict-aliasing
+ CFLAGS += -D_FILE_OFFSET_BITS=64
include $(TOPDIR)/rules.mk
PKG_NAME:=youtube-dl
-PKG_VERSION:=2019.4.30
+PKG_VERSION:=2019.5.11
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:=31844229a4f4d7003e03ab309ff2caff1b16ce0acbd3cfb7a13276058af13056
+PKG_HASH:=fe71aa725dc0f86deacdcc91f38492317d53b0ca8ec0f8bddc9961c205b4fea4
PKG_BUILD_DIR:=$(BUILD_DIR)/youtube_dl-$(PKG_VERSION)
include $(TOPDIR)/rules.mk
PKG_NAME:=banip
-PKG_VERSION:=0.1.0
+PKG_VERSION:=0.1.1
PKG_RELEASE:=1
PKG_LICENSE:=GPL-3.0+
PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
config banip 'extra'
option ban_debug '0'
option ban_backup '0'
- option ban_maxqueue '8'
+ option ban_maxqueue '4'
config source 'whitelist'
option ban_src '/etc/banip/banip.whitelist'
#
LC_ALL=C
PATH="/usr/sbin:/usr/bin:/sbin:/bin"
-ban_ver="0.1.0"
+ban_ver="0.1.1"
ban_sysver="unknown"
ban_enabled=0
ban_automatic="1"
ban_backup=0
ban_backupboot=0
ban_backupdir="/mnt"
-ban_maxqueue=8
+ban_maxqueue=4
ban_fetchutil="uclient-fetch"
ban_ip="$(command -v ip)"
ban_ipt="$(command -v iptables)"
rc="$("${ban_ipt6}" "${timeout}" -C ${rule} 2>/dev/null; printf '%u' ${?})"
if ([ ${rc} -ne 0 ] && ([ "${action}" = "-A" ] || [ "${action}" = "-I" ])) \
- || ([ ${rc} -eq 0 ] && [ "${action}" = "-D" ])
+ || ([ ${rc} -eq 0 ] && [ "${action}" = "-D" ])
then
"${ban_ipt6}" "${timeout}" "${action}" ${rule}
fi
rc="$("${ban_ipt}" "${timeout}" -C ${rule} 2>/dev/null; printf '%u' ${?})"
if ([ ${rc} -ne 0 ] && ([ "${action}" = "-A" ] || [ "${action}" = "-I" ])) \
- || ([ ${rc} -eq 0 ] && [ "${action}" = "-D" ])
+ || ([ ${rc} -eq 0 ] && [ "${action}" = "-D" ])
then
"${ban_ipt}" "${timeout}" "${action}" ${rule}
fi
if [ ${ban_rc} -eq 0 ]
then
- awk "${src_rset}" "${tmp_load}" 2>/dev/null | sort -u > "${tmp_file}"
+ awk "${src_rset}" "${tmp_load}" 2>/dev/null > "${tmp_file}"
ban_rc=${?}
if [ ${ban_rc} -eq 0 ]
then
include $(TOPDIR)/rules.mk
PKG_NAME:=chrony
-PKG_VERSION:=3.4
+PKG_VERSION:=3.5
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://download.tuxfamily.org/chrony/
-PKG_HASH:=af77e47c2610a7e55c8af5b89a8aeff52d9a867dd5983d848b52d374bc0e6b9f
+PKG_HASH:=4e02795b1260a4ec51e6ace84149036305cc9fc340e65edb9f8452aa611339b5
PKG_MAINTAINER:=Miroslav Lichvar <mlichvar0@gmail.com>
PKG_LICENSE:=GPL-2.0
+++ /dev/null
-diff --git a/sysincl.h b/sysincl.h
-index a9e4da0..e2a6e78 100644
---- a/sysincl.h
-+++ b/sysincl.h
-@@ -80,4 +80,8 @@
- #include <sys/random.h>
- #endif
-
-+#if defined(LINUX) && !defined(IP_FREEBIND)
-+#define IP_FREEBIND 15
-+#endif
-+
- #endif /* GOT_SYSINCL_H */
+++ /dev/null
---- a/hash_intmd5.c
-+++ b/hash_intmd5.c
-@@ -29,6 +29,7 @@
- #include "sysincl.h"
- #include "hash.h"
- #include "memory.h"
-+#include "util.h"
-
- #include "md5.c"
-
PKG_NAME:=freeradius3
PKG_VERSION:=release_3_0_19
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/FreeRADIUS/freeradius-server/archive
TITLE:=Radius PostgreSQL back-end drivers
endef
-define Package/freeradius3-mod-sql-mysql/conffiles
+define Package/freeradius3-mod-sql-postgresql/conffiles
/etc/freeradius3/mods-config/sql/main/postgresql
endef
TITLE:=Radius SQLite back-end drivers
endef
-define Package/freeradius3-mod-sql-mysql/conffiles
+define Package/freeradius3-mod-sql-sqlite/conffiles
/etc/freeradius3/mods-config/sql/main/sqlite
endef
include $(TOPDIR)/rules.mk
-PKG_LICENSE:=ASL-2.0
-PKG_MAINTAINER:=Mislav Novakovic <mislav.novakovic@sartura.hr>
-
PKG_NAME:=go-ethereum
-PKG_VERSION:=1.8.21
-PKG_RELEASE:=1
+PKG_VERSION:=1.8.27
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/ethereum/go-ethereum/tar.gz/v${PKG_VERSION}?
-PKG_HASH:=736028b4babd44d67a70a4a7883a06e97263449805c8c067b7dfd77e9fa94299
+PKG_HASH:=45d264106991d0e2a4c34ac5d6539fc9460c768fc70588ea38a25f467039ece8
+
+PKG_MAINTAINER:=Mislav Novakovic <mislav.novakovic@sartura.hr>
+PKG_LICENSE:=GPL-3 LGPL-3
+PKG_LICENSE_FILES:=COPYING COPYING.LESSER
PKG_BUILD_DEPENDS:=golang/host
PKG_BUILD_PARALLEL:=1
--- /dev/null
+From 39bd2609ca730b3b628003b3f938aed7d49132ab Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= <peterke@gmail.com>
+Date: Thu, 28 Feb 2019 14:53:44 +0200
+Subject: [PATCH] crypto/bn256/cloudflare: pull in upstream fix for Go 1.12 R18
+
+---
+ crypto/bn256/cloudflare/mul_arm64.h | 32 ++++++++++++++---------------
+ 1 file changed, 16 insertions(+), 16 deletions(-)
+
+diff --git a/crypto/bn256/cloudflare/mul_arm64.h b/crypto/bn256/cloudflare/mul_arm64.h
+index 75d52217311..d405eb8f728 100644
+--- a/crypto/bn256/cloudflare/mul_arm64.h
++++ b/crypto/bn256/cloudflare/mul_arm64.h
+@@ -12,7 +12,7 @@
+ UMULH R1, R8, c4 \
+ ADCS ZR, c4 \
+ \
+- MUL R2, R5, R25 \
++ MUL R2, R5, R1 \
+ UMULH R2, R5, R26 \
+ MUL R2, R6, R0 \
+ ADDS R0, R26 \
+@@ -24,13 +24,13 @@
+ ADCS R0, R29 \
+ UMULH R2, R8, c5 \
+ ADCS ZR, c5 \
+- ADDS R25, c1 \
++ ADDS R1, c1 \
+ ADCS R26, c2 \
+ ADCS R27, c3 \
+ ADCS R29, c4 \
+ ADCS ZR, c5 \
+ \
+- MUL R3, R5, R25 \
++ MUL R3, R5, R1 \
+ UMULH R3, R5, R26 \
+ MUL R3, R6, R0 \
+ ADDS R0, R26 \
+@@ -42,13 +42,13 @@
+ ADCS R0, R29 \
+ UMULH R3, R8, c6 \
+ ADCS ZR, c6 \
+- ADDS R25, c2 \
++ ADDS R1, c2 \
+ ADCS R26, c3 \
+ ADCS R27, c4 \
+ ADCS R29, c5 \
+ ADCS ZR, c6 \
+ \
+- MUL R4, R5, R25 \
++ MUL R4, R5, R1 \
+ UMULH R4, R5, R26 \
+ MUL R4, R6, R0 \
+ ADDS R0, R26 \
+@@ -60,7 +60,7 @@
+ ADCS R0, R29 \
+ UMULH R4, R8, c7 \
+ ADCS ZR, c7 \
+- ADDS R25, c3 \
++ ADDS R1, c3 \
+ ADCS R26, c4 \
+ ADCS R27, c5 \
+ ADCS R29, c6 \
+@@ -69,15 +69,15 @@
+ #define gfpReduce() \
+ \ // m = (T * N') mod R, store m in R1:R2:R3:R4
+ MOVD ·np+0(SB), R17 \
+- MOVD ·np+8(SB), R18 \
++ MOVD ·np+8(SB), R25 \
+ MOVD ·np+16(SB), R19 \
+ MOVD ·np+24(SB), R20 \
+ \
+ MUL R9, R17, R1 \
+ UMULH R9, R17, R2 \
+- MUL R9, R18, R0 \
++ MUL R9, R25, R0 \
+ ADDS R0, R2 \
+- UMULH R9, R18, R3 \
++ UMULH R9, R25, R3 \
+ MUL R9, R19, R0 \
+ ADCS R0, R3 \
+ UMULH R9, R19, R4 \
+@@ -86,9 +86,9 @@
+ \
+ MUL R10, R17, R21 \
+ UMULH R10, R17, R22 \
+- MUL R10, R18, R0 \
++ MUL R10, R25, R0 \
+ ADDS R0, R22 \
+- UMULH R10, R18, R23 \
++ UMULH R10, R25, R23 \
+ MUL R10, R19, R0 \
+ ADCS R0, R23 \
+ ADDS R21, R2 \
+@@ -97,7 +97,7 @@
+ \
+ MUL R11, R17, R21 \
+ UMULH R11, R17, R22 \
+- MUL R11, R18, R0 \
++ MUL R11, R25, R0 \
+ ADDS R0, R22 \
+ ADDS R21, R3 \
+ ADCS R22, R4 \
+@@ -107,19 +107,19 @@
+ \
+ \ // m * N
+ loadModulus(R5,R6,R7,R8) \
+- mul(R17,R18,R19,R20,R21,R22,R23,R24) \
++ mul(R17,R25,R19,R20,R21,R22,R23,R24) \
+ \
+ \ // Add the 512-bit intermediate to m*N
+- MOVD ZR, R25 \
++ MOVD ZR, R0 \
+ ADDS R9, R17 \
+- ADCS R10, R18 \
++ ADCS R10, R25 \
+ ADCS R11, R19 \
+ ADCS R12, R20 \
+ ADCS R13, R21 \
+ ADCS R14, R22 \
+ ADCS R15, R23 \
+ ADCS R16, R24 \
+- ADCS ZR, R25 \
++ ADCS ZR, R0 \
+ \
+ \ // Our output is R21:R22:R23:R24. Reduce mod p if necessary.
+ SUBS R5, R21, R10 \
PKG_NAME:=gnunet
-PKG_VERSION:=0.11.3
+PKG_VERSION:=0.11.4
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@GNU/gnunet
-PKG_HASH:=2405db9232ae6ded57e7ff513abdf810c65e3861823b3985717ce990b8d87a37
+PKG_HASH:=7afeb638bd8b5a33c6b8dab24b90c5d7467439adc79794ff33218e9180f8b01b
PKG_LICENSE:=AGPL-3.0
PKG_LICENSE_FILES:=COPYING
DEPENDS_transport-http_server:=+libmicrohttpd-ssl
PLUGIN_transport-http_server:=transport_http_server transport_https_server
-BIN_transport-http_server:=transport-certificate-creation
PLUGIN_transport-tcp:=transport_tcp
DEPENDS_gns:=+gnunet-vpn +iptables-mod-extra
USERID_gns:=gnunet=958:gnunetdns=452
-BIN_gns:=gns gns-import.sh gns-proxy-setup-ca namecache namestore resolver zoneimport
+BIN_gns:=gns gns-import.sh namecache namestore resolver zoneimport
LIB_gns:=gns gnsrecord namecache namestore
PLUGIN_gns:=block_dns block_gns gnsrecord_conversation gnsrecord_dns gnsrecord_gns
LIBEXEC_gns:=dns2gns helper-dns service-dns service-gns service-namecache service-namestore service-resolver service-zonemaster
LIB_reclaim:=consensus credential abe reclaim reclaimattribute secretsharing
LIBEXEC_reclaim:=service-consensus service-credential service-reclaim service-secretsharing
CONF_reclaim:=consensus credential reclaim secretsharing
-PLUGIN_reclaim:=block_consensus gnsrecord_credential gnsrecord_reclaim reclaim_attribute_gnuid reclaim_sqlite
+PLUGIN_reclaim:=block_consensus gnsrecord_credential gnsrecord_reclaim reclaim_attribute_gnuid
DEPENDS_rest:=+gnunet-gns +gnunet-reclaim +libmicrohttpd-ssl +jansson
LIB_rest:=rest json
+++ /dev/null
-diff --git a/src/abe/Makefile.am b/src/abe/Makefile.am
-index 23a7ae68e..cccd3ccb0 100644
---- a/src/abe/Makefile.am
-+++ b/src/abe/Makefile.am
-@@ -20,6 +20,8 @@ libgnunetabe_la_LIBADD = \
- $(LTLIBICONV) \
- $(LTLIBINTL) \
- $(ABE_LIBADD) \
-+ $(top_builddir)/src/util/libgnunetutil.la \
-+ -lgmp \
- -lgabe \
- -lpbc \
- -lglib-2.0 \
-diff --git a/src/reclaim/Makefile.am b/src/reclaim/Makefile.am
-index 13918508e..be50cce26 100644
---- a/src/reclaim/Makefile.am
-+++ b/src/reclaim/Makefile.am
-@@ -99,6 +99,7 @@ libgnunet_plugin_reclaim_sqlite_la_LIBADD = \
- libgnunetreclaim.la \
- $(top_builddir)/src/sq/libgnunetsq.la \
- $(top_builddir)/src/statistics/libgnunetstatistics.la \
-+ $(top_builddir)/src/reclaim-attribute/libgnunetreclaimattribute.la \
- $(top_builddir)/src/util/libgnunetutil.la $(XLIBS) -lsqlite3 \
- $(LTLIBINTL)
- libgnunet_plugin_reclaim_sqlite_la_LDFLAGS = \
-@@ -126,6 +127,7 @@ libgnunetreclaim_la_SOURCES = \
- reclaim.h
- libgnunetreclaim_la_LIBADD = \
- $(top_builddir)/src/util/libgnunetutil.la \
-+ $(top_builddir)/src/reclaim-attribute/libgnunetreclaimattribute.la \
- $(GN_LIBINTL) $(XLIB)
- libgnunetreclaim_la_LDFLAGS = \
- $(GN_LIB_LDFLAGS) $(WINFLAGS) \
include $(TOPDIR)/rules.mk
PKG_NAME:=gnurl
-PKG_VERSION:=7.64.0
+PKG_VERSION:=7.64.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:=68b68a1be6a04f514a863eaac0d6b89f935833aff4e60bc2bcac472a465c755f
+PKG_HASH:=8ea67d505e2576f00d8a09485e6c04396af75388c17d77087a140f05e0ca2a96
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=COPYING
PKG_NAME:=ibrdtnd
PKG_VERSION:=1.0.1
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.ibr.cs.tu-bs.de/projects/ibr-dtn/releases
--- /dev/null
+--- a/src/routing/SchedulingBundleIndex.cpp
++++ b/src/routing/SchedulingBundleIndex.cpp
+@@ -28,7 +28,7 @@ namespace dtn
+ void SchedulingBundleIndex::remove(const dtn::data::BundleID &id)
+ {
+ ibrcommon::MutexLock l(_index_mutex);
+- for (priority_index::const_iterator iter = _priority_index.begin(); iter != _priority_index.end(); ++iter)
++ for (priority_index::iterator iter = _priority_index.begin(); iter != _priority_index.end(); ++iter)
+ {
+ const dtn::data::MetaBundle &b = (*iter);
+ if (id == (const dtn::data::BundleID&)b) {
+--- a/src/storage/MemoryBundleStorage.cpp
++++ b/src/storage/MemoryBundleStorage.cpp
+@@ -217,7 +217,7 @@ namespace dtn
+ ibrcommon::MutexLock l(_bundleslock);
+
+ // search for the bundle in the bundle list
+- const bundle_list::const_iterator iter = find(_bundles.begin(), _bundles.end(), id);
++ const bundle_list::iterator iter = find(_bundles.begin(), _bundles.end(), id);
+
+ // if no bundle was found throw an exception
+ if (iter == _bundles.end()) throw NoBundleFoundException();
+--- a/src/storage/MetaStorage.cpp
++++ b/src/storage/MetaStorage.cpp
+@@ -66,7 +66,7 @@ namespace dtn
+ {
+ std::set<dtn::data::EID> ret;
+
+- for (dtn::data::BundleList::const_iterator iter = begin(); iter != end(); ++iter)
++ for (const_iterator iter = begin(); iter != end(); ++iter)
+ {
+ const dtn::data::MetaBundle &bundle = (*iter);
+
--- /dev/null
+--- a/src/security/SecurityCertificateManager.cpp
++++ b/src/security/SecurityCertificateManager.cpp
+@@ -23,6 +23,7 @@
+ #include "Configuration.h"
+
+ #include <cstdlib>
++#include <cstring>
+
+ #include <ibrcommon/Logger.h>
+ #include <ibrcommon/ssl/TLSStream.h>
+--- a/src/security/SecurityManager.cpp
++++ b/src/security/SecurityManager.cpp
+@@ -28,6 +28,7 @@
+ #include <ibrdtn/security/PayloadConfidentialBlock.h>
+ #include <ibrdtn/security/ExtensionSecurityBlock.h>
+ #include <ibrcommon/Logger.h>
++#include <cstring>
+
+ #ifdef __DEVELOPMENT_ASSERTIONS__
+ #include <cassert>
PKG_NAME:=iodine
PKG_VERSION:=0.7.0
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://code.kryo.se/iodine/
/* daemon(3) exists only in 4.4BSD or later, and in GNU libc */
-#if !defined(ANDROID) && !defined(WINDOWS32) && !(defined(BSD) && (BSD >= 199306)) && !defined(__GLIBC__)
-+#ifdef __UCLIBC__
++#ifdef __NO_DAEMON__
static int daemon(int nochdir, int noclose)
{
int fd, i;
include $(TOPDIR)/rules.mk
PKG_NAME:=keepalived
-PKG_VERSION:=2.0.15
+PKG_VERSION:=2.0.16
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.keepalived.org/software
-PKG_HASH:=933ee01bc6346aa573453b998f87510d3cce4aba4537c9642b24e6dbfba5c6f4
+PKG_HASH:=f0c7dc86147a286913c1c2c918f557735016285d25779d4d2fce5732fcb888df
PKG_CPE_ID:=cpe:/a:keepalived:keepalived
PKG_LICENSE:=GPL-2.0+
PKG_NAME:=linuxptp
PKG_VERSION:=2.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
-PKG_MAINTAINER:=Wojciech Dubowik <Wojciech.Dubowik@neratec.com>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
PKG_SOURCE_URL:=@SF/$(PKG_NAME)/v$(PKG_VERSION)
PKG_HASH:=0a24d9401e87d4af023d201e234d91127d82c350daad93432106284aa9459c7d
+PKG_MAINTAINER:=Wojciech Dubowik <Wojciech.Dubowik@neratec.com>
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
SUBMENU:=Time Synchronization
TITLE:=Linux Precision Time Protocol (PTP) daemon
URL:=http://linuxptp.sourceforge.net/
- DEPENDS:=@!USE_UCLIBC +librt
endef
define Package/linuxptp/description
--- /dev/null
+# libloragw configuration
+
+if PACKAGE_libloragw
+
+config SX1301_SPI_PATH
+ string "SPI Dev Path"
+ default /dev/spidev0.0
+
+config SX1301_SPI_SPEED
+ string "SPI Speed (Hz)"
+ default 8000000
+
+endif
--- /dev/null
+#
+# Copyright (C) 2019 Xue Liu <liuxuenetmail@gmail>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=lora-gateway-hal
+PKG_VERSION:=5.0.1
+PKG_RELEASE:=1
+
+PKG_SOURCE_URL:=https://codeload.github.com/Lora-net/lora_gateway/tar.gz/v$(PKG_VERSION)?
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_HASH:=1a0447d5e8183d08e6dce5f739f6872b9c57824b98f4078830d5ee21b15782c1
+PKG_MAINTAINER:=Xue Liu <liuxuenetmail@gmail.com>
+PKG_LICENSE_FILES:=LICENSE
+PKG_BUILD_DIR:=$(BUILD_DIR)/lora_gateway-$(PKG_VERSION)
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/libloragw
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=Driver/HAL library for Semtech SX1301
+ URL:=https://www.semtech.com/products/wireless-rf/lora-gateways/sx1301
+ DEPENDS:=+kmod-spi-dev @(!PACKAGE_lora-picogw-hal)
+endef
+
+define Package/libloragw/description
+ Driver/HAL library for Semtech SX1301 multi-channel modem and
+ SX1257/SX1255 RF transceivers.
+endef
+
+define Package/libloragw/config
+ source "$(SOURCE)/Config.in"
+endef
+
+define Package/libloragw-tests
+ SECTION:=net
+ CATEGORY:=Network
+ SUBMENU:=LoRaWAN
+ TITLE:=Test programs for libloragw to check functionality
+ DEPENDS:=+libloragw
+endef
+
+define Package/libloragw-utils
+ SECTION:=net
+ CATEGORY:=Network
+ SUBMENU:=LoRaWAN
+ TITLE:=Utility programs for libloragw
+ DEPENDS:=+libloragw
+endef
+
+CMAKE_OPTIONS += \
+ -DSPI_DEV_PATH:FILEPATH=$(CONFIG_SX1301_SPI_PATH) \
+ -DSPI_SPEED:STRING=$(CONFIG_SX1301_SPI_SPEED) \
+ -Dlora_gateway_build_shared_libs=ON
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include/libloragw
+ $(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/
+ $(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/
+endef
+
+define Package/libloragw/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/libloragw/libloragw.so.* $(1)/usr/lib/
+endef
+
+define Package/libloragw-tests/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/libloragw/test* $(1)/usr/sbin
+endef
+
+define Package/libloragw-utils/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/util_lbt_test $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/util_pkt_logger $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/util_spectral_scan $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/util_tx_continuous $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/util_spi_stress $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/util_tx_test $(1)/usr/sbin
+endef
+
+$(eval $(call BuildPackage,libloragw))
+$(eval $(call BuildPackage,libloragw-tests))
+$(eval $(call BuildPackage,libloragw-utils))
--- /dev/null
+From d49e5ea2988b2086c7deaa40d3e077531e449844 Mon Sep 17 00:00:00 2001
+From: Xue Liu <liuxuenetmail@gmail.com>
+Date: Thu, 21 Feb 2019 00:27:42 +0100
+Subject: [PATCH 1/3] - add cmake support
+
+Signed-off-by: Xue Liu <liuxuenetmail@gmail.com>
+---
+ CMakeLists.txt | 77 +++++++++++++++
+ cmake/loragw-config.cmake | 1 +
+ libloragw/CMakeLists.txt | 150 ++++++++++++++++++++++++++++++
+ libloragw/loragw.pc.in | 10 ++
+ libloragw/loragw_config.h.in | 14 +++
+ util_lbt_test/CMakeLists.txt | 23 +++++
+ util_pkt_logger/CMakeLists.txt | 29 ++++++
+ util_spectral_scan/CMakeLists.txt | 23 +++++
+ util_spi_stress/CMakeLists.txt | 23 +++++
+ util_tx_continuous/CMakeLists.txt | 23 +++++
+ util_tx_test/CMakeLists.txt | 23 +++++
+ 11 files changed, 396 insertions(+)
+ create mode 100644 CMakeLists.txt
+ create mode 100644 cmake/loragw-config.cmake
+ create mode 100644 libloragw/CMakeLists.txt
+ create mode 100644 libloragw/loragw.pc.in
+ create mode 100644 libloragw/loragw_config.h.in
+ create mode 100644 util_lbt_test/CMakeLists.txt
+ create mode 100644 util_pkt_logger/CMakeLists.txt
+ create mode 100644 util_spectral_scan/CMakeLists.txt
+ create mode 100644 util_spi_stress/CMakeLists.txt
+ create mode 100644 util_tx_continuous/CMakeLists.txt
+ create mode 100644 util_tx_test/CMakeLists.txt
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+new file mode 100644
+index 0000000..b112150
+--- /dev/null
++++ b/CMakeLists.txt
+@@ -0,0 +1,77 @@
++# -- Minimum required version
++cmake_minimum_required (VERSION 3.2)
++
++# -- Project name
++project (lora_gateway)
++
++# -- Various includes
++include (CMakePackageConfigHelpers)
++include (GNUInstallDirs)
++include (CheckFunctionExists)
++
++# -- set c99 standard default
++set(CMAKE_C_STANDARD 99)
++
++# -- options for shared lib (defaults off)
++option(lora_gateway_build_shared_libs "build as a shared library" OFF)
++set(BUILD_SHARED_LIBS ${lora_gateway_build_shared_libs})
++
++# -- Required to build
++set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
++set(THREADS_PREFER_PTHREAD_FLAG TRUE)
++find_package(Threads REQUIRED)
++
++# -- Versioning with git tag
++if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
++ execute_process(
++ COMMAND git describe --tags --always
++ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
++ OUTPUT_VARIABLE "lora_gateway_VERSION"
++ ERROR_QUIET
++ OUTPUT_STRIP_TRAILING_WHITESPACE)
++ if(lora_gateway_VERSION STREQUAL "")
++ set(lora_gateway_VERSION 0)
++ endif(lora_gateway_VERSION STREQUAL "")
++ message( STATUS "Git full version: ${lora_gateway_VERSION}" )
++ execute_process(
++ COMMAND /bin/bash -c "git describe --tags --abbrev=0 | cut --delimiter='v' --fields=2"
++ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
++ OUTPUT_VARIABLE "lora_gateway_VERSION_SHORT"
++ ERROR_QUIET
++ OUTPUT_STRIP_TRAILING_WHITESPACE)
++ if(lora_gateway_VERSION_SHORT STREQUAL "")
++ set(lora_gateway_VERSION_SHORT 0)
++ endif(lora_gateway_VERSION_SHORT STREQUAL "")
++ message( STATUS "Git version: ${lora_gateway_VERSION_SHORT}" )
++else(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
++ set(lora_gateway_VERSION_SHORT 0)
++ set(lora_gateway_VERSION 0)
++endif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
++
++# when building, don't use the install RPATH already
++# (but later on when installing)
++SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
++if (NOT (${CMAKE_INSTALL_PREFIX} STREQUAL "/usr" ) )
++ SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
++endif()
++
++# -- add the core library
++add_subdirectory(libloragw)
++
++# -- add util_lbt_test
++add_subdirectory(util_lbt_test)
++
++# -- add util_pkt_logger
++add_subdirectory(util_pkt_logger)
++
++# -- add util_pkt_logger
++add_subdirectory(util_spectral_scan)
++
++# -- add util_spi_stress
++add_subdirectory(util_spi_stress)
++
++# -- add util_tx_continuous
++add_subdirectory(util_tx_continuous)
++
++# -- add util_tx_test
++add_subdirectory(util_tx_test)
+diff --git a/cmake/loragw-config.cmake b/cmake/loragw-config.cmake
+new file mode 100644
+index 0000000..ee8687b
+--- /dev/null
++++ b/cmake/loragw-config.cmake
+@@ -0,0 +1 @@
++include("${CMAKE_CURRENT_LIST_DIR}/loragw-targets.cmake")
+diff --git a/libloragw/CMakeLists.txt b/libloragw/CMakeLists.txt
+new file mode 100644
+index 0000000..b2102ae
+--- /dev/null
++++ b/libloragw/CMakeLists.txt
+@@ -0,0 +1,150 @@
++set(TARGET loragw)
++
++add_library(${TARGET} "")
++
++# -- add additional debug options
++# Set the DEBUG_* to 1 to activate debug mode in individual modules.
++# Warning: that makes the module *very verbose*, do not use for production
++option(DEBUG_AUX "Active debug mode in AUX module" OFF)
++option(DEBUG_SPI "Active debug mode in SPI module" OFF)
++option(DEBUG_REG "Active debug mode in REG module" OFF)
++option(DEBUG_HAL "Active debug mode in HAL module" OFF)
++option(DEBUG_GPIO "Active debug mode in GPIO module" OFF)
++option(DEBUG_LBT "Active debug mode in LBT module" OFF)
++option(DEBUG_GPS "Active debug mode in GPS module" OFF)
++
++message("-- Build with debug AUX: ${DEBUG_AUX}")
++message("-- Build with debug SPI: ${DEBUG_SPI}")
++message("-- Build with debug REG: ${DEBUG_REG}")
++message("-- Build with debug HAL: ${DEBUG_HAL}")
++message("-- Build with debug GPIO: ${DEBUG_GPIO}")
++message("-- Build with debug LBT: ${DEBUG_LBT}")
++message("-- Build with debug GPS: ${DEBUG_GPS}")
++
++# -- add the compile options
++target_compile_options(
++ ${TARGET}
++ PRIVATE
++ -Werror
++ -Wall
++ -Wextra
++)
++
++target_sources(${TARGET}
++ PRIVATE
++ ${CMAKE_CURRENT_LIST_DIR}/src/loragw_aux.c
++ ${CMAKE_CURRENT_LIST_DIR}/src/loragw_fpga.c
++ ${CMAKE_CURRENT_LIST_DIR}/src/loragw_gps.c
++ ${CMAKE_CURRENT_LIST_DIR}/src/loragw_hal.c
++ ${CMAKE_CURRENT_LIST_DIR}/src/loragw_lbt.c
++ ${CMAKE_CURRENT_LIST_DIR}/src/loragw_radio.c
++ ${CMAKE_CURRENT_LIST_DIR}/src/loragw_reg.c
++ ${CMAKE_CURRENT_LIST_DIR}/src/loragw_spi.native.c
++)
++
++# -- add the public headers
++set (${TARGET}_PUBLIC_HEADERS
++ ${CMAKE_CURRENT_LIST_DIR}/inc/loragw_aux.h
++ ${CMAKE_CURRENT_LIST_DIR}/inc/loragw_fpga.h
++ ${CMAKE_CURRENT_LIST_DIR}/inc/loragw_gps.h
++ ${CMAKE_CURRENT_LIST_DIR}/inc/loragw_hal.h
++ ${CMAKE_CURRENT_LIST_DIR}/inc/loragw_lbt.h
++ ${CMAKE_CURRENT_LIST_DIR}/inc/loragw_radio.h
++ ${CMAKE_CURRENT_LIST_DIR}/inc/loragw_reg.h
++)
++
++target_include_directories(${TARGET}
++ PRIVATE
++ ${CMAKE_CURRENT_LIST_DIR}
++ ${CMAKE_CURRENT_LIST_DIR}/inc
++ PUBLIC
++ $<INSTALL_INTERFACE:include>
++ $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/inc>
++)
++
++configure_file(${CMAKE_CURRENT_LIST_DIR}/${TARGET}_config.h.in "${CMAKE_CURRENT_BINARY_DIR}/config.h" @ONLY)
++
++target_link_libraries(${TARGET}
++ PUBLIC
++ Threads::Threads
++ m
++)
++
++set_target_properties(${TARGET} PROPERTIES VERSION ${lora_gateway_VERSION_SHORT})
++set_target_properties(${TARGET} PROPERTIES SOVERSION ${lora_gateway_VERSION_SHORT})
++set_target_properties(${TARGET} PROPERTIES PUBLIC_HEADER "${CMAKE_CURRENT_BINARY_DIR}/config.h;${${TARGET}_PUBLIC_HEADERS}")
++
++# -- add the install targets
++install (TARGETS ${TARGET}
++ EXPORT ${TARGET}_targets
++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT shlib
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${TARGET}
++ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${TARGET}
++)
++
++# -- add pkg config file
++configure_file ("${CMAKE_CURRENT_LIST_DIR}/${TARGET}.pc.in" "${PROJECT_BINARY_DIR}/${TARGET}.pc" @ONLY)
++install (FILES ${PROJECT_BINARY_DIR}/${TARGET}.pc DESTINATION lib/pkgconfig)
++
++# -- write cmake package config file
++write_basic_package_version_file(
++ "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}/${TARGET}-config-version.cmake"
++ VERSION ${lora_gateway_VERSION}
++ COMPATIBILITY AnyNewerVersion
++)
++
++export(EXPORT ${TARGET}_targets
++ FILE "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}/${TARGET}-targets.cmake"
++ NAMESPACE Semtech::
++)
++
++configure_file(${PROJECT_SOURCE_DIR}/cmake/${TARGET}-config.cmake
++ "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}/${TARGET}-config.cmake"
++ COPYONLY
++)
++
++set(ConfigPackageLocation lib/cmake/${TARGET})
++
++install(EXPORT ${TARGET}_targets
++ FILE ${TARGET}-targets.cmake
++ NAMESPACE Semtech::
++ DESTINATION ${ConfigPackageLocation}
++)
++
++install(
++ FILES ${PROJECT_SOURCE_DIR}/cmake/${TARGET}-config.cmake "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}/${TARGET}-config-version.cmake"
++ DESTINATION ${ConfigPackageLocation}
++ COMPONENT Devel
++)
++
++# -- add test programs
++foreach(TEST test_loragw_spi test_loragw_gps test_loragw_reg test_loragw_hal test_loragw_cal)
++ add_executable(${TEST} "")
++
++ target_sources(${TEST}
++ PRIVATE
++ ${CMAKE_CURRENT_LIST_DIR}/tst/${TEST}.c
++ )
++
++ target_include_directories(${TEST}
++ PRIVATE
++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
++ $<INSTALL_INTERFACE:include>
++ ${CMAKE_CURRENT_LIST_DIR}/inc
++ ${CMAKE_CURRENT_BINARY_DIR}
++ )
++
++ target_link_libraries(${TEST}
++ PRIVATE
++ loragw
++ )
++
++ install (
++ TARGETS ${TEST}
++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++ )
++
++endforeach()
++
+diff --git a/libloragw/loragw.pc.in b/libloragw/loragw.pc.in
+new file mode 100644
+index 0000000..01bb3cf
+--- /dev/null
++++ b/libloragw/loragw.pc.in
+@@ -0,0 +1,10 @@
++prefix=@CMAKE_INSTALL_PREFIX@
++exec_prefix=${prefix}/bin
++includedir=${prefix}/include/libloragw
++libdir=${prefix}/lib
++
++Name: LIBLORAGW
++Description: BLANK_TEXT
++Version: @lora_gateway_VERSION@
++Cflags: -I${includedir}
++Libs: -L${libdir} -lloragw
+diff --git a/libloragw/loragw_config.h.in b/libloragw/loragw_config.h.in
+new file mode 100644
+index 0000000..76ad35a
+--- /dev/null
++++ b/libloragw/loragw_config.h.in
+@@ -0,0 +1,14 @@
++#ifndef _LORAGW_CONFIGURATION_H
++#define _LORAGW_CONFIGURATION_H
++
++#define LIBLORAGW_VERSION "@lora_gateway_VERSION_SHORT@"
++
++#cmakedefine01 DEBUG_AUX
++#cmakedefine01 DEBUG_SPI
++#cmakedefine01 DEBUG_REG
++#cmakedefine01 DEBUG_HAL
++#cmakedefine01 DEBUG_GPS
++#cmakedefine01 DEBUG_GPIO
++#cmakedefine01 DEBUG_LBT
++
++#endif
+diff --git a/util_lbt_test/CMakeLists.txt b/util_lbt_test/CMakeLists.txt
+new file mode 100644
+index 0000000..f184b82
+--- /dev/null
++++ b/util_lbt_test/CMakeLists.txt
+@@ -0,0 +1,23 @@
++
++add_executable(util_lbt_test "")
++target_sources(util_lbt_test
++ PRIVATE
++ ${CMAKE_CURRENT_LIST_DIR}/src/util_lbt_test.c
++)
++
++target_link_libraries(util_lbt_test
++ PUBLIC
++ loragw
++)
++
++set_target_properties(util_lbt_test PROPERTIES
++ RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
++)
++
++# add the install targets
++install (
++ TARGETS util_lbt_test
++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT shlib
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++)
+diff --git a/util_pkt_logger/CMakeLists.txt b/util_pkt_logger/CMakeLists.txt
+new file mode 100644
+index 0000000..82cfc86
+--- /dev/null
++++ b/util_pkt_logger/CMakeLists.txt
+@@ -0,0 +1,29 @@
++
++add_executable(util_pkt_logger "")
++target_sources(util_pkt_logger
++ PRIVATE
++ ${CMAKE_CURRENT_LIST_DIR}/src/util_pkt_logger.c
++ ${CMAKE_CURRENT_LIST_DIR}/src/parson.c
++)
++
++target_include_directories(util_pkt_logger
++ PRIVATE
++ ${CMAKE_CURRENT_LIST_DIR}/inc
++)
++
++target_link_libraries(util_pkt_logger
++ PUBLIC
++ loragw
++)
++
++set_target_properties(util_pkt_logger PROPERTIES
++ RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
++)
++
++# add the install targets
++install (
++ TARGETS util_pkt_logger
++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT shlib
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++)
+diff --git a/util_spectral_scan/CMakeLists.txt b/util_spectral_scan/CMakeLists.txt
+new file mode 100644
+index 0000000..3cec2a9
+--- /dev/null
++++ b/util_spectral_scan/CMakeLists.txt
+@@ -0,0 +1,23 @@
++
++add_executable(util_spectral_scan "")
++target_sources(util_spectral_scan
++ PRIVATE
++ ${CMAKE_CURRENT_LIST_DIR}/src/util_spectral_scan.c
++)
++
++target_link_libraries(util_spectral_scan
++ PUBLIC
++ loragw
++)
++
++set_target_properties(util_spectral_scan PROPERTIES
++ RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
++)
++
++# add the install targets
++install (
++ TARGETS util_spectral_scan
++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT shlib
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++)
+diff --git a/util_spi_stress/CMakeLists.txt b/util_spi_stress/CMakeLists.txt
+new file mode 100644
+index 0000000..d5f0eea
+--- /dev/null
++++ b/util_spi_stress/CMakeLists.txt
+@@ -0,0 +1,23 @@
++
++add_executable(util_spi_stress "")
++target_sources(util_spi_stress
++ PRIVATE
++ ${CMAKE_CURRENT_LIST_DIR}/src/util_spi_stress.c
++)
++
++target_link_libraries(util_spi_stress
++ PUBLIC
++ loragw
++)
++
++set_target_properties(util_spi_stress PROPERTIES
++ RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
++)
++
++# add the install targets
++install (
++ TARGETS util_spi_stress
++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT shlib
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++)
+diff --git a/util_tx_continuous/CMakeLists.txt b/util_tx_continuous/CMakeLists.txt
+new file mode 100644
+index 0000000..97c70e5
+--- /dev/null
++++ b/util_tx_continuous/CMakeLists.txt
+@@ -0,0 +1,23 @@
++
++add_executable(util_tx_continuous "")
++target_sources(util_tx_continuous
++ PRIVATE
++ ${CMAKE_CURRENT_LIST_DIR}/src/util_tx_continuous.c
++)
++
++target_link_libraries(util_tx_continuous
++ PUBLIC
++ loragw
++)
++
++set_target_properties(util_tx_continuous PROPERTIES
++ RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
++)
++
++# add the install targets
++install (
++ TARGETS util_tx_continuous
++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT shlib
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++)
+diff --git a/util_tx_test/CMakeLists.txt b/util_tx_test/CMakeLists.txt
+new file mode 100644
+index 0000000..6cc0e04
+--- /dev/null
++++ b/util_tx_test/CMakeLists.txt
+@@ -0,0 +1,23 @@
++
++add_executable(util_tx_test "")
++target_sources(util_tx_test
++ PRIVATE
++ ${CMAKE_CURRENT_LIST_DIR}/src/util_tx_test.c
++)
++
++target_link_libraries(util_tx_test
++ PUBLIC
++ loragw
++)
++
++set_target_properties(util_tx_test PROPERTIES
++ RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
++)
++
++# add the install targets
++install (
++ TARGETS util_tx_test
++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT shlib
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++)
+--
+2.20.1
+
--- /dev/null
+From ea2a7752295ab734464c2877e1f484a9bf08d58d Mon Sep 17 00:00:00 2001
+From: Xue Liu <liuxuenetmail@gmail.com>
+Date: Sun, 24 Feb 2019 01:03:48 +0100
+Subject: [PATCH 2/3] - add preprocessing for SPI_DEV_PATH and SPI_SPEED
+
+Signed-off-by: Xue Liu <liuxuenetmail@gmail.com>
+---
+ libloragw/src/loragw_spi.native.c | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/libloragw/src/loragw_spi.native.c b/libloragw/src/loragw_spi.native.c
+index c01ed1c..fe251e3 100644
+--- a/libloragw/src/loragw_spi.native.c
++++ b/libloragw/src/loragw_spi.native.c
+@@ -53,8 +53,15 @@ Maintainer: Sylvain Miermont
+
+ #define READ_ACCESS 0x00
+ #define WRITE_ACCESS 0x80
+-#define SPI_SPEED 8000000
+-#define SPI_DEV_PATH "/dev/spidev0.0"
++
++#ifndef SPI_SPEED
++#error SPI_SPEED is not defined
++#endif
++
++#ifndef SPI_DEV_PATH
++#error SPI_DEV_PATH is not defined
++#endif
++
+ //#define SPI_DEV_PATH "/dev/spidev32766.0"
+
+ /* -------------------------------------------------------------------------- */
+--
+2.20.1
+
--- /dev/null
+From 81cd227c04ccb615cffaaa7b6372affb7964df2e Mon Sep 17 00:00:00 2001
+From: Xue Liu <liuxuenetmail@gmail.com>
+Date: Sun, 24 Feb 2019 01:04:29 +0100
+Subject: [PATCH 3/3] - add SPI_DEV_PATH and SPI_SPEED to cmake
+
+Signed-off-by: Xue Liu <liuxuenetmail@gmail.com>
+---
+ libloragw/CMakeLists.txt | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/libloragw/CMakeLists.txt b/libloragw/CMakeLists.txt
+index b2102ae..32abf51 100644
+--- a/libloragw/CMakeLists.txt
++++ b/libloragw/CMakeLists.txt
+@@ -13,6 +13,9 @@ option(DEBUG_GPIO "Active debug mode in GPIO module" OFF)
+ option(DEBUG_LBT "Active debug mode in LBT module" OFF)
+ option(DEBUG_GPS "Active debug mode in GPS module" OFF)
+
++set(SPI_DEV_PATH "/dev/spidev0.0" CACHE FILEPATH "Path of spi-dev")
++set(SPI_SPEED 8000000 CACHE STRING "SPI clock frequency")
++
+ message("-- Build with debug AUX: ${DEBUG_AUX}")
+ message("-- Build with debug SPI: ${DEBUG_SPI}")
+ message("-- Build with debug REG: ${DEBUG_REG}")
+@@ -20,6 +23,8 @@ message("-- Build with debug HAL: ${DEBUG_HAL}")
+ message("-- Build with debug GPIO: ${DEBUG_GPIO}")
+ message("-- Build with debug LBT: ${DEBUG_LBT}")
+ message("-- Build with debug GPS: ${DEBUG_GPS}")
++message("-- Build with SPI_DEV_PATH: ${SPI_DEV_PATH}")
++message("-- Build with SPI_SPEED: ${SPI_SPEED}")
+
+ # -- add the compile options
+ target_compile_options(
+@@ -28,6 +33,8 @@ target_compile_options(
+ -Werror
+ -Wall
+ -Wextra
++ -DSPI_DEV_PATH="${SPI_DEV_PATH}"
++ -DSPI_SPEED=${SPI_SPEED}
+ )
+
+ target_sources(${TARGET}
+--
+2.20.1
+
include $(TOPDIR)/rules.mk
PKG_NAME:=mosquitto
-PKG_VERSION:=1.5.8
-PKG_RELEASE:=2
+PKG_VERSION:=1.6.2
+PKG_RELEASE:=1
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE.txt
PKG_CPE_ID:=cpe:/a:eclipse:mosquitto
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://mosquitto.org/files/source/
-PKG_HASH:=78d7e70c3794dc3a1d484b4f2f8d3addebe9c2da3f5a1cebe557f7d13beb0da4
+PKG_HASH:=33499e78dfa0ca1cb488fd196fde940a66305bdfd44ba763ce2001db2569a08b
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;
+ }
+ }
include $(TOPDIR)/rules.mk
PKG_NAME:=nfs-kernel-server
-PKG_VERSION:=2.3.3
-PKG_RELEASE:=7
-PKG_HASH:=3c8c63611c7e78b7a3b2f8a28b9928a5b5e66d5e9ad09a1e54681508884320a4
+PKG_VERSION:=2.3.4
+PKG_RELEASE:=1
+PKG_HASH:=8a6bafd5a33c4259e6e5093d126384cbe33acb10135578b5faa60c40f2f5e995
PKG_SOURCE_URL:=@SF/nfs
PKG_SOURCE:=nfs-utils-$(PKG_VERSION).tar.xz
+++ /dev/null
-From 4bc0dcae0b64eccd63f753d05b505b0becdcb2c8 Mon Sep 17 00:00:00 2001
-From: Peter Wagner <tripolar@gmx.at>
-Date: Tue, 19 Feb 2019 19:50:03 +0100
-Subject: [PATCH 1/2] don't free ai->ai_canonname
-
----
- support/export/hostname.c | 58 ++++++++-------------------------------
- utils/mountd/auth.c | 16 +++++------
- 2 files changed, 20 insertions(+), 54 deletions(-)
-
-diff --git a/support/export/hostname.c b/support/export/hostname.c
-index 5c4c824..96c5449 100644
---- a/support/export/hostname.c
-+++ b/support/export/hostname.c
-@@ -264,9 +264,9 @@ host_canonname(const struct sockaddr *sap)
- * Reverse and forward lookups are performed to ensure the address has
- * matching forward and reverse mappings.
- *
-- * Returns addrinfo structure with just the provided address with
-- * ai_canonname filled in. If there is a problem with resolution or
-- * the resolved records don't match up properly then it returns NULL
-+ * Returns addrinfo structure with just the provided address. If there
-+ * is a problem with resolution or the resolved records don't match up
-+ * properly then returns NULL.
- *
- * Caller must free the returned structure with freeaddrinfo(3).
- */
-@@ -277,13 +277,15 @@ host_reliable_addrinfo(const struct sockaddr *sap)
- struct addrinfo *ai, *a;
- char *hostname;
-
-+ ai = NULL;
- hostname = host_canonname(sap);
- if (hostname == NULL)
-- return NULL;
-+ goto out;
-
- ai = host_addrinfo(hostname);
-+ free(hostname);
- if (!ai)
-- goto out_free_hostname;
-+ goto out;
-
- /* make sure there's a matching address in the list */
- for (a = ai; a; a = a->ai_next)
-@@ -291,22 +293,15 @@ host_reliable_addrinfo(const struct sockaddr *sap)
- break;
-
- freeaddrinfo(ai);
-+ ai = NULL;
- if (!a)
-- goto out_free_hostname;
-+ goto out;
-
- /* get addrinfo with just the original address */
- ai = host_numeric_addrinfo(sap);
-- if (!ai)
-- goto out_free_hostname;
-
-- /* and populate its ai_canonname field */
-- free(ai->ai_canonname);
-- ai->ai_canonname = hostname;
-+out:
- return ai;
--
--out_free_hostname:
-- free(hostname);
-- return NULL;
- }
-
- /**
-@@ -323,7 +318,6 @@ host_numeric_addrinfo(const struct sockaddr *sap)
- {
- socklen_t salen = nfs_sockaddr_length(sap);
- char buf[INET6_ADDRSTRLEN];
-- struct addrinfo *ai;
- int error;
-
- if (salen == 0) {
-@@ -348,21 +342,7 @@ host_numeric_addrinfo(const struct sockaddr *sap)
- return NULL;
- }
-
-- ai = host_pton(buf);
--
-- /*
-- * getaddrinfo(AI_NUMERICHOST) never fills in ai_canonname
-- */
-- if (ai != NULL) {
-- free(ai->ai_canonname); /* just in case */
-- ai->ai_canonname = strdup(buf);
-- if (ai->ai_canonname == NULL) {
-- freeaddrinfo(ai);
-- ai = NULL;
-- }
-- }
--
-- return ai;
-+ return host_pton(buf);
- }
- #else /* !HAVE_GETNAMEINFO */
- __attribute__((__malloc__))
-@@ -372,7 +352,6 @@ host_numeric_addrinfo(const struct sockaddr *sap)
- const struct sockaddr_in *sin = (const struct sockaddr_in *)sap;
- const struct in_addr *addr = &sin->sin_addr;
- char buf[INET_ADDRSTRLEN];
-- struct addrinfo *ai;
-
- if (sap->sa_family != AF_INET)
- return NULL;
-@@ -382,19 +361,6 @@ host_numeric_addrinfo(const struct sockaddr *sap)
- (socklen_t)sizeof(buf)) == NULL)
- return NULL;
-
-- ai = host_pton(buf);
--
-- /*
-- * getaddrinfo(AI_NUMERICHOST) never fills in ai_canonname
-- */
-- if (ai != NULL) {
-- ai->ai_canonname = strdup(buf);
-- if (ai->ai_canonname == NULL) {
-- freeaddrinfo(ai);
-- ai = NULL;
-- }
-- }
--
-- return ai;
-+ return host_pton(buf);
- }
- #endif /* !HAVE_GETNAMEINFO */
-diff --git a/utils/mountd/auth.c b/utils/mountd/auth.c
-index 8299256..cb4848c 100644
---- a/utils/mountd/auth.c
-+++ b/utils/mountd/auth.c
-@@ -261,40 +261,40 @@ auth_authenticate(const char *what, const struct sockaddr *caller,
- *p = '\0';
- }
-
-+ host_ntop(caller, buf, sizeof(buf));
- switch (error) {
- case bad_path:
- xlog(L_WARNING, "bad path in %s request from %s: \"%s\"",
-- what, host_ntop(caller, buf, sizeof(buf)), path);
-+ what, buf, path);
- break;
-
- case unknown_host:
- xlog(L_WARNING, "refused %s request from %s for %s (%s): unmatched host",
-- what, host_ntop(caller, buf, sizeof(buf)), path, epath);
-+ what, buf, path, epath);
- break;
-
- case no_entry:
- xlog(L_WARNING, "refused %s request from %s for %s (%s): no export entry",
-- what, ai->ai_canonname, path, epath);
-+ what, buf, path, epath);
- break;
-
- case not_exported:
- xlog(L_WARNING, "refused %s request from %s for %s (%s): not exported",
-- what, ai->ai_canonname, path, epath);
-+ what, buf, path, epath);
- break;
-
- case illegal_port:
- xlog(L_WARNING, "refused %s request from %s for %s (%s): illegal port %u",
-- what, ai->ai_canonname, path, epath, nfs_get_port(caller));
-+ what, buf, path, epath, nfs_get_port(caller));
- break;
-
- case success:
- xlog(L_NOTICE, "authenticated %s request from %s:%u for %s (%s)",
-- what, ai->ai_canonname, nfs_get_port(caller), path, epath);
-+ what, buf, nfs_get_port(caller), path, epath);
- break;
- default:
- xlog(L_NOTICE, "%s request from %s:%u for %s (%s) gave %d",
-- what, ai->ai_canonname, nfs_get_port(caller),
-- path, epath, error);
-+ what, buf, nfs_get_port(caller), path, epath, error);
- }
-
- freeaddrinfo(ai);
---
-2.20.1
-
+++ /dev/null
-From 877184f733d13d7db0ec9265a53ede9c30d03ba4 Mon Sep 17 00:00:00 2001
-From: Peter Wagner <tripolar@gmx.at>
-Date: Tue, 19 Feb 2019 20:00:22 +0100
-Subject: [PATCH 2/2] define and use wrapper function nfs_freeaddrinfo
- to handle freeaddrinfo versions that don't tolerate NULL pointers
-
-Signed-off-by: Peter Wagner <tripolar@gmx.at>
----
- support/export/client.c | 6 +++---
- support/export/hostname.c | 4 ++--
- support/include/exportfs.h | 11 +++++++++++
- support/nfs/getport.c | 7 ++++---
- support/nfs/svc_create.c | 8 +++++---
- support/nfsidmap/umich_ldap.c | 2 +-
- tests/nsm_client/nsm_client.c | 2 +-
- utils/exportfs/exportfs.c | 10 +++++-----
- utils/gssd/gssd.c | 4 ++--
- utils/gssd/krb5_util.c | 2 +-
- utils/mount/network.c | 7 ++++---
- utils/mount/stropts.c | 3 ++-
- utils/mountd/auth.c | 2 +-
- utils/mountd/cache.c | 10 +++++-----
- utils/mountd/mountd.c | 4 ++--
- utils/mountd/rmtab.c | 2 +-
- utils/nfsd/nfssvc.c | 4 ++--
- utils/statd/hostname.c | 11 ++++++-----
- utils/statd/sm-notify.c | 14 +++++++-------
- 19 files changed, 65 insertions(+), 48 deletions(-)
-
-diff --git a/support/export/client.c b/support/export/client.c
-index baf59c8..a1fba01 100644
---- a/support/export/client.c
-+++ b/support/export/client.c
-@@ -210,7 +210,7 @@ init_subnetwork(nfs_client *clp)
- set_addrlist(clp, 0, ai->ai_addr);
- family = ai->ai_addr->sa_family;
-
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
-
- switch (family) {
- case AF_INET:
-@@ -309,7 +309,7 @@ client_lookup(char *hname, int canonical)
- init_addrlist(clp, ai);
-
- out:
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- return clp;
- }
-
-@@ -674,7 +674,7 @@ check_netgroup(const nfs_client *clp, const struct addrinfo *ai)
- tmp = host_pton(hname);
- if (tmp != NULL) {
- char *cname = host_canonname(tmp->ai_addr);
-- freeaddrinfo(tmp);
-+ nfs_freeaddrinfo(tmp);
-
- /* The resulting FQDN may be in our netgroup. */
- if (cname != NULL) {
-diff --git a/support/export/hostname.c b/support/export/hostname.c
-index 96c5449..be4d7f6 100644
---- a/support/export/hostname.c
-+++ b/support/export/hostname.c
-@@ -130,7 +130,7 @@ host_pton(const char *paddr)
- if (!inet4 && ai->ai_addr->sa_family == AF_INET) {
- xlog(D_GENERAL, "%s: failed to convert %s",
- __func__, paddr);
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- break;
- }
- return ai;
-@@ -292,7 +292,7 @@ host_reliable_addrinfo(const struct sockaddr *sap)
- if (nfs_compare_sockaddr(a->ai_addr, sap))
- break;
-
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- ai = NULL;
- if (!a)
- goto out;
-diff --git a/support/include/exportfs.h b/support/include/exportfs.h
-index 4e0d9d1..b81f963 100644
---- a/support/include/exportfs.h
-+++ b/support/include/exportfs.h
-@@ -47,6 +47,17 @@ typedef struct mclient {
- int m_count;
- } nfs_client;
-
-+/*
-+ * Some versions of freeaddrinfo(3) do not tolerate being
-+ * passed a NULL pointer.
-+ */
-+static inline void nfs_freeaddrinfo(struct addrinfo *ai)
-+{
-+ if (ai) {
-+ freeaddrinfo(ai);
-+ }
-+}
-+
- static inline const struct sockaddr *
- get_addrlist(const nfs_client *clp, const int i)
- {
-diff --git a/support/nfs/getport.c b/support/nfs/getport.c
-index 081594c..26ec85e 100644
---- a/support/nfs/getport.c
-+++ b/support/nfs/getport.c
-@@ -47,6 +47,7 @@
-
- #include "sockaddr.h"
- #include "nfsrpc.h"
-+#include "exportfs.h"
-
- /*
- * Try a local socket first to access the local rpcbind daemon
-@@ -109,7 +110,7 @@ static int nfs_gp_loopback_address(struct sockaddr *sap, socklen_t *salen)
- ret = 1;
- }
-
-- freeaddrinfo(gai_results);
-+ nfs_freeaddrinfo(gai_results);
- return ret;
- }
-
-@@ -134,8 +135,8 @@ static in_port_t nfs_gp_getservbyname(const char *service,
-
- sin = (const struct sockaddr_in *)gai_results->ai_addr;
- port = sin->sin_port;
--
-- freeaddrinfo(gai_results);
-+
-+ nfs_freeaddrinfo(gai_results);
- return port;
- }
-
-diff --git a/support/nfs/svc_create.c b/support/nfs/svc_create.c
-index ef7ff05..d0b747b 100644
---- a/support/nfs/svc_create.c
-+++ b/support/nfs/svc_create.c
-@@ -39,6 +39,8 @@
- #include <rpc/rpc.h>
- #include <rpc/svc.h>
-
-+#include "exportfs.h"
-+
- #ifdef HAVE_TCP_WRAPPER
- #include "tcpwrapper.h"
- #endif
-@@ -273,7 +275,7 @@ svc_create_nconf_rand_port(const char *name, const rpcprog_t program,
- bindaddr.qlen = SOMAXCONN;
-
- xprt = svc_tli_create(RPC_ANYFD, nconf, &bindaddr, 0, 0);
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- if (xprt == NULL) {
- xlog(L_ERROR, "Failed to create listener xprt "
- "(%s, %u, %s)", name, version, nconf->nc_netid);
-@@ -364,11 +366,11 @@ svc_create_nconf_fixed_port(const char *name, const rpcprog_t program,
-
- svc_create_cache_xprt(xprt);
-
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- return 1;
-
- out_free:
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- return 0;
- }
-
-diff --git a/support/nfsidmap/umich_ldap.c b/support/nfsidmap/umich_ldap.c
-index b661110..b8ee184 100644
---- a/support/nfsidmap/umich_ldap.c
-+++ b/support/nfsidmap/umich_ldap.c
-@@ -1089,7 +1089,7 @@ get_canonical_hostname(const char *inname)
- return_name = strdup (tmphost);
-
- out_free:
-- freeaddrinfo(ap);
-+ nfs_freeaddrinfo(ap);
- out_err:
- return return_name;
- }
-diff --git a/tests/nsm_client/nsm_client.c b/tests/nsm_client/nsm_client.c
-index 0fa3422..8dc0591 100644
---- a/tests/nsm_client/nsm_client.c
-+++ b/tests/nsm_client/nsm_client.c
-@@ -243,7 +243,7 @@ nsm_client_get_rpcclient(const char *node)
- printf("RPC client creation failed\n");
- }
- out:
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- return client;
- }
-
-diff --git a/utils/exportfs/exportfs.c b/utils/exportfs/exportfs.c
-index cd3c979..333eadc 100644
---- a/utils/exportfs/exportfs.c
-+++ b/utils/exportfs/exportfs.c
-@@ -282,7 +282,7 @@ exportfs_parsed(char *hname, char *path, char *options, int verbose)
- validate_export(exp);
-
- out:
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- }
-
- static int exportfs_generic(char *arg, char *options, int verbose)
-@@ -395,7 +395,7 @@ unexportfs_parsed(char *hname, char *path, int verbose)
- if (!success)
- xlog(L_ERROR, "Could not find '%s:%s' to unexport.", hname, path);
-
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- }
-
- static int unexportfs_generic(char *arg, int verbose)
-@@ -588,7 +588,7 @@ address_list(const char *hostname)
- if (ai != NULL) {
- /* @hostname was a presentation address */
- cname = host_canonname(ai->ai_addr);
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- if (cname != NULL)
- goto out;
- }
-@@ -639,8 +639,8 @@ matchhostname(const char *hostname1, const char *hostname2)
- }
-
- out:
-- freeaddrinfo(results1);
-- freeaddrinfo(results2);
-+ nfs_freeaddrinfo(results1);
-+ nfs_freeaddrinfo(results2);
- return result;
- }
-
-diff --git a/utils/gssd/gssd.c b/utils/gssd/gssd.c
-index 2e92f28..7eeb05f 100644
---- a/utils/gssd/gssd.c
-+++ b/utils/gssd/gssd.c
-@@ -172,14 +172,14 @@ gssd_addrstr_to_sockaddr(struct sockaddr *sa, const char *node, const char *port
- if (sin6->sin6_scope_id) {
- printerr(0, "ERROR: address %s has non-zero "
- "sin6_scope_id!\n", node);
-- freeaddrinfo(res);
-+ nfs_freeaddrinfo(res);
- return false;
- }
- }
- #endif /* IPV6_SUPPORTED */
-
- memcpy(sa, res->ai_addr, res->ai_addrlen);
-- freeaddrinfo(res);
-+ nfs_freeaddrinfo(res);
- return true;
- }
-
-diff --git a/utils/gssd/krb5_util.c b/utils/gssd/krb5_util.c
-index eba1aac..adbde93 100644
---- a/utils/gssd/krb5_util.c
-+++ b/utils/gssd/krb5_util.c
-@@ -587,7 +587,7 @@ get_full_hostname(const char *inhost, char *outhost, int outhostlen)
- goto out;
- }
- strncpy(outhost, addrs->ai_canonname, outhostlen);
-- freeaddrinfo(addrs);
-+ nfs_freeaddrinfo(addrs);
- for (c = outhost; *c != '\0'; c++)
- *c = tolower(*c);
-
-diff --git a/utils/mount/network.c b/utils/mount/network.c
-index 356f663..fcb0b9f 100644
---- a/utils/mount/network.c
-+++ b/utils/mount/network.c
-@@ -53,6 +53,7 @@
- #include <net/if.h>
- #include <ifaddrs.h>
-
-+#include "exportfs.h"
- #include "sockaddr.h"
- #include "xcommon.h"
- #include "mount.h"
-@@ -250,7 +251,7 @@ int nfs_lookup(const char *hostname, const sa_family_t family,
- break;
- }
-
-- freeaddrinfo(gai_results);
-+ nfs_freeaddrinfo(gai_results);
- return ret;
- }
-
-@@ -307,7 +308,7 @@ int nfs_string_to_sockaddr(const char *address, struct sockaddr *sap,
- }
- break;
- }
-- freeaddrinfo(gai_results);
-+ nfs_freeaddrinfo(gai_results);
- }
-
- return ret;
-@@ -1180,7 +1181,7 @@ static int nfs_ca_gai(const struct sockaddr *sap,
- *buflen = gai_results->ai_addrlen;
- memcpy(buf, gai_results->ai_addr, *buflen);
-
-- freeaddrinfo(gai_results);
-+ nfs_freeaddrinfo(gai_results);
-
- return 1;
- }
-diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
-index 0a25b1f..b170552 100644
---- a/utils/mount/stropts.c
-+++ b/utils/mount/stropts.c
-@@ -35,6 +35,7 @@
- #include <netinet/in.h>
- #include <arpa/inet.h>
-
-+#include "exportfs.h"
- #include "sockaddr.h"
- #include "xcommon.h"
- #include "mount.h"
-@@ -1268,7 +1269,7 @@ int nfsmount_string(const char *spec, const char *node, char *type,
- } else
- nfs_error(_("%s: internal option parsing error"), progname);
-
-- freeaddrinfo(mi.address);
-+ nfs_freeaddrinfo(mi.address);
- free(mi.hostname);
- return retval;
- }
-diff --git a/utils/mountd/auth.c b/utils/mountd/auth.c
-index cb4848c..67627f7 100644
---- a/utils/mountd/auth.c
-+++ b/utils/mountd/auth.c
-@@ -297,7 +297,7 @@ auth_authenticate(const char *what, const struct sockaddr *caller,
- what, buf, nfs_get_port(caller), path, epath, error);
- }
-
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- return exp;
- }
-
-diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
-index 7e8d403..2cb370f 100644
---- a/utils/mountd/cache.c
-+++ b/utils/mountd/cache.c
-@@ -113,7 +113,7 @@ static void auth_unix_ip(int f)
- ai = client_resolve(tmp->ai_addr);
- if (ai) {
- client = client_compose(ai);
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- }
- }
- bp = buf; blen = sizeof(buf);
-@@ -133,7 +133,7 @@ static void auth_unix_ip(int f)
- xlog(D_CALL, "auth_unix_ip: client %p '%s'", client, client?client: "DEFAULT");
-
- free(client);
-- freeaddrinfo(tmp);
-+ nfs_freeaddrinfo(tmp);
-
- }
-
-@@ -667,7 +667,7 @@ static struct addrinfo *lookup_client_addr(char *dom)
- if (tmp == NULL)
- return NULL;
- ret = client_resolve(tmp->ai_addr);
-- freeaddrinfo(tmp);
-+ nfs_freeaddrinfo(tmp);
- return ret;
- }
-
-@@ -834,7 +834,7 @@ static void nfsd_fh(int f)
- out:
- if (found_path)
- free(found_path);
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- free(dom);
- xlog(D_CALL, "nfsd_fh: found %p path %s", found, found ? found->e_path : NULL);
- }
-@@ -1355,7 +1355,7 @@ static void nfsd_export(int f)
- xlog(D_CALL, "nfsd_export: found %p path %s", found, path ? path : NULL);
- if (dom) free(dom);
- if (path) free(path);
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- }
-
-
-diff --git a/utils/mountd/mountd.c b/utils/mountd/mountd.c
-index 086c39b..fb7bba4 100644
---- a/utils/mountd/mountd.c
-+++ b/utils/mountd/mountd.c
-@@ -578,10 +578,10 @@ static void prune_clients(nfs_export *exp, struct exportnode *e)
- *cp = c->gr_next;
- xfree(c->gr_name);
- xfree(c);
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- continue;
- }
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- }
- cp = &(c->gr_next);
- }
-diff --git a/utils/mountd/rmtab.c b/utils/mountd/rmtab.c
-index 3ae0dbb..c896243 100644
---- a/utils/mountd/rmtab.c
-+++ b/utils/mountd/rmtab.c
-@@ -226,7 +226,7 @@ mountlist_list(void)
- ai = host_pton(rep->r_client);
- if (ai != NULL) {
- m->ml_hostname = host_canonname(ai->ai_addr);
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- }
- }
- if (m->ml_hostname == NULL)
-diff --git a/utils/nfsd/nfssvc.c b/utils/nfsd/nfssvc.c
-index 1e6ffd6..47b1882 100644
---- a/utils/nfsd/nfssvc.c
-+++ b/utils/nfsd/nfssvc.c
-@@ -25,6 +25,7 @@
- #include "nfslib.h"
- #include "xlog.h"
- #include "nfssvc.h"
-+#include "exportfs.h"
- #include "../mount/version.h"
-
- #ifndef NFSD_FS_DIR
-@@ -246,8 +247,7 @@ error:
- close(fd);
- if (sockfd >= 0)
- close(sockfd);
-- if (addrhead)
-- freeaddrinfo(addrhead);
-+ nfs_freeaddrinfo(addrhead);
- return (bounded ? 0 : rc);
- }
-
-diff --git a/utils/statd/hostname.c b/utils/statd/hostname.c
-index 8cccdb8..c9e22d3 100644
---- a/utils/statd/hostname.c
-+++ b/utils/statd/hostname.c
-@@ -35,6 +35,7 @@
- #include <netdb.h>
- #include <arpa/inet.h>
-
-+#include "exportfs.h"
- #include "sockaddr.h"
- #include "statd.h"
- #include "xlog.h"
-@@ -203,7 +204,7 @@ statd_canonical_name(const char *hostname)
- _Bool result;
- result = get_nameinfo(ai->ai_addr, ai->ai_addrlen,
- buf, (socklen_t)sizeof(buf));
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- if (!result || buf[0] == '\0')
- /* OK to use presentation address,
- * if no reverse map exists */
-@@ -217,7 +218,7 @@ statd_canonical_name(const char *hostname)
- if (ai == NULL)
- return NULL;
- strcpy(buf, ai->ai_canonname);
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
-
- return strdup(buf);
- }
-@@ -253,7 +254,7 @@ statd_canonical_list(const char *hostname)
- _Bool result;
- result = get_nameinfo(ai->ai_addr, ai->ai_addrlen,
- buf, (socklen_t)sizeof(buf));
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- if (result)
- goto out;
- }
-@@ -308,8 +309,8 @@ statd_matchhostname(const char *hostname1, const char *hostname2)
- }
-
- out:
-- freeaddrinfo(results2);
-- freeaddrinfo(results1);
-+ nfs_freeaddrinfo(results2);
-+ nfs_freeaddrinfo(results1);
-
- xlog(D_CALL, "%s: hostnames %s and %s %s", __func__,
- hostname1, hostname2,
-diff --git a/utils/statd/sm-notify.c b/utils/statd/sm-notify.c
-index 29dad38..05d72a3 100644
---- a/utils/statd/sm-notify.c
-+++ b/utils/statd/sm-notify.c
-@@ -37,6 +37,7 @@
- #include "xlog.h"
- #include "nsm.h"
- #include "nfsrpc.h"
-+#include "exportfs.h"
-
- /* glibc before 2.3.4 */
- #ifndef AI_NUMERICSERV
-@@ -179,7 +180,7 @@ smn_verify_my_name(const char *name)
- case 0:
- /* @name was a presentation address */
- retval = smn_get_hostname(ai->ai_addr, ai->ai_addrlen, name);
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- if (retval == NULL)
- return NULL;
- break;
-@@ -253,8 +254,7 @@ static void smn_forget_host(struct nsm_host *host)
- free((void *)host->my_name);
- free((void *)host->mon_name);
- free(host->name);
-- if (host->ai)
-- freeaddrinfo(host->ai);
-+ nfs_freeaddrinfo(host->ai);
-
- free(host);
- }
-@@ -430,7 +430,7 @@ retry:
- if (srcport) {
- if (bind(sock, ai->ai_addr, ai->ai_addrlen) == -1) {
- xlog(L_ERROR, "Failed to bind RPC socket: %m");
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- (void)close(sock);
- return -1;
- }
-@@ -440,7 +440,7 @@ retry:
- if (smn_bindresvport(sock, ai->ai_addr) == -1) {
- xlog(L_ERROR,
- "bindresvport on RPC socket failed: %m");
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- (void)close(sock);
- return -1;
- }
-@@ -449,13 +449,13 @@ retry:
- se = getservbyport((int)nfs_get_port(ai->ai_addr), "udp");
- if (se != NULL && retry_cnt < 100) {
- retry_cnt++;
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- (void)close(sock);
- goto retry;
- }
- }
-
-- freeaddrinfo(ai);
-+ nfs_freeaddrinfo(ai);
- return sock;
- }
-
---
-2.20.1
-
+++ /dev/null
---- a/support/misc/file.c
-+++ b/support/misc/file.c
-@@ -27,6 +27,7 @@
- #include <dirent.h>
- #include <stdlib.h>
- #include <stdbool.h>
-+#include <limits.h>
-
- #include "xlog.h"
- #include "misc.h"
+++ /dev/null
-From: Rosen Penev <rosenp@gmail.com>\r
-To: linux-nfs@vger.kernel.org\r
-Subject: [PATCH] idmapd: Add missing libgen header\r
-Date: Sun, 14 Apr 2019 19:11:40 -0700\r
-Message-Id: <20190415021140.1388-1-rosenp@gmail.com>\r
-X-Mailer: git-send-email 2.17.1\r
-\r
-Otherwise compilation can fail with an implicit declaration of basename.\r
-\r
-Signed-off-by: Rosen Penev <rosenp@gmail.com>\r
----\r
- utils/idmapd/idmapd.c | 1 +\r
- 1 file changed, 1 insertion(+)\r
-\r
-diff --git a/utils/idmapd/idmapd.c b/utils/idmapd/idmapd.c\r
-index 91c0253..62e37b8 100644\r
---- a/utils/idmapd/idmapd.c\r
-+++ b/utils/idmapd/idmapd.c\r
-@@ -59,6 +59,7 @@\r
- #include <grp.h>\r
- #include <limits.h>\r
- #include <ctype.h>\r
-+#include <libgen.h>\r
- #include <nfsidmap.h>\r
- \r
- #ifdef HAVE_CONFIG_H\r
--- \r
-2.17.1\r
-\r
#
-# Copyright (c) 2015 OpenWrt.org
+# Copyright (c) 2019 OpenWrt.org
#
# This is free software, licensed under the BSD 2-Clause License.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=port-mirroring
-PKG_VERSION:=1.4.3
-PKG_RELEASE:=1
+PKG_VERSION:=1.4.4
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/mmaraya/port-mirroring/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=90603163fb086cc586a711e066360ccfa5b4735f67586e8f9254e93f3bebb97e
+PKG_HASH:=9fb259d24cee4fe1bed1a51c49e52a8eb05b692ba1b5debb75fdf54957cc8ed1
PKG_MAINTAINER:=Mike Maraya <mike.maraya@gmail.com>
PKG_LICENSE:=BSD-2-Clause
+++ /dev/null
-diff --git a/include/config.h b/include/config.h
-index 5212c69..ac948ba 100644
---- a/include/config.h
-+++ b/include/config.h
-@@ -1,69 +1,69 @@
--/* \r
-- * Copyright (c) 2015 Mike Maraya <mike[dot]maraya[at]gmail[dot]com>\r
-- * All rights reserved.\r
-- *\r
-- * This file is subject to the terms and conditions defined in\r
-- * https://github.com/mmaraya/port-mirroring/blob/master/LICENSE,\r
-- * which is part of this software package.\r
-- *\r
-- */\r
--\r
--#ifndef PORT_MIRRORING_UTIL_H_\r
--#define PORT_MIRRORING_UTIL_H_\r
--\r
--#include <errno.h>\r
--#include <net/if.h>\r
--#include <netinet/in.h>\r
--#include <stdint.h>\r
--#include <stdio.h>\r
--#include <stdlib.h>\r
--#include <string.h>\r
--#include <syslog.h>\r
--#include <linux/limits.h>\r
--\r
--#define OPTION_MAX 254 /* max value for program options */\r
--#define TIMEBUF 32 /* max timestamp length RFC3339 */\r
--#define SRC_MAX 4 /* maxium number of source network interfaces */\r
--#define PFE_MAX 80 /* maximum length of packet filter expression */\r
--#define MACADDRLEN 6 /* length of a MAC address */\r
--\r
--// port-mirroring configuration bit flags\r
--#define PM_DAEMON 0x01 /* run as background process */\r
--#define PM_DEBUG 0x02 /* display debugging messages to console */\r
--#define PM_TZSP 0x04 /* send packets using TaZmen Sniffer Protocol */\r
--#define PM_DST_IF 0x08 /* destination is a network interface */\r
--#define PM_DST_IP 0x10 /* destination is an internet protocol address */\r
--#define PM_PROMISC 0x20 /* place source interface in promiscuous mode */\r
--#define PM_SYSLOG 0x40 /* log messages to syslog facility */\r
--\r
--// if no configuration file is specified, look through these in order\r
--#define CFG_PATH_1 "/etc/config/port-mirroring"\r
--#define CFG_PATH_2 "/etc/port-mirroring"\r
--#define CFG_PATH_3 "port-mirroring.conf"\r
--\r
--// default program id file\r
--#define PID_PATH "/var/run/port-mirroring.pid"\r
--\r
--// program-wide configuration settings and variables\r
--struct pm_cfg\r
--{\r
-- char *cfg_file; /* path to configuration file */\r
-- uint8_t flags; /* boolean setting bitmask */\r
-- char src[SRC_MAX][IFNAMSIZ]; /* source network interfaces */\r
-- char dst_if[IFNAMSIZ]; /* destination network interface */\r
-- in_addr_t dst_ip; /* destination IP address */\r
-- char pfe[PFE_MAX]; /* tcpdump packet filter expression */\r
-- char *pid_file; /* path to process id file */\r
-- int src_count; /* number of source ports */\r
-- char src_mac[MACADDRLEN]; /* source MAC address */\r
-- char dst_mac[MACADDRLEN]; /* destination MAC address */\r
-- time_t init_time; /* used to check for timeouts */\r
-- int packet_count; /* number of packets processed */\r
--};\r
--\r
--void find_cfg(struct pm_cfg *cfg);\r
--char * printMACStr(const char *mac);\r
--char * getUCIItem(char *buf, char *item);\r
--int getUCIConf(char *buf, char *option, char *value);\r
--\r
--#endif // PORT_MIRRORING_UTIL_H_\r
-+/*
-+ * Copyright (c) 2015 Mike Maraya <mike[dot]maraya[at]gmail[dot]com>
-+ * All rights reserved.
-+ *
-+ * This file is subject to the terms and conditions defined in
-+ * https://github.com/mmaraya/port-mirroring/blob/master/LICENSE,
-+ * which is part of this software package.
-+ *
-+ */
-+
-+#ifndef PORT_MIRRORING_UTIL_H_
-+#define PORT_MIRRORING_UTIL_H_
-+
-+#include <errno.h>
-+#include <net/if.h>
-+#include <netinet/in.h>
-+#include <stdint.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <syslog.h>
-+#include <linux/limits.h>
-+
-+#define OPTION_MAX 254 /* max value for program options */
-+#define TIMEBUF 32 /* max timestamp length RFC3339 */
-+#define SRC_MAX 4 /* maxium number of source network interfaces */
-+#define PFE_MAX 80 /* maximum length of packet filter expression */
-+#define MACADDRLEN 6 /* length of a MAC address */
-+
-+// port-mirroring configuration bit flags
-+#define PM_DAEMON 0x01 /* run as background process */
-+#define PM_DEBUG 0x02 /* display debugging messages to console */
-+#define PM_TZSP 0x04 /* send packets using TaZmen Sniffer Protocol */
-+#define PM_DST_IF 0x08 /* destination is a network interface */
-+#define PM_DST_IP 0x10 /* destination is an internet protocol address */
-+#define PM_PROMISC 0x20 /* place source interface in promiscuous mode */
-+#define PM_SYSLOG 0x40 /* log messages to syslog facility */
-+
-+// if no configuration file is specified, look through these in order
-+#define CFG_PATH_1 "/etc/config/port-mirroring"
-+#define CFG_PATH_2 "/etc/port-mirroring"
-+#define CFG_PATH_3 "port-mirroring.conf"
-+
-+// default program id file
-+#define PID_PATH "/var/run/port-mirroring.pid"
-+
-+// program-wide configuration settings and variables
-+struct pm_cfg
-+{
-+ char *cfg_file; /* path to configuration file */
-+ uint8_t flags; /* boolean setting bitmask */
-+ char src[SRC_MAX][IFNAMSIZ]; /* source network interfaces */
-+ char dst_if[IFNAMSIZ]; /* destination network interface */
-+ in_addr_t dst_ip; /* destination IP address */
-+ char pfe[PFE_MAX]; /* tcpdump packet filter expression */
-+ char *pid_file; /* path to process id file */
-+ int src_count; /* number of source ports */
-+ char src_mac[MACADDRLEN]; /* source MAC address */
-+ char dst_mac[MACADDRLEN]; /* destination MAC address */
-+ time_t init_time; /* used to check for timeouts */
-+ int packet_count; /* number of packets processed */
-+};
-+
-+void find_cfg(struct pm_cfg *cfg);
-+char * printMACStr(const char *mac);
-+char * getUCIItem(char *buf, char *item);
-+int getUCIConf(char *buf, char *option, char *value);
-+
-+#endif // PORT_MIRRORING_UTIL_H_
--- /dev/null
+--- a/src/main.c
++++ b/src/main.c
+@@ -90,7 +90,7 @@ int loadCfg(const char *fpath)
+ }
+ else
+ {
+- snprintf(cfg.dst_if, IFNAMSIZ, "%s", value);
++ strncpy(cfg.dst_if, value, IFNAMSIZ);
+ cfg.flags |= PM_DST_IF;
+ }
+ }
+@@ -104,7 +104,7 @@ int loadCfg(const char *fpath)
+ }
+ else if (strcmp(option, "filter") == 0)
+ {
+- snprintf(cfg.pfe, PFE_MAX, "%s", value);
++ strncpy(cfg.pfe, value, PFE_MAX);
+ }
+ else if (strcmp(option, "promiscuous") == 0)
+ {
+++ /dev/null
-diff --git a/include/config.h b/include/config.h
-index ac948ba..da93160 100644
---- a/include/config.h
-+++ b/include/config.h
-@@ -19,6 +19,7 @@
- #include <stdlib.h>
- #include <string.h>
- #include <syslog.h>
-+#include <time.h>
- #include <linux/limits.h>
-
- #define OPTION_MAX 254 /* max value for program options */
PKG_NAME:=rpcbind
PKG_VERSION:=1.2.5
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE_URL:=@SF/rpcbind
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
--- /dev/null
+From 0bc1c0ae7ce61a7ac8a8e9a9b2086268f011abf0 Mon Sep 17 00:00:00 2001
+From: Steve Dickson <steved@redhat.com>
+Date: Tue, 9 Oct 2018 09:19:50 -0400
+Subject: [PATCH 1/1] rpcinfo: Fix stack buffer overflow
+
+*** buffer overflow detected ***: rpcinfo terminated
+======= Backtrace: =========
+/lib64/libc.so.6(+0x721af)[0x7ff24c4451af]
+/lib64/libc.so.6(__fortify_fail+0x37)[0x7ff24c4ccdc7]
+/lib64/libc.so.6(+0xf8050)[0x7ff24c4cb050]
+rpcinfo(+0x435f)[0xef3be2635f]
+rpcinfo(+0x1c62)[0xef3be23c62]
+/lib64/libc.so.6(__libc_start_main+0xf5)[0x7ff24c3f36e5]
+rpcinfo(+0x2739)[0xef3be24739]
+======= Memory map: ========
+...
+The patch below fixes it.
+
+Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
+Signed-off-by: Thomas Blume <thomas.blume@suse.com>
+Signed-off-by: Steve Dickson <steved@redhat.com>
+---
+ src/rpcinfo.c | 23 +++++++++++++++++------
+ 1 file changed, 17 insertions(+), 6 deletions(-)
+
+diff --git a/src/rpcinfo.c b/src/rpcinfo.c
+index 9b46864..cfdba88 100644
+--- a/src/rpcinfo.c
++++ b/src/rpcinfo.c
+@@ -973,6 +973,7 @@ rpcbdump (dumptype, netid, argc, argv)
+ (" program version(s) netid(s) service owner\n");
+ for (rs = rs_head; rs; rs = rs->next)
+ {
++ size_t netidmax = sizeof(buf) - 1;
+ char *p = buf;
+
+ printf ("%10ld ", rs->prog);
+@@ -985,12 +986,22 @@ rpcbdump (dumptype, netid, argc, argv)
+ }
+ printf ("%-10s", buf);
+ buf[0] = '\0';
+- for (nl = rs->nlist; nl; nl = nl->next)
+- {
+- strcat (buf, nl->netid);
+- if (nl->next)
+- strcat (buf, ",");
+- }
++
++ for (nl = rs->nlist; nl; nl = nl->next)
++ {
++ strncat (buf, nl->netid, netidmax);
++ if (strlen (nl->netid) < netidmax)
++ netidmax -= strlen(nl->netid);
++ else
++ break;
++
++ if (nl->next && netidmax > 1)
++ {
++ strncat (buf, ",", netidmax);
++ netidmax --;
++ }
++ }
++
+ printf ("%-32s", buf);
+ rpc = getrpcbynumber (rs->prog);
+ if (rpc)
+--
+1.8.3.1
+
PKG_NAME:=rsyslog
PKG_VERSION:=8.39.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.rsyslog.com/files/download/rsyslog/
CATEGORY:=Network
TITLE:=Enhanced system logging and kernel message trapping daemons
URL:=https://www.rsyslog.com/
- DEPENDS:=+libestr +libfastjson +libuuid +zlib +USE_UCLIBC:libpthread +USE_UCLIBC:librt
+ DEPENDS:=+libestr +libfastjson +libuuid +zlib
endef
define Package/rsyslog/conffiles
include $(TOPDIR)/rules.mk
PKG_NAME:=samba
-PKG_VERSION:=4.9.6
-PKG_RELEASE:=2
+PKG_VERSION:=4.9.8
+PKG_RELEASE:=1
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
PKG_LICENSE:=GPL-3.0-only
http://samba.mirror.bit.nl/samba/ftp/stable/ \
https://download.samba.org/pub/samba/stable/
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=c9205a651a83d69e200fec9dd65e9fa360f0c75ab3275b3dcb74e5cbaec60807
+PKG_HASH:=82ebb7c3f1847c39341dd97ff8b73f40fa83f5f794daeceb80f3c349ace3cf56
# samba4=(asn1_compile) e2fsprogs=(compile_et) nfs-kernel-server=(rpcgen)
HOST_BUILD_DEPENDS:=nfs-kernel-server/host e2fsprogs/host
local timemachine
local timemachine_maxsize
local force_root
+ local write_list
+ local read_list
config_get name $1 name
config_get path $1 path
config_get_bool timemachine $1 timemachine 0
config_get timemachine_maxsize $1 timemachine_maxsize
config_get_bool force_root $1 force_root 0
+ config_get write_list $1 write_list
+ config_get read_list $1 read_list
[ -z "$name" -o -z "$path" ] && return
[ -n "$guest_ok" ] && echo -e "\tguest ok = $guest_ok" >> /var/etc/smb.conf
[ -n "$guest_only" ] && echo -e "\tguest only = $guest_only" >> /var/etc/smb.conf
[ -n "$inherit_owner" ] && echo -e "\tinherit owner = $inherit_owner" >> /var/etc/smb.conf
-
+
+ [ -n "$write_list" ] && echo -e "\twrite list = $write_list" >> /var/etc/smb.conf
+ [ -n "$read_list" ] && echo -e "\tread list = $read_list" >> /var/etc/smb.conf
+
if [ "$MACOS" -eq 1 ]; then
vfs_objects="catia fruit streams_xattr $vfs_objects"
echo -e "\tfruit:encoding = native" >> /var/etc/smb.conf
PKG_NAME:=ser2net
PKG_VERSION:=3.5.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/ser2net
SECTION:=net
CATEGORY:=Network
TITLE:=Serial to Network Proxy
- URL:=http://sourceforge.net/projects/ser2net/
- DEPENDS:=+USE_UCLIBC:libpthread +USE_UCLIBC:librt
+ URL:=https://sourceforge.net/projects/ser2net/
endef
define Package/ser2net/description
#
PKG_NAME:=shadowsocks-libev
PKG_VERSION:=3.2.5
-PKG_RELEASE:=1
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/shadowsocks/shadowsocks-libev/releases/download/v$(PKG_VERSION)
Section type `ss_local`, `ss_redir`, `ss_tunnel` are for specification of shadowsocks-libev components. They share mostly a common set of options like `local_port`, `verbose`, `fast_open`, `timeout`, etc.
+Plugin options should be specified in `server` section and will be inherited by other compoenents referring to it.
+
We can have multiple instances of component and `server` sections. The relationship between them is many-to-one. This will have the following implications
- It's possible to have both `ss_local` and `ss_redir` referring to the same `server` definition
Note also that `src_ips_xx` and `dst_ips_xx` actually also accepts cidr network representation. Option names are retained in its current form for backward compatibility coniderations
+# incompatible changes
+
+| Commit date | Commit ID | Subject | Comment |
+| ----------- | --------- | ------- | ------- |
+| 2019-05-09 | afe7d3424 | shadowsocks-libev: move plugin options to server section | This is a revision against c19e949 committed 2019-05-06 |
+| 2017-07-02 | b61af9703 | shadowsocks-libev: rewrite | Packaging of shadowsocks-libev was rewritten from scratch |
+
# notes and faq
Useful paths and commands for debugging
#!/bin/sh /etc/rc.common
#
-# Copyright (C) 2017 Yousong Zhou <yszhou4tech@gmail.com>
+# Copyright (C) 2017-2019 Yousong Zhou <yszhou4tech@gmail.com>
#
# This is free software, licensed under the GNU General Public License v3.
# See /LICENSE for more information.
[ -z "$method" ] || json_add_string method "$method"
[ -z "$key" ] || json_add_string key "$key"
[ -z "$password" ] || json_add_string password "$password"
+ [ -z "$plugin" ] || json_add_string plugin "$plugin"
+ [ -z "$plugin_opts" ] || json_add_string plugin_opts "$plugin_opts"
}
ss_mkjson_ss_local_conf() {
'server_port:port' \
'password:string' \
'key:string' \
- "method:or($stream_methods, $aead_methods)"
+ "method:or($stream_methods, $aead_methods)" \
+ 'plugin:string' \
+ 'plugin_opts:string'
}
validate_common_client_options_() {
--- /dev/null
+#
+# Copyright (C) 2019 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:=smcroute
+PKG_VERSION:=2.4.4
+PKG_RELEASE:=1
+PKG_LICENSE:=GPL-2.0-or-later
+PKG_LICENSE_FILES:=COPYING
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=https://github.com/troglobit/smcroute/releases/download/$(PKG_VERSION)
+PKG_HASH:=431be94c46646767f69c85fee445277b7e765a55177d3ee29522416cfe2cc067
+
+PKG_FIXUP:=autoreconf
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/smcroute
+ SECTION:=net
+ CATEGORY:=Network
+ SUBMENU:=Routing and Redirection
+ TITLE:=Static Multicast Routing Daemon
+ URL:=http://troglobit.com/smcroute.html
+ MAINTAINER:=Moritz Warning <moritzwarning@web.de>
+endef
+
+define Package/smcroute/description
+ SMCRoute is a command line tool to manipulate the multicast routes of the Linux kernel.
+endef
+
+define Package/smcroute/conffiles
+ /etc/smcroute.conf
+endef
+
+CONFIGURE_ARGS += \
+ --without-libcap
+
+define Package/smcroute/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_DIR) $(1)/etc/init.d/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/smcrouted $(1)/usr/sbin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/smcroutectl $(1)/usr/bin/
+ $(INSTALL_CONF) $(PKG_BUILD_DIR)/smcroute.conf $(1)/etc
+ $(INSTALL_BIN) ./files/smcroute.init $(1)/etc/init.d/smcroute
+endef
+
+$(eval $(call BuildPackage,smcroute))
--- /dev/null
+#!/bin/sh /etc/rc.common
+
+START=99
+USE_PROCD=1
+PROG=/usr/sbin/smcrouted
+
+start_service() {
+ procd_open_instance
+ procd_set_param command $PROG -n
+ procd_set_param stderr 1
+ procd_set_param stdout 1
+ procd_close_instance
+}
include $(TOPDIR)/rules.mk
PKG_NAME:=socat
-PKG_VERSION:=1.7.3.2
-PKG_RELEASE:=5
+PKG_VERSION:=1.7.3.3
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://www.dest-unreach.org/socat/download
-PKG_HASH:=e3561f808739383eb10fada1e5d4f26883f0311b34fd0af7837d0c95ef379251
+PKG_HASH:=0dd63ffe498168a4aac41d307594c5076ff307aa0ac04b141f8f1cec6594d04a
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
include $(TOPDIR)/rules.mk
PKG_NAME:=stubby
-PKG_VERSION:=0.2.4
+PKG_VERSION:=0.2.6
PKG_RELEASE:=1
PKG_LICENSE:=BSD-3-Clause
PKG_MAINTAINER:=Jonathan Underwood <jonathan.underwood@gmail.com>
PKG_SOURCE_PROTO:=git
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://github.com/getdnsapi/$(PKG_NAME)
-PKG_SOURCE_VERSION:=58200cadec6371f95e31a7f3735225c5a46ecf75
-PKG_MIRROR_HASH:=28c46f4464cb41cf59264d10da63dc25ece9a1d00b4dfb05a9276594658e5eb9
+PKG_SOURCE_VERSION:=v$(PKG_VERSION)
+PKG_MIRROR_HASH:=af896c471ac67b31c2263d11fcdfcdb32a213621c2f8789f4b0a4ceca4437108
PKG_FIXUP:=autoreconf
This option specifies additional command line arguments for
stubby daemon. By default, this is an empty string.
-
+
+#### `option tls_cipher_list`
+
+If set, this specifies the acceptable ciphers for DNS over TLS. With OpenSSL
+1.1.1 this list is for TLS1.2 and older only. Ciphers for TLS1.3 should be set
+with the `tls_ciphersuites` option. This option can also be given per upstream
+resolver. By default, this option is not set.
+
+#### `option tls_ciphersuites`
+
+If set, this specifies the acceptable cipher for DNS over TLS1.3. OpenSSL
+version 1.1.1 or greater is required for this option. This option can also be
+given per upstream resolver. By default, this option is not set.
+
+#### `option tls_min_version`
+
+If set, this specifies the minimum acceptable TLS version. Works with OpenSSL
+1.1.1 or greater only. This option can also be given per upstream resolver. By
+default, this option is not set.
+
+#### `option tls_max_version`
+
+If set, this specifies the maximum acceptable TLS version. Works with OpenSSL
+1.1.1 or greater only. This option can also be given per upstream resolver. By
+default, this option is not set.
+
+
### `resolver` section options
#### `option address`
This option specifies the upstream domain name used for TLS authentication with
the supplied server certificate
+#### `option tls_port`
+
+This option specifies the TLS port for the upstream resolver. If not specified,
+this defaults to 853.
+
+#### `option tls_cipher_list`
+
+If set, this specifies the acceptable ciphers for DNS over TLS. With OpenSSL
+1.1.1 this list is for TLS1.2 and older only. Ciphers for TLS1.3 should be set
+with the `tls_ciphersuites` option. By default, this option is not set. If set,
+this overrides the global value.
+
+#### `option tls_ciphersuites`
+
+If set, this specifies the acceptable cipher for DNS over TLS1.3. OpenSSL
+version 1.1.1 or greater is required for this option. By default, this option is
+not set. If set, this overrides the global value.
+
+#### `option tls_min_version`
+
+If set, this specifies the minimum acceptable TLS version. Works with OpenSSL
+1.1.1 or greater only. By default, this option is not set. If set, this
+overrides the global value.
+
+#### `option tls_max_version`
+
+If set, this specifies the maximum acceptable TLS version. Works with OpenSSL
+1.1.1 or greater only. By default, this options is not set. If set, this
+overrides the global value.
+
#### `list spki`
This list specifies the SPKI pinset which is verified against the keys in the
list listen_address '0::1@5453'
# option log_level '7'
# option command_line_arguments ''
+ # option tls_cipher_list 'EECDH+AESGCM:EECDH+CHACHA20'
+ # option tls_ciphersuites 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256'
+ # option tls_min_version '1.2'
+ # option tls_max_version '1.3'
# Upstream resolvers are specified using 'resolver' sections.
config resolver
option address '2606:4700:4700::1111'
option tls_auth_name 'cloudflare-dns.com'
+ # option tls_port 853
# list spki 'sha256/yioEpqeR4WtDwE9YxNVnCEkTxIjx6EEIwFSQW+lJsbc='
+ # option tls_cipher_list 'EECDH+AESGCM:EECDH+CHACHA20'
+ # option tls_ciphersuites 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256'
+ # option tls_min_version '1.2'
+ # option tls_max_version '1.3'
config resolver
option address '2606:4700:4700::1001'
option tls_auth_name 'cloudflare-dns.com'
+ # option tls_port 853
# list spki 'sha256/yioEpqeR4WtDwE9YxNVnCEkTxIjx6EEIwFSQW+lJsbc='
+ # option tls_cipher_list 'EECDH+AESGCM:EECDH+CHACHA20'
+ # option tls_ciphersuites 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256'
+ # option tls_min_version '1.2'
+ # option tls_max_version '1.3'
config resolver
option address '1.1.1.1'
option tls_auth_name 'cloudflare-dns.com'
+ # option tls_port 853
# list spki 'sha256/yioEpqeR4WtDwE9YxNVnCEkTxIjx6EEIwFSQW+lJsbc='
+ # option tls_cipher_list 'EECDH+AESGCM:EECDH+CHACHA20'
+ # option tls_ciphersuites 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256'
+ # option tls_min_version '1.2'
+ # option tls_max_version '1.3'
config resolver
option address '1.0.0.1'
option tls_auth_name 'cloudflare-dns.com'
+ # option tls_port 853
# list spki 'sha256/yioEpqeR4WtDwE9YxNVnCEkTxIjx6EEIwFSQW+lJsbc='
+ # option tls_cipher_list 'EECDH+AESGCM:EECDH+CHACHA20'
+ # option tls_ciphersuites 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256'
+ # option tls_min_version '1.2'
+ # option tls_max_version '1.3'
local upstream_recursive_servers_section=0
local command_line_arguments
local log_level
+ local tls_cipher_list
+ local tls_ciphersuites
+ local tls_min_version
+ local tls_max_version
# Generate configuration. See: https://github.com/getdnsapi/stubby/blob/develop/stubby.yml.example
echo "# Autogenerated configuration from uci data" > "$config_file"
config_get idle_timeout "global" idle_timeout "10000"
echo "idle_timeout: $idle_timeout" >> "$config_file"
+ config_get tls_cipher_list "global" tls_cipher_list ""
+ if [ -n "$tls_cipher_list" ]; then
+ echo "tls_cipher_list: \"$tls_cipher_list\"" >> "$config_file"
+ fi
+
+ config_get tls_ciphersuites "global" tls_ciphersuites ""
+ if [ -n "$tls_ciphersuites" ]; then
+ echo "tls_ciphersuites: \"$tls_ciphersuites\"" >> "$config_file"
+ fi
+
+ config_get tls_min_version "global" tls_min_version ""
+ if [ -n "$tls_min_version" ]; then
+ echo "tls_min_version: GETDNS_TLS${tls_min_version/\./_}" >> "$config_file"
+ fi
+
+ config_get tls_max_version "global" tls_max_version ""
+ if [ -n "$tls_max_version" ]; then
+ echo "tls_max_version: GETDNS_TLS${tls_max_version/\./_}" >> "$config_file"
+ fi
+
handle_listen_address_value()
{
local value="$1"
local config=$1
local address
local tls_auth_name
+ local tls_port
local tls_pubkey_pinset_section=0
+ local tls_cipher_list
+ local tls_ciphersuites
+ local tls_min_version
+ local tls_max_version
if [ "$upstream_recursive_servers_section" = 0 ]; then
echo "upstream_recursive_servers:" >> "$config_file"
upstream_recursive_servers_section=1
fi
config_get address "$config" address
- config_get tls_auth_name "$config" tls_auth_name
echo " - address_data: $address" >> "$config_file"
+
+ config_get tls_auth_name "$config" tls_auth_name
echo " tls_auth_name: \"$tls_auth_name\"" >> "$config_file"
+ config_get tls_auth_port "$config" tls_port ""
+ if [ -n "$tls_port" ]; then
+ echo " tls_port: $tls_port" >> "$config_file"
+ fi
+
+ config_get tls_cipher_list "$config" tls_cipher_list ""
+ if [ -n "$tls_cipher_list" ]; then
+ echo " tls_cipher_list: \"$tls_cipher_list\"" >> "$config_file"
+ fi
+
+ config_get tls_ciphersuites "$config" tls_ciphersuites ""
+ if [ -n "$tls_ciphersuites" ]; then
+ echo " tls_ciphersuites: \"$tls_ciphersuites\"" >> "$config_file"
+ fi
+
+ config_get tls_min_version "$config" tls_min_version ""
+ if [ -n "$tls_min_version" ]; then
+ echo " tls_min_version: GETDNS_TLS${tls_min_version/\./_}" >> "$config_file"
+ fi
+
+ config_get tls_max_version "$config" tls_max_version ""
+ if [ -n "$tls_max_version" ]; then
+ echo " tls_max_version: GETDNS_TLS${tls_max_version/\./_}" >> "$config_file"
+ fi
+
handle_resolver_spki()
{
local val="$1"
- local digest="${val%/*}"
+ local digest="${val%%/*}"
local value="${val#*/}"
if [ "$tls_pubkey_pinset_section" = 0 ]; then
endef
TARGET_CFLAGS += $(FPIC)
+APU_LIBS=$(shell $(STAGING_DIR)/usr/bin/apu-1-config --link-libtool --libs)
+TARGET_LDFLAGS += $(APU_LIBS)
CONFIGURE_ARGS += \
--with-apr="$(STAGING_DIR)/usr/bin/apr-1-config" \
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=tac_plus
+PKG_VERSION:=4.0.4.28
+PKG_REV:=259251e6f1c2d5c98081a43c6f66d9eb2989cfd8
+PKG_RELEASE:=2
+
+PKG_SOURCE_VERSION:=$(PKG_REV)
+PKG_SOURCE_DATE:=2019.02.11
+PKG_SOURCE_URL:=https://codeload.github.com/facebook/tac_plus/tar.gz/$(PKG_SOURCE_VERSION)?
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_DATE)-$(PKG_SOURCE_VERSION).tar.gz
+PKG_HASH:=3c37d6a8acf66cac4a95558bf3e29686ef3be505a1638e2ef788a7ece41d1b01
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)-$(BUILD_VARIANT)
+PKG_BUILD_SUBDIR:=tacacs-F$(PKG_VERSION)
+
+include $(INCLUDE_DIR)/package.mk
+
+PKG_UNPACK:=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
+
+MAKE_PATH:=$(PKG_BUILD_SUBDIR)
+CONFIGURE_PATH:=$(PKG_BUILD_SUBDIR)
+
+CONFIGURE_ARGS += \
+ --disable-shared \
+ --without-libwrap
+
+ifeq ($(BUILD_VARIANT),without-pam)
+CONFIGURE_VARS += \
+ ac_cv_lib_pam_pam_start=no
+endif
+
+define Package/tac_plus/Default
+ SECTION:=net
+ CATEGORY:=Network
+ TITLE:=TACACS+ daemon
+ URL:=https://github.com/facebook/tac_plus/
+endef
+
+define Package/tac_plus
+$(call Package/tac_plus/Default)
+ TITLE+= (without PAM support)
+ VARIANT:=without-pam
+endef
+
+define Package/tac_plus-pam
+$(call Package/tac_plus/Default)
+ TITLE+= (with PAM support)
+ DEPENDS+= +libpam
+ VARIANT:=with-pam
+endef
+
+define Package/tac_plus/Default/description
+TACACS+ is a protocol (not TACACS or XTACACS) for authentication,
+authorization and accounting (AAA) services for routers and network devices.
+endef
+
+define Package/tac_plus/description
+$(call Package/tac_plus/Default/description)
+This package is built without PAM support.
+endef
+
+define Package/tac_plus-pam/description
+$(call Package/tac_plus/Default/description)
+This package is built with PAM support.
+endef
+
+define Package/tac_plus/Default/conffiles
+/etc/tac_plus.conf
+endef
+
+define Package/tac_plus/conffiles
+$(call Package/tac_plus/Default/conffiles)
+endef
+
+define Package/tac_plus-pam/conffiles
+$(call Package/tac_plus/Default/conffiles)
+endef
+
+define Package/tac_plus/install
+ $(INSTALL_DIR) $(1)/etc/init.d $(1)/usr/sbin
+ $(INSTALL_CONF) ./files/tac_plus.conf $(1)/etc/tac_plus.conf
+ $(INSTALL_BIN) ./files/tac_plus.init $(1)/etc/init.d/tac_plus
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/$(PKG_BUILD_SUBDIR)/tac_plus $(1)/usr/sbin/
+endef
+
+define Package/tac_plus-pam/install
+ $(INSTALL_DIR) $(1)/etc/init.d $(1)/usr/sbin
+ $(INSTALL_CONF) ./files/tac_plus.conf $(1)/etc/tac_plus.conf
+ $(INSTALL_BIN) ./files/tac_plus.init $(1)/etc/init.d/tac_plus
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/$(PKG_BUILD_SUBDIR)/tac_plus $(1)/usr/sbin/
+endef
+
+$(eval $(call BuildPackage,tac_plus))
+$(eval $(call BuildPackage,tac_plus-pam))
--- /dev/null
+#
+# An example tac_plus configuration. You should change this
+# before using it.
+#
+
+# Define where to log accounting data, this is the default.
+accounting file = /var/log/tac_plus.acct
+
+# This is the key that clients have to use to access Tacacs+
+key = testing123
+
+# Use /etc/passwd file to do authentication
+#default authentication = file /etc/passwd
+
+# You can use feature like per host key with different enable passwords
+#host = 127.0.0.1 {
+# key = test
+# type = cisco
+# enable = <des|cleartext> enablepass
+# prompt = "Welcome XXX ISP Access Router \n\nUsername:"
+#}
+
+# We also can define local users and specify a file where data is stored.
+# That file may be filled using tac_pwd
+#user = test1 {
+# name = "Test User"
+# member = staff
+# login = file /etc/tacacs/tacacs_passwords
+#}
+
+# We can also specify rules valid per group of users.
+#group = group1 {
+# cmd = conf {
+# deny
+# }
+#}
+
+# Another example : forbid configure command for some hosts
+# for a define range of clients
+#group = group1 {
+# login = file /etc/passwd
+# service = ppp
+# protocol = ip {
+# addr = 10.10.0.0/24
+# }
+# cmd = conf {
+# deny .*
+# }
+#}
+
+user = DEFAULT {
+ login = file /etc/passwd
+ service = ppp protocol = ip {}
+}
+
+# Much more features are availables, like ACL, more service compatibilities,
+# commands authorization, scripting authorization.
+# See the man page for those features.
--- /dev/null
+#!/bin/sh /etc/rc.common
+
+START=99
+
+USE_PROCD=1
+PROG=/usr/sbin/tac_plus
+
+start_service() {
+ procd_open_instance
+ procd_set_param command "$PROG" -G -C /etc/tac_plus.conf
+ procd_close_instance
+}
--- /dev/null
+--- a/tacacs-F4.0.4.28/configure 2015-01-06 22:55:35.000000000 +0100
++++ b/tacacs-F4.0.4.28/configure 2019-01-31 14:44:28.679272504 +0100
+@@ -3285,11 +3285,9 @@
+ ;;
+ *linux* )
+ # XXX: not sure if /usr/local is necessary.
+- # XXX: linux libwrap needs -lnsl. configure should check for
+- # existence of libnsl instead of hard-coding
+ CPPFLAGS="$CFLAGS -I/usr/local/include"; export CPPFLAGS
+ LDFLAGS="$LDFLAGS -L/usr/local/lib -L/lib"; export LDFLAGS
+- LIBS="-lnsl -lcrypt $LIBS"; export LIBS
++ LIBS="-lcrypt $LIBS"; export LIBS
+ $as_echo "#define LINUX 1" >>confdefs.h
+
+
include $(TOPDIR)/rules.mk
PKG_NAME:=tgt
-PKG_VERSION:=1.0.76
+PKG_VERSION:=1.0.77
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/fujita/tgt/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=fda84ae0cfc71e2b67ca2d073978f60cb52feea5a697601938ff86656bfdd8f9
+PKG_HASH:=7eab72f47e69102c709be2b48b11228470d7a84c88e64f5c354b83ed84d2d04e
PKG_MAINTAINER:=Maxim Storchak <m.storchak@gmail.com>
PKG_LICENSE:=GPL-2.0
# option 'removable' '0'
# 0 = Classic sense format, 1 = Support descriptor format.
# option 'sense_format' '0'
+# Rotaion rate: 0: not reported, 1: non-rotational medium (SSD), 2-1024: reserverd, 1025+: "Nominal rotation rate"
+# option 'rotation_rate' '0'
#config lun 2_1
# option device /mnt/iscsi.img
'scsi_id:string' \
'scsi_sn:string' \
'sense_format:range(0, 1)' \
- 'vendor_id:string'
+ 'vendor_id:string' \
+ 'rotation_rate:uinteger'
}
handle_lun() {
local my_tgtid=${tgt_lun%_*}
local lun=${tgt_lun#*_}
- [ $my_tgtid -eq $tgtid ] || return 0
+ [ "$my_tgtid" -eq "$tgtid" ] || return 0
[ "$2" = 0 ] || {
$logger "Validation failed for LUN $tgt_lun"
return 1
}
- if [ $sync -ne 0 -o $direct -ne 0 ]; then
+ if [ "$sync" -ne 0 ] || [ "$direct" -ne 0 ]; then
local bsoflags
- [ $sync -ne 0 ] && bsoflags="sync"
- [ $direct -ne 0 ] && bsoflags="direct"
- [ $sync -ne 0 -a $direct -ne 0 ] && bsoflags="sync:direct"
+ [ "$sync" -ne 0 ] && bsoflags="sync"
+ [ "$direct" -ne 0 ] && bsoflags="direct"
+ [ "$sync" -ne 0 ] && [ "$direct" -ne 0 ] && bsoflags="sync:direct"
bsoflags="--bsoflags $bsoflags"
fi
blocksize=${blocksize+--blocksize=$blocksize}
local params='' i
- for i in mode_page product_id product_rev readonly removable scsi_id scsi_sn sense_format vendor_id; do
+ for i in mode_page product_id product_rev readonly removable scsi_id scsi_sn sense_format vendor_id rotation_rate; do
eval params=\${$i+$i=\$$i,}\$params
done
local _tgtadm="$tgtadm --mode logicalunit --tid $tgtid --lun $lun"
- $_tgtadm --op new --backing-store $device --device-type $type --bstype $bstype $bsoflags $blocksize || {
+ $_tgtadm --op new --backing-store "$device" --device-type "$type" --bstype "$bstype" $bsoflags $blocksize || {
$logger "Failed to create lun $tgt_lun"
return 1
}
local t
for t in $target; do
[ "$t" -eq "$tgtid" ] && {
- $_tgtadm --op bind --tid $tgtid --user "$user" $outgoing || {
+ $_tgtadm --op bind --tid "$tgtid" --user "$user" $outgoing || {
$logger "Failed to bind user $username to target $tgtid"
return 1
}
local tgtid=$1
local _tgtadm="$tgtadm --mode target"
- [ $tgtid -ge 0 ] || return 1
+ [ "$tgtid" -ge 0 ] || return 1
[ "$2" = 0 ] || {
$logger "Validation failed for target $tgtid"
return 1
}
- $_tgtadm --op new --tid $tgtid --targetname $name || {
+ $_tgtadm --op new --tid "$tgtid" --targetname "$name" || {
$logger "Failed to create target $tgtid"
return 1
}
local i
for i in $allow_address; do
- $_tgtadm --op bind --tid $tgtid --initiator-address $i || {
+ $_tgtadm --op bind --tid "$tgtid" --initiator-address "$i" || {
$logger "Failed to set allow $i to connect to target $tgtid"
return 1
}
done
for i in $allow_name; do
- $_tgtadm --op bind --tid $tgtid --initiator-name $i || {
+ $_tgtadm --op bind --tid "$tgtid" --initiator-name "$i" || {
$logger "Failed to set allow $i to connect to target $tgtid"
return 1
}
}
procd_open_instance
procd_set_param command $PROG -f
- [ "$iothreads" ] && procd_append_param command -t $iothreads
+ [ "$iothreads" ] && procd_append_param command -t "$iothreads"
[ "$portal$nop_interval$nop_count" ] && {
local iscsi="" i
for i in nop_interval nop_count; do
for i in $portal; do
iscsi="portal=$i,$iscsi"
done
- procd_append_param command --iscsi $iscsi
+ procd_append_param command --iscsi "$iscsi"
}
procd_set_param respawn
procd_close_instance
- logger -p daemon.info -t $NAME -s "Configuration will be loaded in seconds"
+ logger -p daemon.info -t "$NAME" -s "Configuration will be loaded in seconds"
( sleep 5; configure || { stop_service; exit 1; } ) &
}
--- /dev/null
+From ced49c99ef0b120d32bcbb3bb6985ff90833052e Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Tue, 30 Apr 2019 22:34:45 -0700
+Subject: [PATCH 1/2] iscsi_tcp: Replace deprecated valloc function
+
+Replaced with posix_memalign as valloc is not available on uClibc.
+
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ usr/iscsi/iscsi_tcp.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/usr/iscsi/iscsi_tcp.c b/usr/iscsi/iscsi_tcp.c
+index 536f22e..5762c23 100644
+--- a/usr/iscsi/iscsi_tcp.c
++++ b/usr/iscsi/iscsi_tcp.c
+@@ -578,7 +578,10 @@ static void iscsi_tcp_free_task(struct iscsi_task *task)
+
+ static void *iscsi_tcp_alloc_data_buf(struct iscsi_connection *conn, size_t sz)
+ {
+- return valloc(sz);
++ void *addr = NULL;
++
++ posix_memalign(&addr, sysconf(_SC_PAGESIZE), sz);
++ return addr;
+ }
+
+ static void iscsi_tcp_free_data_buf(struct iscsi_connection *conn, void *buf)
+--
+2.21.0
+
--- /dev/null
+From 23f3bb1ab8311601db03757a6d4538e747364454 Mon Sep 17 00:00:00 2001
+From: FUJITA Tomonori <fujita.tomonori@gmail.com>
+Date: Fri, 3 May 2019 19:30:07 +0900
+Subject: [PATCH 2/2] iscsi_tcp: fix compile warning
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+iscsi/iscsi_tcp.c: In function ‘iscsi_tcp_alloc_data_buf’:
+iscsi/iscsi_tcp.c:583:2: error: ignoring return value of ‘posix_memalign’, declared with attribute warn_unused_result [-Werror=unused-result]
+ posix_memalign(&addr, sysconf(_SC_PAGESIZE), sz);
+ ^
+
+Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
+---
+ usr/iscsi/iscsi_tcp.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/usr/iscsi/iscsi_tcp.c b/usr/iscsi/iscsi_tcp.c
+index 5762c23..0a076b0 100644
+--- a/usr/iscsi/iscsi_tcp.c
++++ b/usr/iscsi/iscsi_tcp.c
+@@ -579,8 +579,8 @@ static void iscsi_tcp_free_task(struct iscsi_task *task)
+ static void *iscsi_tcp_alloc_data_buf(struct iscsi_connection *conn, size_t sz)
+ {
+ void *addr = NULL;
+-
+- posix_memalign(&addr, sysconf(_SC_PAGESIZE), sz);
++ if (posix_memalign(&addr, sysconf(_SC_PAGESIZE), sz) != 0)
++ return addr;
+ return addr;
+ }
+
+--
+2.21.0
+
include $(TOPDIR)/rules.mk
PKG_NAME:=tor
-PKG_VERSION:=0.3.5.8
-PKG_RELEASE:=3
+PKG_VERSION:=0.4.0.5
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://dist.torproject.org/ \
https://archive.torproject.org/tor-package-archive
-PKG_HASH:=d5c56603942a8927670f50a4a469fb909e29d3571fdd013389d567e57abc0b47
+PKG_HASH:=b5a2cbf0dcd3f1df2675dbd5ec10bbe6f8ae995c41b68cebe2bc95bffc90696e
PKG_MAINTAINER:=Hauke Mehrtens <hauke@hauke-m.de> \
Peter Wagner <tripolar@gmx.at>
PKG_LICENSE_FILES:=LICENSE
$(call Package/transmission/template)
TITLE+= (webinterface)
DEPENDS:=@(PACKAGE_transmission-daemon-openssl||PACKAGE_transmission-daemon-mbedtls)
- CONFLICTS:=transmission-web-control
PKGARCH:=all
endef
PKG_NAME:=collectd
PKG_VERSION:=5.8.1
-PKG_RELEASE:=5
+PKG_RELEASE:=6
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://collectd.org/files/ \
+zlib \
+libltdl \
+libip4tc \
+ +jshn \
+PACKAGE_collectd-mod-lua:liblua
MENU:=1
endef
define Package/collectd/conffiles
/etc/collectd.conf
+/etc/config/collectd
endef
define Package/collectd/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/collectd $(1)/usr/sbin/
+
$(INSTALL_DIR) $(1)/usr/share/collectd
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/collectd/types.db $(1)/usr/share/collectd/
- $(INSTALL_DIR) $(1)/etc
- $(INSTALL_CONF) ./files/collectd.conf $(1)/etc/
+
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/collectd.init $(1)/etc/init.d/collectd
- $(INSTALL_DIR) $(1)/etc/collectd/conf.d
+
+ $(INSTALL_DIR) $(1)/etc/config
+ $(INSTALL_CONF) files/collectd.uci $(1)/etc/config/collectd
endef
# 1: plugin name
$(PKG_INSTALL_DIR)/usr/lib/collectd/$$$$$$$${m}.so \
$$(1)/usr/lib/collectd/ ; \
done
+ if [ -f ./files/usr/share/collectd/plugin/$(1).json ]; then \
+ $(INSTALL_DIR) $$(1)/usr/share/collectd/plugin ; \
+ $(INSTALL_DATA) ./files/usr/share/collectd/plugin/$(1).json \
+ $$(1)/usr/share/collectd/plugin/$(1).json ; \
+ fi
endef
$$(eval $$(call BuildPackage,collectd-mod-$(1)))
+++ /dev/null
-# Config file for collectd. More info: https://collectd.org/
-# Note: Luci statistics will generate a new config and overwrite this file.
-
-#Hostname "localhost"
-#FQDNLookup true
-BaseDir "/var/run/collectd"
-Include "/etc/collectd/conf.d"
-PIDFile "/var/run/collectd.pid"
-PluginDir "/usr/lib/collectd"
-TypesDB "/usr/share/collectd/types.db"
-Interval 30
-ReadThreads 2
-
-LoadPlugin interface
-LoadPlugin load
-#LoadPlugin ping
-LoadPlugin rrdtool
-
-<Plugin rrdtool>
- DataDir "/tmp/rrd"
- RRARows 100
- RRASingle true
- RRATimespan 3600
- RRATimespan 86400
- RRATimespan 604800
- RRATimespan 2678400
- RRATimespan 31622400
-</Plugin>
-
-<Plugin interface>
- IgnoreSelected false
- Interface "br-lan"
-</Plugin>
-
-#<Plugin ping>
-# Host "host.foo.bar"
-# Interval 30
-# TTL 127
-#</Plugin>
#!/bin/sh /etc/rc.common
# Copyright (C) 2006-2016 OpenWrt.org
+. "/usr/share/libubox/jshn.sh"
+
START=80
STOP=10
USE_PROCD=1
+COLLECTD_CONF="/tmp/collectd.conf"
+LOG="logger -t collectd[$$] -p"
NICEPRIO=5
+CONFIG_STRING=""
+
+process_exec() {
+ printf "<Plugin exec>\n" >> "$COLLECTD_CONF"
+ config_foreach process_exec_sections exec_input "Exec"
+ config_foreach process_exec_sections exec_notify "NotificationExec"
+ printf "</Plugin>\n\n" >> "$COLLECTD_CONF"
+}
+
+process_exec_sections() {
+ local cfg="$1"
+ local section="$2"
+
+ local cmdline cmduser cmdgroup
+
+ config_get cmdline "$cfg" cmdline
+ [ -z "$cmdline" ] && {
+ $LOG notice "No cmdline option in config $cfg defined"
+ return 0
+ }
+
+ config_get cmduser "$cfg" cmduser
+ [ -z "$cmduser" ] && {
+ $LOG notice "No cmduser option in config $cfg defined"
+ return 0
+ }
+
+ config_get cmdgroup "$cfg" cmdgroup
+ if [ -z "$cmdgroup" ]; then
+ printf "\\t%s \"%s\" \"%s\"\n" "${section}" "${cmduser}" "${cmdline}" >> "$COLLECTD_CONF"
+ else
+ printf "\\t%s \"%s:%s\" \"%s\"\n" "${section}" "${cmduser}" "${cmdgroup}" "${cmdline}" >> "$COLLECTD_CONF"
+ fi
+}
+
+CONFIG_LIST=""
+add_list_option() {
+ local value="$1"
+ local option="$2"
+ local indent="$3"
+
+ CONFIG_LIST="${CONFIG_LIST}${indent}${option} \"$value\"\n"
+}
+
+process_generic() {
+ local cfg="$1"
+ local indent="$2"
+ local json="$3"
+
+ local config=""
+
+ json_init
+ json_load_file "$json"
+
+ json_select string 1>/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ json_get_keys keys
+ for key in ${keys}; do
+ json_get_var option "$key"
+ config_get value "$cfg" "$option" ""
+ [ -z "$value" ] || {
+ config="${config}${indent}${option} \"${value}\"\n"
+ }
+ done
+ json_select ..
+ fi
+
+ json_select bool 1>/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ json_get_keys keys
+ for key in ${keys}; do
+ json_get_var option "$key"
+ config_get_bool value "$cfg" "$option"
+ if [ "$value" = "0" ]; then
+ config="${config}${indent}${option} false\n"
+ fi
+
+ if [ "$value" = "1" ]; then
+ config="${config}${indent}${option} true\n"
+ fi
+ done
+ json_select ..
+ fi
+
+ json_select list 1>/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ json_get_keys keys
+ for key in ${keys}; do
+ json_get_var option "$key"
+ CONFIG_LIST=""
+ config_list_foreach "$cfg" "$option" add_list_option "$option" "$indent"
+ config="${config}${CONFIG_LIST}"
+ done
+ json_select ..
+ fi
+
+ [ -z "$config" ] || {
+ printf "%s<Plugin %s>\n" "${CONFIG_STRING}" "$cfg" >> "$COLLECTD_CONF"
+ echo -e "${config}" >> "$COLLECTD_CONF"
+ printf "%s</Plugin>\n" "${CONFIG_STRING}" >> "$COLLECTD_CONF"
+ }
+
+ printf "\n" >> "$COLLECTD_CONF"
+}
+
+process_plugins() {
+ local cfg="$1"
+
+ local enable keys key option value
+
+ config_get enable "$cfg" enable 0
+ [ "$enable" = "1" ] || return 0
+
+ [ -f "/usr/lib/collectd/$cfg.so" ] || {
+ $LOG notice "Plugin collectd-mod-$cfg not installed"
+ return 0
+ }
+
+ [ -f "/usr/share/collectd/plugin/$cfg.json" ] || {
+ $LOG notice "Configuration definition file for $cfg not found"
+ return 0
+ }
+
+ printf "LoadPlugin %s\n" "$cfg" >> "$COLLECTD_CONF"
+ case "$cfg" in
+ exec)
+ CONFIG_STRING=""
+ process_exec
+ ;;
+ *)
+ CONFIG_STRING=""
+ process_generic "$cfg" "\\t" "/usr/share/collectd/plugin/$cfg.json"
+ ;;
+ esac
+}
+
+process_config() {
+ local alt_config_file BaseDir Include PIDFile PluginDir TypesDB
+ local Interval ReadThreads Hostname
+
+ rm -f "$COLLECTD_CONF"
+
+ [ -f /etc/config/collectd ] || {
+ $LOG notice "UCI config not found"
+ return 0
+ }
+ config_load collectd
+ config_get alt_config_file globals alt_config_file
+
+ # If "alt_config_file" specified, use that instead
+ [ -n "$alt_config_file" ] && [ -f "$alt_config_file" ] && {
+ rm -f "$COLLECTD_CONF"
+ ln -s "$alt_config_file" "$COLLECTD_CONF"
+ return 0
+ }
+
+ # GOBAL CONFIG
+ config_get BaseDir globals BaseDir "/var/run/collectd"
+ printf "BaseDir \"%s\"\n" "$BaseDir" >> "$COLLECTD_CONF"
+
+ config_get Include globals Include "/tmp/collectd.d"
+ printf "Include \"%s\"\n" "$Include" >> "$COLLECTD_CONF"
+ mkdir -p "$Include"
+
+ config_get PIDFile globals PIDFile "/var/run/collectd.pid"
+ printf "PIDFile \"%s\"\n" "$PIDFile" >> "$COLLECTD_CONF"
+
+ config_get PluginDir globals PluginDir "/usr/lib/collectd"
+ printf "PluginDir \"%s\"\n" "$PluginDir" >> "$COLLECTD_CONF"
+
+ config_get TypesDB globals TypesDB "/usr/share/collectd/types.db"
+ printf "TypesDB \"%s\"\n" "$TypesDB" >> "$COLLECTD_CONF"
+
+ config_get Interval globals Interval 30
+ printf "Interval \"%s\"\n" "$Interval" >> "$COLLECTD_CONF"
+
+ config_get ReadThreads globals ReadThreads 2
+ printf "ReadThreads \"%s\"\n" "$ReadThreads" >> "$COLLECTD_CONF"
+
+ config_get Hostname globals Hostname "$(hostname)"
+ printf "Hostname \"%s\"\n" "$Hostname" >> "$COLLECTD_CONF"
+
+ printf "\n" >> "$COLLECTD_CONF"
+
+ # PLUGIN CONFIG
+ config_foreach process_plugins plugin
+}
+
start_service() {
- mkdir -m 0755 -p /var/lib/collectd
procd_open_instance
- procd_set_param command /usr/sbin/collectd -f
+ procd_set_param command /usr/sbin/collectd
+ procd_append_param command -C "$COLLECTD_CONF"
+ procd_append_param command -f # don't daemonize, procd will handle that for us
procd_set_param nice "$NICEPRIO"
+
+ process_config
+
+ # set auto respawn behavior
+ procd_set_param respawn
procd_close_instance
}
--- /dev/null
+config globals 'globals'
+ option alt_config_file "/etc/collectd.conf"
+# option BaseDir '/var/run/collectd'
+# option Include '/tmp/collectd.d'
+# option PIDFile '/var/run/collectd.pid'
+# option PluginDir '/usr/lib/collectd'
+# option TypesDB '/usr/share/collectd/types.db'
+# option Interval '30'
+# option ReadThreads '2'
+
+#config plugin 'conntrack'
+# option enable '0'
+
+#config plugin 'contextswitch'
+# option enable '0'
+
+#config plugin 'cpu'
+# option enable '0'
+
+#config plugin 'cpufreq'
+# option enable '0'
+
+#config plugin 'csv'
+# option enable '0'
+# option StoreRates '0'
+# option DataDir '/tmp'
+
+#config plugin 'df'
+# option enable '0'
+# list Device '/dev/mtdblock/4'
+# list MountPoint '/jffs'
+# list FSType 'tmpfs'
+# option IgnoreSelected '0'
+
+#config plugin 'disk'
+# option enable '0'
+# list Disk 'hda1'
+# list Disk 'hdb'
+# option IgnoreSelected '0'
+
+#config plugin 'dns'
+# option enable '0'
+# list Interface 'br-lan'
+# list IgnoreSource '127.0.0.1'
+
+#config plugin 'email'
+# option enable '0'
+# option SocketFile '/var/run/collectd/email.sock'
+# option SocketGroup 'nogroup'
+
+#config plugin 'entropy'
+# option enable '0'
+
+#config plugin 'exec'
+# option enable '0'
+
+#config exec_input
+# option cmdline '/usr/bin/stat-dhcpusers'
+# option cmduser 'nobody'
+# option cmdgroup 'nogroup'
+
+#config exec_notify
+# option cmdline '/usr/bin/stat-dhcpusers'
+# option cmduser 'nobody'
+# option cmdgroup 'nogroup'
+
+#config plugin 'interface'
+# option enable '1'
+# list Interface 'br-lan'
+# option IgnoreSelected '0'
+
+#config plugin 'irq'
+# option enable '0'
+# list Irq '2'
+# list Irq '3'
+# list Irq '4'
+# list Irq '7'
+
+#config plugin 'iwinfo'
+# option enable '0'
+
+#config plugin 'load'
+# option enable '0'
+
+#config plugin 'lua'
+# option BasePath '/usr/share/collectd-mod-lua'
+# list Script 'script1.lua'
+# list Script 'script2.lua
+
+#config plugin 'memory'
+# option enable '0'
+
+#config plugin 'netlink'
+# option enable '0'
+# option IgnoreSelected '0'
+# list VerboseInterface 'br-lan'
+# list QDisc 'br-lan'
+
+#config plugin 'nut'
+# option enable '0'
+# option UPS 'myupsname'
+
+#config plugin 'olsrd'
+# option enable '0'
+# option Port '2006'
+# option Host '127.0.0.1'
+
+#config plugin 'openvpn'
+# option enable '0'
+# option StatusFile '/var/run/openvpn/openvpn.status'
+# option CollectIndividualUsers '1'
+# optoin CollectUserCount '1'
+# optoin CollectCompression '1'
+# option ImprovedNamingSchema '0'
+
+#config plugin 'ping'
+# option enable '0'
+# option TTL '127'
+# option Interval '30'
+# list Host '127.0.0.1'
+
+#config plugin 'processes'
+# option enable '0'
+# list Process 'uhttpd'
+# list Process 'dnsmasq'
+# list Process 'dropbear'
+
+#config plugin 'rrdtool'
+# option enable '0'
+# option DataDir '/tmp/rrd'
+# option RRARows '100'
+# option RRASingle '1'
+# list RRATimespan '3600'
+# list RRATimespan '86400'
+# list RRATimespan '604800'
+# list RRATimespan '2678400'
+# list RRATimespan '31622400'
+
+#config plugin 'sensors'
+# option enable '0'
+
+#config plugin 'tcpconns'
+# option enable '0'
+# list ListeningPort '0'
+# list LocalPort '22'
+# list LocalPort '80'
+
+#config plugin 'thermal'
+# option enable '0'
+# option IgnoreSelected '0'
+# list Device ''
+
+#config plugin 'unixsock'
+# option enable '0'
+# option SocketFile '/var/run/collectd/query.sock'
+# option SocketGroup 'nogroup'
+
+#config plugin 'uptime'
+# option enable '0'
+
--- /dev/null
+{
+ "string": [
+ "DataDir"
+ ],
+ "bool": [
+ "StoreRates"
+ ]
+}
--- /dev/null
+{
+ "bool": [
+ "IgnoreSelected"
+ ],
+ "list": [
+ "Device",
+ "MountPoint",
+ "FSType"
+ ]
+}
--- /dev/null
+{
+ "bool": [
+ "IgnoreSelected"
+ ],
+ "list": [
+ "Disk"
+ ]
+}
--- /dev/null
+{
+ "list": [
+ "Interface",
+ "IgnoreSource"
+ ]
+}
--- /dev/null
+{
+ "string": [
+ "SocketFile",
+ "SocketGroup",
+ "SocketPerms",
+ "MaxConns"
+ ]
+}
--- /dev/null
+{
+ "bool": [
+ "IgnoreSelected"
+ ],
+ "list": [
+ "Interface"
+ ]
+}
--- /dev/null
+{
+ "bool": [
+ "IgnoreSelected"
+ ],
+ "list": [
+ "Irq"
+ ]
+}
--- /dev/null
+{
+ "bool": [
+ "IgnoreSelected"
+ ],
+ "list": [
+ "Interface"
+ ]
+}
--- /dev/null
+{
+ "string": [
+ "BasePath"
+ ],
+ "list": [
+ "Script"
+ ]
+}
--- /dev/null
+{
+ "bool": [
+ "IgnoreSelected"
+ ],
+ "list": [
+ "Interface",
+ "VerboseInterface",
+ "QDisc",
+ "Classe",
+ "Filter"
+ ]
+}
--- /dev/null
+{
+ "string": [
+ "UPS"
+ ]
+}
--- /dev/null
+{
+ "string": [
+ "Host",
+ "Port",
+ "CollectLinks",
+ "CollectRoutes",
+ "CollectTopology"
+ ]
+}
--- /dev/null
+{
+ "string": [
+ "StatusFile"
+ ],
+ "bool": [
+ "CollectIndividualUsers",
+ "CollectUserCount",
+ "CollectCompression",
+ "ImprovedNamingSchema"
+ ]
+}
--- /dev/null
+{
+ "string": [
+ "TTL",
+ "Interval"
+ ],
+ "list": [
+ "Host"
+ ]
+}
--- /dev/null
+{
+ "list": [
+ "Process"
+ ]
+}
--- /dev/null
+{
+ "string": [
+ "DataDir",
+ "StepSize",
+ "HeartBeat",
+ "RRARows",
+ "XFF",
+ "CacheFlush",
+ "CacheTimeout"
+ ],
+ "bool": [
+ "RRASingle"
+ ],
+ "list": [
+ "RRATimespan"
+ ]
+}
--- /dev/null
+{
+ "bool": [
+ "IgnoreSelected"
+ ],
+ "list": [
+ "Sensor"
+ ]
+}
--- /dev/null
+{
+ "bool": [
+ "ListeningPorts"
+ ],
+ "list": [
+ "LocalPort",
+ "RemotePort"
+ ]
+}
--- /dev/null
+{
+ "bool": [
+ "IgnoreSelected"
+ ],
+ "list": [
+ "Device"
+ ]
+}
--- /dev/null
+{
+ "string": [
+ "SocketFile",
+ "SocketGroup",
+ "SocketPerms"
+ ]
+}
include $(TOPDIR)/rules.mk
PKG_NAME:=flent-tools
-PKG_VERSION:=1.0.1
-PKG_LICENSE:=GPLv3
+PKG_VERSION:=1.2.2
+PKG_RELEASE:=1
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_REV).tar.gz
-PKG_MIRROR_HASH:=0c4a99179a76e8479bdc7d91c312de7fc9e6d4d54132d1b2aba836138c86440c
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/tohojo/flent
-PKG_REV:=03c72cc340def354024351b6500774b11170d5ba
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=$(PKG_REV)
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/tohojo/flent/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=554bb1b5329cd39113cbb34445765ca6868dbf033aa64832d957d4a09d56adc7
+PKG_BUILD_DIR:=$(BUILD_DIR)/flent-$(PKG_VERSION)
+
+PKG_LICENSE:=GPL-3.0-only
+PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
define Package/flent-tools
SECTION:=utils
include $(TOPDIR)/rules.mk
PKG_NAME:=gawk
-PKG_VERSION:=4.2.1
+PKG_VERSION:=5.0.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GNU/gawk
-PKG_HASH:=d1119785e746d46a8209d28b2de404a57f983aa48670f4e225531d3bdc175551
+PKG_HASH:=50f091ed0eb485ad87dbb620d773a3e2c31a27f75f5e008f7bf065055f024406
PKG_LICENSE:=GPL
PKG_LICENSE_FILES:=COPYING
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=hashdeep
+PKG_VERSION:=4.4
+PKG_RELEASE:=1
+PKG_MAINTAINER=Tobe Deprez <trldp@outlook.com>
+PKG_LICENSE:=NLPL
+PKG_LICENSE_FILES:=COPYING
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/jessek/hashdeep/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=ad78d42142f9a74fe8ec0c61bc78d6588a528cbb9aede9440f50b6ff477f3a7f
+
+PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/uclibc++.mk
+include $(INCLUDE_DIR)/package.mk
+
+define Package/hashdeep
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=Recursively compute hashsums or piecewise hashings
+ URL:=http://md5deep.sourceforge.net/
+ DEPENDS:=$(CXX_DEPENDS)
+endef
+
+define Package/hashdeep/description
+ hashdeep is a set of tools to compute MD5, SHA1, SHA256, tiger
+ and whirlpool hashsums of arbitrary number of files recursively.
+endef
+
+define Package/hashdeep/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/hashdeep \
+ $(PKG_INSTALL_DIR)/usr/bin/md5deep \
+ $(PKG_INSTALL_DIR)/usr/bin/sha1deep \
+ $(PKG_INSTALL_DIR)/usr/bin/sha256deep \
+ $(PKG_INSTALL_DIR)/usr/bin/tigerdeep \
+ $(PKG_INSTALL_DIR)/usr/bin/whirlpooldeep \
+ $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,hashdeep))
+
PKG_NAME:=hfsprogs
PKG_VERSION:=332.25
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_LICENSE:=GPL-3.0+
PKG_LICENSE_FILES:=COPYING
--- /dev/null
+--- a/newfs_hfs.tproj/makehfs.c
++++ b/newfs_hfs.tproj/makehfs.c
+@@ -376,7 +376,7 @@ make_hfsplus(const DriveInfo *driveInfo, hfsparams_t *defaults)
+ if ( (temp & 0x01FF) != 0 )
+ temp = (temp + kBytesPerSector) & 0xFFFFFE00;
+
+- nodeBuffer = valloc((size_t)temp);
++ (void)posix_memalign(&nodeBuffer, sysconf(_SC_PAGESIZE), (size_t)temp);
+ if (nodeBuffer == NULL)
+ err(1, NULL);
+
+@@ -1814,7 +1814,7 @@ ClearDisk(const DriveInfo *driveInfo, UInt64 startingSector, UInt32 numberOfSect
+
+ bufferSize = bufferSizeInSectors << kLog2SectorSize;
+
+- tempBuffer = valloc((size_t)bufferSize);
++ (void)posix_memalign(&tempBuffer, sysconf(_SC_PAGESIZE), (size_t)bufferSize);
+ if (tempBuffer == NULL)
+ err(1, NULL);
+
config LXC_SECCOMP
bool "Enable support for seccomp in LXC"
default KERNEL_SECCOMP
+ depends on !arc
help
Build LXC with support for seccomp filters.
Select libseccomp which also pulls-in the needed kernel features.
PKG_NAME:=lxc
PKG_VERSION:=2.1.1
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_LICENSE:=LGPL-2.1+ BSD-2-Clause GPL-2.0
PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
--- /dev/null
+From f48b5fd8ab03c200eaf5e3a9b03bcd01b2659cf3 Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Date: Thu, 2 Nov 2017 16:00:33 +0100
+Subject: [PATCH] Fix compilation on toolchain without prlimit
+
+Some toolchains which are not bionic like uclibc does not support
+prlimit or prlimit64. In this case, return an error.
+Moreover, if prlimit64 is available, use lxc implementation of prlimit.
+
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+---
+ configure.ac | 4 ++++
+ src/lxc/Makefile.am | 6 ++++++
+ src/lxc/conf.c | 12 +++++++++---
+ 3 files changed, 19 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 642b78e7e1..63df7466cb 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -643,6 +643,10 @@ AC_CHECK_FUNCS([prlimit],
+ AM_CONDITIONAL(HAVE_PRLIMIT, true)
+ AC_DEFINE(HAVE_PRLIMIT,1,[Have prlimit]),
+ AM_CONDITIONAL(HAVE_PRLIMIT, false))
++AC_CHECK_FUNCS([prlimit64],
++ AM_CONDITIONAL(HAVE_PRLIMIT64, true)
++ AC_DEFINE(HAVE_PRLIMIT64,1,[Have prlimit64]),
++ AM_CONDITIONAL(HAVE_PRLIMIT64, false))
+
+ # Check for some libraries
+ AC_SEARCH_LIBS(sem_open, [rt pthread])
+diff --git a/src/lxc/Makefile.am b/src/lxc/Makefile.am
+index fff32ae4f3..8f0c11ecae 100644
+--- a/src/lxc/Makefile.am
++++ b/src/lxc/Makefile.am
+@@ -45,7 +45,10 @@ noinst_HEADERS += \
+ ../include/ifaddrs.h \
+ ../include/openpty.h \
+ ../include/lxcmntent.h
++endif
++
+ if !HAVE_PRLIMIT
++if HAVE_PRLIMIT64
+ noinst_HEADERS += ../include/prlimit.h
+ endif
+ endif
+@@ -142,7 +145,10 @@ liblxc_la_SOURCES += \
+ ../include/ifaddrs.c ../include/ifaddrs.h \
+ ../include/openpty.c ../include/openpty.h \
+ ../include/lxcmntent.c ../include/lxcmntent.h
++endif
++
+ if !HAVE_PRLIMIT
++if HAVE_PRLIMIT64
+ liblxc_la_SOURCES += ../include/prlimit.c ../include/prlimit.h
+ endif
+ endif
+diff --git a/src/lxc/conf.c b/src/lxc/conf.c
+index 44d9784303..8a66f2d02c 100644
+--- a/src/lxc/conf.c
++++ b/src/lxc/conf.c
+@@ -100,13 +100,14 @@
+
+ #if IS_BIONIC
+ #include <../include/lxcmntent.h>
+-#ifndef HAVE_PRLIMIT
+-#include <../include/prlimit.h>
+-#endif
+ #else
+ #include <mntent.h>
+ #endif
+
++#if !defined(HAVE_PRLIMIT) && defined(HAVE_PRLIMIT64)
++#include <../include/prlimit.h>
++#endif
++
+ lxc_log_define(lxc_conf, lxc);
+
+ #if HAVE_LIBCAP
+@@ -2457,10 +2458,15 @@ int setup_resource_limits(struct lxc_list *limits, pid_t pid) {
+ return -1;
+ }
+
++#if HAVE_PRLIMIT || HAVE_PRLIMIT64
+ if (prlimit(pid, resid, &lim->limit, NULL) != 0) {
+ ERROR("failed to set limit %s: %s", lim->resource, strerror(errno));
+ return -1;
+ }
++#else
++ ERROR("Cannot set limit %s as prlimit is missing", lim->resource);
++ return -1;
++#endif
+ }
+ return 0;
+ }
include $(TOPDIR)/rules.mk
PKG_NAME:=mariadb
-PKG_VERSION:=10.2.22
+PKG_VERSION:=10.2.24
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/$(PKG_NAME)-$(PKG_VERSION)/source \
https://downloads.mariadb.org/interstitial/$(PKG_NAME)-$(PKG_VERSION)/source
-PKG_HASH:=42f4c54c29b7c196bd105bbf4d2ea721f869b14cb7ba436c3566e6dd2760614c
+PKG_HASH:=97f4d924e69f77abb2f650116785c2f5ef356230442534ebcbaadb51d9bb8bc4
PKG_MAINTAINER:=Sebastian Kemper <sebastian_ml@gmx.net>
PKG_LICENSE:=GPL-2.0 LGPL-2.1
PKG_LICENSE_FILES:=COPYING libmariadb/COPYING.LIB
+PKG_CPE_ID:=cpe:/a:mariadb:mariadb
+
HOST_BUILD_PARALLEL:=1
PKG_BUILD_PARALLEL:=1
PKG_USE_MIPS16:=0
endef
define Package/mariadb/description/Default
-MariaDB is a fast, stable and true multi-user, multi-threaded SQL
-database server. SQL (Structured Query Language) is the most popular
-database query language in the world. The main goals of MariaDB are
-speed, robustness and ease of use.
+MariaDB is a very fast and robust SQL database server.
endef
define Package/libmariadb/Default
NAME=mysqld
-LOGGER="/usr/bin/logger -p user.err -s -t $NAME"
+LOGGER="/usr/bin/logger -p user.err -s -t $NAME --"
COMMAND=/usr/bin/$NAME
mysqld_get_param() {
start_service() {
local conf=/etc/mysql/my.cnf
local dir
- local user=mariadb
+ local user
+ local group
+
+ local logfile
local datadir
local logdir=/var/log/mysql
local log_stdout
local options
+ local hint="please fix your server configuration in /etc/mysql/"
+
if [ ! -x $COMMAND ]; then
$LOGGER $COMMAND is missing
exit 1
config_get options general options
datadir=$(mysqld_get_param datadir)
+ logfile=$(mysqld_get_param general_log_file)
tmpdir=$(mysqld_get_param tmpdir)
+ user=$(mysqld_get_param user)
if [ -z "$datadir" ]; then
$LOGGER datadir is not set
+ $LOGGER $hint
exit 1
fi
if [ -z "$tmpdir" ]; then
- $LOGGER tmpdir is not set.
+ $LOGGER tmpdir is not set
+ $LOGGER $hint
exit 1
fi
- [ -e "$datadir" ] || mkdir -p "$datadir"
+ if [ -z "$user" ]; then
+ $LOGGER user is not set
+ $LOGGER $hint
+ exit 1
+ fi
- for dir in "$logdir" "$rundir" "$tmpdir"; do
- if [ ! -e "$dir" ]; then
- mkdir -p "$dir"
- chown $user "$dir"
- fi
- done
+ user_exists "$user" || {
+ $LOGGER user \""$user"\" does not exist
+ $LOGGER $hint
+ exit 1
+ }
+
+ group=$(id -g -n "$user")
+
+ group_exists "$group" || {
+ $LOGGER group \""$group"\" does not exist
+ $LOGGER user \""$user"\" not configured correctly
+ exit 1
+ }
+
+ [ -n "$logfile" ] && logdir=$(dirname "$logfile")
+
+ # do not touch directories that already exist
+ # posix shell does not support arrays, hence using awk
+ awk \
+ -v user="$user" \
+ -v group="$group" \
+ -v a="$datadir" \
+ -v b="$logdir" \
+ -v c="$rundir" \
+ -v d="$tmpdir" \
+ '
+ BEGIN {
+ dir[0]=a
+ dir[1]=b
+ dir[2]=c
+ dir[3]=d
+ for (x in dir) {
+ if (system("test ! -e \"" dir[x] "\"" )) {
+ delete dir[x]
+ }
+ }
+ for (x in dir) {
+ system("mkdir -p \"" dir[x] "\"" )
+ system("chmod 750 \"" dir[x] "\"" )
+ system("chown \"" user "\":\"" group "\" \"" dir[x] "\"" )
+ }
+ }
+ '
if [ ! -f "$datadir/mysql/tables_priv.MYD" ]; then
- $LOGGER "cannot detect privileges table, you might need to"
- $LOGGER "run 'mysql_install_db --force' to initialize the system tables"
+ local args="--force"
+ local basedir=$(mysqld_get_param basedir)
+ [ -n "$basedir" ] && args="$args --basedir=$basedir"
+
+ $LOGGER Cannot detect privileges table. You might need to run
+ $LOGGER \'mysql_install_db $args\'
+ $LOGGER to initialize the system tables.
exit 1
fi
--- a/scripts/mysql_install_db.sh
+++ b/scripts/mysql_install_db.sh
-@@ -399,7 +399,7 @@ fi
+@@ -403,7 +403,7 @@ fi
# Try to determine the hostname
# define UT_RESUME_PRIORITY_CPU() ((void)0)
--- a/storage/innobase/include/ut0ut.h
+++ b/storage/innobase/include/ut0ut.h
-@@ -70,9 +70,8 @@ typedef time_t ib_time_t;
+@@ -71,9 +71,8 @@ typedef time_t ib_time_t;
the YieldProcessor macro defined in WinNT.h. It is a CPU architecture-
independent way by using YieldProcessor. */
# define UT_RELAX_CPU() YieldProcessor()
#else
# define UT_RELAX_CPU() do { \
volatile int32 volatile_var; \
-@@ -90,9 +89,8 @@ typedef time_t ib_time_t;
+@@ -91,9 +90,8 @@ typedef time_t ib_time_t;
#endif
#if defined(HAVE_HMT_PRIORITY_INSTRUCTION)
PKG_NAME:=oath-toolkit
PKG_VERSION:=2.6.2
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=oath-toolkit-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SAVANNAH/oath-toolkit
return ((fp->_flags & _IO_NO_WRITES) != 0
|| ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0
&& fp->_IO_read_base != NULL));
-diff --git a/liboath/gl/fseeko.c b/liboath/gl/fseeko.c
-index 67bb9ec..5616221 100644
---- a/liboath/gl/fseeko.c
-+++ b/liboath/gl/fseeko.c
-@@ -47,7 +47,7 @@ fseeko (FILE *fp, off_t offset, int whence)
- #endif
-
- /* These tests are based on fpurge.c. */
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_ftrylockfile || __GNU_LIBRARY__ /* GNU libc, BeOS, Haiku, Linux libc5 */
- if (fp->_IO_read_end == fp->_IO_read_ptr
- && fp->_IO_write_ptr == fp->_IO_write_base
- && fp->_IO_save_base == NULL)
-@@ -123,7 +123,7 @@ fseeko (FILE *fp, off_t offset, int whence)
- return -1;
- }
-
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_ftrylockfile || __GNU_LIBRARY__ /* GNU libc, BeOS, Haiku, Linux libc5 */
- fp->_flags &= ~_IO_EOF_SEEN;
- fp->_offset = pos;
- #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
diff --git a/liboath/gl/stdio-impl.h b/liboath/gl/stdio-impl.h
index 4c02c9f..393ef0c 100644
--- a/liboath/gl/stdio-impl.h
include $(TOPDIR)/rules.mk
PKG_NAME:=pcsc-lite
-PKG_VERSION:=1.8.24
+PKG_VERSION:=1.8.25
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://pcsclite.apdu.fr/files/
-PKG_HASH:=b81864fa6a5ec776639c02ae89998955f7702a8d10e8b8f70023c5a599d97568
+PKG_HASH:=d76d79edc31cf76e782b9f697420d3defbcc91778c3c650658086a1b748e8792
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=COPYING
include $(TOPDIR)/rules.mk
PKG_NAME:=pcsc-tools
-PKG_VERSION=1.5.3
+PKG_VERSION=1.5.4
PKG_RELEASE:=1
PKG_MAINTAINER:=
PKG_LICENSE:=GPL-2.0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://ludovic.rousseau.free.fr/softwares/pcsc-tools/
-PKG_HASH:=daaa011c28daa00653bd8e2a3d8b0b9f8abae00f7344f50b1a94fbd2b01f1d14
+PKG_HASH:=c39e6abba781895220c68df5e5d2f0f9547c7a676eebec3f1ddcff8794377c93
PKG_FIXUP:=autoreconf
-#
+#
# Copyright (C) 2017 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
include $(TOPDIR)/rules.mk
PKG_NAME:=rtl_433
-PKG_VERSION:=18.05
+PKG_VERSION:=18.12
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/merbanan/rtl_433/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=4710105234e3b71ae839e2d3f2628d6c12879fcda9c849fffe847d4de42a74f3
-
-CMAKE_INSTALL:=1
+PKG_HASH:=8d9a0d57155430b03d299effd48b43b7e072f49868485f0fc79294a28402d654
+PKG_MAINTAINER:=Jasper Scholte <NightNL@outlook.com>
PKG_LICENSE:=GPLv2
PKG_LICENSE_FILES:=COPYING
+CMAKE_INSTALL:=1
+
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
CATEGORY:=Utilities
DEPENDS:=+librtlsdr +rtl-sdr +libtool-bin
URL:=https://github.com/merbanan/rtl_433
- MAINTAINER:=Jasper Scholte <NightNL@outlook.com>
endef
define Package/rtl-sdr/description
--- /dev/null
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -50,7 +50,7 @@ if (("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_C_COMPILER_ID}" MATCHES
+ ADD_DEFINITIONS(-std=c99)
+ ADD_DEFINITIONS(-pedantic)
+ # for strdup, setenv
+- ADD_DEFINITIONS(-D_POSIX_C_SOURCE=200809)
++ ADD_DEFINITIONS(-D_GNU_SOURCE)
+ #http://gcc.gnu.org/wiki/Visibility
+ add_definitions(-fvisibility=hidden)
+
-#
+#
# Copyright (C) 2006-2013 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
include $(TOPDIR)/rules.mk
PKG_NAME:=swig
-PKG_VERSION:=3.0.12
-PKG_RELEASE:=2
+PKG_VERSION:=4.0.0
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/$(PKG_NAME)
-PKG_HASH:=7cf9f447ae7ed1c51722efc45e7f14418d15d7a1e143ac9f09a668999f4fc94d
+PKG_HASH:=e8a39cd6437e342cdcbd5af27a9bf11b62dc9efec9248065debcb8276fcbb925
PKG_INSTALL:=1
PKG_MAINTAINER:=John Crispin <blogic@openwrt.org>, Hirokazu MORIKAWA <morikw2@gmail.com>
+++ /dev/null
-From 1a5aadcd66e85c63d228bfd811a521d617c22a38 Mon Sep 17 00:00:00 2001
-From: Patrick Schneider <patrick.schneider@meetnow.eu>
-Date: Thu, 13 Apr 2017 15:02:53 +0200
-Subject: [PATCH] Add Node 7.x aka V8 5.2+ support
-
-* Use WeakCallbackInfo instead of WeakCallbackData
-* Use GetPrivate instead of GetHiddenValue
-* Adopted new signature for SetWeak to support destructor calling
-* SetAccessor deprecation fixed
-* Proper version checks where applicable
-
-Upstream-Status: Submitted [https://github.com/swig/swig/pull/968]
-
-Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
----
- Lib/javascript/v8/javascriptcode.swg | 27 +++++++++++++++++-----
- Lib/javascript/v8/javascripthelpers.swg | 29 +++++++++++++++++++++---
- Lib/javascript/v8/javascriptinit.swg | 16 +++++++++++--
- Lib/javascript/v8/javascriptrun.swg | 40 ++++++++++++++++++++++++++++-----
- 4 files changed, 95 insertions(+), 17 deletions(-)
-
-diff --git a/Lib/javascript/v8/javascriptcode.swg b/Lib/javascript/v8/javascriptcode.swg
-index fb7d55c..b8c5089 100644
---- a/Lib/javascript/v8/javascriptcode.swg
-+++ b/Lib/javascript/v8/javascriptcode.swg
-@@ -133,10 +133,13 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent<v8::Value> object, v
- SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(parameter);
- #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
- static void $jswrapper(v8::Isolate *isolate, v8::Persistent<v8::Object> *object, SWIGV8_Proxy *proxy) {
--#else
-+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data) {
- v8::Local<v8::Object> object = data.GetValue();
- SWIGV8_Proxy *proxy = data.GetParameter();
-+#else
-+ static void $jswrapper(const v8::WeakCallbackInfo<SWIGV8_Proxy> &data) {
-+ SWIGV8_Proxy *proxy = data.GetParameter();
- #endif
-
- if(proxy->swigCMemOwn && proxy->swigCObject) {
-@@ -147,7 +150,9 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &dat
- }
- delete proxy;
-
-+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- object.Clear();
-+#endif
-
- #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710)
- object.Dispose();
-@@ -155,7 +160,7 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &dat
- object.Dispose(isolate);
- #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032100)
- object->Dispose(isolate);
--#else
-+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- object->Dispose();
- #endif
- }
-@@ -177,10 +182,13 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent<v8::Value> object, v
- SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(parameter);
- #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
- static void $jswrapper(v8::Isolate *isolate, v8::Persistent< v8::Object> *object, SWIGV8_Proxy *proxy) {
--#else
-+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data) {
- v8::Local<v8::Object> object = data.GetValue();
- SWIGV8_Proxy *proxy = data.GetParameter();
-+#else
-+static void $jswrapper(const v8::WeakCallbackInfo<SWIGV8_Proxy> &data) {
-+ SWIGV8_Proxy *proxy = data.GetParameter();
- #endif
-
- if(proxy->swigCMemOwn && proxy->swigCObject) {
-@@ -197,7 +205,7 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &dat
- object->Dispose(isolate);
- #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
- object->Dispose();
--#else
-+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- object.Clear();
- #endif
- }
-@@ -211,7 +219,11 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &dat
- * ----------------------------------------------------------------------------- */
- %fragment("js_getter", "templates")
- %{
-+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- static SwigV8ReturnValue $jswrapper(v8::Local<v8::String> property, const SwigV8PropertyCallbackInfo &info) {
-+#else
-+static SwigV8ReturnValue $jswrapper(v8::Local<v8::Name> property, const SwigV8PropertyCallbackInfo &info) {
-+#endif
- SWIGV8_HANDLESCOPE();
-
- v8::Handle<v8::Value> jsresult;
-@@ -233,8 +245,11 @@ fail:
- * ----------------------------------------------------------------------------- */
- %fragment("js_setter", "templates")
- %{
--static void $jswrapper(v8::Local<v8::String> property, v8::Local<v8::Value> value,
-- const SwigV8PropertyCallbackInfoVoid &info) {
-+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
-+static void $jswrapper(v8::Local<v8::String> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid &info) {
-+#else
-+static void $jswrapper(v8::Local<v8::Name> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid &info) {
-+#endif
- SWIGV8_HANDLESCOPE();
-
- $jslocals
-diff --git a/Lib/javascript/v8/javascripthelpers.swg b/Lib/javascript/v8/javascripthelpers.swg
-index 091467d..7461079 100644
---- a/Lib/javascript/v8/javascripthelpers.swg
-+++ b/Lib/javascript/v8/javascripthelpers.swg
-@@ -6,11 +6,16 @@ typedef v8::InvocationCallback SwigV8FunctionCallback;
- typedef v8::AccessorGetter SwigV8AccessorGetterCallback;
- typedef v8::AccessorSetter SwigV8AccessorSetterCallback;
- typedef v8::AccessorInfo SwigV8PropertyCallbackInfoVoid;
--#else
-+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- typedef v8::FunctionCallback SwigV8FunctionCallback;
- typedef v8::AccessorGetterCallback SwigV8AccessorGetterCallback;
- typedef v8::AccessorSetterCallback SwigV8AccessorSetterCallback;
- typedef v8::PropertyCallbackInfo<void> SwigV8PropertyCallbackInfoVoid;
-+#else
-+typedef v8::FunctionCallback SwigV8FunctionCallback;
-+typedef v8::AccessorNameGetterCallback SwigV8AccessorGetterCallback;
-+typedef v8::AccessorNameSetterCallback SwigV8AccessorSetterCallback;
-+typedef v8::PropertyCallbackInfo<void> SwigV8PropertyCallbackInfoVoid;
- #endif
-
- /**
-@@ -65,18 +70,36 @@ SWIGRUNTIME void SWIGV8_AddStaticFunction(v8::Handle<v8::Object> obj, const char
- */
- SWIGRUNTIME void SWIGV8_AddStaticVariable(v8::Handle<v8::Object> obj, const char* symbol,
- SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter) {
-+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- obj->SetAccessor(SWIGV8_SYMBOL_NEW(symbol), getter, setter);
-+#else
-+ obj->SetAccessor(SWIGV8_CURRENT_CONTEXT(), SWIGV8_SYMBOL_NEW(symbol), getter, setter);
-+#endif
- }
-
--SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::String> property, v8::Local<v8::Value> value,
-- const SwigV8PropertyCallbackInfoVoid& info)
-+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
-+SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::String> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid& info)
-+#else
-+SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::Name> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid& info)
-+#endif
- {
- char buffer[256];
- char msg[512];
- int res;
-
-+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- property->WriteUtf8(buffer, 256);
- res = sprintf(msg, "Tried to write read-only variable: %s.", buffer);
-+#else
-+ v8::Local<v8::String> sproperty;
-+ if (property->ToString(SWIGV8_CURRENT_CONTEXT()).ToLocal(&sproperty)) {
-+ sproperty->WriteUtf8(buffer, 256);
-+ res = sprintf(msg, "Tried to write read-only variable: %s.", buffer);
-+ }
-+ else {
-+ res = -1;
-+ }
-+#endif
-
- if(res<0) {
- SWIG_exception(SWIG_ERROR, "Tried to write read-only variable.");
-diff --git a/Lib/javascript/v8/javascriptinit.swg b/Lib/javascript/v8/javascriptinit.swg
-index 34befa7..86008d9 100644
---- a/Lib/javascript/v8/javascriptinit.swg
-+++ b/Lib/javascript/v8/javascriptinit.swg
-@@ -7,15 +7,27 @@ SWIG_V8_SetModule(void *, swig_module_info *swig_module) {
- v8::Local<v8::Object> global_obj = SWIGV8_CURRENT_CONTEXT()->Global();
- v8::Local<v8::External> mod = SWIGV8_EXTERNAL_NEW(swig_module);
- assert(!mod.IsEmpty());
-+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- global_obj->SetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data"), mod);
-+#else
-+ v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data"));
-+ global_obj->SetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey, mod);
-+#endif
- }
-
- SWIGRUNTIME swig_module_info *
- SWIG_V8_GetModule(void *) {
- v8::Local<v8::Object> global_obj = SWIGV8_CURRENT_CONTEXT()->Global();
-+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- v8::Local<v8::Value> moduleinfo = global_obj->GetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data"));
-+#else
-+ v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data"));
-+ v8::Local<v8::Value> moduleinfo;
-+ if (!global_obj->GetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey).ToLocal(&moduleinfo))
-+ return 0;
-+#endif
-
-- if (moduleinfo.IsEmpty())
-+ if (moduleinfo.IsEmpty() || moduleinfo->IsNull() || moduleinfo->IsUndefined())
- {
- // It's not yet loaded
- return 0;
-@@ -23,7 +35,7 @@ SWIG_V8_GetModule(void *) {
-
- v8::Local<v8::External> moduleinfo_extern = v8::Local<v8::External>::Cast(moduleinfo);
-
-- if (moduleinfo_extern.IsEmpty())
-+ if (moduleinfo_extern.IsEmpty() || moduleinfo_extern->IsNull() || moduleinfo_extern->IsUndefined())
- {
- // Something's not right
- return 0;
-diff --git a/Lib/javascript/v8/javascriptrun.swg b/Lib/javascript/v8/javascriptrun.swg
-index 5ac52a5..30002c0 100644
---- a/Lib/javascript/v8/javascriptrun.swg
-+++ b/Lib/javascript/v8/javascriptrun.swg
-@@ -193,8 +193,10 @@ public:
- void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Value> object, void *parameter);
- #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
- void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy);
--#else
-+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- void (*dtor) (const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data);
-+#else
-+ void (*dtor) (const v8::WeakCallbackInfo<SWIGV8_Proxy> &data);
- #endif
- };
-
-@@ -241,9 +243,12 @@ SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Val
- SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(parameter);
- #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
- SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy) {
--#else
-+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data) {
- SWIGV8_Proxy *proxy = data.GetParameter();
-+#else
-+SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackInfo<SWIGV8_Proxy> &data) {
-+ SWIGV8_Proxy *proxy = data.GetParameter();
- #endif
-
- delete proxy;
-@@ -312,12 +317,18 @@ SWIGRUNTIME void SWIGV8_SetPrivateData(v8::Handle<v8::Object> obj, void *ptr, sw
- } else {
- cdata->handle.MakeWeak(cdata, SWIGV8_Proxy_DefaultDtor);
- }
--#else
-+#elifif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) {
- cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor);
- } else {
- cdata->handle.SetWeak(cdata, SWIGV8_Proxy_DefaultDtor);
- }
-+#else
-+ if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) {
-+ cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor, v8::WeakCallbackType::kParameter);
-+ } else {
-+ cdata->handle.SetWeak(cdata, SWIGV8_Proxy_DefaultDtor, v8::WeakCallbackType::kParameter);
-+ }
- #endif
-
- #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710)
-@@ -470,7 +481,14 @@ int SwigV8Packed_Check(v8::Handle<v8::Value> valRef) {
-
- v8::Handle<v8::Object> objRef = valRef->ToObject();
- if(objRef->InternalFieldCount() < 1) return false;
-+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- v8::Handle<v8::Value> flag = objRef->GetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__"));
-+#else
-+ v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__"));
-+ v8::Local<v8::Value> flag;
-+ if (!objRef->GetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey).ToLocal(&flag))
-+ return false;
-+#endif
- return (flag->IsBoolean() && flag->BooleanValue());
- }
-
-@@ -519,10 +537,13 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persist
- SwigV8PackedData *cdata = static_cast<SwigV8PackedData *>(parameter);
- #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
- SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persistent<v8::Object> *object, SwigV8PackedData *cdata) {
--#else
-+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackData<v8::Object, SwigV8PackedData> &data) {
- v8::Local<v8::Object> object = data.GetValue();
- SwigV8PackedData *cdata = data.GetParameter();
-+#else
-+SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackInfo<SwigV8PackedData> &data) {
-+ SwigV8PackedData *cdata = data.GetParameter();
- #endif
-
- delete cdata;
-@@ -537,7 +558,7 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackData<v8::Ob
- object->Dispose(isolate);
- #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
- object->Dispose();
--#else
-+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- object.Clear();
- #endif
- }
-@@ -550,7 +571,12 @@ v8::Handle<v8::Value> SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf
- // v8::Handle<v8::Object> obj = SWIGV8_OBJECT_NEW();
- v8::Local<v8::Object> obj = SWIGV8_OBJECT_NEW();
-
-+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- obj->SetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__"), SWIGV8_BOOLEAN_NEW(true));
-+#else
-+ v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__"));
-+ obj->SetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey, SWIGV8_BOOLEAN_NEW(true));
-+#endif
-
- #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031511)
- obj->SetPointerInInternalField(0, cdata);
-@@ -573,9 +599,11 @@ v8::Handle<v8::Value> SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf
- cdata->handle.MakeWeak(v8::Isolate::GetCurrent(), cdata, _wrap_SwigV8PackedData_delete);
- #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
- cdata->handle.MakeWeak(cdata, _wrap_SwigV8PackedData_delete);
--#else
-+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete);
- // v8::V8::SetWeak(&cdata->handle, cdata, _wrap_SwigV8PackedData_delete);
-+#else
-+ cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete, v8::WeakCallbackType::kParameter);
- #endif
-
- #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710)
---
-2.9.5
-
-#
-# Copyright (C) 2009-2016 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
include $(TOPDIR)/rules.mk
PKG_NAME:=tmux
-PKG_VERSION:=2.8
+PKG_VERSION:=2.9a
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/tmux/tmux/releases/download/$(PKG_VERSION)
-PKG_HASH:=7f6bf335634fafecff878d78de389562ea7f73a7367f268b66d37ea13617a2ba
+PKG_HASH:=839d167a4517a6bffa6b6074e89a9a8630547b2dea2086f1fad15af12ab23b25
PKG_MAINTAINER:=Maxim Storchak <m.storchak@gmail.com>
PKG_LICENSE:=ISC
include $(TOPDIR)/rules.mk
PKG_NAME:=usbmuxd
-PKG_VERSION:=1.1.1
-PKG_RELEASE:=4
-PKG_SOURCE_PROTO:=git
+PKG_SOURCE_DATE:=2019-03-04
+PKG_SOURCE_VERSION:=b1b0bf390363fa36aff1bc09443ff751943b9c34
+PKG_RELEASE:=1
-PKG_MAINTAINER:=Lukasz Baj <l.baj@radytek.com>
+PKG_MAINTAINER:=
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING.GPLv2
-PKG_SOURCE_URL:=https://github.com/libimobiledevice/usbmuxd.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=35e5d48f29ae03b2b9686109e4ed9ab8b9677ce8
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_MIRROR_HASH:=7c0d8ea230570344fbc0183c0171689c74baf3d75fff33bbdfca2d1775a4d62d
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_DATE).tar.gz
+PKG_SOURCE_URL=https://codeload.github.com/libimobiledevice/usbmuxd/tar.gz/$(PKG_SOURCE_VERSION)?
+PKG_HASH:=ca4275dbc21e8d9c926e65943b605ea5a6112d30eb3f9e655d3983da87ac6798
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_SOURCE_VERSION)
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
uses a dedicated USB interface as a virtual network device.
endef
-TARGET_CFLAGS += $(FPIC)
+CONFIGURE_ARGS += --without-systemd
define Package/usbmuxd/install
$(INSTALL_DIR) $(1)/usr/sbin
PKG_NAME:=zstd
PKG_VERSION:=1.4.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/facebook/zstd/tar.gz/v$(PKG_VERSION)?
--- /dev/null
+--- a/programs/fileio.c
++++ b/programs/fileio.c
+@@ -175,7 +175,7 @@ static void clearHandler(void)
+
+ #if !defined(BACKTRACE_ENABLE)
+ /* automatic detector : backtrace enabled by default on linux+glibc and osx */
+-# if (defined(__linux__) && defined(__GLIBC__)) \
++# if (defined(__linux__) && (defined(__GLIBC__) && !defined(__UCLIBC__))) \
+ || (defined(__APPLE__) && defined(__MACH__))
+ # define BACKTRACE_ENABLE 1
+ # else