--- /dev/null
+*.o
+.DS_Store
+.*.swp
+*.orig
+*.rej
+.vscode*
+/.env
+/.env.*
+/*.patch
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Copyright (C) 2024 Luca Barbato
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=cargo-c
+PKG_VERSION:=0.9.32
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/lu-zero/cargo-c/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=a96f3cc6c63d9901c9583083338d50b0132504bb067f68accc17f4116ed01f72
+
+PKG_MAINTAINER:=Luca Barbato <lu_zero@luminem.org>
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+
+HOST_BUILD_DEPENDS:=rust/host
+HOST_BUILD_PARALLEL:=1
+PKG_HOST_ONLY:=1
+
+include $(INCLUDE_DIR)/host-build.mk
+include $(INCLUDE_DIR)/package.mk
+include ../../lang/rust/rust-host-build.mk
+
+define Package/cargo-c
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Rust
+ TITLE:=Build and install rust crates as C libraries
+ DEPENDS:=$(RUST_ARCH_DEPENDS)
+ URL:=https://github.com/lu-zero/cargo-c
+ BUILDONLY:=1
+endef
+
+define Package/cargo-c/description
+ Build and install crates with C bindings so they appear as normal
+ C libraries.
+endef
+
+$(eval $(call RustBinHostBuild))
+$(eval $(call HostBuild))
+$(eval $(call BuildPackage,cargo-c))
endef
ifeq ($(CONFIG_INCLUDE_STATIC_LIBC),y)
- COPY_STATIC_LIBC=cp -a $(TOOLCHAIN_DIR)/lib/libc.a $(1)/usr/lib/$(PKG_NAME)/$(REAL_GNU_TARGET_NAME)/$(PKG_VERSION)
+ COPY_STATIC_LIBC=cp -a $(TOOLCHAIN_ROOT_DIR)/lib/libc.a $(1)/usr/lib/$(PKG_NAME)/$(REAL_GNU_TARGET_NAME)/$(PKG_VERSION)
endif
ifeq ($(CONFIG_INCLUDE_STATIC_LIBPTHREAD),y)
- COPY_STATIC_LIBPTHREAD=cp -a $(TOOLCHAIN_DIR)/lib/libpthread.a $(1)/usr/lib/$(PKG_NAME)/$(REAL_GNU_TARGET_NAME)/$(PKG_VERSION)
+ COPY_STATIC_LIBPTHREAD=cp -a $(TOOLCHAIN_ROOT_DIR)/lib/libpthread.a $(1)/usr/lib/$(PKG_NAME)/$(REAL_GNU_TARGET_NAME)/$(PKG_VERSION)
endif
ifeq ($(CONFIG_INCLUDE_STATIC_LIBSTDC),y)
- COPY_STATIC_LIBSTDC=cp -a $(TOOLCHAIN_DIR)/lib/libstdc++.a $(1)/usr/lib/$(PKG_NAME)/$(REAL_GNU_TARGET_NAME)/$(PKG_VERSION)
+ COPY_STATIC_LIBSTDC=cp -a $(TOOLCHAIN_ROOT_DIR)/lib/libstdc++.a $(1)/usr/lib/$(PKG_NAME)/$(REAL_GNU_TARGET_NAME)/$(PKG_VERSION)
endif
ifeq ($(CONFIG_INCLUDE_STATIC_LINK_SPEC),y)
TARGET_CPPFLAGS += -D_GLIBCXX_INCLUDE_NEXT_C_HEADERS
# not using sstrip here as this messes up the .so's somehow
-STRIP:=$(TOOLCHAIN_DIR)/bin/$(TARGET_CROSS)strip
+STRIP:=$(firstword $(TOOLCHAIN_BIN_DIRS))/$(TARGET_CROSS)strip
RSTRIP:= \
- NM="$(TOOLCHAIN_DIR)/bin/$(TARGET_CROSS)nm" \
+ NM="$(firstword $(TOOLCHAIN_BIN_DIRS))/$(TARGET_CROSS)nm" \
STRIP="$(STRIP)" \
STRIP_KMOD="$(STRIP) --strip-debug" \
$(SCRIPT_DIR)/rstrip.sh
ln -s $(REAL_GNU_TARGET_NAME)-gcc $(1)/usr/bin/cc
ln -s $(REAL_GNU_TARGET_NAME)-gcc $(1)/usr/bin/$(REAL_GNU_TARGET_NAME)-gcc-$(PKG_VERSION)
cp -ar $(PKG_INSTALL_DIR)/usr/lib/gcc $(1)/usr/lib
- cp -ar $(TOOLCHAIN_DIR)/include $(1)/usr
- cp -a $(TOOLCHAIN_DIR)/lib/*.{o,so*} $(1)/usr/lib/$(PKG_NAME)/$(REAL_GNU_TARGET_NAME)/$(PKG_VERSION)
- cp -a $(TOOLCHAIN_DIR)/lib/*nonshared*.a $(1)/usr/lib/$(PKG_NAME)/$(REAL_GNU_TARGET_NAME)/$(PKG_VERSION)
- cp -a $(TOOLCHAIN_DIR)/lib/libm.a $(1)/usr/lib/$(PKG_NAME)/$(REAL_GNU_TARGET_NAME)/$(PKG_VERSION)
+ cp -ar $(TOOLCHAIN_ROOT_DIR)/include $(1)/usr
+ cp -a $(TOOLCHAIN_ROOT_DIR)/lib/*.{o,so*} $(1)/usr/lib/$(PKG_NAME)/$(REAL_GNU_TARGET_NAME)/$(PKG_VERSION)
+ cp -a $(TOOLCHAIN_ROOT_DIR)/lib/*nonshared*.a $(1)/usr/lib/$(PKG_NAME)/$(REAL_GNU_TARGET_NAME)/$(PKG_VERSION)
+ cp -a $(TOOLCHAIN_ROOT_DIR)/lib/libm.a $(1)/usr/lib/$(PKG_NAME)/$(REAL_GNU_TARGET_NAME)/$(PKG_VERSION)
$(COPY_STATIC_LIBC)
$(COPY_STATIC_LIBPTHREAD)
$(COPY_STATIC_LIBSTDC)
include $(TOPDIR)/rules.mk
PKG_NAME:=erlang
-PKG_VERSION:=26.2.4
+PKG_VERSION:=27.0
PKG_RELEASE:=1
PKG_SOURCE:=otp_src_$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/erlang/otp/releases/download/OTP-$(PKG_VERSION)
-PKG_HASH:=b51ad69f57e2956dff4c893bcb09ad68fee23a7f8f6bba7d58449516b696de95
+PKG_HASH:=56412677466b756740fb2dbf4a8019e7c7cc38f01bd30c4cac5210214cafeef6
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE.txt
define Package/erlang
$(call Package/erlang/Default)
DEPENDS+= +libncurses +librt +zlib +libstdcpp
- PROVIDES:= erlang-erts=14.2.4 erlang-kernel=9.2.3 erlang-sasl=4.2.1 erlang-stdlib=5.2.2
+ PROVIDES:= erlang-erts=15.0 erlang-kernel=10.0 erlang-sasl=4.2.2 erlang-stdlib=6.0
endef
define Package/erlang/description
define Package/erlang-asn1
$(call Package/erlang/Default)
TITLE:=Abstract Syntax Notation One (ASN.1) support
- VERSION:=5.2.2
+ VERSION:=5.3
DEPENDS+= +erlang +erlang-syntax-tools
endef
define Package/erlang-compiler
$(call Package/erlang/Default)
TITLE:=Byte code compiler
- VERSION:=8.4.3
+ VERSION:=8.5
DEPENDS+= +erlang
endef
define Package/erlang-crypto
$(call Package/erlang/Default)
TITLE:=Cryptography support
- VERSION:=5.4.2
+ VERSION:=5.5
DEPENDS+= +erlang +libopenssl
endef
define Package/erlang-inets
$(call Package/erlang/Default)
TITLE:=Internet clients and servers
- VERSION:=9.1
+ VERSION:=9.2
DEPENDS+= +erlang
endef
define Package/erlang-mnesia
$(call Package/erlang/Default)
TITLE:=Distributed database
- VERSION:=4.23
+ VERSION:=4.23.2
DEPENDS+= +erlang
endef
define Package/erlang-runtime-tools
$(call Package/erlang/Default)
TITLE:=Low-profile debugging/tracing tools
- VERSION:=2.0.1
+ VERSION:=2.1
DEPENDS+= +erlang
endef
define Package/erlang-snmp
$(call Package/erlang/Default)
TITLE:=Simple Network Management Protocol (SNMP) support
- VERSION:=5.15
+ VERSION:=5.16
DEPENDS+= +erlang +erlang-asn1
endef
define Package/erlang-public-key
$(call Package/erlang/Default)
TITLE:=Public Key support
- VERSION:=1.15.1
+ VERSION:=1.16
DEPENDS+= +erlang +erlang-crypto +erlang-asn1
endef
define Package/erlang-ssh
$(call Package/erlang/Default)
TITLE:=Secure Shell (SSH) support
- VERSION:=5.1.4
+ VERSION:=5.2
DEPENDS+= +erlang +erlang-crypto
endef
define Package/erlang-ssl
$(call Package/erlang/Default)
TITLE:=Secure Sockets Layer (SSL) support
- VERSION:=11.1.3
+ VERSION:=11.2
DEPENDS+= +erlang +erlang-crypto
endef
define Package/erlang-syntax-tools
$(call Package/erlang/Default)
TITLE:=Abstract Erlang syntax trees handling support
- VERSION:=3.1
+ VERSION:=3.2
DEPENDS+= +erlang
endef
define Package/erlang-tools
$(call Package/erlang/Default)
TITLE:=Erlang tools support
- VERSION:=3.6
+ VERSION:=4.0
DEPENDS+= +erlang
endef
define Package/erlang-reltool
$(call Package/erlang/Default)
TITLE:=Erlang reltool support
- VERSION:=1.0
+ VERSION:=1.0.1
DEPENDS+= +erlang
endef
define Package/erlang-erl-interface
$(call Package/erlang/Default)
TITLE:=Erlang erl_interface support
- VERSION:=5.5.1
+ VERSION:=5.5.2
DEPENDS+= +erlang
endef
define Package/erlang-os_mon
$(call Package/erlang/Default)
TITLE:=Erlang OS Monitoring Application
- VERSION:=2.9.1
+ VERSION:=2.10
DEPENDS+= +erlang
endef
define Package/erlang-xmerl
$(call Package/erlang/Default)
TITLE:=Erlang XML export
- VERSION:=1.3.34
+ VERSION:=2.0
DEPENDS+= +erlang
endef
include $(TOPDIR)/rules.mk
GO_VERSION_MAJOR_MINOR:=1.22
-GO_VERSION_PATCH:=2
+GO_VERSION_PATCH:=3
PKG_NAME:=golang
PKG_VERSION:=$(GO_VERSION_MAJOR_MINOR)$(if $(GO_VERSION_PATCH),.$(GO_VERSION_PATCH))
PKG_SOURCE:=go$(PKG_VERSION).src.tar.gz
PKG_SOURCE_URL:=$(GO_SOURCE_URLS)
-PKG_HASH:=374ea82b289ec738e968267cac59c7d5ff180f9492250254784b2044e90df5a9
+PKG_HASH:=80648ef34f903193d72a59c0dff019f5f98ae0c9aa13ade0b0ecbff991a76f68
PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
PKG_LICENSE:=BSD-3-Clause
include $(TOPDIR)/rules.mk
PKG_NAME:=node
-PKG_VERSION:=v20.13.1
+PKG_VERSION:=v20.14.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://nodejs.org/dist/$(PKG_VERSION)
-PKG_HASH:=a85ee53aa0a5c2f5ca94fa414cdbceb91eb7d18a77fc498358512c14cc6c6991
+PKG_HASH:=f01109d3102754ac360fcf25aa588f3bef5c090a8eed3fb1d0be194149c46cf2
PKG_MAINTAINER:=Hirokazu MORIKAWA <morikw2@gmail.com>, Adrian Panella <ianchi74@outlook.com>
PKG_LICENSE:=MIT
-Dowrt:threads=$(if $(CONFIG_PERL_THREADS),yes,no) \
-Dowrt:staging_dir='$(STAGING_DIR)' \
-Dowrt:host_perl_prefix='$(HOST_PERL_PREFIX)' \
- -Dsysroot='$(TOOLCHAIN_DIR)' \
+ -Dsysroot='$(TOOLCHAIN_ROOT_DIR)' \
files/version.config \
files/base.config \
files/$(patsubst i386,i486,$(ARCH)).config \
include $(TOPDIR)/rules.mk
PKG_NAME:=php
-PKG_VERSION:=8.3.6
-PKG_RELEASE:=2
+PKG_VERSION:=8.3.7
+PKG_RELEASE:=1
PKG_MAINTAINER:=Michael Heimpold <mhei@heimpold.de>
PKG_LICENSE:=PHP-3.01
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://www.php.net/distributions/
-PKG_HASH:=53c8386b2123af97626d3438b3e4058e0c5914cb74b048a6676c57ac647f5eae
+PKG_HASH:=d53433c1ca6b2c8741afa7c524272e6806c1e895e5912a058494fea89988570a
PKG_BUILD_PARALLEL:=1
PKG_BUILD_FLAGS:=no-mips16
+++ /dev/null
-From e680bd98d34a86302db434c5be23d0cf9d23df23 Mon Sep 17 00:00:00 2001
-From: Jan Beich <jbeich@FreeBSD.org>
-Date: Sat, 20 Apr 2024 23:49:22 +0200
-Subject: devel/php*-intl: unbreak build with ICU 75
-
-In file included from ext/intl/intl_convertcpp.cpp:17:
-In file included from ./intl_convertcpp.h:22:
-In file included from /usr/local/include/unicode/unistr.h:39:
-/usr/local/include/unicode/stringpiece.h:133:29: error: no template named 'enable_if_t' in namespace 'std'
- typename = std::enable_if_t<
- ~~~~~^
-/usr/local/include/unicode/stringpiece.h:134:23: error: no template named 'is_same_v' in namespace 'std'; did you mean 'is_same'?
- (std::is_same_v<decltype(T().data()), const char*>
- ~~~~~^
-/usr/include/c++/v1/__type_traits/is_same.h:22:29: note: 'is_same' declared here
-struct _LIBCPP_TEMPLATE_VIS is_same : _BoolConstant<__is_same(_Tp, _Up)> { };
- ^
-In file included from ext/intl/intl_convertcpp.cpp:17:
-In file included from ./intl_convertcpp.h:22:
-In file included from /usr/local/include/unicode/unistr.h:39:
-/usr/local/include/unicode/stringpiece.h:139:17: error: use of address-of-label extension outside of a function body
- std::is_same_v<decltype(T().size()), size_t>>>
- ^
-/usr/local/include/unicode/stringpiece.h:139:62: error: expected member name or ';' after declaration specifiers
- std::is_same_v<decltype(T().size()), size_t>>>
- ^
-PR: 278420
-Reported by: antoine (via exp-run)
----
-
---- a/ext/intl/config.m4
-+++ b/ext/intl/config.m4
-@@ -80,7 +80,16 @@ if test "$PHP_INTL" != "no"; then
- breakiterator/codepointiterator_methods.cpp"
-
- PHP_REQUIRE_CXX()
-- PHP_CXX_COMPILE_STDCXX(11, mandatory, PHP_INTL_STDCXX)
-+
-+ AC_MSG_CHECKING([if intl requires -std=gnu++17])
-+ AS_IF([test "$PKG_CONFIG icu-uc --atleast-version=74"],[
-+ AC_MSG_RESULT([yes])
-+ PHP_CXX_COMPILE_STDCXX(17, mandatory, PHP_INTL_STDCXX)
-+ ],[
-+ AC_MSG_RESULT([no])
-+ PHP_CXX_COMPILE_STDCXX(11, mandatory, PHP_INTL_STDCXX)
-+ ])
-+
- PHP_INTL_CXX_FLAGS="$INTL_COMMON_FLAGS $PHP_INTL_STDCXX $ICU_CXXFLAGS"
- case $host_alias in
- *cygwin*) PHP_INTL_CXX_FLAGS="$PHP_INTL_CXX_FLAGS -D_POSIX_C_SOURCE=200809L"
include $(TOPDIR)/rules.mk
PKG_NAME:=python-selinux
-PKG_VERSION:=3.5
+PKG_VERSION:=3.6
PKG_RELEASE:=1
SRC_NAME:=libselinux
PKG_SOURCE:=$(SRC_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/SELinuxProject/selinux/releases/download/$(PKG_VERSION)
-PKG_HASH:=9a3a3705ac13a2ccca2de6d652b6356fead10f36fb33115c185c5ccdf29eec19
+PKG_HASH:=ba4e0ef34b270e7672a5e5f1b523fe2beab3a40bb33d9389f4ad3a8728f21b52
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)/$(SRC_NAME)-$(PKG_VERSION)
PKG_MAINTAINER:=Thomas Petazzoni <thomas.petazzoni@bootlin.com>
--set=target.$(RUSTC_TARGET_ARCH).linker=$(TARGET_CC_NOCACHE) \
--set=target.$(RUSTC_TARGET_ARCH).ranlib=$(TARGET_RANLIB) \
--set=target.$(RUSTC_TARGET_ARCH).crt-static=false \
- $(if $(CONFIG_USE_MUSL),--set=target.$(RUSTC_TARGET_ARCH).musl-root=$(TOOLCHAIN_DIR))
+ $(if $(CONFIG_USE_MUSL),--set=target.$(RUSTC_TARGET_ARCH).musl-root=$(TOOLCHAIN_ROOT_DIR))
# CARGO_HOME is an environmental
HOST_CONFIGURE_VARS += CARGO_HOME="$(CARGO_HOME)"
include $(TOPDIR)/rules.mk
PKG_NAME:=c-ares
-PKG_VERSION:=1.28.1
+PKG_VERSION:=1.29.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://c-ares.org/download
-PKG_HASH:=675a69fc54ddbf42e6830bc671eeb6cd89eeca43828eb413243fd2c0a760809d
+PKG_HASH:=0b89fa425b825c4c7bc708494f374ae69340e4d1fdc64523bdbb2750bfc02ea7
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE.md
PKG_NAME:=cyrus-sasl
PKG_VERSION:=2.1.28
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
--- /dev/null
+--- a/lib/saslutil.c
++++ b/lib/saslutil.c
+@@ -59,9 +59,7 @@
+ #ifdef HAVE_UNISTD_H
+ #include <unistd.h>
+ #endif
+-#ifdef HAVE_TIME_H
+ #include <time.h>
+-#endif
+ #include "saslint.h"
+ #include <saslutil.h>
+
+--- a/plugins/cram.c
++++ b/plugins/cram.c
+@@ -48,6 +48,7 @@
+ #include <string.h>
+ #include <stdlib.h>
+ #include <stdio.h>
++#include <time.h>
+ #ifndef macintosh
+ #include <sys/stat.h>
+ #endif
+--- a/plugins/digestmd5.c
++++ b/plugins/digestmd5.c
+@@ -50,6 +50,7 @@
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <string.h>
++#include <time.h>
+ #ifndef macintosh
+ #include <sys/types.h>
+ #include <sys/stat.h>
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=$(PKG_VERSION)
PKG_SOURCE_URL:=https://github.com/knik0/faad2
-PKG_MIRROR_HASH:=3bedd29eb3a55a052158bb27f68c69177ebacb93c6a0643c0aac6303512eeb15
+PKG_MIRROR_HASH:=8dfc89b418293a91c0fc0d11013205449669ce973f5e951500c1e11e3ac61970
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
PKG_LICENSE:=GPL-2.0-or-later
PKG_NAME:=gost_engine
PKG_VERSION:=3.0.3
-PKG_RELEASE:=10
+PKG_RELEASE:=11
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=v$(PKG_VERSION)
CMAKE_OPTIONS += -DOPENSSL_ENGINES_DIR=/usr/lib/$(ENGINES_DIR)
define Package/libopenssl-gost_engine/install
- $(INSTALL_DIR) $(1)/usr/lib $(1)/usr/lib/$(ENGINES_DIR) $(1)/etc/ssl/engines.cnf.d
+ $(INSTALL_DIR) $(1)/usr/lib $(1)/usr/lib/$(ENGINES_DIR) $(1)/etc/ssl/modules.cnf.d
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libgost.so \
$(1)/usr/lib/
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/$(ENGINES_DIR)/gost.so \
$(1)/usr/lib/$(ENGINES_DIR)/
- $(INSTALL_DATA) ./files/gost.cnf $(1)/etc/ssl/engines.cnf.d/
+ $(INSTALL_DATA) ./files/gost.cnf $(1)/etc/ssl/modules.cnf.d/
endef
define Package/gost_engine-util/install
--- /dev/null
+#!/bin/sh
+# shellcheck disable=SC2059
+
+run_md_test () {
+ [ $# -ge 3 ] || {
+ echo "Error: insufficient args to run_md_test()" >&2
+ exit 1
+ }
+ DGST="$1"; shift
+ INP="$1"; shift
+ EXP="$1"; shift
+ printf "Testing digest %s: " "$DGST" >&2
+ OUT="$(printf "$INP" | openssl dgst -"$DGST" "$@")" || exit 1
+ [ -z "${OUT%%*"$EXP"}" ] || {
+ printf "Failure: expected: '%s', got '%s'\n" "$EXP" "$OUT" >&2
+ exit 1
+ }
+ echo OK >&2 || true
+}
+
+run_cipher_test() {
+ [ $# -ge 5 ] || {
+ echo "Error: insufficient args to run_cipher_test()" >&2
+ exit 1
+ }
+ ALG="$1"; shift
+ KEY="$1"; shift
+ IV="$1"; shift
+ CLEAR_TEXT="$1"; shift
+ CIPHER_TEXT="$1"; shift
+ printf "Testing %s encryption: " "$ALG" >&2
+ OUT="$(printf "$CLEAR_TEXT" | openssl enc -e -"$ALG" -K "$KEY" -iv "$IV" "$@" -a -A)" || exit 1
+ [ -z "${OUT%"$CIPHER_TEXT"}" ] || {
+ printf "Encryption failure: expected: '%s', got '%s'\n" "$CIPHER_TEXT" "$OUT" >&2
+ exit 1
+ }
+ echo OK >&2
+ printf "Testing %s decryption: " "$ALG" >&2
+ OUT="$(printf "$CIPHER_TEXT" | openssl enc -d -"$ALG" -K "$KEY" -iv "$IV" "$@" -a -A)" || exit 1
+ [ -z "${OUT%"$(printf "$CLEAR_TEXT")"}" ] || {
+ echo "Decryption failure!" >&2
+ echo "----------- expected hexdump -------------" >&2
+ printf "$CLEAR_TEXT" | hexdump -C
+ echo "------------ result hexdump --------------" >&2
+ echo "$OUT" | hexdump -C >&2
+ exit 1
+ }
+ echo OK >&2 || true
+}
+
+case "$1" in
+ libopenssl-gost_engine)
+ opkg install openssl-util
+ run_md_test \
+ md_gost12_256 \
+ 012345678901234567890123456789012345678901234567890123456789012 \
+ 9d151eefd8590b89daa6ba6cb74af9275dd051026bb149a452fd84e5e57b5500
+ export CRYPT_PARAMS="1.2.643.2.2.31.1"
+ run_cipher_test \
+ gost89 \
+ 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF \
+ 0000000000000000 \
+ "The quick brown fox jumps over the lazy dog\n" \
+ "B/QQLGGFxKCeZ24mm/pLycXfZXWRa4eb0TqJOiKF7maQEHze73oxXS61S/o="
+ ;;
+ gost_engine-util)
+ printf "Testing gost12sum: "
+ EXP=9d151eefd8590b89daa6ba6cb74af9275dd051026bb149a452fd84e5e57b5500
+ OUT=$(printf 012345678901234567890123456789012345678901234567890123456789012 | gost12sum)
+ [ -z "${OUT##"$EXP"*}" ] || {
+ printf "Failure: expected: '%s', got '%s'\n" "$EXP" "$OUT" >&2
+ exit 1
+ }
+ echo OK >&2 || true
+ ;;
+ *)
+ echo "Unexpected package '$1'" >&2
+ exit 1
+ ;;
+esac
include $(TOPDIR)/rules.mk
PKG_NAME:=libarchive
-PKG_VERSION:=3.7.3
+PKG_VERSION:=3.7.4
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://www.libarchive.org/downloads
-PKG_HASH:=63e7a7174638fc7d6b79b4c8b0ad954e0f4f45abe7239c1ecb200232aa9a43d2
+PKG_HASH:=f887755c434a736a609cbd28d87ddbfbe9d6a3bb5b703c22c02f6af80a802735
PKG_MAINTAINER:=Johannes Morgenroth <morgenroth@ibr.cs.tu-bs.de>
PKG_LICENSE:=BSD-2-Clause
include $(TOPDIR)/rules.mk
PKG_NAME:=libedit
-PKG_VERSION:=20230828-3.1
+PKG_VERSION:=20240517-3.1
PKG_RELEASE:=1
PKG_MAINTAINER:=Daniel Salzman <daniel.salzman@nic.cz>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://thrysoee.dk/editline/
-PKG_HASH:=4ee8182b6e569290e7d1f44f0f78dac8716b35f656b76528f699c69c98814dad
+PKG_HASH:=3a489097bb4115495f3bd85ae782852b7097c556d9500088d74b6fa38dbd12ff
PKG_INSTALL:=1
include $(TOPDIR)/rules.mk
PKG_NAME:=libgpg-error
-PKG_VERSION:=1.47
+PKG_VERSION:=1.49
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://mirrors.dotsrc.org/gcrypt/libgpg-error \
http://ring.ksc.gr.jp/archives/net/gnupg/libgpg-error \
https://www.gnupg.org/ftp/gcrypt/libgpg-error
-PKG_HASH:=9e3c670966b96ecc746c28c2c419541e3bcb787d1a73930f5e5f5e1bcbbb9bdb
+PKG_HASH:=8b79d54639dbf4abc08b5406fb2f37e669a2dec091dd024fb87dd367131c63a9
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
PKG_LICENSE:=LGPL-2.1-or-later
include $(TOPDIR)/rules.mk
PKG_NAME:=libgpiod
-PKG_VERSION:=1.6.4
+PKG_VERSION:=2.1.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/software/libs/libgpiod/
-PKG_HASH:=7b146e12f28fbca3df7557f176eb778c5ccf952ca464698dba8a61b2e1e3f9b5
+PKG_HASH:=b21913f469d3135680d5516f00fdf9f81d5e564e19ffb690927ea7f1d7e312cb
PKG_MAINTAINER:=Michael Heimpold <mhei@heimpold.de>
PKG_LICENSE:=LGPL-2.1-or-later
include $(INCLUDE_DIR)/package.mk
include ../../lang/python/python3-package.mk
+ifneq ($(CONFIG_PACKAGE_libgpiodcxx),)
+CONFIGURE_ARGS += --enable-bindings-cxx
+else
+CONFIGURE_ARGS += --disable-bindings-cxx
+endif
+
ifneq ($(CONFIG_PACKAGE_gpiod-tools),)
CONFIGURE_ARGS += --enable-tools
endif
-ifneq ($(CONFIG_PACKAGE_python3-gpiod),)
-CONFIGURE_ARGS += --enable-bindings-python
-CONFIGURE_VARS += \
- PYTHON="$(STAGING_DIR_HOSTPKG)/bin/$(PYTHON3)" \
- PYTHON_CPPFLAGS="$(shell $(STAGING_DIR)/host/bin/$(PYTHON3)-config --includes)" \
- PYTHON_LIBS="$(shell $(STAGING_DIR)/host/bin/$(PYTHON3)-config --libs)"
-endif
+PYTHON3_PKG_WHEEL_NAME:=gpiod
+PYTHON3_PKG_WHEEL_VERSION:=2.0.1
+
+PYTHON3_PKG_SETUP_DIR:=bindings/python
+PYTHON3_PKG_SETUP_VARS += LINK_SYSTEM_LIBGPIOD=1
+
+TARGET_CPPFLAGS += -I$(PKG_BUILD_DIR)/include
+TARGET_LDFLAGS += -L$(PKG_BUILD_DIR)/lib/.libs
define Package/libgpiod
SECTION:=libs
URL:=https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git
TITLE:=Library for interacting with Linux's GPIO character device
KCONFIG:= \
- CONFIG_GPIO_CDEV=y \
- CONFIG_GPIO_CDEV_V1=y
+ CONFIG_GPIO_CDEV=y
DEPENDS:=@GPIO_SUPPORT
endef
(gpiod stands for GPIO device).
endef
+define Package/libgpiodcxx
+ SECTION:=libs
+ CATEGORY:=Libraries
+ URL:=https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git
+ TITLE:=C++ binding for libgpiod
+ DEPENDS:=+libstdcpp +libgpiod
+endef
+
+define Package/libgpiodcxx/description
+ This package contains the C++ binding for libgpiod.
+endef
+
define Package/python3-gpiod
SECTION:=lang
CATEGORY:=Languages
This package contains the Python bindings for libgpiod.
endef
+define Build/Configure
+ $(call Build/Configure/Default)
+ ifneq ($(CONFIG_PACKAGE_python3-gpiod),)
+ $(call Py3Build/Configure)
+ endif
+endef
+
+define Build/Compile
+ $(call Build/Compile/Default)
+ ifneq ($(CONFIG_PACKAGE_python3-gpiod),)
+ $(call Py3Build/Compile)
+ endif
+endef
+
+define Build/Install
+ $(call Build/Install/Default)
+ ifneq ($(CONFIG_PACKAGE_python3-gpiod),)
+ $(call Py3Build/Install/Default)
+ endif
+endef
+
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/gpiod.h $(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libgpiod.pc $(1)/usr/lib/pkgconfig/
+
+ ifneq ($(CONFIG_PACKAGE_libgpiodcxx),)
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/gpiodcxx $(1)/usr/include/
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/gpiod.hpp $(1)/usr/include/
+
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgpiodcxx.{so*,a} $(1)/usr/lib/
+
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libgpiodcxx.pc $(1)/usr/lib/pkgconfig/
+ endif
+
+ ifneq ($(CONFIG_PACKAGE_python3-gpiod),)
+ $(INSTALL_DIR) $(1)$(PYTHON3_PKG_DIR)
+ $(CP) $(PKG_INSTALL_DIR)$(PYTHON3_PKG_DIR)/* $(1)$(PYTHON3_PKG_DIR)
+ endif
endef
define Package/libgpiod/install
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libgpiod.so.* $(1)/usr/lib/
endef
+define Package/libgpiodcxx/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgpiodcxx.so.* $(1)/usr/lib/
+endef
+
define Package/gpiod-tools/install
$(INSTALL_DIR) $(1)/usr/bin
$(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
endef
-define Package/python3-gpiod/install
- $(INSTALL_DIR) $(1)/$(PYTHON3_PKG_DIR)
- $(CP) $(PKG_INSTALL_DIR)/$(PYTHON3_PKG_DIR)/gpiod.so $(1)/$(PYTHON3_PKG_DIR)
+define Py3Package/python3-gpiod/install
+ # this empty define prevent installing tools from /usr/bin
endef
$(eval $(call BuildPackage,libgpiod))
+$(eval $(call BuildPackage,libgpiodcxx))
$(eval $(call BuildPackage,gpiod-tools))
+$(eval $(call Py3Package,python3-gpiod))
$(eval $(call BuildPackage,python3-gpiod))
+$(eval $(call BuildPackage,python3-gpiod-src))
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/libimobiledevice/libimobiledevice.git
-PKG_SOURCE_DATE:=2024-04-16
-PKG_SOURCE_VERSION:=5f083426b4ede24b2576f3a56eaf8ac3632c02f7
-PKG_MIRROR_HASH:=96d63f5a5cdfbc045aa58939fa0ab1ab81739b67b042b86bbbeee75d332e09d5
+PKG_SOURCE_DATE:=2024-05-20
+PKG_SOURCE_VERSION:=9ccc52222c287b35e41625cc282fb882544676c6
+PKG_MIRROR_HASH:=9d272d40515c5ba6be5fa22eb897724d8940a505163918120c005bbeed352475
PKG_MAINTAINER:=Rosen Penev <rosenp@gmail.com>
PKG_LICENSE:=LGPL-2.1-or-later
--- /dev/null
+--- a/tools/afcclient.c
++++ b/tools/afcclient.c
+@@ -37,6 +37,7 @@
+ #include <ctype.h>
+ #include <unistd.h>
+ #include <dirent.h>
++#include <time.h>
+
+ #ifdef WIN32
+ #include <windows.h>
include $(TOPDIR)/rules.mk
PKG_NAME:=libjpeg-turbo
-PKG_VERSION:=3.0.2
+PKG_VERSION:=3.0.3
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/$(PKG_VERSION)
-PKG_HASH:=c2ce515a78d91b09023773ef2770d6b0df77d674e144de80d63e0389b3a15ca6
+PKG_HASH:=343e789069fc7afbcdfe44dbba7dbbf45afa98a15150e079a38e60e44578865d
PKG_MAINTAINER:=Rosen Penev <rosenp@gmail.com>
PKG_LICENSE:=BSD-3-Clause IJG zlib
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/libmbim.git
PKG_SOURCE_VERSION:=$(PKG_VERSION)
-PKG_MIRROR_HASH:=fdb9d945465b7ad13ccd180b3e2c580f45ba6859d464e75191d6f3f38257c1ac
+PKG_MIRROR_HASH:=0ff9212138eb68c2e33ad9220aa64df2e9a0da86f03dd02bf6d4cf02bcd95a68
PKG_BUILD_FLAGS:=gc-sections
include $(TOPDIR)/rules.mk
PKG_NAME:=libnpupnp
-PKG_VERSION:=6.1.0
+PKG_VERSION:=6.1.3
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.lesbonscomptes.com/upmpdcli/downloads
-PKG_HASH:=1e305abf63ac945d9cb4576689670c009a914dc9d05b4c1ed605391e7f6b9719
+PKG_HASH:=80c3d5adc388e59057be52c4c33d7708efe05318487c09e342e7a1f4a83aa792
PKG_MAINTAINER:=
PKG_LICENSE:=LGPL-2.1-or-later
$(INSTALL_DIR) $(1)/usr/include/npupnp
$(CP) $(PKG_INSTALL_DIR)/usr/include/npupnp/* $(1)/usr/include/npupnp/
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libnpupnp.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libnpupnp.{a,so*} $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libnpupnp.pc $(1)/usr/lib/pkgconfig/
endef
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/libqmi.git
PKG_SOURCE_VERSION:=$(PKG_VERSION)
-PKG_MIRROR_HASH:=beed19cfb25f65186d2a4d9c3aef54f023962662f37e7421cedb94978256791b
+PKG_MIRROR_HASH:=65ee91b81c6f68d908cc94a0b5d670eefa29d550ecf8ef94cb836981fbfa4c2a
PKG_BUILD_FLAGS:=gc-sections
PKG_NAME:=libshout
PKG_VERSION:=2.4.6
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://downloads.us.xiph.org/releases/libshout/
--- /dev/null
+--- a/src/shout_private.h
++++ b/src/shout_private.h
+@@ -33,6 +33,8 @@
+ #include <common/timing/timing.h>
+ #include "util.h"
+
++#include <stdio.h>
++#include <stdlib.h>
+ #include <sys/types.h>
+
+ #ifdef HAVE_STDINT_H
PKG_NAME:=libssh
PKG_VERSION:=0.10.6
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://www.libssh.org/files/0.10/
-DWITH_STACK_PROTECTOR_STRONG=0 \
-DHAVE_WORDS_BIGENDIAN=$(if $(CONFIG_BIG_ENDIAN),1,0)
+define Build/InstallDev
+ $(call Build/InstallDev/cmake,$(1))
+ $(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/libssh.pc
+ $(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/libssh.pc
+endef
+
define Package/libssh/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libssh* $(1)/usr/lib/
include $(TOPDIR)/rules.mk
PKG_NAME:=libupnpp
-PKG_VERSION:=0.24.1
+PKG_VERSION:=0.26.5
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.lesbonscomptes.com/upmpdcli/downloads
-PKG_HASH:=f09d5162f237bcb971ef4bbd45de9e93a073d96555cd691374eb1a3f338b2d0b
+PKG_HASH:=b0e089783c5893c16afe23d90a6ee6947c2ec34ca6c3cf555622f7d9cc2b2b3c
PKG_MAINTAINER:=
PKG_LICENSE:=LGPL-2.1-or-later
PKG_LICENSE_FILES:=COPYING
-PKG_INSTALL:=1
-PKG_BUILD_PARALLEL:=1
-
include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/meson.mk
define Package/libupnpp
SECTION:=libs
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/libupnpp $(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libupnpp.{la,so*} $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libupnpp.{a,so*} $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libupnpp.pc $(1)/usr/lib/pkgconfig/
endef
PKG_VERSION:=1.2.0
PKG_RELEASE:=1
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=https://github.com/ngtcp2/$(PKG_NAME)/releases/download/v$(PKG_VERSION)/
-PKG_HASH:=d2e216bae7bd7362f850922e4237a5caa204853b3594b22adccab4c1e1c1d1aa
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://github.com/ngtcp2/nghttp3/releases/download/v$(PKG_VERSION)/
+PKG_HASH:=0cc9b943f61a135e08b80bdcc4c1181f695df18fbb5fa93509a58d7d971dca75
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=COPYING
-PKG_MAINTAINER:=Stan Grishin <stangri@melmac.ca>
+PKG_MAINTAINER:=
CMAKE_INSTALL:=1
PKG_NAME:=ngtcp2
PKG_VERSION:=1.4.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=https://github.com/ngtcp2/$(PKG_NAME)/releases/download/v$(PKG_VERSION)/
-PKG_HASH:=b5d1433b9f5c06ce249e1e390e97dcfa49bf7ada5cb7c8bed8e6cd4feaf1ca4a
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://github.com/ngtcp2/ngtcp2/releases/download/v$(PKG_VERSION)/
+PKG_HASH:=163e26e6e7531b8bbcd7ec53d2c6b4ff3cb7d3654fde37b091e3174d37a8acd7
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=COPYING
-PKG_MAINTAINER:=Stan Grishin <stangri@melmac.ca>
+PKG_MAINTAINER:=
CMAKE_INSTALL:=1
CMAKE_OPTIONS += -DENABLE_LIB_ONLY=ON
+define Build/InstallDev
+ $(call Build/InstallDev/cmake,$(1))
+ $(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/libngtcp2.pc
+ $(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/libngtcp2.pc
+endef
+
define Package/libngtcp2/install
$(INSTALL_DIR) $(1)/usr/lib
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libngtcp2*.so* $(1)/usr/lib
PKG_NAME:=OpenBLAS
PKG_VERSION:=0.3.27
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=OpenBLAS-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/xianyi/OpenBLAS/releases/download/v$(PKG_VERSION)/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/* $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/* $(1)/usr/lib/pkgconfig/
+ $(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/openblas.pc
+ $(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/openblas.pc
endef
define Package/openblas/install
include $(TOPDIR)/rules.mk
PKG_NAME:=openldap
-PKG_VERSION:=2.6.7
-PKG_RELEASE:=1
+PKG_VERSION:=2.6.8
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
PKG_SOURCE_URL:=https://mirror.eu.oneandone.net/software/openldap/openldap-release/ \
https://www.openldap.org/software/download/OpenLDAP/openldap-release/
-PKG_HASH:=cd775f625c944ed78a3da18a03b03b08eea73c8aabc97b41bb336e9a10954930
+PKG_HASH:=48969323e94e3be3b03c6a132942dcba7ef8d545f2ad35401709019f696c3c4e
PKG_LICENSE:=OLDAP-2.8
PKG_LICENSE_FILES:=LICENSE
PKG_CPE_ID:=cpe:/a:openldap:openldap
include $(TOPDIR)/rules.mk
PKG_NAME:=opus
-PKG_VERSION:=1.5.1
-PKG_RELEASE:=2
+PKG_VERSION:=1.5.2
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://downloads.xiph.org/releases/opus
-PKG_HASH:=b84610959b8d417b611aa12a22565e0a3732097c6389d19098d844543e340f85
+PKG_HASH:=65c1d2f78b9f2fb20082c38cbe47c951ad5839345876e46941612ee87f9a7ce1
PKG_MAINTAINER:=Ted Hess <thess@kitchensync.net>, Ian Leonard <antonlacon@gmail.com>
PKG_LICENSE:=BSD-3-Clause
include $(TOPDIR)/rules.mk
PKG_NAME:=taglib
-PKG_VERSION:=2.0
+PKG_VERSION:=2.0.1
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/taglib/taglib
PKG_SOURCE_VERSION:=v$(PKG_VERSION)
-PKG_MIRROR_HASH:=de161820f5a5d3e0e0fb8f04fdae8c8a094897d1418e33b39ca634d4c538ecd0
+PKG_MIRROR_HASH:=2422e6c4ce9ea59882b6a9c078309bb95d6c11537b769f2ff22bc2fa977c56f3
PKG_MAINTAINER:=
PKG_LICENSE:=LGPL-2.1-or-later
include $(TOPDIR)/rules.mk
PKG_NAME:=vips
-PKG_VERSION:=8.15.1
+PKG_VERSION:=8.15.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://github.com/libvips/libvips/releases/download/v$(PKG_VERSION)
-PKG_HASH:=06811f5aed3e7bc03e63d05537ff4b501de5283108c8ee79396c60601a00830c
+PKG_HASH:=a2ab15946776ca7721d11cae3215f20f1f097b370ff580cd44fc0f19387aee84
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
PKG_LICENSE:=LGPL-2.1-or-later
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/HardySimpson/zlog
PKG_SOURCE_VERSION:=$(PKG_VERSION)
-PKG_MIRROR_HASH:=f726edf847c6953c8035f49f0b50dab185b051c01abbb5b12fb1994511d19a48
+PKG_MIRROR_HASH:=501d89c6883de14e8e6c53e1597f425814b3b467b31da04c50390d4924efecf3
PKG_MAINTAINER:=Marko Ratkaj <markoratkaj@gmail.com>
PKG_LICENSE:=Apache-2.0
include $(TOPDIR)/rules.mk
PKG_NAME:=msmtp
-PKG_VERSION:=1.8.25
+PKG_VERSION:=1.8.26
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://marlam.de/msmtp/releases
-PKG_HASH:=2dfe1dbbb397d26fe0b0b6b2e9cd2efdf9d72dd42d18e70d7f363ada2652d738
+PKG_HASH:=6cfc488344cef189267e60aea481f00d4c7e2a59b53c6c659c520a4d121f66d8
PKG_MAINTAINER:=
PKG_LICENSE:=GPL-3.0-or-later
--- /dev/null
+#!/bin/sh
+
+case "$1" in
+ msmtp)
+ msmtp --version | grep "$2"
+ ;;
+esac
include $(TOPDIR)/rules.mk
PKG_NAME:=ffmpeg
-PKG_VERSION:=5.1.3
-PKG_RELEASE:=5
+PKG_VERSION:=5.1.4
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://ffmpeg.org/releases/
-PKG_HASH:=1b113593ff907293be7aed95acdda5e785dd73616d7d4ec90a0f6adbc5a0312e
+PKG_HASH:=54383bb890a1cd62580e9f1eaa8081203196ed53bde9e98fb6b0004423f49063
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>, \
Ian Leonard <antonlacon@gmail.com>
REAL_CPU_TYPE:=$(subst octeonplus,octeon+,$(REAL_CPU_TYPE))
FFMPEG_CONFIGURE:= \
- CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS) $(FPIC)" \
+ CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS) $(FPIC) -Wno-error=incompatible-pointer-types" \
LDFLAGS="$(TARGET_LDFLAGS)" \
./configure \
--enable-cross-compile \
--- /dev/null
+From 9e674b31606c805dd31b4bb754364a72a5877238 Mon Sep 17 00:00:00 2001
+From: Brad Smith <brad-at-comstyle.com@ffmpeg.org>
+Date: Sun, 5 May 2024 23:59:47 -0400
+Subject: [PATCH] lavd/v4l2: Use proper field type for second parameter of
+ ioctl() with BSD's
+
+The proper type was used until 73251678c83cbe24d08264da693411b166239bc7.
+
+This covers all of the OS's that currently have V4L2 support, permutations
+of Linux glibc/musl, Android bionic, FreeBSD, NetBSD, OpenBSD, Solaris.
+
+Copied from FreeBSD ports patch.
+
+Signed-off-by: Brad Smith <brad@comstyle.com>
+Signed-off-by: Marton Balint <cus@passwd.hu>
+---
+ libavdevice/v4l2.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/libavdevice/v4l2.c
++++ b/libavdevice/v4l2.c
+@@ -106,10 +106,10 @@ struct video_data {
+ int (*open_f)(const char *file, int oflag, ...);
+ int (*close_f)(int fd);
+ int (*dup_f)(int fd);
+-#ifdef __GLIBC__
+- int (*ioctl_f)(int fd, unsigned long int request, ...);
+-#else
++#if defined(__sun) || defined(__BIONIC__) || defined(__musl__) /* POSIX-like */
+ int (*ioctl_f)(int fd, int request, ...);
++#else
++ int (*ioctl_f)(int fd, unsigned long int request, ...);
+ #endif
+ ssize_t (*read_f)(int fd, void *buffer, size_t n);
+ void *(*mmap_f)(void *start, size_t length, int prot, int flags, int fd, int64_t offset);
+++ /dev/null
-From: Rémi Denis-Courmont <remi@remlab.net>
-Date: Sun, 16 Jul 2023 15:18:02 +0000 (+0300)
-Subject: avcodec/x86/mathops: clip constants used with shift instructions within inline assembly
-X-Git-Url: http://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff_plain/25cd95a9dc3510c3cc0d7aad6f9d83f6a1078c7e?hp=e5b5dd66535f444451e0fee59247b224d866f334
-
-avcodec/x86/mathops: clip constants used with shift instructions within inline assembly
-
-Fixes assembling with binutil as >= 2.41
-
-Signed-off-by: James Almer <jamrial@gmail.com>
-(cherry picked from commit effadce6c756247ea8bae32dc13bb3e6f464f0eb)
----
-
---- a/libavcodec/x86/mathops.h
-+++ b/libavcodec/x86/mathops.h
-@@ -35,12 +35,20 @@
- static av_always_inline av_const int MULL(int a, int b, unsigned shift)
- {
- int rt, dummy;
-+ if (__builtin_constant_p(shift))
- __asm__ (
- "imull %3 \n\t"
- "shrdl %4, %%edx, %%eax \n\t"
- :"=a"(rt), "=d"(dummy)
-- :"a"(a), "rm"(b), "ci"((uint8_t)shift)
-+ :"a"(a), "rm"(b), "i"(shift & 0x1F)
- );
-+ else
-+ __asm__ (
-+ "imull %3 \n\t"
-+ "shrdl %4, %%edx, %%eax \n\t"
-+ :"=a"(rt), "=d"(dummy)
-+ :"a"(a), "rm"(b), "c"((uint8_t)shift)
-+ );
- return rt;
- }
-
-@@ -113,19 +121,31 @@ __asm__ volatile(\
- // avoid +32 for shift optimization (gcc should do that ...)
- #define NEG_SSR32 NEG_SSR32
- static inline int32_t NEG_SSR32( int32_t a, int8_t s){
-+ if (__builtin_constant_p(s))
- __asm__ ("sarl %1, %0\n\t"
- : "+r" (a)
-- : "ic" ((uint8_t)(-s))
-+ : "i" (-s & 0x1F)
- );
-+ else
-+ __asm__ ("sarl %1, %0\n\t"
-+ : "+r" (a)
-+ : "c" ((uint8_t)(-s))
-+ );
- return a;
- }
-
- #define NEG_USR32 NEG_USR32
- static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
-+ if (__builtin_constant_p(s))
- __asm__ ("shrl %1, %0\n\t"
- : "+r" (a)
-- : "ic" ((uint8_t)(-s))
-+ : "i" (-s & 0x1F)
- );
-+ else
-+ __asm__ ("shrl %1, %0\n\t"
-+ : "+r" (a)
-+ : "c" ((uint8_t)(-s))
-+ );
- return a;
- }
-
include $(TOPDIR)/rules.mk
PKG_NAME:=gst1-libav
-PKG_VERSION:=1.22.8
+PKG_VERSION:=1.24.4
PKG_RELEASE:=1
PKG_SOURCE:=gst-libav-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://gstreamer.freedesktop.org/src/gst-libav
-PKG_HASH:=be39349bc07ab4cdbd9a5fd6ea9848c601c7560ba5a0577ad5200b83bd424981
+PKG_HASH:=4d3803f36008e847fc4842c8dd366162baf8359526cc46c1851bf68bb638da73
PKG_BUILD_DIR:=$(BUILD_DIR)/gst-libav-$(PKG_VERSION)
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org> \
include $(TOPDIR)/rules.mk
PKG_NAME:=gst1-plugins-bad
-PKG_VERSION:=1.22.8
+PKG_VERSION:=1.24.4
PKG_RELEASE:=1
PKG_SOURCE:=gst-plugins-bad-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://gstreamer.freedesktop.org/src/gst-plugins-bad/
-PKG_HASH:=458783f8236068991e3e296edd671c8eddb8be6fac933c1c2e1503462864ea0f
+PKG_HASH:=260bd0a463b4faff9a42f41e5e028f787f10a92b779af8959aec64586f546bd3
PKG_BUILD_DIR:=$(BUILD_DIR)/gst-plugins-bad-$(PKG_VERSION)
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org> \
-Dgsm=disabled \
-Dipcpipeline=disabled \
-Diqa=disabled \
- -Dkate=disabled \
-Dkms=disabled \
-Dladspa=disabled \
-Dlibde265=disabled \
include $(TOPDIR)/rules.mk
PKG_NAME:=gst1-plugins-base
-PKG_VERSION:=1.22.8
+PKG_VERSION:=1.24.4
PKG_RELEASE:=1
PKG_SOURCE:=gst-plugins-base-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://gstreamer.freedesktop.org/src/gst-plugins-base
-PKG_HASH:=eb6792e5c73c6defb9159c36ea6e4b78a2f8af6512678b4bd3b02c8d2d492acf
+PKG_HASH:=09f4ddf246eeb819da1494ce336316edbbcb28fdff3ee2f9804891e84df39b2a
PKG_BUILD_DIR:=$(BUILD_DIR)/gst-plugins-base-$(PKG_VERSION)
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org> \
$$(eval $$(call BuildPackage,libgst1$(1)))
endef
-$(eval $(call GstBuildLibrary,allocators,allocators,,))
+$(eval $(call GstBuildLibrary,allocators,allocators,,+libdrm))
$(eval $(call GstBuildLibrary,app,app,,))
$(eval $(call GstBuildLibrary,audio,audio,tag,))
$(eval $(call GstBuildLibrary,fft,FFT,,))
include $(TOPDIR)/rules.mk
PKG_NAME:=gst1-plugins-good
-PKG_VERSION:=1.22.8
+PKG_VERSION:=1.24.4
PKG_RELEASE:=1
PKG_SOURCE:=gst-plugins-good-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://gstreamer.freedesktop.org/src/gst-plugins-good/
-PKG_HASH:=e305b9f07f52743ca481da0a4e0c76c35efd60adaf1b0694eb3bb021e2137e39
+PKG_HASH:=023096d661cf58cde3e0dcdbf56897bf588830232358c305f3e15fd63e116626
PKG_BUILD_DIR:=$(BUILD_DIR)/gst-plugins-good-$(PKG_VERSION)
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org> \
endef
+TARGET_CFLAGS += -Wno-error=incompatible-pointer-types
+
GST_COND_SELECT = -D$(1)=$(if $(CONFIG_PACKAGE_gst1-mod-$(1)),en,dis)abled
GST_VERSION:=1.0
include $(TOPDIR)/rules.mk
PKG_NAME:=gst1-plugins-ugly
-PKG_VERSION:=1.22.8
+PKG_VERSION:=1.24.4
PKG_RELEASE:=1
PKG_SOURCE:=gst-plugins-ugly-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://gstreamer.freedesktop.org/src/gst-plugins-ugly
-PKG_HASH:=0761d96ba508e01c0271881b26828c2bffd7d8afd50872219f088f755b252ca7
+PKG_HASH:=4604f8709c0bc4d6960ef6ae6fd91e0b20af011bfe22e103f5b85377cf3f1ef4
PKG_BUILD_DIR:=$(BUILD_DIR)/gst-plugins-ugly-$(PKG_VERSION)
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org> \
-Drealmedia=disabled \
\
-Da52dec=disabled \
- -Damrnb=disabled \
- -Damrwbdec=disabled \
-Dcdio=disabled \
-Ddvdread=disabled \
$(call GST_COND_SELECT,mpeg2dec) \
include $(TOPDIR)/rules.mk
PKG_NAME:=gstreamer1
-PKG_VERSION:=1.22.8
+PKG_VERSION:=1.24.4
PKG_RELEASE:=1
PKG_SOURCE:=gstreamer-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://gstreamer.freedesktop.org/src/gstreamer
-PKG_HASH:=ad4e3db1771139b1db17b1afa7c05db083ae0100bd4da244b71f162dcce41bfc
+PKG_HASH:=52c93bc48e03533aa676fd8c15eb6b5fc326c68db311c50bcc0a865f31a6c653
PKG_BUILD_DIR:=$(BUILD_DIR)/gstreamer-$(PKG_VERSION)
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org> \
--- a/gst/gstplugin.c
+++ b/gst/gstplugin.c
-@@ -854,15 +854,8 @@ _priv_gst_plugin_load_file_for_registry
+@@ -862,15 +862,8 @@ _priv_gst_plugin_load_file_for_registry
}
#endif
include $(TOPDIR)/rules.mk
PKG_NAME:=imagemagick
-PKG_VERSION:=7.1.1.31
+PKG_VERSION:=7.1.1.33
PKG_RELEASE:=1
PKG_MAINTAINER:=Aleksey Vasilenko <aleksey.vasilenko@gmail.com>
PKG_SOURCE:=ImageMagick-$(_PKGREV).tar.xz
PKG_SOURCE_URL:=https://imagemagick.org/archive
-PKG_HASH:=7e5c8db53dd90a0cfc5cc7ca6d34728ed86054b4bc86e9787902285fec1107a8
+PKG_HASH:=c021effec02d18df2e55fbbe68b10b95366c1869143b08d7e8e16f471a0ddea1
PKG_BUILD_DIR:=$(BUILD_DIR)/ImageMagick-$(_PKGREV)
PKG_FIXUP:=autoreconf
include $(TOPDIR)/rules.mk
PKG_NAME:=acme-common
-PKG_VERSION:=1.1.1
+PKG_VERSION:=1.4.0
PKG_MAINTAINER:=Toke Høiland-Jørgensen <toke@toke.dk>
PKG_LICENSE:=GPL-3.0-only
load_options() {
section=$1
+ config_get staging "$section" staging
# compatibility for old option name
- config_get_bool staging "$section" use_staging
if [ -z "$staging" ]; then
- config_get_bool staging "$section" staging 0
+ config_get_bool staging "$section" use_staging 0
fi
export staging
config_get calias "$section" calias
export dalias
config_get domains "$section" domains
export domains
- export main_domain
main_domain="$(first_arg $domains)"
+ export main_domain
config_get keylength "$section" keylength
if [ "$keylength" ]; then
log warn "Option \"keylength\" is deprecated, please use key_type (e.g., ec256, rsa2048) instead."
fi
export state_dir
- config_get debug "$section" debug 0
+ config_get_bool debug "$section" debug 0
export debug
# only look for the first acme section
#!/bin/sh
+. /lib/functions.sh
+
+# Create a symlink to webroot
+if [ -d /www/ ] && [ ! -L /www/.well-known/acme-challenge ] && [ ! -d /www/.well-known/acme-challenge/ ]; then
+ mkdir -p /www/.well-known/
+ ln -s /var/run/acme/challenge/ /www/.well-known/acme-challenge
+fi
+
+# migrate deprecated opts
+# shellcheck disable=SC2155
+handle_cert() {
+ local section="$1"
+ local use_staging=$(uci_get acme "$section" use_staging)
+ if [ -n "$use_staging" ]; then
+ uci_remove acme "$section" use_staging
+ local staging=$(uci_get acme "$section" staging)
+ if [ -z "$staging" ]; then
+ uci_set acme "$section" staging "$use_staging"
+ fi
+ fi
+
+ local keylength=$(uci_get acme "$section" keylength)
+ if [ -n "$keylength" ]; then
+ uci_remove acme "$section" keylength
+ local key_type=$(uci_get acme "$section" key_type)
+ if [ -z "$key_type" ]; then
+ case $keylength in
+ ec-*) key_type=${keylength/-/} ;;
+ *) key_type=rsa$keylength ;;
+ esac
+ uci_set acme "$section" key_type "$key_type"
+ fi
+ fi
+
+ local standalone=$(uci_get acme "$section" standalone)
+ [ -n "$standalone" ] && uci_remove acme "$section" standalone
+ local dns=$(uci_get acme "$section" dns)
+ local validation_method=$(uci_get acme "$section" validation_method)
+ if [ -z "$validation_method" ]; then
+ if [ -n "$dns" ]; then
+ validation_method="dns"
+ elif [ "$standalone" = 1 ]; then
+ validation_method="standalone"
+ else
+ validation_method="webroot"
+ fi
+ uci_set acme "$section" validation_method "$validation_method"
+ fi
+}
+
+config_load acme
+config_foreach handle_cert cert
+uci_commit
grep -q '/etc/init.d/acme' /etc/crontabs/root 2>/dev/null && exit 0
echo "0 0 * * * /etc/init.d/acme start" >>/etc/crontabs/root
include $(TOPDIR)/rules.mk
PKG_NAME:=apache
-PKG_VERSION:=2.4.58
+PKG_VERSION:=2.4.59
PKG_RELEASE:=1
PKG_SOURCE_NAME:=httpd
PKG_SOURCE:=$(PKG_SOURCE_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@APACHE/httpd/
-PKG_HASH:=fa16d72a078210a54c47dd5bef2f8b9b8a01d94909a51453956b3ec6442ea4c5
+PKG_HASH:=ec51501ec480284ff52f637258135d333230a7d229c3afa6f6c2f9040e321323
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_NAME)-$(PKG_VERSION)
-#endif
+static const char server_built[] = "";
- AP_DECLARE(const char *) ap_get_server_built()
+ AP_DECLARE(const char *) ap_get_server_built(void)
{
--- a/server/Makefile.in
+++ b/server/Makefile.in
+++ /dev/null
---- a/modules/md/md_crypt.c
-+++ b/modules/md/md_crypt.c
-@@ -1194,23 +1194,23 @@ int md_certs_are_equal(const md_cert_t *
-
- int md_cert_is_valid_now(const md_cert_t *cert)
- {
-- return ((X509_cmp_current_time(X509_get_notBefore(cert->x509)) < 0)
-- && (X509_cmp_current_time(X509_get_notAfter(cert->x509)) > 0));
-+ return ((X509_cmp_current_time(X509_get0_notBefore(cert->x509)) < 0)
-+ && (X509_cmp_current_time(X509_get0_notAfter(cert->x509)) > 0));
- }
-
- int md_cert_has_expired(const md_cert_t *cert)
- {
-- return (X509_cmp_current_time(X509_get_notAfter(cert->x509)) <= 0);
-+ return (X509_cmp_current_time(X509_get0_notAfter(cert->x509)) <= 0);
- }
-
- apr_time_t md_cert_get_not_after(const md_cert_t *cert)
- {
-- return md_asn1_time_get(X509_get_notAfter(cert->x509));
-+ return md_asn1_time_get(X509_get0_notAfter(cert->x509));
- }
-
- apr_time_t md_cert_get_not_before(const md_cert_t *cert)
- {
-- return md_asn1_time_get(X509_get_notBefore(cert->x509));
-+ return md_asn1_time_get(X509_get0_notBefore(cert->x509));
- }
-
- md_timeperiod_t md_cert_get_valid(const md_cert_t *cert)
---- a/modules/ssl/ssl_engine_init.c
-+++ b/modules/ssl/ssl_engine_init.c
-@@ -231,7 +231,7 @@ apr_status_t ssl_init_Module(apr_pool_t
- apr_status_t rv;
- apr_array_header_t *pphrases;
-
-- if (SSLeay() < MODSSL_LIBRARY_VERSION) {
-+ if (OpenSSL_version_num() < MODSSL_LIBRARY_VERSION) {
- ap_log_error(APLOG_MARK, APLOG_WARNING, 0, base_server, APLOGNO(01882)
- "Init: this version of mod_ssl was compiled against "
- "a newer library (%s, version currently loaded is %s)"
---- a/modules/ssl/ssl_engine_io.c
-+++ b/modules/ssl/ssl_engine_io.c
-@@ -1316,9 +1316,9 @@ static apr_status_t ssl_io_filter_handsh
- if (dc->proxy->ssl_check_peer_expire != FALSE) {
- if (!cert
- || (X509_cmp_current_time(
-- X509_get_notBefore(cert)) >= 0)
-+ X509_get0_notBefore(cert)) >= 0)
- || (X509_cmp_current_time(
-- X509_get_notAfter(cert)) <= 0)) {
-+ X509_get0_notAfter(cert)) <= 0)) {
- proxy_ssl_check_peer_ok = FALSE;
- ap_log_cerror(APLOG_MARK, APLOG_INFO, 0, c, APLOGNO(02004)
- "SSL Proxy: Peer certificate is expired");
---- a/modules/ssl/ssl_engine_log.c
-+++ b/modules/ssl/ssl_engine_log.c
-@@ -171,10 +171,10 @@ static void ssl_log_cert_error(const cha
- BIO_puts(bio, "(ERROR)");
-
- BIO_puts(bio, " / notbefore: ");
-- ASN1_TIME_print(bio, X509_get_notBefore(cert));
-+ ASN1_TIME_print(bio, X509_get0_notBefore(cert));
-
- BIO_puts(bio, " / notafter: ");
-- ASN1_TIME_print(bio, X509_get_notAfter(cert));
-+ ASN1_TIME_print(bio, X509_get0_notAfter(cert));
-
- BIO_puts(bio, "]");
-
---- a/modules/ssl/ssl_engine_vars.c
-+++ b/modules/ssl/ssl_engine_vars.c
-@@ -490,13 +490,13 @@ static char *ssl_var_lookup_ssl_cert(apr
- result = ssl_var_lookup_ssl_cert_serial(p, xs);
- }
- else if (strcEQ(var, "V_START")) {
-- result = ssl_var_lookup_ssl_cert_valid(p, X509_get_notBefore(xs));
-+ result = ssl_var_lookup_ssl_cert_valid(p, X509_get0_notBefore(xs));
- }
- else if (strcEQ(var, "V_END")) {
-- result = ssl_var_lookup_ssl_cert_valid(p, X509_get_notAfter(xs));
-+ result = ssl_var_lookup_ssl_cert_valid(p, X509_get0_notAfter(xs));
- }
- else if (strcEQ(var, "V_REMAIN")) {
-- result = ssl_var_lookup_ssl_cert_remain(p, X509_get_notAfter(xs));
-+ result = ssl_var_lookup_ssl_cert_remain(p, X509_get0_notAfter(xs));
- resdup = FALSE;
- }
- else if (*var && strcEQ(var+1, "_DN")) {
---- a/modules/ssl/ssl_private.h
-+++ b/modules/ssl/ssl_private.h
-@@ -102,6 +102,9 @@
- #include <openssl/x509v3.h>
- #include <openssl/x509_vfy.h>
- #include <openssl/ocsp.h>
-+#include <openssl/dh.h>
-+#include <openssl/bn.h>
-+#include <openssl/ui.h>
-
- /* Avoid tripping over an engine build installed globally and detected
- * when the user points at an explicit non-engine flavor of OpenSSL
---- a/support/ab.c
-+++ b/support/ab.c
-@@ -665,11 +665,11 @@ static void ssl_print_cert_info(BIO *bio
-
- BIO_printf(bio, "Certificate version: %ld\n", X509_get_version(cert)+1);
- BIO_printf(bio,"Valid from: ");
-- ASN1_UTCTIME_print(bio, X509_get_notBefore(cert));
-+ ASN1_UTCTIME_print(bio, X509_get0_notBefore(cert));
- BIO_printf(bio,"\n");
-
- BIO_printf(bio,"Valid to : ");
-- ASN1_UTCTIME_print(bio, X509_get_notAfter(cert));
-+ ASN1_UTCTIME_print(bio, X509_get0_notAfter(cert));
- BIO_printf(bio,"\n");
-
- pk = X509_get_pubkey(cert);
-@@ -2647,8 +2647,10 @@ int main(int argc, const char * const ar
- CRYPTO_malloc_init();
- #endif
- #endif
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- SSL_load_error_strings();
- SSL_library_init();
-+#endif
- bio_out=BIO_new_fp(stdout,BIO_NOCLOSE);
- bio_err=BIO_new_fp(stderr,BIO_NOCLOSE);
-
PKG_NAME:=atftp
PKG_VERSION:=0.8.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/$(PKG_NAME)
config_load atftpd
- config_get enable service enable 0
+ config_get_bool enable service enable 0
[ "$enable" -eq "0" ] && return 0
config_get srv service path "/srv/tftp"
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=$(PKG_VERSION)
PKG_SOURCE_URL:=https://github.com/RIPE-NCC/ripe-atlas-probe-busybox
-PKG_MIRROR_HASH:=6caa57297984814ed3d3369f7ac8682c688e39ed592102977048ab7de80e1a91
+PKG_MIRROR_HASH:=5cb9c17f381e57105bb4ff7c83923619478f970ab9b43ff90a2ed9b1c3879fe0
PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec1@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
PKG_NAME:=banip
PKG_VERSION:=0.9.6
-PKG_RELEASE:=1
+PKG_RELEASE:=3
PKG_LICENSE:=GPL-3.0-or-later
PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
:::
Timestamp: 2024-04-17 23:02:15
------------------------------
- blocked syn-flood packets in prerouting : 5
- blocked udp-flood packets in prerouting : 11
- blocked icmp-flood packets in prerouting : 6
- blocked invalid ct packets in prerouting : 277
- blocked invalid tcp packets in prerouting: 0
- ----------
- auto-added IPs to allowlist today: 0
- auto-added IPs to blocklist today: 0
+ blocked syn-flood packets : 5
+ blocked udp-flood packets : 11
+ blocked icmp-flood packets : 6
+ blocked invalid ct packets : 277
+ blocked invalid tcp packets: 0
+ ---
+ auto-added IPs to allowlist: 0
+ auto-added IPs to blocklist: 0
Set | Elements | WAN-Input (packets) | WAN-Forward (packets) | LAN-Forward (packets) | Port/Protocol Limit
---------------------+--------------+-----------------------+-----------------------+-----------------------+------------------------
**banIP runtime information**
```
-~# /etc/init.d/banip status
::: banIP runtime information
+ status : active (nft: ✔, monitor: ✔)
- + version : 0.9.5-r1
- + element_count : 335706
- + active_feeds : allowlistv4MAC, allowlistv6MAC, allowlistv4, allowlistv6, adguardtrackersv6, adguardtrackersv4, becyberv4, cinsscorev4, deblv4, countryv6, countryv4, deblv6, dropv6, dohv4, dropv4, dohv6, threatv4, firehol1v4, ipthreatv4, firehol2v4, turrisv4, blocklistv4MAC, blocklistv6MAC, blocklistv4, blocklistv6
+ + version : 0.9.6-r1
+ + element_count : 108036
+ + active_feeds : allowlistv4MAC, allowlistv6MAC, allowlistv4, allowlistv6, cinsscorev4, deblv4, countryv6, countryv4, deblv6, dohv4, dohv6, turrisv4, blocklistv4MAC, blocklistv6MAC, blocklistv4, blocklistv6
+ active_devices : wan: pppoe-wan / wan-if: wan, wan_6 / vlan-allow: - / vlan-block: -
+ active_uplink : 217.83.205.130, fe80::9cd6:12e9:c4df:75d3, 2003:ed:b5ff:43bd:9cd5:12e7:c3ef:75d8
- + nft_info : priority: 0, policy: performance, loglevel: warn, expiry: 2h
+ + nft_info : priority: -100, policy: performance, loglevel: warn, expiry: 2h, limit (icmp/syn/udp): 10/10/100
+ run_info : base: /mnt/data/banIP, backup: /mnt/data/banIP/backup, report: /mnt/data/banIP/report
+ run_flags : auto: ✔, proto (4/6): ✔/✔, log (pre/inp/fwd/lan): ✔/✘/✘/✘, dedup: ✔, split: ✘, custom feed: ✘, allowed only: ✘
- + last_run : action: reload, log: logread, fetch: curl, duration: 2m 33s, date: 2024-04-17 05:57:56
- + system_info : cores: 4, memory: 1573, device: Bananapi BPI-R3, OpenWrt SNAPSHOT r25932-338b463e1e
+ + last_run : action: reload, log: logread, fetch: curl, duration: 1m 21s, date: 2024-05-27 05:56:29
+ + system_info : cores: 4, memory: 1661, device: Bananapi BPI-R3, OpenWrt SNAPSHOT r26353-a96354bcfb
```
**banIP search information**
1.10.255.58
1.11.67.53
1.11.114.211
-1.11.208.29
-1.12.75.87
-1.12.231.227
-1.12.247.134
-1.12.251.141
-1.14.96.156
-1.14.250.37
-1.15.40.79
-1.15.71.140
-1.15.77.237
[...]
```
**default regex for logfile parsing**
A valid JSON source object contains the following information, e.g.:
```
[...]
- "tor":{
- "url_4": "https://raw.githubusercontent.com/SecOps-Institute/Tor-IP-Addresses/master/tor-exit-nodes.lst",
- "url_6": "https://raw.githubusercontent.com/SecOps-Institute/Tor-IP-Addresses/master/tor-exit-nodes.lst",
- "rule_4": "/^(([0-9]{1,3}\\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])(\\/(1?[0-9]|2?[0-9]|3?[0-2]))?)$/{printf \"%s,\\n\",$1}",
- "rule_6": "/^(([0-9A-f]{0,4}:){1,7}[0-9A-f]{0,4}:?(\\/(1?[0-2][0-8]|[0-9][0-9]))?)$/{printf \"%s,\\n\",$1}",
- "descr": "tor exit nodes",
- "flag": "gz tcp 80-88 udp 50000"
+"stevenblack":{
+ "url_4": "https://raw.githubusercontent.com/dibdot/banIP-IP-blocklists/main/stevenblack-ipv4.txt",
+ "url_6": "https://raw.githubusercontent.com/dibdot/banIP-IP-blocklists/main/stevenblack-ipv6.txt",
+ "rule_4": "/^127\\./{next}/^(([1-9][0-9]{0,2}\\.){1}([0-9]{1,3}\\.){2}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])(\\/(1?[0-9]|2?[0-9]|3?[0-2]))?)[[:space:]]/{printf \"%s,\\n\",$1}",
+ "rule_6": "/^(([0-9A-f]{0,4}:){1,7}[0-9A-f]{0,4}:?(\\/(1?[0-2][0-8]|[0-9][0-9]))?)[[:space:]]/{printf \"%s,\\n\",$1}",
+ "descr": "stevenblack IPs",
+ "flag": "tcp 80 443"
},
[...]
```
Add an unique feed name (no spaces, no special chars) and make the required changes: adapt at least the URL, the regex and the description for a new feed.
Please note: the flag field is optional, it's a space separated list of options: supported are 'gz' as an archive format, protocols 'tcp' or 'udp' with port numbers/port ranges for destination port limitations - multiple definitions are possible.
+## FAQ
+TODO!
+
## Support
Please join the banIP discussion in this [forum thread](https://forum.openwrt.org/t/banip-support-thread/16985) or contact me by mail <dev@brenken.org>
local cpu core
if [ -z "${ban_dev}" ]; then
- ban_debug="$(uci_get banip global ban_debug)"
+ ban_debug="$(uci_get banip global ban_debug "0")"
ban_cores="$(uci_get banip global ban_cores)"
fi
ban_packages="$("${ban_ubuscmd}" -S call rpc-sys packagelist '{ "all": true }' 2>/dev/null)"
f_actual() {
local nft monitor ppid pids pid
- if "${ban_nftcmd}" list chain inet banIP pre-routing >/dev/null 2>&1; then
+ if "${ban_nftcmd}" -t list set inet banIP allowlistv4MAC >/dev/null 2>&1; then
nft="$(f_char "1")"
else
nft="$(f_char "0")"
# nft header (tables and chains)
#
printf "%s\n\n" "#!/usr/sbin/nft -f"
- if "${ban_nftcmd}" list chain inet banIP pre-routing >/dev/null 2>&1; then
+ if "${ban_nftcmd}" -t list set inet banIP allowlistv4MAC >/dev/null 2>&1; then
printf "%s\n" "delete table inet banIP"
fi
printf "%s\n" "add table inet banIP"
json_add_string "${object}" "${object}"
done
json_close_array
- json_add_string "nft_info" "priority: ${ban_nftpriority}, policy: ${ban_nftpolicy}, loglevel: ${ban_nftloglevel}, expiry: ${ban_nftexpiry:-"-"}"
+ json_add_string "nft_info" "priority: ${ban_nftpriority}, policy: ${ban_nftpolicy}, loglevel: ${ban_nftloglevel}, expiry: ${ban_nftexpiry:-"-"}, limit (icmp/syn/udp): ${ban_icmplimit}/${ban_synlimit}/${ban_udplimit}"
json_add_string "run_info" "base: ${ban_basedir}, backup: ${ban_backupdir}, report: ${ban_reportdir}"
json_add_string "run_flags" "auto: $(f_char ${ban_autodetect}), proto (4/6): $(f_char ${ban_protov4})/$(f_char ${ban_protov6}), log (pre/inp/fwd/lan): $(f_char ${ban_logprerouting})/$(f_char ${ban_loginput})/$(f_char ${ban_logforwardwan})/$(f_char ${ban_logforwardlan}), dedup: $(f_char ${ban_deduplicate}), split: $(f_char ${split}), custom feed: $(f_char ${custom_feed}), allowed only: $(f_char ${ban_allowlistonly})"
json_add_string "last_run" "${runtime:-"-"}"
else
json_get_var value "${key}" >/dev/null 2>&1
if [ "${key}" = "status" ]; then
- value="${value} ($(f_actual))"
+ [ "${value}" = "active" ] && value="${value} ($(f_actual))" || value="${value}"
fi
fi
if [ "${key}" != "wan_interfaces" ] && [ "${key}" != "vlan_allow" ] && [ "${key}" != "vlan_block" ]; then
end_time="$(date "+%s")"
duration="$(((end_time - start_time) / 60))m $(((end_time - start_time) % 60))s"
- f_log "debug" "f_lookup ::: feed: ${feed}, domains: ${cnt_domain}, IPs: ${cnt_ip}, duration: ${duration}"
+ f_log "info" "domain lookup finished in ${duration} (${feed}, ${cnt_domain} domains, ${cnt_ip} IPs)"
}
# table statistics
printf "%s\n" " blocked icmp-flood packets : ${sum_icmpflood}"
printf "%s\n" " blocked invalid ct packets : ${sum_ctinvalid}"
printf "%s\n" " blocked invalid tcp packets: ${sum_tcpinvalid}"
- printf "%s\n" " ----------"
+ printf "%s\n" " ---"
printf "%s\n" " auto-added IPs to allowlist: ${autoadd_allow}"
printf "%s\n\n" " auto-added IPs to blocklist: ${autoadd_block}"
json_select "sets" >/dev/null 2>&1
ban_ubuscmd="$(f_cmd ubus)"
ban_zcatcmd="$(f_cmd zcat)"
+f_system
if [ "${ban_action}" != "stop" ]; then
[ ! -d "/etc/banip" ] && f_log "err" "no banIP config directory"
[ ! -r "/etc/config/banip" ] && f_log "err" "no banIP config"
[ "$(uci_get banip global ban_enabled)" = "0" ] && f_log "err" "banIP is disabled"
fi
-
-f_system
},
"nixspam":{
"url_4": "https://www.nixspam.net/download/nixspam-ip.dump.gz",
- "rule_4": "/^127\\./{next}/^(([1-9][0-9]{0,2}\\.){1}([0-9]{1,3}\\.){2}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])(\\/(1?[0-9]|2?[0-9]|3?[0-2]))?)[[:space:]]/{printf \"%s,\\n\",$2}",
+ "rule_4": "/127\\./{next}/(([1-9][0-9]{0,2}\\.){1}([0-9]{1,3}\\.){2}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])(\\/(1?[0-9]|2?[0-9]|3?[0-2]))?)[[:space:]]/{printf \"%s,\\n\",$2}",
"descr": "iX spam protection",
"flag": "gz"
},
},
"sslbl":{
"url_4": "https://sslbl.abuse.ch/blacklist/sslipblacklist.csv",
- "rule_4": "BEGIN{FS=\",\"}/^127\\./{next}/^(([1-9][0-9]{0,2}\\.){1}([0-9]{1,3}\\.){2}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])(\\/(1?[0-9]|2?[0-9]|3?[0-2]))?)/{printf \"%s,\\n\",$2}",
+ "rule_4": "BEGIN{FS=\",\"}/127\\./{next}/(([1-9][0-9]{0,2}\\.){1}([0-9]{1,3}\\.){2}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])(\\/(1?[0-9]|2?[0-9]|3?[0-2]))?)/{printf \"%s,\\n\",$2}",
"descr": "SSL botnet IPs"
},
"stevenblack":{
include $(TOPDIR)/rules.mk
PKG_NAME:=cloudflared
-PKG_VERSION:=2024.4.1
+PKG_VERSION:=2024.5.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/cloudflare/cloudflared/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=11bed2bd793cc03775aa6270797ed328434bc982e09fd3597e267590f28d2436
+PKG_HASH:=bb370747765ef059c236b577604a7fd0907a684333568e5765687d94ed1f2520
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
include $(TOPDIR)/rules.mk
PKG_NAME:=croc
-PKG_VERSION:=9.6.15
+PKG_VERSION:=10.0.5
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/schollz/croc/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=ca118155cdf3ceb7496928b1c76387ba74f39b774372d30543e6cbd23d2c0a97
+PKG_HASH:=a5d1dc841d01a15e7ccec4280aa0905c69d4076236e1dd53513cde90097688a7
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE
PKG_BUILD_PARALLEL:=1
PKG_BUILD_FLAGS:=no-mips16
-GO_PKG:=github.com/schollz/croc/v9
+GO_PKG:=github.com/schollz/croc/v10
GO_PKG_BUILD_PKG:=$(GO_PKG)
GO_PKG_LDFLAGS_X:=$(GO_PKG)/src/cli.Version=v$(PKG_VERSION)
PKG_NAME:=dcwapd
PKG_VERSION:=1.1.0
-PKG_RELEASE:=5
+PKG_RELEASE:=6
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/ewsi/$(PKG_NAME)/tar.gz/v$(PKG_VERSION)?
config_load "$CONFIGURATION"
local enabled
- config_get enabled general enabled
+ config_get_bool enabled general enabled
if [ "$enabled" != "1" ]; then
echo "dcwapd is disabled in UCI"
return 1
include $(TOPDIR)/rules.mk
PKG_NAME:=dnsdist
-PKG_VERSION:=1.9.3
+PKG_VERSION:=1.9.4
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://downloads.powerdns.com/releases/
-PKG_HASH:=f05b68806dc6c4d207b1fadb7ec715c3e0d28d893a8b3b92d58297c4ceb56c3f
+PKG_HASH:=297d3a3751af4650665c9d3890a1d5a7a0467175f2c8607d0d5980e3fd67ef14
PKG_MAINTAINER:=Peter van Dijk <peter.van.dijk@powerdns.com>, Remi Gacogne <remi.gacogne@powerdns.com>
PKG_LICENSE:=GPL-2.0-only
PKG_NAME:=dnsproxy
PKG_VERSION:=0.71.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/AdguardTeam/dnsproxy/tar.gz/v$(PKG_VERSION)?
is_enabled() {
local enabled
- config_get enabled "$1" "$2" "0"
+ config_get_bool enabled "$1" "$2" "0"
if [ "$enabled" -eq "1" ]; then
return 0
else
include $(TOPDIR)/rules.mk
PKG_NAME:=fping
-PKG_VERSION:=5.1
+PKG_VERSION:=5.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://fping.org/dist
-PKG_HASH:=1ee5268c063d76646af2b4426052e7d81a42b657e6a77d8e7d3d2e60fd7409fe
+PKG_HASH:=a7692d10d73fb0bb76e1f7459aa7f19bbcdbfc5adbedef02f468974b18b0e42f
PKG_MAINTAINER:=Nikil Mehta <nikil.mehta@gmail.com>
PKG_LICENSE:=BSD-4-Clause
include $(TOPDIR)/rules.mk
PKG_NAME:=frr
PKG_VERSION:=9.0.0
-PKG_RELEASE:=2
+PKG_RELEASE:=6
PKG_SOURCE_DATE:=2023-08-12
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_DATE).tar.gz
CONFIG_FRR_INTERNAL \
CONFIG_FRR_SNMP \
CONFIG_FRR_NO_SNMP \
- CONFIG_PACKAGE_frr-libfrr \
- CONFIG_PACKAGE_frr-vtysh \
+ CONFIG_PACKAGE_frr \
CONFIG_PACKAGE_frr-watchfrr \
CONFIG_PACKAGE_frr-zebra \
$(patsubst %,CONFIG_PACKAGE_frr-%,$(PKG_DAEMON_AVAILABLE)) \
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/host-build.mk
-define Package/frr-libfrr/config
+define Package/frr/config
source "$(SOURCE)/Config.in"
endef
define Package/frr
$(call Package/frr/Default)
- DEPENDS:=+librt
+ DEPENDS:=+librt +libatomic +libcap +libncurses +libjson-c +libreadline \
+ +libyang +libprotobuf-c +FRR_OPENSSL:libopenssl +FRR_SNMP:libnetsnmp +more
TITLE:=The FRRouting (FRR) Software Routing Suite
MENU:=1
endef
NHRP.
endef
-define Package/frr-libfrr
- $(call Package/frr/Default)
- TITLE:=zebra library
- DEPENDS+=+librt +libatomic +libcap +libjson-c +libyang +libprotobuf-c +FRR_OPENSSL:libopenssl +FRR_SNMP:libnetsnmp
- CONFLICTS:=quagga-libzebra
-endef
-
-define Package/frr-vtysh
- $(call Package/frr/Default)
- DEPENDS+=+frr-libfrr +libreadline +libncurses +more
- TITLE:=integrated shell for frr routing software
- CONFLICTS:=quagga-vtysh
-endef
-
define Package/frr-watchfrr
$(call Package/frr/Default)
TITLE:=frr watchdog
- DEPENDS+=+frr-libfrr
DEFAULT:=y if PACKAGE_frr
endef
define Package/frr-zebra
$(call Package/frr/Default)
TITLE:=Zebra daemon
- DEPENDS+=+frr-libfrr
DEFAULT:=y if PACKAGE_frr
CONFLICTS:=quagga-zebra
endef
define Package/frr-pythontools
$(call Package/frr/Default)
TITLE:=Python reload tool
- DEPENDS+=+frr-libfrr +python3-base +python3-light +python3-logging
+ DEPENDS+=+python3-base +python3-light +python3-logging
endef
##Migrate from quagga
define Package/frr-$(1)
$$(call Package/frr/Default)
TITLE:= $(1) routing engine
- DEPENDS+=frr-libfrr $(2)
+ifeq ($(1),bgpd)
+ KCONFIG:=CONFIG_TCP_MD5SIG=y
+endif
+ DEPENDS+=$(2)
endef
# if [ "$(1)" == "bfdd" ]; then \
# export HAVE_BFDD == 1 ; fi
$$(eval $$(call BuildPackage,frr-$(1)))
endef
-define Package/frr-libfrr/conffiles
+define Package/frr/conffiles
/etc/frr/daemons
/etc/frr/frr.conf
/etc/frr/vtysh.conf
CONFIGURE_ARGS+= \
--with-clippy=$(STAGING_DIR_HOSTPKG)/bin/clippy \
--prefix=/usr \
+ --enable-vtysh \
+ --enable-zebra \
--enable-shared \
--disable-static \
--enable-user=network \
$(if $(CONFIG_FRR_OPENSSL),--with-crypto=openssl,) \
$(if $(CONFIG_FRR_SNMP),--enable-snmp,) \
$(foreach m,$(PKG_DAEMON_AVAILABLE), \
- $(call autoconf_bool,CONFIG_PACKAGE_frr-$(m),$(m)) ) \
- $(call autoconf_bool,CONFIG_PACKAGE_frr-vtysh,vtysh) \
- $(call autoconf_bool,CONFIG_PACKAGE_frr-libfrr,zebra)
+ $(call autoconf_bool,CONFIG_PACKAGE_frr-$(m),$(m)) )
define Package/frr/install
$(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/init.d
$(INSTALL_BIN) ./files/frrcommon.sh $(1)/usr/sbin/
$(INSTALL_BIN) ./files/frr $(1)/etc/init.d/
+ $(INSTALL_DIR) $(1)/usr/bin $(1)/etc/frr
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/vtysh $(1)/usr/bin/
+ $(INSTALL_CONF) ./files/vtysh.conf $(1)/etc/frr/
+ $(INSTALL_DIR) $(1)/usr/lib $(1)/etc/frr
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfrr.so* $(1)/usr/lib/
+ $(if $(CONFIG_FRR_SNMP),$(CP) $(PKG_INSTALL_DIR)/usr/lib/libfrrsnmp.so* $(1)/usr/lib/,)
+ $(INSTALL_CONF) ./files/{frr.conf,daemons} $(1)/etc/frr/
endef
define Package/frr-watchfrr/install
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/zebra $(1)/usr/sbin/
endef
-define Package/frr-libfrr/install
- $(INSTALL_DIR) $(1)/usr/lib $(1)/etc/frr
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfrr.so* $(1)/usr/lib/
- $(if $(CONFIG_FRR_SNMP),$(CP) $(PKG_INSTALL_DIR)/usr/lib/libfrrsnmp.so* $(1)/usr/lib/,)
- $(INSTALL_CONF) ./files/{frr.conf,daemons} $(1)/etc/frr/
-endef
-
-
define Package/frr-pythontools/install
$(INSTALL_DIR) $(1)/usr/lib/frr $(1)/usr/sbin $(1)/etc/frr
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/*.py $(1)/usr/lib/frr/
$(INSTALL_CONF) $(PKG_BUILD_DIR)/tools/etc/frr/support_bundle_commands.conf $(1)/etc/frr/
endef
-define Package/frr-vtysh/install
- $(INSTALL_DIR) $(1)/usr/bin $(1)/etc/frr
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/vtysh $(1)/usr/bin/
- $(INSTALL_CONF) ./files/vtysh.conf $(1)/etc/frr/
-endef
-
$(eval $(call HostBuild))
$(eval $(call BuildPackage,frr))
-$(eval $(call BuildPackage,frr-libfrr))
$(eval $(call BuildPackage,frr-pythontools))
$(eval $(call BuildPackage,frr-watchfrr))
$(eval $(call BuildPackage,frr-zebra))
-$(eval $(call BuildPackage,frr-vtysh))
$(eval $(call BuildDaemon,babeld,))
$(eval $(call BuildDaemon,bfdd,))
$(eval $(call BuildDaemon,bgpd,))
load_old_config "/etc/sysconfig/frr"
fi
-if { declare -p watchfrr_options 2>/dev/null || true; } | grep -q '^declare \-a'; then
+if { declare -p watchfrr_options 2>/dev/null || true; } | grep -q '^declare -a'; then
log_warning_msg "watchfrr_options contains a bash array value." \
"The configured value is intentionally ignored since it is likely wrong." \
"Please remove or fix the setting."
include $(TOPDIR)/rules.mk
PKG_NAME:=haproxy
-PKG_VERSION:=2.8.9
+PKG_VERSION:=3.0.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://www.haproxy.org/download/2.8/src
-PKG_HASH:=7a821478f36f847607f51a51e80f4f890c37af4811d60438e7f63783f67592ff
+PKG_SOURCE_URL:=https://www.haproxy.org/download/3.0/src
+PKG_HASH:=5aad97416216d2cd9dd212eb674839c40cd387f60fbc4b13d7ea3f1e5664a814
PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>, \
Christian Lachner <gladiac@gmail.com>
ifeq ($(BUILD_VARIANT),ssl)
ADDON+=USE_OPENSSL=1
ADDON+=ADDLIB="-lcrypto -lm"
+ ADDON+=USE_QUIC=1
+ ADDON+=USE_QUIC_OPENSSL_COMPAT=1
endif
define Build/Compile
#!/bin/sh
-CLONEURL=https://git.haproxy.org/git/haproxy-2.8.git
-BASE_TAG=v2.8.9
+CLONEURL=https://git.haproxy.org/git/haproxy-3.0.git
+BASE_TAG=v3.0.0
TMP_REPODIR=tmprepo
PATCHESDIR=patches
include $(TOPDIR)/rules.mk
PKG_NAME:=hev-socks5-server
-PKG_VERSION:=2.6.5
+PKG_VERSION:=2.6.6
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/heiher/hev-socks5-server/releases/download/$(PKG_VERSION)
-PKG_HASH:=07d3297483cc624464eec424f7dd27f2028f4f56c70c2c9d0b6902e181a32ccb
+PKG_HASH:=93dfb20501cc2d19e9e144a38d949b2ff81d1c73bd1557ec8e378d888825501b
PKG_MAINTAINER:=Ray Wang <r@hev.cc>
PKG_LICENSE:=GPL-3.0-only
include $(TOPDIR)/rules.mk
PKG_NAME:=hs20
-PKG_RELEASE:=9
+PKG_RELEASE:=10
PKG_SOURCE_URL:=http://w1.fi/hostap.git
PKG_SOURCE_PROTO:=git
start_service() {
local enabled
config_load hs20
- config_get enabled server enabled
+ config_get_bool enabled server enabled
[ "$enabled" != "1" ] && [ "$enabled" != "true" ] && exit 0
echo "starting"
include $(TOPDIR)/rules.mk
PKG_NAME:=iperf
-PKG_VERSION:=3.16
+PKG_VERSION:=3.17.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://downloads.es.net/pub/iperf
-PKG_HASH:=cc740c6bbea104398cc3e466befc515a25896ec85e44a662d5f4a767b9cf713e
+PKG_HASH:=84404ca8431b595e86c473d8f23d8bb102810001f15feaf610effd3b318788aa
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
PKG_LICENSE:=BSD-3-Clause
include $(TOPDIR)/rules.mk
PKG_NAME:=lynx
-PKG_VERSION:=2.9.0
-PKG_RELEASE:=2
+PKG_VERSION:=2.9.2
+PKG_RELEASE:=1
PKG_LICENSE:=GPL-2.0
PKG_MAINTAINER:=Leonid Esman <leonid.esman@gmail.com>
PKG_SOURCE:=$(PKG_NAME)$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://invisible-mirror.net/archives/lynx/tarballs/ \
https://fossies.org/linux/www/
-PKG_HASH:=5bcae5e2e6043ca7b220963a97763c49c13218d849ffda6be7739bfd5a2d36ff
+PKG_HASH:=7374b89936d991669e101f4e97f2c9592036e1e8cdaa7bafc259a77ab6fb07ce
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/ModemManager.git
PKG_SOURCE_VERSION:=$(PKG_VERSION)
-PKG_MIRROR_HASH:=11af92027970f1f0cb5d3016e3c62485399a6bbb81621723016b8b9a561af020
+PKG_MIRROR_HASH:=72d129a00d51f0acf4c421f02dd342728ca42980bd9644e3c9a69ca0792fd60b
PKG_MAINTAINER:=Nicholas Smith <nicholas@nbembedded.com>
PKG_LICENSE:=GPL-2.0-or-later
PKG_NAME:=mwan3
PKG_VERSION:=2.11.13
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_MAINTAINER:=Florian Eckert <fe@dev.tdt.de>, \
Aaron Goodman <aaronjg@alumni.stanford.edu>
PKG_LICENSE:=GPL-2.0
config_get family "$1" family ipv4
network_get_device device "$1"
[ -z "$device" ] && return
- config_get enabled "$1" enabled
+ config_get_bool enabled "$1" enabled
[ "$enabled" -eq 0 ] && return
curr_table=$(eval "echo \"\$mwan3_dev_tbl_${family}\"")
export "mwan3_dev_tbl_$family=${curr_table}${device}=$_tid "
mwan3_get_iface_id id "$1"
network_get_device device "$1"
- config_get enabled "$1" enabled 0
+ config_get_bool enabled "$1" enabled 0
config_get family "$1" family ipv4
if [ "$family" = "ipv4" ]; then
online=$(get_online_time "$iface")
offline=$(get_offline_time "$iface")
- config_get enabled "$iface" enabled 0
+ config_get_bool enabled "$iface" enabled 0
if [ -f "$MWAN3TRACK_STATUS_DIR/${iface}/STATUS" ]; then
network_get_uptime uptime "$iface"
PKG_NAME:=natmap
PKG_VERSION:=20240303
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/heiher/natmap/releases/download/$(PKG_VERSION)
load_interfaces() {
config_get interface "$1" interface
- config_get enable "$1" enable 1
+ config_get_bool enable "$1" enable 1
[ "${enable}" = "1" ] && interfaces=" ${interface} ${interfaces}"
}
PKG_SOURCE_URL:=https://codeload.github.com/slackhq/nebula/tar.gz/v$(PKG_VERSION)?
PKG_HASH:=203713c58d0ec8a10df2f605af791a77a33f825454911ac3a5313ced591547fd
-PKG_MAINTAINER:=Stan Grishin <stangri@melmac.ca>
+PKG_MAINTAINER:=
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
PKG_CPE_ID:=cpe:/a:slack:nebula
PKG_NAME:=net-snmp
PKG_VERSION:=5.9.4
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/net-snmp
SNMP_TRANSPORTS_INCLUDED+= UDPIPv6
endif
-TARGET_LDFLAGS += -L$(TOOLCHAIN_DIR)/usr/lib
-
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) \
INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \
AC_MSG_CHECKING([for the type of fd_set::fds_bits])
-for type in __fd_mask __int32_t unknown; do
-+for type in __fd_mask __int32_t u_int32_t; do
++for type in fd_mask int32_t size_t; do
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
#include <sys/select.h>
#include <stddef.h>
--- /dev/null
+++ b/agent/mibgroup/ieee802dot11.c
-@@ -0,0 +1,4915 @@
+@@ -0,0 +1,4916 @@
+/****************************************************************************
+* *
+* File Name: ieee802dot11.c *
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include "ieee802dot11.h"
+#include "iwlib.h"
++#include "util_funcs/header_generic.h"
+
+/****************************************************************************
+* Defines *
+ rc = ioctl ( skfd, SIOCGIFHWADDR, &ifr );
+ if ( rc >= 0 ) {
+
-+ sprintf ( MACAddress, "%02X:%02X:%02X:%02X:%02X:%02X\0",
++ sprintf ( MACAddress, "%02X:%02X:%02X:%02X:%02X:%02X",
+ ( UCHAR ) ifr.ifr_hwaddr.sa_data[0], ( UCHAR ) ifr.ifr_hwaddr.sa_data[1],
+ ( UCHAR ) ifr.ifr_hwaddr.sa_data[2], ( UCHAR ) ifr.ifr_hwaddr.sa_data[3],
+ ( UCHAR ) ifr.ifr_hwaddr.sa_data[4], ( UCHAR ) ifr.ifr_hwaddr.sa_data[5] );
+
+ if ( hasChanged (( char * ) &nSc, sizeof ( nSc ))) {
+ nSc.ifIndex = ifIndex;
-+ sprintf ( nSc.UID, "%04d\0", nSc.ifIndex );
++ sprintf ( nSc.UID, "%04ld", nSc.ifIndex );
+ strcpy ( nSc.ifName, ifName );
+ addList (( char * ) &scList, ( char * ) &nSc, sizeof ( nSc ));
+ }
+
+ if ( hasChanged (( char * ) &nPr, sizeof ( nPr ))) {
+ nPr.ifIndex = ifIndex;
-+ sprintf ( nPr.UID, "%04d\0", nPr.ifIndex );
++ sprintf ( nPr.UID, "%04ld", nPr.ifIndex );
+ strcpy ( nPr.ifName, ifName );
+ addList (( char * ) &prList, ( char * ) &nPr, sizeof ( nPr ));
+ }
+
+ if ( hasChanged (( char * ) &nOp, sizeof ( nOp ))) {
+ nOp.ifIndex = ifIndex;
-+ sprintf ( nOp.UID, "%04d\0", nOp.ifIndex );
++ sprintf ( nOp.UID, "%04ld", nOp.ifIndex );
+ strcpy ( nOp.ifName, ifName );
+ addList (( char * ) &opList, ( char * ) &nOp, sizeof ( nOp ));
+ }
+
+ if ( hasChanged (( char * ) &nCo, sizeof ( nCo ))) {
+ nCo.ifIndex = ifIndex;
-+ sprintf ( nCo.UID, "%04d\0", nCo.ifIndex );
++ sprintf ( nCo.UID, "%04ld", nCo.ifIndex );
+ strcpy ( nCo.ifName, ifName );
+ addList (( char * ) &coList, ( char * ) &nCo, sizeof ( nCo ));
+ }
+
+ if ( hasChanged (( char * ) &nRi, sizeof ( nRi ))) {
+ nRi.ifIndex = ifIndex;
-+ sprintf ( nRi.UID, "%04d\0", nRi.ifIndex );
++ sprintf ( nRi.UID, "%04ld", nRi.ifIndex );
+ strcpy ( nRi.ifName, ifName );
+ addList (( char * ) &riList, ( char * ) &nRi, sizeof ( nRi ));
+ }
+
+ if ( hasChanged (( char * ) &nPo, sizeof ( nPo ))) {
+ nPo.ifIndex = ifIndex;
-+ sprintf ( nPo.UID, "%04d\0", nPo.ifIndex );
++ sprintf ( nPo.UID, "%04ld", nPo.ifIndex );
+ strcpy ( nPo.ifName, ifName );
+ addList (( char * ) &poList, ( char * ) &nPo, sizeof ( nPo ));
+ }
+
+ if ( hasChanged (( char * ) &nPa, sizeof ( nPa ))) {
+ nPa.ifIndex = ifIndex;
-+ sprintf ( nPa.UID, "%04d\0", nPa.ifIndex );
++ sprintf ( nPa.UID, "%04ld", nPa.ifIndex );
+ strcpy ( nPa.ifName, ifName );
+ addList (( char * ) &paList, ( char * ) &nPa, sizeof ( nPa ));
+ }
+
+ if ( hasChanged (( char * ) &nPt, sizeof ( nPt ))) {
+ nPt.ifIndex = ifIndex;
-+ sprintf ( nPt.UID, "%04d\0", nPt.ifIndex );
++ sprintf ( nPt.UID, "%04ld", nPt.ifIndex );
+ strcpy ( nPt.ifName, ifName );
+ addList (( char * ) &ptList, ( char * ) &nPt, sizeof ( nPt ));
+ }
+
+ if ( hasChanged (( char * ) &nPf, sizeof ( nPf ))) {
+ nPf.ifIndex = ifIndex;
-+ sprintf ( nPf.UID, "%04d\0", nPf.ifIndex );
++ sprintf ( nPf.UID, "%04ld", nPf.ifIndex );
+ strcpy ( nPf.ifName, ifName );
+ addList (( char * ) &pfList, ( char * ) &nPf, sizeof ( nPf ));
+ }
+
+ if ( hasChanged (( char * ) &nPd, sizeof ( nPd ))) {
+ nPd.ifIndex = ifIndex;
-+ sprintf ( nPd.UID, "%04d\0", nPd.ifIndex );
++ sprintf ( nPd.UID, "%04ld", nPd.ifIndex );
+ strcpy ( nPd.ifName, ifName );
+ addList (( char * ) &pdList, ( char * ) &nPd, sizeof ( nPd ));
+ }
+
+ if ( hasChanged (( char * ) &nPi, sizeof ( nPi ))) {
+ nPi.ifIndex = ifIndex;
-+ sprintf ( nPi.UID, "%04d\0", nPi.ifIndex );
++ sprintf ( nPi.UID, "%04ld", nPi.ifIndex );
+ strcpy ( nPi.ifName, ifName );
+ addList (( char * ) &piList, ( char * ) &nPi, sizeof ( nPi ));
+ }
+ }
+
-+//printf ( "%s - ifIndex: %d ifName: %s UID: %s\n",
++//printf ( "%s - ifIndex: %ld ifName: %s UID: %s\n",
+// "load80211Structs() - HASCHANGED", ifIndex, ifName, nSc.UID );
+}
+
+ nAa.ifIndex = ifIndex;
+ nAa.authenticationAlgorithmsIndex = 1; // index number one
+ nAa.authenticationAlgorithm = 1; // 1 => open key
-+ sprintf ( nAa.UID, "%04d%04d\0", nAa.ifIndex, nAa.authenticationAlgorithmsIndex );
++ sprintf ( nAa.UID, "%04ld%04ld", nAa.ifIndex, nAa.authenticationAlgorithmsIndex );
+ nAa.authenticationAlgorithmsEnable = 1; // enabled by default
+ if ( ( wi->has_key ) &&
+ ( wi->key_size != 0 ) &&
+ nAa.ifIndex = ifIndex;
+ nAa.authenticationAlgorithmsIndex = 2; // index number 2
+ nAa.authenticationAlgorithm = 2; // 2 => shared key
-+ sprintf ( nAa.UID, "%04d%04d\0", nAa.ifIndex, nAa.authenticationAlgorithmsIndex );
++ sprintf ( nAa.UID, "%04ld%04ld", nAa.ifIndex, nAa.authenticationAlgorithmsIndex );
+ nAa.authenticationAlgorithmsEnable = 2;
+ if ( ( wi->has_key ) &&
+ ( wi->key_size != 0 ) &&
+ nDf.haveWEPDefaultKeyValue = TRUE;
+ nDf.ifIndex = ifIndex;
+ nDf.WEPDefaultKeyIndex = i + 1; // index number
-+ sprintf ( nDf.UID, "%04d%04d\0", nDf.ifIndex, nDf.WEPDefaultKeyIndex );
++ sprintf ( nDf.UID, "%04ld%04ld", nDf.ifIndex, nDf.WEPDefaultKeyIndex );
+ if ( wep[i].haveKey )
+ strcpy ( nDf.WEPDefaultKeyValue, "*****" );
+ else
+ nRt.supportedDataRatesTxIndex = i + 1;
+ nRt.supportedDataRatesTxValue = wi->range.bitrate[i] / 500000L;
+ nRt.haveSupportedDataRatesTxValue = TRUE;
-+ sprintf ( nRt.UID, "%04d%04d\0", nRt.ifIndex, nRt.supportedDataRatesTxIndex );
++ sprintf ( nRt.UID, "%04ld%04ld", nRt.ifIndex, nRt.supportedDataRatesTxIndex );
+ strcpy ( nRt.ifName, ifName );
+ addList (( char * ) &rtList, ( char * ) &nRt, sizeof ( nRt ));
+ }
+ nRr.supportedDataRatesRxIndex = i + 1;
+ nRr.supportedDataRatesRxValue = wi->range.bitrate[i] / 500000L;
+ nRr.haveSupportedDataRatesRxValue = TRUE;
-+ sprintf ( nRr.UID, "%04d%04d\0", nRr.ifIndex, nRr.supportedDataRatesRxIndex );
++ sprintf ( nRr.UID, "%04ld%04ld", nRr.ifIndex, nRr.supportedDataRatesRxIndex );
+ strcpy ( nRr.ifName, ifName );
+ addList (( char * ) &rrList, ( char * ) &nRr, sizeof ( nRr ));
+ }
+ s = bfr;
+ s = strchr ( s, ':' ); s++; /* Skip ethX: */
+ s = strtok ( s, " " ); /* ' ' => '\0' */
-+ sscanf ( s, "%X", &wi->stats.status ); // status
++ sscanf ( s, "%hX", &wi->stats.status ); // status
+
+ s = strtok ( NULL, " " ); // link quality
+ if ( strchr ( s, '.' ) != NULL )
+ wi->stats.qual.updated |= 1;
-+ sscanf ( s, "%d", &wi->stats.qual.qual );
++ sscanf ( s, "%hhd", &wi->stats.qual.qual );
+
+ s = strtok ( NULL, " " ); // signal level
+ if ( strchr ( s,'.' ) != NULL )
+ wi->stats.qual.updated |= 2;
-+ sscanf ( s, "%d", &wi->stats.qual.level );
++ sscanf ( s, "%hhd", &wi->stats.qual.level );
+
+ s = strtok ( NULL, " " ); // noise level
+ if ( strchr ( s, '.' ) != NULL )
+ wi->stats.qual.updated += 4;
-+ sscanf ( s, "%d", &wi->stats.qual.noise );
++ sscanf ( s, "%hhd", &wi->stats.qual.noise );
+
+ s = strtok ( NULL, " " ); sscanf ( s, "%d", &wi->stats.discard.nwid );
+ s = strtok ( NULL, " " ); sscanf ( s, "%d", &wi->stats.discard.code );
+ printf ( "%s %s\n", "SIOCGIWFREQ", " ===> no info.freq support" );
+
+ if ( info.has_sens )
-+ printf ( "%s sens: %d\n", "SIOCGIWSENS", info.sens );
++ printf ( "%s sens: %" PRIdPTR "\n", "SIOCGIWSENS", *(intptr_t *)&info.sens );
+ else
+ printf ( "%s %s\n", "SIOCGIWSENS", " ===> no info.sens support" );
+
+ if ( info.has_key ) {
-+ printf ( "%s key_size: %d key_flags: %d wepCurrentKey: %d\n",
++ printf ( "%s key_size: %d key_flags: %d wepCurrentKey: %ld\n",
+ "SIOCGIWENCODE", info.key_size, info.key_flags, wepCurrentKey );
+ printf ( "%s MODE: %d DISABLED: %d INDEX: %d OPEN: %d RESTRICTED: %d NOKEY: %d TEMP: %d\n",
+ "SIOCGIWENCODE", info.key_flags & IW_ENCODE_MODE,
+
+ for ( i = 0; i < MAX_WEP_KEYS; i++ ) {
+ if ( wep[i].haveKey )
-+ printf ( "%s wep[%d].len: %d wep[%d].key: %s\n",
++ printf ( "%s wep[%d].len: %ld wep[%d].key: %s\n",
+ "SIOCGIWENCODE", i, wep[i].len, i, wep[i].key );
+ }
+
+ printf ( "%s %s\n", "SIOCGIWAP", " ===> no ap_addr information" );
+
+ if ( info.has_bitrate )
-+ printf ( "%s bitrate: %d value: %d fixed: %d disabled: %d flags: %d\n",
-+ "SIOCGIWRATE", info.bitrate, info.bitrate.value, info.bitrate.fixed,
++ printf ( "%s bitrate: %" PRIdPTR " value: %d fixed: %d disabled: %d flags: %d\n",
++ "SIOCGIWRATE", *(intptr_t *)&info.bitrate, info.bitrate.value, info.bitrate.fixed,
+ info.bitrate.disabled, info.bitrate.flags );
+ else
+ printf ( "%s %s\n", "SIOCGIWRATE", " ===> no info.bitrate support" );
+
+ if ( info.has_rts )
-+ printf ( "%s rts: %d\n", "SIOCGIWRTS", info.rts );
++ printf ( "%s rts: %" PRIdPTR "\n", "SIOCGIWRTS", *(intptr_t *)&info.rts );
+ else
+ printf ( "%s %s\n", "SIOCGIWRTS", " ===> no info.rts support" );
+
+ if ( info.has_frag )
-+ printf ( "%s frag: %d\n", "SIOCGIWFRAG", info.frag );
++ printf ( "%s frag: %" PRIdPTR "\n", "SIOCGIWFRAG", *(intptr_t *)&info.frag );
+ else
+ printf ( "%s %s\n", "SIOCGIWFRAG", " ===> no info.frag support" );
+
+ printf ( "%s %s\n", "SIOCGIWMODE", " ===> no info.mode support" );
+
+ if ( info.has_power ) {
-+ printf ( "%s power: %d\n", "SIOCGIWPOWER", info.power );
++ printf ( "%s power: %" PRIdPTR "\n", "SIOCGIWPOWER", *(intptr_t *)&info.power );
+ printf ( "%s disabled: %d MIN: %d MAX: %d TIMEOUT: %d RELATIVE: %d\n",
+ "SIOCGIWPOWER",
+ info.power.disabled ? 1:0,
+ printf ( "%s %s\n", "SIOCGIWPOWER", " ===> no info.power support" );
+
+ if ( info.has_retry )
-+ printf ( "%s retry: %d\n", "SIOCGIWRETRY", info.retry );
++ printf ( "%s retry: %" PRIdPTR "\n", "SIOCGIWRETRY", *(intptr_t *)&info.retry );
+ else
+ printf ( "%s %s\n", "SIOCGIWRETRY", " ===> no info.retry support" );
+
+addList ( char *l, char *data, int len )
+{
+ char uid[256];
-+ LIST_HEAD ( , avNode ) *list;
++ avList_t *list;
+
+ // NOTE: this assumes the UID is at the beginning of the
+ // data structure and that UIDs are strings
+
-+ list = ( LIST_HEAD ( , avNode ) * ) l; // NOTE: don't know how to get
++ list = ( avList_t * ) l; // NOTE: don't know how to get
+ strcpy ( uid, data ); // rid of compiler warning on
+ // LISTHEAD typecast
+ // create a new node and the data that goes in it
+****************************************************************************/
+static void flushList ( char *l )
+{
-+ LIST_HEAD ( , avNode ) *list;
++ avList_t *list;
+
-+ list = ( LIST_HEAD ( , avNode ) * ) l; // NOTE: don't know how to get
++ list = ( avList_t * ) l; // NOTE: don't know how to get
+ while ( !LIST_EMPTY ( list )) { // rid of compiler warning on
+ np = LIST_FIRST ( list ); // LISTHEAD typecast
+ if ( np->data )
+
--- /dev/null
+++ b/agent/mibgroup/ieee802dot11.h
-@@ -0,0 +1,730 @@
+@@ -0,0 +1,732 @@
+/****************************************************************************
+* *
+* File Name: ieee802dot11.h *
+/****************************************************************************
+* Linked List Structure *
+****************************************************************************/
-+static struct avNode {
++struct avNode {
+ LIST_ENTRY ( avNode ) nodes;
+ char *data; // pointer to data
+};
+WriteMethod write_dot11SupportedRxAntenna;
+WriteMethod write_dot11DiversitySelectionRx;
+
++void shutdown_ieee802dot11 ( void );
++
+#endif /* _MIBGROUP_IEEE802DOT11_H */
--- /dev/null
+++ b/agent/mibgroup/iwlib.h
-@@ -0,0 +1,502 @@
+@@ -0,0 +1,509 @@
+/*
+ * Wireless Tools
+ *
+#include <unistd.h>
+#include <netdb.h> /* gethostbyname, getnetbyname */
+#include <net/ethernet.h> /* struct ether_addr */
++#ifdef HAVE_NET_IF_H
++#include <net/if.h>
++#endif
+#include <sys/time.h> /* struct timeval */
+#include <unistd.h>
+
+ && LINUX_VERSION_CODE < KERNEL_VERSION(2,1,0)
+#define LIBC5_HEADERS
+
++/* Musl */
++#elif !defined(__GLIBC__) && LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0)
++#define GENERIC_HEADERS
++
+/* Unsupported combination */
+#else
+#error "Your kernel/libc combination is not supported"
--- /dev/null
+--- a/agent/mib_modules.c
++++ b/agent/mib_modules.c
+@@ -42,6 +42,7 @@
+ #include <net-snmp/agent/table.h>
+ #include <net-snmp/agent/table_iterator.h>
+ #include "mib_module_includes.h"
++#include "mibgroup/ieee802dot11.h"
+
+ static int need_shutdown = 0;
+
--- a/agent/mibgroup/iwlib.h
+++ b/agent/mibgroup/iwlib.h
-@@ -85,6 +85,10 @@
- && LINUX_VERSION_CODE < KERNEL_VERSION(2,1,0)
- #define LIBC5_HEADERS
+@@ -92,6 +92,10 @@
+ #elif !defined(__GLIBC__) && LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0)
+ #define GENERIC_HEADERS
+/* Musl */
+#elif !defined(__GLIBC__) && LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0)
include $(TOPDIR)/rules.mk
PKG_NAME:=netbird
-PKG_VERSION:=0.27.7
+PKG_VERSION:=0.27.10
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/netbirdio/netbird/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=8b93ea80bc8f6a69447c2ad00448c29b91f13822377136c1ea15b9ec45c23d9d
+PKG_HASH:=d5a0f2af7e340a8df334906850401caf2d5498df832dc82a3153b2031f2ed897
PKG_MAINTAINER:=Oskari Rauta <oskari.rauta@gmail.com>
PKG_LICENSE:=BSD-3-Clause
include $(TOPDIR)/rules.mk
PKG_NAME:=nextdns
-PKG_VERSION:=1.43.3
+PKG_VERSION:=1.43.5
PKG_RELEASE:=1
PKG_SOURCE:=nextdns-$(PKG_VERSION).tar.gz
PKG_SOURCE_VERSION:=v$(PKG_VERSION)
PKG_SOURCE_URL:=https://codeload.github.com/nextdns/nextdns/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=574b377d6f4af140e3dcfba78fcf68d52ddb32390c020d1fe9bc5ade0af85f97
+PKG_HASH:=743f64d876c2c7afdae47716af1d41a6c5ec21adae74a318e5eb9319023a38c2
PKG_MAINTAINER:=Olivier Poitrey <rs@nextdns.io>
PKG_LICENSE:=MIT
PKG_NAME:=ocserv
PKG_VERSION:=1.3.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_BUILD_FLAGS:=no-mips16
PKG_BUILD_DIR :=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
[ -n "$hostname" ] && dyndns="true"
mkdir -p /var/etc
- sed -e "s#|PORT|#$port#g" \
- -e "s#|UDP_PORT|#$udp_port#g" \
- -e "s#|MAX_CLIENTS|#$max_clients#g" \
- -e "s#|MAX_SAME|#$max_same#g" \
- -e "s#|DPD|#$dpd#g" \
- -e "s#|AUTH|#$auth$authsuffix#g" \
- -e "s#|DYNDNS|#$dyndns#g" \
- -e "s#|PREDICTABLE_IPS|#$predictable_ips#g" \
- -e "s#|DEFAULT_DOMAIN|#$default_domain#g" \
- -e "s#|ENABLE_DEFAULT_DOMAIN|#$enable_default_domain#g" \
- -e "s#|ENABLE_SPLIT_DNS|#$enable_split_dns#g" \
- -e "s#|CISCO_COMPAT|#$cisco_compat#g" \
- -e "s#|PING_LEASES|#$ping_leases#g" \
- -e "s#|UDP|#$enable_udp#g" \
- -e "s#|COMPRESSION|#$enable_compression#g" \
- -e "s#|IPV4ADDR|#$ipaddr#g" \
- -e "s#|NETMASK|#$netmask#g" \
- -e "s#|IPV6ADDR|#$ip6addr#g" \
- -e "s#|ENABLE_IPV6|#$enable_ipv6#g" \
+ sed -e "s~|PORT|~$port~g" \
+ -e "s~|UDP_PORT|~$udp_port~g" \
+ -e "s~|MAX_CLIENTS|~$max_clients~g" \
+ -e "s~|MAX_SAME|~$max_same~g" \
+ -e "s~|DPD|~$dpd~g" \
+ -e "s~|AUTH|~$auth$authsuffix~g" \
+ -e "s~|DYNDNS|~$dyndns~g" \
+ -e "s~|PREDICTABLE_IPS|~$predictable_ips~g" \
+ -e "s~|DEFAULT_DOMAIN|~$default_domain~g" \
+ -e "s~|ENABLE_DEFAULT_DOMAIN|~$enable_default_domain~g" \
+ -e "s~|ENABLE_SPLIT_DNS|~$enable_split_dns~g" \
+ -e "s~|CISCO_COMPAT|~$cisco_compat~g" \
+ -e "s~|PING_LEASES|~$ping_leases~g" \
+ -e "s~|UDP|~$enable_udp~g" \
+ -e "s~|COMPRESSION|~$enable_compression~g" \
+ -e "s~|IPV4ADDR|~$ipaddr~g" \
+ -e "s~|NETMASK|~$netmask~g" \
+ -e "s~|IPV6ADDR|~$ip6addr~g" \
+ -e "s~|ENABLE_IPV6|~$enable_ipv6~g" \
/etc/ocserv/ocserv.conf.template > /var/etc/ocserv.conf
test -f /etc/ocserv/ocserv.conf.local && cat /etc/ocserv/ocserv.conf.local >> /var/etc/ocserv.conf
config_foreach setup_users ocservusers
procd_open_instance
- procd_set_param command /usr/sbin/ocserv -f -c /var/etc/ocserv.conf
+ procd_set_param command /usr/sbin/ocserv -s -f -c /var/etc/ocserv.conf
procd_set_param respawn
procd_close_instance
}
include $(TOPDIR)/rules.mk
PKG_NAME:=pdns-recursor
-PKG_VERSION:=5.0.4
+PKG_VERSION:=5.0.5
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://downloads.powerdns.com/releases/
-PKG_HASH:=d52aab108a0ad9e8be1de2179a693bb85e995c6a4d958a50702dcf79eec8ef28
+PKG_HASH:=02b9f053db64b32bd76ce6656cb35772c1d07a21fe0345ec13adb6f0fcfbf9ce
PKG_MAINTAINER:=Peter van Dijk <peter.van.dijk@powerdns.com>, Remi Gacogne <remi.gacogne@powerdns.com>
PKG_LICENSE:=GPL-2.0-only
include $(TOPDIR)/rules.mk
PKG_NAME:=pdns
-PKG_VERSION:=4.9.0
-PKG_RELEASE:=2
+PKG_VERSION:=4.9.1
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://downloads.powerdns.com/releases/
-PKG_HASH:=fe1d5433c88446ed70d931605c6ec377da99839c4e151b90b71aa211bd6eea92
+PKG_HASH:=30d9671b8f084774dbcba20f5a53a3134d0822ab2edc3ef968da030e630dd09a
PKG_MAINTAINER:=Peter van Dijk <peter.van.dijk@powerdns.com>, Remi Gacogne <remi.gacogne@powerdns.com>
PKG_LICENSE:=GPL-2.0-only
# disable-axfr-rectify=no
#################################
-# disable-syslog Disable logging to syslog, useful when running inside a supervisor that logs stdout
+# disable-syslog Disable logging to syslog, useful when running inside a supervisor that logs stderr
#
# disable-syslog=no
#
# dnsupdate=no
+#################################
+# dnsupdate-require-tsig Require TSIG secured DNS updates. Default is no.
+#
+# dnsupdate-require-tsig=no
+
#################################
# domain-metadata-cache-ttl Seconds to cache zone metadata from the database
#
#
# lua-records-exec-limit=1000
+#################################
+# lua-records-insert-whitespace Insert whitespace when combining LUA chunks
+#
+# lua-records-insert-whitespace=no
+
#################################
# max-cache-entries Maximum number of entries in the query cache
#
+++ /dev/null
-commit c6b1e59f3b413493551910a7d0a3e9206d488599
-Author: Chris Hofstaedtler <chris.hofstaedtler@deduktiva.com>
-Date: Sat Apr 6 23:51:35 2024 +0200
-
- auth dnsproxy: fix build on s390x
-
---- a/pdns/dnsproxy.cc
-+++ b/pdns/dnsproxy.cc
-@@ -240,10 +240,11 @@ void DNSProxy::mainloop()
- memcpy(&dHead, &buffer[0], sizeof(dHead));
- {
- auto conntrack = d_conntrack.lock();
--#if BYTE_ORDER == BIG_ENDIAN
-- // this is needed because spoof ID down below does not respect the native byteorder
-- d.id = (256 * (uint16_t)buffer[1]) + (uint16_t)buffer[0];
--#endif
-+ if (BYTE_ORDER == BIG_ENDIAN) {
-+ // this is needed because spoof ID down below does not respect the native byteorder
-+ dHead.id = (256 * (uint16_t)buffer[1]) + (uint16_t)buffer[0];
-+ }
-+
- auto iter = conntrack->find(dHead.id ^ d_xor);
- if (iter == conntrack->end()) {
- g_log << Logger::Error << "Discarding untracked packet from recursor backend with id " << (dHead.id ^ d_xor) << ". Conntrack table size=" << conntrack->size() << endl;
PKG_NAME:=respondd
PKG_SOURCE_DATE:=2019-05-01
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/freifunk-gluon/respondd.git
{
config_get group "$1" group
config_get interfaces "$1" interface
- config_get disabled "$1" disabled 0
+ config_get_bool disabled "$1" disabled 0
if [ "$disabled" -gt "0" ]; then
return
include $(TOPDIR)/rules.mk
PKG_NAME:=sing-box
-PKG_VERSION:=1.8.12
+PKG_VERSION:=1.9.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/SagerNet/sing-box/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=802eb5e202ac1dd846b1f529b3df9e5d69452182fd5d70f7c8f2a819c9e86162
+PKG_HASH:=cb1d91e362f4dd7c35f7bb040514414861a045a76301af8257134c65f7a45c36
PKG_LICENSE:=GPL-3.0-or-later
PKG_LICENSE_FILES:=LICENSE
include $(TOPDIR)/rules.mk
PKG_NAME:=sslh
-PKG_VERSION:=v1.22c
+PKG_VERSION:=v1.23.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://rutschle.net/tech/sslh/
-PKG_HASH:=8e3742d14edf4119350cfdc7bb96b89134d9218eb6d2a6e1f70891ca18a649b1
+PKG_HASH:=2aac006b40e5ae90e3b0fccb44acc994174e24e64457f25041b06aa2433ae637
PKG_MAINTAINER:=Jonathan McCrohan <jmccrohan@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
MAKE_FLAGS += \
USELIBCAP=1
+define Build/Compile
+
+ifeq ($(CONFIG_SSLH_SELECT),y)
+ $(call Build/Compile/Default,sslh-select)
+else
+ $(call Build/Compile/Default,sslh-fork)
+endif
+
+endef
+
define Package/sslh/install
$(INSTALL_DIR) $(1)/usr/sbin
ifeq ($(CONFIG_SSLH_SELECT),y)
# This is a basic configuration file that should provide
# sensible values for "standard" setup.
-@@ -15,15 +19,16 @@ chroot: "/var/empty";
- # Change hostname with your external address name.
- listen:
- (
-- { host: "thelonious"; port: "443"; }
-+ { host: "0.0.0.0"; port: "443"; },
-+ { host: "[::]"; port: "443"; }
- );
-
- protocols:
- (
- { name: "ssh"; service: "ssh"; host: "localhost"; port: "22"; fork: true; },
- { name: "openvpn"; host: "localhost"; port: "1194"; },
-- { name: "xmpp"; host: "localhost"; port: "5222"; },
-- { name: "http"; host: "localhost"; port: "80"; },
-+# { name: "xmpp"; host: "localhost"; port: "5222"; },
-+# { name: "http"; host: "localhost"; port: "80"; },
- { name: "tls"; host: "localhost"; port: "443"; log_level: 0; },
- { name: "anyprot"; host: "localhost"; port: "443"; }
- );
include $(TOPDIR)/rules.mk
PKG_NAME:=tailscale
-PKG_VERSION:=1.66.3
+PKG_VERSION:=1.66.4
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/tailscale/tailscale/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=51f26a6fcc8b4b6156354bd12a9f029e93c200de9b753ac72d10f70828fb6277
+PKG_HASH:=db94df254a263110439aa9d6cf6e1e64a5644b6e6e459ab5298ba6e478a988cf
PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec1@gmail.com>
PKG_LICENSE:=BSD-3-Clause
include $(INCLUDE_DIR)/package.mk
-GEOIP_VER:=202404250042
+GEOIP_VER:=202405230041
GEOIP_FILE:=geoip.dat.$(GEOIP_VER)
define Download/geoip
URL:=https://github.com/v2fly/geoip/releases/download/$(GEOIP_VER)/
URL_FILE:=geoip.dat
FILE:=$(GEOIP_FILE)
- HASH:=8ad42be541dfa7c2e548ba94b6dcb3fe431a105ba14d3907299316a036723760
+ HASH:=0401b0a1b82ad0d01c119f311d7ae0e0bae4d928f287251df2a98281d173f3d7
endef
-GEOSITE_VER:=20240426060244
+GEOSITE_VER:=20240508170917
GEOSITE_FILE:=dlc.dat.$(GEOSITE_VER)
define Download/geosite
URL:=https://github.com/v2fly/domain-list-community/releases/download/$(GEOSITE_VER)/
URL_FILE:=dlc.dat
FILE:=$(GEOSITE_FILE)
- HASH:=7aa19bb7fa5f99d62d3db87b632334caa356fb9b901f85f7168c064370973646
+ HASH:=25d6120b009498ac83ae723e9751a19ff545fac4800dad53ab6e2592c3407533
endef
-GEOSITE_IRAN_VER:=202404290026
+GEOSITE_IRAN_VER:=202405201648
GEOSITE_IRAN_FILE:=iran.dat.$(GEOSITE_IRAN_VER)
define Download/geosite-ir
URL:=https://github.com/bootmortis/iran-hosted-domains/releases/download/$(GEOSITE_IRAN_VER)/
URL_FILE:=iran.dat
FILE:=$(GEOSITE_IRAN_FILE)
- HASH:=dcffe111e31e34bceba3b28afc74eb82df222f440145f46673c79186d392e4f8
+ HASH:=8c37d450d8b756fcc58e71eeef67d4db419c05216259c177bd2cf01c55851d67
endef
define Package/v2ray-geodata/template
include $(TOPDIR)/rules.mk
PKG_NAME:=wsdd2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/Netgear/wsdd2.git
--- /dev/null
+--- a/wsdd2.c
++++ b/wsdd2.c
+@@ -543,7 +543,15 @@ static int netlink_recv(struct endpoint
+ char buf[PAGE_SIZE];
+ struct sockaddr_nl sa;
+ struct iovec iov = { buf, sizeof buf };
+- struct msghdr msg = { &sa, sizeof sa, &iov, 1, NULL, 0, 0 };
++ struct msghdr msg = {
++ .msg_name = &sa,
++ .msg_namelen = sizeof(sa),
++ .msg_iov = &iov,
++ .msg_iovlen = 1,
++ .msg_control = NULL,
++ .msg_controllen = 0,
++ .msg_flags = 0,
++ };
+ ssize_t msglen = recvmsg(ep->sock, &msg, 0);
+
+ DEBUG(2, W, "%s: %zd bytes", __func__, msglen);
include $(TOPDIR)/rules.mk
PKG_NAME:=xfrpc
-PKG_VERSION:=2.9.644
+PKG_VERSION:=3.05.661
PKG_RELEASE:=1
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/liudf0716/xfrpc.git
-PKG_SOURCE_VERSION:=$(PKG_VERSION)
-PKG_MIRROR_HASH:=0040476ce8d2a8f7dffe6162ad2cd94797071bd4ccbdcac9433f518bb60340bd
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/liudf0716/xfrpc/tar.gz/$(PKG_VERSION)?
+PKG_HASH:=202b5eb6d4ecee5444ac5a55fea462ad106ebfb88f51ca8499553db4f701f28f
+PKG_BUILD_DIR:=$(BUILD_DIR)/xfrpc-$(PKG_VERSION)
PKG_MAINTAINER:=Dengfeng Liu <liudf0716@gmail.com>
PKG_LICENSE:=GPL-3.0-or-later
-config xfrp 'init'
- option disabled 1
- option loglevel 7
-
config xfrpc 'common'
- option server_addr frps_ip_address
+ option enabled 0
+ option loglevel 7
+ option server_addr frps.wifidogx.online
option server_port 7000
-config xfrpc 'ssh01'
- option type tcp
+config tcp 'ssh01'
option local_ip 127.0.0.1
option local_port 22
option remote_port 6000
-#config xfrpc 'web01'
-# option type http
+#config http 'web01'
# option local_ip 127.0.0.1
# option local_port 8080
# option custom_domains your_domain_name
-#config xfrpc 'web02'
-# option type https
+#config https 'web02'
# option local_ip 127.0.0.1
# option local_port 8443
-# option custom_domains your_domain_name
+# option subdomain your_domain_name
+
+#config socks5 'socks01'
+# option remote_port 6001
+
+#config plugin 'plugin01'
+# option remote_port 6002
+# option plugin_name http
+# option plugin_param 'youtube-url'
+# option plugin_action 'download'
#!/bin/sh /etc/rc.common
-# Copyright (C) 2022 Dengfeng Liu <liu_df@qq.com>
+# Copyright (C) 2022 Dengfeng Liu <liudf0716@gmail.com>
#
# This is free software, licensed under the GNU General Public License v3.
# See /LICENSE for more information.
handle_xfrpc() {
- local name="$1"
+ local section="$1"
+ local config="$2"
+
+ case "$section" in
+ common)
+ uci_validate_section xfrpc xfrpc common \
+ 'server_addr:host' \
+ 'server_port:uinteger' \
+ 'token:string:'
+ ;;
+ esac
+
+ # Write the validated settings to the config file
+ echo "[${section}]" >> "$config"
+ [ -z "$server_addr" ] || echo "server_addr = $server_addr" >> "$config"
+ [ -z "$server_port" ] || echo "server_port = $server_port" >> "$config"
+ [ -z "$token" ] || echo "token = $token" >> "$config"
+}
+
+handle_tcp() {
+ local section="$1"
local config="$2"
- echo "[$name]" >> "$config"
-
- handle_type() {
- uci_validate_section xfrpc xfrpc "$name" \
- 'type:or("tcp", "http", "https")' \
- 'local_ip:ipaddr:127.0.0.1' \
- 'local_port:uinteger'
-
- echo "type = $type" >> "$config"
- echo "local_ip = $local_ip" >> "$config"
- echo "local_port = $local_port" >> "$config"
- case "$type" in
- tcp|mstsc|socks5)
- config_get remote_port "$name" remote_port
- echo "remote_port = $remote_port" >> "$config"
- ;;
- http|https)
- config_get custom_domains "$name" custom_domains
- [ -z "$custom_domains" ] || echo "custom_domains = $custom_domains" >> "$config"
- config_get subdomain "$name" subdomain
- [ -z "$subdomain" ] || echo "subdomain = $subdomain" >> "$config"
- ;;
- esac
- }
-
- if [ "$name" = "common" ]; then
- uci_validate_section xfrpc xfrp "$name" \
- 'server_addr:host' \
- 'server_port:uinteger' \
- 'token:string:'
-
- echo "server_addr = $server_addr" >> "$config"
- echo "server_port = $server_port" >> "$config"
- [ -z "$token" ] || echo "token = $token" >> "$config"
- else
- handle_type
- fi
+ uci_validate_section xfrpc tcp $section \
+ 'enabled:bool:1' \
+ 'local_ip:host' \
+ 'local_port:uinteger' \
+ 'remote_port:uinteger'
+
+ # if enabled is 0, then return
+ [ $enabled = 0 ] && return
+
+ # Write the validated settings to the config file
+ echo "[${section}]" >> "$config"
+ echo "type = tcp" >> "$config"
+ [ -z "$local_ip" ] || echo "local_ip = $local_ip" >> "$config"
+ [ -z "$local_port" ] || echo "local_port = $local_port" >> "$config"
+ [ -z "$remote_port" ] || echo "remote_port = $remote_port" >> "$config"
+}
+
+handle_http() {
+ local section="$1"
+ local config="$2"
+
+ uci_validate_section xfrpc http $section \
+ 'enabled:bool:1' \
+ 'local_ip:host' \
+ 'local_port:uinteger' \
+ 'custom_domains:string' \
+ 'subdomain:string' \
+
+ # if enabled is 0, then return
+ [ $enabled = 0 ] && return
+
+ # Write the validated settings to the config file
+ echo "[${section}]" >> "$config"
+ echo "type = http" >> "$config"
+ [ -z "$local_ip" ] || echo "local_ip = $local_ip" >> "$config"
+ [ -z "$local_port" ] || echo "local_port = $local_port" >> "$config"
+ [ -z "$custom_domains" ] || echo "custom_domains = $custom_domains" >> "$config"
+ [ -z "$subdomain" ] || echo "subdomain = $subdomain" >> "$config"
+}
+
+handle_https() {
+ local section="$1"
+ local config="$2"
+
+ uci_validate_section xfrpc https $section \
+ 'enabled:bool:1' \
+ 'local_ip:host' \
+ 'local_port:uinteger' \
+ 'custom_domains:string' \
+ 'subdomain:string'
+
+ # if enabled is 0, then return
+ [ $enabled = 0 ] && return
+
+ # Write the validated settings to the config file
+ echo "[${section}]" >> "$config"
+ echo "type = https" >> "$config"
+ [ -z "$local_ip" ] || echo "local_ip = $local_ip" >> "$config"
+ [ -z "$local_port" ] || echo "local_port = $local_port" >> "$config"
+ [ -z "$custom_domains" ] || echo "custom_domains = $custom_domains" >> "$config"
+ [ -z "$subdomain" ] || echo "subdomain = $subdomain" >> "$config"
+}
+
+handle_socks5() {
+ local section="$1"
+ local config="$2"
+
+ uci_validate_section xfrpc socks5 $section \
+ 'enabled:bool:1' \
+ 'remote_port:uinteger'
+
+ # if enabled is 0, then return
+ [ $enabled = 0 ] && return
+
+ # Write the validated settings to the config file
+ echo "[${section}]" >> "$config"
+ echo "type = socks5" >> "$config"
+ [ -z "$remote_port" ] || echo "remote_port = $remote_port" >> "$config"
}
service_triggers() {
> "$conf_file"
config_load "$NAME"
- uci_validate_section xfrpc xfrp init \
- 'disabled:bool:0' \
+ uci_validate_section xfrpc xfrpc common \
+ 'enabled:bool:0' \
'loglevel:uinteger:0'
- if [ $disabled = 1 ]; then
+ if [ $enabled = 0 ]; then
echo "xfrpc service disabled"
return
fi
config_foreach handle_xfrpc xfrpc "$conf_file"
+ config_foreach handle_tcp tcp "$conf_file"
+ config_foreach handle_http http "$conf_file"
+ config_foreach handle_https https "$conf_file"
+ config_foreach handle_socks5 socks5 "$conf_file"
procd_open_instance
procd_set_param command "$PROG" -c "$conf_file" -f -d $loglevel
include $(TOPDIR)/rules.mk
PKG_NAME:=xray-core
-PKG_VERSION:=1.8.11
+PKG_VERSION:=1.8.13
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/XTLS/Xray-core/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=d99ee6008c508abbad6bbb242d058b22efb50fb35867d15447a2b4602ab4b283
+PKG_HASH:=9e63fbeb4667c19e286389c370d30e9e904f4421784adcbe6cf4d6e172a2ac29
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
PKG_LICENSE:=MPL-2.0
include $(TOPDIR)/rules.mk
PKG_NAME:=upmpdcli
-PKG_VERSION:=1.8.6
+PKG_VERSION:=1.8.11
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.lesbonscomptes.com/upmpdcli/downloads
-PKG_HASH:=55e3d27bea5bef4560f319137f1a5c7d08abbba5a9aae90ee3240903fdb8c3e4
+PKG_HASH:=d715120b869382ea701f07baa604c77b7895537e0655e1ed4dfa68d986d6a59f
PKG_MAINTAINER:=
PKG_LICENSE:=LGPL-2.1-or-later
PKG_LICENSE_FILES:=COPYING
-PKG_INSTALL:=1
-PKG_BUILD_PARALLEL:=1
-
include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/meson.mk
define Package/upmpdcli
SECTION:=sound
PKG_NAME:=acl
PKG_VERSION:=2.3.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://git.savannah.nongnu.org/cgit/acl.git/snapshot
-PKG_HASH:=0fc318808c1e91925398cbe41399a33b74dcf788a1c0af4feae8f7a322c6e6fd
-PKG_MAINTAINER:=Maxim Storchak <m.storchak@gmail.com>
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=@SAVANNAH/acl
+PKG_HASH:=97203a72cae99ab89a067fe2210c1cbf052bc492b479eca7d226d9830883b0bd
+PKG_MAINTAINER:=Maxim Storchak <m.storchak@gmail.com>
PKG_LICENSE:=LGPL-2.1 GPL-2.0
PKG_LICENSE_FILES:=doc/COPYING doc/COPYING.LGPL
PKG_CPE_ID:=cpe:/a:acl_project:acl
PKG_INSTALL:=1
-PKG_FIXUP:=autoreconf
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
+++ /dev/null
---- a/configure.ac
-+++ b/configure.ac
-@@ -34,12 +34,6 @@ AC_SYS_LARGEFILE
- AM_PROG_AR
- LT_INIT
-
--dnl Minimal version supporting AM_GNU_GETTEXT_REQUIRE_VERSION.
--AM_GNU_GETTEXT_VERSION([0.19.6])
--dnl Require at least the following version, but use the latest available one.
--AM_GNU_GETTEXT_REQUIRE_VERSION([0.19.8])
--AM_GNU_GETTEXT([external])
--
- AC_ARG_ENABLE([debug],
- [AS_HELP_STRING([--enable-debug], [Enable extra debugging])])
- AS_IF([test "x$enable_debug" = "xyes"],
-@@ -69,6 +63,5 @@ AC_CONFIG_COMMANDS([include/sys],
- AC_CONFIG_FILES([
- libacl.pc
- Makefile
-- po/Makefile.in
- ])
- AC_OUTPUT
+++ /dev/null
---- a/autogen.sh
-+++ b/autogen.sh
-@@ -1,6 +1,4 @@
- #!/bin/sh -ex
--po/update-potfiles
--autopoint --force
- am_libdir=$(automake --print-libdir)
- cp "${am_libdir}/INSTALL" doc/
- exec autoreconf -f -i
+++ /dev/null
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -3,8 +3,6 @@ ACLOCAL_AMFLAGS = -I m4
- EXTRA_DIST = \
- exports
-
--SUBDIRS = po
--
- AM_CPPFLAGS = \
- -I$(top_builddir)/include \
- -I$(top_srcdir)/include \
include $(TOPDIR)/rules.mk
PKG_NAME:=at
-PKG_VERSION:=3.2.2
+PKG_VERSION:=3.2.5
PKG_RELEASE:=1
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=https://salsa.debian.org/debian/at.git
-PKG_SOURCE_VERSION:=release/3.2.2
-PKG_MIRROR_HASH=93f7f99c4242dbc5218907981e32f74ddb5e09c5b7922617c8d84c16920f488d
+PKG_SOURCE:=at_$(PKG_VERSION).orig.tar.gz
+PKG_SOURCE_URL:=http://software.calhariz.com/at
+PKG_HASH:=bb066b389d7c9bb9d84a35738032b85c30cba7d949f758192adc72c9477fd3b8
PKG_MAINTAINER:=Phil Eichinger <phil@zankapfel.net>
PKG_LICENSE:=GPL-2.0-or-later GPL-3.0-or-later ISC
CATEGORY:=Utilities
DEPENDS:=+libelf
TITLE:=Delayed job execution and batch processing
- URL:=http://packages.debian.org/stable/at
+ URL:=https://salsa.debian.org/debian/at
endef
define Package/at/description
+++ /dev/null
-From 7f811d9c4ebc9444e613e251c31d6bf537a24dc1 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 13 Apr 2015 16:35:30 -0700
-Subject: [PATCH] remove glibc assumption
-
-glibc time.h header has an undocumented __isleap macro
-that we are using anf musl is missing it.
-Since it is undocumented & does not appear
-on any other libc, stop using it and just define the macro in
-locally instead.
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-[patch from: http://patchwork.openembedded.org/patch/91893/ ]
-Signed-off-by: Phil Eichinger <phil@zankapfel.net>
----
- parsetime.y | 11 +++++++----
- 1 file changed, 7 insertions(+), 4 deletions(-)
-
---- a/parsetime.y
-+++ b/parsetime.y
-@@ -14,6 +14,9 @@
- ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0))
- #endif
-
-+#define is_leap_year(y) \
-+ ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0))
-+
- struct tm exectm;
- static int isgmt;
- static char *tz = NULL;
-@@ -230,8 +233,8 @@ date : month_name day_number
- mnum == 12) && dnum > 31)
- || ((mnum == 4 || mnum == 6 || mnum == 9 ||
- mnum == 11) && dnum > 30)
-- || (mnum == 2 && dnum > 29 && __isleap(ynum+1900))
-- || (mnum == 2 && dnum > 28 && !__isleap(ynum+1900))
-+ || (mnum == 2 && dnum > 29 && is_leap_year(ynum+1900))
-+ || (mnum == 2 && dnum > 28 && !is_leap_year(ynum+1900))
- )
- {
- yyerror("Error in day of month");
-@@ -274,8 +277,8 @@ date : month_name day_number
- mnum == 12) && dnum > 31)
- || ((mnum == 4 || mnum == 6 || mnum == 9 ||
- mnum == 11) && dnum > 30)
-- || (mnum == 2 && dnum > 29 && __isleap(ynum+1900))
-- || (mnum == 2 && dnum > 28 && !__isleap(ynum+1900))
-+ || (mnum == 2 && dnum > 29 && is_leap_year(ynum+1900))
-+ || (mnum == 2 && dnum > 28 && !is_leap_year(ynum+1900))
- )
- {
- yyerror("Error in day of month");
+++ /dev/null
---- a/getloadavg.c
-+++ b/getloadavg.c
-@@ -69,8 +69,9 @@ Boston, MA 02110-1301 USA */
- #include <config.h>
- #endif
-
--#include "lisp.h"
--#include "sysfile.h" /* for encapsulated open, close, read, write */
-+#include <sys/types.h>
-+#include <sys/stat.h>
-+#include <fcntl.h>
-
- #ifndef HAVE_GETLOADAVG
-
PKG_NAME:=attr
PKG_VERSION:=2.5.2
-PKG_RELEASE:=2
+PKG_RELEASE:=3
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://git.savannah.nongnu.org/cgit/attr.git/snapshot
-PKG_HASH:=b266cf45e2256b4d85a86554b42c0218abce40356f5c3026f88e15dcf73df775
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=@SAVANNAH/attr
+PKG_HASH:=f2e97b0ab7ce293681ab701915766190d607a1dba7fae8a718138150b700a70b
PKG_MAINTAINER:=Maxim Storchak <m.storchak@gmail.com>
PKG_CPE_ID:=cpe:/a:attr_project:attr
-PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
+++ /dev/null
---- a/configure.ac
-+++ b/configure.ac
-@@ -37,9 +37,6 @@ AC_SYS_LARGEFILE
- AM_PROG_AR
- LT_INIT
-
--AM_GNU_GETTEXT_VERSION([0.18.2])
--AM_GNU_GETTEXT([external])
--
- AC_ARG_ENABLE([debug],
- [AS_HELP_STRING([--enable-debug], [Enable extra debugging])])
- AS_IF([test "x$enable_debug" = "xyes"],
-@@ -65,6 +62,5 @@ AC_CONFIG_COMMANDS([include/attr],
- AC_CONFIG_FILES([
- libattr.pc
- Makefile
-- po/Makefile.in
- ])
- AC_OUTPUT
+++ /dev/null
---- a/autogen.sh
-+++ b/autogen.sh
-@@ -1,6 +1,4 @@
- #!/bin/sh -ex
--po/update-potfiles
--autopoint --force
- am_libdir=$(automake --print-libdir)
- cp "${am_libdir}/INSTALL" doc/
- exec autoreconf -f -i
+++ /dev/null
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -3,8 +3,6 @@ ACLOCAL_AMFLAGS = -I m4
- EXTRA_DIST = \
- exports
-
--SUBDIRS = po
--
- AM_CPPFLAGS = \
- -I$(top_builddir)/include \
- -I$(top_srcdir)/include \
include $(TOPDIR)/rules.mk
PKG_NAME:=augeas
-PKG_VERSION:=1.12.0
-PKG_RELEASE:=3
+PKG_VERSION:=1.14.1
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://download.augeas.net/
-PKG_HASH:=321942c9cc32185e2e9cb72d0a70eea106635b50269075aca6714e3ec282cb87
+PKG_SOURCE_URL:=https://github.com/hercules-team/augeas/releases/download/release-$(PKG_VERSION)
+PKG_HASH:=368bfdd782e4b9c7163baadd621359c82b162734864b667051ff6bcb57b9edff
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
+
+PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec1@gmail.com>
PKG_LICENSE:=LGPL-2.1-or-later
PKG_LICENSE_FILES:=COPYING
PKG_CPE_ID:=cpe:/a:augeas:augeas
-PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec1@gmail.com>
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
PKG_NAME:=avrdude
PKG_VERSION:=7.3
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/avrdudes/avrdude
--- /dev/null
+From 315df4ba7670a1e5190373155196a40d5a3fd54b Mon Sep 17 00:00:00 2001
+From: Michael Heimpold <mhei@heimpold.de>
+Date: Wed, 27 Mar 2024 22:33:21 +0100
+Subject: [PATCH] Add support for libgpiod v2+ API
+
+libgpiod in version 2 or above introduced an API change which results
+in compile error with the current code.
+
+This commit adds some glue magic for the newer versions and
+tries to detect the used libgpiod version based on the information
+available in the pkg-config files.
+
+At the moment, this eliminates the possibility to statically link
+against this library.
+
+Signed-off-by: Michael Heimpold <mhei@heimpold.de>
+(cherry picked from commit ea701bc2f59c465f48dc290e8e6cf6d14416205f)
+Upstream-Status: Accepted - will be part of next release
+---
+ CMakeLists.txt | 39 ++++++++---
+ src/Makefile.am | 4 +-
+ src/cmake_config.h.in | 3 +
+ src/configure.ac | 31 +++++++++
+ src/linuxgpio.c | 156 ++++++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 222 insertions(+), 11 deletions(-)
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -126,7 +126,6 @@ if(USE_STATIC_LIBS)
+ set(PREFERRED_LIBFTDI1 libftdi1.a ftdi1)
+ set(PREFERRED_LIBREADLINE libreadline.a readline)
+ set(PREFERRED_LIBSERIALPORT libserialport.a serialport)
+- set(PREFERRED_LIBGPIOD libgpiod.a gpiod)
+ else()
+ set(PREFERRED_LIBELF elf)
+ set(PREFERRED_LIBUSB usb)
+@@ -136,7 +135,6 @@ else()
+ set(PREFERRED_LIBFTDI1 ftdi1)
+ set(PREFERRED_LIBREADLINE readline)
+ set(PREFERRED_LIBSERIALPORT serialport)
+- set(PREFERRED_LIBGPIOD gpiod)
+ endif()
+
+ # -------------------------------------
+@@ -237,12 +235,32 @@ if(HAVE_LIBSERIALPORT)
+ endif()
+
+ # -------------------------------------
+-# Find libgpiod, if needed
++# Find libgpiod using pkg-config, if needed
+ if(HAVE_LINUXGPIO)
+- find_library(HAVE_LIBGPIOD NAMES ${PREFERRED_LIBGPIOD})
+- if(HAVE_LIBGPIOD)
+- set(LIB_LIBGPIOD ${HAVE_LIBGPIOD})
+- set(CMAKE_REQUIRED_LIBRARIES ${LIB_LIBGPIOD})
++ # defaults/fallbacks
++ set(HAVE_LIBGPIOD 0)
++ set(HAVE_LIBGPIOD_V2 0)
++
++ find_package(PkgConfig)
++ if(PKG_CONFIG_FOUND)
++ # check whether we have version >= 2.0
++ pkg_check_modules(LIBGPIODV2 libgpiod>=2.0)
++ if(LIBGPIODV2_FOUND)
++ set(HAVE_LIBGPIOD 1)
++ set(HAVE_LIBGPIOD_V2 1)
++ set(CMAKE_REQUIRED_LIBRARIES ${LIBGPIODV2_LIBRARIES})
++ set(LIB_LIBGPIOD ${LIBGPIODV2_LINK_LIBRARIES})
++ else()
++ # check whether we have at least an older version
++ pkg_check_modules(LIBGPIOD libgpiod)
++ if(LIBGPIOD_FOUND)
++ set(HAVE_LIBGPIOD 1)
++ set(CMAKE_REQUIRED_LIBRARIES ${LIBGPIOD_LIBRARIES})
++ set(LIB_LIBGPIOD ${LIBGPIOD_LINK_LIBRARIES})
++ endif()
++ endif()
++ else()
++ message(WARNING "For using libgpiod, pkg-config would be required which is not available.")
+ endif()
+ endif()
+
+@@ -339,7 +357,8 @@ if (DEBUG_CMAKE)
+ message(STATUS "HAVE_LIBUSB_1_0_LIBUSB_H: ${HAVE_LIBUSB_1_0_LIBUSB_H}")
+ message(STATUS "HAVE_HIDAPI_HIDAPI_H: ${HAVE_HIDAPI_HIDAPI_H}")
+ message(STATUS "LIBUSB_COMPAT_DIR: ${LIBUSB_COMPAT_DIR}")
+- message(STATUS "HAVE_LIBGPIOD: ${HAVE_LIBGPIOD}")
++ message(STATUS "LIBGPIODV2_FOUND: ${LIBGPIODV2_FOUND}")
++ message(STATUS "LIBGPIOD_FOUND: ${LIBGPIOD_FOUND}")
+ message(STATUS "----------------------")
+ endif()
+
+@@ -409,7 +428,9 @@ endif()
+
+ if(HAVE_LINUXGPIO)
+ message(STATUS "ENABLED linuxgpio")
+- if (HAVE_LIBGPIOD)
++ if (LIBGPIODV2_FOUND)
++ message(STATUS "DO HAVE libgpiod (v2.x)")
++ elseif(LIBGPIOD_FOUND)
+ message(STATUS "DO HAVE libgpiod")
+ else()
+ message(STATUS "DON'T HAVE libgpiod")
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -62,10 +62,10 @@ libavrdude_la_CPPFLAGS = $(libavrdude_a_
+
+ avrdude_CFLAGS = @ENABLE_WARNINGS@
+
+-libavrdude_a_CFLAGS = @ENABLE_WARNINGS@
++libavrdude_a_CFLAGS = @ENABLE_WARNINGS@ $(LIBGPIOD_CFLAGS)
+ libavrdude_la_CFLAGS = $(libavrdude_a_CFLAGS)
+
+-avrdude_LDADD = $(top_builddir)/$(noinst_LIBRARIES) @LIBUSB_1_0@ @LIBHIDAPI@ @LIBUSB@ @LIBFTDI1@ @LIBFTDI@ @LIBHID@ @LIBELF@ @LIBPTHREAD@ @LIBSERIALPORT@ -lm
++avrdude_LDADD = $(top_builddir)/$(noinst_LIBRARIES) @LIBUSB_1_0@ @LIBHIDAPI@ @LIBUSB@ @LIBFTDI1@ @LIBFTDI@ @LIBHID@ @LIBELF@ @LIBPTHREAD@ @LIBSERIALPORT@ $(LIBGPIOD_LIBS) -lm
+
+ bin_PROGRAMS = avrdude
+
+--- a/src/cmake_config.h.in
++++ b/src/cmake_config.h.in
+@@ -30,6 +30,9 @@
+ /* Let linuxgpio know if libgpiod is available. */
+ #cmakedefine HAVE_LIBGPIOD
+
++/* Let linuxgpio know whether v2 of libgpiod is available. */
++#cmakedefine HAVE_LIBGPIOD_V2
++
+ /* Linux SPI support enabled */
+ #cmakedefine HAVE_LINUXSPI 1
+
+--- a/src/configure.ac
++++ b/src/configure.ac
+@@ -65,6 +65,14 @@ AN_MAKEVAR([AR], [AC_PROG_AR])
+ AN_PROGRAM([ar], [AC_PROG_AR])
+ AC_DEFUN([AC_PROG_AR], [AC_CHECK_TARGET_TOOL(AR, ar, :)])
+ AC_PROG_AR
++
++# If macro PKG_PROG_PKG_CONFIG is not available, Autoconf generates a misleading error message,
++# so check for existence first, and otherwise provide helpful advice.
++m4_ifndef([PKG_PROG_PKG_CONFIG], [m4_fatal(m4_normalize([
++ Macro PKG_PROG_PKG_CONFIG is not available.
++ It is usually defined in file pkg.m4 provided by package pkg-config.]))])
++PKG_PROG_PKG_CONFIG([0.23])
++
+ AH_TEMPLATE([HAVE_YYLEX_DESTROY],
+ [Define if lex/flex has yylex_destroy])
+ # flex should have this
+@@ -465,6 +473,22 @@ fi
+ if test "$enabled_linuxgpio" = "yes"; then
+ AC_DEFINE(HAVE_LINUXGPIO, 1, [Linux sysfs GPIO support enabled])
+ confsubst="$confsubst -e /^@HAVE_LINUXGPIO_/d"
++
++ PKG_CHECK_MODULES([LIBGPIOD], [libgpiod >= 2.0], [
++ have_libgpiod=yes
++ have_libgpiodv2=yes
++ AC_DEFINE([HAVE_LIBGPIOD], [1], [Linux libgpiod available])
++ AC_DEFINE([HAVE_LIBGPIOD_V2], [1], [Linux libgpiod (v2.x) available])
++ ], [
++ PKG_CHECK_MODULES([LIBGPIOD], [libgpiod], [
++ have_libgpiod=yes
++ have_libgpiodv2=no
++ AC_DEFINE([HAVE_LIBGPIOD], [1], [Linux libgpiod available])
++ ], [
++ have_libgpiod=no
++ have_libgpiodv2=no
++ ])
++ ])
+ else
+ confsubst="$confsubst -e /^@HAVE_LINUXGPIO_BEGIN@/,/^@HAVE_LINUXGPIO_END@/d"
+ fi
+@@ -678,6 +702,13 @@ fi
+
+ if test x$enabled_linuxgpio = xyes; then
+ echo "ENABLED linuxgpio"
++ if test "x$have_libgpiodv2" = xyes; then
++ echo "DO HAVE libgpiod (v2.x)"
++ elif test "x$have_libgpiod" = xyes; then
++ echo "DO HAVE libgpiod"
++ else
++ echo "DON'T HAVE libgpiod"
++ fi
+ else
+ echo "DISABLED linuxgpio"
+ fi
+--- a/src/linuxgpio.c
++++ b/src/linuxgpio.c
+@@ -337,6 +337,162 @@ static void linuxgpio_sysfs_close(PROGRA
+
+ #ifdef HAVE_LIBGPIOD
+
++#ifdef HAVE_LIBGPIOD_V2
++
++struct gpiod_line {
++ struct gpiod_chip *chip;
++ struct gpiod_line_request *line_request;
++ unsigned int gpio_num;
++};
++
++struct gpiod_line *gpiod_line_get(const char *port, int gpio_num) {
++ struct gpiod_line *rv;
++ char abs_port[32];
++
++ if (snprintf(abs_port, sizeof(abs_port), "/dev/%s", port) >= (int)sizeof(abs_port))
++ return NULL;
++
++ rv = calloc(sizeof(struct gpiod_line), 1);
++ if (!rv)
++ return NULL;
++
++ rv->gpio_num = gpio_num;
++
++ rv->chip = gpiod_chip_open(abs_port);
++ if (!rv->chip) {
++ free(rv);
++ return NULL;
++ }
++
++ return rv;
++}
++
++int gpiod_line_request_input(struct gpiod_line *gpio_line, const char *consumer) {
++ struct gpiod_line_settings *line_settings = NULL;
++ struct gpiod_line_config *line_config = NULL;
++ struct gpiod_request_config *req_cfg = NULL;
++ int retval = -1;
++
++ line_settings = gpiod_line_settings_new();
++ line_config = gpiod_line_config_new();
++ req_cfg = gpiod_request_config_new();
++
++ if (!line_settings || !line_config || !req_cfg)
++ goto err_out;
++
++ retval = gpiod_line_settings_set_direction(line_settings, GPIOD_LINE_DIRECTION_INPUT);
++ if (retval != 0)
++ goto err_out;
++
++ retval = gpiod_line_config_add_line_settings(line_config, &gpio_line->gpio_num, 1, line_settings);
++ if (retval != 0)
++ goto err_out;
++
++ gpiod_request_config_set_consumer(req_cfg, consumer);
++
++ gpio_line->line_request = gpiod_chip_request_lines(gpio_line->chip, req_cfg, line_config);
++ if (!gpio_line->line_request)
++ goto err_out;
++
++ retval = 0;
++
++err_out:
++ gpiod_line_settings_free(line_settings);
++ gpiod_line_config_free(line_config);
++ gpiod_request_config_free(req_cfg);
++ return retval;
++}
++
++int gpiod_line_request_output(struct gpiod_line *gpio_line, const char *consumer, int value) {
++ struct gpiod_line_settings *line_settings = NULL;
++ struct gpiod_line_config *line_config = NULL;
++ struct gpiod_request_config *req_cfg = NULL;
++ int retval = -1;
++
++ line_settings = gpiod_line_settings_new();
++ line_config = gpiod_line_config_new();
++ req_cfg = gpiod_request_config_new();
++
++ if (!line_settings || !line_config || !req_cfg)
++ goto err_out;
++
++ retval = gpiod_line_settings_set_direction(line_settings, GPIOD_LINE_DIRECTION_OUTPUT);
++ if (retval != 0)
++ goto err_out;
++
++ retval = gpiod_line_settings_set_output_value(line_settings, value ? GPIOD_LINE_VALUE_ACTIVE : GPIOD_LINE_VALUE_INACTIVE);
++ if (retval != 0)
++ goto err_out;
++
++ retval = gpiod_line_config_add_line_settings(line_config, &gpio_line->gpio_num, 1, line_settings);
++ if (retval != 0)
++ goto err_out;
++
++ gpiod_request_config_set_consumer(req_cfg, consumer);
++
++ gpio_line->line_request = gpiod_chip_request_lines(gpio_line->chip, req_cfg, line_config);
++ if (!gpio_line->line_request)
++ goto err_out;
++
++ retval = 0;
++
++err_out:
++ gpiod_line_settings_free(line_settings);
++ gpiod_line_config_free(line_config);
++ gpiod_request_config_free(req_cfg);
++ return retval;
++}
++
++int gpiod_line_set_direction_input(struct gpiod_line *gpio_line) {
++ struct gpiod_line_settings *line_settings = NULL;
++ struct gpiod_line_config *line_config = NULL;
++ int retval = -1;
++
++ line_settings = gpiod_line_settings_new();
++ line_config = gpiod_line_config_new();
++
++ if (!line_settings || !line_config)
++ goto err_out;
++
++ retval = gpiod_line_settings_set_direction(line_settings, GPIOD_LINE_DIRECTION_INPUT);
++ if (retval != 0)
++ goto err_out;
++
++ retval = gpiod_line_config_add_line_settings(line_config, &gpio_line->gpio_num, 1, line_settings);
++ if (retval != 0)
++ goto err_out;
++
++ retval = gpiod_line_request_reconfigure_lines(gpio_line->line_request, line_config);
++
++err_out:
++ gpiod_line_settings_free(line_settings);
++ gpiod_line_config_free(line_config);
++ return retval;
++}
++
++/* this helper is not thread safe, but we are not using threads... */
++char *gpiod_line_name(struct gpiod_line *gpio_line) {
++ static char buffer[16];
++ snprintf(buffer, sizeof(buffer), "%u", gpio_line->gpio_num);
++ return buffer;
++}
++
++void gpiod_line_release(struct gpiod_line *gpio_line) {
++ gpiod_line_request_release(gpio_line->line_request);
++ gpiod_chip_close(gpio_line->chip);
++ free(gpio_line);
++}
++
++static inline int gpiod_line_set_value(struct gpiod_line *gpio_line, int value) {
++ return gpiod_line_request_set_value(gpio_line->line_request, gpio_line->gpio_num, value);
++}
++
++static inline int gpiod_line_get_value(struct gpiod_line *gpio_line) {
++ return gpiod_line_request_get_value(gpio_line->line_request, gpio_line->gpio_num);
++}
++
++#endif
++
+ struct gpiod_line * linuxgpio_libgpiod_lines[N_PINS];
+
+ // Try to tell if libgpiod is going to work.
PKG_NAME:=collectd
PKG_VERSION:=5.12.0
-PKG_RELEASE:=50
+PKG_RELEASE:=52
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://collectd.org/files/ \
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
PKG_BUILD_FLAGS:=no-mips16
+PKG_BUILD_DEPENDS:=PACKAGE_collectd-mod-write-prometheus:protobuf-c/host
PKG_CONFIG_DEPENDS:= \
PACKAGE_COLLECTD_ENCRYPTED_NETWORK \
write_kafka \
write_log \
write_mongodb \
- write_prometheus \
write_redis \
write_riemann \
write_sensu \
vmem \
wireless \
write_graphite \
- write_http
+ write_http \
+ write_prometheus
PKG_CONFIG_DEPENDS:= \
$(patsubst %,CONFIG_PACKAGE_collectd-mod-%,$(subst _,-,$(COLLECTD_PLUGINS_SELECTED))) \
$(eval $(call BuildPlugin,wireless,wireless status input,wireless,))
$(eval $(call BuildPlugin,write-graphite,Carbon/Graphite output,write_graphite,+PACKAGE_collectd-mod-write-graphite:libpthread))
$(eval $(call BuildPlugin,write-http,HTTP POST output,write_http,+PACKAGE_collectd-mod-write-http:libcurl))
+$(eval $(call BuildPlugin,write-prometheus,Prometheus output,write_prometheus,+PACKAGE_collectd-mod-write-prometheus:libprotobuf-c +PACKAGE_collectd-mod-write-prometheus:libmicrohttpd))
$(eval $(call BuildScriptPlugin,sqm,SQM/qdisc collection,sqm_collectd,+PACKAGE_collectd-mod-sqm:collectd-mod-exec))
$(eval $(call BuildScriptLuaPlugin,ltq-dsl,Lantiq DSL collection,dsl,@ltq-dsl-app +PACKAGE_collectd-mod-ltq-dsl:collectd-mod-lua +libubus-lua))
local enable keys key option value
- config_get enable "$cfg" enable 0
+ config_get_bool enable "$cfg" enable 0
[ "$enable" = "1" ] || return 0
[ -f "/usr/lib/collectd/$cfg.so" ] || {
include $(TOPDIR)/rules.mk
PKG_NAME:=compose
-PKG_VERSION:=2.27.0
+PKG_VERSION:=2.27.1
PKG_RELEASE:=1
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
PKG_SOURCE:=$(PKG_NAME)-v$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/docker/compose/tar.gz/v${PKG_VERSION}?
-PKG_HASH:=29b2232d1609dff03db74188a7944c85ba8b612f47a7e39938a43db8fb7d7067
+PKG_HASH:=5abf8de3a413894c2ed061812d68c8d8eb4e255b25bf38e2ac58d3ba0546a218
PKG_MAINTAINER:=Javier Marcet <javier@marcet.info>
implicit_link=no \
chrpath=no \
manbuild=no \
- sysroot="$(TOOLCHAIN_DIR)" \
+ sysroot="$(TOOLCHAIN_ROOT_DIR)" \
target="$(TARGET_CROSS:-=)"
define Build/InstallDev
--disable-manpages
define Build/Compile
- +$(MAKE_VARS) EFI_CFLAGS="-I$(TOOLCHAIN_DIR)/include $(TARGET_CFLAGS)" \
+ +$(MAKE_VARS) EFI_CFLAGS="$(patsubst %,-I%,$(TOOLCHAIN_INC_DIRS)) $(TARGET_CFLAGS)" \
$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)/$(MAKE_PATH) \
$(MAKE_FLAGS) \
$(1);
endef
define Build/Install
- $(MAKE_VARS) EFI_CFLAGS="-I$(TOOLCHAIN_DIR)/include $(TARGET_CFLAGS)" \
+ $(MAKE_VARS) EFI_CFLAGS="$(patsubst %,-I%,$(TOOLCHAIN_INC_DIRS)) $(TARGET_CFLAGS)" \
$(MAKE) -C $(PKG_BUILD_DIR)/$(MAKE_PATH) \
$(MAKE_INSTALL_FLAGS) install
endef
include $(TOPDIR)/rules.mk
PKG_NAME:=hwdata
-PKG_VERSION:=0.381
+PKG_VERSION:=0.383
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/vcrhonek/hwdata/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=53435c73964ddc24ac53fa86e29e8b9244ca1cab0578ffdd82fd280f35863004
+PKG_HASH:=97f328f85e51ea78ad14620705dba269cbbb47911e56bdd8b35360e6cdccc00c
PKG_MAINTAINER:=
PKG_LICENSE:=GPL-2.0-or-later XFree86-1.0
PKG_NAME:=klish
PKG_VERSION:=2.2.3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://libcode.org/attachments/download/82
--- a/clish/shell/shell_execute.c
+++ b/clish/shell/shell_execute.c
-@@ -19,12 +19,14 @@
- #include <signal.h>
+@@ -20,7 +20,7 @@
#include <fcntl.h>
-+#if 0
/* Empty signal handler to ignore signal but don't use SIG_IGN. */
- static void sigignore(int signo)
+-static void sigignore(int signo)
++static void sigignore2(int signo)
{
signo = signo; /* Happy compiler */
return;
- }
-+#endif
-
- /*-------------------------------------------------------- */
- static int clish_shell_lock(const char *lock_path)
+@@ -361,7 +361,7 @@ int clish_shell_exec_action(clish_contex
+ */
+ sa.sa_flags = 0;
+ sigemptyset(&sa.sa_mask);
+- sa.sa_handler = sigignore; /* Empty signal handler */
++ sa.sa_handler = sigignore2; /* Empty signal handler */
+ sigaction(SIGINT, &sa, &old_sigint);
+ sigaction(SIGQUIT, &sa, &old_sigquit);
+ sigaction(SIGHUP, &sa, &old_sighup);
PKG_NAME:=mg
PKG_VERSION:=7.3
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/ibara/mg/tar.gz/$(PKG_NAME)-$(PKG_VERSION)?
--- /dev/null
+--- a/main.c
++++ b/main.c
+@@ -18,6 +18,7 @@
+ #include <unistd.h>
+ #if defined(__linux__) || defined(__CYGWIN__)
+ #include <pty.h>
++#include <utmp.h>
+ #elif defined(__OpenBSD__) || defined(__NetBSD__) || defined(__APPLE__)
+ #include <util.h>
+ #else
PKG_NAME:=openocd
PKG_SOURCE_VERSION:=v0.12.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://git.code.sf.net/p/openocd/code
--- /dev/null
+From 1de35c0b76ea138895370f65849831c3c7d397ff Mon Sep 17 00:00:00 2001
+From: Antonio Borneo <borneo.antonio@gmail.com>
+Date: Sun, 24 Mar 2024 15:53:33 +0100
+Subject: [PATCH] jtag: linuxgpiod: adapt for libgpiod v2 API
+
+Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
+Signed-off-by: Michael Heimpold <mhei@heimpold.de>
+---
+ configure.ac | 15 +-
+ src/jtag/drivers/linuxgpiod.c | 487 ++++++++++++++++++++++++++++------
+ 2 files changed, 419 insertions(+), 83 deletions(-)
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -659,7 +659,20 @@ PKG_CHECK_MODULES([LIBFTDI], [libftdi1],
+ PKG_CHECK_MODULES([LIBFTDI], [libftdi], [use_libftdi=yes], [use_libftdi=no])
+ ])
+
+-PKG_CHECK_MODULES([LIBGPIOD], [libgpiod], [use_libgpiod=yes], [use_libgpiod=no])
++PKG_CHECK_MODULES([LIBGPIOD], [libgpiod >= 2.0] , [
++ use_libgpiod=yes
++ AC_DEFINE([HAVE_LIBGPIOD_V1], [0], [define if libgpiod is version v1.x])
++], [
++ PKG_CHECK_MODULES([LIBGPIOD], [libgpiod], [
++ use_libgpiod=yes
++ AC_DEFINE([HAVE_LIBGPIOD_V1], [1], [define if libgpiod is version v1.x])
++
++ PKG_CHECK_EXISTS([libgpiod >= 1.5],
++ [AC_DEFINE([HAVE_LIBGPIOD1_FLAGS_BIAS], [1], [define if libgpiod v1 has line request flags bias])])
++ ], [
++ use_libgpiod=no
++ ])
++])
+
+ PKG_CHECK_MODULES([LIBJAYLINK], [libjaylink >= 0.2],
+ [use_libjaylink=yes], [use_libjaylink=no])
+--- a/src/jtag/drivers/linuxgpiod.c
++++ b/src/jtag/drivers/linuxgpiod.c
+@@ -19,8 +19,267 @@
+ #include <transport/transport.h>
+ #include "bitbang.h"
+
++/*
++ * In case of libgpiod v1, use as much as possible API from v2 plus
++ * the dummy wrappers below.
++ */
++#if HAVE_LIBGPIOD_V1
++
++#define GPIOD_LINE_DIRECTION_INPUT GPIOD_LINE_REQUEST_DIRECTION_INPUT
++#define GPIOD_LINE_DIRECTION_OUTPUT GPIOD_LINE_REQUEST_DIRECTION_OUTPUT
++
++#define GPIOD_LINE_VALUE_INACTIVE 0
++#define GPIOD_LINE_VALUE_ACTIVE 1
++
++#define GPIOD_LINE_DRIVE_PUSH_PULL 0
++#define GPIOD_LINE_DRIVE_OPEN_DRAIN GPIOD_LINE_REQUEST_FLAG_OPEN_DRAIN
++#define GPIOD_LINE_DRIVE_OPEN_SOURCE GPIOD_LINE_REQUEST_FLAG_OPEN_SOURCE
++
++#define GPIOD_LINE_BIAS_DISABLED GPIOD_LINE_REQUEST_FLAG_BIAS_DISABLE
++#define GPIOD_LINE_BIAS_PULL_UP GPIOD_LINE_REQUEST_FLAG_BIAS_PULL_UP
++#define GPIOD_LINE_BIAS_PULL_DOWN GPIOD_LINE_REQUEST_FLAG_BIAS_PULL_DOWN
++
++struct gpiod_line_settings {
++ int direction;
++ int value;
++ int drive;
++ int bias;
++ int active_low;
++};
++
++static struct gpiod_line_settings *gpiod_line_settings_new(void)
++{
++ struct gpiod_line_settings *rv;
++
++ rv = calloc(sizeof(struct gpiod_line_settings), 1);
++ if (!rv)
++ return NULL;
++
++ return rv;
++}
++
++static void gpiod_line_settings_free(struct gpiod_line_settings *settings)
++{
++ free(settings);
++}
++
++static int gpiod_line_settings_set_direction(struct gpiod_line_settings *settings,
++ int direction)
++{
++ settings->direction = direction;
++
++ return 0;
++}
++
++static int gpiod_line_settings_set_output_value(struct gpiod_line_settings *settings,
++ int value)
++{
++ settings->value = value;
++
++ return 0;
++}
++
++static int gpiod_line_settings_set_drive(struct gpiod_line_settings *settings, int drive)
++{
++ settings->drive = drive;
++
++ return 0;
++}
++
++static void gpiod_line_settings_set_active_low(struct gpiod_line_settings *settings,
++ bool active_low)
++{
++ if (active_low)
++ settings->active_low = GPIOD_LINE_REQUEST_FLAG_ACTIVE_LOW;
++}
++
++#ifdef HAVE_LIBGPIOD1_FLAGS_BIAS
++
++static int gpiod_line_settings_set_bias(struct gpiod_line_settings *settings, int bias)
++{
++ settings->bias = bias;
++
++ return 0;
++}
++
++#else /* HAVE_LIBGPIOD1_FLAGS_BIAS */
++
++static int gpiod_line_settings_set_bias(struct gpiod_line_settings *settings, int bias)
++{
++ if (bias == GPIOD_LINE_BIAS_DISABLED)
++ return 0;
++
++ LOG_WARNING("linuxgpiod: ignoring request for pull-%s: not supported by libgpiod v%s",
++ (bias == GPIOD_LINE_BIAS_PULL_UP) ? "up" : "down",
++ gpiod_version_string());
++
++ return 0;
++}
++
++#endif /* HAVE_LIBGPIOD1_FLAGS_BIAS */
++
++struct gpiod_line_config {
++ unsigned int gpio_num;
++ struct gpiod_line_settings *line_settings;
++};
++
++static struct gpiod_line_config *gpiod_line_config_new(void)
++{
++ struct gpiod_line_config *rv;
++
++ rv = calloc(sizeof(struct gpiod_line_config), 1);
++ if (!rv)
++ return NULL;
++
++ return rv;
++}
++
++static void gpiod_line_config_free(struct gpiod_line_config *config)
++{
++ free(config);
++}
++
++static int gpiod_line_config_add_line_settings(struct gpiod_line_config *config,
++ const unsigned int *offsets, size_t num_offsets, struct gpiod_line_settings *settings)
++{
++ assert(num_offsets == 1);
++
++ config->gpio_num = *offsets;
++ config->line_settings = settings;
++
++ return 0;
++}
++
++struct gpiod_request_config {
++ const char *consumer;
++};
++
++static struct gpiod_request_config *gpiod_request_config_new(void)
++{
++ struct gpiod_request_config *rv;
++
++ rv = calloc(sizeof(struct gpiod_request_config), 1);
++ if (!rv)
++ return NULL;
++
++ return rv;
++}
++
++static void gpiod_request_config_free(struct gpiod_request_config *config)
++{
++ free(config);
++}
++
++static void gpiod_request_config_set_consumer(struct gpiod_request_config *config,
++ const char *consumer)
++{
++ config->consumer = consumer;
++}
++
++struct gpiod_line_request {
++ struct gpiod_line *gpio_line;
++ struct gpiod_chip *chip;
++ struct gpiod_request_config *req_cfg;
++ struct gpiod_line_config *line_cfg;
++};
++
++static struct gpiod_line_request *gpiod_chip_request_lines(struct gpiod_chip *chip,
++ struct gpiod_request_config *req_cfg, struct gpiod_line_config *line_cfg)
++{
++ struct gpiod_line_request *line_req;
++ int rv, flags = 0;
++
++ assert(req_cfg);
++
++ line_req = calloc(sizeof(struct gpiod_line_request), 1);
++ if (!line_req)
++ return NULL;
++
++ line_req->gpio_line = gpiod_chip_get_line(chip, line_cfg->gpio_num);
++ if (!line_req->gpio_line) {
++ free(line_req);
++ return NULL;
++ }
++
++ /* remember stuff in case we need to reconfigure later */
++ line_req->chip = chip;
++ line_req->req_cfg = req_cfg;
++ line_req->line_cfg = line_cfg;
++
++ flags |= line_cfg->line_settings->drive;
++ flags |= line_cfg->line_settings->bias;
++ flags |= line_cfg->line_settings->active_low;
++
++ struct gpiod_line_request_config config = {
++ .consumer = line_req->req_cfg->consumer,
++ .request_type = line_cfg->line_settings->direction,
++ .flags = flags,
++ };
++
++ rv = gpiod_line_request(line_req->gpio_line, &config, line_cfg->line_settings->value);
++ if (rv < 0) {
++ gpiod_line_release(line_req->gpio_line);
++ free(line_req);
++ return NULL;
++ }
++
++ return line_req;
++}
++
++static int gpiod_line_request_get_value(struct gpiod_line_request *request,
++ __attribute__((unused)) unsigned int offset)
++{
++ return gpiod_line_get_value(request->gpio_line);
++}
++
++static int gpiod_line_request_set_value(struct gpiod_line_request *request,
++ __attribute__((unused)) unsigned int offset, int value)
++{
++ return gpiod_line_set_value(request->gpio_line, value);
++}
++
++static void gpiod_line_request_release(struct gpiod_line_request *request)
++{
++ gpiod_line_release(request->gpio_line);
++ free(request);
++}
++
++static int gpiod_line_request_reconfigure_lines(struct gpiod_line_request *request,
++ struct gpiod_line_config *line_cfg)
++{
++ int rv, flags = 0;
++
++ /* in libgpiod v1 we have to release the line and re-aquire it */
++ gpiod_line_release(request->gpio_line);
++ request->gpio_line = gpiod_chip_get_line(request->chip, request->line_cfg->gpio_num);
++ if (!request->gpio_line)
++ return -1;
++
++ flags |= line_cfg->line_settings->drive;
++ flags |= line_cfg->line_settings->bias;
++ flags |= line_cfg->line_settings->active_low;
++
++ struct gpiod_line_request_config config = {
++ .consumer = request->req_cfg->consumer,
++ .request_type = line_cfg->line_settings->direction,
++ .flags = flags,
++ };
++
++ rv = gpiod_line_request(request->gpio_line, &config, line_cfg->line_settings->value);
++ if (rv < 0)
++ return -1;
++
++ /* remember updated line_cfg */
++ request->line_cfg = line_cfg;
++ return 0;
++}
++
++#endif /* HAVE_LIBGPIOD_V1 */
++
+ static struct gpiod_chip *gpiod_chip[ADAPTER_GPIO_IDX_NUM] = {};
+-static struct gpiod_line *gpiod_line[ADAPTER_GPIO_IDX_NUM] = {};
++static struct gpiod_line_settings *gpiod_line_settings[ADAPTER_GPIO_IDX_NUM] = {};
++static struct gpiod_line_config *gpiod_line_config[ADAPTER_GPIO_IDX_NUM] = {};
++static struct gpiod_line_request *gpiod_line_req[ADAPTER_GPIO_IDX_NUM] = {};
+
+ static int last_swclk;
+ static int last_swdio;
+@@ -29,6 +288,20 @@ static bool swdio_input;
+
+ static const struct adapter_gpio_config *adapter_gpio_config;
+
++/* Helper to get/set a single line */
++static int linuxgpiod_line_get_value(enum adapter_gpio_config_index idx)
++{
++ return gpiod_line_request_get_value(gpiod_line_req[idx],
++ adapter_gpio_config[idx].gpio_num);
++}
++
++static int linuxgpiod_line_set_value(enum adapter_gpio_config_index idx, int value)
++{
++ return gpiod_line_request_set_value(gpiod_line_req[idx],
++ adapter_gpio_config[idx].gpio_num,
++ value);
++}
++
+ /*
+ * Helper function to determine if gpio config is valid
+ *
+@@ -48,7 +321,7 @@ static bb_value_t linuxgpiod_read(void)
+ {
+ int retval;
+
+- retval = gpiod_line_get_value(gpiod_line[ADAPTER_GPIO_IDX_TDO]);
++ retval = linuxgpiod_line_get_value(ADAPTER_GPIO_IDX_TDO);
+ if (retval < 0) {
+ LOG_WARNING("reading tdo failed");
+ return 0;
+@@ -81,20 +354,20 @@ static int linuxgpiod_write(int tck, int
+ }
+
+ if (tdi != last_tdi) {
+- retval = gpiod_line_set_value(gpiod_line[ADAPTER_GPIO_IDX_TDI], tdi);
++ retval = linuxgpiod_line_set_value(ADAPTER_GPIO_IDX_TDI, tdi);
+ if (retval < 0)
+ LOG_WARNING("writing tdi failed");
+ }
+
+ if (tms != last_tms) {
+- retval = gpiod_line_set_value(gpiod_line[ADAPTER_GPIO_IDX_TMS], tms);
++ retval = linuxgpiod_line_set_value(ADAPTER_GPIO_IDX_TMS, tms);
+ if (retval < 0)
+ LOG_WARNING("writing tms failed");
+ }
+
+ /* write clk last */
+ if (tck != last_tck) {
+- retval = gpiod_line_set_value(gpiod_line[ADAPTER_GPIO_IDX_TCK], tck);
++ retval = linuxgpiod_line_set_value(ADAPTER_GPIO_IDX_TCK, tck);
+ if (retval < 0)
+ LOG_WARNING("writing tck failed");
+ }
+@@ -110,7 +383,7 @@ static int linuxgpiod_swdio_read(void)
+ {
+ int retval;
+
+- retval = gpiod_line_get_value(gpiod_line[ADAPTER_GPIO_IDX_SWDIO]);
++ retval = linuxgpiod_line_get_value(ADAPTER_GPIO_IDX_SWDIO);
+ if (retval < 0) {
+ LOG_WARNING("Fail read swdio");
+ return 0;
+@@ -123,30 +396,54 @@ static void linuxgpiod_swdio_drive(bool
+ {
+ int retval;
+
+- /*
+- * FIXME: change direction requires release and re-require the line
+- * https://stackoverflow.com/questions/58735140/
+- * this would change in future libgpiod
+- */
+- gpiod_line_release(gpiod_line[ADAPTER_GPIO_IDX_SWDIO]);
+-
+ if (is_output) {
+- if (gpiod_line[ADAPTER_GPIO_IDX_SWDIO_DIR]) {
+- retval = gpiod_line_set_value(gpiod_line[ADAPTER_GPIO_IDX_SWDIO_DIR], 1);
++ if (gpiod_line_req[ADAPTER_GPIO_IDX_SWDIO_DIR]) {
++ retval = linuxgpiod_line_set_value(ADAPTER_GPIO_IDX_SWDIO_DIR, 1);
+ if (retval < 0)
+- LOG_WARNING("Fail set swdio_dir");
++ LOG_WARNING("Failed to set swdio_dir=1");
+ }
+- retval = gpiod_line_request_output(gpiod_line[ADAPTER_GPIO_IDX_SWDIO], "OpenOCD", 1);
++
++ retval = gpiod_line_settings_set_direction(gpiod_line_settings[ADAPTER_GPIO_IDX_SWDIO],
++ GPIOD_LINE_DIRECTION_OUTPUT);
+ if (retval < 0)
+- LOG_WARNING("Fail request_output line swdio");
++ LOG_WARNING("Failed to set new direction of swdio");
++
++ retval = gpiod_line_settings_set_output_value(gpiod_line_settings[ADAPTER_GPIO_IDX_SWDIO],
++ GPIOD_LINE_VALUE_ACTIVE);
++ if (retval < 0)
++ LOG_WARNING("Failed to set output value of swdio");
++
++ retval = gpiod_line_config_add_line_settings(gpiod_line_config[ADAPTER_GPIO_IDX_SWDIO],
++ (unsigned int *)&adapter_gpio_config[ADAPTER_GPIO_IDX_SWDIO].gpio_num, 1,
++ gpiod_line_settings[ADAPTER_GPIO_IDX_SWDIO]);
++ if (retval < 0)
++ LOG_WARNING("Failed to apply output configuration to swdio");
++
++ retval = gpiod_line_request_reconfigure_lines(gpiod_line_req[ADAPTER_GPIO_IDX_SWDIO],
++ gpiod_line_config[ADAPTER_GPIO_IDX_SWDIO]);
++ if (retval < 0)
++ LOG_WARNING("Failed to switch swdio to output");
+ } else {
+- retval = gpiod_line_request_input(gpiod_line[ADAPTER_GPIO_IDX_SWDIO], "OpenOCD");
++ retval = gpiod_line_settings_set_direction(gpiod_line_settings[ADAPTER_GPIO_IDX_SWDIO],
++ GPIOD_LINE_DIRECTION_INPUT);
++ if (retval < 0)
++ LOG_WARNING("Failed to switch swdio to output");
++
++ retval = gpiod_line_config_add_line_settings(gpiod_line_config[ADAPTER_GPIO_IDX_SWDIO],
++ (unsigned int *)&adapter_gpio_config[ADAPTER_GPIO_IDX_SWDIO].gpio_num, 1,
++ gpiod_line_settings[ADAPTER_GPIO_IDX_SWDIO]);
+ if (retval < 0)
+- LOG_WARNING("Fail request_input line swdio");
+- if (gpiod_line[ADAPTER_GPIO_IDX_SWDIO_DIR]) {
+- retval = gpiod_line_set_value(gpiod_line[ADAPTER_GPIO_IDX_SWDIO_DIR], 0);
++ LOG_WARNING("Failed to apply input configuration to swdio");
++
++ retval = gpiod_line_request_reconfigure_lines(gpiod_line_req[ADAPTER_GPIO_IDX_SWDIO],
++ gpiod_line_config[ADAPTER_GPIO_IDX_SWDIO]);
++ if (retval < 0)
++ LOG_WARNING("Failed to switch swdio to input");
++
++ if (gpiod_line_req[ADAPTER_GPIO_IDX_SWDIO_DIR]) {
++ retval = linuxgpiod_line_set_value(ADAPTER_GPIO_IDX_SWDIO_DIR, 0);
+ if (retval < 0)
+- LOG_WARNING("Fail set swdio_dir");
++ LOG_WARNING("Failed to set swdio_dir=0");
+ }
+ }
+
+@@ -159,16 +456,16 @@ static int linuxgpiod_swd_write(int swcl
+ int retval;
+
+ if (!swdio_input) {
+- if (!last_stored || (swdio != last_swdio)) {
+- retval = gpiod_line_set_value(gpiod_line[ADAPTER_GPIO_IDX_SWDIO], swdio);
++ if (!last_stored || swdio != last_swdio) {
++ retval = linuxgpiod_line_set_value(ADAPTER_GPIO_IDX_SWDIO, swdio);
+ if (retval < 0)
+ LOG_WARNING("Fail set swdio");
+ }
+ }
+
+ /* write swclk last */
+- if (!last_stored || (swclk != last_swclk)) {
+- retval = gpiod_line_set_value(gpiod_line[ADAPTER_GPIO_IDX_SWCLK], swclk);
++ if (!last_stored || swclk != last_swclk) {
++ retval = linuxgpiod_line_set_value(ADAPTER_GPIO_IDX_SWCLK, swclk);
+ if (retval < 0)
+ LOG_WARNING("Fail set swclk");
+ }
+@@ -187,7 +484,7 @@ static int linuxgpiod_blink(int on)
+ if (!is_gpio_config_valid(ADAPTER_GPIO_IDX_LED))
+ return ERROR_OK;
+
+- retval = gpiod_line_set_value(gpiod_line[ADAPTER_GPIO_IDX_LED], on);
++ retval = linuxgpiod_line_set_value(ADAPTER_GPIO_IDX_LED, on);
+ if (retval < 0)
+ LOG_WARNING("Fail set led");
+ return retval;
+@@ -214,17 +511,17 @@ static int linuxgpiod_reset(int trst, in
+ LOG_DEBUG("linuxgpiod_reset");
+
+ /*
+- * active low behaviour handled by "adaptor gpio" command and
++ * active low behavior handled by "adaptor gpio" command and
+ * GPIOD_LINE_REQUEST_FLAG_ACTIVE_LOW flag when requesting the line.
+ */
+- if (gpiod_line[ADAPTER_GPIO_IDX_SRST]) {
+- retval1 = gpiod_line_set_value(gpiod_line[ADAPTER_GPIO_IDX_SRST], srst);
++ if (gpiod_line_req[ADAPTER_GPIO_IDX_SRST]) {
++ retval1 = linuxgpiod_line_set_value(ADAPTER_GPIO_IDX_SRST, srst);
+ if (retval1 < 0)
+ LOG_WARNING("set srst value failed");
+ }
+
+- if (gpiod_line[ADAPTER_GPIO_IDX_TRST]) {
+- retval2 = gpiod_line_set_value(gpiod_line[ADAPTER_GPIO_IDX_TRST], trst);
++ if (gpiod_line_req[ADAPTER_GPIO_IDX_TRST]) {
++ retval2 = linuxgpiod_line_set_value(ADAPTER_GPIO_IDX_TRST, trst);
+ if (retval2 < 0)
+ LOG_WARNING("set trst value failed");
+ }
+@@ -256,9 +553,17 @@ static bool linuxgpiod_swd_mode_possible
+
+ static inline void helper_release(enum adapter_gpio_config_index idx)
+ {
+- if (gpiod_line[idx]) {
+- gpiod_line_release(gpiod_line[idx]);
+- gpiod_line[idx] = NULL;
++ if (gpiod_line_req[idx]) {
++ gpiod_line_request_release(gpiod_line_req[idx]);
++ gpiod_line_req[idx] = NULL;
++ }
++ if (gpiod_line_config[idx]) {
++ gpiod_line_config_free(gpiod_line_config[idx]);
++ gpiod_line_config[idx] = NULL;
++ }
++ if (gpiod_line_settings[idx]) {
++ gpiod_line_settings_free(gpiod_line_settings[idx]);
++ gpiod_line_settings[idx] = NULL;
+ }
+ if (gpiod_chip[idx]) {
+ gpiod_chip_close(gpiod_chip[idx]);
+@@ -277,84 +582,102 @@ static int linuxgpiod_quit(void)
+
+ static int helper_get_line(enum adapter_gpio_config_index idx)
+ {
++ struct gpiod_request_config *req_cfg = NULL;
++ char chip_path[24];
++ int rv = 0;
++
+ if (!is_gpio_config_valid(idx))
+ return ERROR_OK;
+
+- int dir = GPIOD_LINE_REQUEST_DIRECTION_INPUT, flags = 0, val = 0, retval;
+-
+- gpiod_chip[idx] = gpiod_chip_open_by_number(adapter_gpio_config[idx].chip_num);
++ snprintf(chip_path, sizeof(chip_path), "/dev/gpiochip%u", adapter_gpio_config[idx].chip_num);
++ gpiod_chip[idx] = gpiod_chip_open(chip_path);
+ if (!gpiod_chip[idx]) {
+ LOG_ERROR("Cannot open LinuxGPIOD chip %d for %s", adapter_gpio_config[idx].chip_num,
+ adapter_gpio_get_name(idx));
+ return ERROR_JTAG_INIT_FAILED;
+ }
+
+- gpiod_line[idx] = gpiod_chip_get_line(gpiod_chip[idx], adapter_gpio_config[idx].gpio_num);
+- if (!gpiod_line[idx]) {
+- LOG_ERROR("Error get line %s", adapter_gpio_get_name(idx));
++ gpiod_line_settings[idx] = gpiod_line_settings_new();
++ gpiod_line_config[idx] = gpiod_line_config_new();
++ req_cfg = gpiod_request_config_new();
++
++ if (!gpiod_line_settings[idx] || !gpiod_line_config[idx] || !req_cfg) {
++ LOG_ERROR("Cannot configure LinuxGPIOD line for %s", adapter_gpio_get_name(idx));
++ gpiod_request_config_free(req_cfg);
+ return ERROR_JTAG_INIT_FAILED;
+ }
+
++ gpiod_request_config_set_consumer(req_cfg, "OpenOCD");
++
+ switch (adapter_gpio_config[idx].init_state) {
+ case ADAPTER_GPIO_INIT_STATE_INPUT:
+- dir = GPIOD_LINE_REQUEST_DIRECTION_INPUT;
++ rv = gpiod_line_settings_set_direction(gpiod_line_settings[idx], GPIOD_LINE_DIRECTION_INPUT);
+ break;
+ case ADAPTER_GPIO_INIT_STATE_INACTIVE:
+- dir = GPIOD_LINE_REQUEST_DIRECTION_OUTPUT;
+- val = 0;
++ rv = gpiod_line_settings_set_direction(gpiod_line_settings[idx], GPIOD_LINE_DIRECTION_OUTPUT);
++ rv |= gpiod_line_settings_set_output_value(gpiod_line_settings[idx], GPIOD_LINE_VALUE_INACTIVE);
+ break;
+ case ADAPTER_GPIO_INIT_STATE_ACTIVE:
+- dir = GPIOD_LINE_REQUEST_DIRECTION_OUTPUT;
+- val = 1;
++ rv = gpiod_line_settings_set_direction(gpiod_line_settings[idx], GPIOD_LINE_DIRECTION_OUTPUT);
++ rv |= gpiod_line_settings_set_output_value(gpiod_line_settings[idx], GPIOD_LINE_VALUE_ACTIVE);
+ break;
+ }
++ if (rv < 0) {
++ LOG_ERROR("Error while configuring LinuxGPIOD line init state for %s", adapter_gpio_get_name(idx));
++ gpiod_request_config_free(req_cfg);
++ return ERROR_JTAG_INIT_FAILED;
++ }
+
+ switch (adapter_gpio_config[idx].drive) {
+ case ADAPTER_GPIO_DRIVE_MODE_PUSH_PULL:
++ rv = gpiod_line_settings_set_drive(gpiod_line_settings[idx], GPIOD_LINE_DRIVE_PUSH_PULL);
+ break;
+ case ADAPTER_GPIO_DRIVE_MODE_OPEN_DRAIN:
+- flags |= GPIOD_LINE_REQUEST_FLAG_OPEN_DRAIN;
++ rv = gpiod_line_settings_set_drive(gpiod_line_settings[idx], GPIOD_LINE_DRIVE_OPEN_DRAIN);
+ break;
+ case ADAPTER_GPIO_DRIVE_MODE_OPEN_SOURCE:
+- flags |= GPIOD_LINE_REQUEST_FLAG_OPEN_SOURCE;
++ rv = gpiod_line_settings_set_drive(gpiod_line_settings[idx], GPIOD_LINE_DRIVE_OPEN_SOURCE);
+ break;
+ }
++ if (rv < 0) {
++ LOG_ERROR("Error while configuring LinuxGPIOD line driving for %s", adapter_gpio_get_name(idx));
++ gpiod_request_config_free(req_cfg);
++ return ERROR_JTAG_INIT_FAILED;
++ }
+
+ switch (adapter_gpio_config[idx].pull) {
+ case ADAPTER_GPIO_PULL_NONE:
+-#ifdef GPIOD_LINE_REQUEST_FLAG_BIAS_DISABLE
+- flags |= GPIOD_LINE_REQUEST_FLAG_BIAS_DISABLE;
+-#endif
++ rv = gpiod_line_settings_set_bias(gpiod_line_settings[idx], GPIOD_LINE_BIAS_DISABLED);
+ break;
+ case ADAPTER_GPIO_PULL_UP:
+-#ifdef GPIOD_LINE_REQUEST_FLAG_BIAS_PULL_UP
+- flags |= GPIOD_LINE_REQUEST_FLAG_BIAS_PULL_UP;
+-#else
+- LOG_WARNING("linuxgpiod: ignoring request for pull-up on %s: not supported by gpiod v%s",
+- adapter_gpio_get_name(idx), gpiod_version_string());
+-#endif
++ rv = gpiod_line_settings_set_bias(gpiod_line_settings[idx], GPIOD_LINE_BIAS_PULL_UP);
+ break;
+ case ADAPTER_GPIO_PULL_DOWN:
+-#ifdef GPIOD_LINE_REQUEST_FLAG_BIAS_PULL_DOWN
+- flags |= GPIOD_LINE_REQUEST_FLAG_BIAS_PULL_DOWN;
+-#else
+- LOG_WARNING("linuxgpiod: ignoring request for pull-down on %s: not supported by gpiod v%s",
+- adapter_gpio_get_name(idx), gpiod_version_string());
+-#endif
++ rv = gpiod_line_settings_set_bias(gpiod_line_settings[idx], GPIOD_LINE_BIAS_PULL_DOWN);
+ break;
+ }
++ if (rv < 0) {
++ LOG_ERROR("Error while configuring LinuxGPIOD line biasing for %s", adapter_gpio_get_name(idx));
++ gpiod_request_config_free(req_cfg);
++ return ERROR_JTAG_INIT_FAILED;
++ }
+
+- if (adapter_gpio_config[idx].active_low)
+- flags |= GPIOD_LINE_REQUEST_FLAG_ACTIVE_LOW;
++ gpiod_line_settings_set_active_low(gpiod_line_settings[idx], adapter_gpio_config[idx].active_low);
+
+- struct gpiod_line_request_config config = {
+- .consumer = "OpenOCD",
+- .request_type = dir,
+- .flags = flags,
+- };
++ rv = gpiod_line_config_add_line_settings(gpiod_line_config[idx],
++ (unsigned int *)&adapter_gpio_config[idx].gpio_num, 1,
++ gpiod_line_settings[idx]);
++ if (rv < 0) {
++ LOG_ERROR("Error configuring gpio line %s", adapter_gpio_get_name(idx));
++ gpiod_request_config_free(req_cfg);
++ return ERROR_JTAG_INIT_FAILED;
++ }
+
+- retval = gpiod_line_request(gpiod_line[idx], &config, val);
+- if (retval < 0) {
++ gpiod_line_req[idx] = gpiod_chip_request_lines(gpiod_chip[idx], req_cfg, gpiod_line_config[idx]);
++
++ gpiod_request_config_free(req_cfg);
++
++ if (!gpiod_line_req[idx]) {
+ LOG_ERROR("Error requesting gpio line %s", adapter_gpio_get_name(idx));
+ return ERROR_JTAG_INIT_FAILED;
+ }
+@@ -380,12 +703,12 @@ static int linuxgpiod_init(void)
+ goto out_error;
+ }
+
+- if (helper_get_line(ADAPTER_GPIO_IDX_TDO) != ERROR_OK ||
+- helper_get_line(ADAPTER_GPIO_IDX_TDI) != ERROR_OK ||
+- helper_get_line(ADAPTER_GPIO_IDX_TCK) != ERROR_OK ||
+- helper_get_line(ADAPTER_GPIO_IDX_TMS) != ERROR_OK ||
+- helper_get_line(ADAPTER_GPIO_IDX_TRST) != ERROR_OK)
+- goto out_error;
++ if (helper_get_line(ADAPTER_GPIO_IDX_TDO) != ERROR_OK
++ || helper_get_line(ADAPTER_GPIO_IDX_TDI) != ERROR_OK
++ || helper_get_line(ADAPTER_GPIO_IDX_TCK) != ERROR_OK
++ || helper_get_line(ADAPTER_GPIO_IDX_TMS) != ERROR_OK
++ || helper_get_line(ADAPTER_GPIO_IDX_TRST) != ERROR_OK)
++ goto out_error;
+ }
+
+ if (transport_is_swd()) {
+@@ -415,9 +738,9 @@ static int linuxgpiod_init(void)
+ goto out_error;
+ }
+
+- if (helper_get_line(ADAPTER_GPIO_IDX_SRST) != ERROR_OK ||
+- helper_get_line(ADAPTER_GPIO_IDX_LED) != ERROR_OK)
+- goto out_error;
++ if (helper_get_line(ADAPTER_GPIO_IDX_SRST) != ERROR_OK
++ || helper_get_line(ADAPTER_GPIO_IDX_LED) != ERROR_OK)
++ goto out_error;
+
+ return ERROR_OK;
+
PKG_NAME:=pciutils
PKG_VERSION:=3.12.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/software/utils/pciutils
--- /dev/null
+--- a/lib/sysfs.c
++++ b/lib/sysfs.c
+@@ -20,6 +20,7 @@
+ #include <dirent.h>
+ #include <fcntl.h>
+ #include <sys/types.h>
++#include <libgen.h>
+
+ #include "internal.h"
+
include $(TOPDIR)/rules.mk
PKG_NAME:=prometheus-node-exporter-lua
-PKG_VERSION:=2023.07.13
-PKG_RELEASE:=1
+PKG_VERSION:=2024.06.02
+PKG_RELEASE:=2
PKG_MAINTAINER:=Etienne CHAMPETIER <champetier.etienne@gmail.com>
PKG_LICENSE:=Apache-2.0
define Package/prometheus-node-exporter-lua
$(call Package/prometheus-node-exporter-lua/Default)
- DEPENDS:=+luasocket +lua +uhttpd +uhttpd-mod-lua
+ DEPENDS:=+luasocket +lua +uhttpd +uhttpd-mod-lua +libubus-lua
endef
define Package/prometheus-node-exporter-lua/install
define Package/prometheus-node-exporter-lua-dawn
$(call Package/prometheus-node-exporter-lua/Default)
TITLE+= (dawn collector)
- DEPENDS:=prometheus-node-exporter-lua +libiwinfo-lua +libubus-lua
+ DEPENDS:=prometheus-node-exporter-lua +libiwinfo-lua
endef
define Package/prometheus-node-exporter-lua-dawn/install
define Package/prometheus-node-exporter-lua-hostapd_stations
$(call Package/prometheus-node-exporter-lua/Default)
TITLE+= (hostapd_stations collector) - Requires a full hostapd / wpad build
- DEPENDS:=prometheus-node-exporter-lua +hostapd-utils +lua-bit32 +libubus-lua
+ DEPENDS:=prometheus-node-exporter-lua +hostapd-utils +lua-bit32
endef
define Package/prometheus-node-exporter-lua-hostapd_stations/install
define Package/prometheus-node-exporter-lua-hostapd_ubus_stations
$(call Package/prometheus-node-exporter-lua/Default)
TITLE+= (hostapd_ubus_stations collector)
- DEPENDS:=prometheus-node-exporter-lua +luabitop +libubus-lua
+ DEPENDS:=prometheus-node-exporter-lua +luabitop
endef
define Package/prometheus-node-exporter-lua-hostapd_ubus_stations/install
define Package/prometheus-node-exporter-lua-openwrt
$(call Package/prometheus-node-exporter-lua/Default)
TITLE+= (openwrt collector)
- DEPENDS:=prometheus-node-exporter-lua +libubus-lua
+ DEPENDS:=prometheus-node-exporter-lua
endef
define Package/prometheus-node-exporter-lua-openwrt/install
define Package/prometheus-node-exporter-lua-wifi
$(call Package/prometheus-node-exporter-lua/Default)
TITLE+= (wifi collector)
- DEPENDS:=prometheus-node-exporter-lua +libiwinfo-lua +libubus-lua
+ DEPENDS:=prometheus-node-exporter-lua +libiwinfo-lua
endef
define Package/prometheus-node-exporter-lua-wifi/install
define Package/prometheus-node-exporter-lua-wifi_stations
$(call Package/prometheus-node-exporter-lua/Default)
TITLE+= (wifi_stations collector)
- DEPENDS:=prometheus-node-exporter-lua +libiwinfo-lua +libubus-lua
+ DEPENDS:=prometheus-node-exporter-lua +libiwinfo-lua
endef
define Package/prometheus-node-exporter-lua-wifi_stations/install
define Package/prometheus-node-exporter-lua-snmp6
$(call Package/prometheus-node-exporter-lua/Default)
TITLE+= (snmp6 collector)
- DEPENDS:=prometheus-node-exporter-lua +libubus-lua
+ DEPENDS:=prometheus-node-exporter-lua
endef
define Package/prometheus-node-exporter-lua-snmp6/install
define Package/prometheus-node-exporter-lua-realtek-poe
$(call Package/prometheus-node-exporter-lua/Default)
TITLE+= (realtek-poe collector)
- DEPENDS:=prometheus-node-exporter-lua +libubus-lua +realtek-poe
+ DEPENDS:=prometheus-node-exporter-lua +realtek-poe
endef
define Package/prometheus-node-exporter-lua-realtek-poe/install
for _, dev_table in pairs(status) do
for _, intf in ipairs(dev_table['interfaces']) do
- local cfg = intf['config']
-
- if is_ubus_interface(ubus_interfaces, cfg['ifname']) then
+ if is_ubus_interface(ubus_interfaces, intf['ifname']) then
-- Migrate this to ubus interface once it exposes all interesting labels
- local handle = io.popen("hostapd_cli -i " .. cfg['ifname'] .." status")
+ local handle = io.popen("hostapd_cli -i " .. intf['ifname'] .." status")
local hostapd_status = handle:read("*a")
handle:close()
hostapd["channel"] = value
-- hostapd gives us all bss on the relevant phy, find the one we're interested in
elseif string.match(name, "bss%[%d%]") then
- if value == cfg['ifname'] then
+ if value == intf['ifname'] then
bss_idx = tonumber(string.match(name, "bss%[(%d)%]"))
end
elseif bss_idx >= 0 then
end
local labels = {
- vif = cfg['ifname'],
+ vif = intf['ifname'],
ssid = hostapd['ssid'],
bssid = hostapd['bssid'],
- encryption = cfg['encryption'], -- In a mixed scenario it would be good to know if A or B was used
+ encryption = intf['config']['encryption'], -- In a mixed scenario it would be good to know if A or B was used
frequency = hostapd['freq'],
channel = hostapd['channel'],
}
include $(TOPDIR)/rules.mk
PKG_NAME:=unrar
-PKG_VERSION:=7.0.7
+PKG_VERSION:=7.0.9
PKG_RELEASE:=1
PKG_SOURCE:=unrarsrc-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.rarlab.com/rar
-PKG_HASH:=da95829c7e66fe461c06eb4bea8145e58d88d76909432d0875cd1ff86669f728
+PKG_HASH:=505c13f9e4c54c01546f2e29b2fcc2d7fabc856a060b81e5cdfe6012a9198326
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)-$(BUILD_VARIANT)/unrar
include $(TOPDIR)/rules.mk
PKG_NAME:=whois
-PKG_VERSION:=5.5.22
+PKG_VERSION:=5.5.23
PKG_RELEASE:=1
-PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/w/whois
-PKG_HASH:=03f12c27ae85870d7bcd95b14f3fb8b174532b2f2a59d8380c42ae436d0630d7
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_VERSION:=v$(PKG_VERSION)
+PKG_SOURCE_URL:=https://github.com/rfc1036/whois
+PKG_MIRROR_HASH:=114893f8dd18fb9a4912deba2afaf09bce593b04a72c73381ec2303d71ff708d
PKG_BUILD_DEPENDS:=perl/host
include $(TOPDIR)/rules.mk
PKG_NAME:=yq
-PKG_VERSION:=4.43.1
+PKG_VERSION:=4.44.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/mikefarah/yq/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=e5581d28bae2bcdf70501dfd251233c592eb3e39a210956ee74965b784435d63
+PKG_HASH:=e66da5ee0c081d7974bae6a59e4791ba354178ee32ea78ab1b95d4dd60b2813d
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
PKG_LICENSE:=MIT
include $(TOPDIR)/rules.mk
PKG_NAME:=zstd
-PKG_VERSION:=1.5.5
+PKG_VERSION:=1.5.6
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/facebook/zstd/releases/download/v$(PKG_VERSION)
-PKG_HASH:=9c4396cc829cfae319a6e2615202e82aad41372073482fce286fac78646d3ee4
+PKG_HASH:=8c29e06cf42aacc1eafc4077ae2ec6c6fcb96a626157e0593d5e82a34fd403c1
-PKG_MAINTAINER:=
+PKG_MAINTAINER:=Aleksey Vasilenko <aleksey.vasilenko@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING