on:
pull_request:
- branches:
- - master
jobs:
build:
fail-fast: false
matrix:
arch:
- - arc_arc700
+ - arc_archs
- arm_cortex-a9_vfpv3-d16
- mips_24kc
- powerpc_464fp
- powerpc_8540
runtime_test: [false]
include:
- - arch: aarch64_generic
+ - arch: aarch64_cortex-a53
runtime_test: true
- arch: arm_cortex-a15_neon-vfpv4
runtime_test: true
- - arch: i386_pentium4
+ - arch: i386_pentium-mmx
runtime_test: true
- arch: x86_64
runtime_test: true
echo "Building $PACKAGES"
echo "PACKAGES=$PACKAGES" >> $GITHUB_ENV
+ - name: Determine branch name
+ run: |
+ BRANCH="${GITHUB_BASE_REF#refs/heads/}"
+ echo "Building for $BRANCH"
+ echo "BRANCH=$BRANCH" >> $GITHUB_ENV
+
- name: Build
uses: openwrt/gh-action-sdk@v1
env:
- ARCH: ${{ matrix.arch }}
+ ARCH: ${{ matrix.arch }}-${{ env.BRANCH }}
FEEDNAME: packages_ci
- name: Move created packages to project dir
include $(TOPDIR)/rules.mk
PKG_NAME:=htop
-PKG_VERSION:=3.0.2
+PKG_VERSION:=3.0.4
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/htop-dev/htop/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=b4744a3bea279f2a3725ed8e5e35ffd9cb10d66673bf07c8fe21feb3c4661305
+PKG_HASH:=d8a0536ce95e3d59f8e292e73ee037033a74a8cc118fd10d22048bd4aeb61324
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING
PKG_NAME:=monit
PKG_VERSION:=5.26.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://mmonit.com/monit/dist
PKG_HASH:=87fc4568a3af9a2be89040efb169e3a2e47b262f99e78d5ddde99dd89f02f3c2
+PKG_MAINTAINER:=Etienne CHAMPETIER <champetier.etienne@gmail.com>
PKG_LICENSE:=AGPL-3.0
PKG_LICENSE_FILES:=COPYING
PKG_CPE_ID:=cpe:/a:tildeslash:monit
-PKG_BUILD_PARALLEL:=1
+PKG_FIXUP:=libtool
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
DEPENDS:= +libpthread +zlib
TITLE:=System services monitoring utility
URL:=https://mmonit.com/monit/
- MAINTAINER:=Etienne CHAMPETIER <champetier.etienne@gmail.com>
endef
define Package/monit/Default/description
include $(TOPDIR)/rules.mk
PKG_NAME:=netdata
-PKG_VERSION:=1.26.0
+PKG_VERSION:=1.28.0
PKG_RELEASE:=1
PKG_MAINTAINER:=Josef Schlehofer <pepe.schlehofer@gmail.com>, Daniel Engberg <daniel.engberg.lists@pyret.net>
PKG_SOURCE:=$(PKG_NAME)-v$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/netdata/netdata/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=be32d49381da39196574011653ea863f2064a2168bc9b61a1354171b27ce370b
+PKG_HASH:=35f681abddfc307ffa8f026dbded4eadf3752a7cbb3078501a64d4f9b605491e
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
--- a/web/gui/main.js
+++ b/web/gui/main.js
-@@ -745,11 +745,7 @@ function renderMyNetdataMenu(machinesArr
+@@ -759,11 +759,7 @@ function renderMyNetdataMenu(machinesArr
if (!isSignedIn()) {
if (!NETDATA.registry.isRegistryEnabled()) {
html += (
--- a/collectors/python.d.plugin/Makefile.am
+++ b/collectors/python.d.plugin/Makefile.am
-@@ -142,109 +142,3 @@ dist_third_party_DATA = \
- python_modules/third_party/boinc_client.py \
+@@ -145,109 +145,3 @@ dist_third_party_DATA = \
python_modules/third_party/monotonic.py \
+ python_modules/third_party/filelock.py \
$(NULL)
-
-pythonyaml2dir=$(pythonmodulesdir)/pyyaml2
+++ /dev/null
-From bb405e3c274ca8860c974a720071d346b16c8462 Mon Sep 17 00:00:00 2001
-From: Tomas Kopal <Tomas.Kopal@eccam.com>
-Date: Tue, 6 Oct 2020 13:38:08 +0200
-Subject: [PATCH] Don't check for ebpf dependencies if ebpf is disabled.
-
----
- configure.ac | 56 +++++++++++++++++++++++++++-------------------------
- 1 file changed, 29 insertions(+), 27 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 57f6c0b1cb3a..5f13b4feb0d1 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -989,36 +989,38 @@ AM_CONDITIONAL([ENABLE_PLUGIN_PERF], [test "${enable_plugin_perf}" = "yes"])
- # -----------------------------------------------------------------------------
- # ebpf.plugin
-
--PKG_CHECK_MODULES(
-- [LIBELF],
-- [libelf],
-- [have_libelf=yes],
-- [have_libelf=no]
--)
-+if test "${build_target}" = "linux" -a "${enable_ebpf}" != "no"; then
-+ PKG_CHECK_MODULES(
-+ [LIBELF],
-+ [libelf],
-+ [have_libelf=yes],
-+ [have_libelf=no]
-+ )
-
--AC_CHECK_TYPE(
-- [struct bpf_prog_info],
-- [have_bpf=yes],
-- [have_bpf=no],
-- [#include <linux/bpf.h>]
--)
-+ AC_CHECK_TYPE(
-+ [struct bpf_prog_info],
-+ [have_bpf=yes],
-+ [have_bpf=no],
-+ [#include <linux/bpf.h>]
-+ )
-
--AC_CHECK_FILE(
-- externaldeps/libbpf/libbpf.a,
-- [have_libbpf=yes],
-- [have_libbpf=no]
--)
-+ AC_CHECK_FILE(
-+ externaldeps/libbpf/libbpf.a,
-+ [have_libbpf=yes],
-+ [have_libbpf=no]
-+ )
-
--AC_MSG_CHECKING([if ebpf.plugin should be enabled])
--if test "${build_target}" = "linux" -a \
-- "${enable_ebpf}" != "no" -a \
-- "${have_libelf}" = "yes" -a \
-- "${have_bpf}" = "yes" -a \
-- "${have_libbpf}" = "yes"; then
-- OPTIONAL_BPF_CFLAGS="${LIBELF_CFLAGS} -I externaldeps/libbpf/include"
-- OPTIONAL_BPF_LIBS="externaldeps/libbpf/libbpf.a ${LIBELF_LIBS}"
-- AC_DEFINE([HAVE_LIBBPF], [1], [libbpf usability])
-- enable_ebpf="yes"
-+ AC_MSG_CHECKING([if ebpf.plugin should be enabled])
-+ if test "${have_libelf}" = "yes" -a \
-+ "${have_bpf}" = "yes" -a \
-+ "${have_libbpf}" = "yes"; then
-+ OPTIONAL_BPF_CFLAGS="${LIBELF_CFLAGS} -I externaldeps/libbpf/include"
-+ OPTIONAL_BPF_LIBS="externaldeps/libbpf/libbpf.a ${LIBELF_LIBS}"
-+ AC_DEFINE([HAVE_LIBBPF], [1], [libbpf usability])
-+ enable_ebpf="yes"
-+ else
-+ enable_ebpf="no"
-+ fi
- else
- enable_ebpf="no"
- fi
include $(TOPDIR)/rules.mk
PKG_NAME:=sudo
-PKG_VERSION:=1.8.31
+PKG_VERSION:=1.9.4p2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.sudo.ws/dist
-PKG_HASH:=7ea8d97a3cee4c844e0887ea7a1bd80eb54cc98fd77966776cb1a80653ad454f
+PKG_HASH:=c34af1fa79d40d0869e4010bdd64005290ea2e1ba35638ef07fcc684c4470f64
+
+PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
-PKG_MAINTAINER:=
PKG_LICENSE:=ISC
PKG_LICENSE_FILES:=doc/LICENSE
PKG_CPE_ID:=cpe:/a:todd_miller:sudo
-PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
-
+PKG_BUILD_PARALLEL:=1
PKG_BUILD_DEPENDS:=sudo/host
include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
define Package/sudo
SECTION:=admin
/etc/sudoers.d/
endef
-CONFIGURE_ARGS+= \
+CONFIGURE_ARGS += \
--without-pam \
--disable-pam-session \
--with-editor=/bin/vi \
--with-rundir=/var/lib/sudo \
--with-vardir=/var/lib/sudo
-CONFIGURE_VARS+= \
+CONFIGURE_VARS += \
sudo_cv_uid_t_len=10 \
sudo_cv_func_unsetenv_void=no
-include $(INCLUDE_DIR)/host-build.mk
-
define Host/Compile
cd $(HOST_BUILD_DIR)/lib/util; \
$(MAKE) mksiglist; $(MAKE) mksigname
$(CP) $(HOST_BUILD_DIR)/lib/util/mksig{list,name} $(STAGING_DIR_HOSTPKG)/bin/
endef
-$(eval $(call HostBuild))
-
define Package/sudo/install
- $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_DIR) \
+ $(1)/etc/{init.d,sudoers.d} \
+ $(1)/usr/{bin,sbin} \
+ $(1)/usr/lib/sudo
+
$(CP) $(PKG_INSTALL_DIR)/usr/bin/sudo $(1)/usr/bin/
chmod 4755 $(1)/usr/bin/sudo
- $(INSTALL_DIR) $(1)/usr/sbin
$(CP) $(PKG_INSTALL_DIR)/usr/sbin/visudo $(1)/usr/sbin/
- $(INSTALL_DIR) $(1)/etc
$(CP) $(PKG_INSTALL_DIR)/etc/sudoers $(1)/etc/
chmod 0440 $(1)/etc/sudoers
- $(INSTALL_DIR) $(1)/etc/sudoers.d
- $(INSTALL_DIR) $(1)/usr/lib/sudo
$(CP) $(PKG_INSTALL_DIR)/usr/lib/sudo/*.so* $(1)/usr/lib/sudo/
- $(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/sudo.init $(1)/etc/init.d/sudo
endef
}
endef
+$(eval $(call HostBuild))
$(eval $(call BuildPackage,sudo))
include $(TOPDIR)/rules.mk
PKG_NAME:=syslog-ng
-PKG_VERSION:=3.29.1
-PKG_RELEASE:=3
+PKG_VERSION:=3.30.1
+PKG_RELEASE:=1
PKG_MAINTAINER:=Josef Schlehofer <josef.schlehofer@nic.cz>
PKG_LICENSE:=LGPL-2.1-or-later GPL-2.0-or-later
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/syslog-ng/syslog-ng/releases/download/$(PKG_NAME)-$(PKG_VERSION)/
-PKG_HASH:=5cd6b65466671ec5b793fc703a515e07e0da39b79190b2a3c89af176d07e89fd
+PKG_HASH:=44e54a6186af14d01affa06bf7391cfe8fc2460bd4ba211aab5469d8b1ca5b4b
PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
# More details about these settings can be found here:
# https://www.syslog-ng.com/technical-documents/list/syslog-ng-open-source-edition
-@version: 3.29
+@version: 3.30
@include "scl.conf"
options {
include $(TOPDIR)/rules.mk
PKG_NAME:=autoconf
-PKG_VERSION:=2.69
-PKG_RELEASE:=3
+PKG_VERSION:=2.70
+PKG_RELEASE:=1
PKG_SOURCE_URL:=@GNU/autoconf
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_HASH:=64ebcec9f8ac5b2487125a86a7760d2591ac9e1d3dbd59489633f9de62a57684
+PKG_HASH:=fa9e227860d9d845c0a07f63b88c8d7a2ae1aa2345fb619384bb8accc19fecc6
+
PKG_MAINTAINER:=Heinrich Schuchardt <xypron.glpk@gmx.de>
PKG_LICENSE:=GPL-3.0-or-later
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
-CONFIGURE_VARS += M4=m4 EMACS=no
-
define Package/autoconf
SECTION:=devel
CATEGORY:=Development
automatically configure software source code packages.
endef
-define Build/Install
- $(SED) 's/@PERL@/\/usr\/bin\/perl/g' $(PKG_BUILD_DIR)/bin/Makefile.in
- $(call Build/Install/Default)
-endef
+CONFIGURE_VARS += M4=m4 EMACS=no
define Package/autoconf/install
$(INSTALL_DIR) $(1)/usr/bin
PKG_NAME:=diffutils
PKG_VERSION:=3.7
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GNU/diffutils
TITLE:=diffutils
URL:=http://www.gnu.org/software/diffutils/
ALTERNATIVES:=\
- 200:/usr/bin/cmp:/usr/bin/gnu-cmp \
- 200:/usr/bin/diff:/usr/bin/gnu-diff \
-
+ 200:/usr/bin/cmp:/usr/libexec/cmp-gnu \
+ 200:/usr/bin/diff:/usr/libexec/diff-gnu
endef
define Package/diffutils/description
define Package/diffutils/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/{sdiff,diff3} $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/diff $(1)/usr/bin/gnu-diff
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/cmp $(1)/usr/bin/gnu-cmp
+ $(INSTALL_DIR) $(1)/usr/libexec
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/diff $(1)/usr/libexec/diff-gnu
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/cmp $(1)/usr/libexec/cmp-gnu
endef
$(eval $(call BuildPackage,diffutils))
--- /dev/null
+#
+# Copyright (C) 2020 CZ.NIC, z. s. p. o. (https://www.nic.cz/)
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=gitlab-runner
+PKG_VERSION:=13.5.0
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-v$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://gitlab.com/gitlab-org/gitlab-runner/-/archive/v$(PKG_VERSION)
+PKG_HASH:=765c1556ed9dd4c1b36f9946224c62f068b171e2c1581eeb8f71055327d8a274
+
+PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/gitlab-runner-v$(PKG_VERSION)
+PKG_BUILD_DEPENDS:=golang/host
+PKG_BUILD_PARALLEL:=1
+PKG_USE_MIPS16:=0
+GO_PKG:=gitlab.com/gitlab-org/gitlab-runner
+
+include $(INCLUDE_DIR)/package.mk
+include ../../lang/golang/golang-package.mk
+
+define Package/gitlab-runner
+ SECTION:=devel
+ CATEGORY:=Development
+ TITLE:=Runner for CI/CD
+ URL:=https://docs.gitlab.com/runner
+ DEPENDS:= \
+ $(GO_ARCH_DEPENDS) \
+ @!(mips||mipsel) # Disabled because of docker engine error https://gitlab.com/gitlab-org/gitlab-runner/-/issues/27234
+endef
+
+define Package/gitlab-runner/description
+ GitLab Runner is an application that works with
+ GitLab CI/CD to run jobs in a pipeline.
+endef
+
+$(eval $(call GoBinPackage,gitlab-runner))
+$(eval $(call BuildPackage,gitlab-runner))
include $(TOPDIR)/rules.mk
PKG_NAME:=ninja
-PKG_VERSION:=1.10.1
-PKG_RELEASE:=2
+PKG_VERSION:=1.10.2
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/ninja-build/ninja/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=a6b6f7ac360d4aabd54e299cc1d8fa7b234cd81b9401693da21221c62569a23e
+PKG_HASH:=ce35865411f0490368a8fc383f29071de6690cbadc27704734978221f25e2bed
PKG_MAINTAINER:=Andre Heider <a.heider@gmail.com>
PKG_LICENSE:=Apache-2.0
include $(TOPDIR)/rules.mk
PKG_NAME:=ksmbd
-PKG_VERSION:=3.2.5
+PKG_VERSION:=3.3.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/cifsd-team/cifsd/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=b93a068f6dc2b2040c8cebcb67f6d8c3a1c5c7c5032269a48579ccba996e6be7
+PKG_HASH:=51f4b8a5c469872fa9bb2661534f51b9a288d2f3af07f0e86cf0d7aa031ccc02
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
+kmod-crypto-sha512 \
+kmod-crypto-aead \
+kmod-crypto-ccm \
- +kmod-crypto-gcm
+ +kmod-crypto-gcm \
+ +kmod-lib-crc32c
endef
define KernelPackage/fs-ksmbd/description
PKG_NAME:=erlang
PKG_VERSION:=23.0
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=otp_src_$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:= http://www.erlang.org/download/
HOST_CONFIGURE_ARGS += \
--disable-hipe \
+ --disable-pgo \
--disable-smp-support \
--without-javac
-HOST_CFLAGS += -D_GNU_SOURCE
-
-define Host/Compile
- $(MAKE) -C $(HOST_BUILD_DIR) all
-endef
-
-define Host/Install
- $(MAKE) -C $(HOST_BUILD_DIR) install
-endef
-
-
# Target
CONFIGURE_ARGS += \
include $(TOPDIR)/rules.mk
GO_VERSION_MAJOR_MINOR:=1.15
-GO_VERSION_PATCH:=5
+GO_VERSION_PATCH:=6
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:=c1076b90cf94b73ebed62a81d802cd84d43d02dea8c07abdc922c57a071c84f1
+PKG_HASH:=890bba73c5e2b19ffb1180e385ea225059eb008eb91b694875dd86ea48675817
PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
PKG_LICENSE:=BSD-3-Clause
+++ /dev/null
-From 39f8e98946a0958a4f69ec28c78b8e5d46125e44 Mon Sep 17 00:00:00 2001
-From: Ian Lance Taylor <iant@golang.org>
-Date: Fri, 13 Nov 2020 11:05:37 -0800
-Subject: [PATCH] [release-branch.go1.15] cmd/go: permit CGO_LDFLAGS to appear in //go:ldflag
-
-For #42565
-Fixes #42567
-
-Change-Id: If7cf39905d124dbd54dfac6a53ee38270498efed
-Reviewed-on: https://go-review.googlesource.com/c/go/+/269818
-Trust: Ian Lance Taylor <iant@golang.org>
-Run-TryBot: Ian Lance Taylor <iant@golang.org>
-TryBot-Result: Go Bot <gobot@golang.org>
-Reviewed-by: Jay Conrod <jayconrod@google.com>
-(cherry picked from commit 782cf560db4c919790fdb476d1bbe18e5ddf5ffd)
----
-
-diff --git a/src/cmd/go/internal/work/exec.go b/src/cmd/go/internal/work/exec.go
-index 13d4c8c..dc0c4fc 100644
---- a/src/cmd/go/internal/work/exec.go
-+++ b/src/cmd/go/internal/work/exec.go
-@@ -2766,6 +2766,21 @@
- idx = bytes.Index(src, []byte(cgoLdflag))
- }
- }
-+
-+ // We expect to find the contents of cgoLDFLAGS in flags.
-+ if len(cgoLDFLAGS) > 0 {
-+ outer:
-+ for i := range flags {
-+ for j, f := range cgoLDFLAGS {
-+ if f != flags[i+j] {
-+ continue outer
-+ }
-+ }
-+ flags = append(flags[:i], flags[i+len(cgoLDFLAGS):]...)
-+ break
-+ }
-+ }
-+
- if err := checkLinkerFlags("LDFLAGS", "go:cgo_ldflag", flags); err != nil {
- return nil, nil, err
- }
-diff --git a/src/cmd/go/testdata/script/ldflag.txt b/src/cmd/go/testdata/script/ldflag.txt
-new file mode 100644
-index 0000000..6ceb33b
---- /dev/null
-+++ b/src/cmd/go/testdata/script/ldflag.txt
-@@ -0,0 +1,44 @@
-+# Issue #42565
-+
-+[!cgo] skip
-+
-+# We can't build package bad, which uses #cgo LDFLAGS.
-+cd bad
-+! go build
-+stderr no-such-warning
-+
-+# We can build package ok with the same flags in CGO_LDFLAGS.
-+env CGO_LDFLAGS=-Wno-such-warning -Wno-unknown-warning-option
-+cd ../ok
-+go build
-+
-+# Build a main program that actually uses LDFLAGS.
-+cd ..
-+go build -ldflags=-v
-+
-+# Because we passed -v the Go linker should print the external linker
-+# command which should include the flag we passed in CGO_LDFLAGS.
-+stderr no-such-warning
-+
-+-- go.mod --
-+module ldflag
-+
-+-- bad/bad.go --
-+package bad
-+
-+// #cgo LDFLAGS: -Wno-such-warning -Wno-unknown-warning
-+import "C"
-+
-+func F() {}
-+-- ok/ok.go --
-+package ok
-+
-+import "C"
-+
-+func F() {}
-+-- main.go --
-+package main
-+
-+import _ "ldflag/ok"
-+
-+func main() {}
SECTION:=lang
CATEGORY:=Languages
TITLE:=LuaLanes
- URL:=http://luaforge.net/projects/lanes/
+ URL:=http://lualanes.github.io/lanes/
DEPENDS:=+lua +luac +liblua +libpthread
MAINTAINER:=Vladimir Malyutin <first-leon@yandex.ru>
endef
define Package/lualanes/description
- Lanes is a lightweight, native, lazy evaluating multithreading library for Lua 5.1 and 5.2.
+ Lua Lanes is a Lua extension library providing the possibility to run
+multiple Lua states in parallel. It is intended to be used for optimizing
+performance on multicore CPU's and to study ways to make Lua programs
+naturally parallel to begin with.
+
+Lanes is included into your software by the regular require "lanes" method.
+No C side programming is needed; all APIs are Lua side, and most existing
+extension modules should work seamlessly together with the multiple lanes.
+
+Lanes supports Lua 5.1, 5.2 and 5.3
endef
define Build/Compile
PKG_NPM_NAME:=node-hid
PKG_NAME:=$(PKG_NPM_NAME)
-PKG_VERSION:=1.3.2
+PKG_VERSION:=2.1.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NPM_NAME)-$(PKG_VERSION).tgz
PKG_SOURCE_URL:=https://registry.npmjs.org/$(PKG_NPM_NAME)/-/
-PKG_HASH:=dce3ff3380d2ad66078ba77498e49693582437ba94bb84229f146e893fa4ed9a
+PKG_HASH:=6c1f05935215feed4e8d2f4aecf31abbad8fa783d252b0bd6041ed2f2e96e9ba
PKG_BUILD_DEPENDS:=node/host
PKG_USE_MIPS16:=0
SECTION:=lang
CATEGORY:=Languages
TITLE:=Node.js package to access HID devices
- URL:=https://github.com/node-hid/node-hid
- DEPENDS:=+node +node-npm +libusb-1.0 +hidapi +libudev $(ICONV_DEPENDS)
+ URL:=https://www.npmjs.com/package/node-hid
+ DEPENDS:=+node +node-npm +libusb-1.0 +libudev $(ICONV_DEPENDS)
endef
define Package/node-hid/description
TARGET_LDFLAGS+=$(if $(ICONV_FULL),-liconv)
define Build/Compile
- git init $(PKG_BUILD_DIR)
+ GYP_DEFINES='driver="hidraw"' \
$(MAKE_VARS) \
$(MAKE_FLAGS) \
npm_config_arch=$(NODEJS_CPU) \
define Package/node-hid/install
$(INSTALL_DIR) $(1)/usr/lib/node/$(PKG_NPM_NAME)
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/node_modules/$(PKG_NPM_NAME)/{package.json,*.md} \
- $(1)/usr/lib/node/$(PKG_NPM_NAME)/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/node_modules/$(PKG_NPM_NAME)/{binding.gyp,*.js} \
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/node_modules/$(PKG_NPM_NAME)/{package.json,*.md,*.js} \
$(1)/usr/lib/node/$(PKG_NPM_NAME)/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/node_modules/$(PKG_NPM_NAME)/{node_modules,src} \
$(1)/usr/lib/node/$(PKG_NPM_NAME)/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/node_modules/$(PKG_NPM_NAME)/build/Release/HID*.node \
$(1)/usr/lib/node/$(PKG_NPM_NAME)/build/Release/
$(INSTALL_DIR) $(1)/usr/bin
- $(LN) ../lib/node/node-hid/src/show-devices.js $(1)/usr/bin/hid-showdevices
+ $(LN) ../lib/node/$(PKG_NPM_NAME)/src/show-devices.js $(1)/usr/bin/hid-showdevices
endef
$(eval $(call BuildPackage,node-hid))
-diff -urN a/hidapi/linux/hid.c b/hidapi/linux/hid.c
---- a/hidapi/linux/hid.c 1985-10-26 17:15:00.000000000 +0900
-+++ b/hidapi/linux/hid.c 2019-12-12 11:15:11.164454207 +0900
+--- a/hidapi/linux/hid.c
++++ b/hidapi/linux/hid.c
@@ -24,6 +24,7 @@
/* C */
#include <stdio.h>
PKG_NPM_NAME:=homebridge
PKG_NAME:=node-$(PKG_NPM_NAME)
-PKG_VERSION:=1.2.3
+PKG_VERSION:=1.2.4
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NPM_NAME)-$(PKG_VERSION).tgz
PKG_SOURCE_URL:=https://registry.npmjs.org/$(PKG_NPM_NAME)/-/
-PKG_HASH:=80f1bbd2021942f4ec47d662f9ec208ca7fb7490d981cdc409f19809604cb592
+PKG_HASH:=f91ab0058707a0498d97d87f45f19682065f80660fac942e0985caf9bb205f2a
PKG_BUILD_DEPENDS:=node/host
PKG_USE_MIPS16:=0
$(CP) $(PKG_INSTALL_DIR)/usr/lib/node_modules/$(PKG_NPM_NAME)/{LICENSE,bin} \
$(1)/usr/lib/node/$(PKG_NPM_NAME)/
$(INSTALL_DIR) $(1)/usr/bin
- $(LN) ../lib/node/homebridge/bin/homebridge $(1)/usr/bin/homebridge
+ $(LN) ../lib/node/$(PKG_NPM_NAME)/bin/homebridge $(1)/usr/bin/homebridge
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/homebridge.init $(1)/etc/init.d/homebridge
endef
--- a/lib/pluginManager.js
+++ b/lib/pluginManager.js
-@@ -324,6 +324,7 @@
+@@ -324,6 +324,7 @@ class PluginManager {
else {
this.searchPaths.add("/usr/local/lib/node_modules");
this.searchPaths.add("/usr/lib/node_modules");
PKG_NPM_NAME:=javascript-obfuscator
PKG_NAME:=node-$(PKG_NPM_NAME)
-PKG_VERSION:=1.9.0
+PKG_VERSION:=2.9.4
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NPM_NAME)-$(PKG_VERSION).tgz
PKG_SOURCE_URL:=https://registry.npmjs.org/$(PKG_NPM_NAME)/-/
-PKG_HASH:=f3e951167cc56c6be2f82fa1c767ee9d28c30d75585c98fb10a57fa73219e8c1
+PKG_HASH:=db443ed7c07a7a111352dac4aa7c6edd7969f97386f37c1cfe884d5a8c5f5408
PKG_BUILD_DEPENDS:=node/host
HOST_BUILD_PARALLEL:=1
PKG_NPM_SCOPE:=serialport
PKG_NPM_NAME:=bindings
PKG_NAME:=node-$(PKG_NPM_SCOPE)-$(PKG_NPM_NAME)
-PKG_VERSION:=9.0.2
+PKG_VERSION:=9.0.4
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NPM_NAME)-$(PKG_VERSION).tgz
PKG_SOURCE_URL:=https://registry.npmjs.org/@$(PKG_NPM_SCOPE)/$(PKG_NPM_NAME)/-/
-PKG_HASH:=03e28d0ef191f3e3f2cf9215c2f2f43106e85638a8d3bd210127781cb73ed50a
+PKG_HASH:=aec200860bd175e4b14b4ab1aa56a5f750172b6c8e20ccb234846206395848d4
PKG_BUILD_DEPENDS:=node/host
PKG_USE_MIPS16:=0
npm_config_prefix=$(PKG_INSTALL_DIR)/usr/ \
npm_config_cache=$(TMP_DIR)/npm-cache-$(TMPNPM) \
npm_config_tmp=$(TMP_DIR)/npm-tmp-$(TMPNPM) \
- npm install -g --build-from-source $(PKG_BUILD_DIR)
+ npm install -g $(PKG_BUILD_DIR)
rm -rf $(TMP_DIR)/npm-tmp-$(TMPNPM)
rm -rf $(TMP_DIR)/npm-cache-$(TMPNPM)
endef
PKG_NPM_NAME:=serialport
PKG_NAME:=node-$(PKG_NPM_NAME)
-PKG_VERSION:=9.0.2
+PKG_VERSION:=9.0.4
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NPM_NAME)-$(PKG_VERSION).tgz
PKG_SOURCE_URL:=https://registry.npmjs.org/$(PKG_NPM_NAME)/-/
-PKG_HASH:=5f4cef3ec85accc8ad3d2ba75654fca4270e4a00d01729c4c4bcb895a3fdb5d6
+PKG_HASH:=e19fe993ad16ae0e03fc42e24cfe4babf8fd90f8358e1885d5e216277dda1086
PKG_BUILD_DEPENDS:=node/host
PKG_USE_MIPS16:=0
npm_config_prefix=$(PKG_INSTALL_DIR)/usr/ \
npm_config_cache=$(TMP_DIR)/npm-cache-$(TMPNPM) \
npm_config_tmp=$(TMP_DIR)/npm-tmp-$(TMPNPM) \
- npm install -g --build-from-source $(PKG_BUILD_DIR)
+ npm install -g $(PKG_BUILD_DIR)
rm -rf $(TMP_DIR)/npm-tmp-$(TMPNPM)
rm -rf $(TMP_DIR)/npm-cache-$(TMPNPM)
endef
--- /dev/null
+--- a/package.json
++++ b/package.json
+@@ -46,7 +46,6 @@
+ ],
+ "dependencies": {
+ "@serialport/binding-mock": "^9.0.2",
+- "@serialport/bindings": "^9.0.4",
+ "@serialport/parser-byte-length": "^9.0.1",
+ "@serialport/parser-cctalk": "^9.0.1",
+ "@serialport/parser-delimiter": "^9.0.1",
+++ /dev/null
---- a/package.json
-+++ b/package.json
-@@ -46,7 +46,6 @@
- ],
- "dependencies": {
- "@serialport/binding-mock": "^9.0.2",
-- "@serialport/bindings": "^9.0.2",
- "@serialport/parser-byte-length": "^9.0.1",
- "@serialport/parser-cctalk": "^9.0.1",
- "@serialport/parser-delimiter": "^9.0.1",
include $(TOPDIR)/rules.mk
PKG_NAME:=node
-PKG_VERSION:=v12.20.0
+PKG_VERSION:=v14.15.3
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://nodejs.org/dist/$(PKG_VERSION)
-PKG_HASH:=61e3fd5c9af565e8d25403ce56b2c0097e2e3270381f2d4216573d48b3dc428b
+PKG_HASH:=32cfb19be9bd15cfdfaf842b29c80cc1c1c4b841a3b8ce05de74e1aca1cbf4fe
PKG_MAINTAINER:=Hirokazu MORIKAWA <morikw2@gmail.com>, Adrian Panella <ianchi74@outlook.com>
PKG_LICENSE:=MIT
--shared-nghttp2 \
--shared-libuv \
--shared-cares \
- $(if $(CONFIG_NODEJS_ICU_SMALL),, \
- --with-intl=$(if $(CONFIG_NODEJS_ICU_SYSTEM),system-icu,none)) \
+ --with-intl=$(if $(CONFIG_NODEJS_ICU_SMALL),small-icu,$(if $(CONFIG_NODEJS_ICU_SYSTEM),system-icu,none)) \
$(if $(findstring +neon,$(CONFIG_CPU_TYPE)),--with-arm-fpu=neon) \
$(if $(findstring +vfp",$(CONFIG_CPU_TYPE)),--with-arm-fpu=vfp) \
$(if $(findstring +vfpv3",$(CONFIG_CPU_TYPE)),--with-arm-fpu=vfpv3-d16) \
+++ /dev/null
---- a/deps/v8/src/base/cpu.cc
-+++ b/deps/v8/src/base/cpu.cc
-@@ -143,6 +143,7 @@
- ".set push\n\t"
- ".set noreorder\n\t"
- ".set oddspreg\n\t"
-+ ".set hardfloat\n\t"
- "lui $t0, 0x3FF0\n\t"
- "ldc1 $f0, %0\n\t"
- "mtc1 $t0, $f1\n\t"
--- a/lib/internal/modules/cjs/loader.js
+++ b/lib/internal/modules/cjs/loader.js
-@@ -1109,7 +1109,8 @@
+@@ -1179,7 +1179,8 @@ Module._initPaths = function() {
path.resolve(process.execPath, '..') :
path.resolve(process.execPath, '..', '..');
-diff -urN a/deps/v8/src/base/platform/condition-variable.cc b/deps/v8/src/base/platform/condition-variable.cc
---- a/deps/v8/src/base/platform/condition-variable.cc 2020-09-30 01:58:13.000000000 +0900
-+++ b/deps/v8/src/base/platform/condition-variable.cc 2020-10-06 09:04:33.341499270 +0900
-@@ -16,7 +16,7 @@
+--- a/deps/v8/src/base/platform/condition-variable.cc
++++ b/deps/v8/src/base/platform/condition-variable.cc
+@@ -16,7 +16,7 @@ namespace base {
ConditionVariable::ConditionVariable() {
#if (V8_OS_FREEBSD || V8_OS_NETBSD || V8_OS_OPENBSD || \
// On Free/Net/OpenBSD and Linux with glibc we can change the time
// source for pthread_cond_timedwait() to use the monotonic clock.
pthread_condattr_t attr;
-@@ -92,7 +92,7 @@
+@@ -92,7 +92,7 @@ bool ConditionVariable::WaitFor(Mutex* m
&native_handle_, &mutex->native_handle(), &ts);
#else
#if (V8_OS_FREEBSD || V8_OS_NETBSD || V8_OS_OPENBSD || \
// On Free/Net/OpenBSD and Linux with glibc we can change the time
// source for pthread_cond_timedwait() to use the monotonic clock.
result = clock_gettime(CLOCK_MONOTONIC, &ts);
-diff -urN a/deps/v8/src/base/platform/platform-posix.cc b/deps/v8/src/base/platform/platform-posix.cc
---- a/deps/v8/src/base/platform/platform-posix.cc 2020-09-30 01:58:13.000000000 +0900
-+++ b/deps/v8/src/base/platform/platform-posix.cc 2020-10-06 09:04:33.341499270 +0900
-@@ -772,7 +772,7 @@
+--- a/deps/v8/src/base/platform/platform-posix.cc
++++ b/deps/v8/src/base/platform/platform-posix.cc
+@@ -823,7 +823,7 @@ bool Thread::Start() {
#if V8_OS_MACOSX
// Default on Mac OS X is 512kB -- bump up to 1MB
stack_size = 1 * 1024 * 1024;
// Default on AIX is 96kB -- bump up to 2MB
stack_size = 2 * 1024 * 1024;
#endif
-diff -urN a/deps/v8/src/codegen/external-reference-table.cc b/deps/v8/src/codegen/external-reference-table.cc
---- a/deps/v8/src/codegen/external-reference-table.cc 2020-09-30 01:58:13.000000000 +0900
-+++ b/deps/v8/src/codegen/external-reference-table.cc 2020-10-06 09:04:33.345499241 +0900
+--- a/deps/v8/src/codegen/external-reference-table.cc
++++ b/deps/v8/src/codegen/external-reference-table.cc
@@ -9,7 +9,7 @@
#include "src/ic/stub-cache.h"
#include "src/logging/counters.h"
+++ /dev/null
-From 7c69553d7275bbcaa88fada8ccd0d2d9f787e1ad Mon Sep 17 00:00:00 2001
-From: Martin Bark <martin@barkynet.com>
-Date: Sat, 4 Mar 2017 20:41:40 +0000
-Subject: [PATCH] check if uclibc has backtrace support
-
-Signed-off-by: Martin Bark <martin@barkynet.com>
----
- deps/v8/src/base/debug/stack_trace_posix.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/deps/v8/src/base/debug/stack_trace_posix.cc b/deps/v8/src/base/debug/stack_trace_posix.cc
-index 87c0a73..d2c182a 100644
---- a/deps/v8/src/base/debug/stack_trace_posix.cc
-+++ b/deps/v8/src/base/debug/stack_trace_posix.cc
-@@ -25,7 +25,7 @@
- #include <string>
- #include <vector>
-
--#if V8_LIBC_GLIBC || V8_LIBC_BSD || V8_LIBC_UCLIBC || V8_OS_SOLARIS
-+#if V8_LIBC_GLIBC || V8_LIBC_BSD || ( V8_LIBC_UCLIBC && __UCLIBC_HAS_BACKTRACE__ ) || V8_OS_SOLARIS
- #define HAVE_EXECINFO_H 1
- #endif
-
---
-2.7.4
-
--- a/tools/gyp/pylib/gyp/generator/make.py
+++ b/tools/gyp/pylib/gyp/generator/make.py
-@@ -176,7 +176,7 @@
+@@ -180,7 +180,7 @@ cmd_solink_module = $(LINK.$(TOOLSET)) -
LINK_COMMANDS_MAC = """\
quiet_cmd_alink = LIBTOOL-STATIC $@
--- a/tools/icu/icu-generic.gyp
+++ b/tools/icu/icu-generic.gyp
-@@ -517,6 +517,7 @@
+@@ -522,6 +522,7 @@
'target_name': 'genrb',
'type': 'executable',
'toolsets': [ 'host' ],
'dependencies': [ 'icutools' ],
'sources': [
'<@(icu_src_genrb)'
-@@ -533,6 +534,7 @@
+@@ -538,6 +539,7 @@
'target_name': 'iculslocs',
'toolsets': [ 'host' ],
'type': 'executable',
'dependencies': [ 'icutools' ],
'sources': [
'iculslocs.cc',
-@@ -545,6 +547,7 @@
+@@ -550,6 +552,7 @@
'target_name': 'icupkg',
'toolsets': [ 'host' ],
'type': 'executable',
'dependencies': [ 'icutools' ],
'sources': [
'<@(icu_src_icupkg)',
-@@ -556,6 +559,7 @@
+@@ -561,6 +564,7 @@
'target_name': 'genccode',
'toolsets': [ 'host' ],
'type': 'executable',
'dependencies': [ 'icutools' ],
'sources': [
'<@(icu_src_genccode)',
---- a/tools/v8_gypfiles/v8.gyp 2019-06-27 19:12:20.000000000 +0900
-+++ b/tools/v8_gypfiles/v8.gyp 2019-07-01 14:40:48.292020880 +0900
-@@ -1255,6 +1255,7 @@
+--- a/tools/v8_gypfiles/v8.gyp
++++ b/tools/v8_gypfiles/v8.gyp
+@@ -1310,6 +1310,7 @@
{
'target_name': 'bytecode_builtins_list_generator',
'type': 'executable',
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host'],
-@@ -1278,6 +1279,8 @@
+@@ -1333,6 +1334,8 @@
{
'target_name': 'mksnapshot',
'type': 'executable',
'dependencies': [
'v8_base_without_compiler',
'v8_compiler_for_mksnapshot',
-@@ -1300,6 +1303,7 @@
+@@ -1354,6 +1357,7 @@
{
'target_name': 'torque',
'type': 'executable',
'dependencies': [
'torque_base',
# "build/win:default_exe_manifest",
-@@ -1338,6 +1342,7 @@
+@@ -1392,6 +1396,7 @@
{
'target_name': 'torque-language-server',
'type': 'executable',
'conditions': [
['want_separate_host_toolset', {
'toolsets': ['host'],
-@@ -1365,6 +1370,8 @@
+@@ -1419,6 +1424,8 @@
{
'target_name': 'gen-regexp-special-case',
'type': 'executable',
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
-@@ -1028,13 +1029,6 @@
+@@ -1026,13 +1027,6 @@ function lookupAndConnect(self, options)
hints: options.hints || 0
};
+++ /dev/null
-Description: upstream mips fix
-Origin: https://github.com/nodejs/node/issues/31118
-Last-Update: 2020-05-30
-
---- a/deps/v8/AUTHORS
-+++ b/deps/v8/AUTHORS
-@@ -106,6 +106,7 @@
- James M Snell <jasnell@gmail.com>
- Jianghua Yang <jianghua.yjh@alibaba-inc.com>
- Jiawen Geng <technicalcute@gmail.com>
-+Jiaxun Yang <jiaxun.yang@flygoat.com>
- Joel Stanley <joel@jms.id.au>
- Johan Bergström <johan@bergstroem.nu>
- Jonathan Liu <net147@gmail.com>
---- a/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-aix.cc
-+++ b/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-aix.cc
-@@ -94,10 +94,6 @@
-
- void PlatformEmbeddedFileWriterAIX::DeclareFunctionEnd(const char* name) {}
-
--int PlatformEmbeddedFileWriterAIX::HexLiteral(uint64_t value) {
-- return fprintf(fp_, "0x%" PRIx64, value);
--}
--
- void PlatformEmbeddedFileWriterAIX::FilePrologue() {}
-
- void PlatformEmbeddedFileWriterAIX::DeclareExternalFilename(
-@@ -120,12 +116,6 @@
- return kLong;
- }
-
--int PlatformEmbeddedFileWriterAIX::WriteByteChunk(const uint8_t* data) {
-- DCHECK_EQ(ByteChunkDataDirective(), kLong);
-- const uint32_t* long_ptr = reinterpret_cast<const uint32_t*>(data);
-- return HexLiteral(*long_ptr);
--}
--
- #undef SYMBOL_PREFIX
-
- } // namespace internal
---- a/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-aix.h
-+++ b/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-aix.h
-@@ -37,8 +37,6 @@
- void DeclareFunctionBegin(const char* name) override;
- void DeclareFunctionEnd(const char* name) override;
-
-- int HexLiteral(uint64_t value) override;
--
- void Comment(const char* string) override;
-
- void FilePrologue() override;
-@@ -48,7 +46,6 @@
- int IndentedDataDirective(DataDirective directive) override;
-
- DataDirective ByteChunkDataDirective() const override;
-- int WriteByteChunk(const uint8_t* data) override;
-
- private:
- void DeclareSymbolGlobal(const char* name);
---- a/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-base.cc
-+++ b/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-base.cc
-@@ -24,6 +24,10 @@
- }
- }
-
-+int PlatformEmbeddedFileWriterBase::HexLiteral(uint64_t value) {
-+ return fprintf(fp_, "0x%" PRIx64, value);
-+}
-+
- int DataDirectiveSize(DataDirective directive) {
- switch (directive) {
- case kByte:
-@@ -39,24 +43,37 @@
- }
-
- int PlatformEmbeddedFileWriterBase::WriteByteChunk(const uint8_t* data) {
-- DCHECK_EQ(ByteChunkDataDirective(), kOcta);
--
-- static constexpr size_t kSize = kInt64Size;
--
-- uint64_t part1, part2;
-- // Use memcpy for the reads since {data} is not guaranteed to be aligned.
-+ size_t kSize = DataDirectiveSize(ByteChunkDataDirective());
-+ size_t kHalfSize = kSize / 2;
-+ uint64_t high = 0, low = 0;
-+
-+ switch (kSize) {
-+ case 1:
-+ low = *data;
-+ break;
-+ case 4:
-+ low = *reinterpret_cast<const uint32_t*>(data);
-+ break;
-+ case 8:
-+ low = *reinterpret_cast<const uint64_t*>(data);
-+ break;
-+ case 16:
- #ifdef V8_TARGET_BIG_ENDIAN
-- memcpy(&part1, data, kSize);
-- memcpy(&part2, data + kSize, kSize);
-+ memcpy(&high, data, kHalfSize);
-+ memcpy(&low, data + kHalfSize, kHalfSize);
- #else
-- memcpy(&part1, data + kSize, kSize);
-- memcpy(&part2, data, kSize);
-+ memcpy(&high, data + kHalfSize, kHalfSize);
-+ memcpy(&low, data, kHalfSize);
- #endif // V8_TARGET_BIG_ENDIAN
-+ break;
-+ default:
-+ UNREACHABLE();
-+ }
-
-- if (part1 != 0) {
-- return fprintf(fp(), "0x%" PRIx64 "%016" PRIx64, part1, part2);
-+ if (high != 0) {
-+ return fprintf(fp(), "0x%" PRIx64 "%016" PRIx64, high, low);
- } else {
-- return fprintf(fp(), "0x%" PRIx64, part2);
-+ return fprintf(fp(), "0x%" PRIx64, low);
- }
- }
-
---- a/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-base.h
-+++ b/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-base.h
-@@ -67,7 +67,7 @@
- virtual void DeclareFunctionEnd(const char* name) = 0;
-
- // Returns the number of printed characters.
-- virtual int HexLiteral(uint64_t value) = 0;
-+ virtual int HexLiteral(uint64_t value);
-
- virtual void Comment(const char* string) = 0;
- virtual void Newline() { fprintf(fp_, "\n"); }
---- a/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-generic.cc
-+++ b/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-generic.cc
-@@ -112,10 +112,6 @@
-
- void PlatformEmbeddedFileWriterGeneric::DeclareFunctionEnd(const char* name) {}
-
--int PlatformEmbeddedFileWriterGeneric::HexLiteral(uint64_t value) {
-- return fprintf(fp_, "0x%" PRIx64, value);
--}
--
- void PlatformEmbeddedFileWriterGeneric::FilePrologue() {}
-
- void PlatformEmbeddedFileWriterGeneric::DeclareExternalFilename(
-@@ -142,6 +138,18 @@
- return fprintf(fp_, " %s ", DirectiveAsString(directive));
- }
-
-+DataDirective PlatformEmbeddedFileWriterGeneric::ByteChunkDataDirective()
-+ const {
-+#if defined(V8_TARGET_ARCH_MIPS) || defined(V8_TARGET_ARCH_MIPS64)
-+ // MIPS uses a fixed 4 byte instruction set, using .long
-+ // to prevent any unnecessary padding.
-+ return kLong;
-+#else
-+ // Other ISAs just listen to the base
-+ return PlatformEmbeddedFileWriterBase::ByteChunkDataDirective();
-+#endif
-+}
-+
- #undef SYMBOL_PREFIX
-
- } // namespace internal
---- a/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-generic.h
-+++ b/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-generic.h
-@@ -39,8 +39,6 @@
- void DeclareFunctionBegin(const char* name) override;
- void DeclareFunctionEnd(const char* name) override;
-
-- int HexLiteral(uint64_t value) override;
--
- void Comment(const char* string) override;
-
- void FilePrologue() override;
-@@ -49,6 +47,8 @@
-
- int IndentedDataDirective(DataDirective directive) override;
-
-+ DataDirective ByteChunkDataDirective() const override;
-+
- private:
- void DeclareSymbolGlobal(const char* name);
-
---- a/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-mac.cc
-+++ b/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-mac.cc
-@@ -87,10 +87,6 @@
-
- void PlatformEmbeddedFileWriterMac::DeclareFunctionEnd(const char* name) {}
-
--int PlatformEmbeddedFileWriterMac::HexLiteral(uint64_t value) {
-- return fprintf(fp_, "0x%" PRIx64, value);
--}
--
- void PlatformEmbeddedFileWriterMac::FilePrologue() {}
-
- void PlatformEmbeddedFileWriterMac::DeclareExternalFilename(
---- a/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-mac.h
-+++ b/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-mac.h
-@@ -37,8 +37,6 @@
- void DeclareFunctionBegin(const char* name) override;
- void DeclareFunctionEnd(const char* name) override;
-
-- int HexLiteral(uint64_t value) override;
--
- void Comment(const char* string) override;
-
- void FilePrologue() override;
PKG_NAME:=perl-html-parser
PKG_VERSION:=3.72
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE_URL:=http://www.cpan.org/authors/id/G/GA/GAAS/
PKG_SOURCE:=HTML-Parser-$(PKG_VERSION).tar.gz
PKG_CPE_ID:=cpe:/a:derrick_oswald:html-parser
PKG_BUILD_DIR:=$(BUILD_DIR)/perl/HTML-Parser-$(PKG_VERSION)
+HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/perl/HTML-Parser-$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
include ../perl/perlmod.mk
define Package/perl-html-parser
$(call perlmod/Install,$(1),HTML auto/HTML)
endef
+define Host/Configure
+ $(call perlmod/host/Configure,,,)
+endef
+
+define Host/Compile
+ $(call perlmod/host/Compile,,)
+endef
+
+define Host/Install
+ $(call perlmod/host/Install,$(1),)
+endef
$(eval $(call BuildPackage,perl-html-parser))
+$(eval $(call HostBuild))
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=perl-mail-spamassassin
+PKG_RELEASE:=1
+PKG_VERSION:=3.4.4
+PKG_HASH:=8ea27a165b81e3ce8c84ae85c3ecba1f2edfa04ef4a86f07fe28ab612fc8ff60
+
+PKG_SOURCE_NAME:=Mail-SpamAssassin
+PKG_SOURCE_URL:=@APACHE/spamassassin/source
+PKG_SOURCE:=$(PKG_SOURCE_NAME)-$(PKG_VERSION).tar.gz
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_SOURCE_NAME)-$(PKG_VERSION)
+PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
+PKG_LICENSE:=Apache-2.0
+PKG_LICENSE_FILES:=LICENSE
+PKG_CPE_ID:=cpe:/a:apache:spamassassin
+
+PKG_BUILD_DEPENDS:=perl-dbi/host perl-html-parser/host perl-net-dns/host perl-netaddr-ip/host
+PKG_INSTALL:=1
+PKG_SOURCE_VERSION:=$(PKG_VERSION)
+
+include $(INCLUDE_DIR)/package.mk
+include ../perl/perlmod.mk
+
+CONFIGURE_PATH:=spamc
+
+define Package/spamassassin
+ SECTION:=mail
+ CATEGORY:=Mail
+ TITLE:=SpamAssassin
+ URL:=https://spamassassin.apache.org/
+ DEPENDS:=+perl +perlbase-autoloader +perlbase-config +perlbase-data +perlbase-digest \
+ +perlbase-encode +perlbase-essential +perlbase-file +perlbase-getopt \
+ +perlbase-hash +perlbase-mime +perlbase-net +perlbase-socket \
+ +perl-dbi +perl-html-parser +perl-net-dns +perl-netaddr-ip
+ VARIANT:=ssl
+endef
+
+define Package/spamc/Default
+ SECTION:=mail
+ CATEGORY:=Mail
+ TITLE:=SpamAssassin client binary
+ URL:=https://spamassassin.apache.org/
+ DEPENDS:=+zlib
+endef
+
+define Package/spamc
+ $(call Package/spamc/Default)
+ VARIANT:=nossl
+endef
+
+define Package/spamc-ssl
+ $(call Package/spamc/Default)
+ TITLE+= (with SSL)
+ DEPENDS+=+libopenssl
+ VARIANT:=ssl
+endef
+
+ifeq ($(BUILD_VARIANT),ssl)
+TARGET_CFLAGS += -DSPAMC_SSL
+CONFIGURE_ARGS += --enable-ssl
+endif
+
+define Package/spamassassin/conffiles
+/etc/mail/spamassassin
+endef
+
+define Build/Configure
+ $(call perlmod/Configure,,)
+ $(call Build/Configure/Default)
+ ( cd "$(PKG_BUILD_DIR)/$(CONFIGURE_PATH)" && ./version.h.pl --with-version=$(PKG_SOURCE_VERSION) )
+endef
+
+define Build/Compile
+ $(call perlmod/Compile,,)
+ $(call Build/Compile/Default,,,spamc)
+endef
+
+define Package/spamassassin/install
+ $(call perlmod/Install,$(1),Mail/SpamAssassin auto/Mail/SpamAssassin)
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/sa-awl $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/sa-learn $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/sa-compile $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/spamassassin $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/sa-update $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/spamd $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/sa-check_spamd $(1)/usr/bin
+ $(INSTALL_DIR) $(1)/etc/mail/spamassassin
+ $(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/mail/spamassassin/* $(1)/etc/mail/spamassassin
+endef
+
+define Package/spamc/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/spamc $(1)/usr/bin
+endef
+
+Package/spamc-ssl/install = $(Package/spamc/install)
+
+$(eval $(call BuildPackage,spamassassin))
+$(eval $(call BuildPackage,spamc))
+$(eval $(call BuildPackage,spamc-ssl))
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=perl-net-dns
+PKG_VERSION:=1.29
+PKG_RELEASE:=1
+
+PKG_SOURCE_NAME:=Net-DNS
+PKG_SOURCE:=$(PKG_SOURCE_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://www.net-dns.org/download
+PKG_HASH:=852d6ee87e8f0d014223026581cbb56924ba8cddd3ceb29c6191dbb6122d43c5
+PKG_BUILD_DIR:=$(BUILD_DIR)/perl/$(PKG_SOURCE_NAME)-$(PKG_VERSION)
+HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/perl/$(PKG_SOURCE_NAME)-$(PKG_VERSION)
+
+PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
+PKG_LICENSE:=MIT
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
+include ../perl/perlmod.mk
+
+define Package/perl-net-dns
+ SUBMENU:=Perl
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=Net::DNS DNS resolver implemented in Perl
+ URL:=https://www.net-dns.org/
+ DEPENDS:=perl +perlbase-essential +perlbase-io
+endef
+
+define Build/Configure
+ $(call perlmod/Configure,,)
+endef
+
+define Build/Compile
+ $(call perlmod/Compile,,)
+endef
+
+define Package/perl-net-dns/install
+ $(call perlmod/Install,$(1),Net auto/Net)
+endef
+
+define Host/Configure
+ $(call perlmod/host/Configure,,,)
+endef
+
+define Host/Compile
+ $(call perlmod/host/Compile,,)
+endef
+
+define Host/Install
+ $(call perlmod/host/Install,$(1),)
+endef
+
+$(eval $(call BuildPackage,perl-net-dns))
+$(eval $(call HostBuild))
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=perl-netaddr-ip
+PKG_VERSION:=4.079
+PKG_RELEASE:=1
+
+PKG_SOURCE_NAME:=NetAddr-IP
+PKG_SOURCE_URL:=https://www.cpan.org/authors/id/M/MI/MIKER/
+PKG_SOURCE:=$(PKG_SOURCE_NAME)-$(PKG_VERSION).tar.gz
+PKG_HASH:=ec5a82dfb7028bcd28bb3d569f95d87dd4166cc19867f2184ed3a59f6d6ca0e7
+
+PKG_LICENSE:=GPL-2.0-or-later Artistic-1.0-Perl
+PKG_LICENSE_FILES:=Copying
+PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
+
+HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/perl/NetAddr-IP-$(PKG_VERSION)
+HOST_BUILD_DEPENDS:=perl/host
+PKG_BUILD_DIR:=$(BUILD_DIR)/perl/NetAddr-IP-$(PKG_VERSION)
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
+include ../perl/perlmod.mk
+
+define Package/perl-netaddr-ip
+ SUBMENU:=Perl
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=NetAddr::IP - Manages IPv4 and IPv6 addresses and subnets
+ URL:=http://search.cpan.org/dist/NetAddr::IP/
+ DEPENDS:=perl +perlbase-essential +perlbase-test
+endef
+
+define Host/Configure
+ $(call perlmod/host/Configure,-noxs,,)
+ $(call Host/Configure/Default,,,Lite/Util)
+endef
+
+define Host/Compile
+ $(call Host/Compile/Default,,,Lite/Util)
+ $(call perlmod/host/Compile,,)
+endef
+
+define Host/Install
+ $(call perlmod/host/Install,$(1),)
+endef
+
+define Build/Configure
+ $(call perlmod/Configure,-noxs,)
+ $(call Build/Configure/Default,,,Lite/Util)
+endef
+
+define Build/Compile
+ $(call Build/Compile/Default,,,Lite/Util)
+ $(call perlmod/Compile,,)
+endef
+
+define Package/perl-netaddr-ip/install
+ $(call perlmod/Install,$(1),NetAddr auto/NetAddr)
+endef
+
+$(eval $(call BuildPackage,perl-netaddr-ip))
+$(eval $(call HostBuild))
--- /dev/null
+#
+# Copyright (C) 2021 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=perl-try-tiny
+PKG_VERSION:=0.30
+PKG_RELEASE:=1
+
+PKG_SOURCE_URL:=https://cpan.metacpan.org/authors/id/E/ET/ETHER/
+PKG_SOURCE:=Try-Tiny-$(PKG_VERSION).tar.gz
+PKG_HASH:=da5bd0d5c903519bbf10bb9ba0cb7bcac0563882bcfe4503aee3fb143eddef6b
+PKG_BUILD_DIR:=$(BUILD_DIR)/perl/Try-Tiny-$(PKG_VERSION)
+
+PKG_MAINTAINER:=Matt Merhar <mattmerhar@protonmail.com>
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+
+include $(INCLUDE_DIR)/package.mk
+include $(TOPDIR)/feeds/packages/lang/perl/perlmod.mk
+
+define Package/perl-try-tiny
+ SUBMENU:=Perl
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=Minimal try/catch with proper preservation of $$$$@
+ URL:=https://metacpan.org/pod/Try::Tiny
+ DEPENDS:=perl +perlbase-essential
+endef
+
+define Build/Configure
+ $(call perlmod/Configure,,)
+endef
+
+define Build/Compile
+ $(call perlmod/Compile,,)
+endef
+
+define Package/perl-try-tiny/install
+ $(call perlmod/Install,$(1),Try auto/Try)
+endef
+
+$(eval $(call BuildPackage,perl-try-tiny))
PKG_NAME:=perl-www
PKG_VERSION:=6.43
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE_URL:=https://cpan.metacpan.org/authors/id/O/OA/OALDERS
PKG_SOURCE:=libwww-perl-$(PKG_VERSION).tar.gz
CATEGORY:=Languages
TITLE:=WWW client/server library for Perl (aka LWP)
URL:=https://search.cpan.org/dist/libwww-perl/
- DEPENDS:=perl +perl-encode-locale +perl-file-listing +perl-html-parser +perl-http-cookies +perl-http-daemon +perl-http-date +perl-http-message +perl-http-negotiate +perl-lwp-mediatypes +perl-net-http +perl-uri +perl-www-robotrules +perlbase-base +perlbase-digest +perlbase-encode +perlbase-essential +perlbase-io +perlbase-mime +perlbase-net
+ DEPENDS:=perl +perl-encode-locale +perl-file-listing +perl-html-parser +perl-http-cookies +perl-http-daemon +perl-http-date +perl-http-message +perl-http-negotiate +perl-lwp-mediatypes +perl-net-http +perl-try-tiny +perl-uri +perl-www-robotrules +perlbase-base +perlbase-digest +perlbase-encode +perlbase-essential +perlbase-io +perlbase-mime +perlbase-net
endef
define Build/Configure
--- /dev/null
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PECL_NAME:=imagick
+PECL_LONGNAME:=Image Processing (ImageMagick binding)
+
+PKG_VERSION:=3.4.4
+PKG_RELEASE:=1
+PKG_HASH:=8dd5aa16465c218651fc8993e1faecd982e6a597870fd4b937e9ece02d567077
+
+PKG_NAME:=php7-pecl-imagick
+PKG_SOURCE:=$(PECL_NAME)-$(PKG_VERSION).tgz
+PKG_SOURCE_URL:=http://pecl.php.net/get/
+
+PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
+
+PKG_LICENSE:=PHP-3.01
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_BUILD_DEPENDS:=php7
+PKG_BUILD_DIR:=$(BUILD_DIR)/pecl-php7/$(PECL_NAME)-$(PKG_VERSION)
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
+include ../php7/pecl.mk
+
+$(eval $(call PECLPackage,imagick,$(PECL_LONGNAME),+imagemagick,30))
+$(eval $(call BuildPackage,$(PKG_NAME)))
PECL_NAME:=mcrypt
PECL_LONGNAME:=Bindings for the libmcrypt library
-PKG_VERSION:=1.0.3
-PKG_RELEASE:=2
-PKG_HASH:=affd675843a079e9efd49ac2f723286dd5bcb0916315aa53e2ae5edd5eadb034
+PKG_VERSION:=1.0.4
+PKG_RELEASE:=1
+PKG_HASH:=98153e78958d7a48dcd0dcfe1fc3c16ec987121a0cb2d7c273d280ee7e4ea00d
PKG_NAME:=php7-pecl-mcrypt
PKG_SOURCE:=$(PECL_NAME)-$(PKG_VERSION).tgz
PECL_NAME:=redis
PECL_LONGNAME:=PHP extension for interfacing with Redis
-PKG_VERSION:=5.3.1
+PKG_VERSION:=5.3.2
PKG_RELEASE:=1
-PKG_HASH:=7c29e49c5cbc6b54ccccc00b44fac4d3ed9895e5718fcf62a5b06281dda8809d
+PKG_HASH:=f4e92de628abcb917cdc810df045ca3fa0f2af34673eaa2a03350e3c5c5fdab1
PKG_NAME:=php7-pecl-redis
PKG_SOURCE:=$(PECL_NAME)-$(PKG_VERSION).tgz
include $(TOPDIR)/rules.mk
PKG_NAME:=php
-PKG_VERSION:=7.4.12
+PKG_VERSION:=7.4.13
PKG_RELEASE:=2
PKG_MAINTAINER:=Michael Heimpold <mhei@heimpold.de>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://www.php.net/distributions/
-PKG_HASH:=e82d2bcead05255f6b7d2ff4e2561bc334204955820cabc2457b5239fde96b76
+PKG_HASH:=aead303e3abac23106529560547baebbedba0bb2943b91d5aa08fff1f41680f4
PKG_BUILD_PARALLEL:=1
PKG_USE_MIPS16:=0
+++ /dev/null
---- a/build/php.m4 2020-10-28 00:01:52.000000000 +0900
-+++ b/build/php.m4 2020-11-13 08:57:27.939303216 +0900
-@@ -1907,6 +1907,10 @@
- if test "$PKG_CONFIG icu-io --atleast-version=60"; then
- ICU_CFLAGS="$ICU_CFLAGS -DU_HIDE_OBSOLETE_UTF_OLD_H=1"
- fi
-+
-+ if test "$PKG_CONFIG icu-io --atleast-version=68"; then
-+ ICU_CFLAGS="$ICU_CFLAGS -DU_DEFINE_FALSE_AND_TRUE=1"
-+ fi
- ])
-
- dnl
--- /dev/null
+#!/bin/sh
+
+case "$1" in
+ php7-cgi)
+ php-cgi -v | grep "$2"
+ ;;
+ php7-cli)
+ php-cli -v | grep "$2"
+ ;;
+ php7-fpm)
+ php-fpm -v | grep "$2"
+ ;;
+ php7-mod-*)
+ PHP_MOD="${1#php7-mod-}"
+ PHP_MOD="${PHP_MOD//-/_}"
+
+ opkg install php7-cli
+
+ php-cli -m | grep -i "$PHP_MOD"
+ ;;
+ *)
+ ;;
+esac
include $(TOPDIR)/rules.mk
PKG_NAME:=django
-PKG_VERSION:=3.1.3
+PKG_VERSION:=3.1.4
PKG_RELEASE:=1
PYPI_NAME:=Django
-PKG_HASH:=14b87775ffedab2ef6299b73343d1b4b41e5d4e2aa58c6581f114dbec01e3f8f
+PKG_HASH:=edb10b5c45e7e9c0fb1dc00b76ec7449aca258a39ffd613dbd078c51d19c9f03
PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>, Peter Stadler <peter.stadler@student.uibk.ac.at>
PKG_LICENSE:=BSD-3-Clause
-cffi==1.14.2 --hash=sha256:ae8f34d50af2c2154035984b8b5fc5d9ed63f32fe615646ab435b05b132ca91b
+cffi==1.14.4 --hash=sha256:1a465cbe98a7fd391d47dce4b8f7e5b921e6cd805ef421d04f5f66ba8f06086c
pycparser==2.20 --hash=sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0
include $(TOPDIR)/rules.mk
PKG_NAME:=pillow
-PKG_VERSION:=8.0.1
+PKG_VERSION:=8.1.0
PKG_RELEASE:=1
PYPI_NAME:=Pillow
-PKG_HASH:=11c5c6e9b02c9dac08af04f093eb5a2f84857df70a7d4a6a6ad461aca803fb9e
+PKG_HASH:=887668e792b7edbfb1d3c9d8b5d8c859269a0f0eba4dda562adb95500f60dbba
PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
PKG_LICENSE:=HPND
--- /dev/null
+#
+# Copyright (C) 2020 CZ.NIC, z. s. p. o. (https://www.nic.cz/)
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-augeas
+PKG_VERSION:=1.1.0
+PKG_RELEASE:=1
+
+PYPI_NAME:=python-augeas
+PKG_HASH:=5194a49e86b40ffc57055f73d833f87e39dce6fce934683e7d0d5bbb8eff3b8c
+
+PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
+PKG_LICENSE:=LGPL-2.1-or-later
+PKG_LICENSE_FILES:=COPYING
+
+HOST_PYTHON3_PACKAGE_BUILD_DEPENDS:=cffi # cffi>=1.0.0
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-augeas
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=Python bindings for Augeas
+ URL:=http://augeas.net
+ DEPENDS:=+python3-light +python3-cffi +augeas
+endef
+
+define Package/python3-augeas/description
+ Pure python bindings for Augeas.
+endef
+
+$(eval $(call Py3Package,python3-augeas))
+$(eval $(call BuildPackage,python3-augeas))
+$(eval $(call BuildPackage,python3-augeas-src))
--- /dev/null
+From 712c2028568df7760bc98d95577e35709078bfea Mon Sep 17 00:00:00 2001
+From: Jeffery To <jeffery.to@gmail.com>
+Date: Sun, 8 Nov 2020 21:51:09 +0800
+Subject: [PATCH] Use CFFI in out-of-line API mode (#49)
+
+Currently, ffi.py is called during setup to generate augeas.py; this
+file would normally be used for out-of-line ABI mode. ffi.py is also
+imported at run-time, instead of the generated augeas.py, and used in
+in-line ABI mode.
+
+This changes usage of CFFI to out-of-line API mode (CFFI's "main mode of
+usage"): ffi.py is called during setup to generate _augeas.abi3.so (a C
+extension module); this generated module is imported at run-time.
+
+With this change, the headers/development files for augeas (i.e.
+libaugeas-dev on Debian, augeas-devel on Fedora, etc.) and the C
+compiler are required for build/setup. (These were not necessary
+previously.)
+
+Closes https://github.com/hercules-team/python-augeas/issues/48.
+---
+ augeas/__init__.py | 2 +-
+ augeas/ffi.py | 27 ++++++++++++++++++++++-----
+ setup.py | 1 +
+ 3 files changed, 24 insertions(+), 6 deletions(-)
+
+diff --git a/augeas/__init__.py b/augeas/__init__.py
+index 0fc0d96..4af0200 100644
+--- a/augeas/__init__.py
++++ b/augeas/__init__.py
+@@ -32,7 +32,7 @@
+
+ from sys import version_info as _pyver
+
+-from augeas.ffi import ffi, lib
++from _augeas import ffi, lib
+
+ __author__ = "Nathaniel McCallum <nathaniel@natemccallum.com>"
+ __credits__ = """Jeff Schroeder <jeffschroeder@computer.org>
+diff --git a/augeas/ffi.py b/augeas/ffi.py
+index fdd8d1c..98b3175 100644
+--- a/augeas/ffi.py
++++ b/augeas/ffi.py
+@@ -1,9 +1,28 @@
++import os
++import subprocess
++
+ from cffi import FFI
+
++def get_include_dirs():
++ XML2_CONFIG = os.environ.get('XML2_CONFIG', 'xml2-config')
++ PKG_CONFIG = os.environ.get('PKG_CONFIG', 'pkg-config')
++ try:
++ stdout = subprocess.check_output([XML2_CONFIG, '--cflags'])
++ except (OSError, subprocess.CalledProcessError):
++ try:
++ stdout = subprocess.check_output([PKG_CONFIG, '--cflags', 'libxml-2.0'])
++ except (OSError, subprocess.CalledProcessError):
++ stdout = b''
++ cflags = stdout.decode('utf-8').split()
++ return [cflag[2:] for cflag in cflags if cflag.startswith('-I')]
++
+ ffi = FFI()
+-ffi.set_source("augeas",
+- None,
+- libraries=['augeas'])
++ffi.set_source("_augeas",
++ """
++ #include <augeas.h>
++ """,
++ libraries=['augeas'],
++ include_dirs=get_include_dirs())
+
+ ffi.cdef("""
+ typedef struct augeas augeas;
+@@ -59,7 +78,5 @@
+ void free(void *);
+ """)
+
+-lib = ffi.dlopen("augeas")
+-
+ if __name__ == "__main__":
+ ffi.compile(verbose=True)
+diff --git a/setup.py b/setup.py
+index 65026c1..6c4265e 100755
+--- a/setup.py
++++ b/setup.py
+@@ -22,6 +22,7 @@
+ setup_requires=["cffi>=1.0.0"],
+ cffi_modules=["augeas/ffi.py:ffi"],
+ install_requires=["cffi>=1.0.0"],
++ zip_safe=False,
+ url="http://augeas.net/",
+ classifiers=[
+ "Programming Language :: Python :: 2.7",
include $(TOPDIR)/rules.mk
PKG_NAME:=python-cffi
-PKG_VERSION:=1.14.3
+PKG_VERSION:=1.14.4
PKG_RELEASE:=1
PYPI_NAME:=cffi
-PKG_HASH:=f92f789e4f9241cd262ad7a555ca2c648a98178a953af117ef7fad46aa1d5591
+PKG_HASH:=1a465cbe98a7fd391d47dce4b8f7e5b921e6cd805ef421d04f5f66ba8f06086c
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE
include $(TOPDIR)/rules.mk
PKG_NAME:=python-chardet
-PKG_VERSION:=3.0.4
-PKG_RELEASE:=4
+PKG_VERSION:=4.0.0
+PKG_RELEASE:=1
PKG_LICENSE:=LGPL-2.1
PYPI_NAME:=chardet
-PKG_HASH:=84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae
+PKG_HASH:=0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa
include ../pypi.mk
include $(INCLUDE_DIR)/package.mk
include $(TOPDIR)/rules.mk
PKG_NAME:=python-cryptography
-PKG_VERSION:=3.2.1
+PKG_VERSION:=3.3.1
PKG_RELEASE:=1
PYPI_NAME:=cryptography
-PKG_HASH:=d3d5e10be0cf2a12214ddee45c6bd203dab435e3d83b4560c03066eda600bfe3
+PKG_HASH:=7e177e4bea2de937a584b13645cab32f25e3d96fc0bc4a4cf99c27dc77682be6
PKG_LICENSE:=Apache-2.0 BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE.APACHE LICENSE.BSD
--- /dev/null
+From 7eefc9c72f522e414f953fee2d6ca9242c566107 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Fri, 7 Jun 2019 18:18:46 -0700
+Subject: [PATCH 1/7] Add new ASN1_STRING_get0_data API
+
+Introduced with OpenSSL 1.1
+---
+ src/_cffi_src/openssl/asn1.py | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/src/_cffi_src/openssl/asn1.py
++++ b/src/_cffi_src/openssl/asn1.py
+@@ -45,6 +45,7 @@ void ASN1_OBJECT_free(ASN1_OBJECT *);
+
+ /* ASN1 STRING */
+ unsigned char *ASN1_STRING_data(ASN1_STRING *);
++const unsigned char *ASN1_STRING_get0_data(const ASN1_STRING *);
+ int ASN1_STRING_set(ASN1_STRING *, const void *, int);
+
+ /* ASN1 OCTET STRING */
+@@ -105,4 +106,7 @@ ASN1_NULL *ASN1_NULL_new(void);
+ """
+
+ CUSTOMIZATIONS = """
++#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
++#define ASN1_STRING_data ASN1_STRING_get0_data
++#endif
+ """
--- /dev/null
+From 77b25307a743eb52ef5ead24c956e577f5bd025f Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Fri, 7 Jun 2019 20:42:04 -0700
+Subject: [PATCH 2/7] Add compatibility for X509_STORE_set_get_issuer
+
+Deprecated under OpenSSL 1.1.
+---
+ src/_cffi_src/openssl/x509_vfy.py | 8 ++++++++
+ src/cryptography/hazmat/bindings/openssl/_conditional.py | 8 ++++++++
+ 2 files changed, 16 insertions(+)
+
+--- a/src/_cffi_src/openssl/x509_vfy.py
++++ b/src/_cffi_src/openssl/x509_vfy.py
+@@ -22,6 +22,7 @@ TYPES = """
+ static const long Cryptography_HAS_102_VERIFICATION;
+ static const long Cryptography_HAS_110_VERIFICATION_PARAMS;
+ static const long Cryptography_HAS_X509_STORE_CTX_GET_ISSUER;
++static const long Cryptography_HAS_X509_CB_ISSUER_CHECK;
+
+ typedef ... Cryptography_STACK_OF_ASN1_OBJECT;
+ typedef ... Cryptography_STACK_OF_X509_OBJECT;
+@@ -252,4 +253,11 @@ void (*X509_STORE_set_get_issuer)(X509_S
+ #else
+ static const long Cryptography_HAS_X509_STORE_CTX_GET_ISSUER = 1;
+ #endif
++
++#ifndef X509_V_FLAG_CB_ISSUER_CHECK
++static const long Cryptography_HAS_X509_CB_ISSUER_CHECK = 0;
++#define X509_V_FLAG_CB_ISSUER_CHECK 0x0
++#else
++static const long Cryptography_HAS_X509_CB_ISSUER_CHECK = 1;
++#endif
+ """
+--- a/src/cryptography/hazmat/bindings/openssl/_conditional.py
++++ b/src/cryptography/hazmat/bindings/openssl/_conditional.py
+@@ -270,6 +270,11 @@ def cryptography_has_get_proto_version()
+ "SSL_get_max_proto_version",
+ ]
+
++def cryptography_has_x509_cb_issuer_check():
++ return [
++ "X509_V_FLAG_CB_ISSUER_CHECK",
++ ]
++
+
+ # This is a mapping of
+ # {condition: function-returning-names-dependent-on-that-condition} so we can
+@@ -319,4 +324,7 @@ CONDITIONAL_NAMES = {
+ "Cryptography_HAS_VERIFIED_CHAIN": cryptography_has_verified_chain,
+ "Cryptography_HAS_SRTP": cryptography_has_srtp,
+ "Cryptography_HAS_GET_PROTO_VERSION": cryptography_has_get_proto_version,
++ "Cryptography_HAS_X509_CB_ISSUER_CHECK": (
++ cryptography_has_x509_cb_issuer_check
++ ),
+ }
--- /dev/null
+From 7a55c37e01114dfd1ae733b099fdee1ba1889449 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Fri, 7 Jun 2019 21:00:46 -0700
+Subject: [PATCH 3/7] Add compatibility for deprecated TLS methods
+
+---
+ src/_cffi_src/openssl/ssl.py | 45 +++++++++++++++++--
+ .../hazmat/bindings/openssl/_conditional.py | 36 +++++++++++++++
+ 2 files changed, 77 insertions(+), 4 deletions(-)
+
+--- a/src/_cffi_src/openssl/ssl.py
++++ b/src/_cffi_src/openssl/ssl.py
+@@ -14,12 +14,14 @@ TYPES = """
+ static const long Cryptography_HAS_SSL_ST;
+ static const long Cryptography_HAS_TLS_ST;
+ static const long Cryptography_HAS_SSL3_METHOD;
+-static const long Cryptography_HAS_TLSv1_1;
+-static const long Cryptography_HAS_TLSv1_2;
++static const long Cryptography_HAS_TLS1_METHOD;
++static const long Cryptography_HAS_TLS1_1_METHOD;
++static const long Cryptography_HAS_TLS1_2_METHOD;
+ static const long Cryptography_HAS_TLSv1_3;
+ static const long Cryptography_HAS_SECURE_RENEGOTIATION;
+ static const long Cryptography_HAS_SSL_CTX_CLEAR_OPTIONS;
+ static const long Cryptography_HAS_DTLS;
++static const long Cryptography_HAS_DTLS1_METHOD;
+ static const long Cryptography_HAS_SIGALGS;
+ static const long Cryptography_HAS_PSK;
+ static const long Cryptography_HAS_VERIFIED_CHAIN;
+@@ -543,8 +545,43 @@ static const long Cryptography_HAS_SSL3_
+
+ static const long Cryptography_HAS_RELEASE_BUFFERS = 1;
+ static const long Cryptography_HAS_OP_NO_COMPRESSION = 1;
+-static const long Cryptography_HAS_TLSv1_1 = 1;
+-static const long Cryptography_HAS_TLSv1_2 = 1;
++
++#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
++static const long Cryptography_HAS_TLS1_METHOD = 0;
++const SSL_METHOD* (*TLSv1_method)(void) = NULL;
++const SSL_METHOD* (*TLSv1_server_method)(void) = NULL;
++const SSL_METHOD* (*TLSv1_client_method)(void) = NULL;
++#else
++static const long Cryptography_HAS_TLS1_METHOD = 1;
++#endif
++
++#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
++static const long Cryptography_HAS_TLS1_1_METHOD = 0;
++const SSL_METHOD* (*TLSv1_1_method)(void) = NULL;
++const SSL_METHOD* (*TLSv1_1_server_method)(void) = NULL;
++const SSL_METHOD* (*TLSv1_1_client_method)(void) = NULL;
++#else
++static const long Cryptography_HAS_TLS1_1_METHOD = 1;
++#endif
++
++#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
++static const long Cryptography_HAS_TLS1_2_METHOD = 0;
++const SSL_METHOD* (*TLSv1_2_method)(void) = NULL;
++const SSL_METHOD* (*TLSv1_2_server_method)(void) = NULL;
++const SSL_METHOD* (*TLSv1_2_client_method)(void) = NULL;
++#else
++static const long Cryptography_HAS_TLS1_2_METHOD = 1;
++#endif
++
++#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
++static const long Cryptography_HAS_DTLS1_METHOD = 0;
++const SSL_METHOD* (*DTLSv1_method)(void) = NULL;
++const SSL_METHOD* (*DTLSv1_server_method)(void) = NULL;
++const SSL_METHOD* (*DTLSv1_client_method)(void) = NULL;
++#else
++static const long Cryptography_HAS_DTLS1_METHOD = 1;
++#endif
++
+ static const long Cryptography_HAS_SSL_OP_MSIE_SSLV2_RSA_PADDING = 1;
+ static const long Cryptography_HAS_SSL_OP_NO_TICKET = 1;
+ static const long Cryptography_HAS_SSL_SET_SSL_CTX = 1;
+--- a/src/cryptography/hazmat/bindings/openssl/_conditional.py
++++ b/src/cryptography/hazmat/bindings/openssl/_conditional.py
+@@ -33,6 +33,38 @@ def cryptography_has_ssl3_method():
+ ]
+
+
++def cryptography_has_tls1_method():
++ return [
++ "TLSv1_method",
++ "TLSv1_client_method",
++ "TLSv1_server_method",
++ ]
++
++
++def cryptography_has_tls1_1_method():
++ return [
++ "TLSv1_1_method",
++ "TLSv1_1_client_method",
++ "TLSv1_1_server_method",
++ ]
++
++
++def cryptography_has_tls1_2_method():
++ return [
++ "TLSv1_2_method",
++ "TLSv1_2_client_method",
++ "TLSv1_2_server_method",
++ ]
++
++
++def cryptography_has_dtls1_method():
++ return [
++ "DTLSv1_method",
++ "DTLSv1_client_method",
++ "DTLSv1_server_method",
++ ]
++
++
+ def cryptography_has_102_verification():
+ return [
+ "X509_V_ERR_SUITE_B_INVALID_VERSION",
+@@ -286,6 +318,10 @@ CONDITIONAL_NAMES = {
+ "Cryptography_HAS_RSA_OAEP_MD": cryptography_has_rsa_oaep_md,
+ "Cryptography_HAS_RSA_OAEP_LABEL": cryptography_has_rsa_oaep_label,
+ "Cryptography_HAS_SSL3_METHOD": cryptography_has_ssl3_method,
++ "Cryptography_HAS_TLS1_METHOD": cryptography_has_tls1_method,
++ "Cryptography_HAS_TLS1_1_METHOD": cryptography_has_tls1_1_method,
++ "Cryptography_HAS_TLS1_2_METHOD": cryptography_has_tls1_2_method,
++ "Cryptography_HAS_DTLS1_METHOD": cryptography_has_dtls1_method,
+ "Cryptography_HAS_102_VERIFICATION": cryptography_has_102_verification,
+ "Cryptography_HAS_110_VERIFICATION_PARAMS": (
+ cryptography_has_110_verification_params
--- /dev/null
+From 008e299aaf32af0b93eede649c6942af93b1c11e Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Sat, 15 Jun 2019 17:49:25 -0700
+Subject: [PATCH 4/7] Replace EVP_CIPHER_CTX_cleanup with EVP_CIPHER_CTX_reset
+
+Deprecated in OpenSSL 1.1
+---
+ src/_cffi_src/openssl/evp.py | 6 ++++++
+ src/cryptography/hazmat/backends/openssl/ciphers.py | 2 +-
+ 2 files changed, 7 insertions(+), 1 deletion(-)
+
+--- a/src/_cffi_src/openssl/evp.py
++++ b/src/_cffi_src/openssl/evp.py
+@@ -48,6 +48,7 @@ int EVP_CipherUpdate(EVP_CIPHER_CTX *, u
+ const unsigned char *, int);
+ int EVP_CipherFinal_ex(EVP_CIPHER_CTX *, unsigned char *, int *);
+ int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *);
++int EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *);
+ EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void);
+ void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *);
+ int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *, int);
+@@ -269,4 +270,9 @@ static const long Cryptography_HAS_EVP_D
+ #ifndef EVP_PKEY_POLY1305
+ #define EVP_PKEY_POLY1305 NID_poly1305
+ #endif
++
++#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
++#define EVP_CIPHER_CTX_cleanup EVP_CIPHER_CTX_reset
++#define OpenSSL_add_all_algorithms() do {} while(0)
++#endif
+ """
+--- a/src/cryptography/hazmat/backends/openssl/ciphers.py
++++ b/src/cryptography/hazmat/backends/openssl/ciphers.py
+@@ -199,7 +199,7 @@ class _CipherContext(object):
+ self._backend.openssl_assert(res != 0)
+ self._tag = self._backend._ffi.buffer(tag_buf)[:]
+
+- res = self._backend._lib.EVP_CIPHER_CTX_cleanup(self._ctx)
++ res = self._backend._lib.EVP_CIPHER_CTX_reset(self._ctx)
+ self._backend.openssl_assert(res == 1)
+ return self._backend._ffi.buffer(buf)[: outlen[0]]
+
--- /dev/null
+From 339e0ab364ca931435c0ad134dc6047eb6974540 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Sat, 15 Jun 2019 18:47:46 -0700
+Subject: [PATCH 5/7] Switch get_*Update APIs to get0
+
+Deprecated in 1.1
+---
+ src/_cffi_src/openssl/x509.py | 27 ++++++++++++++++---
+ .../hazmat/backends/openssl/backend.py | 4 +--
+ .../hazmat/backends/openssl/x509.py | 8 +++---
+ 3 files changed, 29 insertions(+), 10 deletions(-)
+
+--- a/src/_cffi_src/openssl/x509.py
++++ b/src/_cffi_src/openssl/x509.py
+@@ -202,8 +202,10 @@ long X509_get_version(X509 *);
+
+ ASN1_TIME *X509_get_notBefore(X509 *);
+ ASN1_TIME *X509_get_notAfter(X509 *);
+-ASN1_TIME *X509_getm_notBefore(X509 *);
+-ASN1_TIME *X509_getm_notAfter(X509 *);
++ASN1_TIME *X509_getm_notBefore(const X509 *);
++ASN1_TIME *X509_getm_notAfter(const X509 *);
++const ASN1_TIME *X509_get0_notBefore(const X509 *);
++const ASN1_TIME *X509_get0_notAfter(const X509 *);
+
+ long X509_REQ_get_version(X509_REQ *);
+ X509_NAME *X509_REQ_get_subject_name(X509_REQ *);
+@@ -235,6 +237,8 @@ X509_CRL *sk_X509_CRL_value(Cryptography
+ long X509_CRL_get_version(X509_CRL *);
+ ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *);
+ ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *);
++const ASN1_TIME *X509_CRL_get0_lastUpdate(const X509_CRL *);
++const ASN1_TIME *X509_CRL_get0_nextUpdate(const X509_CRL *);
+ X509_NAME *X509_CRL_get_issuer(X509_CRL *);
+ Cryptography_STACK_OF_X509_REVOKED *X509_CRL_get_REVOKED(X509_CRL *);
+
+@@ -243,8 +247,11 @@ int X509_CRL_set_lastUpdate(X509_CRL *,
+ int X509_CRL_set_nextUpdate(X509_CRL *, ASN1_TIME *);
+ int X509_set_notBefore(X509 *, ASN1_TIME *);
+ int X509_set_notAfter(X509 *, ASN1_TIME *);
+-int X509_set1_notBefore(X509 *, ASN1_TIME *);
+-int X509_set1_notAfter(X509 *, ASN1_TIME *);
++
++int X509_CRL_set1_lastUpdate(X509_CRL *, const ASN1_TIME *);
++int X509_CRL_set1_nextUpdate(X509_CRL *, const ASN1_TIME *);
++int X509_set1_notBefore(X509 *, const ASN1_TIME *);
++int X509_set1_notAfter(X509 *, const ASN1_TIME *);
+
+ EC_KEY *d2i_EC_PUBKEY_bio(BIO *, EC_KEY **);
+ int i2d_EC_PUBKEY_bio(BIO *, EC_KEY *);
+@@ -299,4 +306,16 @@ int i2d_re_X509_CRL_tbs(X509_CRL *crl, u
+ return i2d_X509_CRL_INFO(crl->crl, pp);
+ }
+ #endif
++
++#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
++#define X509_get_notBefore X509_get0_notBefore
++#define X509_get_notAfter X509_get0_notAfter
++#define X509_set_notBefore X509_set1_notBefore
++#define X509_set_notAfter X509_set1_notAfter
++
++#define X509_CRL_get_lastUpdate X509_CRL_get0_lastUpdate
++#define X509_CRL_get_nextUpdate X509_CRL_get0_nextUpdate
++#define X509_CRL_set_lastUpdate X509_CRL_set1_lastUpdate
++#define X509_CRL_set_nextUpdate X509_CRL_set1_nextUpdate
++#endif
+ """
+--- a/src/cryptography/hazmat/backends/openssl/backend.py
++++ b/src/cryptography/hazmat/backends/openssl/backend.py
+@@ -1128,12 +1128,12 @@ class Backend(object):
+
+ # Set the last update time.
+ last_update = self._create_asn1_time(builder._last_update)
+- res = self._lib.X509_CRL_set_lastUpdate(x509_crl, last_update)
++ res = self._lib.X509_CRL_set1_lastUpdate(x509_crl, last_update)
+ self.openssl_assert(res == 1)
+
+ # Set the next update time.
+ next_update = self._create_asn1_time(builder._next_update)
+- res = self._lib.X509_CRL_set_nextUpdate(x509_crl, next_update)
++ res = self._lib.X509_CRL_set1_nextUpdate(x509_crl, next_update)
+ self.openssl_assert(res == 1)
+
+ # Add extensions.
+--- a/src/cryptography/hazmat/backends/openssl/x509.py
++++ b/src/cryptography/hazmat/backends/openssl/x509.py
+@@ -86,12 +86,12 @@ class _Certificate(object):
+
+ @property
+ def not_valid_before(self):
+- asn1_time = self._backend._lib.X509_getm_notBefore(self._x509)
++ asn1_time = self._backend._lib.X509_get0_notBefore(self._x509)
+ return _parse_asn1_time(self._backend, asn1_time)
+
+ @property
+ def not_valid_after(self):
+- asn1_time = self._backend._lib.X509_getm_notAfter(self._x509)
++ asn1_time = self._backend._lib.X509_get0_notAfter(self._x509)
+ return _parse_asn1_time(self._backend, asn1_time)
+
+ @property
+@@ -277,13 +277,13 @@ class _CertificateRevocationList(object)
+
+ @property
+ def next_update(self):
+- nu = self._backend._lib.X509_CRL_get_nextUpdate(self._x509_crl)
++ nu = self._backend._lib.X509_CRL_get0_nextUpdate(self._x509_crl)
+ self._backend.openssl_assert(nu != self._backend._ffi.NULL)
+ return _parse_asn1_time(self._backend, nu)
+
+ @property
+ def last_update(self):
+- lu = self._backend._lib.X509_CRL_get_lastUpdate(self._x509_crl)
++ lu = self._backend._lib.X509_CRL_get0_lastUpdate(self._x509_crl)
+ self._backend.openssl_assert(lu != self._backend._ffi.NULL)
+ return _parse_asn1_time(self._backend, lu)
+
--- /dev/null
+From 98bf3eda9c950158cf6a0a6a698dd365712201b1 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Mon, 25 Nov 2019 12:06:16 -0800
+Subject: [PATCH 6/7] Add X509_STORE_CTX_trusted_stack compatibility macro
+
+Deprecated in 1.1
+
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ src/_cffi_src/openssl/x509_vfy.py | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+--- a/src/_cffi_src/openssl/x509_vfy.py
++++ b/src/_cffi_src/openssl/x509_vfy.py
+@@ -157,8 +157,12 @@ int X509_STORE_CTX_init(X509_STORE_CTX *
+ Cryptography_STACK_OF_X509 *);
+ void X509_STORE_CTX_trusted_stack(X509_STORE_CTX *,
+ Cryptography_STACK_OF_X509 *);
++void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *,
++ Cryptography_STACK_OF_X509 *);
+ void X509_STORE_CTX_set_cert(X509_STORE_CTX *, X509 *);
+-void X509_STORE_CTX_set_chain(X509_STORE_CTX *,Cryptography_STACK_OF_X509 *);
++void X509_STORE_CTX_set_chain(X509_STORE_CTX *, Cryptography_STACK_OF_X509 *);
++void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *,
++ Cryptography_STACK_OF_X509 *);
+ X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(X509_STORE_CTX *);
+ void X509_STORE_CTX_set0_param(X509_STORE_CTX *, X509_VERIFY_PARAM *);
+ int X509_STORE_CTX_set_default(X509_STORE_CTX *, const char *);
+@@ -260,4 +264,10 @@ static const long Cryptography_HAS_X509_
+ #else
+ static const long Cryptography_HAS_X509_CB_ISSUER_CHECK = 1;
+ #endif
++
++#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
++#define X509_STORE_CTX_trusted_stack X509_STORE_CTX_set0_trusted_stack
++#define X509_STORE_CTX_set_chain X509_STORE_CTX_set0_untrusted
++#define X509_STORE_CTX_get_chain X509_STORE_CTX_get1_chain
++#endif
+ """
--- /dev/null
+From e96af1cee523c5551c7fc5f36eba8e271fa51b20 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Thu, 5 Dec 2019 12:52:13 -0800
+Subject: [PATCH 7/7] Add defines for totally deprecated functions
+
+---
+ src/_cffi_src/openssl/conf.py | 4 ++++
+ src/_cffi_src/openssl/crypto.py | 4 ++++
+ src/_cffi_src/openssl/ecdh.py | 3 +++
+ src/_cffi_src/openssl/ssl.py | 5 +++++
+ 4 files changed, 16 insertions(+)
+
+--- a/src/_cffi_src/openssl/conf.py
++++ b/src/_cffi_src/openssl/conf.py
+@@ -18,4 +18,8 @@ void OPENSSL_no_config(void);
+ """
+
+ CUSTOMIZATIONS = """
++#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
++#define OPENSSL_config(x) 0
++#define OPENSSL_no_config() 0
++#endif
+ """
+--- a/src/_cffi_src/openssl/crypto.py
++++ b/src/_cffi_src/openssl/crypto.py
+@@ -114,4 +114,8 @@ void *Cryptography_realloc_wrapper(void
+ void Cryptography_free_wrapper(void *ptr, const char *path, int line) {
+ free(ptr);
+ }
++
++#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
++#define CRYPTO_get_locking_callback() 0
++#endif
+ """
+--- a/src/_cffi_src/openssl/ecdh.py
++++ b/src/_cffi_src/openssl/ecdh.py
+@@ -18,4 +18,7 @@ long SSL_CTX_set_ecdh_auto(SSL_CTX *, in
+ """
+
+ CUSTOMIZATIONS = """
++#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
++#define SSL_CTX_set_ecdh_auto(a, b) ((b) != 0)
++#endif
+ """
+--- a/src/_cffi_src/openssl/ssl.py
++++ b/src/_cffi_src/openssl/ssl.py
+@@ -739,4 +739,9 @@ long (*SSL_get_max_proto_version)(SSL *)
+ #else
+ static const long Cryptography_HAS_GET_PROTO_VERSION = 1;
+ #endif
++
++#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
++#define SSL_library_init() 1
++#define SSL_load_error_strings() 0
++#endif
+ """
+++ /dev/null
-From 1d97b931bf4701fbd3478d2b788ec4310d9eb8e1 Mon Sep 17 00:00:00 2001
-From: Rosen Penev <rosenp@gmail.com>
-Date: Fri, 7 Jun 2019 18:18:46 -0700
-Subject: [PATCH] Add new ASN1_STRING_get0_data API
-
-Introduced with OpenSSL 1.1
----
- src/_cffi_src/openssl/asn1.py | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
---- a/src/_cffi_src/openssl/asn1.py
-+++ b/src/_cffi_src/openssl/asn1.py
-@@ -45,6 +45,7 @@ void ASN1_OBJECT_free(ASN1_OBJECT *);
-
- /* ASN1 STRING */
- unsigned char *ASN1_STRING_data(ASN1_STRING *);
-+const unsigned char *ASN1_STRING_get0_data(const ASN1_STRING *);
- int ASN1_STRING_set(ASN1_STRING *, const void *, int);
-
- /* ASN1 OCTET STRING */
-@@ -105,4 +106,11 @@ ASN1_NULL *ASN1_NULL_new(void);
- """
-
- CUSTOMIZATIONS = """
-+#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_110 && !CRYPTOGRAPHY_LIBRESSL_27_OR_GREATER
-+#define ASN1_STRING_get0_data ASN1_STRING_data
-+#endif
-+
-+#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
-+#define ASN1_STRING_data ASN1_STRING_get0_data
-+#endif
- """
+++ /dev/null
-From a30684980e8f1f7472d885487880b405608f4122 Mon Sep 17 00:00:00 2001
-From: Rosen Penev <rosenp@gmail.com>
-Date: Fri, 7 Jun 2019 20:42:04 -0700
-Subject: [PATCH] Add compatibility for X509_STORE_set_get_issuer
-
-Deprecated under OpenSSL 1.1.
----
- src/_cffi_src/openssl/x509_vfy.py | 8 ++++++++
- src/cryptography/hazmat/bindings/openssl/_conditional.py | 9 +++++++++
- 2 files changed, 17 insertions(+)
-
---- a/src/_cffi_src/openssl/x509_vfy.py
-+++ b/src/_cffi_src/openssl/x509_vfy.py
-@@ -22,6 +22,7 @@ TYPES = """
- static const long Cryptography_HAS_102_VERIFICATION;
- static const long Cryptography_HAS_110_VERIFICATION_PARAMS;
- static const long Cryptography_HAS_X509_STORE_CTX_GET_ISSUER;
-+static const long Cryptography_HAS_X509_CB_ISSUER_CHECK;
-
- typedef ... Cryptography_STACK_OF_ASN1_OBJECT;
- typedef ... Cryptography_STACK_OF_X509_OBJECT;
-@@ -274,4 +275,11 @@ void (*X509_STORE_set_get_issuer)(X509_S
- #else
- static const long Cryptography_HAS_X509_STORE_CTX_GET_ISSUER = 1;
- #endif
-+
-+#ifndef X509_V_FLAG_CB_ISSUER_CHECK
-+static const long Cryptography_HAS_X509_CB_ISSUER_CHECK = 0;
-+#define X509_V_FLAG_CB_ISSUER_CHECK 0x0
-+#else
-+static const long Cryptography_HAS_X509_CB_ISSUER_CHECK = 1;
-+#endif
- """
---- a/src/cryptography/hazmat/bindings/openssl/_conditional.py
-+++ b/src/cryptography/hazmat/bindings/openssl/_conditional.py
-@@ -291,6 +291,12 @@ def cryptography_has_srtp():
- ]
-
-
-+def cryptography_has_x509_cb_issuer_check():
-+ return [
-+ "X509_V_FLAG_CB_ISSUER_CHECK",
-+ ]
-+
-+
- # This is a mapping of
- # {condition: function-returning-names-dependent-on-that-condition} so we can
- # loop over them and delete unsupported names at runtime. It will be removed
-@@ -342,4 +348,7 @@ CONDITIONAL_NAMES = {
- "Cryptography_HAS_ENGINE": cryptography_has_engine,
- "Cryptography_HAS_VERIFIED_CHAIN": cryptography_has_verified_chain,
- "Cryptography_HAS_SRTP": cryptography_has_srtp,
-+ "Cryptography_HAS_X509_CB_ISSUER_CHECK": (
-+ cryptography_has_x509_cb_issuer_check
-+ ),
- }
+++ /dev/null
-From 3f3b85a59d3c2cb021174ad92ad3a43d9eb73e62 Mon Sep 17 00:00:00 2001
-From: Rosen Penev <rosenp@gmail.com>
-Date: Fri, 7 Jun 2019 21:00:46 -0700
-Subject: [PATCH] Add compatibility for deprecated TLS methods
-
----
- src/_cffi_src/openssl/ssl.py | 45 +++++++++++++++++--
- .../hazmat/bindings/openssl/_conditional.py | 36 +++++++++++++++
- 2 files changed, 77 insertions(+), 4 deletions(-)
-
---- a/src/_cffi_src/openssl/ssl.py
-+++ b/src/_cffi_src/openssl/ssl.py
-@@ -15,8 +15,9 @@ static const long Cryptography_HAS_SSL_S
- static const long Cryptography_HAS_TLS_ST;
- static const long Cryptography_HAS_SSL2;
- static const long Cryptography_HAS_SSL3_METHOD;
--static const long Cryptography_HAS_TLSv1_1;
--static const long Cryptography_HAS_TLSv1_2;
-+static const long Cryptography_HAS_TLS1_METHOD;
-+static const long Cryptography_HAS_TLS1_1_METHOD;
-+static const long Cryptography_HAS_TLS1_2_METHOD;
- static const long Cryptography_HAS_TLSv1_3;
- static const long Cryptography_HAS_SECURE_RENEGOTIATION;
- static const long Cryptography_HAS_TLSEXT_STATUS_REQ_CB;
-@@ -24,6 +25,7 @@ static const long Cryptography_HAS_STATU
- static const long Cryptography_HAS_TLSEXT_STATUS_REQ_TYPE;
- static const long Cryptography_HAS_SSL_CTX_CLEAR_OPTIONS;
- static const long Cryptography_HAS_DTLS;
-+static const long Cryptography_HAS_DTLS1_METHOD;
- static const long Cryptography_HAS_SIGALGS;
- static const long Cryptography_HAS_PSK;
- static const long Cryptography_HAS_CIPHER_DETAILS;
-@@ -596,8 +598,43 @@ static const long Cryptography_HAS_STATU
- static const long Cryptography_HAS_TLSEXT_STATUS_REQ_TYPE = 1;
- static const long Cryptography_HAS_RELEASE_BUFFERS = 1;
- static const long Cryptography_HAS_OP_NO_COMPRESSION = 1;
--static const long Cryptography_HAS_TLSv1_1 = 1;
--static const long Cryptography_HAS_TLSv1_2 = 1;
-+
-+#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
-+static const long Cryptography_HAS_TLS1_METHOD = 0;
-+const SSL_METHOD* (*TLSv1_method)(void) = NULL;
-+const SSL_METHOD* (*TLSv1_server_method)(void) = NULL;
-+const SSL_METHOD* (*TLSv1_client_method)(void) = NULL;
-+#else
-+static const long Cryptography_HAS_TLS1_METHOD = 1;
-+#endif
-+
-+#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
-+static const long Cryptography_HAS_TLS1_1_METHOD = 0;
-+const SSL_METHOD* (*TLSv1_1_method)(void) = NULL;
-+const SSL_METHOD* (*TLSv1_1_server_method)(void) = NULL;
-+const SSL_METHOD* (*TLSv1_1_client_method)(void) = NULL;
-+#else
-+static const long Cryptography_HAS_TLS1_1_METHOD = 1;
-+#endif
-+
-+#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
-+static const long Cryptography_HAS_TLS1_2_METHOD = 0;
-+const SSL_METHOD* (*TLSv1_2_method)(void) = NULL;
-+const SSL_METHOD* (*TLSv1_2_server_method)(void) = NULL;
-+const SSL_METHOD* (*TLSv1_2_client_method)(void) = NULL;
-+#else
-+static const long Cryptography_HAS_TLS1_2_METHOD = 1;
-+#endif
-+
-+#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
-+static const long Cryptography_HAS_DTLS1_METHOD = 0;
-+const SSL_METHOD* (*DTLSv1_method)(void) = NULL;
-+const SSL_METHOD* (*DTLSv1_server_method)(void) = NULL;
-+const SSL_METHOD* (*DTLSv1_client_method)(void) = NULL;
-+#else
-+static const long Cryptography_HAS_DTLS1_METHOD = 1;
-+#endif
-+
- static const long Cryptography_HAS_SSL_OP_MSIE_SSLV2_RSA_PADDING = 1;
- static const long Cryptography_HAS_SSL_OP_NO_TICKET = 1;
- static const long Cryptography_HAS_SSL_SET_SSL_CTX = 1;
---- a/src/cryptography/hazmat/bindings/openssl/_conditional.py
-+++ b/src/cryptography/hazmat/bindings/openssl/_conditional.py
-@@ -33,6 +33,38 @@ def cryptography_has_ssl3_method():
- ]
-
-
-+def cryptography_has_tls1_method():
-+ return [
-+ "TLSv1_method",
-+ "TLSv1_client_method",
-+ "TLSv1_server_method",
-+ ]
-+
-+
-+def cryptography_has_tls1_1_method():
-+ return [
-+ "TLSv1_1_method",
-+ "TLSv1_1_client_method",
-+ "TLSv1_1_server_method",
-+ ]
-+
-+
-+def cryptography_has_tls1_2_method():
-+ return [
-+ "TLSv1_2_method",
-+ "TLSv1_2_client_method",
-+ "TLSv1_2_server_method",
-+ ]
-+
-+
-+def cryptography_has_dtls1_method():
-+ return [
-+ "DTLSv1_method",
-+ "DTLSv1_client_method",
-+ "DTLSv1_server_method",
-+ ]
-+
-+
- def cryptography_has_102_verification():
- return [
- "X509_V_ERR_SUITE_B_INVALID_VERSION",
-@@ -307,6 +339,10 @@ CONDITIONAL_NAMES = {
- "Cryptography_HAS_RSA_OAEP_MD": cryptography_has_rsa_oaep_md,
- "Cryptography_HAS_RSA_OAEP_LABEL": cryptography_has_rsa_oaep_label,
- "Cryptography_HAS_SSL3_METHOD": cryptography_has_ssl3_method,
-+ "Cryptography_HAS_TLS1_METHOD": cryptography_has_tls1_method,
-+ "Cryptography_HAS_TLS1_1_METHOD": cryptography_has_tls1_1_method,
-+ "Cryptography_HAS_TLS1_2_METHOD": cryptography_has_tls1_2_method,
-+ "Cryptography_HAS_DTLS1_METHOD": cryptography_has_dtls1_method,
- "Cryptography_HAS_102_VERIFICATION": cryptography_has_102_verification,
- "Cryptography_HAS_110_VERIFICATION_PARAMS": (
- cryptography_has_110_verification_params
+++ /dev/null
-From 50c1e937342c8b13c8a80c3bb55ce245aecdcdfe Mon Sep 17 00:00:00 2001
-From: Rosen Penev <rosenp@gmail.com>
-Date: Sat, 15 Jun 2019 17:49:25 -0700
-Subject: [PATCH] Replace EVP_CIPHER_CTX_cleanup with EVP_CIPHER_CTX_reset
-
-Deprecated in OpenSSL 1.1
----
- src/_cffi_src/openssl/evp.py | 10 ++++++++++
- src/cryptography/hazmat/backends/openssl/ciphers.py | 2 +-
- 2 files changed, 11 insertions(+), 1 deletion(-)
-
---- a/src/_cffi_src/openssl/evp.py
-+++ b/src/_cffi_src/openssl/evp.py
-@@ -48,6 +48,7 @@ int EVP_CipherUpdate(EVP_CIPHER_CTX *, u
- const unsigned char *, int);
- int EVP_CipherFinal_ex(EVP_CIPHER_CTX *, unsigned char *, int *);
- int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *);
-+int EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *);
- EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void);
- void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *);
- int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *, int);
-@@ -273,4 +274,13 @@ static const long Cryptography_HAS_EVP_D
- #ifndef EVP_PKEY_POLY1305
- #define EVP_PKEY_POLY1305 NID_poly1305
- #endif
-+
-+#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_110 && !CRYPTOGRAPHY_LIBRESSL_27_OR_GREATER
-+#define EVP_CIPHER_CTX_reset EVP_CIPHER_CTX_cleanup
-+#endif
-+
-+#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
-+#define EVP_CIPHER_CTX_cleanup EVP_CIPHER_CTX_reset
-+#define OpenSSL_add_all_algorithms() do {} while(0)
-+#endif
- """
---- a/src/cryptography/hazmat/backends/openssl/ciphers.py
-+++ b/src/cryptography/hazmat/backends/openssl/ciphers.py
-@@ -199,7 +199,7 @@ class _CipherContext(object):
- self._backend.openssl_assert(res != 0)
- self._tag = self._backend._ffi.buffer(tag_buf)[:]
-
-- res = self._backend._lib.EVP_CIPHER_CTX_cleanup(self._ctx)
-+ res = self._backend._lib.EVP_CIPHER_CTX_reset(self._ctx)
- self._backend.openssl_assert(res == 1)
- return self._backend._ffi.buffer(buf)[: outlen[0]]
-
+++ /dev/null
-From 645c30f76bce250772ce4e0b878e7228bd104277 Mon Sep 17 00:00:00 2001
-From: Rosen Penev <rosenp@gmail.com>
-Date: Sat, 15 Jun 2019 18:47:46 -0700
-Subject: [PATCH] Switch get_*Update APIs to get0
-
-Deprecated in 1.1
----
- src/_cffi_src/openssl/x509.py | 34 ++++++++++++++++---
- .../hazmat/backends/openssl/backend.py | 4 +--
- .../hazmat/backends/openssl/x509.py | 8 ++---
- 3 files changed, 36 insertions(+), 10 deletions(-)
-
---- a/src/_cffi_src/openssl/x509.py
-+++ b/src/_cffi_src/openssl/x509.py
-@@ -202,8 +202,10 @@ long X509_get_version(X509 *);
-
- ASN1_TIME *X509_get_notBefore(X509 *);
- ASN1_TIME *X509_get_notAfter(X509 *);
--ASN1_TIME *X509_getm_notBefore(X509 *);
--ASN1_TIME *X509_getm_notAfter(X509 *);
-+ASN1_TIME *X509_getm_notBefore(const X509 *);
-+ASN1_TIME *X509_getm_notAfter(const X509 *);
-+const ASN1_TIME *X509_get0_notBefore(const X509 *);
-+const ASN1_TIME *X509_get0_notAfter(const X509 *);
-
- long X509_REQ_get_version(X509_REQ *);
- X509_NAME *X509_REQ_get_subject_name(X509_REQ *);
-@@ -235,6 +237,8 @@ X509_CRL *sk_X509_CRL_value(Cryptography
- long X509_CRL_get_version(X509_CRL *);
- ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *);
- ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *);
-+const ASN1_TIME *X509_CRL_get0_lastUpdate(const X509_CRL *);
-+const ASN1_TIME *X509_CRL_get0_nextUpdate(const X509_CRL *);
- X509_NAME *X509_CRL_get_issuer(X509_CRL *);
- Cryptography_STACK_OF_X509_REVOKED *X509_CRL_get_REVOKED(X509_CRL *);
-
-@@ -243,8 +247,11 @@ int X509_CRL_set_lastUpdate(X509_CRL *,
- int X509_CRL_set_nextUpdate(X509_CRL *, ASN1_TIME *);
- int X509_set_notBefore(X509 *, ASN1_TIME *);
- int X509_set_notAfter(X509 *, ASN1_TIME *);
--int X509_set1_notBefore(X509 *, ASN1_TIME *);
--int X509_set1_notAfter(X509 *, ASN1_TIME *);
-+
-+int X509_CRL_set1_lastUpdate(X509_CRL *, const ASN1_TIME *);
-+int X509_CRL_set1_nextUpdate(X509_CRL *, const ASN1_TIME *);
-+int X509_set1_notBefore(X509 *, const ASN1_TIME *);
-+int X509_set1_notAfter(X509 *, const ASN1_TIME *);
-
- EC_KEY *d2i_EC_PUBKEY_bio(BIO *, EC_KEY **);
- int i2d_EC_PUBKEY_bio(BIO *, EC_KEY *);
-@@ -339,6 +346,25 @@ const ASN1_INTEGER *X509_REVOKED_get0_se
- #define X509_set1_notAfter X509_set_notAfter
- #define X509_getm_notAfter X509_get_notAfter
- #define X509_getm_notBefore X509_get_notBefore
-+#define X509_get0_notAfter X509_get_notAfter
-+#define X509_get0_notBefore X509_get_notBefore
-+
-+#define X509_CRL_set1_lastUpdate X509_CRL_set_lastUpdate
-+#define X509_CRL_set1_nextUpdate X509_CRL_set_nextUpdate
-+#define X509_CRL_get0_lastUpdate X509_CRL_get_lastUpdate
-+#define X509_CRL_get0_nextUpdate X509_CRL_get_nextUpdate
- #endif
- #endif
-+
-+#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
-+#define X509_set_notBefore X509_set1_notBefore
-+#define X509_set_notAfter X509_set1_notAfter
-+#define X509_get_notAfter X509_get0_notAfter
-+#define X509_get_notBefore X509_get0_notBefore
-+
-+#define X509_CRL_get_lastUpdate X509_CRL_get0_lastUpdate
-+#define X509_CRL_get_nextUpdate X509_CRL_get0_nextUpdate
-+#define X509_CRL_set_lastUpdate X509_CRL_set1_lastUpdate
-+#define X509_CRL_set_nextUpdate X509_CRL_set1_nextUpdate
-+#endif
- """
---- a/src/cryptography/hazmat/backends/openssl/backend.py
-+++ b/src/cryptography/hazmat/backends/openssl/backend.py
-@@ -1127,12 +1127,12 @@ class Backend(object):
-
- # Set the last update time.
- last_update = self._create_asn1_time(builder._last_update)
-- res = self._lib.X509_CRL_set_lastUpdate(x509_crl, last_update)
-+ res = self._lib.X509_CRL_set1_lastUpdate(x509_crl, last_update)
- self.openssl_assert(res == 1)
-
- # Set the next update time.
- next_update = self._create_asn1_time(builder._next_update)
-- res = self._lib.X509_CRL_set_nextUpdate(x509_crl, next_update)
-+ res = self._lib.X509_CRL_set1_nextUpdate(x509_crl, next_update)
- self.openssl_assert(res == 1)
-
- # Add extensions.
---- a/src/cryptography/hazmat/backends/openssl/x509.py
-+++ b/src/cryptography/hazmat/backends/openssl/x509.py
-@@ -86,12 +86,12 @@ class _Certificate(object):
-
- @property
- def not_valid_before(self):
-- asn1_time = self._backend._lib.X509_getm_notBefore(self._x509)
-+ asn1_time = self._backend._lib.X509_get0_notBefore(self._x509)
- return _parse_asn1_time(self._backend, asn1_time)
-
- @property
- def not_valid_after(self):
-- asn1_time = self._backend._lib.X509_getm_notAfter(self._x509)
-+ asn1_time = self._backend._lib.X509_get0_notAfter(self._x509)
- return _parse_asn1_time(self._backend, asn1_time)
-
- @property
-@@ -277,13 +277,13 @@ class _CertificateRevocationList(object)
-
- @property
- def next_update(self):
-- nu = self._backend._lib.X509_CRL_get_nextUpdate(self._x509_crl)
-+ nu = self._backend._lib.X509_CRL_get0_nextUpdate(self._x509_crl)
- self._backend.openssl_assert(nu != self._backend._ffi.NULL)
- return _parse_asn1_time(self._backend, nu)
-
- @property
- def last_update(self):
-- lu = self._backend._lib.X509_CRL_get_lastUpdate(self._x509_crl)
-+ lu = self._backend._lib.X509_CRL_get0_lastUpdate(self._x509_crl)
- self._backend.openssl_assert(lu != self._backend._ffi.NULL)
- return _parse_asn1_time(self._backend, lu)
-
+++ /dev/null
-From 07fb50eecc3a3a50ac543f53f98c285eb1ceeb1e Mon Sep 17 00:00:00 2001
-From: Rosen Penev <rosenp@gmail.com>
-Date: Mon, 25 Nov 2019 12:06:16 -0800
-Subject: [PATCH] Add X509_STORE_CTX_trusted_stack compatibility macro
-
-Deprecated in 1.1
-
-Signed-off-by: Rosen Penev <rosenp@gmail.com>
----
- src/_cffi_src/openssl/x509_vfy.py | 17 ++++++++++++++++-
- 1 file changed, 16 insertions(+), 1 deletion(-)
-
---- a/src/_cffi_src/openssl/x509_vfy.py
-+++ b/src/_cffi_src/openssl/x509_vfy.py
-@@ -157,8 +157,12 @@ int X509_STORE_CTX_init(X509_STORE_CTX *
- Cryptography_STACK_OF_X509 *);
- void X509_STORE_CTX_trusted_stack(X509_STORE_CTX *,
- Cryptography_STACK_OF_X509 *);
-+void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *,
-+ Cryptography_STACK_OF_X509 *);
- void X509_STORE_CTX_set_cert(X509_STORE_CTX *, X509 *);
--void X509_STORE_CTX_set_chain(X509_STORE_CTX *,Cryptography_STACK_OF_X509 *);
-+void X509_STORE_CTX_set_chain(X509_STORE_CTX *, Cryptography_STACK_OF_X509 *);
-+void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *,
-+ Cryptography_STACK_OF_X509 *);
- X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(X509_STORE_CTX *);
- void X509_STORE_CTX_set0_param(X509_STORE_CTX *, X509_VERIFY_PARAM *);
- int X509_STORE_CTX_set_default(X509_STORE_CTX *, const char *);
-@@ -282,4 +286,15 @@ static const long Cryptography_HAS_X509_
- #else
- static const long Cryptography_HAS_X509_CB_ISSUER_CHECK = 1;
- #endif
-+
-+#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_110 && !CRYPTOGRAPHY_IS_LIBRESSL
-+#define X509_STORE_CTX_set0_trusted_stack X509_STORE_CTX_trusted_stack
-+#define X509_STORE_CTX_set0_untrusted X509_STORE_CTX_set_chain
-+#endif
-+
-+#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
-+#define X509_STORE_CTX_trusted_stack X509_STORE_CTX_set0_trusted_stack
-+#define X509_STORE_CTX_set_chain X509_STORE_CTX_set0_untrusted
-+#define X509_STORE_CTX_get_chain X509_STORE_CTX_get1_chain
-+#endif
- """
+++ /dev/null
-From 93317e7835acf40a9b8b0f7af417240b57ab690a Mon Sep 17 00:00:00 2001
-From: Rosen Penev <rosenp@gmail.com>
-Date: Thu, 5 Dec 2019 12:52:13 -0800
-Subject: [PATCH] Add defines for totally deprecated functions
-
----
- src/_cffi_src/openssl/conf.py | 4 ++++
- src/_cffi_src/openssl/crypto.py | 4 ++++
- src/_cffi_src/openssl/ssl.py | 5 +++++
- 3 files changed, 13 insertions(+)
-
---- a/src/_cffi_src/openssl/conf.py
-+++ b/src/_cffi_src/openssl/conf.py
-@@ -18,4 +18,8 @@ void OPENSSL_no_config(void);
- """
-
- CUSTOMIZATIONS = """
-+#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
-+#define OPENSSL_config(x) 0
-+#define OPENSSL_no_config() 0
-+#endif
- """
---- a/src/_cffi_src/openssl/crypto.py
-+++ b/src/_cffi_src/openssl/crypto.py
-@@ -124,4 +124,8 @@ void *Cryptography_realloc_wrapper(void
- void Cryptography_free_wrapper(void *ptr, const char *path, int line) {
- free(ptr);
- }
-+
-+#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
-+#define CRYPTO_get_locking_callback() 0
-+#endif
- """
---- a/src/_cffi_src/openssl/ssl.py
-+++ b/src/_cffi_src/openssl/ssl.py
-@@ -792,4 +792,9 @@ int (*SSL_CTX_set_max_early_data)(SSL_CT
- #else
- static const long Cryptography_HAS_TLSv1_3 = 1;
- #endif
-+
-+#if (OPENSSL_API_COMPAT >= 0x10100000L) && !CRYPTOGRAPHY_IS_LIBRESSL
-+#define SSL_library_init() 1
-+#define SSL_load_error_strings() 0
-+#endif
- """
include $(TOPDIR)/rules.mk
PKG_NAME:=python-idna
-PKG_VERSION:=2.10
+PKG_VERSION:=3.1
PKG_RELEASE:=1
PYPI_NAME:=idna
-PKG_HASH:=b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6
+PKG_HASH:=c5b02147e01ea9920e6b0a3f1f7bb833612d507592c837a6c49552768f4054e1
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE.rst
include $(TOPDIR)/rules.mk
PKG_NAME:=python-lxml
-PKG_VERSION:=4.6.1
+PKG_VERSION:=4.6.2
PKG_RELEASE:=1
PYPI_NAME:=lxml
-PKG_HASH:=c152b2e93b639d1f36ec5a8ca24cde4a8eefb2b6b83668fcd8e83a67badcb367
+PKG_HASH:=cd11c7e8d21af997ee8079037fff88f16fda188a9776eb4b81c7e4c9c0a7d7fc
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSES.txt
include $(TOPDIR)/rules.mk
PKG_NAME:=python-pyopenssl
-PKG_VERSION:=19.1.0
-PKG_RELEASE:=2
+PKG_VERSION:=20.0.1
+PKG_RELEASE:=1
PYPI_NAME:=pyOpenSSL
-PKG_HASH:=9a24494b2602aaf402be5c9e30a0b82d4a5c67528fe8fb475e3f3bc00dd69507
+PKG_HASH:=4c231c759543ba02560fcd2480c48dcec4dae34c9da7d3747c508227e0624b51
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
include $(TOPDIR)/rules.mk
PKG_NAME:=python-requests
-PKG_VERSION:=2.25.0
+PKG_VERSION:=2.25.1
PKG_RELEASE:=1
PKG_MAINTAINER:=Josef Schlehofer <josef.schlehofer@nic.cz>, Alexandru Ardelean <ardeleanalex@gmail.com>
PKG_CPE_ID:=cpe:/a:python-requests:requests
PYPI_NAME:=requests
-PKG_HASH:=7f1a0b932f4a60a1a65caa4263921bb7d9ee911957e0ae4a23a6dd08185ad5f8
+PKG_HASH:=27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804
include ../pypi.mk
include $(INCLUDE_DIR)/package.mk
include $(TOPDIR)/rules.mk
PKG_NAME:=asgiref
-PKG_VERSION:=3.3.0
+PKG_VERSION:=3.3.1
PKG_RELEASE:=1
PYPI_NAME:=asgiref
-PKG_HASH:=cd88907ecaec59d78e4ac00ea665b03e571cb37e3a0e37b3702af1a9e86c365a
+PKG_HASH:=7162a3cb30ab0609f1a4c95938fd73e8604f63bdba516a7f7d64b83ff09478f0
PKG_MAINTAINER:=Peter Stadler <peter.stadler@student.uibk.ac.at>
PKG_LICENSE:=BSD-3-Clause
# Note: keep in sync with setuptools & pip
PYTHON3_VERSION_MAJOR:=3
PYTHON3_VERSION_MINOR:=9
-PYTHON3_VERSION_MICRO:=0
+PYTHON3_VERSION_MICRO:=1
PYTHON3_VERSION:=$(PYTHON3_VERSION_MAJOR).$(PYTHON3_VERSION_MINOR)
PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://www.python.org/ftp/python/$(PKG_VERSION)
-PKG_HASH:=9c73e63c99855709b9be0b3cc9e5b072cb60f37311e8c4e50f15576a0bf82854
+PKG_HASH:=991c3f8ac97992f3d308fefeb03a64db462574eadbff34ce8bc5bb583d9903ff
PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>, Jeffery To <jeffery.to@gmail.com>
PKG_LICENSE:=Python/2.0
EXTRA_CFLAGS+= \
-DNDEBUG -fno-inline
EXTRA_LDFLAGS+= \
- -L$(PKG_BUILD_DIR)
+ -L$(PKG_BUILD_DIR) \
+ -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib
DISABLE_BLUETOOTH:= \
ac_cv_header_bluetooth_bluetooth_h=no \
PKG_NAME:=tcl
TCL_MAJOR_VERSION:=8.6
-PKG_VERSION:=${TCL_MAJOR_VERSION}.9
+PKG_VERSION:=${TCL_MAJOR_VERSION}.10
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)$(PKG_VERSION)-src.tar.gz
PKG_SOURCE_URL:=@SF/$(PKG_NAME)
-PKG_HASH:=ad0cd2de2c87b9ba8086b43957a0de3eb2eb565c7159d5f53ccbba3feb915f4e
+PKG_HASH:=5196dbf6638e3df8d5c87b5815c8c2b758496eb6f0e41446596c9a4e638d87ed
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)$(PKG_VERSION)
+HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/$(PKG_NAME)$(PKG_VERSION)
+
+PKG_MAINTAINER:=Joe Mistachkin <joe@mistachkin.com>
PKG_LICENSE:=TCL
PKG_LICENSE_FILES:=license.terms
-PKG_MAINTAINER:=Joe Mistachkin <joe@mistachkin.com>
PKG_CPE_ID:=cpe:/a:tcl_tk:tcl_tk
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)$(PKG_VERSION)
-HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/$(PKG_NAME)$(PKG_VERSION)
-
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+HOST_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/package.mk
include $(TOPDIR)/rules.mk
PKG_NAME:=vala
-PKG_VERSION:=0.50.0
+PKG_VERSION:=0.50.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GNOME/vala/0.50
-PKG_HASH:=838adc50ac08881e06cf233fefd93740dec1530312cc1cf12c36d4e0e87d3071
+PKG_HASH:=2c0d5dc6d65d070f724063075424c403765ab7935c9e6fbcb84981b94d07ceda
PKG_MAINTAINER:=
PKG_LICENSE:=LGPL-2.1-or-later
PKG_NAME:=apr-util
PKG_VERSION:=1.6.1
-PKG_RELEASE:=6
+PKG_RELEASE:=7
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@APACHE/apr/
$(INSTALL_DIR) $(1)/usr/bin $(1)/usr/include/apr-1 \
$(1)/usr/lib/apr-util-1 $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/bin/apu-1-config $(1)/usr/bin
+ $(SED) '/^prefix=\|^exec_prefix=/s|/usr|$(STAGING_DIR)/usr|' $(1)/usr/bin/apu-1-config
+ $(SED) '/^bindir=/s|/usr|$$$${prefix}|' $(1)/usr/bin/apu-1-config
$(CP) $(PKG_INSTALL_DIR)/usr/include/apr-1/* $(1)/usr/include/apr-1
$(CP) $(PKG_INSTALL_DIR)/usr/lib/apr-util-1/apr_*.{a,so} \
$(1)/usr/lib/apr-util-1 2>/dev/null || :
$(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/apr-util-1.pc \
$(1)/usr/lib/pkgconfig
- $(SED) '/^prefix=\|^exec_prefix=/s|/usr|$(STAGING_DIR)/usr|' \
- $(1)/usr/bin/apu-1-config
+ $(INSTALL_DIR) $(2)/bin
+ $(LN) ../../usr/bin/apu-1-config $(2)/bin/apu-1-config
endef
define Package/libaprutil/install
PKG_NAME:=apr
PKG_VERSION:=1.7.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@APACHE/apr/
$(CP) $(PKG_INSTALL_DIR)/usr/share/build-1/* $(1)/usr/share/build-1
$(SED) '/^prefix=\|^exec_prefix=/s|/usr|$(STAGING_DIR)/usr|' \
$(1)/usr/bin/apr-1-config
+ $(SED) '/^bindir=/s|/usr|$$$${prefix}|' $(1)/usr/bin/apr-1-config
$(SED) '/^datadir=/s|/usr|$$$${prefix}|' $(1)/usr/bin/apr-1-config
+ $(SED) '/^datarootdir=/s|/usr|$$$${prefix}|' $(1)/usr/bin/apr-1-config
$(SED) 's,/usr/share/build-1,$(STAGING_DIR)/usr/share/build-1,g' \
$(1)/usr/share/build-1/apr_rules.mk
+ $(INSTALL_DIR) $(2)/bin
+ $(LN) ../../usr/bin/apr-1-config $(2)/bin/apr-1-config
endef
define Package/libapr/install
include $(TOPDIR)/rules.mk
PKG_NAME:=boost
-PKG_VERSION:=1.74.0
-PKG_SOURCE_VERSION:=1_74_0
-PKG_RELEASE:=6
+PKG_VERSION:=1.75.0
+PKG_SOURCE_VERSION:=1_75_0
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)_$(PKG_SOURCE_VERSION).tar.bz2
PKG_SOURCE_URL:=@SF/$(PKG_NAME)/$(PKG_NAME)/$(PKG_VERSION) https://dl.bintray.com/boostorg/release/$(PKG_VERSION)/source/
-PKG_HASH:=83bfc1507731a0906e387fc28b7ef5417d591429e51e788417fe9ff025e116b1
+PKG_HASH:=953db31e016db7bb207f11432bef7df100516eeb746843fa0486a222e3fd49cb
PKG_MAINTAINER:=Carlos M. Ferreira <carlosmf.pt@gmail.com>
PKG_LICENSE:=BSL-1.0
endef
define Package/boost/description
-This package provides the Boost v1.74.0 libraries.
+This package provides the Boost v1.75.0 libraries.
Boost is a set of free, peer-reviewed, portable C++ source libraries.
This package provides the following run-time libraries:
- graph
- - graph-parallel
- iostreams
+ - json
- locale
- log
- math
- wave
There are many more header-only libraries supported by Boost.
-See more at http://www.boost.org/doc/libs/1_74_0/
+See more at http://www.boost.org/doc/libs/1_75_0/
endef
PKG_BUILD_DEPENDS:=boost/host
$(eval $(call DefineBoostLibrary,filesystem,system))
$(eval $(call DefineBoostLibrary,graph,regex))
$(eval $(call DefineBoostLibrary,iostreams,,,,zlib liblzma libbz2 libzstd))
+$(eval $(call DefineBoostLibrary,json,container))
$(eval $(call DefineBoostLibrary,locale,system chrono thread,,,icu))
$(eval $(call DefineBoostLibrary,log,system chrono date_time thread filesystem regex))
$(eval $(call DefineBoostLibrary,math))
+++ /dev/null
-From 95d82acc57bb7d8bae431f7a6ce0707aac3ef33f Mon Sep 17 00:00:00 2001
-From: Rosen Penev <rosenp@gmail.com>
-Date: Thu, 5 Sep 2019 19:41:13 -0700
-Subject: [PATCH] Use eventfd() function with uClibc
-
-The Boost eventfd code either directly makes the eventfd system call
-using __NR_eventfd (when __GLIBC_MINOR is less than 8), or otherwise
-uses the eventfd() function provided by the C library.
-
-However, since uClibc pretends to be glibc 2.2, the Boost eventfd code
-directly uses the system call. While it works fine on most
-architectures, it doesn't on ARC since __NR_eventfd is not defined on
-this architecture. However, eventfd() is properly implemented.
-
-So, this patch adjusts the logic used by Boost to consider uClibc as a
-C library providing the eventfd() function.
-
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-Signed-off-by: Rosen Penev <rosenp@gmail.com>
----
- a/boost/asio/detail/impl/eventfd_select_interrupter.ipp | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/boost/asio/detail/impl/eventfd_select_interrupter.ipp b/boost/asio/detail/impl/eventfd_select_interrupter.ipp
-index 38d4b2a61..e16cc8b00 100644
---- a/boost/asio/detail/impl/eventfd_select_interrupter.ipp
-+++ b/boost/asio/detail/impl/eventfd_select_interrupter.ipp
-@@ -23,11 +23,11 @@
- #include <sys/stat.h>
- #include <sys/types.h>
- #include <fcntl.h>
--#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
-+#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 2
- # include <asm/unistd.h>
--#else // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
-+#else // __GLIBC__ == 2 && __GLIBC_MINOR__ < 2
- # include <sys/eventfd.h>
--#endif // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
-+#endif // __GLIBC__ == 2 && __GLIBC_MINOR__ < 2
- #include <boost/asio/detail/cstdint.hpp>
- #include <boost/asio/detail/eventfd_select_interrupter.hpp>
- #include <boost/asio/detail/throw_error.hpp>
-@@ -46,14 +46,14 @@ eventfd_select_interrupter::eventfd_select_interrupter()
-
- void eventfd_select_interrupter::open_descriptors()
- {
--#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
-+#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 2
- write_descriptor_ = read_descriptor_ = syscall(__NR_eventfd, 0);
- if (read_descriptor_ != -1)
- {
- ::fcntl(read_descriptor_, F_SETFL, O_NONBLOCK);
- ::fcntl(read_descriptor_, F_SETFD, FD_CLOEXEC);
- }
--#else // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
-+#else // __GLIBC__ == 2 && __GLIBC_MINOR__ < 2
- # if defined(EFD_CLOEXEC) && defined(EFD_NONBLOCK)
- write_descriptor_ = read_descriptor_ =
- ::eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK);
-@@ -70,7 +70,7 @@ void eventfd_select_interrupter::open_descriptors()
- ::fcntl(read_descriptor_, F_SETFD, FD_CLOEXEC);
- }
- }
--#endif // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
-+#endif // __GLIBC__ == 2 && __GLIBC_MINOR__ < 2
-
- if (read_descriptor_ == -1)
- {
--- /dev/null
+# This Makefile is free software, SPDX codes: GPL-2.0-or-later OR MIT
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=cJSON
+PKG_VERSION:=1.7.14
+PKG_RELEASE:=2
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/DaveGamble/cJSON/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=fb50a663eefdc76bafa80c82bc045af13b1363e8f45cec8b442007aef6a41343
+
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+PKG_CPE_ID:=cpe:/a:cjson_project:cjson
+
+CMAKE_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/cJSON
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=Ultralightweight JSON parser in ANSI C
+ URL:=https://github.com/DaveGamble/cJSON
+ MAINTAINER:=Karl Palsson <karlp@etactica.com>
+endef
+
+define Package/cJSON/description
+ Ultralightweight JSON parser in ANSI C.
+cJSON aims to be the dumbest possible parser that you can get your
+job done with. It's a single file of C, and a single header file.
+endef
+
+CMAKE_OPTIONS += -DENABLE_CJSON_TEST=OFF
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libcjson.pc $(1)/usr/lib/pkgconfig
+ $(INSTALL_DIR) $(1)/usr/include/cjson
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/cjson/cJSON.h $(1)/usr/include/cjson
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libcjson.so* $(1)/usr/lib/
+endef
+
+define Package/cJSON/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libcjson.so* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,cJSON))
-DKDB_DEFAULT_RESOLVER=resolver_fm_pb_b \
-DKDB_DEFAULT_STORAGE=ini \
-DENABLE_OPTIMIZATIONS=OFF \
- -DPLUGINS="ALL;-multifile;-simpleini;-internalnotification" \
+ -DPLUGINS="ALL;-gpgme;-internalnotification;-multifile;-simpleini" \
-DIconv_INCLUDE_DIR="$(ICONV_PREFIX)/include" \
-DIconv_LIBRARY="$(ICONV_PREFIX)/lib/libiconv.$(if $(CONFIG_BUILD_NLS),so,a)" \
-DBINDINGS="MAINTAINED;-intercept_env;-intercept_fs;-io_uv;-io_ev;-io_glib"
PKG_NAME:=glib2
PKG_VERSION:=2.66.3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=glib-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GNOME/glib/2.66
--- a/meson.build
+++ b/meson.build
-@@ -94,7 +94,7 @@ installed_tests_template = files('template.test.in')
+@@ -94,7 +94,7 @@ installed_tests_template = files('templa
installed_tests_template_tap = files('template-tap.test.in')
# Don’t build the tests unless we can run them (either natively, in an exe wrapper, or by installing them for later use)
---- a/glib/valgrind.h 2019-12-12 14:53:26.000200499 +0100
-+++ b/glib/valgrind.h 2019-12-12 14:49:45.056163300 +0100
+--- a/glib/valgrind.h
++++ b/glib/valgrind.h
@@ -158,7 +158,7 @@
# define PLAT_s390x_linux 1
#elif defined(__linux__) && defined(__mips__) && (__mips==64)
--- /dev/null
+--- a/meson.build
++++ b/meson.build
+@@ -923,7 +923,7 @@ if host_system == 'windows' and (cc.get_
+ glib_conf.set('HAVE_C99_SNPRINTF', false)
+ glib_conf.set('HAVE_C99_VSNPRINTF', false)
+ glib_conf.set('HAVE_UNIX98_PRINTF', false)
+-elif not cc_can_run and host_system in ['ios', 'darwin']
++elif true
+ # All these are true when compiling natively on macOS, so we should use good
+ # defaults when building for iOS and tvOS.
+ glib_conf.set('HAVE_C99_SNPRINTF', true)
include $(TOPDIR)/rules.mk
PKG_NAME:=gnutls
-PKG_VERSION:=3.6.15
-PKG_RELEASE:=1
+PKG_VERSION:=3.7.0
+PKG_RELEASE:=2
PKG_USE_MIPS16:=0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=https://www.gnupg.org/ftp/gcrypt/gnutls/v3.6
-PKG_HASH:=0ea8c3283de8d8335d7ae338ef27c53a916f15f382753b174c18b45ffd481558
-#PKG_FIXUP:=autoreconf gettext-version
+PKG_SOURCE_URL:=https://www.gnupg.org/ftp/gcrypt/gnutls/v3.7
+PKG_HASH:=49e2a22691d252c9f24a9829b293a8f359095bc5a818351f05f1c0a5188a1df8
+PKG_FIXUP:=autoreconf gettext-version
PKG_MAINTAINER:=Nikos Mavrogiannopoulos <nmav@gnutls.org>
PKG_LICENSE:=LGPL-2.1-or-later
PKG_CPE_ID:=cpe:/a:gnu:gnutls
CONFIG_GNUTLS_SRP \
CONFIG_GNUTLS_TPM \
CONFIG_LIBNETTLE_MINI \
+ CONFIG_PACKAGE_libgnutls-dane \
include $(INCLUDE_DIR)/package.mk
CATEGORY:=Utilities
SUBMENU:=Encryption
TITLE+= (utilities)
- DEPENDS+= +libgnutls
+ DEPENDS+= +libgnutls +PACKAGE_libgnutls-dane:libgnutls-dane
endef
define Package/gnutls-utils/description
DEPENDS+= +libnettle +!LIBNETTLE_MINI:libgmp +GNUTLS_EXT_LIBTASN1:libtasn1 +GNUTLS_PKCS11:p11-kit +GNUTLS_CRYPTODEV:kmod-cryptodev +libatomic
endef
+define Package/libgnutls-dane
+$(call Package/gnutls/Default)
+ TITLE+= (libgnutls-dane library)
+ DEPENDS:= +libgnutls +libunbound
+endef
+
define Package/libgnutls/description
$(call Package/gnutls/Default/description)
This package contains the GnuTLS shared library, needed by other programs.
--disable-seccomp-tests \
--disable-tests \
--disable-valgrind-tests \
- \
- --disable-libdane \
--disable-ssl2-support \
--disable-ssl3-support \
--enable-local-libopts \
CONFIGURE_ARGS += --enable-cryptodev
endif
+ifeq ($(CONFIG_PACKAGE_libgnutls-dane),)
+CONFIGURE_ARGS += --disable-libdane
+endif
+
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include $(1)/usr/lib/pkgconfig
$(CP) \
- $(PKG_INSTALL_DIR)/usr/lib/libgnutls.so* \
+ $(PKG_INSTALL_DIR)/usr/lib/*.so* \
$(1)/usr/lib/
$(CP) \
$(PKG_INSTALL_DIR)/usr/include/gnutls \
$(1)/usr/include/
$(CP) \
- $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/gnutls.pc \
+ $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc \
$(1)/usr/lib/pkgconfig/
endef
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libgnutls.so.* $(1)/usr/lib/
endef
+define Package/libgnutls-dane/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgnutls-dane.so.* $(1)/usr/lib/
+endef
+
$(eval $(call BuildPackage,certtool))
$(eval $(call BuildPackage,gnutls-utils))
$(eval $(call BuildPackage,libgnutls))
+$(eval $(call BuildPackage,libgnutls-dane))
--- /dev/null
+--- a/m4/stdint.m4
++++ b/m4/stdint.m4
+@@ -15,7 +15,7 @@ AC_DEFUN_ONCE([gl_STDINT_H],
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+ AC_REQUIRE([gl_LIMITS_H])
+- AC_REQUIRE([gt_TYPE_WINT_T])
++ AC_REQUIRE([gt_TYPE_WINT_T_GNUTLS])
+
+ dnl For backward compatibility. Some packages may still be testing these
+ dnl macros.
+--- a/m4/vasnprintf.m4
++++ b/m4/vasnprintf.m4
+@@ -33,7 +33,7 @@ AC_DEFUN([gl_REPLACE_VASNPRINTF],
+ AC_DEFUN([gl_PREREQ_PRINTF_ARGS],
+ [
+ AC_REQUIRE([gt_TYPE_WCHAR_T])
+- AC_REQUIRE([gt_TYPE_WINT_T])
++ AC_REQUIRE([gt_TYPE_WINT_T_GNUTLS])
+ ])
+
+ # Prerequisites of lib/printf-parse.h, lib/printf-parse.c.
+@@ -41,7 +41,7 @@ AC_DEFUN([gl_PREREQ_PRINTF_PARSE],
+ [
+ AC_REQUIRE([gl_FEATURES_H])
+ AC_REQUIRE([gt_TYPE_WCHAR_T])
+- AC_REQUIRE([gt_TYPE_WINT_T])
++ AC_REQUIRE([gt_TYPE_WINT_T_GNUTLS])
+ AC_REQUIRE([AC_TYPE_SIZE_T])
+ AC_CHECK_TYPE([ptrdiff_t], ,
+ [AC_DEFINE([ptrdiff_t], [long],
+@@ -55,7 +55,7 @@ AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF],
+ [
+ AC_REQUIRE([AC_FUNC_ALLOCA])
+ AC_REQUIRE([gt_TYPE_WCHAR_T])
+- AC_REQUIRE([gt_TYPE_WINT_T])
++ AC_REQUIRE([gt_TYPE_WINT_T_GNUTLS])
+ AC_CHECK_FUNCS([snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
+ dnl Use the _snprintf function only if it is declared (because on NetBSD it
+ dnl is defined as a weak alias of snprintf; we prefer to use the latter).
+--- a/m4/wchar_t.m4
++++ b/m4/wchar_t.m4
+@@ -8,7 +8,7 @@ dnl From Bruno Haible.
+ dnl Test whether <stddef.h> has the 'wchar_t' type.
+ dnl Prerequisite: AC_PROG_CC
+
+-AC_DEFUN([gt_TYPE_WCHAR_T],
++AC_DEFUN([gt_TYPE_WCHAR_T_GNUTLS],
+ [
+ AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t],
+ [AC_COMPILE_IFELSE(
+--- a/m4/wint_t.m4
++++ b/m4/wint_t.m4
+@@ -9,7 +9,7 @@ dnl Test whether <wchar.h> has the 'wint
+ dnl <wchar.h> or <wctype.h> would, if present, override 'wint_t'.
+ dnl Prerequisite: AC_PROG_CC
+
+-AC_DEFUN([gt_TYPE_WINT_T],
++AC_DEFUN([gt_TYPE_WINT_T_GNUTLS],
+ [
+ AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t],
+ [AC_COMPILE_IFELSE(
+--- a/src/gl/m4/gnulib-comp.m4
++++ b/src/gl/m4/gnulib-comp.m4
+@@ -1061,7 +1061,7 @@ changequote([, ])dnl
+ gl_UNISTD_MODULE_INDICATOR([sleep])
+ AC_CHECK_DECLS_ONCE([alarm])
+ AC_REQUIRE([gt_TYPE_WCHAR_T])
+- AC_REQUIRE([gt_TYPE_WINT_T])
++ AC_REQUIRE([gt_TYPE_WINT_T_GNUTLS])
+ gl_FUNC_STRERROR_R
+ if test $HAVE_DECL_STRERROR_R = 0 || test $REPLACE_STRERROR_R = 1; then
+ AC_LIBOBJ([strerror_r])
PKG_NAME:=google-authenticator-libpam
PKG_VERSION:=1.09
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/google/google-authenticator-libpam/tar.gz/$(PKG_VERSION)?
endef
define Build/InstallDev
- $(INSTALL_DIR) $(1)/lib/security
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/security/* $(1)/lib/security/
+ $(INSTALL_DIR) $(1)/usr/lib/security
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/security/* $(1)/usr/lib/security/
endef
define Package/google-authenticator-libpam/install
PKG_NAME:=gpgme
PKG_VERSION:=1.15.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://gnupg.org/ftp/gcrypt/$(PKG_NAME)
$(INSTALL_DATA) \
$(PKG_INSTALL_DIR)/usr/lib/cmake/Gpgmepp/*.cmake \
$(1)/usr/lib/cmake/Gpgmepp
+
+ $(INSTALL_DIR) $(2)/bin $(1)/usr/bin
+ $(INSTALL_BIN) \
+ $(PKG_INSTALL_DIR)/usr/bin/gpgme-config \
+ $(2)/bin/
+ $(SED) \
+ 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' \
+ $(2)/bin/gpgme-config
+ $(LN) -sf $(STAGING_DIR)/host/bin/gpgme-config $(1)/usr/bin/gpgme-config
endef
define Package/libgpgme/install
PKG_NAME:=icu4c
MAJOR_VERSION:=68
-MINOR_VERSION:=1
+MINOR_VERSION:=2
PKG_VERSION:=$(MAJOR_VERSION).$(MINOR_VERSION)
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(MAJOR_VERSION)_$(MINOR_VERSION)-src.tgz
PKG_SOURCE_URL:=https://github.com/unicode-org/icu/releases/download/release-$(MAJOR_VERSION)-$(MINOR_VERSION)
-PKG_HASH:=a9f2e3d8b4434b8e53878b4308bd1e6ee51c9c7042e2b1a376abefb6fbb29f2d
+PKG_HASH:=c79193dee3907a2199b8296a93b52c5cb74332c26f3d167269487680d479d625
PKG_LICENSE:=ICU
PKG_LICENSE_FILES:=LICENSE
-diff --git a/Makefile.in b/Makefile.in
-index 9db6c52..6aa2273 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -190,7 +190,6 @@ install-icu: $(INSTALLED_BUILT_FILES)
--- a/runConfigureICU
+++ b/runConfigureICU
-@@ -239,8 +239,8 @@
+@@ -239,8 +239,8 @@ case $platform in
THE_COMP="the GNU C++"
CC=gcc; export CC
CXX=g++; export CXX
source/config/mh-linux | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/config/mh-linux b/config/mh-linux
-index 366f0cc..2689aab 100644
--- a/config/mh-linux
+++ b/config/mh-linux
@@ -23,7 +23,7 @@ LD_RPATH= -Wl,-zorigin,-rpath,'$$'ORIGIN
## Compiler switch to embed a library name
# The initial tab in the next line is to prevent icu-config from reading it.
---
-1.7.10.4
-
};
static const UText emptyText = UTEXT_INITIALIZER;
-@@ -584,7 +584,7 @@ utext_setup(UText *ut, int32_t extraSpace, UErrorCode *status) {
+@@ -584,7 +584,7 @@ utext_setup(UText *ut, int32_t extraSpac
// We need to heap-allocate storage for the new UText
int32_t spaceRequired = sizeof(UText);
if (extraSpace > 0) {
include $(TOPDIR)/rules.mk
PKG_NAME:=keyutils
-PKG_VERSION:=1.6.1
-PKG_RELEASE:=2
+PKG_VERSION:=1.6.3
+PKG_RELEASE:=1
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=https://people.redhat.com/dhowells/keyutils/
-PKG_HASH:=c8b15722ae51d95b9ad76cc6d49a4c2cc19b0c60f72f61fb9bf43eea7cbd64ce
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/keyutils.git/snapshot/
+PKG_HASH:=a61d5706136ae4c05bd48f86186bcfdbd88dd8bd5107e3e195c924cfc1b39bb4
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
LICENSE_FILES:=LICENSE.GPL
endef
+define Package/keyutils
+ SECTION:=utils
+ CATEGORY:=Utilities
+ SUBMENU:=Encryption
+ TITLE:=keyutils (request-key and key.dns_resolver)
+ DEPENDS:=+libkeyutils
+ LICENSE:=GPL-2.0-or-later
+ LICENSE_FILES:=LICENSE.GPL
+endef
+
define Package/keyutils/description
Key utilities
endef
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libkeyutils.so.$(ABI_VERSION)* $(1)/usr/lib/
endef
+define Package/keyutils/install
+ $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/keyutils $(1)/etc/request-key.d
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/request-key $(1)/usr/sbin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/key.dns_resolver $(1)/usr/sbin/
+ $(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/request-key.conf $(1)/etc/
+endef
+
define Package/keyctl/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/keyctl $(1)/usr/bin
endef
$(eval $(call BuildPackage,libkeyutils))
+$(eval $(call BuildPackage,keyutils))
$(eval $(call BuildPackage,keyctl))
--- a/Makefile
+++ b/Makefile
-@@ -108,7 +108,7 @@ all: keyctl request-key key.dns_resolver
+@@ -109,7 +109,7 @@ all: keyctl request-key key.dns_resolver
###############################################################################
#RPATH = -Wl,-rpath,$(LIBDIR)
--- a/key.dns_resolver.c
+++ b/key.dns_resolver.c
-@@ -529,12 +529,12 @@ int main(int argc, char *argv[])
+@@ -717,12 +717,12 @@ int main(int argc, char *argv[])
keyend = buf + ktlen + 1;
/* the actual key description follows the last semicolon */
include $(TOPDIR)/rules.mk
PKG_NAME:=libarchive
-PKG_VERSION:=3.4.3
-PKG_RELEASE:=2
+PKG_VERSION:=3.5.0
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://www.libarchive.org/downloads
-PKG_HASH:=0bfc3fd40491768a88af8d9b86bf04a9e95b6d41a94f9292dbc0ec342288c05f
+PKG_HASH:=245bff9d17e78986bf9716eb887e3bc731d7fd8e5d04efebb8bb1e1c39a3a354
PKG_MAINTAINER:=Johannes Morgenroth <morgenroth@ibr.cs.tu-bs.de>
PKG_LICENSE:=BSD-2-Clause
PKG_NAME:=libdaq
PKG_VERSION:=2.2.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE_URL:=https://www.snort.org/downloads/snortplus/
PKG_SOURCE:=daq-$(PKG_VERSION).tar.gz
$(CP) $(PKG_INSTALL_DIR)/usr/lib/daq/* $(STAGING_DIR)/usr/lib/daq/
$(INSTALL_DIR) $(STAGING_DIR)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/daq-modules-config $(STAGING_DIR)/usr/bin/
+ $(SED) 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' $(STAGING_DIR)/usr/bin/daq-modules-config
+ $(INSTALL_DIR) $(2)/bin
+ $(LN) ../../usr/bin/daq-modules-config $(2)/bin/daq-modules-config
endef
define Package/libdaq/install
$(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/lib/daq
$(CP) $(PKG_INSTALL_DIR)/usr/lib/daq/*.so* $(1)/usr/lib/daq/
- $(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/daq-modules-config $(1)/usr/bin/
endef
$(eval $(call BuildPackage,libdaq))
include $(TOPDIR)/rules.mk
PKG_NAME:=libfmt
-PKG_VERSION:=7.1.2
+PKG_VERSION:=7.1.3
PKG_RELEASE:=1
PKG_SOURCE_NAME:=fmt
PKG_SOURCE:=$(PKG_SOURCE_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/fmtlib/$(PKG_SOURCE_NAME)/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=4119a1c34dff91631e1d0a3707428f764f1ea22fe3cd5e70af5b4ccd5513831c
+PKG_HASH:=5cae7072042b3043e12d53d50ef404bbb76949dad1de368d7f993a15c8c05ecc
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_NAME)-$(PKG_VERSION)
PKG_MAINTAINER:=Othmar Truniger <github@truniger.ch>
PKG_NAME:=libftdi
PKG_VERSION:=0.20
-PKG_RELEASE:=6
+PKG_RELEASE:=7
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.intra2net.com/en/developer/libftdi/download/
$(SED) 's,/usr/bin,/usr,g' $(1)/usr/lib/pkgconfig/libftdipp.pc
$(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/libftdipp.pc
$(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/libftdipp.pc
+ $(SED) 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' $(1)/usr/bin/libftdi-config
+ $(INSTALL_DIR) $(2)/bin
+ $(LN) ../../usr/bin/libftdi-config $(2)/bin/libftdi-config
endef
define Package/libftdi/install
PKG_NAME:=libftdi1
PKG_VERSION:=1.5
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://www.intra2net.com/en/developer/libftdi/download/
define Build/InstallDev
$(call Build/InstallDev/cmake,$(1))
- $(SED) 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' $(1)/usr/bin/libftdi1-config
$(SED) 's,/usr/bin,/usr,g' $(1)/usr/lib/pkgconfig/libftdi1.pc
$(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/libftdi1.pc
$(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/libftdi1.pc
$(SED) 's,/usr/bin,/usr,g' $(1)/usr/lib/pkgconfig/libftdipp1.pc
$(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/libftdipp1.pc
$(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/libftdipp1.pc
+ $(SED) 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' $(1)/usr/bin/libftdi1-config
+ $(INSTALL_DIR) $(2)/bin
+ $(LN) ../../usr/bin/libftdi1-config $(2)/bin/libftdi1-config
endef
define Package/libftdi1/install
PKG_NAME:=libgcrypt
PKG_VERSION:=1.8.7
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://www.gnupg.org/ftp/gcrypt/libgcrypt/
$(CP) $(PKG_INSTALL_DIR)/usr/include/gcrypt*.h $(1)/usr/include/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libgcrypt.{la,a,so*} $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/share/aclocal/libgcrypt.m4 $(1)/usr/share/aclocal/
- $(SED) 's,^libdir=\"$$$${exec_prefix}/lib,libdir=\"$(STAGING_DIR)/usr/lib,g' $(1)/usr/bin/libgcrypt-config
- $(SED) 's,^includedir=\"$$$${prefix}/include/,includedir=\"$(STAGING_DIR)/usr/include/,g' $(1)/usr/bin/libgcrypt-config
- ln -sf $(STAGING_DIR)/usr/bin/libgcrypt-config $(2)/bin/
+ $(SED) 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' $(1)/usr/bin/libgcrypt-config
+ $(LN) ../../usr/bin/libgcrypt-config $(2)/bin/libgcrypt-config
endef
define Package/libgcrypt/install
include $(TOPDIR)/rules.mk
PKG_NAME:=libgphoto2
-PKG_VERSION:=2.5.25
-PKG_RELEASE:=2
+PKG_VERSION:=2.5.26
+PKG_RELEASE:=3
PORT_VERSION:=0.12.0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@SF/gphoto
-PKG_HASH:=7c0e98f438c2b128186afe16ce7833a12fa36f87d01467e837b9d27e7a167f3a
+PKG_HASH:=7740fea3cbb78489071cdfec06c07fab528e69e27ac82734eae6a73eaeeabcd4
PKG_MAINTAINER:=Leonardo Medici <leonardo_medici@me.com>
PKG_LICENSE:=LGPL-2.1-or-later
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gphoto2{,-port}-config $(1)/usr/bin/
+ $(SED) 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' $(1)/usr/bin/gphoto2{,-port}-config
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/include/gphoto2 $(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2{,_port}.{a,so*} $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libgphoto2{,_port}.pc $(1)/usr/lib/pkgconfig/
- $(SED) 's,-I$$$${prefix}/include/gphoto2,,g' $(1)/usr/bin/gphoto2{,-port}-config
- $(SED) 's,-I$$$${prefix}/include,,g' $(1)/usr/bin/gphoto2{,-port}-config
# remove annoying recursive symlink
rm -f $(1)/usr/include/gphoto2/gphoto2
+ $(INSTALL_DIR) $(2)/bin
+ $(LN) ../../usr/bin/gphoto2-config $(2)/bin/gphoto2-config
+ $(LN) ../../usr/bin/gphoto2-port-config $(2)/bin/gphoto2-port-config
endef
define Package/libgphoto2/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2{,_port}.so.* $(1)/usr/lib/
- ln -s $(1)/usr/lib/libgphoto2_port.so.12 $(1)/usr/lib/libgphoto2_port.so.10
+ $(LN) libgphoto2_port.so.12 $(1)/usr/lib/libgphoto2_port.so.10
$(INSTALL_DIR) $(1)/usr/lib/libgphoto2
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libgphoto2/print-camera-list $(1)/usr/lib/libgphoto2/print-camera-list
endef
-Index: libgphoto2-2.5.19/configure.ac
-===================================================================
---- libgphoto2-2.5.19.orig/configure.ac
-+++ libgphoto2-2.5.19/configure.ac
-@@ -209,7 +209,6 @@ ALL_LINGUAS="cs da de es eu fr hu it ja
+--- a/configure.ac
++++ b/configure.ac
+@@ -244,7 +244,6 @@ ALL_LINGUAS="cs da de es eu fr hu it ja
GP_GETTEXT_HACK([${PACKAGE}-${LIBGPHOTO2_CURRENT_MIN}],[The gPhoto Team],[${MAIL_GPHOTO_TRANSLATION}])
AM_GNU_GETTEXT_VERSION([0.14.1])
AM_GNU_GETTEXT([external])
-AM_PO_SUBDIRS()
AM_ICONV()
GP_GETTEXT_FLAGS()
-
-Index: libgphoto2-2.5.19/libgphoto2_port/configure.ac
-===================================================================
---- libgphoto2-2.5.19.orig/libgphoto2_port/configure.ac
-+++ libgphoto2-2.5.19/libgphoto2_port/configure.ac
+
+--- a/libgphoto2_port/configure.ac
++++ b/libgphoto2_port/configure.ac
@@ -124,7 +124,6 @@ GP_GETTEXT_HACK([${PACKAGE}-${LIBGPHOTO2
ALL_LINGUAS="cs da de es eu fi fr it ja nl pl pt_BR ru sk sr sv uk vi zh_CN zh_TW"
AM_GNU_GETTEXT_VERSION([0.14.1])
-AM_PO_SUBDIRS()
AM_ICONV()
GP_GETTEXT_FLAGS()
+
-Index: libgphoto2-2.5.19/Makefile.am
-===================================================================
---- libgphoto2-2.5.19.orig/Makefile.am
-+++ libgphoto2-2.5.19/Makefile.am
-@@ -8,7 +8,7 @@ bin_SCRIPTS = gphoto2-config
- EXTRA_DIST = HACKING MAINTAINERS TESTERS installcheck.mk
-
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -9,7 +9,7 @@ EXTRA_DIST = MAINTAINERS TESTERS install
+ EXTRA_DIST += HACKING.md SECURITY.md
+
# Note: @subdirs@ lists all the directories from AC_CONFIG_SUBDIRS()
-SUBDIRS = @subdirs@ libgphoto2 camlibs tests examples po packaging doc gphoto-m4
+SUBDIRS = @subdirs@ libgphoto2 camlibs packaging gphoto-m4
-
+
EXTRA_DIST += libgphoto2.pc.in
pkgconfig_DATA = libgphoto2.pc
-Index: libgphoto2-2.5.19/Makefile.in
-===================================================================
---- libgphoto2-2.5.19.orig/Makefile.in
-+++ libgphoto2-2.5.19/Makefile.in
-@@ -482,7 +482,7 @@ EXTRA_DIST = HACKING MAINTAINERS TESTERS
- INSTALL README.in README README.packaging
-
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -503,7 +503,7 @@ EXTRA_DIST = MAINTAINERS TESTERS install
+ README.packaging
+
# Note: @subdirs@ lists all the directories from AC_CONFIG_SUBDIRS()
-SUBDIRS = @subdirs@ libgphoto2 camlibs tests examples po packaging doc gphoto-m4
+SUBDIRS = @subdirs@ libgphoto2 camlibs packaging gphoto-m4
pkgconfig_DATA = libgphoto2.pc
noinst_DATA = libgphoto2-uninstalled.pc
- doc_DATA = AUTHORS COPYING NEWS ABOUT-NLS ChangeLog README \
-Index: libgphoto2-2.5.19/configure.ac
-===================================================================
---- libgphoto2-2.5.19.orig/configure.ac
-+++ libgphoto2-2.5.19/configure.ac
-@@ -635,20 +635,11 @@ gphoto-m4/Makefile
+ doc_DATA = AUTHORS COPYING NEWS ABOUT-NLS ChangeLog README.md \
+--- a/configure.ac
++++ b/configure.ac
+@@ -706,20 +706,11 @@ gphoto-m4/Makefile
libgphoto2/Makefile
libgphoto2.pc
libgphoto2-uninstalled.pc
],[
dnl This relies on this code being called for each of the above files
dnl with ac_file set to the filename.
-Index: libgphoto2-2.5.19/libgphoto2_port/Makefile.am
-===================================================================
---- libgphoto2-2.5.19.orig/libgphoto2_port/Makefile.am
-+++ libgphoto2-2.5.19/libgphoto2_port/Makefile.am
+--- a/libgphoto2_port/Makefile.am
++++ b/libgphoto2_port/Makefile.am
@@ -25,7 +25,7 @@ udevscript_PROGRAMS =
bin_SCRIPTS = gphoto2-port-config
-
+
# The . stands for the current dir, i.e. the iolibs to build.
-SUBDIRS = po libgphoto2_port test . doc gphoto-m4
+SUBDIRS = libgphoto2_port . gphoto-m4
-
-
+
+
########################################################################
-Index: libgphoto2-2.5.19/libgphoto2_port/Makefile.in
-===================================================================
---- libgphoto2-2.5.19.orig/libgphoto2_port/Makefile.in
-+++ libgphoto2-2.5.19/libgphoto2_port/Makefile.in
-@@ -574,7 +574,7 @@ EXTRA_LTLIBRARIES = disk.la ptpip.la ser
+--- a/libgphoto2_port/Makefile.in
++++ b/libgphoto2_port/Makefile.in
+@@ -581,7 +581,7 @@ EXTRA_LTLIBRARIES = disk.la ptpip.la ser
bin_SCRIPTS = gphoto2-port-config
-
+
# The . stands for the current dir, i.e. the iolibs to build.
-SUBDIRS = po libgphoto2_port test . doc gphoto-m4
+SUBDIRS = libgphoto2_port . gphoto-m4
-
+
########################################################################
# All iolibs are defined as EXTRA_LTLIBRARIES. This requires that
-Index: libgphoto2-2.5.19/libgphoto2_port/configure.ac
-===================================================================
---- libgphoto2-2.5.19.orig/libgphoto2_port/configure.ac
-+++ libgphoto2-2.5.19/libgphoto2_port/configure.ac
-@@ -512,13 +512,10 @@ AC_SUBST([AM_LDFLAGS])
+--- a/libgphoto2_port/configure.ac
++++ b/libgphoto2_port/configure.ac
+@@ -536,13 +536,10 @@ AC_SUBST([AM_LDFLAGS])
# ---------------------------------------------------------------------------
AC_CONFIG_FILES([
Makefile
PKG_NAME:=libimobiledevice
PKG_VERSION:=1.3.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://www.libimobiledevice.org/downloads
--- /dev/null
+From b5d575c118ecfc2afcb12739433e916527182327 Mon Sep 17 00:00:00 2001
+From: Nikias Bassen <nikias@gmx.li>
+Date: Fri, 7 Aug 2020 00:50:46 +0200
+Subject: [PATCH] mobilebackup2: Set DeviceLink version to 400 to support iOS
+ 14b4+
+
+---
+ src/mobilebackup2.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/src/mobilebackup2.c
++++ b/src/mobilebackup2.c
+@@ -30,7 +30,7 @@
+ #include "device_link_service.h"
+ #include "common/debug.h"
+
+-#define MBACKUP2_VERSION_INT1 300
++#define MBACKUP2_VERSION_INT1 400
+ #define MBACKUP2_VERSION_INT2 0
+
+ #define IS_FLAG_SET(x, y) ((x & y) == y)
--- /dev/null
+From d857a83272d921929ae6ccf1fa70d85768840e84 Mon Sep 17 00:00:00 2001
+From: Nikias Bassen <nikias@gmx.li>
+Date: Mon, 10 Aug 2020 15:39:56 +0200
+Subject: [PATCH] screenshotr: Set DeviceLink version to 400 to support iOS
+ 14b4+
+
+---
+ src/screenshotr.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/src/screenshotr.c
++++ b/src/screenshotr.c
+@@ -30,7 +30,7 @@
+ #include "device_link_service.h"
+ #include "common/debug.h"
+
+-#define SCREENSHOTR_VERSION_INT1 300
++#define SCREENSHOTR_VERSION_INT1 400
+ #define SCREENSHOTR_VERSION_INT2 0
+
+ /**
--- /dev/null
+From 98056a89648f431759c5fa4ed87c6ea6ba0cdd3f Mon Sep 17 00:00:00 2001
+From: Nikias Bassen <nikias@gmx.li>
+Date: Thu, 10 Sep 2020 15:12:21 +0200
+Subject: [PATCH] debugserver: Fix service startup for iOS 14b4+
+
+---
+ include/libimobiledevice/debugserver.h | 1 +
+ include/libimobiledevice/lockdown.h | 1 +
+ src/debugserver.c | 11 +++++++++--
+ src/lockdown.c | 5 ++++-
+ 4 files changed, 15 insertions(+), 3 deletions(-)
+
+--- a/include/libimobiledevice/debugserver.h
++++ b/include/libimobiledevice/debugserver.h
+@@ -31,6 +31,7 @@ extern "C" {
+ #include <libimobiledevice/lockdown.h>
+
+ #define DEBUGSERVER_SERVICE_NAME "com.apple.debugserver"
++#define DEBUGSERVER_SECURE_SERVICE_NAME DEBUGSERVER_SERVICE_NAME ".DVTSecureSocketProxy"
+
+ /** Error Codes */
+ typedef enum {
+--- a/include/libimobiledevice/lockdown.h
++++ b/include/libimobiledevice/lockdown.h
+@@ -96,6 +96,7 @@ typedef struct lockdownd_pair_record *lockdownd_pair_record_t;
+ struct lockdownd_service_descriptor {
+ uint16_t port;
+ uint8_t ssl_enabled;
++ char* identifier;
+ };
+ typedef struct lockdownd_service_descriptor *lockdownd_service_descriptor_t;
+
+--- a/src/debugserver.c
++++ b/src/debugserver.c
+@@ -80,7 +80,10 @@ LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_new(idevice_t device
+ debug_info("Creating base service client failed. Error: %i", ret);
+ return ret;
+ }
+- service_disable_bypass_ssl(parent, 1);
++
++ if (service->identifier && (strcmp(service->identifier, DEBUGSERVER_SECURE_SERVICE_NAME) != 0)) {
++ service_disable_bypass_ssl(parent, 1);
++ }
+
+ debugserver_client_t client_loc = (debugserver_client_t) malloc(sizeof(struct debugserver_client_private));
+ client_loc->parent = parent;
+@@ -95,7 +98,11 @@ LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_new(idevice_t device
+ LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_start_service(idevice_t device, debugserver_client_t * client, const char* label)
+ {
+ debugserver_error_t err = DEBUGSERVER_E_UNKNOWN_ERROR;
+- service_client_factory_start_service(device, DEBUGSERVER_SERVICE_NAME, (void**)client, label, SERVICE_CONSTRUCTOR(debugserver_client_new), &err);
++ service_client_factory_start_service(device, DEBUGSERVER_SECURE_SERVICE_NAME, (void**)client, label, SERVICE_CONSTRUCTOR(debugserver_client_new), &err);
++ if (err != DEBUGSERVER_E_SUCCESS) {
++ err = DEBUGSERVER_E_UNKNOWN_ERROR;
++ service_client_factory_start_service(device, DEBUGSERVER_SERVICE_NAME, (void**)client, label, SERVICE_CONSTRUCTOR(debugserver_client_new), &err);
++ }
+ return err;
+ }
+
+--- a/src/lockdown.c
++++ b/src/lockdown.c
+@@ -1307,6 +1307,7 @@ static lockdownd_error_t lockdownd_do_start_service(lockdownd_client_t client, c
+ *service = (lockdownd_service_descriptor_t)malloc(sizeof(struct lockdownd_service_descriptor));
+ (*service)->port = 0;
+ (*service)->ssl_enabled = 0;
++ (*service)->identifier = strdup(identifier);
+
+ /* read service port number */
+ plist_t node = plist_dict_get_item(dict, "Port");
+@@ -1511,8 +1512,10 @@ LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_data_classes_free(char **classe
+
+ LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_service_descriptor_free(lockdownd_service_descriptor_t service)
+ {
+- if (service)
++ if (service) {
++ free(service->identifier);
+ free(service);
++ }
+
+ return LOCKDOWN_E_SUCCESS;
+ }
PKG_VERSION:=2.5.8
PKG_RELEASE:=2
-PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
-
-PKG_LICENSE:=LGPLv2.1
-PKG_LICENSE_FILES:=COPYING.LIB
-PKG_CPE_ID:=cpe:/a:mcrypt:libmcrypt
-
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@SF/mcrypt
PKG_HASH:=bf2f1671f44af88e66477db0982d5ecb5116a5c767b0a0d68acb34499d41b793
-PKG_FIXUP:=autoreconf
+PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
+PKG_LICENSE:=LGPL-2.1-or-later
+PKG_LICENSE_FILES:=COPYING.LIB
+PKG_CPE_ID:=cpe:/a:mcrypt:libmcrypt
+
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
-TARGET_CFLAGS += $(FPIC)
-
define Package/libmcrypt
SECTION:=libs
CATEGORY:=Libraries
together a variety of ciphers for convenient use.
endef
-define Build/Configure
- $(call Build/Configure/Default, \
- --enable-shared \
- --enable-static \
- )
-endef
+CONFIGURE_ARGS += \
+ --enable-shared \
+ --enable-static
+
+TARGET_CFLAGS += $(FPIC)
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libmcrypt.{a,so*} $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/libmcrypt-config $(1)/usr/bin/
- $(SED) 's,-I$$$${prefix}/include,,g' $(1)/usr/bin/libmcrypt-config
- $(SED) 's,-L$$$${exec_prefix}/lib,,g' $(1)/usr/bin/libmcrypt-config
+ $(SED) 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' $(1)/usr/bin/libmcrypt-config
+ $(INSTALL_DIR) $(2)/bin
+ $(LN) ../../usr/bin/libmcrypt-config $(2)/bin/libmcrypt-config
endef
define Package/libmcrypt/install
include $(TOPDIR)/rules.mk
PKG_NAME:=libpam
-PKG_VERSION:=1.5.0
+PKG_VERSION:=1.5.1
PKG_RELEASE:=1
PKG_SOURCE:=Linux-PAM-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://github.com/linux-pam/linux-pam/releases/download/v$(PKG_VERSION)
-PKG_HASH:=02d39854b508fae9dc713f7733bbcdadbe17b50de965aedddd65bcb6cc7852c8
+PKG_HASH:=201d40730b1135b1b3cdea09f2c28ac634d73181ccd0172ceddee3649c5792fc
PKG_BUILD_DIR:=$(BUILD_DIR)/Linux-PAM-$(PKG_VERSION)
PKG_MAINTAINER:=Nikos Mavrogiannopoulos <n.mavrogiannopoulos@gmail.com>
PKG_CPE_ID:=cpe:/a:kernel:linux-pam
PKG_FIXUP:=autoreconf
-PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
--without-xauth
define Build/InstallDev
- $(INSTALL_DIR) $(1)/lib
$(INSTALL_DIR) $(1)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/lib/* $(1)/lib/
+ $(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/* $(1)/usr/lib/
endef
define Package/libpam/install
- $(INSTALL_DIR) $(1)/lib $(1)/lib/security $(1)/lib/security/pam_filter
$(INSTALL_DIR) $(1)/etc $(1)/etc/pam.d
+ $(INSTALL_DIR) $(1)/usr/lib $(1)/usr/lib/security $(1)/usr/lib/security/pam_filter
$(INSTALL_DIR) $(1)/usr/sbin
- $(CP) $(PKG_INSTALL_DIR)/lib/*.so* $(1)/lib/
- $(CP) $(PKG_INSTALL_DIR)/lib/security/*.so* $(1)/lib/security/
- $(CP) $(PKG_INSTALL_DIR)/lib/security/pam_filter/* $(1)/lib/security/pam_filter/
$(CP) $(PKG_INSTALL_DIR)/etc/* $(1)/etc/
$(CP) ./files/* $(1)/etc/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/security/*.so* $(1)/usr/lib/security/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/security/pam_filter/* $(1)/usr/lib/security/pam_filter/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/* $(1)/usr/sbin/
endef
-From 1948dd03d69c1a50e92d7e8868b7d6eabd4873c1 Mon Sep 17 00:00:00 2001
-From: Yousong Zhou <yszhou4tech@gmail.com>
-Date: Wed, 17 Jun 2015 16:11:31 +0800
-Subject: [PATCH 1/7] build: always use /lib instead of /lib64.
-
-* configure.ac: OpenWrt does not use /lib64.
-
-Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
----
- configure.ac | 10 +---------
- 1 file changed, 1 insertion(+), 9 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index fd0e310..306b6e2 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -25,15 +25,7 @@ dnl If we use /usr as prefix, use /etc for config files
+@@ -25,7 +25,7 @@ dnl If we use /usr as prefix, use /etc f
then
sysconfdir="/etc"
fi
- if test ${libdir} = '${exec_prefix}/lib'
-- then
-- case "$host_cpu" in
-- x86_64|ppc64|s390x|sparc64)
-- libdir="/lib64" ;;
-- *)
-- libdir="/lib" ;;
-- esac
-- fi
-+ libdir="/lib"
- if test ${sbindir} = '${exec_prefix}/sbin'
- then
- sbindir="/sbin"
---
-1.7.10.4
-
++ if false
+ then
+ case "$host_cpu" in
+ x86_64|ppc64|s390x|sparc64)
PKG_NAME:=libpng
PKG_VERSION:=1.6.37
-PKG_RELEASE:=7
+PKG_RELEASE:=10
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@SF/libpng
CMAKE_OPTIONS += \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
- -DPNG_BUILD_ZLIB=ON \
+ -DPNG_BUILD_ZLIB=OFF \
-DPNG_SHARED=ON \
-DPNG_STATIC=ON \
+ -DPNG_EXECUTABLES=OFF \
-DPNG_TESTS=OFF \
-DPNG_FRAMEWORK=OFF \
-DPNG_DEBUG=OFF \
-DPNG_HARDWARE_OPTIMIZATIONS=O$(if $(findstring powerpc,$(CONFIG_ARCH))$(findstring mipsel,$(CONFIG_ARCH)),FF,N) \
-Dld-version-script=OFF
-TARGET_LDFLAGS += -lz
-
define Build/InstallDev
$(call Build/InstallDev/cmake,$(1))
- $(SED) \
- 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' \
- $(1)/usr/bin/libpng{,16}-config
+ $(SED) 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' $(1)/usr/bin/libpng{,16}-config
+ $(SED) '/^includedir=/s|/usr|$$$${prefix}|' $(1)/usr/bin/libpng{,16}-config
+ $(SED) '/^libdir=/s|/usr|$$$${prefix}|' $(1)/usr/bin/libpng{,16}-config
$(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/libpng16.pc
$(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/libpng16.pc
$(INSTALL_DIR) $(2)/bin
--- /dev/null
+From 28c0f8895e4ac270b56b5c7e8089dd2417bc4e3c Mon Sep 17 00:00:00 2001
+From: Alex Gaynor <alex.gaynor@gmail.com>
+Date: Sun, 20 May 2018 18:46:32 -0400
+Subject: [PATCH] cmake: Add an option to enable/disable building of
+ executables
+
+Add the CMake option PNG_EXECUTABLES (on by default) in order to
+allow or disallow the building of non-essential executable programs
+associated with libpng.
+
+Contributed-by: Alex Gaynor <alex.gaynor@gmail.com>
+Contributed-by: Cosmin Truta <ctruta@gmail.com>
+Signed-off-by: Cosmin Truta <ctruta@gmail.com>
+---
+ CMakeLists.txt | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -53,7 +53,8 @@ endif()
+ # COMMAND LINE OPTIONS
+ option(PNG_SHARED "Build shared lib" ON)
+ option(PNG_STATIC "Build static lib" ON)
+-option(PNG_TESTS "Build libpng tests" ON)
++option(PNG_EXECUTABLES "Build libpng executables" ON)
++option(PNG_TESTS "Build libpng tests" ON)
+
+ # Many more configuration options could be added here
+ option(PNG_FRAMEWORK "Build OS X framework" OFF)
+@@ -747,7 +748,7 @@ if(PNG_TESTS AND PNG_SHARED)
+ png_add_test(NAME pngimage-full COMMAND pngimage OPTIONS --exhaustive --list-combos --log FILES ${PNGSUITE_PNGS})
+ endif()
+
+-if(PNG_SHARED)
++if(PNG_SHARED AND PNG_EXECUTABLES)
+ add_executable(pngfix ${pngfix_sources})
+ target_link_libraries(pngfix png)
+ set(PNG_BIN_TARGETS pngfix)
--- /dev/null
+From 9f734b13f4ea062af98652c4c7678f667d2d85c7 Mon Sep 17 00:00:00 2001
+From: David Callu <callu.david@gmail.com>
+Date: Thu, 4 Jul 2019 15:15:53 +0200
+Subject: [PATCH] cmake: Use the correct ZLIB_* variable names
+
+ZLIB_LIBRARIES and ZLIB_INCLUDE_DIRS are the official cmake variable
+names.
+---
+ CMakeLists.txt | 15 ++++++++-------
+ 1 file changed, 8 insertions(+), 7 deletions(-)
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -40,7 +40,7 @@ option(PNG_BUILD_ZLIB "Custom zlib Locat
+
+ if(NOT PNG_BUILD_ZLIB)
+ find_package(ZLIB REQUIRED)
+- include_directories(${ZLIB_INCLUDE_DIR})
++ include_directories(${ZLIB_INCLUDE_DIRS})
+ endif()
+
+ if(UNIX AND NOT APPLE AND NOT BEOS AND NOT HAIKU)
+@@ -523,7 +523,7 @@ if(PNG_DEBUG)
+ endif()
+
+ # NOW BUILD OUR TARGET
+-include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${ZLIB_INCLUDE_DIR})
++include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${ZLIB_INCLUDE_DIRS})
+
+ unset(PNG_LIB_TARGETS)
+
+@@ -537,7 +537,7 @@ if(PNG_SHARED)
+ set_target_properties(png PROPERTIES PREFIX "lib")
+ set_target_properties(png PROPERTIES IMPORT_PREFIX "lib")
+ endif()
+- target_link_libraries(png ${ZLIB_LIBRARY} ${M_LIBRARY})
++ target_link_libraries(png ${ZLIB_LIBRARIES} ${M_LIBRARY})
+
+ if(UNIX AND AWK)
+ if(HAVE_LD_VERSION_SCRIPT)
+@@ -572,7 +572,7 @@ if(PNG_STATIC)
+ # msvc does not append 'lib' - do it here to have consistent name
+ set_target_properties(png_static PROPERTIES PREFIX "lib")
+ endif()
+- target_link_libraries(png_static ${ZLIB_LIBRARY} ${M_LIBRARY})
++ target_link_libraries(png_static ${ZLIB_LIBRARIES} ${M_LIBRARY})
+ endif()
+
+ if(PNG_FRAMEWORK)
+@@ -589,7 +589,7 @@ if(PNG_FRAMEWORK)
+ XCODE_ATTRIBUTE_INSTALL_PATH "@rpath"
+ PUBLIC_HEADER "${libpng_public_hdrs}"
+ OUTPUT_NAME png)
+- target_link_libraries(png_framework ${ZLIB_LIBRARY} ${M_LIBRARY})
++ target_link_libraries(png_framework ${ZLIB_LIBRARIES} ${M_LIBRARY})
+ endif()
+
+ if(NOT PNG_LIB_TARGETS)
+@@ -754,7 +754,7 @@ if(PNG_SHARED AND PNG_EXECUTABLES)
+ set(PNG_BIN_TARGETS pngfix)
+
+ add_executable(png-fix-itxt ${png_fix_itxt_sources})
+- target_link_libraries(png-fix-itxt ${ZLIB_LIBRARY} ${M_LIBRARY})
++ target_link_libraries(png-fix-itxt ${ZLIB_LIBRARIES} ${M_LIBRARY})
+ list(APPEND PNG_BIN_TARGETS png-fix-itxt)
+ endif()
+
--- /dev/null
+From dbe3e0c43e549a1602286144d94b0666549b18e6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= <crrodriguez@opensuse.org>
+Date: Mon, 19 Mar 2018 12:41:47 -0300
+Subject: [PATCH] libpng.pc.in: zlib dependency is private
+
+zlib should be injected only when pkgconfig is ran with the --static
+option.
+---
+ libpng.pc.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/libpng.pc.in
++++ b/libpng.pc.in
+@@ -6,7 +6,7 @@ includedir=@includedir@/libpng@PNGLIB_MA
+ Name: libpng
+ Description: Loads and saves PNG files
+ Version: @PNGLIB_VERSION@
+-Requires: zlib
++Requires.private: zlib
+ Libs: -L${libdir} -lpng@PNGLIB_MAJOR@@PNGLIB_MINOR@
+ Libs.private: @LIBS@
+ Cflags: -I${includedir}
set(CMAKE_C_FLAGS @CMAKE_C_FLAGS@)
set(INCDIR "@CMAKE_CURRENT_BINARY_DIR@")
set(PNG_PREFIX "@PNG_PREFIX@")
-@@ -58,7 +59,7 @@ if ("${INPUTEXT}" STREQUAL ".c" AND "${OUTPUTEXT}" STREQUAL ".out")
+@@ -58,7 +59,7 @@ if ("${INPUTEXT}" STREQUAL ".c" AND "${O
set(PNG_PREFIX_DEF "-DPNG_PREFIX=${PNG_PREFIX}")
endif()
--- /dev/null
+menu "Options"
+ depends on PACKAGE_libpqxx
+
+config LIBPQXX_STATIC
+ bool "Build static library"
+ default y
+ help
+ Build static (.a) library
+
+config LIBPQXX_SHARED
+ bool "Build and install shared library"
+ default n
+ help
+ Build and install shared (.so) library
+
+config LIBPQXX_INSTALL_TEST
+ bool "Build and install test suite"
+ default n
+ depends on LIBPQXX_STATIC || LIBPQXX_SHARED
+ help
+ Build and install a test suite against a real server.
+ One can run this suite on a target platform to ensure
+ that the library is built the way it should and operating
+ correctly.
+
+endmenu
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libpqxx
+PKG_VERSION:=7.3.0
+PKG_RELEASE:=1
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/jtv/libpqxx
+PKG_SOURCE_VERSION:=$(PKG_VERSION)
+PKG_MIRROR_HASH:=c176771dbbf02e38b84a8f9bf986a83587e2d86d9e0d2238e2a17a036e865951
+
+CMAKE_INSTALL:=1
+
+PKG_MAINTAINER:=Igor Bezzubchenko <garikello@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/libpqxx
+ SECTION:=libs
+ CATEGORY:=Libraries
+ DEPENDS:=+libpq +libstdcpp
+ TITLE:=PostgreSQL client library (C++ interface)
+ URL:=http://pqxx.org/development/libpqxx
+ SUBMENU:=Database
+endef
+
+define Package/libpqxx/config
+ source "$(SOURCE)/Config.in"
+endef
+
+CMAKE_OPTIONS += \
+ -DBUILD_DOC=OFF \
+ -DBUILD_STATIC_LIBS=O$(if $(CONFIG_LIBPQXX_STATIC),N,FF) \
+ -DBUILD_SHARED_LIBS=O$(if $(CONFIG_LIBPQXX_SHARED),N,FF) \
+ $(if $(CONFIG_LIBPQXX_INSTALL_TEST),\
+ -DINSTALL_TEST=ON -DSKIP_BUILD_TEST=OFF, \
+ -DINSTALL_TEST=OFF -DSKIP_BUILD_TEST=ON \
+ )
+
+define Package/libpqxx/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(if $(CONFIG_LIBPQXX_SHARED), \
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpqxx*.so $(1)/usr/lib/)
+ $(if $(CONFIG_LIBPQXX_INSTALL_TEST), \
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/libpqxx* $(1)/usr/bin/)
+endef
+
+$(eval $(call BuildPackage,libpqxx))
--- /dev/null
+--- a/test/CMakeLists.txt
++++ b/test/CMakeLists.txt
+@@ -14,3 +14,7 @@ add_test(
+ WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
+ COMMAND runner
+ )
++
++if(INSTALL_TEST)
++ install(PROGRAMS runner TYPE BIN RENAME libpqxx-test-runner)
++endif()
include $(TOPDIR)/rules.mk
PKG_NAME:=libtirpc
-PKG_VERSION:=1.2.6
-PKG_RELEASE:=3
+PKG_VERSION:=1.3.1
+PKG_RELEASE:=1
PKG_SOURCE_URL:=@SF/libtirpc
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=4278e9a5181d5af9cd7885322fdecebc444f9a3da87c526e7d47f7a12a37d1cc
+PKG_HASH:=245895caf066bec5e3d4375942c8cb4366adad184c29c618d97f724ea309ee17
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
PKG_LICENSE:=BSD-3-Clause
include $(TOPDIR)/rules.mk
PKG_NAME:=libuhttpd
-PKG_VERSION:=3.4.0
+PKG_VERSION:=3.7.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL=https://github.com/zhaojh329/libuhttpd/releases/download/v$(PKG_VERSION)
-PKG_HASH:=c77a404e2a666dda6c731cee977cfa8c2aa433e167222cbd28dd0c91a5c80570
+PKG_HASH:=d59987098e8ee46c150b3d8268555a9ec3b17b9feee5c4cb140d33148e886899
PKG_MAINTAINER:=Jianhui Zhao <zhaojh329@gmail.com>
PKG_LICENSE:=MIT
Package/libuhttpd-openssl=$(call Package/libuhttpd/Default,openssl,+PACKAGE_libuhttpd-openssl:libopenssl)
Package/libuhttpd-wolfssl=$(call Package/libuhttpd/Default,wolfssl,+PACKAGE_libuhttpd-wolfssl:libwolfssl)
-Package/libuhttpd-mbedtls=$(call Package/libuhttpd/Default,mbedtls,+PACKAGE_libuhttpd-mbedtls:libmbedtls)
+Package/libuhttpd-mbedtls=$(call Package/libuhttpd/Default,mbedtls,+PACKAGE_libuhttpd-mbedtls:libmbedtls +PACKAGE_libuhttpd-mbedtls:zlib)
Package/libuhttpd-nossl=$(call Package/libuhttpd/Default,nossl)
ifeq ($(BUILD_VARIANT),openssl)
PKG_NAME:=libupnp
PKG_VERSION:=1.14.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@SF/pupnp
PKG_LICENSE_FILES:=COPYING
PKG_CPE_ID:=cpe:/a:libupnp_project:libupnp
+PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
PKG_NAME:=libuv
PKG_VERSION:=1.40.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-v$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://dist.libuv.org/dist/v$(PKG_VERSION)/
$(call Build/InstallDev/cmake,$(1))
$(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/libuv.pc
$(SED) 's,/usr/lib,$$$${prefix}/lib,g' $(1)/usr/lib/pkgconfig/libuv.pc
+ $(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/libuv-static.pc
+ $(SED) 's,/usr/lib,$$$${prefix}/lib,g' $(1)/usr/lib/pkgconfig/libuv-static.pc
endef
define Package/libuv/install
include $(TOPDIR)/rules.mk
PKG_NAME:=libvpx
-PKG_VERSION:=1.8.2
+PKG_VERSION:=1.9.0
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://chromium.googlesource.com/webm/libvpx
-PKG_MIRROR_HASH:=51e871a928fe98f14fd08285cb9b64c0d540b36b630ee7d47bc464e909366db7
+PKG_MIRROR_HASH:=0984f8c899b345f6be6f52f5e4888a6d654a45641b7b36de49e1aab22e1ecb58
PKG_SOURCE_VERSION:=v$(PKG_VERSION)
PKG_MAINTAINER:=Luiz Angelo Daros de Luca <luizluca@gmail.com>
include $(TOPDIR)/rules.mk
PKG_NAME:=x264
-PKG_VERSION:=snapshot-20190324-2245
-PKG_RELEASE:=2
+PKG_VERSION:=2020-10-26
+PKG_RELEASE:=1
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=https://download.videolan.org/x264/snapshots/
-PKG_MAINTAINER:=Adrian Panella <ianchi74@outlook.com>
-PKG_HASH:=68010057edaadffc7593933d13084e8d32e041c42b17c089513d88c917f2ad54
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://code.videolan.org/videolan/x264.git
+PKG_SOURCE_VERSION:=4121277b40a667665d4eea1726aefdc55d12d110
+PKG_MIRROR_HASH:=4b4955e8f92d0c4afecbced2cc6414a123085f7472d198b3eeddaa9490b84f60
-PKG_LICENSE:=GPL-2.0
+PKG_MAINTAINER:=Adrian Panella <ianchi74@outlook.com>
+PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING
PKG_INSTALL:=1
PKG_NAME:=libxslt
PKG_VERSION:=1.1.34
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:= \
PKG_LICENSE_FILES:=COPYING
PKG_CPE_ID:=cpe:/a:xmlsoft:libxslt
+PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
HOST_BUILD_DEPENDS:=libxml2/host
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=lzo
+PKG_VERSION:=2.10
+PKG_RELEASE:=4
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://www.oberhumer.com/opensource/lzo/download/
+PKG_HASH:=c0f892943208266f9b6543b3ae308fab6284c5c90e627931446fb49b4221a072
+
+PKG_LICENSE:=GPL-2.0-or-later
+PKG_LICENSE_FILES:=COPYING
+
+PKG_BUILD_PARALLEL:=1
+CMAKE_BINARY_SUBDIR:=openwrt-build
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/liblzo
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=A real-time data compression library
+ URL:=http://www.oberhumer.com/opensource/lzo/
+ ABI_VERSION:=2
+endef
+
+define Package/liblzo/description
+ LZO is a data compression library which is suitable for data de-/compression
+ in real-time. This means it favours speed over compression ratio.
+endef
+
+CMAKE_OPTIONS += \
+ -DENABLE_SHARED=ON \
+ -DENABLE_STATIC=ON \
+ \
+ -DBUILD_TESTING=OFF \
+ -DCMAKE_SKIP_INSTALL_RPATH=ON
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include $(1)/usr/lib $(1)/usr/lib/pkgconfig
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/lzo $(1)/usr/include/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/liblzo2.{a,so*} $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/lzo2.pc $(1)/usr/lib/pkgconfig
+ $(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/lzo2.pc
+ $(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/lzo2.pc
+endef
+
+define Package/liblzo/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/liblzo2.so.* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,liblzo))
PKG_NAME:=neon
PKG_VERSION:=0.31.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://notroj.github.io/neon
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libneon.{a,so*} $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/neon.pc $(1)/usr/lib/pkgconfig/
- $(SED) 's,-I$$$${includedir}/,-I$(STAGING_DIR)/usr/include/,g' $(1)/usr/bin/neon-config
- $(SED) 's,-L$$$${libdir},,g' $(1)/usr/bin/neon-config
+ $(SED) 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' $(1)/usr/bin/neon-config
+ $(INSTALL_DIR) $(2)/bin
+ $(LN) ../../usr/bin/neon-config $(2)/bin/neon-config
endef
define Package/libneon/install
include $(TOPDIR)/rules.mk
PKG_NAME:=nss
-PKG_VERSION:=3.58
+PKG_VERSION:=3.60
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:= \
https://download.cdn.mozilla.net/pub/security/$(PKG_NAME)/releases/NSS_$(subst .,_,$(PKG_VERSION))_RTM/src \
https://archive.mozilla.org/pub/security/$(PKG_NAME)/releases/NSS_$(subst .,_,$(PKG_VERSION))_RTM/src
-PKG_HASH:=9f73cf789b5f109b978e5239551b609b0cafa88d18f0bc8ce3f976cb629353c0
+PKG_HASH:=84abd5575ab874c53ae511bd461e5d0868d1a1b384ee40753154cdd1d590fe3d
PKG_MAINTAINER:=Lucian Cristian <lucian.cristian@gmail.com>
PKG_LICENCE:=MPL-2.0
define Build/InstallDev
$(INSTALL_DIR) \
+ $(2)/bin \
+ $(1)/usr/bin \
$(1)/usr/include/nss \
$(1)/usr/lib \
$(1)/usr/lib/pkgconfig
$(1)/usr/lib/
$(CP) $(PKG_BUILD_DIR)/nss/config/*.pc \
$(1)/usr/lib/pkgconfig/
+ $(CP) $(PKG_BUILD_DIR)/nss/config/nss-config \
+ $(1)/usr/bin/
+ $(SED) 's,^\(prefix\)=.*,\1=$(STAGING_DIR)/usr,g' \
+ $(1)/usr/bin/nss-config
+ $(LN) ../../usr/bin/nss-config \
+ $(2)/bin/
endef
define Package/nss-utils/install
For 3.48, Requires: updated to nspr >= 4.24.
For 3.51.1, Requires: updated to nspr >= 4.25.
-diff -Naurp nss-3.28-orig/nss/Makefile nss-3.28/nss/Makefile
---- nss-3.28-orig/nss/Makefile 2016-12-21 05:56:27.000000000 -0600
-+++ nss-3.28/nss/Makefile 2016-12-26 22:24:52.695146032 -0600
+--- a/nss/Makefile
++++ b/nss/Makefile
@@ -48,7 +48,6 @@ include $(CORE_DEPTH)/coreconf/rules.mk
#######################################################################
$(MAKE) all
$(MAKE) latest
-diff -Naurp nss-3.28-orig/nss/config/Makefile nss-3.28/nss/config/Makefile
---- nss-3.28-orig/nss/config/Makefile 1969-12-31 18:00:00.000000000 -0600
-+++ nss-3.28/nss/config/Makefile 2016-12-26 22:20:40.008205774 -0600
+--- /dev/null
++++ b/nss/config/Makefile
@@ -0,0 +1,40 @@
+CORE_DEPTH = ..
+DEPTH = ..
+
+dummy: all export libs
+
-diff -Naurp nss-3.28-orig/nss/config/nss-config.in nss-3.28/nss/config/nss-config.in
---- nss-3.28-orig/nss/config/nss-config.in 1969-12-31 18:00:00.000000000 -0600
-+++ nss-3.28/nss/config/nss-config.in 2016-12-26 22:20:40.008205774 -0600
+--- /dev/null
++++ b/nss/config/nss-config.in
@@ -0,0 +1,153 @@
+#!/bin/sh
+
+ echo $libdirs
+fi
+
-diff -Naurp nss-3.28-orig/nss/config/nss.pc.in nss-3.28/nss/config/nss.pc.in
---- nss-3.28-orig/nss/config/nss.pc.in 1969-12-31 18:00:00.000000000 -0600
-+++ nss-3.28/nss/config/nss.pc.in 2016-12-26 22:22:53.300694346 -0600
+--- /dev/null
++++ b/nss/config/nss.pc.in
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+Libs: -L@libdir@ -lnss@NSS_MAJOR_VERSION@ -lnssutil@NSS_MAJOR_VERSION@ -lsmime@NSS_MAJOR_VERSION@ -lssl@NSS_MAJOR_VERSION@ -lsoftokn@NSS_MAJOR_VERSION@
+Cflags: -I${includedir}
+
-diff -Naurp nss-3.28-orig/nss/manifest.mn nss-3.28/nss/manifest.mn
---- nss-3.28-orig/nss/manifest.mn 2016-12-21 05:56:27.000000000 -0600
-+++ nss-3.28/nss/manifest.mn 2016-12-26 22:24:12.278991843 -0600
+--- a/nss/manifest.mn
++++ b/nss/manifest.mn
@@ -10,7 +10,7 @@ IMPORTS = nspr20/v4.8 \
RELEASE = nss
-DIRS = coreconf lib cmd cpputil gtests
+DIRS = coreconf lib cmd cpputil config
- lib: coreconf
- cmd: lib
+ HAVE_ALL_TARGET := 1
---- a/nss/coreconf/arch.mk 2019-04-01 22:20:32.470080052 +0300
-+++ b/nss/coreconf/arch.mk 2019-04-01 22:21:01.730987548 +0300
+--- a/nss/coreconf/arch.mk
++++ b/nss/coreconf/arch.mk
@@ -20,13 +20,13 @@
# Macros for getting the OS architecture
#
---- a/nss/lib/dbm/src/dirent.h 2017-10-19 17:15:14.797053528 +0300
-+++ b/nss/lib/dbm/src/dirent.h 2017-10-19 17:15:26.156310432 +0300
+--- a/nss/lib/dbm/src/dirent.h
++++ b/nss/lib/dbm/src/dirent.h
@@ -30,7 +30,7 @@
#define MAXNAMLEN FILENAME_MAX
#endif
#endif
---- a/nss/coreconf/rules.mk 2019-03-31 22:39:06.741609534 +0300
-+++ b/nss/coreconf/rules.mk 2019-03-31 22:36:13.260356949 +0300
-@@ -261,7 +261,7 @@
+--- a/nss/coreconf/rules.mk
++++ b/nss/coreconf/rules.mk
+@@ -176,7 +176,7 @@ $(LIBRARY): $(OBJS) | $$(@D)/d
ifeq (,$(filter-out _WIN%,$(NS_USE_GCC)_$(OS_TARGET)))
$(AR) $(subst /,\\,$(OBJS))
else
endif
$(RANLIB) $@
---- a/nss/coreconf/arch.mk 2019-03-31 23:38:34.374931416 +0300
-+++ b/nss/coreconf/arch.mk 2019-03-31 23:38:44.667236102 +0300
-@@ -334,7 +334,7 @@
+--- a/nss/coreconf/arch.mk
++++ b/nss/coreconf/arch.mk
+@@ -306,7 +306,7 @@ else
OBJDIR_NAME_COMPILER = $(COMPILER_TAG)
endif
OBJDIR_NAME_BASE = $(OS_TARGET)$(OS_RELEASE)$(CPU_TAG)$(OBJDIR_NAME_COMPILER)$(LIBC_TAG)$(IMPL_STRATEGY)$(OBJDIR_TAG)
ifeq (,$(filter-out WIN%,$(OS_TARGET)))
---- a/nss/coreconf/Linux.mk 2019-04-01 10:08:59.129269177 +0300
-+++ b/nss/coreconf/Linux.mk 2019-04-01 10:09:15.557782574 +0300
-@@ -144,7 +144,8 @@
+--- a/nss/coreconf/Linux.mk
++++ b/nss/coreconf/Linux.mk
+@@ -108,11 +108,6 @@ LIBC_TAG = _glibc
+ endif
+
+ ifdef BUILD_OPT
+-ifeq (11,$(ALLOW_OPT_CODE_SIZE)$(OPT_CODE_SIZE))
+- OPTIMIZER = -Os
+-else
+- OPTIMIZER = -O2
+-endif
+ ifdef MOZ_DEBUG_SYMBOLS
+ ifdef MOZ_DEBUG_FLAGS
+ OPTIMIZER += $(MOZ_DEBUG_FLAGS)
+@@ -144,7 +139,8 @@ ifdef USE_PTHREADS
DEFINES += -D_REENTRANT
endif
-+ifndef USE_NATIVE
-DSO_CFLAGS = -fPIC
++ifndef USE_NATIVE
+DSO_CFLAGS = $(fpic)
DSO_LDOPTS = -shared $(ARCHFLAG) -Wl,--gc-sections
# The linker on Red Hat Linux 7.2 and RHEL 2.1 (GNU ld version 2.11.90.0.8)
# incorrectly reports undefined references in the libraries we link with, so
-@@ -154,6 +155,7 @@
+@@ -154,6 +150,7 @@ DSO_LDOPTS = -shared $(ARCHFLAG) -Wl,--
ZDEFS_FLAG = -Wl,-z,defs
DSO_LDOPTS += $(if $(findstring 2.11.90.0.8,$(shell ld -v)),,$(ZDEFS_FLAG))
LDFLAGS += $(ARCHFLAG) -z noexecstack
# On Maemo, we need to use the -rpath-link flag for even the standard system
# library directories.
---- a/nss/coreconf/Linux.mk 2019-04-06 20:25:36.431663894 +0300
-+++ b/nss/coreconf/Linux.mk 2019-04-06 20:26:23.397129525 +0300
-@@ -108,11 +108,6 @@
+@@ -195,7 +192,7 @@ RPATH = -Wl,-rpath,'$$ORIGIN:/opt/sun/pr
endif
-
- ifdef BUILD_OPT
--ifeq (11,$(ALLOW_OPT_CODE_SIZE)$(OPT_CODE_SIZE))
-- OPTIMIZER = -Os
--else
-- OPTIMIZER = -O2
--endif
- ifdef MOZ_DEBUG_SYMBOLS
- ifdef MOZ_DEBUG_FLAGS
- OPTIMIZER += $(MOZ_DEBUG_FLAGS)
-@@ -192,7 +192,7 @@
endif
- endif
-
+
-MKSHLIB = $(CC) $(DSO_LDOPTS) -Wl,-soname -Wl,$(@:$(OBJDIR)/%.so=%.so) $(RPATH)
+MKSHLIB = $(CC) $(DSO_LDOPTS) -Wl,-soname -Wl,$(@:$(OBJDIR)/%.so=%.so) $(RPATH) $(fpic) -Wl,--gc-sections,--as-needed
-
+
ifdef MAPFILE
MKSHLIB += -Wl,--version-script,$(MAPFILE)
---- a/nss/coreconf/UNIX.mk 2019-04-06 20:34:24.284157646 +0300
-+++ b/nss/coreconf/UNIX.mk 2019-04-06 20:34:34.760485327 +0300
-@@ -10,7 +10,6 @@
+--- a/nss/coreconf/UNIX.mk
++++ b/nss/coreconf/UNIX.mk
+@@ -10,7 +10,6 @@ AR = ar cr $@
LDOPTS += -L$(SOURCE_LIB_DIR)
ifdef BUILD_OPT
--- a/nss/lib/sqlite/sqlite3.c
+++ b/nss/lib/sqlite/sqlite3.c
-@@ -39626,7 +39626,8 @@ static int proxyConchLock(unixFile *pFile, uuid_t myHostID, int lockType){
+@@ -39626,7 +39626,8 @@ static int proxyConchLock(unixFile *pFil
if( nTries==1 ){
conchModTime = buf.st_mtimespec;
continue;
}
-@@ -39652,7 +39653,7 @@ static int proxyConchLock(unixFile *pFile, uuid_t myHostID, int lockType){
+@@ -39652,7 +39653,7 @@ static int proxyConchLock(unixFile *pFil
/* don't break the lock on short read or a version mismatch */
return SQLITE_BUSY;
}
--- /dev/null
+--- a/nss/coreconf/nsinstall/nsinstall.c
++++ b/nss/coreconf/nsinstall/nsinstall.c
+@@ -36,8 +36,8 @@ typedef unsigned int mode_t;
+ #undef HAVE_FCHMOD
+ #endif
+
+-#ifdef LINUX
+ #include <getopt.h>
++#ifdef LINUX
+ #endif
+
+ #if defined(SCO) || defined(UNIXWARE) || defined(SNI) || defined(NCR) || defined(NEC)
include $(TOPDIR)/rules.mk
PKG_NAME:=p11-kit
-PKG_VERSION:=0.23.21
+PKG_VERSION:=0.23.22
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://github.com/p11-glue/p11-kit/releases/download/$(PKG_VERSION)
-PKG_HASH:=f1baa493f05ca0d867f06bcb54cbb5cdb28c756db07207b6e18de18a87b10627
+PKG_HASH:=8a8f40153dd5a3f8e7c03e641f8db400133fb2a6a9ab2aee1b6d0cb0495ec6b6
PKG_MAINTAINER:=Nikos Mavrogiannopoulos <n.mavrogiannopoulos@gmail.com>
PKG_LICENSE:=BSD-3-Clause
--- /dev/null
+From 507c394cfcf4edffc5e4450c5d737e545c26b857 Mon Sep 17 00:00:00 2001
+From: Daniel Engberg <daniel.engberg.lists@pyret.net>
+Date: Sat, 12 Dec 2020 18:56:38 +0100
+Subject: [PATCH] p11-kit/lists.c: Add stdint.h to fix compilation
+
+Add stdint.h otherwise compilation fails on FreeBSD 13-CURRENT with "use of undeclared identifier 'SIZE_MAX'"
+
+Signed-off-by: Daniel Engberg <daniel.engberg.lists@pyret.net>
+---
+ p11-kit/lists.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/p11-kit/lists.c b/p11-kit/lists.c
+index 365a6d89..1d9062be 100644
+--- a/p11-kit/lists.c
++++ b/p11-kit/lists.c
+@@ -39,6 +39,7 @@
+
+ #include <assert.h>
+ #include <ctype.h>
++#include <stdint.h>
+ #include <string.h>
+ #include <stdio.h>
+ #include <stdlib.h>
include $(TOPDIR)/rules.mk
PKG_NAME:=pcre2
-PKG_VERSION:=10.35
-PKG_RELEASE:=2
+PKG_VERSION:=10.36
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@SF/pcre/$(PKG_NAME)/$(PKG_VERSION)
-PKG_HASH:=9ccba8e02b0ce78046cdfb52e5c177f0f445e421059e43becca4359c669d4613
+PKG_HASH:=a9ef39278113542968c7c73a31cfcb81aca1faa64690f400b907e8ab6b4a665c
PKG_MAINTAINER:=Shane Peelar <lookatyouhacker@gmail.com>
PKG_LICENSE:=BSD-3-Clause
define Build/InstallDev
$(call Build/InstallDev/cmake,$(1))
- $(SED) \
- 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' \
- $(1)/usr/bin/pcre2-config
+ $(SED) 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' $(1)/usr/bin/pcre2-config
+ $(INSTALL_DIR) $(2)/bin
+ $(LN) ../../usr/bin/pcre2-config $(2)/bin/pcre2-config
endef
define Package/libpcre2/install
include $(TOPDIR)/rules.mk
PKG_NAME:=protobuf
-PKG_VERSION:=3.13.0
-PKG_RELEASE:=1
+PKG_VERSION:=3.14.0
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-cpp-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/google/protobuf/releases/download/v$(PKG_VERSION)
-PKG_HASH:=f8a547dfe143a9f61fadafba47fa6573713a33cb80909307c1502e26e1102298
+PKG_HASH:=50ec5a07c0c55d4ec536dd49021f2e194a26bfdbc531d03d1e9d4d3e27175659
PKG_MAINTAINER:=Ken Keys <kkeys@caida.org>
PKG_LICENSE:=BSD-3-Clause
HOST_BUILD_PARALLEL:=1
PKG_BUILD_PARALLEL:=1
-CMAKE_INSTALL:=1
CMAKE_SOURCE_SUBDIR:=cmake
include $(INCLUDE_DIR)/package.mk
-Index: protobuf-3.13.0/cmake/install.cmake
-===================================================================
---- protobuf-3.13.0.orig/cmake/install.cmake
-+++ protobuf-3.13.0/cmake/install.cmake
+--- a/cmake/install.cmake
++++ b/cmake/install.cmake
@@ -16,8 +16,8 @@ foreach(_library ${_protobuf_libraries})
$<BUILD_INTERFACE:${protobuf_source_dir}/src>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
--- /dev/null
+From db2c4f357432ee18975a69af71f50ed415584829 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp@gmail.com>
+Date: Thu, 17 Dec 2020 20:54:48 -0800
+Subject: [PATCH] remove CMAKE_THREAD_LIBS_INIT from pkgconfig CFLAGS
+
+This is a linker flag and does not belong in CFLAGS.
+
+Fixes an issue with ola and protobuf.
+
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ cmake/protobuf-lite.pc.cmake | 2 +-
+ cmake/protobuf.pc.cmake | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+--- a/cmake/protobuf-lite.pc.cmake
++++ b/cmake/protobuf-lite.pc.cmake
+@@ -7,5 +7,5 @@ Name: Protocol Buffers
+ Description: Google's Data Interchange Format
+ Version: @protobuf_VERSION@
+ Libs: -L${libdir} -lprotobuf-lite @CMAKE_THREAD_LIBS_INIT@
+-Cflags: -I${includedir} @CMAKE_THREAD_LIBS_INIT@
++Cflags: -I${includedir}
+ Conflicts: protobuf
+--- a/cmake/protobuf.pc.cmake
++++ b/cmake/protobuf.pc.cmake
+@@ -7,5 +7,5 @@ Name: Protocol Buffers
+ Description: Google's Data Interchange Format
+ Version: @protobuf_VERSION@
+ Libs: -L${libdir} -lprotobuf @CMAKE_THREAD_LIBS_INIT@
+-Cflags: -I${includedir} @CMAKE_THREAD_LIBS_INIT@
++Cflags: -I${includedir}
+ Conflicts: protobuf-lite
include $(TOPDIR)/rules.mk
PKG_NAME:=pugixml
-PKG_VERSION:=1.10
-PKG_RELEASE:=2
+PKG_VERSION:=1.11.1
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/zeux/pugixml/releases/download/v$(PKG_VERSION)
-PKG_HASH:=55f399fbb470942410d348584dc953bcaec926415d3462f471ef350f29b5870a
+PKG_HASH:=9dce9f0a3756c5ab84ab7466c99972d030021d81d674f5d38b9e30e9a3ec4922
PKG_MAINTAINER:=
PKG_LICENSE:=MIT
include $(TOPDIR)/rules.mk
PKG_NAME:=sbc
-PKG_VERSION:=1.4
-PKG_RELEASE:=2
+PKG_VERSION:=1.5
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/linux/bluetooth/
-PKG_HASH:=518bf46e6bb3dc808a95e1eabad26fdebe8a099c1e781c27ed7fca6c2f4a54c9
+PKG_HASH:=0cbad69823a99e8421fe0700e8cf9eeb8fa0c1ad28e8dbc2182b3353507931d2
PKG_LICENSE:=LGPL-2.1-or-later
PKG_LICENSE_FILES:=COPYING.LIB
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
--- /dev/null
+--- a/sbc/sbc_primitives.c
++++ b/sbc/sbc_primitives.c
+@@ -593,7 +593,9 @@ static int sbc_calc_scalefactors_j(
+
+ static void sbc_init_primitives_x86(struct sbc_encoder_state *state)
+ {
++#ifdef __x86__
+ __builtin_cpu_init();
++#endif
+
+ #ifdef SBC_BUILD_WITH_MMX_SUPPORT
+ if (__builtin_cpu_supports("mmx"))
include $(TOPDIR)/rules.mk
PKG_NAME:=spdlog
-PKG_VERSION:=1.8.1
+PKG_VERSION:=1.8.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/gabime/spdlog/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=5197b3147cfcfaa67dd564db7b878e4a4b3d9f3443801722b3915cdeced656cb
+PKG_HASH:=e20e6bd8f57e866eaf25a5417f0a38a116e537f1a77ac7b5409ca2b180cec0d5
PKG_MAINTAINER:=
PKG_LICENSE:=MIT
PKG_NAME:=taglib
PKG_VERSION:=1.12-beta-1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/taglib/taglib/tar.gz/v$(PKG_VERSION)?
$(SED) '/^prefix=\|^exec_prefix=/s|/usr|$(STAGING_DIR)/usr|' $(1)/usr/bin/taglib-config
$(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/taglib.pc
$(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/taglib.pc
+ $(INSTALL_DIR) $(2)/bin
+ $(LN) ../../usr/bin/taglib-config $(2)/bin/taglib-config
endef
$(eval $(call BuildPackage,taglib))
PKG_NAME:=tcp_wrappers
PKG_VERSION:=7.6
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=ftp://ftp.porcupine.org/pub/security
TARGET_CFLAGS += $(FPIC) -Wall
-ifeq ($(CONFIG_USE_MUSL),)
-TARGET_EXTRA_LIBS:=LIBS=-lnsl
-endif
-
-define Build/Compile
+define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) \
$(TARGET_CONFIGURE_OPTS) \
OPT_CFLAGS="$(TARGET_CFLAGS)" \
tidy all
endef
-define Build/InstallDev
+define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_BUILD_DIR)/tcpd.h $(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/shared/libwrap.so* $(1)/usr/lib/
endef
-define Package/libwrap/install
+define Package/libwrap/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/shared/libwrap.so.* $(1)/usr/lib/
endef
-
+
$(eval $(call BuildPackage,libwrap))
extern char *hosts_allow_table; /* for verification mode redirection */
extern char *hosts_deny_table; /* for verification mode redirection */
extern int hosts_access_verbose; /* for verbose matching mode */
-@@ -92,9 +118,14 @@ extern int resident; /* > 0 if resident process */
+@@ -92,9 +118,14 @@ extern int resident; /* > 0 if residen
*/
#ifdef __STDC__
extern struct request_info *request_init(); /* initialize request */
extern struct request_info *request_set(); /* update request structure */
#endif
-@@ -117,27 +148,31 @@ extern struct request_info *request_set(); /* update request structure */
+@@ -117,27 +148,31 @@ extern struct request_info *request_set(
* host_info structures serve as caches for the lookup results.
*/
or address pattern listed in the named file. The file format is
--- a/tcpd.h
+++ b/tcpd.h
-@@ -93,6 +93,7 @@ extern void refuse __P((struct request_i
+@@ -95,6 +95,7 @@ extern void refuse __P((struct request_i
extern char *xgets __P((char *, int, FILE *)); /* fgets() on steroids */
extern char *split_at __P((char *, int)); /* strchr() and split */
extern unsigned long dot_quad_addr __P((char *)); /* restricted inet_addr() */
-Index: tcp_wrappers_7.6/Makefile
-===================================================================
---- tcp_wrappers_7.6.orig/Makefile
-+++ tcp_wrappers_7.6/Makefile
+--- a/Makefile
++++ b/Makefile
@@ -1,4 +1,4 @@
-GLIBC=$(shell grep -s -c __GLIBC__ /usr/include/features.h)
+GLIBC=$(shell grep -s -c __GLIBC__ ${STAGING_DIR}/usr/include/features.h)
-diff -u tcp_wrappers_7.6.orig/clean_exit.c tcp_wrappers_7.6/clean_exit.c
---- tcp_wrappers_7.6.orig/clean_exit.c 1994-12-29 03:42:20.000000000 +1100
-+++ tcp_wrappers_7.6/clean_exit.c 2017-11-14 22:50:48.000000000 +1100
+--- a/clean_exit.c
++++ b/clean_exit.c
@@ -9,10 +9,11 @@
*/
extern void exit();
-diff -u tcp_wrappers_7.6.orig/diag.c tcp_wrappers_7.6/diag.c
---- tcp_wrappers_7.6.orig/diag.c 1994-12-29 03:42:20.000000000 +1100
-+++ tcp_wrappers_7.6/diag.c 2017-11-14 22:51:09.000000000 +1100
+--- a/diag.c
++++ b/diag.c
@@ -10,7 +10,7 @@
*/
#endif
/* System libraries */
-diff -u tcp_wrappers_7.6.orig/eval.c tcp_wrappers_7.6/eval.c
---- tcp_wrappers_7.6.orig/eval.c 1995-01-31 05:51:46.000000000 +1100
-+++ tcp_wrappers_7.6/eval.c 2017-11-14 22:51:50.000000000 +1100
+--- a/eval.c
++++ b/eval.c
@@ -19,7 +19,7 @@
*/
#endif
/* System libraries. */
-diff -u tcp_wrappers_7.6.orig/fakelog.c tcp_wrappers_7.6/fakelog.c
---- tcp_wrappers_7.6.orig/fakelog.c 1994-12-29 03:42:22.000000000 +1100
-+++ tcp_wrappers_7.6/fakelog.c 2017-11-14 22:52:07.000000000 +1100
+--- a/fakelog.c
++++ b/fakelog.c
@@ -6,7 +6,7 @@
*/
#endif
#include <stdio.h>
-@@ -17,7 +17,7 @@
+@@ -17,7 +17,7 @@ static char sccsid[] = "@(#) fakelog.c 1
/* ARGSUSED */
char *name;
int logopt;
int facility;
-@@ -27,7 +27,7 @@
+@@ -27,7 +27,7 @@ int facility;
/* vsyslog - format one record */
int severity;
char *fmt;
va_list ap;
-@@ -43,7 +43,7 @@
+@@ -43,7 +43,7 @@ va_list ap;
/* VARARGS */
{
va_list ap;
char *fmt;
-@@ -56,7 +56,7 @@
+@@ -56,7 +56,7 @@ VARARGS(syslog, int, severity)
/* closelog - dummy */
{
/* void */
}
-diff -u tcp_wrappers_7.6.orig/fix_options.c tcp_wrappers_7.6/fix_options.c
---- tcp_wrappers_7.6.orig/fix_options.c 2017-11-13 09:29:08.000000000 +1100
-+++ tcp_wrappers_7.6/fix_options.c 2017-11-14 22:52:22.000000000 +1100
+--- a/fix_options.c
++++ b/fix_options.c
@@ -6,7 +6,7 @@
*/
#endif
#include <sys/types.h>
-@@ -29,14 +29,14 @@
+@@ -29,14 +29,14 @@ static char sccsid[] = "@(#) fix_options
/* fix_options - get rid of IP-level socket options */
#else /* __GLIBC__ */
size_t optsize = sizeof(optbuf);
int ipproto;
-diff -u tcp_wrappers_7.6.orig/fromhost.c tcp_wrappers_7.6/fromhost.c
---- tcp_wrappers_7.6.orig/fromhost.c 1994-12-29 03:42:24.000000000 +1100
-+++ tcp_wrappers_7.6/fromhost.c 2017-11-14 22:52:33.000000000 +1100
+--- a/fromhost.c
++++ b/fromhost.c
@@ -11,7 +11,7 @@
*/
#endif
#if defined(TLI) || defined(PTX) || defined(TLI_SEQUENT)
-diff -u tcp_wrappers_7.6.orig/hosts_access.c tcp_wrappers_7.6/hosts_access.c
---- tcp_wrappers_7.6.orig/hosts_access.c 2017-11-13 09:29:25.000000000 +1100
-+++ tcp_wrappers_7.6/hosts_access.c 2017-11-14 22:52:48.000000000 +1100
+--- a/hosts_access.c
++++ b/hosts_access.c
@@ -18,7 +18,7 @@
*/
#endif
/* System libraries. */
-diff -u tcp_wrappers_7.6.orig/hosts_ctl.c tcp_wrappers_7.6/hosts_ctl.c
---- tcp_wrappers_7.6.orig/hosts_ctl.c 1994-12-29 03:42:28.000000000 +1100
-+++ tcp_wrappers_7.6/hosts_ctl.c 2017-11-14 22:53:01.000000000 +1100
+--- a/hosts_ctl.c
++++ b/hosts_ctl.c
@@ -12,7 +12,7 @@
*/
#endif
#include <stdio.h>
-diff -u tcp_wrappers_7.6.orig/inetcf.c tcp_wrappers_7.6/inetcf.c
---- tcp_wrappers_7.6.orig/inetcf.c 1997-02-12 12:13:24.000000000 +1100
-+++ tcp_wrappers_7.6/inetcf.c 2017-11-14 22:53:11.000000000 +1100
+--- a/inetcf.c
++++ b/inetcf.c
@@ -6,7 +6,7 @@
*/
#endif
#include <sys/types.h>
-@@ -14,6 +14,7 @@
+@@ -14,6 +14,7 @@ static char sccsid[] = "@(#) inetcf.c 1.
#include <stdio.h>
#include <errno.h>
#include <string.h>
extern int errno;
extern void exit();
-@@ -21,6 +22,8 @@
+@@ -21,6 +22,8 @@ extern void exit();
#include "tcpd.h"
#include "inetcf.h"
/*
* Network configuration files may live in unusual places. Here are some
* guesses. Shorter names follow longer ones.
-diff -u tcp_wrappers_7.6.orig/misc.c tcp_wrappers_7.6/misc.c
---- tcp_wrappers_7.6.orig/misc.c 2017-11-13 09:29:25.000000000 +1100
-+++ tcp_wrappers_7.6/misc.c 2017-11-14 22:53:23.000000000 +1100
+--- a/misc.c
++++ b/misc.c
@@ -5,7 +5,7 @@
*/
#endif
#include <sys/types.h>
-diff -u tcp_wrappers_7.6.orig/myvsyslog.c tcp_wrappers_7.6/myvsyslog.c
---- tcp_wrappers_7.6.orig/myvsyslog.c 1994-12-29 03:42:34.000000000 +1100
-+++ tcp_wrappers_7.6/myvsyslog.c 2017-11-14 22:53:35.000000000 +1100
+--- a/myvsyslog.c
++++ b/myvsyslog.c
@@ -8,7 +8,7 @@
*/
#endif
#ifdef vsyslog
-diff -u tcp_wrappers_7.6.orig/options.c tcp_wrappers_7.6/options.c
---- tcp_wrappers_7.6.orig/options.c 2017-11-13 09:29:08.000000000 +1100
-+++ tcp_wrappers_7.6/options.c 2017-11-14 22:53:50.000000000 +1100
+--- a/options.c
++++ b/options.c
@@ -29,7 +29,7 @@
*/
#endif
/* System libraries. */
-@@ -47,6 +47,8 @@
+@@ -47,6 +47,8 @@ static char sccsid[] = "@(#) options.c 1
#include <ctype.h>
#include <setjmp.h>
#include <string.h>
#ifndef MAXPATHNAMELEN
#define MAXPATHNAMELEN BUFSIZ
-@@ -108,21 +110,21 @@
+@@ -108,21 +110,21 @@ struct option {
/* List of known keywords. Add yours here. */
static struct option option_table[] = {
};
/* process_options - process access control options */
-@@ -447,88 +449,88 @@
+@@ -447,88 +449,88 @@ struct syslog_names {
static struct syslog_names log_fac[] = {
#ifdef LOG_KERN
};
/* severity_map - lookup facility or severity value */
-@@ -589,7 +591,7 @@
+@@ -589,7 +591,7 @@ char *string;
if (src[0] == 0)
return (0);
if (ch == ':') {
if (*++src == 0)
tcpd_warn("rule ends in \":\"");
-diff -u tcp_wrappers_7.6.orig/patchlevel.h tcp_wrappers_7.6/patchlevel.h
---- tcp_wrappers_7.6.orig/patchlevel.h 1997-03-22 05:27:24.000000000 +1100
-+++ tcp_wrappers_7.6/patchlevel.h 2017-11-14 22:54:15.000000000 +1100
+--- a/patchlevel.h
++++ b/patchlevel.h
@@ -1,3 +1,3 @@
#ifndef lint
-static char patchlevel[] = "@(#) patchlevel 7.6 97/03/21 19:27:23";
+static char patchlevel[] __attribute__((__unused__)) = "@(#) patchlevel 7.6 97/03/21 19:27:23";
#endif
-diff -u tcp_wrappers_7.6.orig/percent_m.c tcp_wrappers_7.6/percent_m.c
---- tcp_wrappers_7.6.orig/percent_m.c 2017-11-13 09:29:08.000000000 +1100
-+++ tcp_wrappers_7.6/percent_m.c 2017-11-14 22:54:31.000000000 +1100
+--- a/percent_m.c
++++ b/percent_m.c
@@ -5,7 +5,7 @@
*/
#endif
#include <stdio.h>
-@@ -27,7 +27,7 @@
+@@ -27,7 +27,7 @@ char *ibuf;
char *bp = obuf;
char *cp = ibuf;
if (*cp == '%' && cp[1] == 'm') {
#ifdef HAVE_STRERROR
strcpy(bp, strerror(errno));
-diff -u tcp_wrappers_7.6.orig/percent_x.c tcp_wrappers_7.6/percent_x.c
---- tcp_wrappers_7.6.orig/percent_x.c 1994-12-29 03:42:38.000000000 +1100
-+++ tcp_wrappers_7.6/percent_x.c 2017-11-14 22:54:40.000000000 +1100
+--- a/percent_x.c
++++ b/percent_x.c
@@ -11,7 +11,7 @@
*/
#endif
/* System libraries. */
-@@ -19,6 +19,7 @@
+@@ -19,6 +19,7 @@ static char sccsid[] = "@(#) percent_x.c
#include <stdio.h>
#include <syslog.h>
#include <string.h>
extern void exit();
-diff -u tcp_wrappers_7.6.orig/refuse.c tcp_wrappers_7.6/refuse.c
---- tcp_wrappers_7.6.orig/refuse.c 1994-12-29 03:42:40.000000000 +1100
-+++ tcp_wrappers_7.6/refuse.c 2017-11-14 22:54:50.000000000 +1100
+--- a/refuse.c
++++ b/refuse.c
@@ -8,7 +8,7 @@
*/
#endif
/* System libraries. */
-diff -u tcp_wrappers_7.6.orig/rfc931.c tcp_wrappers_7.6/rfc931.c
---- tcp_wrappers_7.6.orig/rfc931.c 2017-11-13 09:29:08.000000000 +1100
-+++ tcp_wrappers_7.6/rfc931.c 2017-11-14 22:54:58.000000000 +1100
+--- a/rfc931.c
++++ b/rfc931.c
@@ -10,7 +10,7 @@
*/
#endif
/* System libraries. */
-@@ -23,6 +23,7 @@
+@@ -23,6 +23,7 @@ static char sccsid[] = "@(#) rfc931.c 1.
#include <setjmp.h>
#include <signal.h>
#include <string.h>
/* Local stuff. */
-@@ -152,7 +153,7 @@
+@@ -152,7 +153,7 @@ char *dest;
* protocol, not part of the data.
*/
*cp = 0;
result = user;
}
-diff -u tcp_wrappers_7.6.orig/safe_finger.c tcp_wrappers_7.6/safe_finger.c
---- tcp_wrappers_7.6.orig/safe_finger.c 2017-11-13 09:29:08.000000000 +1100
-+++ tcp_wrappers_7.6/safe_finger.c 2017-11-14 22:55:08.000000000 +1100
+--- a/safe_finger.c
++++ b/safe_finger.c
@@ -15,7 +15,7 @@
*/
#endif
/* System libraries */
-@@ -27,6 +27,10 @@
+@@ -27,6 +27,10 @@ static char sccsid[] = "@(#) safe_finger
#include <ctype.h>
#include <pwd.h>
#include <syslog.h>
extern void exit();
-@@ -45,6 +49,8 @@
+@@ -45,6 +49,8 @@ int finger_pid;
int allow_severity = SEVERITY;
int deny_severity = LOG_WARNING;
void cleanup(sig)
int sig;
{
-@@ -52,7 +58,7 @@
+@@ -52,7 +58,7 @@ int sig;
exit(0);
}
int argc;
char **argv;
{
-diff -u tcp_wrappers_7.6.orig/scaffold.c tcp_wrappers_7.6/scaffold.c
---- tcp_wrappers_7.6.orig/scaffold.c 2017-11-13 09:29:21.000000000 +1100
-+++ tcp_wrappers_7.6/scaffold.c 2017-11-14 22:55:32.000000000 +1100
+--- a/scaffold.c
++++ b/scaffold.c
@@ -5,7 +5,7 @@
*/
#endif
/* System libraries. */
-diff -u tcp_wrappers_7.6.orig/shell_cmd.c tcp_wrappers_7.6/shell_cmd.c
---- tcp_wrappers_7.6.orig/shell_cmd.c 1994-12-29 03:42:44.000000000 +1100
-+++ tcp_wrappers_7.6/shell_cmd.c 2017-11-14 22:55:45.000000000 +1100
+--- a/shell_cmd.c
++++ b/shell_cmd.c
@@ -9,7 +9,7 @@
*/
#endif
/* System libraries. */
-@@ -20,6 +20,9 @@
+@@ -20,6 +20,9 @@ static char sccsid[] = "@(#) shell_cmd.c
#include <stdio.h>
#include <syslog.h>
#include <string.h>
extern void exit();
-diff -u tcp_wrappers_7.6.orig/socket.c tcp_wrappers_7.6/socket.c
---- tcp_wrappers_7.6.orig/socket.c 2017-11-13 09:29:08.000000000 +1100
-+++ tcp_wrappers_7.6/socket.c 2017-11-14 22:55:57.000000000 +1100
+--- a/socket.c
++++ b/socket.c
@@ -16,7 +16,7 @@
*/
#endif
/* System libraries. */
-@@ -77,7 +77,7 @@
+@@ -77,7 +77,7 @@ struct request_info *request;
static struct sockaddr_in client;
static struct sockaddr_in server;
#if !defined (__GLIBC__)
#else /* __GLIBC__ */
size_t len;
#endif /* __GLIBC__ */
-@@ -229,7 +229,7 @@
+@@ -229,7 +229,7 @@ int fd;
char buf[BUFSIZ];
struct sockaddr_in sin;
#if !defined(__GLIBC__)
#else /* __GLIBC__ */
size_t size = sizeof(sin);
#endif /* __GLIBC__ */
-diff -u tcp_wrappers_7.6.orig/tcpd.c tcp_wrappers_7.6/tcpd.c
---- tcp_wrappers_7.6.orig/tcpd.c 1996-02-12 03:01:33.000000000 +1100
-+++ tcp_wrappers_7.6/tcpd.c 2017-11-14 22:56:09.000000000 +1100
+--- a/tcpd.c
++++ b/tcpd.c
@@ -11,7 +11,7 @@
*/
#endif
/* System libraries. */
-@@ -24,6 +24,7 @@
+@@ -24,6 +24,7 @@ static char sccsid[] = "@(#) tcpd.c 1.10
#include <stdio.h>
#include <syslog.h>
#include <string.h>
#ifndef MAXPATHNAMELEN
#define MAXPATHNAMELEN BUFSIZ
-@@ -38,10 +39,12 @@
+@@ -38,10 +39,12 @@ static char sccsid[] = "@(#) tcpd.c 1.10
#include "patchlevel.h"
#include "tcpd.h"
int argc;
char **argv;
{
-diff -u tcp_wrappers_7.6.orig/tcpd.h tcp_wrappers_7.6/tcpd.h
---- tcp_wrappers_7.6.orig/tcpd.h 2017-11-13 09:29:25.000000000 +1100
-+++ tcp_wrappers_7.6/tcpd.h 2017-11-14 22:36:40.000000000 +1100
-@@ -182,10 +182,10 @@
+--- a/tcpd.h
++++ b/tcpd.h
+@@ -184,10 +184,10 @@ extern void tli_host __P((struct request
#ifdef __STDC__
extern void tcpd_warn(char *, ...); /* report problem and proceed */
#endif
struct tcpd_context {
-diff -u tcp_wrappers_7.6.orig/tcpdchk.c tcp_wrappers_7.6/tcpdchk.c
---- tcp_wrappers_7.6.orig/tcpdchk.c 2017-11-13 09:29:08.000000000 +1100
-+++ tcp_wrappers_7.6/tcpdchk.c 2017-11-14 22:56:21.000000000 +1100
+--- a/tcpdchk.c
++++ b/tcpdchk.c
@@ -15,7 +15,7 @@
*/
#endif
/* System libraries. */
-@@ -30,6 +30,7 @@
+@@ -30,6 +30,7 @@ static char sccsid[] = "@(#) tcpdchk.c 1
#include <errno.h>
#include <netdb.h>
#include <string.h>
extern int errno;
extern void exit();
-@@ -199,13 +200,15 @@
+@@ -199,13 +200,15 @@ struct request_info *request;
char sv_list[BUFLEN]; /* becomes list of daemons */
char *cl_list; /* becomes list of requests */
char *sh_cmd; /* becomes optional shell command */
tcpd_context.file = table;
tcpd_context.line = 0;
while (xgets(sv_list, sizeof(sv_list), fp)) {
-@@ -331,7 +334,7 @@
+@@ -331,7 +334,7 @@ char *list;
clients = 0;
} else {
clients++;
check_user(cp);
check_host(host);
} else {
-@@ -446,7 +449,7 @@
+@@ -446,7 +449,7 @@ char *pat;
} else if (errno != ENOENT) {
tcpd_warn("open %s: %m", pat);
}
if (dot_quad_addr(pat) == INADDR_NONE
|| dot_quad_addr(mask) == INADDR_NONE)
tcpd_warn("%s/%s: bad net/mask pattern", pat, mask);
-diff -u tcp_wrappers_7.6.orig/tcpdmatch.c tcp_wrappers_7.6/tcpdmatch.c
---- tcp_wrappers_7.6.orig/tcpdmatch.c 1996-02-12 03:01:36.000000000 +1100
-+++ tcp_wrappers_7.6/tcpdmatch.c 2017-11-14 22:56:40.000000000 +1100
+--- a/tcpdmatch.c
++++ b/tcpdmatch.c
@@ -14,7 +14,7 @@
*/
#endif
/* System libraries. */
-@@ -29,6 +29,8 @@
+@@ -29,6 +29,8 @@ static char sccsid[] = "@(#) tcpdmatch.c
#include <syslog.h>
#include <setjmp.h>
#include <string.h>
extern void exit();
extern int optind;
-diff -u tcp_wrappers_7.6.orig/tli.c tcp_wrappers_7.6/tli.c
---- tcp_wrappers_7.6.orig/tli.c 1997-03-22 05:27:26.000000000 +1100
-+++ tcp_wrappers_7.6/tli.c 2017-11-14 22:56:50.000000000 +1100
+--- a/tli.c
++++ b/tli.c
@@ -15,7 +15,7 @@
*/
#endif
#ifdef TLI
-diff -u tcp_wrappers_7.6.orig/try-from.c tcp_wrappers_7.6/try-from.c
---- tcp_wrappers_7.6.orig/try-from.c 1994-12-29 03:42:55.000000000 +1100
-+++ tcp_wrappers_7.6/try-from.c 2017-11-14 22:56:59.000000000 +1100
+--- a/try-from.c
++++ b/try-from.c
@@ -11,7 +11,7 @@
*/
#endif
/* System libraries. */
-@@ -37,7 +37,7 @@
+@@ -37,7 +37,7 @@ static char sccsid[] = "@(#) try-from.c
int allow_severity = SEVERITY; /* run-time adjustable */
int deny_severity = LOG_WARNING; /* ditto */
int argc;
char **argv;
{
-diff -u tcp_wrappers_7.6.orig/update.c tcp_wrappers_7.6/update.c
---- tcp_wrappers_7.6.orig/update.c 1994-12-29 03:42:56.000000000 +1100
-+++ tcp_wrappers_7.6/update.c 2017-11-14 22:57:09.000000000 +1100
+--- a/update.c
++++ b/update.c
@@ -14,7 +14,7 @@
*/
#endif
/* System libraries */
-@@ -22,6 +22,7 @@
+@@ -22,6 +22,7 @@ static char sccsid[] = "@(#) update.c 1.
#include <stdio.h>
#include <syslog.h>
#include <string.h>
include $(TOPDIR)/rules.mk
PKG_NAME:=tiff
-PKG_VERSION:=4.1.0
-PKG_RELEASE:=3
+PKG_VERSION:=4.2.0
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://download.osgeo.org/libtiff
-PKG_HASH:=5d29f32517dadb6dbcd1255ea5bbc93a2b54b94fbf83653b4d65c7d6775b8634
+PKG_HASH:=eb0484e568ead8fa23b513e9b0041df7e327f4ee2d22db5a533929dfc19633cb
PKG_MAINTAINER:=Jiri Slachta <jiri@slachta.eu>
PKG_LICENSE:=BSD-3-Clause
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=uci2
+PKG_VERSION:=1.0
+PKG_RELEASE:=1
+
+PKG_SOURCE_URL:=https://github.com/sartura/uci2.git
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_VERSION:=2d082b587d32ce019fd94317026911e9b51f90dd
+PKG_MIRROR_HASH:=965339e85ff60724fc25ef812c117d203df63055821aa4d0006cc7f59c421b5b
+
+PKG_MAINTAINER:=Jakov Petrina <jakov.petrina@sartura.hr>
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/libuci2/Default
+ TITLE:=AST-based C parser library for UCI
+ URL:=https://github.com/sartura/uci2
+endef
+
+define Package/libuci2
+ $(call Package/libuci2/Default)
+ SECTION:=libs
+ CATEGORY:=Libraries
+endef
+
+define Package/libuci2/description
+UCI2 is a C library that provides an alternative UCI parser with an Abstract
+Syntax Tree (AST) representation of configuration files.
+endef
+
+CMAKE_OPTIONS += \
+ -DENABLE_TESTS=OFF
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/{libuci2,uci2_ast}.h $(1)/usr/include/
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libuci2.so $(1)/usr/lib/
+endef
+
+define Package/libuci2/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libuci2.so $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,libuci2))
include $(TOPDIR)/rules.mk
PKG_NAME:=unixodbc
-PKG_VERSION:=2.3.7
+PKG_VERSION:=2.3.9
PKG_RELEASE:=1
PKG_SOURCE:=unixODBC-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.unixodbc.org
-PKG_HASH:=45f169ba1f454a72b8fcbb82abd832630a3bf93baa84731cf2949f449e1e3e77
+PKG_HASH:=52833eac3d681c8b0c9a5a65f2ebd745b3a964f208fc748f977e44015a31b207
PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
PKG_LICENSE:=prog GPL libs LGPL
include $(TOPDIR)/rules.mk
PKG_NAME:=vips
-PKG_VERSION:=8.10.2
+PKG_VERSION:=8.10.5
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/libvips/libvips/releases/download/v$(PKG_VERSION)
-PKG_HASH:=c1d0d9cb54d75cd4f66dce787fbcac99f834f6621fbf47bce9e02ef65b4ab02a
+PKG_HASH:=a4eef2f5334ab6dbf133cd3c6d6394d5bdb3e76d5ea4d578b02e1bc3d9e1cfd8
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
PKG_LICENSE:=LGPL-2.1-or-later
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/vips
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/include/* \
- $(1)/usr/include/
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/vips/* $(1)/usr/include/vips
$(INSTALL_DIR) $(1)/usr/lib/
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/lib/*.so* \
- $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libvips.{a,so}* $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig/
- $(INSTALL_DATA) \
- $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/* \
- $(1)/usr/lib/pkgconfig/
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/vips.pc $(1)/usr/lib/pkgconfig/vips.pc
endef
define Package/vips/install
$(INSTALL_DIR) $(1)/usr/lib/
- $(CP) \
- $(PKG_INSTALL_DIR)/usr/lib/*.so* \
- $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libvips.so.* $(1)/usr/lib/
endef
$(eval $(call BuildPackage,vips))
-diff -u --recursive vips-8.10.2-vanilla/configure.ac vips-8.10.2/configure.ac
---- vips-8.10.2-vanilla/configure.ac 2020-10-12 11:43:59.000000000 -0500
-+++ vips-8.10.2/configure.ac 2020-11-19 12:17:39.393295442 -0600
-@@ -53,9 +53,6 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -53,9 +53,6 @@ AC_SUBST(LIBRARY_CURRENT)
AC_SUBST(LIBRARY_REVISION)
AC_SUBST(LIBRARY_AGE)
# remove the '(disabled, use --enable-introspection to enable)'
# suffix from the found_introspection variable
if test "x$found_introspection" != x"yes"; then
-diff -u --recursive vips-8.10.2-vanilla/libvips/Makefile.am vips-8.10.2/libvips/Makefile.am
---- vips-8.10.2-vanilla/libvips/Makefile.am 2020-09-14 10:38:03.000000000 -0500
-+++ vips-8.10.2/libvips/Makefile.am 2020-11-19 12:18:08.473384766 -0600
-@@ -67,56 +67,3 @@
+--- a/libvips/Makefile.am
++++ b/libvips/Makefile.am
+@@ -67,56 +67,3 @@ install-exec-hook:
echo "#define VIPS_SONAME \"$$dlname\"" >> soname.h && \
cp soname.h $(DESTDIR)$(pkgincludedir) && \
rm soname.h
-diff -u --recursive vips-8.10.2-vanilla/configure.ac vips-8.10.2/configure.ac
---- vips-8.10.2-vanilla/configure.ac 2020-10-12 11:43:59.000000000 -0500
-+++ vips-8.10.2/configure.ac 2020-11-19 12:16:45.187129100 -0600
-@@ -26,7 +26,11 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -26,7 +26,11 @@ VIPS_MAJOR_VERSION=vips_major_version()
VIPS_MINOR_VERSION=vips_minor_version()
VIPS_MICRO_VERSION=vips_micro_version()
VIPS_VERSION=vips_version()
PKG_NAME:=xmlrpc-c
PKG_VERSION:=1.51.06
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
PKG_SOURCE_URL:=@SF/xmlrpc-c/Xmlrpc-c%20Super%20Stable/$(PKG_VERSION)
$(INSTALL_BIN) \
$(PKG_INSTALL_DIR)/usr/bin/xmlrpc-c-config \
$(2)/bin/
+ $(SED) 's,PREFIX="/usr",PREFIX="$(STAGING_DIR)/usr",g' $(2)/bin/xmlrpc-c-config
$(SED) \
's,HEADERINST_DIR="/usr/include",HEADERINST_DIR="$(STAGING_DIR)/usr/include",g' \
$(2)/bin/xmlrpc-c-config
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=usb-serial-xr_usb_serial_common
-PKG_VERSION:=1a
-PKG_RELEASE=1
+PKG_SOURCE_DATE:=2017-08-01
+PKG_SOURCE_VERSION:=b8dad8cf15de160afbd9989f880dc74b921a857b
+PKG_RELEASE:=1
-PKG_LICENSE:=GPLv2
-PKG_LICENSE_FILES:=
-
-PKG_SOURCE_URL:=https://github.com/kasbert/epsolar-tracer
PKG_SOURCE_PROTO:=git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=8c21f4afdfd6acd77b6adad59a4dabe5cbf2b947
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
+PKG_SOURCE_URL:=https://github.com/kasbert/epsolar-tracer
+PKG_MIRROR_HASH:=2cf23fec2625480bb4a630f96cd172219d401bd3cf90943394504ea0ba814faf
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
+PKG_LICENSE:=GPL-2.0-or-later
+PKG_LICENSE_FILES:=LICENSE
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
include $(TOPDIR)/rules.mk
PKG_NAME:=alpine
-PKG_VERSION:=2.23
-PKG_RELEASE:=2
+PKG_VERSION:=2.24
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://alpine.x10host.com/alpine/release/src
-PKG_HASH:=793a61215c005b5fcffb48f642f125915276b7ec7827508dd9e83d4c4da91f7b
+PKG_HASH:=651a9ffa0a29e2b646a0a6e0d5a2c8c50f27a07a26a61640b7c783d06d0abcef
PKG_MAINTAINER:=Antti Seppälä <a.seppala@gmail.com>
PKG_LICENSE:=Apache-2.0
define Package/alpine-nossl
$(call Package/alpine/Default)
TITLE+= (without OpenSSL support)
+ DEPENDS+= @BROKEN
VARIANT:=nossl
endef
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=exim
+PKG_VERSION:=4.94
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=https://ftp.exim.org/pub/exim/exim4/
+PKG_HASH:=f77ee8faf04f5db793243c3ae81c1f4e452cd6ad7dd515a80edf755c4b144bdb
+PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
+
+PKG_LICENSE:=GPL-2.0-or-later
+PKG_LICENSE_FILES:=LICENSE NOTICE
+PKG_CPE_ID:=cpe:/a:exim:exim
+
+PKG_CONFIG_DEPENDS:=\
+ CONFIG_BUILD_NLS \
+ CONFIG_PACKAGE_exim \
+ CONFIG_PACKAGE_exim-gnutls \
+ CONFIG_EXIM_GNUTLS_DANE \
+ CONFIG_PACKAGE_exim-openssl \
+ CONFIG_PACKAGE_exim-ldap \
+ CONFIG_PACKAGE_exim-lookup-mysql \
+ CONFIG_PACKAGE_exim-lookup-pgsql \
+ CONFIG_PACKAGE_exim-lookup-redis \
+ CONFIG_PACKAGE_exim-lookup-sqlite
+
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
+include $(INCLUDE_DIR)/nls.mk
+
+LOOKUPS:= \
+ cdb \
+ dbmdb \
+ dnsdb \
+ json%+PACKAGE_exim-lookup-json:jansson \
+ mysql%+PACKAGE_exim-lookup-mysql:libmariadb \
+ passwd \
+ pgsql%+PACKAGE_exim-lookup-pgsql:libpq \
+ redis%+PACKAGE_exim-lookup-redis:libhiredis \
+ sqlite%+PACKAGE_exim-lookup-sqlite:libsqlite3
+
+define Package/exim/Default
+ SECTION:=mail
+ CATEGORY:=Mail
+ DEPENDS:=+libdb47 +libpcre $(ICONV_DEPENDS) +BUILD_NLS:libidn2 +BUILD_NLS:libidn
+ TITLE:=Exim message transfer agent
+ URL:=http://www.exim.org/
+ USERID:=mail=42:mail=42
+endef
+
+define Package/exim
+ $(call Package/exim/Default)
+ VARIANT:=nossl
+ CONFLICTS:=exim-openssl exim-gnutls exim-ldap
+endef
+
+define Package/exim-gnutls
+ $(call Package/exim/Default)
+ TITLE+=(with GnuTLS)
+ VARIANT:=gnutls
+ DEPENDS+=+PACKAGE_exim-gnutls:libgnutls +EXIM_GNUTLS_DANE:libgnutls-dane
+ PROVIDES:=exim
+ CONFLICTS:=exim-openssl exim-ldap
+endef
+define Package/exim-openssl
+ $(call Package/exim/Default)
+ TITLE+=(with OpenSSL)
+ VARIANT:=openssl
+ DEPENDS+=+PACKAGE_exim-openssl:libopenssl
+ PROVIDES:=exim
+ CONFLICTS:=exim-ldap
+endef
+
+define Package/exim-ldap
+ $(call Package/exim/Default)
+ TITLE+=(with OpenSSL and OpenLDAP)
+ VARIANT:=ldap
+ DEPENDS+=+PACKAGE_exim-ldap:libopenssl +PACKAGE_exim-ldap:libsasl2 +PACKAGE_exim-ldap:libopenldap
+ PROVIDES:=exim
+endef
+
+define Package/exim/Default/description
+Exim is a message transfer agent (MTA) developed at the University of
+Cambridge for use on Unix systems connected to the Internet.
+endef
+
+define Package/exim/description
+$(call Package/exim/Default/description)
+
+This package provides Exim without TLS support.
+endef
+
+define Package/exim-gnutls/description
+$(call Package/exim/Default/description)
+
+This package provides Exim built with GnuTLS.
+endef
+
+define Package/exim-gnutls/config
+ config EXIM_GNUTLS_DANE
+ bool "exim-gnutls DANE support"
+ depends on PACKAGE_exim-gnutls
+ default n
+ help
+ Build exim-gnutls against libgnutls-dane for DANE support.
+ libgnutls-dane depends on libunbound which depends on libopenssl.
+endef
+
+define Package/exim-openssl/description
+$(call Package/exim/Default/description)
+
+This package provides Exim built with OpenSSL.
+endef
+
+define Package/exim-ldap/description
+$(call Package/exim/Default/description)
+
+This package provides Exim built with OpenSSL, OpenLDAP and Cyrus SASL.
+endef
+
+define LookupGen
+define Package/exim-lookup-$(subst _,-,$(firstword $(subst %, ,$(1))))
+ SECTION:=mail
+ CATEGORY:=Mail
+ TITLE:=Exim lookup module $(firstword $(subst %, ,$(1)))
+ URL:=http://www.exim.org/
+ DEPENDS:=exim $(wordlist 2,$(words $(subst %, ,$(1))),$(subst %, ,$(1)))
+endef
+endef
+
+$(foreach file,$(LOOKUPS),$(eval $(call LookupGen,$(file))))
+
+define Package/exim/conffiles
+/etc/exim/exim.conf
+endef
+
+TARGET_CFLAGS += $(FPIC) -DNO_IP_OPTIONS -D_FILE_OFFSET_BITS=64
+
+MAKE_VARS += build=Linux-$$(ARCH)
+MAKE_FLAGS += AR="$$(TARGET_AR) r"
+HOST_MAKE_VARS += build=Linux-$$(ARCH)
+
+define Build/Configure
+ $(CP) $(PKG_BUILD_DIR)/src/EDITME $(PKG_BUILD_DIR)/Local/Makefile
+ echo "PID_FILE_PATH=/var/run/exim.pid" >> $(PKG_BUILD_DIR)/Local/Makefile
+ echo "BIN_DIRECTORY=/usr/sbin" >> $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%CONFIGURE_FILE=/usr/exim/configure%CONFIGURE_FILE=/etc/exim/exim.conf%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# EXIM_GROUP=%EXIM_GROUP=42%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# EXIM_USER=exim%EXIM_USER=42%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# INCLUDE=.*%INCLUDE=-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/usr/include%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# HAVE_IPV6=YES%HAVE_IPV6=YES%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# WITH_CONTENT_SCAN=yes%WITH_CONTENT_SCAN=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# SUPPORT_MAILDIR=yes%SUPPORT_MAILDIR=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# SUPPORT_MAILSTORE=yes%SUPPORT_MAILSTORE=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# SUPPORT_MBX=yes%SUPPORT_MBX=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+# enable lookup modules
+ $(SED) 's%# LOOKUP_DSEARCH=yes%LOOKUP_DSEARCH=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+ifdef CONFIG_PACKAGE_exim-lookup-dbmdb
+ $(SED) 's%LOOKUP_DBM=yes%LOOKUP_DBM=2%' $(PKG_BUILD_DIR)/Local/Makefile
+else
+ $(SED) 's%LOOKUP_DBM=yes%# LOOKUP_DBM=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+endif
+ifdef CONFIG_PACKAGE_exim-lookup-dnsdb
+ $(SED) 's%LOOKUP_DNSDB=yes%LOOKUP_DNSDB=2%' $(PKG_BUILD_DIR)/Local/Makefile
+else
+ $(SED) 's%LOOKUP_DNSDB=yes%# LOOKUP_DNSDB=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+endif
+ifdef CONFIG_PACKAGE_exim-lookup-passwd
+ $(SED) 's%# LOOKUP_PASSWD=yes%LOOKUP_PASSWD=2%' $(PKG_BUILD_DIR)/Local/Makefile
+endif
+ifdef CONFIG_PACKAGE_exim-lookup-cdb
+ $(SED) 's%# LOOKUP_CDB=yes%LOOKUP_CDB=2%' $(PKG_BUILD_DIR)/Local/Makefile
+endif
+ifdef CONFIG_PACKAGE_exim-lookup-json
+ $(SED) 's%# LOOKUP_JSON=yes%LOOKUP_JSON=2\
+ \nLOOKUP_JSON_INCLUDE=-I$(STAGING_DIR)/usr/include\
+ \nLOOKUP_JSON_LIBS=-Wl,--no-as-needed -ljansson%' $(PKG_BUILD_DIR)/Local/Makefile
+endif
+ifdef CONFIG_PACKAGE_exim-lookup-pgsql
+ $(SED) 's%# LOOKUP_PGSQL=yes%LOOKUP_PGSQL=2\
+ \nLOOKUP_PGSQL_LIBS=-Wl,--no-as-needed -lpq%' $(PKG_BUILD_DIR)/Local/Makefile
+endif
+ifdef CONFIG_PACKAGE_exim-lookup-sqlite
+ $(SED) 's%# LOOKUP_SQLITE=yes%LOOKUP_SQLITE=2\
+ \nLOOKUP_SQLITE_LIBS=-Wl,--no-as-needed -lsqlite3%' $(PKG_BUILD_DIR)/Local/Makefile
+endif
+ifdef CONFIG_PACKAGE_exim-lookup-mysql
+ $(SED) 's%# LOOKUP_MYSQL=yes%LOOKUP_MYSQL=2\
+ \nLOOKUP_MYSQL_INCLUDE=-I$(STAGING_DIR)/usr/include/mysql\
+ \nLOOKUP_MYSQL_LIBS=-Wl,--no-as-needed -lmysqlclient%' $(PKG_BUILD_DIR)/Local/Makefile
+endif
+ifdef CONFIG_PACKAGE_exim-lookup-redis
+ $(SED) 's%# LOOKUP_REDIS=yes%LOOKUP_REDIS=2\
+ \nLOOKUP_REDIS_INCLUDE=-I$(STAGING_DIR)/usr/include/hiredis\
+ \nLOOKUP_REDIS_LIBS=-Wl,--no-as-needed -lhiredis%' $(PKG_BUILD_DIR)/Local/Makefile
+endif
+
+ifeq ($(CONFIG_BUILD_NLS),y)
+ $(SED) 's%# HAVE_ICONV=yes%HAVE_ICONV=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# CFLAGS=-O -I/usr/local/include%CFLAGS=$(TARGET_CFLAGS) $(ICONV_CPPFLAGS)%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# EXTRALIBS_EXIM=-L/usr/local/lib -liconv%EXTRALIBS_EXIM=-export-dynamic -rdynamic $(ICONV_LDFLAGS) -liconv -ldl%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# SUPPORT_I18N_2008=yes%SUPPORT_I18N_2008=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# LDFLAGS += -lidn -lidn2%LDFLAGS += -lidn -lidn2%' $(PKG_BUILD_DIR)/Local/Makefile
+else
+ $(SED) 's%# HAVE_ICONV=yes%HAVE_ICONV=no%' $(PKG_BUILD_DIR)/Local/Makefile
+endif
+
+ $(SED) 's%# AUTH_CRAM_MD5=yes%AUTH_CRAM_MD5=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# AUTH_DOVECOT=yes%AUTH_DOVECOT=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# AUTH_EXTERNAL=yes%AUTH_EXTERNAL=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# AUTH_PLAINTEXT=yes%AUTH_PLAINTEXT=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# AUTH_SPA=yes%AUTH_SPA=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+
+ifeq ($(BUILD_VARIANT),gnutls)
+ $(SED) 's%# USE_GNUTLS=yes%USE_GNUTLS=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# TLS_INCLUDE=-I/usr/local/.*%TLS_INCLUDE=-I$(STAGING_DIR)/usr/include%' $(PKG_BUILD_DIR)/Local/Makefile
+ifeq ($(CONFIG_EXIM_GNUTLS_DANE),y)
+ $(SED) 's%# TLS_LIBS=-lgnutls -lgnutls-dane%TLS_LIBS=-L$(STAGING_DIR)/usr/lib -lgnutls -lgnutls-dane%' $(PKG_BUILD_DIR)/Local/Makefile
+else
+ $(SED) 's%SUPPORT_DANE=yes%# SUPPORT_DANE=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# TLS_LIBS=-lgnutls -lgnutls-dane%TLS_LIBS=-L$(STAGING_DIR)/usr/lib -lgnutls%' $(PKG_BUILD_DIR)/Local/Makefile
+endif
+ $(SED) 's%# AUTH_TLS=yes%AUTH_TLS=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+endif
+ifneq ($(filter ldap openssl, $(BUILD_VARIANT)),)
+ $(SED) 's%# USE_OPENSSL=yes%USE_OPENSSL=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# TLS_INCLUDE=-I/usr/local/.*%TLS_INCLUDE=-I$(STAGING_DIR)/usr/include%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# TLS_LIBS=-lssl -lcrypto%TLS_LIBS=-L$(STAGING_DIR)/usr/lib -lssl -lcrypto%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# AUTH_TLS=yes%AUTH_TLS=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+endif
+ifeq ($(BUILD_VARIANT),ldap)
+ $(SED) 's%# LOOKUP_LDAP=yes%LOOKUP_LDAP=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# LDAP_LIB_TYPE=OPENLDAP2%LDAP_LIB_TYPE=OPENLDAP2%' $(PKG_BUILD_DIR)/Local/Makefile
+ echo "LOOKUP_LIBS+=-lldap -llber" >> $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# AUTH_CYRUS_SASL=yes%AUTH_CYRUS_SASL=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# AUTH_LIBS=-lsasl2%AUTH_LIBS=-lsasl2%' $(PKG_BUILD_DIR)/Local/Makefile
+endif
+ifeq ($(BUILD_VARIANT),nossl)
+ $(SED) 's%# DISABLE_TLS=yes%DISABLE_TLS=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%SUPPORT_DANE=yes%# SUPPORT_DANE=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+endif
+ $(SED) 's%# CFLAGS_DYNAMIC=-shared -rdynamic -fPIC%CFLAGS_DYNAMIC=-shared -rdynamic $(FPIC)%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# LOOKUP_MODULE_DIR=/usr/lib/exim/lookups/%LOOKUP_MODULE_DIR=/usr/lib/exim/lookups/%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%#DLOPEN_LOCAL_SCAN=yes%DLOPEN_LOCAL_SCAN=yes%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(call Build/Compile/Default,makefile)
+ $(CP) $(PKG_BUILD_DIR)/OS/os.h-Linux $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/os.h
+ # overwrite types for cross-compile
+ # (is all the below true for glibc as well?)
+ echo '#include <inttypes.h>' >> $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/os.h
+ echo '#define ip_options ip_opts' >> $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/os.h
+ echo '#undef OFF_T_FMT' >> $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/os.h
+ echo '#define OFF_T_FMT "%" PRId64' >> $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/os.h
+ echo '#undef LONGLONG_T' >> $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/os.h
+ echo '#define LONGLONG_T int64_t' >> $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/os.h
+ echo '#ifndef NS_MAXMSG' >> $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/os.h
+ echo '#define NS_MAXMSG 65535' >> $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/os.h
+ echo '#endif' >> $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/os.h
+ $(HOST_MAKE_VARS) $(MAKE) $(HOST_MAKE_FLAGS) $(HOST_MAKE_VARS) -C $(PKG_BUILD_DIR)/build-Linux-$(ARCH) macro_predef
+endef
+
+define Package/exim/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/exim $(1)/usr/sbin
+endef
+
+Package/exim-gnutls/install = $(Package/exim/install)
+Package/exim-openssl/install = $(Package/exim/install)
+Package/exim-ldap/install = $(Package/exim/install)
+
+define LookupInstall
+define Package/exim-lookup-$(subst _,-,$(firstword $(subst %, ,$(1))))/install
+ $(INSTALL_DIR) $$(1)/usr/lib/exim/lookups
+ $(INSTALL_BIN) \
+ $(PKG_BUILD_DIR)/build-Linux-$(ARCH)/lookups/$(firstword $(subst %, ,$(1))).so \
+ $$(1)/usr/lib/exim/lookups
+endef
+endef
+
+$(foreach file,$(LOOKUPS),$(eval $(call LookupInstall,$(file))))
+
+$(eval $(call BuildPackage,exim))
+$(eval $(call BuildPackage,exim-gnutls))
+$(eval $(call BuildPackage,exim-openssl))
+$(eval $(call BuildPackage,exim-ldap))
+$(foreach file,$(LOOKUPS),$(eval $(call BuildPackage,exim-lookup-$(subst _,-,$(firstword $(subst %, ,$(file)))))))
--- /dev/null
+--- a/src/drtables.c
++++ b/src/drtables.c
+@@ -662,7 +662,7 @@ addlookupmodule(NULL, &ibase_lookup_modu
+ addlookupmodule(NULL, &ldap_lookup_module_info);
+ #endif
+
+-#ifdef LOOKUP_JSON
++#if defined(LOOKUP_JSON) && LOOKUP_JSON!=2
+ addlookupmodule(NULL, &json_lookup_module_info);
+ #endif
+
--- /dev/null
+From: Daniel Golle <daniel@makrotopia.org>
+Date: Sun, 27 Dec 2020 15:03:22 +0000
+Subject: [PATCH] use correct printf format for size_t
+
+pdkim.c: In function 'check_bare_ed25519_pubkey':
+pdkim.c:1355:60: warning: format '%lu' expects argument of type 'long unsigned int', but argument 2 has type 'size_t' {aka 'unsigned int'} [-Wformat=]
+ DEBUG(D_acl) debug_printf("DKIM: unexpected pubkey len %lu\n", p->key.len);
+ ~~^ ~~~~~~~~~~
+ %u
+Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+---
+--- a/src/pdkim/pdkim.c
++++ b/src/pdkim/pdkim.c
+@@ -1352,7 +1352,7 @@ check_bare_ed25519_pubkey(pdkim_pubkey *
+ int excess = p->key.len - 32;
+ if (excess > 0)
+ {
+- DEBUG(D_acl) debug_printf("DKIM: unexpected pubkey len %lu\n", p->key.len);
++ DEBUG(D_acl) debug_printf("DKIM: unexpected pubkey len %zu\n", p->key.len);
+ p->key.data += excess; p->key.len = 32;
+ }
+ }
--- /dev/null
+--- a/src/config.h.defaults
++++ b/src/config.h.defaults
+@@ -33,6 +33,8 @@ Do not put spaces between # and the 'def
+
+ #define AUTH_VARS 3
+
++#define DLOPEN_LOCAL_SCAN
++
+ #define BIN_DIRECTORY
+
+ #define CONFIGURE_FILE
+--- a/src/EDITME
++++ b/src/EDITME
+@@ -877,6 +877,24 @@ HEADERS_CHARSET="ISO-8859-1"
+
+
+ #------------------------------------------------------------------------------
++# On systems which support dynamic loading of shared libraries, Exim can
++# load a local_scan function specified in its config file instead of having
++# to be recompiled with the desired local_scan function. For a full
++# description of the API to this function, see the Exim specification.
++
++#DLOPEN_LOCAL_SCAN=yes
++
++# If you set DLOPEN_LOCAL_SCAN, then you need to include -rdynamic in the
++# linker flags. Without it, the loaded .so won't be able to access any
++# functions from exim.
++
++LFLAGS = -rdynamic
++ifeq ($(OSTYPE),Linux)
++LFLAGS += -ldl
++endif
++
++
++#------------------------------------------------------------------------------
+ # The default distribution of Exim contains only the plain text form of the
+ # documentation. Other forms are available separately. If you want to install
+ # the documentation in "info" format, first fetch the Texinfo documentation
+--- a/src/globals.c
++++ b/src/globals.c
+@@ -42,6 +42,10 @@ int optionlist_auths_size = nelem(op
+
+ uschar *no_aliases = NULL;
+
++#ifdef DLOPEN_LOCAL_SCAN
++uschar *local_scan_path = NULL;
++#endif
++
+
+ /* For comments on these variables, see globals.h. I'm too idle to
+ duplicate them here... */
+--- a/src/globals.h
++++ b/src/globals.h
+@@ -162,6 +162,9 @@ extern int (*receive_feof)(void);
+ extern int (*receive_ferror)(void);
+ extern BOOL (*receive_smtp_buffered)(void);
+
++#ifdef DLOPEN_LOCAL_SCAN
++extern uschar *local_scan_path; /* Path to local_scan() library */
++#endif
+
+ /* For clearing, saving, restoring address expansion variables. We have to have
+ the size of this vector set explicitly, because it is referenced from more than
+--- a/src/local_scan.c
++++ b/src/local_scan.c
+@@ -5,61 +5,133 @@
+ /* Copyright (c) University of Cambridge 1995 - 2009 */
+ /* See the file NOTICE for conditions of use and distribution. */
+
+-
+-/******************************************************************************
+-This file contains a template local_scan() function that just returns ACCEPT.
+-If you want to implement your own version, you should copy this file to, say
+-Local/local_scan.c, and edit the copy. To use your version instead of the
+-default, you must set
+-
+-HAVE_LOCAL_SCAN=yes
+-LOCAL_SCAN_SOURCE=Local/local_scan.c
+-
+-in your Local/Makefile. This makes it easy to copy your version for use with
+-subsequent Exim releases.
+-
+-For a full description of the API to this function, see the Exim specification.
+-******************************************************************************/
+-
+-
+-/* This is the only Exim header that you should include. The effect of
+-including any other Exim header is not defined, and may change from release to
+-release. Use only the documented interface! */
+-
+ #include "local_scan.h"
+
+-
+-/* This is a "do-nothing" version of a local_scan() function. The arguments
+-are:
+-
+- fd The file descriptor of the open -D file, which contains the
+- body of the message. The file is open for reading and
+- writing, but modifying it is dangerous and not recommended.
+-
+- return_text A pointer to an unsigned char* variable which you can set in
+- order to return a text string. It is initialized to NULL.
+-
+-The return values of this function are:
+-
+- LOCAL_SCAN_ACCEPT
+- The message is to be accepted. The return_text argument is
+- saved in $local_scan_data.
+-
+- LOCAL_SCAN_REJECT
+- The message is to be rejected. The returned text is used
+- in the rejection message.
+-
+- LOCAL_SCAN_TEMPREJECT
+- This specifies a temporary rejection. The returned text
+- is used in the rejection message.
+-*/
++#ifdef DLOPEN_LOCAL_SCAN
++#include <stdlib.h>
++#include <dlfcn.h>
++static int (*local_scan_fn)(int fd, uschar **return_text) = NULL;
++static int load_local_scan_library(void);
++extern uschar *local_scan_path; /* Path to local_scan() library */
++#endif
+
+ int
+ local_scan(int fd, uschar **return_text)
+ {
+ fd = fd; /* Keep picky compilers happy */
+ return_text = return_text;
+-return LOCAL_SCAN_ACCEPT;
++#ifdef DLOPEN_LOCAL_SCAN
++/* local_scan_path is defined AND not the empty string */
++if (local_scan_path && *local_scan_path)
++ {
++ if (!local_scan_fn)
++ {
++ if (!load_local_scan_library())
++ {
++ char *base_msg , *error_msg , *final_msg ;
++ int final_length = -1 ;
++
++ base_msg=US"Local configuration error - local_scan() library failure\n";
++ error_msg = dlerror() ;
++
++ final_length = strlen(base_msg) + strlen(error_msg) + 1 ;
++ final_msg = (char*)malloc( final_length*sizeof(char) ) ;
++ *final_msg = '\0' ;
++
++ strcat( final_msg , base_msg ) ;
++ strcat( final_msg , error_msg ) ;
++
++ *return_text = final_msg ;
++ return LOCAL_SCAN_TEMPREJECT;
++ }
++ }
++ return local_scan_fn(fd, return_text);
++ }
++else
++#endif
++ return LOCAL_SCAN_ACCEPT;
+ }
+
++#ifdef DLOPEN_LOCAL_SCAN
++
++static int load_local_scan_library(void)
++{
++/* No point in keeping local_scan_lib since we'll never dlclose() anyway */
++void *local_scan_lib = NULL;
++int (*local_scan_version_fn)(void);
++int vers_maj;
++int vers_min;
++
++local_scan_lib = dlopen(local_scan_path, RTLD_NOW);
++if (!local_scan_lib)
++ {
++ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() library open failed - "
++ "message temporarily rejected");
++ return FALSE;
++ }
++
++local_scan_version_fn = dlsym(local_scan_lib, "local_scan_version_major");
++if (!local_scan_version_fn)
++ {
++ dlclose(local_scan_lib);
++ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() library doesn't contain "
++ "local_scan_version_major() function - message temporarily rejected");
++ return FALSE;
++ }
++
++/* The major number is increased when the ABI is changed in a non
++ backward compatible way. */
++vers_maj = local_scan_version_fn();
++
++local_scan_version_fn = dlsym(local_scan_lib, "local_scan_version_minor");
++if (!local_scan_version_fn)
++ {
++ dlclose(local_scan_lib);
++ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() library doesn't contain "
++ "local_scan_version_minor() function - message temporarily rejected");
++ return FALSE;
++ }
++
++/* The minor number is increased each time a new feature is added (in a
++ way that doesn't break backward compatibility) -- Marc */
++vers_min = local_scan_version_fn();
++
++
++if (vers_maj != LOCAL_SCAN_ABI_VERSION_MAJOR)
++ {
++ dlclose(local_scan_lib);
++ local_scan_lib = NULL;
++ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() has an incompatible major"
++ "version number, you need to recompile your module for this version"
++ "of exim (The module was compiled for version %d.%d and this exim provides"
++ "ABI version %d.%d)", vers_maj, vers_min, LOCAL_SCAN_ABI_VERSION_MAJOR,
++ LOCAL_SCAN_ABI_VERSION_MINOR);
++ return FALSE;
++ }
++else if (vers_min > LOCAL_SCAN_ABI_VERSION_MINOR)
++ {
++ dlclose(local_scan_lib);
++ local_scan_lib = NULL;
++ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() has an incompatible minor"
++ "version number, you need to recompile your module for this version"
++ "of exim (The module was compiled for version %d.%d and this exim provides"
++ "ABI version %d.%d)", vers_maj, vers_min, LOCAL_SCAN_ABI_VERSION_MAJOR,
++ LOCAL_SCAN_ABI_VERSION_MINOR);
++ return FALSE;
++ }
++
++local_scan_fn = dlsym(local_scan_lib, "local_scan");
++if (!local_scan_fn)
++ {
++ dlclose(local_scan_lib);
++ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() library doesn't contain "
++ "local_scan() function - message temporarily rejected");
++ return FALSE;
++ }
++
++return TRUE;
++}
++
++#endif /* DLOPEN_LOCAL_SCAN */
++
+ /* End of local_scan.c */
+--- a/src/readconf.c
++++ b/src/readconf.c
+@@ -205,6 +205,9 @@ static optionlist optionlist_config[] =
+ { "local_from_prefix", opt_stringptr, {&local_from_prefix} },
+ { "local_from_suffix", opt_stringptr, {&local_from_suffix} },
+ { "local_interfaces", opt_stringptr, {&local_interfaces} },
++#ifdef DLOPEN_LOCAL_SCAN
++ { "local_scan_path", opt_stringptr, {&local_scan_path} },
++#endif
+ #ifdef HAVE_LOCAL_SCAN
+ { "local_scan_timeout", opt_time, {&local_scan_timeout} },
+ #endif
PKG_NAME:=opendkim
PKG_VERSION:=2.10.3
-PKG_RELEASE:=4
+PKG_RELEASE:=5
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/$(PKG_NAME)
define Package/libopendkim
SECTION:=mail
CATEGORY:=Libraries
- DEPENDS:=+libopenssl +libmilter-sendmail
+ DEPENDS:=+libopenssl +libmilter-sendmail +USE_GLIBC:libbsd
TITLE:=Library for signing and verifying DKIM signatures
URL:=http://opendkim.org/
endef
include $(TOPDIR)/rules.mk
PKG_NAME:=postfix
-PKG_VERSION:=3.5.7
-PKG_RELEASE:=2
+PKG_VERSION:=3.5.8
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:= \
https://cdn.postfix.johnriley.me/mirrors/postfix-release/official/ \
http://ftp.porcupine.org/mirrors/postfix-release/official/
-PKG_HASH:=b7a474f14e153dc7cbf6af38419729bc5af5c3c37aecf6b327a8f962158f0961
+PKG_HASH:=22582628cf3edc18c5155c9ff44543dd95a9435fb68135d76a99f572cb07456f
PKG_MAINTAINER:=Denis Shulyaka <Shulyaka@gmail.com>
PKG_LICENSE:=IPL-1.0
endif
CCARGS+=-DDEF_DB_TYPE=\"$(default_database_type)\"
+TARGET_LDFLAGS += $(if $(CONFIG_USE_GLIBC),-lresolv)
# prevent postfix-install from executing postconf at build time
# by explicitly providing the default values to postfix-install
define Build/Compile
# Currently postfix has a bug with Makefiles that CCARGS are not passed to the compiler, so we are copying them to CC as a workaround
- cd $(PKG_BUILD_DIR); $(MAKE) $(TARGET_CONFIGURE_OPTS) CC='$(TARGET_CC) $(CCARGS)'
+ cd $(PKG_BUILD_DIR); $(MAKE) $(TARGET_CONFIGURE_OPTS) CC='$(TARGET_CC) $(CCARGS) $(TARGET_CFLAGS) $(TARGET_LDFLAGS)'
$(foreach p, \
default_database_type config_directory command_directory daemon_directory \
shlib_directory manpage_directory data_directory queue_directory \
--- a/src/util/dict_db.c
+++ b/src/util/dict_db.c
-@@ -750,8 +750,8 @@ static DICT *dict_db_open(const char *class, const char *path, int open_flags,
+@@ -750,8 +750,8 @@ static DICT *dict_db_open(const char *cl
msg_fatal("create DB database: %m");
if (db == 0)
msg_panic("db_create null result");
--- a/src/util/sys_defs.h
+++ b/src/util/sys_defs.h
-@@ -760,9 +760,8 @@ extern int initgroups(const char *, int);
+@@ -760,9 +760,8 @@ extern int initgroups(const char *, int)
#define INTERNAL_LOCK MYFLOCK_STYLE_FLOCK
#define DEF_MAILBOX_LOCK "fcntl, dotlock" /* RedHat >= 4.x */
#define HAS_FSYNC
RELEASE=`(uname -r) 2>/dev/null`
# No ${x%%y} support in Solaris 11 /bin/sh
RELEASE_MAJOR=`expr "$RELEASE" : '\([0-9]*\)'` || exit 1
-@@ -229,6 +229,15 @@ case $# in
+@@ -242,6 +242,15 @@ case "$SYSTEM" in
esac
case "$SYSTEM.$RELEASE" in
+++ /dev/null
-From 4fe5b1f216f1643080299bdb35e07f07b9c2caae Mon Sep 17 00:00:00 2001
-From: Rosen Penev <rosenp@gmail.com>
-Date: Thu, 2 May 2019 22:28:57 -0700
-Subject: [PATCH] dns_lookup: Fix compilation with uClibc-ng
-
-uClibc-ng does not have res_send or res_nsend. ifdef the entire function.
----
- src/dns/dns_lookup.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/dns/dns_lookup.c b/src/dns/dns_lookup.c
-index 1ea98b3..d7771d4 100644
---- a/src/dns/dns_lookup.c
-+++ b/src/dns/dns_lookup.c
-@@ -311,6 +311,10 @@ typedef struct DNS_REPLY {
- static int dns_res_query(const char *name, int class, int type,
- unsigned char *answer, int anslen)
- {
-+#ifdef __UCLIBC__
-+ msg_info("dns_res_query() is not supported under uClibc");
-+ return 0;
-+#else
- unsigned char msg_buf[MAX_DNS_QUERY_SIZE];
- HEADER *reply_header = (HEADER *) answer;
- int len;
-@@ -369,6 +373,7 @@ static int dns_res_query(const char *name, int class, int type,
- }
- return (len);
- }
-+#endif
- }
-
- /* dns_res_search - res_search() that can return negative replies */
---
-2.17.1
-
PKG_NAME:=gerbera
PKG_VERSION:=1.6.4
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/gerbera/gerbera/tar.gz/v$(PKG_VERSION)?
include $(TOPDIR)/rules.mk
PKG_NAME:=gphoto2
-PKG_VERSION:=2.5.23
-PKG_RELEASE:=2
+PKG_VERSION:=2.5.26
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@SF/gphoto
-PKG_HASH:=df87092100e7766c9d0a4323217c91908a9c891c0d3670ebf40b76903be458d1
+PKG_HASH:=7653213b05329c1dc2779efea3eff00504e12011436587aedc9aaa1e8665ab2f
PKG_MAINTAINER:=Leonardo Medici <leonardo_medici@me.com>
PKG_LICENSE:=GPL-2.0
--without-aalib
CONFIGURE_VARS += \
- LIBGPHOTO2_CFLAGS="$$$$CFLAGS -I$(STAGING_DIR)/usr/include/gphoto2 $$$$CPPFLAGS" \
- LIBGPHOTO2_LIBS="$$$$LDFLAGS -lgphoto2 -lgphoto2_port -lltdl" \
- LIBEXIF_CFLAGS="$$$$CFLAGS $$$$CPPFLAGS" \
- LIBEXIF_LIBS="$$$$LDFLAGS -lexif" \
- POPT_CFLAGS="$$$$CFLAGS $$$$CPPFLAGS" \
- POPT_LIBS="$$$$LDFLAGS -lpopt" \
+ POPT_CFLAGS="-I$(STAGING_DIR)/usr/include" \
+ POPT_LIBS="-L$(STAGING_DIR)/usr/lib -lpopt"
define Package/gphoto2/install
$(INSTALL_DIR) $(1)/usr/bin
all: config.h
--- a/configure.ac
+++ b/configure.ac
-@@ -58,10 +58,7 @@ dnl ---------------------------------------------------------------------------
+@@ -58,10 +58,7 @@ dnl ------------------------------------
GP_GETTEXT_HACK([],[Lutz Müller and others],[${MAIL_GPHOTO_TRANSLATION}])
ALL_LINGUAS="az cs da de en_GB es eu fi fr hu id is it ja nl pa pl pt_BR ro ru rw sk sr sv uk vi zh_CN zh_TW"
AM_GNU_GETTEXT_VERSION([0.14.1])
PKG_NAME:=graphicsmagick
PKG_VERSION:=1.3.35
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_BUILD_DIR:=$(BUILD_DIR)/GraphicsMagick-$(PKG_VERSION)
PKG_SOURCE:=GraphicsMagick-$(PKG_VERSION).tar.bz2
--without-zstd \
--without-x
-TARGET_CFLAGS += -flto
+TARGET_CFLAGS += $(if $(CONFIG_GCC_USE_VERSION_10),,-flto)
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
include $(TOPDIR)/rules.mk
PKG_NAME:=minidlna
-PKG_RELEASE:=8
+PKG_VERSION:=1.3.0
+PKG_RELEASE:=1
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://git.code.sf.net/p/minidlna/git
-PKG_SOURCE_DATE:=2019-12-09
-PKG_SOURCE_VERSION:=0763719f2776f91114bc5564919896f28e078c77
-PKG_MIRROR_HASH:=93030a80eff44c0ec13f54daf3b2ba345b70ef8645e0343a34092f37d6f9e8dd
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=@SF/minidlna
+PKG_HASH:=47d9b06b4c48801a4c1112ec23d24782728b5495e95ec2195bbe5c81bc2d3c63
PKG_MAINTAINER:=
PKG_LICENSE:=GPL-2.0-or-later BSD-3-Clause
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
-PKG_BUILD_DEPENDS:=util-linux
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
TITLE:=UPnP A/V & DLNA Media Server
URL:=http://minidlna.sourceforge.net/
DEPENDS:= +libpthread +libexif +libjpeg +libsqlite3 +libffmpeg \
- +libid3tag +libflac +libvorbis +libuuid \
- $(ICONV_DEPENDS) $(INTL_DEPENDS)
+ +libid3tag +libflac +libvorbis $(ICONV_DEPENDS) $(INTL_DEPENDS)
USERID:=minidlna:minidlna
endef
--with-db-path="/var/run/minidlna" \
--with-log-path="/var/log"
-TARGET_CFLAGS += -DHAVE_CLOCK_GETTIME
-
define Package/minidlna/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/minidlnad $(1)/usr/sbin/minidlnad
+++ b/Makefile.am
@@ -17,7 +17,7 @@
- AM_CFLAGS = -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 @STATIC_CFLAGS@
+ AM_CFLAGS = -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
-SUBDIRS=po
+SUBDIRS=
check_PROGRAMS = testupnpdescgen
--- a/configure.ac
+++ b/configure.ac
-@@ -647,6 +647,8 @@ case "$target_os" in
+@@ -658,6 +658,5 @@ case "$target_os" in
esac
-AC_OUTPUT([ po/Makefile.in
-Makefile
-])
-+# AC_OUTPUT([ po/Makefile.in
-+# Makefile
-+# ])
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
utils.c | 3 +++
3 files changed, 9 insertions(+), 1 deletion(-)
-diff --git a/metadata.c b/metadata.c
-index 9cd86dc..2d13480 100644
--- a/metadata.c
+++ b/metadata.c
-@@ -862,6 +862,10 @@ GetVideoMetadata(const char *path, const char *name)
+@@ -862,6 +862,10 @@ GetVideoMetadata(const char *path, const
xasprintf(&m.mime, "video/x-matroska");
else if( strcmp(ctx->iformat->name, "flv") == 0 )
xasprintf(&m.mime, "video/x-flv");
if( m.mime )
goto video_no_dlna;
-diff --git a/upnpglobalvars.h b/upnpglobalvars.h
-index 1a2fb5e..2cbe24c 100644
--- a/upnpglobalvars.h
+++ b/upnpglobalvars.h
@@ -172,7 +172,8 @@
#define DLNA_FLAG_DLNA_V1_5 0x00100000
#define DLNA_FLAG_HTTP_STALLING 0x00200000
-diff --git a/utils.c b/utils.c
-index dc936f9..006f611 100644
--- a/utils.c
+++ b/utils.c
@@ -377,6 +377,8 @@ mime_to_ext(const char * mime)
#ifdef TIVO_SUPPORT
ends_with(file, ".TiVo") ||
#endif
---
-2.20.1
-
+++ /dev/null
-From eb473817d73b8740f27955f93950029fdfc9d73e Mon Sep 17 00:00:00 2001
-From: Daniel Kamil Kozar <dkk089@gmail.com>
-Date: Sat, 15 Dec 2018 00:55:20 +0100
-Subject: [PATCH] LG webOS 3.5 devices require audio/flac in order to detect
- FLAC
-
-Imported from https://sourceforge.net/p/minidlna/patches/176/
----
- clients.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/clients.c b/clients.c
-index 42f0d1c..d324eab 100644
---- a/clients.c
-+++ b/clients.c
-@@ -164,7 +164,7 @@ struct client_type_s client_types[] =
-
- /* USER-AGENT: Linux/2.6.35 UPnP/1.0 DLNADOC/1.50 INTEL_NMPR/2.0 LGE_DLNA_SDK/1.6.0 */
- { ELGNetCastDevice,
-- FLAG_DLNA | FLAG_CAPTION_RES,
-+ FLAG_DLNA | FLAG_CAPTION_RES | FLAG_MIME_FLAC_FLAC,
- "LG",
- "LGE_DLNA_SDK/1.6.0",
- EUserAgent
scanner.c | 33 ++++++---------------------------
3 files changed, 39 insertions(+), 27 deletions(-)
-diff --git a/containers.c b/containers.c
-index f5cece1..19a0bb1 100644
--- a/containers.c
+++ b/containers.c
@@ -23,6 +23,31 @@
#define NINETY_DAYS "7776000"
const char *music_id = MUSIC_ID;
-diff --git a/containers.h b/containers.h
-index aef77c5..1fcf7cd 100644
--- a/containers.h
+++ b/containers.h
@@ -16,6 +16,14 @@
struct magic_container_s {
const char *name;
const char *objectid_match;
-diff --git a/scanner.c b/scanner.c
-index a730567..eb26c9e 100644
--- a/scanner.c
+++ b/scanner.c
-@@ -529,30 +529,7 @@ insert_file(const char *name, const char *path, const char *parentID, int object
+@@ -529,30 +529,7 @@ insert_file(const char *name, const char
int
CreateDatabase(void)
{
--- a/containers.c
+++ b/containers.c
-@@ -50,23 +50,23 @@
+@@ -50,23 +50,23 @@ const struct container_s containers[] =
#define NINETY_DAYS "7776000"
if( sql_get_int_field(db, "SELECT 1 from OBJECTS where OBJECT_ID = '%s'", magic->objectid_match) == 0 )
--- a/upnpsoap.c
+++ b/upnpsoap.c
-@@ -800,7 +800,7 @@ add_res(char *size, char *duration, char
+@@ -804,7 +804,7 @@ add_res(char *size, char *duration, char
}
static int
{
int ret;
-@@ -1297,7 +1297,7 @@ BrowseContentDirectory(struct upnphttp *
+@@ -1301,7 +1301,7 @@ BrowseContentDirectory(struct upnphttp *
"<Result>"
"<DIDL-Lite"
CONTENT_DIRECTORY_SCHEMAS;
char *zErrMsg = NULL;
char *sql, *ptr;
struct Response args;
-@@ -1819,7 +1819,7 @@ SearchContentDirectory(struct upnphttp *
+@@ -1823,7 +1823,7 @@ SearchContentDirectory(struct upnphttp *
"<Result>"
"<DIDL-Lite"
CONTENT_DIRECTORY_SCHEMAS;
utils.c | 7 -------
1 file changed, 7 deletions(-)
-diff --git a/utils.c b/utils.c
-index dc936f9..dfa2b65 100644
--- a/utils.c
+++ b/utils.c
@@ -87,13 +87,6 @@ trim(char *str)
upnpdescgen.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/upnpdescgen.c b/upnpdescgen.c
-index 85ce185..78d5754 100644
--- a/upnpdescgen.c
+++ b/upnpdescgen.c
-@@ -525,6 +525,7 @@ genXML(char *str, int *len, int *tmplen, const struct XMLElt *p)
+@@ -525,6 +525,7 @@ genXML(char * str, int * len, int * tmpl
pile[top].eltname = eltname;
}
}
+++ /dev/null
---- a/image_utils.c
-+++ b/image_utils.c
-@@ -190,7 +190,7 @@ jpeg_memory_src(j_decompress_ptr cinfo,
- src->pub.bytes_in_buffer = bufsize;
- }
-
--jmp_buf setjmp_buffer;
-+static jmp_buf setjmp_buffer;
- /* Don't exit on error like libjpeg likes to do */
- static void
- libjpeg_error_handler(j_common_ptr cinfo)
---- a/metadata.c
-+++ b/metadata.c
-@@ -502,7 +502,7 @@ GetAudioMetadata(const char *path, const
- }
-
- /* For libjpeg error handling */
--jmp_buf setjmp_buffer;
-+static jmp_buf setjmp_buffer;
- static void
- libjpeg_error_handler(j_common_ptr cinfo)
- {
include $(TOPDIR)/rules.mk
PKG_NAME:=v4l2rtspserver
-PKG_VERSION:=0.1.9
+PKG_VERSION:=0.2.1
PKG_RELEASE:=1
#cannot use codeload as this uses submodules
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/mpromonet/v4l2rtspserver
PKG_SOURCE_VERSION:=v$(PKG_VERSION)
-PKG_MIRROR_HASH:=bcb68170f6b6a3560902673c4145d0311d4f661b2ed3d71ed1ee1a58bdde96d2
+PKG_MIRROR_HASH:=ddc4217ee12e57a4c248b6667309559323458028dc0fa085942b91dbbcd74146
-LIVE555_VERSION:=2019.11.22
-LIVE555_HASH:=cd10fbd2d28d0bc39c12ec57b9f6b13fab3bfc7005f5ac8f9c94a9eb34179e90
+LIVE555_VERSION:=2020.11.29
+LIVE555_HASH:=0300f1f0b92529909623d3e870edeadff9841bbc9097a481a8583c5b9a6cc3ae
LIVE555_FILE:=live.$(LIVE555_VERSION).tar.gz
PKG_MAINTAINER:=Roger Dammit <rogerdammit@gmail.com>
TARGET_CFLAGS += -ffunction-sections -fdata-sections -flto
TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed
-CMAKE_OPTIONS += -DALSA=OFF -DLIVE555CFLAGS="$(TARGET_CFLAGS) -DSOCKLEN_T=socklen_t -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DLOCALE_NOT_USED -DNO_SSTREAM=1 -DALLOW_RTSP_SERVER_PORT_REUSE=1 -DVERSION=\\\"$(PKG_VERSION)\\\""
+CMAKE_OPTIONS += \
+ -DALSA=OFF \
+ -DLIVE555CFLAGS=" -DSOCKLEN_T=socklen_t -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DLOCALE_NOT_USED -DNO_SSTREAM=1 -DALLOW_RTSP_SERVER_PORT_REUSE=1 -DNO_OPENSSL"
define Build/Prepare
$(Build/Prepare/Default)
--- /dev/null
+From f0f04b7315f59b3a9b814c13c705d4354d0c0626 Mon Sep 17 00:00:00 2001
+From: mpromonet <michel.promonet@free.fr>
+Date: Fri, 27 Nov 2020 19:36:43 +0100
+Subject: [PATCH] fix #216: allow to build with live555 newer than 2020.11.27
+ (2020.11.25 & 2020.11.26 doesnot build)
+
+---
+ inc/HTTPServer.h | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+--- a/inc/HTTPServer.h
++++ b/inc/HTTPServer.h
+@@ -113,13 +113,18 @@ class TCPSink: public MediaSink {
+ // ---------------------------------------------------------
+ // Extend RTSP server to add support for HLS and MPEG-DASH
+ // ---------------------------------------------------------
++#if LIVEMEDIA_LIBRARY_VERSION_INT < 1606435200
++#define SOCKETCLIENT sockaddr_in
++#else
++#define SOCKETCLIENT sockaddr_storage
++#endif
+ class HTTPServer : public RTSPServer
+ {
+
+ class HTTPClientConnection : public RTSPServer::RTSPClientConnection
+ {
+ public:
+- HTTPClientConnection(RTSPServer& ourServer, int clientSocket, struct sockaddr_in clientAddr)
++ HTTPClientConnection(RTSPServer& ourServer, int clientSocket, struct SOCKETCLIENT clientAddr)
+ : RTSPServer::RTSPClientConnection(ourServer, clientSocket, clientAddr), m_TCPSink(NULL), m_StreamToken(NULL), m_Subsession(NULL), m_Source(NULL) {
+ }
+ virtual ~HTTPClientConnection();
+@@ -165,7 +170,7 @@ class HTTPServer : public RTSPServer
+ }
+ }
+
+- RTSPServer::RTSPClientConnection* createNewClientConnection(int clientSocket, struct sockaddr_in clientAddr)
++ RTSPServer::RTSPClientConnection* createNewClientConnection(int clientSocket, struct SOCKETCLIENT clientAddr)
+ {
+ return new HTTPClientConnection(*this, clientSocket, clientAddr);
+ }
include $(TOPDIR)/rules.mk
PKG_NAME:=youtube-dl
-PKG_VERSION:=2020.11.1.1
+PKG_VERSION:=2020.12.7
PKG_RELEASE:=1
PYPI_NAME:=youtube_dl
-PKG_HASH:=b73379d6b08f03aec49a1899affe4cfd35bb92002dbdb3a3a1435a5811d4f120
+PKG_HASH:=bd127c3251a8e9f7a0eb18e4bbcf98409c0365354f735c985325bc19af669a24
PKG_MAINTAINER:=Josef Schlehofer <pepe.schlehofer@gmail.com>
PKG_LICENSE:=Unlicense
include $(TOPDIR)/rules.mk
PKG_NAME:=adblock
-PKG_VERSION:=4.0.7
+PKG_VERSION:=4.0.8
PKG_RELEASE:=3
PKG_LICENSE:=GPL-3.0-or-later
PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
| energized_ultimate | | XXL | compilation | [Link](https://energized.pro) |
| energized_unified | | XXL | compilation | [Link](https://energized.pro) |
| firetv_tracking | | S | tracking | [Link](https://github.com/Perflyst/PiHoleBlocklist) |
+| games_tracking | | S | tracking | [Link](https://www.gameindustry.eu) |
| gaming | | S | gaming | [Link](https://github.com/abyssin/pihole-blocklist) |
| malwaredomains | | M | malware | [Link](https://malwaredomains.com) |
-| malwarelist | | S | malware | [Link](https://www.malwaredomainlist.com) |
| notracking | | XL | tracking | [Link](https://github.com/notracking/hosts-blocklists) |
| oisd_nl | | XXL | general | [Link](https://oisd.nl) |
| openphish | | S | phishing | [Link](https://openphish.com) |
| whocares | | M | general | [Link](https://someonewhocares.org) |
| winhelp | | S | general | [Link](https://winhelp2002.mvps.org) |
| winspy | | S | win_telemetry | [Link](https://github.com/crazy-max/WindowsSpyBlocker) |
-| youtube | | M | youtube | [Link](https://github.com/kboghdady/youTube_ads_4_pi-hole) |
| yoyo | x | S | general | [Link](https://pgl.yoyo.org/adservers) |
* List of supported and fully pre-configured adblock sources, already active sources are pre-selected.
{
local trigger delay type
- PROCD_RELOAD_DELAY=$((delay*1000))
trigger="$(uci_get adblock global adb_trigger)"
delay="$(uci_get adblock global adb_triggerdelay "2")"
type="$(uci_get adblock global adb_starttype "start")"
+ PROCD_RELOAD_DELAY=$((delay*1000))
if [ -n "${trigger}" ]
then
procd_add_interface_trigger "interface.*.up" "${trigger}" "${adb_init}" "${type}"
export LC_ALL=C
export PATH="/usr/sbin:/usr/bin:/sbin:/bin"
set -o pipefail
-adb_ver="4.0.7"
+adb_ver="4.0.8"
adb_enabled=0
adb_debug=0
adb_forcedns=0
adb_dumpcmd="$(command -v tcpdump)"
adb_lookupcmd="$(command -v nslookup)"
adb_fetchutil=""
-adb_portlist="53 853 5353"
+adb_zonelist=""
+adb_portlist=""
adb_repiface=""
adb_replisten="53"
adb_repchunkcnt="5"
elif [ "${option}" = "adb_safesearchlist" ]
then
eval "${option}=\"$(printf "%s" "${adb_safesearchlist}") ${value}\""
+ elif [ "${option}" = "adb_zonelist" ]
+ then
+ eval "${option}=\"$(printf "%s" "${adb_zonelist}") ${value}\""
+ elif [ "${option}" = "adb_portlist" ]
+ then
+ eval "${option}=\"$(printf "%s" "${adb_portlist}") ${value}\""
fi
}
}
#
f_extconf()
{
- local config config_dir config_file port fwcfg
+ local config config_dir config_file section zone port fwcfg
case "${adb_dns}" in
"dnsmasq")
f_uci "${config}"
config="firewall"
- fwcfg="$(uci -qNX show "${config}")"
+ fwcfg="$(uci -qNX show "${config}" | "${adb_awk}" 'BEGIN{FS="[.=]"};/adblock_/{if(zone==$2){next}else{ORS=" ";zone=$2;print zone}}')"
if [ "${adb_enabled}" -eq 1 ] && [ "${adb_forcedns}" -eq 1 ] && \
[ "$(/etc/init.d/firewall enabled; printf "%u" ${?})" -eq 0 ]
then
- for port in ${adb_portlist}
+ for zone in ${adb_zonelist}
do
- if [ -z "$(printf "%s" "${fwcfg}" | grep -Fo -m1 "adblock_dns_${port}")" ]
- then
- uci -q batch <<-EOC
- set firewall."adblock_dns_${port}"="redirect"
- set firewall."adblock_dns_${port}".name="Adblock DNS, port ${port}"
- set firewall."adblock_dns_${port}".src="lan"
- set firewall."adblock_dns_${port}".proto="tcp udp"
- set firewall."adblock_dns_${port}".src_dport="${port}"
- set firewall."adblock_dns_${port}".dest_port="${port}"
- set firewall."adblock_dns_${port}".target="DNAT"
- EOC
- fi
+ for port in ${adb_portlist}
+ do
+ if [ -z "$(printf "%s" "${fwcfg}" | grep -o -m1 "adblock_${zone}${port}[ |\$]")" ]
+ then
+ uci -q batch <<-EOC
+ set firewall."adblock_${zone}${port}"="redirect"
+ set firewall."adblock_${zone}${port}".name="Adblock DNS (${zone}, ${port})"
+ set firewall."adblock_${zone}${port}".src="${zone}"
+ set firewall."adblock_${zone}${port}".proto="tcp udp"
+ set firewall."adblock_${zone}${port}".src_dport="${port}"
+ set firewall."adblock_${zone}${port}".dest_port="${port}"
+ set firewall."adblock_${zone}${port}".target="DNAT"
+ EOC
+ fi
+ fwcfg="${fwcfg/adblock_${zone}${port}[ |\$]/}"
+ done
done
- elif [ "${adb_enabled}" -eq 0 ] || [ "${adb_forcedns}" -eq 0 ]
+ fwcfg="${fwcfg#"${fwcfg%%[![:space:]]*}"}"
+ fwcfg="${fwcfg%"${fwcfg##*[![:space:]]}"}"
+ fi
+ if [ "${adb_enabled}" -eq 0 ] || [ "${adb_forcedns}" -eq 0 ] || [ -n "${fwcfg}" ]
then
- for port in ${adb_portlist}
+ for section in ${fwcfg}
do
- if [ -n "$(printf "%s" "${fwcfg}" | grep -Fo -m1 "adblock_dns_${port}")" ]
- then
- uci_remove firewall "adblock_dns_${port}"
- fi
+ uci_remove firewall "${section}"
done
fi
f_uci "${config}"
rset="/^([[:alnum:]_-]{1,63}\\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}"
"${adb_awk}" "${rset}" "${adb_blacklist}" | \
"${adb_awk}" 'BEGIN{FS="."}{for(f=NF;f>1;f--)printf "%s.",$f;print $1}' > "${adb_tmpdir}/tmp.raw.${src_name}"
- sort ${adb_srtopts} -u "${adb_tmpdir}/tmp.raw.${src_name}" 2>/dev/null > "${adb_tmpfile}.${src_name}"
+ "${adb_sort}" ${adb_srtopts} -u "${adb_tmpdir}/tmp.raw.${src_name}" 2>/dev/null > "${adb_tmpfile}.${src_name}"
out_rc="${?}"
rm -f "${adb_tmpdir}/tmp.raw.${src_name}"
elif [ "${src_name}" = "whitelist" ] && [ -s "${adb_whitelist}" ]
find "${adb_backupdir}" ${ffiles} -print0 2>/dev/null | xargs -0 rm 2>/dev/null
fi
unset src_name
- sort ${adb_srtopts} -mu "${adb_tmpfile}".* 2>/dev/null > "${adb_tmpdir}/${adb_dnsfile}"
+ "${adb_sort}" ${adb_srtopts} -mu "${adb_tmpfile}".* 2>/dev/null > "${adb_tmpdir}/${adb_dnsfile}"
out_rc="${?}"
rm -f "${adb_tmpfile}".*
;;
"${adb_awk}" 'BEGIN{FS="."}{for(f=NF;f>1;f--)printf "%s.",$f;print $1}' > "${src_tmpsort}"
fi
rm -f "${src_tmpload}"
- sort ${adb_srtopts} -u "${src_tmpsort}" 2>/dev/null > "${src_tmpfile}"
+ "${adb_sort}" ${adb_srtopts} -u "${src_tmpsort}" 2>/dev/null > "${src_tmpfile}"
src_rc="${?}"
rm -f "${src_tmpsort}"
if [ "${src_rc}" -eq 0 ] && [ -s "${src_tmpfile}" ]
"${adb_awk}" 'BEGIN{FS="."}{for(f=NF;f>1;f--)printf "%s.",$f;print $1}' > "${src_tmpsort}"
fi
rm -f "${src_tmpload}"
- sort ${adb_srtopts} -u "${src_tmpsort}" 2>/dev/null > "${src_tmpfile}"
+ "${adb_sort}" ${adb_srtopts} -u "${src_tmpsort}" 2>/dev/null > "${src_tmpfile}"
src_rc="${?}"
rm -f "${src_tmpsort}"
if [ "${src_rc}" -eq 0 ] && [ -s "${src_tmpfile}" ]
do
(
"${adb_dumpcmd}" -tttt -r "${file}" 2>/dev/null | \
- "${adb_awk}" -v cnt="${cnt}" '!/\.lan\. |PTR\? | SOA\? /&&/ A[\? ]+|NXDomain|0\.0\.0\.0/{a=$1;b=substr($2,0,8);c=$4;sub(/\.[0-9]+$/,"",c);d=cnt $7;sub(/\*$/,"",d);
- e=$(NF-1);sub(/[0-9]\/[0-9]\/[0-9]|0\.0\.0\.0/,"NX",e);sub(/\.$/,"",e);sub(/([0-9]{1,3}\.){3}[0-9]{1,3}/,"OK",e);if(e==""){e="err"};printf "%s\t%s\t%s\t%s\t%s\n",d,e,a,b,c}' >> "${adb_reportdir}/adb_report.raw"
+ "${adb_awk}" -v cnt="${cnt}" '!/\.lan\. |PTR\? | SOA\? /&&/ A[\? ]+|NXDomain|0\.0\.0\.0/{a=$1;b=substr($2,0,8);c=$4;sub(/\.[0-9]+$/,"",c);gsub(/[^[:alnum:]\.:-]/,"",c);d=cnt $7;sub(/\*$/,"",d);
+ e=$(NF-1);sub(/[0-9]\/[0-9]\/[0-9]|0\.0\.0\.0/,"NX",e);sub(/\.$/,"",e);sub(/([0-9]{1,3}\.){3}[0-9]{1,3}/,"OK",e);gsub(/[^[:alnum:]\.-]/,"",e);if(e==""){e="err"};printf "%s\t%s\t%s\t%s\t%s\n",d,e,a,b,c}' >> "${adb_reportdir}/adb_report.raw"
)&
hold=$((cnt%adb_maxqueue))
if [ "${hold}" -eq 0 ]
wait
if [ -s "${adb_reportdir}/adb_report.raw" ]
then
- sort ${adb_srtopts} -k1 -k3 -k4 -k5 -k1 -ur "${adb_reportdir}/adb_report.raw" | \
+ "${adb_sort}" ${adb_srtopts} -k1 -k3 -k4 -k5 -k1 -ur "${adb_reportdir}/adb_report.raw" | \
"${adb_awk}" '{currA=($1+0);currB=$1;currC=substr($1,length($1),1);if(reqA==currB){reqA=0;printf "%s\t%s\n",d,$2}else if(currC=="+"){reqA=currA;d=$3"\t"$4"\t"$5"\t"$2}}' | \
- sort ${adb_srtopts} -k1 -k2 -k3 -k4 -ur > "${adb_reportdir}/adb_report.srt"
+ "${adb_sort}" ${adb_srtopts} -k1 -k2 -k3 -k4 -ur > "${adb_reportdir}/adb_report.srt"
rm -f "${adb_reportdir}/adb_report.raw"
fi
printf "%s" " \"${top}\": [ " >> "${adb_reportdir}/adb_report.json"
case "${top}" in
"top_clients")
- "${adb_awk}" '{print $3}' "${adb_reportdir}/adb_report.srt" | sort ${adb_srtopts} | uniq -c | \
- sort ${adb_srtopts} -nr | "${adb_awk}" '{ORS=" ";if(NR==1)printf "{ \"count\": \"%s\", \"address\": \"%s\" }",$1,$2; else if(NR<10)printf ", { \"count\": \"%s\", \"address\": \"%s\" }",$1,$2}' >> "${adb_reportdir}/adb_report.json"
+ "${adb_awk}" '{print $3}' "${adb_reportdir}/adb_report.srt" | "${adb_sort}" ${adb_srtopts} | uniq -c | \
+ "${adb_sort}" ${adb_srtopts} -nr | "${adb_awk}" '{ORS=" ";if(NR==1)printf "{ \"count\": \"%s\", \"address\": \"%s\" }",$1,$2; else if(NR<10)printf ", { \"count\": \"%s\", \"address\": \"%s\" }",$1,$2}' >> "${adb_reportdir}/adb_report.json"
;;
"top_domains")
- "${adb_awk}" '{if($5!="NX")print $4}' "${adb_reportdir}/adb_report.srt" | sort ${adb_srtopts} | uniq -c | \
- sort ${adb_srtopts} -nr | "${adb_awk}" '{ORS=" ";if(NR==1)printf "{ \"count\": \"%s\", \"address\": \"%s\" }",$1,$2; else if(NR<10)printf ", { \"count\": \"%s\", \"address\": \"%s\" }",$1,$2}' >> "${adb_reportdir}/adb_report.json"
+ "${adb_awk}" '{if($5!="NX")print $4}' "${adb_reportdir}/adb_report.srt" | "${adb_sort}" ${adb_srtopts} | uniq -c | \
+ "${adb_sort}" ${adb_srtopts} -nr | "${adb_awk}" '{ORS=" ";if(NR==1)printf "{ \"count\": \"%s\", \"address\": \"%s\" }",$1,$2; else if(NR<10)printf ", { \"count\": \"%s\", \"address\": \"%s\" }",$1,$2}' >> "${adb_reportdir}/adb_report.json"
;;
"top_blocked")
- "${adb_awk}" '{if($5=="NX")print $4}' "${adb_reportdir}/adb_report.srt" | sort ${adb_srtopts} | uniq -c | \
- sort ${adb_srtopts} -nr | "${adb_awk}" '{ORS=" ";if(NR==1)printf "{ \"count\": \"%s\", \"address\": \"%s\" }",$1,$2; else if(NR<10)printf ", { \"count\": \"%s\", \"address\": \"%s\" }",$1,$2}' >> "${adb_reportdir}/adb_report.json"
+ "${adb_awk}" '{if($5=="NX")print $4}' "${adb_reportdir}/adb_report.srt" | "${adb_sort}" ${adb_srtopts} | uniq -c | \
+ "${adb_sort}" ${adb_srtopts} -nr | "${adb_awk}" '{ORS=" ";if(NR==1)printf "{ \"count\": \"%s\", \"address\": \"%s\" }",$1,$2; else if(NR<10)printf ", { \"count\": \"%s\", \"address\": \"%s\" }",$1,$2}' >> "${adb_reportdir}/adb_report.json"
;;
esac
printf "%s" " ], " >> "${adb_reportdir}/adb_report.json"
elif json_get_type status "${top}" && [ "${top}" = "requests" ] && [ "${status}" = "array" ]
then
printf "%s\\n%s\\n%s\\n" ":::" "::: Latest DNS Queries" ":::"
- printf "%-15s%-15s%-45s%-50s%s\\n" "Date" "Time" "Client" "Domain" "Answer"
+ printf "%-15s%-15s%-45s%-80s%s\\n" "Date" "Time" "Client" "Domain" "Answer"
json_select "${top}"
index=1
while json_get_type status "${index}" && [ "${status}" = "object" ]
do
json_get_values item "${index}"
- printf "%-15s%-15s%-45s%-50s%s\\n" ${item}
+ printf "%-15s%-15s%-45s%-80s%s\\n" ${item}
index=$((index+1))
done
fi
f_log "debug" "f_report ::: action: ${adb_action}, report: ${adb_report}, search: ${1}, count: ${2}, process: ${3}, print: ${4}, dump_util: ${adb_dumpcmd}, repdir: ${adb_reportdir}, repiface: ${adb_repiface:-"-"}, replisten: ${adb_replisten}, repchunksize: ${adb_repchunksize}, repchunkcnt: ${adb_repchunkcnt}, bg_pid: ${bg_pid}"
}
+# source required system libraries
+#
+if [ -r "/lib/functions.sh" ] && [ -r "/lib/functions/network.sh" ] && [ -r "/usr/share/libubox/jshn.sh" ]
+then
+ . "/lib/functions.sh"
+ . "/lib/functions/network.sh"
+ . "/usr/share/libubox/jshn.sh"
+else
+ f_log "err" "system libraries not found"
+fi
+
# awk selection
#
adb_awk="$(command -v gawk)"
if [ -z "${adb_awk}" ]
then
adb_awk="$(command -v awk)"
+ if [ -z "${adb_awk}" ]
+ then
+ f_log "err" "awk not found"
+ fi
fi
-# source required system libraries
+# sort selection
#
-if [ -r "/lib/functions.sh" ] && [ -r "/lib/functions/network.sh" ] && [ -r "/usr/share/libubox/jshn.sh" ]
+adb_sort="$(command -v gnu-sort)"
+if [ -z "${adb_sort}" ]
then
- . "/lib/functions.sh"
- . "/lib/functions/network.sh"
- . "/usr/share/libubox/jshn.sh"
-else
- f_log "err" "system libraries not found"
+ adb_sort="$(command -v sort)"
+ if [ -z "$("${adb_sort}" --help 2>/dev/null | grep -Fo -m1 "coreutils")" ]
+ then
+ f_log "err" "coreutils sort not found"
+ fi
fi
# version information
"focus": "tracking",
"descurl": "https://github.com/Perflyst/PiHoleBlocklist"
},
+ "games_tracking": {
+ "url": "https://raw.githubusercontent.com/KodoPengin/GameIndustry-hosts-Template/master/Main%20template/hosts",
+ "rule": "/^0\\.0\\.0\\.0[[:space:]]+([[:alnum:]_-]{1,63}\\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower($2)}",
+ "size": "S",
+ "focus": "tracking",
+ "descurl": "https://www.gameindustry.eu"
+ },
"gaming": {
"url": "https://raw.githubusercontent.com/stopgaming/pihole-blocklist/master/game.txt",
"rule": "/^0\\.0\\.0\\.0[[:space:]]+([[:alnum:]_-]{1,63}\\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower($2)}",
"descurl": "https://github.com/abyssin/pihole-blocklist"
},
"malwaredomains": {
- "url": "https://mirror1.malwaredomains.com/files/justdomains",
+ "url": "https://mirror.cedia.org.ec/malwaredomains/justdomains",
"rule": "/^([[:alnum:]_-]{1,63}\\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower($1)}",
"size": "M",
"focus": "malware",
"descurl": "https://www.malwaredomains.com"
},
- "malwarelist": {
- "url": "https://www.malwaredomainlist.com/hostslist/hosts.txt",
- "rule": "/^127\\.0\\.0\\.1[[:space:]]+([[:alnum:]_-]{1,63}\\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower($2)}",
- "size": "S",
- "focus": "malware",
- "descurl": "https://www.malwaredomainlist.com"
- },
"notracking": {
"url": "https://raw.githubusercontent.com/notracking/hosts-blocklists/master/dnscrypt-proxy/dnscrypt-proxy.blacklist.txt",
"rule": "/^([[:alnum:]_-]{1,63}\\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower($1)}",
"focus": "win_telemetry",
"descurl": "https://github.com/crazy-max/WindowsSpyBlocker"
},
- "youtube": {
- "url": "https://raw.githubusercontent.com/kboghdady/youTube_ads_4_pi-hole/master/black.list",
- "rule": "/^([[:alnum:]_-]{1,63}\\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower($1)}",
- "size": "M",
- "focus": "youtube",
- "descurl": "https://github.com/kboghdady/youTube_ads_4_pi-hole"
- },
"yoyo": {
"url": "https://pgl.yoyo.org/adservers/serverlist.php?hostformat=nohtml&showintro=0&mimetype=plaintext",
"rule": "/^([[:alnum:]_-]{1,63}\\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower($1)}",
include $(TOPDIR)/rules.mk
PKG_NAME:=adguardhome
-PKG_VERSION:=0.104.1
+PKG_VERSION:=0.104.3
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=v$(PKG_VERSION)
PKG_SOURCE_URL:=https://github.com/AdguardTeam/AdGuardHome
-PKG_MIRROR_HASH:=3abbbf0531fd991a96dc2ea32aaaa9ab65dee5f40bb71e5939ddd068bbb17f7c
+PKG_MIRROR_HASH:=9051c08ebefccd918cad9b487d2d3b2c4b276ac71f16706c2ae8ee2a37ba9d03
PKG_LICENSE:=GPL-3.0-only
PKG_LICENSE_FILES:=LICENSE.txt
PKG_NAME:=ariang
PKG_VERSION:=1.1.7
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/mayswind/AriaNg-DailyBuild/tar.gz/$(PKG_VERSION)?
$(PKG_BUILD_DIR)/index.html \
$(PKG_BUILD_DIR)/index.manifest \
$(PKG_BUILD_DIR)/LICENSE \
- $(PKG_BUILD_DIR)/favicon.ico \
+ $(PKG_BUILD_DIR)/{favicon.*,*.png} \
+ $(PKG_BUILD_DIR)/robots.txt \
$(1)/www/ariang
endef
PKG_NAME:=atftp
PKG_VERSION:=0.7.2
-PKG_RELEASE:=4
+PKG_RELEASE:=5
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/$(PKG_NAME)
-diff --git a/tftpd.h b/tftpd.h
-index 945065e..4c2f214 100644
--- a/tftpd.h
+++ b/tftpd.h
@@ -46,7 +46,7 @@ struct thread_data {
-diff --git a/tftp_io.c b/tftp_io.c
-index 605a9c2..6cce1f4 100644
--- a/tftp_io.c
+++ b/tftp_io.c
-@@ -64,7 +64,7 @@ int tftp_send_request(int socket, struct sockaddr_storage *sa, short type,
+@@ -64,7 +64,7 @@ int tftp_send_request(int socket, struct
buf_index += strlen(mode);
buf_index++;
-diff --git a/tftp_def.c b/tftp_def.c
-index 96abdc5..16240f7 100644
--- a/tftp_def.c
+++ b/tftp_def.c
-@@ -141,7 +141,7 @@ int print_eng(double value, char *string, int size, char *format)
+@@ -133,7 +133,7 @@ int print_eng(double value, char *string
/*
* This is a strncpy function that take care of string NULL termination
*/
{
strncpy(to, from, size);
if (size>0)
-diff --git a/tftp_def.h b/tftp_def.h
-index e4b338d..4418ee7 100644
--- a/tftp_def.h
+++ b/tftp_def.h
-@@ -50,7 +50,7 @@ extern char *tftp_errmsg[9];
+@@ -51,7 +51,7 @@ extern char *tftp_errmsg[9];
int timeval_diff(struct timeval *res, struct timeval *t1, struct timeval *t0);
int print_eng(double value, char *string, int size, char *format);
int Gethostbyname(char *addr, struct hostent *host);
char *sockaddr_print_addr(const struct sockaddr_storage *, char *, size_t);
-diff --git a/tftpd.h b/tftpd.h
-index 945065e..4bd3f17 100644
--- a/tftpd.h
+++ b/tftpd.h
-@@ -93,7 +93,7 @@ int tftpd_list_find_multicast_server_and_add(struct thread_data **thread,
+@@ -93,7 +93,7 @@ int tftpd_list_find_multicast_server_and
/*
* Defined in tftpd_list.c, operation on client structure list.
*/
void tftpd_clientlist_remove(struct thread_data *thread,
struct client_info *client);
void tftpd_clientlist_free(struct thread_data *thread);
-diff --git a/tftpd_list.c b/tftpd_list.c
-index f376159..159ffca 100644
--- a/tftpd_list.c
+++ b/tftpd_list.c
-@@ -201,7 +201,7 @@ int tftpd_list_find_multicast_server_and_add(struct thread_data **thread,
+@@ -201,7 +201,7 @@ int tftpd_list_find_multicast_server_and
return 0;
}
{
pthread_mutex_lock(&thread->client_mutex);
thread->client_ready = 1;
---
-2.1.4
-
/* Make a '\0' separated arg vector from a SEP separated list in
STRING, returning it in ARGZ, and the total length in LEN. If a
-@@ -69,65 +68,65 @@ extern error_t argz_create (char *__const __argv[], char **__restrict __argz,
+@@ -69,65 +68,65 @@ extern error_t argz_create (char *__cons
The result can be destroyed using free. */
extern error_t __argz_create_sep (__const char *__restrict __string,
int __sep, char **__restrict __argz,
/* Insert ENTRY into ARGZ & ARGZ_LEN before BEFORE, which should be an
existing entry in ARGZ; if BEFORE is NULL, ENTRY is appended to the end.
-@@ -138,11 +137,11 @@ extern void argz_delete (char **__restrict __argz,
+@@ -138,11 +137,11 @@ extern void argz_delete (char **__restri
extern error_t __argz_insert (char **__restrict __argz,
size_t *__restrict __argz_len,
char *__restrict __before,
/* Replace any occurrences of the string STR in ARGZ with WITH, reallocating
ARGZ as necessary. If REPLACE_COUNT is non-zero, *REPLACE_COUNT will be
-@@ -173,9 +172,9 @@ extern error_t argz_replace (char **__restrict __argz,
+@@ -173,11 +172,11 @@ extern error_t argz_replace (char **__re
...;
*/
extern char *__argz_next (__const char *__restrict __argz, size_t __argz_len,
- __const char *__restrict __entry) __THROW;
+ __const char *__restrict __entry) __attribute__ ((__nothrow__));
- #ifdef __USE_EXTERN_INLINES
+-#ifdef __USE_EXTERN_INLINES
++#if 0
extern inline char *
-@@ -200,6 +199,8 @@ argz_next (__const char *__argz, size_t __argz_len,
+ __argz_next (__const char *__argz, size_t __argz_len,
+ __const char *__entry)
+@@ -200,6 +199,8 @@ argz_next (__const char *__argz, size_t
}
#endif /* Use extern inlines. */
include $(TOPDIR)/rules.mk
PKG_NAME:=banip
-PKG_VERSION:=0.3.12
-PKG_RELEASE:=3
+PKG_VERSION:=0.3.13
+PKG_RELEASE:=1
PKG_LICENSE:=GPL-3.0-or-later
PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
#
LC_ALL=C
PATH="/usr/sbin:/usr/bin:/sbin:/bin"
-ban_ver="0.3.12"
+ban_ver="0.3.13"
ban_basever=""
ban_enabled=0
ban_automatic="1"
f_iptrule "-I" "${wan_forward} -j ${ban_chain}"
if [ "${src_name##*_}" != "6" ]
then
- # special IPv4 rules
f_iptrule "-A" "${ban_chain} -p udp --dport 67:68 --sport 67:68 -j RETURN"
+ else
+ f_iptrule "-A" "${ban_chain} -p udp -s fc00::/6 --sport 547 -d fc00::/6 --dport 546 -j RETURN"
+ f_iptrule "-A" "${ban_chain} -p ipv6-icmp -s fe80::/10 -d fe80::/10 -j RETURN"
fi
for dev in ${ban_dev}
do
f_iptrule "-I" "${lan_forward} -j ${ban_chain}"
if [ "${src_name##*_}" != "6" ]
then
- # special IPv4 rules
f_iptrule "-A" "${ban_chain} -p udp --dport 67:68 --sport 67:68 -j RETURN"
+ else
+ f_iptrule "-A" "${ban_chain} -p udp -s fc00::/6 --sport 547 -d fc00::/6 --dport 546 -j RETURN"
+ f_iptrule "-A" "${ban_chain} -p ipv6-icmp -s fe80::/10 -d fe80::/10 -j RETURN"
fi
for dev in ${ban_dev}
do
PKG_NAME:=bfdd
PKG_SOURCE_DATE:=2019-08-22
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE_VERSION:=c54534beb524afc3972039f57b56ec65332b43f7
PKG_SOURCE_URL:=https://codeload.github.com/rzalamena/bfdd/tar.gz/$(PKG_SOURCE_VERSION)?
/etc/bfdd/bfdd.json
endef
-TARGET_CFLAGS += -D_GNU_SOURCE
-
define Package/bfdd/install
$(INSTALL_DIR) \
$(1)/usr/sbin \
---- a/bfd_packet.c 2019-08-15 02:45:47.270120616 +0300
-+++ b/bfd_packet.c 2019-08-15 02:44:38.266117706 +0300
-@@ -34,7 +34,6 @@
+--- a/bfd_packet.c
++++ b/bfd_packet.c
+@@ -29,12 +29,15 @@
+ #define _UAPI_IPV6_H
+ #endif /* _UAPI_IPV6_H */
+
++#include <features.h>
+ #include <linux/filter.h>
+ #include <linux/if_ether.h>
#include <linux/if_packet.h>
#include <linux/udp.h>
#include <linux/ip.h>
--#include <linux/ipv6.h>
++#ifdef __GLIBC__
+ #include <linux/ipv6.h>
++#endif
#include <arpa/inet.h>
#include <sys/types.h>
+++ /dev/null
-diff --git a/bfd_packet.c b/bfd_packet.c
-index e8f99f9..2c9fa91 100644
---- a/bfd_packet.c
-+++ b/bfd_packet.c
-@@ -29,6 +29,8 @@
- #define _UAPI_IPV6_H
- #endif /* _UAPI_IPV6_H */
-
-+#define _GNU_SOURCE
-+
- #include <linux/filter.h>
- #include <linux/if_ether.h>
- #include <linux/if_packet.h>
PKG_NAME:=bind
PKG_VERSION:=9.16.8
-PKG_RELEASE:=1
+PKG_RELEASE:=3
USERID:=bind=57:bind=57
PKG_MAINTAINER:=Noah Meyerhans <frodo@morgul.net>
./files/bind/db.root \
./files/bind/bind.keys \
$(1)/etc/bind/
+ sed -e '1s/ broadcast / empty rfc1918 /' \
+ < ./files/bind/db.0 \
+ > $(1)/etc/bind/db.empty
$(CP) ./files/bind/named.conf.example $(1)/etc/bind/named.conf
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/named.init $(1)/etc/init.d/named
auth-nxdomain no; # conform to RFC1035
};
+include "/etc/bind/named-rndc.conf";
+
+include "/tmp/bind/named.conf.local";
+
// prime the server with knowledge of the root servers
zone "." {
type hint;
USE_PROCD=1
-START=50
+START=22
config_file=/etc/bind/named.conf
+config_dir=$(dirname $config_file)
+named_options_file=/etc/bind/named-rndc.conf
+rndc_conf_file=/etc/bind/rndc.conf
pid_file=/var/run/named/named.pid
+rndc_temp=$(mktemp /tmp/rndc-confgen.XXXXXX)
logdir=/var/log/named/
cachedir=/var/cache/bind
libdir=/var/lib/bind
+dyndir=/tmp/bind
+
+conf_local_file=$dyndir/named.conf.local
+
fix_perms() {
- for dir in $libdir $logdir $cachedir; do
+ for dir in $libdir $logdir $cachedir $dyndir; do
test -e "$dir" || {
mkdir -p "$dir"
chgrp bind "$dir"
done
}
+reload_service() {
+ rndc -q reload
+}
+
start_service() {
user_exists bind 57 || user_add bind 57
group_exists bind 57 || group_add bind 57
fix_perms
+
+ rndc-confgen > $rndc_temp
+
+ sed -r -n \
+ -e '/^# options \{$/,/^\};$/{ s/^/# / }' \
+ -e p \
+ -e '/^# End of rndc\.conf$/q' \
+ < $rndc_temp > $rndc_conf_file
+
+ sed -r -n \
+ -e '1,/^# End of rndc\.conf$/ { b done }' \
+ -e '/^# Use with the following in named.conf/ { p ; b done }' \
+ -e '/^# End of named\.conf$/ { p ; b done }' \
+ -e '/^# key /,$ { s/^# // ; p }' \
+ -e ': done' \
+ < $rndc_temp > $named_options_file
+
+ rm -f $rndc_temp
+
+ touch $conf_local_file
+
procd_open_instance
procd_set_param command /usr/sbin/named -u bind -f -c $config_file
+ procd_set_param file $config_file \
+ $config_dir/bind.keys \
+ $named_options_file \
+ $conf_local_file \
+ $config_dir/db.*
procd_set_param respawn
procd_close_instance
}
PKG_NAME:=bridge-utils
PKG_VERSION:=1.7
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/linux/kernel/people/shemminger/bridge-utils
CATEGORY:=Base system
TITLE:=Ethernet bridging configuration utility
URL:=http://www.linuxfromscratch.org/blfs/view/svn/basicnet/bridge-utils.html
- ALTERNATIVES:=300:/usr/sbin/brctl:/usr/libexec/bridge-utils-brctl
+ ALTERNATIVES:=300:/usr/sbin/brctl:/usr/libexec/brctl-bridge-utils
endef
define Package/bridge/description
define Package/bridge/install
$(INSTALL_DIR) $(1)/usr/libexec
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/brctl $(1)/usr/libexec/bridge-utils-brctl
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/brctl $(1)/usr/libexec/brctl-bridge-utils
endef
$(eval $(call BuildPackage,bridge))
PKG_NAME:=cifs-utils
PKG_VERSION:=6.11
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://download.samba.org/pub/linux-cifs/cifs-utils/
define Package/cifsmount/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/sbin/mount.cifs $(1)/usr/sbin/
- $(LN) /usr/sbin/mount.cifs $(1)/usr/sbin/mount.smb3
+ $(LN) mount.cifs $(1)/usr/sbin/mount.smb3
endef
define Package/smbinfo/install
include $(TOPDIR)/rules.mk
PKG_NAME:=conntrack-tools
+PKG_VERSION:=1.4.6
PKG_RELEASE:=1
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://git.netfilter.org/conntrack-tools
-PKG_SOURCE_DATE:=2018-05-01
-PKG_SOURCE_VERSION:=88610abee7e58f4da7ec6f198e00ff70a92c870f
-PKG_MIRROR_HASH:=cccc5e25e3cb159385b170f63f9b7fd2186f68d32239718080f605c060ea1cb8
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=https://www.netfilter.org/projects/conntrack-tools/files
+PKG_HASH:=590859cc848245dbfd9c6487761dd303b3a1771e007f4f42213063ca56205d5f
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
-PKG_LICENSE:=GPL-2.0
-PKG_CPE_ID:=cpe:/a:conntrack-tools_project:conntrack-tools
+PKG_LICENSE:=GPL-2.0-or-later
+PKG_LICENSE_FILES:=COPYING
+PKG_CPE_ID:=cpe:/a:netfilter:conntrack-tools
-PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
-
+PKG_BUILD_PARALLEL:=1
PKG_BUILD_DEPENDS:=libtirpc
include $(INCLUDE_DIR)/package.mk
CATEGORY:=Network
DEPENDS:=+libnetfilter-conntrack +libnetfilter-cttimeout +libnetfilter-cthelper +libnetfilter-queue
SUBMENU:=Firewall
- URL:=http://conntrack-tools.netfilter.org/
+ URL:=https://conntrack-tools.netfilter.org/
endef
define Package/conntrack
+++ /dev/null
---- a/configure.ac
-+++ b/configure.ac
-@@ -50,6 +50,25 @@
- AS_HELP_STRING([--enable-systemd], [Build systemd support]),
- [enable_systemd="$enableval"], [enable_systemd="no"])
-
-+AC_ARG_WITH([libtirpc],
-+ AS_HELP_STRING([--with-libtirpc], [Use libtirpc as RPC implementation (instead of sunrpc)]),
-+ [], [ with_libtirpc=no ])
-+
-+AS_IF([test "x$with_libtirpc" != xno],
-+ [PKG_CHECK_MODULES([TIRPC],
-+ [libtirpc],
-+ [RPC_CFLAGS=$TIRPC_CFLAGS; RPC_LIBS=$TIRPC_LIBS;],
-+ [AC_MSG_ERROR([libtirpc requested, but library not found.])]
-+ )],
-+ [AC_CHECK_HEADER(rpc/rpc.h,
-+ [RPC_CFLAGS=""; RPC_LIBS="";],
-+ [AC_MSG_ERROR([sunrpc requested, but headers are not present.])]
-+ )]
-+)
-+
-+AC_SUBST(RPC_CFLAGS)
-+AC_SUBST(RPC_LIBS)
-+
- PKG_CHECK_MODULES([LIBNFNETLINK], [libnfnetlink >= 1.0.1])
- PKG_CHECK_MODULES([LIBMNL], [libmnl >= 1.0.3])
- PKG_CHECK_MODULES([LIBNETFILTER_CONNTRACK], [libnetfilter_conntrack >= 1.0.7])
---- a/src/helpers/Makefile.am
-+++ b/src/helpers/Makefile.am
-@@ -30,8 +30,8 @@
- ct_helper_mdns_la_CFLAGS = $(HELPER_CFLAGS)
-
- ct_helper_rpc_la_SOURCES = rpc.c
--ct_helper_rpc_la_LDFLAGS = $(HELPER_LDFLAGS)
--ct_helper_rpc_la_CFLAGS = $(HELPER_CFLAGS)
-+ct_helper_rpc_la_LDFLAGS = $(HELPER_LDFLAGS) $(RPC_LIBS)
-+ct_helper_rpc_la_CFLAGS = $(HELPER_CFLAGS) $(RPC_CFLAGS)
-
- ct_helper_tftp_la_SOURCES = tftp.c
- ct_helper_tftp_la_LDFLAGS = $(HELPER_LDFLAGS)
PKG_NAME:=coova-chilli
PKG_VERSION:=1.5
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/coova/coova-chilli/tar.gz/$(PKG_VERSION)?
DISABLE_NLS=
-TARGET_CFLAGS += $(FPIC) -Wno-address-of-packed-member
+TARGET_CFLAGS += $(FPIC) -Wno-error
CONFIGURE_VARS += \
ARCH="$(LINUX_KARCH)" \
include $(TOPDIR)/rules.mk
PKG_NAME:=curl
-PKG_VERSION:=7.73.0
+PKG_VERSION:=7.74.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
https://curl.mirror.anstey.ca/ \
https://curl.askapache.com/download/ \
https://curl.haxx.se/download/
-PKG_HASH:=7c4c7ca4ea88abe00fea4740dcf81075c031b1d0bb23aff2d5efde20a3c2408a
+PKG_HASH:=999d5f2c403cf6e25d58319fdd596611e455dd195208746bc6e6d197a77e878b
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=COPYING
PKG_CPE_ID:=cpe:/a:haxx:libcurl
PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
PKG_CONFIG_DEPENDS:= \
$(call autoconf_bool,CONFIG_LIBCURL_UNIX_SOCKETS,unix-sockets) \
$(call autoconf_bool,CONFIG_LIBCURL_VERBOSE,verbose) \
-define Build/Compile
- +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- CC="$(TARGET_CC)" \
- install
-endef
-
define Build/InstallDev
$(INSTALL_DIR) $(2)/bin $(1)/usr/bin $(1)/usr/include $(1)/usr/lib $(1)/usr/lib/pkgconfig
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/curl-config $(1)/usr/bin/
$(CP) $(PKG_INSTALL_DIR)/usr/include/curl $(1)/usr/include/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libcurl.{a,so*} $(1)/usr/lib/
$(CP) $(PKG_BUILD_DIR)/libcurl.pc $(1)/usr/lib/pkgconfig/
- $(SED) 's,-L$$$${exec_prefix}/lib,,g' $(1)/usr/bin/curl-config
+ $(SED) 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' $(1)/usr/bin/curl-config
[ -n "$(TARGET_LDFLAGS)" ] && $(SED) 's#$(TARGET_LDFLAGS)##g' $(1)/usr/lib/pkgconfig/libcurl.pc || true
$(LN) $(STAGING_DIR)/usr/bin/curl-config $(2)/bin/
endef
+++ /dev/null
-From a3d5b199f96a108f38bd1f6adaf3a7585f721d02 Mon Sep 17 00:00:00 2001
-From: Daniel Stenberg <daniel@haxx.se>
-Date: Thu, 15 Oct 2020 22:56:13 +0200
-Subject: [PATCH] openssl: acknowledge SRP disabling in configure properly
-
-Follow-up to 68a513247409
-
-Use a new separate define that is the combination of both
-HAVE_OPENSSL_SRP and USE_TLS_SRP: USE_OPENSSL_SRP
-
-Bug: https://curl.haxx.se/mail/lib-2020-10/0037.html
-
-Closes #6094
----
- lib/vtls/openssl.c | 16 ++++++++++++----
- 1 file changed, 12 insertions(+), 4 deletions(-)
-
---- a/lib/vtls/openssl.c
-+++ b/lib/vtls/openssl.c
-@@ -225,6 +225,14 @@
- "ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH"
- #endif
-
-+#ifdef HAVE_OPENSSL_SRP
-+/* the function exists */
-+#ifdef USE_TLS_SRP
-+/* the functionality is not disabled */
-+#define USE_OPENSSL_SRP
-+#endif
-+#endif
-+
- struct ssl_backend_data {
- /* these ones requires specific SSL-types */
- SSL_CTX* ctx;
-@@ -2471,7 +2479,7 @@ static CURLcode ossl_connect_step1(struc
- #endif
- #endif
- const long int ssl_version = SSL_CONN_CONFIG(version);
--#ifdef HAVE_OPENSSL_SRP
-+#ifdef USE_OPENSSL_SRP
- const enum CURL_TLSAUTH ssl_authtype = SSL_SET_OPTION(authtype);
- #endif
- char * const ssl_cert = SSL_SET_OPTION(primary.clientcert);
-@@ -2516,7 +2524,7 @@ static CURLcode ossl_connect_step1(struc
- failf(data, OSSL_PACKAGE " was built without SSLv2 support");
- return CURLE_NOT_BUILT_IN;
- #else
--#ifdef HAVE_OPENSSL_SRP
-+#ifdef USE_OPENSSL_SRP
- if(ssl_authtype == CURL_TLSAUTH_SRP)
- return CURLE_SSL_CONNECT_ERROR;
- #endif
-@@ -2529,7 +2537,7 @@ static CURLcode ossl_connect_step1(struc
- failf(data, OSSL_PACKAGE " was built without SSLv3 support");
- return CURLE_NOT_BUILT_IN;
- #else
--#ifdef HAVE_OPENSSL_SRP
-+#ifdef USE_OPENSSL_SRP
- if(ssl_authtype == CURL_TLSAUTH_SRP)
- return CURLE_SSL_CONNECT_ERROR;
- #endif
-@@ -2797,7 +2805,7 @@ static CURLcode ossl_connect_step1(struc
- }
- #endif
-
--#ifdef HAVE_OPENSSL_SRP
-+#ifdef USE_OPENSSL_SRP
- if(ssl_authtype == CURL_TLSAUTH_SRP) {
- char * const ssl_username = SSL_SET_OPTION(username);
-
PKG_NAME:=darkstat
PKG_VERSION:=3.0.719
-PKG_RELEASE:=5
+PKG_RELEASE:=6
PKG_MAINTAINER:=Jean-Michel Lacroix <lacroix@lepine-lacroix.info>
--- /dev/null
+--- a/acct.c
++++ b/acct.c
+@@ -37,8 +37,9 @@
+
+ uint64_t acct_total_packets = 0, acct_total_bytes = 0;
+
++#define LOCAL_NET_MAX 10
+ static int using_localnet4 = 0, using_localnet6 = 0;
+-static struct addr localnet4, localmask4, localnet6, localmask6;
++static struct addr localnet4[LOCAL_NET_MAX], localmask4[LOCAL_NET_MAX], localnet6[LOCAL_NET_MAX], localmask6[LOCAL_NET_MAX];
+
+ /* Parse the net/mask specification into two IPs or die trying. */
+ void
+@@ -120,13 +121,19 @@ acct_init_localnet(const char *spec)
+ /* Register the correct netmask and calculate the correct net. */
+ addr_mask(&localnet, &localmask);
+ if (localnet.family == IPv6) {
+- using_localnet6 = 1;
+- localnet6 = localnet;
+- localmask6 = localmask;
++ if(using_localnet6 >= LOCAL_NET_MAX){
++ errx(1, "Exceeded maximum IPv6 local networks");
++ }
++ localnet6[using_localnet6] = localnet;
++ localmask6[using_localnet6] = localmask;
++ using_localnet6++;
+ } else {
+- using_localnet4 = 1;
+- localnet4 = localnet;
+- localmask4 = localmask;
++ if(using_localnet4 >= LOCAL_NET_MAX){
++ errx(1, "Exceeded maximum IPv4 local networks");
++ }
++ localnet4[using_localnet4] = localnet;
++ localmask4[using_localnet4] = localmask;
++ using_localnet4++;
+ }
+
+ verbosef("local network address: %s", addr_to_str(&localnet));
+@@ -138,11 +145,15 @@ static int addr_is_local(const struct addr * const a,
+ if (is_localip(a, local_ips))
+ return 1;
+ if (a->family == IPv4 && using_localnet4) {
+- if (addr_inside(a, &localnet4, &localmask4))
+- return 1;
++ for (int i=0; i < using_localnet4; i++){
++ if (addr_inside(a, &localnet4[i], &localmask4[i]))
++ return 1;
++ }
+ } else if (a->family == IPv6 && using_localnet6) {
+- if (addr_inside(a, &localnet6, &localmask6))
+- return 1;
++ for (int i=0; i < using_localnet6; i++){
++ if (addr_inside(a, &localnet6[i], &localmask6[i]))
++ return 1;
++ }
+ }
+ return 0;
+ }
+--- a/darkstat.c
++++ b/darkstat.c
+@@ -193,7 +193,7 @@ static struct cmdline_arg cmdline_args[] = {
+ {"-r", "capfile", cb_capfile, 0},
+ {"-p", "port", cb_port, 0},
+ {"-b", "bindaddr", cb_bindaddr, -1},
+- {"-l", "network/netmask", cb_local, 0},
++ {"-l", "network/netmask", cb_local, -1},
+ {"--base", "path", cb_base, 0},
+ {"--local-only", NULL, cb_local_only, 0},
+ {"--snaplen", "bytes", cb_snaplen, 0},
include $(TOPDIR)/rules.mk
PKG_NAME:=dawn
-PKG_SOURCE_DATE:=2020-09-03
+PKG_SOURCE_DATE:=2020-12-31
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/berlin-open-wireless-lab/DAWN.git
-PKG_SOURCE_VERSION:=b639145ce90230e693c41e71624ea0c0798c424d
-PKG_MIRROR_HASH:=e31113da86e4b3b013d073f288d0d77315ce67830b0fc669fa96917667a03d9c
+PKG_SOURCE_VERSION:=8ce09d64def9a1ad4bbf57dd3fe724a8a9b93334
+PKG_MIRROR_HASH:=cc33ca6ab1c4bd3e9e2a7a380700c6c15d222b3fd7064a3ce2963abb0965f078
PKG_MAINTAINER:=Nick Hainke <vincent@systemli.org>
PKG_LICENSE:=GPL-2.0-only
PKG_NAME:=ddns-scripts
PKG_VERSION:=2.8.2
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_LICENSE:=GPL-2.0
endef
+define Package/ddns-scripts-gandi
+ $(call Package/ddns-scripts/Default)
+ TITLE:=Gandi API
+ DEPENDS:=ddns-scripts +curl
+endef
+
+define Package/ddns-scripts-gandi/description
+ Dynamic DNS Client scripts extension for "gandi.net".
+ It requires:
+ "option username" to be a valid subdomain for gandi.net
+ "option password" to be a valid API key for ganid.net
+endef
+
+
define Build/Configure
endef
rm $(1)/usr/share/ddns/default/bind-nsupdate.json
rm $(1)/usr/share/ddns/default/route53-v1.json
rm $(1)/usr/share/ddns/default/cnkuai.cn.json
+ rm $(1)/usr/share/ddns/default/gandi.net.json
endef
endef
+define Package/ddns-scripts-gandi/install
+ $(INSTALL_DIR) $(1)/usr/lib/ddns
+ $(INSTALL_BIN) ./files/usr/lib/ddns/update_gandi_net.sh \
+ $(1)/usr/lib/ddns
+
+ $(INSTALL_DIR) $(1)/usr/share/ddns/default
+ $(INSTALL_DATA) ./files/usr/share/ddns/default/gandi.net.json \
+ $(1)/usr/share/ddns/default
+endef
+
+define Package/ddns-scripts-gandi/prerm
+#!/bin/sh
+if [ -z "$${IPKG_INSTROOT}" ]; then
+ /etc/init.d/ddns stop
+fi
+exit 0
+endef
+
+
$(eval $(call BuildPackage,ddns-scripts))
$(eval $(call BuildPackage,ddns-scripts-services))
$(eval $(call BuildPackage,ddns-scripts-cloudflare))
$(eval $(call BuildPackage,ddns-scripts-nsupdate))
$(eval $(call BuildPackage,ddns-scripts-route53))
$(eval $(call BuildPackage,ddns-scripts-cnkuai))
+$(eval $(call BuildPackage,ddns-scripts-gandi))
--- /dev/null
+#!/bin/sh
+# Thanks goes to Alex Griffin who provided this script.
+
+local __TTL=600
+local __RRTYPE
+local __ENDPOINT="https://dns.api.gandi.net/api/v5"
+
+[ -z "$username" ] && write_log 14 "Service section not configured correctly! Missing subdomain as 'username'"
+[ -z "$password" ] && write_log 14 "Service section not configured correctly! Missing API Key as 'password'"
+
+[ $use_ipv6 -ne 0 ] && __RRTYPE="AAAA" || __RRTYPE="A"
+
+curl -s -X PUT "$__ENDPOINT/domains/$domain/records/$username/$__RRTYPE" \
+ -H "X-Api-Key: $password" \
+ -H "Content-Type: application/json" \
+ -d "{\"rrset_ttl\": $__TTL, \"rrset_values\": [\"$__IP\"]}" >$DATFILE
+
+write_log 7 "gandi.net answered: $(cat $DATFILE)"
+
+return 0
--- /dev/null
+{
+ "name": "gandi.net",
+ "ipv4": {
+ "url": "update_gandi_net.sh"
+ },
+ "ipv6": {
+ "url": "update_gandi_net.sh"
+ }
+}
include $(TOPDIR)/rules.mk
PKG_NAME:=dnstap
-PKG_VERSION:=0.2.2
+PKG_VERSION:=0.3.0
PKG_RELEASE:=1
PKG_SOURCE:=golang-dnstap-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/dnstap/golang-dnstap/archive/v$(PKG_VERSION)/
-PKG_HASH:=c7eb42f1f0ca7247b22b774dd78d9874b9db776fa9072f92a5f3a945000b7a60
+PKG_HASH:=8ccdb881cb225459c6607830f9d7761821255a81406ee4141fc61d5f4f8d4cb1
PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
PKG_LICENSE:=Apache-2.0
PKG_NAME:=freeradius3
PKG_VERSION:=3_0_21
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=release_$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/FreeRADIUS/freeradius-server/archive
define Package/freeradius3-common
$(call Package/freeradius3/Default)
TITLE:=common files
- DEPENDS:=+USE_GLIBC:libpthread +FREERADIUS3_OPENSSL:libopenssl +libcap +libpcap +libncurses +libpcre +libreadline +libtalloc +libatomic
+ DEPENDS:=+USE_GLIBC:libpthread +USE_GLIBC:libbsd +FREERADIUS3_OPENSSL:libopenssl +libcap +libpcap +libncurses +libpcre +libreadline +libtalloc +libatomic
endef
define Package/freeradius3-default
include $(TOPDIR)/rules.mk
PKG_NAME:=frp
-PKG_VERSION:=0.34.0
+PKG_VERSION:=0.34.3
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/fatedier/frp/tar.gz/v${PKG_VERSION}?
-PKG_HASH:=3c4f354c7c82eb5001f0de5a55015acbaa1fba03aa97647a74131bc4118598a8
+PKG_HASH:=f03e280d9e8fdd4948ed6a5d141e927bf9b5168d7a47a4f3e90a08065e5f192d
PKG_MAINTAINER:=Richard Yu <yurichard3839@gmail.com>
PKG_LICENSE:=Apache-2.0
include $(TOPDIR)/rules.mk
PKG_NAME:=frr
-PKG_VERSION:=7.4
+PKG_VERSION:=7.5
PKG_RELEASE:=2
+PKG_SOURCE_DATE:=2020-12-22
-PKG_SOURCE_URL:=https://github.com/FRRouting/frr/archive/
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=3c8204fda1c9b178d8446562579bbbc49d134b98f3ad02aa56f68724a2f9e40a
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_DATE).tar.gz
+PKG_SOURCE_VERSION:=5061dec601016ffc3da3c0fcb554c799ba9e0868
+PKG_SOURCE_URL:=https://codeload.github.com/FRRouting/frr/tar.gz/$(PKG_SOURCE_VERSION)?
+
+
+PKG_HASH:=f2f2e2df8c33805c8c038b7b85de18d41bb9c08ba6a27fae8962b343aee0b0db
PKG_MAINTAINER:=Lucian Cristian <lucian.cristian@gmail.com>
-HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/$(PKG_NAME)-$(PKG_NAME)-$(PKG_VERSION)
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_NAME)-$(PKG_VERSION)
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_SOURCE_VERSION)
+HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/$(PKG_NAME)-$(PKG_SOURCE_VERSION)
PKG_LICENSE:=GPL-2.0-only LGPL-2.1-only
staticd \
vrrpd
-
PKG_CONFIG_DEPENDS:= \
CONFIG_IPV6 \
CONFIG_FRR_OPENSSL \
-# The watchfrr and zebra daemons are always started.
+# The staticd,watchfrr and zebra daemons are always started.
#
bgpd=no
ospfd=no
+++ /dev/null
-From 34f6d0c67a48e2117c061f6ccdcf1f512982fe8f Mon Sep 17 00:00:00 2001
-From: Donald Sharp <sharpd@cumulusnetworks.com>
-Date: Tue, 2 Jun 2020 16:10:48 -0400
-Subject: [PATCH] bgpd: Actually find the sequence number for `bgp
- extcommunity-list...`
-
-The code in the bgp extcommunity-list function was using
-argv_find to get the correct idx. The problem was that
-we had already done argv_finds before and idx was non-zero
-thus having us always set the seq pointer to what was last
-looked up. This causes us to pass in a value to the
-underlying function and it would just wisely ignore it
-causing a seq number of 0.
-
-We would then write this seq number of 0 and then immediately
-reject it on read in again. BOO!
-
-Actually handle argv_find the way it was meant to be.
-
-Ticket:CM-29926
-Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
----
- bgpd/bgp_vty.c | 12 ++++--------
- 1 file changed, 4 insertions(+), 8 deletions(-)
-
-diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
-index 3669205ee3..9c8f1e1def 100644
---- a/bgpd/bgp_vty.c
-+++ b/bgpd/bgp_vty.c
-@@ -17617,8 +17617,7 @@ DEFUN (extcommunity_list_standard,
- argv_find(argv, argc, "WORD", &idx);
- cl_number_or_name = argv[idx]->arg;
-
-- argv_find(argv, argc, "(1-4294967295)", &idx);
-- if (idx)
-+ if (argv_find(argv, argc, "(1-4294967295)", &idx))
- seq = argv[idx]->arg;
-
- direct = argv_find(argv, argc, "permit", &idx) ? COMMUNITY_PERMIT
-@@ -17663,8 +17662,7 @@ DEFUN (extcommunity_list_name_expanded,
- argv_find(argv, argc, "WORD", &idx);
- cl_number_or_name = argv[idx]->arg;
-
-- argv_find(argv, argc, "(1-4294967295)", &idx);
-- if (idx)
-+ if (argv_find(argv, argc, "(1-4294967295)", &idx))
- seq = argv[idx]->arg;
-
- direct = argv_find(argv, argc, "permit", &idx) ? COMMUNITY_PERMIT
-@@ -17707,8 +17705,7 @@ DEFUN (no_extcommunity_list_standard_all,
- char *seq = NULL;
- int idx = 0;
-
-- argv_find(argv, argc, "(1-4294967295)", &idx);
-- if (idx)
-+ if (argv_find(argv, argc, "(1-4294967295)", &idx))
- seq = argv[idx]->arg;
-
- idx = 0;
-@@ -17772,8 +17769,7 @@ DEFUN (no_extcommunity_list_expanded_all,
- char *seq = NULL;
- int idx = 0;
-
-- argv_find(argv, argc, "(1-4294967295)", &idx);
-- if (idx)
-+ if (argv_find(argv, argc, "(1-4294967295)", &idx))
- seq = argv[idx]->arg;
-
- idx = 0;
+++ /dev/null
-From acf6f22d150b0050afbdaf5887b8e25d1614db4c Mon Sep 17 00:00:00 2001
-From: Donatas Abraitis <donatas.abraitis@gmail.com>
-Date: Thu, 2 Jul 2020 11:08:29 +0300
-Subject: [PATCH 1/2] bgpd: Return bool type for ecommunity_add_val and
- subgroup_announce_check
-
-Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
----
- bgpd/bgp_ecommunity.c | 6 +++---
- bgpd/bgp_route.c | 2 +-
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/bgpd/bgp_ecommunity.c b/bgpd/bgp_ecommunity.c
-index d13da74b04..7d5cac4d62 100644
---- a/bgpd/bgp_ecommunity.c
-+++ b/bgpd/bgp_ecommunity.c
-@@ -107,14 +107,14 @@ bool ecommunity_add_val(struct ecommunity *ecom, struct ecommunity_val *eval,
- p[1] == eval->val[1]) {
- if (overwrite) {
- memcpy(p, eval->val, ECOMMUNITY_SIZE);
-- return 1;
-+ return true;
- }
-- return 0;
-+ return false;
- }
- }
- int ret = memcmp(p, eval->val, ECOMMUNITY_SIZE);
- if (ret == 0)
-- return 0;
-+ return false;
- if (ret > 0) {
- if (!unique)
- break;
-diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
-index 6ae7a59a14..7bfefde482 100644
---- a/bgpd/bgp_route.c
-+++ b/bgpd/bgp_route.c
-@@ -1941,7 +1941,7 @@ bool subgroup_announce_check(struct bgp_node *rn, struct bgp_path_info *pi,
-
- /* Codification of AS 0 Processing */
- if (aspath_check_as_zero(attr->aspath))
-- return 0;
-+ return false;
-
- if (CHECK_FLAG(bgp->flags, BGP_FLAG_GRACEFUL_SHUTDOWN)) {
- if (peer->sort == BGP_PEER_IBGP
-
-From d5a157b7c377081d23b136b5ba4849abdcbecd97 Mon Sep 17 00:00:00 2001
-From: Donatas Abraitis <donatas.abraitis@gmail.com>
-Date: Thu, 2 Jul 2020 11:39:40 +0300
-Subject: [PATCH 2/2] bgpd: Actually find the sequence number for
- large-community-list
-
-Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
----
- bgpd/bgp_vty.c | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
-index 9c8f1e1def..67ff31df8f 100644
---- a/bgpd/bgp_vty.c
-+++ b/bgpd/bgp_vty.c
-@@ -17235,8 +17235,7 @@ static int lcommunity_list_set_vty(struct vty *vty, int argc,
- char *cl_name;
- char *seq = NULL;
-
-- argv_find(argv, argc, "(1-4294967295)", &idx);
-- if (idx)
-+ if (argv_find(argv, argc, "(1-4294967295)", &idx))
- seq = argv[idx]->arg;
-
- idx = 0;
-@@ -17285,8 +17284,7 @@ static int lcommunity_list_unset_vty(struct vty *vty, int argc,
- int idx = 0;
- char *seq = NULL;
-
-- argv_find(argv, argc, "(1-4294967295)", &idx);
-- if (idx)
-+ if (argv_find(argv, argc, "(1-4294967295)", &idx))
- seq = argv[idx]->arg;
-
- idx = 0;
+++ /dev/null
-From cc45875e0d2af0b53100ec78364dc51b39a12ac9 Mon Sep 17 00:00:00 2001
-From: Rafael Zalamena <rzalamena@opensourcerouting.org>
-Date: Mon, 6 Jul 2020 11:39:27 -0300
-Subject: [PATCH] lib: fix route map description memory leak
-
-Route map entries are not getting a chance to call `description` string
-deallocation on shutdown or when the parent entry is destroyed, so lets
-add a code to handle this in the `route_map_index_delete` function.
-
-Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
-(cherry picked from commit f0951335830203426074ddca4317f84b477e4afb)
----
- lib/routemap.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/lib/routemap.c b/lib/routemap.c
-index 3d69a3495a..3b45133450 100644
---- a/lib/routemap.c
-+++ b/lib/routemap.c
-@@ -971,6 +971,9 @@ void route_map_index_delete(struct route_map_index *index, int notify)
- zlog_debug("Deleting route-map %s sequence %d",
- index->map->name, index->pref);
-
-+ /* Free route map entry description. */
-+ XFREE(MTYPE_TMP, index->description);
-+
- /* Free route map northbound hook contexts. */
- while ((rhc = TAILQ_FIRST(&index->rhclist)) != NULL)
- routemap_hook_context_free(rhc);
+++ /dev/null
-From 2939f712d152f7e3ae438cc0f1d96dd9485e7487 Mon Sep 17 00:00:00 2001
-From: Donatas Abraitis <donatas.abraitis@gmail.com>
-Date: Thu, 9 Jul 2020 16:00:27 +0300
-Subject: [PATCH 1/2] bgpd: Add command to show only established sessions
-
-```
-exit1-debian-9# show bgp summary
-
-IPv4 Unicast Summary:
-BGP router identifier 192.168.0.1, local AS number 100 vrf-id 0
-BGP table version 8
-RIB entries 15, using 2880 bytes of memory
-Peers 2, using 43 KiB of memory
-
-Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd PfxSnt
-192.168.0.2 4 200 10 6 0 0 0 00:00:35 8 8
-2a02:4780::2 4 0 0 1 0 0 0 never Active 0
-
-Total number of neighbors 2
-exit1-debian-9# show bgp summary established
-
-IPv4 Unicast Summary:
-BGP router identifier 192.168.0.1, local AS number 100 vrf-id 0
-BGP table version 8
-RIB entries 15, using 2880 bytes of memory
-Peers 2, using 43 KiB of memory
-
-Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd PfxSnt
-192.168.0.2 4 200 10 6 0 0 0 00:00:39 8 8
-
-Total number of neighbors 2
-exit1-debian-9# show bgp summary failed
-
-IPv4 Unicast Summary:
-BGP router identifier 192.168.0.1, local AS number 100 vrf-id 0
-BGP table version 8
-RIB entries 15, using 2880 bytes of memory
-Peers 2, using 43 KiB of memory
-
-Neighbor EstdCnt DropCnt ResetTime Reason
-2a02:4780::2 0 0 never Waiting for peer OPEN
-
-Total number of neighbors 2
-exit1-debian-9#
-```
-
-Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
----
- bgpd/bgp_evpn_vty.c | 11 ++++++++---
- bgpd/bgp_vty.c | 43 +++++++++++++++++++++++++++++++------------
- bgpd/bgp_vty.h | 3 ++-
- 3 files changed, 41 insertions(+), 16 deletions(-)
-
-diff --git a/bgpd/bgp_evpn_vty.c b/bgpd/bgp_evpn_vty.c
-index 85604d856d..42987117d4 100644
---- a/bgpd/bgp_evpn_vty.c
-+++ b/bgpd/bgp_evpn_vty.c
-@@ -4077,7 +4077,7 @@ DEFUN(show_bgp_l2vpn_evpn_es,
- */
- DEFUN(show_bgp_l2vpn_evpn_summary,
- show_bgp_l2vpn_evpn_summary_cmd,
-- "show bgp [vrf VRFNAME] l2vpn evpn summary [failed] [json]",
-+ "show bgp [vrf VRFNAME] l2vpn evpn summary [established|failed] [json]",
- SHOW_STR
- BGP_STR
- "bgp vrf\n"
-@@ -4085,6 +4085,7 @@ DEFUN(show_bgp_l2vpn_evpn_summary,
- L2VPN_HELP_STR
- EVPN_HELP_STR
- "Summary of BGP neighbor status\n"
-+ "Show only sessions in Established state\n"
- "Show only sessions not in Established state\n"
- JSON_STR)
- {
-@@ -4092,13 +4093,17 @@ DEFUN(show_bgp_l2vpn_evpn_summary,
- bool uj = use_json(argc, argv);
- char *vrf = NULL;
- bool show_failed = false;
-+ bool show_established = false;
-
- if (argv_find(argv, argc, "vrf", &idx_vrf))
- vrf = argv[++idx_vrf]->arg;
- if (argv_find(argv, argc, "failed", &idx_vrf))
- show_failed = true;
-- return bgp_show_summary_vty(vty, vrf, AFI_L2VPN, SAFI_EVPN,
-- show_failed, uj);
-+ if (argv_find(argv, argc, "established", &idx_vrf))
-+ show_established = true;
-+
-+ return bgp_show_summary_vty(vty, vrf, AFI_L2VPN, SAFI_EVPN, show_failed,
-+ show_established, uj);
- }
-
- /*
-diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
-index 67ff31df8f..78521457fd 100644
---- a/bgpd/bgp_vty.c
-+++ b/bgpd/bgp_vty.c
-@@ -8772,7 +8772,8 @@ static void bgp_show_failed_summary(struct vty *vty, struct bgp *bgp,
-
- /* Show BGP peer's summary information. */
- static int bgp_show_summary(struct vty *vty, struct bgp *bgp, int afi, int safi,
-- bool show_failed, bool use_json)
-+ bool show_failed, bool show_established,
-+ bool use_json)
- {
- struct peer *peer;
- struct listnode *node, *nnode;
-@@ -9104,6 +9105,10 @@ static int bgp_show_summary(struct vty *vty, struct bgp *bgp, int afi, int safi,
- bgp_show_failed_summary(vty, bgp, peer,
- json_peer, 0, use_json);
- } else if (!show_failed) {
-+ if (show_established
-+ && bgp_has_peer_failed(peer, afi, safi))
-+ continue;
-+
- json_peer = json_object_new_object();
- if (peer_dynamic_neighbor(peer)) {
- json_object_boolean_true_add(json_peer,
-@@ -9193,6 +9198,10 @@ static int bgp_show_summary(struct vty *vty, struct bgp *bgp, int afi, int safi,
- max_neighbor_width,
- use_json);
- } else if (!show_failed) {
-+ if (show_established
-+ && bgp_has_peer_failed(peer, afi, safi))
-+ continue;
-+
- memset(dn_flag, '\0', sizeof(dn_flag));
- if (peer_dynamic_neighbor(peer)) {
- dn_flag[0] = '*';
-@@ -9315,7 +9324,8 @@ static int bgp_show_summary(struct vty *vty, struct bgp *bgp, int afi, int safi,
- }
-
- static void bgp_show_summary_afi_safi(struct vty *vty, struct bgp *bgp, int afi,
-- int safi, bool show_failed, bool use_json)
-+ int safi, bool show_failed,
-+ bool show_established, bool use_json)
- {
- int is_first = 1;
- int afi_wildcard = (afi == AFI_MAX);
-@@ -9358,7 +9368,8 @@ static void bgp_show_summary_afi_safi(struct vty *vty, struct bgp *bgp, int afi,
- false));
- }
- }
-- bgp_show_summary(vty, bgp, afi, safi, show_failed,
-+ bgp_show_summary(vty, bgp, afi, safi,
-+ show_failed, show_established,
- use_json);
- }
- safi++;
-@@ -9382,6 +9393,7 @@ static void bgp_show_summary_afi_safi(struct vty *vty, struct bgp *bgp, int afi,
-
- static void bgp_show_all_instances_summary_vty(struct vty *vty, afi_t afi,
- safi_t safi, bool show_failed,
-+ bool show_established,
- bool use_json)
- {
- struct listnode *node, *nnode;
-@@ -9411,7 +9423,7 @@ static void bgp_show_all_instances_summary_vty(struct vty *vty, afi_t afi,
- : bgp->name);
- }
- bgp_show_summary_afi_safi(vty, bgp, afi, safi, show_failed,
-- use_json);
-+ show_established, use_json);
- }
-
- if (use_json)
-@@ -9421,15 +9433,16 @@ static void bgp_show_all_instances_summary_vty(struct vty *vty, afi_t afi,
- }
-
- int bgp_show_summary_vty(struct vty *vty, const char *name, afi_t afi,
-- safi_t safi, bool show_failed, bool use_json)
-+ safi_t safi, bool show_failed, bool show_established,
-+ bool use_json)
- {
- struct bgp *bgp;
-
- if (name) {
- if (strmatch(name, "all")) {
-- bgp_show_all_instances_summary_vty(vty, afi, safi,
-- show_failed,
-- use_json);
-+ bgp_show_all_instances_summary_vty(
-+ vty, afi, safi, show_failed, show_established,
-+ use_json);
- return CMD_SUCCESS;
- } else {
- bgp = bgp_lookup_by_name(name);
-@@ -9444,7 +9457,8 @@ int bgp_show_summary_vty(struct vty *vty, const char *name, afi_t afi,
- }
-
- bgp_show_summary_afi_safi(vty, bgp, afi, safi,
-- show_failed, use_json);
-+ show_failed, show_established,
-+ use_json);
- return CMD_SUCCESS;
- }
- }
-@@ -9453,7 +9467,7 @@ int bgp_show_summary_vty(struct vty *vty, const char *name, afi_t afi,
-
- if (bgp)
- bgp_show_summary_afi_safi(vty, bgp, afi, safi, show_failed,
-- use_json);
-+ show_established, use_json);
- else {
- if (use_json)
- vty_out(vty, "{}\n");
-@@ -9468,7 +9482,7 @@ int bgp_show_summary_vty(struct vty *vty, const char *name, afi_t afi,
- /* `show [ip] bgp summary' commands. */
- DEFUN (show_ip_bgp_summary,
- show_ip_bgp_summary_cmd,
-- "show [ip] bgp [<view|vrf> VIEWVRFNAME] ["BGP_AFI_CMD_STR" ["BGP_SAFI_WITH_LABEL_CMD_STR"]] summary [failed] [json]",
-+ "show [ip] bgp [<view|vrf> VIEWVRFNAME] ["BGP_AFI_CMD_STR" ["BGP_SAFI_WITH_LABEL_CMD_STR"]] summary [established|failed] [json]",
- SHOW_STR
- IP_STR
- BGP_STR
-@@ -9476,6 +9490,7 @@ DEFUN (show_ip_bgp_summary,
- BGP_AFI_HELP_STR
- BGP_SAFI_WITH_LABEL_HELP_STR
- "Summary of BGP neighbor status\n"
-+ "Show only sessions in Established state\n"
- "Show only sessions not in Established state\n"
- JSON_STR)
- {
-@@ -9483,6 +9498,7 @@ DEFUN (show_ip_bgp_summary,
- afi_t afi = AFI_MAX;
- safi_t safi = SAFI_MAX;
- bool show_failed = false;
-+ bool show_established = false;
-
- int idx = 0;
-
-@@ -9504,10 +9520,13 @@ DEFUN (show_ip_bgp_summary,
-
- if (argv_find(argv, argc, "failed", &idx))
- show_failed = true;
-+ if (argv_find(argv, argc, "established", &idx))
-+ show_established = true;
-
- bool uj = use_json(argc, argv);
-
-- return bgp_show_summary_vty(vty, vrf, afi, safi, show_failed, uj);
-+ return bgp_show_summary_vty(vty, vrf, afi, safi, show_failed,
-+ show_established, uj);
- }
-
- const char *get_afi_safi_str(afi_t afi, safi_t safi, bool for_json)
-diff --git a/bgpd/bgp_vty.h b/bgpd/bgp_vty.h
-index d6ca198d09..95eefbc36f 100644
---- a/bgpd/bgp_vty.h
-+++ b/bgpd/bgp_vty.h
-@@ -178,6 +178,7 @@ extern int bgp_vty_find_and_parse_afi_safi_bgp(struct vty *vty,
- int bgp_vty_find_and_parse_bgp(struct vty *vty, struct cmd_token **argv,
- int argc, struct bgp **bgp, bool use_json);
- extern int bgp_show_summary_vty(struct vty *vty, const char *name, afi_t afi,
-- safi_t safi, bool show_failed, bool use_json);
-+ safi_t safi, bool show_failed,
-+ bool show_established, bool use_json);
-
- #endif /* _QUAGGA_BGP_VTY_H */
-
-From 2600443342d8e21d30df2b6ca095a5f2d0d4de2d Mon Sep 17 00:00:00 2001
-From: Donatas Abraitis <donatas.abraitis@gmail.com>
-Date: Thu, 9 Jul 2020 16:05:08 +0300
-Subject: [PATCH 2/2] doc: Add 'show bgp summary established' command
-
-Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
----
- doc/user/bgp.rst | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/doc/user/bgp.rst b/doc/user/bgp.rst
-index cb343e8dad..36227db604 100644
---- a/doc/user/bgp.rst
-+++ b/doc/user/bgp.rst
-@@ -2710,6 +2710,12 @@ structure is extended with :clicmd:`show bgp [afi] [safi]`.
- Show a bgp peer summary for peers that are not succesfully exchanging routes
- for the specified address family, and subsequent address-family.
-
-+.. index:: show bgp [afi] [safi] summary established [json]
-+.. clicmd:: show bgp [afi] [safi] summary established [json]
-+
-+ Show a bgp peer summary for peers that are succesfully exchanging routes
-+ for the specified address family, and subsequent address-family.
-+
- .. index:: show bgp [afi] [safi] neighbor [PEER]
- .. clicmd:: show bgp [afi] [safi] neighbor [PEER]
-
+++ /dev/null
-From 692ce87393de9497a7821e9e0856ff70a7973ff6 Mon Sep 17 00:00:00 2001
-From: Paul Manley <paul.manley@wholefoods.com>
-Date: Thu, 9 Jul 2020 11:21:16 -0500
-Subject: [PATCH 1/2] tools: create sub-context for bfd peers
-
-add lines starting with 'peer' to the list of sub-contexts that are handled by frr-reload.py.
-
-https://github.com/FRRouting/frr/issues/6511#issuecomment-655163833
-
-Signed-off-by: Paul Manley <paul.manley@wholefoods.com>
-(cherry picked from commit 1c23a0aaa1c5d20af50af75b070e93e1eff21222)
----
- tools/frr-reload.py | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/tools/frr-reload.py b/tools/frr-reload.py
-index d4020cdfc9..e9641b2b13 100755
---- a/tools/frr-reload.py
-+++ b/tools/frr-reload.py
-@@ -496,6 +496,7 @@ def load_contexts(self):
- line.startswith("vnc defaults") or
- line.startswith("vnc l2-group") or
- line.startswith("vnc nve-group") or
-+ line.startswith("peer") or
- line.startswith("member pseudowire")):
- main_ctx_key = []
-
-
-From 2604086c3d9face0aca2497a982782c865bb2b59 Mon Sep 17 00:00:00 2001
-From: Paul Manley <paul.manley@wholefoods.com>
-Date: Thu, 9 Jul 2020 11:25:34 -0500
-Subject: [PATCH 2/2] vtysh: properly exit BFD_PEER_NODE when marking file
-
-vtysh needs to be aware of how to properly exit a bfd peer when subsequent commands only succeed in a higher context.
-
-https://github.com/FRRouting/frr/issues/6511#issuecomment-656166206
-
-Signed-off-by: Paul Manley <paul.manley@wholefoods.com>
-(cherry picked from commit b727c12aabf1afc2b6e33f8590c9786e349e4fcb)
----
- vtysh/vtysh.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c
-index 15ec866fc9..4fdf68c0e6 100644
---- a/vtysh/vtysh.c
-+++ b/vtysh/vtysh.c
-@@ -809,6 +809,9 @@ int vtysh_mark_file(const char *filename)
- } else if ((prev_node == KEYCHAIN_KEY_NODE)
- && (tried == 1)) {
- vty_out(vty, "exit\n");
-+ } else if ((prev_node == BFD_PEER_NODE)
-+ && (tried == 1)) {
-+ vty_out(vty, "exit\n");
- } else if (tried) {
- vty_out(vty, "end\n");
- }
+++ /dev/null
-From cc5934ed5939315ba5d95bfaf052625762107205 Mon Sep 17 00:00:00 2001
-From: Donald Sharp <sharpd@cumulusnetworks.com>
-Date: Tue, 30 Jun 2020 08:59:46 -0400
-Subject: [PATCH 1/2] vtysh: master is a non-sorted list
-
-The commit:
-a798241265a5808083a06b14ce1637d1ddf6a45a
-
-attempted to use sorted master lists to do faster lookups
-by using a RB Tree. Unfortunately the original code
-was creating a list->cmp function *but* never using it.
-If you look at the commit, it clearly shows that the
-function listnode_add is used to insert but when you
-look at that function it is a tail push.
-
-Fixes: #6573
-
-Namely now this ordering is preserved:
-bgp as-path access-list originate-only permit ^$
-bgp as-path access-list originate-only deny .*
-
-Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
----
- vtysh/vtysh_config.c | 21 ++++++++++-----------
- 1 file changed, 10 insertions(+), 11 deletions(-)
-
-diff --git a/vtysh/vtysh_config.c b/vtysh/vtysh_config.c
-index abbb111f9d..2ab9dd5a9a 100644
---- a/vtysh/vtysh_config.c
-+++ b/vtysh/vtysh_config.c
-@@ -34,7 +34,7 @@ DEFINE_MTYPE_STATIC(MVTYSH, VTYSH_CONFIG_LINE, "Vtysh configuration line")
-
- vector configvec;
-
--PREDECL_RBTREE_UNIQ(config_master);
-+PREDECL_LIST(config_master);
-
- struct config {
- /* Configuration node name. */
-@@ -72,11 +72,6 @@ static struct config *config_new(void)
- return config;
- }
-
--static int config_cmp(const struct config *c1, const struct config *c2)
--{
-- return strcmp(c1->name, c2->name);
--}
--
- static void config_del(struct config *config)
- {
- list_delete(&config->line);
-@@ -84,13 +79,15 @@ static void config_del(struct config *config)
- XFREE(MTYPE_VTYSH_CONFIG, config);
- }
-
--DECLARE_RBTREE_UNIQ(config_master, struct config, rbt_item, config_cmp)
-+DECLARE_LIST(config_master, struct config, rbt_item)
-
- static struct config *config_get(int index, const char *line)
- {
-- struct config *config;
-+ struct config *config, *config_loop;
- struct config_master_head *master;
-
-+ config = config_loop = NULL;
-+
- master = vector_lookup_ensure(configvec, index);
-
- if (!master) {
-@@ -99,8 +96,10 @@ static struct config *config_get(int index, const char *line)
- vector_set_index(configvec, index, master);
- }
-
-- const struct config config_ref = { .name = (char *)line };
-- config = config_master_find(master, &config_ref);
-+ frr_each (config_master, master, config_loop) {
-+ if (strcmp(config_loop->name, line) == 0)
-+ config = config_loop;
-+ }
-
- if (!config) {
- config = config_new();
-@@ -109,7 +108,7 @@ static struct config *config_get(int index, const char *line)
- config->line->cmp = (int (*)(void *, void *))line_cmp;
- config->name = XSTRDUP(MTYPE_VTYSH_CONFIG_LINE, line);
- config->index = index;
-- config_master_add(master, config);
-+ config_master_add_tail(master, config);
- }
- return config;
- }
-
-From 3e4d90ec556649e11954f2f56b5282f95e7e013b Mon Sep 17 00:00:00 2001
-From: Donald Sharp <sharpd@cumulusnetworks.com>
-Date: Tue, 30 Jun 2020 09:03:55 -0400
-Subject: [PATCH 2/2] vtysh: Improve lookup performance
-
-When we find the line we are interested in, stop looking.
-
-Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
----
- vtysh/vtysh_config.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/vtysh/vtysh_config.c b/vtysh/vtysh_config.c
-index 2ab9dd5a9a..61bcf3b658 100644
---- a/vtysh/vtysh_config.c
-+++ b/vtysh/vtysh_config.c
-@@ -97,8 +97,10 @@ static struct config *config_get(int index, const char *line)
- }
-
- frr_each (config_master, master, config_loop) {
-- if (strcmp(config_loop->name, line) == 0)
-+ if (strcmp(config_loop->name, line) == 0) {
- config = config_loop;
-+ break;
-+ }
- }
-
- if (!config) {
+++ /dev/null
-From c6a5994609deec62c8aefa1fa15c517e32575ca3 Mon Sep 17 00:00:00 2001
-From: Donatas Abraitis <donatas.abraitis@gmail.com>
-Date: Wed, 6 May 2020 17:45:31 +0300
-Subject: [PATCH 1/4] tests: Remove bgp_show_ip_bgp_fqdn test
-
-Not really relevant for now.
-
-Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
----
- .../bgp_show_ip_bgp_fqdn/__init__.py | 0
- .../bgp_show_ip_bgp_fqdn/r1/bgpd.conf | 5 -
- .../bgp_show_ip_bgp_fqdn/r1/zebra.conf | 9 --
- .../bgp_show_ip_bgp_fqdn/r2/bgpd.conf | 5 -
- .../bgp_show_ip_bgp_fqdn/r2/zebra.conf | 12 --
- .../bgp_show_ip_bgp_fqdn/r3/bgpd.conf | 3 -
- .../bgp_show_ip_bgp_fqdn/r3/zebra.conf | 6 -
- .../test_bgp_show_ip_bgp_fqdn.py | 133 ------------------
- 8 files changed, 173 deletions(-)
- delete mode 100644 tests/topotests/bgp_show_ip_bgp_fqdn/__init__.py
- delete mode 100644 tests/topotests/bgp_show_ip_bgp_fqdn/r1/bgpd.conf
- delete mode 100644 tests/topotests/bgp_show_ip_bgp_fqdn/r1/zebra.conf
- delete mode 100644 tests/topotests/bgp_show_ip_bgp_fqdn/r2/bgpd.conf
- delete mode 100644 tests/topotests/bgp_show_ip_bgp_fqdn/r2/zebra.conf
- delete mode 100644 tests/topotests/bgp_show_ip_bgp_fqdn/r3/bgpd.conf
- delete mode 100644 tests/topotests/bgp_show_ip_bgp_fqdn/r3/zebra.conf
- delete mode 100644 tests/topotests/bgp_show_ip_bgp_fqdn/test_bgp_show_ip_bgp_fqdn.py
-
-diff --git a/tests/topotests/bgp_show_ip_bgp_fqdn/__init__.py b/tests/topotests/bgp_show_ip_bgp_fqdn/__init__.py
-deleted file mode 100644
-index e69de29bb2..0000000000
-diff --git a/tests/topotests/bgp_show_ip_bgp_fqdn/r1/bgpd.conf b/tests/topotests/bgp_show_ip_bgp_fqdn/r1/bgpd.conf
-deleted file mode 100644
-index f0df56e947..0000000000
---- a/tests/topotests/bgp_show_ip_bgp_fqdn/r1/bgpd.conf
-+++ /dev/null
-@@ -1,5 +0,0 @@
--router bgp 65000
-- no bgp ebgp-requires-policy
-- neighbor 192.168.255.2 remote-as 65001
-- address-family ipv4 unicast
-- redistribute connected
-diff --git a/tests/topotests/bgp_show_ip_bgp_fqdn/r1/zebra.conf b/tests/topotests/bgp_show_ip_bgp_fqdn/r1/zebra.conf
-deleted file mode 100644
-index 0a283c06d5..0000000000
---- a/tests/topotests/bgp_show_ip_bgp_fqdn/r1/zebra.conf
-+++ /dev/null
-@@ -1,9 +0,0 @@
--!
--interface lo
-- ip address 172.16.255.254/32
--!
--interface r1-eth0
-- ip address 192.168.255.1/24
--!
--ip forwarding
--!
-diff --git a/tests/topotests/bgp_show_ip_bgp_fqdn/r2/bgpd.conf b/tests/topotests/bgp_show_ip_bgp_fqdn/r2/bgpd.conf
-deleted file mode 100644
-index 422a7345f9..0000000000
---- a/tests/topotests/bgp_show_ip_bgp_fqdn/r2/bgpd.conf
-+++ /dev/null
-@@ -1,5 +0,0 @@
--router bgp 65001
-- no bgp ebgp-requires-policy
-- bgp default show-hostname
-- neighbor 192.168.255.1 remote-as 65000
-- neighbor 192.168.254.1 remote-as 65001
-diff --git a/tests/topotests/bgp_show_ip_bgp_fqdn/r2/zebra.conf b/tests/topotests/bgp_show_ip_bgp_fqdn/r2/zebra.conf
-deleted file mode 100644
-index e9e2e4391f..0000000000
---- a/tests/topotests/bgp_show_ip_bgp_fqdn/r2/zebra.conf
-+++ /dev/null
-@@ -1,12 +0,0 @@
--!
--interface lo
-- ip address 172.16.255.253/32
--!
--interface r2-eth0
-- ip address 192.168.255.2/24
--!
--interface r2-eth1
-- ip address 192.168.254.2/24
--!
--ip forwarding
--!
-diff --git a/tests/topotests/bgp_show_ip_bgp_fqdn/r3/bgpd.conf b/tests/topotests/bgp_show_ip_bgp_fqdn/r3/bgpd.conf
-deleted file mode 100644
-index 8fcf6a736d..0000000000
---- a/tests/topotests/bgp_show_ip_bgp_fqdn/r3/bgpd.conf
-+++ /dev/null
-@@ -1,3 +0,0 @@
--router bgp 65001
-- bgp default show-hostname
-- neighbor 192.168.254.2 remote-as 65001
-diff --git a/tests/topotests/bgp_show_ip_bgp_fqdn/r3/zebra.conf b/tests/topotests/bgp_show_ip_bgp_fqdn/r3/zebra.conf
-deleted file mode 100644
-index a8b8bc38c5..0000000000
---- a/tests/topotests/bgp_show_ip_bgp_fqdn/r3/zebra.conf
-+++ /dev/null
-@@ -1,6 +0,0 @@
--!
--interface r3-eth0
-- ip address 192.168.254.1/24
--!
--ip forwarding
--!
-diff --git a/tests/topotests/bgp_show_ip_bgp_fqdn/test_bgp_show_ip_bgp_fqdn.py b/tests/topotests/bgp_show_ip_bgp_fqdn/test_bgp_show_ip_bgp_fqdn.py
-deleted file mode 100644
-index e8ad180935..0000000000
---- a/tests/topotests/bgp_show_ip_bgp_fqdn/test_bgp_show_ip_bgp_fqdn.py
-+++ /dev/null
-@@ -1,133 +0,0 @@
--#!/usr/bin/env python
--
--#
--# test_bgp_show_ip_bgp_fqdn.py
--# Part of NetDEF Topology Tests
--#
--# Copyright (c) 2019 by
--# Donatas Abraitis <donatas.abraitis@gmail.com>
--#
--# Permission to use, copy, modify, and/or distribute this software
--# for any purpose with or without fee is hereby granted, provided
--# that the above copyright notice and this permission notice appear
--# in all copies.
--#
--# THE SOFTWARE IS PROVIDED "AS IS" AND NETDEF DISCLAIMS ALL WARRANTIES
--# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
--# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NETDEF BE LIABLE FOR
--# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
--# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
--# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
--# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
--# OF THIS SOFTWARE.
--#
--
--"""
--test_bgp_show_ip_bgp_fqdn.py:
--Test if FQND is visible in `show [ip] bgp` output if
--`bgp default show-hostname` is toggled.
--
--Topology:
--r1 <-- eBGP --> r2 <-- iBGP --> r3
--
--1. Check if both hostname and ip are added to JSON output
--for 172.16.255.254/32 on r2.
--2. Check if only ip is added to JSON output for 172.16.255.254/32 on r3.
--"""
--
--import os
--import sys
--import json
--import time
--import pytest
--import functools
--
--CWD = os.path.dirname(os.path.realpath(__file__))
--sys.path.append(os.path.join(CWD, "../"))
--
--# pylint: disable=C0413
--from lib import topotest
--from lib.topogen import Topogen, TopoRouter, get_topogen
--from lib.topolog import logger
--from mininet.topo import Topo
--
--
--class TemplateTopo(Topo):
-- def build(self, *_args, **_opts):
-- tgen = get_topogen(self)
--
-- for routern in range(1, 4):
-- tgen.add_router("r{}".format(routern))
--
-- switch = tgen.add_switch("s1")
-- switch.add_link(tgen.gears["r1"])
-- switch.add_link(tgen.gears["r2"])
--
-- switch = tgen.add_switch("s2")
-- switch.add_link(tgen.gears["r2"])
-- switch.add_link(tgen.gears["r3"])
--
--
--def setup_module(mod):
-- tgen = Topogen(TemplateTopo, mod.__name__)
-- tgen.start_topology()
--
-- router_list = tgen.routers()
--
-- for i, (rname, router) in enumerate(router_list.iteritems(), 1):
-- router.load_config(
-- TopoRouter.RD_ZEBRA, os.path.join(CWD, "{}/zebra.conf".format(rname))
-- )
-- router.load_config(
-- TopoRouter.RD_BGP, os.path.join(CWD, "{}/bgpd.conf".format(rname))
-- )
--
-- tgen.start_router()
--
--
--def teardown_module(mod):
-- tgen = get_topogen()
-- tgen.stop_topology()
--
--
--def test_bgp_show_ip_bgp_hostname():
-- tgen = get_topogen()
--
-- if tgen.routers_have_failure():
-- pytest.skip(tgen.errors)
--
-- def _bgp_converge(router):
-- output = json.loads(router.vtysh_cmd("show ip bgp 172.16.255.254/32 json"))
-- expected = {"prefix": "172.16.255.254/32"}
-- return topotest.json_cmp(output, expected)
--
-- def _bgp_show_nexthop_hostname_and_ip(router):
-- output = json.loads(router.vtysh_cmd("show ip bgp json"))
-- for nh in output["routes"]["172.16.255.254/32"][0]["nexthops"]:
-- if "hostname" in nh and "ip" in nh:
-- return True
-- return False
--
-- def _bgp_show_nexthop_ip_only(router):
-- output = json.loads(router.vtysh_cmd("show ip bgp json"))
-- for nh in output["routes"]["172.16.255.254/32"][0]["nexthops"]:
-- if "ip" in nh and not "hostname" in nh:
-- return True
-- return False
--
-- test_func = functools.partial(_bgp_converge, tgen.gears["r2"])
-- success, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5)
--
-- test_func = functools.partial(_bgp_converge, tgen.gears["r3"])
-- success, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5)
--
-- assert result is None, 'Failed bgp convergence in "{}"'.format(tgen.gears["r2"])
-- assert _bgp_show_nexthop_hostname_and_ip(tgen.gears["r2"]) == True
--
-- assert result is None, 'Failed bgp convergence in "{}"'.format(tgen.gears["r3"])
-- assert _bgp_show_nexthop_ip_only(tgen.gears["r3"]) == True
--
--
--if __name__ == "__main__":
-- args = ["-s"] + sys.argv[1:]
-- sys.exit(pytest.main(args))
-
-From e7cc3d21452bd771a97bc46ab5a1e4853c46f944 Mon Sep 17 00:00:00 2001
-From: Donatas Abraitis <donatas.abraitis@gmail.com>
-Date: Wed, 6 May 2020 17:46:10 +0300
-Subject: [PATCH 2/4] bgpd: Show the real next-hop address in addition to
- hostname in `show bgp`
-
-It's hard to cope with cases when next-hop is changed/unchanged or
-peers are non-direct.
-
-It would be better to show the hostname and nexthop IP address (both)
-under `show bgp` to quickly identify the source and the real next-hop
-of the route.
-
-If `bgp default show-nexthop-hostname` is toggled the output looks like:
-```
-spine1-debian-9# show bgp
-BGP table version is 1, local router ID is 2.2.2.2, vrf id 0
-Default local pref 100, local AS 65002
-Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
- i internal, r RIB-failure, S Stale, R Removed
-Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
-Origin codes: i - IGP, e - EGP, ? - incomplete
-
- Network Next Hop Metric LocPrf Weight Path
-* 2a02:4780::/64 fe80::a00:27ff:fe09:f8a3(exit1-debian-9)
- 0 0 65001 ?
-
-spine1-debian-9# show ip bgp
-BGP table version is 5, local router ID is 2.2.2.2, vrf id 0
-Default local pref 100, local AS 65002
-Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
- i internal, r RIB-failure, S Stale, R Removed
-Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
-Origin codes: i - IGP, e - EGP, ? - incomplete
-
- Network Next Hop Metric LocPrf Weight Path
-*> 10.255.255.0/24 192.168.0.1(exit1-debian-9)
- 0 0 65001 ?
-```
-
-Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
----
- bgpd/bgp_route.c | 161 ++++++++++++++++++++++++++++++-----------------
- bgpd/bgp_vty.c | 45 +++++++++++++
- bgpd/bgpd.h | 1 +
- 3 files changed, 149 insertions(+), 58 deletions(-)
-
-diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
-index 7bfefde482..f033f525e5 100644
---- a/bgpd/bgp_route.c
-+++ b/bgpd/bgp_route.c
-@@ -7559,8 +7559,7 @@ static char *bgp_nexthop_hostname(struct peer *peer,
- struct bgp_nexthop_cache *bnc)
- {
- if (peer->hostname
-- && CHECK_FLAG(peer->bgp->flags, BGP_FLAG_SHOW_HOSTNAME) && bnc
-- && CHECK_FLAG(bnc->flags, BGP_NEXTHOP_CONNECTED))
-+ && CHECK_FLAG(peer->bgp->flags, BGP_FLAG_SHOW_NEXTHOP_HOSTNAME))
- return peer->hostname;
- return NULL;
- }
-@@ -7570,6 +7569,7 @@ void route_vty_out(struct vty *vty, const struct prefix *p,
- struct bgp_path_info *path, int display, safi_t safi,
- json_object *json_paths)
- {
-+ int len;
- struct attr *attr = path->attr;
- json_object *json_path = NULL;
- json_object *json_nexthops = NULL;
-@@ -7681,10 +7681,19 @@ void route_vty_out(struct vty *vty, const struct prefix *p,
- : "ipv6");
- json_object_boolean_true_add(json_nexthop_global,
- "used");
-- } else
-- vty_out(vty, "%s%s",
-- nexthop_hostname ? nexthop_hostname : nexthop,
-- vrf_id_str);
-+ } else {
-+ if (nexthop_hostname)
-+ len = vty_out(vty, "%s(%s)%s", nexthop,
-+ nexthop_hostname, vrf_id_str);
-+ else
-+ len = vty_out(vty, "%s%s", nexthop, vrf_id_str);
-+
-+ len = 16 - len;
-+ if (len < 1)
-+ vty_out(vty, "\n%*s", 36, " ");
-+ else
-+ vty_out(vty, "%*s", len, " ");
-+ }
- } else if (safi == SAFI_EVPN) {
- if (json_paths) {
- json_nexthop_global = json_object_new_object();
-@@ -7701,11 +7710,20 @@ void route_vty_out(struct vty *vty, const struct prefix *p,
- "ipv4");
- json_object_boolean_true_add(json_nexthop_global,
- "used");
-- } else
-- vty_out(vty, "%-16s%s",
-- nexthop_hostname ? nexthop_hostname
-- : inet_ntoa(attr->nexthop),
-- vrf_id_str);
-+ } else {
-+ if (nexthop_hostname)
-+ len = vty_out(vty, "%pI4(%s)%s", &attr->nexthop,
-+ nexthop_hostname, vrf_id_str);
-+ else
-+ len = vty_out(vty, "%pI4%s", &attr->nexthop,
-+ vrf_id_str);
-+
-+ len = 16 - len;
-+ if (len < 1)
-+ vty_out(vty, "\n%*s", 36, " ");
-+ else
-+ vty_out(vty, "%*s", len, " ");
-+ }
- } else if (safi == SAFI_FLOWSPEC) {
- if (attr->nexthop.s_addr != INADDR_ANY) {
- if (json_paths) {
-@@ -7726,10 +7744,21 @@ void route_vty_out(struct vty *vty, const struct prefix *p,
- json_nexthop_global,
- "used");
- } else {
-- vty_out(vty, "%-16s",
-- nexthop_hostname
-- ? nexthop_hostname
-- : inet_ntoa(attr->nexthop));
-+ if (nexthop_hostname)
-+ len = vty_out(vty, "%pI4(%s)%s",
-+ &attr->nexthop,
-+ nexthop_hostname,
-+ vrf_id_str);
-+ else
-+ len = vty_out(vty, "%pI4%s",
-+ &attr->nexthop,
-+ vrf_id_str);
-+
-+ len = 16 - len;
-+ if (len < 1)
-+ vty_out(vty, "\n%*s", 36, " ");
-+ else
-+ vty_out(vty, "%*s", len, " ");
- }
- }
- } else if (p->family == AF_INET && !BGP_ATTR_NEXTHOP_AFI_IP6(attr)) {
-@@ -7749,19 +7778,23 @@ void route_vty_out(struct vty *vty, const struct prefix *p,
- json_object_boolean_true_add(json_nexthop_global,
- "used");
- } else {
-- char buf[BUFSIZ];
-+ if (nexthop_hostname)
-+ len = vty_out(vty, "%pI4(%s)%s", &attr->nexthop,
-+ nexthop_hostname, vrf_id_str);
-+ else
-+ len = vty_out(vty, "%pI4%s", &attr->nexthop,
-+ vrf_id_str);
-
-- snprintf(buf, sizeof(buf), "%s%s",
-- nexthop_hostname ? nexthop_hostname
-- : inet_ntoa(attr->nexthop),
-- vrf_id_str);
-- vty_out(vty, "%-16s", buf);
-+ len = 16 - len;
-+ if (len < 1)
-+ vty_out(vty, "\n%*s", 36, " ");
-+ else
-+ vty_out(vty, "%*s", len, " ");
- }
- }
-
- /* IPv6 Next Hop */
- else if (p->family == AF_INET6 || BGP_ATTR_NEXTHOP_AFI_IP6(attr)) {
-- int len;
- char buf[BUFSIZ];
-
- if (json_paths) {
-@@ -7835,15 +7868,18 @@ void route_vty_out(struct vty *vty, const struct prefix *p,
- else
- vty_out(vty, "%*s", len, " ");
- } else {
-- len = vty_out(
-- vty, "%s%s",
-- nexthop_hostname
-- ? nexthop_hostname
-- : inet_ntop(
-- AF_INET6,
-- &attr->mp_nexthop_local,
-- buf, BUFSIZ),
-- vrf_id_str);
-+ if (nexthop_hostname)
-+ len = vty_out(
-+ vty, "%pI6(%s)%s",
-+ &attr->mp_nexthop_local,
-+ nexthop_hostname,
-+ vrf_id_str);
-+ else
-+ len = vty_out(
-+ vty, "%pI6%s",
-+ &attr->mp_nexthop_local,
-+ vrf_id_str);
-+
- len = 16 - len;
-
- if (len < 1)
-@@ -7852,15 +7888,16 @@ void route_vty_out(struct vty *vty, const struct prefix *p,
- vty_out(vty, "%*s", len, " ");
- }
- } else {
-- len = vty_out(
-- vty, "%s%s",
-- nexthop_hostname
-- ? nexthop_hostname
-- : inet_ntop(
-- AF_INET6,
-- &attr->mp_nexthop_global,
-- buf, BUFSIZ),
-- vrf_id_str);
-+ if (nexthop_hostname)
-+ len = vty_out(vty, "%pI6(%s)%s",
-+ &attr->mp_nexthop_global,
-+ nexthop_hostname,
-+ vrf_id_str);
-+ else
-+ len = vty_out(vty, "%pI6%s",
-+ &attr->mp_nexthop_global,
-+ vrf_id_str);
-+
- len = 16 - len;
-
- if (len < 1)
-@@ -7986,6 +8023,7 @@ void route_vty_out_tmp(struct vty *vty, const struct prefix *p,
- {
- json_object *json_status = NULL;
- json_object *json_net = NULL;
-+ int len;
- char buff[BUFSIZ];
-
- /* Route status display. */
-@@ -8079,7 +8117,6 @@ void route_vty_out_tmp(struct vty *vty, const struct prefix *p,
- inet_ntoa(attr->nexthop));
- } else if (p->family == AF_INET6
- || BGP_ATTR_NEXTHOP_AFI_IP6(attr)) {
-- int len;
- char buf[BUFSIZ];
-
- len = vty_out(
-@@ -8823,12 +8860,15 @@ void route_vty_out_detail(struct vty *vty, struct bgp *bgp,
- json_object_string_add(
- json_nexthop_global, "hostname",
- nexthop_hostname);
-- } else
-- vty_out(vty, " %s",
-- nexthop_hostname
-- ? nexthop_hostname
-- : inet_ntoa(
-- attr->mp_nexthop_global_in));
-+ } else {
-+ if (nexthop_hostname)
-+ vty_out(vty, " %pI4(%s)",
-+ &attr->mp_nexthop_global_in,
-+ nexthop_hostname);
-+ else
-+ vty_out(vty, " %pI4",
-+ &attr->mp_nexthop_global_in);
-+ }
- } else {
- if (json_paths) {
- json_object_string_add(
-@@ -8839,11 +8879,15 @@ void route_vty_out_detail(struct vty *vty, struct bgp *bgp,
- json_object_string_add(
- json_nexthop_global, "hostname",
- nexthop_hostname);
-- } else
-- vty_out(vty, " %s",
-- nexthop_hostname
-- ? nexthop_hostname
-- : inet_ntoa(attr->nexthop));
-+ } else {
-+ if (nexthop_hostname)
-+ vty_out(vty, " %pI4(%s)",
-+ &attr->nexthop,
-+ nexthop_hostname);
-+ else
-+ vty_out(vty, " %pI4",
-+ &attr->nexthop);
-+ }
- }
-
- if (json_paths)
-@@ -8866,12 +8910,13 @@ void route_vty_out_detail(struct vty *vty, struct bgp *bgp,
- json_object_string_add(json_nexthop_global, "scope",
- "global");
- } else {
-- vty_out(vty, " %s",
-- nexthop_hostname
-- ? nexthop_hostname
-- : inet_ntop(AF_INET6,
-- &attr->mp_nexthop_global,
-- buf, INET6_ADDRSTRLEN));
-+ if (nexthop_hostname)
-+ vty_out(vty, " %pI6(%s)",
-+ &attr->mp_nexthop_global,
-+ nexthop_hostname);
-+ else
-+ vty_out(vty, " %pI6",
-+ &attr->mp_nexthop_global);
- }
- }
-
-diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
-index 78521457fd..7f00ff3fbe 100644
---- a/bgpd/bgp_vty.c
-+++ b/bgpd/bgp_vty.c
-@@ -84,6 +84,10 @@ FRR_CFG_DEFAULT_BOOL(BGP_SHOW_HOSTNAME,
- { .val_bool = true, .match_profile = "datacenter", },
- { .val_bool = false },
- )
-+FRR_CFG_DEFAULT_BOOL(BGP_SHOW_NEXTHOP_HOSTNAME,
-+ { .val_bool = true, .match_profile = "datacenter", },
-+ { .val_bool = false },
-+)
- FRR_CFG_DEFAULT_BOOL(BGP_LOG_NEIGHBOR_CHANGES,
- { .val_bool = true, .match_profile = "datacenter", },
- { .val_bool = false },
-@@ -422,6 +426,8 @@ int bgp_get_vty(struct bgp **bgp, as_t *as, const char *name,
- SET_FLAG((*bgp)->flags, BGP_FLAG_IMPORT_CHECK);
- if (DFLT_BGP_SHOW_HOSTNAME)
- SET_FLAG((*bgp)->flags, BGP_FLAG_SHOW_HOSTNAME);
-+ if (DFLT_BGP_SHOW_NEXTHOP_HOSTNAME)
-+ SET_FLAG((*bgp)->flags, BGP_FLAG_SHOW_NEXTHOP_HOSTNAME);
- if (DFLT_BGP_LOG_NEIGHBOR_CHANGES)
- SET_FLAG((*bgp)->flags, BGP_FLAG_LOG_NEIGHBOR_CHANGES);
- if (DFLT_BGP_DETERMINISTIC_MED)
-@@ -3100,6 +3106,32 @@ DEFUN (no_bgp_default_show_hostname,
- return CMD_SUCCESS;
- }
-
-+/* Display hostname in certain command outputs */
-+DEFUN (bgp_default_show_nexthop_hostname,
-+ bgp_default_show_nexthop_hostname_cmd,
-+ "bgp default show-nexthop-hostname",
-+ "BGP specific commands\n"
-+ "Configure BGP defaults\n"
-+ "Show hostname for nexthop in certain command outputs\n")
-+{
-+ VTY_DECLVAR_CONTEXT(bgp, bgp);
-+ SET_FLAG(bgp->flags, BGP_FLAG_SHOW_NEXTHOP_HOSTNAME);
-+ return CMD_SUCCESS;
-+}
-+
-+DEFUN (no_bgp_default_show_nexthop_hostname,
-+ no_bgp_default_show_nexthop_hostname_cmd,
-+ "no bgp default show-nexthop-hostname",
-+ NO_STR
-+ "BGP specific commands\n"
-+ "Configure BGP defaults\n"
-+ "Show hostname for nexthop in certain command outputs\n")
-+{
-+ VTY_DECLVAR_CONTEXT(bgp, bgp);
-+ UNSET_FLAG(bgp->flags, BGP_FLAG_SHOW_NEXTHOP_HOSTNAME);
-+ return CMD_SUCCESS;
-+}
-+
- /* "bgp network import-check" configuration. */
- DEFUN (bgp_network_import_check,
- bgp_network_import_check_cmd,
-@@ -15190,6 +15222,15 @@ int bgp_config_write(struct vty *vty)
- ? ""
- : "no ");
-
-+ /* BGP default show-nexthop-hostname */
-+ if (!!CHECK_FLAG(bgp->flags, BGP_FLAG_SHOW_NEXTHOP_HOSTNAME)
-+ != SAVE_BGP_SHOW_HOSTNAME)
-+ vty_out(vty, " %sbgp default show-nexthop-hostname\n",
-+ CHECK_FLAG(bgp->flags,
-+ BGP_FLAG_SHOW_NEXTHOP_HOSTNAME)
-+ ? ""
-+ : "no ");
-+
- /* BGP default subgroup-pkt-queue-max. */
- if (bgp->default_subgroup_pkt_queue_max
- != BGP_DEFAULT_SUBGROUP_PKT_QUEUE_MAX)
-@@ -15815,6 +15856,10 @@ void bgp_vty_init(void)
- install_element(BGP_NODE, &bgp_default_show_hostname_cmd);
- install_element(BGP_NODE, &no_bgp_default_show_hostname_cmd);
-
-+ /* bgp default show-nexthop-hostname */
-+ install_element(BGP_NODE, &bgp_default_show_nexthop_hostname_cmd);
-+ install_element(BGP_NODE, &no_bgp_default_show_nexthop_hostname_cmd);
-+
- /* "bgp default subgroup-pkt-queue-max" commands. */
- install_element(BGP_NODE, &bgp_default_subgroup_pkt_queue_max_cmd);
- install_element(BGP_NODE, &no_bgp_default_subgroup_pkt_queue_max_cmd);
-diff --git a/bgpd/bgpd.h b/bgpd/bgpd.h
-index 4a5772a53b..4efc068dea 100644
---- a/bgpd/bgpd.h
-+++ b/bgpd/bgpd.h
-@@ -447,6 +447,7 @@ struct bgp {
- #define BGP_FLAG_SELECT_DEFER_DISABLE (1 << 23)
- #define BGP_FLAG_GR_DISABLE_EOR (1 << 24)
- #define BGP_FLAG_EBGP_REQUIRES_POLICY (1 << 25)
-+#define BGP_FLAG_SHOW_NEXTHOP_HOSTNAME (1 << 26)
-
- enum global_mode GLOBAL_GR_FSM[BGP_GLOBAL_GR_MODE]
- [BGP_GLOBAL_GR_EVENT_CMD];
-
-From 104dfe5258cbeb0443fa4d6577794a1e5a5dafd3 Mon Sep 17 00:00:00 2001
-From: Donatas Abraitis <donatas.abraitis@gmail.com>
-Date: Wed, 6 May 2020 17:50:04 +0300
-Subject: [PATCH 3/4] bgpd: Add "hostname" in JSON output for `show bgp` family
- outputs
-
-This adds hostname regardless if `bgp default show-hostname` enabled or not.
-
-Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
----
- bgpd/bgp_route.c | 40 ++++++++++++++++++++--------------------
- 1 file changed, 20 insertions(+), 20 deletions(-)
-
-diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
-index f033f525e5..5f645fa871 100644
---- a/bgpd/bgp_route.c
-+++ b/bgpd/bgp_route.c
-@@ -7671,10 +7671,10 @@ void route_vty_out(struct vty *vty, const struct prefix *p,
- json_object_string_add(json_nexthop_global, "ip",
- nexthop);
-
-- if (nexthop_hostname)
-+ if (path->peer->hostname)
- json_object_string_add(json_nexthop_global,
- "hostname",
-- nexthop_hostname);
-+ path->peer->hostname);
-
- json_object_string_add(json_nexthop_global, "afi",
- (af == AF_INET) ? "ipv4"
-@@ -7701,10 +7701,10 @@ void route_vty_out(struct vty *vty, const struct prefix *p,
- json_object_string_add(json_nexthop_global, "ip",
- inet_ntoa(attr->nexthop));
-
-- if (nexthop_hostname)
-+ if (path->peer->hostname)
- json_object_string_add(json_nexthop_global,
- "hostname",
-- nexthop_hostname);
-+ path->peer->hostname);
-
- json_object_string_add(json_nexthop_global, "afi",
- "ipv4");
-@@ -7735,10 +7735,10 @@ void route_vty_out(struct vty *vty, const struct prefix *p,
- json_nexthop_global, "ip",
- inet_ntoa(attr->nexthop));
-
-- if (nexthop_hostname)
-+ if (path->peer->hostname)
- json_object_string_add(
- json_nexthop_global, "hostname",
-- nexthop_hostname);
-+ path->peer->hostname);
-
- json_object_boolean_true_add(
- json_nexthop_global,
-@@ -7768,10 +7768,10 @@ void route_vty_out(struct vty *vty, const struct prefix *p,
- json_object_string_add(json_nexthop_global, "ip",
- inet_ntoa(attr->nexthop));
-
-- if (nexthop_hostname)
-+ if (path->peer->hostname)
- json_object_string_add(json_nexthop_global,
- "hostname",
-- nexthop_hostname);
-+ path->peer->hostname);
-
- json_object_string_add(json_nexthop_global, "afi",
- "ipv4");
-@@ -7804,10 +7804,10 @@ void route_vty_out(struct vty *vty, const struct prefix *p,
- inet_ntop(AF_INET6, &attr->mp_nexthop_global,
- buf, BUFSIZ));
-
-- if (nexthop_hostname)
-+ if (path->peer->hostname)
- json_object_string_add(json_nexthop_global,
- "hostname",
-- nexthop_hostname);
-+ path->peer->hostname);
-
- json_object_string_add(json_nexthop_global, "afi",
- "ipv6");
-@@ -7826,10 +7826,10 @@ void route_vty_out(struct vty *vty, const struct prefix *p,
- &attr->mp_nexthop_local, buf,
- BUFSIZ));
-
-- if (nexthop_hostname)
-+ if (path->peer->hostname)
- json_object_string_add(
- json_nexthop_ll, "hostname",
-- nexthop_hostname);
-+ path->peer->hostname);
-
- json_object_string_add(json_nexthop_ll, "afi",
- "ipv6");
-@@ -8856,10 +8856,10 @@ void route_vty_out_detail(struct vty *vty, struct bgp *bgp,
- json_nexthop_global, "ip",
- inet_ntoa(attr->mp_nexthop_global_in));
-
-- if (nexthop_hostname)
-+ if (path->peer->hostname)
- json_object_string_add(
- json_nexthop_global, "hostname",
-- nexthop_hostname);
-+ path->peer->hostname);
- } else {
- if (nexthop_hostname)
- vty_out(vty, " %pI4(%s)",
-@@ -8875,10 +8875,10 @@ void route_vty_out_detail(struct vty *vty, struct bgp *bgp,
- json_nexthop_global, "ip",
- inet_ntoa(attr->nexthop));
-
-- if (nexthop_hostname)
-+ if (path->peer->hostname)
- json_object_string_add(
- json_nexthop_global, "hostname",
-- nexthop_hostname);
-+ path->peer->hostname);
- } else {
- if (nexthop_hostname)
- vty_out(vty, " %pI4(%s)",
-@@ -8900,10 +8900,10 @@ void route_vty_out_detail(struct vty *vty, struct bgp *bgp,
- inet_ntop(AF_INET6, &attr->mp_nexthop_global,
- buf, INET6_ADDRSTRLEN));
-
-- if (nexthop_hostname)
-+ if (path->peer->hostname)
- json_object_string_add(json_nexthop_global,
- "hostname",
-- nexthop_hostname);
-+ path->peer->hostname);
-
- json_object_string_add(json_nexthop_global, "afi",
- "ipv6");
-@@ -9094,10 +9094,10 @@ void route_vty_out_detail(struct vty *vty, struct bgp *bgp,
- inet_ntop(AF_INET6, &attr->mp_nexthop_local,
- buf, INET6_ADDRSTRLEN));
-
-- if (nexthop_hostname)
-+ if (path->peer->hostname)
- json_object_string_add(json_nexthop_ll,
- "hostname",
-- nexthop_hostname);
-+ path->peer->hostname);
-
- json_object_string_add(json_nexthop_ll, "afi", "ipv6");
- json_object_string_add(json_nexthop_ll, "scope",
-
-From 8df39282ea64e2a65a7910012627f78d080833b1 Mon Sep 17 00:00:00 2001
-From: Donatas Abraitis <donatas.abraitis@gmail.com>
-Date: Wed, 24 Jun 2020 17:26:27 +0300
-Subject: [PATCH 4/4] doc: Add some words about `bgp default
- show-[nexthop]-hostname`
-
-Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
----
- doc/user/bgp.rst | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
-diff --git a/doc/user/bgp.rst b/doc/user/bgp.rst
-index 36227db604..a6c29724b0 100644
---- a/doc/user/bgp.rst
-+++ b/doc/user/bgp.rst
-@@ -1366,6 +1366,19 @@ Configuring Peers
- on by default or not. This command defaults to on and is not displayed.
- The `no bgp default ipv4-unicast` form of the command is displayed.
-
-+.. index:: [no] bgp default show-hostname
-+.. clicmd:: [no] bgp default show-hostname
-+
-+ This command shows the hostname of the peer in certain BGP commands
-+ outputs. It's easier to troubleshoot if you have a number of BGP peers.
-+
-+.. index:: [no] bgp default show-nexthop-hostname
-+.. clicmd:: [no] bgp default show-nexthop-hostname
-+
-+ This command shows the hostname of the next-hop in certain BGP commands
-+ outputs. It's easier to troubleshoot if you have a number of BGP peers
-+ and a number of routes to check.
-+
- .. index:: [no] neighbor PEER advertisement-interval (0-600)
- .. clicmd:: [no] neighbor PEER advertisement-interval (0-600)
-
+++ /dev/null
-From 2bbe7133eb5cb97ba4b745cd251a8615cd2bd008 Mon Sep 17 00:00:00 2001
-From: Richard Wu <wutong23@baidu.com>
-Date: Fri, 5 Jun 2020 17:54:57 +0800
-Subject: [PATCH] bgpd: Fix the bug that BGP MRAI does not work.
-
-Issue: bgp_process_writes will be called when the fd is writable.
- And it will bgp_generate_updgrp_packets to generate the
- update packets no matter MRAI is set or not.
-Fix: bgp_generate_updgrp_packets thread will return without sending
- any update when MRAI timer is still running.
-
-Signed-off-by: Richard Wu <wutong23@baidu.com>
----
- bgpd/bgp_packet.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c
-index 29c03f4014..6f1c033f2a 100644
---- a/bgpd/bgp_packet.c
-+++ b/bgpd/bgp_packet.c
-@@ -408,6 +408,9 @@ int bgp_generate_updgrp_packets(struct thread *thread)
- if (peer->bgp->main_peers_update_hold)
- return 0;
-
-+ if (peer->t_routeadv)
-+ return 0;
-+
- do {
- s = NULL;
- FOREACH_AFI_SAFI (afi, safi) {
+++ /dev/null
---- a/lib/prefix.h 2017-12-03 22:02:41.642317377 +0200
-+++ b/lib/prefix.h 2017-12-03 22:03:30.011320262 +0200
-@@ -24,12 +24,12 @@
-
- #ifdef SUNOS_5
- #include <sys/ethernet.h>
--#else
-+/*#else
- #ifdef GNU_LINUX
- #include <net/ethernet.h>
- #else
- #include <netinet/if_ether.h>
--#endif
-+#endif*/
- #endif
- #include "sockunion.h"
- #include "ipaddr.h"
#fwknop config
menu "Configuration"
- depends on PACKAGE_fwknopd
+ depends on PACKAGE_fwknopd || PACKAGE_fwknop
config FWKNOPD_GPG
bool "Enable GPG support"
select PACKAGE_iptables-mod-nfqueue
default n
-
endmenu
PKG_NAME:=fwknop
PKG_VERSION:=2.6.10
-PKG_RELEASE:=5
+PKG_RELEASE:=6
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://www.cipherdyne.org/fwknop/download
CATEGORY:=Network
SUBMENU:=Firewall
TITLE+= Daemon
- DEPENDS:=+iptables +libfko +!FWKNOPD_NFQ_CAPTURE:libpcap +FWKNOPD_NFQ_CAPTURE:iptables-mod-nfqueue +FWKNOP_GPG:gnupg \
- +FWKNOPD_NFQ_CAPTURE:libnetfilter-queue +FWKNOPD_NFQ_CAPTURE:libnfnetlink
+ DEPENDS:=+iptables +libfko +!FWKNOPD_NFQ_CAPTURE:libpcap +FWKNOPD_NFQ_CAPTURE:iptables-mod-nfqueue \
+ +FWKNOPD_NFQ_CAPTURE:libnetfilter-queue +FWKNOPD_NFQ_CAPTURE:libnfnetlink \
+ +FWKNOP_GPG:gnupg +FWKNOP_GPG:libgpgme
endef
define Package/fwknopd/description
CATEGORY:=Network
SUBMENU:=Firewall
TITLE+= Client
- DEPENDS:=+libfko
+ DEPENDS:=+libfko +FWKNOPD_GPG:gnupg +FWKNOPD_GPG:libgpgme
endef
define Package/fwknop/description
CATEGORY:=Libraries
SUBMENU:=Firewall
TITLE+= Library
+ DEPENDS:=+FWKNOPD_GPG:gnupg +FWKNOPD_GPG:libgpgme
endef
define Package/libfko/description
include $(TOPDIR)/rules.mk
PKG_NAME:=git
-PKG_VERSION:=2.27.0
+PKG_VERSION:=2.29.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/software/scm/git/
-PKG_HASH:=73ca9774d7fa226e1d87c1909401623f96dca6a044e583b9a762e84d7d1a73f9
+PKG_HASH:=f2fc436ebe657821a1360bcd1e5f4896049610082419143d60f6fa13c2f607c1
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING
PKG_NAME:=gitolite
PKG_VERSION:=3.6.11
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_HASH:=2166a61b14de19e605b14f4a13a070fbfd5ecd247b6fd725108f111198a2c121
mkdir -p $(PKG_INSTALL_DIR)/usr/libexec/gitolite
$(PKG_BUILD_DIR)/install -to $(PKG_INSTALL_DIR)/usr/libexec/gitolite
mkdir -p $(PKG_INSTALL_DIR)/usr/bin
- ln -sf /usr/libexec/gitolite/gitolite $(PKG_INSTALL_DIR)/usr/bin/gitolite
+ $(LN) ../libexec/gitolite/gitolite $(PKG_INSTALL_DIR)/usr/bin/gitolite
endef
define Package/gitolite/install
PKG_NAME:=gnurl
PKG_VERSION:=7.72.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
-PKG_SOURCE_URL:=@GNU/gnunet
-
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=@GNU/gnunet
PKG_HASH:=b1e72be03fcf9b3fdaf01ae0702c686e9de10f67ef538918447c9e81555694f8
+PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=COPYING
PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
SECTION:=net
CATEGORY:=Network
URL:=https://gnunet.org/en/gnurl.html
- MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
endef
define Package/gnurl
--disable-manual \
--disable-verbose
-define Build/Compile
- +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- CC="$(TARGET_CC)" \
- install
-endef
-
define Build/InstallDev
$(INSTALL_DIR) $(2)/bin $(1)/usr/bin $(1)/usr/include/gnurl $(1)/usr/lib $(1)/usr/lib/pkgconfig
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gnurl-config $(1)/usr/bin/
$(CP) $(PKG_INSTALL_DIR)/usr/include/gnurl/*.h $(1)/usr/include/gnurl
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libgnurl.{a,so*} $(1)/usr/lib/
$(CP) $(PKG_BUILD_DIR)/libgnurl.pc $(1)/usr/lib/pkgconfig/
- $(SED) 's,-L$$$${exec_prefix}/lib,,g' $(1)/usr/bin/gnurl-config
+ $(SED) 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' $(1)/usr/bin/gnurl-config
[ -n "$(TARGET_LDFLAGS)" ] && $(SED) 's#$(TARGET_LDFLAGS)##g' $(1)/usr/lib/pkgconfig/libgnurl.pc || true
$(LN) $(STAGING_DIR)/usr/bin/gnurl-config $(2)/bin/
endef
include $(TOPDIR)/rules.mk
PKG_NAME:=haproxy
-PKG_VERSION:=2.2.5
+PKG_VERSION:=2.2.6
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.haproxy.org/download/2.2/src
-PKG_HASH:=63ad1813e01992d0fbe5ac7ca3e516a53fc62cdb17845d5ac90260031b6dd747
+PKG_HASH:=be1c6754cbaceafc4837e0c6036c7f81027a3992516435cbbbc5dc749bf5a087
PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>, \
Christian Lachner <gladiac@gmail.com>
#!/bin/sh
CLONEURL=https://git.haproxy.org/git/haproxy-2.2.git
-BASE_TAG=v2.2.5
+BASE_TAG=v2.2.6
TMP_REPODIR=tmprepo
PATCHESDIR=patches
include $(TOPDIR)/rules.mk
PKG_NAME:=hs20
-PKG_RELEASE:=2
+PKG_RELEASE:=4
PKG_SOURCE_URL:=http://w1.fi/hostap.git
PKG_SOURCE_PROTO:=git
define Download/dm-ddf-dtd
URL:=http://www.openmobilealliance.org/tech/DTD
- FILE:=dm_ddf-v1_2.dtd
- HASH:=1fb8f97ee13b673e0d2386ef3ec64fbc9c8d75429a9725dc3fac295c4d5ccae4
+ FILE:=dm_ddf-v1_3.dtd
+ HASH:=9b3e1dc66a2d38fc6e1300e9fb6f06f95d042206dabc94ae989739feaeb0733e
endef
define Download/spp-xsd
define Package/hs20-common/install
$(INSTALL_DIR) $(1)/etc/hs20/spp
- $(INSTALL_DATA) $(DL_DIR)/dm_ddf-v1_2.dtd $(1)/etc/hs20/spp
+ $(INSTALL_DATA) $(DL_DIR)/dm_ddf-v1_3.dtd $(1)/etc/hs20/spp
$(INSTALL_DATA) $(DL_DIR)/spp-v1_0.xsd $(1)/etc/hs20/spp/spp.xsd
endef
mkdir -p /etc/hs20/AS/Key
cp /etc/hs20/ca/server.* /etc/hs20/ca/ca.pem /etc/hs20/AS/Key
+ uci batch <<EOF
+set uhttpd.main.cert='/etc/hs20/ca/server.pem'
+set uhttpd.main.key='/etc/hs20/ca/server.key'
+commit uhttpd
+EOF
+
return 0
}
sql_set $realm remediation_url "$remediation_url"
sql_set $realm free_remediation_url "$free_remediation_url"
sql_set $realm signup_url "$signup_url"
+ echo "DELETE FROM wildcards WHERE identity='';"
+ echo "INSERT INTO wildcards(identity,methods) VALUES('','TTLS,TLS');"
) | sqlite3 /etc/hs20/AS/DB/eap_user.db
return 0
--- /dev/null
+--- a/hs20/server/spp_server.c
++++ b/hs20/server/spp_server.c
+@@ -1329,7 +1329,7 @@ static xml_node_t * spp_get_mo(struct hs
+ return NULL;
+ }
+
+- snprintf(fname, sizeof(fname), "%s/spp/dm_ddf-v1_2.dtd", ctx->root_dir);
++ snprintf(fname, sizeof(fname), "%s/spp/dm_ddf-v1_3.dtd", ctx->root_dir);
+ if (xml_validate_dtd(ctx->xml, tnds, fname, ret_err) == 0)
+ *valid = 1;
+ else if (ret_err && *ret_err &&
include $(TOPDIR)/rules.mk
PKG_NAME:=https-dns-proxy
-PKG_VERSION:=2020-04-09
-PKG_RELEASE=3
+PKG_VERSION:=2020-08-21
+PKG_RELEASE=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/aarond10/https_dns_proxy
-PKG_SOURCE_DATE:=2020-04-09
-PKG_SOURCE_VERSION:=40647ce94c62a47e9d53efae8018fb3142e277b9
-PKG_MIRROR_HASH:=4a8052b8bd482a17b769bcd4ee2620368f8c91955c5e976088be8d2ab002dde6
+PKG_SOURCE_DATE:=2020-08-21
+PKG_SOURCE_VERSION:=dd22b71250d33d0c8c39bb01a595e016db819c56
+PKG_MIRROR_HASH:=1c93a9f0833e120880d3b311e43db568d219e047e100a03ed6c7a3c00544d36c
PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net>
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE
endef
define Package/https-dns-proxy/description
-https_dns_proxy is a light-weight DNS<-->HTTPS, non-caching translation proxy for the RFC 8484 DNS-over-HTTPS standard. It receives regular (UDP) DNS requests and issues them via DoH.
-Please see https://github.com/openwrt/packages/blob/master/net/https-dns-proxy/files/README.md for further information.
+https-dns-proxy is a light-weight DNS<-->HTTPS, non-caching translation proxy for the RFC 8484 DoH standard.
+It receives regular (UDP) DNS requests and issues them via DoH.
+Please see https://docs.openwrt.melmac.net/https-dns-proxy/ for further information.
endef
define Package/https-dns-proxy/conffiles
$(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/init.d ${1}/etc/config
$(INSTALL_BIN) $(PKG_BUILD_DIR)/https_dns_proxy $(1)/usr/sbin/https-dns-proxy
$(INSTALL_BIN) ./files/https-dns-proxy.init $(1)/etc/init.d/https-dns-proxy
+ sed -i "s|^\(PKG_VERSION\).*|\1='$(PKG_VERSION)-$(PKG_RELEASE)'|" $(1)/etc/init.d/https-dns-proxy
$(INSTALL_CONF) ./files/https-dns-proxy.config $(1)/etc/config/https-dns-proxy
endef
-# DNS Over HTTPS Proxy (https-dns-proxy)
+# README
-A lean RFC8484-compatible (no JSON API support) DNS-over-HTTPS (DoH) proxy service which supports DoH servers ran by AdGuard, CleanBrowsing, Cloudflare, Google, ODVR (nic.cz) and Quad9. Based on [@aarond10](https://github.com/aarond10)'s [https-dns-proxy](https://github.com/aarond10/https_dns_proxy).
-
-## Features
-
-- [RFC8484](https://tools.ietf.org/html/rfc8484)-compatible DoH Proxy.
-- Compact size.
-- Web UI (```luci-app-https-dns-proxy```) available.
-- (By default) automatically updates DNSMASQ settings to use DoH proxy when it's started and reverts to old DNSMASQ resolvers when DoH proxy is stopped.
-
-## Screenshots (luci-app-https-dns-proxy)
-
-![screenshot](https://cdn.jsdelivr.net/gh/stangri/openwrt_packages@master/screenshots/https-dns-proxy/screenshot01.png "https-dns-proxy screenshot")
-
-## Requirements
-
-This proxy requires the following packages to be installed on your router: ```libc```, ```libcares```, ```libcurl```, ```libev```, ```ca-bundle```. They will be automatically installed when you're installing ```https-dns-proxy```.
-
-## Unmet Dependencies
-
-If you are running a development (trunk/snapshot) build of OpenWrt/LEDE Project on your router and your build is outdated (meaning that packages of the same revision/commit hash are no longer available and when you try to satisfy the [requirements](#requirements) you get errors), please flash either current LEDE release image or current development/snapshot image.
-
-## How To Install
-
-Install ```https-dns-proxy``` and ```luci-app-https-dns-proxy``` packages from Web UI or run the following in the command line:
-
-```sh
-opkg update; opkg install https-dns-proxy luci-app-https-dns-proxy;
-```
-
-## Default Settings
-
-Default configuration has service enabled and starts the service with Google and Cloudflare DoH servers. In most configurations, you will keep the default ```DNSMASQ``` service installed to handle requests from devices in your local network and point ```DNSMASQ``` to use ```https-dns-proxy``` for name resolution.
-
-By default, the service will intelligently override existing ```DNSMASQ``` servers settings on start to use the DoH servers and restores original ```DNSMASQ``` servers on stop. See the [Configuration Settings](#configuration-settings) section below for more information and how to disable this behavior.
-
-## Configuration Settings
-
-Configuration contains the (named) "main" config section where you can configure which ```DNSMASQ``` settings the service will automatically affect and the typed (unnamed) https-dns-proxy instance settings. The original config file is included below:
-
-```text
-config main 'config'
- option update_dnsmasq_config '*'
-
-config https-dns-proxy
- option bootstrap_dns '8.8.8.8,8.8.4.4'
- option resolver_url 'https://dns.google/dns-query'
- option listen_addr '127.0.0.1'
- option listen_port '5053'
- option user 'nobody'
- option group 'nogroup'
-
-config https-dns-proxy
- option bootstrap_dns '1.1.1.1,1.0.0.1'
- option resolver_url 'https://cloudflare-dns.com/dns-query'
- option listen_addr '127.0.0.1'
- option listen_port '5054'
- option user 'nobody'
- option group 'nogroup'
-```
-
-The ```update_dnsmasq_config``` option can be set to dash (set to ```'-'``` to not change ```DNSMASQ``` server settings on start/stop), can be set to ```'*'``` to affect all ```DNSMASQ``` instance server settings or have a space-separated list of ```DNSMASQ``` instances to affect (like ```'0 4 5'```). If this option is omitted, the default setting is ```'*'```.
-
-Starting with ```https-dns-proxy``` version ```2019-12-03-3``` and higher, when the service is set to update the DNSMASQ servers setting on start/stop, it does not override entries which contain either ```#``` or ```/```, so the entries like listed below will be kept in use:
-
-```test
- list server '/onion/127.0.0.1#65453'
- list server '/openwrt.org/8.8.8.8'
- list server '/pool.ntp.org/8.8.8.8'
- list server '127.0.0.1#15353'
- list server '127.0.0.1#55353'
- list server '127.0.0.1#65353'
-```
-
-The https-dns-proxy instance settings are:
-
-|Parameter|Type|Default|Description|
-| --- | --- | --- | --- |
-|bootstrap_dns|IP Address||The non-encrypted DNS servers to be used to resolve the DoH server name on start.|
-|listen_addr|IP Address|127.0.0.1|The local IP address to listen to requests.|
-|listen_port|port|5053 and up|If this setting is omitted, the service will start the first https-dns-proxy instance on port 5053, second on 5054 and so on.|
-|logfile|Full filepath||Full filepath to the file to log the instance events to.|
-|resolver_url|URL||The https URL to the RFC8484-compatible resolver.|
-|proxy_server|URL||Local proxy server to use when accessing resolvers.|
-|user|String|nobody|Local user to run instance under.|
-|group|String|nogroup|Local group to run instance under.|
-|use_http1|Boolean|0|If set to 1, use HTTP/1 on installations with broken/outdated ```curl``` package. Included for posterity reasons, you will most likely not ever need it on OpenWrt.|
-|verbosity|Integer|0|logging verbosity level. fatal = 0, error = 1, warning = 2, info = 3, debug = 4|
-|use_ipv6_resolvers_only|Boolean|0|If set to 1, Forces IPv6 DNS resolvers instead of IPv4|
-
-## Thanks
-
-This OpenWrt package wouldn't have been possible without [@aarond10](https://github.com/aarond10)'s [https-dns-proxy](https://github.com/aarond10/https_dns_proxy) and his active participation in the OpenWrt package itself. Special thanks to [@jow-](https://github.com/jow-) for general package/luci guidance.
+README has been moved to [https://docs.openwrt.melmac.net/https-dns-proxy/](https://docs.openwrt.melmac.net/https-dns-proxy/).
#!/bin/sh /etc/rc.common
-# Copyright 2019 Stan Grishin (stangri@melmac.net)
+# Copyright 2019-2020 Stan Grishin (stangri@melmac.net)
# shellcheck disable=SC2039
+PKG_VERSION='dev-test'
-export START=80
-export USE_PROCD=1
+# shellcheck disable=SC2034
+START=80
+# shellcheck disable=SC2034
+USE_PROCD=1
+
+# shellcheck disable=SC2034
+EXTRA_COMMANDS='version'
+version() { echo "$PKG_VERSION"; }
dnsmasqConfig=''
append_parm "$cfg" 'logfile' '-l'
append_bool "$cfg" 'use_http1' '-x'
config_get_bool ipv6_resolvers_only "$cfg" 'use_ipv6_resolvers_only' '0'
- config_get verbosity "$cfg" 'verbosity' "0"
+ config_get verbosity "$cfg" 'verbosity' '0'
# shellcheck disable=SC2086,SC2154
for i in $(seq 1 $verbosity); do
- xappend "-v"
+ xappend '-v'
done
# shellcheck disable=SC2154
if [ "$ipv6_resolvers_only" = 0 ]; then
- xappend "-4"
+ xappend '-4'
fi
procd_open_instance
--- /dev/null
+#!/bin/sh
+
+/etc/init.d/"$1" version 2>&1 | grep "$2"
include $(TOPDIR)/rules.mk
PKG_NAME:=i2pd
-PKG_VERSION:=2.32.1
+PKG_VERSION:=2.35.0
PKG_RELEASE:=2
-PKG_BUILD_PARALLEL:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/PurpleI2P/i2pd/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=64229101411a9dda3237dc27939aa13ec90d4900aae499e59931063c36e8556b
+PKG_HASH:=d041fd4e7a88ac168e76f66fdab40174ad093cdc13451cdbd0dd1216e5581f8a
PKG_MAINTAINER:=David Yang <mmyangfl@gmail.com>
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE
+PKG_BUILD_PARALLEL:=1
+PKG_INSTALL:=1
+
include $(INCLUDE_DIR)/package.mk
define Package/i2pd
/etc/i2pd/tunnels.d/
endef
+define Build/Prepare
+ $(Build/Prepare/Default)
+ # race condition
+ cd $(PKG_BUILD_DIR); $(MAKE) mk_obj_dir
+endef
+
TARGET_LDFLAGS+=-latomic
MAKE_FLAGS+=USE_AESNI=no USE_AVX=no
config i2pd
+ # Make sure your directories have the right owner! (i2pd:i2pd)
+
# Set where i2pd should store its data (netDB, certificates, addresses,
# etc). By default we store it in RAM so no data is written to ROM.
# If you store data permanently, you may want to enable
- # 'profiles = true' and 'addressbook = true' in i2pd.conf
+ # 'profiles = true' and 'addressbook = true' in i2pd.conf.
#### IMPORTANT! ####
# Data is consistently rewritten. DO NOT POINT IT TO INNER ROM. Flash
# will die.
. /lib/functions.sh
-
i2pd_start() {
local cfg="$1"
local data_dir
config_get addressbook_dir "$cfg" addressbook_dir
## Setting up data dir
- [ -d "$data_dir" ] || {
+ if [ ! -d "$data_dir" ] ; then
mkdir -p "$data_dir"
chown "$USER:$GROUP" "$data_dir"
ln -s /usr/share/i2pd/certificates "$data_dir/certificates"
- [ -n "$addressbook_dir" ] && {
- [ -d "$addressbook_dir" ] || mkdir -p "$addressbook_dir"
- chown "$USER:$GROUP" "$addressbook_dir"
+ if [ -n "$addressbook_dir" ] ; then
+ if [ ! -d "$addressbook_dir" ] ; then
+ mkdir -p "$addressbook_dir"
+ chown "$USER:$GROUP" "$addressbook_dir"
+ fi
ln -s "$addressbook_dir" "$data_dir/addressbook"
- }
- }
+ fi
+ fi
+ [ -d "$DATADIR" ] || ln -s "$data_dir" "$DATADIR"
## We need permissions
touch "$PIDFILE"
procd_open_instance
procd_set_param command "$PROG" --service --conf="$CONFFILE" --pidfile "$PIDFILE"
- ## Don't know about i2pd user's HOME
procd_set_param env "HOME=$DATADIR"
## For debugging, provide about 512 MB on external storage for coredump and adjust /proc/sys/kernel/core_pattern
# echo "/tmp/coredumps/core.%e.%p.%s.%t" > /proc/sys/kernel/core_pattern
config_cb() {
local type="$1"
local name="$2"
- [ "$type" = "i2pd" ] && [ -n "$instance" ] && [ "$instance" = "$name" ] && instance_found=1
+ [ "$type" = "i2pd" -a -n "$instance" -a "$instance" = "$name" ] && instance_found=1
}
config_load i2pd
if [ -n "$instance" ]; then
- [ "$instance_found" -gt 0 ] || return
+ [ "$instance_found" = 0 ] && return
i2pd_start "$instance"
else
config_foreach i2pd_start i2pd
## Use that path to store separated tunnels in different config files.
## Default: ~/.i2pd/tunnels.d or /var/lib/i2pd/tunnels.d
-# tunnelsdir = /var/lib/i2pd/tunnels.d
-+tunnelsdir = /etc/i2pd/tunnels.conf
++tunnelsdir = /etc/i2pd/tunnels.d
## Where to write pidfile (default: i2pd.pid, not used in Windows)
# pidfile = /run/i2pd.pid
port = 4447
## Optional keys file for proxy local destination
# keys = socks-proxy-keys.dat
-@@ -228,4 +230,5 @@ verify = true
+@@ -228,7 +230,8 @@ verify = true
[persist]
## Save peer profiles on disk (default: true)
-# profiles = true
+profiles = false
+addressbook = false
+
+ [cpuext]
+ ## Use CPU AES-NI instructions set when work with cryptography when available (default: true)
--- /dev/null
+From ca3b8191510c1006d031d02c50edcf6b4f6a6e8f Mon Sep 17 00:00:00 2001
+From: R4SAS <r4sas@i2pmail.org>
+Date: Thu, 10 Dec 2020 18:32:41 +0300
+Subject: [PATCH] [avx] check ig c++ target supports AVX
+
+Signed-off-by: R4SAS <r4sas@i2pmail.org>
+---
+ libi2pd/Crypto.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/libi2pd/Crypto.cpp
++++ b/libi2pd/Crypto.cpp
+@@ -638,7 +638,7 @@ namespace crypto
+ {
+ uint64_t buf[256];
+ uint64_t hash[12]; // 96 bytes
+-#if defined(__x86_64__) || defined(__i386__)
++#if (defined(__x86_64__) || defined(__i386__)) && defined(__AVX__) // not all X86 targets supports AVX (like old Pentium, see #1600)
+ if(i2p::cpu::avx)
+ {
+ __asm__
+--- a/libi2pd/Identity.cpp
++++ b/libi2pd/Identity.cpp
+@@ -828,7 +828,7 @@ namespace data
+ XORMetric operator^(const IdentHash& key1, const IdentHash& key2)
+ {
+ XORMetric m;
+-#if defined(__x86_64__) || defined(__i386__)
++#if (defined(__x86_64__) || defined(__i386__)) && defined(__AVX__) // not all X86 targets supports AVX (like old Pentium, see #1600)
+ if(i2p::cpu::avx)
+ {
+ __asm__
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=iftop
+PKG_RELEASE:=2
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://code.blinkace.com/pdw/iftop.git
+PKG_SOURCE_DATE:=2018-10-03
+PKG_SOURCE_VERSION:=77901c8c53e01359d83b8090aacfe62214658183
+PKG_MIRROR_HASH:=219231541a437f5aecd497796be0202d337e13f141359a93595bf2cd8c5c5544
+PKG_MAINTAINER:=Paul Spooren <mail@aparcar.org>
+PKG_LICENSE:=GPL-2.0
+
+PKG_FIXUP:=autoreconf
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/iftop
+ SECTION:=net
+ CATEGORY:=Network
+ DEPENDS:=+libpcap +libncurses +libpthread
+ TITLE:=display bandwith usage on an interface
+ URL:=http://www.ex-parrot.com/~pdw/iftop/
+endef
+
+define Package/iftop/description
+ iftop does for network usage what top(1) does for CPU usage. It
+ listens to network traffic on a named interface and displays a
+ table of current bandwidth usage by pairs of hosts. Handy for
+ answering the question 'why is our ADSL link so slow?'.
+endef
+
+define Package/iftop/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/iftop $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,iftop))
+
--- /dev/null
+From 18a9f7732944bfe45023f9dd7528295e7d43e678 Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Date: Wed, 12 Aug 2020 22:31:33 +0200
+Subject: [PATCH] ui_common.h: fix build with gcc 10
+
+Define global variables as extern in header to fix the build with gcc 10
+which default to -fno-common: https://gcc.gnu.org/gcc-10/porting_to.html
+
+Fixes:
+ - http://autobuild.buildroot.org/results/55a8581f11e776439782c228441ef1c8c1243386
+
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+[Upstream status: sent to iftop-users@lists.beasts.org]
+---
+ ui_common.c | 6 ++++++
+ ui_common.h | 10 +++++-----
+ 2 files changed, 11 insertions(+), 5 deletions(-)
+
+diff --git a/ui_common.c b/ui_common.c
+index dcf6646..b1027ec 100644
+--- a/ui_common.c
++++ b/ui_common.c
+@@ -17,6 +17,12 @@
+
+ #include "ui_common.h"
+
++sorted_list_type screen_list;
++host_pair_line totals;
++int peaksent, peakrecv, peaktotal;
++hash_type* screen_hash;
++hash_type* service_hash;
++
+ /* 2, 10 and 40 seconds */
+ int history_divs[HISTORY_DIVISIONS] = {1, 5, 20};
+
+diff --git a/ui_common.h b/ui_common.h
+index 63ae5bb..add72fe 100644
+--- a/ui_common.h
++++ b/ui_common.h
+@@ -33,12 +33,12 @@ typedef struct host_pair_line_tag {
+
+ extern options_t options;
+
+-sorted_list_type screen_list;
+-host_pair_line totals;
+-int peaksent, peakrecv, peaktotal;
++extern sorted_list_type screen_list;
++extern host_pair_line totals;
++extern int peaksent, peakrecv, peaktotal;
+ extern history_type history_totals;
+-hash_type* screen_hash;
+-hash_type* service_hash;
++extern hash_type* screen_hash;
++extern hash_type* service_hash;
+
+ void analyse_data(void);
+ void screen_list_init(void);
PKG_NAME:=isc-dhcp
UPSTREAM_NAME:=dhcp
PKG_VERSION:=4.4.1
-PKG_RELEASE:=9
+PKG_RELEASE:=11
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE
reload_service() {
rc_procd start_service "$@"
- prodcd_send_signal dhcpd "$@"
+ procd_send_signal dhcpd "$@"
}
add_interface_trigger() {
--- /dev/null
+--- a/bind/Makefile.in
++++ b/bind/Makefile.in
+@@ -57,6 +57,7 @@
+ rm -rf ${cleandirs} ${cleanfiles} ; \
+ (cd ${bindsrcdir} && \
+ export CC=${CROSS_CC} && \
++ ac_cv_func_catgets=no \
+ ./configure ${bindconfig} --disable-atomic \
+ --disable-kqueue --disable-epoll --disable-kqueue \
+ --disable-epoll --disable-devpoll --without-openssl \
PKG_NAME:=kadnode
PKG_VERSION:=2.3.0
-PKG_RELEASE:=2
-
-PKG_LICENSE:=MIT
+PKG_RELEASE:=3
PKG_SOURCE_URL:=https://codeload.github.com/mwarning/KadNode/tar.gz/v$(PKG_VERSION)?
PKG_SOURCE:=kadnode-$(PKG_VERSION).tar.gz
PKG_HASH:=abb2ca66fb525fab53157d5486bbb43e3a522a4bdc9280a3dcb8cb403ee08583
PKG_BUILD_DIR:=$(BUILD_DIR)/KadNode-$(PKG_VERSION)
+PKG_MAINTAINER:=Moritz Warning <moritzwarning@web.de>
+PKG_LICENSE:=MIT
PKG_BUILD_PARALLEL:=1
URL:=https://github.com/mwarning/KadNode
MENU:=1
DEPENDS:=+KADNODE_ENABLE_BOB:libmbedtls +KADNODE_ENABLE_TLS:libmbedtls +KADNODE_ENABLE_UPNP:libminiupnpc +KADNODE_ENABLE_NATPMP:libnatpmp
- MAINTAINER:=Moritz Warning <moritzwarning@web.de>
endef
define Package/kadnode/description
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/build/kadnode $(1)/usr/bin/
ifeq ($(CONFIG_KADNODE_ENABLE_CMD),y)
- $(LN) /usr/bin/kadnode $(1)/usr/bin/kadnode-ctl
+ $(LN) kadnode $(1)/usr/bin/kadnode-ctl
endif
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) files/kadnode.init $(1)/etc/init.d/kadnode
include $(TOPDIR)/rules.mk
PKG_NAME:=knot
-PKG_VERSION:=3.0.2
+PKG_VERSION:=3.0.3
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://secure.nic.cz/files/knot-dns/
-PKG_HASH:=f813a5e53263ef51d0415508e1f7d33cfbb75a139ccb10a344ae5a91689933fb
+PKG_HASH:=fbc51897ef0ed0639ebad59b988a91382b9544288a2db8254f0b1de433140e38
PKG_MAINTAINER:=Daniel Salzman <daniel.salzman@nic.cz>
PKG_LICENSE:=GPL-3.0 LGPL-2.0 0BSD BSD-3-Clause OLDAP-2.8
PKG_NAME:=krb5
PKG_VERSION:=1.18.3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
# needed for samba4, to detect system-krb5
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/krb5-config $(1)/usr/bin
+ $(SED) 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' $(1)/usr/bin/krb5-config
+ $(INSTALL_DIR) $(2)/bin
+ $(LN) ../../usr/bin/krb5-config $(2)/bin/krb5-config
endef
define Package/krb5-libs/install
include $(TOPDIR)/rules.mk
PKG_NAME:=ksmbd-tools
-PKG_VERSION:=3.2.6
-PKG_RELEASE:=1
+PKG_VERSION:=3.3.1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/cifsd-team/ksmbd-tools/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=595029adb899fd8b4c49bea75bce4e3c3466811ef7089b2a55960174e720d919
+PKG_HASH:=0831677c5ccb91ba38c764ad22577830650a78300a676c2e7bb1baecadbdf725
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
CONFIGURE_VARS += GLIB_LIBS="$(STAGING_DIR)/usr/lib/libglib-2.0.a"
TARGET_CFLAGS += -ffunction-sections -fdata-sections -flto
-TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed -liconv $(if $(INTL_FULL),-lintl)
+TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed -liconv $(if $(INTL_FULL),-lintl) $(if $(CONFIG_LIBC_USE_GLIBC),-lpthread)
define Package/ksmbd-server/install
$(INSTALL_DIR) $(1)/usr/sbin
PKG_NAME:=libreswan
PKG_VERSION:=4.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://download.libreswan.org/
DEPENDS:= +IPV6:kmod-ip6-vti +IPV6:kmod-ipsec6 +ip-full +iptables-mod-ipsec \
+kmod-crypto-aead +kmod-crypto-authenc +kmod-crypto-gcm \
+kmod-crypto-hash +kmod-crypto-rng +kmod-ip-vti +kmod-ipsec \
- +kmod-ipsec4 +kmod-ipt-ipsec +libevent2 +libevent2-pthreads \
+ +kmod-ipsec4 +kmod-ipt-ipsec +kmod-xfrm-interface +libevent2 +libevent2-pthreads \
+libldns +librt +libunbound +nss-utils +nspr +libcap-ng
PROVIDES:=openswan
CONFLICTS:=strongswan
USE_LIBCAP_NG=true \
USE_SYSTEMD_WATCHDOG=false \
USE_SECCOMP=false\
+ USE_XFRM_INTERFACE_IFLA_HEADER=false \
PREFIX="/usr" \
FINALRUNDIR="/var/run/pluto" \
FINALNSSDIR="/etc/ipsec.d" \
include $(TOPDIR)/rules.mk
PKG_NAME:=lighttpd
-PKG_VERSION:=1.4.55
-PKG_RELEASE:=4
+PKG_VERSION:=1.4.58
+PKG_RELEASE:=1
+# release candidate ~rcX testing; remove for release
+#PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-1.4.58
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://download.lighttpd.net/lighttpd/releases-1.4.x
-PKG_HASH:=6a0b50e9c9d5cc3d9e48592315c25a2d645858f863e1ccd120507a30ce21e927
+PKG_HASH:=267feffda13a190ebdce7b15172d8be16da98008457f30fddecd72832d126d0e
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
PKG_LICENSE:=BSD-3-Clause
REBUILD_MODULES=authn_gssapi authn_ldap authn_mysql cml magnet mysql_vhost trigger_b4_dl webdav
include $(INCLUDE_DIR)/package.mk
-# iconv is required for lighttpd's mysql plugin
-include $(INCLUDE_DIR)/nls.mk
include ../../devel/meson/meson.mk
define Package/lighttpd/Default
define Package/lighttpd
$(call Package/lighttpd/Default)
MENU:=1
- DEPENDS:=+LIGHTTPD_SSL:libopenssl +libpcre +libpthread +LIGHTTPD_LOGROTATE:logrotate
+ DEPENDS:=+libnettle +libpcre +libpthread +LIGHTTPD_LOGROTATE:logrotate
TITLE:=A flexible and lightweight web server
endef
default y
help
Implements SSL support in lighttpd (using libopenssl). This
- option is required if you enable the SSL engine in your
- lighttpd confguration file.
+ option is enabled by default for backwards compatibility.
+ Select one TLS module below if you enable the SSL engine in
+ your lighttpd configuration file.
+ (mod_gnutls, mod_mbedtls, mod_nss, mod_openssl, mod_wolfssl)
+
+config LIGHTTPD_SSL_DEPENDS
+ bool
+ depends on LIGHTTPD_SSL
+ default PACKAGE_lighttpd-mod-mbedtls || PACKAGE_lighttpd-mod-wolfssl || PACKAGE_lighttpd-mod-gnutls || PACKAGE_lighttpd-mod-nss
+
+config LIGHTTPD_SSL_SELECT
+ tristate
+ depends on LIGHTTPD_SSL
+ default m if !LIGHTTPD_SSL_DEPENDS
+ select PACKAGE_lighttpd-mod-openssl
config LIGHTTPD_LOGROTATE
bool "Logrotate support"
endef
MESON_ARGS += \
+ -Dwith_brotli=false \
-Dwith_bzip=false \
- -Dwith_dbi=$(if $(CONFIG_PACKAGE_lighttpd-mod-vhostdb_dbi),true,false) \
+ -Dwith_dbi=$(if $(CONFIG_PACKAGE_lighttpd-mod-authn_dbi)$(CONFIG_PACKAGE_lighttpd-mod-vhostdb_dbi),true,false) \
-Dwith_fam=false \
-Dwith_gdbm=$(if $(CONFIG_PACKAGE_lighttpd-mod-trigger_b4_dl),true,false) \
- -Dwith_geoip=$(if $(CONFIG_PACKAGE_lighttpd-mod-geoip),true,false) \
+ -Dwith_geoip=false \
+ -Dwith_gnutls=$(if $(CONFIG_PACKAGE_lighttpd-mod-gnutls),true,false) \
-Dwith_krb5=$(if $(CONFIG_PACKAGE_lighttpd-mod-authn_gssapi),true,false) \
-Dwith_ldap=$(if $(CONFIG_PACKAGE_lighttpd-mod-authn_ldap)$(CONFIG_PACKAGE_lighttpd-mod-vhostdb_ldap),true,false) \
-Dwith_libev=false \
-Dwith_libunwind=false \
-Dwith_lua=$(if $(CONFIG_PACKAGE_lighttpd-mod-cml)$(CONFIG_PACKAGE_lighttpd-mod-magnet),true,false) \
-Dwith_maxminddb=$(if $(CONFIG_PACKAGE_lighttpd-mod-maxminddb),true,false) \
+ -Dwith_mbedtls=$(if $(CONFIG_PACKAGE_lighttpd-mod-mbedtls),true,false) \
-Dwith_memcached=false \
-Dwith_mysql=$(if $(CONFIG_PACKAGE_lighttpd-mod-authn_mysql)$(CONFIG_PACKAGE_lighttpd-mod-mysql_vhost)$(CONFIG_PACKAGE_lighttpd-mod-vhostdb_mysql),true,false) \
- -Dwith_openssl=$(if $(CONFIG_LIGHTTPD_SSL),true,false) \
+ -Dwith_nettle=true \
+ -Dwith_nss=$(if $(CONFIG_PACKAGE_lighttpd-mod-nss),true,false) \
+ -Dwith_openssl=$(if $(CONFIG_PACKAGE_lighttpd-mod-openssl),true,false) \
-Dwith_pam=$(if $(CONFIG_PACKAGE_lighttpd-mod-authn_pam),true,false) \
-Dwith_pcre=true \
-Dwith_pgsql=$(if $(CONFIG_PACKAGE_lighttpd-mod-vhostdb_pgsql),true,false) \
-Dwith_sasl=$(if $(CONFIG_PACKAGE_lighttpd-mod-authn_sasl),true,false) \
-Dwith_webdav_locks=$(if $(CONFIG_PACKAGE_lighttpd-mod-webdav),true,false) \
-Dwith_webdav_props=$(if $(CONFIG_PACKAGE_lighttpd-mod-webdav),true,false) \
- -Dwith_wolfssl=false \
+ -Dwith_wolfssl=$(if $(CONFIG_PACKAGE_lighttpd-mod-wolfssl),true,false) \
-Dwith_xattr=false \
- -Dwith_zlib=$(if $(CONFIG_PACKAGE_lighttpd-mod-compress)$(CONFIG_PACKAGE_lighttpd-mod-deflate),true,false)
+ -Dwith_zlib=$(if $(CONFIG_PACKAGE_lighttpd-mod-deflate),true,false)
BASE_MODULES:=dirlisting indexfile staticfile
-ifneq ($(strip $(CONFIG_LIGHTTPD_SSL)),)
- BASE_MODULES+= openssl
-endif
-
define Package/lighttpd/conffiles
/etc/lighttpd/lighttpd.conf
endef
$(eval $(call BuildPlugin,redirect,URL redirection,+PACKAGE_lighttpd-mod-redirect:libpcre,10))
# Next, permit authentication.
-$(eval $(call BuildPlugin,auth,Authentication,+PACKAGE_lighttpd-mod-auth:lighttpd-mod-authn_file,20))
-$(eval $(call BuildPlugin,authn_file,File-based authentication,,20))
+$(eval $(call BuildPlugin,auth,Authentication,+PACKAGE_lighttpd-mod-auth:libnettle,20))
+$(eval $(call BuildPlugin,authn_dbi,DBI-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_dbi:libnettle +PACKAGE_lighttpd-mod-authn_dbi:libdbi,20))
+$(eval $(call BuildPlugin,authn_file,File-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_file:libnettle,20))
$(eval $(call BuildPlugin,authn_gssapi,Kerberos-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_gssapi:krb5-libs,20))
$(eval $(call BuildPlugin,authn_ldap,LDAP-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_ldap:libopenldap,20))
-$(eval $(call BuildPlugin,authn_mysql,Mysql-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_mysql:libmysqlclient,20))
+$(eval $(call BuildPlugin,authn_mysql,Mysql-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_mysql:libnettle +PACKAGE_lighttpd-mod-authn_mysql:libmariadb,20))
$(eval $(call BuildPlugin,authn_pam,PAM-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_pam:libpam,20))
$(eval $(call BuildPlugin,authn_sasl,SASL-based authentication,lighttpd-mod-auth +PACKAGE_lighttpd-mod-authn_sasl:libsasl2,20))
$(eval $(call BuildPlugin,accesslog,Access logging,,30))
$(eval $(call BuildPlugin,alias,Directory alias,,30))
$(eval $(call BuildPlugin,cgi,CGI,,30))
-#$(eval $(call BuildPlugin,cml,Cache Meta Language,+PACKAGE_lighttpd-mod-cml:liblua +PACKAGE_lighttpd-mod-cml:libmemcached,30))
-$(eval $(call BuildPlugin,cml,Cache Meta Language,+PACKAGE_lighttpd-mod-cml:liblua,30))
-$(eval $(call BuildPlugin,compress,Compress output,+PACKAGE_lighttpd-mod-compress:zlib,30))
+$(eval $(call BuildPlugin,cml,Cache Meta Language,+PACKAGE_lighttpd-mod-cml:liblua +PACKAGE_lighttpd-mod-cml:libnettle,30))
$(eval $(call BuildPlugin,deflate,Compress dynamic output,+PACKAGE_lighttpd-mod-deflate:zlib,30))
$(eval $(call BuildPlugin,evasive,Evasive,,30))
$(eval $(call BuildPlugin,evhost,Enhanced Virtual-Hosting,,30))
$(eval $(call BuildPlugin,extforward,Extract client,,30))
$(eval $(call BuildPlugin,fastcgi,FastCGI,,30))
$(eval $(call BuildPlugin,flv_streaming,FLV streaming,,30))
-#$(eval $(call BuildPlugin,geoip,Geolocation,+PACKAGE_lighttpd-mod-geoip:libgeoip,30)) #libgeoip is not in OpenWrt
+$(eval $(call BuildPlugin,gnutls,TLS using gnutls,@LIGHTTPD_SSL +PACKAGE_lighttpd-mod-gnutls:libgnutls,30))
$(eval $(call BuildPlugin,magnet,Magnet,+PACKAGE_lighttpd-mod-magnet:liblua,30))
$(eval $(call BuildPlugin,maxminddb,MaxMind DB,+PACKAGE_lighttpd-mod-maxminddb:libmaxminddb,30))
-$(eval $(call BuildPlugin,mysql_vhost,Mysql virtual hosting,+PACKAGE_lighttpd-mod-mysql_vhost:libmysqlclient,30))
+$(eval $(call BuildPlugin,mbedtls,TLS using mbedtls,@LIGHTTPD_SSL +PACKAGE_lighttpd-mod-mbedtls:libmbedtls,30))
+$(eval $(call BuildPlugin,nss,TLS using nss,@LIGHTTPD_SSL +PACKAGE_lighttpd-mod-nss:libnss,30))
+$(eval $(call BuildPlugin,openssl,TLS using openssl,@LIGHTTPD_SSL +PACKAGE_lighttpd-mod-openssl:libopenssl,30))
$(eval $(call BuildPlugin,proxy,Proxy,,30))
$(eval $(call BuildPlugin,rewrite,URL rewriting,+PACKAGE_lighttpd-mod-rewrite:libpcre,30))
$(eval $(call BuildPlugin,rrdtool,RRDtool,,30))
$(eval $(call BuildPlugin,scgi,SCGI,,30))
-$(eval $(call BuildPlugin,secdownload,Secure and fast download,,30))
+$(eval $(call BuildPlugin,secdownload,Secure and fast download,+PACKAGE_lighttpd-mod-secdownload:libnettle,30))
$(eval $(call BuildPlugin,setenv,Environment variable setting,,30))
$(eval $(call BuildPlugin,simple_vhost,Simple virtual hosting,,30))
$(eval $(call BuildPlugin,sockproxy,sockproxy,,30))
$(eval $(call BuildPlugin,ssi,SSI,+PACKAGE_lighttpd-mod-ssi:libpcre,30))
$(eval $(call BuildPlugin,staticfile,staticfile,,30))
$(eval $(call BuildPlugin,status,Server status display,,30))
-#$(eval $(call BuildPlugin,trigger_b4_dl,Trigger before download,+PACKAGE_lighttpd-mod-trigger_b4_dl:libpcre +PACKAGE_lighttpd-mod-trigger_b4_dl:libgdbm +PACKAGE_lighttpd-mod-trigger_b4_dl:libmemcached,30))
$(eval $(call BuildPlugin,trigger_b4_dl,Trigger before download,+PACKAGE_lighttpd-mod-trigger_b4_dl:libpcre +PACKAGE_lighttpd-mod-trigger_b4_dl:libgdbm,30))
$(eval $(call BuildPlugin,uploadprogress,Upload Progress,,30))
$(eval $(call BuildPlugin,userdir,User directory,,30))
-$(eval $(call BuildPlugin,usertrack,User tracking,,30))
-$(eval $(call BuildPlugin,vhostdb_dbi,Virtual Host Database (DBI),+PACKAGE_lighttpd-mod-vhostdb_dbi:libdbi,30))
-$(eval $(call BuildPlugin,vhostdb_ldap,Virtual Host Database (LDAP),+PACKAGE_lighttpd-mod-vhostdb_ldap:libopenldap,30))
-$(eval $(call BuildPlugin,vhostdb_mysql,Virtual Host Database (MariaDB),+PACKAGE_lighttpd-mod-vhostdb_mysql:libmysqlclient,30))
-$(eval $(call BuildPlugin,vhostdb_pgsql,Virtual Host Database (PostgreSQL),+PACKAGE_lighttpd-mod-vhostdb_pgsql:libpq,30))
+$(eval $(call BuildPlugin,usertrack,User tracking,+PACKAGE_lighttpd-mod-usertrack:libnettle,30))
$(eval $(call BuildPlugin,vhostdb,Virtual Host Database,,30))
+$(eval $(call BuildPlugin,vhostdb_dbi,Virtual Host Database (DBI),lighttpd-mod-vhostdb +PACKAGE_lighttpd-mod-vhostdb_dbi:libdbi,30))
+$(eval $(call BuildPlugin,vhostdb_ldap,Virtual Host Database (LDAP),lighttpd-mod-vhostdb +PACKAGE_lighttpd-mod-vhostdb_ldap:libopenldap,30))
+$(eval $(call BuildPlugin,vhostdb_mysql,Virtual Host Database (MariaDB),lighttpd-mod-vhostdb +PACKAGE_lighttpd-mod-vhostdb_mysql:libmariadb,30))
+$(eval $(call BuildPlugin,vhostdb_pgsql,Virtual Host Database (PostgreSQL),lighttpd-mod-vhostdb +PACKAGE_lighttpd-mod-vhostdb_pgsql:libpq,30))
+$(eval $(call BuildPlugin,mysql_vhost,Mysql virtual hosting,lighttpd-mod-vhostdb +PACKAGE_lighttpd-mod-mysql_vhost:libmariadb,30))
$(eval $(call BuildPlugin,webdav,WebDAV,+PACKAGE_lighttpd-mod-webdav:libsqlite3 +PACKAGE_lighttpd-mod-webdav:libuuid +PACKAGE_lighttpd-mod-webdav:libxml2,30))
-$(eval $(call BuildPlugin,wstunnel,Websocket tunneling,,30))
+$(eval $(call BuildPlugin,wolfssl,TLS using wolfssl,@LIGHTTPD_SSL +PACKAGE_lighttpd-mod-wolfssl:libwolfssl,30))
+$(eval $(call BuildPlugin,wstunnel,Websocket tunneling,+PACKAGE_lighttpd-mod-wstunnel:libnettle,30))
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
+### Features
+#https://redmine.lighttpd.net/projects/lighttpd/wiki/Server_feature-flagsDetails
+server.feature-flags += ("server.h2proto" => "enable")
+server.feature-flags += ("server.h2c" => "enable")
+server.feature-flags += ("server.graceful-shutdown-timeout" => 5)
+#server.feature-flags += ("server.graceful-restart-bg" => "enable")
+
### Options that are useful but not always necessary:
#server.chroot = "/"
#server.port = 81
procd_close_instance
}
+service_triggers() {
+ procd_add_reload_interface_trigger loopback
+ procd_add_reload_interface_trigger lan
+}
+
reload_service() {
- procd_send_signal lighttpd
+ # lighttpd graceful restart (SIGUSR1)
+ procd_send_signal lighttpd '*' USR1
}
+
+relog() {
+ # lighttpd reopen log files (SIGHUP)
+ procd_send_signal lighttpd '*' HUP
+}
+
+EXTRA_COMMANDS="relog"
+EXTRA_HELP=" relog Reopen log files (without reloading)"
+++ /dev/null
-From 04a7d98cb91139d79dd14cbdb0522d3d5898dd12 Mon Sep 17 00:00:00 2001
-From: Rosen Penev <rosenp@gmail.com>
-Date: Fri, 10 Jul 2020 20:40:07 -0700
-Subject: [PATCH] [meson] fix libmariadb dependency
-
-libmariadb is what should be used as only the library portion is used.
-
-Fixes compilation under OpenWrt.
-
-Note that mariadb.pc is a superset that links to libmariadb.
-
-Signed-off-by: Rosen Penev <rosenp@gmail.com>
----
- src/meson.build | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/meson.build b/src/meson.build
-index 43ef9540..d39cf1c0 100644
---- a/src/meson.build
-+++ b/src/meson.build
-@@ -387,7 +387,7 @@ if get_option('with_mysql')
- # manual search: extend include path with 'mysql/'
- # header: mysql.h
- # function: mysql_real_connect (-lmariadb)
-- libmysqlclient = [ dependency('mariadb') ]
-+ libmysqlclient = [ dependency('libmariadb') ]
- #-# function: mysql_real_connect (-lmysqlclient)
- #-libmysqlclient = [ dependency('mysqlclient') ]
- conf_data.set('HAVE_MYSQL', true)
--- /dev/null
+From f47d569311d51ec9ab5dad7452b43c1b5a8290b6 Mon Sep 17 00:00:00 2001
+From: Glenn Strauss <gstrauss@gluelogic.com>
+Date: Tue, 1 Dec 2020 16:41:58 -0500
+Subject: [PATCH] [PATCH] [meson] do not search for lua versions
+
+openwrt net/lighttpd/Makefile declares dependency on liblua, and not on
+specific lua versions, so have meson.build look for 'lua' and not for
+specific lua versions.
+
+Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
+---
+ src/meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/meson.build b/src/meson.build
+index 71e4ec90..14ed9cec 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -381,7 +381,7 @@ endif
+ liblua = []
+ if get_option('with_lua')
+ found_lua = false
+- foreach l: ['lua5.4', 'lua-5.4', 'lua5.3', 'lua-5.3', 'lua5.2', 'lua-5.2', 'lua5.1', 'lua-5.1', 'lua']
++ foreach l: ['lua']
+ if not(found_lua)
+ liblua = dependency(l, required: false)
+ if (liblua.found())
+--
+2.28.0
+
+++ /dev/null
-From fd2a12d6362aad2013ba558537647e46419d7595 Mon Sep 17 00:00:00 2001
-From: Rosen Penev <rosenp@gmail.com>
-Date: Fri, 10 Jul 2020 21:20:52 -0700
-Subject: [PATCH] [meson] add missing libmaxminddb section
-
-Fixes the following error when building with -Dwith_maxminddb=true:
-
-meson.build:916:1: ERROR: Unknown variable "libmaxminddb".
-
-A full log can be found at meson-logs/meson-log.txt
-
-Signed-off-by: Rosen Penev <rosenp@gmail.com>
----
- src/meson.build | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/src/meson.build b/src/meson.build
-index d39cf1c0..2191c9bc 100644
---- a/src/meson.build
-+++ b/src/meson.build
-@@ -255,6 +255,14 @@ if get_option('with_fam')
- conf_data.set('HAVE_FAM_H', true)
- endif
-
-+libmaxminddb = []
-+if get_option('with_maxminddb')
-+ libmaxminddb = [ compiler.find_library('maxminddb') ]
-+ if not(compiler.has_function('MMDB_open', args: defs, dependencies: libmaxminddb, prefix: '#include <maxminddb.h>'))
-+ error('Couldn\'t find maxminddb.h or MMDB_open in lib maxminddb')
-+ endif
-+endif
-+
- libgeoip = []
- if get_option('with_geoip')
- libgeoip = dependency('geoip', required: false)
PKG_NAME:=mDNSResponder
PKG_VERSION:=IETF104
-PKG_RELEASE:=2
+PKG_RELEASE:=4
PKG_SOURCE:=mDNSResponder-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://opensource.apple.com/tarballs/mDNSResponder/IETF/
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
- $(CP) $(PKG_BUILD_DIR)/mDNSShared/dns_sd.h $(1)/usr/include/
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/dns_sd.h $(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_BUILD_DIR)/mDNSPosix/build/prod/*.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libdns_sd.so.1 $(1)/usr/lib/
+ $(LN) -s libdns_sd.so.1 $(1)/usr/lib/libdns_sd.so
endef
define Package/mdns-utils/install
include $(TOPDIR)/rules.mk
PKG_NAME:=miniupnpc
-PKG_VERSION:=2.2.0
+PKG_VERSION:=2.2.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://miniupnp.tuxfamily.org/files
-PKG_HASH:=ff56bec3e5a3aec41f4decb43cb0b925231d6ab4cdfd7a74caa5c7c1043c4ef0
+PKG_HASH:=3a3167e57727bf1d2a7b4861f7c7b57a663f58b9cf68227762ed2fc64e8ea11f
PKG_MAINTAINER:=
PKG_LICENSE:=BSD-3-Clause
TARGET_CFLAGS += $(FPIC)
TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/miniupnpc/ $(1)/usr/include/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*.{a,so*} $(1)/usr/lib/
+endef
+
define Package/miniupnpc/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/upnpc-shared $(1)/usr/bin/upnpc
include $(TOPDIR)/rules.mk
PKG_NAME:=miniupnpd
-PKG_VERSION:=2.2.0
-PKG_RELEASE:=2
+PKG_VERSION:=2.2.1
+PKG_RELEASE:=1
PKG_SOURCE_URL:=https://miniupnp.tuxfamily.org/files
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=f105210a13ed0ebfc649f661ecc59e0a072cc547b04977851f22b5521b4cadff
+PKG_HASH:=f158dc73b718ca72da69e25ef23c57c3a10a0d7e7d1b4b9b57d5690823040ec2
PKG_MAINTAINER:=
PKG_LICENSE:=BSD-3-Clause
for iface in ${internal_iface:-lan}; do
local device
network_get_device device "$iface" && echo "listening_ip=$device"
- network_get_device device "$iface" && echo "ipv6_listening_ip=$device"
done
config_load "upnpd"
default y
help
Compile ModemManager with QMI support
+
+ config MODEMMANAGER_WITH_AT_COMMAND_VIA_DBUS
+ bool "Allow AT commands via DBus"
+ default n
+ help
+ Compile ModemManager allowing AT commands without debug flag
endmenu
include $(TOPDIR)/rules.mk
PKG_NAME:=modemmanager
-PKG_VERSION:=1.14.6
-PKG_RELEASE:=3
+PKG_VERSION:=1.14.8
+PKG_RELEASE:=2
PKG_SOURCE:=ModemManager-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://www.freedesktop.org/software/ModemManager
-PKG_HASH:=783d5da925b2ca69f6233fcead691dd0f5cba06aa479d71495efdc07053fc0fd
+PKG_HASH:=fe1a26ba51b4bda7abd09ad4dadedd87d8b8154809fc9d88e94f75fdfff19295
PKG_BUILD_DIR:=$(BUILD_DIR)/ModemManager-$(PKG_VERSION)
PKG_MAINTAINER:=Nicholas Smith <nicholas.smith@telcoantennas.com.au>
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
-PKG_BUILD_DEPENDS:=libxslt/host
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
--disable-rpath \
--disable-gtk-doc
+ifeq ($(CONFIG_MODEMMANAGER_WITH_AT_COMMAND_VIA_DBUS),y)
+ CONFIGURE_ARGS += --with-at-command-via-dbus
+endif
+
ifdef CONFIG_MODEMMANAGER_WITH_MBIM
CONFIGURE_ARGS += --with-mbim
else
option pincode '7423'
option iptype 'ipv4'
option lowpower '1'
+ option signalrate '30'
Only 'device' and 'proto' are mandatory options, the remaining ones are all
optional.
The 'iptype' option supports any of these values: 'ipv4', 'ipv6' or 'ipv4v6'.
It will default to 'ipv4' if not given.
+
+The 'signalrate' option set's the signal refresh rate (in seconds) for the device.
+You can call signal info with command: mmcli -m 0 --signal-get
proto_config_add_string password
proto_config_add_string pincode
proto_config_add_string iptype
+ proto_config_add_int signalrate
proto_config_add_boolean lowpower
proto_config_add_defaults
}
local bearermethod_ipv4 bearermethod_ipv6 auth cliauth
local operatorname operatorid registration accesstech signalquality
- local device apn allowedauth username password pincode iptype metric
+ local device apn allowedauth username password pincode iptype metric signalrate
local address prefix gateway mtu dns1 dns2
- json_get_vars device apn allowedauth username password pincode iptype metric
+ json_get_vars device apn allowedauth username password pincode iptype metric signalrate
# validate sysfs path given in config
[ -n "${device}" ] || {
return 1
}
+ # check if Signal refresh rate is set
+ if [ -n "${signalrate}" ] && [ "${signalrate}" -eq "${signalrate}" ] 2>/dev/null; then
+ echo "setting signal refresh rate to ${signalrate} seconds"
+ mmcli --modem="${device}" --signal-setup="${signalrate}"
+ else
+ echo "signal refresh rate is not set"
+ fi
+
# log additional useful information
modemstatus=$(mmcli --modem="${device}" --output-keyvalue)
operatorname=$(modemmanager_get_field "${modemstatus}" "modem.3gpp.operator-name")
help
Includes websockets support in the broker, via libwebsockets
+config MOSQUITTO_CTRL
+ bool "Include mosquitto_ctrl utility"
+ depends on PACKAGE_mosquitto-ssl
+ default y
+ help
+ mosquitto_ctrl is a tool for managing the broker at run time.
+
+config MOSQUITTO_DYNAMIC_SECURITY
+ bool "Install mosquitto_dynamic_security.so"
+ depends on PACKAGE_mosquitto-ssl
+ default y
+ help
+ This enables the dynamic security modes documented at
+ https://mosquitto.org/documentation/dynamic-security/
+ but does add ~88kB. If you're not using it, you can disable it
+
config MOSQUITTO_PASSWD
bool "Include mosquitto_passwd utility"
depends on PACKAGE_mosquitto-ssl
include $(TOPDIR)/rules.mk
PKG_NAME:=mosquitto
-PKG_VERSION:=1.6.12
+PKG_VERSION:=2.0.2
PKG_RELEASE:=1
-PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE:=EPL-2.0
PKG_LICENSE_FILES:=LICENSE.txt
PKG_CPE_ID:=cpe:/a:eclipse:mosquitto
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://mosquitto.org/files/source/
-PKG_HASH:=548d73d19fb787dd0530334e398fd256ef3a581181678488a741a995c4f007fb
+PKG_HASH:=5ea9ebf0a5ed3e95cecd75f30ebcf84f054584eff5617ac0f2e60428d3ad9707
include $(INCLUDE_DIR)/package.mk
define Package/mosquitto-ssl
$(call Package/mosquitto/default)
TITLE+= (with SSL support)
- DEPENDS+= +libopenssl +MOSQUITTO_LWS:libwebsockets-openssl
+ DEPENDS+= +libopenssl +MOSQUITTO_LWS:libwebsockets-openssl +MOSQUITTO_DYNAMIC_SECURITY:cJSON
VARIANT:=ssl
PROVIDES:=mosquitto
endef
define Package/mosquitto/default/description
Mosquitto is an open source (BSD licensed) message broker that implements
-the MQTT protocol version 3.1 and 3.1.1. MQTT provides a lightweight
+the MQTT protocol version 3.1, 3.1.1 and 5. MQTT provides a lightweight
method of carrying out messaging using a publish/subscribe model.
This package also includes some basic support for configuring via UCI
define Package/mosquitto-client/default
$(Package/mosquitto/default)
TITLE:= mosquitto - client tools
- DEPENDS+=+libcares
+ DEPENDS+=+libcares +cJSON
PROVIDES:=mosquitto-client
endef
define Package/mosquitto-client-ssl
endef
define Package/mosquitto-client/default/description
- Command line client tools for publishing messages to MQTT servers
-and subscribing to topics.
+ Command line client tools for working with mosquitto.
+This includes mosquitto_sub, mosquitto_pub, mosquitto_rr
+and the mosquitto_ctrl tool.
endef
define Package/mosquitto-client-ssl/description
define Package/libmosquitto/default/description
Library required for mosquitto's command line client tools, also for
-use by any third party software that wants to communicate with a
-mosquitto server.
+use by any third party software that wants to communicate with _any_
+MQTT server.
-Should be useable for communicating with any MQTT v3.1/3.1.1 compatible
-server, such as IBM's RSMB, in addition to Mosquitto
+Should be useable for communicating with any MQTT v3.1/3.1.1/5 compatible
+server, in addition to Mosquitto.
endef
define Package/libmosquitto-ssl/description
$(call Package/mosquitto/install/default,$(1))
ifeq ($(CONFIG_MOSQUITTO_PASSWD),y)
$(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/mosquitto_passwd $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/apps/mosquitto_passwd/mosquitto_passwd $(1)/usr/bin
+endif
+ifeq ($(CONFIG_MOSQUITTO_DYNAMIC_SECURITY),y)
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/plugins/dynamic-security/mosquitto_dynamic_security.so $(1)/usr/lib
endif
endef
-define Package/mosquitto-client-ssl/install
+define Package/mosquitto-client-nossl/install
$(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/client/mosquitto_pub $(1)/usr/bin/mosquitto_pub
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/client/mosquitto_sub $(1)/usr/bin/mosquitto_sub
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/client/mosquitto_pub $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/client/mosquitto_sub $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/client/mosquitto_rr $(1)/usr/bin
+endef
+define Package/mosquitto-client-ssl/install
+ $(call Package/mosquitto-client-nossl/install,$(1))
+ifeq ($(CONFIG_MOSQUITTO_CTRL),y)
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/apps/mosquitto_ctrl/mosquitto_ctrl $(1)/usr/bin
+endif
endef
-Package/mosquitto-client-nossl/install = $(Package/mosquitto-client-ssl/install)
# This installs files into ./staging_dir/. so that you can cross compile from the host
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
- $(CP) $(PKG_BUILD_DIR)/lib/mosquitto.h $(1)/usr/include
+ $(CP) $(PKG_BUILD_DIR)/include/*.h $(1)/usr/include
$(CP) $(PKG_BUILD_DIR)/lib/cpp/mosquittopp.h $(1)/usr/include
- $(CP) $(PKG_BUILD_DIR)/src/mosquitto_plugin.h $(1)/usr/include
- $(CP) $(PKG_BUILD_DIR)/src/mosquitto_broker.h $(1)/usr/include
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/lib/libmosquitto.so.1 $(1)/usr/lib/
$(CP) $(PKG_BUILD_DIR)/lib/cpp/libmosquittopp.so.1 $(1)/usr/lib/
include $(TOPDIR)/rules.mk
PKG_NAME:=mwan3
-PKG_VERSION:=2.10.3
-PKG_RELEASE:=3
+PKG_VERSION:=2.10.6
+PKG_RELEASE:=1
PKG_MAINTAINER:=Florian Eckert <fe@dev.tdt.de>, \
Aaron Goodman <aaronjg@alumni.stanford.edu>
PKG_LICENSE:=GPL-2.0
$(INSTALL_BIN) ./files/usr/sbin/mwan3track \
$(1)/usr/sbin/
+ $(INSTALL_DIR) $(1)/etc
+ $(INSTALL_BIN) ./files/etc/mwan3.user \
+ $(1)/etc/
+
$(CP) $(PKG_BUILD_DIR)/libwrap_mwan3_sockopt.so.1.0 $(1)/lib/mwan3/
$(INSTALL_DIR) $(1)/etc/uci-defaults
exit 3
fi
-[ "$MWAN3_STARTUP" = 1 ] || procd_lock
+[ "$MWAN3_STARTUP" = "init" ] || procd_lock
+
+mwan3_init
-config_load mwan3
/etc/init.d/mwan3 running || {
[ "$MWAN3_STARTUP" = "init" ] || procd_lock
LOG notice "mwan3 hotplug $ACTION on $INTERFACE not called because globally disabled"
exit 0
}
-mwan3_init
-
if [ "$MWAN3_STARTUP" != "init" ] && [ "$ACTION" = "ifup" ]; then
mwan3_set_user_iface_rules $INTERFACE $DEVICE
fi
[ -f "/etc/mwan3.user" ] && {
. /lib/functions.sh
. /lib/mwan3/mwan3.sh
- initscript=/etc/init.d/mwan3
+ initscript=/etc/init.d/mwan3
. /lib/functions/procd.sh
[ "$MWAN3_SHUTDOWN" != 1 ] && procd_lock
config_get_bool enabled "$INTERFACE" enabled 0
[ "${enabled}" -eq 1 ] || {
- [ "$MWAN3_SHUTDOWN" != 1 ] && mwan3_unlock "$ACTION" "$DEVICE-user"
exit 0
}
START=19
USE_PROCD=1
+SCRIPTNAME="mwan3-init"
service_running() {
[ -d "$MWAN3_STATUS_DIR" ]
start_service() {
local enabled hotplug_pids
- config_load mwan3
mwan3_init
config_foreach start_tracker interface
stop_service() {
local ipset rule IP IPTR IPT family table tid
- config_load mwan3
mwan3_init
config_foreach mwan3_interface_shutdown interface
IP="$IP6"
fi
- for tid in $(ip route list table all | sed -ne 's/.*table \([0-9]\+\).*/\1/p' | sort -u); do
+ for tid in $($IP route list table all | sed -ne 's/.*table \([0-9]\+\).*/\1/p' | sort -u); do
[ $tid -gt $MWAN3_INTERFACE_MAX ] && continue
$IP route flush table $tid &> /dev/null
done
mwan3_init()
{
- local bitcnt
- local mmdefault
+ local bitcnt mmdefault source_routing
+
+ config_load mwan3
[ -d $MWAN3_STATUS_DIR ] || mkdir -p $MWAN3_STATUS_DIR/iface_state
MMX_MASK=$(cat "${MWAN3_STATUS_DIR}/mmx_mask")
MWAN3_INTERFACE_MAX=$(uci_get_state mwan3 globals iface_max)
else
- config_load mwan3
config_get MMX_MASK globals mmx_mask '0x3F00'
echo "$MMX_MASK"| tr 'A-F' 'a-f' > "${MWAN3_STATUS_DIR}/mmx_mask"
LOG debug "Using firewall mask ${MMX_MASK}"
LOG debug "Max interface count is ${MWAN3_INTERFACE_MAX}"
fi
+ # remove "linkdown", expiry and source based routing modifiers from route lines
+ config_get_bool source_routing globals source_routing 0
+ [ $source_routing -eq 1 ] && unset source_routing
+ MWAN3_ROUTE_LINE_EXP="s/linkdown //; s/expires [0-9]\+sec//; s/error [0-9]\+//; ${source_routing:+s/default\(.*\) from [^ ]*/default\1/;} p"
+
# mark mask constants
bitcnt=$(mwan3_count_one_bits MMX_MASK)
mmdefault=$(((1<<bitcnt)-1))
unset "$1"
[ -z "$route_device" ] && return
- curr_table=$(eval "echo \"\$mwan3_dev_tbl_${route_family}\"")
+ curr_table=$(eval "echo \"\$mwan3_dev_tbl_${route_family}\"")
for entry in $curr_table; do
if [ "${entry%%=*}" = "$route_device" ]; then
_tid=${entry##*=}
mwan3_get_routes()
{
- local source_routing
- config_get_bool source_routing globals source_routing 0
- [ $source_routing -eq 0 ] && unset source_routing
- $IP route list table main | sed -ne "/^linkdown/T; s/expires \([0-9]\+\)sec//;s/error [0-9]\+//; ${source_routing:+s/default\(.*\) from [^ ]*/default\1/;} p" | uniq
+ $IP route list table main | sed -ne "$MWAN3_ROUTE_LINE_EXP" | uniq
}
mwan3_create_iface_route()
local interface device src_ip family
mwan3_init
- config_load mwan3
interface=$1 ; shift
[ -z "$*" ] && echo "no command specified for mwan3 use" && return
mwan3_add_all_routes()
{
- local tid IP IPT route_line family active_tbls tid initial_state
+ local tid IP IPT route_line family active_tbls tid initial_state error
local ipv=$1
add_active_tbls()
{
let tid++
[ -n "${active_tbls##* $tid *}" ] && return
- $IP route add table $tid $route_line ||
- LOG warn "failed to add $route_line to table $tid"
+ error=$($IP route add table $tid $route_line 2>&1) ||
+ LOG warn "failed to add $route_line to table $tid - error: $error"
}
mwan3_update_dev_to_table
tid=0
active_tbls=" "
config_foreach add_active_tbls interface
- [ $active_tbls = " " ] && return
+ [ "$active_tbls" = " " ] && return
mwan3_get_routes | while read -r route_line; do
mwan3_route_line_dev "tid" "$route_line" "$ipv"
if [ -n "$tid" ] && [ -z "${active_tbls##* $tid *}" ]; then
mwan3_rtmon_route_handle()
{
- local action route_line family tbl device line route_line_exp tid source_routing
+ local action route_line family tbl device line tid
route_line=${1##"Deleted "}
route_family=$2
- config_get_bool source_routing globals source_routing 0
- [ $source_routing -eq 0 ] && unset source_routing
-
if [ "$route_line" = "$1" ]; then
action="replace"
- route_line_exp="s/expires \([0-9]\+\)sec//;s/error [0-9]\+//; ${source_routing:+s/default\(.*\) from [^ ]*/default\1/}"
$IPS -! add mwan3_connected_${route_family##ip} ${route_line%% *}
else
action="del"
- route_line_exp="s/expires [0-9]\+sec//;s/error [0-9]\+//; ${source_routing:+s/default\(.*\) from [^ ]*/default\1/}"
mwan3_set_connected_${route_family}
fi
+ if [ -z "${route_line##*linkdown*}" ]; then
+ LOG debug "attempting to add link on down interface - $route_line"
+ fi
+
if [ "$route_family" = "ipv4" ]; then
IP="$IP4"
elif [ "$route_family" = "ipv6" ] && [ $NO_IPV6 -eq 0 ]; then
IP="$IP6"
- route_line=$(echo "$route_line" | sed "$route_line_exp")
else
LOG warn "route update called with invalid family - $route_family"
return
fi
-
- # don't try to add routes when link has gone down
- if [ -z "${route_line##linkdown*}" ]; then
- LOG debug "not adding route due to linkdown - skipping $route_line"
- return
- fi
+ route_line=$(echo "$route_line" | sed -ne "$MWAN3_ROUTE_LINE_EXP")
handle_route() {
+ local error
local iface=$1
tbl=$($IP route list table $tid 2>/dev/null)$'\n'
network_get_device device "$iface"
LOG debug "adjusting route $device: '$IP route $action table $tid $route_line'"
- $IP route "$action" table $tid $route_line ||
- LOG warn "failed: '$IP route $action table $tid $route_line'"
+ error=$($IP route "$action" table $tid $route_line 2>&1)||
+ LOG warn "failed: '$IP route $action table $tid $route_line' - error: $error"
}
handle_route_cb(){
local iface=$1
{
local IP family
- config_load mwan3
+ mwan3_init
+
family=$1
[ -z $family ] && family=ipv4
if [ "$family" = "ipv6" ]; then
else
IP="$IP4"
fi
- mwan3_init
sh -c "echo \$\$; exec $IP monitor route" | {
read -r monitor_pid
trap_with_arg func_trap "$monitor_pid" SIGINT SIGTERM SIGKILL
+ KILL -SIGSTOP $$
while IFS='' read -r line; do
[ -z "${line##*table*}" ] && continue
LOG debug "handling route update $family '$line'"
done
} &
child=$!
- kill -SIGSTOP $child
trap_with_arg func_trap "$child" SIGINT SIGTERM SIGKILL
mwan3_set_connected_${family}
mwan3_add_all_routes ${family}
kill -SIGCONT $child
- wait $!
+ wait $child
}
main "$@"
trap if_down USR1
trap if_up USR2
- config_load mwan3
config_get FAMILY $INTERFACE family ipv4
config_get track_method $INTERFACE track_method ping
config_get_bool httping_ssl $INTERFACE httping_ssl 0
# Copyright (C) 2018 rosysong@rosinson.com
#
-. /lib/nft-qos/core.sh
-. /lib/nft-qos/monitor.sh
-. /lib/nft-qos/dynamic.sh
-. /lib/nft-qos/static.sh
-. /lib/nft-qos/mac.sh
-. /lib/nft-qos/priority.sh
+. "${IPKG_INSTROOT}/lib/nft-qos/core.sh"
+. "${IPKG_INSTROOT}/lib/nft-qos/monitor.sh"
+. "${IPKG_INSTROOT}/lib/nft-qos/dynamic.sh"
+. "${IPKG_INSTROOT}/lib/nft-qos/static.sh"
+. "${IPKG_INSTROOT}/lib/nft-qos/mac.sh"
+. "${IPKG_INSTROOT}/lib/nft-qos/priority.sh"
START=99
USE_PROCD=1
+++ /dev/null
-#
-# Copyright (C) 2017 Steven Hessing
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-# Name and release number of this package
-PKG_NAME:=noddos
-PKG_VERSION:=0.5.5
-PKG_RELEASE:=5
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=https://github.com/noddos/noddos/releases/download/v$(PKG_VERSION)/
-PKG_HASH:=1f5be0c1015b0407036eecc8449d60d2abcacec442bba55db85fc32e89f754db
-
-PKG_MAINTAINER:=Steven Hessing <steven.hessing@gmail.com>
-PKG_LICENSE:=GPL-3.0-or-later
-PKG_LICENSE_FILES:=LICENSE.md
-
-PKG_BUILD_PARALLEL:=1
-CMAKE_INSTALL:=1
-
-include $(INCLUDE_DIR)/package.mk
-include $(INCLUDE_DIR)/cmake.mk
-
-define Package/noddos
- SECTION:=net
- CATEGORY:=Network
- TITLE:=noddos -- device-aware cloud-powered firewall
- URL:=https://www.noddos.io/
- DEPENDS:=+libstdcpp +libnetfilter-conntrack +libcurl +libopenssl +openssl-util +ca-bundle +wget +bzip2 +libtins +ipset +libpthread +libyaml-cpp
-endef
-
-define Package/noddos/description
-Noddos discovers what devices you have in your network and tailors the firewall rules based on whitelisted flows for that device. Noddos downloads the firewall rules periodically from the cloud. In order to support creating these firewall rules, noddos can, after opt-in, upload anonimized traffic statistics for each device to the cloud. The Luci interface is available in the luci-apps-noddos package. For information, visit https://www.noddos.io/
-endef
-
-define Package/noddos/conffiles
-/etc/config/noddos
-endef
-
-define Package/noddos/install
- $(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_DIR) $(1)/usr/sbin
- $(INSTALL_DIR) $(1)/etc/config
- $(INSTALL_DIR) $(1)/etc/init.d
- $(INSTALL_DIR) $(1)/etc/noddos
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/noddos $(1)/usr/sbin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/tools/getnoddosdeviceprofiles $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/tools/makenoddoscert.sh $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/noddos.init $(1)/etc/init.d/noddos
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/noddos.uciconfig $(1)/etc/config/noddos
- $(INSTALL_DATA) $(PKG_BUILD_DIR)/files/noddos.yml-base $(1)/etc/noddos
- $(INSTALL_DATA) $(PKG_BUILD_DIR)/files/noddosconfig.pem $(1)/etc/noddos
-endef
-
-define Package/noddos/prerm
- #!/bin/sh
- # check if we are on real system
- if [ -z "$${IPKG_INSTROOT}" ]; then
- /etc/init.d/noddos stop
- echo "Removing rc.d symlink for noddos"
- /etc/init.d/noddos disable
- fi
- exit 0
-endef
-
-define Package/noddos/postrm
- #!/bin/sh
- # check if we are on real system
- if [ -z "$${IPKG_INSTROOT}" ]; then
- echo "Removing noddos data directory"
- rm -rf /var/lib/noddos
- if [ -f /var/etc/noddos.yml ]; then
- rm /var/etc/noddos.yml
- fi
- fi
- exit 0
-endef
-
-$(eval $(call BuildPackage,noddos))
+++ /dev/null
---- a/src/opensslfingerprint.cxx
-+++ b/src/opensslfingerprint.cxx
-@@ -110,7 +110,9 @@ std::string getCertFingerprint(const std
- snprintf(&fpbuf[57], 3, "%02x", md[19]);
-
- if (Debug) {
-- syslog (LOG_DEBUG, "Cert: %s, fingerprint: %s", x->name, fpbuf);
-+ char *namebuf = X509_NAME_oneline(X509_get_subject_name(x),NULL,0);
-+ syslog (LOG_DEBUG, "Cert: %s, fingerprint: %s", namebuf, fpbuf);
-+ free(namebuf);
- }
-
- std::string fp = fpbuf;
+++ /dev/null
-From 5200105f412ceefa0784bf914aa215146fd067b0 Mon Sep 17 00:00:00 2001
-From: Eneas U de Queiroz <cote2004-github@yahoo.com>
-Date: Wed, 26 Dec 2018 16:45:47 -0200
-Subject: [PATCH] Ipset.cxx: update libipset API to version 7
-
-Old API compatibility was kept with a compatibility shim.
-
-Signed-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>
-
-diff --git a/src/Ipset.cxx b/src/Ipset.cxx
-index 9333fe6..da97f93 100644
---- a/src/Ipset.cxx
-+++ b/src/Ipset.cxx
-@@ -90,23 +90,19 @@ void Ipset::Open (const std::string inIpsetName, std::string inIpsetType, bool i
- isIpsetv4 = inisIpsetv4;
- ipset_load_types();
-
-- struct ipset_session *session = ipset_session_init(printf);
-+ struct ipset_session *session = noddos_ipset_session_init();
- if (session == nullptr) {
- syslog (LOG_ERR, "Ipset: Cannot initialize ipset session.");
- ipset_session_fini(session);
- throw std::runtime_error ("Cannot initialize ipset session.");
- }
-
-- if (ipset_envopt_parse(session, IPSET_ENV_EXIST, NULL) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't set environment option.");
-- ipset_session_fini(session);
-- throw std::runtime_error ("Can't set environment option.");
-- }
-+ ipset_envopt_set(session, IPSET_ENV_EXIST);
- int r = ipset_session_data_set(session, IPSET_SETNAME, ipsetName.c_str());
- if ( r < 0) {
-- syslog (LOG_ERR, "Ipset: Can't set setname %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't set setname %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't set setname " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't set setname " + ipsetName + ": " + ipset_session_report_msg(session));
- } else if (r > 0) {
- if (Debug == true) {
- syslog (LOG_DEBUG, "Ipset: Not creating set %s as it already exists", ipsetName.c_str());
-@@ -115,27 +111,27 @@ void Ipset::Open (const std::string inIpsetName, std::string inIpsetType, bool i
- return;
- }
- if (ipset_session_data_set(session, IPSET_OPT_TYPENAME, ipsetType.c_str()) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't set setname %s to type %s: %s", ipsetName.c_str(), ipsetType.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't set setname %s to type %s: %s", ipsetName.c_str(), ipsetType.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't set type " + ipsetType + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't set type " + ipsetType + ": " + ipset_session_report_msg(session));
- }
- const struct ipset_type *type = ipset_type_get(session, IPSET_CMD_CREATE);
- if (type == NULL) {
-- syslog (LOG_ERR, "Ipset: Can't set create ip %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't set create ip %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't create ipset " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't create ipset " + ipsetName + ": " + ipset_session_report_msg(session));
- }
-
- uint32_t timeout = 0; /* default to infinity */
- if (ipset_session_data_set(session, IPSET_OPT_TIMEOUT, &timeout) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't set setname %s to timeout %d: %s", ipsetName.c_str(), timeout, ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't set setname %s to timeout %d: %s", ipsetName.c_str(), timeout, ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't set time-out " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't set time-out " + ipsetName + ": " + ipset_session_report_msg(session));
- }
- if (ipset_session_data_set(session, IPSET_OPT_TYPE, type)) {
-- syslog (LOG_ERR, "Ipset: Can't set setname %s option type: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't set setname %s option type: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't set ipset type: " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't set ipset type: " + ipsetName + ": " + ipset_session_report_msg(session));
- }
- uint8_t family = 0;
- if (ipsetType == "hash:ip" && isIpsetv4 == true) {
-@@ -149,20 +145,20 @@ void Ipset::Open (const std::string inIpsetName, std::string inIpsetType, bool i
- throw std::invalid_argument("Unknown ipset data type " + ipsetType);
- }
- if (ipset_session_data_set(session, IPSET_OPT_FAMILY, &family) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't set setname %s address family %d: %s", ipsetName.c_str(), family, ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't set setname %s address family %d: %s", ipsetName.c_str(), family, ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Cannot set ipset family: " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Cannot set ipset family: " + ipsetName + ": " + ipset_session_report_msg(session));
- }
-
- if (ipset_cmd(session, IPSET_CMD_CREATE, /*lineno*/ 0) != 0) {
-- syslog (LOG_ERR, "Ipset: Can't create setname %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't create setname %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Failed to create ipset " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Failed to create ipset " + ipsetName + ": " + ipset_session_report_msg(session));
- }
- if (ipset_commit(session) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't commit for setname %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't commit for setname %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't call ipset_commit for " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't call ipset_commit for " + ipsetName + ": " + ipset_session_report_msg(session));
- }
- ipset_session_fini(session);
- }
-@@ -173,33 +169,29 @@ bool Ipset::ipset_exec(enum ipset_cmd cmd) {
- if (Debug == true) {
- syslog(LOG_DEBUG, "Ipset: received command %d for ipset %s", cmd, ipsetName.c_str());
- }
-- struct ipset_session *session = ipset_session_init(printf);
-+ struct ipset_session *session = noddos_ipset_session_init();
- if (session == nullptr) {
- syslog (LOG_ERR, "Ipset: Cannot initialize ipset session.");
- ipset_session_fini(session);
- throw std::runtime_error ("Cannot initialize ipset session.");
- }
-
-- if (ipset_envopt_parse(session, IPSET_ENV_EXIST, NULL) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't set environment option.");
-- ipset_session_fini(session);
-- throw std::runtime_error ("Can't set environment option.");
-- }
-+ ipset_envopt_set(session, IPSET_ENV_EXIST);
- if (ipset_session_data_set(session, IPSET_SETNAME, ipsetName.c_str()) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't set setname %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't set setname %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't set setname " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't set setname " + ipsetName + ": " + ipset_session_report_msg(session));
- }
-
- if (ipset_cmd(session, cmd, 0) != 0) {
- ipset_session_fini(session);
-- syslog (LOG_ERR, "Ipset: Can't exec ipset cmd for setname %s: %s", ipsetName.c_str(), ipset_session_error(session));
-- throw std::runtime_error("Can't exec ipset cmd for " + ipsetName + ": " + ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't exec ipset cmd for setname %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
-+ throw std::runtime_error("Can't exec ipset cmd for " + ipsetName + ": " + ipset_session_report_msg(session));
- }
- if (ipset_commit(session) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't commit for setname %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't commit for setname %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't call ipset_commit for " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't call ipset_commit for " + ipsetName + ": " + ipset_session_report_msg(session));
- }
- ipset_session_fini(session);
- return true;
-@@ -210,61 +202,57 @@ bool Ipset::ipset_exec(enum ipset_cmd cmd, const Tins::IPv4Address &inIpAddress
- if (Debug == true) {
- syslog(LOG_DEBUG, "Ipset: received command %d for IP address %s for ipset %s", cmd, inIpAddress.to_string().c_str(), ipsetName.c_str());
- }
-- struct ipset_session *session = ipset_session_init(printf);
-+ struct ipset_session *session = noddos_ipset_session_init();
- if (session == nullptr) {
- syslog (LOG_ERR, "Ipset: Cannot initialize ipset session.");
- ipset_session_fini(session);
- throw std::runtime_error ("Cannot initialize ipset session.");
- }
-
-- if (ipset_envopt_parse(session, IPSET_ENV_EXIST, NULL) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't set environment option.");
-- ipset_session_fini(session);
-- throw std::runtime_error ("Can't set environment option.");
-- }
-+ ipset_envopt_set(session, IPSET_ENV_EXIST);
- if (ipset_session_data_set(session, IPSET_SETNAME, ipsetName.c_str()) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't set setname %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't set setname %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't set setname " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't set setname " + ipsetName + ": " + ipset_session_report_msg(session));
- }
- const struct ipset_type *type = ipset_type_get(session, cmd);
- if (type == NULL) {
-- syslog (LOG_ERR, "Ipset: Can't get type for set %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't get type for set %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't get type for set " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't get type for set " + ipsetName + ": " + ipset_session_report_msg(session));
- }
-
- uint8_t family = NFPROTO_IPV4;
- if (ipset_session_data_set(session, IPSET_OPT_FAMILY, &family) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't set session data to IPv4 family for set %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't set session data to IPv4 family for set %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't set session data for " + ipsetName + " to the IPv4 family, error: " + ipset_session_error(session));
-+ throw std::runtime_error("Can't set session data for " + ipsetName + " to the IPv4 family, error: " + ipset_session_report_msg(session));
- }
- struct in_addr sin;
- inet_aton (inIpAddress.to_string().c_str(), &sin);
- if (ipset_session_data_set(session, IPSET_OPT_IP, &sin) < 0) {
-- syslog (LOG_ERR, "Can't set session data to the IPv4 address for setname %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Can't set session data to the IPv4 address for setname %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't set session data to the IPv4 address for setname " + ipsetName + ", error: " + ipset_session_error(session));
-+ throw std::runtime_error("Can't set session data to the IPv4 address for setname " + ipsetName + ", error: " + ipset_session_report_msg(session));
- }
-
- if (timeout) {
- if (ipset_session_data_set(session, IPSET_OPT_TIMEOUT, &timeout) != 0) {
-- syslog (LOG_ERR, "Ipset: Can't set timeout for setname %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't set timeout for setname %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't set timeout for " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't set timeout for " + ipsetName + ": " + ipset_session_report_msg(session));
- return false;
- }
- }
- if (ipset_cmd(session, cmd, 0) != 0) {
- ipset_session_fini(session);
-- syslog (LOG_ERR, "Ipset: Can't exec ipset cmd for setname %s: %s", ipsetName.c_str(), ipset_session_error(session));
-- throw std::runtime_error("Can't exec ipset cmd for " + ipsetName + ": " + ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't exec ipset cmd for setname %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
-+ throw std::runtime_error("Can't exec ipset cmd for " + ipsetName + ": " + ipset_session_report_msg(session));
- }
- if (ipset_commit(session) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't commit for setname %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't commit for setname %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't call ipset_commit for " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't call ipset_commit for " + ipsetName + ": " + ipset_session_report_msg(session));
- }
- ipset_session_fini(session);
- return true;
-@@ -274,61 +262,57 @@ bool Ipset::ipset_exec(enum ipset_cmd cmd, const Tins::IPv6Address &inIpAddress
- if (Debug == true) {
- syslog(LOG_DEBUG, "Ipset: received command %d for IP address %s for ipset %s", cmd, inIpAddress.to_string().c_str(), ipsetName.c_str());
- }
-- struct ipset_session *session = ipset_session_init(printf);
-+ struct ipset_session *session = noddos_ipset_session_init();
- if (session == nullptr) {
- syslog (LOG_ERR, "Ipset: Cannot initialize ipset session.");
- ipset_session_fini(session);
- throw std::runtime_error ("Cannot initialize ipset session.");
- }
-
-- if (ipset_envopt_parse(session, IPSET_ENV_EXIST, NULL) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't set environment option.");
-- ipset_session_fini(session);
-- throw std::runtime_error ("Can't set environment option.");
-- }
-+ ipset_envopt_set(session, IPSET_ENV_EXIST);
- if (ipset_session_data_set(session, IPSET_SETNAME, ipsetName.c_str()) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't set setname %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't set setname %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't set setname " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't set setname " + ipsetName + ": " + ipset_session_report_msg(session));
- }
- const struct ipset_type *type = ipset_type_get(session, cmd);
- if (type == NULL) {
-- syslog (LOG_ERR, "Ipset: Can't get type for set %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't get type for set %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't get type for set " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't get type for set " + ipsetName + ": " + ipset_session_report_msg(session));
- }
-
- uint8_t family = NFPROTO_IPV6;
- if (ipset_session_data_set(session, IPSET_OPT_FAMILY, &family) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't set session data to IPv6 family for set %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't set session data to IPv6 family for set %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't set session data for " + ipsetName + " to the IPv6 family, error: " + ipset_session_error(session));
-+ throw std::runtime_error("Can't set session data for " + ipsetName + " to the IPv6 family, error: " + ipset_session_report_msg(session));
- }
-
- unsigned char buf[sizeof(struct in6_addr)];
- int s = inet_pton(AF_INET6, inIpAddress.to_string().c_str(), buf);
- if (ipset_session_data_set(session, IPSET_OPT_IP, &buf) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't set session data to the IPv4 address for setname %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't set session data to the IPv4 address for setname %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't set session data to the IPv4 address for setname " + ipsetName + ", error: " + ipset_session_error(session));
-+ throw std::runtime_error("Can't set session data to the IPv4 address for setname " + ipsetName + ", error: " + ipset_session_report_msg(session));
- }
-
- if (timeout) {
- if (ipset_session_data_set(session, IPSET_OPT_TIMEOUT, &timeout) != 0) {
-- syslog (LOG_ERR, "Ipset: Can't set timeout for setname %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't set timeout for setname %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't set timeout for " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't set timeout for " + ipsetName + ": " + ipset_session_report_msg(session));
- }
- }
- if (ipset_cmd(session, cmd, 0) != 0) {
-- syslog (LOG_ERR, "Ipset: Can't exec ipset cmd for setname %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't exec ipset cmd for setname %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't exec ipset cmd for " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't exec ipset cmd for " + ipsetName + ": " + ipset_session_report_msg(session));
- }
- if (ipset_commit(session) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't commit for setname %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't commit for setname %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't call ipset_commit for " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't call ipset_commit for " + ipsetName + ": " + ipset_session_report_msg(session));
- }
- ipset_session_fini(session);
- return true;
-@@ -338,50 +322,46 @@ bool Ipset::ipset_exec(enum ipset_cmd cmd, const std::string Mac, time_t timeout
- if (Debug == true) {
- syslog(LOG_DEBUG, "Ipset: received command %d for MAC address %s for ipset %s", cmd, Mac.c_str(), ipsetName.c_str());
- }
-- struct ipset_session *session = ipset_session_init(printf);
-+ struct ipset_session *session = noddos_ipset_session_init();
- if (session == nullptr) {
- syslog (LOG_ERR, "Ipset: Cannot initialize ipset session.");
- ipset_session_fini(session);
- throw std::runtime_error ("Cannot initialize ipset session.");
- }
-
-- if (ipset_envopt_parse(session, IPSET_ENV_EXIST, NULL) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't set environment option.");
-- ipset_session_fini(session);
-- throw std::runtime_error ("Can't set environment option.");
-- }
-+ ipset_envopt_set(session, IPSET_ENV_EXIST);
- if (ipset_session_data_set(session, IPSET_SETNAME, ipsetName.c_str()) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't set setname %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't set setname %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't set setname " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't set setname " + ipsetName + ": " + ipset_session_report_msg(session));
- }
- const struct ipset_type *type = ipset_type_get(session, cmd);
- if (type == NULL) {
-- syslog (LOG_ERR, "Ipset: Can't get type for set %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't get type for set %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't get type for set " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't get type for set " + ipsetName + ": " + ipset_session_report_msg(session));
- }
- if (ipset_parse_elem(session, (ipset_opt)type->last_elem_optional, Mac.c_str()) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't call ipset_parse_elem for %s: %s ", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't call ipset_parse_elem for %s: %s ", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't call ipset_parse_elem for ipset " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't call ipset_parse_elem for ipset " + ipsetName + ": " + ipset_session_report_msg(session));
- }
- if (timeout) {
- if (ipset_session_data_set(session, IPSET_OPT_TIMEOUT, &timeout) != 0) {
-- syslog (LOG_ERR, "Ipset: Can't set timeout for setname %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't set timeout for setname %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't set timeout for " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't set timeout for " + ipsetName + ": " + ipset_session_report_msg(session));
- }
- }
- if (ipset_cmd(session, cmd, 0) != 0) {
-- syslog (LOG_ERR, "Ipset: Can't exec ipset cmd for setname %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't exec ipset cmd for setname %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't exec ipset cmd for " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't exec ipset cmd for " + ipsetName + ": " + ipset_session_report_msg(session));
- }
- if (ipset_commit(session) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't commit for setname %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't commit for setname %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't call ipset_commit for " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't call ipset_commit for " + ipsetName + ": " + ipset_session_report_msg(session));
- }
- ipset_session_fini(session);
- return true;
-diff --git a/src/Ipset.h b/src/Ipset.h
-index 2c5f7b2..eb180da 100644
---- a/src/Ipset.h
-+++ b/src/Ipset.h
-@@ -41,6 +41,31 @@
-
- #include "MacAddress.h"
-
-+#if IPSET_PROTOCOL < 7
-+/* compatibility shims */
-+
-+inline void ipset_envopt_set(struct ipset_session *session, enum ipset_envopt opt)
-+{
-+ ipset_envopt_parse(session, opt, NULL);
-+}
-+
-+inline const char * ipset_session_report_msg(const struct ipset_session *session)
-+{
-+ return ipset_session_error(session);
-+}
-+
-+static inline struct ipset_session *noddos_ipset_session_init(void)
-+{
-+ return ipset_session_init(printf);
-+}
-+
-+#else
-+
-+static inline struct ipset_session *noddos_ipset_session_init(void)
-+{
-+ return ipset_session_init(NULL, NULL);
-+}
-+#endif
-
- std::string getIpsetUuid (std::string inUuid);
- std::string getIpsetName (std::string inUuid, bool inSrc, bool inIpv4 = true);
-@@ -99,23 +124,19 @@ public:
- }
- bool Exists() {
- try {
-- struct ipset_session *session = ipset_session_init(printf);
-+ struct ipset_session *session = noddos_ipset_session_init();
- if (session == nullptr) {
- syslog (LOG_ERR, "Ipset: Cannot initialize ipset session.");
- ipset_session_fini(session);
- throw std::runtime_error ("Cannot initialize ipset session.");
- }
-
-- if (ipset_envopt_parse(session, IPSET_ENV_EXIST, NULL) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't set environment option.");
-- ipset_session_fini(session);
-- throw std::runtime_error ("Can't set environment option.");
-- }
-+ ipset_envopt_set(session, IPSET_ENV_EXIST);
- int r = ipset_session_data_set(session, IPSET_SETNAME, ipsetName.c_str());
- if (ipset_commit(session) < 0) {
-- syslog (LOG_ERR, "Ipset: Can't commit for setname %s: %s", ipsetName.c_str(), ipset_session_error(session));
-+ syslog (LOG_ERR, "Ipset: Can't commit for setname %s: %s", ipsetName.c_str(), ipset_session_report_msg(session));
- ipset_session_fini(session);
-- throw std::runtime_error("Can't call ipset_commit for " + ipsetName + ": " + ipset_session_error(session));
-+ throw std::runtime_error("Can't call ipset_commit for " + ipsetName + ": " + ipset_session_report_msg(session));
- }
- ipset_session_fini(session);
- return r == 0;
+++ /dev/null
-From eb1730afff9377a5f167d0738ad0b3aeba9634d0 Mon Sep 17 00:00:00 2001
-From: Eneas U de Queiroz <cote2004-github@yahoo.com>
-Date: Tue, 19 Mar 2019 18:27:10 -0300
-Subject: [PATCH] getnoddosdeviceprofiles: wget timestamping check
-
-Check if the --timestamping option is available to avoid an error in
-openwrt when wget is handled by uclient-fetch.
-
-Signed-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>
-
-diff --git a/tools/getnoddosdeviceprofiles b/tools/getnoddosdeviceprofiles
-index 337e351..174034f 100755
---- a/tools/getnoddosdeviceprofiles
-+++ b/tools/getnoddosdeviceprofiles
-@@ -86,7 +86,12 @@ fi
- # That's also why we don't delete the downloaded file
- if [ "$WGET" != "" ]
- then
-- GETURL="$WGET --quiet --timestamping"
-+ GETURL="$WGET --quiet"
-+ # Make sure wget accepts --timestamping
-+ if wget --help 2>&1 | egrep timestamping > /dev/null
-+ then
-+ GETURL="$GETURL --timestamping"
-+ fi
- else
- if [ "$CURL" != "" ]
- then
+++ /dev/null
---- a/src/opensslfingerprint.cxx
-+++ b/src/opensslfingerprint.cxx
-@@ -73,9 +73,11 @@ std::string getCertFingerprint(const std::string certfile, const bool Debug = fa
- // closes file
- close(fd);
-
-+#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(LIBRESSL_VERSION_NUMBER)
- // initialize OpenSSL
- SSL_load_error_strings();
- SSL_library_init();
-+#endif
-
- // creates BIO buffer
- BIO * bio = BIO_new_mem_buf(buff, len);
include $(TOPDIR)/rules.mk
PKG_NAME:=ocserv
-PKG_VERSION:=1.1.1
-PKG_RELEASE:=2
+PKG_VERSION:=1.1.2
+PKG_RELEASE:=1
PKG_USE_MIPS16:=0
PKG_BUILD_DIR :=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=ftp://ftp.infradead.org/pub/ocserv/
-PKG_HASH:=9c7aaf46e53e28cfa7be329b18f3951e7e851153ff6a27e946496fd4e8e5765a
+PKG_HASH:=889ccdbe8e67d3bc2bc8713b7fbb5bd4e79228abc6054e88858cb4ad6d0245dd
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING
PKG_NAME:=ola
PKG_VERSION:=0.10.8
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/OpenLightingProject/ola/tar.gz/$(PKG_VERSION)?
--- /dev/null
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -61,7 +61,7 @@ COMMON_TESTING_PROTOBUF_FLAGS = $(COMMON
+
+ # The generated protobuf files don't compile with -Werror on win32 so we
+ # disable fatal warnings on WIN32.
+-if ! USING_WIN32
++if USING_WIN32
+ if FATAL_WARNINGS
+ COMMON_CXXFLAGS += -Werror
+ COMMON_PROTOBUF_CXXFLAGS += -Werror -Wno-error=unused-parameter \
include $(TOPDIR)/rules.mk
PKG_NAME:=open-iscsi
-PKG_VERSION:=2.1.1
-PKG_RELEASE:=2
+PKG_VERSION:=2.1.3
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/open-iscsi/open-iscsi/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=dfc1ea37f230f9d116f5b39c795b35be43002d65c81330ccd3878786532b811b
+PKG_HASH:=5410474b23552016220d04aa181903cb50ae988f29e99cb03f3e2de86a109be4
PKG_MAINTAINER:=Lucian CRISTIAN <lucian.cristian@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
--build=$(GNU_HOST_NAME) \
--prefix=/usr \
LIB_DIR=/usr/lib \
+ CC="$(TARGET_CC)" \
CFLAGS="$(TARGET_CFLAGS) $(EXTRA_CFLAGS)" \
)
endef
usr/idbm.c | 18 +++++-------------
1 file changed, 5 insertions(+), 13 deletions(-)
-diff --git a/usr/idbm.c b/usr/idbm.c
-index be4d4e3..a7da540 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
-@@ -2078,6 +2078,10 @@ static int idbm_rec_write(node_rec_t *rec, bool disable_lock)
+@@ -2178,6 +2178,10 @@ static int idbm_rec_write(node_rec_t *re
goto free_portal;
}
rc = stat(portal, &statb);
if (rc) {
rc = 0;
-@@ -2086,22 +2090,10 @@ static int idbm_rec_write(node_rec_t *rec, bool disable_lock)
+@@ -2186,23 +2190,11 @@ static int idbm_rec_write(node_rec_t *re
* set the tgpt. In new versions you must pass all the info in
* from the start
*/
}
if (!S_ISDIR(statb.st_mode)) {
-- /*
+ /*
- * older iscsiadm versions had you create the config then set
- * set the tgpt. In new versions you must pass all the info in
- * from the start
- if (rec->tpgt == PORTAL_GROUP_TAG_UNKNOWN)
- /* drop down to old style portal as config */
- goto open_conf;
- /*
+- /*
* Old style portal as a file, but with tpgt. Let's update it.
*/
---
-2.21.0
-
+ if (unlink(portal)) {
usr/idbm.c | 129 +++++++++++++++++++++++++++++++++++------------------
1 file changed, 86 insertions(+), 43 deletions(-)
-diff --git a/usr/idbm.c b/usr/idbm.c
-index a7da540..2f5e309 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
-@@ -2030,12 +2030,7 @@ mkdir_portal:
+@@ -2130,12 +2130,7 @@ mkdir_portal:
return f;
}
{
struct stat statb;
FILE *f;
-@@ -2048,39 +2043,8 @@ static int idbm_rec_write(node_rec_t *rec, bool disable_lock)
+@@ -2148,39 +2143,8 @@ static int idbm_rec_write(node_rec_t *re
return ISCSI_ERR_NOMEM;
}
rc = stat(portal, &statb);
if (rc) {
-@@ -2101,11 +2065,11 @@ static int idbm_rec_write(node_rec_t *rec, bool disable_lock)
+@@ -2201,11 +2165,11 @@ static int idbm_rec_write(node_rec_t *re
log_error("Could not convert %s: %s", portal,
strerror(errno));
rc = ISCSI_ERR_IDBM;
}
mkdir_portal:
-@@ -2116,24 +2080,103 @@ mkdir_portal:
+@@ -2216,24 +2180,103 @@ mkdir_portal:
log_error("Could not make dir %s: %s",
portal, strerror(errno));
rc = ISCSI_ERR_IDBM;
rc = ISCSI_ERR_IDBM;
- goto unlock;
+ goto free_portal;
- }
-
- idbm_print(IDBM_PRINT_TYPE_NODE, rec, 1, f);
- fclose(f);
--unlock:
++ }
++
++ idbm_print(IDBM_PRINT_TYPE_NODE, rec, 1, f);
++ fclose(f);
+free_portal:
+ free(portal);
+ return rc;
+ if (!portal) {
+ log_error("Could not alloc portal");
+ return ISCSI_ERR_NOMEM;
-+ }
+ }
+ snprintf(portal, PATH_MAX, "%s/%s/%s,%d", NODE_CONFIG_DIR,
+ rec->name, rec->conn[0].address, rec->conn[0].port);
-+
+
+ f = fopen(portal, "w");
+ if (!f) {
+ log_error("Could not open %s: %sd", portal, strerror(errno));
+ rc = ISCSI_ERR_IDBM;
+ goto free_portal;
+ }
-+ idbm_print(IDBM_PRINT_TYPE_NODE, rec, 1, f);
-+ fclose(f);
+ idbm_print(IDBM_PRINT_TYPE_NODE, rec, 1, f);
+ fclose(f);
+-unlock:
+free_portal:
+ free(portal);
+ return rc;
if (!disable_lock)
idbm_unlock();
free_portal:
---
-2.21.0
-
usr/idbm.c | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
-diff --git a/usr/idbm.c b/usr/idbm.c
-index b6193e7..2208c4a 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -28,6 +28,7 @@
#define IDBM_HIDE 0 /* Hide parameter when print. */
#define IDBM_SHOW 1 /* Show parameter when print. */
#define IDBM_MASKED 2 /* Show "stars" instead of real value when print */
-@@ -202,6 +207,8 @@ static struct int_list_tbl {
+@@ -203,6 +208,8 @@ static struct int_list_tbl {
{ "SHA3-256", AUTH_CHAP_ALG_SHA3_256 },
};
static void
idbm_recinfo_discovery(discovery_rec_t *r, recinfo_t *ri)
{
-@@ -2206,12 +2213,49 @@ static int idbm_rec_write_old(node_rec_t *rec)
+@@ -2207,12 +2214,49 @@ static int idbm_rec_write_old(node_rec_t
FILE *f;
char *portal;
int rc = 0;
snprintf(portal, PATH_MAX, "%s/%s/%s,%d", NODE_CONFIG_DIR,
rec->name, rec->conn[0].address, rec->conn[0].port);
-
usr/iface.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
-diff --git a/usr/iface.c b/usr/iface.c
-index 645b0b8..9cd07fd 100644
--- a/usr/iface.c
+++ b/usr/iface.c
-@@ -993,6 +993,7 @@ int iface_setup_from_boot_context(struct iface_rec *iface,
+@@ -998,6 +998,7 @@ int iface_setup_from_boot_context(struct
{
struct iscsi_transport *t = NULL;
uint32_t hostno;
if (strlen(context->initiatorname))
strlcpy(iface->iname, context->initiatorname,
-@@ -1006,10 +1007,7 @@ int iface_setup_from_boot_context(struct iface_rec *iface,
+@@ -1011,10 +1012,7 @@ int iface_setup_from_boot_context(struct
return 0;
}
} else if (strlen(context->iface)) {
memset(transport_name, 0, ISCSI_TRANSPORT_NAME_MAXLEN);
/* make sure offload driver is loaded */
-@@ -1035,9 +1033,6 @@ int iface_setup_from_boot_context(struct iface_rec *iface,
+@@ -1040,9 +1038,6 @@ int iface_setup_from_boot_context(struct
}
strlcpy(iface->netdev, context->iface, sizeof(iface->netdev));
} else
return 0;
---
-2.21.0
-
usr/iscsid.c | 2 +-
6 files changed, 15 insertions(+), 15 deletions(-)
-diff --git a/iscsiuio/src/unix/libs/qedi.c b/iscsiuio/src/unix/libs/qedi.c
-index 3414cb5..a359700 100644
--- a/iscsiuio/src/unix/libs/qedi.c
+++ b/iscsiuio/src/unix/libs/qedi.c
-@@ -1023,7 +1023,7 @@ static int qedi_read(nic_t *nic, packet_t *pkt)
+@@ -1030,7 +1030,7 @@ static int qedi_read(nic_t *nic, packet_
LOG_DEBUG(PFX "%s:hw_prod %d bd_prod %d, rx_pkt_idx %d, rxlen %d",
nic->log_name, hw_prod, bd_prod, rx_bd->rx_pkt_index, len);
nic->log_name, sw_cons, bd_cons, QEDI_NUM_RX_BD);
if (bd_cons != bd_prod) {
-diff --git a/iscsiuio/src/unix/main.c b/iscsiuio/src/unix/main.c
-index 0c9ad49..f83f305 100644
--- a/iscsiuio/src/unix/main.c
+++ b/iscsiuio/src/unix/main.c
@@ -391,6 +391,9 @@ int main(int argc, char *argv[])
/* Spin off the signal handling thread */
pthread_attr_init(&attr);
-diff --git a/libopeniscsiusr/idbm.c b/libopeniscsiusr/idbm.c
-index 7bc2381..7d4c338 100644
--- a/libopeniscsiusr/idbm.c
+++ b/libopeniscsiusr/idbm.c
-@@ -321,12 +321,11 @@ int _idbm_lock(struct iscsi_context *ctx)
+@@ -321,12 +321,11 @@ int _idbm_lock(struct iscsi_context *ctx
return 0;
}
}
fd = open(LOCK_FILE, O_RDWR | O_CREAT, 0666);
-diff --git a/usr/idbm.c b/usr/idbm.c
-index d5e16cb..a210c88 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
-@@ -1438,12 +1438,10 @@ int idbm_lock(void)
+@@ -1439,12 +1439,10 @@ int idbm_lock(void)
return 0;
}
}
fd = open(LOCK_FILE, O_RDWR | O_CREAT, 0666);
-diff --git a/usr/iscsid.c b/usr/iscsid.c
-index 99d27ab..dbb0900 100644
--- a/usr/iscsid.c
+++ b/usr/iscsid.c
-@@ -490,8 +490,8 @@ int main(int argc, char *argv[])
+@@ -495,8 +495,8 @@ int main(int argc, char *argv[])
log_close(log_pid);
exit(ISCSI_ERR);
}
if ((control_fd = ipc->ctldev_open()) < 0) {
log_close(log_pid);
-diff --git a/usr/initiator.c b/usr/initiator.c
-index a07f9aa..a06760c 100644
--- a/usr/initiator.c
+++ b/usr/initiator.c
-@@ -580,7 +580,7 @@ __session_conn_reopen(iscsi_conn_t *conn, queue_task_t *qtask, int do_stop,
+@@ -580,7 +580,7 @@ __session_conn_reopen(iscsi_conn_t *conn
int redirected)
{
iscsi_session_t *session = conn->session;
log_debug(1, "re-opening session %d (reopen_cnt %d)", session->id,
session->reopen_cnt);
---
-2.21.1
-
+++ /dev/null
-From d4ed4972df1ffe9381e33f2800f8e574f632948c Mon Sep 17 00:00:00 2001
-From: rpm-build <rpm-build>
-Date: Mon, 2 Mar 2020 15:21:30 -0800
-Subject: [PATCH 1/1] iscsi_if.h replace zero-length array with flexible-array
- member
-
----
- include/iscsi_if.h | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/include/iscsi_if.h b/include/iscsi_if.h
-index 2d46214..e8cee0d 100644
---- a/include/iscsi_if.h
-+++ b/include/iscsi_if.h
-@@ -337,7 +337,7 @@ enum iscsi_param_type {
- struct iscsi_param_info {
- uint32_t len; /* Actual length of the param value */
- uint16_t param; /* iscsi param */
-- uint8_t value[0]; /* length sized value follows */
-+ uint8_t value[]; /* length sized value follows */
- } __attribute__((__packed__));
-
- struct iscsi_iface_param_info {
-@@ -346,7 +346,7 @@ struct iscsi_iface_param_info {
- uint16_t param; /* iscsi param value */
- uint8_t iface_type; /* IPv4 or IPv6 */
- uint8_t param_type; /* iscsi_param_type */
-- uint8_t value[0]; /* length sized value follows */
-+ uint8_t value[]; /* length sized value follows */
- } __attribute__((__packed__));
-
- /*
-@@ -723,7 +723,7 @@ enum iscsi_flashnode_param {
- struct iscsi_flashnode_param_info {
- uint32_t len; /* Actual length of the param */
- uint16_t param; /* iscsi param value */
-- uint8_t value[0]; /* length sized value follows */
-+ uint8_t value[]; /* length sized value follows */
- } __attribute__((__packed__));
-
- enum iscsi_discovery_parent_type {
-@@ -841,7 +841,7 @@ struct iscsi_stats {
- * up to ISCSI_STATS_CUSTOM_MAX
- */
- uint32_t custom_length;
-- struct iscsi_stats_custom custom[0]
-+ struct iscsi_stats_custom custom[]
- __attribute__ ((aligned (sizeof(uint64_t))));
- };
-
-@@ -972,7 +972,7 @@ struct iscsi_offload_host_stats {
- * up to ISCSI_HOST_STATS_CUSTOM_MAX
- */
- uint32_t custom_length;
-- struct iscsi_host_stats_custom custom[0]
-+ struct iscsi_host_stats_custom custom[]
- __attribute__ ((aligned (sizeof(uint64_t))));
- };
-
---
-2.21.1
-
+++ /dev/null
-From b32f59619c32ed6cd136194d92c649b74926c6f2 Mon Sep 17 00:00:00 2001
-From: Lee Duncan <lduncan@suse.com>
-Date: Wed, 25 Mar 2020 18:00:50 -0700
-Subject: [PATCH] Fix issue where "iscsi-iname -p" core dumps.
-
-While I was at it, I made the usage message a function
-and made it print to stderr insted of stdout.
----
- utils/Makefile | 2 +-
- utils/iscsi-iname.c | 17 +++++++++++++----
- 2 files changed, 14 insertions(+), 5 deletions(-)
-
-diff --git a/utils/Makefile b/utils/Makefile
-index f65f1e79..aed3bb0a 100644
---- a/utils/Makefile
-+++ b/utils/Makefile
-@@ -1,7 +1,7 @@
- # This Makefile will work only with GNU make.
-
- CFLAGS ?= -O2 -fno-inline -g
--CFLAGS += -Wall -Wstrict-prototypes
-+CFLAGS += -Wall -Wextra -Wstrict-prototypes
- PROGRAMS = iscsi-iname
-
- all: $(PROGRAMS)
-diff --git a/utils/iscsi-iname.c b/utils/iscsi-iname.c
-index da850dca..0f587e1e 100644
---- a/utils/iscsi-iname.c
-+++ b/utils/iscsi-iname.c
-@@ -40,6 +40,13 @@
- * a seperator and 12 characters (6 random bytes in hex representation) */
- #define PREFIX_MAX_LEN 210
-
-+static void usage(void)
-+{
-+ fprintf(stderr, "Usage: iscsi-iname [-h | --help | -p <prefix>]\n");
-+ fprintf(stderr, "where <prefix> has max length of %d\n",
-+ PREFIX_MAX_LEN);
-+}
-+
- int
- main(int argc, char *argv[])
- {
-@@ -68,15 +75,17 @@ main(int argc, char *argv[])
- "on every invocation.\n");
- exit(0);
- } else if ( strcmp(prefix, "-p") == 0 ) {
-+ if (argc != 3) {
-+ usage();
-+ exit(1);
-+ }
- prefix = argv[2];
- if (strnlen(prefix, PREFIX_MAX_LEN + 1) > PREFIX_MAX_LEN) {
-- printf("Error: Prefix cannot exceed %d "
-- "characters.\n", PREFIX_MAX_LEN);
-+ usage();
- exit(1);
- }
- } else {
-- printf("\nUsage: iscsi-iname [-h | --help | "
-- "-p <prefix>]\n");
-+ usage();
- exit(0);
- }
- } else {
+++ /dev/null
-From 6ed14d48f6e9a8dfb37cc68472b04cfb3673b7bd Mon Sep 17 00:00:00 2001
-From: Lee Duncan <lduncan@suse.com>
-Date: Fri, 27 Mar 2020 17:50:41 -0700
-Subject: [PATCH 1/3] Change include of <sys/poll.h> to <poll.h>
-
-The proper local is <poll.h>.
----
- iscsiuio/src/unix/nic_nl.c | 2 +-
- usr/discovery.c | 2 +-
- usr/event_poll.c | 2 +-
- usr/io.c | 2 +-
- usr/netlink.c | 2 +-
- 5 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/iscsiuio/src/unix/nic_nl.c b/iscsiuio/src/unix/nic_nl.c
-index f8306563..dee462e7 100644
---- a/iscsiuio/src/unix/nic_nl.c
-+++ b/iscsiuio/src/unix/nic_nl.c
-@@ -50,7 +50,7 @@
- #include <linux/netlink.h>
- #include <iscsi_if.h>
- #include <sys/ioctl.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <sys/types.h>
- #include <sys/user.h>
- #include <sys/socket.h>
-diff --git a/usr/discovery.c b/usr/discovery.c
-index 9ce122e1..7dec696f 100644
---- a/usr/discovery.c
-+++ b/usr/discovery.c
-@@ -25,7 +25,7 @@
- #include <stdint.h>
- #include <stdlib.h>
- #include <string.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <sys/time.h>
- #include <sys/param.h>
- #include <sys/socket.h>
-diff --git a/usr/event_poll.c b/usr/event_poll.c
-index 4cf4ce2b..ffd12a37 100644
---- a/usr/event_poll.c
-+++ b/usr/event_poll.c
-@@ -23,7 +23,7 @@
- */
- #include <stdlib.h>
- #include <errno.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <sys/types.h>
- #include <sys/wait.h>
- #include <sys/signalfd.h>
-diff --git a/usr/io.c b/usr/io.c
-index 210a10ad..a46c9f8c 100644
---- a/usr/io.c
-+++ b/usr/io.c
-@@ -24,7 +24,7 @@
- #include <signal.h>
- #include <unistd.h>
- #include <fcntl.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <sys/ioctl.h>
- #include <netinet/tcp.h>
- #include <arpa/inet.h>
-diff --git a/usr/netlink.c b/usr/netlink.c
-index d42ca4fb..22cad834 100644
---- a/usr/netlink.c
-+++ b/usr/netlink.c
-@@ -30,7 +30,7 @@
- #include <asm/types.h>
- #include <sys/socket.h>
- #include <sys/types.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <linux/netlink.h>
-
- #include "types.h"
-
-From fbe6c1c766a88edccb0d7f4168d2d87a3cdb4660 Mon Sep 17 00:00:00 2001
-From: Lee Duncan <lduncan@suse.com>
-Date: Fri, 27 Mar 2020 17:57:52 -0700
-Subject: [PATCH 2/3] Fix type mismatch under musl.
-
-It complains about rl.rlim_cur and rl.rlim_max being
-long long unsigned, so cast them, since it's debug
-messages anyway.
----
- usr/iscsi_util.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/usr/iscsi_util.c b/usr/iscsi_util.c
-index fd8fc0cf..db1dc377 100644
---- a/usr/iscsi_util.c
-+++ b/usr/iscsi_util.c
-@@ -152,7 +152,9 @@ int increase_max_files(void)
- log_debug(1, "Could not get file limit (err %d)", errno);
- return errno;
- }
-- log_debug(1, "Max file limits %lu %lu", rl.rlim_cur, rl.rlim_max);
-+ log_debug(1, "Max file limits %lu %lu",
-+ (long unsigned)rl.rlim_cur,
-+ (long unsigned)rl.rlim_max);
-
- if (rl.rlim_cur < ISCSI_MAX_FILES)
- rl.rlim_cur = ISCSI_MAX_FILES;
-@@ -162,7 +164,8 @@ int increase_max_files(void)
- err = setrlimit(RLIMIT_NOFILE, &rl);
- if (err) {
- log_debug(1, "Could not set file limit to %lu/%lu (err %d)",
-- rl.rlim_cur, rl.rlim_max, errno);
-+ (long unsigned)rl.rlim_cur,
-+ (long unsigned)rl.rlim_max, errno);
- return errno;
- }
-
-
-From a93c2f1cf5a55887074bdda65aa6ad6c533191f0 Mon Sep 17 00:00:00 2001
-From: Lee Duncan <lduncan@suse.com>
-Date: Sun, 29 Mar 2020 11:01:07 -0700
-Subject: [PATCH 3/3] More changes for musl.
-
-Clean up some code that musl complains about. The
-changes all seem like a good idea in general, and
-should not effect functionality.
----
- usr/iscsistart.c | 1 -
- usr/mgmt_ipc.c | 1 +
- usr/statics.c | 3 +--
- 3 files changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/usr/iscsistart.c b/usr/iscsistart.c
-index 00a9c78a..ee810f7a 100644
---- a/usr/iscsistart.c
-+++ b/usr/iscsistart.c
-@@ -30,7 +30,6 @@
- #include <time.h>
- #include <sys/mman.h>
- #include <sys/utsname.h>
--#include <sys/signal.h>
- #include <sys/types.h>
- #include <sys/wait.h>
-
-diff --git a/usr/mgmt_ipc.c b/usr/mgmt_ipc.c
-index 51267c13..c292161f 100644
---- a/usr/mgmt_ipc.c
-+++ b/usr/mgmt_ipc.c
-@@ -26,6 +26,7 @@
- #include <unistd.h>
- #include <pwd.h>
- #include <sys/un.h>
-+#include <string.h>
-
- #include "iscsid.h"
- #include "idbm.h"
-diff --git a/usr/statics.c b/usr/statics.c
-index 59fb044d..f59729ba 100644
---- a/usr/statics.c
-+++ b/usr/statics.c
-@@ -1,6 +1,6 @@
- #include <unistd.h>
- #include <pwd.h>
--#include <sys/errno.h>
-+#include <errno.h>
- #include <sys/types.h>
-
- static struct passwd root_pw = {
-@@ -17,4 +17,3 @@ getpwuid(uid_t uid)
- return 0;
- }
- }
--
+++ /dev/null
-From 16d4899d52b3b88774ac6d9b3cc0f5626f4705da Mon Sep 17 00:00:00 2001
-From: Lee Duncan <lduncan@suse.com>
-Date: Tue, 19 Nov 2019 07:54:41 -0800
-Subject: [PATCH] Ignore iface.example in iface match checks
-
-Just a cleanup, as looking at the example file
-didn't hurt anything, but did waste our time.
----
- usr/iface.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/usr/iface.c b/usr/iface.c
-index 323f1675..11f3d2ac 100644
---- a/usr/iface.c
-+++ b/usr/iface.c
-@@ -905,6 +905,9 @@ int iface_for_each_iface(void *data, int skip_def, int *nr_found,
- !strcmp(iface_dent->d_name, ".."))
- continue;
-
-+ if (!strcmp(iface_dent->d_name, "iface.example"))
-+ continue;
-+
- log_debug(5, "iface_for_each_iface found %s",
- iface_dent->d_name);
- iface = iface_alloc(iface_dent->d_name, &err);
[ -n "$password2" ] && echo "$password2" >> "$pwfile"
}
[ "$token_mode" = "script" ] && {
- $token_script > "$pwfile" 2> /dev/null || {
+ $token_script >> "$pwfile" 2> /dev/null || {
logger -t openconenct "Cannot get password from script '$token_script'"
proto_setup_failed "$config"
}
PKG_NAME:=openssh
PKG_VERSION:=8.4p1
-PKG_RELEASE:=1
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/ \
$(call Package/openssh/Default)
TITLE+= client
ALTERNATIVES:=\
- 200:/usr/bin/ssh:/usr/bin/openssh-ssh \
- 200:/usr/bin/scp:/usr/bin/openssh-scp \
-
+ 200:/usr/bin/ssh:/usr/libexec/ssh-openssh \
+ 200:/usr/bin/scp:/usr/libexec/scp-openssh
endef
define Package/openssh-client/description
$(INSTALL_DIR) $(1)/etc/ssh
chmod 0700 $(1)/etc/ssh
$(CP) $(PKG_INSTALL_DIR)/etc/ssh/ssh_config $(1)/etc/ssh/
- $(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ssh $(1)/usr/bin/openssh-ssh
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/scp $(1)/usr/bin/openssh-scp
+ $(INSTALL_DIR) $(1)/usr/libexec
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ssh $(1)/usr/libexec/ssh-openssh
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/scp $(1)/usr/libexec/scp-openssh
endef
define Package/openssh-client-utils/install
sed -r -i 's,^#(HostKey /etc/ssh/ssh_host_(rsa|ed25519)_key)$$$$,\1,' $(1)/etc/ssh/sshd_config
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/sshd.init $(1)/etc/init.d/sshd
+ $(INSTALL_DIR) $(1)/lib/preinit
+ $(INSTALL_BIN) ./files/sshd.failsafe $(1)/lib/preinit/99_10_failsafe_sshd
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/sshd $(1)/usr/sbin/
endef
--- /dev/null
+#!/bin/sh
+
+failsafe_sshd () {
+
+ # if dropbear is executable it can handle failsafe
+ [ -x /usr/sbin/dropbear ] && return
+
+ sshd_tmpdir=/tmp/sshd
+ mkdir $sshd_tmpdir
+
+ sed -i 's/^root:.*/root::0:17000:::::/g' /etc/shadow
+
+ for type in ed25519; do
+ key=$sshd_tmpdir/ssh_host_${type}_key
+ ssh-keygen -N '' -t ${type} -f ${key}
+ done
+
+ mkdir -m 0700 -p /var/empty
+
+ cat > $sshd_tmpdir/sshd_config <<EOF
+HostKey $sshd_tmpdir/ssh_host_ed25519_key
+PermitRootLogin yes
+PermitEmptyPasswords yes
+EOF
+
+ /usr/sbin/sshd -f $sshd_tmpdir/sshd_config -E $sshd_tmpdir/sshd.log
+
+}
+
+boot_hook_add failsafe failsafe_sshd
--- /dev/null
+#
+# Copyright (C) 2010-2013 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=openvpn-easy-rsa
+
+PKG_VERSION:=3.0.8
+PKG_RELEASE:=2
+PKG_SOURCE_URL:=https://codeload.github.com/OpenVPN/easy-rsa/tar.gz/v$(PKG_VERSION)?
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_HASH:=fd6b67d867c3b8afd53efa2ca015477f6658a02323e1799432083472ac0dd200
+
+# For git snapshots
+#PKG_SOURCE_PROTO:=git
+#PKG_RELEASE=0git$(PKG_SOURCE_DATE)
+#PKG_SOURCE_URL:=https://github.com/OpenVPN/easy-rsa.git
+#PKG_SOURCE_DATE:=2020-03-30
+#PKG_SOURCE_VERSION:=945c9359f6ae3796df21e2986e49489718e0d5f8
+#PKG_MIRROR_HASH:=
+
+PKG_LICENSE:=GPL-2.0
+PKG_MAINTAINER:=Luiz Angelo Daros de Luca <luizluca@gmail.com>
+PKG_BUILD_DIR:=$(BUILD_DIR)/easy-rsa-$(PKG_VERSION)
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/openvpn-easy-rsa
+ TITLE:=CLI utility to build and manage a PKI CA.
+ SECTION:=net
+ CATEGORY:=Network
+ URL:=http://openvpn.net
+ SUBMENU:=VPN
+ DEPENDS:=+openssl-util
+ PKGARCH:=all
+endef
+
+define Package/openvpn-easy-rsa/conffiles
+/etc/easy-rsa/vars
+/etc/easy-rsa/openssl-1.0.cnf
+/etc/easy-rsa/openssl-easyrsa.cnf
+endef
+
+define Build/Configure
+endef
+
+define Build/Compile
+ cd $(PKG_BUILD_DIR); \
+ $(PKG_BUILD_DIR)/build/build-dist.sh \
+ --no-windows \
+ --no-compress \
+ --dist-clean \
+ --version=$(PKG_VERSION)
+endef
+
+define Package/openvpn-easy-rsa/install
+
+ $(INSTALL_DIR) $(1)/usr/lib/easy-rsa/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/dist-staging/unix/EasyRSA-$(PKG_VERSION)/easyrsa $(1)/usr/lib/easy-rsa/
+
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(LN) ../lib/easy-rsa/easyrsa $(1)/usr/bin/easyrsa
+
+ $(INSTALL_DIR) $(1)/etc/easy-rsa
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/dist-staging/unix/EasyRSA-$(PKG_VERSION)/openssl-easyrsa.cnf $(1)/etc/easy-rsa/openssl-1.0.cnf
+ $(LN) openssl-1.0.cnf $(1)/etc/easy-rsa/openssl-easyrsa.cnf
+ $(LN) ../../../etc/easy-rsa/openssl-easyrsa.cnf $(1)/usr/lib/easy-rsa/openssl-easyrsa.cnf
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/dist-staging/unix/EasyRSA-$(PKG_VERSION)/vars.example $(1)/etc/easy-rsa/vars
+ $(LN) ../../../etc/easy-rsa/vars $(1)/usr/lib/easy-rsa/vars
+
+ $(INSTALL_DIR) $(1)/etc/easy-rsa/pki
+ chmod 700 $(1)/etc/easy-rsa/pki
+ $(INSTALL_DIR) $(1)/etc/easy-rsa/pki/private
+ chmod 700 $(1)/etc/easy-rsa/pki/private
+ $(INSTALL_DIR) $(1)/etc/easy-rsa/pki/reqs
+ chmod 700 $(1)/etc/easy-rsa/pki/reqs
+
+ $(INSTALL_DIR) $(1)/etc/easy-rsa/x509-types
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/dist-staging/unix/EasyRSA-$(PKG_VERSION)/x509-types/* $(1)/etc/easy-rsa/x509-types/
+ $(LN) ../../../etc/easy-rsa/x509-types $(1)/usr/lib/easy-rsa/x509-types
+
+ $(INSTALL_DIR) $(1)/lib/upgrade/keep.d
+ $(INSTALL_DATA) files/openvpn-easy-rsa.upgrade $(1)/lib/upgrade/keep.d/$(PKG_NAME)
+
+ $(INSTALL_DIR) $(1)/etc/profile.d
+ $(INSTALL_DATA) files/openvpn-easy-rsa.profile $(1)/etc/profile.d/50-$(PKG_NAME).sh
+endef
+
+$(eval $(call BuildPackage,openvpn-easy-rsa))
--- /dev/null
+# default PKI dir
+#export EASYRSA=${EASYRSA:-/etc/easy-rsa}
+#export EASYRSA_PKI=${EASYRSA_PKI:-$EASYRSA/pki}
+#export EASYRSA_VARS_FILE=${EASYRSA_VARS_FILE:-$EASYRSA/vars}
+export EASYRSA_TEMP_DIR=${EASYRSA_TEMP_DIR:-${TMPDIR:-/tmp/}}
--- /dev/null
+/etc/easy-rsa/pki/
--- /dev/null
+if PACKAGE_openvpn-mbedtls
+
+config OPENVPN_mbedtls_ENABLE_LZO
+ bool "Enable LZO compression support"
+ default n
+
+config OPENVPN_mbedtls_ENABLE_LZ4
+ bool "Enable LZ4 compression support"
+ default y
+
+#config OPENVPN_mbedtls_ENABLE_EUREPHIA
+# bool "Enable support for the eurephia plug-in"
+# default n
+
+config OPENVPN_mbedtls_ENABLE_MANAGEMENT
+ bool "Enable management server support"
+ default n
+
+#config OPENVPN_mbedtls_ENABLE_PKCS11
+# bool "Enable pkcs11 support"
+# default n
+
+config OPENVPN_mbedtls_ENABLE_FRAGMENT
+ bool "Enable internal fragmentation support (--fragment)"
+ default y
+
+config OPENVPN_mbedtls_ENABLE_MULTIHOME
+ bool "Enable multi-homed UDP server support (--multihome)"
+ default y
+
+config OPENVPN_mbedtls_ENABLE_PORT_SHARE
+ bool "Enable TCP server port-share support (--port-share)"
+ default y
+
+config OPENVPN_mbedtls_ENABLE_DEF_AUTH
+ bool "Enable deferred authentication"
+ default y
+
+config OPENVPN_mbedtls_ENABLE_PF
+ bool "Enable internal packet filter"
+ default y
+
+config OPENVPN_mbedtls_ENABLE_IPROUTE2
+ bool "Enable support for iproute2"
+ default n
+
+config OPENVPN_mbedtls_ENABLE_SMALL
+ bool "Enable size optimization"
+ default y
+ help
+ enable smaller executable size (disable OCC, usage
+ message, and verb 4 parm list)
+
+endif
--- /dev/null
+if PACKAGE_openvpn-openssl
+
+config OPENVPN_openssl_ENABLE_LZO
+ bool "Enable LZO compression support"
+ default n
+
+config OPENVPN_openssl_ENABLE_LZ4
+ bool "Enable LZ4 compression support"
+ default y
+
+config OPENVPN_openssl_ENABLE_X509_ALT_USERNAME
+ bool "Enable the --x509-username-field feature"
+ default n
+
+#config OPENVPN_openssl_ENABLE_EUREPHIA
+# bool "Enable support for the eurephia plug-in"
+# default n
+
+config OPENVPN_openssl_ENABLE_MANAGEMENT
+ bool "Enable management server support"
+ default n
+
+#config OPENVPN_openssl_ENABLE_PKCS11
+# bool "Enable pkcs11 support"
+# default n
+
+config OPENVPN_openssl_ENABLE_FRAGMENT
+ bool "Enable internal fragmentation support (--fragment)"
+ default y
+
+config OPENVPN_openssl_ENABLE_MULTIHOME
+ bool "Enable multi-homed UDP server support (--multihome)"
+ default y
+
+config OPENVPN_openssl_ENABLE_PORT_SHARE
+ bool "Enable TCP server port-share support (--port-share)"
+ default y
+
+config OPENVPN_openssl_ENABLE_DEF_AUTH
+ bool "Enable deferred authentication"
+ default y
+
+config OPENVPN_openssl_ENABLE_PF
+ bool "Enable internal packet filter"
+ default y
+
+config OPENVPN_openssl_ENABLE_IPROUTE2
+ bool "Enable support for iproute2"
+ default n
+
+config OPENVPN_openssl_ENABLE_SMALL
+ bool "Enable size optimization"
+ default y
+ help
+ enable smaller executable size (disable OCC, usage
+ message, and verb 4 parm list)
+
+endif
--- /dev/null
+#
+# Copyright (C) 2010-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=openvpn
+
+PKG_VERSION:=2.5.0
+PKG_RELEASE:=1
+
+PKG_SOURCE_URL:=\
+ https://build.openvpn.net/downloads/releases/ \
+ https://swupdate.openvpn.net/community/releases/
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_HASH:=029a426e44d656cb4e1189319c95fe6fc9864247724f5599d99df9c4c3478fbd
+
+PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
+
+PKG_INSTALL:=1
+PKG_FIXUP:=autoreconf
+PKG_BUILD_PARALLEL:=1
+PKG_LICENSE:=GPL-2.0
+PKG_CPE_ID:=cpe:/a:openvpn:openvpn
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/openvpn/Default
+ TITLE:=Open source VPN solution using $(2)
+ SECTION:=net
+ CATEGORY:=Network
+ URL:=http://openvpn.net
+ SUBMENU:=VPN
+ MENU:=1
+ DEPENDS:=+kmod-tun +OPENVPN_$(1)_ENABLE_LZO:liblzo +OPENVPN_$(1)_ENABLE_IPROUTE2:ip $(3)
+ VARIANT:=$(1)
+ PROVIDES:=openvpn openvpn-crypto
+endef
+
+Package/openvpn-openssl=$(call Package/openvpn/Default,openssl,OpenSSL,+PACKAGE_openvpn-openssl:libopenssl)
+Package/openvpn-mbedtls=$(call Package/openvpn/Default,mbedtls,mbedTLS,+PACKAGE_openvpn-mbedtls:libmbedtls)
+
+define Package/openvpn/config/Default
+ source "$(SOURCE)/Config-$(1).in"
+endef
+
+Package/openvpn-openssl/config=$(call Package/openvpn/config/Default,openssl)
+Package/openvpn-mbedtls/config=$(call Package/openvpn/config/Default,mbedtls)
+
+ifeq ($(BUILD_VARIANT),mbedtls)
+CONFIG_OPENVPN_MBEDTLS:=y
+endif
+ifeq ($(BUILD_VARIANT),openssl)
+CONFIG_OPENVPN_OPENSSL:=y
+endif
+
+CONFIGURE_VARS += \
+ IPROUTE=/sbin/ip \
+ NETSTAT=/sbin/netstat
+
+TARGET_CFLAGS += -ffunction-sections -fdata-sections
+TARGET_LDFLAGS += -Wl,--gc-sections
+
+define Build/Configure
+ $(call Build/Configure/Default, \
+ $(if $(CONFIG_OPENVPN_$(BUILD_VARIANT)_ENABLE_SMALL),--enable-small) \
+ --disable-selinux \
+ --disable-systemd \
+ --disable-plugins \
+ --disable-debug \
+ --disable-pkcs11 \
+ $(if $(CONFIG_OPENVPN_$(BUILD_VARIANT)_ENABLE_LZO),--enable,--disable)-lzo \
+ $(if $(CONFIG_OPENVPN_$(BUILD_VARIANT)_ENABLE_LZ4),--enable,--disable)-lz4 \
+ $(if $(CONFIG_OPENVPN_$(BUILD_VARIANT)_ENABLE_X509_ALT_USERNAME),--enable,--disable)-x509-alt-username \
+ $(if $(CONFIG_OPENVPN_$(BUILD_VARIANT)_ENABLE_MANAGEMENT),--enable,--disable)-management \
+ $(if $(CONFIG_OPENVPN_$(BUILD_VARIANT)_ENABLE_FRAGMENT),--enable,--disable)-fragment \
+ $(if $(CONFIG_OPENVPN_$(BUILD_VARIANT)_ENABLE_MULTIHOME),--enable,--disable)-multihome \
+ $(if $(CONFIG_OPENVPN_$(BUILD_VARIANT)_ENABLE_IPROUTE2),--enable,--disable)-iproute2 \
+ $(if $(CONFIG_OPENVPN_$(BUILD_VARIANT)_ENABLE_DEF_AUTH),--enable,--disable)-def-auth \
+ $(if $(CONFIG_OPENVPN_$(BUILD_VARIANT)_ENABLE_PF),--enable,--disable)-pf \
+ $(if $(CONFIG_OPENVPN_$(BUILD_VARIANT)_ENABLE_PORT_SHARE),--enable,--disable)-port-share \
+ $(if $(CONFIG_OPENVPN_OPENSSL),--with-crypto-library=openssl) \
+ $(if $(CONFIG_OPENVPN_MBEDTLS),--with-crypto-library=mbedtls) \
+ )
+endef
+
+define Package/openvpn-$(BUILD_VARIANT)/conffiles
+/etc/config/openvpn
+/etc/openvpn.user
+endef
+
+define Package/openvpn-$(BUILD_VARIANT)/install
+ $(INSTALL_DIR) \
+ $(1)/usr/sbin \
+ $(1)/usr/share/openvpn \
+ $(1)/etc/init.d \
+ $(1)/etc/config \
+ $(1)/etc/openvpn \
+ $(1)/lib/functions \
+ $(1)/lib/upgrade/keep.d \
+ $(1)/usr/libexec \
+ $(1)/etc/hotplug.d/openvpn
+
+ $(INSTALL_BIN) \
+ $(PKG_INSTALL_DIR)/usr/sbin/openvpn \
+ $(1)/usr/sbin/
+
+ $(INSTALL_BIN) \
+ files/openvpn.init \
+ $(1)/etc/init.d/openvpn
+
+ $(INSTALL_BIN) \
+ files/usr/libexec/openvpn-hotplug \
+ $(1)/usr/libexec/openvpn-hotplug
+
+ $(INSTALL_DATA) \
+ files/lib/functions/openvpn.sh \
+ $(1)/lib/functions/openvpn.sh
+
+ $(INSTALL_DATA) \
+ files/etc/hotplug.d/openvpn/01-user \
+ $(1)/etc/hotplug.d/openvpn/01-user
+
+ $(INSTALL_DATA) \
+ files/etc/openvpn.user \
+ $(1)/etc/openvpn.user
+
+ $(INSTALL_DATA) \
+ files/openvpn.options \
+ $(1)/usr/share/openvpn/openvpn.options
+
+ $(INSTALL_CONF) files/openvpn.config \
+ $(1)/etc/config/openvpn
+
+ $(INSTALL_DATA) \
+ files/openvpn.upgrade \
+ $(1)/lib/upgrade/keep.d/openvpn
+endef
+
+$(eval $(call BuildPackage,openvpn-openssl))
+$(eval $(call BuildPackage,openvpn-mbedtls))
--- /dev/null
+#!/bin/sh
+
+. /lib/functions/openvpn.sh
+
+[ -e "/etc/openvpn.user" ] && {
+ env -i ACTION="$ACTION" INSTANCE="$INSTANCE" \
+ /bin/sh \
+ /etc/openvpn.user \
+ $*
+}
+
+# Wrap user defined scripts on up/down events
+case "$ACTION" in
+ up|down)
+ if get_openvpn_option "$config" command "$ACTION"; then
+ shift
+ exec /bin/sh -c "$command $*"
+ fi
+ ;;
+esac
+
+exit 0
--- /dev/null
+#!/bin/sh
+#
+# This file is interpreted as shell script.
+# Put your custom openvpn action here, they will
+# be executed with each opevnp event.
+#
+# $ACTION
+# <down> down action is generated after the TUN/TAP device is closed
+# <up> up action is generated after the TUN/TAP device is opened
+# $INSTANCE Name of the openvpn instance which went up or down
+
--- /dev/null
+#!/bin/sh
+
+get_openvpn_option() {
+ local config="$1"
+ local variable="$2"
+ local option="$3"
+
+ local value="$(sed -rne 's/^[ \t]*'"$option"'[ \t]+(([^ \t\\]|\\.)+)[ \t]*$/\1/p' "$config" | tail -n1 | sed -re 's/\\(.)/\1/g')"
+ [ -n "$value" ] || value="$(sed -rne 's/^[ \t]*'"$option"'[ \t]+'"'([^']+)'"'[ \t]*$/\1/p' "$config" | tail -n1)"
+ [ -n "$value" ] || value="$(sed -rne 's/^[ \t]*'"$option"'[ \t]+"(([^"\\]|\\.)+)"[ \t]*$/\1/p' "$config" | tail -n1 | sed -re 's/\\(.)/\1/g')"
+ [ -n "$value" ] || return 1
+
+ export -n "$variable=$value"
+ return 0
+}
+
--- /dev/null
+package openvpn
+
+#################################################
+# Sample to include a custom config file. #
+#################################################
+
+config openvpn custom_config
+
+ # Set to 1 to enable this instance:
+ option enabled 0
+
+ # Include OpenVPN configuration
+ option config /etc/openvpn/my-vpn.conf
+
+
+#################################################
+# Sample OpenVPN 2.0 uci config for #
+# multi-client server. #
+#################################################
+
+config openvpn sample_server
+
+ # Set to 1 to enable this instance:
+ option enabled 0
+
+ # Which local IP address should OpenVPN
+ # listen on? (optional)
+# option local 0.0.0.0
+
+ # Which TCP/UDP port should OpenVPN listen on?
+ # If you want to run multiple OpenVPN instances
+ # on the same machine, use a different port
+ # number for each one. You will need to
+ # open up this port on your firewall.
+ option port 1194
+
+ # TCP or UDP server?
+# option proto tcp
+ option proto udp
+
+ # "dev tun" will create a routed IP tunnel,
+ # "dev tap" will create an ethernet tunnel.
+ # Use "dev tap0" if you are ethernet bridging
+ # and have precreated a tap0 virtual interface
+ # and bridged it with your ethernet interface.
+ # If you want to control access policies
+ # over the VPN, you must create firewall
+ # rules for the the TUN/TAP interface.
+ # On non-Windows systems, you can give
+ # an explicit unit number, such as tun0.
+ # On Windows, use "dev-node" for this.
+ # On most systems, the VPN will not function
+ # unless you partially or fully disable
+ # the firewall for the TUN/TAP interface.
+# option dev tap
+ option dev tun
+
+ # SSL/TLS root certificate (ca), certificate
+ # (cert), and private key (key). Each client
+ # and the server must have their own cert and
+ # key file. The server and all clients will
+ # use the same ca file.
+ #
+ # See the "easy-rsa" directory for a series
+ # of scripts for generating RSA certificates
+ # and private keys. Remember to use
+ # a unique Common Name for the server
+ # and each of the client certificates.
+ #
+ # Any X509 key management system can be used.
+ # OpenVPN can also use a PKCS #12 formatted key file
+ # (see "pkcs12" directive in man page).
+ option ca /etc/openvpn/ca.crt
+ option cert /etc/openvpn/server.crt
+ # This file should be kept secret:
+ option key /etc/openvpn/server.key
+
+ # Diffie hellman parameters.
+ # Generate your own with:
+ # openssl dhparam -out dh2048.pem 2048
+ # Substitute 2048 for 1024 if you are using
+ # 1024 bit keys.
+ option dh /etc/openvpn/dh2048.pem
+
+ # Configure server mode and supply a VPN subnet
+ # for OpenVPN to draw client addresses from.
+ # The server will take 10.8.0.1 for itself,
+ # the rest will be made available to clients.
+ # Each client will be able to reach the server
+ # on 10.8.0.1. Comment this line out if you are
+ # ethernet bridging. See the man page for more info.
+ option server "10.8.0.0 255.255.255.0"
+
+ # Maintain a record of client <-> virtual IP address
+ # associations in this file. If OpenVPN goes down or
+ # is restarted, reconnecting clients can be assigned
+ # the same virtual IP address from the pool that was
+ # previously assigned.
+ option ifconfig_pool_persist /tmp/ipp.txt
+
+ # Configure server mode for ethernet bridging.
+ # You must first use your OS's bridging capability
+ # to bridge the TAP interface with the ethernet
+ # NIC interface. Then you must manually set the
+ # IP/netmask on the bridge interface, here we
+ # assume 10.8.0.4/255.255.255.0. Finally we
+ # must set aside an IP range in this subnet
+ # (start=10.8.0.50 end=10.8.0.100) to allocate
+ # to connecting clients. Leave this line commented
+ # out unless you are ethernet bridging.
+# option server_bridge "10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100"
+
+ # Push routes to the client to allow it
+ # to reach other private subnets behind
+ # the server. Remember that these
+ # private subnets will also need
+ # to know to route the OpenVPN client
+ # address pool (10.8.0.0/255.255.255.0)
+ # back to the OpenVPN server.
+# list push "route 192.168.10.0 255.255.255.0"
+# list push "route 192.168.20.0 255.255.255.0"
+
+ # To assign specific IP addresses to specific
+ # clients or if a connecting client has a private
+ # subnet behind it that should also have VPN access,
+ # use the subdirectory "ccd" for client-specific
+ # configuration files (see man page for more info).
+
+ # EXAMPLE: Suppose the client
+ # having the certificate common name "Thelonious"
+ # also has a small subnet behind his connecting
+ # machine, such as 192.168.40.128/255.255.255.248.
+ # First, uncomment out these lines:
+# option client_config_dir /etc/openvpn/ccd
+# list route "192.168.40.128 255.255.255.248"
+ # Then create a file ccd/Thelonious with this line:
+ # iroute 192.168.40.128 255.255.255.248
+ # This will allow Thelonious' private subnet to
+ # access the VPN. This example will only work
+ # if you are routing, not bridging, i.e. you are
+ # using "dev tun" and "server" directives.
+
+ # EXAMPLE: Suppose you want to give
+ # Thelonious a fixed VPN IP address of 10.9.0.1.
+ # First uncomment out these lines:
+# option client_config_dir /etc/openvpn/ccd
+# list route "10.9.0.0 255.255.255.252"
+# list route "192.168.100.0 255.255.255.0"
+ # Then add this line to ccd/Thelonious:
+ # ifconfig-push "10.9.0.1 10.9.0.2"
+
+ # Suppose that you want to enable different
+ # firewall access policies for different groups
+ # of clients. There are two methods:
+ # (1) Run multiple OpenVPN daemons, one for each
+ # group, and firewall the TUN/TAP interface
+ # for each group/daemon appropriately.
+ # (2) (Advanced) Create a script to dynamically
+ # modify the firewall in response to access
+ # from different clients. See man
+ # page for more info on learn-address script.
+# option learn_address /etc/openvpn/script
+
+ # If enabled, this directive will configure
+ # all clients to redirect their default
+ # network gateway through the VPN, causing
+ # all IP traffic such as web browsing and
+ # and DNS lookups to go through the VPN
+ # (The OpenVPN server machine may need to NAT
+ # the TUN/TAP interface to the internet in
+ # order for this to work properly).
+ # CAVEAT: May break client's network config if
+ # client's local DHCP server packets get routed
+ # through the tunnel. Solution: make sure
+ # client's local DHCP server is reachable via
+ # a more specific route than the default route
+ # of 0.0.0.0/0.0.0.0.
+# list push "redirect-gateway"
+
+ # Certain Windows-specific network settings
+ # can be pushed to clients, such as DNS
+ # or WINS server addresses. CAVEAT:
+ # http://openvpn.net/faq.html#dhcpcaveats
+# list push "dhcp-option DNS 10.8.0.1"
+# list push "dhcp-option WINS 10.8.0.1"
+
+ # Uncomment this directive to allow different
+ # clients to be able to "see" each other.
+ # By default, clients will only see the server.
+ # To force clients to only see the server, you
+ # will also need to appropriately firewall the
+ # server's TUN/TAP interface.
+# option client_to_client 1
+
+ # Uncomment this directive if multiple clients
+ # might connect with the same certificate/key
+ # files or common names. This is recommended
+ # only for testing purposes. For production use,
+ # each client should have its own certificate/key
+ # pair.
+ #
+ # IF YOU HAVE NOT GENERATED INDIVIDUAL
+ # CERTIFICATE/KEY PAIRS FOR EACH CLIENT,
+ # EACH HAVING ITS OWN UNIQUE "COMMON NAME",
+ # UNCOMMENT THIS LINE OUT.
+# option duplicate_cn 1
+
+ # The keepalive directive causes ping-like
+ # messages to be sent back and forth over
+ # the link so that each side knows when
+ # the other side has gone down.
+ # Ping every 10 seconds, assume that remote
+ # peer is down if no ping received during
+ # a 120 second time period.
+ option keepalive "10 120"
+
+ # For extra security beyond that provided
+ # by SSL/TLS, create an "HMAC firewall"
+ # to help block DoS attacks and UDP port flooding.
+ #
+ # Generate with:
+ # openvpn --genkey --secret ta.key
+ #
+ # The server and each client must have
+ # a copy of this key.
+ # The second parameter should be '0'
+ # on the server and '1' on the clients.
+ # This file is secret:
+# option tls_auth "/etc/openvpn/ta.key 0"
+
+ # For additional privacy, a shared secret key
+ # can be used for both authentication (as in tls_auth)
+ # and encryption of the TLS control channel.
+ #
+ # Generate a shared secret with:
+ # openvpn --genkey --secret ta.key
+ #
+ # The server and each client must have
+ # a copy of this key.
+ #
+ # tls_auth and tls_crypt should NOT
+ # be combined, as tls_crypt implies tls_auth.
+ # Use EITHER tls_crypt, tls_auth, or neither option.
+# option tls_crypt "/etc/openvpn/ta.key"
+
+ # Set the minimum required TLS protocol version
+ # for all connections.
+ #
+ # Require at least TLS 1.1
+# option tls_version_min "1.1"
+ # Require at least TLS 1.2
+# option tls_version_min "1.2"
+ # Require TLS 1.2, or the highest version supported
+ # on the system
+# option tls_version_min "1.2 'or-highest'"
+
+ # List the preferred ciphers to use for the data channel.
+ # Run openvpn --show-ciphers to see all supported ciphers.
+# list data_ciphers 'AES-256-GCM'
+# list data_ciphers 'AES-128-GCM'
+# list data_ciphers 'CHACHA20-POLY1305'
+
+ # Set a fallback cipher in order to be compatible with
+ # peers that do not support cipher negotiation.
+ #
+ # Use AES-256-CBC as fallback
+# option data_ciphers_fallback 'AES-128-CBC'
+ # Use AES-128-CBC as fallback
+# option data_ciphers_fallback 'AES-256-CBC'
+ # Use Triple-DES as fallback
+# option data_ciphers_fallback 'DES-EDE3-CBC'
+ # Use BF-CBC as fallback
+# option data_ciphers_fallback 'BF-CBC'
+
+ # OpenVPN versions 2.4 and later will attempt to
+ # automatically negotiate the most secure cipher
+ # between the client and server, regardless of a
+ # configured "option cipher" (see below).
+ # Automatic negotiation is recommended.
+ #
+ # Uncomment this option to disable this behavior,
+ # and force all OpenVPN peers to use the configured
+ # cipher option instead (not recommended).
+# option ncp_disable
+
+ # Enable compression on the VPN link.
+ # If you enable it here, you must also
+ # enable it in the client config file.
+ #
+ # Compression is not recommended, as compression and
+ # encryption in combination can weaken the security
+ # of the connection.
+ #
+ # LZ4 requires OpenVPN 2.4+ client and server
+# option compress lz4
+
+ # Control how OpenVPN handles peers using compression
+ #
+ # Do not allow any connections using compression
+# option allow_compression 'no'
+ # Allow incoming compressed packets, but do not send compressed packets to other peers
+ # This can be useful when migrating old configurations with compression activated
+# option allow_compression 'asym'
+ # Both incoming and outgoing packets may be compressed
+# option allow_compression 'yes'
+
+ # The maximum number of concurrently connected
+ # clients we want to allow.
+# option max_clients 100
+
+ # The persist options will try to avoid
+ # accessing certain resources on restart
+ # that may no longer be accessible because
+ # of the privilege downgrade.
+ option persist_key 1
+ option persist_tun 1
+ option user nobody
+
+ # Output a short status file showing
+ # current connections, truncated
+ # and rewritten every minute.
+ option status /tmp/openvpn-status.log
+
+ # By default, log messages will go to the syslog (or
+ # on Windows, if running as a service, they will go to
+ # the "\Program Files\OpenVPN\log" directory).
+ # Use log or log-append to override this default.
+ # "log" will truncate the log file on OpenVPN startup,
+ # while "log-append" will append to it. Use one
+ # or the other (but not both).
+# option log /tmp/openvpn.log
+# option log_append /tmp/openvpn.log
+
+ # Set the appropriate level of log
+ # file verbosity.
+ #
+ # 0 is silent, except for fatal errors
+ # 4 is reasonable for general usage
+ # 5 and 6 can help to debug connection problems
+ # 9 is extremely verbose
+ option verb 3
+
+ # Silence repeating messages. At most 20
+ # sequential messages of the same message
+ # category will be output to the log.
+# option mute 20
+
+
+##############################################
+# Sample client-side OpenVPN 2.0 uci config #
+# for connecting to multi-client server. #
+##############################################
+
+config openvpn sample_client
+
+ # Set to 1 to enable this instance:
+ option enabled 0
+
+ # Specify that we are a client and that we
+ # will be pulling certain config file directives
+ # from the server.
+ option client 1
+
+ # Use the same setting as you are using on
+ # the server.
+ # On most systems, the VPN will not function
+ # unless you partially or fully disable
+ # the firewall for the TUN/TAP interface.
+# option dev tap
+ option dev tun
+
+ # Are we connecting to a TCP or
+ # UDP server? Use the same setting as
+ # on the server.
+# option proto tcp
+ option proto udp
+
+ # The hostname/IP and port of the server.
+ # You can have multiple remote entries
+ # to load balance between the servers.
+ list remote "my_server_1 1194"
+# list remote "my_server_2 1194"
+
+ # Choose a random host from the remote
+ # list for load_balancing. Otherwise
+ # try hosts in the order specified.
+# option remote_random 1
+
+ # Keep trying indefinitely to resolve the
+ # host name of the OpenVPN server. Very useful
+ # on machines which are not permanently connected
+ # to the internet such as laptops.
+ option resolv_retry infinite
+
+ # Most clients don't need to bind to
+ # a specific local port number.
+ option nobind 1
+
+ # Try to preserve some state across restarts.
+ option persist_key 1
+ option persist_tun 1
+ option user nobody
+
+ # If you are connecting through an
+ # HTTP proxy to reach the actual OpenVPN
+ # server, put the proxy server/IP and
+ # port number here. See the man page
+ # if your proxy server requires
+ # authentication.
+ # retry on connection failures:
+# option http_proxy_retry 1
+ # specify http proxy address and port:
+# option http_proxy "192.168.1.100 8080"
+
+ # Wireless networks often produce a lot
+ # of duplicate packets. Set this flag
+ # to silence duplicate packet warnings.
+# option mute_replay_warnings 1
+
+ # SSL/TLS parms.
+ # See the server config file for more
+ # description. It's best to use
+ # a separate .crt/.key file pair
+ # for each client. A single ca
+ # file can be used for all clients.
+ option ca /etc/openvpn/ca.crt
+ option cert /etc/openvpn/client.crt
+ option key /etc/openvpn/client.key
+
+ # Verify server certificate by checking
+ # that the certicate has the key usage
+ # field set to "server". This is an
+ # important precaution to protect against
+ # a potential attack discussed here:
+ # http://openvpn.net/howto.html#mitm
+ #
+ # To use this feature, you will need to generate
+ # your server certificates with the nsCertType
+ # field set to "server". The build_key_server
+ # script in the easy_rsa folder will do this.
+# option remote_cert_tls server
+
+ # If a tls_auth key is used on the server
+ # then every client must also have the key.
+# option tls_auth "/etc/openvpn/ta.key 1"
+
+ # If a tls_crypt key is used on the server
+ # every client must also have the key.
+# option tls_crypt "/etc/openvpn/ta.key"
+
+ # Set the minimum required TLS protocol version
+ # for all connections.
+ #
+ # Require at least TLS 1.1
+# option tls_version_min "1.1"
+ # Require at least TLS 1.2
+# option tls_version_min "1.2"
+ # Require TLS 1.2, or the highest version supported
+ # on the system
+# option tls_version_min "1.2 'or-highest'"
+
+ # List the preferred ciphers for the data channel.
+# list data_ciphers 'AES-256-GCM'
+# list data_ciphers 'AES-128-GCM'
+# list data_ciphers 'CHACHA20-POLY1305'
+
+ # Set a fallback cipher if you connect to a peer that does
+ # not support cipher negotiation.
+ # Use AES-256-CBC as fallback
+# option data_ciphers_fallback 'AES-128-CBC'
+ # Use AES-128-CBC as fallback
+# option data_ciphers_fallback 'AES-256-CBC'
+ # Use Triple-DES as fallback
+# option data_ciphers_fallback 'DES-EDE3-CBC'
+ # Use BF-CBC as fallback
+# option data_ciphers_fallback 'BF-CBC'
+
+ # Enable compression on the VPN link.
+ # Don't enable this unless it is also
+ # enabled in the server config file.
+ #
+ # Compression is not recommended, as compression and
+ # encryption in combination can weaken the security
+ # of the connection.
+ #
+ # LZ4 requires OpenVPN 2.4+ on server and client
+# option compress lz4
+
+ # Set log file verbosity.
+ option verb 3
+
+ # Silence repeating messages
+# option mute 20
--- /dev/null
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2008-2013 OpenWrt.org
+# Copyright (C) 2008 Jo-Philipp Wich
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+
+START=90
+STOP=10
+
+USE_PROCD=1
+PROG=/usr/sbin/openvpn
+
+LIST_SEP="
+"
+
+UCI_STARTED=
+UCI_DISABLED=
+
+append_param() {
+ local s="$1"
+ local v="$2"
+ case "$v" in
+ *_*_*_*) v=${v%%_*}-${v#*_}; v=${v%%_*}-${v#*_}; v=${v%%_*}-${v#*_} ;;
+ *_*_*) v=${v%%_*}-${v#*_}; v=${v%%_*}-${v#*_} ;;
+ *_*) v=${v%%_*}-${v#*_} ;;
+ esac
+ echo -n "$v" >> "/var/etc/openvpn-$s.conf"
+ return 0
+}
+
+append_bools() {
+ local p; local v; local s="$1"; shift
+ for p in $*; do
+ config_get_bool v "$s" "$p"
+ [ "$v" = 1 ] && append_param "$s" "$p" && echo >> "/var/etc/openvpn-$s.conf"
+ done
+}
+
+append_params() {
+ local p; local v; local s="$1"; shift
+ for p in $*; do
+ config_get v "$s" "$p"
+ IFS="$LIST_SEP"
+ for v in $v; do
+ [ -n "$v" ] && [ "$p" != "push" ] && append_param "$s" "$p" && echo " $v" >> "/var/etc/openvpn-$s.conf"
+ [ -n "$v" ] && [ "$p" = "push" ] && append_param "$s" "$p" && echo " \"$v\"" >> "/var/etc/openvpn-$s.conf"
+ done
+ unset IFS
+ done
+}
+
+append_list() {
+ local p; local v; local s="$1"; shift
+
+ list_cb_append() {
+ v="${v}:$1"
+ }
+
+ for p in $*; do
+ unset v
+ config_list_foreach "$s" "$p" list_cb_append
+ [ -n "$v" ] && append_param "$s" "$p" && echo " ${v:1}" >> "/var/etc/openvpn-$s.conf"
+ done
+}
+
+section_enabled() {
+ config_get_bool enable "$1" 'enable' 0
+ config_get_bool enabled "$1" 'enabled' 0
+ [ $enable -gt 0 ] || [ $enabled -gt 0 ]
+}
+
+openvpn_get_dev() {
+ local dev dev_type
+ local name="$1"
+ local conf="$2"
+
+ # Do override only for configurations with config_file
+ config_get config_file "$name" config
+ [ -n "$config_file" ] || return
+
+ # Check there is someething to override
+ config_get dev "$name" dev
+ config_get dev_type "$name" dev_type
+ [ -n "$dev" ] || return
+
+ # If there is a no dev_type, try to guess it
+ if [ -z "$dev_type" ]; then
+ . /lib/functions/openvpn.sh
+
+ local odev odev_type
+ get_openvpn_option "$conf" odev dev
+ get_openvpn_option "$conf" odev_type dev-type
+ [ -n "$odev_type" ] || odev_type="$odev"
+
+ case "$odev_type" in
+ tun*) dev_type="tun" ;;
+ tap*) dev_type="tap" ;;
+ *) return;;
+ esac
+ fi
+
+ # Return overrides
+ echo "--dev-type $dev_type --dev $dev"
+}
+
+openvpn_add_instance() {
+ local name="$1"
+ local dir="$2"
+ local conf="$3"
+ local security="$4"
+
+ procd_open_instance "$name"
+ procd_set_param command "$PROG" \
+ --syslog "openvpn($name)" \
+ --status "/var/run/openvpn.$name.status" \
+ --cd "$dir" \
+ --config "$conf" \
+ --up "/usr/libexec/openvpn-hotplug up $name" \
+ --down "/usr/libexec/openvpn-hotplug down $name" \
+ --script-security "${security:-2}" \
+ $(openvpn_get_dev "$name" "$conf")
+ procd_set_param file "$dir/$conf"
+ procd_set_param term_timeout 15
+ procd_set_param respawn
+ procd_append_param respawn 3600
+ procd_append_param respawn 5
+ procd_append_param respawn -1
+ procd_close_instance
+}
+
+start_instance() {
+ local s="$1"
+
+ config_get config "$s" config
+ config="${config:+$(readlink -f "$config")}"
+
+ section_enabled "$s" || {
+ append UCI_DISABLED "$config" "$LIST_SEP"
+ return 1
+ }
+
+ local script_security
+ config_get script_security "$s" script_security
+
+ [ ! -d "/var/run" ] && mkdir -p "/var/run"
+
+ if [ ! -z "$config" ]; then
+ append UCI_STARTED "$config" "$LIST_SEP"
+ openvpn_add_instance "$s" "${config%/*}" "$config" "$script_security"
+ return
+ fi
+
+ [ ! -d "/var/etc" ] && mkdir -p "/var/etc"
+ [ -f "/var/etc/openvpn-$s.conf" ] && rm "/var/etc/openvpn-$s.conf"
+
+ append_bools "$s" $OPENVPN_BOOLS
+ append_params "$s" $OPENVPN_PARAMS
+ append_list "$s" $OPENVPN_LIST
+
+ openvpn_add_instance "$s" "/var/etc" "openvpn-$s.conf" "$script_security"
+}
+
+start_service() {
+ local instance="$1"
+ local instance_found=0
+
+ config_cb() {
+ local type="$1"
+ local name="$2"
+ if [ "$type" = "openvpn" ]; then
+ if [ -n "$instance" -a "$instance" = "$name" ]; then
+ instance_found=1
+ fi
+ fi
+ }
+
+ . /usr/share/openvpn/openvpn.options
+ config_load 'openvpn'
+
+ if [ -n "$instance" ]; then
+ [ "$instance_found" -gt 0 ] || return
+ start_instance "$instance"
+ else
+ config_foreach start_instance 'openvpn'
+
+ local path name
+ for path in /etc/openvpn/*.conf; do
+ if [ -f "$path" ]; then
+ name="${path##*/}"; name="${name%.conf}"
+
+ # don't start configs again that are already started by uci
+ if echo "$UCI_STARTED" | grep -qxF "$path"; then
+ continue
+
+ # don't start configs which are set to disabled in uci
+ elif echo "$UCI_DISABLED" | grep -qxF "$path"; then
+ logger -t openvpn "$name.conf is disabled in /etc/config/openvpn"
+ continue
+ fi
+
+ openvpn_add_instance "$name" "${path%/*}" "$path"
+ fi
+ done
+ fi
+}
+
+service_triggers() {
+ procd_add_reload_trigger openvpn
+}
--- /dev/null
+OPENVPN_PARAMS='
+allow_compression
+askpass
+auth
+auth_retry
+auth_user_pass
+auth_user_pass_verify
+bcast_buffers
+bind_dev
+ca
+capath
+cd
+cert
+chroot
+cipher
+client_config_dir
+client_connect
+client_disconnect
+comp_lzo
+compress
+connect_freq
+connect_retry
+connect_retry_max
+connect_timeout
+crl_verify
+data_ciphers_fallback
+dev
+dev_node
+dev_type
+dh
+ecdh_curve
+echo
+engine
+explicit_exit_notify
+extra_certs
+fragment
+group
+hand_window
+hash_size
+http_proxy
+http_proxy_option
+http_proxy_timeout
+ifconfig
+ifconfig_ipv6
+ifconfig_ipv6_pool
+ifconfig_ipv6_push
+ifconfig_pool
+ifconfig_pool_persist
+ifconfig_push
+inactive
+ipchange
+iroute
+iroute_ipv6
+keepalive
+key
+key_direction
+keysize
+learn_address
+link_mtu
+lladdr
+local
+log
+log_append
+lport
+management
+management_log_cache
+max_clients
+max_routes_per_client
+mode
+mssfix
+mtu_disc
+mute
+nice
+ping
+ping_exit
+ping_restart
+pkcs12
+plugin
+port
+port_share
+prng
+proto
+pull_filter
+push
+rcvbuf
+redirect_gateway
+remap_usr1
+remote
+remote_cert_eku
+remote_cert_ku
+remote_cert_tls
+reneg_bytes
+reneg_pkts
+reneg_sec
+replay_persist
+replay_window
+resolv_retry
+route
+route_delay
+route_gateway
+route_ipv6
+route_metric
+route_pre_down
+route_up
+rport
+secret
+server
+server_bridge
+server_ipv6
+setenv
+shaper
+sndbuf
+socks_proxy
+status
+status_version
+syslog
+tcp_queue_limit
+tls_auth
+tls_crypt
+tls_crypt_v2
+tls_crypt_v2_verify
+tls_export_cert
+tls_timeout
+tls_verify
+tls_version_min
+tmp_dir
+topology
+tran_window
+tun_mtu
+tun_mtu_extra
+txqueuelen
+user
+verb
+verify_client_cert
+verify_x509_name
+vlan_accept
+vlan_pvid
+x509_username_field
+'
+
+OPENVPN_BOOLS='
+allow_recursive_routing
+auth_nocache
+auth_user_pass_optional
+bind
+block_ipv6
+ccd_exclusive
+client
+client_to_client
+comp_noadapt
+disable
+disable_occ
+down_pre
+duplicate_cn
+fast_io
+float
+http_proxy_retry
+ifconfig_noexec
+ifconfig_nowarn
+management_forget_disconnect
+management_hold
+management_query_passwords
+management_signal
+mktun
+mlock
+mtu_test
+multihome
+mute_replay_warnings
+ncp_disable
+nobind
+opt_verify
+passtos
+persist_key
+persist_local_ip
+persist_remote_ip
+persist_tun
+ping_timer_rem
+pull
+push_reset
+remote_random
+rmtun
+route_noexec
+route_nopull
+single_session
+socks_proxy_retry
+suppress_timestamps
+tcp_nodelay
+test_crypto
+tls_client
+tls_exit
+tls_server
+up_delay
+up_restart
+username_as_common_name
+vlan_tagging
+'
+
+OPENVPN_LIST='
+data_ciphers
+ncp_ciphers
+tls_cipher
+tls_ciphersuites
+tls_groups
+'
--- /dev/null
+/etc/openvpn/
--- /dev/null
+#!/bin/sh
+
+ACTION=$1
+shift
+INSTANCE=$1
+shift
+
+export ACTION=$ACTION
+export INSTANCE=$INSTANCE
+exec /sbin/hotplug-call openvpn "$@"
--- /dev/null
+--- a/src/openvpn/options.c
++++ b/src/openvpn/options.c
+@@ -105,7 +105,6 @@ const char title_string[] =
+ #endif
+ #endif
+ " [AEAD]"
+- " built on " __DATE__
+ ;
+
+ #ifndef ENABLE_SMALL
--- /dev/null
+--- a/src/openvpn/ssl_mbedtls.c
++++ b/src/openvpn/ssl_mbedtls.c
+@@ -1520,7 +1520,7 @@ const char *
+ get_ssl_library_version(void)
+ {
+ static char mbedtls_version[30];
+- unsigned int pv = mbedtls_version_get_number();
++ unsigned int pv = MBEDTLS_VERSION_NUMBER;
+ sprintf( mbedtls_version, "mbed TLS %d.%d.%d",
+ (pv>>24)&0xff, (pv>>16)&0xff, (pv>>8)&0xff );
+ return mbedtls_version;
--- /dev/null
+--- a/configure.ac
++++ b/configure.ac
+@@ -1077,68 +1077,15 @@ dnl
+ AC_ARG_VAR([LZ4_CFLAGS], [C compiler flags for lz4])
+ AC_ARG_VAR([LZ4_LIBS], [linker flags for lz4])
+ if test "$enable_lz4" = "yes" && test "$enable_comp_stub" = "no"; then
+- if test -z "${LZ4_CFLAGS}" -a -z "${LZ4_LIBS}"; then
+- # if the user did not explicitly specify flags, try to autodetect
+- PKG_CHECK_MODULES([LZ4],
+- [liblz4 >= 1.7.1 liblz4 < 100],
+- [have_lz4="yes"],
+- [LZ4_LIBS="-llz4"] # If this fails, we will do another test next.
+- # We also add set LZ4_LIBS otherwise the
+- # linker will not know about the lz4 library
+- )
+- fi
+
+ saved_CFLAGS="${CFLAGS}"
+ saved_LIBS="${LIBS}"
+ CFLAGS="${CFLAGS} ${LZ4_CFLAGS}"
+ LIBS="${LIBS} ${LZ4_LIBS}"
+
+- # If pkgconfig check failed or LZ4_CFLAGS/LZ4_LIBS env vars
+- # are used, check the version directly in the LZ4 include file
+- if test "${have_lz4}" != "yes"; then
+- AC_CHECK_HEADERS([lz4.h],
+- [have_lz4h="yes"],
+- [])
+-
+- if test "${have_lz4h}" = "yes" ; then
+- AC_MSG_CHECKING([additionally if system LZ4 version >= 1.7.1])
+- AC_COMPILE_IFELSE(
+- [AC_LANG_PROGRAM([[
+-#include <lz4.h>
+- ]],
+- [[
+-/* Version encoding: MMNNPP (Major miNor Patch) - see lz4.h for details */
+-#if LZ4_VERSION_NUMBER < 10701L
+-#error LZ4 is too old
+-#endif
+- ]]
+- )],
+- [
+- AC_MSG_RESULT([ok])
+- have_lz4="yes"
+- ],
+- [AC_MSG_RESULT([system LZ4 library is too old])]
+- )
+- fi
+- fi
+-
+- # Double check we have a few needed functions
+- if test "${have_lz4}" = "yes" ; then
+- AC_CHECK_LIB([lz4],
+- [LZ4_compress_default],
+- [],
+- [have_lz4="no"])
+- AC_CHECK_LIB([lz4],
+- [LZ4_decompress_safe],
+- [],
+- [have_lz4="no"])
+- fi
+-
+- if test "${have_lz4}" != "yes" ; then
+- AC_MSG_RESULT([ usable LZ4 library or header not found, using version in src/compat/compat-lz4.*])
+- AC_DEFINE([NEED_COMPAT_LZ4], [1], [use copy of LZ4 source in compat/])
+- LZ4_LIBS=""
+- fi
++ AC_MSG_RESULT([ usable LZ4 library or header not found, using version in src/compat/compat-lz4.*])
++ AC_DEFINE([NEED_COMPAT_LZ4], [1], [use copy of LZ4 source in compat/])
++ LZ4_LIBS=""
+ OPTIONAL_LZ4_CFLAGS="${LZ4_CFLAGS}"
+ OPTIONAL_LZ4_LIBS="${LZ4_LIBS}"
+ AC_DEFINE(ENABLE_LZ4, [1], [Enable LZ4 compression library])
--- /dev/null
+--- a/src/openvpn/syshead.h
++++ b/src/openvpn/syshead.h
+@@ -572,7 +572,7 @@ socket_defined(const socket_descriptor_t
+ /*
+ * Should we include NTLM proxy functionality
+ */
+-#define NTLM 1
++//#define NTLM 1
+
+ /*
+ * Should we include proxy digest auth functionality
+--- a/src/openvpn/crypto_mbedtls.c
++++ b/src/openvpn/crypto_mbedtls.c
+@@ -383,6 +383,7 @@ int
+ key_des_num_cblocks(const mbedtls_cipher_info_t *kt)
+ {
+ int ret = 0;
++#ifdef MBEDTLS_DES_C
+ if (kt->type == MBEDTLS_CIPHER_DES_CBC)
+ {
+ ret = 1;
+@@ -395,6 +396,7 @@ key_des_num_cblocks(const mbedtls_cipher
+ {
+ ret = 3;
+ }
++#endif
+
+ dmsg(D_CRYPTO_DEBUG, "CRYPTO INFO: n_DES_cblocks=%d", ret);
+ return ret;
+@@ -403,6 +405,7 @@ key_des_num_cblocks(const mbedtls_cipher
+ bool
+ key_des_check(uint8_t *key, int key_len, int ndc)
+ {
++#ifdef MBEDTLS_DES_C
+ int i;
+ struct buffer b;
+
+@@ -431,11 +434,15 @@ key_des_check(uint8_t *key, int key_len,
+
+ err:
+ return false;
++#else
++ return true;
++#endif
+ }
+
+ void
+ key_des_fixup(uint8_t *key, int key_len, int ndc)
+ {
++#ifdef MBEDTLS_DES_C
+ int i;
+ struct buffer b;
+
+@@ -450,6 +457,7 @@ key_des_fixup(uint8_t *key, int key_len,
+ }
+ mbedtls_des_key_set_parity(key);
+ }
++#endif
+ }
+
+ /*
+@@ -770,10 +778,12 @@ cipher_des_encrypt_ecb(const unsigned ch
+ unsigned char *src,
+ unsigned char *dst)
+ {
++#ifdef MBEDTLS_DES_C
+ mbedtls_des_context ctx;
+
+ ASSERT(mbed_ok(mbedtls_des_setkey_enc(&ctx, key)));
+ ASSERT(mbed_ok(mbedtls_des_crypt_ecb(&ctx, src, dst)));
++#endif
+ }
+
+
PKG_NAME:=p910nd
PKG_VERSION:=0.97
-PKG_RELEASE:=8
+PKG_RELEASE:=9
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@SF/p910nd
start_p910nd() {
local section="$1" runas_root
- config_get_bool "enabled" "$section" "enabled" '1'
+ config_get_bool "enabled" "$section" "enabled" '0'
if [ "$enabled" -gt 0 ]; then
args="-d "
config_get port "$section" port
procd_close_instance
fi
}
+
+service_triggers()
+{
+ procd_open_trigger
+ procd_add_config_trigger "config.change" "p910nd" /etc/init.d/p910nd reload
+ procd_close_trigger
+}
include $(TOPDIR)/rules.mk
PKG_NAME:=pdns-recursor
-PKG_VERSION:=4.4.0
+PKG_VERSION:=4.4.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://downloads.powerdns.com/releases/
-PKG_HASH:=06bc932e00f13c95ef077a2eb61f64425534042cc50f86408b53c7615c4fe58b
+PKG_HASH:=f97fa34635d42c68acee5d4da9db0e5ff619fd49e62acace7b4bdb7ee3675698
PKG_MAINTAINER:=James Taylor <james@jtaylor.id.au>
PKG_LICENCE:=GPL-2.0-only
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/nccgroup/phantap
-PKG_MIRROR_HASH:=01723a955e975b877f35924d3b5bfa53251f8928abe4657de0ed4c4943d9510c
-PKG_SOURCE_DATE:=2020.02.09
-PKG_SOURCE_VERSION:=fb3be84b4f4e081c35b7d0caa977bc659c02f8f1
+PKG_MIRROR_HASH:=d625970df1f3757d0805b956bcb721bcc6fa102e397cd3e16e558be8bec8abb3
+PKG_SOURCE_DATE:=2020.12.31
+PKG_SOURCE_VERSION:=a71772357301e10e9d8bc2d512505c9c5a4a18a4
PKG_MAINTAINER:=Diana Dragusin <diana.dragusin@nccgroup.com>, \
Etienne Champetier <champetier.etienne@gmail.com>
PKG_NAME:=rsync
PKG_VERSION:=3.2.3
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://download.samba.org/pub/rsync/src
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
define Package/rsync
SECTION:=net
CATEGORY:=Network
SUBMENU:=File Transfer
TITLE:=Fast remote file copy program (like rcp)
- DEPENDS:=+libpopt +zlib +RSYNC_xattr:libattr +RSYNC_acl:libacl +RSYNC_zstd:libzstd
+ DEPENDS:=+libpopt +zlib +RSYNC_xattr:libattr +RSYNC_acl:libacl +RSYNC_zstd:libzstd $(ICONV_DEPENDS)
URL:=https://rsync.samba.org/
MENU:=1
endef
--without-included-zlib \
--disable-debug \
--disable-asm \
- --disable-iconv \
- --disable-iconv-open \
--disable-lz4 \
--disable-locale \
--disable-md2man \
--disable-openssl \
--disable-simd \
--disable-xxhash \
+ --$(if $(CONFIG_BUILD_NLS),en,dis)able-iconv \
+ --$(if $(CONFIG_BUILD_NLS),en,dis)able-iconv-open \
--$(if $(CONFIG_RSYNC_zstd),en,dis)able-zstd \
--$(if $(CONFIG_RSYNC_xattr),en,dis)able-xattr-support \
--$(if $(CONFIG_RSYNC_acl),en,dis)able-acl-support \
include $(TOPDIR)/rules.mk
PKG_NAME:=samba
-PKG_VERSION:=4.12.7
+PKG_VERSION:=4.13.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
http://www.nic.funet.fi/index/samba/pub/samba/stable/ \
http://samba.mirror.bit.nl/samba/ftp/stable/ \
https://download.samba.org/pub/samba/stable/
-PKG_HASH:=30556a0dd2f9ab3b251eb9db6132ffd4379c159f574366fc2f2eabbc018c6fd2
+PKG_HASH:=276464396a05d88b775bda01ac2eb1e5a636ccf7010b0fd28efc3d85583af2b4
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
PKG_LICENSE:=GPL-3.0-only
printf "\tmin receivefile size = 131072\n" # allows zero-copy writes via fs
printf "\tfake oplocks = Yes\n" # may corrupt files for simultanous writes to the same files by multiple clients, but might also see big speed boost
printf "\tuse sendfile = Yes\n" # enable sendfile, not sure whats with the 2019 bug https://bugzilla.samba.org/show_bug.cgi?id=14095
- # Removed in 4.12.x in favor of VFS io_uring ; this is per file, so may increase memory useage on many simultanous oplocked files!
- printf "\twrite cache size = 262144\n" # adds a write cache buffer per file for oplocked files, flushes if size is exhausted
fi
if [ "$DISABLE_NETBIOS" -eq 1 ] || [ ! -x /usr/sbin/nmbd ]; then
PKG_NAME:=simple-adblock
PKG_VERSION:=1.8.4
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net>
PKG_LICENSE:=GPL-3.0-or-later
/etc/config/simple-adblock
endef
-define Build/Prepare
- mkdir -p $(PKG_BUILD_DIR)/files/
- $(CP) ./files/simple-adblock.init $(PKG_BUILD_DIR)/files/simple-adblock.init
- sed -i "s|^\(PKG_VERSION\).*|\1='$(PKG_VERSION)-$(PKG_RELEASE)'|" $(PKG_BUILD_DIR)/files/simple-adblock.init
-endef
-
define Build/Configure
endef
define Package/simple-adblock/install
$(INSTALL_DIR) $(1)/etc/init.d
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/simple-adblock.init $(1)/etc/init.d/simple-adblock
+ $(INSTALL_BIN) ./files/simple-adblock.init $(1)/etc/init.d/simple-adblock
+ sed -i "s|^\(PKG_VERSION\).*|\1='$(PKG_VERSION)-$(PKG_RELEASE)'|" $(1)/etc/init.d/simple-adblock
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) ./files/simple-adblock.conf $(1)/etc/config/simple-adblock
$(INSTALL_DIR) $(1)/tmp
# File size: 44.0K
list blocked_domains_url 'https://s3.amazonaws.com/lists.disconnect.me/simple_malvertising.txt'
-# File size: 584.0K
-# block-list too big for most routers
-# list blocked_domains_url 'https://mirror1.malwaredomains.com/files/justdomains'
-
# File size: 16.0K
list blocked_hosts_url 'https://adaway.org/hosts.txt'
# File size: 20.0K
list blocked_hosts_url 'https://cdn.jsdelivr.net/gh/hoshsadiq/adblock-nocoin-list/hosts.txt'
-# File size: 36.0K
- list blocked_hosts_url 'https://www.malwaredomainlist.com/hostslist/hosts.txt'
-
# File size: 80.0K
list blocked_hosts_url 'https://pgl.yoyo.org/as/serverlist.php?hostformat=hosts&showintro=1&mimetype=plaintext'
s|raw.githubusercontent.com/hoshsadiq/adblock-nocoin-list/|cdn.jsdelivr.net/gh/hoshsadiq/adblock-nocoin-list@|g
s|raw.githubusercontent.com/jawz101/MobileAdTrackers/|cdn.jsdelivr.net/gh/jawz101/MobileAdTrackers@|g
s|http://winhelp2002.mvps.org/hosts.txt|https://winhelp2002.mvps.org/hosts.txt|g
-/dshield.org/d
+\|dshield.org|d
+\|www.malwaredomainlist.com/hostslist/hosts.txt|d
+\|https://mirror1.malwaredomains.com/files/justdomains|d
USE_PROCD=1
LC_ALL=C
+if type extra_command 1>/dev/null 2>&1; then
+ extra_command 'check' 'Checks if specified domain is found in current block-list'
+ extra_command 'dl' 'Force-downloads all enabled block-list'
+ extra_command 'sizes' 'Displays the file-sizes of enabled block-listo'
+ extra_command 'show' 'Shows the service last-run status'
+ extra_command 'version' 'Show version information'
+else
# shellcheck disable=SC2034
-extra_command "check" "Checks if specified domain is found in current block-list"
-extra_command "dl" "Force-downloads all enabled block-list"
-extra_command "sizes" "Displays the file-sizes of enabled block-listo"
-extra_command "show" "Shows the service last-run status"
-extra_command "version" "Show version"
+ EXTRA_COMMANDS='check dl killcache sizes show version'
+# shellcheck disable=SC2034
+ EXTRA_HELP=' check Checks if specified domain is found in current block-list
+ dl Force-downloads all enabled block-list
+ sizes Displays the file-sizes of enabled block-lists
+ show Shows the service last-run status'
+fi
readonly packageName='simple-adblock'
readonly serviceName="$packageName $PKG_VERSION"
output 2 "[DL] Config Update: $label $__FAIL__\\n"
tmpfs add error "errorDownloadingConfigUpdate"
else
- if ! sed -f "$R_TMP" -i /etc/config/simple-adblock; then
+ if [ -s "$R_TMP" ] && sed -f "$R_TMP" -i /etc/config/simple-adblock; then
+ output 1 "$_OK_"
+ output 2 "[DL] Config Update: $label $__OK__\\n"
+ else
output 1 "$_FAIL_"
output 2 "[DL] Config Update: $label $__FAIL__\\n"
tmpfs add error "errorParsingConfigUpdate"
- else
- output 1 "$_OK_"
- output 2 "[DL] Config Update: $label $__OK__\\n"
fi
fi
rm -f "$R_TMP"
}
service_triggers() {
- procd_add_reload_trigger 'simple-adblock'
+ procd_add_config_trigger "config.change" "$packageName" /etc/init.d/$packageName reload
}
check() {
include $(TOPDIR)/rules.mk
PKG_NAME:=snort
-PKG_VERSION:=2.9.16.1
+PKG_VERSION:=2.9.17
PKG_RELEASE:=1
PKG_LICENSE:=GPL-2.0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.snort.org/downloads/archive/snort/ \
@SF/$(PKG_NAME)
-PKG_HASH:=e3ac45a1a3cc2c997d52d19cd92f1adf5641c3a919387adab47a4d13a9dc9f8e
+PKG_HASH:=c3b234c3922a09b0368b847ddb8d1fa371b741f032f42aa9ab53d67b428dc648
PKG_BUILD_DEPENDS:=libtirpc
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)/$(PKG_NAME)-$(PKG_VERSION)
include $(TOPDIR)/rules.mk
PKG_NAME:=sqm-scripts
-PKG_SOURCE_VERSION:=ab763cba8b1516b3afa99760e0ca884f8b8d93b8
-PKG_VERSION:=1.4.0
-PKG_RELEASE:=9
+PKG_SOURCE_VERSION:=bb064ad6065dcfb4966662bfab15b9fcdbb48e5f
+PKG_VERSION:=1.5.0
+PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/tohojo/sqm-scripts
-PKG_MIRROR_HASH:=43f59dd4c74c5f1634498c18e370c5185110be1084597df37773cecf306e3a24
+PKG_MIRROR_HASH:=d41301ed1e318ea81c6c8f29c1847efdda3663573d12a3e0b855b4b8b8cf0610
PKG_MAINTAINER:=Toke Høiland-Jørgensen <toke@toke.dk>
PKG_LICENSE:=GPL-2.0-only
include $(TOPDIR)/rules.mk
PKG_NAME:=squid
-PKG_VERSION:=4.12
+PKG_VERSION:=4.13
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://www3.us.squid-cache.org/Versions/v4/ \
http://www2.pl.squid-cache.org/Versions/v4/ \
http://www.squid-cache.org/Versions/v4/
-PKG_HASH:=f42a03c8b3dc020722c88bf1a87da8cb0c087b2f66b41d8256c77ee1b527e317
+PKG_HASH:=6891a0f540e60779b4f24f1802a302f813c6f473ec7336a474ed68c3e2e53ee0
PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
PKG_LICENSE:=GPL-2.0-or-later
PKG_CPE_ID:=cpe:/a:squid-cache:squid
-PKG_BUILD_PARALLEL:=1
-PKG_INSTALL:=1
PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
endef
CONFIGURE_ARGS += \
- BUILDCXX=$(HOSTCXX) \
- BUILDCXXFLAGS=$(if $(HOST_CXXFLAGS),$(HOST_CXXFLAGS),-O2) \
+ BUILDCXX=$(HOSTCXX_NOCACHE) \
--config-cache \
--datadir=/usr/share/squid \
--libexecdir=/usr/lib/squid \
TARGET_CFLAGS += -Wno-error
TARGET_LDFLAGS += -latomic
-define Build/Compile
- +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)/lib all
- +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- install
-endef
-
define Package/squid/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/squid $(1)/usr/sbin/
--- /dev/null
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -765,7 +765,7 @@ cache_cf.o: cf_parser.cci
+
+ # cf_gen builds the configuration files.
+ cf_gen$(EXEEXT): $(cf_gen_SOURCES) $(cf_gen_DEPENDENCIES) cf_gen_defines.cci
+- $(BUILDCXX) $(BUILDCXXFLAGS) -o $@ $(srcdir)/cf_gen.cc -I$(srcdir) -I$(top_builddir)/include/ -I$(top_builddir)/src
++ $(BUILDCXX) -o $@ $(srcdir)/cf_gen.cc -I$(srcdir) -I$(top_builddir)/include/ -I$(top_builddir)/src
+
+ # squid.conf.default is built by cf_gen when making cf_parser.cci
+ squid.conf.default squid.conf.documented: cf_parser.cci
include $(TOPDIR)/rules.mk
PKG_NAME:=strongswan
-PKG_VERSION:=5.9.0
+PKG_VERSION:=5.9.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://download.strongswan.org/ https://download2.strongswan.org/
-PKG_HASH:=72b47a385da5d1532b816d9fe04c50d074c29ed42ea3f0878fbd66335917bb66
+PKG_HASH:=a337c9fb63d973b8440827755c784031648bf423b7114a04918b0b00fd42cafb
PKG_LICENSE:=GPL-2.0-or-later
PKG_MAINTAINER:=Stijn Tintel <stijn@linux-ipv6.be>
PKG_CPE_ID:=cpe:/a:strongswan:strongswan
include $(TOPDIR)/rules.mk
PKG_NAME:=subversion
-PKG_RELEASE:=3
-PKG_VERSION:=1.13.0
+PKG_VERSION:=1.14.0
+PKG_RELEASE:=2
+
PKG_SOURCE_URL:=@APACHE/subversion
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=bc50ce2c3faa7b1ae9103c432017df98dfd989c4239f9f8270bb3a314ed9e5bd
+PKG_HASH:=6ba8e218f9f97a83a799e58a3c6da1221d034b18d9d8cbbcb6ec52ab11722102
+
+PKG_MAINTAINER:=Val Kulkov <val.kulkov@gmail.com>
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
-PKG_MAINTAINER:=Val Kulkov <val.kulkov@gmail.com>
PKG_CPE_ID:=cpe:/a:apache:subversion
PKG_FIXUP:=autoreconf
PKG_MACRO_PATHS:=build/ac-macros
-PKG_BUILD_DEPENDS:=apr-util
PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
-
define Package/subversion/Default
SECTION:=net
CATEGORY:=Network
endef
CONFIGURE_ARGS += \
- --with-apr="$(STAGING_DIR)/usr/bin/apr-1-config" \
- --with-apr-util="$(STAGING_DIR)/usr/bin/apu-1-config" \
- --with-libmagic="$(STAGING_DIR)/usr" \
--disable-mod-activation \
--without-ruby-sitedir \
--without-swig \
--without-apxs \
--without-sasl \
--with-lz4=internal \
- --with-utf8proc=internal
+ --with-utf8proc=internal \
+ $(call autoconf_bool,INTL_FULL,nls)
-ifdef $(INTL_FULL)
- CONFIGURE_ARGS += --enable-nls
-else
- CONFIGURE_ARGS += --disable-nls
-endif
+TARGET_LDFLAGS += $(if $(INTL_FULL),-lintl)
define Package/subversion-libs/install
$(INSTALL_DIR) $(1)/usr/lib
PKG_NAME:=tcpreplay
PKG_VERSION:=4.3.3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://github.com/appneta/tcpreplay/releases/download/v$(PKG_VERSION)
PKG_LICENSE_FILES:=docs/LICENSE
PKG_CPE_ID:=cpe:/a:appneta:tcpreplay
-PKG_FIXUP:=libtool
+PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
CONFIGURE_ARGS += \
--enable-force-pf \
--enable-dynamic-link \
- --prefix="$(PKG_INSTALL_DIR)/usr" \
- --exec-prefix="$(PKG_INSTALL_DIR)/usr" \
--with-libpcap="$(STAGING_DIR)/usr"
define tcpreplayTemplate
PKG_NAME:=transmission
PKG_VERSION:=3.00
-PKG_RELEASE:=8
+PKG_RELEASE:=10
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GITHUB/transmission/transmission-releases/master
CATEGORY:=Network
TITLE:=BitTorrent client
URL:=https://www.transmissionbt.com
- DEPENDS:=+libcurl +libevent2 +libminiupnpc +libnatpmp +libpthread +librt +zlib +LIBCURL_NOSSL:libmbedtls +LIBCURL_GNUTLS:libmbedtls $(ICONV_DEPENDS)
+ DEPENDS:=+libcurl +libevent2 +libminiupnpc +libnatpmp +libpthread +librt +zlib +LIBCURL_NOSSL:libmbedtls +LIBCURL_GNUTLS:libmbedtls +LIBCURL_WOLFSSL:libmbedtls $(ICONV_DEPENDS)
endef
define Package/transmission-daemon
$(if $(CONFIG_LIBCURL_GNUTLS),--with-crypto=polarssl) \
$(if $(CONFIG_LIBCURL_MBEDTLS),--with-crypto=polarssl) \
$(if $(CONFIG_LIBCURL_OPENSSL),--with-crypto=openssl) \
- $(if $(CONFIG_LIBCURL_WOLFSSL),--with-crypto=cyassl)
+ $(if $(CONFIG_LIBCURL_WOLFSSL),--with-crypto=polarssl)
define Package/transmission-daemon/install
$(INSTALL_DIR) $(1)/usr/bin
"getpid",
"getsockname",
"getsockopt",
+ "getuid",
"getuid32",
"ioctl",
"listen",
--- a/configure.ac
+++ b/configure.ac
-@@ -555,9 +555,6 @@ dnl it should be safe to re-edit 0.40 back down to 0.23
+@@ -555,9 +555,6 @@ dnl it should be safe to re-edit 0.40 ba
use_nls=no
if test "x$enable_nls" = "xyes" ; then
use_nls=yes
--- a/configure.ac
+++ b/configure.ac
-@@ -152,8 +152,8 @@ AS_IF([test "x$want_crypto" = "xauto" -o "x$want_crypto" = "xcyassl"], [
+@@ -152,8 +152,8 @@ AS_IF([test "x$want_crypto" = "xauto" -o
)
])
AS_IF([test "x$want_crypto" = "xauto" -o "x$want_crypto" = "xpolarssl"], [
--- a/libtransmission/webseed.c
+++ b/libtransmission/webseed.c
-@@ -510,8 +510,6 @@ static void webseed_timer_func(evutil_socket_t foo UNUSED, short bar UNUSED, voi
+@@ -510,8 +510,6 @@ static void webseed_timer_func(evutil_so
++w->retry_tickcount;
}
include $(TOPDIR)/rules.mk
PKG_NAME:=uacme
-PKG_VERSION:=1.2.1
-PKG_RELEASE:=2
+PKG_VERSION:=1.6
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/ndilieto/uacme/tar.gz/upstream/$(PKG_VERSION)?
-PKG_HASH:=ccd6001e96ec2eb22a1d557bf8dcc4152a567782afc9a1e017a93d7de3b49833
+PKG_HASH:=baeb1621e4b5d3cbf339531aa8c0df29ccffbb9c996379265349976d2c09c259
PKG_MAINTAINER:=Lucian Cristian <lucian.cristian@gmail.com>
PKG_LICENSE:=GPL-3.0-or-later
include $(TOPDIR)/rules.mk
PKG_NAME:=udpxy
-PKG_VERSION:=1.0-24.1
-PKG_RELEASE:=2
+PKG_VERSION:=1.0-25.0
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/pcherenkov/udpxy/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=27e5d3d2bae29522354d1505a3cc931c96953846d68eeb25bb99fe9b0cb6cbe0
+PKG_HASH:=715c9af36c708a19225233a9013582e06d5c97d16d9a699765067b652c4871f9
PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
PKG_LICENSE:=GPL-3.0-or-later
include $(TOPDIR)/rules.mk
PKG_NAME:=unbound
-PKG_VERSION:=1.12.0
+PKG_VERSION:=1.13.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://nlnetlabs.nl/downloads/unbound
-PKG_HASH:=5b9253a97812f24419bf2e6b3ad28c69287261cf8c8fa79e3e9f6d3bf7ef5835
+PKG_HASH:=a954043a95b0326ca4037e50dace1f3a207a0a19e9a4a22f4c6718fc623db2a1
PKG_MAINTAINER:=Eric Luehrsen <ericluehrsen@gmail.com>
PKG_LICENSE:=BSD-3-Clause
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=usbip
-PKG_RELEASE:=12
+PKG_RELEASE:=13
PKG_LICENSE:=GPL-2.0-only
# Since kernel 2.6.39.1 userspace tools are inside the kernel tree
define Package/usbip
$(call Package/usbip/Default)
TITLE+= (common)
- DEPENDS+= +libwrap +kmod-usbip +libudev +USE_GLIBC:libbsd
+ DEPENDS+= +libwrap +kmod-usbip +libudev +USE_GLIBC:libbsd +usbids
endef
define Package/usbip-client
CONFIGURE_VARS+= $(if $(CONFIG_USE_GLIBC),LIBS='-lbsd -lpthread')
CFLAGS+="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include"
-USB_IDS_VER:=0.318
-USB_IDS_FILE:=usb.ids.$(USB_IDS_VER)
-define Download/usb.ids
- FILE:=$(USB_IDS_FILE)
- URL_FILE:=usb.ids
- URL:=@GITHUB/vcrhonek/hwdata/v$(USB_IDS_VER)
- HASH:=84bc5452e4e45c2250e01bc74e03528b2a53c4724b2c4a5feaea76a922f83915
-endef
-
define Package/usbip/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libusbip.so.* $(1)/usr/lib/
- $(INSTALL_DIR) $(1)/usr/share/hwdata
- $(CP) $(DL_DIR)/usb.ids.$(USB_IDS_VER) $(1)/usr/share/hwdata/usb.ids
endef
define Package/usbip-client/install
$(CP) $(PKG_INSTALL_DIR)/usr/sbin/usbipd $(1)/usr/sbin/
endef
-$(eval $(call Download,usb.ids))
$(eval $(call BuildPackage,usbip))
$(eval $(call BuildPackage,usbip-client))
$(eval $(call BuildPackage,usbip-server))
include $(TOPDIR)/rules.mk
PKG_NAME:=wavemon
-PKG_VERSION:=0.9.1
-PKG_RELEASE:=2
+PKG_VERSION:=0.9.2
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/uoaerg/wavemon/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=5ebd5b79d3b7c546bc16b95161872c699a75e9acdfc6e3f02ec48dad10802067
+PKG_HASH:=13334ff17720ba4d17f4658dd2b93a50a6b5bc0583dedd72b88fd0cb90db686a
PKG_MAINTAINER:=Jonathan McCrohan <jmccrohan@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING
-PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
PKG_NAME:=wget
PKG_VERSION:=1.20.3
-PKG_RELEASE:=4
+PKG_RELEASE:=6
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
SUBMENU:=File Transfer
TITLE:=Non-interactive network downloader
URL:=https://www.gnu.org/software/wget/index.html
- PROVIDES:=gnu-wget
+ PROVIDES:=gnu-wget wget
endef
define Package/wget/Default/description
archives and home pages or to travel the Web like a WWW robot.
endef
-define Package/wget
+define Package/wget-ssl
$(call Package/wget/Default)
DEPENDS+= +libopenssl +librt
TITLE+= (with SSL support)
VARIANT:=ssl
- PROVIDES+=wget-ssl
- ALTERNATIVES:=300:/usr/bin/wget:/usr/bin/wget-ssl
+ ALTERNATIVES:=300:/usr/bin/wget:/usr/libexec/wget-ssl
endef
-define Package/wget/description
+define Package/wget-ssl/description
$(call Package/wget/Default/description)
This package is built with SSL support.
endef
$(call Package/wget/Default)
TITLE+= (without SSL support)
VARIANT:=nossl
- PROVIDES+=wget
- ALTERNATIVES:=300:/usr/bin/wget:/usr/bin/wget-nossl
+ ALTERNATIVES:=300:/usr/bin/wget:/usr/libexec/wget-nossl
endef
define Package/wget-nossl/description
--without-ssl
endif
-define Package/wget/install
- $(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/wget $(1)/usr/bin/wget-ssl
+define Package/wget-ssl/install
+ $(INSTALL_DIR) $(1)/usr/libexec
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/wget $(1)/usr/libexec/wget-ssl
endef
define Package/wget-nossl/install
- $(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/wget $(1)/usr/bin/wget-nossl
+ $(INSTALL_DIR) $(1)/usr/libexec
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/wget $(1)/usr/libexec/wget-nossl
endef
-$(eval $(call BuildPackage,wget))
+$(eval $(call BuildPackage,wget-ssl))
$(eval $(call BuildPackage,wget-nossl))
PKG_NAME:=wifischedule
PKG_VERSION:=1
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_LICENSE:=PRPL
PKG_MAINTAINER:=Nils Koenig <openwrt@newk.it>
When un-/loading the modules, there is a certain number of retries (`module_load`) performed.
The option "Force disabling wifi even if stations associated" does what it says - when activated it simply shuts down WiFi.
-When unchecked, its checked every `recheck_interval` minutes if there are still stations associated. Once the stations disconnect, WiFi is disabled.
+When unchecked, its checked every `recheck_interval` minutes if there are still stations associated. Once the stations disconnect, WiFi is disabled. To ignore associated stations add their MAC to `ignore_stations`.
-Please note, that the parameters `module_load` and `recheck_interval` are only accessible through uci.
+Please note, that the parameters `module_load`, `recheck_interval` and `ignore_stations` are only accessible through uci.
## UCI Configuration `wifi_schedule`
UCI configuration file: `/etc/config/wifi_schedule`:
option enabled '0'
option recheck_interval '10'
option modules_retries '10'
+# option ignore_stations 'AA:AA:AA:AA:AA:AA BB:BB:BB:BB:BB:BB'
config entry 'Businesshours'
option enabled '0'
option enabled '0'
option recheck_interval '10'
option modules_retries '10'
+# option ignore_stations 'AA:AA:AA:AA:AA:AA BB:BB:BB:BB:BB:BB'
config entry 'Businesshours'
option enabled '0'
return 1
fi
+ local ignore_stations=$(_get_uci_value_raw ${GLOBAL}.ignore_stations)
+ [ -n "${ignore_stations}" ] && _log "Ignoring station(s) ${ignore_stations}"
+
# check if no stations are associated
local _if
for _if in $(_get_wireless_interfaces)
do
- output=$(${iwinfo} ${_if} assoclist)
- if [[ "$output" != "No station connected" ]]
- then
+ local stations=$(${iwinfo} ${_if} assoclist | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}')
+ if [ -n "${ignore_stations}" ]; then
+ stations=$(echo "${stations}" | grep -vwi -E "${ignore_stations// /|}")
+ fi
+
+ if [ -n "${stations}" ]; then
_disable_wifi=0
- local stations=$(echo ${output}| grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}' | tr '\n' ' ')
- _log "Station(s) ${stations}associated on ${_if}"
+ _log "Station(s) $(echo ${stations}) associated on ${_if}"
fi
done
include $(TOPDIR)/rules.mk
PKG_NAME:=wsdd2
-PKG_RELEASE:=9
+PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/Andy2244/wsdd2.git
-PKG_SOURCE_DATE:=2020-05-06
-PKG_SOURCE_VERSION:=671d040c33ec290930535e27dd59c1e5ccec11ec
-PKG_MIRROR_HASH:=aac0881ba8627897b23906eabde97450178a8f9285699c0368f88a745a934b96
+PKG_SOURCE_DATE:=2020-11-19
+PKG_SOURCE_VERSION:=e0cf50d5c125d60caaa9b957d058ea4348a8d200
+PKG_MIRROR_HASH:=6a09fed7974de3e9c6f87c0b2880c105a21ffaef965bd58d837d62ca58fe8f07
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
PKG_LICENSE:=GPL-3.0-only
PKG_NAME:=xtables-addons
PKG_VERSION:=3.13
-PKG_RELEASE:=2
+PKG_RELEASE:=4
PKG_HASH:=893c0c4ea09759cda1ab7e68f1281d125e59270f7b59e446204ce686c6a76d65
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+wget-ssl +!BUSYBOX_CONFIG_ZCAT:gzip
endef
+define Package/iptgeoip/config
+ menu "Select iptgeoip options"
+ config IPTGEOIP_PRESERVE
+ bool "Preserve across sysupgrades"
+ default n
+ help
+ Backup and restore during sysupgrade (requires >7MB)
+ endmenu
+endef
+
+ifeq ($(CONFIG_IPTGEOIP_PRESERVE),y)
+define Package/iptgeoip/conffiles
+/usr/share/xt_geoip/
+endef
+endif
+
define Package/iptgeoip/install
$(INSTALL_DIR) $(1)/usr/lib/xtables-addons
$(CP) \
$(PKG_INSTALL_DIR)/usr/lib/xtables-addons/xt_geoip_{build,dl} \
$(1)/usr/lib/xtables-addons/
+ $(INSTALL_DIR) $(1)/usr/bin
$(CP) \
$(PKG_INSTALL_DIR)/usr/bin/xt_geoip_fetch \
$(1)/usr/bin/
$(INSTALL_DIR) $(1)/usr/share/xt_geoip
+ touch $(1)/usr/share/xt_geoip/.keep
endef
include $(TOPDIR)/rules.mk
PKG_NAME:=zerotier
-PKG_VERSION:=1.4.6
-PKG_RELEASE:=5
+PKG_VERSION:=1.6.2
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/zerotier/ZeroTierOne/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=d1a0eeb03acfa446f67adf5901902d17de14b4648c21e160024acf476e3d4fba
+PKG_HASH:=c8087b26c1191d36fda004b42cdfed31042cafd8586e49015586eef786f2c9a5
PKG_BUILD_DIR:=$(BUILD_DIR)/ZeroTierOne-$(PKG_VERSION)
PKG_MAINTAINER:=Moritz Warning <moritzwarning@web.de>
TARGET_CFLAGS += -ffunction-sections -fdata-sections
TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed
-ifdef CONFIG_USE_UCLIBC
- TARGET_CFLAGS += -D'valloc(a)=aligned_alloc(getpagesize(),a)'
-endif
-
define Package/zerotier/conffiles
/etc/config/zerotier
endef
-From 14454285d7ef5b9cd134c86059933036c1aa2fef Mon Sep 17 00:00:00 2001
+From 552cda1ebff6c5182eecdcb35961fd6b441dfa52 Mon Sep 17 00:00:00 2001
From: Moritz Warning <moritzwarning@web.de>
Date: Mon, 23 Apr 2018 22:12:31 +0200
-Subject: [PATCH 1/4] find miniupnpc.h in staging directory
+Subject: [PATCH 1/8] find miniupnpc.h in staging directory
---
make-linux.mk | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/make-linux.mk b/make-linux.mk
-index b81c7aeb..a547125d 100644
--- a/make-linux.mk
+++ b/make-linux.mk
-@@ -29,8 +29,8 @@ TIMESTAMP=$(shell date +"%Y%m%d%H%M")
+@@ -25,8 +25,8 @@ TIMESTAMP=$(shell date +"%Y%m%d%H%M")
# otherwise build into binary as done on Mac and Windows.
ONE_OBJS+=osdep/PortMapper.o
override DEFS+=-DZT_USE_MINIUPNPC
ifeq ($(MINIUPNPC_IS_NEW_ENOUGH),1)
override DEFS+=-DZT_USE_SYSTEM_MINIUPNPC
LDLIBS+=-lminiupnpc
---
-2.22.0
-
-From 68fe97ef6b05e3709cd4b67c7681dcfc63bfaf80 Mon Sep 17 00:00:00 2001
+From ef1a75fd1bf271cc5c73d966a861dfcd26d62cd5 Mon Sep 17 00:00:00 2001
From: Moritz Warning <moritzwarning@web.de>
Date: Mon, 30 Apr 2018 16:14:30 +0200
-Subject: [PATCH 2/4] remove -pie
+Subject: [PATCH 2/8] remove -pie
fixes relocation "against `a local symbol' can not be used
when making a shared object; recompile with -fPIC" error
make-linux.mk | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
-diff --git a/make-linux.mk b/make-linux.mk
-index a547125d..13244741 100644
--- a/make-linux.mk
+++ b/make-linux.mk
-@@ -77,11 +77,11 @@ ifeq ($(ZT_DEBUG),1)
+@@ -73,11 +73,11 @@ ifeq ($(ZT_DEBUG),1)
# C25519 in particular is almost UNUSABLE in -O0 even on a 3ghz box!
node/Salsa20.o node/SHA512.o node/C25519.o node/Poly1305.o: CXXFLAGS=-Wall -O2 -g -pthread $(INCLUDES) $(DEFS)
else
STRIP?=strip
STRIP+=--strip-all
endif
---
-2.22.0
-
-From a856855ab97e0775a08e1571a4ad26c264cb13f4 Mon Sep 17 00:00:00 2001
+From 093ec88ff213a5713ad5d3c26ddf5ecdea3c6377 Mon Sep 17 00:00:00 2001
From: Moritz Warning <moritzwarning@web.de>
Date: Sun, 4 Aug 2019 03:56:37 +0200
-Subject: [PATCH 3/4] remove arm32 conservative CFLAGS
+Subject: [PATCH 3/8] remove arm32 conservative CFLAGS
---
make-linux.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/make-linux.mk b/make-linux.mk
-index 13244741..fd164dfa 100644
--- a/make-linux.mk
+++ b/make-linux.mk
-@@ -262,7 +262,7 @@ ifeq ($(ZT_OFFICIAL),1)
+@@ -276,7 +276,7 @@ ifeq ($(ZT_CONTROLLER),1)
endif
# ARM32 hell -- use conservative CFLAGS
-ifeq ($(ZT_ARCHITECTURE),3)
+ifeq (0,3)
ifeq ($(shell if [ -e /usr/bin/dpkg ]; then dpkg --print-architecture; fi),armel)
- override CFLAGS+=-march=armv5 -mfloat-abi=soft -msoft-float -mno-unaligned-access -marm
- override CXXFLAGS+=-march=armv5 -mfloat-abi=soft -msoft-float -mno-unaligned-access -marm
---
-2.22.0
-
+ override CFLAGS+=-march=armv5t -mfloat-abi=soft -msoft-float -mno-unaligned-access -marm
+ override CXXFLAGS+=-march=armv5t -mfloat-abi=soft -msoft-float -mno-unaligned-access -marm
-From 5169e5328525af28f6b7de087ece10a9bc0a2282 Mon Sep 17 00:00:00 2001
+From 1a4ffe62c729f9c4f63cdfd26151e3724bc23f86 Mon Sep 17 00:00:00 2001
From: Moritz Warning <moritzwarning@web.de>
Date: Wed, 2 May 2018 16:06:46 +0200
-Subject: [PATCH 4/4] accept external linker flags
+Subject: [PATCH 4/8] accept external linker flags
---
make-linux.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/make-linux.mk b/make-linux.mk
-index fd164dfa..29ff8813 100644
--- a/make-linux.mk
+++ b/make-linux.mk
-@@ -81,7 +81,7 @@ else
+@@ -77,7 +77,7 @@ else
override CFLAGS+=-Wall -Wno-deprecated -pthread $(INCLUDES) -DNDEBUG $(DEFS)
CXXFLAGS?=-O3 -fstack-protector
override CXXFLAGS+=-Wall -Wno-deprecated -std=c++11 -pthread $(INCLUDES) -DNDEBUG $(DEFS)
STRIP?=strip
STRIP+=--strip-all
endif
---
-2.22.0
-
+From de625c51dba36b390c93a1db00b19b6112178764 Mon Sep 17 00:00:00 2001
+From: Moritz Warning <moritzwarning@web.de>
+Date: Sat, 21 Nov 2020 17:53:28 +0100
+Subject: [PATCH 5/8] link natpmp
+
+---
+ make-linux.mk | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
--- a/make-linux.mk
+++ b/make-linux.mk
-@@ -38,7 +38,7 @@ else
+@@ -34,7 +34,7 @@ else
override DEFS+=-DMINIUPNP_STATICLIB -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 -DOS_STRING=\"Linux\" -DMINIUPNPC_VERSION_STRING=\"2.0\" -DUPNP_VERSION_STRING=\"UPnP/1.1\" -DENABLE_STRNATPMPERR
ONE_OBJS+=ext/miniupnpc/connecthostport.o ext/miniupnpc/igd_desc_parse.o ext/miniupnpc/minisoap.o ext/miniupnpc/minissdpc.o ext/miniupnpc/miniupnpc.o ext/miniupnpc/miniwget.o ext/miniupnpc/minixml.o ext/miniupnpc/portlistingparse.o ext/miniupnpc/receivedata.o ext/miniupnpc/upnpcommands.o ext/miniupnpc/upnpdev.o ext/miniupnpc/upnperrors.o ext/miniupnpc/upnpreplyparse.o
endif
--- /dev/null
+From e0c76c5ccf049d22bc47d723567926346e4d3639 Mon Sep 17 00:00:00 2001
+From: Moritz Warning <moritzwarning@web.de>
+Date: Sat, 21 Nov 2020 18:19:21 +0100
+Subject: [PATCH 6/8] gcc10
+
+---
+ osdep/Binder.hpp | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/osdep/Binder.hpp
++++ b/osdep/Binder.hpp
+@@ -396,9 +396,9 @@ public:
+ }
+ #endif // __LINUX__
+ if (_bindingCount < ZT_BINDER_MAX_BINDINGS) {
+- _bindings[_bindingCount].udpSock = udps;
+- _bindings[_bindingCount].tcpListenSock = tcps;
+- _bindings[_bindingCount].address = ii->first;
++ _bindings[(unsigned int)_bindingCount].udpSock = udps;
++ _bindings[(unsigned int)_bindingCount].tcpListenSock = tcps;
++ _bindings[(unsigned int)_bindingCount].address = ii->first;
+ phy.setIfName(udps,(char*)ii->second.c_str(),(int)ii->second.length());
+ ++_bindingCount;
+ }
--- /dev/null
+From e06177a74f1e4314baf17c52f360dabcb78e69cd Mon Sep 17 00:00:00 2001
+From: Moritz Warning <moritzwarning@web.de>
+Date: Sun, 29 Nov 2020 19:45:36 +0100
+Subject: [PATCH 7/8] add cerrno header for (str)errno
+
+Fixes compilation under libcxx.
+
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ osdep/LinuxNetLink.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/osdep/LinuxNetLink.cpp
++++ b/osdep/LinuxNetLink.cpp
+@@ -22,6 +22,8 @@
+ #include <unistd.h>
+ #include <linux/if_tun.h>
+
++#include <cerrno>
++
+ #ifndef IFNAMSIZ
+ #define IFNAMSIZ 16
+ #endif
--- /dev/null
+From 7ac88ced6cdedf88ccebfc1de12d92b269d4a60a Mon Sep 17 00:00:00 2001
+From: Moritz Warning <moritzwarning@web.de>
+Date: Mon, 30 Nov 2020 12:25:42 +0100
+Subject: [PATCH 8/8] fix compilation for arm_cortex-a7+neon
+
+Fixes "error: 'vrbitq_u8' was not declared in this scope"
+
+Signed-off-by: Rosen Penev <rosenp@gmail.com>
+---
+ node/Constants.hpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/node/Constants.hpp
++++ b/node/Constants.hpp
+@@ -109,7 +109,7 @@
+ #include <immintrin.h>
+ #endif
+
+-#if (defined(__ARM_NEON) || defined(__ARM_NEON__) || defined(ZT_ARCH_ARM_HAS_NEON))
++#if (defined(__aarch64__) || defined(ZT_ARCH_ARM_HAS_NEON))
+ #if (defined(__APPLE__) && !defined(__LP64__)) || (defined(__ANDROID__) && defined(__arm__))
+ #ifdef ZT_ARCH_ARM_HAS_NEON
+ #undef ZT_ARCH_ARM_HAS_NEON
--- /dev/null
+--- a/node/Utils.cpp
++++ b/node/Utils.cpp
+@@ -28,7 +28,7 @@
+ #include <sys/stat.h>
+ #include <sys/uio.h>
+ #include <dirent.h>
+-#ifdef __LINUX__
++#if 0
+ #include <sys/auxv.h>
+ #endif
+ #endif
+++ /dev/null
---- a/osdep/LinuxNetLink.hpp
-+++ b/osdep/LinuxNetLink.hpp
-@@ -18,6 +18,7 @@
-
- #ifdef __LINUX__
-
-+#include <cerrno>
- #include <vector>
-
- #include <sys/socket.h>
+++ /dev/null
---- a/osdep/OSUtils.hpp
-+++ b/osdep/OSUtils.hpp
-@@ -37,9 +37,6 @@
- #include <sys/time.h>
- #include <sys/stat.h>
- #include <arpa/inet.h>
--#ifdef __LINUX__
--#include <sys/syscall.h>
--#endif
- #endif
-
- #ifndef OMIT_JSON_SUPPORT
-@@ -211,11 +208,8 @@ public:
- return (int64_t)( ((tmp.QuadPart - 116444736000000000LL) / 10000L) + st.wMilliseconds );
- #else
- struct timeval tv;
--#ifdef __LINUX__
-- syscall(SYS_gettimeofday,&tv,0); /* fix for musl libc broken gettimeofday bug */
--#else
- gettimeofday(&tv,(struct timezone *)0);
--#endif
-+
- return ( (1000LL * (int64_t)tv.tv_sec) + (int64_t)(tv.tv_usec / 1000) );
- #endif
- };
+++ /dev/null
-From cce4fa719d447c55d93458b25fa92717a2d61a60 Mon Sep 17 00:00:00 2001
-From: Jonas Witschel <diabonas@archlinux.org>
-Date: Tue, 14 Jul 2020 14:20:16 +0200
-Subject: [PATCH] Fix compilation with GCC 10 by providing explicit cast of
- _bindingCount
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Compilation with GCC 10 fails with the following error:
-
-service/../osdep/Binder.hpp: In member function ‘void ZeroTier::Binder::refresh(ZeroTier::Phy<PHY_HANDLER_TYPE>&, unsigned int*, unsigned int, std::vector<ZeroTier::InetAddress>, INTERFACE_CHECKER&)’:
-service/../osdep/Binder.hpp:376:30: internal compiler error: unexpected expression ‘(std::__atomic_base<unsigned int>::__int_type)((ZeroTier::Binder*)this)->ZeroTier::Binder::_bindingCount’ of kind implicit_conv_expr
- 376 | _bindings[_bindingCount].udpSock = udps;
- | ^
-
-Help the compiler by providing an explicit cast to the appropriate type like it
-is already done in l. 338 of the same file.
----
- osdep/Binder.hpp | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/osdep/Binder.hpp b/osdep/Binder.hpp
-index 660e6f0c..a5bc85c9 100644
---- a/osdep/Binder.hpp
-+++ b/osdep/Binder.hpp
-@@ -373,9 +373,9 @@ class Binder
- }
- #endif // __LINUX__
- if (_bindingCount < ZT_BINDER_MAX_BINDINGS) {
-- _bindings[_bindingCount].udpSock = udps;
-- _bindings[_bindingCount].tcpListenSock = tcps;
-- _bindings[_bindingCount].address = ii->first;
-+ _bindings[(unsigned int)_bindingCount].udpSock = udps;
-+ _bindings[(unsigned int)_bindingCount].tcpListenSock = tcps;
-+ _bindings[(unsigned int)_bindingCount].address = ii->first;
- phy.setIfName(udps,(char*)ii->second.c_str(),(int)ii->second.length());
- ++_bindingCount;
- }
PKG_NAME:=fdk-aac
PKG_VERSION:=2.0.1
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/mstorsjo/fdk-aac/tar.gz/v$(PKG_VERSION)?
endef
ifeq ($(CONFIG_FDK-AAC_OPTIMIZE_SPEED),y)
- TARGET_CFLAGS := $(filter-out -O%,$(TARGET_CFLAGS))
- TARGET_CFLAGS += $(TARGET_CFLAGS) -O2 -flto
- TARGET_CXXFLAGS := $(filter-out -O%,$(TARGET_CXXFLAGS))
- TARGET_CXXFLAGS += $(TARGET_CXXFLAGS) -O2 -flto
- TARGET_LDFLAGS += $(TARGET_LDFLAGS) -flto
+ TARGET_CFLAGS:= $(filter-out -O%,$(TARGET_CFLAGS)) -O2 -flto
+ TARGET_CXXFLAGS:= $(filter-out -O%,$(TARGET_CXXFLAGS)) -O2 -flto
+ TARGET_LDFLAGS += -flto
endif
define Build/InstallDev
include $(TOPDIR)/rules.mk
PKG_NAME:=pulseaudio
-PKG_VERSION:=13.0
-PKG_RELEASE:=6
+PKG_VERSION:=14.0
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://freedesktop.org/software/pulseaudio/releases
-PKG_HASH:=961b23ca1acfd28f2bc87414c27bb40e12436efcf2158d29721b1e89f3f28057
+PKG_HASH:=a834775d9382b055504e5ee7625dc50768daac29329531deb6597bf05e06c261
PKG_MAINTAINER:=Peter Wagner <tripolar@gmx.at>
PKG_LICENSE:=LGPL-2.1-or-later
-Daccess_group=audio \
-Ddatabase=simple \
-Dlegacy-database-entry-format=false \
+ -Dstream-restore-clear-old-devices=true \
-Drunning-from-build-tree=false \
-Datomic-arm-linux-helpers=false \
+ -Datomic-arm-memory-barrier=false \
-Dalsa=enabled \
-Dasyncns=disabled \
-Dbluez5=false \
-Dfftw=disabled \
-Dglib=disabled \
-Dgsettings=disabled \
+ -Dgstreamer=disabled \
-Dgtk=disabled \
-Dhal-compat=false \
-Dipv6=true \
+++ /dev/null
---- a/src/modules/raop/raop-crypto.c
-+++ b/src/modules/raop/raop-crypto.c
-@@ -30,6 +30,7 @@
- #include <openssl/err.h>
- #include <openssl/aes.h>
- #include <openssl/rsa.h>
-+#include <openssl/bn.h>
-
- #include <pulse/xmalloc.h>
-
include $(TOPDIR)/rules.mk
PKG_NAME:=shairport-sync
-PKG_VERSION:=3.3.6
-PKG_RELEASE:=2
+PKG_VERSION:=3.3.7
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/mikebrady/shairport-sync/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=a8382affd25c473fa38ead5690148c6c3902098f359f9c881eefe139e1f49f49
+PKG_HASH:=7f8d4ecec53f2f681a962467bf09205568fc936c8c31a9ee07b1bd72d3d95b12
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>, \
Mike Brady <mikebrady@eircom.net>
endif
--- a/configure.ac
+++ b/configure.ac
-@@ -19,7 +19,6 @@ with_os=`echo ${with_os} | tr '[[:upper:]]' '[[:lower:]]' `
+@@ -19,7 +19,6 @@ with_os=`echo ${with_os} | tr '[[:upper:
# Checks for programs.
AC_PROG_CC
--- /dev/null
+#
+# Copyright (C) 2009-2012 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=acsccid
+PKG_VERSION:=1.1.8
+PKG_RELEASE:=1
+
+PKG_SOURCE:=v$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://github.com/acshk/acsccid/archive/
+PKG_HASH:=68d15eb20e7f52153509f1dc300cf0c68b388c59d7d124ba494fd96c61a6e7c6
+PKG_MAINTAINER:=Vincent JARDIN <vjardin@free.fr>
+PKG_LICENSE:=LGPL-2.1-or-later
+PKG_LICENSE_FILES:=COPYING
+
+PKG_FIXUP:=libtool
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
+
+define Package/acsccid
+ SECTION:=libs
+ CATEGORY:=Libraries
+ DEPENDS:=$(ICONV_DEPENDS) +libusb-1.0 +libpcsclite
+ TITLE:=PCSC driver for ACS USB CCID smart card readers
+ URL:=https://github.com/acshk/acsccid
+endef
+
+define Package/acsccid/description
+ PCSC driver for ACS USB CCID (Chip/Smart Card Interface Devices)
+ smart card readers and ICCD (Integrated Circuit(s)
+ Card Devices).
+endef
+
+TARGET_CFLAGS += $(FPIC)
+
+TARGET_LDFLAGS += "-lpthread"
+
+CONFIGURE_ARGS += \
+ --enable-embedded \
+ --enable-usbdropdir=/usr/lib/pcsc/drivers
+
+define Package/acsccid/install
+ $(INSTALL_DIR) $(1)/usr/lib/pcsc
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/pcsc/drivers $(1)/usr/lib/pcsc/
+endef
+
+$(eval $(call BuildPackage,acsccid))
PKG_NAME:=auc
PKG_VERSION:=0.1.4
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_LICENSE:=GPL-3.0
include $(INCLUDE_DIR)/package.mk
find_library(json NAMES json-c json)
ADD_EXECUTABLE(auc auc.c)
-TARGET_LINK_LIBRARIES(auc uci ubox ubus uclient blobmsg_json ${json})
+TARGET_LINK_LIBRARIES(auc uci ubox ubus uclient blobmsg_json ${json} ${CMAKE_DL_LIBS})
INSTALL(TARGETS auc RUNTIME DESTINATION sbin)
--- /dev/null
+#
+# Copyright (C) 2019 CZ.NIC, z. s. p. o. (https://www.nic.cz/)
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=augeas
+PKG_VERSION:=1.12.0
+PKG_RELEASE=2
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://download.augeas.net/
+PKG_HASH:=321942c9cc32185e2e9cb72d0a70eea106635b50269075aca6714e3ec282cb87
+
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+PKG_LICENSE:=LGPL-2.1-or-later
+PKG_MAINTAINER:=Jan Pavlinec <jan.pavlinec@nic.cz>
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/augeas
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=A configuration editing tool
+ URL:=http://augeas.net
+ DEPENDS:=+libxml2 +libreadline +libncurses
+endef
+
+define Package/augeas/description
+ Augeas is a configuration editing tool.
+ It parses configuration files in their
+ native formats and transforms them into a tree.
+ Configuration changes are made by manipulating this
+ tree and saving it back into native config files.
+endef
+
+define Package/augeas-lenses
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=Augeas lenses
+ URL:=http://augeas.net
+ DEPENDS:=+augeas
+endef
+
+define Package/augeas-lense/description
+ Set of Augeas lenses.
+endef
+
+CONFIGURE_ARGS+= \
+ --without-selinux
+
+define Package/augeas-lenses-tests
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=Augeas lenses tests
+ URL:=http://augeas.net
+ DEPENDS:=+augeas
+endef
+
+define Package/augeas-lenses-tests/description
+ Set of tests for official Augeas lenses.
+endef
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/* $(1)/usr/lib/
+ $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/* $(1)/usr/lib/pkgconfig/
+endef
+
+define Package/augeas/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
+ $(INSTALL_DIR) $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/* $(1)/usr/lib/
+endef
+
+define Package/augeas-lenses/install
+ $(INSTALL_DIR) $(1)/usr/share/augeas/lenses/dist
+ $(CP) $(PKG_INSTALL_DIR)/usr/share/augeas/lenses/dist/* $(1)/usr/share/augeas/lenses/dist/
+endef
+
+define Package/augeas-lenses-tests/install
+ $(INSTALL_DIR) $(1)/usr/share/augeas/lenses/dist/tests
+ $(CP) $(PKG_INSTALL_DIR)/usr/share/augeas/lenses/dist/tests/* $(1)/usr/share/augeas/lenses/dist/tests
+endef
+
+$(eval $(call BuildPackage,augeas))
+$(eval $(call BuildPackage,augeas-lenses))
+$(eval $(call BuildPackage,augeas-lenses-tests))
include $(TOPDIR)/rules.mk
PKG_NAME:=bash
-PKG_VERSION:=5.0
-PKG_RELEASE:=4
+PKG_VERSION:=5.1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@GNU/bash
-PKG_HASH:=b4a80f2ac66170b2913efbfb9f2594f1f76c7b1afd11f799e22035d63077fb4d
+PKG_HASH:=cc012bc860406dcf42f64431bcd3d2fa7560c02915a601aba9cd597a39329baa
+PKG_MAINTAINER:=Marcel Denia <naoir@gmx.net>
PKG_LICENSE:=GPL-3.0-or-later
PKG_LICENSE_FILES:=COPYING
-PKG_MAINTAINER:=Marcel Denia <naoir@gmx.net>
PKG_CPE_ID:=cpe:/a:gnu:bash
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
bash_cv_printf_a_format=yes \
CONFIGURE_ARGS+= \
- --with-installed-readline="$(STAGING_DIR)/usr" \
--with-curses \
--without-bash-malloc \
--bindir=/bin \
+++ /dev/null
-Fix job control
-
-Patch was taken from https://git.alpinelinux.org/cgit/aports/tree/main/bash/fix-jobs.patch
-
-See also "Bash 4.4.12-r2 jobs hangs on arm (alpine 3.7)", https://bugs.alpinelinux.org/issues/8447
---- a/jobs.c
-+++ b/jobs.c
-@@ -4326,10 +4326,8 @@ just_bail:
- if (js.c_childmax < 0)
- js.c_childmax = DEFAULT_CHILD_MAX;
-
--#if 0
- if (js.c_childmax > MAX_CHILD_MAX)
- js.c_childmax = MAX_CHILD_MAX;
--#endif
-
- return job_control;
- }
-@@ -4707,10 +4705,8 @@ mark_dead_jobs_as_notified (force)
- if (js.c_childmax < 0)
- js.c_childmax = DEFAULT_CHILD_MAX;
-
--#if 0
- if (js.c_childmax > MAX_CHILD_MAX)
- js.c_childmax = MAX_CHILD_MAX;
--#endif
-
- /* Don't do anything if the number of dead processes is less than CHILD_MAX
- and we're not forcing a cleanup. */
+++ /dev/null
- BASH PATCH REPORT
- =================
-
-Bash-Release: 5.0
-Patch-ID: bash50-001
-
-Bug-Reported-by: axel@freakout.de
-Bug-Reference-ID: <201901082050.x08KoShS006731@bongo.freakout.de>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-01/msg00079.html
-
-Bug-Description:
-
-Under certain circumstances, the glob expansion code did not remove
-backslashes escaping characters in directory names (or portions of a
-pattern preceding a slash).
-
-Patch (apply with `patch -p0'):
-
-*** a/bashline.c 2018-11-27 13:20:16.000000000 -0500
---- b/bashline.c 2019-01-16 16:06:03.000000000 -0500
-***************
-*** 232,235 ****
---- 232,236 ----
- static int bash_possible_command_completions __P((int, int));
-
-+ static int completion_glob_pattern __P((char *));
- static char *glob_complete_word __P((const char *, int));
- static int bash_glob_completion_internal __P((int));
-***************
-*** 1742,1746 ****
- /* This could be a globbing pattern, so try to expand it using pathname
- expansion. */
-! if (!matches && glob_pattern_p (text))
- {
- matches = rl_completion_matches (text, glob_complete_word);
---- 1743,1747 ----
- /* This could be a globbing pattern, so try to expand it using pathname
- expansion. */
-! if (!matches && completion_glob_pattern ((char *)text))
- {
- matches = rl_completion_matches (text, glob_complete_word);
-***************
-*** 1851,1855 ****
- }
-
-! globpat = glob_pattern_p (hint_text);
-
- /* If this is an absolute program name, do not check it against
---- 1852,1856 ----
- }
-
-! globpat = completion_glob_pattern ((char *)hint_text);
-
- /* If this is an absolute program name, do not check it against
-***************
-*** 3714,3717 ****
---- 3715,3773 ----
- }
-
-+ static int
-+ completion_glob_pattern (string)
-+ char *string;
-+ {
-+ register int c;
-+ char *send;
-+ int open;
-+
-+ DECLARE_MBSTATE;
-+
-+ open = 0;
-+ send = string + strlen (string);
-+
-+ while (c = *string++)
-+ {
-+ switch (c)
-+ {
-+ case '?':
-+ case '*':
-+ return (1);
-+
-+ case '[':
-+ open++;
-+ continue;
-+
-+ case ']':
-+ if (open)
-+ return (1);
-+ continue;
-+
-+ case '+':
-+ case '@':
-+ case '!':
-+ if (*string == '(') /*)*/
-+ return (1);
-+ continue;
-+
-+ case '\\':
-+ if (*string == 0)
-+ return (0);
-+ }
-+
-+ /* Advance one fewer byte than an entire multibyte character to
-+ account for the auto-increment in the loop above. */
-+ #ifdef HANDLE_MULTIBYTE
-+ string--;
-+ ADVANCE_CHAR_P (string, send - string);
-+ string++;
-+ #else
-+ ADVANCE_CHAR_P (string, send - string);
-+ #endif
-+ }
-+ return (0);
-+ }
-+
- static char *globtext;
- static char *globorig;
-***************
-*** 3878,3882 ****
- }
-
-! if (t && glob_pattern_p (t) == 0)
- rl_explicit_arg = 1; /* XXX - force glob_complete_word to append `*' */
- FREE (t);
---- 3934,3938 ----
- }
-
-! if (t && completion_glob_pattern (t) == 0)
- rl_explicit_arg = 1; /* XXX - force glob_complete_word to append `*' */
- FREE (t);
-*** a/lib/glob/glob_loop.c 2018-12-31 13:35:15.000000000 -0500
---- b/lib/glob/glob_loop.c 2019-01-09 09:44:36.000000000 -0500
-***************
-*** 55,59 ****
-
- case L('\\'):
-- #if 0
- /* Don't let the pattern end in a backslash (GMATCH returns no match
- if the pattern ends in a backslash anyway), but otherwise return 1,
---- 55,58 ----
-***************
-*** 61,69 ****
- and it can be removed. */
- return (*p != L('\0'));
-- #else
-- /* The pattern may not end with a backslash. */
-- if (*p++ == L('\0'))
-- return 0;
-- #endif
- }
-
---- 60,63 ----
-*** a/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
---- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 0
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 1
-
- #endif /* _PATCHLEVEL_H_ */
--- /dev/null
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 5.1
+Patch-ID: bash51-001
+
+Bug-Reported-by: Fazal Majid <fazal@majid.org>
+Bug-Reference-ID: <DEAB7D2C-C626-450C-B2E5-281AFF2D26D4@majid.org>
+Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2020-12/msg00000.html
+
+Bug-Description:
+
+There is a missing dependency on a constructed file, which can cause highly
+parellel builds to fail.
+
+Patch (apply with `patch -p0'):
+
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -1315,6 +1315,7 @@ bashline.o: trap.h flags.h assoc.h $(BAS
+ bashline.o: $(DEFSRC)/common.h $(GLOB_LIBSRC)/glob.h alias.h
+ bashline.o: pcomplete.h ${BASHINCDIR}/chartypes.h input.h
+ bashline.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h
++bashline.o: ${DEFDIR}/builtext.h
+ bracecomp.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
+ bracecomp.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h
+ bracecomp.o: command.h ${BASHINCDIR}/stdc.h error.h
+@@ -1435,6 +1436,7 @@ builtins/evalstring.o: quit.h unwind_pro
+ builtins/evalstring.o: dispose_cmd.h make_cmd.h subst.h externs.h
+ builtins/evalstring.o: jobs.h builtins.h flags.h input.h execute_cmd.h
+ builtins/evalstring.o: bashhist.h $(DEFSRC)/common.h pathnames.h
++builtins/evalstring.o: ${DEFDIR}/builtext.h
+ builtins/getopt.o: config.h ${BASHINCDIR}/memalloc.h
+ builtins/getopt.o: shell.h syntax.h bashjmp.h command.h general.h xmalloc.h error.h
+ builtins/getopt.o: variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
+--- a/builtins/Makefile.in
++++ b/builtins/Makefile.in
+@@ -361,7 +361,7 @@ evalstring.o: $(topdir)/dispose_cmd.h $(
+ evalstring.o: $(topdir)/externs.h $(topdir)/jobs.h $(topdir)/builtins.h
+ evalstring.o: $(topdir)/flags.h $(topdir)/input.h $(topdir)/execute_cmd.h
+ evalstring.o: $(topdir)/bashhist.h $(srcdir)/common.h
+-evalstring.o: $(topdir)/trap.h $(topdir)/redir.h ../pathnames.h
++evalstring.o: $(topdir)/trap.h $(topdir)/redir.h ../pathnames.h ./builtext.h
+ #evalstring.o: $(topdir)/y.tab.h
+ getopt.o: ../config.h $(BASHINCDIR)/memalloc.h
+ getopt.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/bashjmp.h $(topdir)/command.h
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -1,6 +1,6 @@
+ /* patchlevel.h -- current bash patch level */
+
+-/* Copyright (C) 2001-2016 Free Software Foundation, Inc.
++/* Copyright (C) 2001-2020 Free Software Foundation, Inc.
+
+ This file is part of GNU Bash, the Bourne Again SHell.
+
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 0
++#define PATCHLEVEL 1
+
+ #endif /* _PATCHLEVEL_H_ */
+++ /dev/null
- BASH PATCH REPORT
- =================
-
-Bash-Release: 5.0
-Patch-ID: bash50-002
-
-Bug-Reported-by: Ante Peric <synthmeat@gmail.com>
-Bug-Reference-ID: <B7E3B567-2467-4F7B-B6B9-CA4E75A9C93F@gmail.com>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-01/msg00095.html
-
-Bug-Description:
-
-When an alias value ends with an unquoted literal tab (not part of a quoted
-string or comment), alias expansion cannot correctly detect the end of the
-alias value after expanding it.
-
-Patch (apply with `patch -p0'):
-
-*** a/parser.h 2018-12-28 19:11:18.000000000 -0500
---- b/parser.h 2019-01-11 15:13:03.000000000 -0500
-***************
-*** 48,51 ****
---- 48,52 ----
- #define PST_REDIRLIST 0x080000 /* parsing a list of redirections preceding a simple command name */
- #define PST_COMMENT 0x100000 /* parsing a shell comment; used by aliases */
-+ #define PST_ENDALIAS 0x200000 /* just finished expanding and consuming an alias */
-
- /* Definition of the delimiter stack. Needed by parse.y and bashhist.c. */
-*** a/parse.y 2019-01-02 13:57:34.000000000 -0500
---- b/parse.y 2019-01-14 08:23:31.000000000 -0500
-***************
-*** 2558,2567 ****
- pushed_string_list->flags != PSH_DPAREN &&
- (parser_state & PST_COMMENT) == 0 &&
- shell_input_line_index > 0 &&
-! shell_input_line[shell_input_line_index-1] != ' ' &&
- shell_input_line[shell_input_line_index-1] != '\n' &&
- shellmeta (shell_input_line[shell_input_line_index-1]) == 0 &&
- (current_delimiter (dstack) != '\'' && current_delimiter (dstack) != '"'))
- {
- return ' '; /* END_ALIAS */
- }
---- 2558,2569 ----
- pushed_string_list->flags != PSH_DPAREN &&
- (parser_state & PST_COMMENT) == 0 &&
-+ (parser_state & PST_ENDALIAS) == 0 && /* only once */
- shell_input_line_index > 0 &&
-! shellblank (shell_input_line[shell_input_line_index-1]) == 0 &&
- shell_input_line[shell_input_line_index-1] != '\n' &&
- shellmeta (shell_input_line[shell_input_line_index-1]) == 0 &&
- (current_delimiter (dstack) != '\'' && current_delimiter (dstack) != '"'))
- {
-+ parser_state |= PST_ENDALIAS;
- return ' '; /* END_ALIAS */
- }
-***************
-*** 2572,2575 ****
---- 2574,2578 ----
- if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE)
- {
-+ parser_state &= ~PST_ENDALIAS;
- pop_string ();
- uc = shell_input_line[shell_input_line_index];
-*** a/y.tab.c 2019-01-02 13:57:43.000000000 -0500
---- b/y.tab.c 2019-01-14 08:39:23.000000000 -0500
-***************
-*** 4874,4883 ****
- pushed_string_list->flags != PSH_DPAREN &&
- (parser_state & PST_COMMENT) == 0 &&
- shell_input_line_index > 0 &&
-! shell_input_line[shell_input_line_index-1] != ' ' &&
- shell_input_line[shell_input_line_index-1] != '\n' &&
- shellmeta (shell_input_line[shell_input_line_index-1]) == 0 &&
- (current_delimiter (dstack) != '\'' && current_delimiter (dstack) != '"'))
- {
- return ' '; /* END_ALIAS */
- }
---- 4874,4885 ----
- pushed_string_list->flags != PSH_DPAREN &&
- (parser_state & PST_COMMENT) == 0 &&
-+ (parser_state & PST_ENDALIAS) == 0 && /* only once */
- shell_input_line_index > 0 &&
-! shellblank (shell_input_line[shell_input_line_index-1]) == 0 &&
- shell_input_line[shell_input_line_index-1] != '\n' &&
- shellmeta (shell_input_line[shell_input_line_index-1]) == 0 &&
- (current_delimiter (dstack) != '\'' && current_delimiter (dstack) != '"'))
- {
-+ parser_state |= PST_ENDALIAS;
- return ' '; /* END_ALIAS */
- }
-***************
-*** 4888,4891 ****
---- 4890,4894 ----
- if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE)
- {
-+ parser_state &= ~PST_ENDALIAS;
- pop_string ();
- uc = shell_input_line[shell_input_line_index];
-*** a/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
---- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 1
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 2
-
- #endif /* _PATCHLEVEL_H_ */
--- /dev/null
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 5.1
+Patch-ID: bash51-002
+
+Bug-Reported-by: oguzismailuysal@gmail.com
+Bug-Reference-ID: <CAH7i3LoHFUa4aSF5-AD2r80HG-p-YzD_9ZxomarZkhP8NMq63g@mail.gmail.com>
+Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2020-12/msg00037.html
+
+Bug-Description:
+
+If there are no jobs, and the `-n' and `-p' options are both supplied to
+`wait', bash can assign a value to the variable name specified with `-p'
+instead of leaving it unset.
+
+Patch (apply with `patch -p0'):
+
+--- a/builtins/wait.def
++++ b/builtins/wait.def
+@@ -213,11 +213,11 @@ wait_builtin (list)
+ }
+
+ status = wait_for_any_job (wflags, &pstat);
+- if (status < 0)
+- status = 127;
+-
+ if (vname && status >= 0)
+ bind_var_to_int (vname, pstat.pid);
++
++ if (status < 0)
++ status = 127;
+ if (list)
+ unset_waitlist ();
+ WAIT_RETURN (status);
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 1
++#define PATCHLEVEL 2
+
+ #endif /* _PATCHLEVEL_H_ */
+++ /dev/null
- BASH PATCH REPORT
- =================
-
-Bash-Release: 5.0
-Patch-ID: bash50-003
-
-Bug-Reported-by: Andrew Church <achurch+bash@achurch.org>
-Bug-Reference-ID: <5c534aa2.04371@msgid.achurch.org>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-01/msg00276.html
-
-Bug-Description:
-
-There are several incompatibilities in how bash-5.0 processes pathname
-expansion (globbing) of filename arguments that have backslashes in the
-directory portion.
-
-Patch (apply with `patch -p0'):
-
-*** a/lib/glob/glob_loop.c 2019-01-16 16:13:21.000000000 -0500
---- b/lib/glob/glob_loop.c 2019-02-01 09:45:11.000000000 -0500
-***************
-*** 27,34 ****
- register const GCHAR *p;
- register GCHAR c;
-! int bopen;
-
- p = pattern;
-! bopen = 0;
-
- while ((c = *p++) != L('\0'))
---- 27,34 ----
- register const GCHAR *p;
- register GCHAR c;
-! int bopen, bsquote;
-
- p = pattern;
-! bopen = bsquote = 0;
-
- while ((c = *p++) != L('\0'))
-***************
-*** 56,66 ****
- case L('\\'):
- /* Don't let the pattern end in a backslash (GMATCH returns no match
-! if the pattern ends in a backslash anyway), but otherwise return 1,
-! since the matching engine uses backslash as an escape character
-! and it can be removed. */
-! return (*p != L('\0'));
- }
-
-! return 0;
- }
-
---- 56,75 ----
- case L('\\'):
- /* Don't let the pattern end in a backslash (GMATCH returns no match
-! if the pattern ends in a backslash anyway), but otherwise note that
-! we have seen this, since the matching engine uses backslash as an
-! escape character and it can be removed. We return 2 later if we
-! have seen only backslash-escaped characters, so interested callers
-! know they can shortcut and just dequote the pathname. */
-! if (*p != L('\0'))
-! {
-! p++;
-! bsquote = 1;
-! continue;
-! }
-! else /* (*p == L('\0')) */
-! return 0;
- }
-
-! return bsquote ? 2 : 0;
- }
-
-*** a/lib/glob/glob.h 2013-10-28 14:46:12.000000000 -0400
---- b/lib/glob/glob.h 2019-03-07 11:06:47.000000000 -0500
-***************
-*** 31,34 ****
---- 31,35 ----
- #define GX_ADDCURDIR 0x200 /* internal -- add passed directory name */
- #define GX_GLOBSTAR 0x400 /* turn on special handling of ** */
-+ #define GX_RECURSE 0x800 /* internal -- glob_filename called recursively */
-
- extern int glob_pattern_p __P((const char *));
-*** a/lib/glob/glob.c 2018-09-20 10:53:23.000000000 -0400
---- b/lib/glob/glob.c 2019-03-07 14:23:43.000000000 -0500
-***************
-*** 1062,1066 ****
- unsigned int directory_len;
- int free_dirname; /* flag */
-! int dflags;
-
- result = (char **) malloc (sizeof (char *));
---- 1078,1082 ----
- unsigned int directory_len;
- int free_dirname; /* flag */
-! int dflags, hasglob;
-
- result = (char **) malloc (sizeof (char *));
-***************
-*** 1111,1117 ****
- }
-
- /* If directory_name contains globbing characters, then we
-! have to expand the previous levels. Just recurse. */
-! if (directory_len > 0 && glob_pattern_p (directory_name))
- {
- char **directories, *d, *p;
---- 1127,1136 ----
- }
-
-+ hasglob = 0;
- /* If directory_name contains globbing characters, then we
-! have to expand the previous levels. Just recurse.
-! If glob_pattern_p returns != [0,1] we have a pattern that has backslash
-! quotes but no unquoted glob pattern characters. We dequote it below. */
-! if (directory_len > 0 && (hasglob = glob_pattern_p (directory_name)) == 1)
- {
- char **directories, *d, *p;
-***************
-*** 1176,1180 ****
- d[directory_len - 1] = '\0';
-
-! directories = glob_filename (d, dflags);
-
- if (free_dirname)
---- 1195,1199 ----
- d[directory_len - 1] = '\0';
-
-! directories = glob_filename (d, dflags|GX_RECURSE);
-
- if (free_dirname)
-***************
-*** 1333,1336 ****
---- 1352,1369 ----
- return (NULL);
- }
-+ /* If we have a directory name with quoted characters, and we are
-+ being called recursively to glob the directory portion of a pathname,
-+ we need to dequote the directory name before returning it so the
-+ caller can read the directory */
-+ if (directory_len > 0 && hasglob == 2 && (flags & GX_RECURSE) != 0)
-+ {
-+ dequote_pathname (directory_name);
-+ directory_len = strlen (directory_name);
-+ }
-+
-+ /* We could check whether or not the dequoted directory_name is a
-+ directory and return it here, returning the original directory_name
-+ if not, but we don't do that yet. I'm not sure it matters. */
-+
- /* Handle GX_MARKDIRS here. */
- result[0] = (char *) malloc (directory_len + 1);
-*** a/pathexp.c 2018-04-29 17:44:48.000000000 -0400
---- b/pathexp.c 2019-01-31 20:19:41.000000000 -0500
-***************
-*** 66,74 ****
- register int c;
- char *send;
-! int open;
-
- DECLARE_MBSTATE;
-
-! open = 0;
- send = string + strlen (string);
-
---- 66,74 ----
- register int c;
- char *send;
-! int open, bsquote;
-
- DECLARE_MBSTATE;
-
-! open = bsquote = 0;
- send = string + strlen (string);
-
-***************
-*** 101,105 ****
- globbing. */
- case '\\':
-! return (*string != 0);
-
- case CTLESC:
---- 101,112 ----
- globbing. */
- case '\\':
-! if (*string != '\0' && *string != '/')
-! {
-! bsquote = 1;
-! string++;
-! continue;
-! }
-! else if (*string == 0)
-! return (0);
-
- case CTLESC:
-***************
-*** 118,122 ****
- #endif
- }
-! return (0);
- }
-
---- 125,130 ----
- #endif
- }
-!
-! return (bsquote ? 2 : 0);
- }
-
-*** a/bashline.c 2019-01-16 16:13:21.000000000 -0500
---- b/bashline.c 2019-02-22 09:29:08.000000000 -0500
-***************
-*** 3753,3757 ****
-
- case '\\':
-! if (*string == 0)
- return (0);
- }
---- 3766,3770 ----
-
- case '\\':
-! if (*string++ == 0)
- return (0);
- }
-*** a/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
---- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 2
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 3
-
- #endif /* _PATCHLEVEL_H_ */
--- /dev/null
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 5.1
+Patch-ID: bash51-003
+
+Bug-Reported-by: oguzismailuysal@gmail.com
+Bug-Reference-ID: <CAH7i3LpG91BnNcDtaTUm2Ph7a+PnJkuh6nAc87cVL7_38tOaMQ@mail.gmail.com>
+Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2020-12/msg00050.html
+
+Bug-Description:
+
+Bash does not put a command substitution process that is started to perform an
+expansion in a child process into the right process group where it can receive
+keyboard-generated signals.
+
+Patch (apply with `patch -p0'):
+
+--- a/subst.c
++++ b/subst.c
+@@ -6356,8 +6356,10 @@ command_substitute (string, quoted, flag
+
+ #if defined (JOB_CONTROL)
+ old_pipeline_pgrp = pipeline_pgrp;
+- /* Don't reset the pipeline pgrp if we're already a subshell in a pipeline. */
+- if ((subshell_environment & SUBSHELL_PIPE) == 0)
++ /* Don't reset the pipeline pgrp if we're already a subshell in a pipeline or
++ we've already forked to run a disk command (and are expanding redirections,
++ for example). */
++ if ((subshell_environment & (SUBSHELL_FORK|SUBSHELL_PIPE)) == 0)
+ pipeline_pgrp = shell_pgrp;
+ cleanup_the_pipeline ();
+ #endif /* JOB_CONTROL */
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 2
++#define PATCHLEVEL 3
+
+ #endif /* _PATCHLEVEL_H_ */
+++ /dev/null
- BASH PATCH REPORT
- =================
-
-Bash-Release: 5.0
-Patch-ID: bash50-004
-
-Bug-Reported-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-Bug-Reference-ID: <87lg0g8aiw.fsf@fifthhorseman.net>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-04/msg00076.html
-
-Bug-Description:
-
-In bash-5.0, the `wait' builtin without arguments waits for all children of the
-shell. This includes children it `inherited' at shell invocation time. This
-patch modifies the behavior to not wait for these inherited children, some
-of which might be long-lived.
-
-Patch (apply with `patch -p0'):
-
-*** a/jobs.c 2018-12-06 11:44:34.000000000 -0500
---- b/jobs.c 2019-04-12 15:15:10.000000000 -0400
-***************
-*** 2489,2496 ****
- wait_procsubs ();
- reap_procsubs ();
-! #if 1
- /* We don't want to wait indefinitely if we have stopped children. */
-- /* XXX - should add a loop that goes through the list of process
-- substitutions and waits for each proc in turn before this code. */
- if (any_stopped == 0)
- {
---- 2490,2495 ----
- wait_procsubs ();
- reap_procsubs ();
-! #if 0
- /* We don't want to wait indefinitely if we have stopped children. */
- if (any_stopped == 0)
- {
-*** a/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
---- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 3
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 4
-
- #endif /* _PATCHLEVEL_H_ */
--- /dev/null
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 5.1
+Patch-ID: bash51-004
+
+Bug-Reported-by: oguzismailuysal@gmail.com
+Bug-Reference-ID: <CAH7i3LoHGmwaghDpCWRUfcY04gQmeDTH3RiG=bf2b=KbU=gyhw@mail.gmail.com>
+Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2020-12/msg00039.html
+
+Bug-Description:
+
+If a key-value compound array assignment to an associative array is supplied
+as an assignment statement argument to the `declare' command that declares the
+array, the assignment doesn't perform the correct word expansions.
+
+This patch makes key-value assignment and subscript assignment perform the
+same expansions when they're supplied as an argument to `declare'.
+
+Patch (apply with `patch -p0'):
+
+--- a/arrayfunc.c
++++ b/arrayfunc.c
+@@ -597,6 +597,27 @@ assign_assoc_from_kvlist (var, nlist, h,
+ free (aval);
+ }
+ }
++
++/* Return non-zero if L appears to be a key-value pair associative array
++ compound assignment. */
++int
++kvpair_assignment_p (l)
++ WORD_LIST *l;
++{
++ return (l && (l->word->flags & W_ASSIGNMENT) == 0 && l->word->word[0] != '['); /*]*/
++}
++
++char *
++expand_and_quote_kvpair_word (w)
++ char *w;
++{
++ char *t, *r;
++
++ t = w ? expand_assignment_string_to_string (w, 0) : 0;
++ r = sh_single_quote (t ? t : "");
++ free (t);
++ return r;
++}
+ #endif
+
+ /* Callers ensure that VAR is not NULL. Associative array assignments have not
+@@ -640,7 +661,7 @@ assign_compound_array_list (var, nlist,
+ last_ind = (a && (flags & ASS_APPEND)) ? array_max_index (a) + 1 : 0;
+
+ #if ASSOC_KVPAIR_ASSIGNMENT
+- if (assoc_p (var) && nlist && (nlist->word->flags & W_ASSIGNMENT) == 0 && nlist->word->word[0] != '[') /*]*/
++ if (assoc_p (var) && kvpair_assignment_p (nlist))
+ {
+ iflags = flags & ~ASS_APPEND;
+ assign_assoc_from_kvlist (var, nlist, nhash, iflags);
+--- a/arrayfunc.h
++++ b/arrayfunc.h
+@@ -67,6 +67,9 @@ extern SHELL_VAR *assign_array_var_from_
+ extern char *expand_and_quote_assoc_word PARAMS((char *, int));
+ extern void quote_compound_array_list PARAMS((WORD_LIST *, int));
+
++extern int kvpair_assignment_p PARAMS((WORD_LIST *));
++extern char *expand_and_quote_kvpair_word PARAMS((char *));
++
+ extern int unbind_array_element PARAMS((SHELL_VAR *, char *, int));
+ extern int skipsubscript PARAMS((const char *, int, int));
+
+--- a/subst.c
++++ b/subst.c
+@@ -11604,6 +11604,7 @@ expand_oneword (value, flags)
+ {
+ WORD_LIST *l, *nl;
+ char *t;
++ int kvpair;
+
+ if (flags == 0)
+ {
+@@ -11618,11 +11619,21 @@ expand_oneword (value, flags)
+ {
+ /* Associative array */
+ l = parse_string_to_word_list (value, 1, "array assign");
++#if ASSOC_KVPAIR_ASSIGNMENT
++ kvpair = kvpair_assignment_p (l);
++#endif
++
+ /* For associative arrays, with their arbitrary subscripts, we have to
+ expand and quote in one step so we don't have to search for the
+ closing right bracket more than once. */
+ for (nl = l; nl; nl = nl->next)
+ {
++#if ASSOC_KVPAIR_ASSIGNMENT
++ if (kvpair)
++ /* keys and values undergo the same set of expansions */
++ t = expand_and_quote_kvpair_word (nl->word->word);
++ else
++#endif
+ if ((nl->word->flags & W_ASSIGNMENT) == 0)
+ t = sh_single_quote (nl->word->word ? nl->word->word : "");
+ else
+--- a/patchlevel.h
++++ b/patchlevel.h
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 3
++#define PATCHLEVEL 4
+
+ #endif /* _PATCHLEVEL_H_ */
+++ /dev/null
- BASH PATCH REPORT
- =================
-
-Bash-Release: 5.0
-Patch-ID: bash50-005
-
-Bug-Reported-by: Brad Spencer <bspencer@blackberry.com>
-Bug-Reference-ID: <1b993ff2-ce4f-662a-6be4-393457362e47@blackberry.com>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-01/msg00250.html
-
-Bug-Description:
-
-In certain cases, bash optimizes out a fork() call too early and prevents
-traps from running.
-
-Patch (apply with `patch -p0'):
-
-*** a/command.h 2018-07-20 21:16:31.000000000 -0400
---- b/command.h 2019-02-20 11:09:36.000000000 -0500
-***************
-*** 187,190 ****
---- 188,192 ----
- #define CMD_LASTPIPE 0x2000
- #define CMD_STDPATH 0x4000 /* use standard path for command lookup */
-+ #define CMD_TRY_OPTIMIZING 0x8000 /* try to optimize this simple command */
-
- /* What a command looks like. */
-*** a/builtins/evalstring.c 2018-12-26 11:19:21.000000000 -0500
---- b/builtins/evalstring.c 2019-01-29 14:15:19.000000000 -0500
-***************
-*** 101,104 ****
---- 101,113 ----
- }
-
-+ int
-+ can_optimize_connection (command)
-+ COMMAND *command;
-+ {
-+ return (*bash_input.location.string == '\0' &&
-+ (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR || command->value.Connection->connector == ';') &&
-+ command->value.Connection->second->type == cm_simple);
-+ }
-+
- void
- optimize_fork (command)
-***************
-*** 106,110 ****
- {
- if (command->type == cm_connection &&
-! (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR) &&
- should_suppress_fork (command->value.Connection->second))
- {
---- 115,120 ----
- {
- if (command->type == cm_connection &&
-! (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR || command->value.Connection->connector == ';') &&
-! (command->value.Connection->second->flags & CMD_TRY_OPTIMIZING) &&
- should_suppress_fork (command->value.Connection->second))
- {
-***************
-*** 413,418 ****
- command->value.Simple->flags |= CMD_NO_FORK;
- }
-! else if (command->type == cm_connection)
-! optimize_fork (command);
- #endif /* ONESHOT */
-
---- 423,438 ----
- command->value.Simple->flags |= CMD_NO_FORK;
- }
-!
-! /* Can't optimize forks out here execept for simple commands.
-! This knows that the parser sets up commands as left-side heavy
-! (&& and || are left-associative) and after the single parse,
-! if we are at the end of the command string, the last in a
-! series of connection commands is
-! command->value.Connection->second. */
-! else if (command->type == cm_connection && can_optimize_connection (command))
-! {
-! command->value.Connection->second->flags |= CMD_TRY_OPTIMIZING;
-! command->value.Connection->second->value.Simple->flags |= CMD_TRY_OPTIMIZING;
-! }
- #endif /* ONESHOT */
-
-*** a/execute_cmd.c 2018-12-05 09:05:14.000000000 -0500
---- b/execute_cmd.c 2019-01-25 15:59:00.000000000 -0500
-***************
-*** 2768,2771 ****
---- 2768,2773 ----
- (exec_result != EXECUTION_SUCCESS)))
- {
-+ optimize_fork (command);
-+
- second = command->value.Connection->second;
- if (ignore_return && second)
-*** a/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
---- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 4
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 5
-
- #endif /* _PATCHLEVEL_H_ */
+++ /dev/null
- BASH PATCH REPORT
- =================
-
-Bash-Release: 5.0
-Patch-ID: bash50-006
-
-Bug-Reported-by: Tomas Mozes <hydrapolic@gmail.com>
-Bug-Reference-ID: <CAG6MAzQumLU2vhnmr1UrYAUQAFW5Yo8hfM_sEibX9RJQWJkRrA@mail.gmail.com>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-03/msg00037.html
-
-Bug-Description:
-
-Bash-5.0 did not build successfully if SYSLOG_HISTORY was defined without
-also defining SYSLOG_SHOPT.
-
-Patch (apply with `patch -p0'):
-
-*** a/builtins/shopt.def 2018-10-05 14:49:02.000000000 -0400
---- b/builtins/shopt.def 2019-01-23 09:55:22.000000000 -0500
-***************
-*** 123,127 ****
- #endif
-
-! #if defined (SYSLOG_HISTORY) && defined (SYSLOG_SHOPT)
- extern int syslog_history;
- #endif
---- 123,127 ----
- #endif
-
-! #if defined (SYSLOG_HISTORY)
- extern int syslog_history;
- #endif
-*** a/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
---- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 5
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 6
-
- #endif /* _PATCHLEVEL_H_ */
+++ /dev/null
- BASH PATCH REPORT
- =================
-
-Bash-Release: 5.0
-Patch-ID: bash50-007
-
-Bug-Reported-by: Grisha Levit <grishalevit@gmail.com>
-Bug-Reference-ID: <CAMu=BroHapG1AS3xB5SQaCX2XKu=-E2Ob9uW6LNuHvd=YohrDw@mail.gmail.com>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2019-02/msg00067.html
-
-Bug-Description:
-
-Running `exec' when job control was disabled, even temporarily, but after it
-had been initialized, could leave the terminal in the wrong process group for
-the executed process.
-
-Patch (apply with `patch -p0'):
-
-*** a/jobs.c 2018-12-06 11:44:34.000000000 -0500
---- b/jobs.c 2019-04-12 15:15:10.000000000 -0400
-***************
-*** 4838,4850 ****
- {
- if (job_control)
-! {
-! terminate_stopped_jobs ();
-
-! if (original_pgrp >= 0)
-! give_terminal_to (original_pgrp, 1);
-! }
-
-! if (original_pgrp >= 0)
-! setpgid (0, original_pgrp);
- }
-
---- 4838,4848 ----
- {
- if (job_control)
-! terminate_stopped_jobs ();
-
-! if (original_pgrp >= 0 && terminal_pgrp != original_pgrp)
-! give_terminal_to (original_pgrp, 1);
-
-! if (original_pgrp >= 0 && setpgid (0, original_pgrp) == 0)
-! shell_pgrp = original_pgrp;
- }
-
-*** a/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
---- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 6
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 7
-
- #endif /* _PATCHLEVEL_H_ */
+++ /dev/null
- BASH PATCH REPORT
- =================
-
-Bash-Release: 5.0
-Patch-ID: bash50-008
-
-Bug-Reported-by: Michael Albinus <michael.albinus@gmx.de>
-Bug-Reference-ID: <87bm36k3kz.fsf@gmx.de>
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2019-02/msg00111.html
-
-Bug-Description:
-
-When HISTSIZE is set to 0, history expansion can leave the history length
-set to an incorrect value, leading to subsequent attempts to access invalid
-memory.
-
-Patch (apply with `patch -p0'):
-
-*** a/bashhist.c 2018-07-05 22:41:14.000000000 -0400
---- b/bashhist.c 2019-02-20 16:20:04.000000000 -0500
-***************
-*** 561,573 ****
- if (!history_expansion_inhibited && history_expansion && history_expansion_p (line))
- {
- /* If we are expanding the second or later line of a multi-line
- command, decrease history_length so references to history expansions
- in these lines refer to the previous history entry and not the
- current command. */
- if (history_length > 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1)
- history_length--;
- expanded = history_expand (line, &history_value);
- if (history_length >= 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1)
-! history_length++;
-
- if (expanded)
---- 561,576 ----
- if (!history_expansion_inhibited && history_expansion && history_expansion_p (line))
- {
-+ int old_len;
-+
- /* If we are expanding the second or later line of a multi-line
- command, decrease history_length so references to history expansions
- in these lines refer to the previous history entry and not the
- current command. */
-+ old_len = history_length;
- if (history_length > 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1)
- history_length--;
- expanded = history_expand (line, &history_value);
- if (history_length >= 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1)
-! history_length = old_len;
-
- if (expanded)
-
-*** a/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
---- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 7
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 8
-
- #endif /* _PATCHLEVEL_H_ */
+++ /dev/null
- BASH PATCH REPORT
- =================
-
-Bash-Release: 5.0
-Patch-ID: bash50-009
-
-Bug-Reported-by: chet.ramey@case.edu
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-The history file reading code doesn't close the file descriptor open to
-the history file when it encounters a zero-length file.
-
-Patch (apply with `patch -p0'):
-
-*** a/lib/readline/histfile.c 2018-06-11 09:14:52.000000000 -0400
---- b/lib/readline/histfile.c 2019-05-16 15:55:57.000000000 -0400
-***************
-*** 306,309 ****
---- 312,316 ----
- {
- free (input);
-+ close (file);
- return 0; /* don't waste time if we don't have to */
- }
-*** a/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
---- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 8
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 9
-
- #endif /* _PATCHLEVEL_H_ */
+++ /dev/null
- BASH PATCH REPORT
- =================
-
-Bash-Release: 5.0
-Patch-ID: bash50-010
-
-Bug-Reported-by: Thorsten Glaser <tg@mirbsd.de>
-Bug-Reference-ID: <156622962831.19438.16374961114836556294.reportbug@tglase.lan.tarent.de>
-Bug-Reference-URL: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=935115
-
-Bug-Description:
-
-Bash-5.0 changed the way assignment statements preceding special builtins
-and shell functions were handled in posix mode. They automatically created
-or modified global variables instead of modifying existing local variables
-as in bash-4.4.
-
-The bash-4.4 posix-mode semantics were buggy, and resulted in creating
-local variables where they were not intended and modifying global variables
-and local variables simultaneously.
-
-The bash-5.0 changes were intended to fix this issue, but did not preserve
-enough backwards compatibility. The posix standard also changed what it
-required in these cases, so bash-5.0 is not bound by the strict conformance
-requirements that existed in previous issues of the standard.
-
-This patch modifies the bash-5.0 posix mode behavior in an effort to restore
-some backwards compatibility and rationalize the behavior in the presence of
-local variables. It
-
-1. Changes the assignment semantics to be more similar to standalone assignment
- statements: assignments preceding a function call or special builtin while
- executing in a shell function will modify the value of a local variable
- with the same name for the duration of the function's execution;
-
-2. Changes assignments preceding shell function calls or special builtins
- from within a shell function to no longer create or modify global variables
- in the presence of a local variable with the same name;
-
-3. Assignment statements preceding a shell function call or special builtin
- at the global scope continue to modify the (global) calling environment,
- but are unaffected by assignments preceding function calls or special
- builtins within a function, as described in item 2. This is also similar
- to the behavior of a standalone assignment statement.
-
-Patch (apply with `patch -p0'):
-
-*** a/variables.c 2018-12-18 11:07:21.000000000 -0500
---- b/variables.c 2019-08-22 10:53:44.000000000 -0400
-***************
-*** 4461,4467 ****
-
- /* Take a variable from an assignment statement preceding a posix special
-! builtin (including `return') and create a global variable from it. This
-! is called from merge_temporary_env, which is only called when in posix
-! mode. */
- static void
- push_posix_temp_var (data)
---- 4461,4467 ----
-
- /* Take a variable from an assignment statement preceding a posix special
-! builtin (including `return') and create a variable from it as if a
-! standalone assignment statement had been performed. This is called from
-! merge_temporary_env, which is only called when in posix mode. */
- static void
- push_posix_temp_var (data)
-***************
-*** 4473,4486 ****
- var = (SHELL_VAR *)data;
-
-! binding_table = global_variables->table;
-! if (binding_table == 0)
-! binding_table = global_variables->table = hash_create (VARIABLES_HASH_BUCKETS);
-!
-! v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, ASS_FORCE|ASS_NOLONGJMP);
-
- /* global variables are no longer temporary and don't need propagating. */
-! var->attributes &= ~(att_tempvar|att_propagate);
- if (v)
-! v->attributes |= var->attributes;
-
- if (find_special_var (var->name) >= 0)
---- 4473,4497 ----
- var = (SHELL_VAR *)data;
-
-! /* Just like do_assignment_internal(). This makes assignments preceding
-! special builtins act like standalone assignment statements when in
-! posix mode, satisfying the posix requirement that this affect the
-! "current execution environment." */
-! v = bind_variable (var->name, value_cell (var), ASS_FORCE|ASS_NOLONGJMP);
-!
-! /* If this modifies an existing local variable, v->context will be non-zero.
-! If it comes back with v->context == 0, we bound at the global context.
-! Set binding_table appropriately. It doesn't matter whether it's correct
-! if the variable is local, only that it's not global_variables->table */
-! binding_table = v->context ? shell_variables->table : global_variables->table;
-
- /* global variables are no longer temporary and don't need propagating. */
-! if (binding_table == global_variables->table)
-! var->attributes &= ~(att_tempvar|att_propagate);
-!
- if (v)
-! {
-! v->attributes |= var->attributes;
-! v->attributes &= ~att_tempvar; /* not a temp var now */
-! }
-
- if (find_special_var (var->name) >= 0)
-***************
-*** 4576,4587 ****
- {
- int i;
-
- tempvar_list = strvec_create (HASH_ENTRIES (temporary_env) + 1);
- tempvar_list[tvlist_ind = 0] = 0;
-!
-! hash_flush (temporary_env, pushf);
-! hash_dispose (temporary_env);
- temporary_env = (HASH_TABLE *)NULL;
-
- tempvar_list[tvlist_ind] = 0;
-
---- 4587,4601 ----
- {
- int i;
-+ HASH_TABLE *disposer;
-
- tempvar_list = strvec_create (HASH_ENTRIES (temporary_env) + 1);
- tempvar_list[tvlist_ind = 0] = 0;
-!
-! disposer = temporary_env;
- temporary_env = (HASH_TABLE *)NULL;
-
-+ hash_flush (disposer, pushf);
-+ hash_dispose (disposer);
-+
- tempvar_list[tvlist_ind] = 0;
-
-*** a/tests/varenv.right 2018-12-17 15:39:48.000000000 -0500
---- b/tests/varenv.right 2019-08-22 16:05:25.000000000 -0400
-***************
-*** 147,153 ****
- outside: declare -- var="one"
- inside: declare -x var="value"
-! outside: declare -x var="value"
-! inside: declare -- var="local"
-! outside: declare -x var="global"
- foo=<unset> environment foo=
- foo=foo environment foo=foo
---- 147,153 ----
- outside: declare -- var="one"
- inside: declare -x var="value"
-! outside: declare -- var="outside"
-! inside: declare -x var="global"
-! outside: declare -- var="outside"
- foo=<unset> environment foo=
- foo=foo environment foo=foo
-*** a/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
---- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 9
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 10
-
- #endif /* _PATCHLEVEL_H_ */
+++ /dev/null
- BASH PATCH REPORT
- =================
-
-Bash-Release: 5.0
-Patch-ID: bash50-011
-
-Bug-Reported-by: Matt Whitlock
-Bug-Reference-ID:
-Bug-Reference-URL: https://savannah.gnu.org/support/?109671
-
-Bug-Description:
-
-The conditional command did not perform appropriate quoted null character
-removal on its arguments, causing syntax errors and attempts to stat
-invalid pathnames.
-
-Patch (apply with `patch -p0'):
-
-*** a/subst.c 2018-12-22 17:43:37.000000000 -0500
---- b/subst.c 2019-04-14 13:25:41.000000000 -0400
-***************
-*** 3626,3630 ****
- SPECIAL is 2, this is an rhs argument for the =~ operator, and should
- be quoted appropriately for regcomp/regexec. The caller is responsible
-! for removing the backslashes if the unquoted word is needed later. */
- char *
- cond_expand_word (w, special)
---- 3642,3648 ----
- SPECIAL is 2, this is an rhs argument for the =~ operator, and should
- be quoted appropriately for regcomp/regexec. The caller is responsible
-! for removing the backslashes if the unquoted word is needed later. In
-! any case, since we don't perform word splitting, we need to do quoted
-! null character removal. */
- char *
- cond_expand_word (w, special)
-***************
-*** 3647,3650 ****
---- 3665,3670 ----
- if (special == 0) /* LHS */
- {
-+ if (l->word)
-+ word_list_remove_quoted_nulls (l);
- dequote_list (l);
- r = string_list (l);
-*** a/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
---- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 10
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 11
-
- #endif /* _PATCHLEVEL_H_ */
+++ /dev/null
- BASH PATCH REPORT
- =================
-
-Bash-Release: 5.0
-Patch-ID: bash50-012
-
-Bug-Reported-by: lessbug@qq.com
-Bug-Reference-ID: <tencent_6AA531D9A5CC4121D86BD5CDA2E0DA98C605@qq.com>
-Bug-Reference-URL:
-
-Bug-Description:
-
-When using previous-history to go back beyond the beginning of the history list,
-it's possible to move to an incorrect partial line.
-
-Patch (apply with `patch -p0'):
-
-*** a/lib/readline/misc.c 2017-07-07 17:30:12.000000000 -0400
---- b/lib/readline/misc.c 2019-05-16 11:43:46.000000000 -0400
-***************
-*** 577,580 ****
---- 590,594 ----
- {
- HIST_ENTRY *old_temp, *temp;
-+ int had_saved_line;
-
- if (count < 0)
-***************
-*** 589,592 ****
---- 603,607 ----
-
- /* If we don't have a line saved, then save this one. */
-+ had_saved_line = _rl_saved_line_for_history != 0;
- rl_maybe_save_line ();
-
-***************
-*** 612,616 ****
- if (temp == 0)
- {
-! rl_maybe_unsave_line ();
- rl_ding ();
- }
---- 627,632 ----
- if (temp == 0)
- {
-! if (had_saved_line == 0)
-! _rl_free_saved_history_line ();
- rl_ding ();
- }
-*** a/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
---- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 11
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 12
-
- #endif /* _PATCHLEVEL_H_ */
+++ /dev/null
- BASH PATCH REPORT
- =================
-
-Bash-Release: 5.0
-Patch-ID: bash50-013
-
-Bug-Reported-by: HIROSE Masaaki <hirose31@gmail.com>
-Bug-Reference-ID: <CAGSOfA-RqiTe=+GsXsDKyZrrMWH4bDbXgMVVegMa6OjqC5xbnQ@mail.gmail.com>
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2019-05/msg00038.html
-
-Bug-Description:
-
-Reading history entries with timestamps can result in history entries joined
-by linefeeds.
-
-Patch (apply with `patch -p0'):
-
-*** a/lib/readline/histfile.c 2018-06-11 09:14:52.000000000 -0400
---- b/lib/readline/histfile.c 2019-05-16 15:55:57.000000000 -0400
-***************
-*** 370,376 ****
-
- has_timestamps = HIST_TIMESTAMP_START (buffer);
-! history_multiline_entries += has_timestamps && history_write_timestamps;
-
- /* Skip lines until we are at FROM. */
- for (line_start = line_end = buffer; line_end < bufend && current_line < from; line_end++)
- if (*line_end == '\n')
---- 370,378 ----
-
- has_timestamps = HIST_TIMESTAMP_START (buffer);
-! history_multiline_entries += has_timestamps && history_write_timestamps;
-
- /* Skip lines until we are at FROM. */
-+ if (has_timestamps)
-+ last_ts = buffer;
- for (line_start = line_end = buffer; line_end < bufend && current_line < from; line_end++)
- if (*line_end == '\n')
-***************
-*** 381,385 ****
---- 383,398 ----
- if (HIST_TIMESTAMP_START(p) == 0)
- current_line++;
-+ else
-+ last_ts = p;
- line_start = p;
-+ /* If we are at the last line (current_line == from) but we have
-+ timestamps (has_timestamps), then line_start points to the
-+ text of the last command, and we need to skip to its end. */
-+ if (current_line >= from && has_timestamps)
-+ {
-+ for (line_end = p; line_end < bufend && *line_end != '\n'; line_end++)
-+ ;
-+ line_start = (*line_end == '\n') ? line_end + 1 : line_end;
-+ }
- }
-
-
-*** a/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
---- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 12
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 13
-
- #endif /* _PATCHLEVEL_H_ */
+++ /dev/null
- BASH PATCH REPORT
- =================
-
-Bash-Release: 5.0
-Patch-ID: bash50-014
-
-Bug-Reported-by: Johannes Hielscher <jhielscher@posteo.de>
-Bug-Reference-ID: <20190208205048.77c25a83@hordevm>
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2019-02/msg00032.html
-
-Bug-Description:
-
-If the current line is empty, using the emacs C-xC-e binding to enter the
-editor will edit the previous command instead of the current (empty) one.
-
-Patch (apply with `patch -p0'):
-
-*** a/bashline.c 2019-01-16 16:13:21.000000000 -0500
---- b/bashline.c 2019-02-11 11:18:57.000000000 -0500
-***************
-*** 962,970 ****
- finished with the command, so we should not ignore the last command */
- using_history ();
-! if (rl_line_buffer[0])
-! {
-! current_command_line_count++; /* for rl_newline above */
-! bash_add_history (rl_line_buffer);
-! }
- current_command_line_count = 0; /* for dummy history entry */
- bash_add_history ("");
---- 965,970 ----
- finished with the command, so we should not ignore the last command */
- using_history ();
-! current_command_line_count++; /* for rl_newline above */
-! bash_add_history (rl_line_buffer);
- current_command_line_count = 0; /* for dummy history entry */
- bash_add_history ("");
-*** a/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
---- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 13
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 14
-
- #endif /* _PATCHLEVEL_H_ */
+++ /dev/null
- BASH PATCH REPORT
- =================
-
-Bash-Release: 5.0
-Patch-ID: bash50-015
-
-Bug-Reported-by: Yu Kou <ckyoog@gmail.com>
-Bug-Reference-ID: <CAAqoF9Ko3nAShJXGzucafs-ByUagzZ4nbQonwEkwC7s9UqfWKw@mail.gmail.com>
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2019-05/msg00032.html
-
-Bug-Description:
-
-If alias expansion is enabled when processing the command argument to the
-`-c' option, an alias is defined in that command, and the command ends with
-the invocation of that alias, the shell's command parser can prematurely
-terminate before the entire command is executed.
-
-Patch (apply with `patch -p0'):
-
-*** a/builtins/evalstring.c 2019-01-29 14:15:19.000000000 -0500
---- b/builtins/evalstring.c 2019-05-15 14:19:36.000000000 -0400
-***************
-*** 92,95 ****
---- 92,96 ----
- running_trap == 0 &&
- *bash_input.location.string == '\0' &&
-+ parser_expanding_alias () == 0 &&
- command->type == cm_simple &&
- signal_is_trapped (EXIT_TRAP) == 0 &&
-***************
-*** 106,109 ****
---- 107,111 ----
- {
- return (*bash_input.location.string == '\0' &&
-+ parser_expanding_alias () == 0 &&
- (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR || command->value.Connection->connector == ';') &&
- command->value.Connection->second->type == cm_simple);
-***************
-*** 291,295 ****
- with_input_from_string (string, from_file);
- clear_shell_input_line ();
-! while (*(bash_input.location.string))
- {
- command = (COMMAND *)NULL;
---- 293,297 ----
- with_input_from_string (string, from_file);
- clear_shell_input_line ();
-! while (*(bash_input.location.string) || parser_expanding_alias ())
- {
- command = (COMMAND *)NULL;
-***************
-*** 546,550 ****
-
- with_input_from_string (string, from_file);
-! while (*(bash_input.location.string))
- {
- command = (COMMAND *)NULL;
---- 548,552 ----
-
- with_input_from_string (string, from_file);
-! while (*(bash_input.location.string)) /* XXX - parser_expanding_alias () ? */
- {
- command = (COMMAND *)NULL;
-*** a/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
---- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 14
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 15
-
- #endif /* _PATCHLEVEL_H_ */
+++ /dev/null
- BASH PATCH REPORT
- =================
-
-Bash-Release: 5.0
-Patch-ID: bash50-016
-
-Bug-Reported-by: sunnycemetery@gmail.com
-Bug-Reference-ID: <20190316041534.GB22884@midnight>
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2019-03/msg00070.html
-
-Bug-Description:
-
-Bash waits too long to reap /dev/fd process substitutions used as redirections
-with loops and group commands, which can lead to file descriptor exhaustion.
-
-Patch (apply with `patch -p0'):
-
-*** a/execute_cmd.c 2019-04-19 15:46:36.000000000 -0400
---- b/execute_cmd.c 2019-07-01 16:45:49.000000000 -0400
-***************
-*** 1104,1107 ****
---- 1085,1104 ----
- discard_unwind_frame ("internal_fifos");
- }
-+ # if defined (HAVE_DEV_FD)
-+ /* Reap process substitutions at the end of loops */
-+ switch (command->type)
-+ {
-+ case cm_while:
-+ case cm_until:
-+ case cm_for:
-+ case cm_group:
-+ # if defined (ARITH_FOR_COMMAND)
-+ case cm_arith_for:
-+ # endif
-+ reap_procsubs ();
-+ default:
-+ break;
-+ }
-+ # endif /* HAVE_DEV_FD */
- #endif
-
-
-*** a/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
---- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 15
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 16
-
- #endif /* _PATCHLEVEL_H_ */
+++ /dev/null
- BASH PATCH REPORT
- =================
-
-Bash-Release: 5.0
-Patch-ID: bash50-017
-
-Bug-Reported-by: Valentin Lab <valentin.lab@kalysto.org>
-Bug-Reference-ID: <ab981b9c-60a5-46d0-b7e6-a6d88b80df50@kalysto.org>
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2020-03/msg00062.html
-
-Bug-Description:
-
-There were cases where patch 16 reaped process substitution file descriptors
-(or FIFOs) and processes to early. This is a better fix for the problem that
-bash50-016 attempted to solve.
-
-Patch (apply with `patch -p0'):
-
-*** a/subst.c 2019-08-29 11:16:49.000000000 -0400
---- b/subst.c 2020-04-02 16:24:19.000000000 -0400
-***************
-*** 5337,5341 ****
- }
-
-! char *
- copy_fifo_list (sizep)
- int *sizep;
---- 5337,5341 ----
- }
-
-! void *
- copy_fifo_list (sizep)
- int *sizep;
-***************
-*** 5343,5347 ****
- if (sizep)
- *sizep = 0;
-! return (char *)NULL;
- }
-
---- 5343,5347 ----
- if (sizep)
- *sizep = 0;
-! return (void *)NULL;
- }
-
-***************
-*** 5409,5414 ****
- if (fifo_list[i].file)
- {
-! fifo_list[j].file = fifo_list[i].file;
-! fifo_list[j].proc = fifo_list[i].proc;
- j++;
- }
---- 5409,5419 ----
- if (fifo_list[i].file)
- {
-! if (i != j)
-! {
-! fifo_list[j].file = fifo_list[i].file;
-! fifo_list[j].proc = fifo_list[i].proc;
-! fifo_list[i].file = (char *)NULL;
-! fifo_list[i].proc = 0;
-! }
- j++;
- }
-***************
-*** 5426,5433 ****
- void
- close_new_fifos (list, lsize)
-! char *list;
- int lsize;
- {
- int i;
-
- if (list == 0)
---- 5431,5439 ----
- void
- close_new_fifos (list, lsize)
-! void *list;
- int lsize;
- {
- int i;
-+ char *plist;
-
- if (list == 0)
-***************
-*** 5437,5442 ****
- }
-
-! for (i = 0; i < lsize; i++)
-! if (list[i] == 0 && i < fifo_list_size && fifo_list[i].proc != -1)
- unlink_fifo (i);
-
---- 5443,5448 ----
- }
-
-! for (plist = (char *)list, i = 0; i < lsize; i++)
-! if (plist[i] == 0 && i < fifo_list_size && fifo_list[i].proc != -1)
- unlink_fifo (i);
-
-***************
-*** 5560,5568 ****
- }
-
-! char *
- copy_fifo_list (sizep)
- int *sizep;
- {
-! char *ret;
-
- if (nfds == 0 || totfds == 0)
---- 5566,5574 ----
- }
-
-! void *
- copy_fifo_list (sizep)
- int *sizep;
- {
-! void *ret;
-
- if (nfds == 0 || totfds == 0)
-***************
-*** 5570,5579 ****
- if (sizep)
- *sizep = 0;
-! return (char *)NULL;
- }
-
- if (sizep)
- *sizep = totfds;
-! ret = (char *)xmalloc (totfds * sizeof (pid_t));
- return (memcpy (ret, dev_fd_list, totfds * sizeof (pid_t)));
- }
---- 5576,5585 ----
- if (sizep)
- *sizep = 0;
-! return (void *)NULL;
- }
-
- if (sizep)
- *sizep = totfds;
-! ret = xmalloc (totfds * sizeof (pid_t));
- return (memcpy (ret, dev_fd_list, totfds * sizeof (pid_t)));
- }
-***************
-*** 5648,5655 ****
- void
- close_new_fifos (list, lsize)
-! char *list;
- int lsize;
- {
- int i;
-
- if (list == 0)
---- 5654,5662 ----
- void
- close_new_fifos (list, lsize)
-! void *list;
- int lsize;
- {
- int i;
-+ pid_t *plist;
-
- if (list == 0)
-***************
-*** 5659,5664 ****
- }
-
-! for (i = 0; i < lsize; i++)
-! if (list[i] == 0 && i < totfds && dev_fd_list[i])
- unlink_fifo (i);
-
---- 5666,5671 ----
- }
-
-! for (plist = (pid_t *)list, i = 0; i < lsize; i++)
-! if (plist[i] == 0 && i < totfds && dev_fd_list[i])
- unlink_fifo (i);
-
-*** a/subst.h 2018-10-21 18:46:09.000000000 -0400
---- b/subst.h 2020-04-02 16:29:28.000000000 -0400
-***************
-*** 274,280 ****
- extern void unlink_fifo __P((int));
-
-! extern char *copy_fifo_list __P((int *));
-! extern void unlink_new_fifos __P((char *, int));
-! extern void close_new_fifos __P((char *, int));
-
- extern void clear_fifo_list __P((void));
---- 274,279 ----
- extern void unlink_fifo __P((int));
-
-! extern void *copy_fifo_list __P((int *));
-! extern void close_new_fifos __P((void *, int));
-
- extern void clear_fifo_list __P((void));
-*** a/execute_cmd.c 2020-02-06 20:16:48.000000000 -0500
---- b/execute_cmd.c 2020-04-02 17:00:10.000000000 -0400
-***************
-*** 565,569 ****
- #if defined (PROCESS_SUBSTITUTION)
- volatile int ofifo, nfifo, osize, saved_fifo;
-! volatile char *ofifo_list;
- #endif
-
---- 565,569 ----
- #if defined (PROCESS_SUBSTITUTION)
- volatile int ofifo, nfifo, osize, saved_fifo;
-! volatile void *ofifo_list;
- #endif
-
-***************
-*** 751,760 ****
- # endif
-
-! if (variable_context != 0) /* XXX - also if sourcelevel != 0? */
- {
- ofifo = num_fifos ();
- ofifo_list = copy_fifo_list ((int *)&osize);
- begin_unwind_frame ("internal_fifos");
-! add_unwind_protect (xfree, ofifo_list);
- saved_fifo = 1;
- }
---- 751,762 ----
- # endif
-
-! /* XXX - also if sourcelevel != 0? */
-! if (variable_context != 0)
- {
- ofifo = num_fifos ();
- ofifo_list = copy_fifo_list ((int *)&osize);
- begin_unwind_frame ("internal_fifos");
-! if (ofifo_list)
-! add_unwind_protect (xfree, ofifo_list);
- saved_fifo = 1;
- }
-***************
-*** 1100,1123 ****
- nfifo = num_fifos ();
- if (nfifo > ofifo)
-! close_new_fifos ((char *)ofifo_list, osize);
- free ((void *)ofifo_list);
- discard_unwind_frame ("internal_fifos");
- }
-- # if defined (HAVE_DEV_FD)
-- /* Reap process substitutions at the end of loops */
-- switch (command->type)
-- {
-- case cm_while:
-- case cm_until:
-- case cm_for:
-- case cm_group:
-- # if defined (ARITH_FOR_COMMAND)
-- case cm_arith_for:
-- # endif
-- reap_procsubs ();
-- default:
-- break;
-- }
-- # endif /* HAVE_DEV_FD */
- #endif
-
---- 1102,1109 ----
- nfifo = num_fifos ();
- if (nfifo > ofifo)
-! close_new_fifos ((void *)ofifo_list, osize);
- free ((void *)ofifo_list);
- discard_unwind_frame ("internal_fifos");
- }
- #endif
-
-
-*** a/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
---- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 16
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 17
-
- #endif /* _PATCHLEVEL_H_ */
--- a/Makefile.in
+++ b/Makefile.in
-@@ -791,10 +791,8 @@ loadables:
+@@ -798,10 +798,8 @@ loadables:
# $(MAKE) -f $(srcdir)/Makefile $(MFLAGS) srcdir=$(srcdir)
doc documentation: force
-/* #define SSH_SOURCE_BASHRC */
+#define SSH_SOURCE_BASHRC
- /* Define if you want the case-capitalizing operators (~[~]) and the
+ /* Define if you want the case-toggling operators (~[~]) and the
`capcase' variable attribute (declare -c). */
PKG_NAME:=beep
PKG_REV:=0d790fa45777896749a885c3b93b2c1476d59f20
PKG_VERSION:=1.3
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://github.com/johnath/beep.git
define Package/beep
SECTION:=sound
CATEGORY:=Sound
- DEPENDS:=@(PACKAGE_kmod-pcspkr||PACKAGE_kmod-gpio-beeper)
+ DEPENDS:=+TARGET_x86:kmod-pcspkr @!TARGET_x86:kmod-gpio-beeper
TITLE:=Play beep sounds through a PC speaker
URL:=http://johnath.com/beep/README
endef
PKG_NAME:=bonnie++
PKG_VERSION:=1.98
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
PKG_SOURCE_URL:=https://www.coker.com.au/bonnie++/
bonnie++: $(BONOBJS)
- $(LINK) -o bonnie++ $(BONOBJS) $(THREAD_LFLAGS)
-+ $(CXX) $(CXXFLAGS) -o bonnie++ $(BONOBJS)
++ $(CXX) $(CXXFLAGS) -o bonnie++ $(BONOBJS) @thread_ldflags@
zcav: $(ZCAVOBJS)
- $(LINK) -o zcav $(ZCAVOBJS) $(THREAD_LFLAGS)
-+ $(CXX) $(CXXFLAGS) -o zcav $(ZCAVOBJS)
++ $(CXX) $(CXXFLAGS) -o zcav $(ZCAVOBJS) @thread_ldflags@
getc_putc: $(GETCOBJS) getc_putc_helper
- $(LINK) -o getc_putc $(GETCOBJS) $(THREAD_LFLAGS)
include $(TOPDIR)/rules.mk
PKG_NAME:=cni-plugins
-PKG_VERSION:=0.8.7
-PKG_RELEASE:=2
+PKG_VERSION:=0.9.0
+PKG_RELEASE:=1
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/containernetworking/plugins/archive/v$(PKG_VERSION)
-PKG_HASH:=de9fa170b4b6d38f6ff5287b313ddaf3c31f70bccb10e971ad59adadae22dd74
+PKG_HASH:=54abd2fb7762943ff57832dfba19de12db09f0a0f8e69b31f1a2bb2baca395e7
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>, Paul Spooren <mail@aparcar.org>
PKG_NAME:=collectd
PKG_VERSION:=5.12.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://collectd.org/files/ \
csv \
curl \
df \
+ dhcpleases \
disk \
dns \
email \
$(eval $(call BuildPlugin,curl,cURL input,curl,+PACKAGE_collectd-mod-curl:libcurl))
#$(eval $(call BuildPlugin,dbi,relational database input,dbi,+PACKAGE_collectd-mod-dbi:libdbi))
$(eval $(call BuildPlugin,df,disk space input,df,))
+$(eval $(call BuildPlugin,dhcpleases,show dhcpleases,dhcpleases,))
$(eval $(call BuildPlugin,disk,disk usage/timing input,disk,))
$(eval $(call BuildPlugin,dns,DNS traffic input,dns,+PACKAGE_collectd-mod-dns:libpcap))
$(eval $(call BuildPlugin,email,email output,email,))
--- /dev/null
+From: Nick Hainke <vincent@systemli.org>
+Date: Mon, 7 Dec 2020 23:07:30 +0100
+Subject: [PATCH] dhcpleases: add dhcpleases plugin
+
+Changelog: dhcpleases: add plugin for counting current dhcp leases
+
+The plugin is useful for the Freifunk Community. Currently, we use
+the exec-plugin. With that dhcpleases plugin we have native collectd
+support to measure this important statistic.
+
+Signed-off-by: Nick Hainke <vincent@systemli.org>
+---
+ Makefile.am | 6 ++++
+ README | 3 ++
+ configure.ac | 2 ++
+ src/collectd.conf.in | 5 +++
+ src/dhcpleases.c | 83 ++++++++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 99 insertions(+)
+ create mode 100644 src/dhcpleases.c
+
+diff --git a/Makefile.am b/Makefile.am
+index 00947da0..5ee76a00 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -963,6 +963,12 @@ df_la_LDFLAGS = $(PLUGIN_LDFLAGS)
+ df_la_LIBADD = libignorelist.la libmount.la
+ endif
+
++if BUILD_PLUGIN_DHCPLEASES
++pkglib_LTLIBRARIES += dhcpleases.la
++dhcpleases_la_SOURCES = src/dhcpleases.c
++dhcpleases_la_LDFLAGS = $(PLUGIN_LDFLAGS)
++endif
++
+ if BUILD_PLUGIN_DISK
+ pkglib_LTLIBRARIES += disk.la
+ disk_la_SOURCES = src/disk.c
+diff --git a/README b/README
+index e42e9c24..dd104408 100644
+--- a/README
++++ b/README
+@@ -106,6 +106,9 @@ Features
+ Disk utilization: Sectors read/written, number of read/write actions,
+ average time an IO-operation took to complete.
+
++ - dhcpleases
++ Collect number of current dhcp leases.
++
+ - dns
+ DNS traffic: Query types, response codes, opcodes and traffic/octets
+ transferred.
+diff --git a/configure.ac b/configure.ac
+index bcfb8cf5..6c2b6574 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -7061,6 +7061,7 @@ AC_PLUGIN([curl_xml], [$plugin_curl_xml], [CURL generic xml
+ AC_PLUGIN([dbi], [$with_libdbi], [General database statistics])
+ AC_PLUGIN([dcpmm], [$with_libpmwapi], [Intel(R) Optane(TM) DC Persistent Memory performance and health statistics])
+ AC_PLUGIN([df], [$plugin_df], [Filesystem usage statistics])
++AC_PLUGIN([dhcpleases], [yes], [DHCP Leases])
+ AC_PLUGIN([disk], [$plugin_disk], [Disk usage statistics])
+ AC_PLUGIN([dns], [$with_libpcap], [DNS traffic analysis])
+ AC_PLUGIN([dpdkevents], [$plugin_dpdkevents], [Events from DPDK])
+@@ -7508,6 +7509,7 @@ AC_MSG_RESULT([ curl_xml . . . . . . $enable_curl_xml])
+ AC_MSG_RESULT([ dbi . . . . . . . . . $enable_dbi])
+ AC_MSG_RESULT([ dcpmm . . . . . . . $enable_dcpmm])
+ AC_MSG_RESULT([ df . . . . . . . . . $enable_df])
++AC_MSG_RESULT([ dhcpleases. . . . . . $enable_dhcpleases])
+ AC_MSG_RESULT([ disk . . . . . . . . $enable_disk])
+ AC_MSG_RESULT([ dns . . . . . . . . . $enable_dns])
+ AC_MSG_RESULT([ dpdkevents. . . . . . $enable_dpdkevents])
+diff --git a/src/collectd.conf.in b/src/collectd.conf.in
+index 562a55d9..94659e81 100644
+--- a/src/collectd.conf.in
++++ b/src/collectd.conf.in
+@@ -119,6 +119,7 @@
+ #@BUILD_PLUGIN_DBI_TRUE@LoadPlugin dbi
+ #@BUILD_PLUGIN_DCPMM_TRUE@LoadPlugin dcpmm
+ #@BUILD_PLUGIN_DF_TRUE@LoadPlugin df
++#@BUILD_PLUGIN_DHCPLEASES_TRUE@LoadPlugin dhcpleases
+ #@BUILD_PLUGIN_DISK_TRUE@LoadPlugin disk
+ #@BUILD_PLUGIN_DNS_TRUE@LoadPlugin dns
+ #@BUILD_PLUGIN_DPDKEVENTS_TRUE@LoadPlugin dpdkevents
+@@ -689,6 +690,10 @@
+ # SelectNumericQueryTypes true
+ #</Plugin>
+
++#<Plugin dhcpleases>
++# Path "/tmp/dhcp.leases"
++#</Plugin>
++
+ #<Plugin "dpdkevents">
+ # <EAL>
+ # Coremask "0x1"
+diff --git a/src/dhcpleases.c b/src/dhcpleases.c
+new file mode 100644
+index 00000000..f43d62bf
+--- /dev/null
++++ b/src/dhcpleases.c
+@@ -0,0 +1,83 @@
++#include <errno.h>
++#include <stdio.h>
++
++#include "utils/common/common.h"
++
++#include "configfile.h"
++#include "plugin.h"
++
++static char *dhcp_lease_file;
++
++static const char *config_keys[] = {
++ "Path",
++};
++static int config_keys_num = STATIC_ARRAY_SIZE(config_keys);
++
++/* copied from ping.c plugin */
++static int config_set_string(const char *name, /* {{{ */
++ char **var, const char *value) {
++ char *tmp;
++
++ tmp = strdup(value);
++ if (tmp == NULL) {
++ ERROR("dhcpleases plugin: Setting `%s' to `%s' failed: strdup failed: %s", name,
++ value, STRERRNO);
++ return 1;
++ }
++
++ if (*var != NULL)
++ free(*var);
++ *var = tmp;
++ return 0;
++} /* }}} int config_set_string */
++
++static int dhcpleases_config(const char *key, const char *value) {
++ if (strcasecmp(key, "Path") == 0) {
++ int status = config_set_string(key, &dhcp_lease_file, value);
++ if (status != 0)
++ return status;
++ }
++ return 0;
++}
++
++static void dhcpleases_submit(gauge_t counter) {
++ value_list_t vl = VALUE_LIST_INIT;
++ value_t values[] = {
++ {.gauge = counter},
++ };
++
++ vl.values = values;
++ vl.values_len = STATIC_ARRAY_SIZE(values);
++
++ sstrncpy(vl.plugin, "dhcpleases", sizeof(vl.plugin));
++ sstrncpy(vl.type, "count", sizeof(vl.type));
++
++ plugin_dispatch_values(&vl);
++}
++
++static int dhcp_leases_read(void) {
++
++ FILE *fh;
++ char buffer[1024];
++ gauge_t count = 0;
++
++ if ((fh = fopen(dhcp_lease_file, "r")) == NULL) {
++ WARNING("interface plugin: fopen: %s", STRERRNO);
++ return -1;
++ }
++
++ while (fgets(buffer, 1024, fh) != NULL) {
++ count++;
++ }
++ fclose(fh);
++
++ dhcpleases_submit(count);
++
++ return 0;
++}
++
++void module_register(void) {
++ plugin_register_config("dhcpleases", dhcpleases_config, config_keys,
++ config_keys_num);
++ plugin_register_read("dhcpleases", dhcp_leases_read);
++}
+--
+2.29.2
+
include $(TOPDIR)/rules.mk
PKG_NAME:=conmon
-PKG_VERSION:=2.0.21
-PKG_RELEASE:=1
+PKG_VERSION:=2.0.22
+PKG_RELEASE:=3
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/containers/$(PKG_NAME)/archive/v$(PKG_VERSION)
-PKG_HASH:=03c357c2ee35317e781111d59c4f3fb34033e77a17a8f4221f2ed6d3bcc10c25
+PKG_HASH:=41181db43c544cdd1a31aa851286e8c09a825879656f00f6adde431830893983
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
+PKG_BUILD_DEPENDS:=golang/host
PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
include $(TOPDIR)/rules.mk
PKG_NAME:=containerd
-PKG_VERSION:=1.3.7
+PKG_VERSION:=1.4.3
PKG_RELEASE:=1
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/containerd/containerd/tar.gz/v${PKG_VERSION}?
-PKG_HASH:=d30d59e143697aa4f0960205b3f5ac59c573b332f20507740ef2dc0fb5ae8ded
-PKG_SOURCE_VERSION:=8fba4e9a7d01810a393d5d25a3621dc101981175
+PKG_HASH:=bc6d9452c700af0ebc09c0da8ddba55be4c03ac8928e72ca92d98905800c8018
+PKG_SOURCE_VERSION:=269548fa27e0089a8b8278fc4fc781d7f65a939b
PKG_MAINTAINER:=Gerard Ryan <G.M0N3Y.2503@gmail.com>
include $(INCLUDE_DIR)/package.mk
include ../../lang/golang/golang-package.mk
-define Package/containerd/config
-config CONTAINERD_SECCOMP
- depends on PACKAGE_containerd
- bool "Enable support for seccomp in containerd"
- default DOCKER_SECCOMP
- select KERNEL_SECCOMP
- help
- Build containerd with support for seccomp filters.
- Also pulls-in the needed kernel features.
-endef
-
define Package/containerd
SECTION:=utils
CATEGORY:=Utilities
TITLE:=containerd container runtime
URL:=https://containerd.io/
- DEPENDS:=$(GO_ARCH_DEPENDS) @(aarch64||arm||x86_64) +btrfs-progs +runc +libseccomp
+ DEPENDS:=$(GO_ARCH_DEPENDS) @(aarch64||arm||x86_64) +btrfs-progs +runc
MENU:=1
endef
VERSION=$(PKG_VERSION) \
REVISION=$(PKG_SOURCE_VERSION)
-ifeq ($(CONFIG_CONTAINERD_SECCOMP),y)
-MAKE_FLAGS += BUILDTAGS='seccomp'
+ifeq ($(CONFIG_SELINUX),y)
+MAKE_FLAGS += BUILDTAGS='selinux'
else
MAKE_FLAGS += BUILDTAGS=''
endif
define Package/containerd/install
$(INSTALL_DIR) $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/bin/{ctr,containerd,containerd-stress,containerd-shim} $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/bin/{ctr,containerd,containerd-stress,containerd-shim,containerd-shim-runc-v1,containerd-shim-runc-v2} $(1)/usr/bin/
endef
$(eval $(call BuildPackage,containerd))
include $(TOPDIR)/rules.mk
PKG_NAME:=coremark
-PKG_SOURCE_DATE:=2020-09-16
-PKG_SOURCE_VERSION:=41537ea30b0104438b4ff993e7d349af26900acf
-PKG_RELEASE:=2
+PKG_SOURCE_DATE:=2020-12-17
+PKG_SOURCE_VERSION:=5e0f662ce709f1af8d272bd8d3960034603d3850
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_DATE).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/eembc/coremark/tar.gz/$(PKG_SOURCE_VERSION)?
-PKG_HASH:=ebbaa7463084b3261438b9b378c1968532156f7fb90bf3f94f45f0b0b817e181
+PKG_HASH:=fb0a2ee2113322eb976fa521d0ac033a997e0097185c2c2325d84ca94a7f5a6d
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_SOURCE_VERSION)
PKG_MAINTAINER:=Lim Guo Wei <limguowei@gmail.com>
PKG_NAME:=coreutils
PKG_VERSION:=8.32
-PKG_RELEASE:=5
+PKG_RELEASE:=6
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GNU/coreutils
base32 b2sum basenc csplit dir dircolors fmt join numfmt pathchk pinky \
pr ptx sha224sum sha384sum stdbuf tsort vdir
-$(eval $(foreach a,$(DIR_BIN),ALTS_$(a):=300:/bin/$(a):/usr/bin/gnu-$(a)$(newline)))
-$(eval $(foreach a,$(DIR_USR_BIN),ALTS_$(a):=300:/usr/bin/$(a):/usr/bin/gnu-$(a)$(newline)))
-$(eval $(foreach a,$(DIR_USR_SBIN),ALTS_$(a):=300:/usr/sbin/$(a):/usr/bin/gnu-$(a)$(newline)))
+$(eval $(foreach a,$(DIR_BIN),ALTS_$(a):=300:/bin/$(a):/usr/libexec/$(a)-coreutils$(newline)))
+$(eval $(foreach a,$(DIR_USR_BIN),ALTS_$(a):=300:/usr/bin/$(a):/usr/libexec/$(a)-coreutils$(newline)))
+$(eval $(foreach a,$(DIR_USR_SBIN),ALTS_$(a):=300:/usr/sbin/$(a):/usr/libexec/$(a)-coreutils$(newline)))
DEPENDS_sort = +libpthread
DEPENDS_timeout = +librt
define BuildPlugin
define Package/$(1)/install
- $(INSTALL_DIR) $$(1)/usr/bin
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/$(2) $$(1)/usr/bin/$(if $(ALTS_$(2)),gnu-$(2),$(2))
+ $(INSTALL_DIR) $$(1)/usr/$(if $(ALTS_$(2)),libexec,bin)
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/$(2) $$(1)/usr/$(if $(ALTS_$(2)),libexec/$(2)-coreutils,bin/$(2))
$(foreach f,$(FILES_$(2)),
$(INSTALL_DIR) $$(1)/$(dir $(f))
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/$(f) $$(1)/$(f)
PKG_NAME:=crelay
PKG_VERSION:=0.14
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/ondrej1024/crelay/tar.gz/V$(PKG_VERSION)?
--- /dev/null
+From 30a2323bc0a95cda4eca818fe1d523a2e5c031f3 Mon Sep 17 00:00:00 2001
+From: Pawel Dembicki <paweldembicki@gmail.com>
+Date: Mon, 2 Nov 2020 14:50:34 +0100
+Subject: [PATCH] support gpio with number bigger than 255
+
+Change 8-bit gpio value to 16-bit, which allow to use gpio >255.
+
+Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
+---
+ src/data_types.h | 16 ++++++++--------
+ src/relay_drv_gpio.c | 10 +++++-----
+ 2 files changed, 13 insertions(+), 13 deletions(-)
+
+diff --git a/src/data_types.h b/src/data_types.h
+index f13baeb..d4dc7b1 100644
+--- a/src/data_types.h
++++ b/src/data_types.h
+@@ -56,14 +56,14 @@ typedef struct
+ /* [GPIO drv] */
+ uint8_t gpio_num_relays;
+ uint8_t gpio_active_value;
+- uint8_t relay1_gpio_pin;
+- uint8_t relay2_gpio_pin;
+- uint8_t relay3_gpio_pin;
+- uint8_t relay4_gpio_pin;
+- uint8_t relay5_gpio_pin;
+- uint8_t relay6_gpio_pin;
+- uint8_t relay7_gpio_pin;
+- uint8_t relay8_gpio_pin;
++ uint16_t relay1_gpio_pin;
++ uint16_t relay2_gpio_pin;
++ uint16_t relay3_gpio_pin;
++ uint16_t relay4_gpio_pin;
++ uint16_t relay5_gpio_pin;
++ uint16_t relay6_gpio_pin;
++ uint16_t relay7_gpio_pin;
++ uint16_t relay8_gpio_pin;
+
+ /* [Sainsmart drv] */
+ uint8_t sainsmart_num_relays;
+diff --git a/src/relay_drv_gpio.c b/src/relay_drv_gpio.c
+index 705c157..28464be 100644
+--- a/src/relay_drv_gpio.c
++++ b/src/relay_drv_gpio.c
+@@ -53,7 +53,7 @@
+ #define GPIO_BASE_FILE GPIO_BASE_DIR"gpio"
+
+
+-static uint8_t pins[] =
++static uint16_t pins[] =
+ {
+ 0, // dummy
+ 0, // pin 1
+@@ -85,7 +85,7 @@ int set_relay_generic_gpio(char* portname, uint8_t relay, relay_state_t relay_st
+ * -1 - fail
+ * -2 - already exported
+ *********************************************************/
+-static int do_export(uint8_t pin)
++static int do_export(uint16_t pin)
+ {
+ int fd;
+ char b[64];
+@@ -151,7 +151,7 @@ static int do_export(uint8_t pin)
+ * Return: 0 - success
+ * -1 - fail
+ *********************************************************/
+-static int do_unexport(uint8_t pin)
++static int do_unexport(uint16_t pin)
+ {
+ int fd;
+ char b[64];
+@@ -261,7 +261,7 @@ int get_relay_generic_gpio(char* portname, uint8_t relay, relay_state_t* relay_s
+ int fd;
+ char b[64];
+ char d[1];
+- uint8_t pin;
++ uint16_t pin;
+
+ if (relay<FIRST_RELAY || relay>(FIRST_RELAY+g_num_relays-1))
+ {
+@@ -324,7 +324,7 @@ int set_relay_generic_gpio(char* portname, uint8_t relay, relay_state_t relay_st
+ int fd;
+ char b[64];
+ char d[1];
+- uint8_t pin;
++ uint16_t pin;
+
+ if (relay<FIRST_RELAY || relay>(FIRST_RELAY+g_num_relays-1))
+ {
+--
+2.17.1
+
+++ /dev/null
-config DOCKER_KERNEL_OPTIONS
- bool "Enable Basic kernel support for Docker"
- depends on PACKAGE_docker-ce
- default y
- select KERNEL_CGROUPS
- select KERNEL_CGROUP_CPUACCT
- select KERNEL_CGROUP_DEVICE
- select KERNEL_CGROUP_FREEZER
- select KERNEL_CGROUP_SCHED
- select KERNEL_NAMESPACES
- select KERNEL_CPUSETS
- select KERNEL_MEMCG
- select KERNEL_KEYS
- select KERNEL_POSIX_MQUEUE
- help
- Select needed kernel options for Docker. Options include
- cgroups, namespaces and other miscellaneous options.
- see also https://github.com/docker/engine/blob/master/contrib/check-config.sh
-
-config DOCKER_SECCOMP
- bool "Enable support for seccomp in Docker"
- depends on PACKAGE_docker-ce
- default n
- select KERNEL_SECCOMP
- select PACKAGE_libseccomp
- help
- Build Docker with support for seccomp filters.
- Select libseccomp which also pulls-in the needed kernel features.
-
-config DOCKER_RES_SHAPE
- bool "Enables support for resource shaping"
- depends on PACKAGE_docker-ce
- default n
- select KERNEL_MEMCG_SWAP
- select KERNEL_MEMCG_SWAP_ENABLED
- select KERNEL_BLK_DEV_THROTTLING
- select KERNEL_CFQ_GROUP_IOSCHED
- select KERNEL_CGROUP_PERF
- select KERNEL_CGROUP_HUGETLB
- select KERNEL_FAIR_GROUP_SCHED
- select KERNEL_NET_CLS_CGROUP
- select KERNEL_CGROUP_NET_CLASSID
- select KERNEL_CGROUP_NET_PRIO
- select KERNEL_CFS_BANDWIDTH
- select KERNEL_RT_GROUP_SCHED
-
-menu "Network"
- depends on PACKAGE_docker-ce
-
- config DOCKER_NET_OVERLAY
- bool "Enables the Overlay network feature"
- default n
- select PACKAGE_kmod-udptunnel4
- help
- Selects kernel options for the Overlay network feature.
- Includes udptunnel4
-
- config DOCKER_NET_ENCRYPT
- bool "Enable encrypted networking kernel support"
- depends on DOCKER_NET_OVERLAY
- default n
- select PACKAGE_kmod-ipsec
- select PACKAGE_kmod-ipsec4
- select PACKAGE_kmod-crypto-gcm
- select PACKAGE_kmod-crypto-ghash
- help
- Select needed kernel options for encrypted networking support.
-
- config DOCKER_NET_MACVLAN
- bool "Enables macvlan kernel support"
- default n
- select PACKAGE_kmod-macvlan
- select PACKAGE_kmod-dummy
-
- config DOCKER_NET_TFTP
- bool "Enable ftp/tftp client kernel support"
- default n
- select PACKAGE_kmod-nf-nathelper
- select PACKAGE_kmod-nf-nathelper-extra
-endmenu
-
-menu "Storage"
- depends on PACKAGE_docker-ce
-
- config DOCKER_STO_EXT4
- bool "Enables support for ext3 or ext4 as the backing filesystem"
- default n
- select KERNEL_EXT4_FS_POSIX_ACL
-
- config DOCKER_STO_BTRFS
- bool "Enables support for btrfs as the backing filesystem"
- default n
- select PACKAGE_kmod-fs-btrfs
- select KERNEL_BTRFS_FS_POSIX_ACL
-endmenu
+++ /dev/null
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=docker-ce
-PKG_VERSION:=19.03.13
-PKG_RELEASE:=4
-PKG_LICENSE:=Apache-2.0
-PKG_LICENSE_FILES:=components/cli/LICENSE components/engine/LICENSE
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://codeload.github.com/docker/docker-ce/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=b2ff08675738031b6d6d59a90226657c16726851957c11b5fb85a4598b933b92
-PKG_SOURCE_VERSION:=4484c46d9d # SHA1 used within the docker executables
-
-PKG_MAINTAINER:=Gerard Ryan <G.M0N3Y.2503@gmail.com>
-
-# $(1) = path to dependent package 'Makefile'
-# $(2) = relevant docker-ce '.installer' file
-define EnsureVendoredVersion
- ( \
- DEP_VER=$$$$( grep --only-matching --perl-regexp '(?<=PKG_SOURCE_VERSION:=)(.*)' "$(1)" ); \
- VEN_VER=$$$$( grep --only-matching --perl-regexp '(?<=_COMMIT:=)(.*)(?=})' "$(PKG_BUILD_DIR)/components/engine/hack/dockerfile/install/$(2)" ); \
- if [ $$$$VEN_VER != $$$$DEP_VER ]; then \
- echo "ERROR: Expected 'PKG_SOURCE_VERSION:=$$$$VEN_VER' in '$(1)', found 'PKG_SOURCE_VERSION:=$$$$DEP_VER'"; \
- exit 1; \
- fi \
- )
-endef
-
-PKG_BUILD_DEPENDS:=golang/host
-PKG_BUILD_PARALLEL:=1
-
-GO_PKG:=github.com/docker
-
-include $(INCLUDE_DIR)/package.mk
-include ../../lang/golang/golang-package.mk
-
-define Package/docker-ce/config
- source "$(SOURCE)/Config.in"
-endef
-
-define Package/docker-ce
- SECTION:=utils
- CATEGORY:=Utilities
- TITLE:=Docker Community Edition
- URL:=https://www.docker.com/
- DEPENDS:=$(GO_ARCH_DEPENDS) @(aarch64||arm||x86_64) +btrfs-progs +ca-certificates +cgroupfs-mount +containerd +libdevmapper +libnetwork +tini \
- +DOCKER_SECCOMP:libseccomp +iptables-mod-extra +kmod-br-netfilter +kmod-ikconfig +kmod-nf-conntrack-netlink +kmod-nf-ipvs +kmod-veth
- USERID:=docker:docker
- MENU:=1
-endef
-
-define Package/docker-ce/conffiles
-/etc/config/dockerd
-endef
-
-define Package/docker-ce/description
- Docker Engine is used by millions enables containerized applications
- to run anywhere consistently on any infrastructure.
-endef
-
-define Build/Prepare
- $(Build/Prepare/Default)
-
- # Verify dependencies are the vendored version
- $(call EnsureVendoredVersion,../containerd/Makefile,containerd.installer)
- $(call EnsureVendoredVersion,../libnetwork/Makefile,proxy.installer)
- $(call EnsureVendoredVersion,../runc/Makefile,runc.installer)
- $(call EnsureVendoredVersion,../tini/Makefile,tini.installer)
-endef
-
-define Build/Configure
- # move so GoPackage/Build/Configure will get the correct path
- mv $(PKG_BUILD_DIR)/components/engine $(PKG_BUILD_DIR)/
- mv $(PKG_BUILD_DIR)/components/cli $(PKG_BUILD_DIR)/
-
- # docker generates files at build time so we'll just symlink for now and call GoPackage/Build/Configure later
- mkdir -p $(GO_PKG_BUILD_DIR)/bin \
- $(GO_PKG_BUILD_DIR)/src \
- $(GO_PKG_BUILD_DIR)/src/$(GO_PKG)/ \
- $(GO_BUILD_CACHE_DIR)
- $(LN) $(PKG_BUILD_DIR)/cli $(GO_PKG_BUILD_DIR)/src/$(GO_PKG)/cli
- $(LN) $(PKG_BUILD_DIR)/engine $(GO_PKG_BUILD_DIR)/src/$(GO_PKG)/docker
-endef
-
-ifeq ($(CONFIG_DOCKER_SECCOMP),y)
-BUILDTAGS:=seccomp
-else
-BUILDTAGS:=
-endif
-
-define Build/Compile
- ( \
- export $(GO_PKG_VARS) \
- GITCOMMIT=$(PKG_SOURCE_VERSION) \
- DOCKER_GITCOMMIT=$(PKG_SOURCE_VERSION) \
- DOCKER_BUILDTAGS='$(BUILDTAGS)' \
- VERSION=$(PKG_VERSION) \
- \
- && echo "Compiling CLI..." \
- && cd $(PKG_BUILD_DIR)/cli \
- && ./scripts/build/binary \
- \
- && echo "Compiling Engine..." \
- && cd $(PKG_BUILD_DIR)/engine \
- && ./hack/make.sh binary \
- )
-
- # done here to include autogenerated files also
- rm $(GO_PKG_BUILD_DIR)/src/$(GO_PKG)/cli
- rm $(GO_PKG_BUILD_DIR)/src/$(GO_PKG)/docker
- $(call GoPackage/Build/Configure)
-endef
-
-define Package/docker-ce/install
- $(INSTALL_DIR) $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/cli/build/docker $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/engine/bundles/binary-daemon/dockerd $(1)/usr/bin/
-
- $(INSTALL_DIR) $(1)/opt/docker/
- $(INSTALL_DIR) $(1)/usr/share/docker/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/engine/contrib/check-config.sh $(1)/usr/share/docker/
-
- $(INSTALL_DIR) $(1)/etc/init.d
- $(INSTALL_BIN) ./files/dockerd.init $(1)/etc/init.d/dockerd
-
- $(INSTALL_DIR) $(1)/etc/config
- $(INSTALL_CONF) ./files/etc/config/dockerd $(1)/etc/config/dockerd
-
- # Must be after systcl 11-br-netfilter.conf from kmod-br-netfilter
- $(INSTALL_DIR) $(1)/etc/sysctl.d
- $(INSTALL_DATA) ./files/etc/sysctl.d/sysctl-br-netfilter-ip.conf \
- $(1)/etc/sysctl.d/12-br-netfilter-ip.conf
-endef
-
-define Package/docker-ce/postinst
-#!/bin/sh
-[ -n "$$IPKG_INSTROOT" ] || {
- /etc/init.d/dockerd enable
- /etc/init.d/dockerd uciadd
- /etc/init.d/dockerd start
-}
-endef
-
-define Package/docker-ce/prerm
-#!/bin/sh
-[ -n "$$IPKG_INSTROOT" ] || {
- /etc/init.d/dockerd disable
- /etc/init.d/dockerd stop
- /etc/init.d/dockerd ucidel
-}
-endef
-
-$(eval $(call BuildPackage,docker-ce))
+++ /dev/null
-#!/bin/sh /etc/rc.common
-
-USE_PROCD=1
-START=25
-
-extra_command "uciadd" "<interface> <device> <zone> Add docker bridge configuration to network and firewall uci config"
-extra_command "ucidel" "<interface> <device> <zone> Delete docker bridge configuration from network and firewall uci config"
-
-DOCKER_CONF_DIR="/tmp/dockerd"
-DOCKERD_CONF="${DOCKER_CONF_DIR}/daemon.json"
-
-uci_quiet() {
- uci -q "${@}" >/dev/null
-}
-
-json_add_array_string() {
- json_add_string "" "${1}"
-}
-
-boot() {
- uciadd
- rc_procd start_service
-}
-
-uciadd() {
- local iface="$1"
- local device="$2"
- local zone="$3"
-
- [ -z "$iface" ] && {
- iface="docker"
- device="docker0"
- zone="docker"
- }
-
- /etc/init.d/dockerd running && {
- echo "Please stop dockerd service first"
- exit 0
- }
-
- # Add network interface
- if ! uci_quiet get network.${iface}; then
- logger -t "dockerd-init" -p notice "Adding docker default interface to network uci config (${iface})"
- uci_quiet add network interface
- uci_quiet rename network.@interface[-1]="${iface}"
- uci_quiet set network.@interface[-1].ifname="${device}"
- uci_quiet set network.@interface[-1].proto="none"
- uci_quiet set network.@interface[-1].auto="0"
- uci_quiet commit network
- fi
-
- # Add docker bridge device
- if ! uci_quiet get network.${device}; then
- logger -t "dockerd-init" -p notice "Adding docker default bridge device to network uci config (${device})"
- uci_quiet add network device
- uci_quiet rename network.@device[-1]="${device}"
- uci_quiet set network.@device[-1].type="bridge"
- uci_quiet set network.@device[-1].name="${device}"
- uci_quiet add_list network.@device[-1].ifname="${device}"
- uci_quiet commit network
- fi
-
- # Add firewall zone
- if ! uci_quiet get firewall.${zone}; then
- logger -t "dockerd-init" -p notice "Adding docker default firewall zone to firewall uci config (${zone})"
- uci_quiet add firewall zone
- uci_quiet rename firewall.@zone[-1]="${zone}"
- uci_quiet set firewall.@zone[-1].network="${iface}"
- uci_quiet set firewall.@zone[-1].input="REJECT"
- uci_quiet set firewall.@zone[-1].output="ACCEPT"
- uci_quiet set firewall.@zone[-1].forward="REJECT"
- uci_quiet set firewall.@zone[-1].name="${zone}"
- uci_quiet commit firewall
- fi
-
- reload_config
-}
-
-ucidel() {
- local iface="$1"
- local device="$2"
- local zone="$3"
-
- [ -z "$iface" ] && {
- iface="docker"
- device="docker0"
- zone="docker"
- }
-
- /etc/init.d/dockerd running && {
- echo "Please stop dockerd service first"
- exit 0
- }
-
- if uci_quiet get network.${device}; then
- logger -t "dockerd-init" -p notice "Deleting docker default bridge device from network uci config (${device})"
- uci_quiet delete network.${device}
- uci_quiet commit network
- fi
-
- if uci_quiet get network.${iface}; then
- logger -t "dockerd-init" -p notice "Deleting docker default interface from network uci config (${iface})"
- uci_quiet delete network.${iface}
- uci_quiet commit network
- fi
-
- if uci_quiet get firewall.${zone}; then
- logger -t "dockerd-init" -p notice "Deleting docker firewall zone from firewall uci config (${zone})"
- uci_quiet delete firewall.${zone}
- uci_quiet commit firewall
- fi
-
- reload_config
-}
-
-process_config() {
- local alt_config_file data_root log_level iptables bip
-
- [ -f /etc/config/dockerd ] || {
- # Use the daemon default configuration
- DOCKERD_CONF=""
- return 0
- }
-
- # reset configuration
- rm -fr "${DOCKER_CONF_DIR}"
- mkdir -p "${DOCKER_CONF_DIR}"
-
- config_load 'dockerd'
- config_get alt_config_file globals alt_config_file
- [ -n "${alt_config_file}" ] && [ -f "${alt_config_file}" ] && {
- ln -s "${alt_config_file}" "${DOCKERD_CONF}"
- return 0
- }
-
- config_get data_root globals data_root "/opt/docker/"
- config_get log_level globals log_level "warn"
- config_get_bool iptables globals iptables "1"
- config_get bip globals bip ""
-
- . /usr/share/libubox/jshn.sh
- json_init
- json_add_string "data-root" "${data_root}"
- json_add_string "log-level" "${log_level}"
- [ -z "${bip}" ] || json_add_string "bip" "${bip}"
- json_add_array "registry-mirrors"
- config_list_foreach globals registry_mirrors json_add_array_string
- json_close_array
- json_add_array "hosts"
- config_list_foreach globals hosts json_add_array_string
- json_close_array
-
- json_add_boolean iptables "${iptables}"
- [ "${iptables}" -ne "0" ] && config_foreach iptables_add_blocking_rule firewall
-
- json_dump > "${DOCKERD_CONF}"
-}
-
-start_service() {
- local nofile=$(cat /proc/sys/fs/nr_open)
-
- process_config
-
- procd_open_instance
- procd_set_param stderr 1
- if [ -z "${DOCKERD_CONF}" ]; then
- procd_set_param command /usr/bin/dockerd
- else
- procd_set_param command /usr/bin/dockerd --config-file="${DOCKERD_CONF}"
- fi
- procd_set_param limits nofile="${nofile} ${nofile}"
- procd_close_instance
-}
-
-reload_service() {
- process_config
- procd_send_signal dockerd
-}
-
-service_triggers() {
- procd_add_reload_trigger 'dockerd'
-}
-
-iptables_add_blocking_rule() {
- local cfg="$1"
-
- local device=""
-
- handle_iptables_rule() {
- local interface="$1"
- local outbound="$2"
-
- local inbound=""
-
- . /lib/functions/network.sh
- network_get_physdev inbound "${interface}"
-
- [ -z "$inbound" ] && {
- logger -t "dockerd-init" -p notice "Unable to get physical device for interface ${interface}"
- return
- }
-
- if ! iptables --table filter --check DOCKER-USER --in-interface "${inbound}" --out-interface "${outbound}" --jump DROP 2>/dev/null; then
- logger -t "dockerd-init" -p notice "Drop traffic from ${inbound} to ${outbound}"
- iptables --table filter --insert DOCKER-USER --in-interface "${inbound}" --out-interface "${outbound}" --jump DROP
- fi
- }
-
- config_get device "$cfg" device
-
- [ -z "$device" ] && {
- logger -t "dockerd-init" -p notice "No device configured for ${cfg}"
- return
- }
-
- config_list_foreach "$cfg" blocked_interfaces handle_iptables_rule "$device"
-}
-
-stop_service() {
- if /etc/init.d/dockerd running; then
- service_stop "/usr/bin/dockerd"
- fi
-}
+++ /dev/null
-# The following settings require a restart to take full effect, A reload will
-# only have partial or no effect:
-# option bip
-# list blocked_interfaces
-
-config globals 'globals'
-# option alt_config_file "/etc/docker/daemon.json"
- option data_root "/opt/docker/"
- option log_level "warn"
- list hosts "unix:///var/run/docker.sock"
- option bip "172.18.0.1/24"
-# option iptables "0"
-# list registry_mirrors "https://<my-docker-mirror-host>"
-# list registry_mirrors "https://hub.docker.com"
-
-# Docker ignores fw3 rules and by default all external source IPs are allowed
-# to connect to the Docker host. See https://docs.docker.com/network/iptables/
-config firewall 'firewall'
- option device 'docker0'
- list blocked_interfaces 'wan'
+++ /dev/null
-# Do not edit, changes to this file will be lost on upgrades
-# /etc/sysctl.conf can be used to customize sysctl settings
-
-# enable bridge firewalling for docker
-net.bridge.bridge-nf-call-ip6tables=1
-net.bridge.bridge-nf-call-iptables=1
-
+++ /dev/null
-Index: docker-ce-18.09.0/components/engine/hack/make.sh
-===================================================================
---- docker-ce-18.09.0.orig/components/engine/hack/make.sh
-+++ docker-ce-18.09.0/components/engine/hack/make.sh
-@@ -129,7 +129,7 @@ fi
- # with a newer libdevmapper than the one it was built with.
- if \
- command -v gcc &> /dev/null \
-- && ! ( echo -e '#include <libdevmapper.h>\nint main() { dm_task_deferred_remove(NULL); }'| gcc -xc - -o /dev/null $(pkg-config --libs devmapper) &> /dev/null ) \
-+ && ! ( echo -e '#include <libdevmapper.h>\nint main() { dm_task_deferred_remove(NULL); }'| gcc -xc - -o /dev/null $(pkg-config --libs libdevmapper) &> /dev/null ) \
- ; then
- add_buildtag libdm dlsym_deferred_remove
- fi
+++ /dev/null
-From 2fdfb4404ab811cb00227a3de111437b829e55cf Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 17 Jul 2019 17:34:04 +0800
-Subject: [PATCH] imporve hardcoded CC on cross compile
-
-Since commit applied in moby [61a3285 Support cross-compile for arm]
-it hardcoded var-CC to support cross-compile for arm
-
-Correct it with "${parameter:-word}" format, it is helpful for user
-define toolchains
-
-(Use Default Values. If parameter is unset or null, the expansion of
-word is substituted. Otherwise, the value of parameter is substituted.)
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-Upstream-commit: 3c701e4db1b8646c2324ae524b4e7ca1b1147a07
-Component: engine
----
- components/engine/hack/make/.binary | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/components/engine/hack/make/.binary b/components/engine/hack/make/.binary
-index 53de6749e5..66f4ca05f3 100644
---- a/components/engine/hack/make/.binary
-+++ b/components/engine/hack/make/.binary
-@@ -44,27 +44,27 @@ if [ "$(go env GOOS)/$(go env GOARCH)" != "$(go env GOHOSTOS)/$(go env GOHOSTARC
- # must be cross-compiling!
- case "$(go env GOOS)/$(go env GOARCH)" in
- windows/amd64)
-- export CC=x86_64-w64-mingw32-gcc
-+ export CC="${CC:-x86_64-w64-mingw32-gcc}"
- export CGO_ENABLED=1
- ;;
- linux/arm)
- case "${GOARM}" in
- 5|"")
-- export CC=arm-linux-gnueabi-gcc
-+ export CC="${CC:-arm-linux-gnueabi-gcc}"
- export CGO_ENABLED=1
- ;;
- 7)
-- export CC=arm-linux-gnueabihf-gcc
-+ export CC="${CC:-arm-linux-gnueabihf-gcc}"
- export CGO_ENABLED=1
- ;;
- esac
- ;;
- linux/arm64)
-- export CC=aarch64-linux-gnu-gcc
-+ export CC="${CC:-aarch64-linux-gnu-gcc}"
- export CGO_ENABLED=1
- ;;
- linux/amd64)
-- export CC=x86_64-linux-gnu-gcc
-+ export CC="${CC:-x86_64-linux-gnu-gcc}"
- export CGO_ENABLED=1
- ;;
- esac
PKG_NAME:=docker-compose
PKG_VERSION:=1.27.4
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PYPI_NAME:=docker-compose
PKG_HASH:=5a5690f24c27d4b43dcbe6b3fae91ba680713208e99ee863352b3bae37bcaa83
CATEGORY:=Utilities
TITLE:=Docker Compose
URL:=https://github.com/docker/compose
- DEPENDS+=+docker-ce \
+ DEPENDS+=+docker \
+python3-light \
+python3-cached-property \
+python3-distro \
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=docker
+PKG_VERSION:=20.10.1
+PKG_RELEASE:=1
+PKG_LICENSE:=Apache-2.0
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/docker/cli/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=4ee7cc9c3f6287ca834166aaa1a945790c54d9a8345a1b449a193d9c739f2a7d
+PKG_SOURCE_VERSION:=562ea3c09c # SHA1 used within the docker executable
+
+PKG_MAINTAINER:=Gerard Ryan <G.M0N3Y.2503@gmail.com>
+
+PKG_BUILD_DEPENDS:=golang/host
+PKG_BUILD_PARALLEL:=1
+
+GO_PKG:=github.com/docker/cli
+
+include $(INCLUDE_DIR)/package.mk
+include ../../lang/golang/golang-package.mk
+
+define Package/docker
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=Docker Community Edition CLI
+ URL:=https://www.docker.com/
+ DEPENDS:=$(GO_ARCH_DEPENDS) @(aarch64||arm||x86_64)
+endef
+
+define Package/docker/description
+The CLI used in the Docker CE and Docker EE products.
+endef
+
+TAR_OPTIONS:=--strip-components 1 $(TAR_OPTIONS)
+TAR_CMD=$(HOST_TAR) -C $(1) $(TAR_OPTIONS)
+
+define Build/Compile
+ ( \
+ cd $(PKG_BUILD_DIR); \
+ $(GO_PKG_VARS) \
+ GITCOMMIT=$(PKG_SOURCE_VERSION) \
+ VERSION=$(PKG_VERSION) \
+ ./scripts/build/binary; \
+ )
+endef
+
+define Package/docker/install
+ $(INSTALL_DIR) $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/build/docker $(1)/usr/bin/
+endef
+$(eval $(call BuildPackage,docker))
--- /dev/null
+# These options are mostly specified by https://github.com/moby/moby/blob/master/contrib/check-config.sh
+
+config DOCKER_CGROUP_OPTIONS
+ bool "Enable available kernel support for CGroupsV1"
+ default n
+ depends on PACKAGE_dockerd
+ select KERNEL_CGROUP_DEVICE
+ select KERNEL_CGROUP_FREEZER
+ select KERNEL_NET_CLS_CGROUP
+ select KERNEL_CGROUP_NET_PRIO
+ select PACKAGE_cgroupfs-mount
+ help
+ Selects kernel options to enable CGroups V1.
+
+config DOCKER_OPTIONAL_FEATURES
+ bool "Enable optional kernel support for Docker"
+ default n
+ depends on PACKAGE_dockerd
+ select KERNEL_MEMCG_SWAP_ENABLED
+ select KERNEL_CFQ_GROUP_IOSCHED
+ select KERNEL_CGROUP_PERF
+ select KERNEL_CGROUP_HUGETLB
+ help
+ Select 'Optional Features' kernel options for Docker that are unselected.
+ See https://github.com/moby/moby/blob/master/contrib/check-config.sh
+
+menu "Network"
+ depends on PACKAGE_dockerd
+
+ config DOCKER_NET_OVERLAY
+ bool "Includes the Overlay network feature"
+ default n
+ select PACKAGE_kmod-vxlan
+ help
+ Selects kmod-vxlan for the Overlay network feature.
+
+ config DOCKER_NET_ENCRYPT
+ bool "Includes encrypted networking kernel modules"
+ depends on DOCKER_NET_OVERLAY
+ default n
+ select PACKAGE_kmod-crypto-gcm
+ select PACKAGE_kmod-crypto-seqiv
+ select PACKAGE_kmod-crypto-ghash
+ select PACKAGE_kmod-ipsec
+ help
+ Select needed kernel modules for encrypted networking support.
+
+ config DOCKER_NET_MACVLAN
+ bool "Includes macvlan kernel modules"
+ default n
+ select PACKAGE_kmod-macvlan
+ select PACKAGE_kmod-dummy
+
+ config DOCKER_NET_TFTP
+ bool "Includes ftp/tftp client kernel modules"
+ default n
+ select PACKAGE_kmod-nf-nathelper
+ select PACKAGE_kmod-nf-nathelper-extra
+endmenu
+
+menu "Storage"
+ depends on PACKAGE_dockerd
+
+ config DOCKER_STO_EXT4
+ bool "Enables support for ext3 or ext4 as the backing filesystem"
+ default n
+ select KERNEL_EXT4_FS_POSIX_ACL
+ select KERNEL_EXT4_FS_SECURITY
+
+ config DOCKER_STO_BTRFS
+ bool "Enables support for btrfs as the backing filesystem"
+ default n
+ select KERNEL_BTRFS_FS_POSIX_ACL
+endmenu
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=dockerd
+PKG_VERSION:=20.10.1
+PKG_RELEASE:=1
+PKG_LICENSE:=Apache-2.0
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/moby/moby/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=f0fda46a82bf8f624eb349370358891d3bc65ef3e320675226f17dba8f62566d
+PKG_SOURCE_VERSION:=cdd80e813e # SHA1 used within the docker executables
+
+PKG_MAINTAINER:=Gerard Ryan <G.M0N3Y.2503@gmail.com>
+
+PKG_BUILD_DEPENDS:=golang/host
+PKG_BUILD_PARALLEL:=1
+
+GO_PKG:=github.com/docker/docker
+
+include $(INCLUDE_DIR)/package.mk
+include ../../lang/golang/golang-package.mk
+
+define Package/dockerd/config
+ source "$(SOURCE)/Config.in"
+endef
+
+define Package/dockerd
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=Docker Community Edition Daemon
+ URL:=https://www.docker.com/
+ DEPENDS:=$(GO_ARCH_DEPENDS) @(aarch64||arm||x86_64) +btrfs-progs +ca-certificates +containerd +libdevmapper +libnetwork +tini \
+ +KERNEL_SECCOMP:libseccomp +iptables-mod-extra +kmod-br-netfilter +kmod-ikconfig +kmod-nf-conntrack-netlink +kmod-nf-ipvs \
+ +kmod-nf-nat +kmod-veth
+ USERID:=docker:docker
+ MENU:=1
+endef
+
+define Package/dockerd/conffiles
+/etc/config/dockerd
+endef
+
+define Package/dockerd/description
+The Docker CE Engine.
+endef
+
+TAR_OPTIONS:=--strip-components 1 $(TAR_OPTIONS)
+TAR_CMD=$(HOST_TAR) -C $(1) $(TAR_OPTIONS)
+
+# $(1) = path to dependent package 'Makefile'
+# $(2) = relevant dependency '.installer' file
+define EnsureVendoredVersion
+ ( \
+ DEP_VER=$$$$( grep --only-matching --perl-regexp '(?<=PKG_SOURCE_VERSION:=)(.*)' "$(1)" ); \
+ VEN_VER=$$$$( grep --only-matching --perl-regexp '(?<=_COMMIT:=)(.*)(?=})' "$(PKG_BUILD_DIR)/hack/dockerfile/install/$(2)" ); \
+ if [ $$$$VEN_VER != $$$$DEP_VER ]; then \
+ echo "ERROR: Expected 'PKG_SOURCE_VERSION:=$$$$VEN_VER' in '$(1)', found 'PKG_SOURCE_VERSION:=$$$$DEP_VER'"; \
+ exit 1; \
+ fi \
+ )
+endef
+
+define Build/Prepare
+ $(Build/Prepare/Default)
+
+ # Verify dependencies are the vendored version
+ $(call EnsureVendoredVersion,../containerd/Makefile,containerd.installer)
+ $(call EnsureVendoredVersion,../libnetwork/Makefile,proxy.installer)
+ $(call EnsureVendoredVersion,../runc/Makefile,runc.installer)
+ $(call EnsureVendoredVersion,../tini/Makefile,tini.installer)
+
+ # Verify CLI is the same version
+ ( \
+ CLI_MAKEFILE="../docker/Makefile"; \
+ CLI_VERSION=$$$$( grep --only-matching --perl-regexp '(?<=PKG_VERSION:=)(.*)' "$$$$CLI_MAKEFILE" ); \
+ if [ $$$$CLI_VERSION != $(PKG_VERSION) ]; then \
+ echo "ERROR: Expected 'PKG_VERSION:=$(PKG_VERSION)' in '$$$$CLI_MAKEFILE', found 'PKG_VERSION:=$$$$CLI_VERSION'"; \
+ exit 1; \
+ fi \
+ )
+endef
+
+BUILDTAGS:=
+ifeq ($(KERNEL_SECCOMP),y)
+BUILDTAGS += seccomp
+endif
+ifeq ($(CONFIG_SELINUX),y)
+BUILDTAGS += selinux
+endif
+
+define Build/Compile
+ ( \
+ cd $(PKG_BUILD_DIR); \
+ $(GO_PKG_VARS) \
+ DOCKER_GITCOMMIT=$(PKG_SOURCE_VERSION) \
+ DOCKER_BUILDTAGS='$(BUILDTAGS)' \
+ VERSION=$(PKG_VERSION) \
+ ./hack/make.sh binary; \
+ )
+endef
+
+define Package/dockerd/install
+ $(INSTALL_DIR) $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/bundles/binary-daemon/dockerd $(1)/usr/bin/
+
+ $(INSTALL_DIR) $(1)/opt/docker/
+ $(INSTALL_DIR) $(1)/usr/share/docker/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/check-config.sh $(1)/usr/share/docker/
+
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/dockerd.init $(1)/etc/init.d/dockerd
+
+ $(INSTALL_DIR) $(1)/etc/config
+ $(INSTALL_CONF) ./files/etc/config/dockerd $(1)/etc/config/dockerd
+
+ # Must be after systcl 11-br-netfilter.conf from kmod-br-netfilter
+ $(INSTALL_DIR) $(1)/etc/sysctl.d
+ $(INSTALL_DATA) ./files/etc/sysctl.d/sysctl-br-netfilter-ip.conf \
+ $(1)/etc/sysctl.d/12-br-netfilter-ip.conf
+endef
+
+define Package/dockerd/postinst
+#!/bin/sh
+[ -n "$$IPKG_INSTROOT" ] || {
+ /etc/init.d/dockerd enable
+ /etc/init.d/dockerd uciadd
+ /etc/init.d/dockerd start
+}
+endef
+
+define Package/dockerd/prerm
+#!/bin/sh
+[ -n "$$IPKG_INSTROOT" ] || {
+ /etc/init.d/dockerd disable
+ /etc/init.d/dockerd stop
+ /etc/init.d/dockerd ucidel
+}
+endef
+
+$(eval $(call BuildPackage,dockerd))
--- /dev/null
+#!/bin/sh /etc/rc.common
+
+USE_PROCD=1
+START=25
+
+extra_command "uciadd" "<interface> <device> <zone> Add docker bridge configuration to network and firewall uci config"
+extra_command "ucidel" "<interface> <device> <zone> Delete docker bridge configuration from network and firewall uci config"
+
+DOCKER_CONF_DIR="/tmp/dockerd"
+DOCKERD_CONF="${DOCKER_CONF_DIR}/daemon.json"
+
+uci_quiet() {
+ uci -q "${@}" >/dev/null
+}
+
+json_add_array_string() {
+ json_add_string "" "${1}"
+}
+
+boot() {
+ uciadd
+ rc_procd start_service
+}
+
+uciadd() {
+ local iface="${1}"
+ local device="${2}"
+ local zone="${3}"
+
+ [ -z "${iface}" ] && {
+ iface="docker"
+ device="docker0"
+ zone="docker"
+ }
+
+ /etc/init.d/dockerd running && {
+ echo "Please stop dockerd service first"
+ exit 0
+ }
+
+ # Add network interface
+ if ! uci_quiet get network.${iface}; then
+ logger -t "dockerd-init" -p notice "Adding docker default interface to network uci config (${iface})"
+ uci_quiet add network interface
+ uci_quiet rename network.@interface[-1]="${iface}"
+ uci_quiet set network.@interface[-1].ifname="${device}"
+ uci_quiet set network.@interface[-1].proto="none"
+ uci_quiet set network.@interface[-1].auto="0"
+ uci_quiet commit network
+ fi
+
+ # Add docker bridge device
+ if ! uci_quiet get network.${device}; then
+ logger -t "dockerd-init" -p notice "Adding docker default bridge device to network uci config (${device})"
+ uci_quiet add network device
+ uci_quiet rename network.@device[-1]="${device}"
+ uci_quiet set network.@device[-1].type="bridge"
+ uci_quiet set network.@device[-1].name="${device}"
+ uci_quiet add_list network.@device[-1].ifname="${device}"
+ uci_quiet commit network
+ fi
+
+ # Add firewall zone
+ if ! uci_quiet get firewall.${zone}; then
+ logger -t "dockerd-init" -p notice "Adding docker default firewall zone to firewall uci config (${zone})"
+ uci_quiet add firewall zone
+ uci_quiet rename firewall.@zone[-1]="${zone}"
+ uci_quiet set firewall.@zone[-1].network="${iface}"
+ uci_quiet set firewall.@zone[-1].input="REJECT"
+ uci_quiet set firewall.@zone[-1].output="ACCEPT"
+ uci_quiet set firewall.@zone[-1].forward="REJECT"
+ uci_quiet set firewall.@zone[-1].name="${zone}"
+ uci_quiet commit firewall
+ fi
+
+ reload_config
+}
+
+ucidel() {
+ local iface="${1}"
+ local device="${2}"
+ local zone="${3}"
+
+ [ -z "${iface}" ] && {
+ iface="docker"
+ device="docker0"
+ zone="docker"
+ }
+
+ /etc/init.d/dockerd running && {
+ echo "Please stop dockerd service first"
+ exit 0
+ }
+
+ if uci_quiet get network.${device}; then
+ logger -t "dockerd-init" -p notice "Deleting docker default bridge device from network uci config (${device})"
+ uci_quiet delete network.${device}
+ uci_quiet commit network
+ fi
+
+ if uci_quiet get network.${iface}; then
+ logger -t "dockerd-init" -p notice "Deleting docker default interface from network uci config (${iface})"
+ uci_quiet delete network.${iface}
+ uci_quiet commit network
+ fi
+
+ if uci_quiet get firewall.${zone}; then
+ logger -t "dockerd-init" -p notice "Deleting docker firewall zone from firewall uci config (${zone})"
+ uci_quiet delete firewall.${zone}
+ uci_quiet commit firewall
+ fi
+
+ reload_config
+}
+
+process_config() {
+ local alt_config_file data_root log_level iptables bip
+
+ [ -f /etc/config/dockerd ] || {
+ # Use the daemon default configuration
+ DOCKERD_CONF=""
+ return 0
+ }
+
+ # reset configuration
+ rm -fr "${DOCKER_CONF_DIR}"
+ mkdir -p "${DOCKER_CONF_DIR}"
+
+ config_load 'dockerd'
+ config_get alt_config_file globals alt_config_file
+ [ -n "${alt_config_file}" ] && [ -f "${alt_config_file}" ] && {
+ ln -s "${alt_config_file}" "${DOCKERD_CONF}"
+ return 0
+ }
+
+ config_get data_root globals data_root "/opt/docker/"
+ config_get log_level globals log_level "warn"
+ config_get_bool iptables globals iptables "1"
+ config_get bip globals bip ""
+
+ . /usr/share/libubox/jshn.sh
+ json_init
+ json_add_string "data-root" "${data_root}"
+ json_add_string "log-level" "${log_level}"
+ [ -z "${bip}" ] || json_add_string "bip" "${bip}"
+ json_add_array "registry-mirrors"
+ config_list_foreach globals registry_mirrors json_add_array_string
+ json_close_array
+ json_add_array "hosts"
+ config_list_foreach globals hosts json_add_array_string
+ json_close_array
+
+ json_add_boolean iptables "${iptables}"
+ [ "${iptables}" -ne "0" ] && config_foreach iptables_add_blocking_rule firewall
+
+ json_dump > "${DOCKERD_CONF}"
+}
+
+start_service() {
+ local nofile=$(cat /proc/sys/fs/nr_open)
+
+ process_config
+
+ procd_open_instance
+ procd_set_param stderr 1
+ if [ -z "${DOCKERD_CONF}" ]; then
+ procd_set_param command /usr/bin/dockerd
+ else
+ procd_set_param command /usr/bin/dockerd --config-file="${DOCKERD_CONF}"
+ fi
+ procd_set_param limits nofile="${nofile} ${nofile}"
+ procd_close_instance
+}
+
+reload_service() {
+ process_config
+ procd_send_signal dockerd
+}
+
+service_triggers() {
+ procd_add_reload_trigger 'dockerd'
+}
+
+iptables_add_blocking_rule() {
+ local cfg="${1}"
+
+ local device=""
+ local extra_iptables_args=""
+
+ handle_iptables_rule() {
+ local interface="${1}"
+ local outbound="${2}"
+ local extra_iptables_args="${3}"
+
+ local inbound=""
+
+ . /lib/functions/network.sh
+ network_get_physdev inbound "${interface}"
+
+ [ -z "${inbound}" ] && {
+ logger -t "dockerd-init" -p notice "Unable to get physical device for interface ${interface}"
+ return
+ }
+
+ # Ignore errors as it might already be present
+ iptables --table filter --new DOCKER-USER 2>/dev/null
+ if ! iptables --table filter --check DOCKER-USER --in-interface "${inbound}" --out-interface "${outbound}" ${extra_iptables_args} --jump DROP 2>/dev/null; then
+ logger -t "dockerd-init" -p notice "Drop traffic from ${inbound} to ${outbound}"
+ iptables --table filter --insert DOCKER-USER --in-interface "${inbound}" --out-interface "${outbound}" ${extra_iptables_args} --jump DROP
+ fi
+ }
+
+ config_get device "${cfg}" device
+
+ [ -z "${device}" ] && {
+ logger -t "dockerd-init" -p notice "No device configured for ${cfg}"
+ return
+ }
+
+ config_get extra_iptables_args "${cfg}" extra_iptables_args
+ config_list_foreach "${cfg}" blocked_interfaces handle_iptables_rule "${device}" "${extra_iptables_args}"
+}
+
+stop_service() {
+ if /etc/init.d/dockerd running; then
+ service_stop "/usr/bin/dockerd"
+ fi
+}
--- /dev/null
+# The following settings require a restart of docker to take full effect, A reload will only have partial or no effect:
+# bip
+# blocked_interfaces
+# extra_iptables_args
+# device
+
+config globals 'globals'
+# option alt_config_file "/etc/docker/daemon.json"
+ option data_root "/opt/docker/"
+ option log_level "warn"
+ list hosts "unix:///var/run/docker.sock"
+ option bip "172.18.0.1/24"
+# option iptables "0"
+# list registry_mirrors "https://<my-docker-mirror-host>"
+# list registry_mirrors "https://hub.docker.com"
+
+# Docker ignores fw3 rules and by default all external source IPs are allowed to connect to the Docker host.
+# See https://docs.docker.com/network/iptables/ for more details.
+# firewall config changes are only additive i.e firewall will need to be restarted first to clear old changes,
+# then docker restarted to load in new changes.
+config firewall 'firewall'
+ option device 'docker0'
+ list blocked_interfaces 'wan'
+# option extra_iptables_args '--match conntrack ! --ctstate RELATED,ESTABLISHED' # allow outbound connections
--- /dev/null
+# Do not edit, changes to this file will be lost on upgrades
+# /etc/sysctl.conf can be used to customize sysctl settings
+
+# enable bridge firewalling for docker
+net.bridge.bridge-nf-call-ip6tables=1
+net.bridge.bridge-nf-call-iptables=1
+
--- /dev/null
+Index: docker-ce-20.10.0/hack/make.sh
+===================================================================
+--- docker-ce-20.10.0.orig/hack/make.sh
++++ docker-ce-20.10.0/hack/make.sh
+@@ -95,7 +95,7 @@ fi
+ # with a newer libdevmapper than the one it was built with.
+ if
+ command -v gcc &> /dev/null \
+- && ! (echo -e '#include <libdevmapper.h>\nint main() { dm_task_deferred_remove(NULL); }' | gcc -xc - -o /dev/null $(pkg-config --libs devmapper) &> /dev/null) \
++ && ! (echo -e '#include <libdevmapper.h>\nint main() { dm_task_deferred_remove(NULL); }' | gcc -xc - -o /dev/null $(pkg-config --libs libdevmapper) &> /dev/null) \
+ ;
+ then
+ add_buildtag libdm dlsym_deferred_remove
PKG_NAME:=findutils
PKG_VERSION:=4.7.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
define Package/findutils-find
$(call Package/findutils/Default)
TITLE+= - find utility
- ALTERNATIVES:=300:/usr/bin/find:/usr/libexec/findutils-find
+ ALTERNATIVES:=300:/usr/bin/find:/usr/libexec/find-findutils
endef
define Package/findutils-xargs
$(call Package/findutils/Default)
TITLE+= - xargs utility
- ALTERNATIVES:=300:/usr/bin/xargs:/usr/libexec/findutils-xargs
+ ALTERNATIVES:=300:/usr/bin/xargs:/usr/libexec/xargs-findutils
endef
define Package/findutils-locate
define Package/findutils-find/install
$(INSTALL_DIR) $(1)/usr/libexec
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/find $(1)/usr/libexec/findutils-find
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/find $(1)/usr/libexec/find-findutils
endef
define Package/findutils-xargs/install
$(INSTALL_DIR) $(1)/usr/libexec
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/xargs $(1)/usr/libexec/findutils-xargs
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/xargs $(1)/usr/libexec/xargs-findutils
endef
define Package/findutils-locate/install
include $(TOPDIR)/rules.mk
PKG_NAME:=fontconfig
-PKG_VERSION:=2.11.1
+PKG_VERSION:=2.13.93
PKG_RELEASE:=1
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=http://fontconfig.org/release/
-PKG_HASH:=dc62447533bca844463a3c3fd4083b57c90f18a70506e7a9f4936b5a1e516a99
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=https://fontconfig.org/release/
+PKG_HASH:=ea968631eadc5739bc7c8856cef5c77da812d1f67b763f5e51b57b8026c1a0a0
PKG_CPE_ID:=cpe:/a:fontconfig_project:fontconfig
PKG_FIXUP:=libtool
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+PKG_BUILD_DEPENDS:=gperf/host
include $(INCLUDE_DIR)/package.mk
include $(TOPDIR)/rules.mk
PKG_NAME:=gnuplot
-PKG_VERSION:=5.4.0
-PKG_RELEASE:=2
+PKG_VERSION:=5.4.1
+PKG_RELEASE:=1
PKG_MAINTAINER:=Matteo Cicuttin <datafl4sh@toxicnet.eu>
PKG_BUILD_DIR:=$(BUILD_DIR)/gnuplot-$(PKG_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/gnuplot
-PKG_HASH:=eb4082f03a399fd1e9e2b380cf7a4f785e77023d8dcc7e17570c1b5570a49c47
+PKG_HASH:=6b690485567eaeb938c26936e5e0681cf70c856d273cc2c45fabf64d8bc6590e
PKG_CAT:=zcat
PKG_FIXUP:=autoreconf
-Index: gnuplot-5.4.0/Makefile.am
-===================================================================
---- gnuplot-5.4.0.orig/Makefile.am
-+++ gnuplot-5.4.0/Makefile.am
+--- a/Makefile.am
++++ b/Makefile.am
@@ -1,7 +1,7 @@
## Process this file with automake to produce Makefile.in -*-Makefile-*-
AUTOMAKE_OPTIONS = foreign
PKG_NAME:=gpsd
PKG_VERSION:=3.21
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@SAVANNAH/$(PKG_NAME)
implicit_link=no \
chrpath=no \
manbuild=no \
+ sysroot="$(STAGING_DIR)" \
target="$(TARGET_CROSS:-=)"
define Build/InstallDev
include $(TOPDIR)/rules.mk
PKG_NAME:=haveged
-PKG_VERSION:=1.9.13
+PKG_VERSION:=1.9.14
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/jirka-h/haveged/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=d17bd22fa1745daca5ac72e014ed3b0fe5720da4c115953124b1bf2a0aa2b04b
+PKG_HASH:=938cb494bcad7e4f24e61eb50fab4aa0acbc3240c80f3ad5c6cf7e6e922618c3
PKG_BUILD_DIR:=$(BUILD_DIR)/haveged-$(PKG_VERSION)
PKG_LICENSE:=GPLv3
PKG_NAME:=hfsprogs
PKG_VERSION:=332.25
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.gz
PKG_SOURCE_URL:=http://archive.ubuntu.com/ubuntu/pool/universe/h/$(PKG_NAME)
create mode 100644 fsck_hfs.tproj/dfalib/Makefile.lnx
create mode 100644 newfs_hfs.tproj/Makefile.lnx
-diff --git a/Makefile.lnx b/Makefile.lnx
-new file mode 100644
-index 0000000..687d1e7
--- /dev/null
+++ b/Makefile.lnx
@@ -0,0 +1,8 @@
+ for d in $(SUBDIRS); do $(MAKE) -C $$d -f Makefile.lnx $@; done
+
+export CC CFLAGS
-diff --git a/fsck_hfs.tproj/Makefile.lnx b/fsck_hfs.tproj/Makefile.lnx
-new file mode 100644
-index 0000000..977d7e8
--- /dev/null
+++ b/fsck_hfs.tproj/Makefile.lnx
@@ -0,0 +1,16 @@
+ $(MAKE) -C dfalib -f Makefile.lnx clean
+
+.PHONY : FORCE clean
-diff --git a/fsck_hfs.tproj/dfalib/Makefile.lnx b/fsck_hfs.tproj/dfalib/Makefile.lnx
-new file mode 100644
-index 0000000..8c07196
--- /dev/null
+++ b/fsck_hfs.tproj/dfalib/Makefile.lnx
@@ -0,0 +1,15 @@
+
+clean:
+ $(RM) $(OFILES) libdfa.a
-diff --git a/newfs_hfs.tproj/Makefile.lnx b/newfs_hfs.tproj/Makefile.lnx
-new file mode 100644
-index 0000000..58e6700
--- /dev/null
+++ b/newfs_hfs.tproj/Makefile.lnx
@@ -0,0 +1,12 @@
21 files changed, 429 insertions(+), 85 deletions(-)
create mode 100644 include/missing.h
-diff --git a/fsck_hfs.tproj/cache.c b/fsck_hfs.tproj/cache.c
-index be46195..527088a 100644
--- a/fsck_hfs.tproj/cache.c
+++ b/fsck_hfs.tproj/cache.c
@@ -26,7 +26,11 @@
#include <sys/uio.h>
#include <unistd.h>
#include <string.h>
-diff --git a/fsck_hfs.tproj/dfalib/BTree.c b/fsck_hfs.tproj/dfalib/BTree.c
-index edd8301..7ad9fe0 100644
--- a/fsck_hfs.tproj/dfalib/BTree.c
+++ b/fsck_hfs.tproj/dfalib/BTree.c
-@@ -1705,7 +1705,9 @@ OSStatus BTGetInformation (SFCB *filePtr,
+@@ -1705,7 +1705,9 @@ OSStatus BTGetInformation (SFCB *fil
UInt16 version,
BTreeInfoRec *info )
{
BTreeControlBlockPtr btreePtr;
-diff --git a/fsck_hfs.tproj/dfalib/BlockCache.c b/fsck_hfs.tproj/dfalib/BlockCache.c
-index 1bb952f..e3a28a2 100644
--- a/fsck_hfs.tproj/dfalib/BlockCache.c
+++ b/fsck_hfs.tproj/dfalib/BlockCache.c
@@ -20,6 +20,9 @@
#include "SRuntime.h"
#include "Scavenger.h"
#include "../cache.h"
-diff --git a/fsck_hfs.tproj/dfalib/SBTree.c b/fsck_hfs.tproj/dfalib/SBTree.c
-index 2fbcd1d..cd81b13 100644
--- a/fsck_hfs.tproj/dfalib/SBTree.c
+++ b/fsck_hfs.tproj/dfalib/SBTree.c
@@ -322,7 +322,9 @@ ErrorExit:
OSStatus result;
UInt32 actualSectorsAdded;
-diff --git a/fsck_hfs.tproj/dfalib/SDevice.c b/fsck_hfs.tproj/dfalib/SDevice.c
-index bf6f61c..9a46023 100644
--- a/fsck_hfs.tproj/dfalib/SDevice.c
+++ b/fsck_hfs.tproj/dfalib/SDevice.c
@@ -2,7 +2,7 @@
if (devBlockSize != 512) {
*numBlocks = (devBlockCount * (UInt64)devBlockSize) / 512;
-@@ -70,24 +108,24 @@ OSErr GetDeviceSize(int driveRefNum, UInt64 *numBlocks, UInt32 *blockSize)
+@@ -70,24 +108,24 @@ OSErr GetDeviceSize(int driveRefNum, UIn
{
/* return format list status code */
kFmtLstCode = 6,
ParamBlockRec pb;
FormatListRec formatListRecords[kMaxFormatListRecs];
DrvSts status;
-@@ -95,22 +133,22 @@ OSErr GetDeviceSize(int driveRefNum, UInt64 *numBlocks, UInt32 *blockSize)
+@@ -95,22 +133,22 @@ OSErr GetDeviceSize(int driveRefNum, UIn
OSErr result;
unsigned long blocks = 0;
/* Get the current disk's size. */
for( formatListRecIndex = 0;
formatListRecIndex < pb.cntrlParam.csParam[0];
-@@ -131,7 +169,7 @@ OSErr GetDeviceSize(int driveRefNum, UInt64 *numBlocks, UInt32 *blockSize)
+@@ -131,7 +169,7 @@ OSErr GetDeviceSize(int driveRefNum, UIn
else if ( driveQElementPtr->dQRefNum == (short)kSonyRefNum )
{
/* The drive is a non-SuperDrive floppy which only supports 400K and 800K disks */
result = DriveStatus(driveQElementPtr->dQDrive, &status);
if ( result == noErr )
{
-@@ -140,11 +178,11 @@ OSErr GetDeviceSize(int driveRefNum, UInt64 *numBlocks, UInt32 *blockSize)
+@@ -140,11 +178,11 @@ OSErr GetDeviceSize(int driveRefNum, UIn
case kSingleSided:
blocks = kSingleSidedSize;
break;
default: // This should never happen
result = paramErr;
break;
-@@ -155,20 +193,20 @@ OSErr GetDeviceSize(int driveRefNum, UInt64 *numBlocks, UInt32 *blockSize)
+@@ -155,20 +193,20 @@ OSErr GetDeviceSize(int driveRefNum, UIn
{
/* The drive is not a floppy and it doesn't support ReturnFormatList */
/* so use the dQDrvSz field(s) */
default: // This should never happen
result = paramErr;
break;
-@@ -177,7 +215,7 @@ OSErr GetDeviceSize(int driveRefNum, UInt64 *numBlocks, UInt32 *blockSize)
+@@ -177,7 +215,7 @@ OSErr GetDeviceSize(int driveRefNum, UIn
*numBlocks = blocks;
*blockSize = 512;
return( result );
#endif
}
-@@ -188,7 +226,7 @@ OSErr DeviceRead(int device, int drive, void* buffer, SInt64 offset, UInt32 reqB
+@@ -188,7 +226,7 @@ OSErr DeviceRead(int device, int drive,
#if BSD
off_t seek_off;
ssize_t nbytes;
*actBytes = 0;
seek_off = lseek(device, offset, SEEK_SET);
-diff --git a/fsck_hfs.tproj/dfalib/SKeyCompare.c b/fsck_hfs.tproj/dfalib/SKeyCompare.c
-index 46e145f..18d99c5 100644
--- a/fsck_hfs.tproj/dfalib/SKeyCompare.c
+++ b/fsck_hfs.tproj/dfalib/SKeyCompare.c
-@@ -454,7 +454,9 @@ SInt32 CompareExtentKeysPlus( const HFSPlusExtentKey *searchKey, const HFSPlusEx
+@@ -454,7 +454,9 @@ SInt32 CompareExtentKeysPlus( const HFSP
* The name portion of the key is compared using a 16-bit binary comparison.
* This is called from the b-tree code.
*/
SInt32
CompareAttributeKeys(const AttributeKey *searchKey, const AttributeKey *trialKey)
{
-diff --git a/fsck_hfs.tproj/dfalib/SRepair.c b/fsck_hfs.tproj/dfalib/SRepair.c
-index 01c1a10..8eb759c 100644
--- a/fsck_hfs.tproj/dfalib/SRepair.c
+++ b/fsck_hfs.tproj/dfalib/SRepair.c
@@ -1617,7 +1617,9 @@ Output:
OSErr err;
HFSMasterDirectoryBlock *mdb;
-diff --git a/fsck_hfs.tproj/dfalib/SRuntime.h b/fsck_hfs.tproj/dfalib/SRuntime.h
-index 646917b..770e3ef 100644
--- a/fsck_hfs.tproj/dfalib/SRuntime.h
+++ b/fsck_hfs.tproj/dfalib/SRuntime.h
@@ -27,8 +27,11 @@
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
-@@ -91,10 +94,12 @@ typedef const unsigned char * ConstStr255Param;
+@@ -91,10 +94,12 @@ typedef const unsigned char * ConstStr25
typedef u_int32_t HFSCatalogNodeID;
/* OS error codes */
enum {
-diff --git a/fsck_hfs.tproj/dfalib/SUtils.c b/fsck_hfs.tproj/dfalib/SUtils.c
-index 72035f0..6e9253e 100644
--- a/fsck_hfs.tproj/dfalib/SUtils.c
+++ b/fsck_hfs.tproj/dfalib/SUtils.c
-@@ -380,7 +380,8 @@ void InvalidateCalculatedVolumeBitMap( SGlobPtr GPtr )
+@@ -380,7 +380,8 @@ void InvalidateCalculatedVolumeBitMap( S
// GPtr->realVCB Real in-memory vcb
//------------------------------------------------------------------------------
/*-------------------------------------------------------------------------------
-diff --git a/fsck_hfs.tproj/dfalib/SVerify2.c b/fsck_hfs.tproj/dfalib/SVerify2.c
-index 6a47935..c68f3d8 100644
--- a/fsck_hfs.tproj/dfalib/SVerify2.c
+++ b/fsck_hfs.tproj/dfalib/SVerify2.c
@@ -32,7 +32,9 @@
#include "BTree.h"
#include "BTreePrivate.h"
-@@ -1354,8 +1356,13 @@ OSErr CompareVolumeHeader( SGlobPtr GPtr, HFSPlusVolumeHeader *volumeHeader )
+@@ -1354,8 +1356,13 @@ OSErr CompareVolumeHeader( SGlobPtr GPtr
* clump size for read-only media is irrelevant we skip the clump size
* check to avoid non useful warnings.
*/
if ( isWriteable != 0 &&
volumeHeader->catalogFile.clumpSize != vcb->vcbCatalogFile->fcbClumpSize ) {
PrintError(GPtr, E_InvalidClumpSize, 0);
-diff --git a/fsck_hfs.tproj/dfalib/Scavenger.h b/fsck_hfs.tproj/dfalib/Scavenger.h
-index cf53970..edb3a80 100644
--- a/fsck_hfs.tproj/dfalib/Scavenger.h
+++ b/fsck_hfs.tproj/dfalib/Scavenger.h
@@ -37,11 +37,16 @@
#ifdef __cplusplus
extern "C" {
-@@ -1465,4 +1470,8 @@ extern int AllocateContigBitmapBits (SVCB *vcb, UInt32 numBlocks, UInt32 *actua
+@@ -1465,4 +1470,8 @@ extern int AllocateContigBitmapBits (SV
};
#endif
+#endif */
+
#endif /* __SCAVENGER__ */
-diff --git a/fsck_hfs.tproj/dfalib/hfs_endian.c b/fsck_hfs.tproj/dfalib/hfs_endian.c
-index 7fa5385..69500c1 100755
--- a/fsck_hfs.tproj/dfalib/hfs_endian.c
+++ b/fsck_hfs.tproj/dfalib/hfs_endian.c
@@ -31,7 +31,11 @@
#include <hfs/hfs_format.h>
#include "Scavenger.h"
-diff --git a/fsck_hfs.tproj/dfalib/hfs_endian.h b/fsck_hfs.tproj/dfalib/hfs_endian.h
-index 52d0c3a..0763d9d 100755
--- a/fsck_hfs.tproj/dfalib/hfs_endian.h
+++ b/fsck_hfs.tproj/dfalib/hfs_endian.h
@@ -27,9 +27,14 @@
#include "SRuntime.h"
/*********************/
-diff --git a/fsck_hfs.tproj/fsck_hfs.c b/fsck_hfs.tproj/fsck_hfs.c
-index 90532fd..f1a18bd 100644
--- a/fsck_hfs.tproj/fsck_hfs.c
+++ b/fsck_hfs.tproj/fsck_hfs.c
@@ -24,10 +24,14 @@
ExitThisRoutine:
if (lflag) {
fcntl(fs_fd, F_THAW_FS, NULL);
-@@ -401,16 +423,18 @@ setup( char *dev, int *blockDevice_fdPtr, int *canWritePtr )
+@@ -401,16 +423,18 @@ setup( char *dev, int *blockDevice_fdPtr
fswritefd = -1;
*blockDevice_fdPtr = -1;
*canWritePtr = 0;
if ((fsreadfd = open(dev, O_RDONLY)) < 0) {
printf("Can't open %s: %s\n", dev, strerror(errno));
return (0);
-@@ -419,7 +443,7 @@ setup( char *dev, int *blockDevice_fdPtr, int *canWritePtr )
+@@ -419,7 +443,7 @@ setup( char *dev, int *blockDevice_fdPtr
/* attempt to get write access to the block device and if not check if volume is */
/* mounted read-only. */
getWriteAccess( dev, blockDevice_fdPtr, canWritePtr );
if (preen == 0 && !guiControl)
printf("** %s", dev);
if (nflag || (fswritefd = open(dev, O_WRONLY)) < 0) {
-@@ -433,10 +457,14 @@ setup( char *dev, int *blockDevice_fdPtr, int *canWritePtr )
+@@ -433,10 +457,14 @@ setup( char *dev, int *blockDevice_fdPtr
printf("\n");
/* Get device block size to initialize cache */
/* calculate the cache block size and total blocks */
if (CalculateCacheSize(userCacheSize, &cacheBlockSize, &cacheTotalBlocks, debug) != 0) {
-@@ -463,11 +491,15 @@ setup( char *dev, int *blockDevice_fdPtr, int *canWritePtr )
+@@ -463,11 +491,15 @@ setup( char *dev, int *blockDevice_fdPtr
static void getWriteAccess( char *dev, int *blockDevice_fdPtr, int *canWritePtr )
{
void * myNamePtr;
myPtr = NULL;
-@@ -490,6 +522,9 @@ static void getWriteAccess( char *dev, int *blockDevice_fdPtr, int *canWritePtr
+@@ -490,6 +522,9 @@ static void getWriteAccess( char *dev, i
}
// get count of mounts then get the info for each
myMountsCount = getfsstat( NULL, 0, MNT_NOWAIT );
if ( myMountsCount < 0 )
goto ExitThisRoutine;
-@@ -513,8 +548,8 @@ static void getWriteAccess( char *dev, int *blockDevice_fdPtr, int *canWritePtr
+@@ -513,8 +548,8 @@ static void getWriteAccess( char *dev, i
}
myBufPtr++;
}
ExitThisRoutine:
if ( myPtr != NULL )
free( myPtr );
-diff --git a/fsck_hfs.tproj/utilities.c b/fsck_hfs.tproj/utilities.c
-index ee41bef..8e1cd77 100644
--- a/fsck_hfs.tproj/utilities.c
+++ b/fsck_hfs.tproj/utilities.c
@@ -183,12 +183,14 @@ retry:
(void)strcat(rawbuf, &dp[1]);
return (rawbuf);
-diff --git a/include/missing.h b/include/missing.h
-new file mode 100644
-index 0000000..0a859c4
--- /dev/null
+++ b/include/missing.h
@@ -0,0 +1,114 @@
+#define KAUTH_FILESEC_XATTR "com.apple.system.Security"
+
+#endif
-diff --git a/newfs_hfs.tproj/hfs_endian.c b/newfs_hfs.tproj/hfs_endian.c
-index 117b7f8..fdf7353 100644
--- a/newfs_hfs.tproj/hfs_endian.c
+++ b/newfs_hfs.tproj/hfs_endian.c
@@ -30,7 +30,12 @@
#include <hfs/hfs_format.h>
#include "hfs_endian.h"
-diff --git a/newfs_hfs.tproj/hfs_endian.h b/newfs_hfs.tproj/hfs_endian.h
-index 8d9d01d..5c7ff57 100644
--- a/newfs_hfs.tproj/hfs_endian.h
+++ b/newfs_hfs.tproj/hfs_endian.h
@@ -29,7 +29,12 @@
/*********************/
/* BIG ENDIAN Macros */
-diff --git a/newfs_hfs.tproj/makehfs.c b/newfs_hfs.tproj/makehfs.c
-index 085222f..7609779 100644
--- a/newfs_hfs.tproj/makehfs.c
+++ b/newfs_hfs.tproj/makehfs.c
@@ -31,10 +31,16 @@
#include <hfs/hfs_format.h>
#include <hfs/hfs_mount.h>
-@@ -129,7 +136,9 @@ static UInt32 Largest __P((UInt32 a, UInt32 b, UInt32 c, UInt32 d ));
+@@ -129,7 +136,9 @@ static UInt32 Largest __P((UInt32 a, UIn
static void MarkBitInAllocationBuffer __P((HFSPlusVolumeHeader *header,
UInt32 allocationBlock, void* sectorBuffer, UInt32 *sector));
static UInt32 UTCToLocal __P((UInt32 utcTime));
-@@ -158,11 +167,14 @@ void SETOFFSET (void *buffer, UInt16 btNodeSize, SInt16 recOffset, SInt16 vecOff
+@@ -158,11 +167,14 @@ void SETOFFSET (void *buffer, UInt16 btN
#define ROUNDUP(x, u) (((x) % (u) == 0) ? (x) : ((x)/(u) + 1) * (u))
/*
* make_hfs
*
-@@ -528,6 +540,7 @@ InitMDB(hfsparams_t *defaults, UInt32 driveBlocks, HFS_MDB *mdbp)
+@@ -528,6 +540,7 @@ InitMDB(hfsparams_t *defaults, UInt32 dr
* Map UTF-8 input into a Mac encoding.
* On conversion errors "untitled" is used as a fallback.
*/
{
UniChar unibuf[kHFSMaxVolumeNameChars];
CFStringRef cfstr;
-@@ -553,7 +566,11 @@ InitMDB(hfsparams_t *defaults, UInt32 driveBlocks, HFS_MDB *mdbp)
+@@ -553,7 +566,11 @@ InitMDB(hfsparams_t *defaults, UInt32 dr
bcopy(&mdbp->drVN[1], defaults->volumeName, mdbp->drVN[0]);
defaults->volumeName[mdbp->drVN[0]] = '\0';
}
mdbp->drFndrInfo[4] = SET_HFS_TEXT_ENCODING(defaults->encodingHint);
mdbp->drWrCnt = kWriteSeqNum;
-@@ -1100,9 +1117,11 @@ InitCatalogRoot_HFSPlus(const hfsparams_t *dp, const HFSPlusVolumeHeader *header
+@@ -1100,9 +1117,11 @@ InitCatalogRoot_HFSPlus(const hfsparams_
UInt16 nodeSize;
SInt16 offset;
UInt32 unicodeBytes;
int index = 0;
nodeSize = dp->catalogNodeSize;
-@@ -1122,7 +1141,9 @@ InitCatalogRoot_HFSPlus(const hfsparams_t *dp, const HFSPlusVolumeHeader *header
+@@ -1122,7 +1141,9 @@ InitCatalogRoot_HFSPlus(const hfsparams_
* First record is always the root directory...
*/
ckp = (HFSPlusCatalogKey *)((UInt8 *)buffer + offset);
/* Use CFString functions to get a HFSPlus Canonical name */
cfstr = CFStringCreateWithCString(kCFAllocatorDefault, (char *)dp->volumeName, kCFStringEncodingUTF8);
cfOK = _CFStringGetFileSystemRepresentation(cfstr, canonicalName, sizeof(canonicalName));
-@@ -1139,6 +1160,7 @@ InitCatalogRoot_HFSPlus(const hfsparams_t *dp, const HFSPlusVolumeHeader *header
+@@ -1139,6 +1160,7 @@ InitCatalogRoot_HFSPlus(const hfsparams_
dp->volumeName, kDefaultVolumeNameStr);
}
CFRelease(cfstr);
ckp->nodeName.length = SWAP_BE16 (ckp->nodeName.length);
unicodeBytes = sizeof(UniChar) * SWAP_BE16 (ckp->nodeName.length);
-@@ -1821,15 +1843,15 @@ WriteBuffer(const DriveInfo *driveInfo, UInt64 startingSector, UInt32 byteCount,
+@@ -1821,15 +1843,15 @@ WriteBuffer(const DriveInfo *driveInfo,
off_t sector;
if ((byteCount % driveInfo->sectorSize) != 0)
}
-@@ -1913,7 +1935,7 @@ DivideAndRoundUp(UInt32 numerator, UInt32 denominator)
+@@ -1913,7 +1935,7 @@ DivideAndRoundUp(UInt32 numerator, UInt3
return quotient;
}
static int
ConvertUTF8toUnicode(const UInt8* source, UInt32 bufsize, UniChar* unibuf,
-@@ -2006,6 +2028,9 @@ ConvertUTF8toUnicode(const UInt8* source, UInt32 bufsize, UniChar* unibuf,
+@@ -2006,6 +2028,9 @@ ConvertUTF8toUnicode(const UInt8* source
static int
getencodinghint(unsigned char *name)
{
}
-@@ -2034,12 +2060,14 @@ void GenerateVolumeUUID(VolumeUUID *newVolumeID) {
+@@ -2034,12 +2060,14 @@ void GenerateVolumeUUID(VolumeUUID *newV
unsigned char digest[20];
time_t now;
clock_t uptime;
do {
/* Initialize the SHA-1 context for processing: */
-@@ -2052,52 +2080,58 @@ void GenerateVolumeUUID(VolumeUUID *newVolumeID) {
+@@ -2052,52 +2080,58 @@ void GenerateVolumeUUID(VolumeUUID *newV
SHA1_Update(&context, &uptime, sizeof(uptime));
/* The kernel's boot time: */
/* The current GMT (26 ASCII characters): */
time(&now);
strncpy(randomInputBuffer, asctime(gmtime(&now)), 26); /* "Mon Mar 27 13:46:26 2000" */
-diff --git a/newfs_hfs.tproj/newfs_hfs.c b/newfs_hfs.tproj/newfs_hfs.c
-index c4176a9..bf2ed21 100644
--- a/newfs_hfs.tproj/newfs_hfs.c
+++ b/newfs_hfs.tproj/newfs_hfs.c
@@ -38,8 +38,13 @@
}
exit(0);
-@@ -506,7 +527,9 @@ hfs_newfs(char *device, int forceHFS, int isRaw)
+@@ -506,7 +527,9 @@ hfs_newfs(char *device, int forceHFS, in
int fso = 0;
int retval = 0;
hfsparams_t defaults = {0};
if (gPartitionSize) {
dip.sectorSize = kBytesPerSector;
-@@ -526,6 +549,34 @@ hfs_newfs(char *device, int forceHFS, int isRaw)
+@@ -526,6 +549,34 @@ hfs_newfs(char *device, int forceHFS, in
if (fstat( fso, &stbuf) < 0)
fatal("%s: %s", device, strerror(errno));
if (ioctl(fso, DKIOCGETBLOCKCOUNT, &dip.totalSectors) < 0)
fatal("%s: %s", device, strerror(errno));
-@@ -537,11 +588,14 @@ hfs_newfs(char *device, int forceHFS, int isRaw)
+@@ -537,11 +588,14 @@ hfs_newfs(char *device, int forceHFS, in
dip.sectorsPerIO = (128 * 1024) / dip.sectorSize; /* use 128K as default */
else
dip.sectorsPerIO = MIN(maxSectorsPerIO, (1024 * 1024) / dip.sectorSize);
if (dip.sectorSize != kBytesPerSector) {
if (isRaw) {
close(fso);
-@@ -556,7 +610,9 @@ hfs_newfs(char *device, int forceHFS, int isRaw)
+@@ -556,7 +610,9 @@ hfs_newfs(char *device, int forceHFS, in
dip.sectorSize = kBytesPerSector;
}
}
dip.sectorOffset = 0;
time(&createtime);
-diff --git a/newfs_hfs.tproj/newfs_hfs.h b/newfs_hfs.tproj/newfs_hfs.h
-index 968ff10..5680a34 100644
--- a/newfs_hfs.tproj/newfs_hfs.h
+++ b/newfs_hfs.tproj/newfs_hfs.h
@@ -19,8 +19,12 @@
create mode 100644 include/hfs/hfs_mount.h
create mode 100644 include/sys/appleapiopts.h
-diff --git a/include/bitstring.h b/include/bitstring.h
-new file mode 100644
-index 0000000..fbecfbe
--- /dev/null
+++ b/include/bitstring.h
@@ -0,0 +1,164 @@
+}
+
+#endif /* !_BITSTRING_H_ */
-diff --git a/include/hfs/hfs_format.h b/include/hfs/hfs_format.h
-new file mode 100644
-index 0000000..d820329
--- /dev/null
+++ b/include/hfs/hfs_format.h
@@ -0,0 +1,689 @@
+#endif
+
+#endif /* __HFS_FORMAT__ */
-diff --git a/include/hfs/hfs_mount.h b/include/hfs/hfs_mount.h
-new file mode 100644
-index 0000000..ad729f2
--- /dev/null
+++ b/include/hfs/hfs_mount.h
@@ -0,0 +1,78 @@
+#endif /* __APPLE_API_UNSTABLE */
+
+#endif /* ! _HFS_MOUNT_H_ */
-diff --git a/include/sys/appleapiopts.h b/include/sys/appleapiopts.h
-new file mode 100644
-index 0000000..4d2061f
--- /dev/null
+++ b/include/sys/appleapiopts.h
@@ -0,0 +1,52 @@
fsck_hfs.tproj/dfalib/hfs_endian.c | 2 +-
4 files changed, 16 insertions(+), 13 deletions(-)
-diff --git a/fsck_hfs.tproj/dfalib/BTreePrivate.h b/fsck_hfs.tproj/dfalib/BTreePrivate.h
-index 058c75b..2fc2f28 100644
--- a/fsck_hfs.tproj/dfalib/BTreePrivate.h
+++ b/fsck_hfs.tproj/dfalib/BTreePrivate.h
@@ -104,6 +104,9 @@ typedef enum {
typedef struct BTreeControlBlock { // fields specific to BTree CBs
UInt8 keyCompareType; /* Key string Comparison Type */
-@@ -144,7 +147,7 @@ typedef struct BTreeControlBlock { // fields specific to BTree CBs
+@@ -144,7 +147,7 @@ typedef struct BTreeControlBlock { /
UInt32 numPossibleHints; // Looks like a formated hint
UInt32 numValidHints; // Hint used to find correct record.
SFCB *fcbPtr; // fcb of btree file
} BTreeControlBlock, *BTreeControlBlockPtr;
-diff --git a/fsck_hfs.tproj/dfalib/SControl.c b/fsck_hfs.tproj/dfalib/SControl.c
-index 37eb242..4ce9e16 100644
--- a/fsck_hfs.tproj/dfalib/SControl.c
+++ b/fsck_hfs.tproj/dfalib/SControl.c
@@ -1034,7 +1034,7 @@ static int ScavTerm( SGlobPtr GPtr )
}
}
}
-diff --git a/fsck_hfs.tproj/dfalib/SVerify1.c b/fsck_hfs.tproj/dfalib/SVerify1.c
-index c272d4d..a273bf3 100644
--- a/fsck_hfs.tproj/dfalib/SVerify1.c
+++ b/fsck_hfs.tproj/dfalib/SVerify1.c
-@@ -789,8 +789,8 @@ OSErr CreateExtentsBTreeControlBlock( SGlobPtr GPtr )
+@@ -789,8 +789,8 @@ OSErr CreateExtentsBTreeControlBlock( SG
//
// set up our DFA extended BTCB area. Will we have enough memory on all HFS+ volumes.
//
err = R_NoMem;
goto exit;
}
-@@ -1144,8 +1144,8 @@ OSErr CreateCatalogBTreeControlBlock( SGlobPtr GPtr )
+@@ -1144,8 +1144,8 @@ OSErr CreateCatalogBTreeControlBlock( SG
// set up our DFA extended BTCB area. Will we have enough memory on all HFS+ volumes.
//
err = R_NoMem;
goto exit;
}
-@@ -1779,8 +1779,8 @@ OSErr CreateAttributesBTreeControlBlock( SGlobPtr GPtr )
+@@ -1779,8 +1779,8 @@ OSErr CreateAttributesBTreeControlBlock(
//
// set up our DFA extended BTCB area. Will we have enough memory on all HFS+ volumes.
//
err = R_NoMem;
goto exit;
}
-@@ -1793,7 +1793,7 @@ OSErr CreateAttributesBTreeControlBlock( SGlobPtr GPtr )
+@@ -1793,7 +1793,7 @@ OSErr CreateAttributesBTreeControlBlock(
}
else
{
err = R_NoMem;
goto exit;
}
-diff --git a/fsck_hfs.tproj/dfalib/hfs_endian.c b/fsck_hfs.tproj/dfalib/hfs_endian.c
-index 69500c1..3cc9eb4 100755
--- a/fsck_hfs.tproj/dfalib/hfs_endian.c
+++ b/fsck_hfs.tproj/dfalib/hfs_endian.c
@@ -437,7 +437,7 @@ hfs_swap_HFSPlusBTInternalNode (
fsck_hfs.tproj/dfalib/SBTree.c | 14 +++++------
2 files changed, 31 insertions(+), 31 deletions(-)
-diff --git a/fsck_hfs.tproj/dfalib/BTreeTreeOps.c b/fsck_hfs.tproj/dfalib/BTreeTreeOps.c
-index b812b14..37fb170 100644
--- a/fsck_hfs.tproj/dfalib/BTreeTreeOps.c
+++ b/fsck_hfs.tproj/dfalib/BTreeTreeOps.c
-@@ -223,7 +223,7 @@ OSStatus SearchTree (BTreeControlBlockPtr btreePtr,
+@@ -223,7 +223,7 @@ OSStatus SearchTree (BTreeControlBlockPt
//
if (curNodeNum == 0)
{
err = fsBTInvalidNodeErr;
goto ErrorExit;
}
-@@ -433,7 +433,7 @@ OSStatus InsertLevel (BTreeControlBlockPtr btreePtr,
+@@ -433,7 +433,7 @@ OSStatus InsertLevel (BTreeControlBlockP
M_ExitOnError (err);
if ( DEBUG_BUILD && updateParent && newRoot )
}
//////////////////////// Update Parent(s) ///////////////////////////////
-@@ -448,7 +448,7 @@ OSStatus InsertLevel (BTreeControlBlockPtr btreePtr,
+@@ -448,7 +448,7 @@ OSStatus InsertLevel (BTreeControlBlockP
secondaryKey = nil;
++level;
-@@ -456,7 +456,7 @@ OSStatus InsertLevel (BTreeControlBlockPtr btreePtr,
+@@ -456,7 +456,7 @@ OSStatus InsertLevel (BTreeControlBlockP
index = treePathTable [level].index;
parentNodeNum = treePathTable [level].node;
err = GetNode (btreePtr, parentNodeNum, &parentNode); // released as target node in next level up
M_ExitOnError (err);
-@@ -470,7 +470,7 @@ OSStatus InsertLevel (BTreeControlBlockPtr btreePtr,
+@@ -470,7 +470,7 @@ OSStatus InsertLevel (BTreeControlBlockP
{
//¥¥Êdebug: check if ptr == targetNodeNum
GetRecordByIndex (btreePtr, parentNode.buffer, index, &keyPtr, &recPtr, &recSize);
return err;
-@@ -566,7 +566,7 @@ static OSErr InsertNode (BTreeControlBlockPtr btreePtr,
+@@ -566,7 +566,7 @@ static OSErr InsertNode (BTreeControlBlo
*rootSplit = false;
leftNodeNum = ((NodeDescPtr) targetNode->buffer)->bLink;
rightNodeNum = ((NodeDescPtr) targetNode->buffer)->fLink;
-@@ -606,7 +606,7 @@ static OSErr InsertNode (BTreeControlBlockPtr btreePtr,
+@@ -606,7 +606,7 @@ static OSErr InsertNode (BTreeControlBlo
if ( leftNodeNum > 0 )
{
if ( siblingNode->buffer == nil )
{
-@@ -614,7 +614,7 @@ static OSErr InsertNode (BTreeControlBlockPtr btreePtr,
+@@ -614,7 +614,7 @@ static OSErr InsertNode (BTreeControlBlo
M_ExitOnError (err);
}
if ( !key->skipRotate ) // are rotates allowed?
{
-@@ -703,7 +703,7 @@ OSStatus DeleteTree (BTreeControlBlockPtr btreePtr,
+@@ -703,7 +703,7 @@ OSStatus DeleteTree (BTreeControlBlock
targetNodeNum = treePathTable[level].node;
targetNodePtr = targetNode->buffer;
DeleteRecord (btreePtr, targetNodePtr, index);
-@@ -797,7 +797,7 @@ OSStatus DeleteTree (BTreeControlBlockPtr btreePtr,
+@@ -797,7 +797,7 @@ OSStatus DeleteTree (BTreeControlBlock
//¥¥Êdebug: check if ptr == targetNodeNum
GetRecordByIndex (btreePtr, parentNode.buffer, index, &keyPtr, &recPtr, &recSize);
// need to delete and re-insert this parent key/ptr
DeleteRecord (btreePtr, parentNode.buffer, index);
-@@ -1018,7 +1018,7 @@ static OSStatus RotateLeft (BTreeControlBlockPtr btreePtr,
+@@ -1018,7 +1018,7 @@ static OSStatus RotateLeft (BTreeContro
keyPtr, keyLength, recPtr, recSize);
if ( !didItFit )
{
err = fsBTBadRotateErr;
goto ErrorExit;
}
-@@ -1031,7 +1031,7 @@ static OSStatus RotateLeft (BTreeControlBlockPtr btreePtr,
+@@ -1031,7 +1031,7 @@ static OSStatus RotateLeft (BTreeContro
didItFit = RotateRecordLeft (btreePtr, leftNode, rightNode);
if ( !didItFit )
{
err = fsBTBadRotateErr;
goto ErrorExit;
}
-@@ -1048,7 +1048,7 @@ static OSStatus RotateLeft (BTreeControlBlockPtr btreePtr,
+@@ -1048,7 +1048,7 @@ static OSStatus RotateLeft (BTreeContro
keyPtr, keyLength, recPtr, recSize);
if ( !didItFit )
{
err = fsBTBadRotateErr;
goto ErrorExit;
}
-@@ -1117,7 +1117,7 @@ static OSStatus SplitLeft (BTreeControlBlockPtr btreePtr,
+@@ -1117,7 +1117,7 @@ static OSStatus SplitLeft (BTreeControl
right = rightNode->buffer;
left = leftNode->buffer;
//¥¥ type should be kLeafNode or kIndexNode
-@@ -1240,8 +1240,8 @@ static OSStatus AddNewRootNode (BTreeControlBlockPtr btreePtr,
+@@ -1240,8 +1240,8 @@ static OSStatus AddNewRootNode (BTreeCon
Boolean didItFit;
UInt16 keyLength;
/////////////////////// Initialize New Root Node ////////////////////////////
-@@ -1264,7 +1264,7 @@ static OSStatus AddNewRootNode (BTreeControlBlockPtr btreePtr,
+@@ -1264,7 +1264,7 @@ static OSStatus AddNewRootNode (BTreeCon
didItFit = InsertKeyRecord ( btreePtr, rootNode.buffer, 0, keyPtr, keyLength,
(UInt8 *) &rightNode->bLink, 4 );
//////////////////// Insert Right Node Index Record /////////////////////////
-@@ -1275,7 +1275,7 @@ static OSStatus AddNewRootNode (BTreeControlBlockPtr btreePtr,
+@@ -1275,7 +1275,7 @@ static OSStatus AddNewRootNode (BTreeCon
didItFit = InsertKeyRecord ( btreePtr, rootNode.buffer, 1, keyPtr, keyLength,
(UInt8 *) &leftNode->fLink, 4 );
#if DEBUG_TREEOPS
-@@ -1355,7 +1355,7 @@ static OSStatus SplitRight (BTreeControlBlockPtr btreePtr,
+@@ -1355,7 +1355,7 @@ static OSStatus SplitRight (BTreeContro
}
rightPtr = rightNodePtr->buffer;
//¥¥ type should be kLeafNode or kIndexNode
-@@ -1557,7 +1557,7 @@ static OSStatus RotateRight (BTreeControlBlockPtr btreePtr,
+@@ -1557,7 +1557,7 @@ static OSStatus RotateRight (BTreeContr
keyPtr, keyLength, recPtr, recSize);
if ( !didItFit )
{
err = fsBTBadRotateErr;
goto ErrorExit;
}
-@@ -1572,7 +1572,7 @@ static OSStatus RotateRight (BTreeControlBlockPtr btreePtr,
+@@ -1572,7 +1572,7 @@ static OSStatus RotateRight (BTreeContr
didItFit = RotateRecordRight( btreePtr, leftNodePtr, rightNodePtr );
if ( !didItFit )
{
err = fsBTBadRotateErr;
goto ErrorExit;
}
-@@ -1583,7 +1583,7 @@ static OSStatus RotateRight (BTreeControlBlockPtr btreePtr,
+@@ -1583,7 +1583,7 @@ static OSStatus RotateRight (BTreeContr
keyPtr, keyLength, recPtr, recSize);
if ( !didItFit )
{
err = fsBTBadRotateErr;
goto ErrorExit;
}
-@@ -1607,7 +1607,7 @@ static OSStatus RotateRight (BTreeControlBlockPtr btreePtr,
+@@ -1607,7 +1607,7 @@ static OSStatus RotateRight (BTreeContr
keyPtr, keyLength, recPtr, recSize);
if ( !didItFit )
{
err = fsBTBadRotateErr;
goto ErrorExit;
}
-diff --git a/fsck_hfs.tproj/dfalib/SBTree.c b/fsck_hfs.tproj/dfalib/SBTree.c
-index cd81b13..eeb4e8c 100644
--- a/fsck_hfs.tproj/dfalib/SBTree.c
+++ b/fsck_hfs.tproj/dfalib/SBTree.c
-@@ -103,7 +103,7 @@ OSErr SearchBTreeRecord(SFCB *fcb, const void* key, UInt32 hint, void* foundKey,
+@@ -103,7 +103,7 @@ OSErr SearchBTreeRecord(SFCB *fcb, const
CopyMemory(&resultIterator->key, foundKey, CalcKeySize(btcb, &resultIterator->key)); //¥¥ warning, this could overflow user's buffer!!!
if ( DEBUG_BUILD && !ValidHFSRecord(data, btcb, *dataSize) )
}
ErrorExit:
-@@ -211,7 +211,7 @@ OSErr GetBTreeRecord(SFCB *fcb, SInt16 selectionIndex, void* key, void* data, UI
+@@ -211,7 +211,7 @@ OSErr GetBTreeRecord(SFCB *fcb, SInt16 s
CopyMemory(&iterator->key, key, CalcKeySize(btcb, &iterator->key)); //¥¥ warning, this could overflow user's buffer!!!
if ( DEBUG_BUILD && !ValidHFSRecord(data, btcb, *dataSize) )
}
-@@ -243,7 +243,7 @@ OSErr InsertBTreeRecord(SFCB *fcb, const void* key, const void* data, UInt16 dat
+@@ -243,7 +243,7 @@ OSErr InsertBTreeRecord(SFCB *fcb, const
CopyMemory(key, &iterator.key, CalcKeySize(btcb, (BTreeKey *) key)); //¥¥ should we range check against maxkeylen?
if ( DEBUG_BUILD && !ValidHFSRecord(data, btcb, dataSize) )
result = BTInsertRecord( fcb, &iterator, &btRecord, dataSize );
-@@ -305,7 +305,7 @@ OSErr ReplaceBTreeRecord(SFCB *fcb, const void* key, UInt32 hint, void *newData,
+@@ -305,7 +305,7 @@ OSErr ReplaceBTreeRecord(SFCB *fcb, cons
CopyMemory(key, &iterator.key, CalcKeySize(btcb, (BTreeKey *) key)); //¥¥ should we range check against maxkeylen?
if ( DEBUG_BUILD && !ValidHFSRecord(newData, btcb, dataSize) )
result = BTReplaceRecord( fcb, &iterator, &btRecord, dataSize );
-@@ -344,7 +344,7 @@ SetEndOfForkProc ( SFCB *filePtr, FSSize minEOF, FSSize maxEOF )
+@@ -344,7 +344,7 @@ SetEndOfForkProc ( SFCB *filePtr, FSSize
else
{
if ( DEBUG_BUILD )
return -1;
}
-@@ -370,7 +370,7 @@ SetEndOfForkProc ( SFCB *filePtr, FSSize minEOF, FSSize maxEOF )
+@@ -370,7 +370,7 @@ SetEndOfForkProc ( SFCB *filePtr, FSSize
// Make sure we got at least as much space as we needed
//
if (filePtr->fcbLogicalSize < minEOF) {
return dskFulErr;
}
-@@ -442,7 +442,7 @@ static OSErr CheckBTreeKey(const BTreeKey *key, const BTreeControlBlock *btcb)
+@@ -442,7 +442,7 @@ static OSErr CheckBTreeKey(const BTreeKe
if ( (keyLen < 6) || (keyLen > btcb->maxKeyLength) )
{
if ( DEBUG_BUILD )
fsck_hfs.tproj/dfalib/hfs_endian.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
-diff --git a/fsck_hfs.tproj/dfalib/SControl.c b/fsck_hfs.tproj/dfalib/SControl.c
-index 4ce9e16..8b03ece 100644
--- a/fsck_hfs.tproj/dfalib/SControl.c
+++ b/fsck_hfs.tproj/dfalib/SControl.c
@@ -776,7 +776,7 @@ static int ScavSetUp( SGlob *GPtr)
R_NoMem, sizeof(ScavStaticStructures) );
}
return( R_NoMem );
-diff --git a/fsck_hfs.tproj/dfalib/hfs_endian.c b/fsck_hfs.tproj/dfalib/hfs_endian.c
-index 3cc9eb4..6ca2ac1 100755
--- a/fsck_hfs.tproj/dfalib/hfs_endian.c
+++ b/fsck_hfs.tproj/dfalib/hfs_endian.c
@@ -563,7 +563,7 @@ hfs_swap_HFSPlusBTInternalNode (
newfs_hfs.tproj/makehfs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/newfs_hfs.tproj/makehfs.c b/newfs_hfs.tproj/makehfs.c
-index 7609779..2233ef7 100644
--- a/newfs_hfs.tproj/makehfs.c
+++ b/newfs_hfs.tproj/makehfs.c
-@@ -70,7 +70,7 @@ extern Boolean _CFStringGetFileSystemRepresentation(CFStringRef string, UInt8 *b
+@@ -70,7 +70,7 @@ extern Boolean _CFStringGetFileSystemRep
#include "readme.h"
fsck_hfs.tproj/fsck_hfs.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
-diff --git a/fsck_hfs.tproj/fsck_hfs.c b/fsck_hfs.tproj/fsck_hfs.c
-index f1a18bd..6117698 100644
--- a/fsck_hfs.tproj/fsck_hfs.c
+++ b/fsck_hfs.tproj/fsck_hfs.c
@@ -104,7 +104,7 @@ main(argc, argv)
fsck_hfs.tproj/fsck_debug.h | 10 +++++-----
4 files changed, 22 insertions(+), 22 deletions(-)
-diff --git a/fsck_hfs.tproj/dfalib/SRepair.c b/fsck_hfs.tproj/dfalib/SRepair.c
-index 8eb759c..89c12d6 100644
--- a/fsck_hfs.tproj/dfalib/SRepair.c
+++ b/fsck_hfs.tproj/dfalib/SRepair.c
-@@ -1825,13 +1825,13 @@ static OSErr FixAttrSize(SGlobPtr GPtr, RepairOrderPtr p)
+@@ -1825,13 +1825,13 @@ static OSErr FixAttrSize(SGlobPtr GPtr,
result = BTSearchRecord(GPtr->calculatedAttributesFCB, &iterator,
kInvalidMRUCacheKey, &btRecord, &recSize, &iterator);
if (result) {
result = btNotFound;
goto out;
}
-@@ -1862,7 +1862,7 @@ static OSErr FixAttrSize(SGlobPtr GPtr, RepairOrderPtr p)
+@@ -1862,7 +1862,7 @@ static OSErr FixAttrSize(SGlobPtr GPtr,
result = BTReplaceRecord(GPtr->calculatedAttributesFCB, &iterator,
&btRecord, recSize);
if (result) {
if (err) {
goto create_symlink;
}
-@@ -3227,12 +3227,12 @@ static OSErr MoveExtent(SGlobPtr GPtr, ExtentInfo *extentInfo)
+@@ -3227,12 +3227,12 @@ static OSErr MoveExtent(SGlobPtr GPtr, E
&extentData, &recordSize, &foundExtentIndex);
foundLocation = extentsBTree;
if (err != noErr) {
goto out;
}
}
-@@ -3241,7 +3241,7 @@ static OSErr MoveExtent(SGlobPtr GPtr, ExtentInfo *extentInfo)
+@@ -3241,7 +3241,7 @@ static OSErr MoveExtent(SGlobPtr GPtr, E
err = CopyDiskBlocks(GPtr, extentInfo->startBlock, extentInfo->blockCount,
extentInfo->newStartBlock);
if (err != noErr) {
goto out;
}
-@@ -3260,7 +3260,7 @@ static OSErr MoveExtent(SGlobPtr GPtr, ExtentInfo *extentInfo)
+@@ -3260,7 +3260,7 @@ static OSErr MoveExtent(SGlobPtr GPtr, E
}
if (err != noErr) {
goto out;
}
-@@ -3491,7 +3491,7 @@ static OSErr SearchExtentInAttributeBT(SGlobPtr GPtr, ExtentInfo *extentInfo,
+@@ -3491,7 +3491,7 @@ static OSErr SearchExtentInAttributeBT(S
result = BTSearchRecord(GPtr->calculatedAttributesFCB, &iterator,
kInvalidMRUCacheKey, &btRecord, recordSize, &iterator);
if (result) {
goto out;
}
-diff --git a/fsck_hfs.tproj/dfalib/SVerify1.c b/fsck_hfs.tproj/dfalib/SVerify1.c
-index a273bf3..39bda5c 100644
--- a/fsck_hfs.tproj/dfalib/SVerify1.c
+++ b/fsck_hfs.tproj/dfalib/SVerify1.c
-@@ -2157,9 +2157,9 @@ CheckAttributeRecord(SGlobPtr GPtr, const HFSPlusAttrKey *key, const HFSPlusAttr
+@@ -2157,9 +2157,9 @@ CheckAttributeRecord(SGlobPtr GPtr, cons
if (doDelete == true) {
result = DeleteBTreeRecord(GPtr->calculatedAttributesFCB, key);
}
/* Set flags to mark header and map dirty */
-@@ -3034,7 +3034,7 @@ OSErr CheckFileExtents( SGlobPtr GPtr, UInt32 fileNumber, UInt8 forkType,
+@@ -3034,7 +3034,7 @@ OSErr CheckFileExtents( SGlobPtr GPtr, U
// checkout the extent record first
err = ChkExtRec( GPtr, extents, &lastExtentIndex );
if (err != noErr) {
/* Stop verification if bad extent is found for system file or EA */
if ((fileNumber < kHFSFirstUserCatalogNodeID) ||
-diff --git a/fsck_hfs.tproj/fsck_debug.c b/fsck_hfs.tproj/fsck_debug.c
-index 1be3fc5..77e8e51 100644
--- a/fsck_hfs.tproj/fsck_debug.c
+++ b/fsck_hfs.tproj/fsck_debug.c
@@ -25,18 +25,18 @@
{
if (cur_debug_level & type) {
va_list ap;
-diff --git a/fsck_hfs.tproj/fsck_debug.h b/fsck_hfs.tproj/fsck_debug.h
-index 81e3932..cb1b9be 100644
--- a/fsck_hfs.tproj/fsck_debug.h
+++ b/fsck_hfs.tproj/fsck_debug.h
@@ -36,18 +36,18 @@ enum debug_message_type {
fsck_hfs.tproj/dfalib/SVerify2.c | 4 +-
10 files changed, 177 insertions(+), 177 deletions(-)
-diff --git a/fsck_hfs.tproj/dfalib/BTree.c b/fsck_hfs.tproj/dfalib/BTree.c
-index 7ad9fe0..c0c8744 100644
--- a/fsck_hfs.tproj/dfalib/BTree.c
+++ b/fsck_hfs.tproj/dfalib/BTree.c
-@@ -163,21 +163,21 @@ OSStatus BTInitialize (FCB *filePtr,
+@@ -163,21 +163,21 @@ OSStatus BTInitialize (FCB *filePtr
////////////////////// Preliminary Error Checking ///////////////////////////
if ((maxKeyLength == 0) ||
(maxKeyLength > kMaxKeyLength)) return fsBTInvalidKeyLengthErr;
-@@ -209,7 +209,7 @@ OSStatus BTInitialize (FCB *filePtr,
+@@ -209,7 +209,7 @@ OSStatus BTInitialize (FCB *filePtr
//////////////////////// Allocate Control Block /////////////////////////////
M_RESIDENT_ALLOCATE_FIXED_CLEAR( &btreePtr, sizeof( BTreeControlBlock ), kFSBTreeControlBlockType );
{
err = memFullErr;
goto ErrorExit;
-@@ -220,7 +220,7 @@ OSStatus BTInitialize (FCB *filePtr,
+@@ -220,7 +220,7 @@ OSStatus BTInitialize (FCB *filePtr
btreePtr->flags = 0;
btreePtr->attributes = 0;
btreePtr->forkPtr = forkPtr;
btreePtr->keyDescPtr = keyDescPtr;
btreePtr->btreeType = btreeType;
btreePtr->treeDepth = 0;
-@@ -282,7 +282,7 @@ OSStatus BTInitialize (FCB *filePtr,
+@@ -282,7 +282,7 @@ OSStatus BTInitialize (FCB *filePtr
///////////////////// Copy Key Descriptor To Header /////////////////////////
#if SupportsKeyDescriptors
{
err = CheckKeyDescriptor (keyDescPtr, maxKeyLength);
M_ExitOnError (err);
-@@ -309,7 +309,7 @@ OSStatus BTInitialize (FCB *filePtr,
+@@ -309,7 +309,7 @@ OSStatus BTInitialize (FCB *filePtr
err = UpdateHeader (btreePtr);
M_ExitOnError (err);
M_RESIDENT_DEALLOCATE_FIXED( btreePtr, sizeof( BTreeControlBlock ), kFSBTreeControlBlockType );
return noErr;
-@@ -320,7 +320,7 @@ OSStatus BTInitialize (FCB *filePtr,
+@@ -320,7 +320,7 @@ OSStatus BTInitialize (FCB *filePtr
ErrorExit:
(void) ReleaseNode (btreePtr, &headerNode);
M_RESIDENT_DEALLOCATE_FIXED( btreePtr, sizeof( BTreeControlBlock ), kFSBTreeControlBlockType );
return err;
-@@ -342,7 +342,7 @@ Input: filePtr - pointer to file to open as a B-tree
+@@ -342,7 +342,7 @@ Input: filePtr - pointer to file to
setEndOfForkProc - pointer to client's SetEOF function
Result: noErr - success
fsBTInvalidFileErr -
memFullErr -
!= noErr - failure
-@@ -364,16 +364,16 @@ OSStatus BTOpenPath (SFCB *filePtr,
+@@ -364,16 +364,16 @@ OSStatus BTOpenPath (SFCB *filePtr
////////////////////// Preliminary Error Checking ///////////////////////////
return noErr;
// is file large enough to contain header node?
-@@ -384,7 +384,7 @@ OSStatus BTOpenPath (SFCB *filePtr,
+@@ -384,7 +384,7 @@ OSStatus BTOpenPath (SFCB *filePtr
//////////////////////// Allocate Control Block /////////////////////////////
btreePtr = (BTreeControlBlock*) AllocateClearMemory( sizeof( BTreeControlBlock ) );
{
Panic ("\pBTOpen: no memory for btreePtr.");
return memFullErr;
-@@ -397,7 +397,7 @@ OSStatus BTOpenPath (SFCB *filePtr,
+@@ -397,7 +397,7 @@ OSStatus BTOpenPath (SFCB *filePtr
/////////////////////////// Read Header Node ////////////////////////////////
btreePtr->fcbPtr = filePtr;
filePtr->fcbBtree = (void *) btreePtr; // attach btree cb to file
-@@ -487,7 +487,7 @@ OSStatus BTOpenPath (SFCB *filePtr,
+@@ -487,7 +487,7 @@ OSStatus BTOpenPath (SFCB *filePtr
////////////////////////// Get Key Descriptor ///////////////////////////////
#if SupportsKeyDescriptors
{
err = GetKeyDescriptor (btreePtr, nodeRec.buffer); //¥¥ it should check amount of memory allocated...
M_ExitOnError (err);
-@@ -499,7 +499,7 @@ OSStatus BTOpenPath (SFCB *filePtr,
+@@ -499,7 +499,7 @@ OSStatus BTOpenPath (SFCB *filePtr
else
#endif
{
}
err = ReleaseNode (btreePtr, &nodeRec);
-@@ -528,7 +528,7 @@ OSStatus BTOpenPath (SFCB *filePtr,
+@@ -528,7 +528,7 @@ OSStatus BTOpenPath (SFCB *filePtr
ErrorExit:
(void) ReleaseNode (btreePtr, &nodeRec);
DisposeMemory( btreePtr );
-@@ -567,7 +567,7 @@ OSStatus BTClosePath (SFCB *filePtr)
+@@ -567,7 +567,7 @@ OSStatus BTClosePath (SFCB *filePt
btreePtr = (BTreeControlBlockPtr) filePtr->fcbBtree;
return fsBTInvalidFileErr;
////////////////////// Check for other BTree Paths //////////////////////////
-@@ -603,14 +603,14 @@ OSStatus BTClosePath (SFCB *filePtr)
+@@ -603,14 +603,14 @@ OSStatus BTClosePath (SFCB *filePt
M_ExitOnError (err);
#if SupportsKeyDescriptors
// LogEndTime(kTraceCloseBTree, noErr);
-@@ -643,7 +643,7 @@ Function: Search for position in B*Tree indicated by searchKey. If a valid node
+@@ -643,7 +643,7 @@ Function: Search for position in B*Tree
Input: pathPtr - pointer to path for BTree file.
searchKey - pointer to search key to match.
Output: record - pointer to BufferDescriptor containing record
recordLen - length of data at recordPtr
-@@ -678,14 +678,14 @@ OSStatus BTSearchRecord (SFCB *filePtr,
+@@ -678,14 +678,14 @@ OSStatus BTSearchRecord (SFCB *fil
// LogStartTime(kTraceSearchBTree);
{
err = CheckKey (&searchIterator->key, btreePtr->keyDescPtr, btreePtr->maxKeyLength);
M_ExitOnError (err);
-@@ -775,9 +775,9 @@ OSStatus BTSearchRecord (SFCB *filePtr,
+@@ -775,9 +775,9 @@ OSStatus BTSearchRecord (SFCB *fil
//¥¥ Should check for errors! Or BlockMove could choke on recordPtr!!!
GetRecordByIndex (btreePtr, node.buffer, index, &keyPtr, &recordPtr, &len);
{
ByteCount recordSize;
-@@ -794,7 +794,7 @@ OSStatus BTSearchRecord (SFCB *filePtr,
+@@ -794,7 +794,7 @@ OSStatus BTSearchRecord (SFCB *fil
/////////////////////// Success - Update Iterator ///////////////////////////
{
resultIterator->hint.writeCount = btreePtr->writeCount;
resultIterator->hint.nodeNum = nodeNum;
-@@ -825,10 +825,10 @@ OSStatus BTSearchRecord (SFCB *filePtr,
+@@ -825,10 +825,10 @@ OSStatus BTSearchRecord (SFCB *fil
ErrorExit:
{
resultIterator->hint.writeCount = 0;
resultIterator->hint.nodeNum = 0;
-@@ -892,18 +892,18 @@ OSStatus BTIterateRecord (SFCB *filePtr,
+@@ -892,18 +892,18 @@ OSStatus BTIterateRecord (SFCB *fi
////////////////////////// Priliminary Checks ///////////////////////////////
{
return fsBTInvalidFileErr; //¥¥ handle properly
}
-@@ -968,7 +968,7 @@ OSStatus BTIterateRecord (SFCB *filePtr,
+@@ -968,7 +968,7 @@ OSStatus BTIterateRecord (SFCB *fi
}
else
{
{
nodeNum = ((NodeDescPtr) node.buffer)->bLink;
if ( nodeNum > 0)
-@@ -981,13 +981,13 @@ OSStatus BTIterateRecord (SFCB *filePtr,
+@@ -981,13 +981,13 @@ OSStatus BTIterateRecord (SFCB *fi
}
}
// Before we stomp on "right", we'd better release it if needed
index = ((NodeDescPtr) node.buffer)->numRecords -1;
}
}
-@@ -1012,7 +1012,7 @@ OSStatus BTIterateRecord (SFCB *filePtr,
+@@ -1012,7 +1012,7 @@ OSStatus BTIterateRecord (SFCB *fi
}
else
{
{
nodeNum = ((NodeDescPtr) node.buffer)->fLink;
if ( nodeNum > 0)
-@@ -1025,13 +1025,13 @@ OSStatus BTIterateRecord (SFCB *filePtr,
+@@ -1025,13 +1025,13 @@ OSStatus BTIterateRecord (SFCB *fi
}
}
// Before we stomp on "left", we'd better release it if needed
{
iterator->hint.writeCount = 0;
iterator->hint.nodeNum = 0;
-@@ -1157,7 +1157,7 @@ OSStatus BTInsertRecord (SFCB *filePtr,
+@@ -1157,7 +1157,7 @@ OSStatus BTInsertRecord (SFCB *fil
////////////////////////// Priliminary Checks ///////////////////////////////
err = CheckInsertParams (filePtr, iterator, record, recordLen);
if (err != noErr)
-@@ -1317,7 +1317,7 @@ OSStatus BTSetRecord (SFCB *filePtr,
+@@ -1317,7 +1317,7 @@ OSStatus BTSetRecord (SFCB *fileP
////////////////////////// Priliminary Checks ///////////////////////////////
err = CheckInsertParams (filePtr, iterator, record, recordLen);
if (err != noErr)
-@@ -1506,7 +1506,7 @@ OSStatus BTReplaceRecord (SFCB *filePtr,
+@@ -1506,7 +1506,7 @@ OSStatus BTReplaceRecord (SFCB *fi
////////////////////////// Priliminary Checks ///////////////////////////////
err = CheckInsertParams (filePtr, iterator, record, recordLen);
if (err != noErr)
-@@ -1645,20 +1645,20 @@ OSStatus BTDeleteRecord (SFCB *filePtr,
+@@ -1645,20 +1645,20 @@ OSStatus BTDeleteRecord (SFCB *fil
////////////////////////// Priliminary Checks ///////////////////////////////
{
err = CheckKey (&iterator->key, btreePtr->keyDescPtr, btreePtr->maxKeyLength);
M_ExitOnError (err);
-@@ -1712,12 +1712,12 @@ OSStatus BTGetInformation (SFCB *filePtr,
+@@ -1712,12 +1712,12 @@ OSStatus BTGetInformation (SFCB *fil
BTreeControlBlockPtr btreePtr;
//¥¥ check version?
-@@ -1730,7 +1730,7 @@ OSStatus BTGetInformation (SFCB *filePtr,
+@@ -1730,7 +1730,7 @@ OSStatus BTGetInformation (SFCB *fil
info->keyDescriptor = btreePtr->keyDescPtr; //¥¥ this won't do at all...
info->reserved = 0;
info->keyDescLength = 0;
else
info->keyDescLength = (UInt32) btreePtr->keyDescPtr->length;
-@@ -1762,11 +1762,11 @@ OSStatus BTFlushPath (SFCB *filePtr)
+@@ -1762,11 +1762,11 @@ OSStatus BTFlushPath (SFCB *fileP
// LogStartTime(kTraceFlushBTree);
err = UpdateHeader (btreePtr);
-@@ -1788,13 +1788,13 @@ Input: iterator - pointer to BTreeIterator
+@@ -1788,13 +1788,13 @@ Input: iterator - pointer to BTreeItera
Output: iterator - iterator with the hint.nodeNum cleared
Result: noErr - success
return paramErr;
iterator->hint.nodeNum = 0;
-diff --git a/fsck_hfs.tproj/dfalib/BTreeAllocate.c b/fsck_hfs.tproj/dfalib/BTreeAllocate.c
-index 485d867..02bdd8d 100644
--- a/fsck_hfs.tproj/dfalib/BTreeAllocate.c
+++ b/fsck_hfs.tproj/dfalib/BTreeAllocate.c
-@@ -83,7 +83,7 @@ OSStatus AllocateNode (BTreeControlBlockPtr btreePtr, UInt32 *nodeNum)
+@@ -83,7 +83,7 @@ OSStatus AllocateNode (BTreeControlBlock
nodeNumber = 0; // first node number of header map record
// - and for ErrorExit
while (true)
-@@ -192,7 +192,7 @@ OSStatus FreeNode (BTreeControlBlockPtr btreePtr, UInt32 nodeNum)
+@@ -192,7 +192,7 @@ OSStatus FreeNode (BTreeControlBlockPtr
//////////////////////////// Find Map Record ////////////////////////////////
nodeIndex = 0; // first node number of header map record
while (nodeNum >= nodeIndex)
{
-@@ -278,8 +278,8 @@ OSStatus ExtendBTree (BTreeControlBlockPtr btreePtr,
+@@ -278,8 +278,8 @@ OSStatus ExtendBTree (BTreeControlBlockP
nodeSize = btreePtr->nodeSize;
filePtr = btreePtr->fcbPtr;
node is retrieved.
-@@ -474,7 +474,7 @@ OSStatus GetMapNode (BTreeControlBlockPtr btreePtr,
+@@ -474,7 +474,7 @@ OSStatus GetMapNode (BTreeControlBlockPt
UInt16 mapIndex;
UInt32 nextNodeNum;
*mapSize = 0;
return err;
-diff --git a/fsck_hfs.tproj/dfalib/BTreeMiscOps.c b/fsck_hfs.tproj/dfalib/BTreeMiscOps.c
-index 7c9edca..997f34b 100644
--- a/fsck_hfs.tproj/dfalib/BTreeMiscOps.c
+++ b/fsck_hfs.tproj/dfalib/BTreeMiscOps.c
-@@ -236,13 +236,13 @@ OSStatus FindIteratorPosition (BTreeControlBlockPtr btreePtr,
+@@ -236,13 +236,13 @@ OSStatus FindIteratorPosition (BTreeCont
// assume index points to UInt16
// assume foundRecord points to Boolean
{
err = fsBTInvalidIteratorErr;
goto ErrorExit;
-@@ -250,7 +250,7 @@ OSStatus FindIteratorPosition (BTreeControlBlockPtr btreePtr,
+@@ -250,7 +250,7 @@ OSStatus FindIteratorPosition (BTreeCont
#if SupportsKeyDescriptors
//¥¥ verify iterator key (change CheckKey to take btreePtr instead of keyDescPtr?)
{
err = CheckKey (&iterator->key, btreePtr->keyDescPtr, btreePtr->maxKeyLength );
M_ExitOnError (err);
-@@ -309,7 +309,7 @@ OSStatus FindIteratorPosition (BTreeControlBlockPtr btreePtr,
+@@ -309,7 +309,7 @@ OSStatus FindIteratorPosition (BTreeCont
{
*right = *middle;
*middle = *left;
index = leftIndex;
goto SuccessfulExit;
-@@ -330,7 +330,7 @@ OSStatus FindIteratorPosition (BTreeControlBlockPtr btreePtr,
+@@ -330,7 +330,7 @@ OSStatus FindIteratorPosition (BTreeCont
{
*right = *middle;
*middle = *left;
index = leftIndex;
goto SuccessfulExit;
-@@ -363,7 +363,7 @@ OSStatus FindIteratorPosition (BTreeControlBlockPtr btreePtr,
+@@ -363,7 +363,7 @@ OSStatus FindIteratorPosition (BTreeCont
{
*left = *middle;
*middle = *right;
index = rightIndex;
goto SuccessfulExit;
-@@ -427,15 +427,15 @@ OSStatus CheckInsertParams (SFCB *filePtr,
+@@ -427,15 +427,15 @@ OSStatus CheckInsertParams (SFCB *
{
BTreeControlBlockPtr btreePtr;
{
OSStatus err;
-diff --git a/fsck_hfs.tproj/dfalib/BTreeNodeOps.c b/fsck_hfs.tproj/dfalib/BTreeNodeOps.c
-index da07cc7..ef2bd7b 100644
--- a/fsck_hfs.tproj/dfalib/BTreeNodeOps.c
+++ b/fsck_hfs.tproj/dfalib/BTreeNodeOps.c
-@@ -105,7 +105,7 @@ Function: Gets an existing BTree node from FS Agent and verifies it.
+@@ -105,7 +105,7 @@ Function: Gets an existing BTree node fr
Input: btreePtr - pointer to BTree control block
nodeNum - number of node to request
Result:
noErr - success
-@@ -139,7 +139,7 @@ OSStatus GetNode (BTreeControlBlockPtr btreePtr,
+@@ -139,7 +139,7 @@ OSStatus GetNode (BTreeControlBlockPtr
if (err != noErr)
{
Panic ("\pGetNode: getNodeProc returned error.");
goto ErrorExit;
}
++btreePtr->numGetNodes;
-@@ -156,8 +156,8 @@ OSStatus GetNode (BTreeControlBlockPtr btreePtr,
+@@ -156,8 +156,8 @@ OSStatus GetNode (BTreeControlBlockPtr
return noErr;
ErrorExit:
// LogEndTime(kTraceGetNode, err);
-@@ -176,7 +176,7 @@ Function: Gets a new BTree node from FS Agent and initializes it to an empty
+@@ -176,7 +176,7 @@ Function: Gets a new BTree node from FS
Input: btreePtr - pointer to BTree control block
nodeNum - number of node to request
Result: noErr - success
!= noErr - failure
-@@ -203,7 +203,7 @@ OSStatus GetNewNode (BTreeControlBlockPtr btreePtr,
+@@ -203,7 +203,7 @@ OSStatus GetNewNode (BTreeControlBlockPt
if (err != noErr)
{
Panic ("\pGetNewNode: getNodeProc returned error.");
return err;
}
++btreePtr->numGetNewNodes;
-@@ -248,7 +248,7 @@ OSStatus ReleaseNode (BTreeControlBlockPtr btreePtr,
+@@ -248,7 +248,7 @@ OSStatus ReleaseNode (BTreeControlBlockP
err = noErr;
{
/*
* The nodes must remain in the cache as big endian!
-@@ -267,8 +267,8 @@ OSStatus ReleaseNode (BTreeControlBlockPtr btreePtr,
+@@ -267,8 +267,8 @@ OSStatus ReleaseNode (BTreeControlBlockP
++btreePtr->numReleaseNodes;
}
// LogEndTime(kTraceReleaseNode, err);
-@@ -299,7 +299,7 @@ OSStatus TrashNode (BTreeControlBlockPtr btreePtr,
+@@ -299,7 +299,7 @@ OSStatus TrashNode (BTreeControlBlockPtr
err = noErr;
{
releaseNodeProc = btreePtr->releaseBlockProc;
err = releaseNodeProc (btreePtr->fcbPtr,
-@@ -309,8 +309,8 @@ OSStatus TrashNode (BTreeControlBlockPtr btreePtr,
+@@ -309,8 +309,8 @@ OSStatus TrashNode (BTreeControlBlockPtr
++btreePtr->numReleaseNodes;
}
return err;
}
-@@ -338,7 +338,7 @@ OSStatus UpdateNode (BTreeControlBlockPtr btreePtr,
+@@ -338,7 +338,7 @@ OSStatus UpdateNode (BTreeControlBlockPt
err = noErr;
{
// LogStartTime(kTraceReleaseNode);
err = hfs_swap_BTNode(nodePtr, btreePtr->fcbPtr, kSwapBTNodeHostToBig);
-@@ -358,8 +358,8 @@ OSStatus UpdateNode (BTreeControlBlockPtr btreePtr,
+@@ -358,8 +358,8 @@ OSStatus UpdateNode (BTreeControlBlockPt
++btreePtr->numUpdateNodes;
}
return noErr;
-diff --git a/fsck_hfs.tproj/dfalib/BTreeTreeOps.c b/fsck_hfs.tproj/dfalib/BTreeTreeOps.c
-index 37fb170..73e1fda 100644
--- a/fsck_hfs.tproj/dfalib/BTreeTreeOps.c
+++ b/fsck_hfs.tproj/dfalib/BTreeTreeOps.c
-@@ -177,7 +177,7 @@ Output: nodeNum - number of the node containing the key position
+@@ -177,7 +177,7 @@ Output: nodeNum - number of the node
Result: noErr - key found, index is record index
fsBTRecordNotFoundErr - key not found, index is insert index
*returnIndex = 0;
return err;
-@@ -354,7 +354,7 @@ OSStatus InsertTree ( BTreeControlBlockPtr btreePtr,
+@@ -354,7 +354,7 @@ OSStatus InsertTree ( BTreeControlBlockP
primaryKey.replacingKey = replacingKey;
primaryKey.skipRotate = false;
targetNode, index, level, insertNode );
return err;
-@@ -385,7 +385,7 @@ OSStatus InsertLevel (BTreeControlBlockPtr btreePtr,
+@@ -385,7 +385,7 @@ OSStatus InsertLevel (BTreeControlBlockP
#if defined(applec) && !defined(__SC__)
PanicIf ((level == 1) && (((NodeDescPtr)targetNode->buffer)->kind != kBTLeafNode), "\P InsertLevel: non-leaf at level 1! ");
#endif
targetNodeNum = treePathTable [level].node;
insertParent = false;
-@@ -420,7 +420,7 @@ OSStatus InsertLevel (BTreeControlBlockPtr btreePtr,
+@@ -420,7 +420,7 @@ OSStatus InsertLevel (BTreeControlBlockP
////// process second insert (if any) //////
{
Boolean temp;
-@@ -446,7 +446,7 @@ OSStatus InsertLevel (BTreeControlBlockPtr btreePtr,
+@@ -446,7 +446,7 @@ OSStatus InsertLevel (BTreeControlBlockP
UInt8 * recPtr;
UInt16 recSize;
PanicIf ( (level == btreePtr->treeDepth), "InsertLevel: unfinished insert!?");
-@@ -606,9 +606,9 @@ static OSErr InsertNode (BTreeControlBlockPtr btreePtr,
+@@ -606,9 +606,9 @@ static OSErr InsertNode (BTreeControlBlo
if ( leftNodeNum > 0 )
{
{
err = GetNode (btreePtr, leftNodeNum, siblingNode); // will be released by caller or a split below
M_ExitOnError (err);
-@@ -703,7 +703,7 @@ OSStatus DeleteTree (BTreeControlBlockPtr btreePtr,
+@@ -703,7 +703,7 @@ OSStatus DeleteTree (BTreeControlBlock
targetNodeNum = treePathTable[level].node;
targetNodePtr = targetNode->buffer;
DeleteRecord (btreePtr, targetNodePtr, index);
-@@ -766,7 +766,7 @@ OSStatus DeleteTree (BTreeControlBlockPtr btreePtr,
+@@ -766,7 +766,7 @@ OSStatus DeleteTree (BTreeControlBlock
deleteRequired = false;
updateRequired = false;
{
btreePtr->rootNode = 0;
btreePtr->treeDepth = 0;
-@@ -1124,7 +1124,7 @@ static OSStatus SplitLeft (BTreeControlBlockPtr btreePtr,
+@@ -1124,7 +1124,7 @@ static OSStatus SplitLeft (BTreeControl
if ( (right->height == 1) && (right->kind != kBTLeafNode) )
return fsBTInvalidNodeErr;
{
if ( left->fLink != rightNodeNum )
return fsBTInvalidNodeErr; //¥¥ E_BadSibling ?
-@@ -1145,7 +1145,7 @@ static OSStatus SplitLeft (BTreeControlBlockPtr btreePtr,
+@@ -1145,7 +1145,7 @@ static OSStatus SplitLeft (BTreeControl
/////////////// Update Forward Link In Original Left Node ///////////////////
{
left->fLink = newNodeNum;
err = UpdateNode (btreePtr, leftNode);
-@@ -1240,8 +1240,8 @@ static OSStatus AddNewRootNode (BTreeControlBlockPtr btreePtr,
+@@ -1240,8 +1240,8 @@ static OSStatus AddNewRootNode (BTreeCon
Boolean didItFit;
UInt16 keyLength;
/////////////////////// Initialize New Root Node ////////////////////////////
-@@ -1362,7 +1362,7 @@ static OSStatus SplitRight (BTreeControlBlockPtr btreePtr,
+@@ -1362,7 +1362,7 @@ static OSStatus SplitRight (BTreeContro
if ( (leftPtr->height == 1) && (leftPtr->kind != kBTLeafNode) )
return fsBTInvalidNodeErr;
{
if ( rightPtr->bLink != nodeNum )
return fsBTInvalidNodeErr; //¥¥ E_BadSibling ?
-@@ -1382,7 +1382,7 @@ static OSStatus SplitRight (BTreeControlBlockPtr btreePtr,
+@@ -1382,7 +1382,7 @@ static OSStatus SplitRight (BTreeContro
/////////////// Update backward Link In Original Right Node ///////////////////
{
rightPtr->bLink = newNodeNum;
err = UpdateNode (btreePtr, rightNodePtr);
-@@ -1739,7 +1739,7 @@ static int DoKeyCheck( NodeDescPtr nodeP, BTreeControlBlock *btcb )
+@@ -1739,7 +1739,7 @@ static int DoKeyCheck( NodeDescPtr nodeP
UInt16 keyLength;
KeyPtr keyPtr;
UInt8 *dataPtr;
if ( nodeP->numRecords == 0 )
-@@ -1766,7 +1766,7 @@ static int DoKeyCheck( NodeDescPtr nodeP, BTreeControlBlock *btcb )
+@@ -1766,7 +1766,7 @@ static int DoKeyCheck( NodeDescPtr nodeP
return( -1 );
}
{
if ( CompareKeys( (BTreeControlBlockPtr)btcb, prevkeyP, keyPtr ) >= 0 )
{
-diff --git a/fsck_hfs.tproj/dfalib/SControl.c b/fsck_hfs.tproj/dfalib/SControl.c
-index 8b03ece..d3145e0 100644
--- a/fsck_hfs.tproj/dfalib/SControl.c
+++ b/fsck_hfs.tproj/dfalib/SControl.c
-@@ -82,7 +82,7 @@ CheckHFS( int fsReadRef, int fsWriteRef, int checkLevel, int repairLevel,
+@@ -82,7 +82,7 @@ CheckHFS( int fsReadRef, int fsWriteRef
{
SGlob dataArea; // Allocate the scav globals
short temp;
return( noErr );
}
-@@ -1113,7 +1113,7 @@ Boolean IsBlueBoxSharedDrive ( DrvQElPtr dqPtr )
+@@ -1113,7 +1113,7 @@ Boolean IsBlueBoxSharedDrive ( DrvQElPtr
// Now look at the name of the Driver name. If it is .BlueBoxShared keep it out of the list of available disks.
driverDCtlHandle = GetDCtlEntry(dqPtr->dQRefNum);
driverDCtlPtr = *driverDCtlHandle;
{
if (((driverDCtlPtr->dCtlFlags) & Is_Ram_Based_Mask) == 0)
{
-@@ -1127,19 +1127,19 @@ Boolean IsBlueBoxSharedDrive ( DrvQElPtr dqPtr )
+@@ -1127,19 +1127,19 @@ Boolean IsBlueBoxSharedDrive ( DrvQElPtr
}
driverName = (StringPtr)&(drvrHeaderPtr->drvrName);
paramBlock.ioVRefNum = dqPtr->dQDrive;
paramBlock.ioCRefNum = dqPtr->dQRefNum;
paramBlock.csCode = kDriveIcon; // return physical icon
-@@ -1152,7 +1152,7 @@ Boolean IsBlueBoxSharedDrive ( DrvQElPtr dqPtr )
+@@ -1152,7 +1152,7 @@ Boolean IsBlueBoxSharedDrive ( DrvQElPtr
iconAndStringRecPtr = * (IconAndStringRecPtr*) & paramBlock.csParam;
whereStringPtr = (StringPtr) & iconAndStringRecPtr->string;
{
return( true );
}
-diff --git a/fsck_hfs.tproj/dfalib/SRepair.c b/fsck_hfs.tproj/dfalib/SRepair.c
-index 89c12d6..b261c37 100644
--- a/fsck_hfs.tproj/dfalib/SRepair.c
+++ b/fsck_hfs.tproj/dfalib/SRepair.c
-@@ -844,7 +844,7 @@ static int DelFThd( SGlobPtr GPtr, UInt32 fid ) // the file ID
+@@ -844,7 +844,7 @@ static int DelFThd( SGlobPtr GPtr, UInt3
isHFSPlus = VolumeObjectIsHFSPlus( );
result = SearchBTreeRecord( GPtr->calculatedCatalogFCB, &key, kNoHint, &foundKey, &record, &recSize, &hint );
if ( result ) return ( IntError( GPtr, result ) );
-@@ -910,7 +910,7 @@ static OSErr FixDirThread( SGlobPtr GPtr, UInt32 did ) // the dir ID
+@@ -910,7 +910,7 @@ static OSErr FixDirThread( SGlobPtr GPtr
isHFSPlus = VolumeObjectIsHFSPlus( );
result = SearchBTreeRecord( GPtr->calculatedCatalogFCB, &key, kNoHint, &foundKey, &record, &recSize, &hint );
if ( result )
-@@ -2171,7 +2171,7 @@ static OSErr FixOrphanedFiles ( SGlobPtr GPtr )
+@@ -2171,7 +2171,7 @@ static OSErr FixOrphanedFiles ( SGlobPtr
}
//-- Build the key for the file thread
err = SearchBTreeRecord( GPtr->calculatedCatalogFCB, &key, kNoHint,
&tempKey, &threadRecord, &recordSize, &hint2 );
-diff --git a/fsck_hfs.tproj/dfalib/SUtils.c b/fsck_hfs.tproj/dfalib/SUtils.c
-index 6e9253e..491afbf 100644
--- a/fsck_hfs.tproj/dfalib/SUtils.c
+++ b/fsck_hfs.tproj/dfalib/SUtils.c
@@ -395,11 +395,11 @@ OSErr GetVolumeFeatures( SGlobPtr GPtr )
pb.ioParam.ioVRefNum = GPtr->realVCB->vcbVRefNum;
pb.ioParam.ioBuffer = (Ptr) &buffer;
pb.ioParam.ioReqCount = sizeof( buffer );
-@@ -2282,7 +2282,7 @@ void print_prime_buckets(PrimeBuckets *cur);
+@@ -2282,7 +2282,7 @@ void print_prime_buckets(PrimeBuckets *c
* 4. btreetye - can be kHFSPlusCatalogRecord or kHFSPlusAttributeRecord
* indicates which btree prime number bucket should be incremented
*
*/
void RecordXAttrBits(SGlobPtr GPtr, UInt16 flags, HFSCatalogNodeID fileid, UInt16 btreetype)
{
-diff --git a/fsck_hfs.tproj/dfalib/SVerify1.c b/fsck_hfs.tproj/dfalib/SVerify1.c
-index 39bda5c..c33155f 100644
--- a/fsck_hfs.tproj/dfalib/SVerify1.c
+++ b/fsck_hfs.tproj/dfalib/SVerify1.c
-@@ -790,13 +790,13 @@ OSErr CreateExtentsBTreeControlBlock( SGlobPtr GPtr )
+@@ -790,13 +790,13 @@ OSErr CreateExtentsBTreeControlBlock( SG
// set up our DFA extended BTCB area. Will we have enough memory on all HFS+ volumes.
//
btcb->refCon = AllocateClearMemory( sizeof(BTreeExtensionsRec) ); // allocate space for our BTCB extensions
{
err = R_NoMem;
goto exit;
-@@ -1145,13 +1145,13 @@ OSErr CreateCatalogBTreeControlBlock( SGlobPtr GPtr )
+@@ -1145,13 +1145,13 @@ OSErr CreateCatalogBTreeControlBlock( SG
//
btcb->refCon = AllocateClearMemory( sizeof(BTreeExtensionsRec) ); // allocate space for our BTCB extensions
result = SearchBTreeRecord( GPtr->calculatedCatalogFCB, &key, kNoHint, &foundKey, &threadRecord, &recSize, &hint );
if ( result != noErr ) {
char idStr[16];
-@@ -1780,26 +1780,26 @@ OSErr CreateAttributesBTreeControlBlock( SGlobPtr GPtr )
+@@ -1780,26 +1780,26 @@ OSErr CreateAttributesBTreeControlBlock(
// set up our DFA extended BTCB area. Will we have enough memory on all HFS+ volumes.
//
btcb->refCon = AllocateClearMemory( sizeof(BTreeExtensionsRec) ); // allocate space for our BTCB extensions
{
err = R_NoMem;
goto exit;
-@@ -2358,7 +2358,7 @@ static OSErr RcdMDBEmbededVolDescriptionErr( SGlobPtr GPtr, OSErr type, HFSMaste
+@@ -2358,7 +2358,7 @@ static OSErr RcdMDBEmbededVolDescription
RcdError( GPtr, type ); // first, record the error
p = AllocMinorRepairOrder( GPtr, sizeof(EmbededVolDescription) ); // get the node
p->type = type; // save error info
desc = (EmbededVolDescription *) &(p->name);
-@@ -2397,7 +2397,7 @@ static OSErr RcdInvalidWrapperExtents( SGlobPtr GPtr, OSErr type )
+@@ -2397,7 +2397,7 @@ static OSErr RcdInvalidWrapperExtents( S
RcdError( GPtr, type ); // first, record the error
p = AllocMinorRepairOrder( GPtr, 0 ); // get the node
p->type = type; // save error info
-@@ -3029,7 +3029,7 @@ OSErr CheckFileExtents( SGlobPtr GPtr, UInt32 fileNumber, UInt8 forkType,
+@@ -3029,7 +3029,7 @@ OSErr CheckFileExtents( SGlobPtr GPtr, U
foundBadExtent = false;
lastExtentIndex = GPtr->numExtents;
{
// checkout the extent record first
err = ChkExtRec( GPtr, extents, &lastExtentIndex );
-@@ -3105,7 +3105,7 @@ OSErr CheckFileExtents( SGlobPtr GPtr, UInt32 fileNumber, UInt8 forkType,
+@@ -3105,7 +3105,7 @@ OSErr CheckFileExtents( SGlobPtr GPtr, U
if ( err == btNotFound )
{
err = noErr; // no more extent records
break;
}
else if ( err != noErr )
-@@ -3121,7 +3121,7 @@ OSErr CheckFileExtents( SGlobPtr GPtr, UInt32 fileNumber, UInt8 forkType,
+@@ -3121,7 +3121,7 @@ OSErr CheckFileExtents( SGlobPtr GPtr, U
if ( err == btNotFound )
{
err = noErr; // no more extent records
break;
}
else if ( err != noErr )
-@@ -3205,7 +3205,7 @@ static OSErr AddExtentToOverlapList( SGlobPtr GPtr, HFSCatalogNodeID fileNumber,
+@@ -3205,7 +3205,7 @@ static OSErr AddExtentToOverlapList( SGl
}
// If it's uninitialized
{
GPtr->overlappedExtents = (ExtentsTable **) NewHandleClear( sizeof(ExtentsTable) );
extentsTableH = GPtr->overlappedExtents;
-diff --git a/fsck_hfs.tproj/dfalib/SVerify2.c b/fsck_hfs.tproj/dfalib/SVerify2.c
-index c68f3d8..da1a982 100644
--- a/fsck_hfs.tproj/dfalib/SVerify2.c
+++ b/fsck_hfs.tproj/dfalib/SVerify2.c
-@@ -1013,7 +1013,7 @@ static int BTKeyChk( SGlobPtr GPtr, NodeDescPtr nodeP, BTreeControlBlock *btcb )
+@@ -1013,7 +1013,7 @@ static int BTKeyChk( SGlobPtr GPtr, Node
UInt16 keyLength;
KeyPtr keyPtr;
UInt8 *dataPtr;
if ( nodeP->numRecords == 0 )
-@@ -1044,7 +1044,7 @@ static int BTKeyChk( SGlobPtr GPtr, NodeDescPtr nodeP, BTreeControlBlock *btcb )
+@@ -1044,7 +1044,7 @@ static int BTKeyChk( SGlobPtr GPtr, Node
return( E_KeyLen );
}
fsck_hfs.tproj/cache.c | 30 ++++++++++++++++--------------
1 file changed, 16 insertions(+), 14 deletions(-)
-diff --git a/fsck_hfs.tproj/cache.c b/fsck_hfs.tproj/cache.c
-index 527088a..540fa0b 100644
--- a/fsck_hfs.tproj/cache.c
+++ b/fsck_hfs.tproj/cache.c
-@@ -961,20 +961,21 @@ int CacheLookup (Cache_t *cache, uint64_t off, Tag_t **tag)
+@@ -961,20 +961,21 @@ int CacheLookup (Cache_t *cache, uint64_
*/
int CacheRawRead (Cache_t *cache, uint64_t off, uint32_t len, void *buf)
{
/* Update counters */
cache->DiskRead++;
-@@ -989,21 +990,22 @@ int CacheRawRead (Cache_t *cache, uint64_t off, uint32_t len, void *buf)
+@@ -989,21 +990,22 @@ int CacheRawRead (Cache_t *cache, uint64
*/
int CacheRawWrite (Cache_t *cache, uint64_t off, uint32_t len, void *buf)
{
include/missing.h | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
-diff --git a/include/missing.h b/include/missing.h
-index 0a859c4..f50e8fb 100644
--- a/include/missing.h
+++ b/include/missing.h
-@@ -72,7 +72,7 @@
+@@ -71,7 +71,7 @@
#define NAME_MAX 255
/* Byteswap stuff */
#define NXSwapBigShortToHost(x) be16_to_cpu(x)
#define OSSwapBigToHostInt16(x) be16_to_cpu(x)
#define NXSwapBigLongToHost(x) be32_to_cpu(x)
-@@ -88,6 +88,9 @@
+@@ -87,6 +87,9 @@
#ifndef be32_to_cpu
#define be32_to_cpu(x) bswap_32(x)
#endif
#ifndef be64_to_cpu
#define be64_to_cpu(x) bswap_64(x)
#endif
-@@ -102,6 +105,9 @@
+@@ -101,6 +104,9 @@
#ifndef be32_to_cpu
#define be32_to_cpu(x) (x)
#endif
newfs_hfs.tproj/newfs_hfs.8 | 23 ++++++++---------------
2 files changed, 15 insertions(+), 26 deletions(-)
-diff --git a/fsck_hfs.tproj/fsck_hfs.8 b/fsck_hfs.tproj/fsck_hfs.8
-index aec9949..0bc804d 100644
--- a/fsck_hfs.tproj/fsck_hfs.8
+++ b/fsck_hfs.tproj/fsck_hfs.8
@@ -19,18 +19,18 @@
When preening file systems,
.Nm
will fix common inconsistencies for file systems that were not
-@@ -105,9 +103,9 @@ to check and repair journaled HFS+ file systems.
+@@ -105,9 +103,9 @@ to check and repair journaled HFS+ file
.It Fl g
Causes
.Nm
.Nm
tool.
.It Fl l
-@@ -144,8 +142,6 @@ specified file system for a new catalog file and if there is no damage
+@@ -144,8 +142,6 @@ specified file system for a new catalog
to the leaf nodes in the existing catalog file.
.El
.Pp
.Sh SEE ALSO
.Xr fsck 8
.Sh BUGS
-diff --git a/newfs_hfs.tproj/newfs_hfs.8 b/newfs_hfs.tproj/newfs_hfs.8
-index d002cc9..fe91962 100644
--- a/newfs_hfs.tproj/newfs_hfs.8
+++ b/newfs_hfs.tproj/newfs_hfs.8
@@ -19,10 +19,10 @@
has several options to allow the defaults to be selectively overridden.
The options are as follows:
.Bl -tag -width Fl
-@@ -66,7 +60,7 @@ Set the group of the file system's root directory to
+@@ -66,7 +60,7 @@ Set the group of the file system's root
Specify the access permissions mask for the file system's root directory.
.It Fl h
Creates a legacy HFS format filesystem. This option
.Bl -tag -width Fl
.It Em a=bytes
Set the attribute b-tree node size.
-@@ -139,8 +133,7 @@ Set the extent overflow b-tree node size.
+@@ -139,8 +133,7 @@ Set the extent overflow b-tree node size
Volume name (file system name) in ascii or UTF-8 format.
.El
.Sh SEE ALSO
---- diskdev_cmds-332.25/newfs_hfs.tproj/makehfs.c 2015-03-27 21:58:04.163171675 -0700
-+++ hfsprogs-332.25/newfs_hfs.tproj/makehfs.c 2015-03-27 21:56:03.687175020 -0700
-@@ -2119,10 +2119,12 @@
+--- a/newfs_hfs.tproj/makehfs.c
++++ b/newfs_hfs.tproj/makehfs.c
+@@ -2119,10 +2119,12 @@ void GenerateVolumeUUID(VolumeUUID *newV
sysctl(mib, 2, sysctlstring, &datalen, NULL, 0);
SHA1_Update(&context, sysctlstring, datalen);
#endif
#endif
#include <sys/errno.h>
#include <sys/stat.h>
-+#ifdef __GLIBC__
++#if 0
#include <sys/sysctl.h>
+#endif
#if !LINUX
-Index: diskdev_cmds-332.25/fsck_hfs.tproj/dfalib/SVerify1.c
-===================================================================
---- diskdev_cmds-332.25.orig/fsck_hfs.tproj/dfalib/SVerify1.c
-+++ diskdev_cmds-332.25/fsck_hfs.tproj/dfalib/SVerify1.c
+--- a/fsck_hfs.tproj/dfalib/SVerify1.c
++++ b/fsck_hfs.tproj/dfalib/SVerify1.c
@@ -2848,7 +2848,7 @@ OSErr VLockedChk( SGlobPtr GPtr )
}
else // Because we don't have the unicode converters, just fill it with a dummy name.
--- a/newfs_hfs.tproj/makehfs.c
+++ b/newfs_hfs.tproj/makehfs.c
-@@ -376,7 +376,7 @@ make_hfsplus(const DriveInfo *driveInfo, hfsparams_t *defaults)
+@@ -376,7 +376,7 @@ make_hfsplus(const DriveInfo *driveInfo,
if ( (temp & 0x01FF) != 0 )
temp = (temp + kBytesPerSector) & 0xFFFFFE00;
if (nodeBuffer == NULL)
err(1, NULL);
-@@ -1814,7 +1814,7 @@ ClearDisk(const DriveInfo *driveInfo, UInt64 startingSector, UInt32 numberOfSect
+@@ -1814,7 +1814,7 @@ ClearDisk(const DriveInfo *driveInfo, UI
bufferSize = bufferSizeInSectors << kLog2SectorSize;
--- a/disklib/dump.h
+++ b/disklib/dump.h
-@@ -110,9 +110,7 @@ extern long dev_bsize; /* block size of underlying disk device */
+@@ -110,9 +110,7 @@ extern long dev_bsize; /* block size of
extern int dev_bshift; /* log2(dev_bsize) */
extern int tp_bshift; /* log2(TP_BSIZE) */
#include <sys/param.h>
#include <sys/types.h>
#include <sys/time.h>
-@@ -80,6 +79,7 @@ extern Boolean _CFStringGetFileSystemRepresentation(CFStringRef string, UInt8 *b
+@@ -80,6 +79,7 @@ extern Boolean _CFStringGetFileSystemRep
#define kJournalFileType 0x6a726e6c /* 'jrnl' */
PKG_NAME:=hplip
PKG_VERSION:=3.20.9
-PKG_RELEASE:=1
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/hplip
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -110,7 +110,7 @@ libhpmud_la_SOURCES += io/hpmud/musb_lib
+ libhpmud_la_LDFLAGS += -lusb
+ else
+ libhpmud_la_SOURCES += io/hpmud/musb.c
+-libhpmud_la_CFLAGS += -I/usr/include/libusb-1.0
++libhpmud_la_CFLAGS += ${LIBUSB_1_0_CFLAGS}
+ libhpmud_la_LDFLAGS += -lusb-1.0
+ endif
+
+@@ -363,7 +363,7 @@ hpmudext_la_CFLAGS += -Iprotocol/discove
+ endif
+
+ if !LIBUSB01_BUILD
+-hpmudext_la_CFLAGS +=-I/usr/include/libusb-1.0
++hpmudext_la_CFLAGS += ${LIBUSB_1_0_CFLAGS}
+ endif
+ endif #!HPLIP_CLASS_DRIVER
+ # ui (qt3)
--- a/configure.in
+++ b/configure.in
@@ -601,6 +601,10 @@ if test "$class_driver" = "no" && test "
-Index: hplip-3.20.9/Makefile.am
-===================================================================
---- hplip-3.20.9.orig/Makefile.am
-+++ hplip-3.20.9/Makefile.am
+--- a/Makefile.am
++++ b/Makefile.am
@@ -71,7 +71,7 @@ else
libsane_hpaio_la_LDFLAGS = -version-info 1:0:0
endif
#libsane_hpaio_la_CFLAGS = -DWITH_NONAMESPACES -DSOAP_DEBUG
libsane_hpaio_la_CFLAGS = $(DBUS_CFLAGS) -Iprotocol
-Index: hplip-3.20.9/scan/sane/hpaio.c
-===================================================================
---- hplip-3.20.9.orig/scan/sane/hpaio.c
-+++ hplip-3.20.9/scan/sane/hpaio.c
+--- a/scan/sane/hpaio.c
++++ b/scan/sane/hpaio.c
@@ -34,9 +34,7 @@
#include <stdio.h>
#include <stdlib.h>
--- a/io/hpmud/musb.c
+++ b/io/hpmud/musb.c
-@@ -775,7 +775,7 @@ static int device_id(int fd, unsigned char *buffer, int size)
+@@ -775,7 +775,7 @@ static int device_id(int fd, unsigned ch
len = size-1; /* leave byte for zero termination */
if (len > 2)
len -= 2;
-diff --git a/scan/sane/OrbliteScan/LinuxCommon.h b/scan/sane/OrbliteScan/LinuxCommon.h
-index 6605dd9..55c7110 100644
--- a/scan/sane/OrbliteScan/LinuxCommon.h
+++ b/scan/sane/OrbliteScan/LinuxCommon.h
@@ -18,10 +18,8 @@ typedef u_int32_t UInt32;
--- /dev/null
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=hwdata
+PKG_VERSION:=0.342
+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:=f1e79131c870dce4a3b4b75edeefc5c9aef416d488a131c66cb6893be743be63
+
+PKG_MAINTAINER:=
+PKG_LICENSE:=GPL-2.0-or-later XFree86-1.0
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/pciids
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=USB ID list
+ URL:=https://github.com/vcrhonek/hwdata
+endef
+
+define Package/usbids
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=PCI ID list
+ URL:=https://github.com/vcrhonek/hwdata
+endef
+
+define Package/pciids/install
+ $(INSTALL_DIR) $(1)/usr/share/hwdata
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/hwdata/pci.ids $(1)/usr/share/hwdata
+endef
+
+define Package/usbids/install
+ $(INSTALL_DIR) $(1)/usr/share/hwdata
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/hwdata/usb.ids $(1)/usr/share/hwdata
+endef
+
+$(eval $(call BuildPackage,pciids))
+$(eval $(call BuildPackage,usbids))
PKG_NAME:=hwinfo
PKG_VERSION:=21.71
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/openSUSE/hwinfo/tar.gz/$(PKG_VERSION)?
PKG_HASH:=c4c573eb15cbc10103f5044b485d7e4ff941500ed559743a1c98e6a6deb0ebda
PKG_LICENSE:=GPL-2.0-or-later
+PKG_LICENSE_FILES:=COPYING
PKG_MAINTAINER:=Alberto Bursi <bobafetthotmail@gmail.com>
PKG_BUILD_DEPENDS:= hwinfo/host
-VERSION := $(shell $(GIT2LOG) --version VERSION ; cat VERSION)
-endif
+BRANCH := master
-+VERSION := $(shell echo 21.7 > VERSION; cat VERSION)
++VERSION := $(shell echo 21.71 > VERSION; cat VERSION)
PREFIX := hwinfo-$(VERSION)
include Makefile.common
host builds and whatnot, we simply remove it and disable this
functionality in hwinfo.
This also saves some space.
---- a/Makefile
-+++ b/Makefile
-@@ -25,13 +25,14 @@
+--- a/Makefile
++++ b/Makefile
+@@ -25,13 +25,14 @@ LIBDIR ?= /usr/lib
endif
ULIBDIR = $(LIBDIR)
SHARED_FLAGS =
OBJS_NO_TINY = names.o parallel.o modem.o
-
--- a/src/hd/bios.c
+++ b/src/hd/bios.c
-@@ -447,9 +447,10 @@
+@@ -447,9 +447,10 @@ void hd_scan_bios(hd_data_t *hd_data)
}
}
if(vbe->ok) {
bt->vbe_ver = vbe->version;
-
--- a/src/hd/bios.h
+++ b/src/hd/bios.h
@@ -5,4 +5,5 @@
-void get_vbe_info(hd_data_t *hd_data, vbe_info_t *vbe);
+//disabled as we removed the lib needed by this function
+//void get_vbe_info(hd_data_t *hd_data, vbe_info_t *vbe);
-
--- a/src/hd/mdt.c
+++ b/src/hd/mdt.c
@@ -1,4 +1,6 @@
--- a/src/ids/Makefile
+++ b/src/ids/Makefile
-@@ -17,47 +17,47 @@
+@@ -17,47 +17,47 @@ IDFILES += src/bus src/class src/extra s
src/usb src/usb2 src/isapnp src/monitor src/camera src/tv2 src/tv src/dvb2 src/dvb \
src/chipcard src/modem src/pcmcia src/s390 src/sdio
>>disable the install functionality as we take the files we need with OpenWrt build system
>>changes to all makefiles to respect the compile flags
---- a/Makefile
-+++ b/Makefile
+--- a/Makefile
++++ b/Makefile
@@ -1,6 +1,6 @@
TOPDIR = $(CURDIR)
SUBDIRS = src
CLEANFILES = hwinfo hwinfo.pc hwinfo.static hwscan hwscan.static hwscand hwscanqueue doc/libhd doc/*~
LIBS = -lhd
SLIBS = -lhd -luuid
-@@ -18,11 +18,11 @@
+@@ -18,11 +18,11 @@ PREFIX := hwinfo-$(VERSION)
include Makefile.common
ULIBDIR = $(LIBDIR)
# this library has been removed from the code, disabling it here too
-@@ -39,13 +39,13 @@
+@@ -39,13 +39,13 @@ OBJS_NO_TINY = names.o parallel.o modem.
.PHONY: fullstatic static shared tiny doc diet tinydiet uc tinyuc
hwscan: hwscan.o $(LIBHD)
$(CC) hwscan.o $(LDFLAGS) $(CFLAGS) $(LIBS) -o $@
-@@ -99,28 +99,29 @@
+@@ -99,28 +99,29 @@ doc:
@cd doc ; doxygen libhd.doxy
install:
archive: changelog
@if [ ! -d .git ] ; then echo no git repo ; false ; fi
-
--- a/Makefile.common
+++ b/Makefile.common
@@ -1,28 +1,26 @@
SHARED_FLAGS = -fPIC
LDFLAGS += -Lsrc
-@@ -36,7 +34,7 @@
+@@ -36,7 +34,7 @@ LIBHD_NAME = $(LIBHD_BASE).so.$(LIBHD_VE
LIBHD_SO = $(TOPDIR)/src/$(LIBHD_NAME)
LIBHD_D = $(TOPDIR)/src/.lib
.PHONY: all distclean clean install subdirs
-
--- a/src/Makefile
+++ b/src/Makefile
-@@ -12,7 +12,7 @@
+@@ -12,7 +12,7 @@ include $(TOPDIR)/Makefile.common
#endif
$(LIBHD): $(OBJS)
ifdef SHARED_FLAGS
--- a/src/hd/Makefile
+++ b/src/hd/Makefile
-@@ -12,4 +12,4 @@
- @perl -pi -e "s/define\s+HD_MINOR_VERSION\s+\d+/define HD_MINOR_VERSION\t$(LIBHD_MINOR_VERSION)/" $@
+@@ -8,4 +8,4 @@ version.h: $(TOPDIR)/VERSION
+ @echo "#define HD_VERSION_STRING \"`cat $(TOPDIR)/VERSION`\"" >$@
$(LIBHD_D): $(OBJS)
- ar r $(LIBHD) $?
+ $(AR) r $(LIBHD) $?
-
--- a/src/isdn/Makefile
+++ b/src/isdn/Makefile
-@@ -5,5 +5,5 @@
+@@ -5,5 +5,5 @@ SUBDIRS = cdb
include $(TOPDIR)/Makefile.common
$(LIBHD_D): $(OBJS)
--- a/src/smp/Makefile
+++ b/src/smp/Makefile
-@@ -4,4 +4,4 @@
+@@ -4,4 +4,4 @@ TARGETS = $(LIBHD_D)
include $(TOPDIR)/Makefile.common
$(LIBHD_D): $(OBJS)
- ar r $(LIBHD) $?
+ $(AR) r $(LIBHD) $?
-
include $(TOPDIR)/rules.mk
PKG_NAME:=jupp
-PKG_VERSION:=3.1.39
+PKG_VERSION:=3.1.40
PKG_RELEASE:=1
PKG_LICENSE:=GPL-1.0
PKG_LICENSE_FILES:=COPYING
PKG_SOURCE:=joe-$(basename ${PKG_VERSION})jupp$(subst .,,$(suffix ${PKG_VERSION})).tgz
PKG_SOURCE_URL:=http://www.mirbsd.org/MirOS/dist/jupp/ \
http://pub.allbsd.org/MirOS/dist/jupp/
-PKG_HASH:=0d5d5b3c8e3db7b64410779fd4ccf962174ebac0c7e717674c780edf44d2fe91
+PKG_HASH:=4bed439cde7f2be294e96e49ef3e913ea90fbe5e914db888403e3a27e8035b1a
include $(INCLUDE_DIR)/package.mk
PKG_NAME:=kmod
PKG_VERSION:=27
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/linux/utils/kernel/kmod
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libkmod.pc $(1)/usr/lib/pkgconfig/
+ $(SED) 's,/usr/include,$$$${prefix}/include,g' $(1)/usr/lib/pkgconfig/libkmod.pc
+ $(SED) 's,/usr/lib,$$$${exec_prefix}/lib,g' $(1)/usr/lib/pkgconfig/libkmod.pc
endef
include $(TOPDIR)/rules.mk
PKG_NAME:=lcd4linux
-PKG_RELEASE:=6
+PKG_RELEASE:=7
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/feckert/lcd4linux
# Copyright (C) 2007-2015 OpenWrt.org
START=98
+USE_PROCD=1
-SERVICE_USE_PID=1
+PROG="/usr/bin/lcd4linux"
+CONFIGFILE="/etc/lcd4linux.conf"
-start() {
- service_start /usr/bin/lcd4linux -o /tmp/lcd4linux.png -q
+start_service() {
+ [ -f /etc/lcd4linux.conf ] || return 1
+ procd_open_instance
+ procd_set_param command "$PROG"
+ procd_append_param command -F
+ procd_append_param command -q
+ procd_append_param command -o /tmp/lcd4linux.png
+ procd_append_param command -f "$CONFIGFILE"
+ procd_set_param file "$CONFIGFILE"
+ procd_close_instance
}
-
-stop() {
- service_stop /usr/bin/lcd4linux
-}
-
include $(TOPDIR)/rules.mk
PKG_NAME:=less
-PKG_VERSION:=562
-PKG_RELEASE:=2
+PKG_VERSION:=563
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.greenwoodsoftware.com/less
-PKG_HASH:=eab470c7c928132441541aa49b1352c0fc699c30f762dfaeb3bf88e6f0fd701b
+PKG_HASH:=ce5b6d2b9fc4442d7a07c93ab128d2dff2ce09a1d4f2d055b95cf28dd0dc9a9a
PKG_LICENSE:=GPL-3.0-or-later
PKG_LICENSE_FILES:=COPYING
CATEGORY:=Utilities
TITLE:=Pager program similar to more
URL:=http://www.greenwoodsoftware.com/less/
- ALTERNATIVES:=200:/usr/bin/less:/usr/bin/gnu-less
+ ALTERNATIVES:=200:/usr/bin/less:/usr/libexec/less-gnu
endef
define Package/less/Default/description
endif
define Package/less/install
- $(INSTALL_DIR) $(1)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/less $(1)/usr/bin/gnu-less
+ $(INSTALL_DIR) $(1)/usr/libexec
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/less $(1)/usr/libexec/less-gnu
endef
Package/less-wide/install = $(Package/less/install)
include $(TOPDIR)/rules.mk
PKG_NAME:=libnetwork
-PKG_RELEASE:=2
+PKG_RELEASE:=1
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
+GO_PKG:=github.com/docker/libnetwork
+GO_PKG_BUILD_PKG:= \
+ $(GO_PKG)/cmd/proxy \
+ $(GO_PKG)/cmd/dnet
+
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://$(GO_PKG)
-PKG_SOURCE_VERSION:=026aabaa659832804b01754aaadd2c0f420c68b6
-PKG_SOURCE_DATE:=2020-06-17
-PKG_MIRROR_HASH:=4ec8d3a7a99478dae9aef9f8337c14b91750164351963f9a6ed2288588d080e3
+PKG_SOURCE_VERSION:=5c6a95bfb20c61571a00f913c6b91959ede84e8d
+PKG_SOURCE_DATE:=2020-12-12
+PKG_MIRROR_HASH:=6bf27f5f09d49b34b8c4c9208808fab6383e5187683f064e09d106886babf25a
PKG_MAINTAINER:=Gerard Ryan <G.M0N3Y.2503@gmail.com>
PKG_BUILD_DEPENDS:=golang/host
PKG_BUILD_PARALLEL:=1
-GO_PKG:=github.com/docker/libnetwork
-GO_PKG_BUILD_PKG:= \
- $(GO_PKG)/cmd/proxy \
- $(GO_PKG)/cmd/dnet
-
include $(INCLUDE_DIR)/package.mk
include ../../lang/golang/golang-package.mk
PKG_NAME:=LVM2
PKG_VERSION:=2.03.10
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).tgz
PKG_SOURCE_URL:=https://sourceware.org/pub/lvm2
PKG_HASH:=5ad1645a480440892e35f31616682acba0dc204ed049635d2df3e5a5929d0ed0
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME).$(PKG_VERSION)
+PKG_BUILD_DIR:=$(BUILD_DIR)/lvm2-$(BUILD_VARIANT)/$(PKG_NAME).$(PKG_VERSION)
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=GPL-2.0 LGPL-2.1
include $(INCLUDE_DIR)/package.mk
-define Package/libdevmapper
+define Package/libdevmapper/Default
SECTION:=libs
CATEGORY:=Libraries
TITLE:=The Linux Kernel Device Mapper userspace library
URL:=https://sourceware.org/dm/
- DEPENDS:=+kmod-dm +libpthread +libuuid +librt +libblkid +libselinux
+ DEPENDS:=+kmod-dm +libpthread +libuuid +librt +libblkid
endef
-define Package/libdevmapper/description
+
+define Package/libdevmapper-normal
+ $(call Package/libdevmapper/Default)
+ VARIANT := normal
+ PROVIDES := libdevmapper
+endef
+
+define Package/libdevmapper-selinux
+ $(call Package/libdevmapper/Default)
+ VARIANT := selinux
+ DEPENDS += +libselinux
+ PROVIDES := libdevmapper
+endef
+
+define Package/libdevmapper-normal/description
The device-mapper is a component of the 2.6 linux kernel that supports logical
volume management. It is required by LVM2 and EVMS.
endef
-define Package/lvm2
+define Package/libdevmapper-selinux/description
+$(call Package/libdevmapper-normal/description)
+ This variant supports SELinux
+
+endef
+
+define Package/lvm2/default
SECTION:=utils
CATEGORY:=Utilities
SUBMENU:=Disc
TITLE:=The Linux Logical Volume Manager
URL:=https://sourceware.org/lvm2/
- DEPENDS:=+libdevmapper +libreadline +libncurses +libaio
+ DEPENDS:=+libreadline +libncurses +libaio
+endef
+
+define Package/lvm2-normal
+ $(call Package/lvm2/default)
+ VARIANT := normal
+ DEPENDS += +libdevmapper-normal
+ PROVIDES := lvm2
endef
-define Package/lvm2/description
+define Package/lvm2-selinux
+ $(call Package/lvm2/default)
+ VARIANT := selinux
+ DEPENDS += +libdevmapper-selinux
+ PROVIDES := lvm2
+endef
+
+define Package/lvm2-normal/description
LVM2 refers to a new userspace toolset that provide logical volume management
facilities on linux. It is reasonably backwards-compatible with the original
LVM toolset.
endef
+define Package/lvm2-selinux/description
+$(call Package/lvm2-normal/description)
+ This variant supports SELinux
+
+endef
+
+
CONFIGURE_ARGS += \
--disable-o_direct \
--with-default-pid-dir=/var/run \
--with-default-dm-run-dir=/var/run \
--with-default-run-dir=/var/run/lvm \
- --with-default-locking-dir=/var/lock/lvm
+ --with-default-locking-dir=/var/lock/lvm \
+ --$(if $(findstring selinux,$(BUILD_VARIANT)),en,dis)able-selinux
ifneq ($(shell /bin/sh -c "echo -n 'X'"),X)
MAKE_SHELL = SHELL=/bin/bash
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) \
+ CC="$(TARGET_CC)" \
CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS) $(FPIC)" \
DESTDIR="$(PKG_INSTALL_DIR)" \
$(MAKE_SHELL) \
$(CP) $(PKG_BUILD_DIR)/libdm/libdevmapper.pc $(1)/usr/lib/pkgconfig
endef
-define Package/libdevmapper/install
+define Package/libdevmapper-normal/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libdevmapper.so.* $(1)/usr/lib
endef
-define Package/lvm2/install
+Package/libdevmapper-selinux/install = $(Package/libdevmapper-normal/install)
+
+define Package/lvm2-normal/install
$(INSTALL_DIR) $(1)/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/lvm $(1)/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/dmsetup $(1)/sbin
$(FIND) $(PKG_INSTALL_DIR)/usr/sbin/ -type l -exec $(CP) -a {} $(1)/sbin/ \;
endef
-define Package/lvm2/conffiles
+Package/lvm2-selinux/install = $(Package/lvm2-normal/install)
+
+define Package/lvm2-normal/conffiles
/etc/lvm/lvm.conf
endef
-$(eval $(call BuildPackage,libdevmapper))
-$(eval $(call BuildPackage,lvm2))
+Package/lvm2-selinux/conffiles = $(Package/lvm2/conffiles)
+
+$(eval $(call BuildPackage,libdevmapper-normal))
+$(eval $(call BuildPackage,libdevmapper-selinux))
+$(eval $(call BuildPackage,lvm2-normal))
+$(eval $(call BuildPackage,lvm2-selinux))
--- a/lib/commands/toolcontext.c
+++ b/lib/commands/toolcontext.c
-@@ -1599,7 +1599,7 @@ struct cmd_context *create_toolcontext(unsigned is_clvmd,
+@@ -1605,7 +1605,7 @@ struct cmd_context *create_toolcontext(u
/* FIXME Make this configurable? */
reset_lvm_errno(1);
/* Set in/out stream buffering before glibc */
if (set_buffering
#ifdef SYS_gettid
-@@ -1980,7 +1980,7 @@ void destroy_toolcontext(struct cmd_context *cmd)
+@@ -1986,7 +1986,7 @@ void destroy_toolcontext(struct cmd_cont
if (cmd->pending_delete_mem)
dm_pool_destroy(cmd->pending_delete_mem);
if (is_valid_fd(STDIN_FILENO) &&
--- a/tools/lvmcmdline.c
+++ b/tools/lvmcmdline.c
-@@ -3230,6 +3230,7 @@ int lvm_split(char *str, int *argc, char **argv, int max)
+@@ -3241,6 +3241,7 @@ int lvm_split(char *str, int *argc, char
/* Make sure we have always valid filedescriptors 0,1,2 */
static int _check_standard_fds(void)
{
int err = is_valid_fd(STDERR_FILENO);
if (!is_valid_fd(STDIN_FILENO) &&
-@@ -3256,6 +3257,12 @@ static int _check_standard_fds(void)
+@@ -3267,6 +3268,12 @@ static int _check_standard_fds(void)
strerror(errno));
return 0;
}
if (area == max_areas && missing > 0) {
/* Too bad. Warn the user and proceed, as things are
-@@ -521,8 +527,13 @@ static void _lock_mem(struct cmd_context *cmd)
+@@ -521,8 +527,13 @@ static void _lock_mem(struct cmd_context
* will not block memory locked thread
* Note: assuming _memlock_count_daemon is updated before _memlock_count
*/
--- a/lib/device/dev-io.c
+++ b/lib/device/dev-io.c
-@@ -374,7 +374,7 @@ int dev_open_flags(struct device *dev, int flags, int direct, int quiet)
+@@ -379,7 +379,7 @@ int dev_open_flags(struct device *dev, i
return 0;
}
include $(TOPDIR)/rules.mk
PKG_NAME:=mg
-PKG_VERSION:=6.7
+PKG_VERSION:=6.8.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/ibara/mg/tar.gz/$(PKG_NAME)-$(PKG_VERSION)?
-PKG_HASH:=899681ddd93525e0341b8e9239911c1a93c1185f61372625463c116ff43e920b
+PKG_HASH:=d14c6f3a945d9f5241f20aea8553914ec28d93218e0b091161c122937c56d3e4
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_NAME)-$(PKG_VERSION)
PKG_MAINTAINER:=Hirokazu MORIKAWA <morikw2@gmail.com>
-diff -urN a/configure b/configure
---- a/configure 2019-03-03 22:17:03.000000000 +0900
-+++ b/configure 2019-06-04 13:08:41.418919319 +0900
-@@ -3,52 +3,7 @@
+--- a/configure
++++ b/configure
+@@ -3,66 +3,7 @@
# This configure script written by Brian Callahan <bcallah@openbsd.org>
# and released into the Public Domain.
- done
- return 1
-}
+-
+-defaultcflagscheck() {
+- cat << EOF > conftest.c
+-int main(void){return 0;}
+-EOF
+- $cc $cflags -g -O2 -o conftest.o -c conftest.c > /dev/null 2>&1
+- if [ $? -eq 0 ] ; then
+- rm -f conftest conftest.o conftest.c
+- return 1
+- else
+- rm -f conftest conftest.o conftest.c
+- return 0
+- fi
+-}
+cc="$CC"
fparselncheck() {
cat << EOF > conftest.c
-@@ -214,18 +184,19 @@
+@@ -229,20 +170,6 @@
fi
}
-wflagcheck() {
-+futimenscheck() {
- cat << EOF > conftest.c
+- cat << EOF > conftest.c
-int main(void){return 0;}
-+#include <sys/stat.h>
-+#include <stddef.h>
-+int main(void){futimens(0, NULL);return 0;}
- EOF
-- $cc -w -o conftest conftest.c > /dev/null 2> conftest.err
-- grep ':' conftest.err > /dev/null 2>&1
-+ $cc $tflags -o conftest conftest.c > /dev/null 2>&1
- if [ $? -eq 0 ] ; then
-- rm -f conftest conftest.err conftest.c
+-EOF
+- $cc $cflags -w -o conftest conftest.c > /dev/null 2>&1
+- if [ $? -eq 0 ] ; then
+- rm -f conftest conftest.o conftest.c
- return 1
- else
-- rm -f conftest conftest.err conftest.c
-+ rm -f conftest conftest.c
- return 0
-+ else
-+ rm -f conftest conftest.c
-+ return 1
- fi
- }
-
-@@ -303,54 +274,9 @@
+- rm -f conftest conftest.o conftest.c
+- return 0
+- fi
+-}
+-
+ # Option variables
+ if [ ! -z "$PREFIX" ] ; then
+ prefix="$PREFIX"
+@@ -327,79 +254,9 @@
ldflags="${ldflags}-static"
fi
- echo "$cc"
-fi
-
+-if [ "x$cflags" = "x-DREGEX" ] ; then
+- printf "checking if the compiler accepts -g -O2... "
+- defaultcflagscheck
+- if [ $? -eq 0 ] ; then
+- echo "no"
+- else
+- cflags="-g -O2 $cflags"
+- echo "yes"
+- fi
+-fi
+-
-printf "checking for -w compiler flag... "
-wflagcheck
--if [ $? -ne 0 ] ; then
+-if [ $? -eq 0 ] ; then
- echo "no"
-else
- cflags="$cflags -w"
-fi
-
-printf "checking for OS... "
--libs='-lncursesw'
+-
+-if [ $terminfo -eq 0 ] ; then
+- libs="-lncursesw"
+-else
+- libs=""
+-fi
+-
-os=`uname -s`
-echo "$os"
-
- ;;
- "xDarwin")
- cflags="$cflags -DMSG_NOSIGNAL=SO_NOSIGPIPE -DLOGIN_NAME_MAX=MAXLOGNAME"
-- libs="-lncurses -lutil"
+- if [ $terminfo -eq 0 ] ; then
+- libs="-lncurses -lutil"
+- else
+- libs="-lutil"
+- fi
- ;;
- "xFreeBSD")
- cflags="$cflags -D__dead=__dead2 -DLOGIN_NAME_MAX=MAXLOGNAME"
- ;;
- "xNetBSD")
- cflags="$cflags -D_OPENBSD_SOURCE"
-- libs="-lcurses -lutil"
+- if [ $terminfo -eq 0 ] ; then
+- libs="-lcurses -lutil"
+- else
+- libs="-lutil"
+- fi
- ;;
- "xDragonFly")
- cflags="$cflags -D__dead=__dead2 -DLOGIN_NAME_MAX=MAXLOGNAME"
cat << EOF > config.h
/* This file generated automatically by configure. */
---- a/linux.h 2019-03-03 22:17:03.000000000 +0900
-+++ b/linux.h 2019-06-04 13:45:21.787063324 +0900
-@@ -7,6 +7,7 @@
- #endif
- #include <sys/types.h>
-
-+#include <sys/stat.h>
- #include <stdio.h>
-
- /* Defines */
include $(TOPDIR)/rules.mk
PKG_NAME:=mksh
-PKG_VERSION:=56c
+PKG_VERSION:=59c
PKG_RELEASE:=1
PKG_MAINTAINER:=Thorsten Glaser <tg@mirbsd.org>, \
PKG_SOURCE:=$(PKG_NAME)-R$(PKG_VERSION).tgz
PKG_SOURCE_URL:=http://www.mirbsd.org/MirOS/dist/mir/mksh \
http://pub.allbsd.org/MirOS/dist/mir/mksh
-PKG_HASH:=dd86ebc421215a7b44095dc13b056921ba81e61b9f6f4cdab08ca135d02afb77
+PKG_HASH:=77ae1665a337f1c48c61d6b961db3e52119b38e58884d1c89684af31f87bc506
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
fixes and feature improvements, in order to produce a modern,
robust shell good for interactive and especially script use.
mksh has UTF-8 support (in substring operations and the Emacs
-editing mode) and - while R50 corresponds to OpenBSD 5.5-cur-
+editing mode) and - while R59 corresponds to OpenBSD 5.7-cur-
rent ksh (without GNU bash-like PS1 and fancy character clas-
ses) - adheres to SUSv4 and is much more robust. The code has
been cleaned up and simplified, bugs fixed, standards compli-
CC="$(TARGET_CC)" \
TARGET_OS="$(shell uname -s)" \
CFLAGS="$(TARGET_CFLAGS)" \
- CPPFLAGS="-DMKSH_SMALL=1 -DMKSH_ASSUME_UTF8=0 -DMKSH_BINSHPOSIX -DMKSHRC_PATH=\\\"/etc/mkshrc\\\"" \
+ CPPFLAGS="$(TARGET_CPPFLAGS) -DMKSH_SMALL=1 -DMKSH_ASSUME_UTF8=0 -DMKSH_BINSHPOSIX -DMKSHRC_PATH=\\\"/etc/mkshrc\\\"" \
HAVE_CAN_FSTACKPROTECTORALL=0 \
HAVE_CAN_FSTACKPROTECTORSTRONG=0 \
LDFLAGS="$(TARGET_LDFLAGS)" \
- $(BASH) Build.sh -Q -r -c lto
+ $(BASH) Build.sh -Q -r
endef
define Package/mksh/postinst
--- a/dot.mkshrc
+++ b/dot.mkshrc
-@@ -63,10 +63,9 @@
+@@ -64,9 +64,9 @@
EDITOR=
done
-\\builtin alias ls=ls l='ls -F' la='l -a' ll='l -l' lo='l -alo'
--\: "${HOSTNAME:=$(\\builtin ulimit -c 0; \\builtin print -r -- $(hostname \
-- 2>/dev/null))}${EDITOR:=/bin/ed}${TERM:=vt100}${USER:=$(\\builtin ulimit \
-- -c 0; id -un 2>/dev/null)}${USER:=?}"
+-\: "${EDITOR:=/bin/ed}${TERM:=vt100}${USER:=$(\\builtin ulimit -c 0; id -un \
+- 2>/dev/null)}${HOSTNAME:=$(\\builtin ulimit -c 0; hostname 2>/dev/null)}"
+\\builtin alias ls=ls l='ls -F' la='l -a' ll='l -l' lo='l -al'
-+\: "${HOSTNAME:=$(</proc/sys/kernel/hostname)}${EDITOR:=/bin/vi}${TERM:=vt100}\
-+ ${USER:=$(\\builtin ulimit -c 0; id -un 2>/dev/null)}${USER:=?}"
++\: "${EDITOR:=/bin/vi}${TERM:=vt100}${USER:=$(\\builtin ulimit -c 0; id -un \
++ 2>/dev/null)}${HOSTNAME:=$(</proc/sys/kernel/hostname)}"
[[ $HOSTNAME = ?(?(ip6-)localhost?(6)) ]] && HOSTNAME=nil; \\builtin unalias ls
- \\builtin export EDITOR HOSTNAME TERM USER
+ \\builtin export EDITOR HOSTNAME TERM USER="${USER:-?}"
include $(TOPDIR)/rules.mk
PKG_NAME:=nano
-PKG_VERSION:=5.3
+PKG_VERSION:=5.4
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GNU/nano
-PKG_HASH:=c5c1cbcf622d9a96b6030d66409ed12b204e8bc01ef5e6554ebbe6fb1d734352
+PKG_HASH:=fe993408b22286355809ce48ebecc4444d19af8203ed4959d269969112ed86e9
PKG_LICENSE:=GPL-3.0-or-later
PKG_LICENSE_FILES:=COPYING
PKG_NAME:=ntfs-3g
PKG_VERSION:=2017.3.23
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)_ntfsprogs-$(PKG_VERSION).tgz
PKG_SOURCE_URL:=https://www.tuxera.com/opensource/
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libntfs-3g.so.* $(1)/usr/lib/
$(INSTALL_DIR) $(1)/sbin
- $(CP) $(PKG_INSTALL_DIR)/sbin/mount.ntfs-3g $(1)/sbin/
+ $(LN) ../usr/bin/ntfs-3g $(1)/sbin/mount.ntfs-3g
endef
define Package/ntfs-3g/postinst
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/lowntfs-3g $(1)/usr/bin/
$(INSTALL_DIR) $(1)/sbin
- $(CP) $(PKG_INSTALL_DIR)/sbin/mount.lowntfs-3g $(1)/sbin/
+ $(LN) ../usr/bin/lowntfs-3g $(1)/sbin/mount.lowntfs-3g
endef
define Package/ntfs-3g-low/postinst
define Package/ntfs-3g-utils/install
$(INSTALL_DIR) $(1)/sbin
- $(CP) $(PKG_INSTALL_DIR)/sbin/mkfs.ntfs $(1)/sbin/
+ $(LN) ../usr/sbin/mkntfs $(1)/sbin/mkfs.ntfs
$(INSTALL_DIR) $(1)/usr/bin
$(FIND) $(PKG_INSTALL_DIR)/usr/bin/ -type f ! -regex '.*[^/]*ntfs-3g[^/]*' -exec $(INSTALL_BIN) {} $(1)/usr/bin/ \;
$(INSTALL_DIR) $(1)/usr/sbin
include $(TOPDIR)/rules.mk
PKG_NAME:=open-vm-tools
-PKG_VERSION:=11.1.5
+PKG_VERSION:=11.2.0
PKG_RELEASE:=1
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-16724464.tar.gz
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-16938113.tar.gz
PKG_SOURCE_URL:=https://github.com/vmware/open-vm-tools/releases/download/stable-$(PKG_VERSION)
-PKG_HASH:=cb33171b22872d66632b4151feafd4da480aee0c6bd5dcc188651984c1e9c511
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)-16724464
+PKG_HASH:=df16b78bb919e85fe2b9190148f4987ea4942f9f9667836bf1311dfc2eb839db
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)-16938113
PKG_LICENSE:=LGPL-2.1-or-later
PKG_LICENSE_FILES:=LICENSE
--- a/configure.ac
+++ b/configure.ac
-@@ -1184,6 +1184,7 @@
+@@ -1195,6 +1195,7 @@ AC_TYPE_OFF_T
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_CHECK_MEMBERS([struct stat.st_rdev])
--- a/lib/hgfsServer/hgfsServerLinux.c
+++ b/lib/hgfsServer/hgfsServerLinux.c
-@@ -105,11 +105,13 @@
+@@ -105,11 +105,13 @@ typedef struct DirectoryEntry {
#endif
/*
#define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO)
#endif
#ifdef __ANDROID__
-
-
--- a/configure.ac
+++ b/configure.ac
-@@ -912,6 +912,7 @@
+@@ -923,6 +923,7 @@ AC_CHECK_FUNCS(
AC_CHECK_FUNCS([ecvt])
AC_CHECK_FUNCS([fcvt])
AC_CHECK_FUNC([mkdtemp], [have_mkdtemp=yes])
-@@ -1121,10 +1122,13 @@
+@@ -1132,10 +1133,13 @@ fi
###
AC_CHECK_HEADERS([crypt.h])
#ifdef __APPLE__
#include <sys/socket.h>
#include <TargetConditionals.h>
-@@ -1025,31 +1022,32 @@
+@@ -1025,31 +1022,32 @@ Id_EndSuperUser(uid_t uid) // IN:
static Bool
IdIsSetUGid(void)
{
--- a/lib/asyncsocket/asyncsocket.c
+++ b/lib/asyncsocket/asyncsocket.c
-@@ -69,8 +69,8 @@
+@@ -70,8 +70,8 @@
#else
#include <stddef.h>
#include <ctype.h>
--- a/lib/asyncsocket/asyncsocket.c
+++ b/lib/asyncsocket/asyncsocket.c
-@@ -86,7 +86,7 @@
+@@ -87,7 +87,7 @@
#include "random.h"
#include "asyncsocket.h"
#include "asyncSocketBase.h"
#include "hostinfo.h"
--- a/lib/hgfsServer/hgfsServer.c
+++ b/lib/hgfsServer/hgfsServer.c
-@@ -49,7 +49,7 @@
+@@ -51,7 +51,7 @@
#include "hgfsDirNotify.h"
#include "hgfsThreadpool.h"
#include "userlock.h"
#include "unicodeOperations.h"
--- a/lib/include/asyncsocket.h
+++ b/lib/include/asyncsocket.h
-@@ -169,7 +169,7 @@ typedef struct AsyncSocket AsyncSocket;
+@@ -171,7 +171,7 @@ typedef struct AsyncSocket AsyncSocket;
* Or the client can specify its favorite poll class and locking behavior.
* Use of IVmdbPoll is only supported for regular sockets and for Attach.
*/
--- a/lib/err/errPosix.c
+++ b/lib/err/errPosix.c
-@@ -61,13 +61,7 @@ ErrErrno2String(Err_Number errorNumber, // IN
+@@ -61,13 +61,7 @@ ErrErrno2String(Err_Number errorNumber,
char *buf, // OUT: return buffer
size_t bufSize) // IN: size of buffer
{
#ifdef __linux__
# include <net/if.h>
---- a/lib/nicInfo/resolv_compat.h
+--- /dev/null
+++ b/lib/nicInfo/resolv_compat.h
@@ -0,0 +1,29 @@
+#if !defined(__GLIBC__)
uint32 sec;
uint32 nsec;
-@@ -134,7 +134,7 @@ HgfsConvertFromNtTimeNsec(struct timespec *unixTime, // OUT: Time in UNIX format
+@@ -134,7 +134,7 @@ HgfsConvertFromNtTimeNsec(struct timespe
return -1;
}
unixTime->tv_nsec = nsec * 100;
--- a/lib/hgfsServer/hgfsServerLinux.c
+++ b/lib/hgfsServer/hgfsServerLinux.c
-@@ -2569,7 +2569,11 @@ HgfsStatToFileAttr(struct stat *stats, // IN: stat information
+@@ -2573,8 +2573,12 @@ HgfsStatToFileAttr(struct stat *stats,
# define FMTTIMET "l"
# endif
#else
+# define FMTTIMET __PRI64
+#else
# define FMTTIMET "l"
-+#endif
#endif
++#endif
LOG(4, "access: %"FMTTIMET"d/%"FMT64"u \nwrite: %"FMTTIMET"d/%"FMT64"u \n"
"attr: %"FMTTIMET"d/%"FMT64"u\n",
+ stats->st_atime, attr->accessTime, stats->st_mtime, attr->writeTime,
--- a/configure.ac
+++ b/configure.ac
-@@ -1199,7 +1199,6 @@ AC_C_VOLATILE
+@@ -1210,7 +1210,6 @@ AC_C_VOLATILE
### General flags / actions
CFLAGS="$CFLAGS -Wall"
PKG_NAME:=open2300
PKG_SOURCE_DATE:=2014-03-04
PKG_SOURCE_VERSION:=1af8ae609da66f8e1b745533c19095c9758bfb0b
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/wezm/open2300
$(INSTALL_DATA) ./files/open2300.conf $(1)/etc/
$(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/lib2300.so.1.11 $(1)/usr/lib/
- ln -sf /usr/lib/lib2300.so.1.11 $(1)/usr/lib/lib2300.so
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/lib2300.so.1.11 $(1)/usr/lib/
+ $(LN) lib2300.so.1.11 $(1)/usr/lib/lib2300.so
endef
$(eval $(call BuildPackage,open2300))
include $(TOPDIR)/rules.mk
PKG_NAME:=openocd
-PKG_SOURCE_VERSION:=v0.10.0-1000-gdb23c13d
+PKG_SOURCE_VERSION:=v0.11.0-rc1
PKG_VERSION:=$(PKG_SOURCE_VERSION)
-PKG_RELEASE:=2
+PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_URL:=git://git.code.sf.net/p/openocd/code
-PKG_MIRROR_HASH:=6f8c0ecf240427654ad5e911b44f78996da931209280f4a19c1215802ff14638
+PKG_MIRROR_HASH:=c4a0a6cad821946608c843f557b993e7cfeb0f193e4c0f149ebfbfbfd57054a6
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
CATEGORY:=Utilities
TITLE:=OpenOCD Utility
URL:=http://openocd.sf.net/
- DEPENDS:=+PACKAGE_openocd_with_usb:libusb-1.0 \
- +PACKAGE_openocd_with_usb:libusb-compat \
- +PACKAGE_openocd_with_usb:libftdi1 \
- +PACKAGE_openocd_with_usb:hidapi
-endef
-
-define Package/openocd/config
- if PACKAGE_openocd
- config PACKAGE_openocd_with_usb
- bool "Build with support for USB adapters."
- default y
- endif
+ DEPENDS:=+libusb-1.0 \
+ +libusb-compat \
+ +libftdi1 \
+ +hidapi \
+ +libgpiod
endef
define Package/openocd/description
--prefix="/usr" \
--disable-werror \
MAKEINFO=true \
- $(if $(CONFIG_PACKAGE_openocd_with_usb),,PKG_CONFIG=false) \
--enable-dummy \
- --enable-sysfsgpio
+ --enable-sysfsgpio \
+ --enable-linuxgpiod
TARGET_CFLAGS += -DRELSTR=\\\"-$(PKG_VERSION)-$(PKG_RELEASE)-OpenWrt\\\"
+++ /dev/null
-From c60252ac2b636c4d99b766a574b9df0966151696 Mon Sep 17 00:00:00 2001
-From: Andreas Fritiofson <andreas.fritiofson@gmail.com>
-Date: Fri, 17 Apr 2020 13:49:28 +0200
-Subject: [PATCH] bitbang: Fix FTBFS with GCC 10
-
-GCC 10 defaults to -fno-common which breaks the sharing of bitbang_swd
-struct between bitbang drivers due to a missing extern.
-
-Change-Id: I2b4122f7939cec91a72284006748f99a23548324
-Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
-Reviewed-on: http://openocd.zylin.com/5592
-Tested-by: jenkins
-Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
-Reviewed-by: Jonathan McDowell <noodles-openocd@earth.li>
----
- src/jtag/drivers/bitbang.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/jtag/drivers/bitbang.h b/src/jtag/drivers/bitbang.h
-index edb779c..bbbc693 100644
---- a/src/jtag/drivers/bitbang.h
-+++ b/src/jtag/drivers/bitbang.h
-@@ -57,7 +57,7 @@ struct bitbang_interface {
- void (*swdio_drive)(bool on);
- };
-
--const struct swd_driver bitbang_swd;
-+extern const struct swd_driver bitbang_swd;
-
- extern bool swd_mode;
-
PKG_NAME:=pciutils
PKG_VERSION:=3.7.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/software/utils/pciutils
CATEGORY:=Utilities
TITLE:=Linux PCI Utilities
URL:=http://mj.ucw.cz/pciutils.shtml
- DEPENDS:=+libkmod +libpci
+ DEPENDS:=+libkmod +libpci +pciids
endef
define Package/pciutils/description
URL:=http://mj.ucw.cz/pciutils.shtml
endef
-
-PCI_IDS_VER:=0.336
-PCI_IDS_FILE:=pci.ids.$(PCI_IDS_VER)
-define Download/pci_ids
- FILE:=$(PCI_IDS_FILE)
- URL_FILE:=pci.ids
- URL:=@GITHUB/vcrhonek/hwdata/v$(PCI_IDS_VER)
- HASH:=94053616c1f9b93540861931fb7891b1b30d6fd21b3e2c1647467527ea38f557
-endef
-$(eval $(call Download,pci_ids))
-
-define Build/Prepare
- $(call Build/Prepare/Default)
- $(RM) $(PKG_BUILD_DIR)/pci.ids
- $(CP) $(DL_DIR)/$(PCI_IDS_FILE) $(PKG_BUILD_DIR)/pci.ids
-endef
-
TARGET_CFLAGS += $(FPIC)
MAKE_FLAGS += \
define Package/pciutils/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/{lspci,setpci,update-pciids} $(1)/usr/sbin/
- $(INSTALL_DIR) $(1)/usr/share
- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/pci.ids $(1)/usr/share/
endef
define Package/libpci/install
--- a/Makefile
+++ b/Makefile
-@@ -119,7 +119,7 @@
+@@ -119,7 +119,7 @@ distclean: clean
install: all
# -c is ignored on Linux, but required on FreeBSD
$(DIRINSTALL) -m 755 $(DESTDIR)$(SBINDIR) $(DESTDIR)$(IDSDIR) $(DESTDIR)$(MANDIR)/man8 $(DESTDIR)$(MANDIR)/man7 $(DESTDIR)/$(MANDIR)/man5
--- a/update-pciids.sh
+++ b/update-pciids.sh
@@ -6,9 +6,8 @@ set -e
- SRC="http://pci-ids.ucw.cz/v2.2/pci.ids"
+ SRC="https://pci-ids.ucw.cz/v2.2/pci.ids"
DEST=pci.ids
PCI_COMPRESSED_IDS=
-GREP=grep
--- /dev/null
+--- a/Makefile
++++ b/Makefile
+@@ -35,7 +35,7 @@ ABI_VERSION=.3
+ PREFIX=/usr/local
+ SBINDIR=$(PREFIX)/sbin
+ SHAREDIR=$(PREFIX)/share
+-IDSDIR=$(SHAREDIR)
++IDSDIR=$(SHAREDIR)/hwdata
+ MANDIR:=$(shell if [ -d $(PREFIX)/share/man ] ; then echo $(PREFIX)/share/man ; else echo $(PREFIX)/man ; fi)
+ INCDIR=$(PREFIX)/include
+ LIBDIR=$(PREFIX)/lib
PKG_NAME:=pcsc-lite
PKG_VERSION:=1.9.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://pcsclite.apdu.fr/files/
--disable-libsystemd \
--enable-libusb \
--enable-static \
+ --enable-ipcdir=/var/run/pcscd \
--enable-usbdropdir=/usr/lib/pcsc/drivers
define Build/InstallDev
include $(TOPDIR)/rules.mk
PKG_NAME:=podman
-PKG_VERSION:=2.1.1
-PKG_RELEASE:=4
+PKG_VERSION:=2.2.1
+PKG_RELEASE:=1
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/containers/podman/archive/v$(PKG_VERSION)
-PKG_HASH:=5ebaa6e0dbd7fd1863f70d2bc71dc8a94e195c3339c17e3cac4560c9ec5747f8
+PKG_HASH:=bd86b181251e2308cb52f18410fb52d89df7f130cecf0298bbf9a848fe7daf60
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
include $(TOPDIR)/rules.mk
PKG_NAME:=prometheus-node-exporter-lua
-PKG_VERSION:=2020.10.29
+PKG_VERSION:=2020.12.07
PKG_RELEASE:=1
PKG_MAINTAINER:=Etienne CHAMPETIER <champetier.etienne@gmail.com>
$(INSTALL_BIN) ./files/usr/lib/lua/prometheus-collectors/wifi_stations.lua $(1)/usr/lib/lua/prometheus-collectors/
endef
+define Package/prometheus-node-exporter-lua-snmp6
+ $(call Package/prometheus-node-exporter-lua/Default)
+ TITLE+= (snmp6 collector)
+ DEPENDS:=prometheus-node-exporter-lua +libubus-lua
+endef
+
+define Package/prometheus-node-exporter-lua-snmp6/install
+ $(INSTALL_DIR) $(1)/usr/lib/lua/prometheus-collectors
+ $(INSTALL_BIN) ./files/usr/lib/lua/prometheus-collectors/snmp6.lua $(1)/usr/lib/lua/prometheus-collectors/
+endef
+
$(eval $(call BuildPackage,prometheus-node-exporter-lua))
$(eval $(call BuildPackage,prometheus-node-exporter-lua-bmx6))
$(eval $(call BuildPackage,prometheus-node-exporter-lua-bmx7))
$(eval $(call BuildPackage,prometheus-node-exporter-lua-uci_dhcp_host))
$(eval $(call BuildPackage,prometheus-node-exporter-lua-wifi))
$(eval $(call BuildPackage,prometheus-node-exporter-lua-wifi_stations))
+$(eval $(call BuildPackage,prometheus-node-exporter-lua-snmp6))
--- /dev/null
+local ubus = require "ubus"
+
+local function get_devices() -- based on hostapd_stations.lua
+ local u = ubus.connect()
+ local status = u:call("network.device", "status", {})
+ local devices = {}
+
+ for dev, dev_table in pairs(status) do
+ table.insert(devices, dev)
+ end
+ return devices
+end
+
+local function get_metric(device)
+ local label = {
+ device = device
+ }
+
+ if device == "all" then
+ for e in io.lines("/proc/net/snmp6") do
+ local snmp6 = space_split(e)
+ metric("snmp6_" .. snmp6[1], "counter", label, tonumber(snmp6[2]))
+ end
+ else
+ for e in io.lines("/proc/net/dev_snmp6/" .. device) do
+ local snmp6 = space_split(e)
+ metric("snmp6_" .. snmp6[1], "counter", label, tonumber(snmp6[2]))
+ end
+ end
+end
+
+local function scrape()
+ get_metric("all")
+ for _, devicename in ipairs(get_devices()) do
+ get_metric(devicename)
+ end
+end
+
+return { scrape = scrape }
PKG_NAME:=qemu
PKG_VERSION:=5.0.0
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_HASH:=2f13a92a0fa5c8b69ff0796b59b86b080bbb92ebad5d301a7724dd06b5e78cb6
PKG_SOURCE_URL:=http://download.qemu.org/
include $(INCLUDE_DIR)/nls.mk
include $(INCLUDE_DIR)/package.mk
-QEMU_DEPS_IN_GUEST := @(TARGET_x86_64||TARGET_armvirt||TARGET_arm64||TARGET_malta)
+QEMU_DEPS_IN_GUEST := @(TARGET_x86_64||TARGET_armvirt||TARGET_malta)
QEMU_DEPS_IN_HOST := @(TARGET_x86_64||TARGET_sunxi)
QEMU_DEPS_IN_HOST += $(CXX_DEPENDS)
QEMU_DEPS_IN_HOST += $(ICONV_DEPENDS)
--- /dev/null
+From 80ec6872aceb18c68b1cf5b6f8acd6ad667cbd4f Mon Sep 17 00:00:00 2001
+From: Yousong Zhou <yszhou4tech@gmail.com>
+Date: Thu, 17 Dec 2020 15:55:55 +0800
+Subject: [PATCH] qga: invoke separate applets for guest-shutdown modes
+
+/sbin/shutdown is not available on OpenWrt by default
+
+Origin: "main/qemu: fix shutdown from guest agent"
+https://gitlab.alpinelinux.org/alpine/aports/commit/76b81b486480fd9c3294cd420bcf2df01c27790d
+---
+ qga/commands-posix.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/qga/commands-posix.c b/qga/commands-posix.c
+index a52af0315f..623d856c64 100644
+--- a/qga/commands-posix.c
++++ b/qga/commands-posix.c
+@@ -84,6 +84,7 @@ static void ga_wait_child(pid_t pid, int *status, Error **errp)
+ void qmp_guest_shutdown(bool has_mode, const char *mode, Error **errp)
+ {
+ const char *shutdown_flag;
++ const char *fallback_cmd = NULL;
+ Error *local_err = NULL;
+ pid_t pid;
+ int status;
+@@ -91,10 +92,13 @@ void qmp_guest_shutdown(bool has_mode, const char *mode, Error **errp)
+ slog("guest-shutdown called, mode: %s", mode);
+ if (!has_mode || strcmp(mode, "powerdown") == 0) {
+ shutdown_flag = "-P";
++ fallback_cmd = "/sbin/poweroff";
+ } else if (strcmp(mode, "halt") == 0) {
+ shutdown_flag = "-H";
++ fallback_cmd = "/sbin/halt";
+ } else if (strcmp(mode, "reboot") == 0) {
+ shutdown_flag = "-r";
++ fallback_cmd = "/sbin/reboot";
+ } else {
+ error_setg(errp,
+ "mode is invalid (valid values are: halt|powerdown|reboot");
+@@ -111,6 +115,7 @@ void qmp_guest_shutdown(bool has_mode, const char *mode, Error **errp)
+
+ execle("/sbin/shutdown", "shutdown", "-h", shutdown_flag, "+0",
+ "hypervisor initiated shutdown", (char*)NULL, environ);
++ execle(fallback_cmd, fallback_cmd, (char*)NULL, environ);
+ _exit(EXIT_FAILURE);
+ } else if (pid < 0) {
+ error_setg_errno(errp, errno, "failed to create child process");
include $(TOPDIR)/rules.mk
PKG_NAME:=rpcd-mod-lxc
-PKG_RELEASE=20171206
+PKG_RELEASE=20201208
PKG_LICENSE:=ISC
$(INSTALL_BIN) $(PKG_BUILD_DIR)/lib/lxc.so $(1)/usr/lib/rpcd/
endef
+define Package/rpcd-mod-lxc/postinst
+#!/bin/sh
+[ -n "$$IPKG_INSTROOT" ] || /etc/init.d/rpcd reload
+endef
+
$(eval $(call BuildPackage,rpcd-mod-lxc))
include $(TOPDIR)/rules.mk
PKG_NAME:=rtl_433
-PKG_VERSION:=20.02
+PKG_VERSION:=20.11
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/merbanan/rtl_433/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=4f114017ede02d3038c449cf7d25cc82eecda5960e5229cc229774681a9ad80b
+PKG_HASH:=12a5cb7a733ba352467522c704d5b685aa6137582dc18aaa444d4891c29ee839
PKG_MAINTAINER:=Jasper Scholte <NightNL@outlook.com>
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING
-CMAKE_INSTALL:=1
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
rtl_433 turns your Realtek RTL2832 based DVB dongle into a 433.92MHz generic data receiver.
endef
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/rtl_433.h $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/rtl_433_devices.h $(1)/usr/include
+endef
+
define Package/rtl_433/install
+ $(INSTALL_DIR) $(1)/etc/rtl_433
+ $(CP) $(PKG_INSTALL_DIR)/usr/etc/rtl_433/*.conf $(1)/etc/rtl_433
$(INSTALL_DIR) $(1)/usr/bin
$(CP) $(PKG_INSTALL_DIR)/usr/bin/rtl_433 $(1)/usr/bin
endef
include $(TOPDIR)/rules.mk
PKG_NAME:=rtty
-PKG_VERSION:=7.1.4
+PKG_VERSION:=7.1.5
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL=https://github.com/zhaojh329/rtty/releases/download/v$(PKG_VERSION)
-PKG_HASH:=f0b8cf4c4d3d4b34d10097fe430d32ab1576edbf41131d27b6b964e078be1716
+PKG_HASH:=12de3a20259e89e7ee227b2e23a2e72f20af230b9670124c1c81044c7ce15a98
CMAKE_INSTALL:=1
PKG_LICENSE:=MIT
include $(INCLUDE_DIR)/uclibc++.mk
PKG_NAME:=smartmontools
-PKG_VERSION:=7.1
-PKG_RELEASE:=3
+PKG_VERSION:=7.2
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/smartmontools
-PKG_HASH:=3f734d2c99deb1e4af62b25d944c6252de70ca64d766c4c7294545a2e659b846
+PKG_HASH:=5cd98a27e6393168bc6aaea070d9e1cd551b0f898c52f66b2ff2e5d274118cd6
PKG_MAINTAINER:=Maxim Storchak <m.storchak@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
+ "-v 228,raw48,Power-off_Retract_Count "
+ // 229 Unknown_Attribute
+ "-v 230,raw48,Head_Amplitude,HDD "
-+ "-v 231,raw48,Temperature_Celsius "
++ "-v 231,raw48,Temperature_Celsius,HDD "
+ "-v 232,raw48,Available_Reservd_Space "
+ "-v 233,raw48,Media_Wearout_Indicator,SSD "
+ // 234-239 Unknown_Attribute
diff --git a/configure b/configure
-index 6f442b3..5803c83 100755
+index 88928cf..736fabd 100755
--- a/configure
+++ b/configure
-@@ -6988,7 +6988,7 @@ releaseversion='${PACKAGE}-${VERSION}'
+@@ -6964,7 +6964,7 @@ releaseversion='${PACKAGE}-${VERSION}'
# Set platform-specific modules and symbols
os_libs=
os_dltools='curl wget lynx svn'
-os_mailer=mail
+os_mailer=mailx
- os_hostname="'hostname'"
+ os_hostname="'hostname' 'uname -n'"
os_dnsdomainname=
os_nisdomainname="'domainname'"
--- /dev/null
+#!/bin/sh
+
+case "$1" in
+ smartctl|smartd) "$1" -V | head -n 1 | grep "$2" ;;
+esac
include $(TOPDIR)/rules.mk
PKG_NAME:=spi-tools
-PKG_VERSION:=0.8.5
+PKG_VERSION:=0.8.6
PKG_RELEASE:=1
PKG_SOURCE_URL:=https://codeload.github.com/cpb-/spi-tools/tar.gz/$(PKG_VERSION)?
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=a1846bf3b4d38fc419f8efe4555242aa581358fdca28452b3ca11f74e3572e33
+PKG_HASH:=319ad6ab296111109ea4a820e216cef392429295de7e10e76f7146677337cf09
PKG_MAINTAINER:=John Crispin <blogic@openwrt.org>
PKG_LICENSE:=GPL-2.0-only
include $(TOPDIR)/rules.mk
PKG_NAME:=stress-ng
-PKG_VERSION:=0.11.23
+PKG_VERSION:=0.12.00
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://kernel.ubuntu.com/~cking/tarballs/stress-ng
-PKG_HASH:=c0a76147a02f4c31af1fb4b9b7e0b90ac8bbd8590ccb54264d5cbe046c769cd2
+PKG_HASH:=b2b738f574671926654b1623103a7aa58ee6911894ac78760ee188c4bfa96fe2
PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
PKG_LICENSE:=GPL-2.0-only
include $(TOPDIR)/rules.mk
PKG_NAME:=sumo
-PKG_VERSION:=1.3.1
+PKG_VERSION:=1.8.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-src-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/sumo
-PKG_HASH:=dd089814499cc8d21ea90ab506adbb01e7fda9d9685d9d90a1a41cc3fe680505
+PKG_HASH:=fb0636152085153155ddb41841f0175c5f1e7989907b883f6c7453c63af49edb
PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
PKG_LICENSE:=GPL-3.0-or-later
PKG_LICENSE_FILES:=COPYING
-
-CMAKE_INSTALL:=1
PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
various APIs to remotely control the simulation.
endef
+CMAKE_OPTIONS += \
+ -DCCACHE_SUPPORT=OFF
+
define Package/sumo/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/{activitygen,dfrouter,duarouter,emissionsDrivingCycle,emissionsMap,jtrrouter,marouter,netconvert,netgenerate,od2trips,polyconvert} $(1)/usr/bin
+++ /dev/null
-From d35215b50bfea42c8a1d884c65fda1dee8b62d50 Mon Sep 17 00:00:00 2001
-From: Michael Behrisch <michael.behrisch@dlr.de>
-Date: Fri, 4 Oct 2019 11:41:29 +0200
-Subject: [PATCH] removing usleep, refs #12, fix #6133
-
----
- src/utils/foxtools/FXSingleEventThread.cpp | 9 +++------
- src/utils/iodevices/OutputDevice_Network.cpp | 17 ++++-------------
- 2 files changed, 7 insertions(+), 19 deletions(-)
-
-diff --git a/src/utils/foxtools/FXSingleEventThread.cpp b/src/utils/foxtools/FXSingleEventThread.cpp
-index 4b12fb920f..f545c18439 100644
---- a/src/utils/foxtools/FXSingleEventThread.cpp
-+++ b/src/utils/foxtools/FXSingleEventThread.cpp
-@@ -35,6 +35,8 @@
- #else
- #include <process.h>
- #endif
-+#include <chrono>
-+#include <thread>
-
- #ifndef WIN32
- # define PIPE_READ 0
-@@ -137,12 +139,7 @@ FXSingleEventThread::onThreadEvent(FXObject*, FXSelector, void*) {
-
- void
- FXSingleEventThread::sleep(long ms) {
--#ifdef WIN32
-- Sleep(ms);
--#else
-- long long us = ms * 1000;
-- usleep(us);
--#endif
-+ std::this_thread::sleep_for(std::chrono::milliseconds(ms));
- }
-
-
-diff --git a/src/utils/iodevices/OutputDevice_Network.cpp b/src/utils/iodevices/OutputDevice_Network.cpp
-index 2c20ce96aa..6bde32e1e6 100644
---- a/src/utils/iodevices/OutputDevice_Network.cpp
-+++ b/src/utils/iodevices/OutputDevice_Network.cpp
-@@ -21,15 +21,10 @@
- // ==========================================================================
- // included modules
- // ==========================================================================
--#include <config.h> // #ifdef _MSC_VER
-+#include <config.h>
-
--#ifdef WIN32
--#define NOMINMAX
--#include <windows.h>
--#undef NOMINMAX
--#else
--#include <unistd.h>
--#endif
-+#include <thread>
-+#include <chrono>
- #include <vector>
- #include "OutputDevice_Network.h"
- #include "foreign/tcpip/socket.h"
-@@ -57,11 +52,7 @@ OutputDevice_Network::OutputDevice_Network(const std::string& host,
- if (wait == 9000) {
- throw IOError(toString(e.what()) + " (host: " + host + ", port: " + toString(port) + ")");
- }
--#ifdef WIN32
-- Sleep(wait);
--#else
-- usleep(wait * 1000);
--#endif
-+ std::this_thread::sleep_for(std::chrono::milliseconds(wait));
- }
- }
- myFilename = host + ":" + toString(port);
+++ /dev/null
---- a/src/foreign/zstr/strict_fstream.hpp
-+++ b/src/foreign/zstr/strict_fstream.hpp
-@@ -33,17 +33,17 @@ static std::string strerror()
- {
- buff = "Unknown error";
- }
--#elif __APPLE__ || ((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && ! _GNU_SOURCE)
-+#elif defined(__GLIBC__)
-+// GNU-specific strerror_r()
-+ auto p = strerror_r(errno, &buff[0], buff.size());
-+ std::string tmp(p, std::strlen(p));
-+ std::swap(buff, tmp);
-+#else
- // XSI-compliant strerror_r()
- if (strerror_r(errno, &buff[0], buff.size()) != 0)
- {
- buff = "Unknown error";
- }
--#else
--// GNU-specific strerror_r()
-- auto p = strerror_r(errno, &buff[0], buff.size());
-- std::string tmp(p, std::strlen(p));
-- std::swap(buff, tmp);
- #endif
- buff.resize(buff.find('\0'));
- return buff;
include $(TOPDIR)/rules.mk
PKG_NAME:=sysstat
-PKG_VERSION:=12.4.1
+PKG_VERSION:=12.4.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://pagesperso-orange.fr/sebastien.godard/
-PKG_HASH:=24af8d4eff5118a18f67d5eadda843b9cb9fd29ae4922c0e8b8399621313ce0b
+PKG_HASH:=3701b2c1883d50eb384d7b95ce5b6df0a71fdcb3c23f96cb58098d1bcffa018f
PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
PKG_LICENSE:=GPL-2.0-or-later
sadc: sadc.o act_sadc.o sa_wrap.o sa_common_sadc.o common_sadc.o systest.o librdstats.a librdsensors.a
-@@ -293,7 +293,7 @@ sar: sar.o act_sar.o format_sar.o sa_common.o pr_stats.o librdstats_light.a libs
+@@ -293,7 +293,7 @@ sar: sar.o act_sar.o format_sar.o sa_com
sadf.o: sadf.c sadf.h version.h sa.h common.h rd_stats.h rd_sensors.h
include $(TOPDIR)/rules.mk
PKG_NAME:=tcsh
-PKG_VERSION:=6.22.02
-PKG_RELEASE:=2
+PKG_VERSION:=6.22.03
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:= \
https://astron.com/pub/tcsh/old \
https://ftp.funet.fi/pub/mirrors/ftp.astron.com/pub/tcsh \
https://ftp.funet.fi/pub/mirrors/ftp.astron.com/pub/tcsh/old
-PKG_HASH:=ed287158ca1b00ba477e8ea57bac53609838ebcfd05fcb05ca95021b7ebe885b
+PKG_HASH:=be2cfd653d2a0c7f506d2dd14c12324ba749bd484037be6df44a3973f52262b7
PKG_MAINTAINER:=Nuno Goncalves <nunojpg@gmail.com>
PKG_LICENSE:=BSD-3-Clause
---- a/config_f.h
+--- a/config_f.h
+++ b/config_f.h
@@ -138,11 +138,8 @@
* This can be much slower and no memory statistics will be
--- a/Makefile.in
+++ b/Makefile.in
-@@ -447,7 +447,7 @@ pure:$(P) ${OBJS}
+@@ -448,7 +448,7 @@ pure:$(P) ${OBJS}
gethost: gethost.c sh.err.h tc.const.h sh.h
rm -f gethost
+++ /dev/null
-From 6974bc35a5cda6eab748e364bd76a860ca66968b Mon Sep 17 00:00:00 2001
-From: zoulasc <christos@zoulas.com>
-Date: Sat, 11 Jan 2020 11:16:51 -0500
-Subject: [PATCH] Remove extra variable definition that cause -fno-common build
- to fail (Werner Fink)
-
----
- tc.sig.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/tc.sig.c b/tc.sig.c
-index 77659ca..576605a 100644
---- a/tc.sig.c
-+++ b/tc.sig.c
-@@ -56,7 +56,6 @@ int alrmcatch_disabled; /* = 0; */
- int phup_disabled; /* = 0; */
- int pchild_disabled; /* = 0; */
- int pintr_disabled; /* = 0; */
--int handle_interrupt; /* = 0; */
-
- int
- handle_pending_signals(void)
include $(TOPDIR)/rules.mk
PKG_NAME:=tini
-PKG_VERSION:=0.18.0
+PKG_VERSION:=0.19.0
PKG_RELEASE:=1
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/krallin/tini/tar.gz/v${PKG_VERSION}?
-PKG_HASH:=1097675352d6317b547e73f9dc7c6839fd0bb0d96dafc2e5c95506bb324049a2
-PKG_SOURCE_VERSION:=fec3683b971d9c3ef73f284f176672c44b448662
+PKG_HASH:=0fd35a7030052acd9f58948d1d900fe1e432ee37103c5561554408bdac6bbf0d
+PKG_SOURCE_VERSION:=de40ad007797e0dcd8b7126f27bb87401d224240
+TINI_COMMIT:=de40ad0
PKG_MAINTAINER:=Gerard Ryan <G.M0N3Y.2503@gmail.com>
A tiny but valid init process for containers.
endef
-# static version seemes to be effected by https://www.openwall.com/lists/musl/2018/07/18/8 so we use the workaround
-TARGET_CFLAGS += -Wl,--build-id
+CMAKE_OPTIONS += -DTINI_VERSION_GIT='$(TINI_COMMIT)'
define Package/tini/install
$(INSTALL_DIR) $(1)/usr/bin
--- /dev/null
+commit 31b0908a5eff3926195670beecc8548c429ceff5
+Author: Gerard Ryan <G.M0N3Y.2503@gmail.com>
+Date: Sat Oct 31 16:53:39 2020 +1000
+
+ Added support for setting git version externally
+ * This to help when building from source snapshots
+ that don't have the .git file structure.
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 332b361..3f6f44b 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -13,27 +13,37 @@ if(MINIMAL)
+ add_definitions(-DTINI_MINIMAL=1)
+ endif()
+
+-# Extract git version and dirty-ness
+-execute_process (
+- COMMAND git --git-dir "${PROJECT_SOURCE_DIR}/.git" --work-tree "${PROJECT_SOURCE_DIR}" log -n 1 --date=local --pretty=format:%h
+- WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
+- RESULT_VARIABLE git_version_check_ret
+- OUTPUT_VARIABLE tini_VERSION_GIT
+-)
+-
+-execute_process(
+- COMMAND git --git-dir "${PROJECT_SOURCE_DIR}/.git" --work-tree "${PROJECT_SOURCE_DIR}" status --porcelain --untracked-files=no
+- WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
+- OUTPUT_VARIABLE git_dirty_check_out
+-)
+-
+-if("${git_version_check_ret}" EQUAL 0)
+- set(tini_VERSION_GIT " - git.${tini_VERSION_GIT}")
+- if(NOT "${git_dirty_check_out}" STREQUAL "")
+- set(tini_VERSION_GIT "${tini_VERSION_GIT}-dirty")
+- endif()
++# Set the git version
++if (NOT "${TINI_VERSION_GIT}" STREQUAL "")
++ # Set by the user directly
++ set(tini_VERSION_GIT "${TINI_VERSION_GIT}")
+ else()
+- set(tini_VERSION_GIT "")
++ # Extract git version
++ execute_process (
++ COMMAND git --git-dir "${PROJECT_SOURCE_DIR}/.git" --work-tree "${PROJECT_SOURCE_DIR}" log -n 1 --date=local --pretty=format:%h
++ WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
++ RESULT_VARIABLE git_version_check_ret
++ OUTPUT_VARIABLE tini_VERSION_GIT
++ )
++
++ if("${git_version_check_ret}" EQUAL 0)
++ # Extract git dirty-ness
++ execute_process(
++ COMMAND git --git-dir "${PROJECT_SOURCE_DIR}/.git" --work-tree "${PROJECT_SOURCE_DIR}" status --porcelain --untracked-files=no
++ WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
++ OUTPUT_VARIABLE git_dirty_check_out
++ )
++
++ if(NOT "${git_dirty_check_out}" STREQUAL "")
++ set(tini_VERSION_GIT "${tini_VERSION_GIT}-dirty")
++ endif()
++ else()
++ set(tini_VERSION_GIT "")
++ endif()
++endif()
++
++if(NOT ${tini_VERSION_GIT} STREQUAL "")
++ set(tini_VERSION_GIT " - git.${tini_VERSION_GIT}")
+ endif()
+
+ # Flags
include $(TOPDIR)/rules.mk
PKG_NAME:=ttyd
-PKG_VERSION:=1.6.1
-PKG_RELEASE:=3
+PKG_VERSION:=1.6.2
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/tsl0922/ttyd/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=d72dcca3dec00cda87b80a0a25ae4fee2f8b9098c1cdb558508dcb14fbb6fafc
+PKG_HASH:=fd3256099e1cc5c470220cbfbb3ab2c7fa1f92232c503f583556a8965aa83bac
PKG_MAINTAINER:=Shuanglei Tao <tsl0922@gmail.com>
PKG_LICENSE:=MIT
#include "utils.h"
-@@ -441,7 +442,8 @@ int main(int argc, char **argv) {
+@@ -478,7 +479,8 @@ int main(int argc, char **argv) {
return -1;
}
+++ /dev/null
-From f7c171ffbe2d7677af4974a235ed3ccb7b3ba8c8 Mon Sep 17 00:00:00 2001
-From: Shuanglei Tao <tsl0922@gmail.com>
-Date: Tue, 28 Jul 2020 22:55:01 +0800
-Subject: [PATCH 2/7] protocol: fix request path for h2
-
----
- src/protocol.c | 12 +++++++-----
- src/server.h | 1 +
- 2 files changed, 8 insertions(+), 5 deletions(-)
-
-diff --git a/src/protocol.c b/src/protocol.c
-index fa96b6b..1be0a4e 100644
---- a/src/protocol.c
-+++ b/src/protocol.c
-@@ -236,8 +236,12 @@ int callback_tty(struct lws *wsi, enum lws_callback_reasons reason, void *user,
- lwsl_warn("refuse to serve WS client due to the --max-clients option.\n");
- return 1;
- }
-- if (lws_hdr_copy(wsi, buf, sizeof(buf), WSI_TOKEN_GET_URI) <= 0 ||
-- strcmp(buf, endpoints.ws) != 0) {
-+
-+ n = lws_hdr_copy(wsi, pss->path, sizeof(pss->path), WSI_TOKEN_GET_URI);
-+#if defined(LWS_ROLE_H2)
-+ if (n <= 0) n = lws_hdr_copy(wsi, pss->path, sizeof(pss->path), WSI_TOKEN_HTTP_COLON_PATH);
-+#endif
-+ if (strncmp(pss->path, endpoints.ws, n) != 0) {
- lwsl_warn("refuse to serve WS client for illegal ws path: %s\n", buf);
- return 1;
- }
-@@ -276,8 +280,6 @@ int callback_tty(struct lws *wsi, enum lws_callback_reasons reason, void *user,
- LIST_INSERT_HEAD(&server->procs, proc, entry);
- server->client_count++;
-
-- lws_hdr_copy(wsi, buf, sizeof(buf), WSI_TOKEN_GET_URI);
--
- #if LWS_LIBRARY_VERSION_NUMBER >= 2004000
- lws_get_peer_simple(lws_get_network_wsi(wsi), pss->address, sizeof(pss->address));
- #else
-@@ -285,7 +287,7 @@ int callback_tty(struct lws *wsi, enum lws_callback_reasons reason, void *user,
- lws_get_peer_addresses(wsi, lws_get_socket_fd(wsi), name, sizeof(name), pss->address,
- sizeof(pss->address));
- #endif
-- lwsl_notice("WS %s - %s, clients: %d\n", buf, pss->address, server->client_count);
-+ lwsl_notice("WS %s - %s, clients: %d\n", pss->path, pss->address, server->client_count);
- break;
-
- case LWS_CALLBACK_SERVER_WRITEABLE:
-diff --git a/src/server.h b/src/server.h
-index 116d9b9..167ea8b 100644
---- a/src/server.h
-+++ b/src/server.h
-@@ -57,6 +57,7 @@ struct pss_tty {
- int initial_cmd_index;
- bool authenticated;
- char address[50];
-+ char path[20];
-
- struct lws *wsi;
- char *buffer;
---
-2.20.1
-
include $(TOPDIR)/rules.mk
PKG_NAME:=uhubctl
-PKG_VERSION:=2.2.0
+PKG_VERSION:=2.3.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/mvp/uhubctl/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=e5a722cb41967903bedbab4eea566ab332241a7f05fc7bc9c386b9a5e1762d8b
+PKG_HASH:=714f733592d3cb6ba8efc84fbc03b1beed2323918ff33aef01cdb956755be7b7
PKG_LICENSE:=GPL-2.0-only
PKG_LICENSE_FILES:=COPYING LICENSE
include $(TOPDIR)/rules.mk
PKG_NAME:=unrar
-PKG_VERSION:=5.9.4
+PKG_VERSION:=6.0.3
PKG_RELEASE:=1
PKG_SOURCE:=unrarsrc-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.rarlab.com/rar
-PKG_HASH:=3d010d14223e0c7a385ed740e8f046edcbe885e5c22c5ad5733d009596865300
+PKG_HASH:=1def53392d879f9e304aa6eac1339cf41f9bce1111a2f5845071665738c4aca0
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)-$(BUILD_VARIANT)/unrar
PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>, \
Ted Hess <thess@kitschensync.net>
PKG_LICENSE_FILES:=license.txt
PKG_CPE_ID:=cpe:/a:rarlab:unrar
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)-$(BUILD_VARIANT)/unrar
PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/uclibc++.mk
include $(INCLUDE_DIR)/package.mk
TARGET_LDFLAGS +=-nodefaultlibs
endif
TARGET_CXXFLAGS +=-fno-rtti -flto
-TARGET_LDFLAGS +=$(FPIC) -Wl,--gc-sections
+TARGET_LDFLAGS +=$(FPIC) -Wl,--gc-sections $(if $(CONFIG_USE_GLIBC),-lpthread)
define Package/unrar/Default
TITLE:=UnRAR
--- /dev/null
+#
+# Copyright (C) 2007-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=usbutils
+PKG_VERSION:=013
+PKG_RELEASE:=2
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=@KERNEL/linux/utils/usb/usbutils
+PKG_HASH:=9e23494fcc78b7a80ee29a07dd179c95ae2f71509c35728dbbabc2d1cca41338
+
+PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
+PKG_LICENSE:=GPL-2.0-only
+PKG_LICENSE_FILES:=COPYING
+
+PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/usbutils
+ SECTION:=utils
+ CATEGORY:=Utilities
+ DEPENDS:=+libusb-1.0 +libudev +usbids +librt +libpthread
+ TITLE:=USB devices listing utilities
+ URL:=http://www.linux-usb.org/
+endef
+
+CONFIGURE_ARGS += \
+ --datadir=$(CONFIGURE_PREFIX)/share/hwdata
+
+define Package/usbutils/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/lsusb $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/usbreset $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,usbutils))
PKG_NAME:=uvcdynctrl
PKG_VERSION:=0.2.5
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=libwebcam-src-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/libwebcam
PKG_BUILD_DIR:=$(BUILD_DIR)/libwebcam-$(PKG_VERSION)
PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>
-CMAKE_INSTALL:=1
+PKG_LICENSE:=GPL-3.0-or-later
+PKG_LICENSE_FILES:=uvcdynctrl/COPYING
+PKG_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
define Package/uvcdynctrl
SECTION:=utils
CATEGORY:=Utilities
- DEPENDS:=+libwebcam
+ DEPENDS:=+libxml2 $(ICONV_DEPENDS)
TITLE:=Manage dynamic controls in uvcvideo
- LICENSE:=GPL-3.0-or-later
- LICENSE_FILES:=uvcdynctrl/COPYING
URL:=https://sourceforge.net/projects/libwebcam/
MENU:=1
endef
- uvcdynctrl: Manage dynamic controls in uvcvideo (GPL)
endef
-define Package/libwebcam
- SECTION:=libs
- CATEGORY:=Libraries
- DEPENDS:=+libxml2 $(ICONV_DEPENDS)
- TITLE:=Webcam library
- LICENSE:=LGPL-3.0-or-later
- LICENSE_FILES:=libwebcam/COPYING.LESSER
- URL:=https://sourceforge.net/projects/libwebcam/
-endef
-
-define Package/libwebcam/description
- $(call Package/uvcdynctrl/description)
-endef
-
define Package/uvcdynctrl/install
$(INSTALL_DIR) $(1)/usr/{bin,share}
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/uvcdynctrl* $(1)/usr/bin/
$(CP) $(PKG_INSTALL_DIR)/usr/share/uvcdynctrl/ $(1)/usr/share/
endef
-define Package/libwebcam/install
- $(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libwebcam.so* $(1)/usr/lib/
-endef
-
$(eval $(call BuildPackage,uvcdynctrl))
-$(eval $(call BuildPackage,libwebcam))
--- /dev/null
+--- a/uvcdynctrl/CMakeLists.txt
++++ b/uvcdynctrl/CMakeLists.txt
+@@ -77,7 +77,7 @@ include_directories (../common/include)
+ include_directories (${CMAKE_CURRENT_BINARY_DIR})
+ link_directories (${LIBWEBCAM_BINARY_DIR}/webcam)
+
+-target_link_libraries (uvcdynctrl webcam iconv)
++target_link_libraries (uvcdynctrl webcam_static iconv)
+
+ # Compiler flags
+ set_target_properties (uvcdynctrl PROPERTIES
PKG_NAME:=watchcat
PKG_VERSION:=1
-PKG_RELEASE:=8
+PKG_RELEASE:=11
PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>
PKG_LICENSE:=GPL-2.0
PIDFILE="/tmp/run/watchcat"
append_string() {
- local varname="$1"; local add="$2"; local separator="${3:- }"; local actual
+ varname="$1"
+ add="$2"
+ separator="${3:- }"
+ actual
eval "actual=\$$varname"
new="${actual:+$actual$separator}$add"
eval "$varname=\$new"
}
-timetoseconds() {
- local time=$1
- unset seconds
+time_to_seconds() {
+ time=$1
+
+ { [ "$time" -ge 1 ] 2>/dev/null && seconds="$time"; } ||
+ { [ "${time%s}" -ge 1 ] 2>/dev/null && seconds="${time%s}"; } ||
+ { [ "${time%m}" -ge 1 ] 2>/dev/null && seconds=$((${time%m} * 60)); } ||
+ { [ "${time%h}" -ge 1 ] 2>/dev/null && seconds=$((${time%h} * 3600)); } ||
+ { [ "${time%d}" -ge 1 ] 2>/dev/null && seconds=$((${time%d} * 86400)); }
- { [ "$time" -ge 1 ] 2> /dev/null && seconds="$time"; } || \
- { [ "${time%s}" -ge 1 ] 2> /dev/null && seconds="${time%s}"; } || \
- { [ "${time%m}" -ge 1 ] 2> /dev/null && seconds=$((${time%m}*60)); } || \
- { [ "${time%h}" -ge 1 ] 2> /dev/null && seconds=$((${time%h}*3600)); } || \
- { [ "${time%d}" -ge 1 ] 2> /dev/null && seconds=$((${time%d}*86400)); }
+ echo $seconds
+ unset seconds
+ unset time
}
load_watchcat() {
- config_get period $1 period
- config_get mode $1 mode
- config_get pinghosts $1 pinghosts
- config_get pingperiod $1 pingperiod
- config_get nopingtime $1 nopingtime
- config_get forcedelay $1 forcedelay
-
- local nopingtime_dflt="900"
- local forcedelay_dflt="60"
+ config_get period "$1" period "120"
+ config_get mode "$1" mode "restart_iface"
+ config_get pinghosts "$1" pinghosts "8.8.8.8"
+ config_get pingperiod "$1" pingperiod "60"
+ config_get forcedelay "$1" forcedelay "60"
+ config_get pingsize "$1" pingsize "standard"
+ config_get interface "$1" interface
+ config_get mmifacename "$1" mmifacename
+ config_get unlockbands "$1" unlockbands "0"
+
+ # Fix potential typo in mode and provide backward compatibility.
+ [ "$mode" = "allways" ] && mode="periodic_reboot"
+ [ "$mode" = "always" ] && mode="periodic_reboot"
+ [ "$mode" = "ping" ] && mode="ping_reboot"
- # Fix potential typo in mode (backward compatibility).
- [ "$mode" = "allways" ] && mode="always"
-
error=""
warn=""
-
- if [ -z "$period" ]
- then
- append_string "error" "period is not set! Use time value(ex: '30'; '4m'; '6h'; '2d')." "; "
- else
- timetoseconds "$period";period="$seconds"
- [ "$period" -ge 1 ] \
- || append_string "error" "period has invalid format! Use time value(ex: '30'; '4m'; '6h'; '2d')" "; "
- fi
-
- [ "$mode" = "always" -o "$mode" = "ping" ] \
- || append_string "error" "mode must be 'always' or 'ping'" "; "
-
- if [ -z "$forcedelay" ]
- then
- forcedelay="$forcedelay_dflt"
- append_string "warn" "forcedelay is not configured! Defaulted to $forcedelay seconds" "; "
- else
- [ "$forcedelay" -ge 0 ] || {
- forcedelay="$forcedelay_dflt"
- append_string "warn" "forcedelay is invalid! Defaulted to $forcedelay seconds" "; "
- }
+
+ # Checks for settings common to all operation modes
+ if [ "$mode" != "periodic_reboot" ] && [ "$mode" != "ping_reboot" ] && [ "$mode" != "restart_iface" ]; then
+ append_string "error" "mode must be 'periodic_reboot' or 'ping_reboot' or 'restart_iface'" "; "
fi
-
- [ -z "$error" -a "$mode" = "ping" ] && {
- [ -z "$pinghosts" ] \
- && append_string "error" "pinghosts must be set in 'ping' mode! Use space separated address list (ex: '8.8.8.8 9.9.9.9')" "; "
-
- if [ -z "$nopingtime" ]
- then
- nopingtime="$nopingtime_dflt"
- append_string "warn" "nopingtime is not configured! Defaulted to $nopingtime seconds" "; "
- else
- timetoseconds "$nopingtime";nopingtime="$seconds"
- [ "$nopingtime" -ge 0 ] || {
- nopingtime="$nopingtime_dflt"
- append_string "warn" "nopingtime invalid format! Use time value(ex: '30'; '4m'; '6h'; '2d'). Defaulted to $nopingtime seconds" "; "
- }
- fi
-
- local pingperiod_dflt="$((period/5))"
-
- if [ -z "$pingperiod" ]
- then
- pingperiod="$pingperiod_dflt"
- append_string "warn" "pingperiod is not configured! Defaulted to $pingperiod seconds(1/5 of period)" "; "
- else
- timetoseconds "$pingperiod";pingperiod="$seconds"
- [ "$pingperiod" -ge 0 -a "$pingperiod" -ge "$period" ] && {
- pingperiod="$pingperiod_dflt"
- append_string "warn" "pingperiod is invalid value(greater than period)! Defaulted to $pingperiod seconds(1/5 of period)" "; "
- }
- [ "$pingperiod" -ge 0 ] || {
- pingperiod="$pingperiod_dflt"
- append_string "warn" "pingperiod has invalid format! Use time value(ex: '30'; '4m'; '6h'; '2d'). Defaulted to $pingperiod seconds(1/5 of period)" "; "
- }
+
+ period="$(time_to_seconds "$period")"
+ [ "$period" -ge 1 ] ||
+ append_string "error" "period has invalid format! Use time value(ex: '30'; '4m'; '6h'; '2d')" "; "
+
+ # ping_reboot mode and restart_iface mode specific checks
+ if [ "$mode" = "ping_reboot" ] || [ "$mode" = "restart_iface" ]; then
+
+ if [ -z "$error" ]; then
+
+ pingperiod_default="$((period / 5))"
+
+ pingperiod="$(time_to_seconds "$pingperiod")"
+ if [ "$pingperiod" -ge 0 ] && [ "$pingperiod" -ge "$period" ]; then
+ pingperiod="$(time_to_seconds "$pingperiod_default")"
+ append_string "warn" "pingperiod cannot be greater than $period. Defaulted to $pingperiod_default seconds (1/5 of period)" "; "
+ fi
+
+ if [ "$pingperiod" -lt 0 ]; then
+ append_string "warn" "pingperiod cannot be a negative value." "; "
+ fi
+
+ if [ "$mmifacename" != "" ] && [ "$period" -lt 30 ]; then
+ append_string "error" "Check interval is less than 30s. For robust operation with ModemManager modem interfaces it is recommended to set the period to at least 30s."
+ fi
fi
- }
-
- [ -n "$warn" ] && logger -p user.warn -t "watchcat" "$1: $warn"
- [ -n "$error" ] && { logger -p user.err -t "watchcat" "reboot program $1 not started - $error"; return; }
+ fi
- if [ "$mode" = "always" ]
- then
- /usr/bin/watchcat.sh "always" "$period" "$forcedelay" &
- logger -p user.info -t "watchcat" "started task (mode=$mode;period=$period;forcedelay=$forcedelay)"
- else
- /usr/bin/watchcat.sh "ping" "$period" "$forcedelay" "$pinghosts" "$pingperiod" "$nopingtime" &
- logger -p user.info -t "watchcat" "started task (mode=$mode;period=$period;pinghosts=$pinghosts;pingperiod=$pingperiod;forcedelay=$forcedelay;nopingtime=$nopingtime)"
+ # ping_reboot mode and periodic_reboot mode specific checks
+ if [ "$mode" = "ping_reboot" ] || [ "$mode" = "periodic_reboot" ]; then
+ forcedelay="$(time_to_seconds "$forcedelay")"
fi
- echo $! >> "${PIDFILE}.pids"
+ [ -n "$warn" ] && logger -p user.warn -t "watchcat" "$1: $warn"
+ [ -n "$error" ] && {
+ logger -p user.err -t "watchcat" "reboot program $1 not started - $error"
+ return
+ }
+
+ case "$mode" in
+ periodic_reboot)
+ /usr/bin/watchcat.sh "periodic_reboot" "$period" "$forcedelay" &
+ logger -p user.info -t "watchcat" "started task (mode=$mode;period=$period;forcedelay=$forcedelay)"
+ ;;
+ ping_reboot)
+ /usr/bin/watchcat.sh "ping_reboot" "$period" "$forcedelay" "$pinghosts" "$pingperiod" "$pingsize" &
+ logger -p user.info -t "watchcat" "started task (mode=$mode;period=$period;pinghosts=$pinghosts;pingperiod=$pingperiod;forcedelay=$forcedelay;pingsize=$pingsize)"
+ ;;
+ restart_iface)
+ /usr/bin/watchcat.sh "restart_iface" "$period" "$pinghosts" "$pingperiod" "$pingsize" "$interface" "$mmifacename" &
+ logger -p user.info -t "watchcat" "started task (mode=$mode;period=$period;pinghosts=$pinghosts;pingperiod=$pingperiod;pingsize=$pingsize;interface=$interface;mmifacename=$mmifacename;unlockbands=$unlockbands)"
+ ;;
+ *)
+ echo "Error starting Watchcat service. Invalid mode selection: $mode"
+ ;;
+ esac
+
+ echo $! >>"${PIDFILE}.pids"
}
stop() {
- if [ -f "${PIDFILE}.pids" ]
- then
+ if [ -f "${PIDFILE}.pids" ]; then
logger -p user.info -t "watchcat" "stopping all tasks"
- while read pid
- do
+ while read pid; do
kill -KILL "$pid"
- done < "${PIDFILE}.pids"
+ done <"${PIDFILE}.pids"
rm "${PIDFILE}.pids"
[ -f "${PIDFILE}.pids" ] && stop
config_load system
- if [ -n "$(uci show system.@watchcat[0])" ] # at least one watchcat section exists
- then
+ if [ -n "$(uci show system.@watchcat[0])" ]; then # at least one watchcat section exists
logger -p user.info -t "watchcat" "starting all tasks"
config_foreach load_watchcat watchcat
logger -p user.info -t "watchcat" "all tasks started"
uci -q show system.@watchcat[0] || {
uci add system watchcat
uci set system.@watchcat[0].period=6h
- uci set system.@watchcat[0].mode=ping
+ uci set system.@watchcat[0].mode=ping_reboot
uci set system.@watchcat[0].pinghosts=8.8.8.8
uci set system.@watchcat[0].forcedelay=30
uci commit
#!/bin/sh
#
# Copyright (C) 2010 segal.di.ubi.pt
+# Copyright (C) 2020 nbembedded.com
#
# This is free software, licensed under the GNU General Public License v2.
#
+get_ping_size() {
+ ps=$1
+ case "$ps" in
+ small)
+ ps="1"
+ ;;
+ windows)
+ ps="32"
+ ;;
+ standard)
+ ps="56"
+ ;;
+ big)
+ ps="248"
+ ;;
+ huge)
+ ps="1492"
+ ;;
+ jumbo)
+ ps="9000"
+ ;;
+ *)
+ echo "Error: invalid ping_size. ping_size should be either: small, windows, standard, big, huge or jumbo"
+ echo "Cooresponding ping packet sizes (bytes): small=1, windows=32, standard=56, big=248, huge=1492, jumbo=9000"
+ ;;
+ esac
+ echo $ps
+}
+
reboot_now() {
- reboot &
+ reboot &
- [ "$1" -ge 1 ] && {
- sleep "$1"
- echo 1 > /proc/sys/kernel/sysrq
- echo b > /proc/sysrq-trigger # Will immediately reboot the system without syncing or unmounting your disks.
- }
+ [ "$1" -ge 1 ] && {
+ sleep "$1"
+ echo 1 >/proc/sys/kernel/sysrq
+ echo b >/proc/sysrq-trigger # Will immediately reboot the system without syncing or unmounting your disks.
+ }
}
-watchcat_always() {
- local period="$1"; local forcedelay="$2"
+watchcat_periodic() {
+ failure_period="$1"
+ force_reboot_delay="$2"
- sleep "$period" && reboot_now "$forcedelay"
+ sleep "$failure_period" && reboot_now "$force_reboot_delay"
+}
+
+watchcat_restart_modemmanager_iface() {
+ [ "$2" -gt 0 ] && {
+ logger -t INFO "Resetting current-bands to 'any' on modem: \"$1\" now."
+ /usr/bin/mmcli -m any --set-current-bands=any
+ }
+ logger -t INFO "Reconnecting modem: \"$1\" now."
+ /etc/init.d/modemmanager restart
+ ifup "$1"
+}
+
+watchcat_restart_network_iface() {
+ logger -t INFO "Restarting network interface: \"$1\"."
+ ip link set "$1" down
+ ip link set "$1" up
+}
+
+watchcat_restart_all_network() {
+ logger -t INFO "Restarting networking now by running: /etc/init.d/network restart"
+ /etc/init.d/network restart
+}
+
+watchcat_monitor_network() {
+ failure_period="$1"
+ ping_hosts="$2"
+ ping_frequency_interval="$3"
+ ping_size="$4"
+ iface="$5"
+ mm_iface_name="$6"
+ mm_iface_unlock_bands="$7"
+
+ time_now="$(cat /proc/uptime)"
+ time_now="${time_now%%.*}"
+
+ [ "$time_now" -lt "$failure_period" ] && sleep "$((failure_period - time_now))"
+
+ time_now="$(cat /proc/uptime)"
+ time_now="${time_now%%.*}"
+ time_lastcheck="$time_now"
+ time_lastcheck_withinternet="$time_now"
+
+ ping_size="$(get_ping_size "$ping_size")"
+
+ while true; do
+ # account for the time ping took to return. With a ping time of 5s, ping might take more than that, so it is important to avoid even more delay.
+ time_now="$(cat /proc/uptime)"
+ time_now="${time_now%%.*}"
+ time_diff="$((time_now - time_lastcheck))"
+
+ [ "$time_diff" -lt "$ping_frequency_interval" ] && sleep "$((ping_frequency_interval - time_diff))"
+
+ time_now="$(cat /proc/uptime)"
+ time_now="${time_now%%.*}"
+ time_lastcheck="$time_now"
+
+ for host in $ping_hosts; do
+ if [ "$iface" != "" ]; then
+ ping_result="$(
+ ping -I "$iface" -s "$ping_size" -c 1 "$host" &>/dev/null
+ echo $?
+ )"
+ else
+ ping_result="$(
+ ping -s "$ping_size" -c 1 "$host" &>/dev/null
+ echo $?
+ )"
+ fi
+
+ if [ "$ping_result" -eq 0 ]; then
+ time_lastcheck_withinternet="$time_now"
+ else
+ if [ "$iface" != "" ]; then
+ logger -p daemon.info -t "watchcat[$$]" "Could not reach $host via \"$iface\" for \"$((time_now - time_lastcheck_withinternet))\" seconds. Restarting \"$iface\" after reaching \"$failure_period\" seconds"
+ else
+ logger -p daemon.info -t "watchcat[$$]" "Could not reach $host for \"$((time_now - time_lastcheck_withinternet))\" seconds. Restarting networking after reaching \"$failure_period\" seconds"
+ fi
+ fi
+ done
+
+ [ "$((time_now - time_lastcheck_withinternet))" -ge "$failure_period" ] && {
+ if [ "$mm_iface_name" != "" ]; then
+ watchcat_restart_modemmanager_iface "$mm_iface_name" "$mm_iface_unlock_bands"
+ fi
+ if [ "$iface" != "" ]; then
+ watchcat_restart_network_iface "$iface"
+ else
+ watchcat_restart_all_network
+ fi
+ /etc/init.d/watchcat start
+ }
+
+ done
}
watchcat_ping() {
- local period="$1"; local forcedelay="$2"; local pinghosts="$3"; local pingperiod="$4"; local nopingtime="$5"
-
- local time_now="$(cat /proc/uptime)";time_now="${time_now%%.*}"
-
- [ "$time_now" -lt "$nopingtime" ] && sleep "$((nopingtime-time_now))"
-
- time_now="$(cat /proc/uptime)";time_now="${time_now%%.*}"
- local time_lastcheck="$time_now"
- local time_lastcheck_withinternet="$time_now"
-
- while true
- do
- # account for the time ping took to return. With a ping time of 5s, ping might take more than that, so it is important to avoid even more delay.
- time_now="$(cat /proc/uptime)"; time_now="${time_now%%.*}"
- local time_diff="$((time_now-time_lastcheck))"
-
- [ "$time_diff" -lt "$pingperiod" ] && sleep "$((pingperiod-time_diff))"
-
- time_now="$(cat /proc/uptime)";time_now="${time_now%%.*}"
- time_lastcheck="$time_now"
-
- for host in $pinghosts
- do
- if ping -c 1 "$host" &> /dev/null
- then
- time_lastcheck_withinternet="$time_now"
- else
- logger -p daemon.info -t "watchcat[$$]" "no internet connectivity for $((time_now-time_lastcheck_withinternet)). Reseting when reaching $period"
- fi
- done
-
- [ "$((time_now-time_lastcheck_withinternet))" -ge "$period" ] && reboot_now "$forcedelay"
- done
+ failure_period="$1"
+ force_reboot_delay="$2"
+ ping_hosts="$3"
+ ping_frequency_interval="$4"
+ ping_size="$5"
+
+ time_now="$(cat /proc/uptime)"
+ time_now="${time_now%%.*}"
+
+ [ "$time_now" -lt "$failure_period" ] && sleep "$((failure_period - time_now))"
+
+ time_now="$(cat /proc/uptime)"
+ time_now="${time_now%%.*}"
+ time_lastcheck="$time_now"
+ time_lastcheck_withinternet="$time_now"
+
+ ping_size="$(get_ping_size "$ping_size")"
+
+ while true; do
+ # account for the time ping took to return. With a ping time of 5s, ping might take more than that, so it is important to avoid even more delay.
+ time_now="$(cat /proc/uptime)"
+ time_now="${time_now%%.*}"
+ time_diff="$((time_now - time_lastcheck))"
+
+ [ "$time_diff" -lt "$ping_frequency_interval" ] && sleep "$((ping_frequency_interval - time_diff))"
+
+ time_now="$(cat /proc/uptime)"
+ time_now="${time_now%%.*}"
+ time_lastcheck="$time_now"
+
+ for host in $ping_hosts; do
+ if [ "$iface" != "" ]; then
+ ping_result="$(
+ ping -I "$iface" -s "$ping_size" -c 1 "$host" &>/dev/null
+ echo $?
+ )"
+ else
+ ping_result="$(
+ ping -s "$ping_size" -c 1 "$host" &>/dev/null
+ echo $?
+ )"
+ fi
+
+ if [ "$ping_result" -eq 0 ]; then
+ time_lastcheck_withinternet="$time_now"
+ else
+ logger -p daemon.info -t "watchcat[$$]" "Could not reach $host for $((time_now - time_lastcheck_withinternet)). Rebooting after reaching $failure_period"
+ fi
+ done
+
+ [ "$((time_now - time_lastcheck_withinternet))" -ge "$failure_period" ] && reboot_now "$force_reboot_delay"
+ done
}
-if [ "$1" = "always" ]
-then
- watchcat_always "$2" "$3"
-else
- watchcat_ping "$2" "$3" "$4" "$5" "$6"
-fi
+mode="$1"
+
+# Fix potential typo in mode and provide backward compatibility.
+[ "$mode" = "allways" ] && mode="periodic_reboot"
+[ "$mode" = "always" ] && mode="periodic_reboot"
+[ "$mode" = "ping" ] && mode="ping_reboot"
+
+case "$mode" in
+periodic_reboot)
+ watchcat_periodic "$2" "$3"
+ ;;
+ping_reboot)
+ watchcat_ping "$2" "$3" "$4" "$5" "$6"
+ ;;
+restart_iface)
+ watchcat_monitor_network "$2" "$3" "$4" "$5" "$6" "$7"
+ ;;
+*)
+ echo "Error: invalid mode selected: $mode"
+ ;;
+esac
PKG_NAME:=whois
PKG_VERSION:=5.5.7
-PKG_RELEASE:=1
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/w/whois
+++ /dev/null
---- a/Makefile
-+++ b/Makefile
-@@ -56,8 +56,6 @@ DEFS += -DHAVE_ICONV
- endif
-
- ifeq ($(shell $(PKG_CONFIG) --exists 'libxcrypt >= 4.1' || echo NO),)
--DEFS += -DHAVE_CRYPT_H -DHAVE_LINUX_CRYPT_GENSALT $(shell $(PKG_CONFIG) --cflags libcrypt)
--mkpasswd_LDADD += $(shell $(PKG_CONFIG) --libs libcrypt)
- else ifdef HAVE_XCRYPT
- DEFS += -DHAVE_XCRYPT_H -DHAVE_LINUX_CRYPT_GENSALT
- mkpasswd_LDADD += -lxcrypt
--- /dev/null
+--- a/Makefile
++++ b/Makefile
+@@ -72,7 +72,7 @@ endif
+ CPPFLAGS += $(DEFS) $(INCLUDES)
+
+ ##############################################################################
+-all: Makefile.depend whois mkpasswd pos
++all: Makefile.depend whois
+
+ ##############################################################################
+ %.o: %.c
+@@ -121,7 +121,7 @@ afl-run:
+ nice afl-fuzz -i ../afl_in -o ../afl_out -- ./whois
+
+ ##############################################################################
+-install: install-whois install-mkpasswd install-pos
++install: install-whois
+
+ install-whois: whois
+ $(INSTALL) -d $(BASEDIR)$(prefix)/bin/
--- a/Makefile
+++ b/Makefile
-@@ -43,8 +43,6 @@ $(error Please fix your build system to stop defining HAVE_LIBIDN!)
+@@ -42,14 +42,6 @@ ifdef HAVE_LIBIDN
+ $(error Please fix your build system to stop defining HAVE_LIBIDN!)
endif
-
- ifeq ($(shell $(PKG_CONFIG) --exists 'libidn2 >= 2.0.3' || echo NO),)
+
+-ifeq ($(shell $(PKG_CONFIG) --exists 'libidn2 >= 2.0.3' || echo NO),)
-whois_LDADD += $(shell $(PKG_CONFIG) --libs libidn2)
-DEFS += -DHAVE_LIBIDN2 $(shell $(PKG_CONFIG) --cflags libidn2)
- else ifeq ($(shell $(PKG_CONFIG) --exists 'libidn' || echo NO),)
- whois_LDADD += $(shell $(PKG_CONFIG) --libs libidn)
- DEFS += -DHAVE_LIBIDN $(shell $(PKG_CONFIG) --cflags libidn)
+-else ifeq ($(shell $(PKG_CONFIG) --exists 'libidn' || echo NO),)
+-whois_LDADD += $(shell $(PKG_CONFIG) --libs libidn)
+-DEFS += -DHAVE_LIBIDN $(shell $(PKG_CONFIG) --cflags libidn)
+-endif
+-
+ ifdef HAVE_ICONV
+ whois_OBJECTS += simple_recode.o
+ DEFS += -DHAVE_ICONV
+++ /dev/null
---- a/Makefile
-+++ b/Makefile
-@@ -72,7 +72,7 @@ endif
- CPPFLAGS += $(DEFS) $(INCLUDES)
-
- ##############################################################################
--all: Makefile.depend whois mkpasswd pos
-+all: Makefile.depend whois pos
-
- ##############################################################################
- %.o: %.c
PKG_NAME:=xfsprogs
PKG_VERSION:=5.9.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/linux/utils/fs/xfs/xfsprogs
--disable-libicu
TARGET_CFLAGS += -DHAVE_MAP_SYNC
+TARGET_LDFLAGS += $(if $(CONFIG_USE_GLIBC),-lrt)
define Package/xfs-admin/install
$(INSTALL_DIR) $(1)/sbin
PKG_NAME:=xz
PKG_VERSION:=5.2.5
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@SF/lzmautils
$(call Package/xz/Default)
DEPENDS:=xz-utils $(2)
TITLE:=$(1) utility from XZ Utils
- $(if $(3),ALTERNATIVES:=$(foreach f,$(1) $(3),300:/usr/bin/$(f):/usr/bin/lzmautils-$(1)))
+ $(if $(3),ALTERNATIVES:=$(foreach f,$(1) $(3),300:/usr/bin/$(f):/usr/libexec/$(1)-lzmautils))
endef
define Package/$(1)/description
endef
define Package/$(1)/install
- $(INSTALL_DIR) $$(1)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/$(1) $$(1)/usr/bin/$(if $(3),lzmautils-$(1))
+ $(INSTALL_DIR) $$(1)$(if $(3),/usr/libexec,/usr/bin)
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/$(1) $$(1)$(if $(3),/usr/libexec/$(1)-lzmautils,/usr/bin/$(1))
endef
$$(eval $$(call BuildPackage,$(1)))
include $(TOPDIR)/rules.mk
PKG_NAME:=yq
-PKG_VERSION:=3.4.1
+PKG_VERSION:=4.2.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://codeload.github.com/mikefarah/yq/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=73259f808d589d11ea7a18e4cd38a2e98b518a6c2c178d1ec57d9c5942277cb1
+PKG_SOURCE_URL:=https://codeload.github.com/mikefarah/yq/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=19a75856c35cf99d7547faa5d00144b7a0d9e03ef04d10a20cd739dd8280ea7d
PKG_MAINTAINER:=Tianling Shen <cnsztl@project-openwrt.eu.org>
PKG_LICENSE:=MIT
include $(TOPDIR)/rules.mk
PKG_NAME:=zoneinfo
-PKG_VERSION:=2020d
+PKG_VERSION:=2020e
PKG_RELEASE:=1
#As i couldn't find real license used "Public Domain"
PKG_SOURCE:=tzdata$(PKG_VERSION).tar.gz
PKG_SOURCE_CODE:=tzcode$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.iana.org/time-zones/repository/releases
-PKG_HASH:=8d813957de363387696f05af8a8889afa282ab5016a764c701a20758d39cbaf3
+PKG_HASH:=0be1ba329eae29ae1b54057c3547b3e672f73b3ae7643aa87dac85122bec037e
include $(INCLUDE_DIR)/package.mk
define Download/tzcode
FILE=$(PKG_SOURCE_CODE)
URL=$(PKG_SOURCE_URL)
- HASH:=6cf050ba28e8053029d3f32d71341d11a794c6b5dd51a77fc769d6dae364fad5
+ HASH:=3e10308976b09305d15cb4a32ff75483421f2063bfa24a9be366a027e7cd2902
endef
$(eval $(call Download,tzcode))
include $(TOPDIR)/rules.mk
PKG_NAME:=zstd
-PKG_VERSION:=1.4.5
-PKG_RELEASE:=2
+PKG_VERSION:=1.4.8
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.zst
PKG_SOURCE_URL:=https://github.com/facebook/zstd/releases/download/v$(PKG_VERSION)
-PKG_HASH:=2c2366874bc449ff539614266d8c0d6ecdb4baf30bb65609c239ab4ed23c03c7
+PKG_HASH:=c7ea10e20dd61b457220455e3cf553069987b968b7c63d1b9d46acbdb45623eb
PKG_MAINTAINER:=
PKG_LICENSE:=GPL-2.0-or-later
+++ /dev/null
---- a/build/meson/meson.build
-+++ b/build/meson/meson.build
-@@ -22,7 +22,6 @@ project('zstd',
- cc = meson.get_compiler('c')
- cxx = meson.get_compiler('cpp')
- pkgconfig = import('pkgconfig')
--python3 = import('python').find_installation()
- windows_mod = import('windows')
-
- host_machine_os = host_machine.system()
-@@ -40,8 +39,8 @@ compiler_msvc = 'msvc'
- zstd_version = meson.project_version()
-
- zstd_h_file = join_paths(meson.current_source_dir(), '../../lib/zstd.h')
--GetZstdLibraryVersion_py = files('GetZstdLibraryVersion.py')
--r = run_command(python3, GetZstdLibraryVersion_py, zstd_h_file)
-+GetZstdLibraryVersion_py = find_program('GetZstdLibraryVersion.py', native : true)
-+r = run_command(GetZstdLibraryVersion_py, zstd_h_file)
- if r.returncode() == 0
- zstd_version = r.stdout().strip()
- message('Project version is now: @0@'.format(zstd_version))