include $(TOPDIR)/rules.mk
PKG_NAME:=debootstrap
-PKG_VERSION:=1.0.66
+PKG_VERSION:=1.0.67
PKG_RELEASE:=1
PKG_MAINTAINER=Daniel Golle <daniel@makrotopia.org>
PKG_SOURCE:=$(PKG_NAME)-udeb_$(PKG_VERSION)_all.udeb
PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/d/debootstrap
-PKG_MD5SUM:=bf6370ea0aa80308dfb03a4a35e33ad1
+PKG_MD5SUM:=e7854d4b10ab860f08921525406debdd
PKG_LICENSE:=Unique
PKG_LICENSE_FILES:=debian/copyright
include $(TOPDIR)/rules.mk
PKG_NAME:=monit
-PKG_VERSION:=5.11
+PKG_VERSION:=5.12.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://mmonit.com/monit/dist
-PKG_MD5SUM:=ff00f39d248ed7068932ed82211da9e6
+PKG_MD5SUM:=1ffde79207270925f6f7df787d19100a
PKG_LICENSE:=AGPL-3.0
PKG_LICENSE_FILES:=COPYING
--- a/configure
+++ b/configure
-@@ -13744,14 +13744,7 @@ fi
+@@ -13821,14 +13821,7 @@ fi
# Find the right directory to put the root-mode PID file in
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pid file location" >&5
$as_echo_n "checking pid file location... " >&6; }
include $(TOPDIR)/rules.mk
PKG_NAME:=sudo
-PKG_VERSION:=1.8.12
+PKG_VERSION:=1.8.13
PKG_RELEASE:=1
PKG_LICENSE:=ISC
PKG_LICENSE_FILES:=doc/LICENSE
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.sudo.ws/sudo/dist
-PKG_MD5SUM:=87558f3a55c62bc9244b19594f103ffa
+PKG_MD5SUM:=f61577ec330ad1bd504c0e2eec6ea2d8
PKG_INSTALL:=1
include $(TOPDIR)/rules.mk
PKG_NAME:=zabbix
-PKG_VERSION:=2.4.3
+PKG_VERSION:=2.4.4
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/zabbix
-PKG_MD5SUM:=e8a0699c4e49999a15c63650a2280600
+PKG_MD5SUM:=400a3e2ebec80e2f1fe86d1b32bfd2e1
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
define Package/diffutils
SECTION:=devel
CATEGORY:=Development
- DEPENDS:=+USE_EGLIBC:librt
+ DEPENDS:=+USE_GLIBC:librt
TITLE:=diffutils
URL:=http://www.gnu.org/software/diffutils/
endef
DEPENDS:= +lttng-ust +libpopt +libxml2
endef
+CONFIGURE_ARGS += --disable-kmod
+
TARGET_LDFLAGS += -lurcu-bp
MAKE_FLAGS += V="$(V)"
include $(TOPDIR)/rules.mk
PKG_NAME:=patch
-PKG_VERSION:=2.7.4
+PKG_VERSION:=2.7.5
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GNU/patch
-PKG_MD5SUM:=abc59498fcdddd44e0d07764aa105fd2
+PKG_MD5SUM:=e3da7940431633fb65a01b91d3b7a27a
PKG_LICENSE:=GPL-3.0+
PKG_LICENSE_FILES:=COPYING
include $(TOPDIR)/rules.mk
PKG_NAME:=lua-penlight
-PKG_VERSION:=1.3.1
+PKG_VERSION:=1.3.2
PKG_RELEASE:=1
PKG_BUILD_DIR:=$(BUILD_DIR)/Penlight-$(PKG_VERSION)
PKG_SOURCE:=$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/stevedonovan/Penlight/archive/
+PKG_MD5SUM:=0315a39834bb6fab07741ec04ede1bf4
PKG_LICENSE:=MIT
PKG_LICENSE_FILE:=LICENSE.md
TARGET_CFLAGS += -DLUA_USE_LINUX $(FPIC) -std=gnu99
-ifneq ($(CONFIG_USE_EGLIBC),)
+ifneq ($(CONFIG_USE_GLIBC),)
ifeq ($(CONFIG_EGLIBC_OPTION_EGLIBC_UTMP),)
TARGET_CFLAGS += -DNO_GETLOGIN
endif
config PERL_THREADS
bool "Enable threading support"
- default y if (mips || mipsel || i386 || i686 || x86_64 || armeb || arm) && (USE_UCLIBC || USE_EGLIBC)
+ default y if (mips || mipsel || i386 || i686 || x86_64 || armeb || arm) && (USE_UCLIBC || USE_GLIBC)
default n
config PERL_TESTS
# Variables used during configuration/build
HOST_PERL_PREFIX:=$(STAGING_DIR_HOST)/usr
-ifneq ($(CONFIG_USE_EGLIBC),)
+ifneq ($(CONFIG_USE_GLIBC),)
EXTRA_LIBS:=bsd
EXTRA_LIBDIRS:=$(STAGING_DIR)/lib
endif
PERL_CONFIG_SUFFIX:=-mt
# uclibc doesn't provide crypt_r(). Enable crypt() usage for glibc builds only
- ifdef CONFIG_USE_EGLIBC
+ ifdef CONFIG_USE_GLIBC
CRYPT_R_PROTO:=REENTRANT_PROTO_B_CCS
CRYPT:=define
else
CATEGORY:=Languages
TITLE:=The Perl intepreter
URL:=http://www.perl.com/
- DEPENDS:=+USE_EGLIBC:libbsd +PERL_THREADS:libpthread
+ DEPENDS:=+USE_GLIBC:libbsd +PERL_THREADS:libpthread
endef
define Package/perl/description
# Build environment
HOST_PERL_PREFIX:=$(STAGING_DIR_HOST)/usr
-ifneq ($(CONFIG_USE_EGLIBC),)
+ifneq ($(CONFIG_USE_GLIBC),)
EXTRA_LIBS:=bsd
EXTRA_LIBDIRS:=$(STAGING_DIR)/lib
endif
include $(TOPDIR)/rules.mk
PKG_NAME:=php
-PKG_VERSION:=5.6.6
+PKG_VERSION:=5.6.7
PKG_RELEASE:=1
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://www.php.net/distributions/
-PKG_MD5SUM:=b198117ee1d44c8143e030cee15f1b52
+PKG_MD5SUM:=2e4b0534d4b8aa9aabedeef12e7c0aa8
PKG_FIXUP:=libtool autoreconf
PKG_BUILD_PARALLEL:=1
/usr/lib/python$(PYTHON_VERSION)/UserDict.py \
/usr/lib/python$(PYTHON_VERSION)/warnings.py
-PYTHON_BASE_LIB_FILES+=$(PYTHON_BASE_LIB_FILES)
+PYTHON_LIB_FILES_DEL+=$(PYTHON_BASE_LIB_FILES)
define PyPackage/python-base/filespec
+|/usr/bin/python$(PYTHON_VERSION)
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libpython$(PYTHON_VERSION).so* $(1)/usr/lib/
endef
-# Dummy rule so that the package gets picked up
-define Package/python/install
+define PyPackage/python/filespec
+-|$(PYTHON_PKG_DIR)
endef
HOST_CFLAGS+= \
+++ /dev/null
-#
-# Copyright (C) 2006-2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python-bsddb
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) bsddb module
- DEPENDS:=+python-light +libdb47
-endef
-
-$(eval $(call PyBasePackage,python-bsddb, \
- /usr/lib/python$(PYTHON_VERSION)/bsddb \
- /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_bsddb.so \
-))
endef
$(eval $(call PyBasePackage,python-codecs, \
+ /usr/lib/python$(PYTHON_VERSION)/encodings \
/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_codecs_cn.so \
/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_codecs_hk.so \
/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_codecs_iso2022.so \
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-compiler
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) compiler module
+ DEPENDS:=+python-light
+endef
+
+$(eval $(call PyBasePackage,python-compiler, \
+ /usr/lib/python$(PYTHON_VERSION)/compiler \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-ctypes
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) ctypes module
+ DEPENDS:=+python-light
+endef
+
+$(eval $(call PyBasePackage,python-ctypes, \
+ /usr/lib/python$(PYTHON_VERSION)/ctypes \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_ctypes.so \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_ctypes_test.so \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-db
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) db module
+ DEPENDS:=+python-light +libdb47
+endef
+
+$(eval $(call PyBasePackage,python-db, \
+ /usr/lib/python$(PYTHON_VERSION)/bsddb \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_bsddb.so \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/dbm.so \
+))
+++ /dev/null
-#
-# Copyright (C) 2006-2015 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python-dbm
-$(call Package/python/Default)
- TITLE:=Python $(PYTHON_VERSION) dbm module
- DEPENDS:=+python-light +libdb47
-endef
-
-$(eval $(call PyBasePackage,python-dbm, \
- /usr/lib/python$(PYTHON_VERSION)/lib-dynload/dbm.so \
-))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-decimal
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) decimal module
+ DEPENDS:=+python-light
+endef
+
+$(eval $(call PyBasePackage,python-decimal, \
+ /usr/lib/python$(PYTHON_VERSION)/decimal.py \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-distutils
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) distutils
+ DEPENDS:=+python-light
+endef
+
+$(eval $(call PyBasePackage,python-distutils, \
+ /usr/lib/python$(PYTHON_VERSION)/distutils \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-email
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) email module
+ DEPENDS:=+python-light
+endef
+
+$(eval $(call PyBasePackage,python-email, \
+ /usr/lib/python$(PYTHON_VERSION)/email \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-logging
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) logging module
+ DEPENDS:=+python-light
+endef
+
+$(eval $(call PyBasePackage,python-logging, \
+ /usr/lib/python$(PYTHON_VERSION)/logging \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-multiprocessing
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) multiprocessing
+ DEPENDS:=+python-light
+endef
+
+$(eval $(call PyBasePackage,python-multiprocessing, \
+ /usr/lib/python$(PYTHON_VERSION)/multiprocessing \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_multiprocessing.so \
+))
endef
$(eval $(call PyBasePackage,python-ncurses, \
+ /usr/lib/python$(PYTHON_VERSION)/curses \
/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_curses.so \
/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_curses_panel.so \
))
endef
$(eval $(call PyBasePackage,python-pydoc, \
+ /usr/lib/python$(PYTHON_VERSION)/doctest.py \
/usr/lib/python$(PYTHON_VERSION)/pydoc.py \
/usr/lib/python$(PYTHON_VERSION)/pydoc_data \
))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-unittest
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) unittest module
+ DEPENDS:=+python-light
+endef
+
+$(eval $(call PyBasePackage,python-unittest, \
+ /usr/lib/python$(PYTHON_VERSION)/unittest \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-xml
+$(call Package/python/Default)
+ TITLE:=Python $(PYTHON_VERSION) xml libs
+ DEPENDS:=+python-light
+endef
+
+$(eval $(call PyBasePackage,python-xml, \
+ /usr/lib/python$(PYTHON_VERSION)/xml \
+ /usr/lib/python$(PYTHON_VERSION)/xmllib.py \
+ /usr/lib/python$(PYTHON_VERSION)/xmlrpclib.py \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/_elementtree.so \
+ /usr/lib/python$(PYTHON_VERSION)/lib-dynload/pyexpat.so \
+))
)
endef
+# These configure args are needed in detection of path to Python header files
+# using autotools.
+CONFIGURE_ARGS += \
+ _python_sysroot="$(STAGING_DIR)" \
+ _python_prefix="/usr" \
+ _python_exec_prefix="/usr"
+
PKG_USE_MIPS16:=0
# This is required in addition to PKG_USE_MIPS16:=0 because otherwise MIPS16
# flags are inherited from the Python base package (via sysconfig module)
--- /dev/null
+diff --git a/setup.py b/setup.py
+index 7868b7b..10ec68f 100644
+--- a/setup.py
++++ b/setup.py
+@@ -1067,6 +1067,7 @@ class PyBuildExt(build_ext):
+ if db_setup_debug: print "db lib: ", dblib, "not found"
+
+ except db_found:
++ rt_dblib_dir = None if cross_compiling else dblib_dir
+ if db_setup_debug:
+ print "bsddb using BerkeleyDB lib:", db_ver, dblib
+ print "bsddb lib dir:", dblib_dir, " inc dir:", db_incdir
+@@ -1081,7 +1082,7 @@ class PyBuildExt(build_ext):
+ exts.append(Extension('_bsddb', ['_bsddb.c'],
+ depends = ['bsddb.h'],
+ library_dirs=dblib_dir,
+- runtime_library_dirs=dblib_dir,
++ runtime_library_dirs=rt_dblib_dir,
+ include_dirs=db_incs,
+ libraries=dblibs))
+ else:
+@@ -1292,10 +1293,11 @@ class PyBuildExt(build_ext):
+ break
+ elif cand == "bdb":
+ if db_incs is not None:
++ rt_dblib_dir = None if cross_compiling else dblib_dir
+ print "building dbm using bdb"
+ dbmext = Extension('dbm', ['dbmmodule.c'],
+ library_dirs=dblib_dir,
+- runtime_library_dirs=dblib_dir,
++ runtime_library_dirs=rt_dblib_dir,
+ include_dirs=db_incs,
+ define_macros=[
+ ('HAVE_BERKDB_H', None),
--- /dev/null
+diff --git a/setup.py b/setup.py
+index 7868b7b..544fa7e 100644
+--- a/setup.py
++++ b/setup.py
+@@ -452,8 +452,9 @@ class PyBuildExt(build_ext):
+ # directly since an inconsistently reproducible issue comes up where
+ # the environment variable is not set even though the value were passed
+ # into configure and stored in the Makefile (issue found on OS X 10.3).
++ rt_lib_dirs = [] if cross_compiling else self.compiler.runtime_library_dirs
+ for env_var, arg_name, dir_list in (
+- ('LDFLAGS', '-R', self.compiler.runtime_library_dirs),
++ ('LDFLAGS', '-R', rt_lib_dirs),
+ ('LDFLAGS', '-L', self.compiler.library_dirs),
+ ('CPPFLAGS', '-I', self.compiler.include_dirs)):
+ env_val = sysconfig.get_config_var(env_var)
#
-# Copyright (C) 2006-2014 OpenWrt.org
+# Copyright (C) 2006-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PYTHON_VERSION_MICRO:=$(PYTHON3_VERSION_MICRO)
PKG_NAME:=python3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_VERSION:=$(PYTHON_VERSION).$(PYTHON_VERSION_MICRO)
PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://www.python.org/ftp/python/$(PKG_VERSION)
-PKG_MD5SUM:=36fc7327c02c6f12fa24fc9ba78039e3
+PKG_MD5SUM:=7d092d1bba6e17f0d9bd21b49e441dd5
PKG_LICENSE:=PSF
PKG_LICENSE_FILES:=LICENSE Modules/_ctypes/libffi_msvc/LICENSE Modules/_ctypes/darwin/LICENSE Modules/_ctypes/libffi/LICENSE Modules/_ctypes/libffi_osx/LICENSE Tools/pybench/LICENSE
define Package/python3-base
$(call Package/python3/Default)
TITLE:=Python $(PYTHON_VERSION) interpreter
- DEPENDS:=+libpthread +zlib +libffi +libopenssl
+ DEPENDS:=+libpthread +zlib
endef
define Package/python3-base/description
for the interpreter to start.
endef
+define Package/python3-light
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON_VERSION) light installation
+ DEPENDS:=+python3-base +libffi +libbz2
+endef
+
+define Package/python3-light/description
+ This package is essentially the python3-base package plus
+ a few of the rarely used (and big) libraries stripped out
+ into separate packages.
+endef
+
+# Define newline here, since it's not defined in OpenWRT
+define newline
+
+
+endef
+
+PYTHON3_LIB_FILES_DEL:=
+PYTHON3_PACKAGES:=
+PYTHON3_SO_SUFFIX:=cpython-34.so
+define Py3BasePackage
+ PYTHON3_PACKAGES+=$(1)
+ PYTHON3_LIB_FILES_DEL+=$(2)
+ define Py3Package/$(1)/filespec
+ $(subst $(space),$(newline),$(foreach lib_file,$(2),+|$(lib_file)))
+ endef
+endef
+
+include ./files/python3-package-*.mk
+
define Package/python3
$(call Package/python3/Default)
- DEPENDS:=+python3-base +libncursesw +libbz2 +libgdbm +libsqlite3 +libdb47
+ DEPENDS:=+python3-light $(foreach package,$(PYTHON3_PACKAGES),+$(package))
endef
define Package/python3/description
This package contains the (almost) full Python install.
+ It's python3-light + all other packages.
endef
MAKE_FLAGS+=\
LD="$(TARGET_CC)" \
PGEN=pgen3
+ifeq ($(ARCH),i386)
+MAKE_FLAGS+=PYTHON_DECIMAL_WITH_MACHINE=ansi32
+endif
+
EXTRA_CFLAGS+= \
-DNDEBUG -fno-inline
EXTRA_LDFLAGS+= \
$(1)/usr/lib/python$(PYTHON_VERSION)/
endef
+PYTHON3_BASE_LIB_FILES:= \
+ /usr/lib/python$(PYTHON_VERSION)/encodings \
+ /usr/lib/python$(PYTHON_VERSION)/_collections_abc.py \
+ /usr/lib/python$(PYTHON_VERSION)/_sitebuiltins.py \
+ /usr/lib/python$(PYTHON_VERSION)/_sysconfigdata.py \
+ /usr/lib/python$(PYTHON_VERSION)/_weakrefset.py \
+ /usr/lib/python$(PYTHON_VERSION)/abc.py \
+ /usr/lib/python$(PYTHON_VERSION)/codecs.py \
+ /usr/lib/python$(PYTHON_VERSION)/genericpath.py \
+ /usr/lib/python$(PYTHON_VERSION)/io.py \
+ /usr/lib/python$(PYTHON_VERSION)/os.py \
+ /usr/lib/python$(PYTHON_VERSION)/posixpath.py \
+ /usr/lib/python$(PYTHON_VERSION)/site.py \
+ /usr/lib/python$(PYTHON_VERSION)/sysconfig.py \
+ /usr/lib/python$(PYTHON_VERSION)/stat.py
+
+PYTHON3_LIB_FILES_DEL+=$(PYTHON3_BASE_LIB_FILES)
+
define Py3Package/python3-base/filespec
+|/usr/bin/python$(PYTHON_VERSION)
-+|/usr/lib/python$(PYTHON_VERSION)/encodings
-+|/usr/lib/python$(PYTHON_VERSION)/_collections_abc.py
-+|/usr/lib/python$(PYTHON_VERSION)/_sitebuiltins.py
-+|/usr/lib/python$(PYTHON_VERSION)/_sysconfigdata.py
-+|/usr/lib/python$(PYTHON_VERSION)/_weakrefset.py
-+|/usr/lib/python$(PYTHON_VERSION)/abc.py
-+|/usr/lib/python$(PYTHON_VERSION)/codecs.py
-+|/usr/lib/python$(PYTHON_VERSION)/genericpath.py
-+|/usr/lib/python$(PYTHON_VERSION)/io.py
-+|/usr/lib/python$(PYTHON_VERSION)/os.py
-+|/usr/lib/python$(PYTHON_VERSION)/posixpath.py
-+|/usr/lib/python$(PYTHON_VERSION)/site.py
-+|/usr/lib/python$(PYTHON_VERSION)/sysconfig.py
-+|/usr/lib/python$(PYTHON_VERSION)/stat.py
+$(subst $(space),$(newline),$(foreach lib_file,$(PYTHON3_BASE_LIB_FILES),+|$(lib_file)))
endef
-define Py3Package/python3/filespec
+define Py3Package/python3-light/filespec
+|/usr/lib/python$(PYTHON_VERSION)
-|/usr/lib/python$(PYTHON_VERSION)/config-$(PYTHON_VERSION)
-|/usr/lib/python$(PYTHON_VERSION)/distutils/cygwinccompiler.py
-|/usr/lib/python$(PYTHON_VERSION)/distutils/command/wininst*
+-|/usr/lib/python$(PYTHON_VERSION)/ensurepip
-|/usr/lib/python$(PYTHON_VERSION)/idlelib
-|/usr/lib/python$(PYTHON_VERSION)/lib2to3
-|/usr/lib/python$(PYTHON_VERSION)/tkinter
-|/usr/lib/python$(PYTHON_VERSION)/webbrowser.py
-|/usr/lib/python$(PYTHON_VERSION)/*/test
-|/usr/lib/python$(PYTHON_VERSION)/*/tests
+-|/usr/lib/python$(PYTHON_VERSION)/_osx_support.py
+$(subst $(space),$(newline),$(foreach lib_file,$(PYTHON3_LIB_FILES_DEL),-|$(lib_file)))
endef
define Py3Package/python3-base/install
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libpython$(PYTHON_VERSION).so* $(1)/usr/lib/
endef
+define Py3Package/python3/filespec
+-|$(PYTHON3_PKG_DIR)
+endef
+
+HOST_CFLAGS+= \
+ -I/usr/include/ncursesw \
+ -I/usr/include/ncurses
+
HOST_CONFIGURE_ARGS+= \
--without-cxx-main \
--without-pymalloc \
--prefix=$(STAGING_DIR_HOST) \
--with-ensurepip=upgrade \
CONFIG_SITE= \
- OPT="$(HOST_CFLAGS)"
+ CFLAGS="$(HOST_CFLAGS)"
define Host/Compile
+$(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) python Parser/pgen
$(eval $(call HostBuild))
+$(foreach package, $(PYTHON3_PACKAGES), \
+ $(eval $(call Py3Package,$(package))) \
+ $(eval $(call BuildPackage,$(package))) \
+)
+
$(eval $(call Py3Package,python3-base))
+$(eval $(call Py3Package,python3-light))
$(eval $(call Py3Package,python3))
$(eval $(call BuildPackage,python3-base))
+$(eval $(call BuildPackage,python3-light))
$(eval $(call BuildPackage,python3))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-asyncio
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) asyncio module
+ DEPENDS:=+python3-light
+endef
+
+$(eval $(call Py3BasePackage,python3-asyncio, \
+ /usr/lib/python$(PYTHON3_VERSION)/asyncio \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-codecs
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) codecs + unicode support
+ DEPENDS:=+python3-light
+endef
+
+$(eval $(call Py3BasePackage,python3-codecs, \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_codecs_cn.$(PYTHON3_SO_SUFFIX) \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_codecs_hk.$(PYTHON3_SO_SUFFIX) \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_codecs_iso2022.$(PYTHON3_SO_SUFFIX) \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_codecs_jp.$(PYTHON3_SO_SUFFIX) \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_codecs_kr.$(PYTHON3_SO_SUFFIX) \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_codecs_tw.$(PYTHON3_SO_SUFFIX) \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/unicodedata.$(PYTHON3_SO_SUFFIX) \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-ctypes
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) ctypes module
+ DEPENDS:=+python3-light
+endef
+
+$(eval $(call Py3BasePackage,python3-ctypes, \
+ /usr/lib/python$(PYTHON3_VERSION)/ctypes \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_ctypes.$(PYTHON3_SO_SUFFIX) \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_ctypes_test.$(PYTHON3_SO_SUFFIX) \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-dbm
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) dbm module
+ DEPENDS:=+python3-light +libdb47
+endef
+
+$(eval $(call Py3BasePackage,python3-dbm, \
+ /usr/lib/python$(PYTHON3_VERSION)/dbm \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_dbm.$(PYTHON3_SO_SUFFIX) \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-decimal
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) decimal module
+ DEPENDS:=+python3-light
+endef
+
+$(eval $(call Py3BasePackage,python3-decimal, \
+ /usr/lib/python$(PYTHON3_VERSION)/decimal.py \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_decimal.$(PYTHON3_SO_SUFFIX) \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-distutils
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) distutils module
+ DEPENDS:=+python3-light
+endef
+
+$(eval $(call Py3BasePackage,python3-distutils, \
+ /usr/lib/python$(PYTHON3_VERSION)/distutils \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-email
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) email module
+ DEPENDS:=+python3-light
+endef
+
+$(eval $(call Py3BasePackage,python3-email, \
+ /usr/lib/python$(PYTHON3_VERSION)/email \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-gdbm
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) gdbm module
+ DEPENDS:=+python3-light +libgdbm
+endef
+
+$(eval $(call Py3BasePackage,python3-gdbm, \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_gdbm.$(PYTHON3_SO_SUFFIX) \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-logging
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) logging module
+ DEPENDS:=+python3-light
+endef
+
+$(eval $(call Py3BasePackage,python3-logging, \
+ /usr/lib/python$(PYTHON3_VERSION)/logging \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-multiprocessing
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) multiprocessing
+ DEPENDS:=+python3-light
+endef
+
+$(eval $(call Py3BasePackage,python3-multiprocessing, \
+ /usr/lib/python$(PYTHON3_VERSION)/multiprocessing \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_multiprocessing.$(PYTHON3_SO_SUFFIX) \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-ncurses
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) ncurses module
+ DEPENDS:=+python3-light +libncursesw
+endef
+
+$(eval $(call Py3BasePackage,python3-ncurses, \
+ /usr/lib/python$(PYTHON3_VERSION)/curses \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_curses.$(PYTHON3_SO_SUFFIX) \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_curses_panel.$(PYTHON3_SO_SUFFIX) \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-openssl
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) SSL module
+ DEPENDS:=+python3-light +libopenssl
+endef
+
+$(eval $(call Py3BasePackage,python3-openssl, \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_hashlib.$(PYTHON3_SO_SUFFIX) \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_ssl.$(PYTHON3_SO_SUFFIX) \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-pydoc
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) pydoc module
+ DEPENDS:=+python3-light
+endef
+
+$(eval $(call Py3BasePackage,python3-pydoc, \
+ /usr/lib/python$(PYTHON3_VERSION)/doctest.py \
+ /usr/lib/python$(PYTHON3_VERSION)/pydoc.py \
+ /usr/lib/python$(PYTHON3_VERSION)/pydoc_data \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-sqlite3
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) sqlite3 module
+ DEPENDS:=+python3-light +libsqlite3
+endef
+
+$(eval $(call Py3BasePackage,python3-sqlite3, \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_sqlite3.$(PYTHON3_SO_SUFFIX) \
+ /usr/lib/python$(PYTHON3_VERSION)/sqlite3 \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-unittest
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) unittest module
+ DEPENDS:=+python3-light
+endef
+
+$(eval $(call Py3BasePackage,python3-unittest, \
+ /usr/lib/python$(PYTHON3_VERSION)/unittest \
+))
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-xml
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) xml libs
+ DEPENDS:=+python3-light
+endef
+
+$(eval $(call Py3BasePackage,python3-xml, \
+ /usr/lib/python$(PYTHON3_VERSION)/xml \
+ /usr/lib/python$(PYTHON3_VERSION)/xmlrpc \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/_elementtree.$(PYTHON3_SO_SUFFIX) \
+ /usr/lib/python$(PYTHON3_VERSION)/lib-dynload/pyexpat.$(PYTHON3_SO_SUFFIX) \
+))
#
PYTHON3_VERSION:=3.4
-PYTHON3_VERSION_MICRO:=2
+PYTHON3_VERSION_MICRO:=3
PYTHON3_DIR:=$(STAGING_DIR)/usr
PYTHON3_BIN_DIR:=$(PYTHON3_DIR)/bin
--- /dev/null
+From 6eeab87bc852481e599325549c854b701bf2e39f Mon Sep 17 00:00:00 2001
+From: Alexandru Ardelean <aa@ocedo.com>
+Date: Thu, 25 Sep 2014 18:18:29 +0300
+Subject: [PATCH] enable zlib
+
+---
+ Modules/Setup.dist | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Modules/Setup.dist b/Modules/Setup.dist
+index 01fb85f..01ac492 100644
+--- a/Modules/Setup.dist
++++ b/Modules/Setup.dist
+@@ -358,7 +358,7 @@ _symtable symtablemodule.c
+ # Andrew Kuchling's zlib module.
+ # This require zlib 1.1.3 (or later).
+ # See http://www.gzip.org/zlib/
+-#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
++zlib zlibmodule.c -lz
+
+ # Interface to the Expat XML parser
+ #
+--
+1.8.4.5
+
--- /dev/null
+diff --git a/setup.py b/setup.py
+index 93f390f..ace1494 100644
+--- a/setup.py
++++ b/setup.py
+@@ -461,7 +461,8 @@ class PyBuildExt(build_ext):
+ add_dir_to_list(dir_list, directory)
+
+ if os.path.normpath(sys.base_prefix) != '/usr' \
+- and not sysconfig.get_config_var('PYTHONFRAMEWORK'):
++ and not sysconfig.get_config_var('PYTHONFRAMEWORK') \
++ and not cross_compiling:
+ # OSX note: Don't add LIBDIR and INCLUDEDIR to building a framework
+ # (PYTHONFRAMEWORK is set) to avoid # linking problems when
+ # building a framework with different architectures than
--- /dev/null
+diff --git a/Makefile.pre.in b/Makefile.pre.in
+index f36c11d..f2b6c71 100644
+--- a/Makefile.pre.in
++++ b/Makefile.pre.in
+@@ -1217,32 +1217,6 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
+ done; \
+ done
+ $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
+- if test -d $(DESTDIR)$(LIBDEST)/distutils/tests; then \
+- $(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \
+- $(DESTDIR)$(LIBDEST)/distutils/tests ; \
+- fi
+- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
+- -d $(LIBDEST) -f \
+- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
+- $(DESTDIR)$(LIBDEST)
+- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
+- -d $(LIBDEST) -f \
+- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
+- $(DESTDIR)$(LIBDEST)
+- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
+- -d $(LIBDEST)/site-packages -f \
+- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
+- -d $(LIBDEST)/site-packages -f \
+- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
+- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
+- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
+- $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt
+
+ # Create the PLATDIR source directory, if one wasn't distributed..
+ $(srcdir)/Lib/$(PLATDIR):
--- /dev/null
+diff --git a/Python/pythonrun.c b/Python/pythonrun.c
+index 0327830..df41cda 100644
+--- a/Python/pythonrun.c
++++ b/Python/pythonrun.c
+@@ -124,7 +124,7 @@ int Py_InteractiveFlag; /* Needed by Py_FdIsInteractive() below */
+ int Py_InspectFlag; /* Needed to determine whether to exit at SystemExit */
+ int Py_NoSiteFlag; /* Suppress 'import site' */
+ int Py_BytesWarningFlag; /* Warn on str(bytes) and str(buffer) */
+-int Py_DontWriteBytecodeFlag; /* Suppress writing bytecode files (*.py[co]) */
++int Py_DontWriteBytecodeFlag = 1; /* Suppress writing bytecode files (*.py[co]) */
+ int Py_UseClassExceptionsFlag = 1; /* Needed by bltinmodule.c: deprecated */
+ int Py_FrozenFlag; /* Needed by getpath.c */
+ int Py_IgnoreEnvironmentFlag; /* e.g. PYTHONPATH, PYTHONHOME */
+@@ -350,7 +350,7 @@ _Py_InitializeEx_Private(int install_sigs, int install_importlib)
+ if ((p = Py_GETENV("PYTHONOPTIMIZE")) && *p != '\0')
+ Py_OptimizeFlag = add_flag(Py_OptimizeFlag, p);
+ if ((p = Py_GETENV("PYTHONDONTWRITEBYTECODE")) && *p != '\0')
+- Py_DontWriteBytecodeFlag = add_flag(Py_DontWriteBytecodeFlag, p);
++ Py_DontWriteBytecodeFlag = atoi(p);
+ /* The variable is only tested for existence here; _PyRandom_Init will
+ check its value further. */
+ if ((p = Py_GETENV("PYTHONHASHSEED")) && *p != '\0')
--- /dev/null
+diff --git a/Modules/_ctypes/libffi/configure b/Modules/_ctypes/libffi/configure
+index 75f62a7..4d6c9f2 100755
+--- a/Modules/_ctypes/libffi/configure
++++ b/Modules/_ctypes/libffi/configure
+@@ -17257,20 +17257,12 @@ case "$host" in
+ fi
+ ;;
+
+- i?86-*-* | x86_64-*-*)
+- TARGETDIR=x86
+- if test $ac_cv_sizeof_size_t = 4; then
+- case "$host" in
+- *-gnux32)
+- TARGET=X86_64
+- ;;
+- *)
+- TARGET=X86
+- ;;
+- esac
+- else
+- TARGET=X86_64;
+- fi
++ i?86-*-*)
++ TARGET=X86; TARGETDIR=x86
++ ;;
++
++ x86_64-*-*)
++ TARGET=X86_64; TARGETDIR=x86
+ ;;
+
+ ia64*-*-*)
--- /dev/null
+diff --git a/setup.py b/setup.py
+index 7868b7b..9ae0ef2 100644
+--- a/setup.py
++++ b/setup.py
+@@ -444,7 +444,6 @@ class PyBuildExt(build_ext):
+ add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
+ if cross_compiling:
+ self.add_gcc_paths()
+- self.add_multiarch_paths()
+
+ # Add paths specified in the environment variables LDFLAGS and
+ # CPPFLAGS for header and library files.
--- /dev/null
+--- a/Lib/distutils/command/build_scripts.py
++++ b/Lib/distutils/command/build_scripts.py
+@@ -89,6 +89,7 @@ class build_scripts (Command):
+ adjust = 1
+ post_interp = match.group(1) or ''
+
++ adjust = 0
+ if adjust:
+ log.info("copying and adjusting %s -> %s", script,
+ self.build_dir)
--- /dev/null
+diff --git a/setup.py b/setup.py
+index 7868b7b..544fa7e 100644
+--- a/setup.py
++++ b/setup.py
+@@ -452,8 +452,9 @@ class PyBuildExt(build_ext):
+ # directly since an inconsistently reproducible issue comes up where
+ # the environment variable is not set even though the value were passed
+ # into configure and stored in the Makefile (issue found on OS X 10.3).
++ rt_lib_dirs = [] if cross_compiling else self.compiler.runtime_library_dirs
+ for env_var, arg_name, dir_list in (
+- ('LDFLAGS', '-R', self.compiler.runtime_library_dirs),
++ ('LDFLAGS', '-R', rt_lib_dirs),
+ ('LDFLAGS', '-L', self.compiler.library_dirs),
+ ('CPPFLAGS', '-I', self.compiler.include_dirs)):
+ env_val = sysconfig.get_config_var(env_var)
+++ /dev/null
-From 6eeab87bc852481e599325549c854b701bf2e39f Mon Sep 17 00:00:00 2001
-From: Alexandru Ardelean <aa@ocedo.com>
-Date: Thu, 25 Sep 2014 18:18:29 +0300
-Subject: [PATCH] enable zlib
-
----
- Modules/Setup.dist | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Modules/Setup.dist b/Modules/Setup.dist
-index 01fb85f..01ac492 100644
---- a/Modules/Setup.dist
-+++ b/Modules/Setup.dist
-@@ -358,7 +358,7 @@ _symtable symtablemodule.c
- # Andrew Kuchling's zlib module.
- # This require zlib 1.1.3 (or later).
- # See http://www.gzip.org/zlib/
--#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
-+zlib zlibmodule.c -lz
-
- # Interface to the Expat XML parser
- #
---
-1.8.4.5
-
+++ /dev/null
-diff --git a/setup.py b/setup.py
-index 93f390f..ace1494 100644
---- a/setup.py
-+++ b/setup.py
-@@ -461,7 +461,8 @@ class PyBuildExt(build_ext):
- add_dir_to_list(dir_list, directory)
-
- if os.path.normpath(sys.base_prefix) != '/usr' \
-- and not sysconfig.get_config_var('PYTHONFRAMEWORK'):
-+ and not sysconfig.get_config_var('PYTHONFRAMEWORK') \
-+ and not cross_compiling:
- # OSX note: Don't add LIBDIR and INCLUDEDIR to building a framework
- # (PYTHONFRAMEWORK is set) to avoid # linking problems when
- # building a framework with different architectures than
+++ /dev/null
-diff --git a/Makefile.pre.in b/Makefile.pre.in
-index f36c11d..f2b6c71 100644
---- a/Makefile.pre.in
-+++ b/Makefile.pre.in
-@@ -1217,32 +1217,6 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
- done; \
- done
- $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
-- if test -d $(DESTDIR)$(LIBDEST)/distutils/tests; then \
-- $(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \
-- $(DESTDIR)$(LIBDEST)/distutils/tests ; \
-- fi
-- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
-- -d $(LIBDEST) -f \
-- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
-- $(DESTDIR)$(LIBDEST)
-- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
-- -d $(LIBDEST) -f \
-- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
-- $(DESTDIR)$(LIBDEST)
-- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
-- -d $(LIBDEST)/site-packages -f \
-- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
-- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
-- -d $(LIBDEST)/site-packages -f \
-- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
-- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
-- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt
-
- # Create the PLATDIR source directory, if one wasn't distributed..
- $(srcdir)/Lib/$(PLATDIR):
+++ /dev/null
-diff --git a/Python/pythonrun.c b/Python/pythonrun.c
-index 0327830..df41cda 100644
---- a/Python/pythonrun.c
-+++ b/Python/pythonrun.c
-@@ -124,7 +124,7 @@ int Py_InteractiveFlag; /* Needed by Py_FdIsInteractive() below */
- int Py_InspectFlag; /* Needed to determine whether to exit at SystemExit */
- int Py_NoSiteFlag; /* Suppress 'import site' */
- int Py_BytesWarningFlag; /* Warn on str(bytes) and str(buffer) */
--int Py_DontWriteBytecodeFlag; /* Suppress writing bytecode files (*.py[co]) */
-+int Py_DontWriteBytecodeFlag = 1; /* Suppress writing bytecode files (*.py[co]) */
- int Py_UseClassExceptionsFlag = 1; /* Needed by bltinmodule.c: deprecated */
- int Py_FrozenFlag; /* Needed by getpath.c */
- int Py_IgnoreEnvironmentFlag; /* e.g. PYTHONPATH, PYTHONHOME */
-@@ -350,7 +350,7 @@ _Py_InitializeEx_Private(int install_sigs, int install_importlib)
- if ((p = Py_GETENV("PYTHONOPTIMIZE")) && *p != '\0')
- Py_OptimizeFlag = add_flag(Py_OptimizeFlag, p);
- if ((p = Py_GETENV("PYTHONDONTWRITEBYTECODE")) && *p != '\0')
-- Py_DontWriteBytecodeFlag = add_flag(Py_DontWriteBytecodeFlag, p);
-+ Py_DontWriteBytecodeFlag = atoi(p);
- /* The variable is only tested for existence here; _PyRandom_Init will
- check its value further. */
- if ((p = Py_GETENV("PYTHONHASHSEED")) && *p != '\0')
PKG_NAME:=avahi
PKG_VERSION:=0.6.31
-PKG_RELEASE:=11
+PKG_RELEASE:=12
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://avahi.org/download/
SECTION:=libs
CATEGORY:=Libraries
PROVIDES:=libavahi
- DEPENDS:=+libpthread +SSP_SUPPORT:libssp
+ DEPENDS:=+libpthread
endef
define Package/libavahi/description
SUBMENU:=IP Addresses and Names
DEPENDS:=+libavahi-nodbus-support +libexpat +librt +libdaemon
TITLE+= (daemon)
+ USERID:=avahi=105:avahi=105
endef
define Package/avahi-daemon/description
define Package/avahi-dnsconfd
$(call Package/avahi/Default)
SUBMENU:=IP Addresses and Names
- DEPENDS:=+libavahi +libdaemon +libpthread +SSP_SUPPORT:libssp
+ DEPENDS:=+libavahi +libdaemon +libpthread
TITLE:=A Unicast DNS server using avahi-daemon
endef
#host-name=foo
#domain-name=local
use-ipv4=yes
-use-ipv6=no
+use-ipv6=yes
check-response-ttl=no
use-iff-running=no
--- /dev/null
+#
+# Copyright (C) 2007-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=fftw3
+PKG_VERSION:=3.3.4
+PKG_RELEASE:=1
+PKG_LICENSE:=GPL-2.0+
+
+PKG_SOURCE:=fftw-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://www.fftw.org
+PKG_MD5SUM:=2edab8c06b24feeb3b82bbb3ebf3e7b3
+
+PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/fftw-$(PKG_VERSION)
+PKG_FIXUP:=autoreconf
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/fftw3
+ SECTION:=libs
+ CATEGORY:=Libraries
+ DEPENDS:=@!avr32 +libpthread
+ VARIANT:=double
+ TITLE:=Fast Fourier transform library
+ URL:=http://www.fftw.org/
+ MAINTAINER:=Vladimir Ulrich <admin@evl.su>
+endef
+
+define Package/fftw3f
+ $(call Package/fftw3)
+ VARIANT:=single
+ TITLE+= (single precision)
+endef
+
+define Package/fftw3l
+ $(call Package/fftw3)
+ DEPENDS:=@BROKEN
+ VARIANT:=long-double
+ TITLE+= (long-double precision)
+endef
+
+define Package/fftw3/description
+ FFTW is a collection of fast C routines for computing the
+ Discrete Fourier Transform in one or more dimensions. It
+ includes complex, real, and parallel transforms, and can
+ handle arbitrary array sizes efficiently.
+endef
+
+define Package/fftw3f/description
+ $(call Package/fftw3/description)
+
+ This package contains the single precision library.
+endef
+
+define Package/fftw3l/description
+ $(call Package/fftw3/description)
+
+ This package contains the long-double precision library.
+endef
+
+TARGET_CFLAGS += $(FPIC)
+
+CONFIGURE_ARGS += \
+ --prefix=/usr \
+ --without-libiconv-prefix \
+ --without-libintl-prefix \
+ --enable-shared \
+ --enable-threads \
+ --enable-type-prefix \
+ --disable-debug \
+ --disable-fortran
+
+ifeq ($(BUILD_VARIANT), single)
+CONFIGURE_ARGS += \
+ --enable-single
+endif
+
+ifeq ($(BUILD_VARIANT), long-double)
+CONFIGURE_ARGS += \
+ --enable-long-double
+endif
+
+define Build/Compile
+ $(MAKE) -C $(PKG_BUILD_DIR) DESTDIR="$(PKG_INSTALL_DIR)" install
+endef
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/fftw3.h $(1)/usr/include
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfftw3*.{a,la} $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfftw3*.so* $(1)/usr/lib
+ $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/* $(1)/usr/lib/pkgconfig/
+endef
+
+define Package/fftw3/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfftw3.so* $(1)/usr/lib/
+endef
+
+define Package/fftw3f/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfftw3f.so* $(1)/usr/lib/
+endef
+
+define Package/fftw3l/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfftw3l.so* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,fftw3))
+$(eval $(call BuildPackage,fftw3f))
+$(eval $(call BuildPackage,fftw3l))
--- /dev/null
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -232,7 +232,7 @@
+ CTAGS = ctags
+ CSCOPE = cscope
+ DIST_SUBDIRS = support genfft kernel simd-support dft rdft reodft api \
+- libbench2 . threads tests mpi doc tools m4
++ libbench2 . threads mpi doc tools m4
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ distdir = $(PACKAGE)-$(VERSION)
+ top_distdir = $(distdir)
+@@ -444,7 +444,7 @@
+ #
+ @COMBINED_THREADS_TRUE@CHICKEN_EGG = threads .
+ SUBDIRS = support $(GENFFT) kernel simd-support dft rdft reodft api \
+-libbench2 $(CHICKEN_EGG) tests mpi doc tools m4
++libbench2 $(CHICKEN_EGG) mpi m4
+
+ EXTRA_DIST = COPYRIGHT bootstrap.sh CONVENTIONS fftw.pc.in
+ SIMD_LIBS = \
PKG_LICENSE_FILES:=COPYING
PKG_MAINTAINER:=Marcel Denia <naoir@gmx.net>
-PKG_FIXUP:=autoreconf
+PKG_FIXUP:=autoreconf gettext-version
PKG_REMOVE_FILES:=Makefile compat/Makefile doc/Makefile export/Makefile src/Makefile tests/Makefile
PKG_BUILD_PARALLEL:=0
#
-# Copyright (C) 2008-2014 OpenWrt.org
+# Copyright (C) 2008-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PKG_NAME:=libesmtp
PKG_VERSION:=1.0.6
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_MD5SUM:=c4fedc999b6c3820296b0eb92cc2e252
PKG_MAINTAINER:=Othmar Truniger <github@truniger.ch>
PKG_SOURCE_URL:=http://www.stafford.uklinux.net/libesmtp
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_BUILD_PARALLEL:=1
+PKG_INSTALL:=1
+
include $(INCLUDE_DIR)/package.mk
define Package/libesmtp
DEPENDS:=+libpthread
endef
-define Build/Configure
- $(call Build/Configure/Default,--without-openssl)
-endef
-
-define Build/Compile
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
-endef
+CONFIGURE_ARGS += \
+ --without-openssl
define Build/InstallDev
- mkdir -p $(STAGING_DIR)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/libesmtp.h $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/auth-client.h $(STAGING_DIR)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/include/auth-plugin.h $(STAGING_DIR)/usr/include/
- mkdir -p $(STAGING_DIR)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libesmtp.{a,so*} $(STAGING_DIR)/usr/lib/
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/libesmtp-config $(1)/usr/bin/
+ $(SED) 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' $(1)/usr/bin/libesmtp-config
+
+ $(INSTALL_DIR) $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/*.h $(1)/usr/include/
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libesmtp.{a,so*} $(1)/usr/lib/
$(INSTALL_DIR) $(2)/bin
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/libesmtp-config $(2)/bin/
- $(SED) 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' $(2)/bin/libesmtp-config
-endef
-
-define Build/UninstallDev
- rm -rf \
- $(STAGING_DIR)/usr/include/libesmtp.h \
- $(STAGING_DIR)/usr/include/auth-client.h \
- $(STAGING_DIR)/usr/include/auth-plugin.h \
- $(STAGING_DIR)/usr/lib/libesmtp.{a,so*}
+ $(LN) ../../usr/bin/libesmtp-config $(2)/bin/
endef
define Package/libesmtp/install
- mkdir -p $(1)/usr/lib
+ $(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libesmtp.so.* $(1)/usr/lib/
endef
#
-# Copyright (C) 2006-2014 OpenWrt.org
+# Copyright (C) 2006-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=libmodbus
-PKG_VERSION:=3.0.6
+PKG_VERSION:=3.1.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://libmodbus.org/releases
-PKG_MD5SUM:=c80f88b6ca19cabc4ceffc195ca07771
+PKG_MD5SUM:=dd4262f87ed835c4d1e560f8321a222c
PKG_MAINTAINER:=Michael Heimpold <mhei@heimpold.de>
A Modbus library for Linux, Mac OS X, FreeBSD, QNX and Win32.
endef
+CONFIGURE_ARGS += --without-documentation
TARGET_CFLAGS += $(FPIC)
define Build/InstallDev
PKG_NAME:=libseccomp
PKG_VERSION:=2.2.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_USE_MIPS16:=0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_LIBTOOL_PATHS:=. lib
PKG_CHECK_FORMAT_SECURITY:=0
+PKG_CONFIG_DEPENDS:= \
+ CONFIG_KERNEL_SECCOMP
+
include $(INCLUDE_DIR)/package.mk
This package contains the seccomp library.
endef
-define Build/Configure
- $(call Build/Configure/Default)
-endef
-
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include $(1)/usr/lib/pkgconfig
$(CP) \
include $(TOPDIR)/rules.mk
PKG_NAME:=libtasn1
-PKG_VERSION:=4.2
+PKG_VERSION:=4.4
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=ftp://ftp.gnu.org/gnu/libtasn1
-PKG_MD5SUM:=414df906df421dee0a5cf7548788d153
+PKG_MD5SUM:=c26d76d1309dd339365c563076599912
#PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
include $(TOPDIR)/rules.mk
PKG_NAME:=libxerces-c
-PKG_VERSION:=3.1.1
+PKG_VERSION:=3.1.2
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=git://git.apache.org/xerces-c.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=Xerces-C_3_1_1
+PKG_SOURCE_VERSION:=Xerces-C_3_1_2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
PKG_LICENSE_FILES:=LICENSE
PKG_BUILD_PARALLEL:=1
-PKG_FIXUP:=libtool
+PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
include $(INCLUDE_DIR)/uclibc++.mk
+include $(INCLUDE_DIR)/nls.mk
include $(INCLUDE_DIR)/package.mk
CONFIGURE_ARGS += \
--enable-netaccessor-socket \
--enable-msgloader-inmemory
-TARGET_CFLAGS += \
- -I$(STAGING_DIR)/usr/lib/libiconv-full/include
-
-TARGET_CPPFLAGS += \
- -I$(STAGING_DIR)/usr/lib/libiconv-full/include
-
TARGET_LDFLAGS += \
- -L$(STAGING_DIR)/usr/lib/libiconv-full/lib \
-lm
define Package/libxerces-c
CATEGORY:=Libraries
TITLE:=Validating XML parser library for C++
URL:=http://xerces.apache.org/
- DEPENDS:=$(CXX_DEPENDS) +libc +libiconv +libpthread
+ DEPENDS:=$(CXX_DEPENDS) $(ICONV_DEPENDS) +libc +libpthread
endef
define Package/libxerces-c-samples
DEPENDS:=+libxerces-c
endef
-define Build/Configure
- (cd $(PKG_BUILD_DIR)/$(CONFIGURE_PATH); \
- ./reconf;)
- $(call Build/Configure/Default)
-endef
-
define Package/libxerces-c/description
Xerces-C++ is a validating XML parser written in a portable subset of
C++. Xerces-C++ makes it easy to give your application the ability
#
-# Copyright (C) 2006-2014 OpenWrt.org
+# Copyright (C) 2006-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
TITLE:=A Perl Compatible Regular Expression library
endef
+define Package/libpcre16
+ $(call Package/libpcre/default)
+ TITLE:=A Perl Compatible Regular Expression library (16bit support)
+endef
+
define Package/libpcrecpp
$(call Package/libpcre/default)
TITLE:=C++ wrapper for Perl Compatible Regular Expression library
CONFIGURE_ARGS += \
--enable-utf8 \
--enable-unicode-properties \
+ --enable-pcre16 \
ifneq ($(CONFIG_PACKAGE_libpcrecpp),)
CONFIGURE_ARGS+= --enable-cpp
$(CP) $(PKG_INSTALL_DIR)/usr/include/pcre*.h $(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcre*.{a,so*} $(1)/usr/lib//
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcre*.{a,so*} $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libpcre*.pc $(1)/usr/lib/pkgconfig/
define Package/libpcre/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcre{,posix}.so.* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcre.so $(1)/usr/lib/
+endef
+
+define Package/libpcre16/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcre16.so* $(1)/usr/lib/
endef
define Package/libpcrecpp/install
endef
$(eval $(call BuildPackage,libpcre))
+$(eval $(call BuildPackage,libpcre16))
$(eval $(call BuildPackage,libpcrecpp))
#
-# Copyright (C) 2008-2014 OpenWrt.org
+# Copyright (C) 2008-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PKG_NAME:=pthsem
PKG_VERSION:=2.0.8
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_MAINTAINER:=Othmar Truniger <github@truniger.ch>
PKG_LICENSE:=LGPL-2.1+
pthsem is an extend version, with support for semaphores added. It can be installed parallel to a normal pth.
endef
-MAKE_FLAGS += \
- OPTIM="$(TARGET_CFLAGS)" \
- CFLAGS="$(TARGET_CFLAGS)" \
- DESTDIR="$(PKG_INSTALL_DIR)"
-
define Build/InstallDev
- $(INSTALL_DIR) $(2)/bin
- $(INSTALL_BIN) \
- $(PKG_INSTALL_DIR)/usr/bin/pthsem-config \
- $(2)/bin/
- $(SED) \
- 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' \
- $(2)/bin/pthsem-config
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/pthsem-config $(1)/usr/bin/
+ $(SED) 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' $(1)/usr/bin/pthsem-config
$(INSTALL_DIR) $(1)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/*.h \
- $(1)/usr/include/
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/*.h $(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpthsem.{a,la,so*} \
- $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpthsem.{a,la,so*} $(1)/usr/lib/
+ $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/pthsem.pc $(1)/usr/lib/pkgconfig/
+ $(INSTALL_DIR) $(2)/bin
+ $(LN) ../../usr/bin/pthsem-config $(2)/bin/
endef
define Package/pthsem/install
include $(TOPDIR)/rules.mk
PKG_NAME:=sqlite
-PKG_VERSION:=3080801
+PKG_VERSION:=3080803
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-autoconf-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.sqlite.org/2015/
-PKG_MD5SUM:=a6381941ffe8817ba19669ec0c0ede6f
+PKG_MD5SUM:=51272e875879ee893e51070b07c33888
PKG_LICENSE:=PUBLICDOMAIN
PKG_LICENSE_FILES:=
Bogofilter is a fast Bayesian spam filter
endef
-CONFIGURE_ARGS += --disable-unicode
+CONFIGURE_ARGS += \
+ --disable-unicode \
+ --with-libdb-prefix=$(STAGING_DIR) \
+ --with-included-gsl
define Package/bogofilter/install
$(INSTALL_DIR) $(1)/etc/ \
PKG_NAME:=mjpg-streamer
PKG_REV:=182
PKG_VERSION:=r$(PKG_REV)
-PKG_RELEASE:=5
+PKG_RELEASE:=6
PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).1.tar.bz2
--- /dev/null
+From 19202b54698b343a0207d7e213448e32b8e58fc3 Mon Sep 17 00:00:00 2001
+From: Olliver Schinagl <o.schinagl@ultimaker.com>
+Date: Wed, 29 Oct 2014 09:34:41 +0100
+Subject: [PATCH 1/7] Buffer the bytesused variable from struct v4l2_buffer
+
+Starting with kernel versions 3.16, (DE)Queing of buffers has been fixed
+after it was leaking data for ages. in the struct v4l2_buffer is the
+bytesused element which indicates the size of the buffer. This however
+gets cleared whenever the buffer gets requeued and is thus no longer
+valid.
+
+This patch copies the bytesused variable so it is available until the
+next frame captured again.
+
+Signed-off-by: Olliver Schinagl <o.schinagl@ultimaker.com>
+---
+ plugins/input_uvc/input_uvc.c | 6 +++---
+ plugins/input_uvc/v4l2uvc.c | 2 ++
+ plugins/input_uvc/v4l2uvc.h | 1 +
+ 3 files changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/plugins/input_uvc/input_uvc.c b/plugins/input_uvc/input_uvc.c
+index e6c74fd..64f66cb 100644
+--- a/plugins/input_uvc/input_uvc.c
++++ b/plugins/input_uvc/input_uvc.c
+@@ -482,7 +482,7 @@ void *cam_thread(void *arg)
+ exit(EXIT_FAILURE);
+ }
+
+- //DBG("received frame of size: %d from plugin: %d\n", pcontext->videoIn->buf.bytesused, pcontext->id);
++ //DBG("received frame of size: %d from plugin: %d\n", pcontext->videoIn->tmpbytesused, pcontext->id);
+
+ /*
+ * Workaround for broken, corrupted frames:
+@@ -491,7 +491,7 @@ void *cam_thread(void *arg)
+ * For example a VGA (640x480) webcam picture is normally >= 8kByte large,
+ * corrupted frames are smaller.
+ */
+- if(pcontext->videoIn->buf.bytesused < minimum_size) {
++ if(pcontext->videoIn->tmpbytesused < minimum_size) {
+ DBG("dropping too small frame, assuming it as broken\n");
+ continue;
+ }
+@@ -529,7 +529,7 @@ void *cam_thread(void *arg)
+ } else {
+ #endif
+ //DBG("copying frame from input: %d\n", (int)pcontext->id);
+- pglobal->in[pcontext->id].size = memcpy_picture(pglobal->in[pcontext->id].buf, pcontext->videoIn->tmpbuffer, pcontext->videoIn->buf.bytesused);
++ pglobal->in[pcontext->id].size = memcpy_picture(pglobal->in[pcontext->id].buf, pcontext->videoIn->tmpbuffer, pcontext->videoIn->tmpbytesused);
+ #ifndef NO_LIBJPEG
+ }
+ #endif
+diff --git a/plugins/input_uvc/v4l2uvc.c b/plugins/input_uvc/v4l2uvc.c
+index c5a5aa4..d11510c 100644
+--- a/plugins/input_uvc/v4l2uvc.c
++++ b/plugins/input_uvc/v4l2uvc.c
+@@ -532,6 +532,7 @@ int uvcGrab(struct vdIn *vd)
+ */
+
+ memcpy(vd->tmpbuffer, vd->mem[vd->buf.index], vd->buf.bytesused);
++ vd->tmpbytesused = vd->buf.bytesused;
+
+ if(debug)
+ fprintf(stderr, "bytes in used %d \n", vd->buf.bytesused);
+@@ -570,6 +571,7 @@ int close_v4l2(struct vdIn *vd)
+ if(vd->tmpbuffer)
+ free(vd->tmpbuffer);
+ vd->tmpbuffer = NULL;
++ vd->tmpbytesused = 0;
+ free(vd->framebuffer);
+ vd->framebuffer = NULL;
+ free(vd->videodevice);
+diff --git a/plugins/input_uvc/v4l2uvc.h b/plugins/input_uvc/v4l2uvc.h
+index 022c57e..2c7c8ba 100644
+--- a/plugins/input_uvc/v4l2uvc.h
++++ b/plugins/input_uvc/v4l2uvc.h
+@@ -83,6 +83,7 @@ struct vdIn {
+ struct v4l2_requestbuffers rb;
+ void *mem[NB_BUFFER];
+ unsigned char *tmpbuffer;
++ int tmpbytesused;
+ unsigned char *framebuffer;
+ streaming_state streamingState;
+ int grabmethod;
+--
+1.9.1
+
--- /dev/null
+From 11b28b36a8711b53658e8bbc50435595522f91ba Mon Sep 17 00:00:00 2001
+From: Olliver Schinagl <o.schinagl@ultimaker.com>
+Date: Wed, 29 Oct 2014 11:21:16 +0100
+Subject: [PATCH 2/7] Stop leaking data via struct v4l2_buffer
+
+Before the 3.16 kernel, the v4l2_buffer was leaking data and violating
+its own spec. Since 3.16 this has been corrected and after calling the
+QBUF ioctl, the struct gets cleaned up.
+
+Right now, input_uvc assumes the buffer is valid at all times. This no
+longer being true, this patch removes the v4l2_buffer from the vdIn
+struct. Certain values are still needed outside of this buffer however,
+the length buffer in the buffer array 'mem' and the timestamp. These are
+now stored in the vdIn struct.
+
+All of this is still somewhat hackish, as a) the processing of the image
+should really be done inside the uvcGrab function between the queuing
+and dequeing of the buffers (or separate that into 3 functions, deq, q
+and process and call them from input_uvc). b) we are still copying the
+image using memcpy, which is something we don't really want and defeats
+the purpose of using a mmap in the first place. Changing this however
+requires some heavier re-architecting and in the end, may still not be avoided.
+
+More information about this bug and change can be found on the
+linux-media mailing list[0] with the title uvcvideo fails on 3.16 and
+3.17 kernels.
+
+[0] http://www.spinics.net/lists/linux-media/msg81515.html
+
+Signed-off-by: Olliver Schinagl <o.schinagl@ultimaker.com>
+---
+ plugins/input_uvc/input_uvc.c | 6 ++--
+ plugins/input_uvc/v4l2uvc.c | 64 +++++++++++++++++++++++--------------------
+ plugins/input_uvc/v4l2uvc.h | 4 ++-
+ 3 files changed, 41 insertions(+), 33 deletions(-)
+
+diff --git a/plugins/input_uvc/input_uvc.c b/plugins/input_uvc/input_uvc.c
+index 64f66cb..64ef56c 100644
+--- a/plugins/input_uvc/input_uvc.c
++++ b/plugins/input_uvc/input_uvc.c
+@@ -500,8 +500,8 @@ void *cam_thread(void *arg)
+ if (pcontext->videoIn->soft_framedrop == 1) {
+ unsigned long last = pglobal->in[pcontext->id].timestamp.tv_sec * 1000 +
+ (pglobal->in[pcontext->id].timestamp.tv_usec/1000); // convert to ms
+- unsigned long current = pcontext->videoIn->buf.timestamp.tv_sec * 1000 +
+- pcontext->videoIn->buf.timestamp.tv_usec/1000; // convert to ms
++ unsigned long current = pcontext->videoIn->tmptimestamp.tv_sec * 1000 +
++ pcontext->videoIn->tmptimestamp.tv_usec/1000; // convert to ms
+
+ // if the requested time did not esplashed skip the frame
+ if ((current - last) < pcontext->videoIn->frame_period_time) {
+@@ -543,7 +543,7 @@ void *cam_thread(void *arg)
+ #endif
+
+ /* copy this frame's timestamp to user space */
+- pglobal->in[pcontext->id].timestamp = pcontext->videoIn->buf.timestamp;
++ pglobal->in[pcontext->id].timestamp = pcontext->videoIn->tmptimestamp;
+
+ /* signal fresh_frame */
+ pthread_cond_broadcast(&pglobal->in[pcontext->id].db_update);
+diff --git a/plugins/input_uvc/v4l2uvc.c b/plugins/input_uvc/v4l2uvc.c
+index d11510c..7ec5eec 100644
+--- a/plugins/input_uvc/v4l2uvc.c
++++ b/plugins/input_uvc/v4l2uvc.c
+@@ -217,6 +217,9 @@ static int init_v4l2(struct vdIn *vd)
+ {
+ int i;
+ int ret = 0;
++ struct v4l2_buffer buf;
++
++
+ if((vd->fd = OPEN_VIDEO(vd->videodevice, O_RDWR)) == -1) {
+ perror("ERROR opening V4L interface");
+ DBG("errno: %d", errno);
+@@ -375,26 +378,27 @@ static int init_v4l2(struct vdIn *vd)
+ * map the buffers
+ */
+ for(i = 0; i < NB_BUFFER; i++) {
+- memset(&vd->buf, 0, sizeof(struct v4l2_buffer));
+- vd->buf.index = i;
+- vd->buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+- vd->buf.memory = V4L2_MEMORY_MMAP;
+- ret = xioctl(vd->fd, VIDIOC_QUERYBUF, &vd->buf);
++ memset(&buf, 0, sizeof(struct v4l2_buffer));
++ buf.index = i;
++ buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
++ buf.memory = V4L2_MEMORY_MMAP;
++ ret = xioctl(vd->fd, VIDIOC_QUERYBUF, &buf);
+ if(ret < 0) {
+ perror("Unable to query buffer");
+ goto fatal;
+ }
+
+ if(debug)
+- fprintf(stderr, "length: %u offset: %u\n", vd->buf.length, vd->buf.m.offset);
++ fprintf(stderr, "length: %u offset: %u\n", buf.length, buf.m.offset);
+
+ vd->mem[i] = mmap(0 /* start anywhere */ ,
+- vd->buf.length, PROT_READ | PROT_WRITE, MAP_SHARED, vd->fd,
+- vd->buf.m.offset);
++ buf.length, PROT_READ | PROT_WRITE, MAP_SHARED, vd->fd,
++ buf.m.offset);
+ if(vd->mem[i] == MAP_FAILED) {
+ perror("Unable to map buffer");
+ goto fatal;
+ }
++ vd->memlength[i] = buf.length;
+ if(debug)
+ fprintf(stderr, "Buffer mapped at address %p.\n", vd->mem[i]);
+ }
+@@ -403,11 +407,11 @@ static int init_v4l2(struct vdIn *vd)
+ * Queue the buffers.
+ */
+ for(i = 0; i < NB_BUFFER; ++i) {
+- memset(&vd->buf, 0, sizeof(struct v4l2_buffer));
+- vd->buf.index = i;
+- vd->buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+- vd->buf.memory = V4L2_MEMORY_MMAP;
+- ret = xioctl(vd->fd, VIDIOC_QBUF, &vd->buf);
++ memset(&buf, 0, sizeof(struct v4l2_buffer));
++ buf.index = i;
++ buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
++ buf.memory = V4L2_MEMORY_MMAP;
++ ret = xioctl(vd->fd, VIDIOC_QBUF, &buf);
+ if(ret < 0) {
+ perror("Unable to queue buffer");
+ goto fatal;;
+@@ -499,17 +503,18 @@ int memcpy_picture(unsigned char *out, unsigned char *buf, int size)
+ int uvcGrab(struct vdIn *vd)
+ {
+ #define HEADERFRAME1 0xaf
++ struct v4l2_buffer buf;
+ int ret;
+
+ if(vd->streamingState == STREAMING_OFF) {
+ if(video_enable(vd))
+ goto err;
+ }
+- memset(&vd->buf, 0, sizeof(struct v4l2_buffer));
+- vd->buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+- vd->buf.memory = V4L2_MEMORY_MMAP;
++ memset(&buf, 0, sizeof(struct v4l2_buffer));
++ buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
++ buf.memory = V4L2_MEMORY_MMAP;
+
+- ret = xioctl(vd->fd, VIDIOC_DQBUF, &vd->buf);
++ ret = xioctl(vd->fd, VIDIOC_DQBUF, &buf);
+ if(ret < 0) {
+ perror("Unable to dequeue buffer");
+ goto err;
+@@ -517,33 +522,34 @@ int uvcGrab(struct vdIn *vd)
+
+ switch(vd->formatIn) {
+ case V4L2_PIX_FMT_MJPEG:
+- if(vd->buf.bytesused <= HEADERFRAME1) {
++ if(buf.bytesused <= HEADERFRAME1) {
+ /* Prevent crash
+ * on empty image */
+ fprintf(stderr, "Ignoring empty buffer ...\n");
+ return 0;
+ }
+
+- /* memcpy(vd->tmpbuffer, vd->mem[vd->buf.index], vd->buf.bytesused);
++ /* memcpy(vd->tmpbuffer, vd->mem[buf.index], buf.bytesused);
+
+- memcpy (vd->tmpbuffer, vd->mem[vd->buf.index], HEADERFRAME1);
++ memcpy (vd->tmpbuffer, vd->mem[buf.index], HEADERFRAME1);
+ memcpy (vd->tmpbuffer + HEADERFRAME1, dht_data, sizeof(dht_data));
+- memcpy (vd->tmpbuffer + HEADERFRAME1 + sizeof(dht_data), vd->mem[vd->buf.index] + HEADERFRAME1, (vd->buf.bytesused - HEADERFRAME1));
++ memcpy (vd->tmpbuffer + HEADERFRAME1 + sizeof(dht_data), vd->mem[buf.index] + HEADERFRAME1, (buf.bytesused - HEADERFRAME1));
+ */
+
+- memcpy(vd->tmpbuffer, vd->mem[vd->buf.index], vd->buf.bytesused);
+- vd->tmpbytesused = vd->buf.bytesused;
++ memcpy(vd->tmpbuffer, vd->mem[buf.index], buf.bytesused);
++ vd->tmpbytesused = buf.bytesused;
++ vd->tmptimestamp = buf.timestamp;
+
+ if(debug)
+- fprintf(stderr, "bytes in used %d \n", vd->buf.bytesused);
++ fprintf(stderr, "bytes in used %d \n", buf.bytesused);
+ break;
+ case V4L2_PIX_FMT_RGB565:
+ case V4L2_PIX_FMT_YUYV:
+ case V4L2_PIX_FMT_RGB24:
+- if(vd->buf.bytesused > vd->framesizeIn)
+- memcpy(vd->framebuffer, vd->mem[vd->buf.index], (size_t) vd->framesizeIn);
++ if(buf.bytesused > vd->framesizeIn)
++ memcpy(vd->framebuffer, vd->mem[buf.index], (size_t) vd->framesizeIn);
+ else
+- memcpy(vd->framebuffer, vd->mem[vd->buf.index], (size_t) vd->buf.bytesused);
++ memcpy(vd->framebuffer, vd->mem[buf.index], (size_t) buf.bytesused);
+ break;
+
+ default:
+@@ -551,7 +557,7 @@ int uvcGrab(struct vdIn *vd)
+ break;
+ }
+
+- ret = xioctl(vd->fd, VIDIOC_QBUF, &vd->buf);
++ ret = xioctl(vd->fd, VIDIOC_QBUF, &buf);
+ if(ret < 0) {
+ perror("Unable to requeue buffer");
+ goto err;
+@@ -947,7 +953,7 @@ int setResolution(struct vdIn *vd, int width, int height)
+ DBG("Unmap buffers\n");
+ int i;
+ for(i = 0; i < NB_BUFFER; i++)
+- munmap(vd->mem[i], vd->buf.length);
++ munmap(vd->mem[i], vd->memlength[i]);
+
+ if(CLOSE_VIDEO(vd->fd) == 0) {
+ DBG("Device closed successfully\n");
+diff --git a/plugins/input_uvc/v4l2uvc.h b/plugins/input_uvc/v4l2uvc.h
+index 2c7c8ba..e625957 100644
+--- a/plugins/input_uvc/v4l2uvc.h
++++ b/plugins/input_uvc/v4l2uvc.h
+@@ -35,6 +35,7 @@
+ #include <sys/ioctl.h>
+ #include <sys/mman.h>
+ #include <sys/select.h>
++#include <sys/time.h>
+
+ #include <linux/types.h> /* for videodev2.h */
+ #include <linux/videodev2.h>
+@@ -79,11 +80,12 @@ struct vdIn {
+ char *pictName;
+ struct v4l2_capability cap;
+ struct v4l2_format fmt;
+- struct v4l2_buffer buf;
+ struct v4l2_requestbuffers rb;
+ void *mem[NB_BUFFER];
++ int memlength[NB_BUFFER];
+ unsigned char *tmpbuffer;
+ int tmpbytesused;
++ struct timeval tmptimestamp;
+ unsigned char *framebuffer;
+ streaming_state streamingState;
+ int grabmethod;
+--
+1.9.1
+
--- /dev/null
+Binary files a/ipkg-ar71xx/mjpg-streamer/usr/lib/input_uvc.so and b/ipkg-ar71xx/mjpg-streamer/usr/lib/input_uvc.so differ
+diff -ur a/plugins/input_uvc/input_uvc.c b/plugins/input_uvc/input_uvc.c
+--- a/plugins/input_uvc/input_uvc.c 2015-03-02 09:14:05.000000000 +0200
++++ b/plugins/input_uvc/input_uvc.c 2015-03-02 09:18:22.000000000 +0200
+@@ -311,6 +311,10 @@
+ }
+ memset(cams[id].videoIn, 0, sizeof(struct vdIn));
+
++ /* Non-MJPEG formats seem to fail with unlimited FPS */
++ if (format != V4L2_PIX_FMT_MJPEG && fps == -1)
++ fps = 15;
++
+ /* display the parsed values */
+ IPRINT("Using V4L2 device.: %s\n", dev);
+ IPRINT("Desired Resolution: %i x %i\n", width, height);
+diff -ur a/plugins/input_uvc/jpeg_utils.c b/plugins/input_uvc/jpeg_utils.c
+--- a/plugins/input_uvc/jpeg_utils.c 2015-03-02 09:17:02.000000000 +0300
++++ b/plugins/input_uvc/jpeg_utils.c 2015-03-02 09:25:18.000000000 +0200
+@@ -198,7 +198,7 @@
+ }
+
+ row_pointer = (JSAMPROW*)line_buffer;
+- jpeg_write_scanlines(&cinfo, row_pointer, 1);
++ jpeg_write_scanlines(&cinfo, &row_pointer, 1);
+ }
+ } else if (vd->formatIn == V4L2_PIX_FMT_RGB565) {
+ while(cinfo.next_scanline < vd->height) {
+@@ -220,7 +220,7 @@
+ }
+
+ row_pointer = (JSAMPROW*)line_buffer;
+- jpeg_write_scanlines(&cinfo, row_pointer, 1);
++ jpeg_write_scanlines(&cinfo, &row_pointer, 1);
+ }
+ } else if (vd->formatIn == V4L2_PIX_FMT_RGB24) {
+ jpeg_write_scanlines(&cinfo, (JSAMPROW*)vd->framebuffer, vd->height);
+diff -ur a/plugins/input_uvc/v4l2uvc.c b/plugins/input_uvc/v4l2uvc.c
+--- a/plugins/input_uvc/v4l2uvc.c 2015-03-02 09:14:05.000000000 +0200
++++ b/plugins/input_uvc/v4l2uvc.c 2015-03-02 09:22:09.000000000 +0200
+@@ -338,11 +338,15 @@
+ vd->frame_period_time = 1000/vd->fps; // calcualate frame period time in ms
+ IPRINT("Frame period time ......: %ld ms\n", vd->frame_period_time);
+
+- // set FPS to maximum in order to minimize the lagging
+ memset(setfps, 0, sizeof(struct v4l2_streamparm));
+ setfps->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ setfps->parm.capture.timeperframe.numerator = 1;
+- setfps->parm.capture.timeperframe.denominator = 255;
++ if (vd->formatIn == V4L2_PIX_FMT_MJPEG)
++ // set FPS to maximum in order to minimize the lagging
++ setfps->parm.capture.timeperframe.denominator = 255;
++ else
++ setfps->parm.capture.timeperframe.denominator = vd->fps;
++
+ ret = xioctl(vd->fd, VIDIOC_S_PARM, setfps);
+ if (ret) {
+ perror("Unable to set the FPS\n");
+
--- /dev/null
+--- a/configure.in
++++ b/configure.in
+@@ -93,26 +93,11 @@ esac
+ #
+ AC_CONFIG_FILES([make/rules make/includes])
+
+-AC_PATH_PROG(AR, ar)
+-ARFLAGS="cruv"
+-AC_SUBST(AR)
+-AC_SUBST(ARFLAGS)
+-
+ # The POSIX ln(1) program. Non-POSIX systems may substitute
+ # "copy" or something.
+ LN=ln
+ AC_SUBST(LN)
+
+-case "$AR" in
+- "")
+- AC_MSG_ERROR([
+-ar program not found. Please fix your PATH to include the directory in
+-which ar resides, or set AR in the environment with the full path to ar.
+-])
+-
+- ;;
+-esac
+-
+ #
+ # Etags.
+ #
#
-# Copyright (C) 2014 OpenWrt.org
+# Copyright (C) 2014-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:=cshark
-PKG_VERSION:=2014-07-02
+PKG_VERSION:=2015-03-13
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/cloudshark/cshark.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=ec638311b0b8ef74baf0be06dcf03a641e3308a2
+PKG_SOURCE_VERSION:=ab2ae2fbd72b6cbd57c95e3192edc3c1f475412b
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_BUILD_PARALLEL:=1
include $(TOPDIR)/rules.mk
PKG_NAME:=dmapd
-PKG_VERSION:=0.0.70
+PKG_VERSION:=0.0.71
PKG_RELEASE:=1
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.flyn.org/projects/dmapd
-PKG_MD5SUM:=f503bf95f79b5c1f9418cccf26203952
+PKG_MD5SUM:=cee310509e39db782110267edac4fe9a
PKG_FIXUP:=autoreconf
PKG_INSTALL:=2
#
-# Copyright (C) 2009-2014 OpenWrt.org
+# Copyright (C) 2009-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=git
-PKG_VERSION:=2.3.0
+PKG_VERSION:=2.3.3
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/software/scm/git/
-PKG_MD5SUM:=e5880760d1f43f4f49b3bf94b9046eee
+PKG_MD5SUM:=14a885da3b432455b606cc1a25a6c681
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
+PKG_FIXUP:=autoreconf
include $(INCLUDE_DIR)/package.mk
-define Package/git
+define Package/git/Default
SECTION:=net
CATEGORY:=Network
SUBMENU:=Version Control Systems
MAINTAINER:=Peter Wagner <tripolar@gmx.at>
endef
+define Package/git
+$(call Package/git/Default)
+ DEPENDS:=+libopenssl +libpthread +librt
+ TITLE:=The fast version control system
+endef
+
define Package/git/description
Git is a free & open source, distributed version control system
designed to handle everything from small to very large projects
with speed and efficiency.
endef
+define Package/git-http
+$(call Package/git/Default)
+ DEPENDS:=git +libcurl +ca-certificates
+ TITLE:=Git HTTP commands
+endef
+
+define Package/git-http/description
+$(call Package/git/description)
+
+ This package allows git push/fetch over http(s) and ftp(s)
+endef
+
MAKE_FLAGS := \
CC="$(TARGET_CC)" \
CFLAGS="$(TARGET_CFLAGS)" \
CPPFLAGS="$(TARGET_CPPFLAGS)" \
LDFLAGS="$(TARGET_LDFLAGS)" \
- NO_CURL="YesPlease" \
NO_EXPAT="YesPlease" \
NO_MKSTEMPS="YesPlease" \
NO_GETTEXT="YesPlease" \
NO_NSEC="YesPlease" \
NO_PERL="YesPlease" \
NO_PYTHON="YesPlease" \
- NO_TCLTK="YesPlease"
+ NO_TCLTK="YesPlease" \
+ NO_INSTALL_HARDLINKS="yes" \
+
+CONFIGURE_ARGS += \
+ --without-iconv \
define Build/Configure
$(MAKE) -C $(PKG_BUILD_DIR) \
configure
- ( cd $(PKG_BUILD_DIR); \
- ./configure --prefix=/usr \
- );
+ $(call Build/Configure/Default,)
endef
define Package/git/install
- $(INSTALL_DIR) $(1)
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/git $(1)/usr/bin
$(RM) $(PKG_INSTALL_DIR)/usr/bin/git-cvsserver
- $(CP) $(PKG_INSTALL_DIR)/* $(1)/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/git-* $(1)/usr/bin
+ $(INSTALL_DIR) $(1)/usr/lib/git-core
+ ( cd $(PKG_INSTALL_DIR); $(TAR) \
+ --exclude=usr/lib/git-core/git-http-backend \
+ --exclude=usr/lib/git-core/git-http-fetch \
+ --exclude=usr/lib/git-core/git-remote-ftp \
+ --exclude=usr/lib/git-core/git-remote-ftps \
+ --exclude=usr/lib/git-core/git-remote-http \
+ --exclude=usr/lib/git-core/git-remote-https \
+ -cf - \
+ usr/lib/git-core \
+ ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Package/git-http/install
+ $(INSTALL_DIR) $(1)/usr/lib/git-core
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/git-core/git-http-backend $(1)/usr/lib/git-core
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/git-core/git-http-fetch $(1)/usr/lib/git-core
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/git-core/git-remote-ftp $(1)/usr/lib/git-core
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/git-core/git-remote-ftps $(1)/usr/lib/git-core
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/git-core/git-remote-http $(1)/usr/lib/git-core
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/git-core/git-remote-https $(1)/usr/lib/git-core
endef
$(eval $(call BuildPackage,git))
+$(eval $(call BuildPackage,git-http))
-PROGRAM_OBJS += credential-store.o
-PROGRAM_OBJS += daemon.o
-PROGRAM_OBJS += fast-import.o
--PROGRAM_OBJS += http-backend.o
+ PROGRAM_OBJS += http-backend.o
-PROGRAM_OBJS += imap-send.o
-PROGRAM_OBJS += sh-i18n--envsubst.o
-PROGRAM_OBJS += shell.o
-PROGRAM_OBJS += show-index.o
-PROGRAM_OBJS += upload-pack.o
-PROGRAM_OBJS += remote-testsvn.o
-+PROGRAM_OBJS =
# Binary suffix, set to .exe for Windows builds
X =
-@@ -896,6 +887,12 @@ BUILTIN_OBJS += builtin/verify-commit.o
+@@ -896,6 +887,11 @@ BUILTIN_OBJS += builtin/verify-commit.o
BUILTIN_OBJS += builtin/verify-pack.o
BUILTIN_OBJS += builtin/verify-tag.o
BUILTIN_OBJS += builtin/write-tree.o
+BUILTIN_OBJS += builtin/daemon.o
+BUILTIN_OBJS += builtin/fast-import.o
-+BUILTIN_OBJS += builtin/http-backend.o
+BUILTIN_OBJS += builtin/imap-send.o
+BUILTIN_OBJS += builtin/shell.o
+BUILTIN_OBJS += builtin/upload-pack.o
GITLIBS = $(LIB_FILE) $(XDIFF_LIB)
EXTLIBS =
-@@ -1070,7 +1067,7 @@ endif
+@@ -1070,7 +1066,7 @@ endif
EXTLIBS += -lz
ifndef NO_OPENSSL
ifdef OPENSSLDIR
BASIC_CFLAGS += -I$(OPENSSLDIR)/include
OPENSSL_LINK = -L$(OPENSSLDIR)/$(lib) $(CC_LD_DYNPATH)$(OPENSSLDIR)/$(lib)
-@@ -1933,10 +1930,6 @@ endif
+@@ -1933,10 +1929,6 @@ endif
git-%$X: %.o GIT-LDFLAGS $(GITLIBS)
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)
git-http-fetch$X: http.o http-walker.o http-fetch.o GIT-LDFLAGS $(GITLIBS)
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
$(LIBS) $(CURL_LIBCURL)
-@@ -2254,24 +2247,22 @@ endif
+@@ -2254,10 +2246,11 @@ endif
bindir=$$(cd '$(DESTDIR_SQ)$(bindir_SQ)' && pwd) && \
execdir=$$(cd '$(DESTDIR_SQ)$(gitexec_instdir_SQ)' && pwd) && \
{ test "$$bindir/" = "$$execdir/" || \
+ for p in $(filter $(install_bindir_programs),$(ALL_PROGRAMS)); do \
$(RM) "$$execdir/$$p" && \
test -z "$(NO_INSTALL_HARDLINKS)$(NO_CROSS_DIRECTORY_HARDLINKS)" && \
-- ln "$$bindir/$$p" "$$execdir/$$p" 2>/dev/null || \
+ ln "$$bindir/$$p" "$$execdir/$$p" 2>/dev/null || \
+ ln -s git "$$execdir/$$p" 2>/dev/null || \
cp "$$bindir/$$p" "$$execdir/$$p" || exit; \
done; \
} && \
- for p in $(filter $(install_bindir_programs),$(BUILT_INS)); do \
- $(RM) "$$bindir/$$p" && \
- test -z "$(NO_INSTALL_HARDLINKS)" && \
-- ln "$$bindir/git$X" "$$bindir/$$p" 2>/dev/null || \
- ln -s "git$X" "$$bindir/$$p" 2>/dev/null || \
- cp "$$bindir/git$X" "$$bindir/$$p" || exit; \
- done && \
- for p in $(BUILT_INS); do \
- $(RM) "$$execdir/$$p" && \
- test -z "$(NO_INSTALL_HARDLINKS)" && \
-- ln "$$execdir/git$X" "$$execdir/$$p" 2>/dev/null || \
- ln -s "git$X" "$$execdir/$$p" 2>/dev/null || \
- cp "$$execdir/git$X" "$$execdir/$$p" || exit; \
- done && \
--- a/builtin.h
+++ b/builtin.h
-@@ -138,5 +138,11 @@ extern int cmd_verify_pack(int argc, con
+@@ -138,5 +138,10 @@ extern int cmd_verify_pack(int argc, con
extern int cmd_show_ref(int argc, const char **argv, const char *prefix);
extern int cmd_pack_refs(int argc, const char **argv, const char *prefix);
extern int cmd_replace(int argc, const char **argv, const char *prefix);
+extern int cmd_daemon(int argc, char **argv, const char *prefix);
+extern int cmd_fast_import(int argc, char **argv, const char *prefix);
-+extern int cmd_http_backend(int argc, char **argv, const char *prefix);
+extern int cmd_imap_send(int argc, char **argv, const char *prefix);
+extern int cmd_shell(int argc, char **argv, const char *prefix);
+extern int cmd_upload_pack(int argc, char **argv, const char *prefix);
@@ -0,0 +1 @@
+#include "../fast-import.c"
--- /dev/null
-+++ b/builtin/http-backend.c
-@@ -0,0 +1 @@
-+#include "../http-backend.c"
---- /dev/null
+++ b/builtin/imap-send.c
@@ -0,0 +1 @@
+#include "../imap-send.c"
+#include "../upload-pack.c"
--- a/daemon.c
+++ b/daemon.c
-@@ -1096,7 +1096,7 @@ static int serve(struct string_list *lis
+@@ -1193,7 +1193,7 @@ static int serve(struct string_list *lis
return service_loop(&socklist);
}
{
int listen_port = 0;
struct string_list listen_addr = STRING_LIST_INIT_NODUP;
-@@ -1292,12 +1292,13 @@ int main(int argc, char **argv)
+@@ -1389,12 +1389,13 @@ int main(int argc, char **argv)
store_pid(pid_file);
/* prepare argv for serving-processes */
}
--- a/fast-import.c
+++ b/fast-import.c
-@@ -3350,7 +3350,7 @@ static void parse_argv(void)
+@@ -3354,7 +3354,7 @@ static void parse_argv(void)
read_marks();
}
{ "describe", cmd_describe, RUN_SETUP },
{ "diff", cmd_diff },
{ "diff-files", cmd_diff_files, RUN_SETUP | NEED_WORK_TREE },
-@@ -411,6 +412,8 @@ static struct cmd_struct commands[] = {
+@@ -411,6 +412,7 @@ static struct cmd_struct commands[] = {
{ "grep", cmd_grep, RUN_SETUP_GENTLY },
{ "hash-object", cmd_hash_object },
{ "help", cmd_help },
-+ { "http-backend", cmd_http_backend },
+ { "imap-send", cmd_imap_send },
{ "index-pack", cmd_index_pack, RUN_SETUP_GENTLY },
{ "init", cmd_init_db, NO_SETUP },
{ "init-db", cmd_init_db, NO_SETUP },
-@@ -459,6 +462,7 @@ static struct cmd_struct commands[] = {
+@@ -459,6 +461,7 @@ static struct cmd_struct commands[] = {
{ "revert", cmd_revert, RUN_SETUP | NEED_WORK_TREE },
{ "rm", cmd_rm, RUN_SETUP },
{ "send-pack", cmd_send_pack, RUN_SETUP },
{ "shortlog", cmd_shortlog, RUN_SETUP_GENTLY | USE_PAGER },
{ "show", cmd_show, RUN_SETUP },
{ "show-branch", cmd_show_branch, RUN_SETUP },
-@@ -475,6 +479,7 @@ static struct cmd_struct commands[] = {
+@@ -475,6 +478,7 @@ static struct cmd_struct commands[] = {
{ "update-server-info", cmd_update_server_info, RUN_SETUP },
{ "upload-archive", cmd_upload_archive },
{ "upload-archive--writer", cmd_upload_archive_writer },
{ "var", cmd_var, RUN_SETUP_GENTLY },
{ "verify-commit", cmd_verify_commit, RUN_SETUP },
{ "verify-pack", cmd_verify_pack },
---- a/http-backend.c
-+++ b/http-backend.c
-@@ -557,7 +557,7 @@ static struct service_cmd {
- {"POST", "/git-receive-pack$", service_rpc}
- };
-
--int main(int argc, char **argv)
-+int cmd_http_backend(int argc, char **argv, const char *prefix)
- {
- char *method = getenv("REQUEST_METHOD");
- char *dir;
--- a/imap-send.c
+++ b/imap-send.c
@@ -1484,7 +1484,7 @@ static int curl_append_msgs_to_imap(stru
--- /dev/null
+--- a/configure.ac
++++ b/configure.ac
+@@ -844,7 +844,8 @@ AC_RUN_IFELSE(
+ FILE *f = fopen(".", "r");
+ return f && fread(&c, 1, 1, f)]])],
+ [ac_cv_fread_reads_directories=no],
+- [ac_cv_fread_reads_directories=yes])
++ [ac_cv_fread_reads_directories=yes],
++ [ac_cv_fread_reads_directories=no])
+ ])
+ if test $ac_cv_fread_reads_directories = yes; then
+ FREAD_READS_DIRECTORIES=UnfortunatelyYes
+@@ -878,7 +879,8 @@ AC_RUN_IFELSE(
+ if (snprintf(buf, 3, "%s", "12345") != 5
+ || strcmp(buf, "12")) return 1]])],
+ [ac_cv_snprintf_returns_bogus=no],
+- [ac_cv_snprintf_returns_bogus=yes])
++ [ac_cv_snprintf_returns_bogus=yes],
++ [ac_cv_snprintf_returns_bogus=no])
+ ])
+ if test $ac_cv_snprintf_returns_bogus = yes; then
+ SNPRINTF_RETURNS_BOGUS=UnfortunatelyYes
+@@ -901,7 +903,8 @@ yippeeyeswehaveit
+ #endif
+ ]),
+ [ac_cv_sane_mode_bits=yes],
+- [ac_cv_sane_mode_bits=no])
++ [ac_cv_sane_mode_bits=no],
++ [ac_cv_sane_mode_bits=yes])
+ ])
+ if test $ac_cv_sane_mode_bits = yes; then
+ NEEDS_MODE_TRANSLATION=
--- /dev/null
+--- a/Makefile
++++ b/Makefile
+@@ -1039,7 +1039,7 @@ else
+ endif
+ curl_check := $(shell (echo 072200; curl-config --vernum | sed -e '/^70[BC]/s/^/0/') 2>/dev/null | sort -r | sed -ne 2p)
+ ifeq "$(curl_check)" "072200"
+- USE_CURL_FOR_IMAP_SEND = YesPlease
++# USE_CURL_FOR_IMAP_SEND = YesPlease
+ endif
+ ifdef USE_CURL_FOR_IMAP_SEND
+ BASIC_CFLAGS += -DUSE_CURL_FOR_IMAP_SEND
include $(TOPDIR)/rules.mk
PKG_NAME:=knxd
-PKG_REV:=a63bc660d305e26ce3ed038607d387758fad8413
-PKG_VERSION:=2015-03-06
+PKG_VERSION=2015-03-31-$(PKG_SOURCE_VERSION)
PKG_RELEASE:=1
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/knxd/knxd.git
+PKG_SOURCE_VERSION:=2c6c6732a684dffb87b391ea92cccdf07c8385b8
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
+
PKG_MAINTAINER:=Othmar Truniger <github@truniger.ch>
+
PKG_LICENSE:=GPL-2.0+
PKG_LICENSE_FILES:=LICENSE
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=git://github.com/knxd/knxd.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)
-PKG_SOURCE_VERSION:=$(PKG_REV)
-
+PKG_BUILD_PARALLEL:=1
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
-PKG_BUILD_DEPENDS:=pthsem argp-standalone
+PKG_BUILD_DEPENDS:=argp-standalone
PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
SECTION:=net
CATEGORY:=Network
TITLE:=EIB KNX daemon
- URL:=https://github.com/knxd/knxd
- DEPENDS:=pthsem libusb-1.0
+ DEPENDS:=+pthsem +libusb-1.0
endef
define Package/knxd/description
/etc/config/knxd
endef
+define Package/libeibclient
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=Library for EIB clients
+ DEPENDS:=+pthsem
+endef
+
+define Package/libeibclient/description
+EIB KNX client library
+endef
+
define Package/knxd-tools
SECTION:=net
CATEGORY:=Network
TITLE:=EIB KNX Utils
- URL:=https://github.com/knxd/knxd
- DEPENDS:=pthsem libusb-1.0
+ DEPENDS:=+libeibclient
endef
define Package/knxd-tools/description
EIB KNX Tools
endef
-define Build/Prepare
- $(call Build/Prepare/Default)
-endef
-
-define Build/Configure
- $(call Build/Configure/Default,\
- --disable-ft12 \
- --enable-eibnetip \
- --enable-eibnetiptunnel \
- --enable-eibnetipserver \
- --enable-usb \
- --enable-tpuart \
- --enable-tpuarts \
- --disable-pei16 \
- --disable-pei16s \
- --enable-groupcache \
- --without-pth-test \
- --without-libstdc )
-endef
+CONFIGURE_ARGS+= \
+ --disable-ft12 \
+ --enable-eibnetip \
+ --enable-eibnetiptunnel \
+ --enable-eibnetipserver \
+ --enable-usb \
+ --enable-tpuart \
+ --enable-tpuarts \
+ --disable-pei16 \
+ --disable-pei16s \
+ --enable-groupcache \
+ --without-pth-test \
+ --without-libstdc
+
+EXTRA_LDFLAGS+= \
+ -fno-builtin -nodefaultlibs -lc -lgcc
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/eib*.h $(1)/usr/include/
-define Build/Compile
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CC=$(TARGET_CC) \
- LIBS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib -fno-builtin -nodefaultlibs -lc -lm -lgcc -largp -lpthsem" \
- CPPFLAGS="-I$(STAGING_DIR)/include -I$(STAGING_DIR)/usr/include"
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libeibclient.{a,so*} $(1)/usr/lib/
endef
define Package/knxd/install
$(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/server/knxd $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/tools/bcu/bcuaddrtab $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/tools/bcu/bcuread $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/tools/eibnet/eibnetsearch $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/tools/eibnet/eibnetdescribe $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/usb/findknxusb $(1)/usr/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
+
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/knxd.init $(1)/etc/init.d/knxd
+
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_DATA) ./files/knxd.config $(1)/etc/config/knxd
endef
-define Package/knxd-tools/install
+define Package/libeibclient/install
$(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_DATA) $(PKG_BUILD_DIR)/src/client/c/.libs/libeibclient.so.0.0.0 $(1)/usr/lib/
- ln -s libeibclient.so.0.0.0 $(1)/usr/lib/libeibclient.so
- ln -s libeibclient.so.0.0.0 $(1)/usr/lib/libeibclient.so.0
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libeibclient.so* $(1)/usr/lib/
+endef
+
+define Package/knxd-tools/install
$(INSTALL_DIR) $(1)/usr/bin
- -rm -f $(1)/usr/bin/knxread
- -rm -f $(1)/usr/bin/knxreadtemp
- -rm -f $(1)/usr/bin/knxwrite
- -rm -f $(1)/usr/bin/knxlog
- -rm -f $(1)/usr/bin/knxon
- -rm -f $(1)/usr/bin/knxoff
- -rm -f $(1)/usr/bin/knxif
- -rm -f $(1)/usr/bin/knxswrite
- -rm -f $(1)/usr/bin/knxbool
- -rm -f $(1)/usr/bin/knxdimup
- ln -s knxtool $(1)/usr/bin/knxread
- ln -s knxtool $(1)/usr/bin/knxreadtemp
- ln -s knxtool $(1)/usr/bin/knxwrite
- ln -s knxtool $(1)/usr/bin/knxlog
- ln -s knxtool $(1)/usr/bin/knxon
- ln -s knxtool $(1)/usr/bin/knxoff
- ln -s knxtool $(1)/usr/bin/knxif
- ln -s knxtool $(1)/usr/bin/knxswrite
- ln -s knxtool $(1)/usr/bin/knxbool
- ln -s knxtool $(1)/usr/bin/knxdimup
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/examples/.libs/knxtool $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/examples/.libs/busmonitor1 $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/examples/.libs/busmonitor2 $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/examples/.libs/busmonitor3 $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/examples/.libs/eibread-cgi $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/examples/.libs/eibwrite-cgi $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/examples/.libs/vbusmonitor1 $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/examples/.libs/vbusmonitor2 $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/examples/.libs/vbusmonitor3 $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/examples/.libs/groupwrite $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/examples/.libs/groupswrite $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/examples/.libs/grouplisten $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/examples/.libs/groupread $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/examples/.libs/groupresponse $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/examples/.libs/groupreadresponse $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/examples/.libs/groupsocketlisten $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/examples/.libs/groupsocketread $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/examples/.libs/groupsocketwrite $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/examples/.libs/groupsocketswrite $(1)/usr/bin/
+
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/knxd/examples/bin/knxtool $(1)/usr/bin/
+ ln -sf knxtool $(1)/usr/bin/knxread
+ ln -sf knxtool $(1)/usr/bin/knxreadtemp
+ ln -sf knxtool $(1)/usr/bin/knxwrite
+ ln -sf knxtool $(1)/usr/bin/knxlog
+ ln -sf knxtool $(1)/usr/bin/knxon
+ ln -sf knxtool $(1)/usr/bin/knxoff
+ ln -sf knxtool $(1)/usr/bin/knxif
+ ln -sf knxtool $(1)/usr/bin/knxswrite
+ ln -sf knxtool $(1)/usr/bin/knxbool
+ ln -sf knxtool $(1)/usr/bin/knxdimup
+
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/knxd/examples/bin/busmonitor1 $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/knxd/examples/bin/busmonitor2 $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/knxd/examples/bin/busmonitor3 $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/knxd/examples/bin/eibread-cgi $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/knxd/examples/bin/eibwrite-cgi $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/knxd/examples/bin/vbusmonitor1 $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/knxd/examples/bin/vbusmonitor2 $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/knxd/examples/bin/vbusmonitor3 $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/knxd/examples/bin/groupwrite $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/knxd/examples/bin/groupswrite $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/knxd/examples/bin/grouplisten $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/knxd/examples/bin/groupread $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/knxd/examples/bin/groupresponse $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/knxd/examples/bin/groupreadresponse $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/knxd/examples/bin/groupsocketlisten $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/knxd/examples/bin/groupsocketread $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/knxd/examples/bin/groupsocketwrite $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/knxd/examples/bin/groupsocketswrite $(1)/usr/bin/
endef
$(eval $(call BuildPackage,knxd))
+$(eval $(call BuildPackage,libeibclient))
$(eval $(call BuildPackage,knxd-tools))
NAME=knxd
PROG=/usr/bin/$NAME
-. /lib/functions.sh
-
start() {
local options url
config_load "$NAME"
stop() {
service_stop $PROG
}
-
#
-# Copyright (C) 2008-2014 OpenWrt.org
+# Copyright (C) 2008-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PKG_NAME:=linknx
PKG_VERSION:=0.0.1.32
-PKG_RELEASE:=4
+PKG_RELEASE:=6
PKG_MD5SUM:=7ecc1208f59bceb05068c752b2250b63
PKG_MAINTAINER:=Othmar Truniger <github@truniger.ch>
PKG_SOURCE_URL:=@SF/linknx
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_BUILD_DEPENDS:=pthsem curl libesmtp
+PKG_BUILD_DEPENDS:=argp-standalone
include $(INCLUDE_DIR)/package.mk
CATEGORY:=Network
TITLE:=KNX home automation platform
URL:=http://sourceforge.net/projects/linknx/
- DEPENDS:=pthsem +lua +luac +libstdcpp +libcurl +libesmtp
+ DEPENDS:=+pthsem +lua +luac +libstdcpp +libcurl +libesmtp
endef
-define Build/Configure
- (cd $(PKG_BUILD_DIR); touch aclocal.m4 Makefile.in config.h.in configure; \
- $(SED) 's,\"2.0.4\",\"2.0.4\"\n_pth_version=\"2.0.8\",g' $(PKG_BUILD_DIR)/configure )
- $(call Build/Configure/Default,--verbose --without-pth-test --with-pth=$(STAGING_DIR) --without-log4cpp --with-lua --with-libcurl --without-mysql, \
- CXXFLAGS="$(TARGET_CFLAGS) -fno-builtin -lcrypt" \
- )
-endef
+CONFIGURE_ARGS+= \
+ --verbose \
+ --without-pth-test \
+ --without-log4cpp \
+ --with-lua \
+ --with-libcurl \
+ --without-mysql
-define Build/Compile
- $(MAKE) -C $(PKG_BUILD_DIR)/ \
- LIBDIR="$(TARGET_LDFLAGS)" \
- CC="$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_CPPFLAGS) " \
- LD="$(TARGET_CROSS)ld -shared" \
- LUA="$(STAGING_DIR_HOST)/bin/lua" \
- LUAC="$(STAGING_DIR_HOST)/bin/luac" \
- CFLAGS="$(TARGET_CFLAGS) -nodefaultlibs" all
-endef
+EXTRA_LDFLAGS+= \
+ -fno-builtin
define Package/linknx/install
$(INSTALL_DIR) $(1)/usr/bin
sc.rmempty = false
sc.description = qos_desc
-ad = s:taboption("tab_qdisc", Flag, "qdisc_advanced", translate("Show Advanced Configuration"))
+ad = s:taboption("tab_qdisc", Flag, "qdisc_advanced", translate("Show and Use Advanced Configuration"))
ad.default = false
ad.rmempty = true
eecn.rmempty = true
eecn:depends("qdisc_advanced", "1")
-ad2 = s:taboption("tab_qdisc", Flag, "qdisc_really_really_advanced", translate("Show Dangerous Configuration"))
+ad2 = s:taboption("tab_qdisc", Flag, "qdisc_really_really_advanced", translate("Show and Use Dangerous Configuration"))
ad2.default = false
ad2.rmempty = true
ad2:depends("qdisc_advanced", "1")
elim:depends("qdisc_really_really_advanced", "1")
-itarg = s:taboption("tab_qdisc", Value, "itarget", translate("Latency target for ingress, e.g 5ms [units: s, ms, or us]; leave empty for default, or auto for automatic selection."))
+itarg = s:taboption("tab_qdisc", Value, "itarget", translate("Latency target for ingress, e.g 5ms [units: s, ms, or us]; leave empty for automatic selection, put in the word default for the qdisc's default."))
itarg.datatype = "string"
itarg.rmempty = true
itarg:depends("qdisc_really_really_advanced", "1")
-etarg = s:taboption("tab_qdisc", Value, "etarget", translate("Latency target for egress, e.g. 5ms [units: s, ms, or us]; leave empty for default, or auto for automatic selection."))
+etarg = s:taboption("tab_qdisc", Value, "etarget", translate("Latency target for egress, e.g. 5ms [units: s, ms, or us]; leave empty for automatic selection, put in the word default for the qdisc's default."))
etarg.datatype = "string"
etarg.rmempty = true
etarg:depends("qdisc_really_really_advanced", "1")
include $(TOPDIR)/rules.mk
PKG_NAME:=mDNSResponder
-PKG_VERSION:=561.1.1
+PKG_VERSION:=567
PKG_RELEASE:=1
PKG_SOURCE:=mDNSResponder-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://opensource.apple.com/tarballs/mDNSResponder/
-PKG_MD5SUM:=d4b56e22798d6f45e29b42cd6720ab6e
+PKG_MD5SUM:=6eff6d243a12a3d4b6fca03c05a9893b
PKG_MAINTAINER:=Steven Barth <cyrus@openwrt.org>
PKG_LICENSE:=Apache-2.0
--- a/Clients/Makefile
+++ b/Clients/Makefile
-@@ -23,6 +23,8 @@
+@@ -27,6 +27,8 @@
#############################################################################
# On OS X the dns_sd library functions are included in libSystem, which is implicitly linked with every executable
# If /usr/lib/libSystem.dylib exists, then we're on OS X, so we don't need also to link the "dns_sd" shared library
ifneq "$(wildcard /usr/lib/libSystem.dylib)" ""
-@@ -42,10 +44,10 @@ build:
+@@ -46,10 +48,10 @@ build:
mkdir build
build/dns-sd: build dns-sd.c ClientCommon.c
-- cc $(filter %.c %.o, $+) $(LIBS) -I../mDNSShared -Wall -o $@
+- $(CC) $(filter %.c %.o, $+) $(LIBS) -I../mDNSShared -Wall -o $@
+ $(CC) $(CFLAGS) $(filter %.c %.o, $+) $(LIBS) -I../mDNSShared -Wall -o $@
build/dns-sd64: build dns-sd.c ClientCommon.c
-- cc $(filter %.c %.o, $+) $(LIBS) -I../mDNSShared -Wall -o $@ -m64
+- $(CC) $(filter %.c %.o, $+) $(LIBS) -I../mDNSShared -Wall -o $@ -m64
+ $(CC) $(CFLAGS) $(filter %.c %.o, $+) $(LIBS) -I../mDNSShared -Wall -o $@ -m64
# Note, we can make a 'fat' version of dns-sd using 'lipo', as shown below, but we
# don't, because we don't want or need a 'fat' version of dns-sd, because it will
--- a/mDNSPosix/Makefile
+++ b/mDNSPosix/Makefile
-@@ -54,10 +54,11 @@ COREDIR = ../mDNSCore
+@@ -54,11 +54,12 @@ COREDIR = ../mDNSCore
SHAREDDIR ?= ../mDNSShared
JDK = /usr/jdk
+CC = @gcc
BISON = @bison
FLEX = @flex
+ ST = @strip
-LD = ld -shared
+LD = @ld
+SOOPTS = -shared
CP = cp
RM = rm
LN = ln -s -f
-@@ -82,7 +83,7 @@ else
- CFLAGS_DEBUG = -Os -DMDNS_DEBUGMSGS=0
- OBJDIR ?= objects/prod
- BUILDDIR ?= build/prod
--STRIP = strip -S
-+STRIP = @strip -S
- endif
-
- # Configure per-OS peculiarities
-@@ -91,7 +92,7 @@ CFLAGS_DEBUG = -O0 -DMDNS_DEBUGMSGS=0
+@@ -92,7 +93,7 @@ CFLAGS_DEBUG = -O0 -DMDNS_DEBUGMSGS=0
CFLAGS_OS = -DNOT_HAVE_DAEMON -DNOT_HAVE_SA_LEN -DNOT_HAVE_SOCKLEN_T -DNOT_HAVE_IF_NAMETOINDEX \
-DLOG_PERROR=0 -D_XPG4_2 -D__EXTENSIONS__ -DHAVE_BROKEN_RECVIF_NAME -DTARGET_OS_SOLARIS
CC = gcc
LINKOPTS = -lsocket -lnsl -lresolv
JAVACFLAGS_OS += -I$(JDK)/include/solaris
ifneq ($(DEBUG),1)
-@@ -147,7 +148,8 @@ CFLAGS_OS = -DHAVE_IPV6 -no-cpp-precomp
+@@ -148,7 +149,8 @@ CFLAGS_OS = -DHAVE_IPV6 -no-cpp-precomp
-D__MAC_OS_X_VERSION_MIN_REQUIRED=__MAC_OS_X_VERSION_10_4 \
-D__APPLE_USE_RFC_2292 #-Wunreachable-code
CC = gcc
LINKOPTS = -lSystem
LDSUFFIX = dylib
JDK = /System/Library/Frameworks/JavaVM.framework/Home
-@@ -169,8 +171,9 @@ NSSLIBFILE := $(NSSLIBNAME)-$(NSSVERSIO
+@@ -170,8 +172,9 @@ NSSLIBFILE := $(NSSLIBNAME)-$(NSSVERSIO
NSSLINKNAME := $(NSSLIBNAME).so.2
NSSINSTPATH := /lib
INSTBASE?=/usr
STARTUPSCRIPTNAME?=mdns
-@@ -256,7 +259,7 @@ libdns_sd: setup $(BUILDDIR)/libdns_sd.$
+@@ -257,7 +260,7 @@ libdns_sd: setup $(BUILDDIR)/libdns_sd.$
CLIENTLIBOBJS = $(OBJDIR)/dnssd_clientlib.c.so.o $(OBJDIR)/dnssd_clientstub.c.so.o $(OBJDIR)/dnssd_ipc.c.so.o
$(BUILDDIR)/libdns_sd.$(LDSUFFIX): $(CLIENTLIBOBJS)
@$(STRIP) $@
Clients: setup libdns_sd ../Clients/build/dns-sd
-@@ -291,7 +294,7 @@ InstalledManPages: $(MANPATH)/man8/mdnsd
+@@ -292,7 +295,7 @@ InstalledManPages: $(MANPATH)/man8/mdnsd
InstalledClients: $(INSTBASE)/bin/dns-sd
@echo $+ " installed"
@echo $+ " installed"
# Note: If daemon already installed, we make sure it's stopped before overwriting it
-@@ -346,19 +349,21 @@ $(INSTBASE)/bin/dns-sd: ../Clients/build
+@@ -347,19 +350,21 @@ $(INSTBASE)/bin/dns-sd: ../Clients/build
$(NSSINSTPATH)/$(NSSLINKNAME): $(NSSINSTPATH)/$(NSSLIBFILE)
$(LN) $< $@
}
--- a/mDNSPosix/mDNSPosix.c
+++ b/mDNSPosix/mDNSPosix.c
-@@ -136,7 +136,7 @@ mDNSlocal void SockAddrTomDNSAddr(const
+@@ -138,7 +138,7 @@ mDNSlocal void SockAddrTomDNSAddr(const
// mDNS core calls this routine when it needs to send a packet.
mDNSexport mStatus mDNSPlatformSendUDP(const mDNS *const m, const void *const msg, const mDNSu8 *const end,
mDNSIPPort dstPort, mDNSBool useBackgroundTrafficClass)
{
int err = 0;
-@@ -574,9 +574,17 @@ mDNSlocal void FreePosixNetworkInterface
+@@ -583,9 +583,17 @@ mDNSlocal void FreePosixNetworkInterface
{
assert(intf != NULL);
if (intf->intfName != NULL) free((void *)intf->intfName);
+ assert(rv == 0);
+ }
#endif
- free(intf);
- }
-@@ -703,6 +711,29 @@ mDNSlocal int SetupSocket(struct sockadd
+
+ // Move interface to the RecentInterfaces list for a minute
+@@ -724,6 +732,29 @@ mDNSlocal int SetupSocket(struct sockadd
if (err < 0) { err = errno; perror("setsockopt - IP_MULTICAST_TTL"); }
}
// And start listening for packets
if (err == 0)
{
-@@ -784,6 +815,29 @@ mDNSlocal int SetupSocket(struct sockadd
+@@ -805,6 +836,29 @@ mDNSlocal int SetupSocket(struct sockadd
if (err < 0) { err = errno; perror("setsockopt - IPV6_MULTICAST_HOPS"); }
}
// And start listening for packets
if (err == 0)
{
-@@ -815,7 +869,12 @@ mDNSlocal int SetupSocket(struct sockadd
+@@ -836,7 +890,12 @@ mDNSlocal int SetupSocket(struct sockadd
}
// Clean up
assert((err == 0) == (*sktPtr != -1));
return err;
}
-@@ -994,7 +1053,7 @@ mDNSlocal mStatus OpenIfNotifySocket(int
+@@ -1026,7 +1085,7 @@ mDNSlocal mStatus OpenIfNotifySocket(int
/* Subscribe the socket to Link & IP addr notifications. */
mDNSPlatformMemZero(&snl, sizeof snl);
snl.nl_family = AF_NETLINK;
ret = bind(sock, (struct sockaddr *) &snl, sizeof snl);
if (0 == ret)
*pFD = sock;
-@@ -1072,11 +1131,18 @@ mDNSlocal mDNSu32 ProcessRoutingNo
+@@ -1104,11 +1163,18 @@ mDNSlocal mDNSu32 ProcessRoutingNo
PrintNetLinkMsg(pNLMsg);
#endif
// Advance pNLMsg to the next message in the buffer
if ((pNLMsg->nlmsg_flags & NLM_F_MULTI) != 0 && pNLMsg->nlmsg_type != NLMSG_DONE)
-@@ -1247,8 +1313,12 @@ mDNSexport mStatus mDNSPlatformInit(mDNS
+@@ -1279,8 +1345,12 @@ mDNSexport mStatus mDNSPlatformInit(mDNS
if (err == mStatus_NoError) err = SetupSocket(&sa, zeroIPPort, 0, &m->p->unicastSocket6);
#endif
// Tell mDNS core about DNS Servers
mDNS_Lock(m);
-@@ -1281,9 +1351,17 @@ mDNSexport void mDNSPlatformClose(mDNS *
+@@ -1313,9 +1383,17 @@ mDNSexport void mDNSPlatformClose(mDNS *
{
assert(m != NULL);
ClearInterfaceList(m);
#endif
}
-@@ -1533,14 +1611,14 @@ mDNSexport mStatus mDNSPlatformClearS
+@@ -1571,14 +1649,14 @@ mDNSexport mStatus mDNSPlatformClearS
mDNSexport mDNSu16 mDNSPlatformGetUDPPort(UDPSocket *sock)
{
(void) sock; // unused
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-mwan3
-PKG_VERSION:=1.3
-PKG_RELEASE:=5
+PKG_VERSION:=1.4
+PKG_RELEASE:=2
PKG_MAINTAINER:=Aedan Renner <chipdankly@gmail.com>
PKG_LICENSE:=GPLv2
return self.map:get(s, "proto") or "all"
end
+sticky = mwan_rule:option(DummyValue, "sticky", translate("Sticky"))
+ sticky.rawhtml = true
+ function sticky.cfgvalue(self, s)
+ if self.map:get(s, "sticky") == "1" then
+ stickied = 1
+ return "Yes"
+ else
+ stickied = nil
+ return "No"
+ end
+ end
+
+timeout = mwan_rule:option(DummyValue, "timeout", translate("Sticky timeout"))
+ timeout.rawhtml = true
+ function timeout.cfgvalue(self, s)
+ if stickied then
+ local timeoutValue = self.map:get(s, "timeout")
+ if timeoutValue then
+ return timeoutValue .. "s"
+ else
+ return "600s"
+ end
+ else
+ return "—"
+ end
+ end
+
+ipset = mwan_rule:option(DummyValue, "ipset", translate("IPset"))
+ ipset.rawhtml = true
+ function ipset.cfgvalue(self, s)
+ return self.map:get(s, "ipset") or "—"
+ end
+
use_policy = mwan_rule:option(DummyValue, "use_policy", translate("Policy assigned"))
use_policy.rawhtml = true
function use_policy.cfgvalue(self, s)
proto:value("esp")
cbiAddProtocol(proto)
+sticky = mwan_rule:option(ListValue, "sticky", translate("Sticky"),
+ translate("Traffic from the same source IP address that previously matched this rule within the sticky timeout period will use the same WAN interface"))
+ sticky.default = "0"
+ sticky:value("1", translate("Yes"))
+ sticky:value("0", translate("No"))
+
+timeout = mwan_rule:option(Value, "timeout", translate("Sticky timeout"),
+ translate("Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"))
+ timeout.datatype = "range(1, 1000000)"
+
+ipset = mwan_rule:option(Value, "ipset", translate("IPset"),
+ translate("Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/youtube.com/youtube\")"))
+
use_policy = mwan_rule:option(Value, "use_policy", translate("Policy assigned"))
cbiAddPolicy(use_policy)
use_policy:value("unreachable", translate("unreachable (reject)"))
include $(TOPDIR)/rules.mk
PKG_NAME:=mwan3
-PKG_VERSION:=1.5
-PKG_RELEASE:=10
+PKG_VERSION:=1.6
+PKG_RELEASE:=1
PKG_MAINTAINER:=Jeroen Louwes <jeroen.louwes@gmail.com>
PKG_LICENSE:=GPLv2
SECTION:=net
CATEGORY:=Network
SUBMENU:=Routing and Redirection
- DEPENDS:=+ip +iptables +iptables-mod-conntrack-extra +iptables-mod-ipopt
+ DEPENDS:=+ip +ipset +iptables +iptables-mod-conntrack-extra +iptables-mod-ipopt
TITLE:=Multiwan hotplug script with connection tracking support
MAINTAINER:=Jeroen Louwes <jeroen.louwes@gmail.com>
PKGARCH:=all
list use_member 'wan_m2_w3'
list use_member 'wan2_m1_w2'
-config rule 'sticky_even'
- option src_ip '0.0.0.0/0.0.0.1'
- option dest_port '443'
+config rule 'youtube'
+ option sticky '1'
+ option ipset 'youtube'
+ option dest_port '80,443'
option proto 'tcp'
- option use_policy 'wan_wan2'
+ option use_policy 'balanced'
-config rule 'sticky_odd'
- option src_ip '0.0.0.1/0.0.0.1'
+config rule 'https'
+ option sticky '1'
option dest_port '443'
option proto 'tcp'
- option use_policy 'wan2_wan'
+ option use_policy 'balanced'
config rule 'default_rule'
option dest_ip '0.0.0.0/0'
$IPT -N mwan3_ifaces
fi
- if ! $IPT -S mwan3_rules &> /dev/null; then
- $IPT -N mwan3_rules
- fi
-
if ! $IPT -S mwan3_connected &> /dev/null; then
$IPT -N mwan3_connected
+ $IPS create mwan3_connected hash:net
+ $IPT -A mwan3_connected -m set --match-set mwan3_connected dst -j MARK --set-xmark 0xff00/0xff00
+ fi
+
+ if ! $IPT -S mwan3_track &> /dev/null; then
+ $IPT -N mwan3_track
+ fi
+
+ if ! $IPT -S mwan3_rules &> /dev/null; then
+ $IPT -N mwan3_rules
fi
if ! $IPT -S mwan3_hook &> /dev/null; then
$IPT -A mwan3_hook -j CONNMARK --restore-mark --nfmask 0xff00 --ctmask 0xff00
$IPT -A mwan3_hook -m mark --mark 0x0/0xff00 -j mwan3_ifaces
$IPT -A mwan3_hook -m mark --mark 0x0/0xff00 -j mwan3_connected
+ $IPT -A mwan3_hook -m mark --mark 0x0/0xff00 -j mwan3_track
$IPT -A mwan3_hook -m mark --mark 0x0/0xff00 -j mwan3_rules
$IPT -A mwan3_hook -j CONNMARK --save-mark --nfmask 0xff00 --ctmask 0xff00
$IPT -A mwan3_hook -m mark ! --mark 0xff00/0xff00 -j mwan3_connected
fi
- if ! $IPT -S mwan3_output_hook &> /dev/null; then
- $IPT -N mwan3_output_hook
- fi
-
if ! $IPT -S PREROUTING | grep mwan3_hook &> /dev/null; then
$IPT -A PREROUTING -j mwan3_hook
fi
$IPT -A OUTPUT -j mwan3_hook
fi
- if ! $IPT -S OUTPUT | grep mwan3_output_hook &> /dev/null; then
- $IPT -A OUTPUT -j mwan3_output_hook
- fi
-
$IPT -F mwan3_rules
}
mwan3_set_connected_iptables()
{
- local connected_networks
+ local connected_network
if $IPT -S mwan3_connected &> /dev/null; then
- $IPT -F mwan3_connected
- for connected_networks in $($IP route | awk '{print $1}' | egrep '[0-9]{1,3}(\.[0-9]{1,3}){3}'); do
- $IPT -A mwan3_connected -d $connected_networks -j MARK --set-xmark 0xff00/0xff00
+ $IPS create mwan3_connected_temp hash:net
+
+ for connected_network in $($IP route | awk '{print $1}' | egrep '[0-9]{1,3}(\.[0-9]{1,3}){3}'); do
+ $IPS -! add mwan3_connected_temp $connected_network
done
- for connected_networks in $($IP route list table 0 | awk '{print $2}' | egrep '[0-9]{1,3}(\.[0-9]{1,3}){3}'); do
- $IPT -A mwan3_connected -d $connected_networks -j MARK --set-xmark 0xff00/0xff00
+ for connected_network in $($IP route list table 0 | awk '{print $2}' | egrep '[0-9]{1,3}(\.[0-9]{1,3}){3}'); do
+ $IPS -! add mwan3_connected_temp $connected_network
done
- $IPT -I mwan3_connected -d 224.0.0.0/3 -j MARK --set-xmark 0xff00/0xff00
- $IPT -I mwan3_connected -d 127.0.0.0/8 -j MARK --set-xmark 0xff00/0xff00
+ $IPS add mwan3_connected_temp 224.0.0.0/3
+ $IPS swap mwan3_connected_temp mwan3_connected
+ $IPS destroy mwan3_connected_temp
+
fi
}
mwan3_set_iface_iptables()
{
- local local_net local_nets
-
if ! $IPT -S mwan3_iface_$INTERFACE &> /dev/null; then
$IPT -N mwan3_iface_$INTERFACE
fi
$IPT -D mwan3_ifaces -m mark --mark 0x0/0xff00 -j mwan3_iface_$INTERFACE &> /dev/null
if [ $ACTION == "ifup" ]; then
- local_nets=$($IP route list dev $DEVICE scope link | awk '{print $1}' | egrep '[0-9]{1,3}(\.[0-9]{1,3}){3}')
-
- if [ -n "$local_nets" ]; then
- for local_net in $local_nets ; do
- if [ $ACTION == "ifup" ]; then
- $IPT -I mwan3_iface_$INTERFACE -i $DEVICE -s $local_net -m mark --mark 0x0/0xff00 -m comment --comment "default" -j MARK --set-xmark 0xff00/0xff00
- fi
- done
- fi
-
+ $IPT -I mwan3_iface_$INTERFACE -i $DEVICE -m set --match-set mwan3_connected src -m mark --mark 0x0/0xff00 -m comment --comment "default" -j MARK --set-xmark 0xff00/0xff00
$IPT -A mwan3_iface_$INTERFACE -i $DEVICE -m mark --mark 0x0/0xff00 -m comment --comment "$INTERFACE" -j MARK --set-xmark $(($iface_id*256))/0xff00
$IPT -A mwan3_ifaces -m mark --mark 0x0/0xff00 -j mwan3_iface_$INTERFACE
fi
[ $ACTION == "ifup" ] && $IP rule add pref $(($iface_id+2000)) fwmark $(($iface_id*256))/0xff00 lookup $iface_id
}
+mwan3_set_iface_ipset()
+{
+ local setname entry
+
+ for setname in $(ipset -n list | grep ^mwan3_sticky_); do
+ for entry in $(ipset list $setname | grep "$(echo $(($iface_id*256)) | awk '{ printf "0x%08x", $1; }')" | cut -d ' ' -f 1); do
+ $IPS del $setname $entry
+ done
+ done
+}
+
mwan3_track()
{
local track_ip track_ips reliability count timeout interval down up
config_get down $INTERFACE down 5
config_get up $INTERFACE up 5
- if ! $IPT -S mwan3_track_$INTERFACE &> /dev/null; then
- $IPT -N mwan3_track_$INTERFACE
- $IPT -A mwan3_output_hook -p icmp -m icmp --icmp-type 8 -m length --length 32 -j mwan3_track_$INTERFACE
- fi
-
- $IPT -F mwan3_track_$INTERFACE
+ $IPS -! create mwan3_track_$INTERFACE hash:ip
+ $IPS create mwan3_track_temp_$INTERFACE hash:ip
for track_ip in $track_ips; do
- $IPT -A mwan3_track_$INTERFACE -d $track_ip -j MARK --set-xmark 0xff00/0xff00
+ $IPS -! add mwan3_track_temp_$INTERFACE $track_ip
done
+ $IPS swap mwan3_track_temp_$INTERFACE mwan3_track_$INTERFACE
+ $IPS destroy mwan3_track_temp_$INTERFACE
+
+ $IPT -D mwan3_track -p icmp -m set --match-set mwan3_track_$INTERFACE dst -m icmp --icmp-type 8 -m length --length 32 -j MARK --set-xmark 0xff00/0xff00 &> /dev/null
+ $IPT -A mwan3_track -p icmp -m set --match-set mwan3_track_$INTERFACE dst -m icmp --icmp-type 8 -m length --length 32 -j MARK --set-xmark 0xff00/0xff00
+
[ -x /usr/sbin/mwan3track ] && /usr/sbin/mwan3track $INTERFACE $DEVICE $reliability $count $timeout $interval $down $up $track_ips &
else
- $IPT -D mwan3_output_hook -p icmp -m icmp --icmp-type 8 -m length --length 32 -j mwan3_track_$INTERFACE &> /dev/null
- $IPT -F mwan3_track_$INTERFACE &> /dev/null
- $IPT -X mwan3_track_$INTERFACE &> /dev/null
+ $IPT -D mwan3_track -p icmp -m set --match-set mwan3_track_$INTERFACE dst -m icmp --icmp-type 8 -m length --length 32 -j MARK --set-xmark 0xff00/0xff00 &> /dev/null
+ $IPS destroy mwan3_track_$INTERFACE
fi
}
config_get weight $1 weight 1
[ -n "$INTERFACE" ] || return 0
-
+
config_foreach mwan3_get_iface_id interface
[ -n "$iface_id" ] || return 0
total_weight=$(($total_weight+$weight))
probability=$(($weight*1000/$total_weight))
-
+
if [ "$probability" -lt 10 ]; then
probability="0.00$probability"
- elif [ $probability -lt 100 ]; then
+ elif [ $probability -lt 100 ]; then
probability="0.0$probability"
- elif [ $probability -lt 1000 ]; then
+ elif [ $probability -lt 1000 ]; then
probability="0.$probability"
else
probability="1"
fi
probability="-m statistic --mode random --probability $probability"
-
+
$IPT -I mwan3_policy_$policy -m mark --mark 0x0/0xff00 $probability -m comment --comment "$INTERFACE $weight $total_weight" -j MARK --set-xmark $(($iface_id*256))/0xff00
fi
fi
config_list_foreach $policy use_member mwan3_set_policy
}
+mwan3_set_sticky_iptables()
+{
+ local INTERFACE iface_count iface_id
+
+ INTERFACE="$1"
+
+ config_foreach mwan3_get_iface_id interface
+ unset iface_count
+
+ $IPS -! create mwan3_sticky_$rule hash:ip,mark markmask 0xff00 timeout $timeout
+
+ if [ -n "$iface_id" ]; then
+ if [ -n "$($IPT -S mwan3_iface_$1 2> /dev/null)" ]; then
+ $IPT -I mwan3_rule_$rule -m set ! --match-set mwan3_sticky_$rule src,src -j MARK --set-xmark 0x0/0xff00
+ $IPT -I mwan3_rule_$rule -m mark --mark 0/0xff00 -j MARK --set-xmark $(($iface_id*256))/0xff00
+ fi
+ fi
+
+ unset iface_id
+}
+
mwan3_set_user_rules_iptables()
{
- local proto src_ip src_port dest_ip dest_port use_policy
+ local ipset proto src_ip src_port sticky dest_ip dest_port use_policy rule timeout
+ config_get sticky $1 sticky 0
+ config_get timeout $1 timeout 600
+ config_get ipset $1 ipset
config_get proto $1 proto all
config_get src_ip $1 src_ip 0.0.0.0/0
config_get src_port $1 src_port 0:65535
config_get dest_port $1 dest_port 0:65535
config_get use_policy $1 use_policy
+ rule="$1"
+
+ if [ "$rule" != $(echo "$rule" | cut -c1-15) ]; then
+ $LOG warn "Rule $rule exceeds max of 15 chars. Not setting rule" && return 0
+ fi
+
+ if [ -n "$ipset" ]; then
+ if [ -z "$($IPS -n list $ipset)" ]; then
+ $IPS create $ipset hash:ip timeout 3600
+ fi
+
+ ipset="-m set --match-set $ipset dst"
+ fi
+
if [ -n "$use_policy" ]; then
if [ "$use_policy" == "default" ]; then
use_policy="MARK --set-xmark 0xff00/0xff00"
elif [ "$use_policy" == "blackhole" ]; then
use_policy="MARK --set-xmark 0xfd00/0xff00"
else
- use_policy="mwan3_policy_$use_policy"
+ if [ "$sticky" -eq 1 ]; then
+
+ if ! $IPT -S mwan3_rule_$rule &> /dev/null; then
+ $IPT -N mwan3_rule_$rule
+ fi
+
+ $IPT -F mwan3_rule_$rule
+
+ config_foreach mwan3_set_sticky_iptables interface
+
+ $IPT -A mwan3_rule_$rule -m mark --mark 0/0xff00 -j mwan3_policy_$use_policy
+ $IPT -A mwan3_rule_$rule -m mark ! --mark 0xfc00/0xfc00 -j SET --del-set mwan3_sticky_$rule src,src
+ $IPT -A mwan3_rule_$rule -m mark ! --mark 0xfc00/0xfc00 -j SET --add-set mwan3_sticky_$rule src,src
+
+ use_policy="mwan3_rule_$rule"
+ else
+ use_policy="mwan3_policy_$use_policy"
+ fi
fi
case $proto in
tcp|udp)
- $IPT -A mwan3_rules -p $proto -s $src_ip -d $dest_ip -m multiport --sports $src_port -m multiport --dports $dest_port -m mark --mark 0/0xff00 -m comment --comment "$1" -j $use_policy &> /dev/null
+ $IPT -A mwan3_rules -p $proto -s $src_ip -d $dest_ip $ipset -m multiport --sports $src_port -m multiport --dports $dest_port -m mark --mark 0/0xff00 -m comment --comment "$1" -j $use_policy &> /dev/null
;;
*)
- $IPT -A mwan3_rules -p $proto -s $src_ip -d $dest_ip -m mark --mark 0/0xff00 -m comment --comment "$1" -j $use_policy &> /dev/null
+ $IPT -A mwan3_rules -p $proto -s $src_ip -d $dest_ip $ipset -m mark --mark 0/0xff00 -m comment --comment "$1" -j $use_policy &> /dev/null
;;
esac
fi
mwan3_set_iface_route
mwan3_set_iface_rules
+ [ $ACTION == "ifdown" ] && mwan3_set_iface_ipset
[ $ACTION == "ifup" ] && mwan3_track
config_foreach mwan3_set_policies_iptables policy
[ -n "$DEVICE" ] || exit 0
fi
-local IP IPT LOG
+[ -x /usr/sbin/ip ] || exit 1
+[ -x /usr/sbin/ipset ] || exit 1
+[ -x /usr/sbin/iptables ] || exit 1
+[ -x /usr/bin/logger ] || exit 1
+
+local IP IPS IPT LOG
IP="/usr/sbin/ip -4"
+IPS="/usr/sbin/ipset"
IPT="/usr/sbin/iptables -t mangle -w"
LOG="/usr/bin/logger -t mwan3 -p"
. /lib/functions.sh
IP="/usr/sbin/ip -4"
+IPS="/usr/sbin/ipset"
IPT="/usr/sbin/iptables -t mangle -w"
help()
-{
- cat <<EOF
-Syntax: mwan3 [command]
-
-Available commands:
+{
+ cat <<EOF
+Syntax: mwan3 [command]
+
+Available commands:
start Load iptables rules, ip rules and ip routes
stop Unload iptables rules, ip rules and ip routes
restart Reload iptables rules, ip rules and ip routes
if [ -n "$2" ]; then
echo "Too many arguments. Usage: mwan3 ifup <interface>" && exit 0
fi
-
+
config_get enabled "$1" enabled 0
device=$(uci get -p /var/state network.$1.ifname) &> /dev/null
-
+
if [ -n "$device" ] ; then
[ "$enabled" -eq 1 ] && ACTION=ifup INTERFACE=$1 DEVICE=$device /sbin/hotplug-call iface
fi
config_load mwan3
echo "Interface status:"
-
+
check_iface_status()
{
let iface_id++
device=$(uci get -p /var/state network.$1.ifname) &> /dev/null
if [ -z "$device" ]; then
- echo "Interface $1 is unknown"
+ echo " interface $1 is unknown"
return 0
fi
if [ -n "$($IP rule | awk '$5 == "'$device'"')" -a -n "$($IPT -S mwan3_iface_$1 2> /dev/null)" -a -n "$($IP route list table $iface_id default dev $device 2> /dev/null)" ]; then
if [ -n "$(uci get -p /var/state mwan3.$1.track_ip 2> /dev/null)" ]; then
- echo "Interface $1 is online (tracking $tracking)"
+ echo " interface $1 is online (tracking $tracking)"
else
- echo "Interface $1 is online"
+ echo " interface $1 is online"
fi
elif [ -n "$($IP rule | awk '$5 == "'$device'"')" -o -n "$($IPT -S mwan3_iface_$1 2> /dev/null)" -o -n "$($IP route list table $iface_id default dev $device 2> /dev/null)" ]; then
- echo "Interface $1 error"
+ echo " interface $1 error"
else
if [ "$enabled" -eq 1 ]; then
if [ -n "$(uci get -p /var/state mwan3.$1.track_ip 2> /dev/null)" ]; then
- echo "Interface $1 is offline (tracking $tracking)"
+ echo " interface $1 is offline (tracking $tracking)"
else
- echo "Interface $1 is offline"
+ echo " interface $1 is offline"
fi
else
- echo "Interface $1 is disabled"
+ echo " interface $1 is disabled"
fi
fi
}
}
rules()
{
+ local address
+
if [ -n "$($IPT -S mwan3_connected 2> /dev/null)" ]; then
echo "Known networks:"
- echo "destination policy hits" | awk '{ printf "%-19s%-19s%-9s%s\n",$1,$2,$3}' | awk '1; {gsub(".","-")}1'
- $IPT -L mwan3_connected -n -v 2> /dev/null | tail -n+3 | sed 's/mark.*//' | sed 's/mwan3_policy_//' | awk '{printf "%-19s%-19s%-9s%s\n",$9,"default",$1}'
+ for address in $($IPS list mwan3_connected | egrep '[0-9]{1,3}(\.[0-9]{1,3}){3}'); do
+ echo " $address"
+ done
echo -e
fi
if [ -n "$($IPT -S mwan3_rules 2> /dev/null)" ]; then
echo "Active rules:"
- echo "source destination proto src-port dest-port policy hits" | awk '{ printf "%-19s%-19s%-7s%-14s%-14s%-16s%-9s%s\n",$1,$2,$3,$4,$5,$6,$7}' | awk '1; {gsub(".","-")}1'
- $IPT -L mwan3_rules -n -v 2> /dev/null | tail -n+3 | sed 's/mark.*//' | sed 's/mwan3_policy_//' | awk '{ printf "%-19s%-19s%-7s%-14s%-14s%-16s%-9s%s\n",$8,$9,$4,$12,$15,$3,$1}'
+ $IPT -L mwan3_rules -n -v 2> /dev/null | tail -n+3 | sed 's/mark.*//' | sed 's/mwan3_policy_/- /' | sed 's/mwan3_rule_/S /'
echo -e
fi
}
stop()
{
- local route rule table
+ local ipset route rule table
killall mwan3track &> /dev/null
rm /var/run/mwan3track-* &> /dev/null
$IPT -D PREROUTING -j mwan3_hook &> /dev/null
$IPT -D OUTPUT -j mwan3_hook &> /dev/null
- $IPT -D OUTPUT -j mwan3_output_hook &> /dev/null
for table in $($IPT -S | awk '{print $2}' | grep mwan3 | sort -u); do
$IPT -F $table &> /dev/null
for table in $($IPT -S | awk '{print $2}' | grep mwan3 | sort -u); do
$IPT -X $table &> /dev/null
done
+
+ for ipset in $(ipset -n list | grep mwan3); do
+ $IPS destroy $ipset
+ done
}
restart() {
endef
define Package/snmpd/conffiles
-/etc/default/snmpd
/etc/config/snmpd
endef
$(INSTALL_DATA) ./files/snmpd.conf $(1)/etc/config/snmpd
$(INSTALL_DIR) $(1)/etc/snmp
ln -sf /var/run/snmpd.conf $(1)/etc/snmp/
- $(INSTALL_DIR) $(1)/etc/default
- $(INSTALL_DATA) ./files/snmpd.default $(1)/etc/default/snmpd
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/snmpd.init $(1)/etc/init.d/snmpd
$(INSTALL_DIR) $(1)/usr/sbin
endef
define Package/snmpd-static/conffiles
-/etc/default/snmpd
/etc/config/snmpd
endef
$(INSTALL_DATA) ./files/snmpd.conf $(1)/etc/config/snmpd
$(INSTALL_DIR) $(1)/etc/snmp
ln -sf /var/run/snmpd.conf $(1)/etc/snmp/
- $(INSTALL_DIR) $(1)/etc/default
- $(INSTALL_DATA) ./files/snmpd.default $(1)/etc/default/snmpd
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/snmpd.init $(1)/etc/init.d/snmpd
$(INSTALL_DIR) $(1)/usr/sbin
+++ /dev/null
-OPTIONS="-Lf /dev/null -p /var/run/snmpd.pid"
# Copyright (C) 2008 OpenWrt.org
START=50
-DEFAULT=/etc/default/snmpd
-LIB_D=/var/lib/snmp
-LOG_D=/var/log
-RUN_D=/var/run
-PID_F=$RUN_D/snmpd.pid
-RUN_C=$RUN_D/snmpd.conf
+USE_PROCD=1
+PROG="/usr/sbin/snmpd"
+
+CONFIGFILE="/var/run/snmpd.conf"
snmpd_agent_add() {
local cfg="$1"
config_get agentaddress "$cfg" agentaddress
[ -n "$agentaddress" ] || return 0
- echo "agentaddress $agentaddress" >> $RUN_C
+ echo "agentaddress $agentaddress" >> $CONFIGFILE
}
+
snmpd_system_add() {
local cfg="$1"
config_get syslocation "$cfg" sysLocation
- [ -n "$syslocation" ] && echo "sysLocation $syslocation" >> $RUN_C
+ [ -n "$syslocation" ] && echo "sysLocation $syslocation" >> $CONFIGFILE
config_get syscontact "$cfg" sysContact
- [ -n "$syscontact" ] && echo "sysContact $syscontact" >> $RUN_C
+ [ -n "$syscontact" ] && echo "sysContact $syscontact" >> $CONFIGFILE
config_get sysname "$cfg" sysName
- [ -n "$sysname" ] && echo "sysName $sysname" >> $RUN_C
+ [ -n "$sysname" ] && echo "sysName $sysname" >> $CONFIGFILE
config_get sysservice "$cfg" sysService
- [ -n "$sysservice" ] && echo "sysService $sysservice" >> $RUN_C
+ [ -n "$sysservice" ] && echo "sysService $sysservice" >> $CONFIGFILE
config_get sysdescr "$cfg" sysDescr
- [ -n "$sysdescr" ] && echo "sysDescr $sysdescr" >> $RUN_C
+ [ -n "$sysdescr" ] && echo "sysDescr $sysdescr" >> $CONFIGFILE
config_get sysobjectid "$cfg" sysObjectID
- [ -n "$sysobjectid" ] && echo "sysObjectID $sysobjectid" >> $RUN_C
+ [ -n "$sysobjectid" ] && echo "sysObjectID $sysobjectid" >> $CONFIGFILE
}
+
snmpd_com2sec_add() {
local cfg="$1"
config_get secname "$cfg" secname
[ -n "$source" ] || return 0
config_get community "$cfg" community
[ -n "$community" ] || return 0
- echo "com2sec $secname $source $community" >> $RUN_C
+ echo "com2sec $secname $source $community" >> $CONFIGFILE
}
+
snmpd_com2sec6_add() {
local cfg="$1"
config_get secname "$cfg" secname
[ -n "$source" ] || return 0
config_get community "$cfg" community
[ -n "$community" ] || return 0
- echo "com2sec6 $secname $source $community" >> $RUN_C
+ echo "com2sec6 $secname $source $community" >> $CONFIGFILE
}
+
snmpd_group_add() {
local cfg="$1"
config_get group "$cfg" group
[ -n "$version" ] || return 0
config_get secname "$cfg" secname
[ -n "$secname" ] || return 0
- echo "group $group $version $secname" >> $RUN_C
+ echo "group $group $version $secname" >> $CONFIGFILE
}
+
snmpd_view_add() {
local cfg="$1"
config_get viewname "$cfg" viewname
[ -n "$oid" ] || return 0
# optional mask
config_get mask "$cfg" mask
- echo "view $viewname $type $oid $mask" >> $RUN_C
+ echo "view $viewname $type $oid $mask" >> $CONFIGFILE
}
+
snmpd_access_add() {
local cfg="$1"
config_get group "$cfg" group
[ -n "$write" ] || return 0
config_get notify "$cfg" notify
[ -n "$notify" ] || return 0
- echo "access $group $context $version $level $prefix $read $write $notify" >> $RUN_C
+ echo "access $group $context $version $level $prefix $read $write $notify" >> $CONFIGFILE
}
+
snmpd_pass_add() {
local cfg="$1"
local pass='pass'
[ $persist -ne 0 ] && pass='pass_persist'
config_get priority "$cfg" priority
priority=${priority:+-p $priority}
- echo "$pass $priority $miboid $prog" >> $RUN_C
+ echo "$pass $priority $miboid $prog" >> $CONFIGFILE
}
+
snmpd_exec_add() {
local cfg="$1"
[ -n "$prog" ] || return 0
config_get args "$cfg" args
config_get miboid "$cfg" miboid
- echo "exec $miboid $name $prog $args" >> $RUN_C
+ echo "exec $miboid $name $prog $args" >> $CONFIGFILE
}
+
snmpd_disk_add() {
local cfg="$1"
local disk='disk'
[ -n "$partition" ] || return 0
config_get size "$cfg" size
[ -n "$size" ] || return 0
- echo "$disk $partition $size" >> $RUN_C
+ echo "$disk $partition $size" >> $CONFIGFILE
}
-start() {
- [ -d $LIB_D ] || mkdir -p $LIB_D
- [ -d $LOG_D ] || mkdir -p $LOG_D
- [ -d $RUN_D ] || mkdir -p $RUN_D
- [ -f $RUN_C ] && rm -f $RUN_C
+
+start_service() {
+ [ -f "$CONFIGFILE" ] && rm -f "$CONFIGFILE"
+
+ procd_open_instance
config_load snmpd
config_foreach snmpd_exec_add exec
config_foreach snmpd_disk_add disk
- [ -f $DEFAULT ] && . $DEFAULT
- $DEBUG /usr/sbin/snmpd $OPTIONS
+ procd_set_param command $PROG -Lf /dev/null -f
+ procd_set_param file $CONFIGFILE
+ procd_set_param respawn
+
+ for iface in $(ls /sys/class/net 2>/dev/null); do
+ procd_append_param netdev "$iface"
+ done
+
+ procd_close_instance
}
-stop() {
- [ -f $PID_F ] && kill $(cat $PID_F)
- [ -f $RUN_C ] && rm -f $RUN_C
+
+stop_service() {
+ [ -f "$CONFIGFILE" ] && rm -f "$CONFIGFILE"
}
include $(TOPDIR)/rules.mk
PKG_NAME:=openconnect
-PKG_VERSION:=7.04
-PKG_RELEASE:=3
+PKG_VERSION:=7.05
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=ftp://ftp.infradead.org/pub/openconnect/
-PKG_MD5SUM:=828fe81388b7ea1155419b8be64a350f
+PKG_MD5SUM:=10cd4f61e8a11cdf793da2b0fd7a6003
PKG_CONFIG_DEPENDS:= \
CONFIG_OPENCONNECT_GNUTLS \
option serverhash 'AE7FF6A0426F0A0CD0A02EB9EC3C5066FAEB0B25'
option token_mode 'rsa' # when built with stoken support
option token_secret 'secret' # when built with stoken support
+ option defaultroute '0'
option authgroup 'DEFAULT'
The additional files are also used:
include $(TOPDIR)/rules.mk
PKG_NAME:=openssh
-PKG_VERSION:=6.7p1
-PKG_RELEASE:=3
+PKG_VERSION:=6.8p1
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/ \
http://ftp.belnet.be/pub/OpenBSD/OpenSSH/portable/
-PKG_MD5SUM:=3246aa79317b1d23cae783a3bf8275d6
+PKG_MD5SUM:=08f72de6751acfbd0892b5f003922701
PKG_LICENSE:=BSD ISC
PKG_LICENSE_FILES:=LICENCE
define Package/openssh/Default
SECTION:=net
CATEGORY:=Network
- DEPENDS:=+libopenssl +zlib +SSP_SUPPORT:libssp
+ DEPENDS:=+libopenssl +zlib
TITLE:=OpenSSH
MAINTAINER:=Peter Wagner <tripolar@gmx.at>
URL:=http://www.openssh.com/
define Package/openssh-sftp-server
$(call Package/openssh/Default)
TITLE+= SFTP server
- DEPENDS:=+SSP_SUPPORT:libssp
+ # Strip dependencies to avoid pulling in OpenSSL etc.
+ DEPENDS:=
endef
define Package/openssh-sftp-server/description
--- a/includes.h
+++ b/includes.h
-@@ -59,6 +59,9 @@
+@@ -60,6 +60,9 @@
/*
*-*-nto-qnx needs these headers for strcasecmp and LASTLOG_FILE respectively
*/
SUBMENU:=Network Support
TITLE:=Open vSwitch Kernel Package
KCONFIG:=CONFIG_BRIDGE
- DEPENDS:=+kmod-stp +kmod-ipv6 +kmod-gre +kmod-lib-crc32c +kmod-vxlan
+ DEPENDS:=+kmod-stp +kmod-ipv6 +kmod-gre +kmod-lib-crc32c +kmod-vxlan \
+ @(LINUX_3_8||LINUX_3_10||LINUX_3_13||LINUX_3_14)
FILES:= \
$(PKG_BUILD_DIR)/datapath/linux/openvswitch.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,21,openvswitch)
include $(TOPDIR)/rules.mk
PKG_NAME:=pen
-PKG_VERSION:=0.27.1
+PKG_VERSION:=0.27.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://siag.nu/pub/pen/
-PKG_MD5SUM:=652c457266b6ec6a295f4c7895785674
+PKG_MD5SUM:=79014750cc0ea253437b516716932115
PKG_LICENSE:=GPL-2.0+
PKG_LICENSE_FILES:=COPYING
include $(TOPDIR)/rules.mk
PKG_NAME:=prosody
-PKG_VERSION:=0.9.7
-PKG_RELEASE:=2
+PKG_VERSION:=0.9.8
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://prosody.im/downloads/source
-PKG_MD5SUM:=47de7f593279e327792df78cfa93e8a7
+PKG_MD5SUM:=5144cd832a1860443e21e336dc560ee7
PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
PKG_LICENSE:=MIT/X11
PKG_BUILD_DEPENDS:=python-setuptools
PYTHONPATH:=$(PYTHONPATH):$(PKG_BUILD_DIR)/thirdpart
+define Download/django
+ FILE=Django-1.5.8.tar.gz
+ URL=https://www.djangoproject.com/m/releases/1.5/
+ MD5SUM:=675fc736e2c29090f005e217ccf90b5b
+endef
+
+define Download/djblets
+ PROTO=git
+ URL=https://github.com/djblets/djblets.git
+ SUBDIR=djblets-0.6.14
+ FILE=djblets-0.6.14.tar.gz
+ VERSION=58c09bae9b71ac164f78c76746fd2e545aae6c68
+endef
+
+define Download/gunicorn
+ FILE=gunicorn-0.16.1.tar.gz
+ URL=https://pypi.python.org/packages/source/g/gunicorn/
+ MD5SUM:=d53d5d04d941f2a3089e814e753a218f
+endef
+
+define Download/six
+ FILE=six-1.4.1.tar.gz
+ URL=https://pypi.python.org/packages/source/s/six/
+ MD5SUM:=bdbb9e12d3336c198695aa4cf3a61d62
+endef
+
+define Download/chardet
+ FILE=chardet-2.1.1.tar.gz
+ URL=https://pypi.python.org/packages/source/c/chardet/
+ MD5SUM:=295367fd210d20f3febda615a88e1ef0
+endef
+
+define Download/flup
+ FILE=flup-1.0.2-py2.6.egg
+ URL=https://pypi.python.org/packages/2.6/f/flup/
+ MD5SUM:=93ec6e3baeee3e5649a8456105178d4e
+endef
+
+define Download/lockfile
+ FILE=lockfile-0.9.1.tar.gz
+ URL=https://pypi.python.org/packages/source/l/lockfile/
+ MD5SUM:=ce61468d4c1263e3005737bbed2641f0
+endef
+
+define Download/python-daemon
+ FILE=python-daemon-1.5.5.tar.gz
+ URL=https://pypi.python.org/packages/source/p/python-daemon/
+ MD5SUM:=1f6cd41473c2e201021a0aeef395b2b1
+endef
+
+define Download/python-dateutil
+ FILE=python-dateutil-1.5.tar.gz
+ URL=https://pypi.python.org/packages/source/p/python-dateutil/
+ MD5SUM:=0dcb1de5e5cad69490a3b6ab63f0cfa5
+endef
+
define Build/Configure
endef
define Build/Compile
+ # Download python dependencies
+ $(eval $(call Download,django))
+ $(eval $(call Download,djblets))
+ $(eval $(call Download,gunicorn))
+ $(eval $(call Download,six))
+ $(eval $(call Download,chardet))
+ $(eval $(call Download,flup))
+ $(eval $(call Download,lockfile))
+ $(eval $(call Download,python-daemon))
+ $(eval $(call Download,python-dateutil))
# Install python dependencies
$(call HostPython,, \
$(STAGING_DIR_ROOT)/usr/bin/easy_install -d $(PKG_BUILD_DIR)/thirdpart -Z -N \
- https://www.djangoproject.com/m/releases/1.5/Django-1.5.8.tar.gz)
+ $(DL_DIR)/Django-1.5.8.tar.gz)
$(call HostPython,, \
$(STAGING_DIR_ROOT)/usr/bin/easy_install -d $(PKG_BUILD_DIR)/thirdpart -Z -N \
- https://github.com/djblets/djblets/archive/release-0.6.14.tar.gz)
+ $(DL_DIR)/djblets-0.6.14.tar.gz)
$(call HostPython,, \
$(STAGING_DIR_ROOT)/usr/bin/easy_install -d $(PKG_BUILD_DIR)/thirdpart -Z -N \
- https://pypi.python.org/packages/source/g/gunicorn/gunicorn-0.16.1.tar.gz)
+ $(DL_DIR)/gunicorn-0.16.1.tar.gz)
$(call HostPython,, \
$(STAGING_DIR_ROOT)/usr/bin/easy_install -d $(PKG_BUILD_DIR)/thirdpart -Z -N \
- https://pypi.python.org/packages/source/s/six/six-1.4.1.tar.gz)
+ $(DL_DIR)/six-1.4.1.tar.gz)
$(call HostPython,, \
$(STAGING_DIR_ROOT)/usr/bin/easy_install -d $(PKG_BUILD_DIR)/thirdpart -Z -N \
- https://pypi.python.org/packages/source/c/chardet/chardet-2.1.1.tar.gz)
+ $(DL_DIR)/chardet-2.1.1.tar.gz)
$(call HostPython,, \
$(STAGING_DIR_ROOT)/usr/bin/easy_install -d $(PKG_BUILD_DIR)/thirdpart -Z -N \
- https://pypi.python.org/packages/2.6/f/flup/flup-1.0.2-py2.6.egg)
+ $(DL_DIR)/flup-1.0.2-py2.6.egg)
$(call HostPython,, \
$(STAGING_DIR_ROOT)/usr/bin/easy_install -d $(PKG_BUILD_DIR)/thirdpart -Z -N \
- https://pypi.python.org/packages/source/l/lockfile/lockfile-0.9.1.tar.gz)
+ $(DL_DIR)/lockfile-0.9.1.tar.gz)
$(call HostPython,, \
$(STAGING_DIR_ROOT)/usr/bin/easy_install -d $(PKG_BUILD_DIR)/thirdpart -Z -N \
- https://pypi.python.org/packages/source/p/python-daemon/python-daemon-1.5.5.tar.gz)
+ $(DL_DIR)/python-daemon-1.5.5.tar.gz)
$(call HostPython,, \
$(STAGING_DIR_ROOT)/usr/bin/easy_install -d $(PKG_BUILD_DIR)/thirdpart -Z -N \
- https://pypi.python.org/packages/source/p/python-dateutil/python-dateutil-1.5.tar.gz)
+ $(DL_DIR)/python-dateutil-1.5.tar.gz)
endef
define Package/seafile-seahub/install
include $(TOPDIR)/rules.mk
PKG_NAME:=snort
-PKG_VERSION:=2.9.7.0
+PKG_VERSION:=2.9.7.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.snort.org/downloads/snort/
-PKG_MD5SUM:=c2a45bc56441ee9456478f219dd8d1e2
+PKG_MD5SUM:=b01e9964827394c39194a0147bc15705
PKG_BUILD_DEPENDS:=librpc
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
--- /dev/null
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=spawn-fcgi
+PKG_VERSION:=1.6.4
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=http://download.lighttpd.net/spawn-fcgi/releases-1.6.x/
+PKG_MD5SUM:=a67c098a50cd625fd12adf61b5dd4c32
+
+PKG_LICENSE:=BSD-3c
+PKG_LICENSE_FILES:=COPYING
+
+PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/spawn-fcgi
+ SUBMENU:=Web Servers/Proxies
+ SECTION:=net
+ CATEGORY:=Network
+ TITLE:=Tool to spawn fastcgi applications
+ URL:=http://redmine.lighttpd.net/projects/spawn-fcgi
+endef
+
+define Package/spawn-fcgi/description
+ spawn-fcgi is used to spawn fastcgi applications
+endef
+
+define Package/spawn-fcgi/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/spawn-fcgi $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,spawn-fcgi))
#!/bin/sh
-[ "$ACTION" = ifup ] && /usr/lib/sqm/run.sh interface ${DEVICE}
+[ "$ACTION" = ifup ] && /usr/lib/sqm/run.sh start ${DEVICE}
reload()
{
-/usr/lib/sqm/run.sh
+/usr/lib/sqm/run.sh start
}
restart()
# either e.g. 100ms or auto
CUR_TARGET_VALUE=$( echo ${CUR_TARGET} | grep -o -e \^'[[:digit:]]\+' )
CUR_TARGET_UNIT=$( echo ${CUR_TARGET} | grep -o -e '[[:alpha:]]\+'\$ )
-# [ ! -z "$CUR_TARGET" ] && sqm_logger "CUR_TARGET_VALUE: $CUR_TARGET_VALUE"
-# [ ! -z "$CUR_TARGET" ] && sqm_logger "CUR_TARGET_UNIT: $CUR_TARGET_UNIT"
+ #[ ! -z "$CUR_TARGET" ] && sqm_logger "CUR_TARGET_VALUE: $CUR_TARGET_VALUE"
+ #[ ! -z "$CUR_TARGET" ] && sqm_logger "CUR_TARGET_UNIT: $CUR_TARGET_UNIT"
AUTO_TARGET=
UNIT_VALID=
;;
esac
fi
- case ${CUR_TARGET_UNIT} in
- auto|Auto|AUTO)
+ # empty field in GUI or undefined GUI variable now defaults to auto
+ if [ -z "${CUR_TARGET_VALUE}" -a -z "${CUR_TARGET_UNIT}" ];
+ then
if [ ! -z "${CUR_LINK_KBPS}" ];
then
TMP_TARGET_US=$( adapt_target_to_slow_link $CUR_LINK_KBPS )
TMP_INTERVAL_STRING=$( adapt_interval_to_slow_link $TMP_TARGET_US )
CUR_TARGET_STRING="target ${TMP_TARGET_US}us ${TMP_INTERVAL_STRING}"
AUTO_TARGET="1"
+ sqm_logger "get_target defaulting to auto."
+ else
+ sqm_logger "required link bandwidth in kbps not passed to get_target()."
+ fi
+ fi
+ # but still allow explicit use of the keyword auto for backward compatibility
+ case ${CUR_TARGET_UNIT} in
+ auto|Auto|AUTO)
+ if [ ! -z "${CUR_LINK_KBPS}" ];
+ then
+ TMP_TARGET_US=$( adapt_target_to_slow_link $CUR_LINK_KBPS )
+ TMP_INTERVAL_STRING=$( adapt_interval_to_slow_link $TMP_TARGET_US )
+ CUR_TARGET_STRING="target ${TMP_TARGET_US}us ${TMP_INTERVAL_STRING}"
+ AUTO_TARGET="1"
+ else
+ sqm_logger "required link bandwidth in kbps not passed to get_target()."
+ fi
+ ;;
+ esac
+
+ case ${CUR_TARGET_UNIT} in
+ default|Default|DEFAULT)
+ if [ ! -z "${CUR_LINK_KBPS}" ];
+ then
+ CUR_TARGET_STRING="" # return nothing so the default target is not over-ridden...
+ AUTO_TARGET="1"
+ #sqm_logger "get_target using qdisc default, no explicit target string passed."
else
sqm_logger "required link bandwidth in kbps not passed to get_target()."
fi
then
if [ -z "${CUR_TARGET_VALUE}" -o -z "${UNIT_VALID}" ];
then
- [ -z "$AUTO_TARGET" ] && sqm_logger "${CUR_TARGET} is not a well formed tc target specifier; e.g.: 5ms (or s, us), or the string auto."
+ [ -z "$AUTO_TARGET" ] && sqm_logger "${CUR_TARGET} is not a well formed tc target specifier; e.g.: 5ms (or s, us), or one of the strings auto or default."
fi
fi
;;
ACTIVE_STATE_PREFIX="SQM_active_on_"
ACTIVE_STATE_FILE_DIR="/var/run/SQM"
mkdir -p ${ACTIVE_STATE_FILE_DIR}
-PROTO_STATE_FILE_LIST=$( ls ${ACTIVE_STATE_FILE_DIR}/${ACTIVE_STATE_PREFIX}* 2> /dev/null )
+
+
+START_ON_IF=$2 # only process this interface
+# TODO if $2 is empty select all interfaces with running sqm instance
+if [ -z ${START_ON_IF} ] ;
+then
+ # find all interfaces with active sqm instance
+ logger -t SQM -s "Trying to start/stop SQM on all interfaces."
+ PROTO_STATE_FILE_LIST=$( ls ${ACTIVE_STATE_FILE_DIR}/${ACTIVE_STATE_PREFIX}* 2> /dev/null )
+else
+ # only try to restart the just hotplugged interface, so reduce the list of interfaces to stop to the specified one
+ logger -t SQM -s "Trying to start/stop SQM on interface ${START_ON_IF}"
+ PROTO_STATE_FILE_LIST=${ACTIVE_STATE_FILE_DIR}/${ACTIVE_STATE_PREFIX}${START_ON_IF}
+fi
+
+
case ${1} in
+ start)
+ # just run through, same as passing no argument
+ ;;
stop)
logger -t SQM -s "run.sh stop"
STOP=$1
;;
- interface)
- START_ON_IF=$2 # only process this interface
- logger -t SQM -s "Trying to re-start SQM on interface ${START_ON_IF}"
- # TODO if $2 is empty just bail...
- if [ -z ${START_ON_IF} ] ;
- then
- logger -t SQM -s "Interface name missing, nothing to do, bailing out"
- return 0
- fi
- # only try to restart the just hotplugged interface, so reduce the list of interfaces to stop to the specified one
- PROTO_STATE_FILE_LIST=${ACTIVE_STATE_FILE_DIR}/${ACTIVE_STATE_PREFIX}${START_ON_IF}
- ;;
esac
+
+
+
+
# the current uci config file does not necessarily contain sections for all interfaces with active
# SQM instances, so use the ACTIVE_STATE_FILES to detect the interfaces on which to stop SQM.
# Currently the .qos scripts start with stopping any existing traffic shaping so this should not
include $(TOPDIR)/rules.mk
PKG_NAME:=sslh
-PKG_VERSION:=v1.16
-PKG_RELEASE:=2
+PKG_VERSION:=v1.17
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://rutschle.net/tech/
-PKG_MD5SUM:=c6e7d1cb0adb15f6efe480e36d98c560
+PKG_MD5SUM:=1fc3ada4bafaca5a9786cc1431f48ed4
PKG_LICENSE:=GPL-2.0+
PKG_LICENSE_FILES:=COPYING
echosrv: $(OBJS) echosrv.o
$(CC) $(CFLAGS) $(LDFLAGS) -o echosrv echosrv.o probe.o common.o $(LIBS)
-@@ -86,7 +82,7 @@ distclean: clean
+@@ -85,7 +81,7 @@ distclean: clean
rm -f tags cscope.*
clean:
PKG_NAME:=strongswan
PKG_VERSION:=5.2.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://download.strongswan.org/ http://download2.strongswan.org/
--- /dev/null
+From 627f870ee6256b4b2e36e9ca768fc578febbccef Mon Sep 17 00:00:00 2001
+From: Tobias Brunner <tobias@strongswan.org>
+Date: Tue, 10 Feb 2015 19:03:44 +0100
+Subject: [PATCH] ikev1: Set protocol ID and SPIs in INITIAL-CONTACT
+ notification payloads
+
+The payload we sent before is not compliant with RFC 2407 and thus some
+peers might abort negotiation (e.g. with an INVALID-PROTOCOL-ID error).
+---
+ src/libcharon/sa/ikev1/tasks/main_mode.c | 15 +++++++++++++--
+ 1 file changed, 13 insertions(+), 2 deletions(-)
+
+diff --git a/src/libcharon/sa/ikev1/tasks/main_mode.c b/src/libcharon/sa/ikev1/tasks/main_mode.c
+index 5065e70ffc25..3ea4a2a85e4f 100644
+--- a/src/libcharon/sa/ikev1/tasks/main_mode.c
++++ b/src/libcharon/sa/ikev1/tasks/main_mode.c
+@@ -213,6 +213,10 @@ static void add_initial_contact(private_main_mode_t *this, message_t *message,
+ {
+ identification_t *idr;
+ host_t *host;
++ notify_payload_t *notify;
++ ike_sa_id_t *ike_sa_id;
++ u_int64_t spi_i, spi_r;
++ chunk_t spi;
+
+ idr = this->ph1->get_id(this->ph1, this->peer_cfg, FALSE);
+ if (idr && !idr->contains_wildcards(idr))
+@@ -224,8 +228,15 @@ static void add_initial_contact(private_main_mode_t *this, message_t *message,
+ if (!charon->ike_sa_manager->has_contact(charon->ike_sa_manager,
+ idi, idr, host->get_family(host)))
+ {
+- message->add_notify(message, FALSE, INITIAL_CONTACT_IKEV1,
+- chunk_empty);
++ notify = notify_payload_create_from_protocol_and_type(
++ PLV1_NOTIFY, PROTO_IKE, INITIAL_CONTACT_IKEV1);
++ ike_sa_id = this->ike_sa->get_id(this->ike_sa);
++ spi_i = ike_sa_id->get_initiator_spi(ike_sa_id);
++ spi_r = ike_sa_id->get_responder_spi(ike_sa_id);
++ spi = chunk_cata("cc", chunk_from_thing(spi_i),
++ chunk_from_thing(spi_r));
++ notify->set_spi_data(notify, spi);
++ message->add_payload(message, (payload_t*)notify);
+ }
+ }
+ }
+--
+1.9.1
+
--- /dev/null
+#
+# Copyright (C) 2006-2014 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=stunnel
+PKG_VERSION:=5.10
+PKG_RELEASE:=1
+
+PKG_LICENSE:=GPL-2.0+
+PKG_MAINTAINER:=Michael Haas <haas@computerlinguist.org>
+PKG_LICENSE_FILES:=COPYING COPYRIGHT.GPL
+
+PKG_SOURCE_URL:=http://stunnel.cybermirror.org/archive/5.x/
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_MD5SUM:=a0edda805eb7d6ea600a230fb0979ea1
+
+PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/stunnel
+ SECTION:=net
+ CATEGORY:=Network
+ DEPENDS:=+libopenssl
+ TITLE:=SSL TCP Wrapper
+ URL:=http://www.stunnel.org/
+endef
+
+define Package/stunnel/description
+ Stunnel is a program that allows you to encrypt arbitrary TCP
+ connections inside SSL (Secure Sockets Layer) available on both Unix
+ and Windows. Stunnel can allow you to secure non-SSL aware daemons and
+ protocols (like POP, IMAP, LDAP, etc) by having Stunnel provide the
+ encryption, requiring no changes to the daemon's code.
+endef
+
+define Package/stunnel/conffiles
+/etc/stunnel/stunnel.conf
+endef
+
+
+CONFIGURE_ARGS+= \
+ --with-random=/dev/urandom \
+ --with-threads=fork \
+ --with-ssl=$(STAGING_DIR)/usr \
+ --disable-libwrap \
+ --disable-systemd
+
+ifeq ($(CONFIG_IPV6),n)
+CONFIGURE_ARGS+= \
+ --disable-ipv6
+endif
+
+define Build/Compile
+ mkdir -p $(PKG_INSTALL_DIR)/etc/stunnel
+ echo '#dummy' > $(PKG_INSTALL_DIR)/etc/stunnel/stunnel.pem
+ $(call Build/Compile/Default)
+endef
+
+define Package/stunnel/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/stunnel $(1)/usr/bin/
+ $(INSTALL_DIR) $(1)/usr/lib/stunnel
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/stunnel/libstunnel.so $(1)/usr/lib/stunnel/
+ $(INSTALL_DIR) $(1)/etc/stunnel
+ $(INSTALL_CONF) ./files/stunnel.conf $(1)/etc/stunnel/stunnel.conf
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/stunnel.init $(1)/etc/init.d/stunnel
+endef
+
+$(eval $(call BuildPackage,stunnel))
--- /dev/null
+; Drop privileges
+setuid = nobody
+setgid = nogroup
+
+; When running under procd, stay in foreground
+foreground = yes
+
+; Don't log to stderr, use syslog
+syslog = yes
+
+; 1-7. Use 7 for greatest verbosity
+;debug = 5
+
+; Starting here, enter your services or uncomment the examples
+
+; Example:
+; If your local httpd does not support HTTPS, use stunnel in remote
+; mode to forward TLS connections coming in on port 443 to non-TLS
+; on port 80.
+; Make sure that the cert is available.
+;[httpd]
+;accept = 443
+;connect = 127.0.0.1:80
+;cert = /etc/stunnel/stunnel.pem
+
+; Example:
+; If your local email client does not support TLS,
+; use stunnel in client mode to forward non-TLS connections on
+; port 143 to TLS-enabled servername:993.
+;[imap]
+;client = yes
+;accept = 143
+;connect = servername:993
+; Disable peer verification - be sure to understand the limitations of peer
+; verification in stunnel when enabling.
+;verify = 0
+
+; Default client section:
+; stunnel requires at least one section to start successfully.
+; You can safely remove this section once you have configured
+; your own. We use client mode here as server requires a certificate.
+[dummy]
+client = yes
+accept = localhost:6000
+connect = localhost:6001
--- /dev/null
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2006-2008 OpenWrt.org
+
+START=90
+USE_PROCD=1
+
+start_service() {
+ procd_open_instance
+ procd_set_param command /usr/bin/stunnel /etc/stunnel/stunnel.conf
+ procd_set_param respawn # respawn automatically if something died
+ procd_close_instance
+}
--- /dev/null
+--- a/src/prototypes.h
++++ b/src/prototypes.h
+@@ -559,7 +559,7 @@ extern GETNAMEINFO s_getnameinfo;
+
+ #endif /* USE_WIN32 */
+
+-int getnameinfo(const struct sockaddr *, int, char *, int, char *, int, int);
++int getnameinfo(const struct sockaddr *, socklen_t, char *, socklen_t, char *, socklen_t, unsigned int);
+
+ #endif /* !defined HAVE_GETNAMEINFO */
+
+--- a/src/resolver.c
++++ b/src/resolver.c
+@@ -535,8 +535,9 @@ const char *s_gai_strerror(int err) {
+ /* implementation is limited to functionality needed by stunnel */
+
+ #ifndef HAVE_GETNAMEINFO
+-int getnameinfo(const struct sockaddr *sa, int salen,
+- char *host, int hostlen, char *serv, int servlen, int flags) {
++int getnameinfo(const struct sockaddr *sa, socklen_t salen,
++ char *host, socklen_t hostlen, char *serv, socklen_t servlen,
++ unsigned int flags) {
+
+ #if defined(USE_WIN32) && !defined(_WIN32_WCE)
+ if(s_getnameinfo)
--- /dev/null
+--- a/configure
++++ b/configure
+@@ -5646,66 +5646,66 @@ done
+
+
+
+-for flag in -fstack-protector; do
+- as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh`
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
+-$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
+-if eval \${$as_CACHEVAR+:} false; then :
+- $as_echo_n "(cached) " >&6
+-else
+-
+- ax_check_save_flags=$CFLAGS
+- CFLAGS="$CFLAGS $flag"
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-
+-int
+-main ()
+-{
+-
+- ;
+- return 0;
+-}
+-_ACEOF
+-if ac_fn_c_try_compile "$LINENO"; then :
+- eval "$as_CACHEVAR=yes"
+-else
+- eval "$as_CACHEVAR=no"
+-fi
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+- CFLAGS=$ax_check_save_flags
+-fi
+-eval ac_res=\$$as_CACHEVAR
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+-$as_echo "$ac_res" >&6; }
+-if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then :
+- if ${CFLAGS+:} false; then :
+- case " $CFLAGS " in
+- *" $flag "*)
+- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains \$flag"; } >&5
+- (: CFLAGS already contains $flag) 2>&5
+- ac_status=$?
+- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+- test $ac_status = 0; }
+- ;;
+- *)
+- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$flag\""; } >&5
+- (: CFLAGS="$CFLAGS $flag") 2>&5
+- ac_status=$?
+- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+- test $ac_status = 0; }
+- CFLAGS="$CFLAGS $flag"
+- ;;
+- esac
+-else
+- CFLAGS="$flag"
+-fi
+-
+-else
+- :
+-fi
+-
+-done
++#for flag in -fstack-protector; do
++# as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh`
++#{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
++#$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
++#if eval \${$as_CACHEVAR+:} false; then :
++# $as_echo_n "(cached) " >&6
++#else
++#
++# ax_check_save_flags=$CFLAGS
++# CFLAGS="$CFLAGS $flag"
++# cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++#/* end confdefs.h. */
++
++#int
++#main ()
++#{
++#
++# ;
++# return 0;
++#}
++#_ACEOF
++#if ac_fn_c_try_compile "$LINENO"; then :
++# eval "$as_CACHEVAR=yes"
++#else
++# eval "$as_CACHEVAR=no"
++#fi
++#rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++# CFLAGS=$ax_check_save_flags
++#fi
++#eval ac_res=\$$as_CACHEVAR
++# { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
++#$as_echo "$ac_res" >&6; }
++#if test x"`eval 'as_val=${'$as_CACHEVAR'};$as_echo "$as_val"'`" = xyes; then :
++# if ${CFLAGS+:} false; then :
++# case " $CFLAGS " in
++# *" $flag "*)
++# { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains \$flag"; } >&5
++# (: CFLAGS already contains $flag) 2>&5
++# ac_status=$?
++# $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++# test $ac_status = 0; }
++# ;;
++# *)
++# { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$flag\""; } >&5
++# (: CFLAGS="$CFLAGS $flag") 2>&5
++# ac_status=$?
++# $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++# test $ac_status = 0; }
++# CFLAGS="$CFLAGS $flag"
++# ;;
++# esac
++#else
++# CFLAGS="$flag"
++#fi
++#
++#else
++# :
++#fi
++#
++#done
+
+
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -71,7 +71,7 @@ AX_APPEND_COMPILE_FLAGS([-Wformat=2])
+ AX_APPEND_COMPILE_FLAGS([-Wconversion])
+ AX_APPEND_COMPILE_FLAGS([-Wno-long-long])
+ AX_APPEND_COMPILE_FLAGS([-Wno-deprecated-declarations])
+-AX_APPEND_COMPILE_FLAGS([-fstack-protector])
++#AX_APPEND_COMPILE_FLAGS([-fstack-protector])
+ AX_APPEND_COMPILE_FLAGS([-fPIE])
+ AX_APPEND_COMPILE_FLAGS([-D_FORTIFY_SOURCE=2])
+ AX_APPEND_LINK_FLAGS([-fPIE -pie])
define Package/tor
$(call Package/tor/Default)
TITLE:=An anonymous Internet communication system
- DEPENDS:=+libevent2 +libopenssl +libpthread +librt +SSP_SUPPORT:libssp
+ DEPENDS:=+libevent2 +libopenssl +libpthread +librt
endef
define Package/tor/description
PKG_NAME:=transmission
PKG_VERSION:=2.84
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://download-origin.transmissionbt.com/files/ http://mirrors.m0k.org/transmission/files
---- a/libtransmission/fdlimit.c 2014-07-01 20:08:59.000000000 +0300
-+++ b/libtransmission/fdlimit.c 2014-07-13 13:30:17.000000000 +0300
-@@ -22,7 +22,8 @@
+--- a/libtransmission/fdlimit.c
++++ b/libtransmission/fdlimit.c
+@@ -22,11 +22,6 @@
#include <fcntl.h>
#endif
-
+
-#ifdef HAVE_FALLOCATE64
-+/* no need to define fallocate64 in glibc/eglibc case */
-+#if defined(__UCLIBC__) && (HAVE_FALLOCATE64)
- /* FIXME can't find the right #include voodoo to pick up the declaration.. */
- extern int fallocate64 (int fd, int mode, uint64_t offset, uint64_t len);
+- /* FIXME can't find the right #include voodoo to pick up the declaration.. */
+- extern int fallocate64 (int fd, int mode, uint64_t offset, uint64_t len);
+-#endif
+-
+ #ifdef HAVE_XFS_XFS_H
+ #include <xfs/xfs.h>
#endif
--- /dev/null
+Index: transmission-2.84/libtransmission/bitfield.c
+===================================================================
+--- transmission-2.84.orig/libtransmission/bitfield.c
++++ transmission-2.84/libtransmission/bitfield.c
+@@ -7,6 +7,8 @@
+ * $Id: bitfield.c 14302 2014-06-29 01:42:38Z jordan $
+ */
+
++#define __NEED_ssize_t
++
+ #include <assert.h>
+ #include <stdlib.h> /* realloc () */
+ #include <string.h> /* memset */
+@@ -15,6 +17,7 @@
+ #include "bitfield.h"
+ #include "utils.h" /* tr_new0 () */
+
++
+ const tr_bitfield TR_BITFIELD_INIT = { NULL, 0, 0, 0, false, false };
+
+ /****
+Index: transmission-2.84/libtransmission/fdlimit.h
+===================================================================
+--- transmission-2.84.orig/libtransmission/fdlimit.h
++++ transmission-2.84/libtransmission/fdlimit.h
+@@ -11,6 +11,8 @@
+ #error only libtransmission should #include this header.
+ #endif
+
++#define __NEED_off_t
++
+ #include "transmission.h"
+ #include "net.h"
+
PKG_NAME:=udpxy
PKG_SOURCE_VERSION:=c045a1e855a8033c5d70ab3e42271ba5636eb520
-PKG_VERSION:=2014-10-27-$(PKG_SOURCE_VERSION)
-PKG_RELEASE:=2
+PKG_VERSION:=2015-03-08-$(PKG_SOURCE_VERSION)
+PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=git://github.com/pcherenkov/udpxy.git
chipmunk/Makefile | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
-diff --git a/chipmunk/Makefile b/chipmunk/Makefile
-index e402128..fd41dbe 100644
--- a/chipmunk/Makefile
+++ b/chipmunk/Makefile
@@ -32,10 +32,13 @@ DEBUG_ON := -g
BUILDFILE = BUILD
BUILDNO := `cat $(BUILDFILE)`
---
-2.3.1
-
#
-# Copyright (C) 2008-2014 OpenWrt.org
+# Copyright (C) 2008-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PKG_NAME:=wavemon
PKG_VERSION:=0.7.6
-PKG_RELEASE:=1
+PKG_RELEASE:=2
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=http://eden-feed.erg.abdn.ac.uk/wavemon/stable-releases
-PKG_MD5SUM:=c60e25feb8b1785cf14371556f0613f4
+PKG_SOURCE:=v$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://github.com/uoaerg/wavemon/archive
+PKG_MD5SUM:=cd0049f174745d32b4fdf3b63d897bad
PKG_LICENSE:=GPL-2.0+
PKG_LICENSE_FILES:=COPYING
+PKG_MAINTAINER:=Jonathan McCrohan <jmccrohan@gmail.com>
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
define Package/wavemon
SECTION:=net
CATEGORY:=Network
- PKG_MAINTAINER:=Jonathan McCrohan <jmccrohan@gmail.com>
TITLE:=N-curses based wireless network devices monitor
DEPENDS:=+libncurses +libpthread
SUBMENU:=wireless
- URL:=http://eden-feed.erg.abdn.ac.uk/wavemon/
+ URL:=https://github.com/uoaerg/wavemon/releases
endef
define Package/wavemon/description
define Package/wavemon/install
$(INSTALL_DIR) $(1)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/wavemon $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/wavemon $(1)/usr/bin/
endef
$(eval $(call BuildPackage,wavemon))
#
-# Copyright (C) 2007-2014 OpenWrt.org
+# Copyright (C) 2007-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=wget
-PKG_VERSION:=1.16.2
+PKG_VERSION:=1.16.3
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
-PKG_MD5SUM:=50b67a11971ecc6d142e634e8436fc0f
+PKG_MD5SUM:=d2e4455781a70140ae83b54ca594ce21
PKG_MAINTAINER:=Maxim Storchak <m.storchak@gmail.com>
PKG_LICENSE:=GPL-3.0+
PKG_LICENSE_FILES:=COPYING
endef
define Package/wshaper/install
- $(INSTALL_DIR) $(1)/usr/sbin/ $(1)/etc/init.d $(1)/etc/config
+ $(INSTALL_DIR) $(1)/usr/sbin/ $(1)/etc/init.d $(1)/etc/config $(1)/etc/hotplug.d/iface
$(INSTALL_BIN) ./files/wshaper.htb $(1)/usr/sbin/
$(INSTALL_BIN) ./files/wshaper.init $(1)/etc/init.d/wshaper
+ $(INSTALL_BIN) ./files/wshaper.iface $(1)/etc/hotplug.d/iface/10-wshaper
$(INSTALL_DATA) ./files/wshaper.config $(1)/etc/config/wshaper
endef
--- /dev/null
+#!/bin/sh
+
+[ "$ACTION" = ifup ] && /etc/init.d/wshaper enabled && /etc/init.d/wshaper start || exit 0
--- /dev/null
+Index: xl2tpd-1.3.6/xl2tpd.c
+===================================================================
+--- xl2tpd-1.3.6.orig/xl2tpd.c
++++ xl2tpd-1.3.6/xl2tpd.c
+@@ -30,7 +30,7 @@
+ #include <errno.h>
+ #include <unistd.h>
+ #include <time.h>
+-#if (__GLIBC__ < 2)
++#if defined (__GLIBC__) && (__GLIBC__ < 2)
+ # if defined(FREEBSD) || defined(OPENBSD)
+ # include <sys/signal.h>
+ # elif defined(LINUX)
--- /dev/null
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=pianod
+PKG_VERSION:=173
+PKG_RELEASE:=3
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://deviousfish.com/Downloads/pianod/
+PKG_MD5SUM:=be0cec19ea6df1c4bc6c1cac8e253445
+
+PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
+
+PKG_LICENSE:=MIT VARIOUS
+PKG_LICENSE_FILES:=COPYING
+
+PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/pianod
+ SECTION:=sound
+ CATEGORY:=Sound
+ DEPENDS:=+libao +libfaad2 +libmad +libpolarssl +libjson-c +libgcrypt +libpthread
+ TITLE:=Pandora radio daemon
+ USERID:=pianod=88:pianod=88
+ URL:=http://deviousfish.com/pianod/
+endef
+
+define Package/pianod/description
+ pianod is a Pandora music player client with line-oriented and Websocket control interfaces.
+ A simple protocol makes for easy clients, mix scripting, integration with a
+ home automation system, use as multiple-user music system for home or office.
+ Documentation and configuration information can be found at:
+ http://deviousfish.com/pianod/
+endef
+
+define Package/pianod-client
+ SECTION:=sound
+ CATEGORY:=Sound
+ DEPENDS:=+pianod
+ TITLE:=Pandora radio daemon WebUI
+ URL:=http://deviousfish.com/pianod/
+endef
+
+define Package/pianod-client/description
+ Web client UI and remote player viewer for pianod
+ Examples --- (Note: The viewer.* files need not be on the pianod host)
+ Main interface: http://pianod-host:4446/pianod
+ Remote viewer: file:///<path>/viewer.html?server=pianod-host:4446 --or--
+ http://pianod-host:4446/pianod/viewer.html?server=pianod-host:4446
+endef
+
+CONFIGURE_ARGS+= --with-polarssl
+
+PIANOD_CLIENT:=pianod-client-compiled-51.tar.gz
+
+define Download/pianod-client
+ URL:=$(PKG_SOURCE_URL)
+ FILE:=$(PIANOD_CLIENT)
+ MD5SUM:=abbdee5627bcee6a00c8304da8b4e2e7
+endef
+
+define Package/pianod/conffiles
+/etc/pianod/startscript
+/etc/pianod/users
+endef
+
+define Build/Prepare
+ $(call Build/Prepare/Default)
+ ifneq ($(CONFIG_PACKAGE_pianod-client),)
+ $(eval $(call Download,pianod-client))
+ mkdir -p $(PKG_BUILD_DIR)/pianod-client
+ $(TAR) -xf $(DL_DIR)/$(PIANOD_CLIENT) --strip=1 -C $(PKG_BUILD_DIR)/pianod-client
+ endif
+endef
+
+define Package/pianod-client/Configure
+endef
+
+define Package/pianod-client/Compile
+endef
+
+define Package/pianod/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/pianod $(1)/usr/bin/
+# These scripts need ksh (install mksh and link)
+# $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/piano $(1)/usr/bin/
+# $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/runmix $(1)/usr/bin/
+
+ $(INSTALL_DIR) $(1)/etc/pianod
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/contrib/startscript-example $(1)/etc/pianod/startscript
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/pianod.init $(1)/etc/init.d/pianod
+endef
+
+define Package/pianod-client/install
+ $(INSTALL_DIR) $(1)/www/pianod
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/pianod-client/*.{html,js,gif,jpeg,css} $(1)/www/pianod/
+endef
+
+$(eval $(call BuildPackage,pianod))
+$(eval $(call BuildPackage,pianod-client))
--- /dev/null
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2015 OpenWrt.org
+
+NAME=pianod
+START=95
+
+USE_PROCD=1
+
+PD_USER=$NAME
+PD_STARTSCRIPT=/etc/$NAME/startscript
+PD_PASSWDFILE=/etc/$NAME/users
+PD_WEBUI=/www/$NAME
+
+start_service() {
+ # Take group ownership of audio devices
+ chown root:$NAME /dev/snd/* /dev/mixer /dev/dsp
+ chmod 664 /dev/snd/* /dev/mixer /dev/dsp
+
+ procd_open_instance
+
+ procd_set_param command "/usr/bin/$NAME"
+
+ procd_append_param command -n $PD_USER
+ procd_append_param command -i "$PD_STARTSCRIPT"
+ procd_append_param command -u "$PD_PASSWDFILE"
+ [ -d "$PD_WEBUI" ] && procd_append_param command -c "$PD_WEBUI"
+ # No HTTPS support without certificates
+ procd_append_param command -s 0
+
+ procd_close_instance
+}
+
+# Wait for service to exit and release sockets
+reload_service() {
+ stop
+ sleep 2
+ start
+}
+
+restart() {
+ reload_service
+}
--- /dev/null
+--- a/src/libwaitress/waitress.c
++++ b/src/libwaitress/waitress.c
+@@ -805,34 +805,37 @@ static WaitressReturn_t WaitressConnect
+ int pollres;
+
+ /* we need shorter timeouts for connect() */
+- fcntl (sock, F_SETFL, O_NONBLOCK);
++ pollres = fcntl (sock, F_SETFL, O_NONBLOCK);
++ assert (pollres != -1);
+
+- /* increase socket receive buffer */
+- const int sockopt = 256*1024;
+- setsockopt (sock, SOL_SOCKET, SO_RCVBUF, &sockopt,
+- sizeof (sockopt));
+-
+- /* non-blocking connect will return immediately */
+- connect (sock, gacurr->ai_addr, gacurr->ai_addrlen);
+-
+- pollres = WaitressPollLoop (sock, POLLOUT, waith->timeout);
+- if (pollres == 0) {
+- ret = WAITRESS_RET_TIMEOUT;
+- } else if (pollres == -1) {
+- ret = WAITRESS_RET_ERR;
+- } else {
+- /* check connect () return value */
+- socklen_t pollresSize = sizeof (pollres);
+- getsockopt (sock, SOL_SOCKET, SO_ERROR, &pollres,
+- &pollresSize);
+- if (pollres != 0) {
+- ret = WAITRESS_RET_CONNECT_REFUSED;
++ if (connect (sock, gacurr->ai_addr, gacurr->ai_addrlen) != -1) {
++ /* working */
++ waith->request.sockfd = sock;
++ break;
++ } else if (errno == EINPROGRESS) {
++ /* wait for connect to succeed */
++ pollres = WaitressPollLoop (sock, POLLOUT, waith->timeout);
++ if (pollres == 0) {
++ ret = WAITRESS_RET_TIMEOUT;
++ } else if (pollres == -1) {
++ ret = WAITRESS_RET_ERR;
+ } else {
+- /* this one is working */
+- waith->request.sockfd = sock;
+- break;
++ /* check connect () return value */
++ socklen_t pollresSize = sizeof (pollres);
++ getsockopt (sock, SOL_SOCKET, SO_ERROR, &pollres,
++ &pollresSize);
++ if (pollres != 0) {
++ ret = WAITRESS_RET_CONNECT_REFUSED;
++ } else {
++ /* this one is working */
++ waith->request.sockfd = sock;
++ break;
++ }
+ }
++ } else {
++ ret = WAITRESS_RET_ERR;
+ }
++
+ close (sock);
+ }
+ }
+--- a/src/libfootball/fb_service.c
++++ b/src/libfootball/fb_service.c
+@@ -111,6 +111,8 @@ static bool fb_setup_socket (FB_SERVICE
+ service->socket [which] = 0;
+ } else {
+ fb_perror ("socket");
++ // Element must be zero (not -1)
++ service->socket [which] = 0;
+ };
+ return false;
+ }
--- /dev/null
+--- a/configure.ac
++++ b/configure.ac
+@@ -31,8 +31,6 @@ AC_CHECK_LIB([pthread], [pthread_create]
+ # with it, but don't consider it an error.
+ # PKG_CHECK_MODULES only validates that pkg-config returns stuff; it doesn't
+ # validate that these are correct, so check lib to make sure they're right.
+-PKG_CHECK_MODULES([gnutls], [gnutls],,
+- [AC_MSG_WARN([No pkg-config for libgnutls])])
+ PKG_CHECK_MODULES([ao], [ao],,
+ [AC_MSG_WARN([No pkg-config for libao])])
+ PKG_CHECK_MODULES([mad], [mad],,
+@@ -42,12 +40,28 @@ PKG_CHECK_MODULES([json], [json-c],,
+ [PKG_CHECK_MODULES([json], [json0],,
+ [AC_MSG_WARN([No pkg-config for json-c (aka libjson0, libjson)])])])])
+
++
+ # Network communication stuff:
+ AC_CHECK_LIB([gcrypt], [gcry_cipher_open],,
+ [AC_MSG_ERROR([Cannot find required library: libgcrypt],1)])
+-AC_CHECK_LIB([gnutls], [gnutls_record_recv],,
++# Check for SSL option
++AC_ARG_WITH(polarssl, [ --with-polarssl Build waitress with PolarSSL (default GNUTLS)], [
++ AC_MSG_RESULT(>>Using PolarSSL)
++ HAS_POLARSSL=1
++ AC_DEFINE([USE_POLARSSL], 1, [Build for PolarSSL])
++ PKG_CHECK_MODULES([polarssl], [polarssl],,
++ [AC_MSG_WARN([No pkg-config for libpolarssl])])
++ AC_CHECK_LIB([polarssl], [ssl_set_session],,
++ [AC_MSG_ERROR([Cannot find required library: libpolarssl (aka polarssl)],1)])] )
++AM_CONDITIONAL([USE_POLARSSL],[test "x$HAS_POLARSSL" = "x1"])
++
++if test "x$HAS_POLARSSL" != x1 ; then
++ PKG_CHECK_MODULES([gnutls], [gnutls],,
++ [AC_MSG_WARN([No pkg-config for libgnutls])])
++ AC_CHECK_LIB([gnutls], [gnutls_record_recv],,
+ [AC_MSG_ERROR([Cannot find required library: libgnutls (aka gnutls)],1)])
+-AC_CHECK_FUNCS(gnutls_transport_set_int2 gnutls_sec_param_to_pk_bits)
++ AC_CHECK_FUNCS(gnutls_transport_set_int2 gnutls_sec_param_to_pk_bits)
++fi
+
+ # Bloody json library may be linked via -ljson, or -ljson-c depending on
+ # the platform. Try both.
--- /dev/null
+--- a/src/libpiano/config.h
++++ /dev/null
+@@ -1 +0,0 @@
+-#define PACKAGE "libpiano"
+--- a/src/libwaitress/config.h
++++ /dev/null
+@@ -1 +0,0 @@
+-#define PACKAGE "libwaitress"
+--- a/src/libpiano/piano.h
++++ b/src/libpiano/piano.h
+@@ -39,6 +39,8 @@ THE SOFTWARE.
+ * http://pan-do-ra-api.wikia.com
+ */
+
++#define LIBPIANO_NAME "libpiano"
++
+ #define PIANO_RPC_HOST "tuner.pandora.com"
+ #define PIANO_RPC_PATH "/services/json/?"
+
+--- a/src/libwaitress/waitress.c
++++ b/src/libwaitress/waitress.c
+@@ -918,14 +918,14 @@ static WaitressReturn_t WaitressSendRequ
+ if (WaitressProxyEnabled (waith) && !waith->url.tls) {
+ snprintf (buf, WAITRESS_BUFFER_SIZE,
+ "%s http://%s:%s/%s HTTP/" WAITRESS_HTTP_VERSION "\r\n"
+- "Host: %s\r\nUser-Agent: " PACKAGE "\r\nConnection: Close\r\n",
++ "Host: %s\r\nUser-Agent: " LIBWAITRESS_NAME "\r\nConnection: Close\r\n",
+ (waith->method == WAITRESS_METHOD_GET ? "GET" : "POST"),
+ waith->url.host,
+ WaitressDefaultPort (&waith->url), path, waith->url.host);
+ } else {
+ snprintf (buf, WAITRESS_BUFFER_SIZE,
+ "%s /%s HTTP/" WAITRESS_HTTP_VERSION "\r\n"
+- "Host: %s\r\nUser-Agent: " PACKAGE "\r\nConnection: Close\r\n",
++ "Host: %s\r\nUser-Agent: " LIBWAITRESS_NAME "\r\nConnection: Close\r\n",
+ (waith->method == WAITRESS_METHOD_GET ? "GET" : "POST"),
+ path, waith->url.host);
+ }
+--- a/src/libwaitress/waitress.h
++++ b/src/libwaitress/waitress.h
+@@ -29,6 +29,8 @@ THE SOFTWARE.
+ #include <stdbool.h>
+ #include <gnutls/gnutls.h>
+
++#define LIBWAITRESS_NAME "libwaitress"
++
+ #define WAITRESS_BUFFER_SIZE 10*1024
+
+ typedef enum {
+--- a/src/libpiano/request.c
++++ b/src/libpiano/request.c
+@@ -40,6 +40,7 @@ THE SOFTWARE.
+ #include <stdio.h>
+ #include <string.h>
+ /* needed for urlencode */
++#include <config.h>
+ #include <waitress.h>
+
+ #include "piano.h"
--- /dev/null
+--- a/src/libwaitress/waitress.h
++++ b/src/libwaitress/waitress.h
+@@ -27,7 +27,12 @@ THE SOFTWARE.
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <stdbool.h>
++
++#if defined(USE_POLARSSL)
++typedef struct _polarssl_ctx polarssl_ctx;
++#else
+ #include <gnutls/gnutls.h>
++#endif
+
+ #define LIBWAITRESS_NAME "libwaitress"
+
+@@ -102,8 +107,9 @@ typedef struct {
+ WaitressUrl_t url;
+ WaitressUrl_t proxy;
+
++#if !defined(USE_POLARSSL)
+ gnutls_certificate_credentials_t tlsCred;
+-
++#endif
+ /* per-request data */
+ struct {
+ int sockfd;
+@@ -121,7 +127,11 @@ typedef struct {
+ WaitressReturn_t (*read) (void *, char *, const size_t, size_t *);
+ WaitressReturn_t (*write) (void *, const char *, const size_t);
+
++#if defined(USE_POLARSSL)
++ polarssl_ctx* sslCtx;
++#else
+ gnutls_session_t tlsSession;
++#endif
+ } request;
+ } WaitressHandle_t;
+
+--- a/src/pianod.c
++++ b/src/pianod.c
+@@ -531,8 +531,11 @@ static bool initialize_libraries (APPSTA
+ gcry_check_version (NULL);
+ gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
+ gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
++
++#if !defined(USE_POLARSSL)
+ int crystatus = gnutls_global_init ();
+ if (crystatus == GNUTLS_E_SUCCESS) {
++#endif
+ PianoReturn_t status = PianoInit (&app->ph, app->settings.partnerUser, app->settings.partnerPassword,
+ app->settings.device, app->settings.inkey, app->settings.outkey);
+ if (status == PIANO_RET_OK) {
+@@ -545,11 +548,13 @@ static bool initialize_libraries (APPSTA
+ } else {
+ flog (LOG_ERROR, "initialize_libraries: PianoInit: %s", PianoErrorToStr (status));
+ }
++#if !defined(USE_POLARSSL)
+ gnutls_global_deinit ();
+ } else {
+ flog (LOG_ERROR, "initialize_libraries: gnutls_global_init: %s", gcry_strerror (crystatus));
+
+ }
++#endif
+ return false;
+ }
+
+@@ -728,7 +733,9 @@ int main (int argc, char **argv) {
+ PianoDestroyPlaylist (app.song_history);
+ PianoDestroyPlaylist (app.playlist);
+ WaitressFree (&app.waith);
++#if !defined(USE_POLARSSL)
+ gnutls_global_deinit ();
++#endif
+ settings_destroy (&app.settings);
+ }
+
+--- a/src/libwaitress/waitress.c
++++ b/src/libwaitress/waitress.c
+@@ -41,11 +41,33 @@ THE SOFTWARE.
+ #include <assert.h>
+ #include <stdint.h>
+
+-#include <gnutls/x509.h>
+
+ #include "config.h"
+ #include "waitress.h"
+
++#if defined(USE_POLARSSL)
++
++#include <polarssl/ssl.h>
++#include <polarssl/entropy.h>
++#include <polarssl/ctr_drbg.h>
++#include <polarssl/x509.h>
++#include <polarssl/sha1.h>
++
++struct _polarssl_ctx
++{
++ ssl_context ssl;
++ ssl_session session;
++ entropy_context entrophy;
++ ctr_drbg_context rnd;
++};
++
++#else
++
++// Use gnutls by default (USE_POLARSSL not defined)
++#include <gnutls/x509.h>
++
++#endif
++
+ #define strcaseeq(a,b) (strcasecmp(a,b) == 0)
+ #define WAITRESS_HTTP_VERSION "1.1"
+
+@@ -56,6 +78,13 @@ typedef struct {
+
+ static WaitressReturn_t WaitressReceiveHeaders (WaitressHandle_t *, size_t *);
+
++// gnutls wants (void *) and polarssl want (unsigned char *)
++#if defined(USE_POLARSSL)
++#define BUFFER_CAST unsigned char
++#else
++#define BUFFER_CAST void
++#endif
++
+ #define READ_RET(buf, count, size) \
+ if ((wRet = waith->request.read (waith, buf, count, size)) != \
+ WAITRESS_RET_OK) { \
+@@ -444,7 +473,7 @@ static int WaitressPollLoop (int fd, sho
+ * @param write count bytes
+ * @return number of written bytes or -1 on error
+ */
+-static ssize_t WaitressPollWrite (void *data, const void *buf, size_t count) {
++static ssize_t WaitressPollWrite (void *data, const BUFFER_CAST *buf, size_t count) {
+ int pollres = -1;
+ ssize_t retSize;
+ WaitressHandle_t *waith = data;
+@@ -478,13 +507,20 @@ static WaitressReturn_t WaitressOrdinary
+ return waith->request.readWriteRet;
+ }
+
+-static WaitressReturn_t WaitressGnutlsWrite (void *data, const char *buf,
++static WaitressReturn_t WaitressTlsWrite (void *data, const char *buf,
+ const size_t size) {
+ WaitressHandle_t *waith = data;
++#if defined(USE_POLARSSL)
++
++ if (ssl_write (&waith->request.sslCtx->ssl, buf, size) < 0) {
++ return WAITRESS_RET_TLS_WRITE_ERR;
++ }
++#else
+
+ if (gnutls_record_send (waith->request.tlsSession, buf, size) < 0) {
+ return WAITRESS_RET_TLS_WRITE_ERR;
+ }
++#endif
+ return waith->request.readWriteRet;
+ }
+
+@@ -494,7 +530,7 @@ static WaitressReturn_t WaitressGnutlsWr
+ * @param buffer size
+ * @return number of read bytes or -1 on error
+ */
+-static ssize_t WaitressPollRead (void *data, void *buf, size_t count) {
++static ssize_t WaitressPollRead (void *data, BUFFER_CAST *buf, size_t count) {
+ int pollres = -1;
+ ssize_t retSize;
+ WaitressHandle_t *waith = data;
+@@ -531,16 +567,34 @@ static WaitressReturn_t WaitressOrdinary
+ return waith->request.readWriteRet;
+ }
+
+-static WaitressReturn_t WaitressGnutlsRead (void *data, char *buf,
++static WaitressReturn_t WaitressTlsRead (void *data, char *buf,
+ const size_t size, size_t *retSize) {
+ WaitressHandle_t *waith = data;
+
++#if defined(USE_POLARSSL)
++ int ret;
++
++ *retSize = 0;
++ waith->request.readWriteRet = WAITRESS_RET_OK;
++ ret = ssl_read (&waith->request.sslCtx->ssl, buf, size);
++
++ if (ret < 0) {
++ if (ret != POLARSSL_ERR_SSL_PEER_CLOSE_NOTIFY) {
++ waith->request.readWriteRet = WAITRESS_RET_TLS_READ_ERR;
++ }
++
++ return waith->request.readWriteRet;
++ }
++
++ *retSize = ret;
++#else
+ ssize_t ret = gnutls_record_recv (waith->request.tlsSession, buf, size);
+ if (ret < 0) {
+ return WAITRESS_RET_TLS_READ_ERR;
+ } else {
+ *retSize = ret;
+ }
++#endif
+ return waith->request.readWriteRet;
+ }
+
+@@ -727,10 +781,28 @@ static int WaitressParseStatusline (cons
+ /* verify server certificate
+ */
+ static WaitressReturn_t WaitressTlsVerify (const WaitressHandle_t *waith) {
++
++#if defined(USE_POLARSSL)
++ unsigned char fingerprint[20];
++
++ const x509_crt* cert = ssl_get_peer_cert (&waith->request.sslCtx->ssl);
++
++ if (NULL == cert) {
++ return WAITRESS_RET_TLS_HANDSHAKE_ERR;
++ }
++
++ sha1 (cert->raw.p, cert->raw.len, fingerprint);
++
++ if (memcmp (fingerprint, waith->tlsFingerprint, sizeof (fingerprint)) != 0) {
++ return WAITRESS_RET_TLS_FINGERPRINT_MISMATCH;
++ }
++
++#else
+ gnutls_session_t session = waith->request.tlsSession;
+ unsigned int certListSize;
+ const gnutls_datum_t *certList;
+ gnutls_x509_crt_t cert;
++ char fingerprint[20];
+
+ if (gnutls_certificate_type_get (session) != GNUTLS_CRT_X509) {
+ return WAITRESS_RET_TLS_HANDSHAKE_ERR;
+@@ -750,7 +822,6 @@ static WaitressReturn_t WaitressTlsVerif
+ return WAITRESS_RET_TLS_HANDSHAKE_ERR;
+ }
+
+- char fingerprint[20];
+ size_t fingerprintSize = sizeof (fingerprint);
+ if (gnutls_x509_crt_get_fingerprint (cert, GNUTLS_DIG_SHA1, fingerprint,
+ &fingerprintSize) != 0) {
+@@ -763,7 +834,7 @@ static WaitressReturn_t WaitressTlsVerif
+ }
+
+ gnutls_x509_crt_deinit (cert);
+-
++#endif
+ return WAITRESS_RET_OK;
+ }
+
+@@ -876,6 +947,12 @@ static WaitressReturn_t WaitressConnect
+ }
+ }
+
++#if defined(USE_POLARSSL)
++ ssl_set_hostname (&waith->request.sslCtx->ssl, waith->url.host);
++ if (ssl_handshake (&waith->request.sslCtx->ssl) != 0) {
++ return WAITRESS_RET_TLS_HANDSHAKE_ERR;
++ }
++#else
+ /* Ignore return code as connection will likely still succeed */
+ gnutls_server_name_set (waith->request.tlsSession, GNUTLS_NAME_DNS,
+ waith->url.host, strlen (waith->url.host));
+@@ -883,14 +960,15 @@ static WaitressReturn_t WaitressConnect
+ if (gnutls_handshake (waith->request.tlsSession) != GNUTLS_E_SUCCESS) {
+ return WAITRESS_RET_TLS_HANDSHAKE_ERR;
+ }
++#endif
+
+ if ((wRet = WaitressTlsVerify (waith)) != WAITRESS_RET_OK) {
+ return wRet;
+ }
+
+ /* now we can talk encrypted */
+- waith->request.read = WaitressGnutlsRead;
+- waith->request.write = WaitressGnutlsWrite;
++ waith->request.read = WaitressTlsRead;
++ waith->request.write = WaitressTlsWrite;
+ }
+
+ return WAITRESS_RET_OK;
+@@ -1116,6 +1194,21 @@ WaitressReturn_t WaitressFetchCall (Wait
+ waith->request.contentLengthKnown = false;
+
+ if (waith->url.tls) {
++#if defined(USE_POLARSSL)
++ waith->request.sslCtx = calloc (1, sizeof(polarssl_ctx));
++
++ entropy_init (&waith->request.sslCtx->entrophy);
++ ctr_drbg_init (&waith->request.sslCtx->rnd, entropy_func, &waith->request.sslCtx->entrophy, "libwaitress", 11);
++ ssl_init (&waith->request.sslCtx->ssl);
++
++ ssl_set_endpoint (&waith->request.sslCtx->ssl, SSL_IS_CLIENT);
++ ssl_set_authmode (&waith->request.sslCtx->ssl, SSL_VERIFY_NONE);
++ ssl_set_rng (&waith->request.sslCtx->ssl, ctr_drbg_random, &waith->request.sslCtx->rnd);
++ ssl_set_session (&waith->request.sslCtx->ssl, &waith->request.sslCtx->session);
++ ssl_set_bio (&waith->request.sslCtx->ssl,
++ WaitressPollRead, waith,
++ WaitressPollWrite, waith);
++#else
+ gnutls_init (&waith->request.tlsSession, GNUTLS_CLIENT);
+ gnutls_set_default_priority (waith->request.tlsSession);
+
+@@ -1133,6 +1226,7 @@ WaitressReturn_t WaitressFetchCall (Wait
+ WaitressPollRead);
+ gnutls_transport_set_push_function (waith->request.tlsSession,
+ WaitressPollWrite);
++#endif
+ }
+
+ /* buffer is required for connect already */
+@@ -1144,15 +1238,22 @@ WaitressReturn_t WaitressFetchCall (Wait
+ if ((wRet = WaitressSendRequest (waith)) == WAITRESS_RET_OK) {
+ wRet = WaitressReceiveResponse (waith);
+ }
++#if !defined(USE_POLARSSL)
+ if (waith->url.tls) {
+ gnutls_bye (waith->request.tlsSession, GNUTLS_SHUT_RDWR);
+ }
++#endif
+ }
+
+ /* cleanup */
+ if (waith->url.tls) {
++#if defined(USE_POLARSSL)
++ ssl_free (&waith->request.sslCtx->ssl);
++ free (waith->request.sslCtx);
++#else
+ gnutls_deinit (waith->request.tlsSession);
+ gnutls_certificate_free_credentials (waith->tlsCred);
++#endif
+ }
+ if (waith->request.sockfd != -1) {
+ close (waith->request.sockfd);
define Package/pulseaudio-daemon
$(call Package/pulseaudio/Default)
+ DEPENDS+=+libjson-c
endef
define Package/pulseaudio/Default/description
include $(TOPDIR)/rules.mk
PKG_NAME:=bluez
-PKG_VERSION:=5.28
+PKG_VERSION:=5.29
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://www.kernel.org/pub/linux/bluetooth/
-PKG_MD5SUM:=bc20a8285530758c68f6a60e4ca62a15
+PKG_MD5SUM:=aa9dc91689695a486c78c131cd68673e
PKG_LICENSE:=GPL-2.0+
PKG_LICENSE_FILES:=COPYING
endef
define Package/bluez-utils/conffiles
-/etc/bluetooth/hcid.conf
-/etc/bluetooth/rfcomm.conf
/etc/config/bluetooth
endef
--- a/Makefile.in
+++ b/Makefile.in
-@@ -2038,7 +2038,7 @@ unit_tests = $(am__append_32) unit/test-
+@@ -2055,7 +2055,7 @@ unit_tests = $(am__append_32) unit/test-
@CLIENT_TRUE@ monitor/uuid.h monitor/uuid.c
@CLIENT_TRUE@client_bluetoothctl_LDADD = gdbus/libgdbus-internal.la @GLIB_LIBS@ @DBUS_LIBS@ \
@MONITOR_TRUE@monitor_btmon_SOURCES = monitor/main.c monitor/bt.h \
@MONITOR_TRUE@ monitor/display.h monitor/display.c \
-@@ -2245,13 +2245,13 @@ unit_tests = $(am__append_32) unit/test-
+@@ -2226,7 +2226,7 @@ unit_tests = $(am__append_32) unit/test-
+ @EXPERIMENTAL_TRUE@tools_hcieventmask_LDADD = lib/libbluetooth-internal.la
+ @EXPERIMENTAL_TRUE@tools_btmgmt_SOURCES = tools/btmgmt.c src/uuid-helper.c client/display.c
+ @EXPERIMENTAL_TRUE@tools_btmgmt_LDADD = lib/libbluetooth-internal.la src/libshared-mainloop.la \
+-@EXPERIMENTAL_TRUE@ -lreadline
++@EXPERIMENTAL_TRUE@ -lreadline -lncurses
+
+ @EXPERIMENTAL_TRUE@tools_btinfo_SOURCES = tools/btinfo.c monitor/bt.h
+ @EXPERIMENTAL_TRUE@tools_btinfo_LDADD = src/libshared-mainloop.la
+@@ -2266,13 +2266,13 @@ unit_tests = $(am__append_32) unit/test-
@READLINE_TRUE@ client/display.h
@READLINE_TRUE@attrib_gatttool_LDADD = lib/libbluetooth-internal.la \
@READLINE_TRUE@tools_obex_server_tool_SOURCES = $(gobex_sources) $(btio_sources) \
@READLINE_TRUE@ tools/obex-server-tool.c
-@@ -2261,13 +2261,13 @@ unit_tests = $(am__append_32) unit/test-
+@@ -2282,13 +2282,13 @@ unit_tests = $(am__append_32) unit/test-
@READLINE_TRUE@ client/display.h client/display.c
@READLINE_TRUE@tools_bluetooth_player_LDADD = gdbus/libgdbus-internal.la \
include $(TOPDIR)/rules.mk
PKG_NAME:=btrfs-progs
-PKG_VERSION:=3.17.3
+PKG_VERSION:=3.19.1
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-v$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/linux/kernel/people/kdave/btrfs-progs/
-PKG_MD5SUM:=6716b4b109dd909af63ab3becbad67a6
+PKG_MD5SUM:=ec3b3c99df18633ddc9e41f0680c5a51
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-v$(PKG_VERSION)
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_BUILD_PARALLEL:=1
PKG_BUILD_DEPENDS:=libacl
+PKG_FIXUP:=autoreconf
+
include $(INCLUDE_DIR)/package.mk
define Package/btrfs-progs
SECTION:=utils
CATEGORY:=Utilities
SUBMENU:=Filesystem
- DEPENDS:=+libattr +libuuid +zlib +libext2fs +libblkid +liblzo +libpthread
+ DEPENDS:=+libattr +libuuid +zlib +libblkid +liblzo +libpthread
TITLE:=Btrfs filesystems utilities
URL:=http://btrfs.wiki.kernel.org/
endef
GPL and open for contribution from anyone.
endef
-progs = btrfs btrfsck btrfs-convert btrfs-debug-tree btrfs-find-root \
- btrfs-image btrfs-map-logical btrfs-show-super btrfstune \
- btrfs-zero-log fsck.btrfs mkfs.btrfs
-
+progs = btrfs btrfs-debug-tree btrfs-find-root btrfs-image btrfs-map-logical \
+ btrfs-show-super btrfstune btrfs-zero-log fsck.btrfs mkfs.btrfs
-MAKE_FLAGS+=\
- CC="$(TARGET_CC)" \
- CFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" \
- LDFLAGS="$(TARGET_LDFLAGS)" \
- prefix=/usr \
- DESTDIR=$(PKG_INSTALL_DIR) \
- DISABLE_BACKTRACE=1 \
- DISABLE_DOCUMENTATION=1
+CONFIGURE_ARGS += \
+ --disable-backtrace \
+ --disable-convert \
+ --disable-documentation
define Package/btrfs-progs/install
$(INSTALL_DIR) $(1)/usr/lib
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/libbtrfs.so* $(1)/usr/lib
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(addprefix $(PKG_INSTALL_DIR)/usr/bin/, $(progs)) $(1)/usr/bin/
+ ln -s btrfs $(1)/usr/bin/btrfsck
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/btrfs-scan.init $(1)/etc/init.d/btrfs-scan
endef
---- a/mkfs.c
-+++ b/mkfs.c
-@@ -34,7 +34,7 @@
+Index: btrfs-progs-v3.19.1/mkfs.c
+===================================================================
+--- btrfs-progs-v3.19.1.orig/mkfs.c
++++ btrfs-progs-v3.19.1/mkfs.c
+@@ -31,7 +31,7 @@
#include <getopt.h>
#include <uuid/uuid.h>
#include <ctype.h>
-#include <sys/xattr.h>
+#include <attr/xattr.h>
+ #include <limits.h>
+ #include <linux/limits.h>
#include <blkid/blkid.h>
- #include <ftw.h>
- #include "ctree.h"
---- a/props.c
-+++ b/props.c
+Index: btrfs-progs-v3.19.1/props.c
+===================================================================
+--- btrfs-progs-v3.19.1.orig/props.c
++++ btrfs-progs-v3.19.1/props.c
@@ -17,7 +17,7 @@
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <unistd.h>
---- a/cmds-receive.c
-+++ b/cmds-receive.c
-@@ -39,7 +39,7 @@
+Index: btrfs-progs-v3.19.1/cmds-receive.c
+===================================================================
+--- btrfs-progs-v3.19.1.orig/cmds-receive.c
++++ btrfs-progs-v3.19.1/cmds-receive.c
+@@ -34,7 +34,7 @@
#include <sys/ioctl.h>
#include <sys/time.h>
#include <sys/types.h>
#include <uuid/uuid.h>
#include "ctree.h"
---- a/cmds-restore.c
-+++ b/cmds-restore.c
-@@ -34,7 +34,7 @@
+Index: btrfs-progs-v3.19.1/cmds-restore.c
+===================================================================
+--- btrfs-progs-v3.19.1.orig/cmds-restore.c
++++ btrfs-progs-v3.19.1/cmds-restore.c
+@@ -32,7 +32,7 @@
#include <regex.h>
#include <getopt.h>
#include <sys/types.h>
#include "ctree.h"
#include "disk-io.h"
---- a/Makefile
-+++ b/Makefile
-@@ -26,7 +26,7 @@ TESTS = fsck-tests.sh convert-tests.sh
- INSTALL = install
- prefix ?= /usr/local
- bindir = $(prefix)/bin
--lib_LIBS = -luuid -lblkid -lm -lz -llzo2 -L.
-+lib_LIBS = -lattr -luuid -lblkid -lm -lz -llzo2 -L.
- libdir ?= $(prefix)/lib
- incdir = $(prefix)/include/btrfs
- LIBS = $(lib_LIBS) $(libs_static)
+Index: btrfs-progs-v3.19.1/Makefile.in
+===================================================================
+--- btrfs-progs-v3.19.1.orig/Makefile.in
++++ btrfs-progs-v3.19.1/Makefile.in
+@@ -21,7 +21,7 @@ CFLAGS = @CFLAGS@ \
+ LDFLAGS = @LDFLAGS@ \
+ -rdynamic
+
+-LIBS = @UUID_LIBS@ @BLKID_LIBS@ @ZLIB_LIBS@ @LZO2_LIBS@ -L. -pthread
++LIBS = @ATTR_LIBS@ @UUID_LIBS@ @BLKID_LIBS@ @ZLIB_LIBS@ @LZO2_LIBS@ -L. -pthread
+ LIBBTRFS_LIBS = $(LIBS)
+
+ # Static compilation flags
+Index: btrfs-progs-v3.19.1/configure.ac
+===================================================================
+--- btrfs-progs-v3.19.1.orig/configure.ac
++++ btrfs-progs-v3.19.1/configure.ac
+@@ -115,6 +115,9 @@ dnl
+ dnl The default PKG_CHECK_MODULES() action-if-not-found is end the
+ dnl execution with error. The static libs are optional.
+
++PKG_CHECK_MODULES(ATTR, [libattr])
++PKG_STATIC(BLKID_LIBS_STATIC, [libattr])
++
+ PKG_CHECK_MODULES(BLKID, [blkid])
+ PKG_STATIC(BLKID_LIBS_STATIC, [blkid])
+
include $(TOPDIR)/rules.mk
PKG_NAME:=collectd
-PKG_VERSION:=5.4.1
+PKG_VERSION:=5.4.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://collectd.org/files/
-PKG_MD5SUM:=6f56c71c96573a7f4f7fb3bfab185974
+PKG_MD5SUM:=feff9fd0ed89e956d7cf12ba18cfc248
PKG_FIXUP:=autoreconf
PKG_REMOVE_FILES:=aclocal.m4 libltdl/aclocal.m4
$(eval $(call BuildPlugin,madwifi,MadWifi status input,madwifi,))
#$(eval $(call BuildPlugin,mysql,MySQL status input,mysql,+PACKAGE_collectd-mod-mysql:libmysqlclient-r))
$(eval $(call BuildPlugin,memory,physical memory usage input,memory,))
-$(eval $(call BuildPlugin,modbus,read variables through libmodbus,modbus,+PACKAGE_collectd-mod-modbus:libmodbus @BROKEN))
+$(eval $(call BuildPlugin,modbus,read variables through libmodbus,modbus,+PACKAGE_collectd-mod-modbus:libmodbus))
$(eval $(call BuildPlugin,netlink,netlink input,netlink,+PACKAGE_collectd-mod-netlink:ip @BROKEN))
$(eval $(call BuildPlugin,network,network input/output,network))
$(eval $(call BuildPlugin,nginx,nginx status input,nginx,+PACKAGE_collectd-mod-nginx:libcurl))
double tmp = atof (value);
--- a/src/utils_rrdcreate.c
+++ b/src/utils_rrdcreate.c
-@@ -211,6 +211,9 @@ static int rra_get (char ***ret, const v
+@@ -212,6 +212,9 @@ static int rra_get (char ***ret, const v
rts_num = rra_timespans_num;
}
+++ b/version-gen.sh
@@ -2,7 +2,7 @@
- DEFAULT_VERSION="5.4.1.git"
+ DEFAULT_VERSION="5.4.2.git"
-VERSION="`git describe 2> /dev/null | sed -e 's/^collectd-//'`"
+#VERSION="`git describe 2> /dev/null | sed -e 's/^collectd-//'`"
--- a/configure.ac
+++ b/configure.ac
-@@ -568,6 +568,9 @@ AC_CHECK_HEADERS(net/pfvar.h,
+@@ -580,6 +580,9 @@ AC_CHECK_HEADERS(net/pfvar.h,
have_termios_h="no"
AC_CHECK_HEADERS(termios.h, [have_termios_h="yes"])
#
# Checks for typedefs, structures, and compiler characteristics.
#
-@@ -4819,6 +4822,7 @@ plugin_interface="no"
+@@ -4841,6 +4844,7 @@ plugin_interface="no"
plugin_ipmi="no"
plugin_ipvs="no"
plugin_irq="no"
plugin_libvirt="no"
plugin_load="no"
plugin_memory="no"
-@@ -5157,6 +5161,7 @@ AC_PLUGIN([ipmi], [$plugin_ipmi],
+@@ -5179,6 +5183,7 @@ AC_PLUGIN([ipmi], [$plugin_ipmi],
AC_PLUGIN([iptables], [$with_libiptc], [IPTables rule counters])
AC_PLUGIN([ipvs], [$plugin_ipvs], [IPVS connection statistics])
AC_PLUGIN([irq], [$plugin_irq], [IRQ statistics])
AC_PLUGIN([java], [$with_java], [Embed the Java Virtual Machine])
AC_PLUGIN([libvirt], [$plugin_libvirt], [Virtual machine statistics])
AC_PLUGIN([load], [$plugin_load], [System load])
-@@ -5458,6 +5463,7 @@ Configuration:
+@@ -5480,6 +5485,7 @@ Configuration:
protobuf-c . . . . . $have_protoc_c
oracle . . . . . . . $with_oracle
python . . . . . . . $with_python
Features:
daemon mode . . . . . $enable_daemon
-@@ -5502,6 +5508,7 @@ Configuration:
+@@ -5524,6 +5530,7 @@ Configuration:
iptables . . . . . . $enable_iptables
ipvs . . . . . . . . $enable_ipvs
irq . . . . . . . . . $enable_irq
#@BUILD_PLUGIN_JAVA_TRUE@LoadPlugin java
#@BUILD_PLUGIN_LIBVIRT_TRUE@LoadPlugin libvirt
@BUILD_PLUGIN_LOAD_TRUE@@BUILD_PLUGIN_LOAD_TRUE@LoadPlugin load
-@@ -467,6 +468,12 @@
+@@ -502,6 +503,12 @@
# IgnoreSelected true
#</Plugin>
# JVMArg "-Djava.class.path=@prefix@/share/collectd/java/collectd-api.jar"
--- a/src/collectd.conf.pod
+++ b/src/collectd.conf.pod
-@@ -2056,6 +2056,27 @@ and all other interrupts are collected.
+@@ -2077,6 +2077,27 @@ and all other interrupts are collected.
=back
+++ /dev/null
---- a/configure.ac
-+++ b/configure.ac
-@@ -3825,18 +3825,20 @@ AC_ARG_WITH(libsigrok, [AS_HELP_STRING([--with-libsigrok@<:@=PREFIX@:>@], [Path
- with_libsigrok_ldflags="-L$withval/lib"
- fi
- fi
--],[])
-+],[with_libsigrok="yes"])
-
- # libsigrok has a glib dependency
- if test "x$with_libsigrok" = "xyes"
- then
-- if test -z "m4_ifdef([AM_PATH_GLIB_2_0], [yes], [])"
-- then
-- with_libsigrok="no (glib not available)"
-- else
-- AM_PATH_GLIB_2_0([2.28.0],
-- [with_libsigrok_cflags="$with_libsigrok_cflags $GLIB_CFLAGS"; with_libsigrok_ldflags="$with_libsigrok_ldflags $GLIB_LIBS"])
-- fi
-+m4_ifdef([AM_PATH_GLIB_2_0],
-+ [
-+ AM_PATH_GLIB_2_0([2.28.0],
-+ [with_libsigrok_cflags="$with_libsigrok_cflags $GLIB_CFLAGS"; with_libsigrok_ldflags="$with_libsigrok_ldflags $GLIB_LIBS"])
-+ ],
-+ [
-+ with_libsigrok="no (glib not available)"
-+ ]
-+)
- fi
-
- # libsigrok headers
include $(TOPDIR)/rules.mk
PKG_NAME:=cryptsetup
-PKG_VERSION:=1.6.6
+PKG_VERSION:=1.6.7
PKG_RELEASE:=1
PKG_LICENSE:=GPL-2.0+ LGPL-2.1+
PKG_LICENSE_FILES:=COPYING COPYING.LGPL
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/linux/utils/cryptsetup/v1.6
-PKG_MD5SUM:=179c0781de59838a4e39f61b2df5ea48
+PKG_MD5SUM:=918406eb5d2e2f5a7348c432ea9b1473
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) \
$(TARGET_CONFIGURE_OPTS) \
- OPTFLAGS="$(TARGET_CFLAGS) -D_FILE_OFFSET_BITS=64" \
+ OPTFLAGS="$(TARGET_CFLAGS) -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE" \
PREFIX="/usr" \
SBINDIR="/usr/sbin" \
LDFLAGS="$(LDFLAGS)" \
--- /dev/null
+menu "Flashrom configuration"
+ depends on PACKAGE_flashrom
+
+ choice
+ prompt "Default Programmer"
+ default DEFPROG_INTERNAL if FLASHROM_PCI
+ default DEFPROG_LINUX_SPI
+
+ config DEFPROG_INTERNAL
+ depends on FRPROG_INTERNAL
+ bool "Internal"
+
+ config DEFPROG_LINUX_SPI
+ depends on FRPROG_LINUX_SPI
+ bool "Linux SPI"
+
+ config DEFPROG_SERPROG
+ depends on FRPROG_SERPROG
+ bool "Serial"
+
+ config DEFPROG_RAYER_SPI
+ depends on FRPROG_RAYER_SPI
+ bool "Rayer SPI"
+
+ config DEFPROG_PONY_SPI
+ depends on FRPROG_PONY_SPI
+ bool "Pony SPI"
+
+ config DEFPROG_NIC3COM
+ depends on FRPROG_NIC3COM
+ bool "NIC3Com"
+
+ config DEFPROG_GFXNVIDIA
+ depends on FRPROG_GFXNVIDIA
+ bool "GFX Nvidia"
+
+ config DEFPROG_SATASII
+ depends on FRPROG_SATASII
+ bool "SATASII"
+
+# config DEFPROG_ATAHPT
+# depends on FRPROG_ATAHPT
+# bool "Highpoint (HPT) ATA/RAID"
+
+ config DEFPROG_ATAVIA
+ depends on FRPROG_ATAVIA
+ bool "ATAVIA"
+
+ config DEFPROG_FT2232_SPI
+ depends on FRPROG_FT2232_SPI
+ bool "FT2232 SPI"
+
+ config DEFPROG_USBBLASTER_SPI
+ depends on FRPROG_USBBLASTER_SPI
+ bool "USBBlaster SPI"
+
+# config DEFPROG_MSTARDDC_SPI
+# depends on FRPROG_MSTARDDC_SPI
+# bool "MSTAR DDC SPI"
+
+ config DEFPROG_PICKIT2_SPI
+ depends on FRPROG_PICKIT2_SPI
+ bool "PICkit2 SPI"
+
+ config DEFPROG_DUMMY
+ depends on FRPROG_DUMMY
+ bool "Dummy"
+
+ config DEFPROG_DRKAISER
+ depends on FRPROG_DRKAISER
+ bool "Dr. Kaiser"
+
+ config DEFPROG_NICREALTEK
+ depends on FRPROG_NICREALTEK
+ bool "Realtek NICs"
+
+# config DEFPROG_NICNATSEMI
+# depends on FRPROG_NICNATSEMI
+# bool "National Semiconductor NICs"
+
+ config DEFPROG_NICINTEL
+ depends on FRPROG_NICINTEL
+ bool "Intel NICs"
+
+ config DEFPROG_NICINTEL_SPI
+ depends on FRPROG_NICINTEL_SPI
+ bool "Intel NICs SPI"
+
+ config DEFPROG_NICINTEL_EEPROM
+ depends on FRPROG_NICINTEL_EEPROM
+ bool "Intel NICs EEPROM"
+
+ config DEFPROG_OGP_SPI
+ depends on FRPROG_OGP_SPI
+ bool "OGP SPI"
+
+ config DEFPROG_BUSPIRATE_SPI
+ depends on FRPROG_BUSPIRATE_SPI
+ bool "SPI BUS Pirate"
+
+# config DEFPROG_DEDIPROG
+# depends on FRPROG_DEDIPROG
+# bool "Dediprog SF100"
+
+ config DEFPROG_SATAMV
+ depends on FRPROG_SATAMV
+ bool "Marvell SATA"
+
+ config DEFPROG_IT8212
+ depends on FRPROG_IT8212
+ bool "ITE IT8212F PATA"
+ endchoice
+
+
+ menu "Misc Programmers"
+ config FRPROG_LINUX_SPI
+ bool "Linux SPI"
+ default y
+
+# config FRPROG_MSTARDDC_SPI
+# bool "MSTAR DDC"
+# default n
+
+ config FRPROG_DUMMY
+ bool "Dummy"
+ default y
+ endmenu
+
+
+ config FLASHROM_FTDI
+ bool "FTDI Support"
+ default y
+
+ menu "FTDI Programmers"
+ depends on FLASHROM_FTDI
+
+ config FRPROG_FT2232_SPI
+ depends on FLASHROM_FTDI
+ bool "FT2232 SPI"
+ default y
+
+ config FRPROG_USBBLASTER_SPI
+ depends on FLASHROM_FTDI
+ bool "USBBlaster SPI"
+ default y
+ endmenu
+
+
+ config FLASHROM_PCI
+ bool "PCI Support"
+ default y if (TARGET_x86||TARGET_x86_64)
+
+ menu "PCI Programmers"
+ depends on FLASHROM_PCI
+
+ config FRPROG_INTERNAL
+ depends on FLASHROM_PCI
+ bool "Internal"
+ default y
+
+ config FRPROG_RAYER_SPI
+ depends on FLASHROM_PCI
+ bool "Rayer SPI"
+ default y
+
+ config FRPROG_NIC3COM
+ depends on FLASHROM_PCI
+ bool "NIC3Com"
+ default y
+
+ config FRPROG_GFXNVIDIA
+ depends on FLASHROM_PCI
+ bool "GFX Nvidia"
+ default y
+
+ config FRPROG_SATASII
+ depends on FLASHROM_PCI
+ bool "SATASII"
+ default y
+
+# config FRPROG_ATAHPT
+# depends on FLASHROM_PCI
+# bool "Highpoint (HPT) ATA/RAID"
+# default n
+
+ config FRPROG_ATAVIA
+ depends on FLASHROM_PCI
+ bool "ATAVIA"
+ default y
+
+ config FRPROG_IT8212
+ depends on FLASHROM_PCI
+ bool "ITE IT8212F PATA"
+ default y
+
+ config FRPROG_DRKAISER
+ depends on FLASHROM_PCI
+ bool "Dr. Kaiser"
+ default y
+
+ config FRPROG_NICREALTEK
+ depends on FLASHROM_PCI
+ bool "Realtek NICs"
+ default y
+
+# config FRPROG_NICNATSEMI
+# depends on FLASHROM_PCI
+# bool "National Semiconductor NICs"
+# default n
+
+ config FRPROG_NICINTEL
+ depends on FLASHROM_PCI
+ bool "Intel NICs"
+ default y
+
+ config FRPROG_NICINTEL_SPI
+ depends on FLASHROM_PCI
+ bool "Intel NICs SPI"
+ default y
+
+ config FRPROG_NICINTEL_EEPROM
+ depends on FLASHROM_PCI
+ bool "Intel NICs EEPROM"
+ default y
+
+ config FRPROG_OGP_SPI
+ depends on FLASHROM_PCI
+ bool "OGP SPI"
+ default y
+
+ config FRPROG_SATAMV
+ depends on FLASHROM_PCI
+ bool "Marvell SATA"
+ default y
+ endmenu
+
+
+ config FLASHROM_SERIAL
+ bool "Serial Support"
+ default y
+
+ menu "Serial Programmers"
+ depends on FLASHROM_SERIAL
+
+ config FRPROG_SERPROG
+ depends on FLASHROM_SERIAL
+ bool "Serial"
+ default y
+
+ config FRPROG_PONY_SPI
+ depends on FLASHROM_SERIAL
+ bool "Pony SPI"
+ default y
+
+ config FRPROG_BUSPIRATE_SPI
+ depends on FLASHROM_SERIAL
+ bool "SPI BUS Pirate"
+ default y
+ endmenu
+
+
+ config FLASHROM_USB
+ bool "USB Support"
+ default y
+
+ menu "USB Programmers"
+ depends on FLASHROM_USB
+
+ config FRPROG_PICKIT2_SPI
+ depends on FLASHROM_USB
+ bool "PICkit2 SPI"
+ default y
+
+# config FRPROG_DEDIPROG
+# depends on FLASHROM_USB
+# bool "Dediprog SF100"
+# default n
+ endmenu
+endmenu
#
-# Copyright (C) 2010-2014 OpenWrt.org
+# 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:=flashrom
-PKG_VERSION:=0.9.7
+PKG_VERSION:=0.9.8
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://download.flashrom.org/releases
-PKG_MD5SUM:=d239bafa1b46619d851f70f84a5b122a
+PKG_MD5SUM:=ac513076b63ab7eb411a7694bb8f6fda
PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
PKG_LICENSE:=GPL-2.0
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
+include flashrom.mk
define Package/flashrom
SECTION:=utils
CATEGORY:=Utilities
TITLE:=FlashROM Utility
URL:=http://www.flashrom.org/
- DEPENDS:=+zlib +pciutils +(TARGET_x86||TARGET_x86_64):dmidecode +libftdi
+ DEPENDS:=\
+ +(TARGET_x86||TARGET_x86_64):dmidecode \
+ +FLASHROM_FTDI:libftdi \
+ +FLASHROM_PCI:pciutils \
+ +FLASHROM_USB:libusb-compat
+endef
+
+define Package/flashrom/config
+ source "$(SOURCE)/Config.in"
endef
define Package/flashrom/description
--- /dev/null
+# Flashrom configuration
+define DefineConfig
+ ifeq ($(CONFIG_FLASHROM_$(1)),)
+ MAKE_FLAGS += NEED_$(1)=0
+ endif
+endef
+define DefineProgrammer
+ ifeq ($(CONFIG_FRPROG_$(1)),)
+ MAKE_FLAGS += CONFIG_$(1)=0
+ endif
+ ifneq ($(CONFIG_DEFPROG_$(1)),)
+ MAKE_FLAGS += CONFIG_DEFAULT_PROGRAMMER=CONFIG_$(1)
+ endif
+endef
+
+# Misc
+$(eval $(call DefineProgrammer,LINUX_SPI))
+#$(eval $(call DefineProgrammer,MSTARDDC_SPI))
+$(eval $(call DefineProgrammer,DUMMY))
+
+# FTDI
+$(eval $(call DefineConfig,FTDI))
+$(eval $(call DefineProgrammer,FT2232_SPI))
+$(eval $(call DefineProgrammer,USBBLASTER_SPI))
+
+# PCI
+$(eval $(call DefineConfig,PCI))
+$(eval $(call DefineProgrammer,INTERNAL))
+$(eval $(call DefineProgrammer,RAYER_SPI))
+$(eval $(call DefineProgrammer,NIC3COM))
+$(eval $(call DefineProgrammer,GFXNVIDIA))
+$(eval $(call DefineProgrammer,SATASII))
+#$(eval $(call DefineProgrammer,ATAHPT))
+$(eval $(call DefineProgrammer,ATAVIA))
+$(eval $(call DefineProgrammer,IT8212))
+$(eval $(call DefineProgrammer,DRKAISER))
+$(eval $(call DefineProgrammer,NICREALTEK))
+#$(eval $(call DefineProgrammer,NICNATSEMI))
+$(eval $(call DefineProgrammer,NICINTEL))
+$(eval $(call DefineProgrammer,NICINTEL_SPI))
+$(eval $(call DefineProgrammer,NICINTEL_EEPROM))
+$(eval $(call DefineProgrammer,OGP_SPI))
+$(eval $(call DefineProgrammer,SATAMV))
+
+# Serial
+$(eval $(call DefineConfig,SERIAL))
+$(eval $(call DefineProgrammer,SERPROG))
+$(eval $(call DefineProgrammer,PONY_SPI))
+$(eval $(call DefineProgrammer,BUSPIRATE_SPI))
+
+# USB
+$(eval $(call DefineConfig,USB))
+$(eval $(call DefineProgrammer,PICKIT2_SPI))
+#$(eval $(call DefineProgrammer,DEDIPROG))
--- /dev/null
+--- a/programmer.h
++++ b/programmer.h
+@@ -557,7 +557,7 @@ enum spi_controller {
+ #if CONFIG_DEDIPROG == 1
+ SPI_CONTROLLER_DEDIPROG,
+ #endif
+-#if CONFIG_OGP_SPI == 1 || CONFIG_NICINTEL_SPI == 1 || CONFIG_RAYER_SPI == 1 || CONFIG_PONY_SPI == 1 || (CONFIG_INTERNAL == 1 && (defined(__i386__) || defined(__x86_64__)))
++#if CONFIG_OGP_SPI == 1 || CONFIG_NICINTEL_SPI == 1 || CONFIG_RAYER_SPI == 1 || CONFIG_PONY_SPI == 1 || CONFIG_INTERNAL == 1
+ SPI_CONTROLLER_BITBANG,
+ #endif
+ #if CONFIG_LINUX_SPI == 1
+++ /dev/null
-diff -uprN a/internal.c b/internal.c
---- a/internal.c 2014-06-13 16:44:14.263689579 +0200
-+++ b/internal.c 2014-06-13 16:46:04.229020785 +0200
-@@ -337,10 +337,12 @@ int internal_init(void)
- init_superio_ite();
- #endif
-
-+#if defined(__i386__) || defined(__x86_64__) || defined (__arm__)
- if (board_flash_enable(board_vendor, board_model, cb_vendor, cb_model)) {
- msg_perr("Aborting to be safe.\n");
- return 1;
- }
-+#endif
-
- #if defined(__i386__) || defined(__x86_64__) || defined (__mips)
- register_par_programmer(&par_programmer_internal, internal_buses_supported);
PKG_NAME:=gammu
PKG_VERSION:=1.34.0
-PKG_RELEASE:=1
+PKG_RELEASE:=3
PKG_SOURCE_URL:=http://dl.cihar.com/gammu/releases/
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_MAINTAINER:=Vitaly Protsko <villy@sft.ru>
PKG_LICENCE:=GPL-2.0
+PKG_INSTALL:=1
+
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
+include $(INCLUDE_DIR)/cmake.mk
define Package/gammu
SECTION:=utils
URL:=http://dl.cihar.com/gammu/releases/
DEPENDS:=+libpthread +libcurl +glib2 $(ICONV_DEPENDS) $(INTL_DEPENDS)
DEPENDS+=+PACKAGE_python:python +PACKAGE_bluez-libs:bluez-libs
- DEPENDS+=+PACKAGE_libmysqlclient:libmysqlclient +PACKAGE_unixodbc:unixodbc
+ DEPENDS+=+PACKAGE_libmysqlclient:libmysqlclient +PACKAGE_unixodbc:unixodbc +PACKAGE_libpq:libpq
DEPENDS+=+PACKAGE_libusb-1.0:libusb-1.0
endef
-CONFIGURE_ARGS:= \
- --prefix=/usr \
- --cross-root="$(STAGING_DIR) $(TOOLCHAIN_DIR)" \
- --enable-shared \
- --without-libdbi
-
-define Build/Compile
- $(MAKE) -C $(PKG_BUILD_DIR) \
- $(TARGET_CONFIGURE_OPTS) \
- LDSHARED="$(TARGET_CROSS)ld -shared" \
- CFLAGS="$(TARGET_CFLAGS) $(FPIC)"
-endef
+CMAKE_OPTIONS += -DWITH_LibDBI:BOOL=OFF
-define Build/Install
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- install
-endef
define Build/InstallDev
mkdir -p $(1)/usr/include
$(CP) -r $(PKG_INSTALL_DIR)/usr/include/gammu $(1)/usr/include/
mkdir -p $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{Gammu*,gsmsd*} $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib$(LIB_SUFFIX)/lib{Gammu*,gsmsd*} $(1)/usr/lib/
endef
define Package/gammu/install
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gammu $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gammu-{smsd,smsd-inject,smsd-monitor} $(1)/usr/bin
$(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/lib{Gammu*,gsmsd*} $(1)/usr/lib
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib$(LIB_SUFFIX)/lib{Gammu*,gsmsd*} $(1)/usr/lib
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) ./files/gammu $(1)/etc/config/gammu
#
-# Copyright (C) 2006-2009 OpenWrt.org
+# Copyright (C) 2006-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=haserl
-PKG_VERSION:=0.9.34
+PKG_VERSION:=0.9.35
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/haserl
-PKG_MD5SUM:=cae2240f25040c7a0a270c35cf7abda4
+PKG_MD5SUM:=918f0b4f6cec0b438c8b5c78f2989010
PKG_MAINTAINER:=Maxim Storchak <m.storchak@gmail.com>
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
include $(TOPDIR)/rules.mk
PKG_NAME:=kmod
-PKG_VERSION:=19
+PKG_VERSION:=20
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://www.kernel.org/pub/linux/utils/kernel/kmod/
-PKG_MD5SUM:=a08643f814aa4efc12211c6e5909f4d9
+PKG_MD5SUM:=d6f4fef718a50bd88080de6a43bc64d8
PKG_MAINTAINER:=Jeff Waugh <jdub@bethesignal.org>
PKG_LICENSE:=LGPL-2.1+
PKG_LICENSE_FILES:=COPYING
+PKG_FIXUP:=autoreconf
+PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
--- /dev/null
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -35,9 +35,6 @@ SED_PROCESS = \
+ -e 's,@zlib_LIBS\@,${zlib_LIBS},g' \
+ < $< > $@ || rm $@
+
+-%.pc: %.pc.in Makefile
+- $(SED_PROCESS)
+-
+ LIBKMOD_CURRENT=4
+ LIBKMOD_REVISION=9
+ LIBKMOD_AGE=2
+--- a/configure.ac
++++ b/configure.ac
+@@ -221,6 +221,7 @@ AC_CONFIG_HEADERS(config.h)
+ AC_CONFIG_FILES([
+ Makefile
+ man/Makefile
++ libkmod/libkmod.pc
+ libkmod/docs/Makefile
+ libkmod/docs/version.xml
+ ])
include $(TOPDIR)/rules.mk
PKG_NAME:=LVM2
-PKG_VERSION:=2.02.116
-PKG_RELEASE:=2
+PKG_VERSION:=2.02.118
+PKG_RELEASE:=1
PKG_LICENSE:=GPL-2.0 LGPL-2.1
PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).tgz
PKG_SOURCE_URL:=ftp://sources.redhat.com/pub/lvm2
-PKG_MD5SUM:=3a1104e3d1dc4d5e92a40228161cd660
+PKG_MD5SUM:=27f028974e8f067a9791d685b4e0fa90
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME).$(PKG_VERSION)
+#include <blkid/blkid.h>
#endif
- #include "device-types.h"
+ #ifdef UDEV_SYNC_SUPPORT
include $(TOPDIR)/rules.mk
PKG_NAME:=lxc
-PKG_VERSION:=1.1.0
+PKG_VERSION:=1.1.1
PKG_RELEASE:=1
PKG_LICENSE:=LGPL-2.1+ BSD-2-Clause GPL-2.0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://linuxcontainers.org/downloads/lxc/
-PKG_MD5SUM:=ab1cbabf859abc15165050c854979c5c
+PKG_MD5SUM:=d80cb08f0edf36f0887e32c96aec8c13
PKG_BUILD_DEPENDS:=lua
PKG_BUILD_PARALLEL:=1
--- /dev/null
+--- a/templates/lxc-download.in
++++ b/templates/lxc-download.in
+@@ -39,7 +39,7 @@ DOWNLOAD_LIST_IMAGES="false"
+ DOWNLOAD_MODE="system"
+ DOWNLOAD_READY_GPG="false"
+ DOWNLOAD_RELEASE=
+-DOWNLOAD_SERVER="images.linuxcontainers.org"
++DOWNLOAD_SERVER="virtualwrt.org/containers/"
+ DOWNLOAD_SHOW_GPG_WARNING="true"
+ DOWNLOAD_SHOW_HTTP_WARNING="true"
+ DOWNLOAD_TARGET="system"
+@@ -257,14 +257,6 @@ for bin in tar xz wget; do
+ fi
+ done
+
+-# Check for GPG
+-if [ "$DOWNLOAD_VALIDATE" = "true" ]; then
+- if ! type gpg >/dev/null 2>&1; then
+- echo "ERROR: Missing recommended tool: gpg" 1>&2
+- echo "You can workaround this by using --no-validate." 1>&2
+- exit 1
+- fi
+-fi
+
+ # Check that we have all variables we need
+ if [ -z "$LXC_NAME" ] || [ -z "$LXC_PATH" ] || [ -z "$LXC_ROOTFS" ]; then
+@@ -456,16 +448,9 @@ if [ "$DOWNLOAD_USE_CACHE" = "false" ];
+ echo "Downloading the rootfs"
+ download_file $DOWNLOAD_URL/rootfs.tar.xz \
+ ${DOWNLOAD_TEMP}/rootfs.tar.xz normal
+- download_sig $DOWNLOAD_URL/rootfs.tar.xz.asc \
+- ${DOWNLOAD_TEMP}/rootfs.tar.xz.asc normal
+- gpg_validate ${DOWNLOAD_TEMP}/rootfs.tar.xz.asc
+-
+ echo "Downloading the metadata"
+ download_file $DOWNLOAD_URL/meta.tar.xz \
+ ${DOWNLOAD_TEMP}/meta.tar.xz normal
+- download_sig $DOWNLOAD_URL/meta.tar.xz.asc \
+- ${DOWNLOAD_TEMP}/meta.tar.xz.asc normal
+- gpg_validate ${DOWNLOAD_TEMP}/meta.tar.xz.asc
+
+ if [ -d $LXC_CACHE_PATH ]; then
+ rm -Rf $LXC_CACHE_PATH
+++ /dev/null
-From bdeafb7bc4857e80dbca5192a751eedcf7b69abd Mon Sep 17 00:00:00 2001
-From: Luka Perkov <luka@openwrt.org>
-Date: Mon, 27 Oct 2014 21:49:46 +0100
-Subject: [PATCH] utils: remove unnecessary check of mystat.st_dev
-
-The check is not needed and it breaks lxc-destroy when container is installed
-on top of overlayfs. More information why this is a problem on overlayfs can be
-found here:
-
-https://kernel.googlesource.com/pub/scm/linux/kernel/git/mszeredi/vfs/+/overlayfs.current/Documentation/filesystems/overlayfs.txt
-
-Signed-off-by: Luka Perkov <luka@openwrt.org>
----
- src/lxc/utils.c | 10 ++++------
- 1 file changed, 4 insertions(+), 6 deletions(-)
-
---- a/src/lxc/utils.c
-+++ b/src/lxc/utils.c
-@@ -47,7 +47,7 @@
-
- lxc_log_define(lxc_utils, lxc);
-
--static int _recursive_rmdir_onedev(char *dirname, dev_t pdev,
-+static int _recursive_rmdir_onedev(char *dirname,
- const char *exclude, int level)
- {
- struct dirent dirent, *direntp;
-@@ -108,10 +108,8 @@ static int _recursive_rmdir_onedev(char
- failed=1;
- continue;
- }
-- if (mystat.st_dev != pdev)
-- continue;
- if (S_ISDIR(mystat.st_mode)) {
-- if (_recursive_rmdir_onedev(pathname, pdev, exclude, level+1) < 0)
-+ if (_recursive_rmdir_onedev(pathname, exclude, level+1) < 0)
- failed=1;
- } else {
- if (unlink(pathname) < 0) {
-@@ -147,7 +145,7 @@ extern int lxc_rmdir_onedev(char *path,
- return -1;
- }
-
-- return _recursive_rmdir_onedev(path, mystat.st_dev, exclude, 0);
-+ return _recursive_rmdir_onedev(path, exclude, 0);
- }
-
- static int mount_fs(const char *source, const char *target, const char *type)
--- /dev/null
+One of the 'features' of overlayfs is that depending on whether a file
+is on the upper or lower dir you get back a different device from stat.
+That breaks our lxc_rmdir_onedev.
+
+So at lxc_rmdir_ondev check the device of the directory being deleted.
+If it is overlayfs, then skip the device check.
+
+Note this is unrelated to overlayfs snapshots - in those cases when you
+delete a container, /var/lib/lxc/$container/ does not actually have an
+overlayfs under it. Rather, to reproduce this you would
+
+sudo mkdir /opt/{lower,upper,workdir}
+sudo mount -t overlayfs -o lower=/opt/lower,upper=/opt/upper,workdir=/opt/workdir \
+ lxc /var/lib/lxc
+sudo lxc-create -t download -n c1 -- -d ubuntu -r trusty -a amd64
+sudo lxc-destroy -n c1
+
+Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
+---
+ src/lxc/utils.c | 39 ++++++++++++++++++++++++++++++++-------
+ 1 file changed, 32 insertions(+), 7 deletions(-)
+
+--- a/src/lxc/utils.c
++++ b/src/lxc/utils.c
+@@ -29,6 +29,7 @@
+ #include <stddef.h>
+ #include <string.h>
+ #include <sys/types.h>
++#include <sys/vfs.h>
+ #include <sys/stat.h>
+ #include <sys/mman.h>
+ #include <sys/param.h>
+@@ -68,8 +69,8 @@
+
+ lxc_log_define(lxc_utils, lxc);
+
+-static int _recursive_rmdir_onedev(char *dirname, dev_t pdev,
+- const char *exclude, int level)
++static int _recursive_rmdir(char *dirname, dev_t pdev,
++ const char *exclude, int level, bool onedev)
+ {
+ struct dirent dirent, *direntp;
+ DIR *dir;
+@@ -106,7 +107,7 @@ static int _recursive_rmdir_onedev(char
+ if (ret < 0) {
+ switch(errno) {
+ case ENOTEMPTY:
+- INFO("Not deleting snapshots");
++ INFO("Not deleting snapshot %s", pathname);
+ hadexclude = true;
+ break;
+ case ENOTDIR:
+@@ -129,14 +130,14 @@ static int _recursive_rmdir_onedev(char
+ failed=1;
+ continue;
+ }
+- if (mystat.st_dev != pdev)
++ if (onedev && mystat.st_dev != pdev)
+ continue;
+ if (S_ISDIR(mystat.st_mode)) {
+- if (_recursive_rmdir_onedev(pathname, pdev, exclude, level+1) < 0)
++ if (_recursive_rmdir(pathname, pdev, exclude, level+1, onedev) < 0)
+ failed=1;
+ } else {
+ if (unlink(pathname) < 0) {
+- ERROR("%s: failed to delete %s", __func__, pathname);
++ SYSERROR("%s: failed to delete %s", __func__, pathname);
+ failed=1;
+ }
+ }
+@@ -158,17 +159,41 @@ static int _recursive_rmdir_onedev(char
+ return failed ? -1 : 0;
+ }
+
++/* we have two different magic values for overlayfs, yay */
++#define OVERLAYFS_SUPER_MAGIC 0x794c764f
++#define OVERLAY_SUPER_MAGIC 0x794c7630
++/*
++ * In overlayfs, st_dev is unreliable. so on overlayfs we don't do
++ * the lxc_rmdir_onedev()
++ */
++static bool is_native_overlayfs(const char *path)
++{
++ struct statfs sb;
++
++ if (statfs(path, &sb) < 0)
++ return false;
++ if (sb.f_type == OVERLAYFS_SUPER_MAGIC ||
++ sb.f_type == OVERLAY_SUPER_MAGIC)
++ return true;
++ return false;
++}
++
+ /* returns 0 on success, -1 if there were any failures */
+ extern int lxc_rmdir_onedev(char *path, const char *exclude)
+ {
+ struct stat mystat;
++ bool onedev = true;
++
++ if (is_native_overlayfs(path)) {
++ onedev = false;
++ }
+
+ if (lstat(path, &mystat) < 0) {
+ ERROR("%s: failed to stat %s", __func__, path);
+ return -1;
+ }
+
+- return _recursive_rmdir_onedev(path, mystat.st_dev, exclude, 0);
++ return _recursive_rmdir(path, mystat.st_dev, exclude, 0, onedev);
+ }
+
+ static int mount_fs(const char *source, const char *target, const char *type)
#
-# Copyright (C) 2006-2014 OpenWrt.org
+# Copyright (C) 2006-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=mc
-PKG_VERSION:=4.8.13
-PKG_RELEASE:=1.2
+PKG_VERSION:=4.8.14
+PKG_RELEASE:=1.3
PKG_MAINTAINER:=Dirk Brenken <dibdot@gmail.com>
PKG_LICENSE:=GPL-3.0+
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://ftp.midnight-commander.org/
-PKG_MD5SUM:=d967caa12765eb86e52a6a63ca202500
+PKG_MD5SUM:=fbdaddb9edcf8925dcf3231331a8720b
PKG_BUILD_PARALLEL:=1
PKG_FIXUP:=autoreconf
define Package/mc
SECTION:=utils
CATEGORY:=Utilities
- DEPENDS:=+glib2 +libncurses +MC_VFS:libssh2 $(LIBRPC_DEPENDS) $(ICONV_DEPENDS)
+ DEPENDS:=+glib2 +libncurses +libmount +MC_VFS:libssh2 $(LIBRPC_DEPENDS) $(ICONV_DEPENDS)
TITLE:=Midnight Commander - a powerful visual file manager
URL:=http://www.midnight-commander.org/
MENU:=1
PKG_NAME:=mmc-utils
PKG_VERSION=2015-03-06-$(PKG_SOURCE_VERSION)
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git
--- /dev/null
+Index: mmc-utils-f4eb241519f8d500ce6068a70d2389be39ac5189/Makefile
+===================================================================
+--- mmc-utils-f4eb241519f8d500ce6068a70d2389be39ac5189.orig/Makefile
++++ mmc-utils-f4eb241519f8d500ce6068a70d2389be39ac5189/Makefile
+@@ -1,5 +1,5 @@
+ CC ?= gcc
+-AM_CFLAGS = -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2
++AM_CFLAGS = -D_FILE_OFFSET_BITS=64
+ CFLAGS ?= -g -O2
+ objects = \
+ mmc.o \
#
-# Copyright (C) 2007-2014 OpenWrt.org
+# Copyright (C) 2007-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=nano
-PKG_VERSION:=2.3.6
+PKG_VERSION:=2.4.0
PKG_RELEASE:=1
+PKG_LICENSE:=GPL-3.0+
+PKG_LICENSE_FILES:=COPYING
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://www.nano-editor.org/dist/v2.3
-PKG_MD5SUM:=df3d201aecb3155a80633990cc467831
+PKG_SOURCE_URL:=http://www.nano-editor.org/dist/v2.4
+PKG_MD5SUM:=e5c9c6424ee2303663ae4b99ecd4b493
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
--- /dev/null
+Index: ntfs-3g-2014.2.15-1-fuseint/libfuse-lite/fusermount.c
+===================================================================
+--- ntfs-3g-2014.2.15-1-fuseint.orig/libfuse-lite/fusermount.c
++++ ntfs-3g-2014.2.15-1-fuseint/libfuse-lite/fusermount.c
+@@ -36,6 +36,10 @@
+
+ #define FUSE_DEV_NEW "/dev/fuse"
+
++#ifndef _PATH_MOUNTED
++#define _PATH_MOUNTED "/proc/mounts"
++#endif
++
+ #ifndef MS_DIRSYNC
+ #define MS_DIRSYNC 128
+ #endif
+Index: ntfs-3g-2014.2.15-1-fuseint/libfuse-lite/mount_util.c
+===================================================================
+--- ntfs-3g-2014.2.15-1-fuseint.orig/libfuse-lite/mount_util.c
++++ ntfs-3g-2014.2.15-1-fuseint/libfuse-lite/mount_util.c
+@@ -255,6 +255,10 @@ int fuse_mnt_check_fuseblk(void)
+
+ #else /* __SOLARIS__ */
+
++#ifndef _PATH_MOUNTED
++#define _PATH_MOUNTED "/proc/mounts"
++#endif /* _PATH_MOUNTED */
++
+ static int mtab_needs_update(const char *mnt)
+ {
+ int res;
include $(TOPDIR)/rules.mk
PKG_NAME:=open-plc-utils
-PKG_VERSION:=2013-01-29
+PKG_VERSION:=2015-02-23
PKG_RELEASE:=$(PKG_SOURCE_VERSION)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=git://github.com/qca/open-plc-utils.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=6beeb6fe6ce2b16b14284c26e1b9220b68044591
+PKG_SOURCE_VERSION:=1f6e7e372b313cf570aa63314037588ed01ec0de
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MAINTAINER:=Florian Fainelli <florian@openwrt.org>
#
-# Copyright (C) 2007-2014 OpenWrt.org
+# Copyright (C) 2007-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PKG_NAME:=pciutils
PKG_VERSION:=3.3.0
-PKG_RELEASE:=1
+PKG_RELEASE:=3
PKG_USE_MIPS16:=0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
CATEGORY:=Utilities
TITLE:=Linux PCI Utilities
URL:=http://mj.ucw.cz/pciutils.shtml
- DEPENDS:=+zlib
+ DEPENDS:=+libkmod +zlib
endef
define Package/pciutils/description
HOST="$(GNU_TARGET_NAME)" \
ZLIB="yes" \
-ifneq ($(CONFIG_USE_EGLIBC),)
+ifneq ($(CONFIG_USE_GLIBC),)
TARGET_LDFLAGS += -lresolv
endif
--- /dev/null
+#
+# Copyright (C) 2008-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=tar
+PKG_VERSION:=1.28
+PKG_RELEASE:=2
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
+PKG_MD5SUM:=8f32b2bc1ed7ddf4cf4e4a39711341b0
+PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
+
+PKG_LICENSE:=GPL-3.0
+PKG_LICENSE_FILES:=COPYING
+
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/tar
+ SECTION:=utils
+ CATEGORY:=Utilities
+ DEPENDS:=+bzip2 +libacl +libattr
+ TITLE:=GNU tar
+ URL:=http://www.gnu.org/software/tar/
+endef
+
+define Package/tar/description
+ Tar is a program for packaging a set of files as a
+ single archive in tar format.
+endef
+
+define Package/tar/postinst
+#!/bin/sh
+if [ -e $${IPKG_INSTROOT}/bin/tar ]; then
+ rm -r $${IPKG_INSTROOT}/bin/tar;
+fi
+ln -sf /usr/bin/tar $${IPKG_INSTROOT}/bin/tar
+endef
+
+define Package/tar/postrm
+#!/bin/sh
+rm $${IPKG_INSTROOT}/bin/tar
+ln -s busybox $${IPKG_INSTROOT}/bin/tar
+$${IPKG_INSTROOT}/bin/tar 2>&1 | grep 'applet not found' > /dev/null 2>&1 && rm $${IPKG_INSTROOT}/bin/tar
+exit 0
+endef
+
+MAKE_FLAGS += \
+ CFLAGS="$(TARGET_CFLAGS)" \
+ LDFLAGS="$(TARGET_LDLAGS)"
+
+define Package/tar/install
+ $(INSTALL_DIR) $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/$(PKG_NAME) $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,tar))
include $(TOPDIR)/rules.mk
PKG_NAME:=taskwarrior
-PKG_VERSION:=2.4.0
+PKG_VERSION:=2.4.1
PKG_RELEASE:=1
PKG_LICENSE:=MIT
PKG_SOURCE:=task-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.taskwarrior.org/download/
-PKG_MD5SUM:=de4b64b3d28bb9636af219a486552cd0
+PKG_MD5SUM:=f250f3fb3922e4153c6ad1b1270dceb8
PKG_MAINTAINER:=Luka Perkov <luka@openwrt.org>
PKG_BUILD_DIR:=$(BUILD_DIR)/task-$(PKG_VERSION)
--- /dev/null
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -101,9 +101,9 @@ bin_PROGRAMS = tmux$(EXEEXT)
+ @IS_DEBUG_TRUE@@IS_GCC_TRUE@ -Wdeclaration-after-statement
+ @IS_DEBUG_TRUE@@IS_GCC_TRUE@am__append_4 = -DDEBUG
+ @IS_DEBUG_FALSE@@IS_GCC_TRUE@am__append_5 = -O2
+-@IS_GCC4_TRUE@@IS_GCC_TRUE@am__append_6 = -iquote. -I/usr/local/include
++@IS_GCC4_TRUE@@IS_GCC_TRUE@am__append_6 = -iquote.
+ @IS_DEBUG_TRUE@@IS_GCC4_TRUE@@IS_GCC_TRUE@am__append_7 = -Wno-pointer-sign
+-@IS_GCC4_FALSE@@IS_GCC_TRUE@am__append_8 = -I. -I- -I/usr/local/include
++@IS_GCC4_FALSE@@IS_GCC_TRUE@am__append_8 = -I. -I-
+
+ # Set flags for Solaris.
+ @IS_GCC_TRUE@@IS_SUNOS_TRUE@am__append_9 = -D_XPG6 -D__EXTENSIONS__ -D_POSIX_PTHREAD_SEMANTICS
include $(TOPDIR)/rules.mk
PKG_NAME:=unrar
-PKG_VERSION:=5.2.5
+PKG_VERSION:=5.2.7
PKG_RELEASE:=1
PKG_SOURCE:=unrarsrc-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.rarlab.com/rar
-PKG_MD5SUM:=ba69acb6c17fb4829ea7440079001c36
+PKG_MD5SUM:=0c145e1ac47d428553123462c0740279
PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
PKG_LICENSE:=UnRAR
PKG_NAME:=vim
PKG_VERSION:=7.4
-PKG_RELEASE:=1
+PKG_RELEASE:=2
VIMVER:=74
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
--disable-netbeans \
--disable-cscope \
--disable-gpm \
+ --disable-acl \
--with-tlib=ncurses
CONFIGURE_VARS += \
include $(TOPDIR)/rules.mk
PKG_NAME:=zoneinfo
-PKG_VERSION:=2015a
-PKG_VERSION_CODE:=2015a
+PKG_VERSION:=2015b
+PKG_VERSION_CODE:=2015b
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_CODE).tar.gz
PKG_SOURCE_URL:=http://www.iana.org/time-zones/repository/releases
-PKG_MD5SUM:=4ed11c894a74a5ea64201b1c6dbb8831
+PKG_MD5SUM:=75571bb17c7b6be88a9f8872e45bc726
include $(INCLUDE_DIR)/package.mk
define Download/tzcode
FILE=$(PKG_SOURCE_CODE)
URL=$(PKG_SOURCE_URL)
- MD5SUM:=8f375ede46ae137fbac047ac431bda37
+ MD5SUM:=f073a7c9bca7f9fe408491f826e92968
endef
$(eval $(call Download,tzcode))