include $(TOPDIR)/rules.mk
PKG_NAME:=debootstrap
-PKG_VERSION:=1.0.75
+PKG_VERSION:=1.0.80
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:=5b568d66390d76fba87b839984254730
+PKG_MD5SUM:=498d7c3852760ede28374ba74695f777
PKG_LICENSE:=Unique
PKG_LICENSE_FILES:=debian/copyright
include $(TOPDIR)/rules.mk
PKG_NAME:=htop
-PKG_VERSION:=1.0.3
+PKG_VERSION:=2.0.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://hisham.hm/htop/releases/$(PKG_VERSION)/
-PKG_MD5SUM:=e768b9b55c033d9c1dffda72db3a6ac7
+PKG_MD5SUM:=f75fe92b4defaa80d99109830f34b5e2
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
endef
CONFIGURE_ARGS += \
- --disable-native-affinity \
--disable-unicode \
- --enable-hwloc
+ --disable-hwloc
CONFIGURE_VARS += \
ac_cv_file__proc_stat=yes \
- ac_cv_file__proc_meminfo=yes \
- ac_cv_func_malloc_0_nonnull=yes \
- ac_cv_func_realloc_0_nonnull=yes
+ ac_cv_file__proc_meminfo=yes
define Package/htop/install
$(INSTALL_DIR) $(1)/usr/bin
include $(TOPDIR)/rules.mk
PKG_NAME:=monit
-PKG_VERSION:=5.14
+PKG_VERSION:=5.17.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://mmonit.com/monit/dist
-PKG_MD5SUM:=1b3ae1eb08a0914402a8764e5689c1c5
+PKG_MD5SUM:=6918ed7411a244c9e158f5e54c86be78
PKG_LICENSE:=AGPL-3.0
PKG_LICENSE_FILES:=COPYING
endef
define Host/Install
- $(INSTALL_DIR) $(STAGING_DIR_HOST)/bin
- $(CP) $(HOST_BUILD_DIR)/lib/util/mksig{list,name} $(STAGING_DIR_HOST)/bin/
+ $(INSTALL_DIR) $(STAGING_DIR)/host/bin
+ $(CP) $(HOST_BUILD_DIR)/lib/util/mksig{list,name} $(STAGING_DIR)/host/bin/
endef
$(eval $(call HostBuild))
diff -rupN sudo-1.8.11p2.orig/lib/util/Makefile.in sudo-1.8.11p2/lib/util/Makefile.in
--- sudo-1.8.11p2.orig/lib/util/Makefile.in 2014-10-07 22:26:20.000000000 +0200
+++ sudo-1.8.11p2/lib/util/Makefile.in 2014-12-09 21:44:35.610041162 +0100
-@@ -17,6 +17,8 @@
- # @configure_input@
- #
-
-+include $(TOPDIR)/rules.mk
-+
- #### Start of system configuration section. ####
-
- srcdir = @srcdir@
-@@ -142,10 +144,10 @@ libsudo_util.la: $(LTOBJS) @LT_LDDEP@
+@@ -142,10 +142,10 @@ libsudo_util.la: $(LTOBJS) @LT_LDDEP@
esac
siglist.c: mksiglist
- ./mksiglist > $@
-+ $(STAGING_DIR_HOST)/bin/mksiglist > $@
++ mksiglist > $@
signame.c: mksigname
- ./mksigname > $@
-+ $(STAGING_DIR_HOST)/bin/mksigname > $@
++ mksigname > $@
mksiglist: $(srcdir)/mksiglist.c $(srcdir)/mksiglist.h $(incdir)/sudo_compat.h $(top_builddir)/config.h
$(CC) $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/mksiglist.c -o $@
include $(TOPDIR)/rules.mk
PKG_NAME:=zabbix
-PKG_VERSION:=2.4.6
-PKG_RELEASE:=2
+PKG_VERSION:=3.0.1
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/zabbix
-PKG_MD5SUM:=06ad8d5808a0eddf2b9f0a256b6a5fde
+PKG_MD5SUM:=890d9eec69304ad552959fabe0a5d122
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
SUBMENU:=zabbix
MAINTAINER:=Etienne CHAMPETIER <champetier.etienne@gmail.com>
USERID:=zabbix=53:zabbix=53
-endef
-
-define Package/zabbix-agent
- $(call Package/zabbix/Default)
- TITLE+= agent
+ DEPENDS += $(ICONV_DEPENDS)
endef
define Package/zabbix-agentd
define Package/zabbix-extra-mac80211
$(call Package/zabbix/Default)
TITLE+= discovery/userparameters for mac80211
- DEPENDS += +zabbix-agentd @PACKAGE_MAC80211_DEBUGFS @KERNEL_DEBUG_FS
+ DEPENDS = +zabbix-agentd @PACKAGE_MAC80211_DEBUGFS @KERNEL_DEBUG_FS
endef
define Package/zabbix-extra-network
$(call Package/zabbix/Default)
TITLE+= discovery/userparameters for network
- DEPENDS += +zabbix-agentd +libuci-lua +lua
+ DEPENDS = +zabbix-agentd +libuci-lua +lua
endef
define Package/zabbix-extra-wifi
$(call Package/zabbix/Default)
TITLE+= discovery/userparameters for wifi
- DEPENDS += +zabbix-agentd +libiwinfo-lua +libuci-lua +lua
+ DEPENDS = +zabbix-agentd +libiwinfo-lua +libuci-lua +lua
endef
define Package/zabbix-sender
$(1)/etc/zabbix_agentd.conf.d/$(2)
endef
-define Package/zabbix-agent/conffiles
-/etc/zabbix_agent.conf
-endef
define Package/zabbix-agentd/conffiles
/etc/zabbix_agentd.conf
endef
$(call Build/Compile/zabbix-extra-mac80211)
endef
-define Package/zabbix-agent/install
- $(call Package/zabbix/install/sbin,$(1),agent)
- $(call Package/zabbix/install/etc,$(1),agent)
-endef
-
define Package/zabbix-agentd/install
$(INSTALL_DIR) $(1)/etc/zabbix_agentd.conf.d
$(call Package/zabbix/install/sbin,$(1),agentd)
$(call Package/zabbix/install/etc,$(1),proxy)
endef
-$(eval $(call BuildPackage,zabbix-agent))
$(eval $(call BuildPackage,zabbix-agentd))
$(eval $(call BuildPackage,zabbix-extra-mac80211))
$(eval $(call BuildPackage,zabbix-extra-network))
# If you want to know the exact meaning of an UserParameter, you can search in the ieee80211 standard:
# http://standards.ieee.org/getieee802/download/802.11-2012.pdf
-# exemple: for mac80211.ACKFailureCount search for dot11ACKFailureCount (page 2145)
+# example: for mac80211.ACKFailureCount search for dot11ACKFailureCount (page 2145)
# mac80211 phy discovery (like 'phy0')
-# exemple: {"data":[{"{#PHY}":"phy0"}]}
+# example: {"data":[{"{#PHY}":"phy0"}]}
#
UserParameter=mac80211.phydiscovery,zabbix_helper_mac80211 discovery
#see http://wiki.openwrt.org/doc/howto/zabbix for ready to use templates
# network interface discovery
-# exemple: {"data":[{"{#IF}":"lo", "{#NET}":"loopback"},{"{#IF}":"br-lan", "{#NET}":"lan"},{"{#IF}":"eth0.1", "{#NET}":"wan"}]}
+# example: {"data":[{"{#IF}":"lo", "{#NET}":"loopback"},{"{#IF}":"br-lan", "{#NET}":"lan"},{"{#IF}":"eth0.1", "{#NET}":"wan"}]}
#
UserParameter=netowrt.discovery,lua -l uci -e 'x = uci.cursor(nil, "/var/state");list = "{\"data\":[";x:foreach("network", "interface", function(s) list=list.."{\"{#IF}\":\""..s.ifname.."\", \"{#NET}\":\""..s[".name"].."\"}," end); list=string.gsub(list,",$",""); print(list.."]}")'
#see http://wiki.openwrt.org/doc/howto/zabbix for ready to use templates
# wifi interface discovery
-# exemple: {"data":[{"{#IF}":"wlan0", "{#MODE}":"ap", "{#SSID}":"Openwrt", "{#NET}":"lan", "{#DEV}":"radio0", "{#ENC}":"psk2+ccmp", "{#TYPE}":"mac80211", "{#HWMODE}":"11ng", "{#CHANNEL}":"11", "{#BSSID}":"xx:xx:xx:xx:xx:xx"}]}
+# example: {"data":[{"{#IF}":"wlan0", "{#MODE}":"ap", "{#SSID}":"Openwrt", "{#NET}":"lan", "{#DEV}":"radio0", "{#ENC}":"psk2+ccmp", "{#TYPE}":"mac80211", "{#HWMODE}":"11ng", "{#CHANNEL}":"11", "{#BSSID}":"xx:xx:xx:xx:xx:xx"}]}
# ubus call only work as root so you need to run zabbix as root to use wifi.ifdiscovery
UserParameter=wifi.ifdiscovery, lua -l ubus -l iwinfo -e 'u=ubus.connect();list="{\"data\":[";stat=u:call("network.wireless", "status", {});for dev, dev_table in pairs(stat) do for i, iface in pairs(dev_table["interfaces"]) do c=iface["config"];i=iface["ifname"];t=iwinfo.type(i);iw=iwinfo[t];e = iw.encryption(i);e = e and e.description or "None";n = table.concat(c["network"]," ");list=list.."{\"{#IF}\":\""..i.."\", \"{#MODE}\":\""..iw.mode(i).."\", \"{#SSID}\":\""..c["ssid"].."\", \"{#NET}\":\""..n.."\", \"{#DEV}\":\""..dev.."\", \"{#ENC}\":\""..e.."\", \"{#TYPE}\":\""..t.."\", \"{#HWMODE}\":\"".."?".."\", \"{#CHANNEL}\":\""..iw.channel(i).."\", \"{#BSSID}\":\""..iw.bssid(i).."\"},";end;end;list=string.gsub(list,",$","");print(list.."]}")'
procd_open_instance
procd_set_param command ${PROG} -c ${CONFIG} -f
procd_set_param respawn
+ procd_set_param stdout 1
+ procd_set_param stderr 1
procd_close_instance
}
--- a/configure.ac
+++ b/configure.ac
-@@ -152,6 +152,10 @@ if test "x$found_resolv" != "xyes"; then
+@@ -161,6 +161,10 @@ if test "x$found_resolv" != "xyes"; then
AC_MSG_ERROR([Unable to do DNS lookups (libresolv check failed)])
fi
LIBS="${LIBS} ${RESOLV_LIBS}"
dnl * *
--- a/src/libs/zbxsysinfo/common/net.c
+++ b/src/libs/zbxsysinfo/common/net.c
-@@ -450,6 +450,7 @@ static int dns_query(AGENT_REQUEST *requ
+@@ -471,6 +471,7 @@ static int dns_query(AGENT_REQUEST *requ
return SYSINFO_RET_FAIL;
}
if (-1 == (res = res_mkquery(QUERY, zone, C_IN, type, NULL, 0, NULL, buf, sizeof(buf))))
{
SET_MSG_RESULT(result, zbx_dsprintf(NULL, "Cannot create DNS query: %s", zbx_strerror(errno)));
-@@ -480,6 +481,11 @@ static int dns_query(AGENT_REQUEST *requ
+@@ -505,6 +506,11 @@ static int dns_query(AGENT_REQUEST *requ
_res.retry = retry;
res = res_send(buf, res, answer.buffer, sizeof(answer.buffer));
+ return SYSINFO_RET_FAIL;
+#endif
+ _res.options = saved_options;
_res.retrans = saved_retrans;
- _res.retry = saved_retry;
--- a/src/libs/zbxsysinfo/linux/cpu.c
+++ b/src/libs/zbxsysinfo/linux/cpu.c
-@@ -62,6 +62,45 @@ int SYSTEM_CPU_DISCOVERY(AGENT_REQUEST *
- return SYSINFO_RET_OK;
- }
+@@ -22,6 +22,45 @@
+ #include "stats.h"
+ #include "log.h"
+
+/* uclibc and dietlibc do not have this junk -ReneR */
--- /dev/null
+--- a/src/libs/zbxnix/daemon.c
++++ b/src/libs/zbxnix/daemon.c
+@@ -300,11 +300,14 @@ int daemon_start(int allow_root, const c
+
+ if (0 == allow_root && 0 == getuid()) /* running as root? */
+ {
++#if 0
++/* allow changing user and foreground */
+ if (0 != (flags & ZBX_TASK_FLAG_FOREGROUND))
+ {
+ zbx_error("cannot run as root!");
+ exit(EXIT_FAILURE);
+ }
++#endif
+
+ if (NULL == user)
+ user = "zabbix";
--- a/conf/zabbix_agentd.conf
+++ b/conf/zabbix_agentd.conf
-@@ -3,12 +3,8 @@
+@@ -3,12 +3,11 @@
############ GENERAL PARAMETERS #################
-# PidFile=/tmp/zabbix_agentd.pid
+# We do not need PidFile with procd
+# PidFile=/var/run/zabbix_agentd.pid
++
++# use syslog
++LogType=system
- ### Option: LogFile
- # Name of log file.
-@@ -18,8 +14,6 @@
+ ### Option: LogType
+ # Specifies where log messages are written to:
+@@ -27,8 +26,6 @@
# Default:
# LogFile=
### Option: LogFileSize
# Maximum size of log file in MB.
# 0 - disable automatic log rotation.
-@@ -104,6 +98,7 @@ Server=127.0.0.1
+@@ -114,6 +111,7 @@ Server=127.0.0.1
# Range: 0-100
# Default:
# StartAgents=3
##### Active checks related
-@@ -119,8 +114,6 @@ Server=127.0.0.1
+@@ -129,8 +127,6 @@ Server=127.0.0.1
# Default:
# ServerActive=
### Option: Hostname
# Unique, case sensitive hostname.
# Required for active checks and must match hostname as configured on the server.
-@@ -130,8 +123,6 @@ ServerActive=127.0.0.1
+@@ -140,8 +136,6 @@ ServerActive=127.0.0.1
# Default:
# Hostname=
### Option: HostnameItem
# Item used for generating Hostname if it is undefined. Ignored if Hostname is defined.
# Does not support UserParameters or aliases.
-@@ -249,8 +240,8 @@ Hostname=Zabbix server
+@@ -259,8 +253,8 @@ Hostname=Zabbix server
# Include=
# Include=/usr/local/etc/zabbix_agentd.userparams.conf
+++ /dev/null
---- a/include/common.h
-+++ b/include/common.h
-@@ -1083,4 +1083,7 @@ int parse_serveractive_element(char *str
-
- char *zbx_dyn_escape_shell_single_quote(const char *text);
-
-+#define ZBX_RUN_BACKGROUND 0
-+#define ZBX_RUN_FOREGROUND 1
-+
- #endif
---- a/include/daemon.h
-+++ b/include/daemon.h
-@@ -28,7 +28,7 @@ extern char *CONFIG_PID_FILE;
-
- #include "threads.h"
-
--int daemon_start(int allow_root, const char *user);
-+int daemon_start(int allow_root, const char *user, int run_foreground);
- void daemon_stop();
-
- int zbx_sigusr_send(int flags);
-@@ -36,6 +36,6 @@ int zbx_sigusr_send(int flags);
- #define ZBX_IS_RUNNING() 1
- #define ZBX_DO_EXIT()
-
--#define START_MAIN_ZABBIX_ENTRY(a, u) daemon_start(a, u)
-+#define START_MAIN_ZABBIX_ENTRY(a, u, f) daemon_start(a, u, f)
-
- #endif /* ZABBIX_DAEMON_H */
---- a/src/libs/zbxnix/daemon.c
-+++ b/src/libs/zbxnix/daemon.c
-@@ -272,16 +272,17 @@ static void set_daemon_signal_handlers()
- * *
- * Purpose: init process as daemon *
- * *
-- * Parameters: allow_root - allow root permission for application *
-- * user - user on the system to which to drop the *
-- * privileges *
-+ * Parameters: allow_root - allow root permission for application *
-+ * user - user on the system to which to drop the *
-+ * privileges *
-+ * run_foreground - should it close its controling tty *
- * *
- * Author: Alexei Vladishev *
- * *
- * Comments: it doesn't allow running under 'root' if allow_root is zero *
- * *
- ******************************************************************************/
--int daemon_start(int allow_root, const char *user)
-+int daemon_start(int allow_root, const char *user, int run_foreground)
- {
- pid_t pid;
- struct passwd *pwd;
-@@ -336,15 +337,22 @@ int daemon_start(int allow_root, const c
- #endif
- }
-
-- if (0 != (pid = zbx_fork()))
-- exit(EXIT_SUCCESS);
-+ if ( ZBX_RUN_FOREGROUND != run_foreground)
-+ if (0 != (pid = zbx_fork()))
-+ exit(EXIT_SUCCESS);
-
- setsid();
-
- signal(SIGHUP, SIG_IGN);
-
-- if (0 != (pid = zbx_fork()))
-- exit(EXIT_SUCCESS);
-+ if ( ZBX_RUN_FOREGROUND == run_foreground) {
-+ zabbix_log(LOG_LEVEL_INFORMATION, "Running in foreground...");
-+ } else {
-+ if (0 != (pid = zbx_fork()))
-+ exit(EXIT_SUCCESS);
-+ }
-+
-+
-
- if (-1 == chdir("/")) /* this is to eliminate warning: ignoring return value of chdir */
- assert(0);
---- a/src/zabbix_agent/zabbix_agentd.c
-+++ b/src/zabbix_agent/zabbix_agentd.c
-@@ -62,6 +62,8 @@ const char *progname = NULL;
- static char DEFAULT_CONFIG_FILE[] = SYSCONFDIR "/zabbix_agentd.conf";
- #endif
-
-+int CONFIG_FOREGROUND = ZBX_RUN_BACKGROUND;
-+
- /* application TITLE */
- const char title_message[] = APPLICATION_NAME
- #if defined(_WIN64)
-@@ -93,6 +95,7 @@ const char usage_message[] =
- const char *help_message[] = {
- "Options:",
- " -c --config <config-file> Absolute path to the configuration file",
-+ " -f --foreground Run in foreground don't fork",
- " -p --print Print known items and exit",
- " -t --test <item key> Test specified item and exit",
- " -h --help Display help information",
-@@ -127,6 +130,7 @@ const char *help_message[] = {
- /* COMMAND LINE OPTIONS */
- static struct zbx_option longopts[] =
- {
-+ {"foreground", 0, NULL, 'f'},
- {"config", 1, NULL, 'c'},
- {"help", 0, NULL, 'h'},
- {"version", 0, NULL, 'V'},
-@@ -147,7 +151,7 @@ static struct zbx_option longopts[] =
- };
-
- static char shortopts[] =
-- "c:hVpt:"
-+ "c:hfVpt:"
- #ifndef _WINDOWS
- "R:"
- #else
-@@ -241,6 +245,9 @@ static void parse_commandline(int argc,
- {
- switch (ch)
- {
-+ case 'f':
-+ CONFIG_FOREGROUND = ZBX_RUN_FOREGROUND;
-+ break;
- case 'c':
- CONFIG_FILE = strdup(zbx_optarg);
- break;
-@@ -944,7 +951,7 @@ int main(int argc, char **argv)
- break;
- }
-
-- START_MAIN_ZABBIX_ENTRY(CONFIG_ALLOW_ROOT, CONFIG_USER);
-+ START_MAIN_ZABBIX_ENTRY(CONFIG_ALLOW_ROOT, CONFIG_USER, CONFIG_FOREGROUND);
-
- exit(EXIT_SUCCESS);
- }
---- a/src/zabbix_proxy/proxy.c
-+++ b/src/zabbix_proxy/proxy.c
-@@ -60,6 +60,7 @@ const char usage_message[] = "[-hV] [-c
-
- const char *help_message[] = {
- "Options:",
-+ " -f --foreground Run in foreground don't fork",
- " -c --config <file> Absolute path to the configuration file",
- " -R --runtime-control <option> Perform administrative functions",
- "",
-@@ -84,6 +85,7 @@ const char *help_message[] = {
- /* long options */
- static struct zbx_option longopts[] =
- {
-+ {"foreground", 0, NULL, 'f'},
- {"config", 1, NULL, 'c'},
- {"runtime-control", 1, NULL, 'R'},
- {"help", 0, NULL, 'h'},
-@@ -92,7 +94,7 @@ static struct zbx_option longopts[] =
- };
-
- /* short options */
--static char shortopts[] = "c:n:hVR:";
-+static char shortopts[] = "c:n:fhVR:";
-
- /* end of COMMAND LINE OPTIONS */
-
-@@ -202,6 +204,7 @@ char *CONFIG_LOAD_MODULE_PATH = NULL;
- char **CONFIG_LOAD_MODULE = NULL;
-
- char *CONFIG_USER = NULL;
-+int CONFIG_FOREGROUND = ZBX_RUN_BACKGROUND;
-
- /* web monitoring */
- #ifdef HAVE_LIBCURL
-@@ -666,6 +669,9 @@ int main(int argc, char **argv)
- {
- switch (ch)
- {
-+ case 'f':
-+ CONFIG_FOREGROUND = ZBX_RUN_FOREGROUND;
-+ break;
- case 'c':
- CONFIG_FILE = zbx_strdup(CONFIG_FILE, zbx_optarg);
- break;
-@@ -705,7 +711,7 @@ int main(int argc, char **argv)
- init_ipmi_handler();
- #endif
-
-- return daemon_start(CONFIG_ALLOW_ROOT, CONFIG_USER);
-+ return daemon_start(CONFIG_ALLOW_ROOT, CONFIG_USER, CONFIG_FOREGROUND);
- }
-
- int MAIN_ZABBIX_ENTRY()
---- a/src/zabbix_server/server.c
-+++ b/src/zabbix_server/server.c
-@@ -64,6 +64,7 @@ const char usage_message[] = "[-hV] [-c
-
- const char *help_message[] = {
- "Options:",
-+ " -f --foreground Run in foreground don't fork",
- " -c --config <file> Absolute path to the configuration file",
- " -R --runtime-control <option> Perform administrative functions",
- "",
-@@ -88,6 +89,7 @@ const char *help_message[] = {
- /* long options */
- static struct zbx_option longopts[] =
- {
-+ {"foreground", 0, NULL, 'f'},
- {"config", 1, NULL, 'c'},
- {"runtime-control", 1, NULL, 'R'},
- {"help", 0, NULL, 'h'},
-@@ -96,7 +98,7 @@ static struct zbx_option longopts[] =
- };
-
- /* short options */
--static char shortopts[] = "c:n:hVR:";
-+static char shortopts[] = "c:n:fhVR:";
-
- /* end of COMMAND LINE OPTIONS */
-
-@@ -197,6 +199,7 @@ char *CONFIG_LOAD_MODULE_PATH = NULL;
- char **CONFIG_LOAD_MODULE = NULL;
-
- char *CONFIG_USER = NULL;
-+int CONFIG_FOREGROUND = ZBX_RUN_BACKGROUND;
-
- /* web monitoring */
- #ifdef HAVE_LIBCURL
-@@ -631,6 +634,9 @@ int main(int argc, char **argv)
- {
- switch (ch)
- {
-+ case 'f':
-+ CONFIG_FOREGROUND = ZBX_RUN_FOREGROUND;
-+ break;
- case 'c':
- CONFIG_FILE = zbx_strdup(CONFIG_FILE, zbx_optarg);
- break;
-@@ -670,7 +676,7 @@ int main(int argc, char **argv)
- init_ipmi_handler();
- #endif
-
-- return daemon_start(CONFIG_ALLOW_ROOT, CONFIG_USER);
-+ return daemon_start(CONFIG_ALLOW_ROOT, CONFIG_USER, CONFIG_FOREGROUND);
- }
-
- int MAIN_ZABBIX_ENTRY()
sys/vmmeter.h strings.h vm/vm_param.h \
sys/time.h kstat.h sys/syscall.h sys/sysmacros.h \
@@ -63,6 +63,11 @@ AC_CHECK_HEADERS(stdio.h stdlib.h string
- sys/timeb.h Winber.h lber.h ws2tcpip.h inttypes.h sys/file.h grp.h \
+ Winber.h lber.h ws2tcpip.h inttypes.h sys/file.h grp.h \
execinfo.h libperfstat.h sys/systemcfg.h sys/mnttab.h mntent.h sys/times.h \
dlfcn.h sys/utsname.h)
+AC_CHECK_HEADERS(sys/sysinfo.h, [], [], [
--- /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:=autoconf
+PKG_VERSION:=2.69
+PKG_RELEASE:=1
+
+PKG_SOURCE_URL:=@GNU/autoconf
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_MD5SUM:=82d05e03b93e45f5a39b828dc9c6c29b
+PKG_MAINTAINER:=Heinrich Schuchardt <xypron.glpk@gmx.de>
+PKG_LICENSE:=GPL-3.0+
+
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/autoconf
+ SECTION:=devel
+ CATEGORY:=Development
+ TITLE:=autoconf
+ URL:=https://www.gnu.org/software/autoconf/
+ DEPENDS:=+m4 +perl +perlbase-data +perlbase-file +perlbase-getopt \
+ +perlbase-dynaloader +perlbase-text
+endef
+
+define Package/autoconf/description
+ Autoconf is an extensible package of M4 macros that produce shell scripts to
+ automatically configure software source code packages.
+endef
+
+define Build/Install
+ $(SED) 's/@PERL@/\/usr\/bin\/perl/g' $(PKG_BUILD_DIR)/bin/Makefile.in
+ $(call Build/Install/Default)
+endef
+
+define Package/autoconf/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(SED) 's|$(STAGING_DIR_HOST)|/usr|g' $(PKG_INSTALL_DIR)/usr/bin/autom4te
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
+ $(INSTALL_DIR) $(1)/usr/share/autoconf
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/autoconf/INSTALL \
+ $(1)/usr/share/autoconf/
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/autoconf/autom4te.cfg \
+ $(1)/usr/share/autoconf/
+ $(INSTALL_DIR) $(1)/usr/share/autoconf/Autom4te
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/autoconf/Autom4te/* \
+ $(1)/usr/share/autoconf/Autom4te/
+ $(INSTALL_DIR) $(1)/usr/share/autoconf/autoconf
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/autoconf/autoconf/* \
+ $(1)/usr/share/autoconf/autoconf/
+ $(INSTALL_DIR) $(1)/usr/share/autoconf/autoscan
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/autoconf/autoscan/* \
+ $(1)/usr/share/autoconf/autoscan/
+ $(INSTALL_DIR) $(1)/usr/share/autoconf/autotest
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/autoconf/autotest/* \
+ $(1)/usr/share/autoconf/autotest/
+ $(INSTALL_DIR) $(1)/usr/share/autoconf/m4sugar
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/autoconf/m4sugar/* \
+ $(1)/usr/share/autoconf/m4sugar/
+endef
+
+$(eval $(call BuildPackage,autoconf))
--- /dev/null
+#
+# Copyright (C) 2015-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=automake
+PKG_VERSION:=1.15
+PKG_RELEASE:=3
+
+PKG_SOURCE_URL:=@GNU/automake
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_MD5SUM:=716946a105ca228ab545fc37a70df3a3
+PKG_MAINTAINER:=Heinrich Schuchardt <xypron.glpk@gmx.de>
+PKG_LICENSE:=GPL-3.0+
+
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/automake
+ SECTION:=devel
+ CATEGORY:=Development
+ TITLE:=automake
+ URL:=https://www.gnu.org/software/automake/
+ DEPENDS:=+autoconf +perlbase-thread +perlbase-attributes
+endef
+
+define Package/automake/description
+ Automake is a tool for automatically generating Makefile.in files compliant
+ with the GNU Coding Standards.
+endef
+
+define Package/automake/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/automake-$(PKG_VERSION) \
+ $(1)/usr/bin/automake-$(PKG_VERSION)
+ $(LN) automake-$(PKG_VERSION) $(1)/usr/bin/automake
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/aclocal-$(PKG_VERSION) \
+ $(1)/usr/bin/aclocal-$(PKG_VERSION)
+ $(LN) aclocal-$(PKG_VERSION) $(1)/usr/bin/aclocal
+ $(SED) 's|$(STAGING_DIR_HOST)|/usr|g' \
+ $(1)/usr/bin/automake-$(PKG_VERSION)
+ $(SED) 's|$(STAGING_DIR_HOST)|/usr|g' \
+ $(1)/usr/bin/aclocal-$(PKG_VERSION)
+ $(INSTALL_DIR) $(1)/usr/share/automake-$(PKG_VERSION)
+
+ for dir in \
+ automake-$(PKG_VERSION) automake-$(PKG_VERSION)/Automake \
+ automake-$(PKG_VERSION)/am aclocal \
+ aclocal-$(PKG_VERSION) aclocal-$(PKG_VERSION)/internal \
+ ; do \
+ $(INSTALL_DIR) $(1)/usr/share/$$$$dir; \
+ for file in $$$$(cd $(PKG_INSTALL_DIR) && \
+ find usr/share/$$$$dir -maxdepth 1 -type f); do \
+ $(INSTALL_DATA) $$(PKG_INSTALL_DIR)/$$$$file \
+ $(1)/$$$$file; \
+ done; \
+ done
+endef
+
+$(eval $(call BuildPackage,automake))
--- /dev/null
+#
+# Copyright (C) 2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libtool
+PKG_VERSION:=2.4.6
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=@GNU/libtool
+PKG_MD5SUM:=addf44b646ddb4e3919805aa88fa7c5e
+PKG_MAINTAINER:=Heinrich Schuchardt <xypron.glpk@gmx.de>
+PKG_LICENSE:=GPL-2.0+
+PKG_BUILD_DIR = $(BUILD_DIR)/libtool-bin/$(PKG_NAME)-$(PKG_VERSION)
+
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/libtool-bin
+ SECTION:=devel
+ CATEGORY:=Development
+ TITLE:=GNU Libtool - libtoolize
+ URL:=https://www.gnu.org/software/libtool/
+endef
+
+define Package/libtool-bin/description
+ GNU libtool is a generic library support script.
+ Libtool hides the complexity of using shared libraries behind a consistent,
+ portable interface.
+ This package contains the libtoolize executable.
+endef
+
+define Package/libtool-bin/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/libtoolize $(1)/usr/bin/
+ $(SED) 's|$(STAGING_DIR_HOST)||g' $(1)/usr/bin/libtoolize
+ $(INSTALL_DIR) $(1)/usr/share/aclocal/
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/aclocal/*.m4 \
+ $(1)/usr/share/aclocal/
+ $(INSTALL_DIR) $(1)/usr/share/libtool/build-aux/
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/libtool/build-aux/* \
+ $(1)/usr/share/libtool/build-aux/
+endef
+
+$(eval $(call BuildPackage,libtool-bin))
--- /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:=m4
+PKG_VERSION:=1.4.17
+PKG_RELEASE:=1
+
+PKG_SOURCE_URL:=@GNU/m4
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_MD5SUM:=a5e9954b1dae036762f7b13673a2cf76
+PKG_MAINTAINER:=Heinrich Schuchardt <xypron.glpk@gmx.de>
+PKG_LICENSE:=GPL-3.0+
+
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/m4
+ SECTION:=devel
+ CATEGORY:=Development
+ TITLE:=m4
+ URL:=https://www.gnu.org/software/m4/
+endef
+
+define Package/m4/description
+ GNU M4 is an implementation of the traditional Unix macro processor.
+ It is used by GNU Autoconf and Automake.
+endef
+
+define Package/m4/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/m4 $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,m4))
--- /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:=make
+PKG_VERSION:=4.1
+PKG_RELEASE:=1
+
+PKG_SOURCE_URL:=@GNU/make
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_MD5SUM:=654f9117957e6fa6a1c49a8f08270ec9
+PKG_MAINTAINER:=Heinrich Schuchardt <xypron.glpk@gmx.de>
+PKG_LICENSE:=GPL-3.0+
+
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/make
+ SECTION:=devel
+ CATEGORY:=Development
+ TITLE:=make
+ URL:=https://www.gnu.org/software/make/
+endef
+
+define Package/make/description
+ The Make package contains a tool to create executables from source files.
+endef
+
+define Package/make/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/make $(1)/usr/bin/
+endef
+
+# provide gnumake.h at build time for other packages
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include
+ $(CP) $(PKG_BUILD_DIR)/gnumake.h $(1)/usr/include/
+endef
+
+$(eval $(call BuildPackage,make))
--- /dev/null
+#
+# Copyright (C) 2015-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=pkg-config
+PKG_VERSION:=0.29.1
+PKG_RELEASE:=1
+
+PKG_SOURCE_URL:=http://pkgconfig.freedesktop.org/releases/
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_MD5SUM:=f739a28cae4e0ca291f82d1d41ef107d
+PKG_MAINTAINER:=Heinrich Schuchardt <xypron.glpk@gmx.de>
+PKG_LICENSE:=GPL-2+
+
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
+
+define Package/pkg-config
+ SECTION:=devel
+ CATEGORY:=Development
+ TITLE:=pkg-config
+ URL:=http://www.freedesktop.org/wiki/Software/pkg-config/
+ DEPENDS:=+glib2 $(INTL_DEPENDS)
+endef
+
+define Package/pkg-config/description
+ pkg-config is a helper tool used when compiling applications and libraries.
+ It helps you insert the correct compiler options on the command line so an
+ application can use gcc -o test test.cpkg-config --libs --cflags glib-2.0
+ for instance, rather than hard-coding values on where to find glib (or
+ other libraries).
+endef
+
+define Package/pkg-config/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/pkg-config $(1)/usr/bin/
+ $(INSTALL_DIR) $(1)/usr/share/aclocal/
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/aclocal/pkg.m4 \
+ $(1)/usr/share/aclocal/
+endef
+
+$(eval $(call BuildPackage,pkg-config))
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=exfat-nofuse
-PKG_VERSION:=git-20150828
+PKG_VERSION:=git-20151121
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://github.com/dorimanx/exfat-nofuse.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=0ead00404360b944652335331a2e1a50948f4cb9
+PKG_SOURCE_VERSION:=42635ed1c682a0d85c12f73d08489d1a3a7a94e3
PKG_MAINTAINER:=Bruno Randolf <br1@einfach.org>
PKG_LICENSE:=GPL-2.0
include $(TOPDIR)/rules.mk
PKG_NAME:=lua-mosquitto
-PKG_VERSION:=0.1
+PKG_VERSION:=0.2
PKG_RELEASE:=1
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE
CATEGORY:=Languages
TITLE:=luabitop
URL:=http://bitop.luajit.org/
- DEPENDS:=+lua
+ DEPENDS:=+liblua
endef
define Package/luabitop/description
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) all \
CC="$(TARGET_CC)" \
- LUA="$(STAGING_DIR_HOST)/bin/lua" \
- LUAC="$(STAGING_DIR_HOST)/bin/luac" \
+ LUA="$(STAGING_DIR)/host/bin/lua" \
+ LUAC="$(STAGING_DIR)/host/bin/luac" \
OPT_FLAGS="$(TARGET_CFLAGS) --std=c99 -Dpthread_yield=sched_yield"
endef
to various low level libc functions.
endef
-CONFIGURE_VARS += ac_cv_path_LDOC=""
+CONFIGURE_VARS += ac_cv_path_LDOC="true"
TARGET_CFLAGS += -DLUA_USE_LINUX $(FPIC) -std=gnu99
ifeq ($(CONFIG_USE_MUSL),y)
CONFIGURE_ARGS = \
--prefix=$(CONFIGURE_PREFIX) \
--sysconfdir=/etc \
- --with-lua=$(STAGING_DIR_HOST)
+ --with-lua=$(STAGING_DIR)/host
define Build/Compile
$(call Build/Compile/Default,build)
include $(TOPDIR)/rules.mk
PKG_NAME:=luasec
-PKG_VERSION:=0.5
+PKG_VERSION:=0.5.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/brunoos/luasec/archive/
-PKG_MD5SUM:=0518f4524f399f33424c6f450e1d06db
+PKG_MD5SUM:=e34e274a57e9045641191eb7398cce2a
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_NAME)-$(PKG_VERSION)
MAINTAINER:=W. Michael Petullo <mike@flyn.org>
PKG_NPM_NAME:=arduino-firmata
PKG_NAME:=node-$(PKG_NPM_NAME)
PKG_VERSION:=0.3.3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/shokai/node-arduino-firmata.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_BUILD_DEPENDS:=node
-PKG_NODE_VERSION:=0.12.7
+PKG_BUILD_DEPENDS:=node/host
+PKG_NODE_VERSION:=0.12.13
PKG_MAINTAINER:=John Crispin <blogic@openwrt.org>
PKG_LICENSE:=MIT
$(MAKE_FLAGS) \
npm_config_arch=$(CONFIG_ARCH) \
npm_config_nodedir=$(BUILD_DIR)/node-v$(PKG_NODE_VERSION)/ \
+ npm_config_cache=$(BUILD_DIR)/node-v$(PKG_NODE_VERSION)/npm-cache \
PREFIX="$(PKG_INSTALL_DIR)/usr/" \
- $(STAGING_DIR_HOST)/bin/npm install -g $(PKG_BUILD_DIR)
+ $(STAGING_DIR)/host/bin/npm install -g $(PKG_BUILD_DIR)
endef
define Package/node-arduino-firmata/install
mkdir -p $(1)/usr/lib/node
$(CP) $(PKG_INSTALL_DIR)/usr/lib/node_modules/* $(1)/usr/lib/node
rm -rf $(1)/usr/lib/node/arduino-firmata/node_modules/serialport/
- $(CP) -r ./files/* $(1)/
+ $(CP) ./files/* $(1)/
endef
$(eval $(call BuildPackage,node-arduino-firmata))
PKG_NPM_NAME:=cylon
PKG_NAME:=node-$(PKG_NPM_NAME)
PKG_VERSION:=0.22.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/hybridgroup/cylon-firmata.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_BUILD_DEPENDS:=node
-PKG_NODE_VERSION:=0.12.7
+PKG_BUILD_DEPENDS:=node/host
+PKG_NODE_VERSION:=0.12.13
PKG_MAINTAINER:=John Crispin <blogic@openwrt.org>
PKG_LICENSE:=Apache-2.0
$(MAKE_FLAGS) \
npm_config_arch=$(CONFIG_ARCH) \
npm_config_nodedir=$(BUILD_DIR)/node-v$(PKG_NODE_VERSION)/ \
+ npm_config_cache=$(BUILD_DIR)/node-v$(PKG_NODE_VERSION)/npm-cache \
PREFIX="$(PKG_INSTALL_DIR)/usr/" \
- $(STAGING_DIR_HOST)/bin/npm install -g $(PKG_BUILD_DIR)
+ $(STAGING_DIR)/host/bin/npm install -g $(PKG_BUILD_DIR)
endef
define Package/node-cylon/install
mkdir -p $(1)/usr/lib/node/cylon
- $(CP) -r $(PKG_INSTALL_DIR)/usr/lib/node_modules/cylon-firmata/node_modules/cylon/* $(1)/usr/lib/node/cylon/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/node_modules/cylon-firmata/node_modules/cylon/* $(1)/usr/lib/node/cylon/
endef
define Package/node-cylon-i2c/install
mkdir -p $(1)/usr/lib/node/cylon-i2c
- $(CP) -r $(PKG_INSTALL_DIR)/usr/lib/node_modules/cylon-firmata/node_modules/cylon-i2c/* $(1)/usr/lib/node/cylon-i2c/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/node_modules/cylon-firmata/node_modules/cylon-i2c/* $(1)/usr/lib/node/cylon-i2c/
endef
define Package/node-cylon-gpio/install
mkdir -p $(1)/usr/lib/node/cylon-gpio
- $(CP) -r $(PKG_INSTALL_DIR)/usr/lib/node_modules/cylon-firmata/node_modules/cylon-gpio/* $(1)/usr/lib/node/cylon-gpio/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/node_modules/cylon-firmata/node_modules/cylon-gpio/* $(1)/usr/lib/node/cylon-gpio/
endef
define Package/node-cylon-firmata/install
mkdir -p $(1)/usr/lib/node/cylon-firmata
- $(CP) -r $(PKG_INSTALL_DIR)/usr/lib/node_modules/cylon-firmata/{index.js,lib,LICENSE,package.json,README.md,RELEASES.md,spec} $(1)/usr/lib/node/cylon-firmata/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/node_modules/cylon-firmata/{index.js,lib,LICENSE,package.json,README.md,RELEASES.md,spec} $(1)/usr/lib/node/cylon-firmata/
endef
$(eval $(call BuildPackage,node-cylon))
PKG_NPM_NAME:=hid
PKG_NAME:=node-$(PKG_NPM_NAME)
PKG_VERSION:=0.4.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/node-hid/node-hid.git
PKG_SOURCE_VERSION:=c56c8aa5d113c6f2574d1f7e64d41745702965bb
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_BUILD_DEPENDS:=node
-PKG_NODE_VERSION:=0.12.7
+PKG_BUILD_DEPENDS:=node/host
+PKG_NODE_VERSION:=0.12.13
PKG_MAINTAINER:=John Crispin <blogic@openwrt.org>
PKG_LICENSE:=Custom
$(MAKE_FLAGS) \
npm_config_arch=$(CONFIG_ARCH) \
npm_config_nodedir=$(BUILD_DIR)/node-v$(PKG_NODE_VERSION)/ \
+ npm_config_cache=$(BUILD_DIR)/node-v$(PKG_NODE_VERSION)/npm-cache \
PREFIX="$(PKG_INSTALL_DIR)/usr/" \
- $(STAGING_DIR_HOST)/bin/npm install -g $(PKG_BUILD_DIR)
+ $(STAGING_DIR)/host/bin/npm install -g $(PKG_BUILD_DIR)
endef
define Package/node-hid/install
PKG_NPM_NAME:=serialport
PKG_NAME:=node-$(PKG_NPM_NAME)
PKG_VERSION:=1.4.6
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NPM_NAME)-$(PKG_VERSION).tgz
PKG_SOURCE_URL:=http://registry.npmjs.org/$(PKG_NPM_NAME)/-/
PKG_MD5SUM:=1eb21082e0aa676b8350182a60230808
-PKG_BUILD_DEPENDS:=node
-PKG_NODE_VERSION:=0.12.7
+PKG_BUILD_DEPENDS:=node/host
+PKG_NODE_VERSION:=0.12.13
PKG_MAINTAINER:=John Crispin <blogic@openwrt.org>
PKG_LICENSE:=Custom
$(MAKE_FLAGS) \
npm_config_arch=$(CONFIG_ARCH) \
npm_config_nodedir=$(BUILD_DIR)/node-v$(PKG_NODE_VERSION)/ \
+ npm_config_cache=$(BUILD_DIR)/node-v$(PKG_NODE_VERSION)/npm-cache \
PREFIX="$(PKG_INSTALL_DIR)/usr/" \
- $(STAGING_DIR_HOST)/bin/npm install -g $(PKG_BUILD_DIR)
+ $(STAGING_DIR)/host/bin/npm install -g $(PKG_BUILD_DIR)
endef
define Package/node-serialport/install
#
-# Copyright (C) 2006-2011 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=node
-PKG_VERSION:=v0.12.7
+PKG_VERSION:=v0.12.13
PKG_RELEASE:=1
PKG_SOURCE:=node-$(PKG_VERSION).tar.gz
package ecosystem, npm, is the largest ecosystem of open source libraries in the world.
endef
+CPU:=$(subst x86_64,x64,$(subst i386,ia32,$(ARCH)))
+
+MAKE_VARS += \
+ DESTCPU=$(CPU)
+
CONFIGURE_ARGS= \
- --dest-cpu=$(CONFIG_ARCH) \
+ --dest-cpu=$(CPU) \
--dest-os=linux \
--without-snapshot \
--shared-zlib \
HOST_CONFIGURE_ARGS:= \
--dest-os=linux \
--without-snapshot \
- --prefix=$(STAGING_DIR_HOST)/
+ --prefix=$(STAGING_DIR)/host/
HOST_CONFIGURE_CMD:=python ./configure
#
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=perl-cgi
-PKG_VERSION:=4.22
+PKG_VERSION:=4.28
PKG_RELEASE:=1
PKG_SOURCE_URL:=http://www.cpan.org/authors/id/L/LE/LEEJO
PKG_SOURCE:=CGI-$(PKG_VERSION).tar.gz
-PKG_MD5SUM:=8289aa6f2cba9589134d517f4a25da9e
+PKG_MD5SUM:=28efb391377f6e98c19c23292d5fcc8c
PKG_LICENSE:=GPL Artistic-2.0
PKG_MAINTAINER:=Marcel Denia <naoir@gmx.net>
include $(TOPDIR)/rules.mk
PKG_NAME:=perl-compress-bzip2
-PKG_VERSION:=2.22
-PKG_RELEASE:=4
+PKG_VERSION:=2.24
+PKG_RELEASE:=1
PKG_SOURCE_URL:=http://www.cpan.org/authors/id/R/RU/RURBAN/
PKG_SOURCE:=Compress-Bzip2-$(PKG_VERSION).tar.gz
-PKG_MD5SUM:=0d01b86c3efa74e29bb975aea46b666f
+PKG_MD5SUM:=d5ef04d1e51fe45743b3044abad967d2
PKG_LICENSE:=GPL-1.0+ Artistic-1.0-Perl
PKG_MAINTAINER:=Marcel Denia <naoir@gmx.net>
#
-# Copyright (C) 2014 OpenWrt.org
+# Copyright (C) 2014 - 2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=perl-html-parser
-PKG_VERSION:=3.71
-PKG_RELEASE:=4
+PKG_VERSION:=3.72
+PKG_RELEASE:=1
PKG_SOURCE_URL:=http://www.cpan.org/authors/id/G/GA/GAAS/
PKG_SOURCE:=HTML-Parser-$(PKG_VERSION).tar.gz
-PKG_MD5SUM:=9128a45893097dfa3bf03301b19c5efe
+PKG_MD5SUM:=eb7505e5f626913350df9dd4a03d54a8
PKG_LICENSE:=GPL-1.0+ Artistic-1.0-Perl
PKG_MAINTAINER:=Marcel Denia <naoir@gmx.net>
#
-# Copyright (C) 2014, 2015 OpenWrt.org
+# Copyright (C) 2014 - 2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=perl-test-harness
-PKG_VERSION:=3.35
-PKG_RELEASE:=3
+PKG_VERSION:=3.36
+PKG_RELEASE:=1
PKG_SOURCE_URL:=http://www.cpan.org/authors/id/L/LE/LEONT/
PKG_SOURCE:=Test-Harness-$(PKG_VERSION).tar.gz
-PKG_MD5SUM:=2a6010bca2ad78e094d629eea6afd7d9
+PKG_MD5SUM:=4c8d9c77e8e06ca96c7383c05c8f3616
PKG_LICENSE:=GPL-1.0+ Artistic-1.0-Perl
PKG_MAINTAINER:=Marcel Denia <naoir@gmx.net>
#
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015 - 2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=perl-uri
-PKG_VERSION:=1.69
+PKG_VERSION:=1.71
PKG_RELEASE:=1
PKG_SOURCE_URL:=http://www.cpan.org/authors/id/E/ET/ETHER/
PKG_SOURCE:=URI-$(PKG_VERSION).tar.gz
-PKG_MD5SUM:=3c56aee0300bce5a440ccbd558277ea0
+PKG_MD5SUM:=247c3da29a794f72730e01aa5a715daf
PKG_LICENSE:=GPL-1.0+ Artistic-1.0-Perl
PKG_MAINTAINER:=Marcel Denia <naoir@gmx.net>
include $(TOPDIR)/rules.mk
PKG_NAME:=perl-www
-PKG_VERSION:=6.13
+PKG_VERSION:=6.15
PKG_RELEASE:=1
PKG_SOURCE_URL:=http://www.cpan.org/authors/id/E/ET/ETHER/
PKG_SOURCE:=libwww-perl-$(PKG_VERSION).tar.gz
-PKG_MD5SUM:=85b36bcd2fd2450718ee14f894f0d3d1
+PKG_MD5SUM:=6888c9d8728cd6f3ea3c9754461c9f94
PKG_LICENSE:=GPL-1.0+ Artistic-1.0-Perl
PKG_MAINTAINER:=Marcel Denia <naoir@gmx.net>
EXPAT_LIBPATH:=$(STAGING_DIR)/usr/lib
EXPAT_INCPATH=$(STAGING_DIR)/usr/include
-HOST_EXPAT_LIBPATH:=$(STAGING_DIR_HOST)/lib
-HOST_EXPAT_INCPATH=$(STAGING_DIR_HOST)/include
+HOST_EXPAT_LIBPATH:=$(STAGING_DIR)/host/lib
+HOST_EXPAT_INCPATH=$(STAGING_DIR)/host/include
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/host-build.mk
include $(TOPDIR)/rules.mk
PKG_NAME:=perl
-PKG_VERSION:=5.22.0
-PKG_RELEASE:=5
+PKG_VERSION:=5.22.1
+PKG_RELEASE:=2
PKG_SOURCE_URL:=ftp://ftp.cpan.org/pub/CPAN/src/5.0 \
http://www.cpan.org/src/5.0 \
ftp://ftp.funet.fi/pub/languages/perl/CPAN/src/5.0 \
http://ftp.funet.fi/pub/languages/perl/CPAN/src/5.0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_MD5SUM:=e32cb6a8dda0084f2a43dac76318d68d
+PKG_MD5SUM:=19295bbb775a3c36123161b9bf4892f1
PKG_LICENSE:=GPL-1.0+ Artistic-1.0-Perl
PKG_LICENSE_FILES:=Copying Artistic README
HOST_BUILD_PARALLEL:=1
# Variables used during configuration/build
-HOST_PERL_PREFIX:=$(STAGING_DIR_HOST)/usr
+HOST_PERL_PREFIX:=$(STAGING_DIR)/host/usr
# Filter -g3, it will break Compress-Raw-Zlib
TARGET_CFLAGS_PERL:=$(patsubst -g3,-g,$(TARGET_CFLAGS))
provides(NSIG - 1).
owrt:sigs * Symbolic names of the first 32 signals
this architecture provides, in numeric
- order. Seperated by whitespaces.
+ order. Separated by whitespaces.
owrt:sig_name_extra * Symbolic names of any additional signals
this architecture provides after
- owrt:sig_count. Seperated by
+ owrt:sig_count. Separated by
whitespaces.
owrt:sig_num_extra * Numeric values associated with the
signal names provided in
- owrt:sig_name_extra. Seperated by
+ owrt:sig_name_extra. Separated by
whitespaces.
Passed via command line
A symbol name has to consist entirely of alphanumeric characters as well as
the underscore(_) character. In addition, symbol names may be prefixed with an
-all-lowercase string, seperated by a colon(:):
+all-lowercase string, separated by a colon(:):
my:name=value
=head3 Symbol definitions
-A symbol definition is in the form of a simple name/value pair, seperated by
+A symbol definition is in the form of a simple name/value pair, separated by
an equals sign(=):
name=value
# Set the version here
PERL_REVISION=5
PERL_VERSION=22
-PERL_SUBVERSION=0
+PERL_SUBVERSION=1
# (api_revison, api_version, api_subversion) = (revision, version, 0) usually
PERL_API_REVISION=5
--- a/hints/linux.sh
+++ b/hints/linux.sh
-@@ -204,6 +204,24 @@ case "$libc" in
+@@ -221,6 +221,24 @@ case "$libc" in
;;
esac
--- a/Makefile.SH
+++ b/Makefile.SH
-@@ -315,22 +315,11 @@ MINIPERL = \$(LDLIBPTH) ./miniperl\$(EXE
+@@ -316,22 +316,11 @@ MANIFEST_SRT = MANIFEST.srt
!GROK!THIS!
-Index: perl-5.22.0/t/op/tie_fetch_count.t
-===================================================================
---- perl-5.22.0.orig/t/op/tie_fetch_count.t
-+++ perl-5.22.0/t/op/tie_fetch_count.t
+--- a/t/op/tie_fetch_count.t
++++ b/t/op/tie_fetch_count.t
@@ -250,12 +250,17 @@ for ([chdir=>''],[chmod=>'0,'],[chown=>'
check_count "$op $args\\\$tied_glob$postargs";
}
Signed-off-by: Marcel Denia <naoir@gmx.net>
-Index: perl-5.22.0/dist/threads/t/join.t
-===================================================================
---- perl-5.22.0.orig/dist/threads/t/join.t
-+++ perl-5.22.0/dist/threads/t/join.t
+--- a/dist/threads/t/join.t
++++ b/dist/threads/t/join.t
@@ -110,36 +110,41 @@ sub skip {
# We parse ps output so this is OS-dependent.
--- /dev/null
+From b6307f728a4f842a54ea96959e386c7daa92ece1 Mon Sep 17 00:00:00 2001
+From: Tony Cook <tony@develop-help.com>
+Date: Tue, 15 Dec 2015 10:56:54 +1100
+Subject: [perl #126862] ensure File::Spec::canonpath() preserves taint
+
+Previously the unix specific XS implementation of canonpath() would
+return an untainted path when supplied a tainted path.
+
+For the empty string case, newSVpvs() already sets taint as needed on
+its result.
+---
+ dist/PathTools/Cwd.xs | 1 +
+ dist/PathTools/t/taint.t | 19 ++++++++++++++++++-
+ 2 files changed, 19 insertions(+), 1 deletion(-)
+
+--- a/dist/PathTools/Cwd.xs
++++ b/dist/PathTools/Cwd.xs
+@@ -535,6 +535,7 @@ THX_unix_canonpath(pTHX_ SV *path)
+ *o = 0;
+ SvPOK_on(retval);
+ SvCUR_set(retval, o - SvPVX(retval));
++ SvTAINT(retval);
+ return retval;
+ }
+
+--- a/dist/PathTools/t/taint.t
++++ b/dist/PathTools/t/taint.t
+@@ -12,7 +12,7 @@ use Test::More;
+ BEGIN {
+ plan(
+ ${^TAINT}
+- ? (tests => 17)
++ ? (tests => 21)
+ : (skip_all => "A perl without taint support")
+ );
+ }
+@@ -34,3 +34,20 @@ foreach my $func (@Functions) {
+
+ # Previous versions of Cwd tainted $^O
+ is !tainted($^O), 1, "\$^O should not be tainted";
++
++{
++ # [perl #126862] canonpath() loses taint
++ my $tainted = substr($ENV{PATH}, 0, 0);
++ # yes, getcwd()'s result should be tainted, and is tested above
++ # but be sure
++ ok tainted(File::Spec->canonpath($tainted . Cwd::getcwd)),
++ "canonpath() keeps taint on non-empty string";
++ ok tainted(File::Spec->canonpath($tainted)),
++ "canonpath() keeps taint on empty string";
++
++ (Cwd::getcwd() =~ /^(.*)/);
++ my $untainted = $1;
++ ok !tainted($untainted), "make sure our untainted value is untainted";
++ ok !tainted(File::Spec->canonpath($untainted)),
++ "canonpath() doesn't add taint to untainted string";
++}
PERL_VERSION:=5.22
# Build environment
-HOST_PERL_PREFIX:=$(STAGING_DIR_HOST)/usr
+HOST_PERL_PREFIX:=$(STAGING_DIR)/host/usr
ifneq ($(CONFIG_USE_GLIBC),)
EXTRA_LIBS:=bsd
EXTRA_LIBDIRS:=$(STAGING_DIR)/lib
endif
-PERL_CMD:=$(STAGING_DIR_HOST)/usr/bin/perl$(PERL_VERSION).0
+PERL_CMD:=$(STAGING_DIR)/host/usr/bin/perl$(PERL_VERSION).0
MOD_CFLAGS_PERL:=-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(TARGET_CFLAGS) $(TARGET_CPPFLAGS)
ifdef CONFIG_PERL_THREADS
rm -f $(1)/Makefile.aperl
$(MAKE) -C $(1) perl
$(CP) $(1)/perl $(PERL_CMD)
- $(CP) $(1)/perl $(STAGING_DIR_HOST)/usr/bin/perl
+ $(CP) $(1)/perl $(STAGING_DIR)/host/usr/bin/perl
endef
define perlmod/host/Configure
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=php
-PKG_VERSION:=5.6.16
-PKG_RELEASE:=1
+PKG_VERSION:=5.6.19
+PKG_RELEASE:=2
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>, Michael Heimpold <mhei@heimpold.de>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://www.php.net/distributions/
-PKG_MD5SUM:=3f1d999ed1f9cb5713c9a0161c557f2f
+PKG_MD5SUM:=aab960cc1b2bfbeb00d030a9d42b38bd
PKG_FIXUP:=libtool autoreconf
PKG_BUILD_PARALLEL:=1
ftp \
gettext gd gmp \
hash \
- iconv \
+ iconv intl \
json \
ldap \
mbstring mcrypt mysql mysqli \
define Package/php5-cli
$(call Package/php5/Default)
+ DEPENDS+= +PACKAGE_php5-mod-intl:libstdcpp
TITLE+= (CLI)
endef
define Package/php5-cgi
$(call Package/php5/Default)
+ DEPENDS+= +PACKAGE_php5-mod-intl:libstdcpp
TITLE+= (CGI & FastCGI)
endef
CONFIGURE_ARGS+= --without-iconv
endif
+ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-intl),)
+ CONFIGURE_ARGS+= --enable-intl=shared
+else
+ CONFIGURE_ARGS+= --disable-intl
+endif
+
ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-json),)
CONFIGURE_ARGS+= --enable-json=shared
else
mkdir -p $(PKG_BUILD_DIR)/staging/usr/bin
make -C $(PKG_BUILD_DIR) install INSTALL_ROOT=$(PKG_BUILD_DIR)/staging
rm -f $(PKG_BUILD_DIR)/staging/usr/bin/php
- $(CP) $(PKG_BUILD_DIR)/staging/* $(STAGING_DIR_HOST)
- sed -i -e "s#prefix='/usr'#prefix='$(STAGING_DIR_HOST)/usr'#" $(STAGING_DIR_HOST)/usr/bin/phpize
- sed -i -e "s#exec_prefix=\"\`eval echo /usr\`\"#exec_prefix='$(STAGING_DIR_HOST)/usr'#" $(STAGING_DIR_HOST)/usr/bin/phpize
- sed -i -e "s#prefix=\"/usr\"#prefix=\"$(STAGING_DIR_HOST)/usr\"#" $(STAGING_DIR_HOST)/usr/bin/php-config
+ $(CP) $(PKG_BUILD_DIR)/staging/* $(STAGING_DIR)/host
+ sed -i -e "s#prefix='/usr'#prefix='$(STAGING_DIR)/host/usr'#" $(STAGING_DIR)/host/usr/bin/phpize
+ sed -i -e "s#exec_prefix=\"\`eval echo /usr\`\"#exec_prefix='$(STAGING_DIR)/host/usr'#" $(STAGING_DIR)/host/usr/bin/phpize
+ sed -i -e "s#prefix=\"/usr\"#prefix=\"$(STAGING_DIR)/host/usr\"#" $(STAGING_DIR)/host/usr/bin/php-config
endef
define BuildModule
$(eval $(call BuildModule,gmp,GMP,+PACKAGE_php5-mod-gmp:libgmp))
$(eval $(call BuildModule,hash,Hash))
$(eval $(call BuildModule,iconv,iConv,$(ICONV_DEPENDS)))
+$(eval $(call BuildModule,intl,Internationalization Functions,+PACKAGE_php5-mod-intl:icu))
$(eval $(call BuildModule,json,JSON))
$(eval $(call BuildModule,ldap,LDAP,+PACKAGE_php5-mod-ldap:libopenldap +PACKAGE_php5-mod-ldap:libsasl2))
$(eval $(call BuildModule,mbstring,MBString))
define Build/Prepare
$(Build/Prepare/Default)
- ( cd $(PKG_BUILD_DIR); $(STAGING_DIR_HOST)/usr/bin/phpize )
+ ( cd $(PKG_BUILD_DIR); $(STAGING_DIR)/host/usr/bin/phpize )
endef
CONFIGURE_ARGS+= \
- --with-php-config=$(STAGING_DIR_HOST)/usr/bin/php-config
+ --with-php-config=$(STAGING_DIR)/host/usr/bin/php-config
define PECLPackage
--- /dev/null
+#
+# Copyright (C) 2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=attrs
+PKG_VERSION:=15.2.0
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/a/attrs
+PKG_MD5SUM:=b3c460eb6482f6e557c0e4025475c007
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-attrs
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-attrs
+ URL:=https://attrs.readthedocs.org/
+ DEPENDS:=+python-light
+endef
+
+define Package/python-attrs/description
+attrs is an MIT-licensed Python package with class decorators that ease
+the chores of implementing the most common attribute-related object
+protocols.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
+endef
+
+$(eval $(call PyPackage,python-attrs))
+$(eval $(call BuildPackage,python-attrs))
#
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=cffi
-PKG_VERSION:=1.3.1
-PKG_RELEASE:=1
+PKG_VERSION:=1.5.2
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://pypi.python.org/packages/source/c/cffi
-PKG_MD5SUM:=deeba7c1fd32a66f1db587988d760c11
+PKG_MD5SUM:=fa766133f7299464c8bf857e0c966a82
PKG_BUILD_DEPENDS:=python python-setuptools
HOST_BUILD_DEPENDS:=libffi/host python/host python-setuptools/host python-pycparser/host
endef
define Host/Compile
- $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR_HOST)")
+ $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR)/host")
endef
define Host/Install
--- /dev/null
+#
+# Copyright (C) 2015-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=cryptography
+PKG_VERSION:=1.3.1
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/c/cryptography
+PKG_MD5SUM:=bc8148d2ff2d80fef8ef2d2e856b3a7f
+
+PKG_BUILD_DEPENDS:=python-cffi/host
+
+PKG_LICENSE:=Apache-2.0 BSD-3-Clause
+PKG_LICENSE_FILES:=LICENSE.APACHE LICENSE.BSD
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-cryptography
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-cryptography
+ URL:=https://github.com/pyca/cryptography
+ DEPENDS:=+libopenssl +python +python-cffi +python-enum34 +python-idna +python-ipaddress +python-pyasn1 +python-six +python-setuptools
+endef
+
+define Package/python-cryptography/description
+cryptography is a package which provides cryptographic recipes and
+primitives to Python developers. Our goal is for it to be your "cryptographic
+standard library". It supports Python 2.6-2.7, Python 3.3+, and PyPy 2.6+.
+endef
+
+define PyPackage/python-cryptography/filespec
++|$(PYTHON_PKG_DIR)
+-|$(PYTHON_PKG_DIR)/cryptography/hazmat/backends/commoncrypto
+-|$(PYTHON_PKG_DIR)/cryptography/hazmat/bindings/commoncrypto
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
+endef
+
+$(eval $(call PyPackage,python-cryptography))
+$(eval $(call BuildPackage,python-cryptography))
include $(TOPDIR)/rules.mk
PKG_NAME:=enum34
-PKG_VERSION:=1.1.1
+PKG_VERSION:=1.1.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://pypi.python.org/packages/source/e/enum34
-PKG_MD5SUM:=5edaf22a14ec2769fc973a0443bf02d5
+PKG_MD5SUM:=025bb71b3f9d2fad15d0ee53e48dc873
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=enum/LICENSE
--- /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:=gmpy
+PKG_VERSION:=1.17
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).zip
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/g/gmpy
+PKG_MD5SUM:=2bf419076b06e107167e219f60ac6d27
+
+PKG_LICENSE:=LGPL-2.1+
+PKG_LICENSE_FILES:=lgpl-2.1.txt
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-gmpy
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-gmpy
+ URL:=http://code.google.com/p/gmpy/
+ DEPENDS:=+libgmp +python-light
+endef
+
+define Package/python-gmpy/description
+gmpy is a C-coded Python extension module that provides access to the
+GMP (or MPIR) multiple-precision arithmetic library.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
+endef
+
+$(eval $(call PyPackage,python-gmpy))
+$(eval $(call BuildPackage,python-gmpy))
--- /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:=gmpy2
+PKG_VERSION:=2.0.7
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).zip
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/g/gmpy2
+PKG_MD5SUM:=b5aada3ee5afb316ea94604f45192054
+
+PKG_LICENSE:=LGPL-3.0+
+PKG_LICENSE_FILES:=COPYING.LESSER
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-gmpy2
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-gmpy2
+ URL:=http://code.google.com/p/gmpy/
+ DEPENDS:=+libgmp +python-light
+endef
+
+define Package/python-gmpy2/description
+gmpy2 is a C-coded Python extension module that supports multiple-precision
+arithmetic. gmpy2 is the successor to the original gmpy module. The gmpy module
+only supported the GMP multiple-precision library. gmpy2 adds support for the
+MPFR (correctly rounded real floating-point arithmetic) and MPC (correctly
+rounded complex floating-point arithmetic) libraries. gmpy2 also updates the
+API and naming conventions to be more consistent and support the additional
+functionality.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)" --nompfr)
+endef
+
+$(eval $(call PyPackage,python-gmpy2))
+$(eval $(call BuildPackage,python-gmpy2))
#
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=idna
-PKG_VERSION:=2.0
+PKG_VERSION:=2.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://pypi.python.org/packages/source/i/idna
-PKG_MD5SUM:=bd17a9d15e755375f48a62c13b25b801
+PKG_MD5SUM:=f6473caa9c5e0cc1ad3fd5d04c3c114b
PKG_BUILD_DEPENDS:=python python-setuptools
#
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=ipaddress
-PKG_VERSION:=1.0.15
+PKG_VERSION:=1.0.16
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://pypi.python.org/packages/source/i/ipaddress
-PKG_MD5SUM:=12915e923b738107e47827478d553ba1
+PKG_MD5SUM:=1e27b62aa20f5b6fc200b2bdbf0d0847
PKG_BUILD_DEPENDS:=python python-setuptools
--- /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:=Parsley
+PKG_VERSION:=1.3
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/P/Parsley
+PKG_MD5SUM:=92bc256e5f73810a609dc7874637ad31
+
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-parsley
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-parsley
+ URL:=http://launchpad.net/parsley
+ DEPENDS:=+python-light
+endef
+
+define Package/python-parsley/description
+Parsing and pattern matching made easy.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
+endef
+
+$(eval $(call PyPackage,python-parsley))
+$(eval $(call BuildPackage,python-parsley))
--- /dev/null
+diff -Nur a/setup.py b/setup.py
+--- a/setup.py 2015-09-09 10:45:25.000000000 +0800
++++ b/setup.py 2015-12-01 17:31:03.143409843 +0800
+@@ -14,7 +14,6 @@
+ author_email="washort42@gmail.com",
+ license="MIT License",
+ long_description=open("README").read(),
+- packages=["ometa", "terml", "ometa._generated", "terml._generated",
+- "ometa.test", "terml.test"],
++ packages=["ometa", "terml", "ometa._generated", "terml._generated"],
+ py_modules=["parsley"]
+ )
include $(TOPDIR)/rules.mk
PKG_NAME:=python-pip
-PKG_VERSION:=7.1.2
-PKG_RELEASE:=3
+PKG_VERSION:=8.1.1
+PKG_RELEASE:=1
PKG_SOURCE:=pip-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pip/
-PKG_MD5SUM:=3823d2343d9f3aaab21cf9c917710196
+PKG_MD5SUM:=6b86f11841e89c8241d689956ba99ed7
PKG_BUILD_DIR:=$(BUILD_DIR)/pip-$(PKG_VERSION)
PKG_USE_MIPS16:=0
#
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PKG_NAME:=ply
PKG_VERSION:=3.8
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.dabeaz.com/ply
$(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
endef
-define Build/InstallDev
- $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
- $(CP) \
- $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
- $(1)$(PYTHON_PKG_DIR)
-endef
-
define Host/Compile
- $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR_HOST)")
+ $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR)/host")
endef
define Host/Install
--- /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:=pyasn1-modules
+PKG_VERSION:=0.0.8
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pyasn1-modules
+PKG_MD5SUM:=178129bc7fbf07215c25230c5f053f81
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+PKG_LICENSE:=BSD-2-Clause
+PKG_LICENSE_FILES:=LICENSE.txt
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-pyasn1-modules
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-pyasn1-modules
+ URL:=http://sourceforge.net/projects/pyasn1/
+ DEPENDS:=+python-light +python-pyasn1
+endef
+
+define Package/python-pyasn1-modules/description
+This is a small but growing collection of ASN.1 data structures
+expressed in Python terms using pyasn1 data model.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
+endef
+
+$(eval $(call PyPackage,python-pyasn1-modules))
+$(eval $(call BuildPackage,python-pyasn1-modules))
#
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PKG_NAME:=pycparser
PKG_VERSION:=2.14
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pycparser
endef
define Host/Compile
- $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR_HOST)")
+ $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR)/host")
endef
define Host/Install
--- /dev/null
+#
+# Copyright (C) 2015-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=pyOpenSSL
+PKG_VERSION:=16.0.0
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pyOpenSSL
+PKG_MD5SUM:=9587d813dcf656e9f2760e41a3682dc3
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+PKG_LICENSE:=Apache-2.0
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-pyopenssl
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-pyopenssl
+ URL:=https://github.com/pyca/pyopenssl
+ DEPENDS:=+python-light +python-cryptography +python-six
+endef
+
+define Package/python-pyopenssl/description
+Python wrapper module around the OpenSSL library
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
+endef
+
+$(eval $(call PyPackage,python-pyopenssl))
+$(eval $(call BuildPackage,python-pyopenssl))
--- /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:=pyptlib
+PKG_VERSION:=0.0.6
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pyptlib
+PKG_MD5SUM:=2fc7b8803777451c1fad3d5e25f1b99c
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-pyptlib
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-pyptlib
+ URL:=https://pypi.python.org/pypi/pyptlib
+ DEPENDS:=+python-light
+endef
+
+define Package/python-pyptlib/description
+A python implementation of the Pluggable Transports for Circumvention
+specification for Tor
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
+endef
+
+$(eval $(call PyPackage,python-pyptlib))
+$(eval $(call BuildPackage,python-pyptlib))
--- /dev/null
+#
+# Copyright (C) 2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=service_identity
+PKG_VERSION:=16.0.0
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/s/service_identity
+PKG_MD5SUM:=d52392597b9c44a740abf322bfdb21e6
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-service-identity
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-service-identity
+ URL:=https://github.com/pyca/service_identity
+ DEPENDS:=+python-light +python-attrs +python-pyasn1 +python-pyasn1-modules +python-pyopenssl
+endef
+
+define Package/python-service-identity/description
+service_identity aspires to give you all the tools you need for
+verifying whether a certificate is valid for the intended purposes.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
+endef
+
+$(eval $(call PyPackage,python-service-identity))
+$(eval $(call BuildPackage,python-service-identity))
#
-# Copyright (C) 2014 OpenWrt.org
+# Copyright (C) 2014-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
-#
+#
include $(TOPDIR)/rules.mk
PKG_NAME:=python-setuptools
-PKG_VERSION:=18.7
+PKG_VERSION:=20.7.0
PKG_RELEASE:=1
PKG_SOURCE:=setuptools-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://pypi.python.org/packages/source/s/setuptools/
-PKG_MD5SUM:=295d7aaef2da7d6ff10b522581da0cf9
+PKG_MD5SUM:=5d12b39bf3e75e80fdce54e44b255615
-HOST_BUILD_DEPENDS:=python/host
+HOST_BUILD_DEPENDS:=python python/host
PKG_BUILD_DIR:=$(BUILD_DIR)/setuptools-$(PKG_VERSION)
HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/setuptools-$(PKG_VERSION)
define Host/Compile
$(call Build/Compile/HostPyMod,,\
- install --root="$(STAGING_DIR_HOST)" --prefix="" \
+ install --root="$(STAGING_DIR)/host" --prefix="" \
--single-version-externally-managed \
)
endef
diff --git a/setuptools/dist.py b/setuptools/dist.py
-index 6b9d350..1350e8a 100644
+index 7785541..23108c7 100644
--- a/setuptools/dist.py
+++ b/setuptools/dist.py
-@@ -15,7 +15,6 @@ from distutils.errors import (DistutilsOptionError, DistutilsPlatformError,
+@@ -18,7 +18,6 @@ from setuptools.extern.six.moves import map
+ from pkg_resources.extern import packaging
from setuptools.depends import Require
- from setuptools.compat import basestring, PY2
-from setuptools import windows_support
import pkg_resources
- def _get_unpatched(cls):
-@@ -310,7 +309,6 @@ class Distribution(_Distribution):
+
+@@ -335,7 +334,6 @@ class Distribution(_Distribution):
egg_cache_dir = os.path.join(os.curdir, '.eggs')
if not os.path.exists(egg_cache_dir):
os.mkdir(egg_cache_dir)
--- /dev/null
+#
+# Copyright (C) 2015-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=txsocksx
+PKG_VERSION:=1.15.0.2
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/t/txsocksx
+PKG_MD5SUM:=0266b9ae7b58f7550a49683afebf65ba
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+PKG_LICENSE:=ISC
+PKG_LICENSE_FILES:=COPYING
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-txsocksx
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-txsocksx
+ URL:=https://github.com/habnabit/txsocksx
+ DEPENDS:=+python-light +python-parsley +twisted
+endef
+
+define Package/python-txsocksx/description
+txsocksx is SOCKS4/4a and SOCKS5 client endpoints for Twisted 10.1 or
+greater.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,, \
+ install --prefix="/usr" --root="$(PKG_INSTALL_DIR)", \
+ PKG_VERSION="$(PKG_VERSION)" \
+ )
+endef
+
+$(eval $(call PyPackage,python-txsocksx))
+$(eval $(call BuildPackage,python-txsocksx))
--- /dev/null
+diff --git a/setup.py b/setup.py
+index 7979f89..3873a1e 100644
+--- a/setup.py
++++ b/setup.py
+@@ -35,5 +35,5 @@ setup(
+ 'version_module_paths': ['txsocksx/_version.py'],
+ },
+ install_requires=install_requires,
+- packages=['txsocksx', 'txsocksx.test'],
++ packages=['txsocksx'],
+ )
--- /dev/null
+diff --git a/setup.py b/setup.py
+index 7979f89..5e1abb3 100644
+--- a/setup.py
++++ b/setup.py
+@@ -1,6 +1,8 @@
+ # Copyright (c) Aaron Gallagher <_@habnab.it>
+ # See COPYING for details.
+
++import os
++
+ from setuptools import setup
+
+
+@@ -30,10 +32,11 @@ setup(
+ ],
+ license='ISC',
+
+- setup_requires=['vcversioner>=1'],
+- vcversioner={
+- 'version_module_paths': ['txsocksx/_version.py'],
+- },
++ #setup_requires=['vcversioner>=1'],
++ #vcversioner={
++ # 'version_module_paths': ['txsocksx/_version.py'],
++ #},
++ version=os.environ.get('PKG_VERSION'),
+ install_requires=install_requires,
+ packages=['txsocksx', 'txsocksx.test'],
+ )
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PKG_NAME:=python
PKG_VERSION:=$(PYTHON_VERSION).$(PYTHON_VERSION_MICRO)
-PKG_RELEASE:=2
+PKG_RELEASE:=8
PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://www.python.org/ftp/python/$(PKG_VERSION)
HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/Python-$(PKG_VERSION)
PKG_BUILD_DEPENDS:=python/host
-HOST_BUILD_DEPENDS:=bzip2/host expat/host
+HOST_BUILD_DEPENDS:=bzip2/host expat/host libffi/host
include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/package.mk
$(PKG_INSTALL_DIR)/usr/include/python$(PYTHON_VERSION) \
$(1)/usr/include/
$(CP) \
- $(STAGING_DIR_HOST)/usr/lib/python$(PYTHON_VERSION) \
+ $(STAGING_DIR)/host/lib/python$(PYTHON_VERSION) \
$(PKG_INSTALL_DIR)/usr/lib/libpython$(PYTHON_VERSION).so* \
$(1)/usr/lib/
$(CP) \
- $(STAGING_DIR_HOST)/lib/pkgconfig/python.pc \
- $(STAGING_DIR_HOST)/lib/pkgconfig/python2.pc \
- $(STAGING_DIR_HOST)/lib/pkgconfig/python-$(PYTHON_VERSION).pc \
+ $(STAGING_DIR)/host/lib/pkgconfig/python.pc \
+ $(STAGING_DIR)/host/lib/pkgconfig/python2.pc \
+ $(STAGING_DIR)/host/lib/pkgconfig/python-$(PYTHON_VERSION).pc \
$(1)/usr/lib/pkgconfig
$(CP) \
$(PKG_INSTALL_DIR)/usr/lib/python$(PYTHON_VERSION)/config \
--without-cxx-main \
--without-pymalloc \
--with-threads \
- --prefix=$(STAGING_DIR_HOST)/usr \
- --with-system-expat=$(STAGING_DIR_HOST) \
+ --prefix=$(STAGING_DIR)/host \
+ --exec-prefix=$(STAGING_DIR)/host \
+ --sysconfdir=$(STAGING_DIR_HOST)/host/etc \
+ --localstatedir=$(STAGING_DIR)/host/var \
+ --sbindir=$(STAGING_DIR)/host/bin \
+ --with-system-expat=$(STAGING_DIR)/host \
+ --with-system-ffi=$(STAGING_DIR)/host \
--with-ensurepip=upgrade \
CONFIG_SITE= \
CFLAGS="$(HOST_CFLAGS)"
define Host/Install
- $(INSTALL_DIR) $(STAGING_DIR_HOST)/bin/
+ $(INSTALL_DIR) $(STAGING_DIR)/host/bin/
$(MAKE) -C $(HOST_BUILD_DIR) install
- $(INSTALL_BIN) $(HOST_BUILD_DIR)/Parser/pgen $(STAGING_DIR_HOST)/bin/pgen2
+ $(INSTALL_BIN) $(HOST_BUILD_DIR)/Parser/pgen $(STAGING_DIR)/host/bin/pgen2
endef
$(eval $(call HostBuild))
#
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-HOST_PYTHON_INC_DIR:=$(STAGING_DIR_HOST)/include/python$(PYTHON_VERSION)
+HOST_PYTHON_DIR:=$(STAGING_DIR)/host
+HOST_PYTHON_INC_DIR:=$(HOST_PYTHON_DIR)/include/python$(PYTHON_VERSION)
+HOST_PYTHON_LIB_DIR:=$(HOST_PYTHON_DIR)/lib/python$(PYTHON_VERSION)
-HOST_PYTHON_PKG_DIR:=/usr/lib/python$(PYTHON_VERSION)/site-packages
+HOST_PYTHON_PKG_DIR:=/lib/python$(PYTHON_VERSION)/site-packages
+
+HOST_PYTHON_BIN:=$(HOST_PYTHON_DIR)/bin/python$(PYTHON_VERSION)
+
+HOST_PYTHONPATH:=$(HOST_PYTHON_LIB_DIR):$(STAGING_DIR)/host/$(HOST_PYTHON_PKG_DIR)
-HOST_PYTHONPATH:=$(HOST_PYTHON_LIB_DIR):$(STAGING_DIR_HOST)/$(HOST_PYTHON_PKG_DIR)
define HostPython
if [ "$(strip $(3))" == "HOST" ]; then \
export PYTHONPATH="$(HOST_PYTHONPATH)"; \
- export _python_sysroot="$(STAGING_DIR_HOST)/usr"; \
+ export PYTHONDONTWRITEBYTECODE=0; \
else \
export PYTHONPATH="$(PYTHONPATH)"; \
- export _python_sysroot="$(STAGING_DIR)/usr"; \
+ export PYTHONDONTWRITEBYTECODE=1; \
+ export _python_sysroot="$(STAGING_DIR)"; \
+ export _python_prefix="/usr"; \
+ export _python_exec_prefix="/usr"; \
fi; \
export PYTHONOPTIMIZE=""; \
- export PYTHONDONTWRITEBYTECODE=1; \
- export _python_prefix="/usr"; \
- export _python_exec_prefix="/usr"; \
$(1) \
$(HOST_PYTHON_BIN) $(2);
endef
-# These configure args are needed in detection of path to Python header files
-# using autotools.
-HOST_CONFIGURE_ARGS += \
- _python_sysroot="$(STAGING_DIR_HOST)/usr" \
- _python_prefix="/usr" \
- _python_exec_prefix="/usr"
-
# $(1) => build subdir
# $(2) => additional arguments to setup.py
# $(3) => additional variables
LDSHARED="$(HOSTCC) -shared" \
CFLAGS="$(HOST_CFLAGS)" \
CPPFLAGS="$(HOST_CPPFLAGS) -I$(HOST_PYTHON_INC_DIR)" \
- LDFLAGS="$(HOST_LDFLAGS) -lpython$(PYTHON_VERSION)" \
+ LDFLAGS="$(HOST_LDFLAGS) -lpython$(PYTHON_VERSION) -Wl$(comma)-rpath=$(STAGING_DIR)/host/lib" \
_PYTHON_HOST_PLATFORM=linux2 \
- __PYVENV_LAUNCHER__="/usr/bin/$(PYTHON)" \
$(3) \
, \
./setup.py $(2) \
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 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
+ DEPENDS:=+python-light +libexpat
endef
$(eval $(call PyBasePackage,python-xml, \
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PYTHON:=python$(PYTHON_VERSION)
-HOST_PYTHON_LIB_DIR:=$(STAGING_DIR_HOST)/usr/lib/python$(PYTHON_VERSION)
-HOST_PYTHON_BIN:=$(STAGING_DIR_HOST)/bin/python2
-
PYTHONPATH:=$(PYTHON_LIB_DIR):$(STAGING_DIR)/$(PYTHON_PKG_DIR):$(PKG_INSTALL_DIR)/$(PYTHON_PKG_DIR)
# These configure args are needed in detection of path to Python header files
find $(PKG_INSTALL_DIR) -name "*\.pyc" -o -name "*\.pyo" | xargs rm -f
endef
+define PyMod/Default
+ define Build/Compile
+ $$(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+ endef
+
+ define Package/$(PKG_NAME)/install
+ $(INSTALL_DIR) $$(1)$(PYTHON_PKG_DIR) $$(1)/usr/bin
+ if [ -d $(PKG_INSTALL_DIR)/usr/bin ]; then find $(PKG_INSTALL_DIR)/usr/bin -mindepth 1 -maxdepth 1 -type f -exec $(CP) \{\} $$(1)/usr/bin/ \; ; fi
+ find $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR) -mindepth 1 -maxdepth 1 \( -type f -o -type d \) -exec $(CP) \{\} $$(1)$(PYTHON_PKG_DIR)/ \;
+ endef
+
+ define Build/InstallDev
+ $(INSTALL_DIR) $$(1)/usr/bin $$(1)$(PYTHON_PKG_DIR)
+ if [ -d $(PKG_INSTALL_DIR)/usr/bin ]; then find $(PKG_INSTALL_DIR)/usr/bin -mindepth 1 -maxdepth 1 -type f -exec $(CP) \{\} $$(1)/usr/bin/ \; ; fi
+ find $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR) -mindepth 1 -maxdepth 1 \( -type f -o -type d \) -exec $(CP) \{\} $$(1)$(PYTHON_PKG_DIR)/ \;
+ endef
+endef
+
include $(TOPDIR)/rules.mk
PKG_NAME:=python3-pip
-PKG_VERSION:=7.1.2
+PKG_VERSION:=8.1.1
PKG_RELEASE:=1
PKG_SOURCE:=pip-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pip/
-PKG_MD5SUM:=3823d2343d9f3aaab21cf9c917710196
+PKG_MD5SUM:=6b86f11841e89c8241d689956ba99ed7
PKG_LICENSE:=MIT
include $(TOPDIR)/rules.mk
PKG_NAME:=python3-setuptools
-PKG_VERSION:=18.5
+PKG_VERSION:=20.7.0
PKG_RELEASE:=1
PKG_SOURCE:=setuptools-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://pypi.python.org/packages/source/s/setuptools/
-PKG_MD5SUM:=533c868f01169a3085177dffe5e768bb
+PKG_MD5SUM:=5d12b39bf3e75e80fdce54e44b255615
PKG_LICENSE:=PSF
diff --git a/setuptools/dist.py b/setuptools/dist.py
-index 6b9d350..1350e8a 100644
+index 7785541..23108c7 100644
--- a/setuptools/dist.py
+++ b/setuptools/dist.py
-@@ -15,7 +15,6 @@ from distutils.errors import (DistutilsOptionError, DistutilsPlatformError,
+@@ -18,7 +18,6 @@ from setuptools.extern.six.moves import map
+ from pkg_resources.extern import packaging
from setuptools.depends import Require
- from setuptools.compat import basestring, PY2
-from setuptools import windows_support
import pkg_resources
- def _get_unpatched(cls):
-@@ -310,7 +309,6 @@ class Distribution(_Distribution):
+
+@@ -335,7 +334,6 @@ class Distribution(_Distribution):
egg_cache_dir = os.path.join(os.curdir, '.eggs')
if not os.path.exists(egg_cache_dir):
os.mkdir(egg_cache_dir)
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://www.python.org/ftp/python/$(PKG_VERSION)
-PKG_MD5SUM:=d149d2812f10cbe04c042232e7964171
+PKG_MD5SUM:=e9ea6f2623fffcdd871b7b19113fde80
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
HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/Python-$(PKG_VERSION)
PKG_BUILD_DEPENDS:=libbz2/host expat/host python3/host
+HOST_BUILD_DEPENDS:=bzip2/host expat/host libffi/host
include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/package.mk
$(PKG_INSTALL_DIR)/usr/include/python$(PYTHON_VERSION) \
$(1)/usr/include/
$(CP) \
- $(STAGING_DIR_HOST)/lib/python$(PYTHON_VERSION) \
+ $(STAGING_DIR)/host/lib/python$(PYTHON_VERSION) \
$(PKG_INSTALL_DIR)/usr/lib/libpython$(PYTHON_VERSION).so* \
$(1)/usr/lib/
$(CP) \
--without-cxx-main \
--without-pymalloc \
--with-threads \
- --prefix=$(STAGING_DIR_HOST) \
- --with-system-expat=$(STAGING_DIR_HOST) \
+ --prefix=$(STAGING_DIR)/host \
+ --exec-prefix=$(STAGING_DIR)/host \
+ --sysconfdir=$(STAGING_DIR_HOST)/host/etc \
+ --localstatedir=$(STAGING_DIR)/host/var \
+ --sbindir=$(STAGING_DIR)/host/bin \
+ --with-system-expat=$(STAGING_DIR)/host \
+ --with-system-ffi=$(STAGING_DIR)/host \
--with-ensurepip=upgrade \
CONFIG_SITE= \
CFLAGS="$(HOST_CFLAGS)"
endef
define Host/Install
- $(INSTALL_DIR) $(STAGING_DIR_HOST)/bin/
+ $(INSTALL_DIR) $(STAGING_DIR)/host/bin/
$(MAKE) -C $(HOST_BUILD_DIR) install
- $(INSTALL_BIN) $(HOST_BUILD_DIR)/Parser/pgen $(STAGING_DIR_HOST)/bin/pgen3
- $(INSTALL_BIN) $(HOST_BUILD_DIR)/Programs/_freeze_importlib $(STAGING_DIR_HOST)/bin/_freeze_importlib
+ $(INSTALL_BIN) $(HOST_BUILD_DIR)/Parser/pgen $(STAGING_DIR)/host/bin/pgen3
+ $(INSTALL_BIN) $(HOST_BUILD_DIR)/Programs/_freeze_importlib $(STAGING_DIR)/host/bin/_freeze_importlib
endef
$(eval $(call HostBuild))
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
-# Copyright (C) 2007-2015 OpenWrt.org
+# Copyright (C) 2007-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PYTHON3_VERSION_MAJOR:=3
PYTHON3_VERSION_MINOR:=5
-PYTHON3_VERSION_MICRO:=0
+PYTHON3_VERSION_MICRO:=1
PYTHON3_VERSION:=$(PYTHON3_VERSION_MAJOR).$(PYTHON3_VERSION_MINOR)
PYTHON3:=python$(PYTHON3_VERSION)
-HOST_PYTHON3_LIB_DIR:=$(STAGING_DIR_HOST)/lib/python$(PYTHON3_VERSION)
-HOST_PYTHON3_BIN:=$(STAGING_DIR_HOST)/bin/python3
+HOST_PYTHON3_LIB_DIR:=$(STAGING_DIR)/host/lib/python$(PYTHON3_VERSION)
+HOST_PYTHON3_BIN:=$(STAGING_DIR)/host/bin/python3
PYTHON3PATH:=$(PYTHON3_LIB_DIR):$(STAGING_DIR)/$(PYTHON3_PKG_DIR):$(PKG_INSTALL_DIR)/$(PYTHON3_PKG_DIR)
define HostPython3
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=ruby
-PKG_VERSION:=2.2.3
+PKG_VERSION:=2.3.1
PKG_RELEASE:=1
-PKG_LIBVER:=2.2
+PKG_LIBVER:=2.3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://cache.ruby-lang.org/pub/ruby/$(PKG_LIBVER)/
-PKG_MD5SUM:=f49a734729a71774d4a94a9a603114b2
+PKG_MD5SUM:=c194281f63d7fcd816747fe78474be5e
PKG_MAINTAINER:=Luiz Angelo Daros de Luca <luizluca@gmail.com>
PKG_LICENSE:=BSD-2-Clause
PKG_LICENSE_FILES:=COPYING
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
+HOST_CONFIGURE_ARGS += \
+ --disable-install-doc \
+ --disable-install-rdoc \
+ --disable-install-capi \
+ --without-gmp \
+ --with-out-ext=tk,tk/tkutil,win32,win32ole,dbm,gdbm,readline \
+
+# Does not compile with this. Workaround is --without-gmp
+# https://bugs.ruby-lang.org/issues/11940
+ #--with-static-linked-ext \
+
+# even not used, host build with restricted exts results in gems not being
+# compiled for target (probably some cross compiling problem like checking
+# host for selecting target features)
+# --with-out-ext \
+# --with-ext=thread,stringio \
+
+CONFIGURE_ARGS += \
+ --enable-shared \
+ --enable-static \
+ --disable-rpath \
+ $(call autoconf_bool,CONFIG_IPV6,ipv6) \
+ --disable-install-doc \
+ --disable-install-capi \
+ --with-ruby-version=minor \
+ --with-iconv-dir=$(ICONV_PREFIX) \
+ --with-out-ext=tk,tk/tkutil,win32,win32ole
+
+ifndef CONFIG_RUBY_DIGEST_USE_OPENSSL
+CONFIGURE_ARGS += \
+ --with-bundled-sha1\
+ --with-bundled-md5\
+ --with-bundled-rmd160\
+ --with-bundled-sha2 \
+
+endif
+
+TARGET_LDFLAGS += -L$(PKG_BUILD_DIR)
+
+# Ruby uses DLDFLAGS and not LDFLAGS for libraries. LDFLAGS is only for execs.
+# However, DLDFLAGS from configure is not passed to Makefile when target is linux.
+# XLDFLAGS is used by both libraries and execs. This is somehow brute force but
+# if will fix when some LD_FLAGS is needef for libraries. As side effect, it will
+# duplicate ld args for binaries.
+CONFIGURE_VARS += XLDFLAGS="$(TARGET_LDFLAGS)"
+
+MAKE_FLAGS += \
+ DESTDIR="$(PKG_INSTALL_DIR)" \
+ SHELL="/bin/bash"
+
+define Build/InstallDev
+ ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
+ . \
+ ) | ( cd $(1); $(TAR) -xf - )
+endef
+
+define Host/Install
+ # When ruby version is updated, make install asks in some cases before replace
+ # an existing different file. Remove them before install and avoid the interaction
+ rm -f $(HOST_BUILD_PREFIX)/bin/rake
+ $(call Host/Install/Default)
+endef
+
define Package/ruby/Default
SUBMENU:=Ruby
SECTION:=lang
$(call Package/ruby/Default/description)
endef
+define RubyDependency
+ $(eval \
+ $(call Package/Default)
+ $(call Package/ruby-$(1))
+ FILTER_CONFIG:=$$(strip \
+ $$(foreach config_dep, \
+ $$(filter @%, \
+ $$(foreach v, \
+ $$(DEPENDS), \
+ $$(if $$(findstring :,$$v),,$$v) \
+ ) \
+ ), \
+ $$(subst @,,$$(config_dep)) \
+ ) \
+ )
+ ifneq (,$$(FILTER_CONFIG))
+ FILTER_CONFIG:=($$(subst $$(space),&&,$$(FILTER_CONFIG))):
+ endif
+ ) \
+ +$(FILTER_CONFIG)ruby-$(1)
+endef
+
+define Package/ruby/config
+ comment "Standard Library"
+ depends on PACKAGE_ruby
+
+ config PACKAGE_ruby-stdlib
+ depends on PACKAGE_ruby
+ default m if ALL
+ prompt "Select Ruby Complete Standard Library (ruby-stdlib)"
+
+endef
+
+define Package/ruby/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
+ $(INSTALL_DIR) $(1)/usr/lib/ruby/vendor_ruby/$(PKG_LIBVER)
+ $(INSTALL_DIR) $(1)/usr/lib/ruby/site_ruby/$(PKG_LIBVER)
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ruby $(1)/usr/lib/ruby/ruby$(PKG_LIBVER)-bin
+ $(INSTALL_BIN) ./files/ruby $(1)/usr/bin/ruby
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/vendor_ruby/$(PKG_LIBVER)/* $(1)/usr/lib/ruby/vendor_ruby/$(PKG_LIBVER)/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/site_ruby/$(PKG_LIBVER)/* $(1)/usr/lib/ruby/site_ruby/$(PKG_LIBVER)/
+ $(SED) "s%@RUBY_LIBPATH@%/usr/lib/ruby/$(PKG_LIBVER)%" $(1)/usr/bin/ruby
+ $(SED) "s%@RUBY_BINPATH@%/usr/lib/ruby/ruby$(PKG_LIBVER)-bin%" $(1)/usr/bin/ruby
+endef
+
define Package/libruby
$(call Package/ruby/Default)
SUBMENU:=
CATEGORY:=Libraries
TITLE+= (shared library)
DEPENDS+= +libpthread +librt +libgmp
+ ABI_VERSION:=$(PKG_LIBVER)
+endef
+define Package/libruby/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libruby.so.* $(1)/usr/lib/
endef
+RUBY_STDLIB :=
define Package/ruby-stdlib
$(call Package/ruby/Default)
TITLE:=Ruby standard libraries (metadata for all stdlib subsets)
- DEPENDS:=ruby +ruby-misc +ruby-bigdecimal +ruby-cgi +ruby-csv +ruby-datetime +ruby-dbm +ruby-debuglib\
- +ruby-digest +ruby-drb +ruby-enc +ruby-enc-extra +ruby-erb +ruby-gdbm +ruby-gems \
- +ruby-json +ruby-io-console +ruby-irb +ruby-fiddle +ruby-filelib +ruby-logger +ruby-math \
- +ruby-minitest +ruby-mkmf +ruby-multithread +ruby-nkf +ruby-net +ruby-openssl +ruby-optparse \
- +ruby-patterns +ruby-powerassert +ruby-prettyprint +ruby-pstore +ruby-psych +ruby-racc +ruby-rake \
- +ruby-rbconfig +ruby-rdoc +ruby-readline +ruby-rexml +ruby-rinda +ruby-ripper +ruby-rss +ruby-sdbm \
- +ruby-shell +ruby-socket +ruby-testunit +ruby-unicodenormalize +ruby-uri +ruby-webrick +ruby-xmlrpc \
- +ruby-yaml +ruby-zlib
+ DEPENDS:=ruby $(foreach subpackage,$(RUBY_STDLIB),$(strip $(call RubyDependency,$(subpackage))))
+ HIDDEN:=1
endef
define Package/ruby-stdlib/description
endef
-define Package/ruby-bigdecimal
-$(call Package/ruby/Default)
- TITLE:=Arbitrary-precision decimal floating-point lib for Ruby
- DEPENDS:=ruby
-endef
-
-define Package/ruby-bigdecimal/description
- Provides bigdecimal* files
-endef
-
-define Package/ruby-cgi
-$(call Package/ruby/Default)
- TITLE:=Ruby CGI support toolkit
- DEPENDS:=ruby +ruby-filelib +ruby-pstore
-endef
-
-define Package/ruby-bigdecimal/description
- Provides bigdecimal* files
-
-endef
-
-define Package/ruby-csv
-$(call Package/ruby/Default)
- TITLE+=CSV library
- DEPENDS:=ruby +ruby-patterns +ruby-datetime +ruby-enc
+# nothing to do
+define Package/ruby-stdlib/install
+ /bin/true
endef
-define Package/ruby-csv/description
- Provides csv.rb file
-
+define Package/ruby-bigdecimal/files
+/usr/lib/ruby/$(PKG_LIBVER)/*/bigdecimal.so
+/usr/lib/ruby/$(PKG_LIBVER)/bigdecimal/
+/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/bigdecimal-*.gemspec
endef
-define Package/ruby-datetime
-$(call Package/ruby/Default)
- TITLE+= date library
- DEPENDS:=ruby
+define Package/ruby-cgi/files
+/usr/lib/ruby/$(PKG_LIBVER)/cgi
+/usr/lib/ruby/$(PKG_LIBVER)/cgi.rb
+/usr/lib/ruby/$(PKG_LIBVER)/*/cgi/escape.so
endef
-define Package/ruby-datetime/description
- Provides date.rb and time.rb
-
+define Package/ruby-csv/files
+/usr/lib/ruby/$(PKG_LIBVER)/csv.rb
endef
-define Package/ruby-dbm
-$(call Package/ruby/Default)
- TITLE:=Ruby support for dbm
- DEPENDS:=ruby +libdb47
+define Package/ruby-datetime/files
+/usr/lib/ruby/$(PKG_LIBVER)/time.rb
+/usr/lib/ruby/$(PKG_LIBVER)/date.rb
+/usr/lib/ruby/$(PKG_LIBVER)/*/date_core.so
endef
define Package/ruby-dbm/description
This package provides dbm.so file.
endef
-
-define Package/ruby-debuglib
-$(call Package/ruby/Default)
- TITLE+= debug library
- DEPENDS:=ruby +ruby-multithread +ruby-prettyprint
+define Package/ruby-dbm/files
+/usr/lib/ruby/$(PKG_LIBVER)/*/dbm.so
endef
-define Package/ruby-debuglib/description
- Provides files for debugging:
- - benchmark.rb
- - debug.rb
- - objspace.so
- - profile.rb
- - profiler.rb
- - tracer.rb
-
+define Package/ruby-debuglib/files
+/usr/lib/ruby/$(PKG_LIBVER)/profile.rb
+/usr/lib/ruby/$(PKG_LIBVER)/profiler.rb
+/usr/lib/ruby/$(PKG_LIBVER)/debug.rb
+/usr/lib/ruby/$(PKG_LIBVER)/tracer.rb
+/usr/lib/ruby/$(PKG_LIBVER)/benchmark.rb
+/usr/lib/ruby/$(PKG_LIBVER)/*/objspace.so
endef
-define Package/ruby-digest
-$(call Package/ruby/Default)
- TITLE:=Ruby Digest Library
- DEPENDS:=ruby +RUBY_DIGEST_USE_OPENSSL:libopenssl
+define Package/ruby-did-you-mean/files
+/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/did_you_mean-*.gemspec
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/did_you_mean-*/
+endef
+define Package/ruby-did-you-mean/files-excluded
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/did_you_mean-*/benchmark
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/did_you_mean-*/doc
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/did_you_mean-*/evaluation
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/did_you_mean-*/test
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/did_you_mean-*/*.md
endef
define Package/ruby-digest/description
bundled hash functions.
endef
-
define Package/ruby-digest/config
config RUBY_DIGEST_USE_OPENSSL
default n
endef
-
-define Package/ruby-drb
-$(call Package/ruby/Default)
- TITLE:=Ruby distributed object system
- DEPENDS:=ruby +ruby-filelib +ruby-patterns +ruby-socket
-endef
-
-define Package/ruby-drb/description
- Provides drb* files
-
-endef
-
-define Package/ruby-enc
-$(call Package/ruby/Default)
- TITLE:=Ruby character re-coding library charset (small subset)
- DEPENDS:=ruby
-endef
-
-define Package/ruby-enc/description
- Provides ruby encoding library for encodings used directly by
- libraries in Ruby Standard Library:
- - enc/encdb.so
- - enc/euc_jp.so
- - enc/iso_8859_1.so
- - enc/utf_16be.so
- - enc/utf_16le.so
- - enc/utf_32be.so
- - enc/utf_32le.so
- FYI: ASCII-8BIT, UTF-7, UTF-8 and US-ASCII are already in Core.
-
-endef
-
-define Package/ruby-enc-extra
-$(call Package/ruby/Default)
- TITLE:=Ruby character re-coding library charset (extra subset)
- DEPENDS:=ruby +ruby-enc
-endef
-
-define Package/ruby-enc-extra/description
- Provides extra encodings not provided by ruby-enc:
- - enc/big5.so
- - enc/cp949.so
- - enc/emacs_mule.so
- - enc/euc_kr.so
- - enc/euc_tw.so
- - enc/gb18030.so
- - enc/gb2312.so
- - enc/gbk.so
- - enc/iso_8859_10.so
- - enc/iso_8859_11.so
- - enc/iso_8859_13.so
- - enc/iso_8859_14.so
- - enc/iso_8859_15.so
- - enc/iso_8859_16.so
- - enc/iso_8859_2.so
- - enc/iso_8859_3.so
- - enc/iso_8859_4.so
- - enc/iso_8859_5.so
- - enc/iso_8859_6.so
- - enc/iso_8859_7.so
- - enc/iso_8859_8.so
- - enc/iso_8859_9.so
- - enc/koi8_r.so
- - enc/koi8_u.so
- - enc/shift_jis.so
- - enc/trans/big5.so
- - enc/trans/chinese.so
- - enc/trans/emoji.so
- - enc/trans/emoji_iso2022_kddi.so
- - enc/trans/emoji_sjis_docomo.so
- - enc/trans/emoji_sjis_kddi.so
- - enc/trans/emoji_sjis_softbank.so
- - enc/trans/escape.so
- - enc/trans/gb18030.so
- - enc/trans/gbk.so
- - enc/trans/iso2022.so
- - enc/trans/japanese.so
- - enc/trans/japanese_euc.so
- - enc/trans/japanese_sjis.so
- - enc/trans/korean.so
- - enc/trans/single_byte.so
- - enc/trans/transdb.so
- - enc/trans/utf8_mac.so
- - enc/trans/utf_16_32.so
- - enc/windows_1251.so
- - enc/windows_31j.so
-
-endef
-
-define Package/ruby-erb
-$(call Package/ruby/Default)
- TITLE+= (embedded interpreter)
- DEPENDS:=ruby +ruby-cgi
-endef
-
-define Package/ruby-erb/description
- Provides erb* files
-
-endef
-
-define Package/ruby-fiddle
-$(call Package/ruby/Default)
- TITLE:=A libffi wrapper for Ruby
- DEPENDS:=ruby +libffi
-endef
-
-define Package/ruby-fiddle/description
- Provides fiddle* files
-
-endef
-
-define Package/ruby-filelib
-$(call Package/ruby/Default)
- TITLE+= File utils library
- DEPENDS:=ruby +ruby-enc +ruby-misc
-endef
-
-define Package/ruby-filelib/description
- Provides filesystem interaction files, including
- path and temp:
- - fileutils.rb
- - find.rb
- - pathname.rb
- - pathname.so
- - tempfile.rb
- - tmpdir.rb
-
-endef
-
-define Package/ruby-gdbm
-$(call Package/ruby/Default)
- TITLE:=Ruby support for gdbm
- DEPENDS:=ruby +libgdbm
-endef
-
-define Package/ruby-gdbm/description
- Provides gdbm* files
-
-endef
-
-define Package/ruby-gems
-$(call Package/ruby/Default)
- TITLE:=Ruby gems packet management
- DEPENDS:=ruby +ruby-net +ruby-rdoc
-endef
-
-define Package/ruby-gems/description
- Provides rubygems for gems usage, download and installation
-
-endef
-
-define Package/ruby-io-console
-$(call Package/ruby/Default)
- TITLE+= Console interface
- DEPENDS:=ruby
-endef
-
-define Package/ruby-io-console/description
- Provides io-console* files
-
-endef
-
-define Package/ruby-irb
-$(call Package/ruby/Default)
- TITLE+= (interactive shell)
- DEPENDS:=ruby +ruby-debuglib +ruby-filelib +ruby-math
-endef
-
-define Package/ruby-irb/description
- Provides irb* files
-
+define Package/ruby-digest/files
+/usr/lib/ruby/$(PKG_LIBVER)/digest
+/usr/lib/ruby/$(PKG_LIBVER)/digest.rb
+/usr/lib/ruby/$(PKG_LIBVER)/*/digest.so
+/usr/lib/ruby/$(PKG_LIBVER)/*/digest/*
endef
-define Package/ruby-json
-$(call Package/ruby/Default)
- TITLE:=Ruby support for JSON
- DEPENDS:=ruby +ruby-datetime +ruby-misc
+define Package/ruby-drb/files
+/usr/lib/ruby/$(PKG_LIBVER)/drb.rb
+/usr/lib/ruby/$(PKG_LIBVER)/drb
endef
-define Package/ruby-json/description
- Provides json* files
-
+define Package/ruby-enc/files
+/usr/lib/ruby/$(PKG_LIBVER)/*/enc/encdb.so
+/usr/lib/ruby/$(PKG_LIBVER)/*/enc/iso_8859_1.so
+/usr/lib/ruby/$(PKG_LIBVER)/*/enc/utf_*.so
+/usr/lib/ruby/$(PKG_LIBVER)/*/enc/euc_jp.so
endef
-define Package/ruby-logger
-$(call Package/ruby/Default)
- TITLE+= logger and syslog library
- DEPENDS:=ruby +ruby-multithread
+define Package/ruby-enc-extra/files
+/usr/lib/ruby/$(PKG_LIBVER)/*/enc
endef
-
-define Package/ruby-logger/description
- Provides log library, including syslog:
- - logger.rb
- - syslog.so
- - syslog/logger.rb
-
+define Package/ruby-enc-extra/files-excluded
+$(call Package/ruby-enc/files)
endef
-define Package/ruby-math
-$(call Package/ruby/Default)
- TITLE+= math library
- DEPENDS:=ruby +ruby-patterns
+define Package/ruby-erb/files
+/usr/bin/erb
+/usr/lib/ruby/$(PKG_LIBVER)/erb.rb
endef
-define Package/ruby-math/description
- Provides math related files:
- - cmath.rb
- - complex.rb
- - mathn.rb
- - mathn/complex.so
- - mathn/rational.so
- - matrix.rb
- - matrix/eigenvalue_decomposition.rb
- - matrix/lup_decomposition.rb
- - prime.rb
- - rational.rb
-
+define Package/ruby-fiddle/files
+/usr/lib/ruby/$(PKG_LIBVER)/fiddle.rb
+/usr/lib/ruby/$(PKG_LIBVER)/fiddle/
+/usr/lib/ruby/$(PKG_LIBVER)/*/fiddle.so
endef
-define Package/ruby-minitest
-$(call Package/ruby/Default)
- TITLE:=Gem minitest shipped with Ruby
- DEPENDS:=ruby +ruby-gems
+define Package/ruby-filelib/files
+/usr/lib/ruby/$(PKG_LIBVER)/tmpdir.rb
+/usr/lib/ruby/$(PKG_LIBVER)/tempfile.rb
+/usr/lib/ruby/$(PKG_LIBVER)/pathname.rb
+/usr/lib/ruby/$(PKG_LIBVER)/*/pathname.so
+/usr/lib/ruby/$(PKG_LIBVER)/find.rb
+/usr/lib/ruby/$(PKG_LIBVER)/fileutils.rb
endef
-define Package/ruby-minitest/description
- Provides minitest gem
-
+define Package/ruby-gdbm/files
+/usr/lib/ruby/$(PKG_LIBVER)/*/gdbm.so
endef
-define Package/ruby-misc
-$(call Package/ruby/Default)
- TITLE:=Ruby standard libraries subset (miscelaneous files)
- DEPENDS:=ruby
-endef
-
-define Package/ruby-misc/description
- This package contains miscellaneous files from stdlib
- not splitted in other ruby packages like stringio:
- - English.rb
- - abbrev.rb
- - base64.rb
- - continuation.so
- - coverage.so
- - delegate.rb
- - e2mmap.rb
- - etc.so
- - expect.rb
- - fcntl.so
- - fiber.so
- - getoptlong.rb
- - open3.rb
- - ostruct.rb
- - pty.so
- - scanf.rb
- - securerandom.rb
- - set.rb
- - shellwords.rb
- - stringio.so
- - strscan.so
- - tsort.rb
- - weakref.rb
-
-endef
-
-define Package/ruby-mkmf
-$(call Package/ruby/Default)
- TITLE+= makefile library
- DEPENDS:=ruby +ruby-filelib +ruby-optparse +ruby-rbconfig
+define Package/ruby-gems/files
+/usr/lib/ruby/$(PKG_LIBVER)/ubygems.rb
+/usr/lib/ruby/$(PKG_LIBVER)/rubygems.rb
+/usr/lib/ruby/$(PKG_LIBVER)/rubygems
endef
-
-define Package/ruby-mkmf/description
- Provides mkmf* files
-
+define Package/ruby-gems/files-excluded
+/usr/lib/ruby/$(PKG_LIBVER)/rubygems/test_case.rb
+/usr/lib/ruby/$(PKG_LIBVER)/rubygems/package/tar_test_case.rb
+/usr/lib/ruby/$(PKG_LIBVER)/rubygems/installer_test_case.rb
endef
-
-define Package/ruby-multithread
-$(call Package/ruby/Default)
- TITLE+= multithread library
- DEPENDS:=ruby +ruby-misc
+define Package/ruby-gems/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gem $(1)/usr/bin/
+ $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default
+ $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems
+ $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/doc
+ $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/cache
+ $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/extensions
+ $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/build_info
+ $(call RubyBuildPackage/install,gems,$(1))
endef
-define Package/ruby-multithread/description
- Provides files for multithread usage:
- - io/nonblock.so
- - io/wait.so
- - thread.so (FYI, Thread is a core class)
- - monitor.rb
- - mutex_m.rb
- - sync.rb
- - thwait.rb
- - timeout.rb
-
+define Package/ruby-io-console/files
+/usr/lib/ruby/$(PKG_LIBVER)/*/io/console.so
+/usr/lib/ruby/$(PKG_LIBVER)/io/console/
+/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/io-console-*.gemspec
endef
-define Package/ruby-net
-$(call Package/ruby/Default)
- TITLE:=Ruby Network Protocols Library
- DEPENDS:=ruby +ruby-datetime +ruby-digest +ruby-filelib +ruby-uri
+define Package/ruby-irb/files
+/usr/lib/ruby/$(PKG_LIBVER)/irb
+/usr/lib/ruby/$(PKG_LIBVER)/irb.rb
endef
-
-define Package/ruby-net/description
- Provides net* files
-
+define Package/ruby-irb/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/irb $(1)/usr/bin/
+ $(call RubyBuildPackage/install,irb,$(1))
endef
-define Package/ruby-nkf
-$(call Package/ruby/Default)
- TITLE:=Ruby Network Kanji Filter
- DEPENDS:=ruby +ruby-enc
+define Package/ruby-json/files
+/usr/lib/ruby/$(PKG_LIBVER)/json.rb
+/usr/lib/ruby/$(PKG_LIBVER)/json
+/usr/lib/ruby/$(PKG_LIBVER)/*/json
+/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/json-*.gemspec
endef
-
-define Package/ruby-nkf/description
- Provides nkf* files
-
+define Package/ruby-json/files-excluded
+$(call Package/ruby-psych/files)
endef
-define Package/ruby-openssl
-$(call Package/ruby/Default)
- TITLE:=Ruby support for openssl
- DEPENDS:=ruby +ruby-enc +libopenssl +ruby-misc
+define Package/ruby-logger/files
+/usr/lib/ruby/$(PKG_LIBVER)/logger.rb
+/usr/lib/ruby/$(PKG_LIBVER)/syslog/logger.rb
+/usr/lib/ruby/$(PKG_LIBVER)/*/syslog.so
endef
-define Package/ruby-openssl/description
- Provides openssl* files
-
+define Package/ruby-math/files
+/usr/lib/ruby/$(PKG_LIBVER)/prime.rb
+/usr/lib/ruby/$(PKG_LIBVER)/mathn.rb
+/usr/lib/ruby/$(PKG_LIBVER)/cmath.rb
+/usr/lib/ruby/$(PKG_LIBVER)/*/mathn
+/usr/lib/ruby/$(PKG_LIBVER)/matrix.rb
+/usr/lib/ruby/$(PKG_LIBVER)/matrix
endef
-define Package/ruby-optparse
-$(call Package/ruby/Default)
- TITLE:=Ruby command-line option analysis
- DEPENDS:=ruby +ruby-misc
+define Package/ruby-minitest/files
+/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/minitest-*.gemspec
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/minitest-*
endef
-
-define Package/ruby-optparse/description
- Provides optparse* files
-
+define Package/ruby-minitest/files-excluded
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/minitest-*/test
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/minitest-*/*.rdoc
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/minitest-*/*.txt
endef
-define Package/ruby-patterns
-$(call Package/ruby/Default)
- TITLE:=Ruby design patterns implementation
- DEPENDS:=ruby +ruby-multithread
+define Package/ruby-misc/files
+/usr/lib/ruby/$(PKG_LIBVER)/English.rb
+/usr/lib/ruby/$(PKG_LIBVER)/abbrev.rb
+/usr/lib/ruby/$(PKG_LIBVER)/base64.rb
+/usr/lib/ruby/$(PKG_LIBVER)/delegate.rb
+/usr/lib/ruby/$(PKG_LIBVER)/e2mmap.rb
+/usr/lib/ruby/$(PKG_LIBVER)/expect.rb
+/usr/lib/ruby/$(PKG_LIBVER)/getoptlong.rb
+/usr/lib/ruby/$(PKG_LIBVER)/open3.rb
+/usr/lib/ruby/$(PKG_LIBVER)/ostruct.rb
+/usr/lib/ruby/$(PKG_LIBVER)/scanf.rb
+/usr/lib/ruby/$(PKG_LIBVER)/securerandom.rb
+/usr/lib/ruby/$(PKG_LIBVER)/set.rb
+/usr/lib/ruby/$(PKG_LIBVER)/shellwords.rb
+/usr/lib/ruby/$(PKG_LIBVER)/tsort.rb
+/usr/lib/ruby/$(PKG_LIBVER)/weakref.rb
+/usr/lib/ruby/$(PKG_LIBVER)/*/continuation.so
+/usr/lib/ruby/$(PKG_LIBVER)/*/coverage.so
+/usr/lib/ruby/$(PKG_LIBVER)/*/etc.so
+/usr/lib/ruby/$(PKG_LIBVER)/*/fcntl.so
+/usr/lib/ruby/$(PKG_LIBVER)/*/fiber.so
+/usr/lib/ruby/$(PKG_LIBVER)/*/pty.so
+/usr/lib/ruby/$(PKG_LIBVER)/*/stringio.so
+/usr/lib/ruby/$(PKG_LIBVER)/*/strscan.so
endef
-define Package/ruby-patterns/description
- Provides design patterns helpers files:
- - forwardable.rb
- - observer.rb
- - singleton.rb
-
+define Package/ruby-mkmf/files
+/usr/lib/ruby/$(PKG_LIBVER)/mkmf.rb
+/usr/lib/ruby/$(PKG_LIBVER)/un.rb
endef
-define Package/ruby-powerassert
-$(call Package/ruby/Default)
- TITLE:=Gem power_assert shipped with Ruby
- DEPENDS:=ruby +ruby-ripper
+define Package/ruby-multithread/files
+/usr/lib/ruby/$(PKG_LIBVER)/monitor.rb
+/usr/lib/ruby/$(PKG_LIBVER)/timeout.rb
+/usr/lib/ruby/$(PKG_LIBVER)/thwait.rb
+/usr/lib/ruby/$(PKG_LIBVER)/mutex_m.rb
+/usr/lib/ruby/$(PKG_LIBVER)/sync.rb
+/usr/lib/ruby/$(PKG_LIBVER)/*/thread.so
+/usr/lib/ruby/$(PKG_LIBVER)/*/io/wait.so
+/usr/lib/ruby/$(PKG_LIBVER)/*/io/nonblock.so
endef
-define Package/ruby-powerassert/description
- Power Assert gem for Ruby. Power Assert shows each value of variables
- and method calls in the expression. It is useful for testing, providing
- which value wasn't correct when the condition is not satisfied
-
+define Package/ruby-net/files
+/usr/lib/ruby/$(PKG_LIBVER)/open-uri.rb
+/usr/lib/ruby/$(PKG_LIBVER)/net/*
endef
-define Package/ruby-prettyprint
-$(call Package/ruby/Default)
- TITLE:=Ruby PrettyPrint librart
- DEPENDS:=ruby +ruby-misc
+define Package/ruby-net-telnet/files
+/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/net-telnet-*.gemspec
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/net-telnet-*/
endef
-
-define Package/ruby-prettyprint/description
- Provides Pretty Print library:
- - pp.rb
- - prettyprint.rb
-
+define Package/ruby-net-telnet/files-excluded
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/net-telnet-*/*.md
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/net-telnet-*/*.txt
endef
-define Package/ruby-pstore
-$(call Package/ruby/Default)
- TITLE+=file based persistence
- DEPENDS:=ruby +ruby-digest +ruby-enc
+define Package/ruby-nkf/files
+/usr/lib/ruby/$(PKG_LIBVER)/kconv.rb
+/usr/lib/ruby/$(PKG_LIBVER)/*/nkf.so
endef
-define Package/ruby-pstore/description
- Provides pstore.rb file
-
+define Package/ruby-openssl/files
+/usr/lib/ruby/$(PKG_LIBVER)/openssl
+/usr/lib/ruby/$(PKG_LIBVER)/openssl.rb
+/usr/lib/ruby/$(PKG_LIBVER)/*/openssl.so
endef
-define Package/ruby-psych
-$(call Package/ruby/Default)
- TITLE+=YAML parser and emitter
- DEPENDS:=ruby +ruby-bigdecimal +ruby-datetime +ruby-misc +ruby-enc +libyaml
+define Package/ruby-optparse/files
+/usr/lib/ruby/$(PKG_LIBVER)/optparse.rb
+/usr/lib/ruby/$(PKG_LIBVER)/optionparser.rb
+/usr/lib/ruby/$(PKG_LIBVER)/optparse
endef
-define Package/ruby-psych/description
- Provides psych* files
-
+define Package/ruby-patterns/files
+/usr/lib/ruby/$(PKG_LIBVER)/observer.rb
+/usr/lib/ruby/$(PKG_LIBVER)/singleton.rb
+/usr/lib/ruby/$(PKG_LIBVER)/forwardable.rb
endef
-define Package/ruby-racc
-$(call Package/ruby/Default)
- TITLE:=LALR parser generator in Ruby
- DEPENDS:=ruby
+define Package/ruby-powerassert/files
+/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/power_assert-*.gemspec
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/power_assert-*
endef
-
-define Package/ruby-racc/description
- Provides racc* files
-
+define Package/ruby-powerassert/files-excluded
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/power_assert-*/test
endef
-define Package/ruby-rake
-$(call Package/ruby/Default)
- TITLE+=Ruby Rake (make replacement)
- DEPENDS:=ruby +ruby-datetime +ruby-filelib +ruby-optparse +ruby-patterns +ruby-rbconfig
+define Package/ruby-prettyprint/files
+/usr/lib/ruby/$(PKG_LIBVER)/pp.rb
+/usr/lib/ruby/$(PKG_LIBVER)/prettyprint.rb
endef
-define Package/ruby-rake/description
- Provides rake* files
-
+define Package/ruby-pstore/files
+/usr/lib/ruby/$(PKG_LIBVER)/pstore.rb
endef
-define Package/ruby-rbconfig
-$(call Package/ruby/Default)
- TITLE+=Ruby RbConfig
- DEPENDS:=ruby
+define Package/ruby-psych/files
+/usr/lib/ruby/$(PKG_LIBVER)/psych
+/usr/lib/ruby/$(PKG_LIBVER)/psych.rb
+/usr/lib/ruby/$(PKG_LIBVER)/psych_jars.rb
+/usr/lib/ruby/$(PKG_LIBVER)/*/psych.so
+/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/psych-*.gemspec
endef
-define Package/ruby-rbconfig/description
- Provides rbconfig file
-
+define Package/ruby-racc/files
+/usr/lib/ruby/$(PKG_LIBVER)/racc
+/usr/lib/ruby/$(PKG_LIBVER)/*/racc/*.so
endef
-define Package/ruby-rdoc
-$(call Package/ruby/Default)
- TITLE+= (documentation generator)
- DEPENDS:=ruby +ruby-erb +ruby-irb +ruby-json +ruby-racc +ruby-rake +ruby-yaml +ruby-zlib
+define Package/ruby-rake/files
+/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/rake-*.gemspec
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/rake-*/
endef
-
-define Package/ruby-rdoc/description
- Provides rdoc* and ri files
-
+define Package/ruby-rake/files-excluded
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/rake-*/doc
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/rake-*/test
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/rake-*/*.rdoc
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/rake-*/*.txt
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/rake-10.4.2/lib/rake/runtest.rb
endef
-
-define Package/ruby-readline
-$(call Package/ruby/Default)
- TITLE:=Ruby support for readline
- DEPENDS:=ruby +libncurses +libreadline
+define Package/ruby-rake/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/rake $(1)/usr/bin/;
+ $(call RubyBuildPackage/install,rake,$(1))
endef
-define Package/ruby-readline/description
- Provides readline* files
-
+define Package/ruby-rbconfig/files
+/usr/lib/ruby/$(PKG_LIBVER)/*/rbconfig.rb
+/usr/lib/ruby/$(PKG_LIBVER)/rbconfig/*
+/usr/lib/ruby/$(PKG_LIBVER)/*/rbconfig/*.so
endef
-define Package/ruby-rexml
-$(call Package/ruby/Default)
- TITLE:=Ruby XML toolkit
- DEPENDS:=ruby +ruby-patterns +ruby-enc
+define Package/ruby-rdoc/files
+ /usr/lib/ruby/$(PKG_LIBVER)/rdoc.rb
+ /usr/lib/ruby/$(PKG_LIBVER)/rdoc
+ /usr/lib/ruby/gems/$(PKG_LIBVER)/gems/rdoc-*
+ /usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/rdoc-*.gemspec
endef
-
-define Package/ruby-rexml/description
- Provides rexml* files
-
+define Package/ruby-rdoc/files-excluded
+ /usr/lib/ruby/$(PKG_LIBVER)/rdoc/test_case.rb
+ /usr/lib/ruby/$(PKG_LIBVER)/rdoc/markup/formatter_test_case.rb
+ /usr/lib/ruby/$(PKG_LIBVER)/rdoc/markup/text_formatter_test_case.rb
endef
-
-define Package/ruby-rinda
-$(call Package/ruby/Default)
- TITLE:=Ruby Linda paradigm implementation
- DEPENDS:=ruby +ruby-drb
+define Package/ruby-rdoc/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/rdoc $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ri $(1)/usr/bin/
+ $(call RubyBuildPackage/install,rdoc,$(1))
endef
-define Package/ruby-rinda/description
- Provides rinda* files
-
+define Package/ruby-readline/files
+/usr/lib/ruby/$(PKG_LIBVER)/*/readline.so
endef
-define Package/ruby-ripper
-$(call Package/ruby/Default)
- TITLE:=Ruby script parser
- DEPENDS:=ruby
+define Package/ruby-rexml/files
+/usr/lib/ruby/$(PKG_LIBVER)/rexml
endef
-define Package/ruby-ripper/description
- Provides ripper* files
-
+define Package/ruby-rinda/files
+/usr/lib/ruby/$(PKG_LIBVER)/rinda
endef
-define Package/ruby-rss
-$(call Package/ruby/Default)
- TITLE:=Ruby RSS toolkit
- DEPENDS:=ruby +ruby-net +ruby-nkf +ruby-rexml
+define Package/ruby-ripper/files
+/usr/lib/ruby/$(PKG_LIBVER)/ripper.rb
+/usr/lib/ruby/$(PKG_LIBVER)/ripper
+/usr/lib/ruby/$(PKG_LIBVER)/*/ripper.so
endef
-define Package/ruby-rss/description
- Provides rss* files
-
+define Package/ruby-rss/files
+/usr/lib/ruby/$(PKG_LIBVER)/rss
+/usr/lib/ruby/$(PKG_LIBVER)/rss.rb
endef
-define Package/ruby-sdbm
-$(call Package/ruby/Default)
- TITLE:=Ruby simple file-based key-value dbm implementation
- DEPENDS:=ruby
+define Package/ruby-sdbm/files
+/usr/lib/ruby/$(PKG_LIBVER)/*/sdbm.so
endef
-define Package/ruby-sdbm/description
- Provides sdbm* files
-
+define Package/ruby-shell/files
+/usr/lib/ruby/$(PKG_LIBVER)/shell.rb
+/usr/lib/ruby/$(PKG_LIBVER)/shell
endef
-define Package/ruby-shell
-$(call Package/ruby/Default)
- TITLE:=Ruby idiomatic Ruby interface
- DEPENDS:=ruby +ruby-patterns
+define Package/ruby-socket/files
+/usr/lib/ruby/$(PKG_LIBVER)/ipaddr.rb
+/usr/lib/ruby/$(PKG_LIBVER)/resolv-replace.rb
+/usr/lib/ruby/$(PKG_LIBVER)/resolv.rb
+/usr/lib/ruby/$(PKG_LIBVER)/socket.rb
+/usr/lib/ruby/$(PKG_LIBVER)/*/socket.so
endef
-define Package/ruby-shell/description
- Provides shell* files
-
+define Package/ruby-testunit/files
+/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/test-unit-*.gemspec
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/test-unit-*
endef
-
-define Package/ruby-socket
-$(call Package/ruby/Default)
- TITLE+= socket support
- DEPENDS:=ruby +ruby-multithread
+define Package/ruby-testunit/files-excluded
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/test-unit-*/doc
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/test-unit-*/test
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/test-unit-*/sample
+/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/test-unit-*/*.md
endef
-define Package/ruby-socket/description
- Provides socket-related files:
- - gserver.rb
- - ipaddr.rb
- - resolv-replace.rb
- - resolv.rb
- - socket.rb
- - socket.so
-
+define Package/ruby-unicodenormalize/files
+/usr/lib/ruby/$(PKG_LIBVER)/unicode_normalize.rb
+/usr/lib/ruby/$(PKG_LIBVER)/unicode_normalize
endef
-define Package/ruby-testunit
-$(call Package/ruby/Default)
- TITLE:=Gem test-unit shipped with Ruby
- DEPENDS:=ruby +ruby-csv +ruby-erb +ruby-optparse +ruby-powerassert +ruby-prettyprint +ruby-rexml +ruby-yaml
+define Package/ruby-uri/files
+/usr/lib/ruby/$(PKG_LIBVER)/uri.rb
+/usr/lib/ruby/$(PKG_LIBVER)/uri
endef
-define Package/ruby-testunit/description
- Provides test/unit* files
-
+define Package/ruby-webrick/files
+/usr/lib/ruby/$(PKG_LIBVER)/webrick
+/usr/lib/ruby/$(PKG_LIBVER)/webrick.rb
endef
-define Package/ruby-unicodenormalize
-$(call Package/ruby/Default)
- TITLE:=Ruby String additions for Unicode normalization
- DEPENDS:=ruby +ruby-enc +ruby-enc-extra
+define Package/ruby-xmlrpc/files
+/usr/lib/ruby/$(PKG_LIBVER)/xmlrpc
+/usr/lib/ruby/$(PKG_LIBVER)/xmlrpc.rb
endef
-define Package/ruby-unicodenormalize/description
- Additions to class String for Unicode normalization
-
+define Package/ruby-yaml/files
+/usr/lib/ruby/$(PKG_LIBVER)/yaml
+/usr/lib/ruby/$(PKG_LIBVER)/yaml.rb
endef
-define Package/ruby-uri
-$(call Package/ruby/Default)
- TITLE:=Ruby library to handle URI
- DEPENDS:=ruby +ruby-socket +ruby-enc
+define Package/ruby-zlib/files
+/usr/lib/ruby/$(PKG_LIBVER)/*/zlib.so
endef
-define Package/ruby-uri/description
- Provides uri* files
-
-endef
+RUBY_FILES = $(strip $(call Package/ruby-$(1)/files))
+RUBY_FILES_EXCLUDED = $(strip $(call Package/ruby-$(1)/files-excluded))
-define Package/ruby-webrick
-$(call Package/ruby/Default)
- TITLE:=Ruby Web server toolkit
- DEPENDS:=ruby +ruby-erb +ruby-net +ruby-patterns +ruby-rbconfig
+# 1: short name
+# 2: install dir
+define RubyBuildPackage/install
+ ( \
+ cd $(PKG_INSTALL_DIR) && \
+ $(TAR) -cf - \
+ --files-from <(ls -1d $(patsubst /%,%,$(RUBY_FILES))) \
+ $(if $(RUBY_FILES_EXCLUDED),--exclude-from <(ls -1d $(patsubst /%,%,$(RUBY_FILES_EXCLUDED)))) \
+ ) | ( \
+ [ -n "$(2)" ] && cd $(2) && $(TAR) -xf - \
+ )
endef
-define Package/ruby-webrick/description
- Provides webrick* files
+# 1: short name
+# 2: description
+# 3: dependencies on other packages
+define RubyBuildPackage
+ RUBY_STDLIB += $(1)
-endef
+ # Package definition
+ ifndef Package/ruby-$(1)
+ define Package/ruby-$(1)
+ $(call Package/ruby/Default)
+ TITLE:=Ruby $(2)
+ DEPENDS:=ruby $(3)
+ endef
+ endif
-define Package/ruby-xmlrpc
-$(call Package/ruby/Default)
- TITLE:=Ruby XML-RPC toolkit
- DEPENDS:=ruby +ruby-rexml +ruby-webrick
-endef
+ ifndef Package/ruby-$(1)/description
+ define Package/ruby-$(1)/description
+ This package contains the ruby $(2).
-define Package/ruby-xmlrpc/description
- Provides xmlrpc* files
+ endef
+ endif
-endef
+ # Description
+ ifndef Package/ruby-$(1)/install
+ ifndef Package/ruby-$(1)/files
+ $$(error It must exists either a Package/ruby-$(1)/install or Package/ruby-$(1)/files)
+ endif
-define Package/ruby-yaml
-$(call Package/ruby/Default)
- TITLE:=Ruby YAML toolkit
- DEPENDS:=ruby +ruby-dbm +ruby-pstore +ruby-psych
-endef
+ define Package/ruby-$(1)/description +=
-define Package/ruby-yaml/description
- Provides yaml* files
+Provides:
+$(patsubst /%,
+ - /%,$(RUBY_FILES))
-endef
+ endef
-define Package/ruby-zlib
-$(call Package/ruby/Default)
- TITLE:=Ruby support for zlib
- DEPENDS:=ruby +zlib
-endef
+ ifneq ($(RUBY_FILES_EXCLUDED),)
+ define Package/ruby-$(1)/description +=
-define Package/ruby-zlib/description
- Provides zlib* files
+Except:
+$(patsubst /%,
+ - /%,$(RUBY_FILES_EXCLUDED))
-endef
+ endef
+ endif
-HOST_CONFIGURE_ARGS += \
- --disable-install-doc \
- --disable-install-rdoc \
- --disable-install-capi \
- --with-static-linked-ext \
- --with-out-ext=tk,tk/tkutil,win32,win32ole,dbm,gdbm,readline \
+ Package/ruby-$(1)/install=$(call RubyBuildPackage/install,$(1),$$(1))
+ endif
-# even not used, host build with restricted exts results in gems not being
-# compiling for target (probably some cross compiling problem like checking
-# host for selecting target features)
-# --with-out-ext \
-# --with-ext=thread,stringio \
-
-CONFIGURE_ARGS += \
- --enable-shared \
- --enable-static \
- --disable-rpath \
- $(call autoconf_bool,CONFIG_IPV6,ipv6) \
- --disable-install-doc \
- --disable-install-capi \
- --with-ruby-version=minor \
- --with-iconv-dir=$(ICONV_PREFIX) \
- --with-out-ext=tk,tk/tkutil,win32,win32ole
-
-ifndef CONFIG_RUBY_DIGEST_USE_OPENSSL
-CONFIGURE_ARGS += \
- --with-bundled-sha1\
- --with-bundled-md5\
- --with-bundled-rmd160\
- --with-bundled-sha2 \
-
-endif
-
-TARGET_LDFLAGS += -L$(PKG_BUILD_DIR)
-
-MAKE_FLAGS += \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- SHELL="/bin/bash"
-
-define Package/ruby/install
- $(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
- $(INSTALL_DIR) $(1)/usr/lib/ruby/vendor_ruby/$(PKG_LIBVER)
- $(INSTALL_DIR) $(1)/usr/lib/ruby/site_ruby/$(PKG_LIBVER)
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ruby $(1)/usr/lib/ruby/ruby$(PKG_LIBVER)-bin
- $(INSTALL_BIN) ./files/ruby $(1)/usr/bin/ruby
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/vendor_ruby/$(PKG_LIBVER)/* $(1)/usr/lib/ruby/vendor_ruby/$(PKG_LIBVER)/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/site_ruby/$(PKG_LIBVER)/* $(1)/usr/lib/ruby/site_ruby/$(PKG_LIBVER)/
- sed -i -e "s%@RUBY_LIBPATH@%/usr/lib/ruby/$(PKG_LIBVER)%" $(1)/usr/bin/ruby
- sed -i -e "s%@RUBY_BINPATH@%/usr/lib/ruby/ruby$(PKG_LIBVER)-bin%" $(1)/usr/bin/ruby
-endef
-
-define Package/libruby/install
- $(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libruby.so.* $(1)/usr/lib/
-endef
-
-define Package/ruby-stdlib/install
- # nothing to do
-endef
-
-define Package/ruby-bigdecimal/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/*/bigdecimal.so \
- usr/lib/ruby/$(PKG_LIBVER)/bigdecimal/ \
- usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/bigdecimal-*.gemspec \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-cgi/install
- $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/cgi $(1)/usr/lib/ruby/$(PKG_LIBVER)/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/cgi.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
-endef
-
-define Package/ruby-csv/install
- $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/csv.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
-endef
-
-define Package/ruby-datetime/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/time.rb \
- usr/lib/ruby/$(PKG_LIBVER)/date.rb \
- usr/lib/ruby/$(PKG_LIBVER)/*/date_core.so \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-dbm/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/*/dbm.so \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-debuglib/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/profile.rb \
- usr/lib/ruby/$(PKG_LIBVER)/profiler.rb \
- usr/lib/ruby/$(PKG_LIBVER)/debug.rb \
- usr/lib/ruby/$(PKG_LIBVER)/tracer.rb \
- usr/lib/ruby/$(PKG_LIBVER)/benchmark.rb \
- usr/lib/ruby/$(PKG_LIBVER)/*/objspace.so \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-digest/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/digest \
- usr/lib/ruby/$(PKG_LIBVER)/digest.rb \
- usr/lib/ruby/$(PKG_LIBVER)/*/digest.so \
- usr/lib/ruby/$(PKG_LIBVER)/*/digest/* \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-drb/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/drb.rb \
- usr/lib/ruby/$(PKG_LIBVER)/drb \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-enc/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/*/enc/encdb.so \
- usr/lib/ruby/$(PKG_LIBVER)/*/enc/iso_8859_1.so \
- usr/lib/ruby/$(PKG_LIBVER)/*/enc/utf_* \
- usr/lib/ruby/$(PKG_LIBVER)/*/enc/euc_jp.so \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-enc-extra/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) \
- --exclude=usr/lib/ruby/$(PKG_LIBVER)/*/enc/encdb.so \
- --exclude=usr/lib/ruby/$(PKG_LIBVER)/*/enc/iso_8859_1.so \
- --exclude=usr/lib/ruby/$(PKG_LIBVER)/*/enc/utf_* \
- --exclude=usr/lib/ruby/$(PKG_LIBVER)/*/enc/euc_jp.so \
- -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/*/enc \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-erb/install
- $(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/erb $(1)/usr/bin/
- $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/erb.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
-endef
-
-define Package/ruby-fiddle/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/fiddle.rb \
- usr/lib/ruby/$(PKG_LIBVER)/fiddle/ \
- usr/lib/ruby/$(PKG_LIBVER)/*/fiddle.so \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-filelib/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/tmpdir.rb \
- usr/lib/ruby/$(PKG_LIBVER)/tempfile.rb \
- usr/lib/ruby/$(PKG_LIBVER)/pathname.rb \
- usr/lib/ruby/$(PKG_LIBVER)/*/pathname.so \
- usr/lib/ruby/$(PKG_LIBVER)/find.rb \
- usr/lib/ruby/$(PKG_LIBVER)/fileutils.rb \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-gdbm/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/*/gdbm.so \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-gems/install
- $(INSTALL_DIR) $(1)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/gem $(1)/usr/bin/
- $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/ubygems.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rubygems.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
- # Remove tests (avoids extra deps)
- $(RM) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rubygems/test_case.rb
- $(RM) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rubygems/package/tar_test_case.rb
- $(RM) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rubygems/installer_test_case.rb
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rubygems $(1)/usr/lib/ruby/$(PKG_LIBVER)/
- $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default
- $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems
- $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/doc
- $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/cache
- $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/extensions
- $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/build_info
-endef
-
-define Package/ruby-io-console/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/*/io/console.so \
- usr/lib/ruby/$(PKG_LIBVER)/io/console/ \
- usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/io-console-*.gemspec \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-irb/install
- $(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/irb $(1)/usr/bin/
- $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/irb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/irb.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
-endef
-
-define Package/ruby-json/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/json.rb \
- usr/lib/ruby/$(PKG_LIBVER)/json \
- usr/lib/ruby/$(PKG_LIBVER)/*/json \
- usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/json-*.gemspec \
- ) | ( cd $(1); $(TAR) -xf - )
- rm -rf \
- $(1)/usr/lib/ruby/$(PKG_LIBVER)/psych/json
-endef
-
-define Package/ruby-logger/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/logger.rb \
- usr/lib/ruby/$(PKG_LIBVER)/syslog/logger.rb \
- usr/lib/ruby/$(PKG_LIBVER)/*/syslog.so \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-math/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/prime.rb \
- usr/lib/ruby/$(PKG_LIBVER)/mathn.rb \
- usr/lib/ruby/$(PKG_LIBVER)/cmath.rb \
- usr/lib/ruby/$(PKG_LIBVER)/*/mathn \
- usr/lib/ruby/$(PKG_LIBVER)/matrix.rb \
- usr/lib/ruby/$(PKG_LIBVER)/matrix \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-minitest/install
- $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications
- $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/minitest-*.gemspec $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/
- # Remove tests (avoids extra deps)
- $(RM) -rf $(PKG_INSTALL_DIR)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/minitest-*/test
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/minitest-* $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/
-endef
-
-define Package/ruby-misc/install
- $(INSTALL_DIR) $(1)/usr/lib
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/English.rb \
- usr/lib/ruby/$(PKG_LIBVER)/abbrev.rb \
- usr/lib/ruby/$(PKG_LIBVER)/base64.rb \
- usr/lib/ruby/$(PKG_LIBVER)/delegate.rb \
- usr/lib/ruby/$(PKG_LIBVER)/e2mmap.rb \
- usr/lib/ruby/$(PKG_LIBVER)/expect.rb \
- usr/lib/ruby/$(PKG_LIBVER)/getoptlong.rb \
- usr/lib/ruby/$(PKG_LIBVER)/open3.rb \
- usr/lib/ruby/$(PKG_LIBVER)/ostruct.rb \
- usr/lib/ruby/$(PKG_LIBVER)/scanf.rb \
- usr/lib/ruby/$(PKG_LIBVER)/securerandom.rb \
- usr/lib/ruby/$(PKG_LIBVER)/set.rb \
- usr/lib/ruby/$(PKG_LIBVER)/shellwords.rb \
- usr/lib/ruby/$(PKG_LIBVER)/tsort.rb \
- usr/lib/ruby/$(PKG_LIBVER)/weakref.rb \
- usr/lib/ruby/$(PKG_LIBVER)/*/continuation.so \
- usr/lib/ruby/$(PKG_LIBVER)/*/coverage.so \
- usr/lib/ruby/$(PKG_LIBVER)/*/etc.so \
- usr/lib/ruby/$(PKG_LIBVER)/*/fcntl.so \
- usr/lib/ruby/$(PKG_LIBVER)/*/fiber.so \
- usr/lib/ruby/$(PKG_LIBVER)/*/pty.so \
- usr/lib/ruby/$(PKG_LIBVER)/*/stringio.so \
- usr/lib/ruby/$(PKG_LIBVER)/*/strscan.so \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-
-
-define Package/ruby-mkmf/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/mkmf.rb \
- usr/lib/ruby/$(PKG_LIBVER)/un.rb \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-multithread/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/monitor.rb \
- usr/lib/ruby/$(PKG_LIBVER)/timeout.rb \
- usr/lib/ruby/$(PKG_LIBVER)/thwait.rb \
- usr/lib/ruby/$(PKG_LIBVER)/mutex_m.rb \
- usr/lib/ruby/$(PKG_LIBVER)/sync.rb \
- usr/lib/ruby/$(PKG_LIBVER)/*/thread.so \
- usr/lib/ruby/$(PKG_LIBVER)/*/io/wait.so \
- usr/lib/ruby/$(PKG_LIBVER)/*/io/nonblock.so \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-net/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/open-uri.rb \
- usr/lib/ruby/$(PKG_LIBVER)/net/* \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-nkf/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/kconv.rb \
- usr/lib/ruby/$(PKG_LIBVER)/*/nkf.so \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-openssl/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/openssl \
- usr/lib/ruby/$(PKG_LIBVER)/openssl.rb \
- usr/lib/ruby/$(PKG_LIBVER)/*/openssl.so \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-optparse/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/optparse.rb \
- usr/lib/ruby/$(PKG_LIBVER)/optionparser.rb \
- usr/lib/ruby/$(PKG_LIBVER)/optparse \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-patterns/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/observer.rb \
- usr/lib/ruby/$(PKG_LIBVER)/singleton.rb \
- usr/lib/ruby/$(PKG_LIBVER)/forwardable.rb \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-powerassert/install
- $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications
- $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/power_assert-*.gemspec $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/
- # Remove tests (avoids extra deps)
- $(RM) -rf $(PKG_INSTALL_DIR)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/power_assert-*/test
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/power_assert-* $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/
-endef
-
-define Package/ruby-prettyprint/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/pp.rb \
- usr/lib/ruby/$(PKG_LIBVER)/prettyprint.rb \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-pstore/install
- $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/pstore.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
-endef
-
-define Package/ruby-psych/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/psych \
- usr/lib/ruby/$(PKG_LIBVER)/psych.rb \
- usr/lib/ruby/$(PKG_LIBVER)/*/psych.so \
- usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/psych-*.gemspec \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-racc/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/racc \
- usr/lib/ruby/$(PKG_LIBVER)/*/racc/*.so \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-rake/install
- $(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/rake $(1)/usr/bin/
- $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rake.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
- # Remove tests (avoids extra deps)
- $(RM) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rake/runtest.rb
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rake $(1)/usr/lib/ruby/$(PKG_LIBVER)/
- $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default
- $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/rake-*.gemspec \
- $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/rake-* $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/
-endef
-
-define Package/ruby-rbconfig/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/*/rbconfig.rb \
- usr/lib/ruby/$(PKG_LIBVER)/rbconfig/* \
- usr/lib/ruby/$(PKG_LIBVER)/*/rbconfig/*.so \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-rdoc/install
- $(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/rdoc $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ri $(1)/usr/bin/
- $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
- # Remove tests (avoids extra deps)
- $(RM) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rdoc/test_case.rb
- $(RM) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rdoc/markup/formatter_test_case.rb
- $(RM) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rdoc/markup/text_formatter_test_case.rb
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rdoc.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rdoc $(1)/usr/lib/ruby/$(PKG_LIBVER)/
- $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default
- $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/rdoc-*.gemspec \
- $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/default/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/rdoc-* \
- $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/
-endef
-
-define Package/ruby-readline/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/*/readline.so \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-rexml/install
- $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rexml $(1)/usr/lib/ruby/$(PKG_LIBVER)/
-endef
-
-define Package/ruby-rinda/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/rinda \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-ripper/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/ripper.rb \
- usr/lib/ruby/$(PKG_LIBVER)/ripper \
- usr/lib/ruby/$(PKG_LIBVER)/*/ripper.so \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-rss/install
- $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rss $(1)/usr/lib/ruby/$(PKG_LIBVER)/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/rss.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
-endef
-
-define Package/ruby-sdbm/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/*/sdbm.so \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-shell/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/shell.rb \
- usr/lib/ruby/$(PKG_LIBVER)/shell \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-socket/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/ipaddr.rb \
- usr/lib/ruby/$(PKG_LIBVER)/resolv-replace.rb \
- usr/lib/ruby/$(PKG_LIBVER)/resolv.rb \
- usr/lib/ruby/$(PKG_LIBVER)/socket.rb \
- usr/lib/ruby/$(PKG_LIBVER)/*/socket.so \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-testunit/install
- $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications
- $(INSTALL_DIR) $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/test-unit-*.gemspec $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/specifications/
- # Remove tests (avoids extra deps)
- $(RM) -rf $(PKG_INSTALL_DIR)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/test-unit-*/test
- $(RM) -rf $(PKG_INSTALL_DIR)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/test-unit-*/sample
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/test-unit-* $(1)/usr/lib/ruby/gems/$(PKG_LIBVER)/gems/
-endef
-
-define Package/ruby-unicodenormalize/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/unicode_normalize.rb \
- usr/lib/ruby/$(PKG_LIBVER)/unicode_normalize \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-uri/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/uri.rb \
- usr/lib/ruby/$(PKG_LIBVER)/uri \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-webrick/install
- $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/webrick $(1)/usr/lib/ruby/$(PKG_LIBVER)/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/webrick.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
-endef
-
-define Package/ruby-xmlrpc/install
- $(INSTALL_DIR) $(1)/usr/lib/ruby/$(PKG_LIBVER)
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/xmlrpc $(1)/usr/lib/ruby/$(PKG_LIBVER)/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/ruby/$(PKG_LIBVER)/xmlrpc.rb $(1)/usr/lib/ruby/$(PKG_LIBVER)/
-endef
-
-define Package/ruby-yaml/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/yaml \
- usr/lib/ruby/$(PKG_LIBVER)/yaml.rb \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Package/ruby-zlib/install
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- usr/lib/ruby/$(PKG_LIBVER)/*/zlib.so \
- ) | ( cd $(1); $(TAR) -xf - )
-endef
-
-define Build/InstallDev
- ( cd $(PKG_INSTALL_DIR); $(TAR) -cf - \
- . \
- ) | ( cd $(1); $(TAR) -xf - )
+ $$(eval $$(call BuildPackage,ruby-$(1)))
endef
$(eval $(call BuildPackage,ruby))
$(eval $(call BuildPackage,libruby))
+$(eval $(call RubyBuildPackage,bigdecimal,Arbitrary-precision decimal floating-point library,))
+$(eval $(call RubyBuildPackage,cgi,CGI support toolkit,+ruby-filelib +ruby-pstore))
+$(eval $(call RubyBuildPackage,csv,CSV library,+ruby-patterns +ruby-datetime +ruby-enc))
+$(eval $(call RubyBuildPackage,datetime,date library))
+$(eval $(call RubyBuildPackage,dbm,support for dbm,+libdb47))
+$(eval $(call RubyBuildPackage,debuglib,debug library,+ruby-multithread +ruby-prettyprint))
+$(eval $(call RubyBuildPackage,did-you-mean,did you mean? experience,+ruby-misc))
+$(eval $(call RubyBuildPackage,digest,Digest Library,+RUBY_DIGEST_USE_OPENSSL:libopenssl))
+$(eval $(call RubyBuildPackage,drb,distributed object system,+ruby-filelib +ruby-patterns +ruby-socket))
+$(eval $(call RubyBuildPackage,enc,character re-coding library charset (small subset),))
+$(eval $(call RubyBuildPackage,enc-extra,character re-coding library charset (extra subset),+ruby-enc))
+$(eval $(call RubyBuildPackage,erb,(embedded interpreter),+ruby-cgi))
+$(eval $(call RubyBuildPackage,fiddle,libffi wrapper,+libffi))
+$(eval $(call RubyBuildPackage,filelib,file utils library,+ruby-enc +ruby-misc))
+$(eval $(call RubyBuildPackage,gdbm,support for gdbm,+libgdbm))
+$(eval $(call RubyBuildPackage,gems,gems packet management,+ruby-net +ruby-rdoc))
+$(eval $(call RubyBuildPackage,io-console,Console interface,))
+$(eval $(call RubyBuildPackage,irb,(interactive shell),+ruby-debuglib +ruby-filelib +ruby-math))
+$(eval $(call RubyBuildPackage,json,support for JSON,+ruby-datetime +ruby-misc))
+$(eval $(call RubyBuildPackage,logger,logger and syslog library,+ruby-multithread))
+$(eval $(call RubyBuildPackage,math,math library,+ruby-patterns))
+$(eval $(call RubyBuildPackage,minitest,Gem minitest,+ruby-gems))
+$(eval $(call RubyBuildPackage,misc,standard libraries subset (miscellaneous files),))
+$(eval $(call RubyBuildPackage,mkmf,makefile library,+ruby-filelib +ruby-optparse +ruby-rbconfig))
+$(eval $(call RubyBuildPackage,multithread,multithread library,+ruby-misc))
+$(eval $(call RubyBuildPackage,net,Network Protocols Library,+ruby-datetime +ruby-digest +ruby-filelib +ruby-uri))
+$(eval $(call RubyBuildPackage,net-telnet,telnet client,+ruby-net))
+$(eval $(call RubyBuildPackage,nkf,Network Kanji Filter,+ruby-enc))
+$(eval $(call RubyBuildPackage,openssl,support for openssl,+ruby-enc +ruby-multithread +libopenssl))
+$(eval $(call RubyBuildPackage,optparse,command-line option analysis,+ruby-misc))
+$(eval $(call RubyBuildPackage,patterns,design patterns implementation,+ruby-multithread))
+$(eval $(call RubyBuildPackage,powerassert,Gem power_assert,+ruby-ripper))
+$(eval $(call RubyBuildPackage,prettyprint,PrettyPrint library,+ruby-misc))
+$(eval $(call RubyBuildPackage,pstore,file based persistence,+ruby-digest +ruby-enc))
+$(eval $(call RubyBuildPackage,psych,YAML parser and emitter,+ruby-bigdecimal +ruby-datetime +ruby-misc +ruby-enc +libyaml))
+$(eval $(call RubyBuildPackage,racc,LALR parser generator,))
+$(eval $(call RubyBuildPackage,rake,Rake (make replacement),+ruby-datetime +ruby-filelib +ruby-optparse +ruby-patterns +ruby-rbconfig))
+$(eval $(call RubyBuildPackage,rbconfig,RbConfig,))
+$(eval $(call RubyBuildPackage,rdoc,documentation generator,+ruby-erb +ruby-irb +ruby-json +ruby-racc +ruby-rake +ruby-yaml +ruby-zlib))
+$(eval $(call RubyBuildPackage,readline,support for readline,+libncurses +libreadline))
+$(eval $(call RubyBuildPackage,rexml,XML toolkit,+ruby-patterns +ruby-enc))
+$(eval $(call RubyBuildPackage,rinda,Linda paradigm implementation,+ruby-drb))
+$(eval $(call RubyBuildPackage,ripper,script parser,))
+$(eval $(call RubyBuildPackage,rss,RSS toolkit,+ruby-net +ruby-nkf +ruby-rexml))
+$(eval $(call RubyBuildPackage,sdbm,simple file-based key-value dbm implementation,))
+$(eval $(call RubyBuildPackage,shell,idiomatic Ruby interface,+ruby-patterns))
+$(eval $(call RubyBuildPackage,socket,socket support,+ruby-multithread))
+$(eval $(call RubyBuildPackage,testunit,Gem test-unit,+ruby-csv +ruby-erb +ruby-optparse +ruby-powerassert +ruby-prettyprint +ruby-rexml +ruby-yaml))
+$(eval $(call RubyBuildPackage,unicodenormalize,String additions for Unicode normalization,+ruby-enc +ruby-enc-extra))
+$(eval $(call RubyBuildPackage,uri,library to handle URI,+ruby-socket +ruby-enc))
+$(eval $(call RubyBuildPackage,webrick,Web server toolkit,+ruby-erb +ruby-net +ruby-patterns +ruby-rbconfig))
+$(eval $(call RubyBuildPackage,xmlrpc,XML-RPC toolkit,+ruby-rexml +ruby-webrick))
+$(eval $(call RubyBuildPackage,yaml,YAML toolkit,+ruby-dbm +ruby-pstore +ruby-psych))
+$(eval $(call RubyBuildPackage,zlib,support for zlib,+zlib))
$(eval $(call BuildPackage,ruby-stdlib))
-$(eval $(call BuildPackage,ruby-bigdecimal))
-$(eval $(call BuildPackage,ruby-cgi))
-$(eval $(call BuildPackage,ruby-csv))
-$(eval $(call BuildPackage,ruby-datetime))
-$(eval $(call BuildPackage,ruby-dbm))
-$(eval $(call BuildPackage,ruby-debuglib))
-$(eval $(call BuildPackage,ruby-digest))
-$(eval $(call BuildPackage,ruby-drb))
-$(eval $(call BuildPackage,ruby-enc))
-$(eval $(call BuildPackage,ruby-enc-extra))
-$(eval $(call BuildPackage,ruby-erb))
-$(eval $(call BuildPackage,ruby-fiddle))
-$(eval $(call BuildPackage,ruby-filelib))
-$(eval $(call BuildPackage,ruby-gdbm))
-$(eval $(call BuildPackage,ruby-gems))
-$(eval $(call BuildPackage,ruby-io-console))
-$(eval $(call BuildPackage,ruby-irb))
-$(eval $(call BuildPackage,ruby-json))
-$(eval $(call BuildPackage,ruby-logger))
-$(eval $(call BuildPackage,ruby-math))
-$(eval $(call BuildPackage,ruby-minitest))
-$(eval $(call BuildPackage,ruby-misc))
-$(eval $(call BuildPackage,ruby-mkmf))
-$(eval $(call BuildPackage,ruby-multithread))
-$(eval $(call BuildPackage,ruby-net))
-$(eval $(call BuildPackage,ruby-nkf))
-$(eval $(call BuildPackage,ruby-openssl))
-$(eval $(call BuildPackage,ruby-optparse))
-$(eval $(call BuildPackage,ruby-patterns))
-$(eval $(call BuildPackage,ruby-powerassert))
-$(eval $(call BuildPackage,ruby-prettyprint))
-$(eval $(call BuildPackage,ruby-pstore))
-$(eval $(call BuildPackage,ruby-psych))
-$(eval $(call BuildPackage,ruby-racc))
-$(eval $(call BuildPackage,ruby-rake))
-$(eval $(call BuildPackage,ruby-rbconfig))
-$(eval $(call BuildPackage,ruby-rdoc))
-$(eval $(call BuildPackage,ruby-readline))
-$(eval $(call BuildPackage,ruby-rexml))
-$(eval $(call BuildPackage,ruby-rinda))
-$(eval $(call BuildPackage,ruby-ripper))
-$(eval $(call BuildPackage,ruby-rss))
-$(eval $(call BuildPackage,ruby-sdbm))
-$(eval $(call BuildPackage,ruby-shell))
-$(eval $(call BuildPackage,ruby-socket))
-$(eval $(call BuildPackage,ruby-testunit))
-$(eval $(call BuildPackage,ruby-unicodenormalize))
-$(eval $(call BuildPackage,ruby-uri))
-$(eval $(call BuildPackage,ruby-webrick))
-$(eval $(call BuildPackage,ruby-xmlrpc))
-$(eval $(call BuildPackage,ruby-yaml))
-$(eval $(call BuildPackage,ruby-zlib))
$(eval $(call HostBuild))
--- /dev/null
+https://bugs.ruby-lang.org/projects/ruby-trunk/repository/revisions/53414
+
+Fixes:
+
+https://bugs.ruby-lang.org/issues/11941
+
+It might be incorporated in the following release
+
+Index: aclocal.m4
+===================================================================
+--- a/aclocal.m4 (revision 53413)
++++ b/aclocal.m4 (revision 53414)
+@@ -1,46 +0,0 @@
+-# -*- autoconf -*-
+-
+-AC_DEFUN([_COLORIZE_RESULT_PREPARE], [
+- msg_checking= msg_result_yes= msg_result_no= msg_result_other= msg_reset=
+- AS_IF([test "x${CONFIGURE_TTY}" = xyes -o -t 1], [
+- msg_begin="`tput smso 2>/dev/null`"
+- AS_CASE(["$msg_begin"], ['\e@<:@'*m],
+- [msg_begin="`echo "$msg_begin" | sed ['s/[0-9]*m$//']`"
+- msg_checking="${msg_begin}33m"
+- AS_IF([test ${TEST_COLORS:+set}], [
+- msg_result_yes=[`expr ":$TEST_COLORS:" : ".*:pass=\([^:]*\):"`]
+- msg_result_no=[`expr ":$TEST_COLORS:" : ".*:fail=\([^:]*\):"`]
+- msg_result_other=[`expr ":$TEST_COLORS:" : ".*:skip=\([^:]*\):"`]
+- ])
+- msg_result_yes="${msg_begin}${msg_result_yes:-32;1}m"
+- msg_result_no="${msg_begin}${msg_result_no:-31;1}m"
+- msg_result_other="${msg_begin}${msg_result_other:-33;1}m"
+- msg_reset="${msg_begin}m"
+- ])
+- AS_UNSET(msg_begin)
+- ])
+- AS_REQUIRE_SHELL_FN([colorize_result],
+- [AS_FUNCTION_DESCRIBE([colorize_result], [MSG], [Colorize result])],
+- [AS_CASE(["$[]1"],
+- [yes], [AS_ECHO(["${msg_result_yes}$[]1${msg_reset}]")],
+- [no], [AS_ECHO(["${msg_result_no}$[]1${msg_reset}]")],
+- [AS_ECHO(["${msg_result_other}$[]1${msg_reset}]")])])
+-])
+-
+-AC_DEFUN([COLORIZE_RESULT], [AC_REQUIRE([_COLORIZE_RESULT_PREPARE])dnl
+- AS_LITERAL_IF([$1],
+- [m4_case([$1],
+- [yes], [AS_ECHO(["${msg_result_yes}$1${msg_reset}"])],
+- [no], [AS_ECHO(["${msg_result_no}$1${msg_reset}"])],
+- [AS_ECHO(["${msg_result_other}$1${msg_reset}"])])],
+- [colorize_result "$1"]) dnl
+-])
+-
+-AC_DEFUN([AC_CHECKING],[dnl
+-AC_REQUIRE([_COLORIZE_RESULT_PREPARE])dnl
+-AS_MESSAGE([checking ${msg_checking}$1${msg_reset}...])])
+-
+-AC_DEFUN([AC_MSG_RESULT], [dnl
+-{ _AS_ECHO_LOG([result: $1])
+-COLORIZE_RESULT([$1]); dnl
+-}])
+Index: acinclude.m4
+===================================================================
+--- a/acinclude.m4 (revision 0)
++++ b/acinclude.m4 (revision 53414)
+@@ -0,0 +1,46 @@
++# -*- autoconf -*-
++
++AC_DEFUN([_COLORIZE_RESULT_PREPARE], [
++ msg_checking= msg_result_yes= msg_result_no= msg_result_other= msg_reset=
++ AS_IF([test "x${CONFIGURE_TTY}" = xyes -o -t 1], [
++ msg_begin="`tput smso 2>/dev/null`"
++ AS_CASE(["$msg_begin"], ['\e@<:@'*m],
++ [msg_begin="`echo "$msg_begin" | sed ['s/[0-9]*m$//']`"
++ msg_checking="${msg_begin}33m"
++ AS_IF([test ${TEST_COLORS:+set}], [
++ msg_result_yes=[`expr ":$TEST_COLORS:" : ".*:pass=\([^:]*\):"`]
++ msg_result_no=[`expr ":$TEST_COLORS:" : ".*:fail=\([^:]*\):"`]
++ msg_result_other=[`expr ":$TEST_COLORS:" : ".*:skip=\([^:]*\):"`]
++ ])
++ msg_result_yes="${msg_begin}${msg_result_yes:-32;1}m"
++ msg_result_no="${msg_begin}${msg_result_no:-31;1}m"
++ msg_result_other="${msg_begin}${msg_result_other:-33;1}m"
++ msg_reset="${msg_begin}m"
++ ])
++ AS_UNSET(msg_begin)
++ ])
++ AS_REQUIRE_SHELL_FN([colorize_result],
++ [AS_FUNCTION_DESCRIBE([colorize_result], [MSG], [Colorize result])],
++ [AS_CASE(["$[]1"],
++ [yes], [AS_ECHO(["${msg_result_yes}$[]1${msg_reset}]")],
++ [no], [AS_ECHO(["${msg_result_no}$[]1${msg_reset}]")],
++ [AS_ECHO(["${msg_result_other}$[]1${msg_reset}]")])])
++])
++
++AC_DEFUN([COLORIZE_RESULT], [AC_REQUIRE([_COLORIZE_RESULT_PREPARE])dnl
++ AS_LITERAL_IF([$1],
++ [m4_case([$1],
++ [yes], [AS_ECHO(["${msg_result_yes}$1${msg_reset}"])],
++ [no], [AS_ECHO(["${msg_result_no}$1${msg_reset}"])],
++ [AS_ECHO(["${msg_result_other}$1${msg_reset}"])])],
++ [colorize_result "$1"]) dnl
++])
++
++AC_DEFUN([AC_CHECKING],[dnl
++AC_REQUIRE([_COLORIZE_RESULT_PREPARE])dnl
++AS_MESSAGE([checking ${msg_checking}$1${msg_reset}...])])
++
++AC_DEFUN([AC_MSG_RESULT], [dnl
++{ _AS_ECHO_LOG([result: $1])
++COLORIZE_RESULT([$1]); dnl
++}])
+
+Property changes on: acinclude.m4
+___________________________________________________________________
+Added: svn:eol-style
+## -0,0 +1 ##
++LF
+\ No newline at end of property
+Index: common.mk
+===================================================================
+--- a/common.mk (revision 53413)
++++ b/common.mk (revision 53414)
+@@ -518,7 +518,7 @@
+ $(Q)$(RM) id.c id.h probes.dmyh
+ $(Q)$(CHDIR) $(srcdir) && $(exec) $(RM) parse.c parse.h lex.c enc/trans/newline.c $(PRELUDES) revision.h
+ $(Q)$(CHDIR) $(srcdir) && $(exec) $(RM) id.c id.h probes.dmyh
+- $(Q)$(CHDIR) $(srcdir) && $(exec) $(RM) configure tool/config.guess tool/config.sub gems/*.gem
++ $(Q)$(CHDIR) $(srcdir) && $(exec) $(RM) configure aclocal.m4 tool/config.guess tool/config.sub gems/*.gem
+ realclean-ext:: PHONY
+ realclean-golf: distclean-golf
+ $(Q)$(RM) $(GOLFPRELUDES)
+Index: Makefile.in
+===================================================================
+--- a/Makefile.in (revision 53413)
++++ b/Makefile.in (revision 53414)
+@@ -22,6 +22,7 @@
+ YACC = bison
+ PURIFY =
+ AUTOCONF = autoconf
++ACLOCAL = aclocal
+ CONFIGURE = @CONFIGURE@
+ @SET_MAKE@
+ MKFILES = @MAKEFILES@
+@@ -310,6 +311,9 @@
+ $(srcdir)/$(CONFIGURE): $(srcdir)/configure.in $(srcdir)/aclocal.m4
+ $(CHDIR) $(srcdir) && exec $(AUTOCONF) -o $(@F)
+
++$(srcdir)/aclocal.m4: $(srcdir)/acinclude.m4
++ $(CHDIR) $(srcdir) && exec $(ACLOCAL)
++
+ incs: id.h
+ all-incs: probes.h
+
+++ /dev/null
-References:
-
-https://github.com/rdoc/rdoc/pull/340
-
---- ruby-2.1.2.orig/lib/rdoc.rb 2014-09-02 17:14:28.719224215 -0300
-+++ ruby-2.1.2/lib/rdoc.rb 2014-09-02 17:14:28.762223911 -0300
-@@ -109,6 +109,8 @@
- def self.load_yaml
- begin
- gem 'psych'
-+ rescue NameError => e # --disable-gems
-+ raise unless e.name == :gem
- rescue Gem::LoadError
- end
-
---- ruby-2.1.2.orig/lib/rdoc/markdown.rb 2014-09-02 17:14:28.761223918 -0300
-+++ ruby-2.1.2/lib/rdoc/markdown.rb 2014-09-02 17:14:28.805223607 -0300
-@@ -525,7 +525,6 @@
-
-
-
-- require 'rubygems'
- require 'rdoc'
- require 'rdoc/markup/to_joined_paragraph'
- require 'rdoc/markdown/entities'
---- ruby-2.1.2.orig/lib/rdoc/text.rb 2014-09-02 17:14:28.721224201 -0300
-+++ ruby-2.1.2/lib/rdoc/text.rb 2014-09-02 17:14:28.764223897 -0300
-@@ -10,6 +10,8 @@
-
- begin
- gem 'json'
-+rescue NameError => e # --disable-gems
-+ raise unless e.name == :gem
- rescue Gem::LoadError
- end
-
# Must run inside a openwrt with all *ruby* packages installed
#
+RUBY_SIMPLE_VERSION = RUBY_VERSION.split(".")[0..1].join(".")
failed = false
puts "Looking for installed ruby packages..."
packages=`opkg list-installed '*ruby*' | cut -d' ' -f 1`.split("\n")
puts "Looking for packages files..."
-package_files=Hash.new([])
+package_files=Hash.new { |h,k| h[k]=[] }
packages.each do
|pkg|
files=`opkg files "#{pkg}" | sed -e 1d`.split("\n")
require_ignore=%w{drb/invokemethod16 foo rubygems/defaults/operating_system win32console java Win32API
builder/xchar json/pure simplecov win32/sspi rdoc/markdown/literals_1_8 enumerator win32/resolv rbtree
nqxml/streamingparser nqxml/treeparser xmlscan/parser xmlscan/scanner xmltreebuilder xml/parser xmlparser xml/encoding-ja xmlencoding-ja
- iconv uconv win32ole gettext/po_parser gettext/mo libxml}
+ iconv uconv win32ole gettext/po_parser gettext/mo libxml psych.jar jar-dependencies}
builtin_enc=[
Encoding.find("ASCII-8BIT"),
]
puts "Looking for requires in files..."
-files_requires=Hash.new([])
+files_requires=Hash.new { |h,k| h[k]=[] }
packages.each do
|pkg|
package_files[pkg].each do
next
end
- files_requires[file]=files_requires[file] + [require]
+ files_requires[file] += [require]
when /Encoding::/
encs=line.scan(/Encoding::[[:alnum:]_]+/).collect {|enc| eval(enc) }.select {|enc| enc.kind_of? Encoding }
required_encs = (encs - builtin_enc).collect {|enc| "enc/#{enc.name.downcase.gsub("-","_")}" }
required_encs << "enc/encdb" if need_encdb
- files_requires[file] = files_requires[file] + required_encs
+ files_requires[file] += required_encs
end
end
end
end
end; end
-puts "Merging requirements into packages..."
-package_requires = Hash[packages.collect { |pkg| [pkg, package_files[pkg].collect {|file| files_requires[file] }.inject([],:+).uniq] }]
+puts "Grouping package requirements per package"
+package_requires_files = Hash.new{|h,k| h[k] = Hash.new { |h2,k2| h2[k2] = [] } }
+package_files.each do |(pkg,files)|
+ package_requires_files[pkg]
+ files.each do |file|
+ files_requires[file].each do |requires|
+ package_requires_files[pkg][requires] << file
+ end
+ end
+end
-weak_dependency=Hash.new([])
+weak_dependency=Hash.new { |h,k| h[k]=[] }
weak_dependency.merge!({
"ruby-misc"=>["ruby-openssl","ruby-fiddle"], #securerandom.rb
"ruby-debuglib"=>["ruby-readline"], #debug.rb
"ruby-rdoc"=>["ruby-gems","ruby-readline","ruby-webrick", #/usr/bin/rdoc and others
"ruby-io-console"], #rdoc/stats/normal.rb
"ruby-webrick"=>["ruby-openssl"], #webrick/ssl.rb
+"ruby-testunit"=>["ruby-io-console"], #gems/test-unit-3.1.5/lib/test/unit/ui/console/testrunner.rb
})
puts "Preloading gems..."
puts "Looking for package dependencies..."
package_provides = {}
-package_dependencies = Hash.new([])
-package_requires.each do
- |(pkg,requires)|
+package_dependencies = Hash.new { |h,k| h[k]=[] }
+package_requires_files.each do
+ |(pkg,requires_files)|
- requires.each do
- |require|
+ requires_files.each do
+ |(require,files)|
if package_provides.include?(require)
found = package_provides[require]
else
next
end
found = found.first
- package_provides[require]=found
+ package_provides[require] = found
end
if weak_dependency[pkg].include?(found)
- puts "#{pkg}: #{found} provides #{require} (ignored WEAK dep)"
+ puts "#{pkg}: #{found} provides #{require} (weak depedendency ignored)"
else
- puts "#{pkg}: #{found} provides #{require}"
- package_dependencies[pkg]=package_dependencies[pkg] + [found]
+ puts "#{pkg}: #{found} provides #{require} for #{files.collect {|file| file.sub("/usr/lib/ruby/","") }.join(",")}"
+ package_dependencies[pkg] += [found]
end
end
end
puts "Please, fix the missing files or ignore them on require_ignore var"
exit(1)
end
-
-package_dependencies.each do
- |(pkg,deps)|
- package_dependencies[pkg]=deps.uniq.sort - [pkg]
-end
+# Remove self dependency
+package_dependencies = Hash[package_dependencies.collect {|(pkg,deps)| [pkg,package_dependencies[pkg]=deps.uniq.sort - [pkg]]}]
+package_dependencies.default = []
puts "Expanding dependencies..."
begin
changed=false
package_dependencies.each do
|(pkg,deps)|
-
next if deps.empty?
-
deps_new = deps.collect {|dep| [dep] + package_dependencies[dep] }.inject([],:+).uniq.sort
if not deps == deps_new
puts "#{pkg}: #{deps.join(",")}"
end
end if not changed
+puts "Removing redundant dependencies..."
+package_dependencies.each do
+ |(pkg,deps)|
+ package_dependencies[pkg]=deps.uniq - [pkg]
+end
+
puts "Checking for mutual dependencies..."
package_dependencies.each do
|(pkg,deps)|
end
exit(1) if failed
-puts "Removing redundant dependencies..."
-package_dependencies.each do
- |(pkg,deps)|
- package_dependencies[pkg]=deps.uniq - [pkg]
-end
package_dependencies2=package_dependencies.dup
package_dependencies.each do
|(pkg,deps)|
- # Ignore dependencies that are aready required by another dependency
+ # Ignore dependencies that are already required by another dependency
deps_clean = deps.reject {|dep_suspect| deps.detect {|dep_provider|
if package_dependencies[dep_provider].include?(dep_suspect)
puts "#{pkg}: #{dep_suspect} is already required by #{dep_provider}"
puts "All dependencies are OK." if ok
-
__END__
-
-puts RUBY_VERSION, RUBY_PLATFORM
-puts 123
-
-puts Object.contants
-
-#RUBY_VER=2.1
-#RUBY_ARCH=i486-linux-gnu
-#RUBYLIB=/usr/lib/ruby/$RUBY_VER/
-#RUBYLIB_A=/usr/lib/ruby/$RUBY_ARCH/$RUBY_VER/
#!/bin/bash
#
+# bash feeds/packages/lang/ruby/ruby_missingfiles staging_dir/target-i386_i486_musl-1.1.11/ bin/x86/packages/packages/*ruby*_2.3.0*
+#
function list_staging_files {
- cd staging_dir/target-*/; find \
+ cd "$1"; find \
\( \( -name "root-x86" -or -name "packages" -or -name "stamp" -or -name "pkginfo" \) -prune \) -or -true \
\( -path "*ruby*" -or -name "erb" -or -name "gem" -or -name "irb" -or -name "rake" -or -name "rdoc" -or -name "ri" -or -name "testrb" \) \
+ -not -path "*/usr/include/*" -not -path "*/usr/lib/pkgconfig/*" -not -path "*/usr/lib/lib*.a" \
+ -not -path "*/usr/lib/ruby/gems/*/cache/*" \
-print | sort
}
function list_ipkg_files {
- for OPKG in bin/*/packages/packages/*ruby*; do
+ for OPKG; do
tar --to-stdout -xzf "$OPKG" ./data.tar.gz | tar tz | sed -e 's%/$%%'
done | sort -u
}
-echo " Staging Packages"
-diff -y <(list_staging_files) <(list_ipkg_files)
+echo " Staging Packages"
+
+: ${1:?First arg is staging_dir}
+: ${2:?Second and following args are ruby ipkg packages}
+STAGING_DIR=$1; shift
+diff -d -y <(list_staging_files "$STAGING_DIR") <(list_ipkg_files "$@")
SUBMENU:=Tcl
SECTION:=lang
CATEGORY:=Languages
- DEPENDS:=+libpthread
+ DEPENDS:=+libpthread @BROKEN
TITLE:=The Tcl language
URL:=http://www.tcl.tk/
endef
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=twisted
+PKG_VERSION:=16.0.0
+PKG_RELEASE:=1
+
+PKG_SOURCE:=Twisted-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/T/Twisted \
+ http://twistedmatrix.com/Releases/Twisted/16.0
+PKG_MD5SUM:=c6aa35e9a1e40fce6797247f39647d2a
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/Twisted-$(PKG_VERSION)
+PKG_BUILD_DEPENDS:=python python-setuptools USE_MUSL:librpc
+
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/twisted
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=Python networking engine
+ URL:=http://twistedmatrix.com/
+ DEPENDS:=+python-light +zope-interface
+endef
+
+define Package/twisted/description
+ Twisted is a networking engine written in Python, supporting numerous
+ protocols. It contains a web server, numerous chat clients, chat servers,
+ mail servers, and more.
+endef
+
+define PyPackage/twisted/filespec
++|/usr/bin
+-|/usr/bin/manhole
+-|/usr/bin/tap2deb
+-|/usr/bin/tap2rpm
+-|/usr/bin/tkconch
++|$(PYTHON_PKG_DIR)
+-|$(PYTHON_PKG_DIR)/twisted/conch/scripts/tkconch.py
+-|$(PYTHON_PKG_DIR)/twisted/scripts/manhole.py
+-|$(PYTHON_PKG_DIR)/twisted/scripts/tap2deb.py
+-|$(PYTHON_PKG_DIR)/twisted/scripts/tap2rpm.py
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,, \
+ install --prefix="/usr" --root="$(PKG_INSTALL_DIR)" --no-compile, \
+ )
+endef
+
+$(eval $(call PyPackage,twisted))
+$(eval $(call BuildPackage,twisted))
--- /dev/null
+diff -Nur a/twisted/python/twisted-completion.zsh b/twisted/python/twisted-completion.zsh
+--- a/twisted/python/twisted-completion.zsh 2015-11-29 11:30:47.000000000 +0800
++++ b/twisted/python/twisted-completion.zsh 2015-11-30 20:05:59.755695237 +0800
+@@ -1,4 +1,4 @@
+-#compdef twistd trial conch cftp ckeygen pyhtmlizer tap2deb tkconch manhole tap2rpm
++#compdef twistd trial conch cftp ckeygen pyhtmlizer
+ #
+ # This is the ZSH completion file for Twisted commands. It calls the current
+ # command-line with the special "--_shell-completion" option which is handled
--- /dev/null
+diff -Nur a/setup.py b/setup.py
+--- a/setup.py 2015-11-29 11:30:46.000000000 +0800
++++ b/setup.py 2015-12-02 18:22:10.251268303 +0800
+@@ -49,11 +49,11 @@
+ scripts = getScripts()
+
+ setup_args.update(dict(
+- packages=getPackages('twisted'),
++ packages=getPackages('twisted', ignore=['test']),
+ conditionalExtensions=getExtensions(),
+ scripts=scripts,
+ extras_require=_EXTRAS_REQUIRE,
+- data_files=getDataFiles('twisted'),
++ data_files=getDataFiles('twisted', ignore=['test']),
+ **STATIC_PACKAGE_METADATA))
+
+ setup(**setup_args)
+diff -Nur a/twisted/python/dist.py b/twisted/python/dist.py
+--- a/twisted/python/dist.py 2015-11-29 11:30:47.000000000 +0800
++++ b/twisted/python/dist.py 2015-12-02 19:21:20.076370379 +0800
+@@ -268,11 +268,6 @@
+ """
+ extensions = [
+ ConditionalExtension(
+- "twisted.test.raiser",
+- ["twisted/test/raiser.c"],
+- condition=lambda _: _isCPython),
+-
+- ConditionalExtension(
+ "twisted.internet.iocpreactor.iocpsupport",
+ ["twisted/internet/iocpreactor/iocpsupport/iocpsupport.c",
+ "twisted/internet/iocpreactor/iocpsupport/winsock_pointers.c"],
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=vala
-PKG_VERSION:=0.29.3
+PKG_VERSION:=0.32.0
PKG_RELEASE:=1
PKG_LICENSE:=LGPL-2.1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=@GNOME/vala/0.29/
-PKG_MD5SUM:=939a2a9c20974db9badbc3f910fcae63
+PKG_SOURCE_URL:=@GNOME/vala/0.32/
+PKG_MD5SUM:=d3ff298424bb80476f7d189e6b614c35
PKG_BUILD_DEPENDS:=glib2 glib2/host vala/host
HOST_BUILD_DEPENDS:=glib2/host
-include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
+include $(INCLUDE_DIR)/host-build.mk
TARGET_LDFLAGS+=\
-Wl,-rpath-link=$(STAGING_DIR)/usr/lib
TITLE:=C-sharp like language for the GObject system
URL:=https://wiki.gnome.org/Projects/Vala
MAINTAINER:=Gergely Kiss <mail.gery@gmail.com>
+ DEPENDS:=+glib2 +libpthread
endef
define Package/vala/description
define Build/InstallDev
$(INSTALL_DIR) \
- $(1)/usr/share/vala-0.30/vapi \
+ $(1)/usr/share/vala-0.32/vapi \
+ $(1)/usr/lib \
+ $(1)/usr/share/pkgconfig
+
+ $(INSTALL_DATA) \
+ $(PKG_INSTALL_DIR)/usr/share/vala-0.32/vapi/* \
+ $(1)/usr/share/vala-0.32/vapi
+
+ $(INSTALL_DATA) \
+ $(PKG_INSTALL_DIR)/usr/lib/libvala-0.32.{so*,la} \
+ $(1)/usr/lib
+
+ $(INSTALL_DATA) \
+ $(PKG_INSTALL_DIR)/usr/share/pkgconfig/*.pc \
+ $(1)/usr/share/pkgconfig
+endef
+
+define Package/vala/install
+ $(INSTALL_DIR) \
+ $(1)/usr/share/vala-0.32/vapi \
$(1)/usr/lib \
$(1)/usr/share/pkgconfig \
$(1)/usr/bin
$(INSTALL_DATA) \
- $(PKG_INSTALL_DIR)/usr/share/vala-0.30/vapi/* \
- $(1)/usr/share/vala-0.30/vapi
+ $(PKG_INSTALL_DIR)/usr/share/vala-0.32/vapi/* \
+ $(1)/usr/share/vala-0.32/vapi
$(INSTALL_DATA) \
- $(PKG_INSTALL_DIR)/usr/lib/libvala-0.30.{so*,la} \
+ $(PKG_INSTALL_DIR)/usr/lib/libvala-0.32.{so*,la} \
$(1)/usr/lib
$(INSTALL_BIN) \
- $(PKG_INSTALL_DIR)/usr/bin/{vala,vala-0.30,valac,valac-0.30,vapicheck,vapicheck-0.30,vapigen,vapigen-0.30,vala-gen-introspect,vala-gen-introspect-0.30} \
+ $(PKG_INSTALL_DIR)/usr/bin/{vala,vala-0.32,valac,valac-0.32,vapicheck,vapicheck-0.32,vapigen,vapigen-0.32,vala-gen-introspect,vala-gen-introspect-0.32} \
$(1)/usr/bin
$(INSTALL_DATA) \
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=alsa-lib
-PKG_VERSION:=1.0.29
+PKG_VERSION:=1.1.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=ftp://ftp.alsa-project.org/pub/lib/ \
http://alsa.cybermirror.org/lib/
-PKG_MD5SUM:=de67e0eca72474d6b1121037dafe1024
+PKG_MD5SUM:=69515ca73c3c4a212ef45160dea846c1
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>, \
Peter Wagner <tripolar@gmx.at>
TARGET_CFLAGS += $(FPIC)
-define Build/Configure
- $(call Build/Configure/Default, \
+CONFIGURE_ARGS+= \
--disable-python \
--disable-debug \
--without-debug \
$(SOFT_FLOAT_CONFIG_OPTION) \
- --with-versioned=no \
- )
-endef
+ --with-versioned=no
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/
+++ /dev/null
---- a/configure.ac
-+++ b/configure.ac
-@@ -27,20 +27,6 @@ AC_PREFIX_DEFAULT(/usr)
-
- dnl Checks for programs.
-
--dnl try to gues cross-compiler if not set
--if test "x$host" != "x$build" -a -z "`echo $CC | grep -e '-gcc'`";
--then
-- AC_MSG_CHECKING(for cross-compiler)
--
-- which ${program_prefix}gcc >/dev/null 2>&1 && CC=${program_prefix}gcc
-- which ${host_cpu}-${host_os}-gcc >/dev/null 2>&1 \
-- && CC=${host_cpu}-${host_os}-gcc
-- which ${host_cpu}-${host_vendor}-${host_os}-gcc >/dev/null 2>&1 \
-- && CC=${host_cpu}-${host_vendor}-${host_os}-gcc
--
-- AC_MSG_RESULT($CC)
--fi
--
- CFLAGS="$CFLAGS -D_GNU_SOURCE"
-
-
#include <ctype.h>
-#include <sys/poll.h>
+#include <poll.h>
- #include <sys/shm.h>
#include <sys/mman.h>
#include <limits.h>
+ #include "pcm_local.h"
--- a/src/pcm/pcm_direct.c
+++ b/src/pcm/pcm_direct.c
@@ -30,7 +30,7 @@
#include <sys/socket.h>
-#include <sys/poll.h>
+#include <poll.h>
- #include <sys/shm.h>
#include <pthread.h>
#include "pcm_local.h"
+
--- a/src/pcm/pcm_shm.c
+++ b/src/pcm/pcm_shm.c
@@ -36,7 +36,7 @@
#
-# Copyright (C) 2007-2014 OpenWrt.org
+# Copyright (C) 2007-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PKG_NAME:=apr-util
PKG_VERSION:=1.5.4
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=https://archive.apache.org/dist/apr/
+PKG_SOURCE_URL:=@APACHE/apr/
PKG_MD5SUM:=2202b18f269ad606d70e1864857ed93c
PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
PKG_LICENSE:=Apache License
--with-apr="$(STAGING_DIR)/usr/bin/apr-1-config" \
--with-expat="$(STAGING_DIR)/usr" \
--without-sqlite2 \
- --with-sqlite3="$(STAGING_DIR)/usr" \
- --with-iconv="$(ICONV_PREFIX)" \
+ --with-sqlite3="$(STAGING_DIR)/usr"
+
+ifdef $(CONFIG_BUILD_NLS)
+ CONFIGURE_ARGS += --with-iconv="$(ICONV_PREFIX)"
+else
+ CONFIGURE_ARGS += --without-iconv
+endif
CONFIGURE_VARS += \
ac_cv_file_dbd_apr_dbd_mysql_c=no \
ac_cv_path_ODBC_CONFIG= \
- APR_BUILD_DIR="$(STAGING_DIR)/usr/share/build-1" \
+ APR_BUILD_DIR="$(STAGING_DIR)/usr/share/build-1"
MAKE_FLAGS += \
- APRUTIL_LIBS="-lsqlite3 $(TARGET_LDFLAGS) -lexpat $(if $(ICONV_FULL),-liconv) -lapr-1 -luuid -lm -lcrypt" \
+ APRUTIL_LIBS="-lsqlite3 $(TARGET_LDFLAGS) -lexpat $(if $(ICONV_FULL),-liconv) -lapr-1 -luuid -lm -lcrypt"
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/bin $(1)/usr/include/apr-1/ $(1)/usr/lib $(1)/usr/lib/pkgconfig/
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=http://mirrors.ibiblio.org/apache/apr/
+PKG_SOURCE_URL:=@APACHE/apr/
PKG_MD5SUM:=4e9769f3349fe11fc0a5e1b224c236aa
PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
PKG_LICENSE:=Apache License
--- /dev/null
+diff --git a/avahi-common/simple-watch.c b/avahi-common/simple-watch.c
+index 8df18dd..08d8090 100644
+--- a/avahi-common/simple-watch.c
++++ b/avahi-common/simple-watch.c
+@@ -21,7 +21,7 @@
+ #include <config.h>
+ #endif
+
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <assert.h>
+ #include <string.h>
+ #include <errno.h>
+diff --git a/avahi-common/simple-watch.h b/avahi-common/simple-watch.h
+index 72c1905..db87122 100644
+--- a/avahi-common/simple-watch.h
++++ b/avahi-common/simple-watch.h
+@@ -22,7 +22,7 @@
+
+ /** \file simple-watch.h Simple poll() based main loop implementation */
+
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <avahi-common/cdecl.h>
+ #include <avahi-common/watch.h>
+
+diff --git a/avahi-common/thread-watch.c b/avahi-common/thread-watch.c
+index c0cadeb..ecb202b 100644
+--- a/avahi-common/thread-watch.c
++++ b/avahi-common/thread-watch.c
+@@ -21,7 +21,7 @@
+ #include <config.h>
+ #endif
+
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <assert.h>
+ #include <string.h>
+ #include <errno.h>
+diff --git a/avahi-common/thread-watch.h b/avahi-common/thread-watch.h
+index dec0cf3..1b44ccb 100644
+--- a/avahi-common/thread-watch.h
++++ b/avahi-common/thread-watch.h
+@@ -22,7 +22,7 @@
+
+ /** \file thread-watch.h Threaded poll() based main loop implementation */
+
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <avahi-common/cdecl.h>
+ #include <avahi-common/watch.h>
+
+diff --git a/avahi-common/watch.h b/avahi-common/watch.h
+index 86e63d3..eea12ec 100644
+--- a/avahi-common/watch.h
++++ b/avahi-common/watch.h
+@@ -22,7 +22,7 @@
+
+ /** \file watch.h Simplistic main loop abstraction */
+
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/time.h>
+
+ #include <avahi-common/cdecl.h>
include $(INCLUDE_DIR)/target.mk
PKG_NAME:=boost
-PKG_VERSION:=1_59_0
-PKG_RELEASE:=6
+PKG_VERSION:=1_60_0
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/boost
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)_$(PKG_VERSION)
HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/$(PKG_NAME)_$(PKG_VERSION)
-PKG_MD5SUM:=51528a0e3b33d9e10aaa311d9eb451e3
+PKG_MD5SUM:=28f58b9a33469388302110562bdf6188
PKG_LICENSE:=Boost Software License <http://www.boost.org/users/license.html>
PKG_MAINTAINER:=Carlos M. Ferreira <carlosmf.pt@gmail.com>
menu "Select Boost Options"
depends on PACKAGE_boost
comment "Boost compilation options."
- config boost-static-libs
- bool "Compile Static Libraries"
- help
- Compile static version of all selected boost libraries.
- default y
-
- config boost-shared-libs
- bool "Compile Shared Libraries"
- help
- Compile shared version of all selected boost libraries.
- default y
-
- config boost-runtime-static
- bool "Use static version of C and C++ runtimes for static libraries."
- help
- Determines if shared or static version of C and C++ runtimes should be used for static libraries.
- default n
- select boost-static-libs
- config boost-runtime-shared
- bool "Use shared version of C and C++ runtimes for shared libraries."
- help
- Determines if shared or static version of C and C++ runtimes should be used for shared libraries.
- default y
- select boost-shared-libs
+ choice
+ prompt "Compile Boost libraries."
+ default boost-static-and-shared-libs
+ help
+ Choose which version to compile.
+ -> Shared:
+ - Only Shared libs will be compiled.
+ -> Static:
+ - Only Static libs will be compiled.
+ -> Both:
+ - Both Static and Shared libs will be compiled.
+
+ config boost-shared-libs
+ bool "Shared"
+
+ config boost-static-libs
+ bool "Static"
+
+ config boost-static-and-shared-libs
+ bool "Both"
+ endchoice
+
+ choice
+ prompt "Selects Boost Runtime linkage."
+ default boost-runtime-shared
+ help
+ Choose which C and C++ runtimes to use:
+ -> Use Shared runtimes.
+ -> Use Static runtimes.
+ - Not available if Shared libs are to be built.
+ -> Use both runtimes.
+ - Not available if Shared libs are to be built.
+ - Two separate versions of Boost are built, linking each to a different runtime.
+ - This option requires "Use tagged names" option to be active.
+
+ config boost-runtime-shared
+ bool "Shared"
+
+ config boost-runtime-static
+ depends on @(!boost-shared-libs&&!boost-static-and-shared-libs)
+ bool "Static"
+
+ config boost-runtime-static-and-shared
+ depends on @(boost-use-name-tags&&!boost-shared-libs&&!boost-static-and-shared-libs)
+ bool "Both"
+ endchoice
+
+ choice
+ prompt "Select a Variant."
+ default boost-variant-release
+ help
+ Chooses which boost variant should be selected:
+ -> Release: Optimizes Boost for release.
+ - Optimization: Speed; Debug Symbols: Off; Inlining: Full; Runtime Debugging: Off.
+ -> Debug:
+ - Optimization: Off; Debug Symbols: On; Inlining: Off; Runtime Debugging: On.
+ -> Profile:
+ - Profiling: On; Debug Symbols: On.
+
+ config boost-variant-release
+ bool "Release"
+
+ config boost-variant-debug
+ bool "Debug"
+
+ config boost-variant-profile
+ bool "Profile"
+ endchoice
config boost-use-name-tags
bool "Use tagged names."
config boost-single-thread
depends on @boost-use-name-tags
- bool "Single thread Support"
+ bool "Single thread Support."
help
Compile Boost libraries in single-thread mode.
default n
-
- config boost-with-debug
+
+ config boost-build-type-complete
depends on @boost-use-name-tags
- bool "Boost Debug Support"
+ bool "Complete Boost Build."
help
- Compile Boost libraries with debug support.
+ Builds both release and debug libs. It will take much longer to compile.
default n
endmenu
$(eval $(call DefineBoostLibrary,filesystem,system,))
$(eval $(call DefineBoostLibrary,graph,regex,))
$(eval $(call DefineBoostLibrary,iostreams,,+PACKAGE_boost-iostreams:zlib))
-$(eval $(call DefineBoostLibrary,locale,system,$(ICONV_DEPENDS) +@BUILD_NLS))
+$(eval $(call DefineBoostLibrary,locale,system,$(ICONV_DEPENDS) @BUILD_NLS))
$(eval $(call DefineBoostLibrary,log,system chrono date_time thread filesystem regex,))
$(eval $(call DefineBoostLibrary,math,,))
#$(eval $(call DefineBoostLibrary,mpi,,)) # OpenMPI does no exist in OpenWRT at this time.
define Host/Compile
- # bjam does not provide a configure-script nor a Makefile
+ # b2 does not provide a configure-script nor a Makefile
( cd $(HOST_BUILD_DIR)/tools/build/src/engine ; ./build.sh gcc )
endef
BOOST_ABI = sysv
endif
+comma := ,
define Build/Compile
$(info Selected Boost API $(BOOST_ABI) for architecture $(ARCH) and cpu $(CPU_TYPE) $(CPU_SUBTYPE))
( cd $(PKG_BUILD_DIR) ; \
- echo "using gcc : $(ARCH) : $(GNU_TARGET_NAME)-gcc : <compileflags>\"$(TARGET_CFLAGS)\" <cxxflags>\"$(TARGET_CXXFLAGS)\" <linkflags>\"$(TARGET_LDFLAGS)\" ;" > tools/build/src/user-config.jam ; \
+ echo "using gcc : $(ARCH) : $(GNU_TARGET_NAME)-gcc : <compileflags>\"$(TARGET_CFLAGS)\" <cxxflags>\"$(TARGET_CXXFLAGS) $(if $(CONFIG_boost-coroutine2),-std=c++14,)\" <linkflags>\"$(TARGET_LDFLAGS)\" ;" > tools/build/src/user-config.jam ; \
$(if $(CONFIG_PACKAGE_boost-python3), \
echo "using python : 3.5 : $(STAGING_DIR_ROOT)/usr/bin/python3 : $(STAGING_DIR)/usr/include/python3.5/ ;" >> \
tools/build/src/user-config.jam; \
echo "using python : 2.7 : $(STAGING_DIR_ROOT)/usr/bin/python : $(STAGING_DIR)/usr/include/python2.7/ ;" >> \
tools/build/src/user-config.jam; \
) \
- bjam \
- '-sBUILD=release <optimization>space <inlining>on <debug-symbols>off' \
+ b2 \
+ $(CONFIGURE_ARGS) \
--ignore-site-config \
--toolset=gcc-$(ARCH) abi=$(BOOST_ABI) \
--disable-long-double \
+ $(if $(CONFIG_boost-variant-release), variant=release,) \
+ $(if $(CONFIG_boost-variant-debug), variant=debug,) \
+ $(if $(CONFIG_boost-variant-profile), variant=profile,) \
$(if $(CONFIG_boost-use-name-tags),--layout=tagged,--layout=system) \
- $(if $(CONFIG_boost-with-debug),--build-type=complete,--build-type=minimal) \
- $(if $(CONFIG_boost-static-libs),link=static,) \
- $(if $(CONFIG_boost-runtime-static),runtime-link=static,runtime-link=shared) \
+ $(if $(CONFIG_boost-build-type-complete),--build-type=complete,--build-type=minimal) \
$(if $(CONFIG_boost-shared-libs),link=shared,) \
+ $(if $(CONFIG_boost-static-libs),link=static,) \
+ $(if $(CONFIG_boost-static-and-shared-libs),link=static$(comma)shared,) \
$(if $(CONFIG_boost-runtime-shared),runtime-link=shared,) \
+ $(if $(CONFIG_boost-runtime-static),runtime-link=static,) \
+ $(if $(CONFIG_boost-runtime-static-and-shared),runtime-link=shared$(comma)static,) \
$(if $(CONFIG_boost-single-thread),threading=single,) \
threading=multi \
- $(CONFIGURE_ARGS) \
--without-mpi \
$(if $(CONFIG_boost-coroutine2),,--without-coroutine2) \
$(if $(CONFIG_boost-graph-parallel),,--without-graph_parallel) \
# copies _all_ header files - independent of <--with-library>-argument above
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) -v $(PKG_INSTALL_DIR)/lib/*.a $(1)/usr/lib/ # copies all compiled archive files
+ $(CP) -v $(PKG_INSTALL_DIR)/lib/*.a $(1)/usr/lib/ # copies all compiled archive files
$(FIND) $(PKG_INSTALL_DIR)/lib/ -name '*.so*' -exec $(CP) {} $(1)/usr/lib/ \; # copies all the shared objects files
endef
define Host/Install
$(INSTALL_DIR) \
- $(STAGING_DIR_HOST)/bin
+ $(STAGING_DIR)/host/bin
$(CP) \
- $(HOST_BUILD_DIR)/tools/build/src/engine/bin.*/bjam \
- $(STAGING_DIR_HOST)/bin/
+ $(HOST_BUILD_DIR)/tools/build/src/engine/bin.*/b2 \
+ $(STAGING_DIR)/host/bin/
endef
define Package/boost/Default/install
include $(TOPDIR)/rules.mk
PKG_NAME:=c-ares
-PKG_VERSION:=1.10.0
+PKG_VERSION:=1.11.0
PKG_RELEASE:=1
PKG_LICENSE:=MIT
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://c-ares.haxx.se/download
-PKG_MD5SUM:=1196067641411a75d3cbebe074fd36d8
+PKG_MD5SUM:=d5c6d522cfc54bb6f215a0b7912d46be
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
+/*
+ * __dd_build --
+ * Build the lock dependency bit maps.
-+ * Notes on syncronization:
++ * Notes on synchronization:
+ * LOCK_SYSTEM_LOCK is used to hold objects locked when we have
+ * a single partition.
+ * LOCK_LOCKERS is held while we are walking the lockers list and
--- /dev/null
+#
+# Copyright (C) 2006-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+# No copyright by Harald Geyer as filling in a template doesn't constitute
+# an original work in the sense of copyright law.
+
+include $(TOPDIR)/rules.mk
+
+PKG_MAINTAINER:=Harald Geyer <harald@ccbib.org>
+
+PKG_NAME:=elektra
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=doc/COPYING
+PKG_VERSION:=0.8.15
+PKG_RELEASE:=1
+
+# Use this for official releasees
+PKG_MD5SUM:=33ec1e5982fb7fbd8893bf7b579b80f0
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://ftp.libelektra.org/ftp/elektra/releases
+
+# Use this to test versions still under development
+#PKG_SOURCE_PROTO:=git
+#PKG_SOURCE_URL:=https://github.com/ElektraInitiative/libelektra.git
+#PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+#PKG_SOURCE_VERSION:=e97efb29a94f3a49cb952d06552fcf53708ea8c7
+#PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
+
+PKG_BUILD_DEPENDS:=elektra/host swig/host
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/libelektra/Default
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=Elektra
+ URL:=http://www.libelektra.org/
+ SUBMENU:=libelektra
+endef
+
+define Package/libelektra/Default-description
+Elektra provides an universal and secure framework to store
+configuration parameters in a global, hierarchical key database.
+endef
+
+define Package/libelektra-core
+ $(call Package/libelektra/Default)
+ TITLE:=Elektra core library
+ DEPENDS:=+libpthread
+endef
+
+define Package/libelektra-core/description
+$(call Package/libelektra/Default-description)
+
+This package contains the core libraries, that all other parts of
+elektra and all programs using elektra depend on, and an almost
+minimal set of plugins to be actually useful.
+endef
+
+define Package/elektra-kdb
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=Elektra kdb tool
+ URL:=http://www.libelektra.org/
+ DEPENDS:=+libelektra-core +libstdcpp
+endef
+
+define Package/elektra-kdb/description
+$(call Package/libelektra/Default-description)
+
+This package contains the kdb tool, which allows to access and change
+the content of the key database from the shell.
+endef
+
+define Package/libelektra-resolvers
+ $(call Package/libelektra/Default)
+ TITLE:=Elektra additional resolvers
+ DEPENDS:=+libelektra-core +libpthread
+endef
+
+define Package/libelektra-resolvers/description
+$(call Package/libelektra/Default-description)
+
+This package contains additional resolvers not included in the
+libelektra-core package. Usually there is no reason to install this.
+endef
+
+define Package/libelektra-plugins
+ $(call Package/libelektra/Default)
+ TITLE:=Useful elektra plugins
+ DEPENDS:=+libelektra-core
+endef
+
+define CONTENT_ELEKTRA_PLUGINS_TEXT
+ccode conditionals csvstorage enum filecheck glob hexcode hidden hosts
+iconv keytometa line lineendings list mathcheck network null path
+simpleini syslog uname validation
+endef
+
+CONTENT_ELEKTRA_PLUGINS = $(strip $(CONTENT_ELEKTRA_PLUGINS_TEXT))
+
+define Package/libelektra-plugins/description
+$(call Package/libelektra/Default-description)
+
+This package contains plugins for various common configuration file
+format and optional features without heavy dependencies. Currently
+these plugins are included:
+$(CONTENT_ELEKTRA_PLUGINS_TEXT)
+endef
+
+define Package/libelektra-cpp
+ $(call Package/libelektra/Default)
+ TITLE:=Elektra plugins depending on libstdcpp
+ DEPENDS:=+libelektra-core +libstdcpp
+endef
+
+CONTENT_ELEKTRA_CPP=dump regexstore struct type
+
+define Package/libelektra-cpp/description
+$(call Package/libelektra/Default-description)
+
+This package contains plugins written in C++.
+Currently these are:
+$(CONTENT_ELEKTRA_CPP)
+endef
+
+define Package/libelektra-boost
+ $(call Package/libelektra/Default)
+ TITLE:=Elektra plugins depending on boost
+ DEPENDS:=+libelektra-core +libstdcpp +boost
+endef
+
+define Package/libelektra-boost/description
+$(call Package/libelektra/Default-description)
+
+This package contains plugins written in C++ with an dependency on
+boost. Currently this is a plugin for a tcl like format.
+endef
+
+define Package/libelektra-crypto
+ $(call Package/libelektra/Default)
+ TITLE:=Elektra crypto plugin
+ DEPENDS:=+libelektra-core +libopenssl
+endef
+
+define Package/libelektra-crypto/description
+$(call Package/libelektra/Default-description)
+
+This package contains support for encrypting values before storage.
+endef
+
+define Package/libelektra-dbus
+ $(call Package/libelektra/Default)
+ TITLE:=Elektra dbus plugin
+ DEPENDS:=+libelektra-core +libdbus
+endef
+
+define Package/libelektra-dbus/description
+$(call Package/libelektra/Default-description)
+
+This package contains support for dbus notification on configuration
+changes.
+endef
+
+define Package/libelektra-xml
+ $(call Package/libelektra/Default)
+ TITLE:=Elektra xmltool plugin
+ DEPENDS:=+libelektra-core +libxml2
+endef
+
+define Package/libelektra-xml/description
+$(call Package/libelektra/Default-description)
+
+This package contains a plugin for storing data with xml syntax.
+endef
+
+define Package/libelektra-yajl
+ $(call Package/libelektra/Default)
+ TITLE:=Elektra yajl (json) plugin
+ DEPENDS:=+libelektra-core +yajl
+endef
+
+define Package/libelektra-yajl/description
+$(call Package/libelektra/Default-description)
+
+This package contains support for storing the key database as json files.
+endef
+
+define Package/libelektra-python2
+ $(call Package/libelektra/Default)
+ TITLE:=Elektra python2 plugin
+ DEPENDS:=+libelektra-core +python-light +libstdcpp
+endef
+
+define Package/libelektra-python2/description
+$(call Package/libelektra/Default-description)
+
+This package adds python2 support to elektra.
+endef
+
+define Package/libelektra-python3
+ $(call Package/libelektra/Default)
+ TITLE:=Elektra python3 plugin
+ DEPENDS:=+libelektra-core +python3-light +libstdcpp
+endef
+
+define Package/libelektra-python3/description
+$(call Package/libelektra/Default-description)
+
+This package adds python3 support to elektra.
+endef
+
+define Package/libelektra-lua
+ $(call Package/libelektra/Default)
+ TITLE:=Elektra lua plugin
+ DEPENDS:=+libelektra-core +lua +libstdcpp
+endef
+
+define Package/libelektra-lua/description
+$(call Package/libelektra/Default-description)
+
+This package adds lua support to elektra.
+endef
+
+define Package/libelektra-extra
+ $(call Package/libelektra/Default)
+ TITLE:=Additional elektra plugins
+ DEPENDS:=+libelektra-core
+endef
+
+CONTENT_ELEKTRA_EXTRA:=constants counter error fstab logchange rename timeofday tracer
+
+define Package/libelektra-extra/description
+$(call Package/libelektra/Default-description)
+
+This package contains extra plugins that are only useful for debugging
+or as an example of what can be done. Currently this includes:
+$(CONTENT_ELEKTRA_EXTRA)
+endef
+
+CMAKE_OPTIONS = \
+ -DTARGET_PLUGIN_FOLDER="" \
+ -DBUILD_FULL=OFF \
+ -DBUILD_STATIC=OFF \
+ -DBUILD_DOCUMENTATION=OFF \
+ -DFORCE_IN_SOURCE_BUILD=ON \
+ -DBUILD_TESTING=OFF \
+ -DKDB_DEFAULT_RESOLVER=resolver_fm_pb_b \
+ -DKDB_DEFAULT_STORAGE=ini \
+ -DPLUGINS="ALL;-crypto_gcrypt"
+
+CMAKE_HOST_OPTIONS = \
+ -DCMAKE_SKIP_RPATH=FALSE \
+ -DCMAKE_INSTALL_RPATH=$(STAGING_DIR_HOST)/lib/ \
+ -DINSTALL_BUILD_TOOLS=ON \
+ -DBUILD_STATIC=OFF \
+ -DBUILD_DOCUMENTATION=OFF \
+ -DINSTALL_SYSTEM_FILES=OFF \
+ -DFORCE_IN_SOURCE_BUILD=ON \
+ -DBUILD_TESTING=OFF \
+ -DPLUGINS="ALL;-python2;-python" \
+ -DTOOLS="gen;kdb"
+
+define Package/libelektra-core/install
+ $(INSTALL_DIR) $(1)/etc/kdb/
+ $(INSTALL_DIR) $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-core.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-ease.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-kdb.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-meta.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-plugin.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-proposal.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-resolver_fm_pb_b.so $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-ni.so $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-ini.so $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-sync.so $(1)/usr/lib/
+endef
+
+define Package/elektra-kdb/install
+ $(INSTALL_DIR) $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/kdb $(1)/usr/bin
+ $(INSTALL_DIR) $(1)/usr/lib/elektra/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektratools* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/elektra/tool_exec/ $(1)/usr/lib/elektra/
+endef
+
+define Package/libelektra-resolvers/install
+ $(INSTALL_DIR) $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-resolver_* $(1)/usr/lib/
+ rm -f $(1)/usr/lib/libelektra-resolver_fm_pb_b.so
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-wresolver.so $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-noresolver.so $(1)/usr/lib/
+endef
+
+define Package/libelektra-plugins/install
+ $(INSTALL_DIR) $(1)/usr/lib/
+ $(foreach plugin,$(CONTENT_ELEKTRA_PLUGINS),$(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-$(plugin).so $(1)/usr/lib/;)
+endef
+
+define Package/libelektra-boost/install
+ $(INSTALL_DIR) $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-tcl.so $(1)/usr/lib/
+endef
+
+define Package/libelektra-cpp/install
+ $(INSTALL_DIR) $(1)/usr/lib/
+ $(CP) $(foreach plugin,$(CONTENT_ELEKTRA_CPP),$(PKG_INSTALL_DIR)/usr/lib/libelektra-$(plugin).so) $(1)/usr/lib/
+endef
+
+define Package/libelektra-crypto/install
+ $(INSTALL_DIR) $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-crypto* $(1)/usr/lib/
+endef
+
+define Package/libelektra-dbus/install
+ $(INSTALL_DIR) $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-dbus.so $(1)/usr/lib/
+endef
+
+define Package/libelektra-xml/install
+ $(INSTALL_DIR) $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-xmltool.so $(1)/usr/lib/
+endef
+
+define Package/libelektra-yajl/install
+ $(INSTALL_DIR) $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-yajl.so $(1)/usr/lib/
+endef
+
+define Package/libelektra-python2/install
+ $(INSTALL_DIR) $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-python2.so $(1)/usr/lib/
+endef
+
+define Package/libelektra-python3/install
+ $(INSTALL_DIR) $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-python.so $(1)/usr/lib/
+endef
+
+define Package/libelektra-lua/install
+ $(INSTALL_DIR) $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libelektra-lua.so $(1)/usr/lib/
+endef
+
+define Package/libelektra-extra/install
+ $(INSTALL_DIR) $(1)/usr/lib/
+ $(CP) $(foreach plugin,$(CONTENT_ELEKTRA_EXTRA),$(PKG_INSTALL_DIR)/usr/lib/libelektra-$(plugin).so) $(1)/usr/lib/
+endef
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include/elektra/
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/elektra/* $(1)/usr/include/elektra/
+ $(INSTALL_DIR) $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/* $(1)/usr/lib/
+endef
+
+
+$(eval $(call HostBuild))
+$(eval $(call BuildPackage,libelektra-core))
+$(eval $(call BuildPackage,elektra-kdb))
+$(eval $(call BuildPackage,libelektra-resolvers))
+$(eval $(call BuildPackage,libelektra-plugins))
+$(eval $(call BuildPackage,libelektra-boost))
+$(eval $(call BuildPackage,libelektra-cpp))
+$(eval $(call BuildPackage,libelektra-crypto))
+$(eval $(call BuildPackage,libelektra-dbus))
+$(eval $(call BuildPackage,libelektra-xml))
+$(eval $(call BuildPackage,libelektra-yajl))
+$(eval $(call BuildPackage,libelektra-python2))
+$(eval $(call BuildPackage,libelektra-python3))
+$(eval $(call BuildPackage,libelektra-lua))
+$(eval $(call BuildPackage,libelektra-extra))
define Build/Configure
# This replacement were do according to many comments on the web because of gcc 3.4.5 version (.6 included).-
- # wich doesn't recognices the -iquote parameter to AM_CFLAGS
+ # which doesn't recognices the -iquote parameter to AM_CFLAGS
($(SED) 's,-iquote $$$$(top_srcdir),-I$$$$(top_srcdir),g' $(PKG_BUILD_DIR)/libfaad/Makefile.am; \
$(SED) 's,-iquote $$$$(top_srcdir),-I$$$$(top_srcdir),g' $(PKG_BUILD_DIR)/libfaad/Makefile.in);
(cd $(PKG_BUILD_DIR); rm -rf config.{cache,status}; \
endef
define Package/file
-$(call package/file/Default)
+$(call Package/file/Default)
SECTION:=utils
CATEGORY:=Utilities
TITLE+= utility
endef
define Package/libmagic
-$(call package/file/Default)
+$(call Package/file/Default)
SECTION:=libs
CATEGORY:=Libraries
TITLE+= library
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PKG_NAME:=flac
PKG_VERSION:=1.3.1
-PKG_RELEASE:=1
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://downloads.xiph.org/releases/flac/
--disable-xmms-plugin \
--disable-ogg \
--disable-oggtest \
- --disable-debug \
- --enable-static \
+ $(if $(CONFIG_DEBUG),--enable-debug) \
+ --enable-static
TARGET_CFLAGS += $(FPIC)
--- /dev/null
+--- a/configure.ac
++++ b/configure.ac
+@@ -348,11 +348,11 @@ fi
+
+ if test "x$debug" = xtrue; then
+ CPPFLAGS="-DDEBUG $CPPFLAGS"
+- CFLAGS=$(echo "$CFLAGS" | sed 's/-g//')
+- CFLAGS="-g $CFLAGS"
++ CFLAGS=$(echo "$CFLAGS" | sed 's/-g[0-9]*//')
++ CFLAGS="-g3 $CFLAGS"
+ else
+ CPPFLAGS="-DNDEBUG $CPPFLAGS"
+- CFLAGS=$(echo "$CFLAGS" | sed 's/-O2//;s/-g//')
++ CFLAGS=$(echo "$CFLAGS" | sed 's/-O2//;s/-g[0-9]*//')
+ CFLAGS="-O3 -funroll-loops $CFLAGS"
+ fi
+
--- /dev/null
+--- a/src/libFLAC/cpu.c
++++ b/src/libFLAC/cpu.c
+@@ -243,7 +243,7 @@ void FLAC__cpu_info(FLAC__CPUInfo *info)
+ struct sigaction sigill_save;
+ struct sigaction sigill_sse;
+ sigill_sse.sa_sigaction = sigill_handler_sse_os;
+- __sigemptyset(&sigill_sse.sa_mask);
++ sigemptyset(&sigill_sse.sa_mask);
+ sigill_sse.sa_flags = SA_SIGINFO | SA_RESETHAND; /* SA_RESETHAND just in case our SIGILL return jump breaks, so we don't get stuck in a loop */
+ if(0 == sigaction(SIGILL, &sigill_sse, &sigill_save))
+ {
PKG_REMOVE_FILES:=Makefile compat/Makefile doc/Makefile export/Makefile src/Makefile tests/Makefile
PKG_BUILD_PARALLEL:=0
+PKG_BUILD_DEPENDS:=gettext-full/host
+
include $(INCLUDE_DIR)/package.mk
define Package/libgdbm
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=giflib
-PKG_VERSION:=5.1.1
+PKG_VERSION:=5.1.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@SF/giflib
-PKG_MD5SUM:=1c39333192712788c6568c78a949f13e
+PKG_MD5SUM:=323a9f11ab56c8a2d1715376410ce376
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
endef
TARGET_CFLAGS += $(FPIC)
-CONFIGURE_ARGS += --enable-x11=no
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR)
--- /dev/null
+--- a/configure.ac
++++ b/configure.ac
+@@ -21,7 +21,6 @@ AC_PROG_MAKE_SET
+ AM_PROG_CC_C_O
+
+ dnl Allow partial building on systems without xmlto
+-AC_CHECK_PROG([have_xmlto], [xmlto], ["yes"],["no"])
+ AM_CONDITIONAL([BUILD_DOC], [test "x${have_xmlto}" = "xyes"])
+
+ dnl Shared-library version
#
-# Copyright (C) 2007-2015 OpenWrt.org
+# Copyright (C) 2007-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=glib2
-PKG_VERSION:=2.44.1
+PKG_VERSION:=2.46.2
PKG_RELEASE:=1
PKG_SOURCE:=glib-$(PKG_VERSION).tar.xz
PKG_BUILD_DIR:=$(BUILD_DIR)/glib-$(PKG_VERSION)
-PKG_SOURCE_URL:=@GNOME/glib/2.44
-PKG_MD5SUM:=83efba4722a9674b97437d1d99af79db
+PKG_SOURCE_URL:=@GNOME/glib/2.46
+PKG_MD5SUM:=7f815d6e46df68e070cb421ed7f1139e
PKG_BUILD_PARALLEL:=1
HOST_BUILD_PARALLEL:=1
endef
HOST_CONFIGURE_ARGS += \
- --disable-selinux
+ --disable-selinux \
+ --with-libiconv=gnu
CONFIGURE_ARGS += \
--enable-shared \
--enable-debug=no \
--disable-selinux \
--disable-fam \
- $(if $(ICONV_FULL),--with-libiconv=gnu)
+ --with-libiconv=gnu
CONFIGURE_VARS += \
glib_cv_stack_grows=no \
glib_cv_uscore=no \
- ac_cv_path_GLIB_GENMARSHAL=$(STAGING_DIR_HOST)/bin/glib-genmarshal \
+ ac_cv_path_GLIB_GENMARSHAL=$(STAGING_DIR)/host/bin/glib-genmarshal \
ac_cv_func_mmap_fixed_mapped=yes \
ac_cv_func_posix_getpwuid_r=yes \
ac_cv_func_posix_getgrgid_r=yes
+++ /dev/null
---- a/gio/Makefile.am
-+++ b/gio/Makefile.am
-@@ -707,6 +707,7 @@ bin_PROGRAMS = gio-querymodules glib-com
-
- glib_compile_resources_LDADD = libgio-2.0.la \
- $(top_builddir)/gobject/libgobject-2.0.la \
-+ $(top_builddir)/gmodule/libgmodule-2.0.la \
- $(top_builddir)/glib/libglib-2.0.la \
- $(NULL)
-
include $(TOPDIR)/rules.mk
PKG_NAME:=glpk
-PKG_VERSION:=4.57
+PKG_VERSION:=4.60
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
-PKG_MD5SUM:=237531a54f73155842f8defe51aedb0f
+PKG_MD5SUM:=eda7965907f6919ffc69801646f13c3e
PKG_LICENSE:=GPL-3.0
PKG_LICENSE_FILES:=COPYING
config GNUTLS_CRYPTODEV
bool "enable /dev/crypto support"
- select PACKAGE_kmod-cryptodev
default n
config GNUTLS_HEARTBEAT
include $(TOPDIR)/rules.mk
PKG_NAME:=gnutls
-PKG_VERSION:=3.4.7
+PKG_VERSION:=3.4.11
PKG_RELEASE:=1
PKG_USE_MIPS16:=0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=ftp://ftp.gnutls.org/gcrypt/gnutls/v3.4
-PKG_MD5SUM:=e7556cec73c8b34fd2ff0b591e24e44c
+PKG_MD5SUM:=4da148b5a0048aaac4961e2d9ba95798
#PKG_FIXUP:=autoreconf gettext-version
PKG_MAINTAINER:=Nikos Mavrogiannopoulos <nmav@gnutls.org>
PKG_LICENSE:=LGPLv2.1+
define Package/libgnutls
$(call Package/gnutls/Default)
TITLE+= (library)
- DEPENDS+= +libnettle +!LIBNETTLE_MINI:libgmp +GNUTLS_EXT_LIBTASN1:libtasn1 +GNUTLS_PKCS11:p11-kit
+ DEPENDS+= +libnettle +!LIBNETTLE_MINI:libgmp +GNUTLS_EXT_LIBTASN1:libtasn1 +GNUTLS_PKCS11:p11-kit +GNUTLS_CRYPTODEV:kmod-cryptodev
endef
define Package/libgnutls/description
include $(TOPDIR)/rules.mk
PKG_NAME:=hiredis
-PKG_VERSION:=0.13.1
+PKG_VERSION:=0.13.3
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/redis/hiredis.git
-PKG_SOURCE_VERSION:=f58dd249d6ed47a7e835463c3b04722972281dbb
+PKG_SOURCE_VERSION:=010756025e8cefd1bc66c6d4ed3b1648ef6f1f95
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_NAME:=ibrcommon
PKG_VERSION:=1.0.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.ibr.cs.tu-bs.de/projects/ibr-dtn/releases
--- /dev/null
+diff --git a/ibrcommon/data/File.cpp b/ibrcommon/data/File.cpp
+index 31af4ae..9b49890 100644
+--- a/ibrcommon/data/File.cpp
++++ b/ibrcommon/data/File.cpp
+@@ -35,9 +35,7 @@
+ #include <cerrno>
+ #include <fstream>
+
+-#if !defined(HAVE_FEATURES_H) || defined(ANDROID)
+ #include <libgen.h>
+-#endif
+
+ #ifdef __WIN32__
+ #include <io.h>
+@@ -226,7 +224,7 @@ namespace ibrcommon
+ std::string File::getBasename() const
+ {
+ #if !defined(ANDROID) && defined(HAVE_FEATURES_H)
+- return std::string(basename(_path.c_str()));
++ return std::string(basename((char *)_path.c_str()));
+ #else
+ char path[_path.length()+1];
+ ::memcpy(&path, _path.c_str(), _path.length()+1);
#
-# Copyright (C) 2008-2015 OpenWrt.org
+# Copyright (C) 2008-2016 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:=2
-PKG_MD5SUM:=c4fedc999b6c3820296b0eb92cc2e252
+PKG_RELEASE:=3
PKG_MAINTAINER:=Othmar Truniger <github@truniger.ch>
PKG_LICENSE:=LGPL-2.0+
PKG_LICENSE_FILES:=COPYING
-PKG_SOURCE_URL:=http://www.stafford.uklinux.net/libesmtp
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/tru7/libesmtp.git
+PKG_SOURCE_VERSION=10e9a6df9f76da610941addf71b9a3cbf94f2e9f
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_BUILD_PARALLEL:=1
SECTION:=libs
CATEGORY:=Libraries
TITLE:=A Library for Posting Electronic Mail
- URL:=http://www.stafford.uklinux.net/libesmtp/
- DEPENDS:=+libpthread
+ URL:=https://github.com/tru7/libesmtp.git
+ DEPENDS:=+libpthread +libopenssl
endef
-CONFIGURE_ARGS += \
- --without-openssl
-
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/libesmtp-config $(1)/usr/bin/
include $(TOPDIR)/rules.mk
PKG_NAME:=libev
-PKG_VERSION:=4.20
+PKG_VERSION:=4.22
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://dist.schmorp.de/libev/Attic/
-PKG_MD5SUM:=1cac539cfc560f381a490c9fba940de9
+PKG_MD5SUM:=bf0007e37240103d3c2be80ca9bee3f9
PKG_LICENSE:=BSD-2-Clause
PKG_MAINTAINER:=Karl Palsson <karlp@tweak.net.au>
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/event.h $(1)/usr/include/ev_event_compat.h
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/ev.h $(1)/usr/include/
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/ev++.h $(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libev.{a,so*} $(1)/usr/lib/
endef
include $(TOPDIR)/rules.mk
PKG_NAME:=libevdev
-PKG_VERSION:=1.4.5
+PKG_VERSION:=1.4.6
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://www.freedesktop.org/software/libevdev/
-PKG_MD5SUM:=b123d91e31d279ecb37bea774f17aae1
+PKG_MD5SUM:=9b3f25bd8fb0f8efa4944d34668dddc0
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=COPYING
--- /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:=libfastjson
+PKG_VERSION:=0.99.2
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_URL:=https://github.com/rsyslog/libfastjson.git
+PKG_SOURCE_VERSION:=v$(PKG_VERSION)
+
+PKG_MAINTAINER:=Dov Murik <dmurik@us.ibm.com>
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILE:=COPYING
+
+PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/libfastjson
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=A fast JSON library for C
+ URL:=https://github.com/rsyslog/libfastjson
+endef
+
+define Package/libfastjson/description
+ libfastjson - A fast JSON library for C
+endef
+
+TARGET_CFLAGS += $(FPIC)
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/
+
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/* $(1)/usr/lib/
+endef
+
+define Package/libfastjson/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfastjson.so* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,libfastjson))
--- /dev/null
+--- a/src/mips/o32.S
++++ b/src/mips/o32.S
+@@ -82,13 +82,16 @@ sixteen:
+
+ ADDU $sp, 4 * FFI_SIZEOF_ARG # adjust $sp to new args
+
++#ifndef __mips_soft_float
+ bnez t0, pass_d # make it quick for int
++#endif
+ REG_L a0, 0*FFI_SIZEOF_ARG($sp) # just go ahead and load the
+ REG_L a1, 1*FFI_SIZEOF_ARG($sp) # four regs.
+ REG_L a2, 2*FFI_SIZEOF_ARG($sp)
+ REG_L a3, 3*FFI_SIZEOF_ARG($sp)
+ b call_it
+
++#ifndef __mips_soft_float
+ pass_d:
+ bne t0, FFI_ARGS_D, pass_f
+ l.d $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args
+@@ -130,6 +133,7 @@ pass_f_d:
+ # bne t0, FFI_ARGS_F_D, call_it
+ l.s $f12, 0*FFI_SIZEOF_ARG($sp) # load $fp regs from args
+ l.d $f14, 2*FFI_SIZEOF_ARG($sp) # passing double and float
++#endif
+
+ call_it:
+ # Load the function pointer
+@@ -158,14 +162,23 @@ retfloat:
+ bne t2, FFI_TYPE_FLOAT, retdouble
+ jalr t9
+ REG_L t0, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp)
++#ifndef __mips_soft_float
+ s.s $f0, 0(t0)
++#else
++ REG_S v0, 0(t0)
++#endif
+ b epilogue
+
+ retdouble:
+ bne t2, FFI_TYPE_DOUBLE, noretval
+ jalr t9
+ REG_L t0, SIZEOF_FRAME + 4*FFI_SIZEOF_ARG($fp)
++#ifndef __mips_soft_float
+ s.d $f0, 0(t0)
++#else
++ REG_S v1, 4(t0)
++ REG_S v0, 0(t0)
++#endif
+ b epilogue
+
+ noretval:
+@@ -261,9 +274,11 @@ $LCFI7:
+ li $13, 1 # FFI_O32
+ bne $16, $13, 1f # Skip fp save if FFI_O32_SOFT_FLOAT
+
++#ifndef __mips_soft_float
+ # Store all possible float/double registers.
+ s.d $f12, FA_0_0_OFF2($fp)
+ s.d $f14, FA_1_0_OFF2($fp)
++#endif
+ 1:
+ # Call ffi_closure_mips_inner_O32 to do the work.
+ la t9, ffi_closure_mips_inner_O32
+@@ -281,6 +296,7 @@ $LCFI7:
+ li $13, 1 # FFI_O32
+ bne $16, $13, 1f # Skip fp restore if FFI_O32_SOFT_FLOAT
+
++#ifndef __mips_soft_float
+ li $9, FFI_TYPE_FLOAT
+ l.s $f0, V0_OFF2($fp)
+ beq $8, $9, closure_done
+@@ -288,6 +304,7 @@ $LCFI7:
+ li $9, FFI_TYPE_DOUBLE
+ l.d $f0, V0_OFF2($fp)
+ beq $8, $9, closure_done
++#endif
+ 1:
+ REG_L $3, V1_OFF2($fp)
+ REG_L $2, V0_OFF2($fp)
$(INSTALL_DATA) \
$(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc \
$(1)/usr/lib/pkgconfig/
- $(INSTALL_DIR) $(STAGING_DIR_HOST)/share/vala-0.30/vapi/
+ $(INSTALL_DIR) $(STAGING_DIR)/host/share/vala-0.30/vapi/
$(INSTALL_DATA) \
$(PKG_INSTALL_DIR)/usr/share/vala/vapi/* \
- $(STAGING_DIR_HOST)/share/vala-0.30/vapi
+ $(STAGING_DIR)/host/share/vala-0.30/vapi
endef
define Package/libgee/install
include $(TOPDIR)/rules.mk
PKG_NAME:=libimobiledevice
-PKG_VERSION:=1.2.0
-PKG_RELEASE:=2
+PKG_VERSION:=1.2.1
+PKG_RELEASE:=1
PKG_MAINTAINER:=Lukasz Baj <l.baj@radytek.com>
PKG_LICENSE:=LGPL-2.1+
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/libimobiledevice/libimobiledevice.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=53eb963f8e6d607cca6b50381c10820a5e8357f4
+PKG_SOURCE_VERSION:=df1f5c4d70d0c19ad40072f5246ca457e7f9849e
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_FIXUP:=autoreconf
include $(TOPDIR)/rules.mk
PKG_NAME:=libinput
-PKG_VERSION:=1.1.1
+PKG_VERSION:=1.2.3
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://www.freedesktop.org/software/libinput/
-PKG_MD5SUM:=4a3fc842ac0b7bf0fa306ea7badc31a0
+PKG_MD5SUM:=9f3d603942fefac8860e0fc828a3df99
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=COPYING
TARGET_CFLAGS+= -std=gnu99
+CONFIGURE_ARGS += --disable-libwacom --disable-tests --disable-documentation
+
define Package/libinput
SECTION:=libs
CATEGORY:=Libraries
TITLE:=a library to handle input devices
URL:=http://freedesktop.org/wiki/Software/libinput/
- DEPENDS:=+libevdev +mtdev +udev
+ DEPENDS:=+libevdev +mtdev +eudev
endef
define Package/libinput/description
endef
define Package/libinput/install
- $(INSTALL_DIR) $(1)/usr/lib/udev
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/udev/* $(1)/usr/lib/udev
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/{udev,*.so*} $(1)/usr/lib
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin
endef
$(eval $(call BuildPackage,libinput))
--- /dev/null
+--- a/src/evdev-tablet.c
++++ b/src/evdev-tablet.c
+@@ -1155,9 +1155,11 @@ static void
+ tablet_mark_all_axes_changed(struct tablet_dispatch *tablet,
+ struct libinput_tablet_tool *tool)
+ {
++#if 0
+ static_assert(sizeof(tablet->changed_axes) ==
+ sizeof(tool->axis_caps),
+ "Mismatching array sizes");
++#endif
+
+ memcpy(tablet->changed_axes,
+ tool->axis_caps,
include $(TOPDIR)/rules.mk
PKG_NAME:=libmicrohttpd
-PKG_VERSION:=0.9.44
+PKG_VERSION:=0.9.49
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@GNU/libmicrohttpd
-PKG_MD5SUM:=9101b5ebf8f71792938ae672da314da2
+PKG_MD5SUM:=3209aa2ac6199b874a6325342b86edbc
-PKG_MAINTAINER:=Martijn Zilverschoon <martijn@friedzombie.com>
+PKG_MAINTAINER:=Alexander Couzens <lynxis@fe80.eu>
PKG_LICENSE:=LGPL-2.1
PKG_LICENSE_FILES:=COPYING
CMAKE_OPTIONS=-DBUILDARCH=$(CONFIG_ARCH) \
-DENABLEEXAMPLES=0 \
- -DNODE_EXECUTABLE=$(STAGING_DIR_HOST)/bin/node \
- -DSWIG_DIR=$(STAGING_DIR_HOST)/bin
+ -DNODE_EXECUTABLE=$(STAGING_DIR)/host/bin/node \
+ -DSWIG_DIR=$(STAGING_DIR)/host/bin
TARGET_CFLAGS+=-I$(STAGING_DIR)/usr/include/node
+mraa_mtk_linkit_mmap_unsetup()
+{
+ if (mmap_reg == NULL) {
-+ syslog(LOG_ERR, "linkit mmap: null register cant unsetup");
++ syslog(LOG_ERR, "linkit mmap: null register can't unsetup");
+ return MRAA_ERROR_INVALID_RESOURCE;
+ }
+ munmap(mmap_reg, mmap_size);
PKG_NAME:=libplist
PKG_VERSION:=1.13
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_MAINTAINER:=Lukasz Baj <l.baj@radytek.com>
PKG_LICENSE:=LGPL-2.1+
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/libimobiledevice/libplist.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=cc907c0f162ee84e5698b9c27ac6fb0be8bb9bc0
+PKG_SOURCE_VERSION:=060eda6b1846968aa40b0d38dcf92ac46f933417
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_FIXUP:=autoreconf
include $(TOPDIR)/rules.mk
PKG_NAME:=libpng
-PKG_VERSION:=1.2.54
+PKG_VERSION:=1.2.56
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@SF/libpng
-PKG_MD5SUM:=bbb7a7264f1c7d9c444fd16bf6f89832
+PKG_MD5SUM:=868562bd1c58b76ed8703f135a2e439a
PKG_MAINTAINER:=Jo-Philipp Wich <jow@openwrt.org>
PKG_LICENSE:=Libpng GPL-2.0+ BSD-3-Clause
endef
define Host/Install
- $(INSTALL_DIR) $(STAGING_DIR_HOST)/bin
- $(INSTALL_BIN) $(HOST_BUILD_DIR)/lib/searpc-codegen.py $(STAGING_DIR_HOST)/bin/
+ $(INSTALL_DIR) $(STAGING_DIR)/host/bin
+ $(INSTALL_BIN) $(HOST_BUILD_DIR)/lib/searpc-codegen.py $(STAGING_DIR)/host/bin/
endef
$(eval $(call HostBuild))
#
-# Copyright (C) 2009-2015 OpenWrt.org
+# Copyright (C) 2009-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=libsodium
-PKG_VERSION:=1.0.6
+PKG_VERSION:=1.0.10
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://download.libsodium.org/libsodium/releases
-PKG_MD5SUM:=03e8e96cef9d18473aafef7d474a6e88
+PKG_MD5SUM:=ea89dcbbda0b2b6ff6a1c476231870dd
PKG_FIXUP:=libtool autoreconf
PKG_USE_MIPS16:=0
include $(TOPDIR)/rules.mk
PKG_NAME:=libsoup
-PKG_VERSION:=2.44.2
+PKG_VERSION:=2.53.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=@GNOME/$(PKG_NAME)/2.44
-PKG_MD5SUM:=92aa3667357157e8f3489bcca287f2fa
+PKG_SOURCE_URL:=@GNOME/$(PKG_NAME)/2.53
+PKG_MD5SUM:=dc23612d6365a0b8a6a650ffe0bdcb4c
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
--disable-glibtest \
--without-apache-httpd \
--without-gnome \
+ --enable-vala=no \
)
endef
#
-# Copyright (C) 2014 OpenWrt.org
+# Copyright (C) 2014-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PKG_NAME:=libsoxr
PKG_VERSION:=0.1.1
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=git://git.code.sf.net/p/soxr/code
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
+PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>, \
+ Mike Brady <mikebrady@eircom.net>
+
PKG_LICENSE:=LGPL-2.1
PKG_LICENSE_FILES:=LICENCE
PKG_REMOVE_FILES:=autogen.sh
PKG_BUILD_PARALLEL:=1
+PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
CATEGORY:=Libraries
TITLE:=The SoX Resampler library
URL:=http://sourceforge.net/projects/soxr/
- MAINTAINER:=Mike Brady <mikebrady@eircom.net>
DEPENDS:= +libpthread
endef
High quality, one-dimensional sample-rate conversion library
endef
-CMAKE_OPTIONS:= -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTS=0 -DBUILD_EXAMPLES=0
+CMAKE_OPTIONS:= -DBUILD_TESTS=0 -DBUILD_EXAMPLES=0
CMAKE_OPTIONS+= -DHAVE_WORDS_BIGENDIAN_EXITCODE=$(if $(CONFIG_BIG_ENDIAN),0,1)
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
- $(CP) $(PKG_BUILD_DIR)/src/soxr.h $(1)/usr/include/
- $(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_BUILD_DIR)/src/*.a $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/soxr.h $(1)/usr/include/
+ $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsoxr.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/soxr.pc $(1)/usr/lib/pkgconfig/
endef
define Package/libsoxr/install
$(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_BUILD_DIR)/src/*.a $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsoxr.so* $(1)/usr/lib/
endef
-
$(eval $(call BuildPackage,libsoxr))
include $(TOPDIR)/rules.mk
PKG_NAME:=libtasn1
-PKG_VERSION:=4.7
+PKG_VERSION:=4.8
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=ftp://ftp.gnu.org/gnu/libtasn1
-PKG_MD5SUM:=12d10ca4ae0a3b95f7aa06a076da39ec
+PKG_MD5SUM:=9a6767705725544f2b86670dcfb34107
#PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
define Package/libtorrent/description
LibTorrent is a BitTorrent library written in C++ for *nix, with a focus on
high performance and good code. The library differentiates itself from other
- implementations by transfering directly from file pages to the network stack.
+ implementations by transferring directly from file pages to the network stack.
On high-bandwidth connections it is able to seed at 3 times the speed of the
official client.
endef
#
-# Copyright (C) 2012-2015 OpenWrt.org
+# Copyright (C) 2012-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=libuecc
-PKG_VERSION:=6
+PKG_VERSION:=7
PKG_RELEASE:=1
PKG_MAINTAINER:=Matthias Schiffer <mschiffer@universe-factory.net>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=https://projects.universe-factory.net/attachments/download/83
-PKG_MD5SUM:=cba68339ff46482ec4090303de18fff4
+PKG_SOURCE_URL:=https://projects.universe-factory.net/attachments/download/85
+PKG_MD5SUM:=5cd543cb8e7bce83a22c07a0579c95a1
PKG_LICENSE:=BSD-2-Clause
PKG_LICENSE_FILES:=COPYRIGHT
th02 tm1637 tsl2561 ttp223 ublox6 uln200xa waterlevel wheelencoder wt5001 yg1006 zfm20
CMAKE_OPTIONS=-DBUILDARCH=$(CONFIG_ARCH) \
- -DNODE_EXECUTABLE=$(STAGING_DIR_HOST)/bin/node \
- -DSWIG_DIR=$(STAGING_DIR_HOST)/bin
+ -DNODE_EXECUTABLE=$(STAGING_DIR)/host/bin/node \
+ -DSWIG_DIR=$(STAGING_DIR)/host/bin
define Package/libupm/Default
SECTION:=libs
PKG_NAME:=libusbmuxd
PKG_VERSION:=1.1.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_MAINTAINER:=Lukasz Baj <l.baj@radytek.com>
PKG_LICENSE:=LGPL-2.1+
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/libimobiledevice/libusbmuxd.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=f347085157006523622b0a7160be68d14f037c00
+PKG_SOURCE_VERSION:=4397b3376dc4e4cb1c991d0aed61ce6482614196
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_FIXUP:=autoreconf
include $(TOPDIR)/rules.mk
PKG_NAME:=v4l-utils
-PKG_VERSION:=1.6.3
+PKG_VERSION:=1.10.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://www.linuxtv.org/downloads/v4l-utils
-PKG_MD5SUM:=307858616be6374f63bf946307f15a7f
+PKG_MD5SUM:=945a38979138997e805828a4a53e53ec
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
This package contains the video4linux utilities.
endef
-TARGET_CFLAGS += $(FPIC) -std=gnu99
+TARGET_CFLAGS += $(FPIC)
TARGET_LDFLAGS += -largp
CONFIGURE_ARGS+= \
+++ /dev/null
---- a/lib/libv4lconvert/control/libv4lcontrol.c
-+++ b/lib/libv4lconvert/control/libv4lcontrol.c
-@@ -570,7 +570,7 @@ static void v4lcontrol_get_flags_from_db
- struct v4lcontrol_data *v4lcontrol_create(int fd, void *dev_ops_priv,
- const struct libv4l_dev_ops *dev_ops, int always_needs_conversion)
- {
-- int shm_fd;
-+ int shm_fd, fdflags;
- int i, rc, got_usb_info, speed, init = 0;
- char *s, shm_name[256], pwd_buf[1024];
- struct v4l2_capability cap;
-@@ -695,33 +695,38 @@ struct v4lcontrol_data *v4lcontrol_creat
-
- if (getpwuid_r(geteuid(), &pwd, pwd_buf, sizeof(pwd_buf), &pwd_p) == 0) {
- if (got_usb_info)
-- snprintf(shm_name, 256, "/libv4l-%s:%s:%04x:%04x:%s", pwd.pw_name,
-+ snprintf(shm_name, 256, "/dev/shm/libv4l-%s:%s:%04x:%04x:%s", pwd.pw_name,
- cap.bus_info, (int)vendor_id, (int)product_id, cap.card);
- else
-- snprintf(shm_name, 256, "/libv4l-%s:%s:%s", pwd.pw_name,
-+ snprintf(shm_name, 256, "/dev/shm/libv4l-%s:%s:%s", pwd.pw_name,
- cap.bus_info, cap.card);
- } else {
- perror("libv4lcontrol: error getting username using uid instead");
- if (got_usb_info)
-- snprintf(shm_name, 256, "/libv4l-%lu:%s:%04x:%04x:%s",
-+ snprintf(shm_name, 256, "/dev/shm/libv4l-%lu:%s:%04x:%04x:%s",
- (unsigned long)geteuid(), cap.bus_info,
- (int)vendor_id, (int)product_id, cap.card);
- else
-- snprintf(shm_name, 256, "/libv4l-%lu:%s:%s", (unsigned long)geteuid(),
-+ snprintf(shm_name, 256, "/dev/shm/libv4l-%lu:%s:%s", (unsigned long)geteuid(),
- cap.bus_info, cap.card);
- }
-
- /* / is not allowed inside shm names */
-- for (i = 1; shm_name[i]; i++)
-+ for (i = 9; shm_name[i]; i++) /* start after "/dev/shm", i = 9 */
- if (shm_name[i] == '/')
- shm_name[i] = '-';
-
- /* Open the shared memory object identified by shm_name */
-- shm_fd = shm_open(shm_name, (O_CREAT | O_EXCL | O_RDWR), (S_IREAD | S_IWRITE));
-+ shm_fd = open(shm_name, (O_CREAT | O_EXCL | O_RDWR), (S_IREAD | S_IWRITE));
- if (shm_fd >= 0)
- init = 1;
- else
-- shm_fd = shm_open(shm_name, O_RDWR, (S_IREAD | S_IWRITE));
-+ shm_fd = open(shm_name, O_RDWR, (S_IREAD | S_IWRITE));
-+
-+ /* This is all uClibc > 0.9.30 seems to do for shm_open() in librt/shm.c */
-+ fdflags = fcntl(shm_fd, F_GETFD, 0);
-+ if (fdflags >= 0)
-+ fdflags = fcntl(fd, F_SETFD, fdflags | FD_CLOEXEC);
-
- if (shm_fd >= 0) {
- /* Set the shared memory size */
+++ /dev/null
---- a/configure.ac
-+++ b/configure.ac
-@@ -80,6 +80,20 @@ gl_VISIBILITY
- AC_CHECK_HEADERS([sys/klog.h])
- AC_CHECK_FUNCS([klogctl])
-
-+AC_CACHE_CHECK([for ioctl with POSIX signature],
-+ [gl_cv_func_ioctl_posix_signature],
-+ [AC_COMPILE_IFELSE(
-+ [AC_LANG_PROGRAM(
-+ [[#include <sys/ioctl.h>]],
-+ [[int ioctl (int, int, ...);]])
-+ ],
-+ [gl_cv_func_ioctl_posix_signature=yes],
-+ [gl_cv_func_ioctl_posix_signature=no])
-+ ])
-+if test "x$gl_cv_func_ioctl_posix_signature" = xyes; then
-+ AC_DEFINE([HAVE_POSIX_IOCTL], [1], [Have ioctl with POSIX signature])
-+fi
-+
- # Check host os
- case "$host_os" in
- linux*)
--- /dev/null
+--- a/utils/v4l2-ctl/v4l2-ctl-common.cpp
++++ b/utils/v4l2-ctl/v4l2-ctl-common.cpp
+@@ -671,15 +671,18 @@ static bool parse_subset(char *optarg)
+
+ static bool parse_next_subopt(char **subs, char **value)
+ {
+- static char *const subopts[] = {
+- NULL
+- };
+- int opt = getsubopt(subs, subopts, value);
++ char *stmp = *subs;
++ *value = NULL;
+
+- if (opt < 0 || *value)
++ if (*subs) {
++ *subs = strchr(stmp, ',');
++ if (*subs)
++ *(*subs)++ = 0;
++ else *subs = stmp + strlen(stmp);
++
++ *value = stmp;
+ return false;
+- fprintf(stderr, "No value given to suboption <%s>\n",
+- subopts[opt]);
++ }
+ return true;
+ }
+
+++ /dev/null
---- a/lib/libv4lconvert/libv4lsyscall-priv.h
-+++ b/lib/libv4lconvert/libv4lsyscall-priv.h
-@@ -35,18 +35,23 @@
- which is broken on some systems and doesn't include them itself :( */
-
- #ifdef linux
-+#define __NEED_off_t
- #include <sys/time.h>
- #include <syscall.h>
- #include <linux/types.h>
- #include <linux/ioctl.h>
- /* On 32 bits archs we always use mmap2, on 64 bits archs there is no mmap2 */
- #ifdef __NR_mmap2
-+#undef SYS_mmap2
- #define SYS_mmap2 __NR_mmap2
- #define MMAP2_PAGE_SHIFT 12
- #else
- #define SYS_mmap2 SYS_mmap
- #define MMAP2_PAGE_SHIFT 0
- #endif
-+#if !(defined(__UCLIBC__) || defined(__GLIBC__))
-+typedef off_t __off_t;
-+#endif
- #endif
-
- #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
---- a/lib/libv4l1/v4l1compat.c
-+++ b/lib/libv4l1/v4l1compat.c
-@@ -62,7 +62,7 @@ LIBV4L_PUBLIC int open(const char *file,
- return fd;
- }
-
--#ifdef linux
-+#if defined(linux) && (defined(__GLIBC__) || defined(__UCLIBC__))
- LIBV4L_PUBLIC int open64(const char *file, int oflag, ...)
- {
- int fd;
-@@ -94,7 +94,11 @@ LIBV4L_PUBLIC int dup(int fd)
- return v4l1_dup(fd);
- }
-
-+#ifdef HAVE_POSIX_IOCTL
-+LIBV4L_PUBLIC int ioctl(int fd, int request, ...)
-+#else
- LIBV4L_PUBLIC int ioctl(int fd, unsigned long int request, ...)
-+#endif
- {
- void *arg;
- va_list ap;
-@@ -112,12 +116,12 @@ LIBV4L_PUBLIC ssize_t read(int fd, void
- }
-
- LIBV4L_PUBLIC void *mmap(void *start, size_t length, int prot, int flags, int fd,
-- __off_t offset)
-+ off_t offset)
- {
- return v4l1_mmap(start, length, prot, flags, fd, offset);
- }
-
--#ifdef linux
-+#if defined(linux) && (defined(__GLIBC__) || defined(__UCLIBC__))
- LIBV4L_PUBLIC void *mmap64(void *start, size_t length, int prot, int flags, int fd,
- __off64_t offset)
- {
---- a/lib/libv4l2/v4l2convert.c
-+++ b/lib/libv4l2/v4l2convert.c
-@@ -86,7 +86,7 @@ LIBV4L_PUBLIC int open(const char *file,
- return fd;
- }
-
--#ifdef linux
-+#if defined(linux) && (defined(__GLIBC__) || defined(__UCLIBC__))
- LIBV4L_PUBLIC int open64(const char *file, int oflag, ...)
- {
- int fd;
-@@ -121,7 +121,11 @@ LIBV4L_PUBLIC int dup(int fd)
- return v4l2_dup(fd);
- }
-
-+#ifdef HAVE_POSIX_IOCTL
-+LIBV4L_PUBLIC int ioctl(int fd, int request, ...)
-+#else
- LIBV4L_PUBLIC int ioctl(int fd, unsigned long int request, ...)
-+#endif
- {
- void *arg;
- va_list ap;
-@@ -144,7 +148,7 @@ LIBV4L_PUBLIC void *mmap(void *start, si
- return v4l2_mmap(start, length, prot, flags, fd, offset);
- }
-
--#ifdef linux
-+#if defined(linux) && (defined(__GLIBC__) || defined(__UCLIBC__))
- LIBV4L_PUBLIC void *mmap64(void *start, size_t length, int prot, int flags, int fd,
- __off64_t offset)
- {
include $(TOPDIR)/rules.mk
PKG_NAME:=libvpx
-PKG_VERSION:=1.4.0
+PKG_VERSION:=1.5.0
PKG_RELEASE:=1
PKG_REV:=v$(PKG_VERSION)
TITLE:=libvpx
URL:=http://www.webmproject.org/
DEPENDS:=+libpthread
+ ABI_VERSION:=$(PKG_VERSION)
endef
define Package/libvpx/description
include $(TOPDIR)/rules.mk
PKG_NAME:=libwebsockets
-PKG_VERSION:=1.5-chrome47-firefox41
+PKG_VERSION:=1.7.5
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
-CMAKE_OPTIONS += $(if $(CONFIG_IPV6),,-DLWS_IPV6=)
-
+CMAKE_OPTIONS += -DLWS_IPV6=$(if $(CONFIG_IPV6),ON,OFF)
CMAKE_OPTIONS += -DLWS_WITHOUT_TESTAPPS=ON
# other options worth noting
# for cyassl, edit package/libs/cyassl/Makefile to include --enable-opensslextra
# NOTE: it will compile without it, untested whether it it's needed?!
CMAKE_OPTIONS += -DLWS_USE_CYASSL=ON
- CMAKE_OPTIONS += -DLWS_CYASSL_LIB=$(STAGING_DIR)/usr/lib/libcyassl.so
+ CMAKE_OPTIONS += -DLWS_CYASSL_LIBRARIES=$(STAGING_DIR)/usr/lib/libcyassl.so
CMAKE_OPTIONS += -DLWS_CYASSL_INCLUDE_DIRS=$(STAGING_DIR)/usr/include
endif
--- /dev/null
+#
+# Copyright (C) 2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=x264
+PKG_VERSION:=snapshot-20160416-2245-stable
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=https://download.videolan.org/x264/snapshots/
+PKG_MAINTAINER:=Adrian Panella <ianchi74@outlook.com>
+PKG_MD5SUM:=70953574692cb80232d2879b80a140e0
+
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=COPYING
+
+PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+TARGET_CFLAGS:=-Wno-maybe-uninitialized -Wshadow -Wall -std=gnu99 -fPIC -O3 -ffast-math -I.
+MAKE_FLAGS+= LD="$(TARGET_CC) -o"
+
+CONFIGURE_ARGS += \
+ --enable-shared \
+ --enable-pic \
+ --disable-cli
+
+ifeq ($(CONFIG_SOFT_FLOAT),y)
+CONFIGURE_ARGS += --disable-asm
+endif
+
+define Package/libx264
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=H264/AVC free codec library.
+ DEPENDS:=@BUILD_PATENTED
+ URL:=http://www.videolan.org/developers/x264.html
+endef
+
+define Package/libx264/description
+ x264 is a free software library for encoding
+ video streams into the H.264/MPEG-4 AVC compression format.
+endef
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include/x264/
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/
+ $(INSTALL_DIR) $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib/
+ $(INSTALL_DIR) $(1)/usr/lib/pkgconfig/
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/* $(1)/usr/lib/pkgconfig/
+endef
+
+define Package/libx264/install
+ $(INSTALL_DIR) $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,libx264))
#
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=libxerces-c
-PKG_VERSION:=3.1.2
+PKG_VERSION:=3.1.3
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_2
+PKG_SOURCE_VERSION:=Xerces-C_3_1_3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libxml2.so* $(1)/usr/lib/
endef
+define Host/Install
+ $(SED) 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' $(HOST_BUILD_DIR)/xml2-config
+ $(call Host/Install/Default)
+endef
+
$(eval $(call HostBuild))
$(eval $(call BuildPackage,libxml2))
SECTION:=libs
CATEGORY:=Libraries
DEPENDS:=+libxslt
- TITLE:=Gnome XSLT library Extention
+ TITLE:=Gnome XSLT library Extension
URL:=http://xmlsoft.org/XSLT/EXSLT/
endef
endef
define Host/Install
- $(INSTALL_DIR) $(STAGING_DIR_HOST)/bin
- $(CP) $(HOST_BUILD_DIR)/tools/bin/filterh $(STAGING_DIR_HOST)/bin/
+ $(INSTALL_DIR) $(STAGING_DIR)/host/bin
+ $(CP) $(HOST_BUILD_DIR)/tools/bin/filterh $(STAGING_DIR)/host/bin/
endef
$(eval $(call HostBuild))
RE2C = @RE2C@
RE2CFLAGS = -b
-FILTERH = ./tools/bin/filterh
-+FILTERH = $(STAGING_DIR_HOST)/bin/filterh
++FILTERH = $(STAGING_DIR)/host/bin/filterh
AM_CPPFLAGS = $(CPPFLAGS) $(DBCPPFLAGS)
AM_CPPFLAGS += -Isrc -Isrc/util -Isrc/net -Isrc/db -Isrc/exceptions
#
# Copyright (C) 2013-2014 wrtnode.com
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=opencv
-PKG_VERSION:=3.0.0
+PKG_VERSION:=3.1.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).zip
PKG_SOURCE_URL:=http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/$(PKG_VERSION)/
-PKG_MD5SUM:=09004c275d8092cbdf5b61675cecd399
+PKG_MD5SUM:=6082ee2124d4066581a7386972bfd52a
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE
include $(TOPDIR)/rules.mk
PKG_NAME:=openldap
-PKG_VERSION:=2.4.41
+PKG_VERSION:=2.4.43
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
ftp://sunsite.cnlab-switch.ch/mirror/OpenLDAP/openldap-release/ \
ftp://ftp.nl.uu.net/pub/unix/db/openldap/openldap-release/ \
ftp://ftp.plig.org/pub/OpenLDAP/openldap-release/
-PKG_MD5SUM:=3f1a4cea52827e18feaedfdc1634b5d0
+PKG_MD5SUM:=49ca65e27891fcf977d78c10f073c705
PKG_FIXUP:=autoreconf
include $(TOPDIR)/rules.mk
PKG_NAME:=pcre
-PKG_VERSION:=8.37
+PKG_VERSION:=8.38
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=@SF/pcre
-PKG_MD5SUM:=ed91be292cb01d21bc7e526816c26981
+PKG_SOURCE_URL:=ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
+PKG_MD5SUM:=00aabbfe56d5a48b270f999b508c5ad2
PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
PKG_LICENSE:=BSD-3-Clause
--- /dev/null
+Submitted By: Ken Moffat <ken at linuxfromscratch dot org>
+Date: 2016-03-16
+Initial Package Version: 8.38
+Upstream Status: Applied
+Origin: Upstream, backported to 8.38 by Petr Písař at redhat
+Description: Various fixes, including for CVE-2016-1263 and many other
+bugs which have been fixed upstream. Many of these bugs were found by
+fuzzing, upstream is trying to persuade its users to move to pcre2 and
+giving low priority to further pcre1 maintenance releases.
+
+From 3c80e02cd464ea049e117b423fd48fab294c51a9 Mon Sep 17 00:00:00 2001
+From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
+Date: Thu, 26 Nov 2015 20:29:13 +0000
+Subject: [PATCH] Fix auto-callout (?# comment bug.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1611 2f5784b3-3f2a-0410-8824-cb99058d5e15
+
+Petr Pisar: Ported to 8.38.
+
+diff --git a/pcre_compile.c b/pcre_compile.c
+index 4d3b313..3360a8b 100644
+--- a/pcre_compile.c
++++ b/pcre_compile.c
+@@ -4699,6 +4699,23 @@ for (;; ptr++)
+ }
+ }
+
++ /* Skip over (?# comments. We need to do this here because we want to know if
++ the next thing is a quantifier, and these comments may come between an item
++ and its quantifier. */
++
++ if (c == CHAR_LEFT_PARENTHESIS && ptr[1] == CHAR_QUESTION_MARK &&
++ ptr[2] == CHAR_NUMBER_SIGN)
++ {
++ ptr += 3;
++ while (*ptr != CHAR_NULL && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++;
++ if (*ptr == CHAR_NULL)
++ {
++ *errorcodeptr = ERR18;
++ goto FAILED;
++ }
++ continue;
++ }
++
+ /* See if the next thing is a quantifier. */
+
+ is_quantifier =
+@@ -6529,21 +6546,6 @@ for (;; ptr++)
+ case CHAR_LEFT_PARENTHESIS:
+ ptr++;
+
+- /* First deal with comments. Putting this code right at the start ensures
+- that comments have no bad side effects. */
+-
+- if (ptr[0] == CHAR_QUESTION_MARK && ptr[1] == CHAR_NUMBER_SIGN)
+- {
+- ptr += 2;
+- while (*ptr != CHAR_NULL && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++;
+- if (*ptr == CHAR_NULL)
+- {
+- *errorcodeptr = ERR18;
+- goto FAILED;
+- }
+- continue;
+- }
+-
+ /* Now deal with various "verbs" that can be introduced by '*'. */
+
+ if (ptr[0] == CHAR_ASTERISK && (ptr[1] == ':'
+diff --git a/testdata/testinput2 b/testdata/testinput2
+index e2e520f..92e3359 100644
+--- a/testdata/testinput2
++++ b/testdata/testinput2
+@@ -4217,4 +4217,12 @@ backtracking verbs. --/
+
+ /a[[:punct:]b]/BZ
+
++/L(?#(|++<!(2)?/BZ
++
++/L(?#(|++<!(2)?/BOZ
++
++/L(?#(|++<!(2)?/BCZ
++
++/L(?#(|++<!(2)?/BCOZ
++
+ /-- End of testinput2 --/
+diff --git a/testdata/testinput7 b/testdata/testinput7
+index e411a4b..00b9738 100644
+--- a/testdata/testinput7
++++ b/testdata/testinput7
+@@ -853,4 +853,8 @@ of case for anything other than the ASCII letters. --/
+
+ /a[b[:punct:]]/8WBZ
+
++/L(?#(|++<!(2)?/B8COZ
++
++/L(?#(|++<!(2)?/B8WCZ
++
+ /-- End of testinput7 --/
+diff --git a/testdata/testoutput2 b/testdata/testoutput2
+index 85c565d..2cf7a90 100644
+--- a/testdata/testoutput2
++++ b/testdata/testoutput2
+@@ -14574,4 +14574,40 @@ No match
+ End
+ ------------------------------------------------------------------
+
++/L(?#(|++<!(2)?/BZ
++------------------------------------------------------------------
++ Bra
++ L?+
++ Ket
++ End
++------------------------------------------------------------------
++
++/L(?#(|++<!(2)?/BOZ
++------------------------------------------------------------------
++ Bra
++ L?
++ Ket
++ End
++------------------------------------------------------------------
++
++/L(?#(|++<!(2)?/BCZ
++------------------------------------------------------------------
++ Bra
++ Callout 255 0 14
++ L?+
++ Callout 255 14 0
++ Ket
++ End
++------------------------------------------------------------------
++
++/L(?#(|++<!(2)?/BCOZ
++------------------------------------------------------------------
++ Bra
++ Callout 255 0 14
++ L?
++ Callout 255 14 0
++ Ket
++ End
++------------------------------------------------------------------
++
+ /-- End of testinput2 --/
+diff --git a/testdata/testoutput7 b/testdata/testoutput7
+index cc9ebdd..fdfff64 100644
+--- a/testdata/testoutput7
++++ b/testdata/testoutput7
+@@ -2348,4 +2348,24 @@ No match
+ End
+ ------------------------------------------------------------------
+
++/L(?#(|++<!(2)?/B8COZ
++------------------------------------------------------------------
++ Bra
++ Callout 255 0 14
++ L?
++ Callout 255 14 0
++ Ket
++ End
++------------------------------------------------------------------
++
++/L(?#(|++<!(2)?/B8WCZ
++------------------------------------------------------------------
++ Bra
++ Callout 255 0 14
++ L?+
++ Callout 255 14 0
++ Ket
++ End
++------------------------------------------------------------------
++
+ /-- End of testinput7 --/
+--
+2.4.3
+
+From ef6b10fcde41a2687f38d4a9ff2886b037948a1b Mon Sep 17 00:00:00 2001
+From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
+Date: Fri, 27 Nov 2015 17:13:13 +0000
+Subject: [PATCH 1/5] Fix negated POSIX class within negated overall class UCP
+ bug.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1612 2f5784b3-3f2a-0410-8824-cb99058d5e15
+
+Petr Písař: Ported to 8.38.
+diff --git a/pcre_compile.c b/pcre_compile.c
+index 3360a8b..3670f1e 100644
+--- a/pcre_compile.c
++++ b/pcre_compile.c
+@@ -5063,20 +5063,22 @@ for (;; ptr++)
+ ptr = tempptr + 1;
+ continue;
+
+- /* For the other POSIX classes (ascii, xdigit) we are going to fall
+- through to the non-UCP case and build a bit map for characters with
+- code points less than 256. If we are in a negated POSIX class
+- within a non-negated overall class, characters with code points
+- greater than 255 must all match. In the special case where we have
+- not yet generated any xclass data, and this is the final item in
+- the overall class, we need do nothing: later on, the opcode
++ /* For the other POSIX classes (ascii, cntrl, xdigit) we are going
++ to fall through to the non-UCP case and build a bit map for
++ characters with code points less than 256. If we are in a negated
++ POSIX class, characters with code points greater than 255 must
++ either all match or all not match. In the special case where we
++ have not yet generated any xclass data, and this is the final item
++ in the overall class, we need do nothing: later on, the opcode
+ OP_NCLASS will be used to indicate that characters greater than 255
+ are acceptable. If we have already seen an xclass item or one may
+ follow (we have to assume that it might if this is not the end of
+- the class), explicitly match all wide codepoints. */
++ the class), explicitly list all wide codepoints, which will then
++ either not match or match, depending on whether the class is or is
++ not negated. */
+
+ default:
+- if (!negate_class && local_negate &&
++ if (local_negate &&
+ (xclass || tempptr[2] != CHAR_RIGHT_SQUARE_BRACKET))
+ {
+ *class_uchardata++ = XCL_RANGE;
+diff --git a/testdata/testinput6 b/testdata/testinput6
+index aeb62a0..a178d3d 100644
+--- a/testdata/testinput6
++++ b/testdata/testinput6
+@@ -1553,4 +1553,13 @@
+ \x{200}
+ \x{37e}
+
++/[^[:^ascii:]\d]/8W
++ a
++ ~
++ 0
++ \a
++ \x{7f}
++ \x{389}
++ \x{20ac}
++
+ /-- End of testinput6 --/
+diff --git a/testdata/testoutput6 b/testdata/testoutput6
+index beb85aa..b64dc0d 100644
+--- a/testdata/testoutput6
++++ b/testdata/testoutput6
+@@ -2557,4 +2557,20 @@ No match
+ \x{37e}
+ 0: \x{37e}
+
++/[^[:^ascii:]\d]/8W
++ a
++ 0: a
++ ~
++ 0: ~
++ 0
++No match
++ \a
++ 0: \x{07}
++ \x{7f}
++ 0: \x{7f}
++ \x{389}
++No match
++ \x{20ac}
++No match
++
+ /-- End of testinput6 --/
+--
+2.4.3
+
+From bfc1dfa660c24dc7a75108d934290e50d7db2719 Mon Sep 17 00:00:00 2001
+From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
+Date: Fri, 27 Nov 2015 17:41:04 +0000
+Subject: [PATCH 2/5] Fix bug for isolated \E between an item and its qualifier
+ when auto callout is set.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1613 2f5784b3-3f2a-0410-8824-cb99058d5e15
+
+Petr Písař: Ported to 8.38.
+
+diff --git a/pcre_compile.c b/pcre_compile.c
+index 3670f1e..5786cd3 100644
+--- a/pcre_compile.c
++++ b/pcre_compile.c
+@@ -4645,9 +4645,10 @@ for (;; ptr++)
+ goto FAILED;
+ }
+
+- /* If in \Q...\E, check for the end; if not, we have a literal */
++ /* If in \Q...\E, check for the end; if not, we have a literal. Otherwise an
++ isolated \E is ignored. */
+
+- if (inescq && c != CHAR_NULL)
++ if (c != CHAR_NULL)
+ {
+ if (c == CHAR_BACKSLASH && ptr[1] == CHAR_E)
+ {
+@@ -4655,7 +4656,7 @@ for (;; ptr++)
+ ptr++;
+ continue;
+ }
+- else
++ else if (inescq)
+ {
+ if (previous_callout != NULL)
+ {
+@@ -4670,7 +4671,6 @@ for (;; ptr++)
+ }
+ goto NORMAL_CHAR;
+ }
+- /* Control does not reach here. */
+ }
+
+ /* In extended mode, skip white space and comments. We need a loop in order
+diff --git a/testdata/testinput2 b/testdata/testinput2
+index 92e3359..e8ca4fe 100644
+--- a/testdata/testinput2
++++ b/testdata/testinput2
+@@ -4225,4 +4225,6 @@ backtracking verbs. --/
+
+ /L(?#(|++<!(2)?/BCOZ
+
++/(A*)\E+/CBZ
++
+ /-- End of testinput2 --/
+diff --git a/testdata/testoutput2 b/testdata/testoutput2
+index 2cf7a90..09756b8 100644
+--- a/testdata/testoutput2
++++ b/testdata/testoutput2
+@@ -14610,4 +14610,18 @@ No match
+ End
+ ------------------------------------------------------------------
+
++/(A*)\E+/CBZ
++------------------------------------------------------------------
++ Bra
++ Callout 255 0 7
++ SCBra 1
++ Callout 255 1 2
++ A*
++ Callout 255 3 0
++ KetRmax
++ Callout 255 7 0
++ Ket
++ End
++------------------------------------------------------------------
++
+ /-- End of testinput2 --/
+--
+2.4.3
+
+From 108377b836fc29a84f5286287629d96549b1c777 Mon Sep 17 00:00:00 2001
+From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
+Date: Sun, 29 Nov 2015 17:38:25 +0000
+Subject: [PATCH 3/5] Give error for regexec with pmatch=NULL and REG_STARTEND
+ set.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1614 2f5784b3-3f2a-0410-8824-cb99058d5e15
+
+Petr Písař: Ported to 8.38.
+
+diff --git a/pcreposix.c b/pcreposix.c
+index f024423..dcc13ef 100644
+--- a/pcreposix.c
++++ b/pcreposix.c
+@@ -364,6 +364,7 @@ start location rather than being passed as a PCRE "starting offset". */
+
+ if ((eflags & REG_STARTEND) != 0)
+ {
++ if (pmatch == NULL) return REG_INVARG;
+ so = pmatch[0].rm_so;
+ eo = pmatch[0].rm_eo;
+ }
+--
+2.4.3
+
+From e347b40d5bb12f7ef1e632aa649571a107be7d8a Mon Sep 17 00:00:00 2001
+From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
+Date: Sun, 29 Nov 2015 17:46:23 +0000
+Subject: [PATCH 4/5] Allow for up to 32-bit numbers in the ordin() function in
+ pcregrep.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1615 2f5784b3-3f2a-0410-8824-cb99058d5e15
+
+Petr Písař: Ported to 8.38.
+
+diff --git a/pcregrep.c b/pcregrep.c
+index 64986b0..cd53c64 100644
+--- a/pcregrep.c
++++ b/pcregrep.c
+@@ -2437,7 +2437,7 @@ return options;
+ static char *
+ ordin(int n)
+ {
+-static char buffer[8];
++static char buffer[14];
+ char *p = buffer;
+ sprintf(p, "%d", n);
+ while (*p != 0) p++;
+--
+2.4.3
+
+From e78ad4264b16988b826bd2939a1781c1165a92d9 Mon Sep 17 00:00:00 2001
+From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
+Date: Mon, 30 Nov 2015 17:44:45 +0000
+Subject: [PATCH 5/5] Fix \Q\E before qualifier bug when auto callouts are
+ enabled.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1616 2f5784b3-3f2a-0410-8824-cb99058d5e15
+
+Petr Písař: Ported to 8.38.
+
+diff --git a/pcre_compile.c b/pcre_compile.c
+index 5786cd3..beed46b 100644
+--- a/pcre_compile.c
++++ b/pcre_compile.c
+@@ -4671,17 +4671,27 @@ for (;; ptr++)
+ }
+ goto NORMAL_CHAR;
+ }
++
++ /* Check for the start of a \Q...\E sequence. We must do this here rather
++ than later in case it is immediately followed by \E, which turns it into a
++ "do nothing" sequence. */
++
++ if (c == CHAR_BACKSLASH && ptr[1] == CHAR_Q)
++ {
++ inescq = TRUE;
++ ptr++;
++ continue;
++ }
+ }
+
+- /* In extended mode, skip white space and comments. We need a loop in order
+- to check for more white space and more comments after a comment. */
++ /* In extended mode, skip white space and comments. */
+
+ if ((options & PCRE_EXTENDED) != 0)
+ {
+- for (;;)
++ const pcre_uchar *wscptr = ptr;
++ while (MAX_255(c) && (cd->ctypes[c] & ctype_space) != 0) c = *(++ptr);
++ if (c == CHAR_NUMBER_SIGN)
+ {
+- while (MAX_255(c) && (cd->ctypes[c] & ctype_space) != 0) c = *(++ptr);
+- if (c != CHAR_NUMBER_SIGN) break;
+ ptr++;
+ while (*ptr != CHAR_NULL)
+ {
+@@ -4695,7 +4705,15 @@ for (;; ptr++)
+ if (utf) FORWARDCHAR(ptr);
+ #endif
+ }
+- c = *ptr; /* Either NULL or the char after a newline */
++ }
++
++ /* If we skipped any characters, restart the loop. Otherwise, we didn't see
++ a comment. */
++
++ if (ptr > wscptr)
++ {
++ ptr--;
++ continue;
+ }
+ }
+
+@@ -7900,16 +7918,6 @@ for (;; ptr++)
+ c = ec;
+ else
+ {
+- if (escape == ESC_Q) /* Handle start of quoted string */
+- {
+- if (ptr[1] == CHAR_BACKSLASH && ptr[2] == CHAR_E)
+- ptr += 2; /* avoid empty string */
+- else inescq = TRUE;
+- continue;
+- }
+-
+- if (escape == ESC_E) continue; /* Perl ignores an orphan \E */
+-
+ /* For metasequences that actually match a character, we disable the
+ setting of a first character if it hasn't already been set. */
+
+diff --git a/testdata/testinput2 b/testdata/testinput2
+index e8ca4fe..3a1134f 100644
+--- a/testdata/testinput2
++++ b/testdata/testinput2
+@@ -4227,4 +4227,6 @@ backtracking verbs. --/
+
+ /(A*)\E+/CBZ
+
++/()\Q\E*]/BCZ
++
+ /-- End of testinput2 --/
+diff --git a/testdata/testoutput2 b/testdata/testoutput2
+index 09756b8..ac33cc4 100644
+--- a/testdata/testoutput2
++++ b/testdata/testoutput2
+@@ -14624,4 +14624,19 @@ No match
+ End
+ ------------------------------------------------------------------
+
++/()\Q\E*]/BCZ
++------------------------------------------------------------------
++ Bra
++ Callout 255 0 7
++ Brazero
++ SCBra 1
++ Callout 255 1 0
++ KetRmax
++ Callout 255 7 1
++ ]
++ Callout 255 8 0
++ Ket
++ End
++------------------------------------------------------------------
++
+ /-- End of testinput2 --/
+--
+2.4.3
+
+From 46ed1a703b067e5b679eacf6500a54dae35f8130 Mon Sep 17 00:00:00 2001
+From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
+Date: Thu, 3 Dec 2015 17:05:40 +0000
+Subject: [PATCH] Fix /x bug when pattern starts with white space and (?-x)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1617 2f5784b3-3f2a-0410-8824-cb99058d5e15
+
+Petr Písař: Ported to 8.38.
+
+diff --git a/pcre_compile.c b/pcre_compile.c
+index beed46b..57719b9 100644
+--- a/pcre_compile.c
++++ b/pcre_compile.c
+@@ -7607,39 +7607,15 @@ for (;; ptr++)
+ newoptions = (options | set) & (~unset);
+
+ /* If the options ended with ')' this is not the start of a nested
+- group with option changes, so the options change at this level. If this
+- item is right at the start of the pattern, the options can be
+- abstracted and made external in the pre-compile phase, and ignored in
+- the compile phase. This can be helpful when matching -- for instance in
+- caseless checking of required bytes.
+-
+- If the code pointer is not (cd->start_code + 1 + LINK_SIZE), we are
+- definitely *not* at the start of the pattern because something has been
+- compiled. In the pre-compile phase, however, the code pointer can have
+- that value after the start, because it gets reset as code is discarded
+- during the pre-compile. However, this can happen only at top level - if
+- we are within parentheses, the starting BRA will still be present. At
+- any parenthesis level, the length value can be used to test if anything
+- has been compiled at that level. Thus, a test for both these conditions
+- is necessary to ensure we correctly detect the start of the pattern in
+- both phases.
+-
++ group with option changes, so the options change at this level.
+ If we are not at the pattern start, reset the greedy defaults and the
+ case value for firstchar and reqchar. */
+
+ if (*ptr == CHAR_RIGHT_PARENTHESIS)
+ {
+- if (code == cd->start_code + 1 + LINK_SIZE &&
+- (lengthptr == NULL || *lengthptr == 2 + 2*LINK_SIZE))
+- {
+- cd->external_options = newoptions;
+- }
+- else
+- {
+- greedy_default = ((newoptions & PCRE_UNGREEDY) != 0);
+- greedy_non_default = greedy_default ^ 1;
+- req_caseopt = ((newoptions & PCRE_CASELESS) != 0)? REQ_CASELESS:0;
+- }
++ greedy_default = ((newoptions & PCRE_UNGREEDY) != 0);
++ greedy_non_default = greedy_default ^ 1;
++ req_caseopt = ((newoptions & PCRE_CASELESS) != 0)? REQ_CASELESS:0;
+
+ /* Change options at this level, and pass them back for use
+ in subsequent branches. */
+diff --git a/testdata/testoutput2 b/testdata/testoutput2
+index ac33cc4..6c42897 100644
+--- a/testdata/testoutput2
++++ b/testdata/testoutput2
+@@ -419,7 +419,7 @@ Need char = '>'
+
+ /(?U)<.*>/I
+ Capturing subpattern count = 0
+-Options: ungreedy
++No options
+ First char = '<'
+ Need char = '>'
+ abc<def>ghi<klm>nop
+@@ -443,7 +443,7 @@ Need char = '='
+
+ /(?U)={3,}?/I
+ Capturing subpattern count = 0
+-Options: ungreedy
++No options
+ First char = '='
+ Need char = '='
+ abc========def
+@@ -477,7 +477,7 @@ Failed: lookbehind assertion is not fixed length at offset 12
+
+ /(?i)abc/I
+ Capturing subpattern count = 0
+-Options: caseless
++No options
+ First char = 'a' (caseless)
+ Need char = 'c' (caseless)
+
+@@ -489,7 +489,7 @@ No need char
+
+ /(?i)^1234/I
+ Capturing subpattern count = 0
+-Options: anchored caseless
++Options: anchored
+ No first char
+ No need char
+
+@@ -502,7 +502,7 @@ No need char
+ /(?s).*/I
+ Capturing subpattern count = 0
+ May match empty string
+-Options: anchored dotall
++Options: anchored
+ No first char
+ No need char
+
+@@ -516,7 +516,7 @@ Starting chars: a b c d
+
+ /(?i)[abcd]/IS
+ Capturing subpattern count = 0
+-Options: caseless
++No options
+ No first char
+ No need char
+ Subject length lower bound = 1
+@@ -524,7 +524,7 @@ Starting chars: A B C D a b c d
+
+ /(?m)[xy]|(b|c)/IS
+ Capturing subpattern count = 1
+-Options: multiline
++No options
+ No first char
+ No need char
+ Subject length lower bound = 1
+@@ -538,7 +538,7 @@ No need char
+
+ /(?i)(^a|^b)/Im
+ Capturing subpattern count = 1
+-Options: caseless multiline
++Options: multiline
+ First char at start or follows newline
+ No need char
+
+@@ -1179,7 +1179,7 @@ No need char
+ End
+ ------------------------------------------------------------------
+ Capturing subpattern count = 1
+-Options: anchored dotall
++Options: anchored
+ No first char
+ No need char
+
+@@ -2735,7 +2735,7 @@ No match
+ End
+ ------------------------------------------------------------------
+ Capturing subpattern count = 0
+-Options: caseless extended
++Options: extended
+ First char = 'a' (caseless)
+ Need char = 'c' (caseless)
+
+@@ -2748,7 +2748,7 @@ Need char = 'c' (caseless)
+ End
+ ------------------------------------------------------------------
+ Capturing subpattern count = 0
+-Options: caseless extended
++Options: extended
+ First char = 'a' (caseless)
+ Need char = 'c' (caseless)
+
+@@ -3095,7 +3095,7 @@ Need char = 'b'
+ End
+ ------------------------------------------------------------------
+ Capturing subpattern count = 0
+-Options: ungreedy
++No options
+ First char = 'x'
+ Need char = 'b'
+ xaaaab
+@@ -3497,7 +3497,7 @@ Need char = 'c'
+
+ /(?i)[ab]/IS
+ Capturing subpattern count = 0
+-Options: caseless
++No options
+ No first char
+ No need char
+ Subject length lower bound = 1
+@@ -6299,7 +6299,7 @@ Capturing subpattern count = 3
+ Named capturing subpatterns:
+ A 2
+ A 3
+-Options: anchored dupnames
++Options: anchored
+ Duplicate name status changes
+ No first char
+ No need char
+--
+2.4.3
+
+From db1fb68feddc9afe6f8822d099fa9ff25e3ea8e7 Mon Sep 17 00:00:00 2001
+From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
+Date: Sat, 5 Dec 2015 16:30:14 +0000
+Subject: [PATCH] Fix copy named substring bug.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1618 2f5784b3-3f2a-0410-8824-cb99058d5e15
+
+Petr Písař: Ported to 8.38.
+diff --git a/pcre_get.c b/pcre_get.c
+index 8094b34..41eda9c 100644
+--- a/pcre_get.c
++++ b/pcre_get.c
+@@ -250,6 +250,7 @@ Arguments:
+ code the compiled regex
+ stringname the name of the capturing substring
+ ovector the vector of matched substrings
++ stringcount number of captured substrings
+
+ Returns: the number of the first that is set,
+ or the number of the last one if none are set,
+@@ -258,13 +259,16 @@ Returns: the number of the first that is set,
+
+ #if defined COMPILE_PCRE8
+ static int
+-get_first_set(const pcre *code, const char *stringname, int *ovector)
++get_first_set(const pcre *code, const char *stringname, int *ovector,
++ int stringcount)
+ #elif defined COMPILE_PCRE16
+ static int
+-get_first_set(const pcre16 *code, PCRE_SPTR16 stringname, int *ovector)
++get_first_set(const pcre16 *code, PCRE_SPTR16 stringname, int *ovector,
++ int stringcount)
+ #elif defined COMPILE_PCRE32
+ static int
+-get_first_set(const pcre32 *code, PCRE_SPTR32 stringname, int *ovector)
++get_first_set(const pcre32 *code, PCRE_SPTR32 stringname, int *ovector,
++ int stringcount)
+ #endif
+ {
+ const REAL_PCRE *re = (const REAL_PCRE *)code;
+@@ -295,7 +299,7 @@ if (entrysize <= 0) return entrysize;
+ for (entry = (pcre_uchar *)first; entry <= (pcre_uchar *)last; entry += entrysize)
+ {
+ int n = GET2(entry, 0);
+- if (ovector[n*2] >= 0) return n;
++ if (n < stringcount && ovector[n*2] >= 0) return n;
+ }
+ return GET2(entry, 0);
+ }
+@@ -402,7 +406,7 @@ pcre32_copy_named_substring(const pcre32 *code, PCRE_SPTR32 subject,
+ PCRE_UCHAR32 *buffer, int size)
+ #endif
+ {
+-int n = get_first_set(code, stringname, ovector);
++int n = get_first_set(code, stringname, ovector, stringcount);
+ if (n <= 0) return n;
+ #if defined COMPILE_PCRE8
+ return pcre_copy_substring(subject, ovector, stringcount, n, buffer, size);
+@@ -619,7 +623,7 @@ pcre32_get_named_substring(const pcre32 *code, PCRE_SPTR32 subject,
+ PCRE_SPTR32 *stringptr)
+ #endif
+ {
+-int n = get_first_set(code, stringname, ovector);
++int n = get_first_set(code, stringname, ovector, stringcount);
+ if (n <= 0) return n;
+ #if defined COMPILE_PCRE8
+ return pcre_get_substring(subject, ovector, stringcount, n, stringptr);
+diff --git a/testdata/testinput2 b/testdata/testinput2
+index 3a1134f..00ffe32 100644
+--- a/testdata/testinput2
++++ b/testdata/testinput2
+@@ -4229,4 +4229,7 @@ backtracking verbs. --/
+
+ /()\Q\E*]/BCZ
+
++/(?<A>)(?J:(?<B>)(?<B>))(?<C>)/
++ \O\CC
++
+ /-- End of testinput2 --/
+diff --git a/testdata/testoutput2 b/testdata/testoutput2
+index 6c42897..ffb4466 100644
+--- a/testdata/testoutput2
++++ b/testdata/testoutput2
+@@ -14639,4 +14639,9 @@ No match
+ End
+ ------------------------------------------------------------------
+
++/(?<A>)(?J:(?<B>)(?<B>))(?<C>)/
++ \O\CC
++Matched, but too many substrings
++copy substring C failed -7
++
+ /-- End of testinput2 --/
+--
+2.4.3
+
+From 40363ebc19baeab160abaaa55dc84322a89ac35a Mon Sep 17 00:00:00 2001
+From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
+Date: Sat, 5 Dec 2015 16:58:46 +0000
+Subject: [PATCH] Fix (by hacking) another length computation issue.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1619 2f5784b3-3f2a-0410-8824-cb99058d5e15
+
+Petr Písař: Ported to 8.38.
+
+diff --git a/pcre_compile.c b/pcre_compile.c
+index 57719b9..087bf2a 100644
+--- a/pcre_compile.c
++++ b/pcre_compile.c
+@@ -7280,7 +7280,7 @@ for (;; ptr++)
+ issue is fixed "properly" in PCRE2. As PCRE1 is now in maintenance
+ only mode, we finesse the bug by allowing more memory always. */
+
+- *lengthptr += 2 + 2*LINK_SIZE;
++ *lengthptr += 4 + 4*LINK_SIZE;
+
+ /* It is even worse than that. The current reference may be to an
+ existing named group with a different number (so apparently not
+diff --git a/testdata/testoutput11-16 b/testdata/testoutput11-16
+index 9a0a12d..280692e 100644
+--- a/testdata/testoutput11-16
++++ b/testdata/testoutput11-16
+@@ -231,7 +231,7 @@ Memory allocation (code space): 73
+ ------------------------------------------------------------------
+
+ /(?P<a>a)...(?P=a)bbb(?P>a)d/BM
+-Memory allocation (code space): 77
++Memory allocation (code space): 93
+ ------------------------------------------------------------------
+ 0 24 Bra
+ 2 5 CBra 1
+diff --git a/testdata/testoutput11-32 b/testdata/testoutput11-32
+index 57e5da0..cdbda74 100644
+--- a/testdata/testoutput11-32
++++ b/testdata/testoutput11-32
+@@ -231,7 +231,7 @@ Memory allocation (code space): 155
+ ------------------------------------------------------------------
+
+ /(?P<a>a)...(?P=a)bbb(?P>a)d/BM
+-Memory allocation (code space): 157
++Memory allocation (code space): 189
+ ------------------------------------------------------------------
+ 0 24 Bra
+ 2 5 CBra 1
+diff --git a/testdata/testoutput11-8 b/testdata/testoutput11-8
+index 748548a..cb37896 100644
+--- a/testdata/testoutput11-8
++++ b/testdata/testoutput11-8
+@@ -231,7 +231,7 @@ Memory allocation (code space): 45
+ ------------------------------------------------------------------
+
+ /(?P<a>a)...(?P=a)bbb(?P>a)d/BM
+-Memory allocation (code space): 50
++Memory allocation (code space): 62
+ ------------------------------------------------------------------
+ 0 30 Bra
+ 3 7 CBra 1
+--
+2.4.3
+
+From 4f47274a2eb10131d88145ad7fd0eed4027a0c51 Mon Sep 17 00:00:00 2001
+From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
+Date: Tue, 8 Dec 2015 11:06:40 +0000
+Subject: [PATCH] Fix get_substring_list() bug when \K is used in an assertion.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1620 2f5784b3-3f2a-0410-8824-cb99058d5e15
+
+Petr Písař: ported to 8.38.
+
+diff --git a/pcre_get.c b/pcre_get.c
+index 41eda9c..cdd2abc 100644
+--- a/pcre_get.c
++++ b/pcre_get.c
+@@ -461,7 +461,10 @@ pcre_uchar **stringlist;
+ pcre_uchar *p;
+
+ for (i = 0; i < double_count; i += 2)
+- size += sizeof(pcre_uchar *) + IN_UCHARS(ovector[i+1] - ovector[i] + 1);
++ {
++ size += sizeof(pcre_uchar *) + IN_UCHARS(1);
++ if (ovector[i+1] > ovector[i]) size += IN_UCHARS(ovector[i+1] - ovector[i]);
++ }
+
+ stringlist = (pcre_uchar **)(PUBL(malloc))(size);
+ if (stringlist == NULL) return PCRE_ERROR_NOMEMORY;
+@@ -477,7 +480,7 @@ p = (pcre_uchar *)(stringlist + stringcount + 1);
+
+ for (i = 0; i < double_count; i += 2)
+ {
+- int len = ovector[i+1] - ovector[i];
++ int len = (ovector[i+1] > ovector[i])? (ovector[i+1] - ovector[i]) : 0;
+ memcpy(p, subject + ovector[i], IN_UCHARS(len));
+ *stringlist++ = p;
+ p += len;
+diff --git a/testdata/testinput2 b/testdata/testinput2
+index 00ffe32..967a241 100644
+--- a/testdata/testinput2
++++ b/testdata/testinput2
+@@ -4232,4 +4232,7 @@ backtracking verbs. --/
+ /(?<A>)(?J:(?<B>)(?<B>))(?<C>)/
+ \O\CC
+
++/(?=a\K)/
++ ring bpattingbobnd $ 1,oern cou \rb\L
++
+ /-- End of testinput2 --/
+diff --git a/testdata/testoutput2 b/testdata/testoutput2
+index ffb4466..5fb28d5 100644
+--- a/testdata/testoutput2
++++ b/testdata/testoutput2
+@@ -14644,4 +14644,10 @@ No match
+ Matched, but too many substrings
+ copy substring C failed -7
+
++/(?=a\K)/
++ ring bpattingbobnd $ 1,oern cou \rb\L
++Start of matched string is beyond its end - displaying from end to start.
++ 0: a
++ 0L
++
+ /-- End of testinput2 --/
+--
+2.5.0
+
+From 3da5528b47b88c32224cf9d14d8a4e80cd7a0815 Mon Sep 17 00:00:00 2001
+From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
+Date: Sat, 6 Feb 2016 16:54:14 +0000
+Subject: [PATCH] Fix pcretest bad behaviour for callout in lookbehind.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1625 2f5784b3-3f2a-0410-8824-cb99058d5e15
+
+Petr Písař: Ported to 8.38.
+
+diff --git a/pcretest.c b/pcretest.c
+index 488e419..63869fd 100644
+--- a/pcretest.c
++++ b/pcretest.c
+@@ -2250,7 +2250,7 @@ data is not zero. */
+ static int callout(pcre_callout_block *cb)
+ {
+ FILE *f = (first_callout | callout_extra)? outfile : NULL;
+-int i, pre_start, post_start, subject_length;
++int i, current_position, pre_start, post_start, subject_length;
+
+ if (callout_extra)
+ {
+@@ -2280,14 +2280,19 @@ printed lengths of the substrings. */
+
+ if (f != NULL) fprintf(f, "--->");
+
++/* If a lookbehind is involved, the current position may be earlier than the
++match start. If so, use the match start instead. */
++
++current_position = (cb->current_position >= cb->start_match)?
++ cb->current_position : cb->start_match;
++
+ PCHARS(pre_start, cb->subject, 0, cb->start_match, f);
+ PCHARS(post_start, cb->subject, cb->start_match,
+- cb->current_position - cb->start_match, f);
++ current_position - cb->start_match, f);
+
+ PCHARS(subject_length, cb->subject, 0, cb->subject_length, NULL);
+
+-PCHARSV(cb->subject, cb->current_position,
+- cb->subject_length - cb->current_position, f);
++PCHARSV(cb->subject, current_position, cb->subject_length - current_position, f);
+
+ if (f != NULL) fprintf(f, "\n");
+
+@@ -5740,3 +5745,4 @@ return yield;
+ }
+
+ /* End of pcretest.c */
++
+diff --git a/testdata/testinput2 b/testdata/testinput2
+index 967a241..086e0f4 100644
+--- a/testdata/testinput2
++++ b/testdata/testinput2
+@@ -4235,4 +4235,8 @@ backtracking verbs. --/
+ /(?=a\K)/
+ ring bpattingbobnd $ 1,oern cou \rb\L
+
++/(?<=((?C)0))/
++ 9010
++ abcd
++
+ /-- End of testinput2 --/
+diff --git a/testdata/testoutput2 b/testdata/testoutput2
+index 5fb28d5..d414a72 100644
+--- a/testdata/testoutput2
++++ b/testdata/testoutput2
+@@ -14650,4 +14650,19 @@ Start of matched string is beyond its end - displaying from end to start.
+ 0: a
+ 0L
+
++/(?<=((?C)0))/
++ 9010
++--->9010
++ 0 ^ 0
++ 0 ^ 0
++ 0:
++ 1: 0
++ abcd
++--->abcd
++ 0 ^ 0
++ 0 ^ 0
++ 0 ^ 0
++ 0 ^ 0
++No match
++
+ /-- End of testinput2 --/
+--
+2.5.0
+
+From 943a5105b9fe2842851003f692c7077a6cdbeefe Mon Sep 17 00:00:00 2001
+From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
+Date: Wed, 10 Feb 2016 19:13:17 +0000
+Subject: [PATCH] Fix workspace overflow for (*ACCEPT) with deeply nested
+ parentheses.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1631 2f5784b3-3f2a-0410-8824-cb99058d5e15
+
+Petr Písař: Ported to 8.38.
+
+diff --git a/pcre_compile.c b/pcre_compile.c
+index b9a239e..5019854 100644
+--- a/pcre_compile.c
++++ b/pcre_compile.c
+@@ -6,7 +6,7 @@
+ and semantics are as close as possible to those of the Perl 5 language.
+
+ Written by Philip Hazel
+- Copyright (c) 1997-2014 University of Cambridge
++ Copyright (c) 1997-2016 University of Cambridge
+
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+@@ -560,6 +560,7 @@ static const char error_texts[] =
+ /* 85 */
+ "parentheses are too deeply nested (stack check)\0"
+ "digits missing in \\x{} or \\o{}\0"
++ "regular expression is too complicated\0"
+ ;
+
+ /* Table to identify digits and hex digits. This is used when compiling
+@@ -4591,7 +4592,8 @@ for (;; ptr++)
+ if (code > cd->start_workspace + cd->workspace_size -
+ WORK_SIZE_SAFETY_MARGIN) /* Check for overrun */
+ {
+- *errorcodeptr = ERR52;
++ *errorcodeptr = (code >= cd->start_workspace + cd->workspace_size)?
++ ERR52 : ERR87;
+ goto FAILED;
+ }
+
+@@ -6626,8 +6628,21 @@ for (;; ptr++)
+ cd->had_accept = TRUE;
+ for (oc = cd->open_caps; oc != NULL; oc = oc->next)
+ {
+- *code++ = OP_CLOSE;
+- PUT2INC(code, 0, oc->number);
++ if (lengthptr != NULL)
++ {
++#ifdef COMPILE_PCRE8
++ *lengthptr += 1 + IMM2_SIZE;
++#elif defined COMPILE_PCRE16
++ *lengthptr += 2 + IMM2_SIZE;
++#elif defined COMPILE_PCRE32
++ *lengthptr += 4 + IMM2_SIZE;
++#endif
++ }
++ else
++ {
++ *code++ = OP_CLOSE;
++ PUT2INC(code, 0, oc->number);
++ }
+ }
+ setverb = *code++ =
+ (cd->assert_depth > 0)? OP_ASSERT_ACCEPT : OP_ACCEPT;
+diff --git a/pcre_internal.h b/pcre_internal.h
+index f7a5ee7..dbfe80e 100644
+--- a/pcre_internal.h
++++ b/pcre_internal.h
+@@ -7,7 +7,7 @@
+ and semantics are as close as possible to those of the Perl 5 language.
+
+ Written by Philip Hazel
+- Copyright (c) 1997-2014 University of Cambridge
++ Copyright (c) 1997-2016 University of Cambridge
+
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+@@ -2289,7 +2289,7 @@ enum { ERR0, ERR1, ERR2, ERR3, ERR4, ERR5, ERR6, ERR7, ERR8, ERR9,
+ ERR50, ERR51, ERR52, ERR53, ERR54, ERR55, ERR56, ERR57, ERR58, ERR59,
+ ERR60, ERR61, ERR62, ERR63, ERR64, ERR65, ERR66, ERR67, ERR68, ERR69,
+ ERR70, ERR71, ERR72, ERR73, ERR74, ERR75, ERR76, ERR77, ERR78, ERR79,
+- ERR80, ERR81, ERR82, ERR83, ERR84, ERR85, ERR86, ERRCOUNT };
++ ERR80, ERR81, ERR82, ERR83, ERR84, ERR85, ERR86, ERR87, ERRCOUNT };
+
+ /* JIT compiling modes. The function list is indexed by them. */
+
+diff --git a/pcreposix.c b/pcreposix.c
+index dcc13ef..55b6ddc 100644
+--- a/pcreposix.c
++++ b/pcreposix.c
+@@ -6,7 +6,7 @@
+ and semantics are as close as possible to those of the Perl 5 language.
+
+ Written by Philip Hazel
+- Copyright (c) 1997-2014 University of Cambridge
++ Copyright (c) 1997-2016 University of Cambridge
+
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+@@ -173,7 +173,8 @@ static const int eint[] = {
+ REG_BADPAT, /* group name must start with a non-digit */
+ /* 85 */
+ REG_BADPAT, /* parentheses too deeply nested (stack check) */
+- REG_BADPAT /* missing digits in \x{} or \o{} */
++ REG_BADPAT, /* missing digits in \x{} or \o{} */
++ REG_BADPAT /* pattern too complicated */
+ };
+
+ /* Table of texts corresponding to POSIX error codes */
+diff --git a/testdata/testinput11 b/testdata/testinput11
+index ac9d228..6f0989a 100644
+--- a/testdata/testinput11
++++ b/testdata/testinput11
+@@ -138,4 +138,6 @@ is required for these tests. --/
+
+ /.((?2)(?R)\1)()/B
+
++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
++
+ /-- End of testinput11 --/
+diff --git a/testdata/testoutput11-16 b/testdata/testoutput11-16
+index 280692e..3c485da 100644
+--- a/testdata/testoutput11-16
++++ b/testdata/testoutput11-16
+@@ -765,4 +765,7 @@ Memory allocation (code space): 14
+ 25 End
+ ------------------------------------------------------------------
+
++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
++Failed: regular expression is too complicated at offset 490
++
+ /-- End of testinput11 --/
+diff --git a/testdata/testoutput11-32 b/testdata/testoutput11-32
+index cdbda74..e19518d 100644
+--- a/testdata/testoutput11-32
++++ b/testdata/testoutput11-32
+@@ -765,4 +765,7 @@ Memory allocation (code space): 28
+ 25 End
+ ------------------------------------------------------------------
+
++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
++Failed: missing ) at offset 509
++
+ /-- End of testinput11 --/
+diff --git a/testdata/testoutput11-8 b/testdata/testoutput11-8
+index cb37896..5a4fbb2 100644
+--- a/testdata/testoutput11-8
++++ b/testdata/testoutput11-8
+@@ -765,4 +765,7 @@ Memory allocation (code space): 10
+ 38 End
+ ------------------------------------------------------------------
+
++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
++Failed: missing ) at offset 509
++
+ /-- End of testinput11 --/
+--
+2.5.0
+
+From b7537308b7c758f33c347cb0bec62754c43c271f Mon Sep 17 00:00:00 2001
+From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
+Date: Sat, 27 Feb 2016 17:38:11 +0000
+Subject: [PATCH] Yet another duplicate name bugfix by overestimating the
+ memory needed (i.e. another hack - PCRE2 has this "properly" fixed).
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1636 2f5784b3-3f2a-0410-8824-cb99058d5e15
+
+Petr Písař: Ported to 8.38.
+
+diff --git a/pcre_compile.c b/pcre_compile.c
+index 5019854..4ffea0c 100644
+--- a/pcre_compile.c
++++ b/pcre_compile.c
+@@ -7311,7 +7311,12 @@ for (;; ptr++)
+ so far in order to get the number. If the name is not found, leave
+ the value of recno as 0 for a forward reference. */
+
+- else
++ /* This patch (removing "else") fixes a problem when a reference is
++ to multiple identically named nested groups from within the nest.
++ Once again, it is not the "proper" fix, and it results in an
++ over-allocation of memory. */
++
++ /* else */
+ {
+ ng = cd->named_groups;
+ for (i = 0; i < cd->names_found; i++, ng++)
+diff --git a/testdata/testinput2 b/testdata/testinput2
+index 086e0f4..c805f5f 100644
+--- a/testdata/testinput2
++++ b/testdata/testinput2
+@@ -4239,4 +4239,6 @@ backtracking verbs. --/
+ 9010
+ abcd
+
++/((?J)(?'R'(?'R'(?'R'(?'R'(?'R'(?|(\k'R'))))))))/
++
+ /-- End of testinput2 --/
+diff --git a/testdata/testoutput2 b/testdata/testoutput2
+index d414a72..800a72f 100644
+--- a/testdata/testoutput2
++++ b/testdata/testoutput2
+@@ -14665,4 +14665,6 @@ Start of matched string is beyond its end - displaying from end to start.
+ 0 ^ 0
+ No match
+
++/((?J)(?'R'(?'R'(?'R'(?'R'(?'R'(?|(\k'R'))))))))/
++
+ /-- End of testinput2 --/
+--
+2.5.0
+
+From 0fc2edb79b3815c6511fd75c36a57893e4acaee6 Mon Sep 17 00:00:00 2001
+From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
+Date: Sat, 27 Feb 2016 17:55:24 +0000
+Subject: [PATCH] Fix pcretest loop for global matching with an ovector size
+ less than 2.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1637 2f5784b3-3f2a-0410-8824-cb99058d5e15
+
+Petr Písař: Ported to 8.38.
+
+diff --git a/pcretest.c b/pcretest.c
+index 63869fd..78ef517 100644
+--- a/pcretest.c
++++ b/pcretest.c
+@@ -5617,6 +5617,12 @@ while (!done)
+ break;
+ }
+
++ if (use_size_offsets < 2)
++ {
++ fprintf(outfile, "Cannot do global matching with an ovector size < 2\n");
++ break;
++ }
++
+ /* If we have matched an empty string, first check to see if we are at
+ the end of the subject. If so, the /g loop is over. Otherwise, mimic what
+ Perl's /g options does. This turns out to be rather cunning. First we set
+--
+2.5.0
+
+From b3db1b7de5cfaa026ec2bc4a393129461a0f5c57 Mon Sep 17 00:00:00 2001
+From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
+Date: Sat, 27 Feb 2016 18:44:41 +0000
+Subject: [PATCH] Fix non-diagnosis of missing assertion after (?(?C).
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1638 2f5784b3-3f2a-0410-8824-cb99058d5e15
+
+Petr Písař: Ported to 8.38.
+
+diff --git a/pcre_compile.c b/pcre_compile.c
+index 4ffea0c..254c629 100644
+--- a/pcre_compile.c
++++ b/pcre_compile.c
+@@ -485,7 +485,7 @@ static const char error_texts[] =
+ "lookbehind assertion is not fixed length\0"
+ "malformed number or name after (?(\0"
+ "conditional group contains more than two branches\0"
+- "assertion expected after (?(\0"
++ "assertion expected after (?( or (?(?C)\0"
+ "(?R or (?[+-]digits must be followed by )\0"
+ /* 30 */
+ "unknown POSIX class name\0"
+@@ -6771,6 +6771,15 @@ for (;; ptr++)
+ for (i = 3;; i++) if (!IS_DIGIT(ptr[i])) break;
+ if (ptr[i] == CHAR_RIGHT_PARENTHESIS)
+ tempptr += i + 1;
++
++ /* tempptr should now be pointing to the opening parenthesis of the
++ assertion condition. */
++
++ if (*tempptr != CHAR_LEFT_PARENTHESIS)
++ {
++ *errorcodeptr = ERR28;
++ goto FAILED;
++ }
+ }
+
+ /* For conditions that are assertions, check the syntax, and then exit
+diff --git a/testdata/testinput2 b/testdata/testinput2
+index c805f5f..75e402e 100644
+--- a/testdata/testinput2
++++ b/testdata/testinput2
+@@ -4241,4 +4241,6 @@ backtracking verbs. --/
+
+ /((?J)(?'R'(?'R'(?'R'(?'R'(?'R'(?|(\k'R'))))))))/
+
++/\N(?(?C)0?!.)*/
++
+ /-- End of testinput2 --/
+diff --git a/testdata/testoutput2 b/testdata/testoutput2
+index 800a72f..5e88d1a 100644
+--- a/testdata/testoutput2
++++ b/testdata/testoutput2
+@@ -555,13 +555,13 @@ Failed: malformed number or name after (?( at offset 4
+ Failed: malformed number or name after (?( at offset 4
+
+ /(?(?i))/
+-Failed: assertion expected after (?( at offset 3
++Failed: assertion expected after (?( or (?(?C) at offset 3
+
+ /(?(abc))/
+ Failed: reference to non-existent subpattern at offset 7
+
+ /(?(?<ab))/
+-Failed: assertion expected after (?( at offset 3
++Failed: assertion expected after (?( or (?(?C) at offset 3
+
+ /((?s)blah)\s+\1/I
+ Capturing subpattern count = 1
+@@ -7870,7 +7870,7 @@ No match
+ Failed: malformed number or name after (?( at offset 6
+
+ /(?(''))/
+-Failed: assertion expected after (?( at offset 4
++Failed: assertion expected after (?( or (?(?C) at offset 4
+
+ /(?('R')stuff)/
+ Failed: reference to non-existent subpattern at offset 7
+@@ -14346,7 +14346,7 @@ No match
+ "((?2)+)((?1))"
+
+ "(?(?<E>.*!.*)?)"
+-Failed: assertion expected after (?( at offset 3
++Failed: assertion expected after (?( or (?(?C) at offset 3
+
+ "X((?2)()*+){2}+"BZ
+ ------------------------------------------------------------------
+@@ -14667,4 +14667,7 @@ No match
+
+ /((?J)(?'R'(?'R'(?'R'(?'R'(?'R'(?|(\k'R'))))))))/
+
++/\N(?(?C)0?!.)*/
++Failed: assertion expected after (?( or (?(?C) at offset 4
++
+ /-- End of testinput2 --/
+--
+2.5.0
+
+++ /dev/null
-Index: pcre-8.37/pcre_compile.c
-===================================================================
---- a/pcre_compile.c
-+++ b/pcre_compile.c
-@@ -7177,14 +7177,26 @@
- number. If the name is not found, set the value to 0 for a forward
- reference. */
-
-+ recno = 0;
- ng = cd->named_groups;
- for (i = 0; i < cd->names_found; i++, ng++)
- {
- if (namelen == ng->length &&
- STRNCMP_UC_UC(name, ng->name, namelen) == 0)
-- break;
-+ {
-+ open_capitem *oc;
-+ recno = ng->number;
-+ if (is_recurse) break;
-+ for (oc = cd->open_caps; oc != NULL; oc = oc->next)
-+ {
-+ if (oc->number == recno)
-+ {
-+ oc->flag = TRUE;
-+ break;
-+ }
-+ }
-+ }
- }
-- recno = (i < cd->names_found)? ng->number : 0;
-
- /* Count named back references. */
--- /dev/null
+#
+# Copyright (C) 2007-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=poco
+PKG_VERSION:=1.7.0
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://pocoproject.org/releases/poco-1.7.0
+PKG_MD5SUM:=dbbc98ab95910cc31bf4f1ffff9ac572
+
+PKG_LICENSE:=BSL-1.0
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/poco
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=Poco C++ libraries
+ URL:=http://www.pocoproject.org/
+ DEPENDS:=+libstdcpp +libpthread +librt
+ MAINTAINER:=Jean-Michel Julien <jean-michel.julien@trilliantinc.com>
+endef
+
+define Package/poco/description
+ POrtable COmponents, a modern and powerful open source C++ class libraries
+ and frameworks for building network and internet-based applications that
+ run on desktop, server and embedded systems.
+endef
+
+CONFIGURE_ARGS += \
+ --config=Linux \
+ --no-tests \
+ --no-samples \
+ --no-fpenvironment \
+ --no-sharedmemory \
+ --no-wstring \
+ --poquito \
+ --minimal \
+ --shared
+
+define Package/poco/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libPoco{Foundation,XML,JSON,Net,Util}.so* $(1)/usr/lib/
+endef
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/Poco $(1)/usr/include/
+
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libPoco{Foundation,XML,JSON,Net,Util}.so* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,poco))
--- /dev/null
+--- a/configure
++++ b/configure
+@@ -231,9 +231,9 @@
+ ;;
+
+ *)
+- showhelp
+- exit 1
+- ;;
++# showhelp
++# exit 1
++# ;;
+ esac
+
+ shift
--- /dev/null
+--- a/Foundation/src/Error.cpp
++++ b/Foundation/src/Error.cpp
+@@ -66,7 +66,7 @@
+ without -D_GNU_SOURCE is needed, otherwise the GNU version is
+ preferred.
+ */
+-#if defined _GNU_SOURCE && !POCO_ANDROID
++#if (defined _GNU_SOURCE && (defined __GLIBC__ || defined __UCLIBC__)) && !POCO_ANDROID
+ char errmsg[256] = "";
+ return std::string(strerror_r(errorCode, errmsg, 256));
+ #elif (_XOPEN_SOURCE >= 600) || POCO_ANDROID
include $(TOPDIR)/rules.mk
PKG_NAME:=postgresql
-PKG_VERSION:=9.4.4
+PKG_VERSION:=9.5.1
PKG_RELEASE:=1
PKG_MAINTAINER:=Jo-Philipp Wich <jow@openwrt.org>
PKG_LICENSE:=PostgreSQL
http://ftp9.us.postgresql.org/pub/mirrors/postgresql/source/v$(PKG_VERSION) \
http://ftp.be.postgresql.org/postgresql/source/v$(PKG_VERSION) \
ftp://ftp-archives.postgresql.org/pub/source/v$(PKG_VERSION)
-PKG_MD5SUM:=1fe952c44ed26d7e6a335cf991a9c1c6
+PKG_MD5SUM:=11e037afaa4bd0c90bb3c3d955e2b401
PKG_BUILD_PARALLEL:=1
PKG_USE_MIPS16:=0
PKG_FIXUP:=autoreconf
define Package/libpq
SECTION:=libs
CATEGORY:=Libraries
- DEPENDS:=+zlib +libreadline +libpthread +libncurses +shadow-utils +shadow-su
+ DEPENDS:=+zlib +libreadline +libpthread +libncurses
TITLE:=PostgreSQL client library
URL:=http://www.postgresql.org/
SUBMENU:=database
define Package/pgsql-cli
SECTION:=utils
CATEGORY:=Utilities
- DEPENDS:=+libpq +USE_UCLIBC:librt
+ DEPENDS:=+libpq +USE_UCLIBC:librt +shadow-utils +shadow-su
TITLE:=Command Line Interface (CLI) to PostgreSQL databases
URL:=http://www.postgresql.org/
SUBMENU:=database
--enable-depend \
--with-system-timezone=/tmp \
);
- $(MAKE) -C $(PKG_BUILD_DIR)/src/interfaces/ecpg/preproc CC="$(HOSTCC)" CFLAGS+="-I../../libpq"
+ $(MAKE) -C $(PKG_BUILD_DIR)/src/interfaces/ecpg/preproc CC="$(HOSTCC)"
mv $(PKG_BUILD_DIR)/src/interfaces/ecpg/preproc/ecpg \
$(PKG_BUILD_DIR)/src/interfaces/ecpg/preproc/ecpg.host
$(MAKE) -C $(PKG_BUILD_DIR)/src/timezone CC="$(HOSTCC)"
$(INSTALL_BIN) ./files/postgresql.init $(1)/etc/init.d/postgresql
- $(CP) -r $(PKG_INSTALL_DIR)/usr/share/postgresql/* \
+ $(CP) $(PKG_INSTALL_DIR)/usr/share/postgresql/* \
$(1)/usr/share/postgresql
$(INSTALL_DATA) ./files/postgresql.config $(1)/etc/config/postgresql
- $(CP) -r \
- $(PKG_INSTALL_DIR)/usr/lib/postgresql \
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/postgresql \
$(1)/usr/lib
endef
+++ b/configure.in
@@ -25,7 +25,7 @@ recommended. You can remove the check f
your responsibility whether the result works or not.])])
- AC_COPYRIGHT([Copyright (c) 1996-2014, PostgreSQL Global Development Group])
+ AC_COPYRIGHT([Copyright (c) 1996-2015, PostgreSQL Global Development Group])
AC_CONFIG_SRCDIR([src/backend/access/common/heaptuple.c])
-AC_CONFIG_AUX_DIR(config)
+AC_CONFIG_AUX_DIR([config])
--- a/src/port/Makefile
+++ b/src/port/Makefile
-@@ -52,6 +52,7 @@ uninstall:
-
+@@ -53,6 +53,7 @@ uninstall:
libpgport.a: $(OBJS)
+ rm -f $@
$(AR) $(AROPT) $@ $^
+ $(RANLIB) libpgport.a
--- a/src/bin/psql/print.h
+++ b/src/bin/psql/print.h
-@@ -179,10 +179,6 @@ extern void printQuery(const PGresult *r
- extern void setDecimalLocale(void);
+@@ -197,10 +197,6 @@ extern void setDecimalLocale(void);
extern const printTextFormat *get_line_style(const printTableOpt *opt);
+ extern void refresh_utf8format(const printTableOpt *opt);
-#ifndef __CYGWIN__
-#define DEFAULT_PAGER "more"
include $(TOPDIR)/rules.mk
PKG_NAME:=libprotobuf-c
-PKG_VERSION:=v1.0.1
+PKG_VERSION:=v1.2.1
PKG_RELEASE:=$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
of its internal RPC protocols and file formats.
endef
-CONFIGURE_ARGS += --with-protoc=$(STAGING_DIR_HOST)/bin/protoc
+CONFIGURE_ARGS += --with-protoc=$(STAGING_DIR)/host/bin/protoc
define Build/InstallDev
$(INSTALL_DIR) \
include $(TOPDIR)/rules.mk
PKG_NAME:=sqlite
-PKG_VERSION:=3081101
+PKG_VERSION:=3120200
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-autoconf-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://www.sqlite.org/2015/
-PKG_MD5SUM:=298c8d6af7ca314f68de92bc7a356cbe
+PKG_SOURCE_URL:=http://www.sqlite.org/2016/
+PKG_MD5SUM:=c552a133aca1ce1d647163d9e43bbcb1
PKG_LICENSE:=PUBLICDOMAIN
PKG_LICENSE_FILES:=
#
-# Copyright (C) 2006-2014 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=tiff
-PKG_VERSION:=4.0.3
-PKG_RELEASE:=4
+PKG_VERSION:=4.0.6
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://download.osgeo.org/libtiff
-PKG_MD5SUM:=051c1068e6a0627f461948c365290410
+PKG_MD5SUM:=d1d2e940dea0b5ad435f21f03d96dd72
PKG_FIXUP:=autoreconf
PKG_REMOVE_FILES:=autogen.sh aclocal.m4
---- a/Makefile.am
-+++ b/Makefile.am
+diff -rupN tiff-4.0.6/Makefile.am tiff-new/Makefile.am
+--- tiff-4.0.6/Makefile.am 2015-09-06 21:30:46.179705536 +0200
++++ tiff-new/Makefile.am 2016-04-05 14:26:09.539194844 +0200
@@ -25,7 +25,7 @@
docdir = $(LIBTIFF_DOCDIR)
ACLOCAL_AMFLAGS = -I m4
docfiles = \
-@@ -48,7 +48,7 @@ EXTRA_DIST = \
-
- dist_doc_DATA = $(docfiles)
+@@ -61,7 +61,7 @@ distcheck-hook:
+ rm -rf $(distdir)/_build/cmake
+ rm -rf $(distdir)/_inst/cmake
-SUBDIRS = port libtiff tools build contrib test man html
+SUBDIRS = port libtiff tools build contrib
release:
(rm -f $(top_srcdir)/RELEASE-DATE && echo $(LIBTIFF_RELEASE_DATE) > $(top_srcdir)/RELEASE-DATE)
---- a/test/Makefile.am
-+++ b/test/Makefile.am
+diff -rupN tiff-4.0.6/test/Makefile.am tiff-new/test/Makefile.am
+--- tiff-4.0.6/test/Makefile.am 2015-09-01 04:41:07.598381354 +0200
++++ tiff-new/test/Makefile.am 2016-04-05 14:26:39.763453075 +0200
@@ -23,7 +23,7 @@
# Process this file with automake to produce Makefile.in.
--- /dev/null
+From f3f0cad770593eaef0766e5be896a6a034fc6313 Mon Sep 17 00:00:00 2001
+From: erouault <erouault>
+Date: Sat, 26 Dec 2015 17:32:03 +0000
+Subject: [PATCH] * libtiff/tif_getimage.c: fix out-of-bound reads in
+ TIFFRGBAImage interface in case of unsupported values of
+ SamplesPerPixel/ExtraSamples for LogLUV / CIELab. Add explicit call to
+ TIFFRGBAImageOK() in TIFFRGBAImageBegin(). Fix CVE-2015-8665 reported by
+ limingxing and CVE-2015-8683 reported by zzf of Alibaba.
+
+---
+ ChangeLog | 8 ++++++++
+ libtiff/tif_getimage.c | 37 +++++++++++++++++++++++--------------
+ 2 files changed, 31 insertions(+), 14 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index a7d283a..4beb30b 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,11 @@
++2015-12-26 Even Rouault <even.rouault at spatialys.com>
++
++ * libtiff/tif_getimage.c: fix out-of-bound reads in TIFFRGBAImage
++ interface in case of unsupported values of SamplesPerPixel/ExtraSamples
++ for LogLUV / CIELab. Add explicit call to TIFFRGBAImageOK() in
++ TIFFRGBAImageBegin(). Fix CVE-2015-8665 reported by limingxing and
++ CVE-2015-8683 reported by zzf of Alibaba.
++
+ 2015-09-12 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
+
+ * libtiff 4.0.6 released.
+diff --git a/libtiff/tif_getimage.c b/libtiff/tif_getimage.c
+index fd0a4f9..fae1e31 100644
+--- a/libtiff/tif_getimage.c
++++ b/libtiff/tif_getimage.c
+@@ -1,4 +1,4 @@
+-/* $Id: tif_getimage.c,v 1.90 2015-06-17 01:34:08 bfriesen Exp $ */
++/* $Id: tif_getimage.c,v 1.94 2015-12-26 17:32:03 erouault Exp $ */
+
+ /*
+ * Copyright (c) 1991-1997 Sam Leffler
+@@ -182,20 +182,22 @@ TIFFRGBAImageOK(TIFF* tif, char emsg[1024])
+ "Planarconfiguration", td->td_planarconfig);
+ return (0);
+ }
+- if( td->td_samplesperpixel != 3 )
++ if( td->td_samplesperpixel != 3 || colorchannels != 3 )
+ {
+ sprintf(emsg,
+- "Sorry, can not handle image with %s=%d",
+- "Samples/pixel", td->td_samplesperpixel);
++ "Sorry, can not handle image with %s=%d, %s=%d",
++ "Samples/pixel", td->td_samplesperpixel,
++ "colorchannels", colorchannels);
+ return 0;
+ }
+ break;
+ case PHOTOMETRIC_CIELAB:
+- if( td->td_samplesperpixel != 3 || td->td_bitspersample != 8 )
++ if( td->td_samplesperpixel != 3 || colorchannels != 3 || td->td_bitspersample != 8 )
+ {
+ sprintf(emsg,
+- "Sorry, can not handle image with %s=%d and %s=%d",
++ "Sorry, can not handle image with %s=%d, %s=%d and %s=%d",
+ "Samples/pixel", td->td_samplesperpixel,
++ "colorchannels", colorchannels,
+ "Bits/sample", td->td_bitspersample);
+ return 0;
+ }
+@@ -255,6 +257,9 @@ TIFFRGBAImageBegin(TIFFRGBAImage* img, TIFF* tif, int stop, char emsg[1024])
+ int colorchannels;
+ uint16 *red_orig, *green_orig, *blue_orig;
+ int n_color;
++
++ if( !TIFFRGBAImageOK(tif, emsg) )
++ return 0;
+
+ /* Initialize to normal values */
+ img->row_offset = 0;
+@@ -2508,29 +2513,33 @@ PickContigCase(TIFFRGBAImage* img)
+ case PHOTOMETRIC_RGB:
+ switch (img->bitspersample) {
+ case 8:
+- if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
++ if (img->alpha == EXTRASAMPLE_ASSOCALPHA &&
++ img->samplesperpixel >= 4)
+ img->put.contig = putRGBAAcontig8bittile;
+- else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
++ else if (img->alpha == EXTRASAMPLE_UNASSALPHA &&
++ img->samplesperpixel >= 4)
+ {
+ if (BuildMapUaToAa(img))
+ img->put.contig = putRGBUAcontig8bittile;
+ }
+- else
++ else if( img->samplesperpixel >= 3 )
+ img->put.contig = putRGBcontig8bittile;
+ break;
+ case 16:
+- if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
++ if (img->alpha == EXTRASAMPLE_ASSOCALPHA &&
++ img->samplesperpixel >=4 )
+ {
+ if (BuildMapBitdepth16To8(img))
+ img->put.contig = putRGBAAcontig16bittile;
+ }
+- else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
++ else if (img->alpha == EXTRASAMPLE_UNASSALPHA &&
++ img->samplesperpixel >=4 )
+ {
+ if (BuildMapBitdepth16To8(img) &&
+ BuildMapUaToAa(img))
+ img->put.contig = putRGBUAcontig16bittile;
+ }
+- else
++ else if( img->samplesperpixel >=3 )
+ {
+ if (BuildMapBitdepth16To8(img))
+ img->put.contig = putRGBcontig16bittile;
+@@ -2539,7 +2548,7 @@ PickContigCase(TIFFRGBAImage* img)
+ }
+ break;
+ case PHOTOMETRIC_SEPARATED:
+- if (buildMap(img)) {
++ if (img->samplesperpixel >=4 && buildMap(img)) {
+ if (img->bitspersample == 8) {
+ if (!img->Map)
+ img->put.contig = putRGBcontig8bitCMYKtile;
+@@ -2635,7 +2644,7 @@ PickContigCase(TIFFRGBAImage* img)
+ }
+ break;
+ case PHOTOMETRIC_CIELAB:
+- if (buildMap(img)) {
++ if (img->samplesperpixel == 3 && buildMap(img)) {
+ if (img->bitspersample == 8)
+ img->put.contig = initCIELabConversion(img);
+ break;
--- /dev/null
+From 3899f0ab62dd307f63f87ec99aaf289e104f4070 Mon Sep 17 00:00:00 2001
+From: erouault <erouault>
+Date: Sun, 27 Dec 2015 16:25:11 +0000
+Subject: [PATCH] * libtiff/tif_luv.c: fix potential out-of-bound writes in
+ decode functions in non debug builds by replacing assert()s by regular if
+ checks (bugzilla #2522). Fix potential out-of-bound reads in case of short
+ input data.
+
+---
+ ChangeLog | 7 +++++++
+ libtiff/tif_luv.c | 57 +++++++++++++++++++++++++++++++++++++++++++------------
+ 2 files changed, 52 insertions(+), 12 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 4beb30b..b8aa23c 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,10 @@
++2015-12-27 Even Rouault <even.rouault at spatialys.com>
++
++ * libtiff/tif_luv.c: fix potential out-of-bound writes in decode
++ functions in non debug builds by replacing assert()s by regular if
++ checks (bugzilla #2522).
++ Fix potential out-of-bound reads in case of short input data.
++
+ 2015-12-26 Even Rouault <even.rouault at spatialys.com>
+
+ * libtiff/tif_getimage.c: fix out-of-bound reads in TIFFRGBAImage
+diff --git a/libtiff/tif_luv.c b/libtiff/tif_luv.c
+index 4e328ba..60a174d 100644
+--- a/libtiff/tif_luv.c
++++ b/libtiff/tif_luv.c
+@@ -1,4 +1,4 @@
+-/* $Id: tif_luv.c,v 1.40 2015-06-21 01:09:09 bfriesen Exp $ */
++/* $Id: tif_luv.c,v 1.41 2015-12-27 16:25:11 erouault Exp $ */
+
+ /*
+ * Copyright (c) 1997 Greg Ward Larson
+@@ -202,7 +202,11 @@ LogL16Decode(TIFF* tif, uint8* op, tmsize_t occ, uint16 s)
+ if (sp->user_datafmt == SGILOGDATAFMT_16BIT)
+ tp = (int16*) op;
+ else {
+- assert(sp->tbuflen >= npixels);
++ if(sp->tbuflen < npixels) {
++ TIFFErrorExt(tif->tif_clientdata, module,
++ "Translation buffer too short");
++ return (0);
++ }
+ tp = (int16*) sp->tbuf;
+ }
+ _TIFFmemset((void*) tp, 0, npixels*sizeof (tp[0]));
+@@ -211,9 +215,11 @@ LogL16Decode(TIFF* tif, uint8* op, tmsize_t occ, uint16 s)
+ cc = tif->tif_rawcc;
+ /* get each byte string */
+ for (shft = 2*8; (shft -= 8) >= 0; ) {
+- for (i = 0; i < npixels && cc > 0; )
++ for (i = 0; i < npixels && cc > 0; ) {
+ if (*bp >= 128) { /* run */
+- rc = *bp++ + (2-128); /* TODO: potential input buffer overrun when decoding corrupt or truncated data */
++ if( cc < 2 )
++ break;
++ rc = *bp++ + (2-128);
+ b = (int16)(*bp++ << shft);
+ cc -= 2;
+ while (rc-- && i < npixels)
+@@ -223,6 +229,7 @@ LogL16Decode(TIFF* tif, uint8* op, tmsize_t occ, uint16 s)
+ while (--cc && rc-- && i < npixels)
+ tp[i++] |= (int16)*bp++ << shft;
+ }
++ }
+ if (i != npixels) {
+ #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+ TIFFErrorExt(tif->tif_clientdata, module,
+@@ -268,13 +275,17 @@ LogLuvDecode24(TIFF* tif, uint8* op, tmsize_t occ, uint16 s)
+ if (sp->user_datafmt == SGILOGDATAFMT_RAW)
+ tp = (uint32 *)op;
+ else {
+- assert(sp->tbuflen >= npixels);
++ if(sp->tbuflen < npixels) {
++ TIFFErrorExt(tif->tif_clientdata, module,
++ "Translation buffer too short");
++ return (0);
++ }
+ tp = (uint32 *) sp->tbuf;
+ }
+ /* copy to array of uint32 */
+ bp = (unsigned char*) tif->tif_rawcp;
+ cc = tif->tif_rawcc;
+- for (i = 0; i < npixels && cc > 0; i++) {
++ for (i = 0; i < npixels && cc >= 3; i++) {
+ tp[i] = bp[0] << 16 | bp[1] << 8 | bp[2];
+ bp += 3;
+ cc -= 3;
+@@ -325,7 +336,11 @@ LogLuvDecode32(TIFF* tif, uint8* op, tmsize_t occ, uint16 s)
+ if (sp->user_datafmt == SGILOGDATAFMT_RAW)
+ tp = (uint32*) op;
+ else {
+- assert(sp->tbuflen >= npixels);
++ if(sp->tbuflen < npixels) {
++ TIFFErrorExt(tif->tif_clientdata, module,
++ "Translation buffer too short");
++ return (0);
++ }
+ tp = (uint32*) sp->tbuf;
+ }
+ _TIFFmemset((void*) tp, 0, npixels*sizeof (tp[0]));
+@@ -334,11 +349,13 @@ LogLuvDecode32(TIFF* tif, uint8* op, tmsize_t occ, uint16 s)
+ cc = tif->tif_rawcc;
+ /* get each byte string */
+ for (shft = 4*8; (shft -= 8) >= 0; ) {
+- for (i = 0; i < npixels && cc > 0; )
++ for (i = 0; i < npixels && cc > 0; ) {
+ if (*bp >= 128) { /* run */
++ if( cc < 2 )
++ break;
+ rc = *bp++ + (2-128);
+ b = (uint32)*bp++ << shft;
+- cc -= 2; /* TODO: potential input buffer overrun when decoding corrupt or truncated data */
++ cc -= 2;
+ while (rc-- && i < npixels)
+ tp[i++] |= b;
+ } else { /* non-run */
+@@ -346,6 +363,7 @@ LogLuvDecode32(TIFF* tif, uint8* op, tmsize_t occ, uint16 s)
+ while (--cc && rc-- && i < npixels)
+ tp[i++] |= (uint32)*bp++ << shft;
+ }
++ }
+ if (i != npixels) {
+ #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+ TIFFErrorExt(tif->tif_clientdata, module,
+@@ -413,6 +431,7 @@ LogLuvDecodeTile(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
+ static int
+ LogL16Encode(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
+ {
++ static const char module[] = "LogL16Encode";
+ LogLuvState* sp = EncoderState(tif);
+ int shft;
+ tmsize_t i;
+@@ -433,7 +452,11 @@ LogL16Encode(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
+ tp = (int16*) bp;
+ else {
+ tp = (int16*) sp->tbuf;
+- assert(sp->tbuflen >= npixels);
++ if(sp->tbuflen < npixels) {
++ TIFFErrorExt(tif->tif_clientdata, module,
++ "Translation buffer too short");
++ return (0);
++ }
+ (*sp->tfunc)(sp, bp, npixels);
+ }
+ /* compress each byte string */
+@@ -506,6 +529,7 @@ LogL16Encode(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
+ static int
+ LogLuvEncode24(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
+ {
++ static const char module[] = "LogLuvEncode24";
+ LogLuvState* sp = EncoderState(tif);
+ tmsize_t i;
+ tmsize_t npixels;
+@@ -521,7 +545,11 @@ LogLuvEncode24(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
+ tp = (uint32*) bp;
+ else {
+ tp = (uint32*) sp->tbuf;
+- assert(sp->tbuflen >= npixels);
++ if(sp->tbuflen < npixels) {
++ TIFFErrorExt(tif->tif_clientdata, module,
++ "Translation buffer too short");
++ return (0);
++ }
+ (*sp->tfunc)(sp, bp, npixels);
+ }
+ /* write out encoded pixels */
+@@ -553,6 +581,7 @@ LogLuvEncode24(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
+ static int
+ LogLuvEncode32(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
+ {
++ static const char module[] = "LogLuvEncode32";
+ LogLuvState* sp = EncoderState(tif);
+ int shft;
+ tmsize_t i;
+@@ -574,7 +603,11 @@ LogLuvEncode32(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
+ tp = (uint32*) bp;
+ else {
+ tp = (uint32*) sp->tbuf;
+- assert(sp->tbuflen >= npixels);
++ if(sp->tbuflen < npixels) {
++ TIFFErrorExt(tif->tif_clientdata, module,
++ "Translation buffer too short");
++ return (0);
++ }
+ (*sp->tfunc)(sp, bp, npixels);
+ }
+ /* compress each byte string */
--- /dev/null
+From 237c9c18b0b3479950e54a755ae428bf0f55f754 Mon Sep 17 00:00:00 2001
+From: erouault <erouault>
+Date: Sun, 27 Dec 2015 16:55:20 +0000
+Subject: [PATCH] * libtiff/tif_next.c: fix potential out-of-bound write in
+ NeXTDecode() triggered by http://lcamtuf.coredump.cx/afl/vulns/libtiff5.tif
+ (bugzilla #2508)
+
+---
+ ChangeLog | 6 ++++++
+ libtiff/tif_next.c | 12 +++++++++---
+ 2 files changed, 15 insertions(+), 3 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index b8aa23c..04926a3 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,5 +1,11 @@
+ 2015-12-27 Even Rouault <even.rouault at spatialys.com>
+
++ * libtiff/tif_next.c: fix potential out-of-bound write in NeXTDecode()
++ triggered by http://lcamtuf.coredump.cx/afl/vulns/libtiff5.tif
++ (bugzilla #2508)
++
++2015-12-27 Even Rouault <even.rouault at spatialys.com>
++
+ * libtiff/tif_luv.c: fix potential out-of-bound writes in decode
+ functions in non debug builds by replacing assert()s by regular if
+ checks (bugzilla #2522).
+diff --git a/libtiff/tif_next.c b/libtiff/tif_next.c
+index 17e0311..1248caa 100644
+--- a/libtiff/tif_next.c
++++ b/libtiff/tif_next.c
+@@ -1,4 +1,4 @@
+-/* $Id: tif_next.c,v 1.16 2014-12-29 12:09:11 erouault Exp $ */
++/* $Id: tif_next.c,v 1.17 2015-12-27 16:55:20 erouault Exp $ */
+
+ /*
+ * Copyright (c) 1988-1997 Sam Leffler
+@@ -37,7 +37,7 @@
+ case 0: op[0] = (unsigned char) ((v) << 6); break; \
+ case 1: op[0] |= (v) << 4; break; \
+ case 2: op[0] |= (v) << 2; break; \
+- case 3: *op++ |= (v); break; \
++ case 3: *op++ |= (v); op_offset++; break; \
+ } \
+ }
+
+@@ -106,6 +106,7 @@ NeXTDecode(TIFF* tif, uint8* buf, tmsize_t occ, uint16 s)
+ uint32 imagewidth = tif->tif_dir.td_imagewidth;
+ if( isTiled(tif) )
+ imagewidth = tif->tif_dir.td_tilewidth;
++ tmsize_t op_offset = 0;
+
+ /*
+ * The scanline is composed of a sequence of constant
+@@ -122,10 +123,15 @@ NeXTDecode(TIFF* tif, uint8* buf, tmsize_t occ, uint16 s)
+ * bounds, potentially resulting in a security
+ * issue.
+ */
+- while (n-- > 0 && npixels < imagewidth)
++ while (n-- > 0 && npixels < imagewidth && op_offset < scanline)
+ SETPIXEL(op, grey);
+ if (npixels >= imagewidth)
+ break;
++ if (op_offset >= scanline ) {
++ TIFFErrorExt(tif->tif_clientdata, module, "Invalid data for scanline %ld",
++ (long) tif->tif_row);
++ return (0);
++ }
+ if (cc == 0)
+ goto bad;
+ n = *bp++, cc--;
+++ /dev/null
-Index: tiff-4.0.3/tools/ppm2tiff.c
-===================================================================
---- tiff-4.0.3.orig/tools/ppm2tiff.c 2013-06-23 10:36:50.779629492 -0400
-+++ tiff-4.0.3/tools/ppm2tiff.c 2013-06-23 10:36:50.775629494 -0400
-@@ -89,6 +89,7 @@
- int c;
- extern int optind;
- extern char* optarg;
-+ tmsize_t scanline_size;
-
- if (argc < 2) {
- fprintf(stderr, "%s: Too few arguments\n", argv[0]);
-@@ -237,8 +238,16 @@
- }
- if (TIFFScanlineSize(out) > linebytes)
- buf = (unsigned char *)_TIFFmalloc(linebytes);
-- else
-- buf = (unsigned char *)_TIFFmalloc(TIFFScanlineSize(out));
-+ else {
-+ scanline_size = TIFFScanlineSize(out);
-+ if (scanline_size != 0)
-+ buf = (unsigned char *)_TIFFmalloc(TIFFScanlineSize(out));
-+ else {
-+ fprintf(stderr, "%s: scanline size overflow\n",infile);
-+ (void) TIFFClose(out);
-+ exit(-2);
-+ }
-+ }
- if (resolution > 0) {
- TIFFSetField(out, TIFFTAG_XRESOLUTION, resolution);
- TIFFSetField(out, TIFFTAG_YRESOLUTION, resolution);
+++ /dev/null
-Index: tiff-4.0.3/tools/tiff2pdf.c
-===================================================================
---- tiff-4.0.3.orig/tools/tiff2pdf.c 2013-06-23 10:36:50.979629486 -0400
-+++ tiff-4.0.3/tools/tiff2pdf.c 2013-06-23 10:36:50.975629486 -0400
-@@ -3341,33 +3341,56 @@
- uint32 height){
-
- tsize_t i=0;
-- uint16 ri =0;
-- uint16 v_samp=1;
-- uint16 h_samp=1;
-- int j=0;
--
-- i++;
--
-- while(i<(*striplength)){
-+
-+ while (i < *striplength) {
-+ tsize_t datalen;
-+ uint16 ri;
-+ uint16 v_samp;
-+ uint16 h_samp;
-+ int j;
-+ int ncomp;
-+
-+ /* marker header: one or more FFs */
-+ if (strip[i] != 0xff)
-+ return(0);
-+ i++;
-+ while (i < *striplength && strip[i] == 0xff)
-+ i++;
-+ if (i >= *striplength)
-+ return(0);
-+ /* SOI is the only pre-SOS marker without a length word */
-+ if (strip[i] == 0xd8)
-+ datalen = 0;
-+ else {
-+ if ((*striplength - i) <= 2)
-+ return(0);
-+ datalen = (strip[i+1] << 8) | strip[i+2];
-+ if (datalen < 2 || datalen >= (*striplength - i))
-+ return(0);
-+ }
- switch( strip[i] ){
-- case 0xd8:
-- /* SOI - start of image */
-+ case 0xd8: /* SOI - start of image */
- _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), 2);
- *bufferoffset+=2;
-- i+=2;
- break;
-- case 0xc0:
-- case 0xc1:
-- case 0xc3:
-- case 0xc9:
-- case 0xca:
-+ case 0xc0: /* SOF0 */
-+ case 0xc1: /* SOF1 */
-+ case 0xc3: /* SOF3 */
-+ case 0xc9: /* SOF9 */
-+ case 0xca: /* SOF10 */
- if(no==0){
-- _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), strip[i+2]+2);
-- for(j=0;j<buffer[*bufferoffset+9];j++){
-- if( (buffer[*bufferoffset+11+(2*j)]>>4) > h_samp)
-- h_samp = (buffer[*bufferoffset+11+(2*j)]>>4);
-- if( (buffer[*bufferoffset+11+(2*j)] & 0x0f) > v_samp)
-- v_samp = (buffer[*bufferoffset+11+(2*j)] & 0x0f);
-+ _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), datalen+2);
-+ ncomp = buffer[*bufferoffset+9];
-+ if (ncomp < 1 || ncomp > 4)
-+ return(0);
-+ v_samp=1;
-+ h_samp=1;
-+ for(j=0;j<ncomp;j++){
-+ uint16 samp = buffer[*bufferoffset+11+(3*j)];
-+ if( (samp>>4) > h_samp)
-+ h_samp = (samp>>4);
-+ if( (samp & 0x0f) > v_samp)
-+ v_samp = (samp & 0x0f);
- }
- v_samp*=8;
- h_samp*=8;
-@@ -3381,45 +3404,43 @@
- (unsigned char) ((height>>8) & 0xff);
- buffer[*bufferoffset+6]=
- (unsigned char) (height & 0xff);
-- *bufferoffset+=strip[i+2]+2;
-- i+=strip[i+2]+2;
--
-+ *bufferoffset+=datalen+2;
-+ /* insert a DRI marker */
- buffer[(*bufferoffset)++]=0xff;
- buffer[(*bufferoffset)++]=0xdd;
- buffer[(*bufferoffset)++]=0x00;
- buffer[(*bufferoffset)++]=0x04;
- buffer[(*bufferoffset)++]=(ri >> 8) & 0xff;
- buffer[(*bufferoffset)++]= ri & 0xff;
-- } else {
-- i+=strip[i+2]+2;
- }
- break;
-- case 0xc4:
-- case 0xdb:
-- _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), strip[i+2]+2);
-- *bufferoffset+=strip[i+2]+2;
-- i+=strip[i+2]+2;
-+ case 0xc4: /* DHT */
-+ case 0xdb: /* DQT */
-+ _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), datalen+2);
-+ *bufferoffset+=datalen+2;
- break;
-- case 0xda:
-+ case 0xda: /* SOS */
- if(no==0){
-- _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), strip[i+2]+2);
-- *bufferoffset+=strip[i+2]+2;
-- i+=strip[i+2]+2;
-+ _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), datalen+2);
-+ *bufferoffset+=datalen+2;
- } else {
- buffer[(*bufferoffset)++]=0xff;
- buffer[(*bufferoffset)++]=
- (unsigned char)(0xd0 | ((no-1)%8));
-- i+=strip[i+2]+2;
- }
-- _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), (*striplength)-i-1);
-- *bufferoffset+=(*striplength)-i-1;
-+ i += datalen + 1;
-+ /* copy remainder of strip */
-+ _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i]), *striplength - i);
-+ *bufferoffset+= *striplength - i;
- return(1);
- default:
-- i+=strip[i+2]+2;
-+ /* ignore any other marker */
-+ break;
- }
-+ i += datalen + 1;
- }
--
-
-+ /* failed to find SOS marker */
- return(0);
- }
- #endif
+++ /dev/null
-Index: tiff-4.0.3/contrib/dbs/xtiff/xtiff.c
-===================================================================
---- tiff-4.0.3.orig/contrib/dbs/xtiff/xtiff.c 2013-06-23 10:36:51.163629483 -0400
-+++ tiff-4.0.3/contrib/dbs/xtiff/xtiff.c 2013-06-23 10:36:51.147629484 -0400
-@@ -512,9 +512,9 @@
- Arg args[1];
-
- if (tfMultiPage)
-- sprintf(buffer, "%s - page %d", fileName, tfDirectory);
-+ snprintf(buffer, sizeof(buffer), "%s - page %d", fileName, tfDirectory);
- else
-- strcpy(buffer, fileName);
-+ snprintf(buffer, sizeof(buffer), "%s", fileName);
- XtSetArg(args[0], XtNlabel, buffer);
- XtSetValues(labelWidget, args, 1);
- }
-Index: tiff-4.0.3/libtiff/tif_dirinfo.c
-===================================================================
---- tiff-4.0.3.orig/libtiff/tif_dirinfo.c 2013-06-23 10:36:51.163629483 -0400
-+++ tiff-4.0.3/libtiff/tif_dirinfo.c 2013-06-23 10:36:51.147629484 -0400
-@@ -711,7 +711,7 @@
- * note that this name is a special sign to TIFFClose() and
- * _TIFFSetupFields() to free the field
- */
-- sprintf(fld->field_name, "Tag %d", (int) tag);
-+ snprintf(fld->field_name, 32, "Tag %d", (int) tag);
-
- return fld;
- }
-Index: tiff-4.0.3/libtiff/tif_codec.c
-===================================================================
---- tiff-4.0.3.orig/libtiff/tif_codec.c 2013-06-23 10:36:51.163629483 -0400
-+++ tiff-4.0.3/libtiff/tif_codec.c 2013-06-23 10:36:51.151629482 -0400
-@@ -108,7 +108,8 @@
- const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression);
- char compression_code[20];
-
-- sprintf( compression_code, "%d", tif->tif_dir.td_compression );
-+ snprintf(compression_code, sizeof(compression_code), "%d",
-+ tif->tif_dir.td_compression );
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%s compression support is not configured",
- c ? c->name : compression_code );
-Index: tiff-4.0.3/tools/tiffdither.c
-===================================================================
---- tiff-4.0.3.orig/tools/tiffdither.c 2013-06-23 10:36:51.163629483 -0400
-+++ tiff-4.0.3/tools/tiffdither.c 2013-06-23 10:36:51.151629482 -0400
-@@ -260,7 +260,7 @@
- TIFFSetField(out, TIFFTAG_FILLORDER, fillorder);
- else
- CopyField(TIFFTAG_FILLORDER, shortv);
-- sprintf(thing, "Dithered B&W version of %s", argv[optind]);
-+ snprintf(thing, sizeof(thing), "Dithered B&W version of %s", argv[optind]);
- TIFFSetField(out, TIFFTAG_IMAGEDESCRIPTION, thing);
- CopyField(TIFFTAG_PHOTOMETRIC, shortv);
- CopyField(TIFFTAG_ORIENTATION, shortv);
-Index: tiff-4.0.3/tools/rgb2ycbcr.c
-===================================================================
---- tiff-4.0.3.orig/tools/rgb2ycbcr.c 2013-06-23 10:36:51.163629483 -0400
-+++ tiff-4.0.3/tools/rgb2ycbcr.c 2013-06-23 10:36:51.151629482 -0400
-@@ -332,7 +332,8 @@
- TIFFSetField(out, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
- { char buf[2048];
- char *cp = strrchr(TIFFFileName(in), '/');
-- sprintf(buf, "YCbCr conversion of %s", cp ? cp+1 : TIFFFileName(in));
-+ snprintf(buf, sizeof(buf), "YCbCr conversion of %s",
-+ cp ? cp+1 : TIFFFileName(in));
- TIFFSetField(out, TIFFTAG_IMAGEDESCRIPTION, buf);
- }
- TIFFSetField(out, TIFFTAG_SOFTWARE, TIFFGetVersion());
-Index: tiff-4.0.3/tools/tiff2pdf.c
-===================================================================
---- tiff-4.0.3.orig/tools/tiff2pdf.c 2013-06-23 10:36:51.163629483 -0400
-+++ tiff-4.0.3/tools/tiff2pdf.c 2013-06-23 10:36:51.151629482 -0400
-@@ -3630,7 +3630,9 @@
- char buffer[16];
- int buflen=0;
-
-- buflen=sprintf(buffer, "%%PDF-%u.%u ", t2p->pdf_majorversion&0xff, t2p->pdf_minorversion&0xff);
-+ buflen = snprintf(buffer, sizeof(buffer), "%%PDF-%u.%u ",
-+ t2p->pdf_majorversion&0xff,
-+ t2p->pdf_minorversion&0xff);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t)"\n%\342\343\317\323\n", 7);
-
-@@ -3644,10 +3646,10 @@
- tsize_t t2p_write_pdf_obj_start(uint32 number, TIFF* output){
-
- tsize_t written=0;
-- char buffer[16];
-+ char buffer[32];
- int buflen=0;
-
-- buflen=sprintf(buffer, "%lu", (unsigned long)number);
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)number);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen );
- written += t2pWriteFile(output, (tdata_t) " 0 obj\n", 7);
-
-@@ -3686,13 +3688,13 @@
- written += t2pWriteFile(output, (tdata_t) "/", 1);
- for (i=0;i<namelen;i++){
- if ( ((unsigned char)name[i]) < 0x21){
-- sprintf(buffer, "#%.2X", name[i]);
-+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
- buffer[sizeof(buffer) - 1] = '\0';
- written += t2pWriteFile(output, (tdata_t) buffer, 3);
- nextchar=1;
- }
- if ( ((unsigned char)name[i]) > 0x7E){
-- sprintf(buffer, "#%.2X", name[i]);
-+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
- buffer[sizeof(buffer) - 1] = '\0';
- written += t2pWriteFile(output, (tdata_t) buffer, 3);
- nextchar=1;
-@@ -3700,57 +3702,57 @@
- if (nextchar==0){
- switch (name[i]){
- case 0x23:
-- sprintf(buffer, "#%.2X", name[i]);
-+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
- buffer[sizeof(buffer) - 1] = '\0';
- written += t2pWriteFile(output, (tdata_t) buffer, 3);
- break;
- case 0x25:
-- sprintf(buffer, "#%.2X", name[i]);
-+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
- buffer[sizeof(buffer) - 1] = '\0';
- written += t2pWriteFile(output, (tdata_t) buffer, 3);
- break;
- case 0x28:
-- sprintf(buffer, "#%.2X", name[i]);
-+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
- buffer[sizeof(buffer) - 1] = '\0';
- written += t2pWriteFile(output, (tdata_t) buffer, 3);
- break;
- case 0x29:
-- sprintf(buffer, "#%.2X", name[i]);
-+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
- buffer[sizeof(buffer) - 1] = '\0';
- written += t2pWriteFile(output, (tdata_t) buffer, 3);
- break;
- case 0x2F:
-- sprintf(buffer, "#%.2X", name[i]);
-+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
- buffer[sizeof(buffer) - 1] = '\0';
- written += t2pWriteFile(output, (tdata_t) buffer, 3);
- break;
- case 0x3C:
-- sprintf(buffer, "#%.2X", name[i]);
-+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
- buffer[sizeof(buffer) - 1] = '\0';
- written += t2pWriteFile(output, (tdata_t) buffer, 3);
- break;
- case 0x3E:
-- sprintf(buffer, "#%.2X", name[i]);
-+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
- buffer[sizeof(buffer) - 1] = '\0';
- written += t2pWriteFile(output, (tdata_t) buffer, 3);
- break;
- case 0x5B:
-- sprintf(buffer, "#%.2X", name[i]);
-+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
- buffer[sizeof(buffer) - 1] = '\0';
- written += t2pWriteFile(output, (tdata_t) buffer, 3);
- break;
- case 0x5D:
-- sprintf(buffer, "#%.2X", name[i]);
-+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
- buffer[sizeof(buffer) - 1] = '\0';
- written += t2pWriteFile(output, (tdata_t) buffer, 3);
- break;
- case 0x7B:
-- sprintf(buffer, "#%.2X", name[i]);
-+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
- buffer[sizeof(buffer) - 1] = '\0';
- written += t2pWriteFile(output, (tdata_t) buffer, 3);
- break;
- case 0x7D:
-- sprintf(buffer, "#%.2X", name[i]);
-+ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
- buffer[sizeof(buffer) - 1] = '\0';
- written += t2pWriteFile(output, (tdata_t) buffer, 3);
- break;
-@@ -3865,14 +3867,14 @@
- tsize_t t2p_write_pdf_stream_dict(tsize_t len, uint32 number, TIFF* output){
-
- tsize_t written=0;
-- char buffer[16];
-+ char buffer[32];
- int buflen=0;
-
- written += t2pWriteFile(output, (tdata_t) "/Length ", 8);
- if(len!=0){
- written += t2p_write_pdf_stream_length(len, output);
- } else {
-- buflen=sprintf(buffer, "%lu", (unsigned long)number);
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)number);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " 0 R \n", 6);
- }
-@@ -3913,10 +3915,10 @@
- tsize_t t2p_write_pdf_stream_length(tsize_t len, TIFF* output){
-
- tsize_t written=0;
-- char buffer[16];
-+ char buffer[32];
- int buflen=0;
-
-- buflen=sprintf(buffer, "%lu", (unsigned long)len);
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)len);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) "\n", 1);
-
-@@ -3930,7 +3932,7 @@
- tsize_t t2p_write_pdf_catalog(T2P* t2p, TIFF* output)
- {
- tsize_t written = 0;
-- char buffer[16];
-+ char buffer[32];
- int buflen = 0;
-
- written += t2pWriteFile(output,
-@@ -3969,7 +3971,6 @@
- written += t2p_write_pdf_string(t2p->pdf_datetime, output);
- }
- written += t2pWriteFile(output, (tdata_t) "\n/Producer ", 11);
-- _TIFFmemset((tdata_t)buffer, 0x00, sizeof(buffer));
- snprintf(buffer, sizeof(buffer), "libtiff / tiff2pdf - %d", TIFFLIB_VERSION);
- written += t2p_write_pdf_string(buffer, output);
- written += t2pWriteFile(output, (tdata_t) "\n", 1);
-@@ -4110,7 +4111,7 @@
- {
- tsize_t written=0;
- tdir_t i=0;
-- char buffer[16];
-+ char buffer[32];
- int buflen=0;
-
- int page=0;
-@@ -4118,7 +4119,7 @@
- (tdata_t) "<< \n/Type /Pages \n/Kids [ ", 26);
- page = t2p->pdf_pages+1;
- for (i=0;i<t2p->tiff_pagecount;i++){
-- buflen=sprintf(buffer, "%d", page);
-+ buflen=snprintf(buffer, sizeof(buffer), "%d", page);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
- if ( ((i+1)%8)==0 ) {
-@@ -4133,8 +4134,7 @@
- }
- }
- written += t2pWriteFile(output, (tdata_t) "] \n/Count ", 10);
-- _TIFFmemset(buffer, 0x00, 16);
-- buflen=sprintf(buffer, "%d", t2p->tiff_pagecount);
-+ buflen=snprintf(buffer, sizeof(buffer), "%d", t2p->tiff_pagecount);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " \n>> \n", 6);
-
-@@ -4149,28 +4149,28 @@
-
- unsigned int i=0;
- tsize_t written=0;
-- char buffer[16];
-+ char buffer[256];
- int buflen=0;
-
- written += t2pWriteFile(output, (tdata_t) "<<\n/Type /Page \n/Parent ", 24);
-- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_pages);
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_pages);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " 0 R \n", 6);
- written += t2pWriteFile(output, (tdata_t) "/MediaBox [", 11);
-- buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.x1);
-+ buflen=snprintf(buffer, sizeof(buffer), "%.4f",t2p->pdf_mediabox.x1);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " ", 1);
-- buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.y1);
-+ buflen=snprintf(buffer, sizeof(buffer), "%.4f",t2p->pdf_mediabox.y1);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " ", 1);
-- buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.x2);
-+ buflen=snprintf(buffer, sizeof(buffer), "%.4f",t2p->pdf_mediabox.x2);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " ", 1);
-- buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.y2);
-+ buflen=snprintf(buffer, sizeof(buffer), "%.4f",t2p->pdf_mediabox.y2);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) "] \n", 3);
- written += t2pWriteFile(output, (tdata_t) "/Contents ", 10);
-- buflen=sprintf(buffer, "%lu", (unsigned long)(object + 1));
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)(object + 1));
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " 0 R \n", 6);
- written += t2pWriteFile(output, (tdata_t) "/Resources << \n", 15);
-@@ -4178,15 +4178,13 @@
- written += t2pWriteFile(output, (tdata_t) "/XObject <<\n", 12);
- for(i=0;i<t2p->tiff_tiles[t2p->pdf_page].tiles_tilecount;i++){
- written += t2pWriteFile(output, (tdata_t) "/Im", 3);
-- buflen = sprintf(buffer, "%u", t2p->pdf_page+1);
-+ buflen = snprintf(buffer, sizeof(buffer), "%u", t2p->pdf_page+1);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) "_", 1);
-- buflen = sprintf(buffer, "%u", i+1);
-+ buflen = snprintf(buffer, sizeof(buffer), "%u", i+1);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " ", 1);
-- buflen = sprintf(
-- buffer,
-- "%lu",
-+ buflen = snprintf(buffer, sizeof(buffer), "%lu",
- (unsigned long)(object+3+(2*i)+t2p->tiff_pages[t2p->pdf_page].page_extra));
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
-@@ -4198,12 +4196,10 @@
- } else {
- written += t2pWriteFile(output, (tdata_t) "/XObject <<\n", 12);
- written += t2pWriteFile(output, (tdata_t) "/Im", 3);
-- buflen = sprintf(buffer, "%u", t2p->pdf_page+1);
-+ buflen = snprintf(buffer, sizeof(buffer), "%u", t2p->pdf_page+1);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " ", 1);
-- buflen = sprintf(
-- buffer,
-- "%lu",
-+ buflen = snprintf(buffer, sizeof(buffer), "%lu",
- (unsigned long)(object+3+(2*i)+t2p->tiff_pages[t2p->pdf_page].page_extra));
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
-@@ -4212,9 +4208,7 @@
- if(t2p->tiff_transferfunctioncount != 0) {
- written += t2pWriteFile(output, (tdata_t) "/ExtGState <<", 13);
- t2pWriteFile(output, (tdata_t) "/GS1 ", 5);
-- buflen = sprintf(
-- buffer,
-- "%lu",
-+ buflen = snprintf(buffer, sizeof(buffer), "%lu",
- (unsigned long)(object + 3));
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
-@@ -4587,7 +4581,7 @@
- if(t2p->tiff_tiles[t2p->pdf_page].tiles_tilecount>0){
- for(i=0;i<t2p->tiff_tiles[t2p->pdf_page].tiles_tilecount; i++){
- box=t2p->tiff_tiles[t2p->pdf_page].tiles_tiles[i].tile_box;
-- buflen=sprintf(buffer,
-+ buflen=snprintf(buffer, sizeof(buffer),
- "q %s %.4f %.4f %.4f %.4f %.4f %.4f cm /Im%d_%ld Do Q\n",
- t2p->tiff_transferfunctioncount?"/GS1 gs ":"",
- box.mat[0],
-@@ -4602,7 +4596,7 @@
- }
- } else {
- box=t2p->pdf_imagebox;
-- buflen=sprintf(buffer,
-+ buflen=snprintf(buffer, sizeof(buffer),
- "q %s %.4f %.4f %.4f %.4f %.4f %.4f cm /Im%d Do Q\n",
- t2p->tiff_transferfunctioncount?"/GS1 gs ":"",
- box.mat[0],
-@@ -4627,59 +4621,48 @@
- TIFF* output){
-
- tsize_t written=0;
-- char buffer[16];
-+ char buffer[32];
- int buflen=0;
-
- written += t2p_write_pdf_stream_dict(0, t2p->pdf_xrefcount+1, output);
- written += t2pWriteFile(output,
- (tdata_t) "/Type /XObject \n/Subtype /Image \n/Name /Im",
- 42);
-- buflen=sprintf(buffer, "%u", t2p->pdf_page+1);
-+ buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->pdf_page+1);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- if(tile != 0){
- written += t2pWriteFile(output, (tdata_t) "_", 1);
-- buflen=sprintf(buffer, "%lu", (unsigned long)tile);
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)tile);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- }
- written += t2pWriteFile(output, (tdata_t) "\n/Width ", 8);
-- _TIFFmemset((tdata_t)buffer, 0x00, 16);
- if(tile==0){
-- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->tiff_width);
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->tiff_width);
- } else {
- if(t2p_tile_is_right_edge(t2p->tiff_tiles[t2p->pdf_page], tile-1)!=0){
-- buflen=sprintf(
-- buffer,
-- "%lu",
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
- (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_edgetilewidth);
- } else {
-- buflen=sprintf(
-- buffer,
-- "%lu",
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
- (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilewidth);
- }
- }
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) "\n/Height ", 9);
-- _TIFFmemset((tdata_t)buffer, 0x00, 16);
- if(tile==0){
-- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->tiff_length);
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->tiff_length);
- } else {
- if(t2p_tile_is_bottom_edge(t2p->tiff_tiles[t2p->pdf_page], tile-1)!=0){
-- buflen=sprintf(
-- buffer,
-- "%lu",
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
- (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_edgetilelength);
- } else {
-- buflen=sprintf(
-- buffer,
-- "%lu",
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
- (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilelength);
- }
- }
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) "\n/BitsPerComponent ", 19);
-- _TIFFmemset((tdata_t)buffer, 0x00, 16);
-- buflen=sprintf(buffer, "%u", t2p->tiff_bitspersample);
-+ buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->tiff_bitspersample);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) "\n/ColorSpace ", 13);
- written += t2p_write_pdf_xobject_cs(t2p, output);
-@@ -4723,11 +4706,10 @@
- t2p->pdf_colorspace ^= T2P_CS_PALETTE;
- written += t2p_write_pdf_xobject_cs(t2p, output);
- t2p->pdf_colorspace |= T2P_CS_PALETTE;
-- buflen=sprintf(buffer, "%u", (0x0001 << t2p->tiff_bitspersample)-1 );
-+ buflen=snprintf(buffer, sizeof(buffer), "%u", (0x0001 << t2p->tiff_bitspersample)-1 );
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " ", 1);
-- _TIFFmemset(buffer, 0x00, 16);
-- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_palettecs );
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_palettecs );
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " 0 R ]\n", 7);
- return(written);
-@@ -4761,10 +4743,10 @@
- X_W /= Y_W;
- Z_W /= Y_W;
- Y_W = 1.0F;
-- buflen=sprintf(buffer, "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
-+ buflen=snprintf(buffer, sizeof(buffer), "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) "/Range ", 7);
-- buflen=sprintf(buffer, "[%d %d %d %d] \n",
-+ buflen=snprintf(buffer, sizeof(buffer), "[%d %d %d %d] \n",
- t2p->pdf_labrange[0],
- t2p->pdf_labrange[1],
- t2p->pdf_labrange[2],
-@@ -4780,26 +4762,26 @@
- tsize_t t2p_write_pdf_transfer(T2P* t2p, TIFF* output){
-
- tsize_t written=0;
-- char buffer[16];
-+ char buffer[32];
- int buflen=0;
-
- written += t2pWriteFile(output, (tdata_t) "<< /Type /ExtGState \n/TR ", 25);
- if(t2p->tiff_transferfunctioncount == 1){
-- buflen=sprintf(buffer, "%lu",
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
- (unsigned long)(t2p->pdf_xrefcount + 1));
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
- } else {
- written += t2pWriteFile(output, (tdata_t) "[ ", 2);
-- buflen=sprintf(buffer, "%lu",
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
- (unsigned long)(t2p->pdf_xrefcount + 1));
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
-- buflen=sprintf(buffer, "%lu",
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
- (unsigned long)(t2p->pdf_xrefcount + 2));
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
-- buflen=sprintf(buffer, "%lu",
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
- (unsigned long)(t2p->pdf_xrefcount + 3));
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
-@@ -4821,7 +4803,7 @@
- written += t2pWriteFile(output, (tdata_t) "/FunctionType 0 \n", 17);
- written += t2pWriteFile(output, (tdata_t) "/Domain [0.0 1.0] \n", 19);
- written += t2pWriteFile(output, (tdata_t) "/Range [0.0 1.0] \n", 18);
-- buflen=sprintf(buffer, "/Size [%u] \n", (1<<t2p->tiff_bitspersample));
-+ buflen=snprintf(buffer, sizeof(buffer), "/Size [%u] \n", (1<<t2p->tiff_bitspersample));
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) "/BitsPerSample 16 \n", 19);
- written += t2p_write_pdf_stream_dict(((tsize_t)1)<<(t2p->tiff_bitspersample+1), 0, output);
-@@ -4848,7 +4830,7 @@
- tsize_t t2p_write_pdf_xobject_calcs(T2P* t2p, TIFF* output){
-
- tsize_t written=0;
-- char buffer[128];
-+ char buffer[256];
- int buflen=0;
-
- float X_W=0.0;
-@@ -4916,16 +4898,16 @@
- written += t2pWriteFile(output, (tdata_t) "<< \n", 4);
- if(t2p->pdf_colorspace & T2P_CS_CALGRAY){
- written += t2pWriteFile(output, (tdata_t) "/WhitePoint ", 12);
-- buflen=sprintf(buffer, "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
-+ buflen=snprintf(buffer, sizeof(buffer), "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) "/Gamma 2.2 \n", 12);
- }
- if(t2p->pdf_colorspace & T2P_CS_CALRGB){
- written += t2pWriteFile(output, (tdata_t) "/WhitePoint ", 12);
-- buflen=sprintf(buffer, "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
-+ buflen=snprintf(buffer, sizeof(buffer), "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) "/Matrix ", 8);
-- buflen=sprintf(buffer, "[%.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f] \n",
-+ buflen=snprintf(buffer, sizeof(buffer), "[%.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f] \n",
- X_R, Y_R, Z_R,
- X_G, Y_G, Z_G,
- X_B, Y_B, Z_B);
-@@ -4944,11 +4926,11 @@
- tsize_t t2p_write_pdf_xobject_icccs(T2P* t2p, TIFF* output){
-
- tsize_t written=0;
-- char buffer[16];
-+ char buffer[32];
- int buflen=0;
-
- written += t2pWriteFile(output, (tdata_t) "[/ICCBased ", 11);
-- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_icccs);
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_icccs);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " 0 R] \n", 7);
-
-@@ -4958,11 +4940,11 @@
- tsize_t t2p_write_pdf_xobject_icccs_dict(T2P* t2p, TIFF* output){
-
- tsize_t written=0;
-- char buffer[16];
-+ char buffer[32];
- int buflen=0;
-
- written += t2pWriteFile(output, (tdata_t) "/N ", 3);
-- buflen=sprintf(buffer, "%u \n", t2p->tiff_samplesperpixel);
-+ buflen=snprintf(buffer, sizeof(buffer), "%u \n", t2p->tiff_samplesperpixel);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) "/Alternate ", 11);
- t2p->pdf_colorspace ^= T2P_CS_ICCBASED;
-@@ -5027,7 +5009,7 @@
- tsize_t t2p_write_pdf_xobject_stream_filter(ttile_t tile, T2P* t2p, TIFF* output){
-
- tsize_t written=0;
-- char buffer[16];
-+ char buffer[32];
- int buflen=0;
-
- if(t2p->pdf_compression==T2P_COMPRESS_NONE){
-@@ -5042,41 +5024,33 @@
- written += t2pWriteFile(output, (tdata_t) "<< /K -1 ", 9);
- if(tile==0){
- written += t2pWriteFile(output, (tdata_t) "/Columns ", 9);
-- buflen=sprintf(buffer, "%lu",
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
- (unsigned long)t2p->tiff_width);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " /Rows ", 7);
-- buflen=sprintf(buffer, "%lu",
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
- (unsigned long)t2p->tiff_length);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- } else {
- if(t2p_tile_is_right_edge(t2p->tiff_tiles[t2p->pdf_page], tile-1)==0){
- written += t2pWriteFile(output, (tdata_t) "/Columns ", 9);
-- buflen=sprintf(
-- buffer,
-- "%lu",
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
- (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilewidth);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- } else {
- written += t2pWriteFile(output, (tdata_t) "/Columns ", 9);
-- buflen=sprintf(
-- buffer,
-- "%lu",
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
- (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_edgetilewidth);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- }
- if(t2p_tile_is_bottom_edge(t2p->tiff_tiles[t2p->pdf_page], tile-1)==0){
- written += t2pWriteFile(output, (tdata_t) " /Rows ", 7);
-- buflen=sprintf(
-- buffer,
-- "%lu",
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
- (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilelength);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- } else {
- written += t2pWriteFile(output, (tdata_t) " /Rows ", 7);
-- buflen=sprintf(
-- buffer,
-- "%lu",
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu",
- (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_edgetilelength);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- }
-@@ -5103,21 +5077,17 @@
- if(t2p->pdf_compressionquality%100){
- written += t2pWriteFile(output, (tdata_t) "/DecodeParms ", 13);
- written += t2pWriteFile(output, (tdata_t) "<< /Predictor ", 14);
-- _TIFFmemset(buffer, 0x00, 16);
-- buflen=sprintf(buffer, "%u", t2p->pdf_compressionquality%100);
-+ buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->pdf_compressionquality%100);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " /Columns ", 10);
-- _TIFFmemset(buffer, 0x00, 16);
-- buflen = sprintf(buffer, "%lu",
-+ buflen = snprintf(buffer, sizeof(buffer), "%lu",
- (unsigned long)t2p->tiff_width);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " /Colors ", 9);
-- _TIFFmemset(buffer, 0x00, 16);
-- buflen=sprintf(buffer, "%u", t2p->tiff_samplesperpixel);
-+ buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->tiff_samplesperpixel);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " /BitsPerComponent ", 19);
-- _TIFFmemset(buffer, 0x00, 16);
-- buflen=sprintf(buffer, "%u", t2p->tiff_bitspersample);
-+ buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->tiff_bitspersample);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) ">>\n", 3);
- }
-@@ -5137,16 +5107,16 @@
- tsize_t t2p_write_pdf_xreftable(T2P* t2p, TIFF* output){
-
- tsize_t written=0;
-- char buffer[21];
-+ char buffer[64];
- int buflen=0;
- uint32 i=0;
-
- written += t2pWriteFile(output, (tdata_t) "xref\n0 ", 7);
-- buflen=sprintf(buffer, "%lu", (unsigned long)(t2p->pdf_xrefcount + 1));
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)(t2p->pdf_xrefcount + 1));
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
- written += t2pWriteFile(output, (tdata_t) " \n0000000000 65535 f \n", 22);
- for (i=0;i<t2p->pdf_xrefcount;i++){
-- sprintf(buffer, "%.10lu 00000 n \n",
-+ snprintf(buffer, sizeof(buffer), "%.10lu 00000 n \n",
- (unsigned long)t2p->pdf_xrefoffsets[i]);
- written += t2pWriteFile(output, (tdata_t) buffer, 20);
- }
-@@ -5170,17 +5140,14 @@
- snprintf(t2p->pdf_fileid + i, 9, "%.8X", rand());
-
- written += t2pWriteFile(output, (tdata_t) "trailer\n<<\n/Size ", 17);
-- buflen = sprintf(buffer, "%lu", (unsigned long)(t2p->pdf_xrefcount+1));
-+ buflen = snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)(t2p->pdf_xrefcount+1));
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
-- _TIFFmemset(buffer, 0x00, 32);
- written += t2pWriteFile(output, (tdata_t) "\n/Root ", 7);
-- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_catalog);
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_catalog);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
-- _TIFFmemset(buffer, 0x00, 32);
- written += t2pWriteFile(output, (tdata_t) " 0 R \n/Info ", 12);
-- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_info);
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_info);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
-- _TIFFmemset(buffer, 0x00, 32);
- written += t2pWriteFile(output, (tdata_t) " 0 R \n/ID[<", 11);
- written += t2pWriteFile(output, (tdata_t) t2p->pdf_fileid,
- sizeof(t2p->pdf_fileid) - 1);
-@@ -5188,9 +5155,8 @@
- written += t2pWriteFile(output, (tdata_t) t2p->pdf_fileid,
- sizeof(t2p->pdf_fileid) - 1);
- written += t2pWriteFile(output, (tdata_t) ">]\n>>\nstartxref\n", 16);
-- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_startxref);
-+ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_startxref);
- written += t2pWriteFile(output, (tdata_t) buffer, buflen);
-- _TIFFmemset(buffer, 0x00, 32);
- written += t2pWriteFile(output, (tdata_t) "\n%%EOF\n", 7);
-
- return(written);
-Index: tiff-4.0.3/tools/tiff2ps.c
-===================================================================
---- tiff-4.0.3.orig/tools/tiff2ps.c 2013-06-23 10:36:51.163629483 -0400
-+++ tiff-4.0.3/tools/tiff2ps.c 2013-06-23 10:36:51.155629481 -0400
-@@ -1781,8 +1781,8 @@
- imageOp = "imagemask";
-
- (void)strcpy(im_x, "0");
-- (void)sprintf(im_y, "%lu", (long) h);
-- (void)sprintf(im_h, "%lu", (long) h);
-+ (void)snprintf(im_y, sizeof(im_y), "%lu", (long) h);
-+ (void)snprintf(im_h, sizeof(im_h), "%lu", (long) h);
- tile_width = w;
- tile_height = h;
- if (TIFFIsTiled(tif)) {
-@@ -1803,7 +1803,7 @@
- }
- if (tile_height < h) {
- fputs("/im_y 0 def\n", fd);
-- (void)sprintf(im_y, "%lu im_y sub", (unsigned long) h);
-+ (void)snprintf(im_y, sizeof(im_y), "%lu im_y sub", (unsigned long) h);
- }
- } else {
- repeat_count = tf_numberstrips;
-@@ -1815,7 +1815,7 @@
- fprintf(fd, "/im_h %lu def\n",
- (unsigned long) tile_height);
- (void)strcpy(im_h, "im_h");
-- (void)sprintf(im_y, "%lu im_y sub", (unsigned long) h);
-+ (void)snprintf(im_y, sizeof(im_y), "%lu im_y sub", (unsigned long) h);
- }
- }
-
-Index: tiff-4.0.3/tools/tiffcrop.c
-===================================================================
---- tiff-4.0.3.orig/tools/tiffcrop.c 2013-06-23 10:36:51.163629483 -0400
-+++ tiff-4.0.3/tools/tiffcrop.c 2013-06-23 10:36:51.159629481 -0400
-@@ -2077,7 +2077,7 @@
- return 1;
- }
-
-- sprintf (filenum, "-%03d%s", findex, export_ext);
-+ snprintf(filenum, sizeof(filenum), "-%03d%s", findex, export_ext);
- filenum[14] = '\0';
- strncat (exportname, filenum, 15);
- }
-@@ -2230,8 +2230,8 @@
-
- /* dump.infilename is guaranteed to be NUL termimated and have 20 bytes
- fewer than PATH_MAX */
-- memset (temp_filename, '\0', PATH_MAX + 1);
-- sprintf (temp_filename, "%s-read-%03d.%s", dump.infilename, dump_images,
-+ snprintf(temp_filename, sizeof(temp_filename), "%s-read-%03d.%s",
-+ dump.infilename, dump_images,
- (dump.format == DUMP_TEXT) ? "txt" : "raw");
- if ((dump.infile = fopen(temp_filename, dump.mode)) == NULL)
- {
-@@ -2249,8 +2249,8 @@
-
- /* dump.outfilename is guaranteed to be NUL termimated and have 20 bytes
- fewer than PATH_MAX */
-- memset (temp_filename, '\0', PATH_MAX + 1);
-- sprintf (temp_filename, "%s-write-%03d.%s", dump.outfilename, dump_images,
-+ snprintf(temp_filename, sizeof(temp_filename), "%s-write-%03d.%s",
-+ dump.outfilename, dump_images,
- (dump.format == DUMP_TEXT) ? "txt" : "raw");
- if ((dump.outfile = fopen(temp_filename, dump.mode)) == NULL)
- {
-Index: tiff-4.0.3/tools/tiff2bw.c
-===================================================================
---- tiff-4.0.3.orig/tools/tiff2bw.c 2013-06-23 10:36:51.163629483 -0400
-+++ tiff-4.0.3/tools/tiff2bw.c 2013-06-23 10:36:51.159629481 -0400
-@@ -205,7 +205,7 @@
- }
- }
- TIFFSetField(out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
-- sprintf(thing, "B&W version of %s", argv[optind]);
-+ snprintf(thing, sizeof(thing), "B&W version of %s", argv[optind]);
- TIFFSetField(out, TIFFTAG_IMAGEDESCRIPTION, thing);
- TIFFSetField(out, TIFFTAG_SOFTWARE, "tiff2bw");
- outbuf = (unsigned char *)_TIFFmalloc(TIFFScanlineSize(out));
+++ /dev/null
-Description: Buffer overflow in gif2tiff
-Bug: http://bugzilla.maptools.org/show_bug.cgi?id=2450
-Bug-Debian: http://bugs.debian.org/719303
-
-Index: tiff-4.0.3/tools/gif2tiff.c
-===================================================================
---- tiff-4.0.3.orig/tools/gif2tiff.c 2013-08-22 11:46:11.960846910 -0400
-+++ tiff-4.0.3/tools/gif2tiff.c 2013-08-22 11:46:11.956846910 -0400
-@@ -333,6 +333,8 @@
- int status = 1;
-
- datasize = getc(infile);
-+ if (datasize > 12)
-+ return 0;
- clear = 1 << datasize;
- eoi = clear + 1;
- avail = clear + 2;
+++ /dev/null
-Description: use after free in tiff2pdf
-Bug: http://bugzilla.maptools.org/show_bug.cgi?id=2449
-Bug-Debian: http://bugs.debian.org/719303
-
-Index: tiff-4.0.3/tools/tiff2pdf.c
-===================================================================
---- tiff-4.0.3.orig/tools/tiff2pdf.c 2013-08-22 11:46:37.292847242 -0400
-+++ tiff-4.0.3/tools/tiff2pdf.c 2013-08-22 11:46:37.292847242 -0400
-@@ -2461,7 +2461,8 @@
- (unsigned long) t2p->tiff_datasize,
- TIFFFileName(input));
- t2p->t2p_error = T2P_ERR_ERROR;
-- _TIFFfree(buffer);
-+ _TIFFfree(buffer);
-+ return(0);
- } else {
- buffer=samplebuffer;
- t2p->tiff_datasize *= t2p->tiff_samplesperpixel;
+++ /dev/null
-Description: OOB write in gif2tiff
-Bug-Redhat: https://bugzilla.redhat.com/show_bug.cgi?id=996468
-
-Index: tiff-4.0.3/tools/gif2tiff.c
-===================================================================
---- tiff-4.0.3.orig/tools/gif2tiff.c 2013-08-24 11:17:13.546447901 -0400
-+++ tiff-4.0.3/tools/gif2tiff.c 2013-08-24 11:17:13.546447901 -0400
-@@ -400,6 +400,10 @@
- }
-
- if (oldcode == -1) {
-+ if (code >= clear) {
-+ fprintf(stderr, "bad input: code=%d is larger than clear=%d\n",code, clear);
-+ return 0;
-+ }
- *(*fill)++ = suffix[code];
- firstchar = oldcode = code;
- return 1;
+++ /dev/null
-Index: tiff/tools/gif2tiff.c
-===================================================================
---- tiff.orig/tools/gif2tiff.c
-+++ tiff/tools/gif2tiff.c
-@@ -280,6 +280,10 @@ readgifimage(char* mode)
- fprintf(stderr, "no colormap present for image\n");
- return (0);
- }
-+ if (width == 0 || height == 0) {
-+ fprintf(stderr, "Invalid value of width or height\n");
-+ return(0);
-+ }
- if ((raster = (unsigned char*) _TIFFmalloc(width*height+EXTRAFUDGE)) == NULL) {
- fprintf(stderr, "not enough memory for image\n");
- return (0);
-@@ -404,6 +408,10 @@ process(register int code, unsigned char
- fprintf(stderr, "bad input: code=%d is larger than clear=%d\n",code, clear);
- return 0;
- }
-+ if (*fill >= raster + width*height) {
-+ fprintf(stderr, "raster full before eoi code\n");
-+ return 0;
-+ }
- *(*fill)++ = suffix[code];
- firstchar = oldcode = code;
- return 1;
-@@ -434,6 +442,10 @@ process(register int code, unsigned char
- }
- oldcode = incode;
- do {
-+ if (*fill >= raster + width*height) {
-+ fprintf(stderr, "raster full before eoi code\n");
-+ return 0;
-+ }
- *(*fill)++ = *--stackp;
- } while (stackp > stack);
- return 1;
+++ /dev/null
-Description: CVE-2014-9330
- Integer overflow in bmp2tiff
-Origin: upstream, http://bugzilla.maptools.org/show_bug.cgi?id=2494
-Bug: http://bugzilla.maptools.org/show_bug.cgi?id=2494
-Bug-Debian: http://bugs.debian.org/773987
-
-Index: tiff/tools/bmp2tiff.c
-===================================================================
---- tiff.orig/tools/bmp2tiff.c
-+++ tiff/tools/bmp2tiff.c
-@@ -1,4 +1,4 @@
--/* $Id: bmp2tiff.c,v 1.23 2010-03-10 18:56:49 bfriesen Exp $
-+/* $Id: bmp2tiff.c,v 1.24 2014-12-21 15:15:32 erouault Exp $
- *
- * Project: libtiff tools
- * Purpose: Convert Windows BMP files in TIFF.
-@@ -403,6 +403,13 @@ main(int argc, char* argv[])
-
- width = info_hdr.iWidth;
- length = (info_hdr.iHeight > 0) ? info_hdr.iHeight : -info_hdr.iHeight;
-+ if( width <= 0 || length <= 0 )
-+ {
-+ TIFFError(infilename,
-+ "Invalid dimensions of BMP file" );
-+ close(fd);
-+ return -1;
-+ }
-
- switch (info_hdr.iBitCount)
- {
-@@ -593,6 +600,14 @@ main(int argc, char* argv[])
-
- compr_size = file_hdr.iSize - file_hdr.iOffBits;
- uncompr_size = width * length;
-+ /* Detect int overflow */
-+ if( uncompr_size / width != length )
-+ {
-+ TIFFError(infilename,
-+ "Invalid dimensions of BMP file" );
-+ close(fd);
-+ return -1;
-+ }
- comprbuf = (unsigned char *) _TIFFmalloc( compr_size );
- if (!comprbuf) {
- TIFFError(infilename,
PKG_NAME:=unixodbc
PKG_VERSION:=2.3.4
-PKG_RELEASE:=1
+PKG_RELEASE:=2
-PKG_SOURCE_URL:=@SF/unixodbc
+PKG_SOURCE_URL:=ftp://ftp.unixodbc.org/pub/unixODBC/
PKG_SOURCE:=unixODBC-$(PKG_VERSION).tar.gz
PKG_MD5SUM:=bd25d261ca1808c947cb687e2034be81
PKG_BUILD_DIR:=$(BUILD_DIR)/unixODBC-$(PKG_VERSION)
-nodist_EXTRA_libvips_la_SOURCES = resample/dummy2.cc
-endif
-
- # DLLs need dependant libs there too ... put @VIPS_LIBS@ at the end
+ # DLLs need dependent libs there too ... put @VIPS_LIBS@ at the end
libvips_la_LIBADD = \
resample/libresample.la \
diff -u --recursive --new-file vips-7.42.1-vanilla/libvips/resample/Makefile.am vips-7.42.1/libvips/resample/Makefile.am
include $(TOPDIR)/rules.mk
PKG_NAME:=zeromq
-PKG_VERSION:=4.1.1
+PKG_VERSION:=4.1.3
PKG_RELEASE:=1
PKG_MAINTAINER:=Dirk Chang <dirk@kooiot.com>
PKG_LICENSE:=GPL-3.0+
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:= http://download.zeromq.org
-PKG_MD5SUM:=0a4b44aa085644f25c177f79dc13f253
+PKG_MD5SUM:=d0824317348cfb44b8692e19cc73dc3a
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_DEPENDS:=libuuid
--- a/configure.ac
+++ b/configure.ac
-@@ -147,8 +147,10 @@ case "${host_os}" in
+@@ -148,8 +148,10 @@ case "${host_os}" in
*linux*)
# Define on Linux to enable all library features. Define if using a gnu compiler
if test "x$GXX" = "xyes"; then
--- a/src/metadata.hpp
+++ b/src/metadata.hpp
-@@ -31,7 +31,7 @@ namespace zmq
+@@ -41,7 +41,7 @@ namespace zmq
{
public:
virtual ~metadata_t ();
--- a/src/socket_base.cpp
+++ b/src/socket_base.cpp
-@@ -20,6 +20,7 @@
+@@ -30,6 +30,7 @@
#include <new>
#include <string>
#include <algorithm>
--- a/src/stream_engine.cpp
+++ b/src/stream_engine.cpp
-@@ -198,7 +198,7 @@ void zmq::stream_engine_t::plug (io_thre
+@@ -208,7 +208,7 @@ void zmq::stream_engine_t::plug (io_thre
// Compile metadata.
typedef metadata_t::dict_t properties_t;
properties_t properties;
zmq_assert (metadata == NULL);
metadata = new (std::nothrow) metadata_t (properties);
}
-@@ -805,7 +805,7 @@ void zmq::stream_engine_t::mechanism_rea
+@@ -815,7 +815,7 @@ void zmq::stream_engine_t::mechanism_rea
// If we have a peer_address, add it to metadata
if (!peer_address.empty()) {
--- a/src/blob.hpp
+++ b/src/blob.hpp
-@@ -21,6 +21,7 @@
+@@ -31,6 +31,7 @@
#define __ZMQ_BLOB_HPP_INCLUDED__
#include <string>
--- /dev/null
+--- a/src/blob.hpp
++++ b/src/blob.hpp
+@@ -38,7 +38,7 @@
+ // They seem to be doing something for MSC, but since I only have gcc, I'll just do that
+ // Assuming this is uneccessary on GCC 4
+ // #if (defined(__GNUC__) && (__GNUC__ >= 3) || (defined(_MSC_VER) && _MSC_VER > 1000))
+-#if (defined(__GNUC__) && (__GNUC__ >= 3) && (__GNUC__ <= 4))
++#if (defined(__GNUC__) && (__GNUC__ >= 3))
+ namespace std
+ {
+ template<>
--- a/src/mtrie.cpp
+++ b/src/mtrie.cpp
-@@ -17,11 +17,11 @@
+@@ -27,11 +27,11 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "windows.hpp"
--- a/src/raw_encoder.cpp
+++ b/src/raw_encoder.cpp
-@@ -17,6 +17,11 @@
+@@ -27,6 +27,11 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "likely.hpp"
--- a/src/trie.cpp
+++ b/src/trie.cpp
-@@ -17,11 +17,11 @@
+@@ -27,11 +27,11 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "windows.hpp"
--- a/src/encoder.hpp
+++ b/src/encoder.hpp
-@@ -29,7 +29,6 @@
+@@ -39,7 +39,6 @@
#include <stddef.h>
#include <string.h>
#include <stdlib.h>
#include "msg.hpp"
--- a/src/v1_encoder.cpp
+++ b/src/v1_encoder.cpp
-@@ -17,6 +17,11 @@
+@@ -27,6 +27,11 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "likely.hpp"
--- a/src/v2_encoder.cpp
+++ b/src/v2_encoder.cpp
-@@ -17,6 +17,11 @@
+@@ -27,6 +27,11 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
include $(TOPDIR)/rules.mk
PKG_NAME:=postfix
-PKG_RELEASE:=2
+PKG_RELEASE:=1
PKG_SOURCE_URL:=ftp://ftp.porcupine.org/mirrors/postfix-release/official/
-PKG_VERSION:=3.0.1
-PKG_MD5SUM:=3ec1416e7d4fba9566297c8fcf7a348c
+PKG_VERSION:=3.1.0
+PKG_MD5SUM:=b4a506fa74c69c6fb1875c0971268344
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_MAINTAINER:=Denis Shulyaka <Shulyaka@gmail.com>
PKG_LICENSE:=IPL-1.0
CATEGORY:=Mail
TITLE:=Postfix Mail Transmit Agent
URL:=http://www.postfix.org/
- DEPENDS:=+POSTFIX_TLS:libopenssl +POSTFIX_SASL:libsasl2 +POSTFIX_LDAP:libopenldap +POSTFIX_DB:libdb47 +libpcre
+ DEPENDS:=+POSTFIX_TLS:libopenssl +POSTFIX_SASL:libsasl2 +POSTFIX_LDAP:libopenldap +POSTFIX_DB:libdb47 +POSTFIX_EAI:icu +libpcre
endef
define Package/postfix/description
default y
help
Implements support for cdb files using tinycdb
+ config POSTFIX_EAI
+ bool "SMTPUTF8 support"
+ default n
+ help
+ Enable Postfix support for Email Address Internationalization
+ (EAI) as defined in RFC 6531 (SMTPUTF8 extension), RFC 6532
+ (Internationalized email headers) and RFC 6533
+ (Internationalized delivery status notifications).
+ Since version 3.0, Postfix fully supports UTF-8 email
+ addresses and UTF-8 message header values.
endmenu
endef
-CCARGS=-DNO_EPOLL -DNO_SIGSETJMP -DNO_NIS -DNO_EAI
+CCARGS=-DNO_NIS
AUXLIBS=-L$(STAGING_DIR)/usr/lib
default_database_type=cdb
CCARGS+=-DNO_DB
endif
+ifdef CONFIG_POSTFIX_EAI
+ AUXLIBS+=-licuuc
+ CCARGS+=-DHAS_EAI
+ smtputf8_conf = yes
+else
+ CCARGS+=-DNO_EAI
+ smtputf8_conf = no
+endif
+
CCARGS+=-DDEF_DB_TYPE=\"$(default_database_type)\"
config_directory=/etc/postfix# also add this to postfix init file
$(config_directory)/main.cf
$(config_directory)/master.cf
$(config_directory)/aliases
+$(config_directory)/virtual
endef
define Build/Configure
# postconf -d > /tmp/main.cf.new
# 3. Transfer /tmp/main.cf.new file to the build system
# 4. Execute the following command:
-# cat /tmp/main.cf.new | ( echo '# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE'; echo '# TEXT HERE JUST SHOWS DEFAULT SETTINGS BUILT INTO POSTFIX.'; echo '#'; grep -v ^alias_maps\ = |grep -v ^alias_database\ = |grep -v ^command_directory\ = |grep -v ^config_directory\ = |grep -v ^daemon_directory\ = |grep -v ^data_directory\ = |grep -v ^default_database_type\ = |grep -v ^html_directory\ = |grep -v ^mail_spool_directory\ = |grep -v ^mailq_path\ = |grep -v ^manpage_directory\ = |grep -v ^meta_directory\ = |grep -v ^mydomain\ = |grep -v ^myhostname\ = |grep -v ^mynetworks\ = |grep -v ^mynetworks_style\ = |grep -v ^newaliases_path\ = |grep -v ^queue_directory\ = |grep -v ^readme_directory\ = |grep -v ^sample_directory\ = |grep -v ^sendmail_path\ = |grep -v ^shlib_directory\ = |grep -v ^smtputf8_enable\ = ) > files/main.cf.default
+# cat /tmp/main.cf.new | ( echo '# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE'; echo '# TEXT HERE JUST SHOWS DEFAULT SETTINGS BUILT INTO POSTFIX.'; echo '#'; grep -v ^alias_maps\ = |grep -v ^alias_database\ = |grep -v ^command_directory\ = |grep -v ^config_directory\ = |grep -v ^daemon_directory\ = |grep -v ^data_directory\ = |grep -v ^default_database_type\ = |grep -v ^html_directory\ = |grep -v ^mail_spool_directory\ = |grep -v ^mailq_path\ = |grep -v ^manpage_directory\ = |grep -v ^meta_directory\ = |grep -v ^mydomain\ = |grep -v ^myhostname\ = |grep -v ^mynetworks\ = |grep -v ^mynetworks_style\ = |grep -v ^newaliases_path\ = |grep -v ^queue_directory\ = |grep -v ^readme_directory\ = |grep -v ^sample_directory\ = |grep -v ^sendmail_path\ = |grep -v ^shlib_directory\ = |grep -v ^smtputf8_enable\ = |grep -v ^virtual_maps\ = |grep -v ^process_id\ = ) > files/main.cf.default
# 5. Done. Now you can rebuild the package with new main.cf.default.
#
define Build/Compile
- # Currently postfix has a bug with Makefiles that CCARGS are not passed to the compiler, so we are copying them to CC
+ # Currently postfix has a bug with Makefiles that CCARGS are not passed to the compiler, so we are copying them to CC as a workaround
cd $(PKG_BUILD_DIR); $(MAKE) $(TARGET_CONFIGURE_OPTS) CC='$(TARGET_CC) $(CCARGS)'
cp ./files/main.cf.default $(PKG_BUILD_DIR)/conf/main.cf.default
echo "default_database_type = $(default_database_type)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
echo "alias_database = $(default_database_type):$(config_directory)/aliases" >> $(PKG_BUILD_DIR)/conf/main.cf.default
echo "alias_maps = $(default_database_type):$(config_directory)/aliases" >> $(PKG_BUILD_DIR)/conf/main.cf.default
+ echo "virtual_maps = $(default_database_type):$(config_directory)/virtual" >> $(PKG_BUILD_DIR)/conf/main.cf.default
echo "sendmail_path = $(sendmail_path)$(ln_suffix)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
echo "newaliases_path = $(newaliases_path)$(ln_suffix)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
echo "mailq_path = $(mailq_path)$(ln_suffix)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
echo "mail_spool_directory = $(mail_spool_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
echo "shlib_directory = $(shlib_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
echo "meta_directory = $(meta_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
- echo "smtputf8_enable = no" >> $(PKG_BUILD_DIR)/conf/main.cf.default
+ echo "smtputf8_enable = $(smtputf8_conf)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
endef
define Package/postfix/install
grep -qc main\.cf "$${IPKG_INSTROOT}"/etc/sysupgrade.conf >/dev/null || echo "$(config_directory)/main.cf" >> "$${IPKG_INSTROOT}"/etc/sysupgrade.conf
grep -qc master\.cf "$${IPKG_INSTROOT}"/etc/sysupgrade.conf >/dev/null || echo "$(config_directory)/master.cf" >> "$${IPKG_INSTROOT}"/etc/sysupgrade.conf
grep -qc aliases "$${IPKG_INSTROOT}"/etc/sysupgrade.conf >/dev/null || echo "$(config_directory)/aliases" >> "$${IPKG_INSTROOT}"/etc/sysupgrade.conf
+ grep -qc virtual "$${IPKG_INSTROOT}"/etc/sysupgrade.conf >/dev/null || echo "$(config_directory)/virtual" >> "$${IPKG_INSTROOT}"/etc/sysupgrade.conf
touch "$${IPKG_INSTROOT}$(config_directory)"/opkg_postinst
if [ -z "$${IPKG_INSTROOT}" ]; then
- ps | grep "postfix/master" | grep -cvq grep >/dev/null && /etc/init.d/postfix reload
+ ps | grep "postfix/master" | grep -cvq grep >/dev/null && /etc/init.d/postfix restart
fi
endef
#!/bin/sh
rm -f $${IPKG_INSTROOT}$(config_directory)/aliases.cdb $${IPKG_INSTROOT}$(config_directory)/aliases.db $${IPKG_INSTROOT}$(data_directory)/master.lock
+ rm -f $${IPKG_INSTROOT}$(config_directory)/virtual.cdb $${IPKG_INSTROOT}$(config_directory)/virtual.db
+
rm -f "$${IPKG_INSTROOT}$(sendmail_path)" "$${IPKG_INSTROOT}$(newaliases_path)" "$${IPKG_INSTROOT}$(mailq_path)"
if [ -f "$${IPKG_INSTROOT}$(sendmail_path)$(ln_old_suffix)" ]; then
address_verify_negative_cache = yes
address_verify_negative_expire_time = 3d
address_verify_negative_refresh_time = 3h
+address_verify_pending_request_limit = 5000
address_verify_poll_count = ${stress?{1}:{3}}
address_verify_poll_delay = 3s
address_verify_positive_expire_time = 31d
default_recipient_refill_delay = 5s
default_recipient_refill_limit = 100
default_transport = smtp
+default_transport_rate_delay = 0s
default_verp_delimiters = +=
defer_code = 450
defer_service_name = defer
disable_mime_output_conversion = no
disable_verp_bounces = no
disable_vrfy_command = no
+dns_ncache_ttl_fix_enable = no
dnsblog_reply_delay = 0s
dnsblog_service_name = dnsblog
dont_remove = 0
error_recipient_refill_delay = $default_recipient_refill_delay
error_recipient_refill_limit = $default_recipient_refill_limit
error_service_name = error
+error_transport_rate_delay = $default_transport_rate_delay
execution_directory_expansion_filter = 1234567890!@%-_=+:,./abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
expand_owner_alias = no
export_environment = TZ MAIL_CONFIG LANG
lmtp_dns_support_level =
lmtp_enforce_tls = no
lmtp_extra_recipient_limit = $default_extra_recipient_limit
+lmtp_fallback_relay =
lmtp_generic_maps =
lmtp_header_checks =
lmtp_host_lookup = dns
lmtp_tls_CApath =
lmtp_tls_block_early_mail_reply = no
lmtp_tls_cert_file =
-lmtp_tls_ciphers = export
+lmtp_tls_ciphers = medium
lmtp_tls_dcert_file =
lmtp_tls_dkey_file = $lmtp_tls_dcert_file
lmtp_tls_eccert_file =
lmtp_tls_loglevel = 0
lmtp_tls_mandatory_ciphers = medium
lmtp_tls_mandatory_exclude_ciphers =
-lmtp_tls_mandatory_protocols = !SSLv2
+lmtp_tls_mandatory_protocols = !SSLv2, !SSLv3
lmtp_tls_note_starttls_offer = no
lmtp_tls_per_site =
lmtp_tls_policy_maps =
-lmtp_tls_protocols = !SSLv2
+lmtp_tls_protocols = !SSLv2, !SSLv3
lmtp_tls_scert_verifydepth = 9
lmtp_tls_secure_cert_match = nexthop
lmtp_tls_security_level =
lmtp_tls_trust_anchor_file =
lmtp_tls_verify_cert_match = hostname
lmtp_tls_wrappermode = no
+lmtp_transport_rate_delay = $default_transport_rate_delay
lmtp_use_tls = no
lmtp_xforward_timeout = 300s
local_command_shell =
local_recipient_refill_delay = $default_recipient_refill_delay
local_recipient_refill_limit = $default_recipient_refill_limit
local_transport = local:$myhostname
+local_transport_rate_delay = $default_transport_rate_delay
luser_relay =
mail_name = Postfix
mail_owner = postfix
-mail_release_date = 20150208
-mail_version = 3.0.0
+mail_release_date = 20160224
+mail_version = 3.1.0
mailbox_command =
mailbox_command_maps =
mailbox_delivery_lock = fcntl, dotlock
milter_header_checks =
milter_helo_macros = {tls_version} {cipher} {cipher_bits} {cert_subject} {cert_issuer}
milter_macro_daemon_name = $myhostname
+milter_macro_defaults =
milter_macro_v = $mail_name $mail_version
milter_mail_macros = i {auth_type} {auth_authen} {auth_author} {mail_addr} {mail_host} {mail_mailer}
milter_protocol = 6
non_fqdn_reject_code = 504
non_smtpd_milters =
notify_classes = resource, software
+openssl_path = openssl
owner_request_special = yes
parent_domain_matches_subdomains = debug_peer_list,fast_flush_domains,mynetworks,permit_mx_backup_networks,qmqpd_authorized_clients,relay_domains,smtpd_access_maps
permit_mx_backup_networks =
postscreen_discard_ehlo_keyword_address_maps = $smtpd_discard_ehlo_keyword_address_maps
postscreen_discard_ehlo_keywords = $smtpd_discard_ehlo_keywords
postscreen_dnsbl_action = ignore
+postscreen_dnsbl_max_ttl = ${postscreen_dnsbl_ttl?{$postscreen_dnsbl_ttl}:{1}}h
+postscreen_dnsbl_min_ttl = 60s
postscreen_dnsbl_reply_map =
postscreen_dnsbl_sites =
postscreen_dnsbl_threshold = 1
postscreen_dnsbl_timeout = 10s
-postscreen_dnsbl_ttl = 1h
postscreen_dnsbl_whitelist_threshold = 0
postscreen_enforce_tls = $smtpd_enforce_tls
postscreen_expansion_filter = $smtpd_expansion_filter
postscreen_watchdog_timeout = 10s
postscreen_whitelist_interfaces = static:all
prepend_delivered_header = command, file, forward
-process_id = 25939
process_id_directory = pid
process_name = postconf
propagate_unmatched_extensions = canonical, virtual
relay_recipient_refill_delay = $default_recipient_refill_delay
relay_recipient_refill_limit = $default_recipient_refill_limit
relay_transport = relay
+relay_transport_rate_delay = $default_transport_rate_delay
relayhost =
relocated_maps =
remote_header_rewrite_domain =
retry_recipient_limit = $default_recipient_limit
retry_recipient_refill_delay = $default_recipient_refill_delay
retry_recipient_refill_limit = $default_recipient_refill_limit
+retry_transport_rate_delay = $default_transport_rate_delay
rewrite_service_name = rewrite
send_cyrus_sasl_authzid = no
sender_bcc_maps =
smtp_cname_overrides_servername = no
smtp_connect_timeout = 30s
smtp_connection_cache_destinations =
-smtp_connection_cache_on_demand = yes
+smtp_connection_cache_on_demand = no
smtp_connection_cache_time_limit = 2s
smtp_connection_reuse_count_limit = 0
smtp_connection_reuse_time_limit = 300s
smtp_tls_CApath =
smtp_tls_block_early_mail_reply = no
smtp_tls_cert_file =
-smtp_tls_ciphers = export
+smtp_tls_ciphers = medium
+smtp_tls_dane_insecure_mx_policy = dane
smtp_tls_dcert_file =
smtp_tls_dkey_file = $smtp_tls_dcert_file
smtp_tls_eccert_file =
smtp_tls_loglevel = 0
smtp_tls_mandatory_ciphers = medium
smtp_tls_mandatory_exclude_ciphers =
-smtp_tls_mandatory_protocols = !SSLv2
+smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
smtp_tls_note_starttls_offer = no
smtp_tls_per_site =
smtp_tls_policy_maps =
-smtp_tls_protocols = !SSLv2
+smtp_tls_protocols = !SSLv2, !SSLv3
smtp_tls_scert_verifydepth = 9
smtp_tls_secure_cert_match = nexthop, dot-nexthop
smtp_tls_security_level =
smtp_tls_trust_anchor_file =
smtp_tls_verify_cert_match = hostname
smtp_tls_wrappermode = no
+smtp_transport_rate_delay = $default_transport_rate_delay
smtp_use_tls = no
smtp_xforward_timeout = 300s
smtpd_authorized_verp_clients = $authorized_verp_clients
smtpd_authorized_xclient_hosts =
smtpd_authorized_xforward_hosts =
smtpd_banner = $myhostname ESMTP $mail_name
+smtpd_client_auth_rate_limit = 0
smtpd_client_connection_count_limit = 50
smtpd_client_connection_rate_limit = 0
smtpd_client_event_limit_exceptions = ${smtpd_client_connection_limit_exceptions:$mynetworks}
smtpd_policy_service_default_action = 451 4.3.5 Server configuration problem
smtpd_policy_service_max_idle = 300s
smtpd_policy_service_max_ttl = 1000s
+smtpd_policy_service_policy_context =
smtpd_policy_service_request_limit = 0
smtpd_policy_service_retry_delay = 1s
smtpd_policy_service_timeout = 100s
smtpd_tls_auth_only = no
smtpd_tls_ccert_verifydepth = 9
smtpd_tls_cert_file =
-smtpd_tls_ciphers = export
+smtpd_tls_ciphers = medium
smtpd_tls_dcert_file =
smtpd_tls_dh1024_param_file =
smtpd_tls_dh512_param_file =
smtpd_tls_loglevel = 0
smtpd_tls_mandatory_ciphers = medium
smtpd_tls_mandatory_exclude_ciphers =
-smtpd_tls_mandatory_protocols = !SSLv2
-smtpd_tls_protocols =
+smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
+smtpd_tls_protocols = !SSLv2, !SSLv3
smtpd_tls_received_header = no
smtpd_tls_req_ccert = no
smtpd_tls_security_level =
tls_disable_workarounds =
tls_eecdh_strong_curve = prime256v1
tls_eecdh_ultra_curve = secp384r1
-tls_export_cipherlist = aNULL:-aNULL:ALL:+RC4:@STRENGTH
-tls_high_cipherlist = aNULL:-aNULL:ALL:!EXPORT:!LOW:!MEDIUM:+RC4:@STRENGTH
+tls_export_cipherlist = aNULL:-aNULL:HIGH:MEDIUM:LOW:EXPORT:+RC4:@STRENGTH
+tls_high_cipherlist = aNULL:-aNULL:HIGH:@STRENGTH
tls_legacy_public_key_fingerprints = no
-tls_low_cipherlist = aNULL:-aNULL:ALL:!EXPORT:+RC4:@STRENGTH
-tls_medium_cipherlist = aNULL:-aNULL:ALL:!EXPORT:!LOW:+RC4:@STRENGTH
+tls_low_cipherlist = aNULL:-aNULL:HIGH:MEDIUM:LOW:+RC4:@STRENGTH
+tls_medium_cipherlist = aNULL:-aNULL:HIGH:MEDIUM:+RC4:@STRENGTH
tls_null_cipherlist = eNULL:!aNULL
tls_preempt_cipherlist = no
tls_random_bytes = 32
virtual_recipient_refill_delay = $default_recipient_refill_delay
virtual_recipient_refill_limit = $default_recipient_refill_limit
virtual_transport = virtual
+virtual_transport_rate_delay = $default_transport_rate_delay
virtual_uid_maps =
START=50
STOP=50
+EXTRA_COMMANDS="status abort flush"
+EXTRA_HELP=" status Display the service status
+ abort Stop the service abruptly. Running processes are signaled to stop immediately
+ flush Force delivery: attempt to deliver every message in the deferred mail queue"
upgrade() {
config_directory="$IPKG_INSTROOT"/etc/postfix
echo "myhostname = $(uci get system.@system[0].hostname)" >> "$config_directory"/main.cf.default
echo "mydomain = $(uci get system.@system[0].hostname|sed -e "s/[^\.]*\.\(.*\)/\1/")" >> "$config_directory"/main.cf.default
- ifconfig | grep "inet addr" | sed -e "s/.*inet addr:\([0-9.]*\).*Mask:/\1 /" | while read IP NETMASK; do eval "$(ipcalc.sh $IP $NETMASK)"; echo "$NETWORK/$PREFIX"; done | xargs echo "mynetworks =" >> "$config_directory"/main.cf.default
+ (eval $(ipcalc.sh $(uci get network.lan.ipaddr) $(uci get network.lan.netmask)); echo mynetworks = 127.0.0.0/8 $NETWORK/$PREFIX) >> "$config_directory"/main.cf.default
echo "mynetworks_style = subnet" >> "$config_directory"/main.cf.default
grep -qc "^sendmail_path[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^sendmail_path =" "$config_directory"/main.cf.default)"
grep -qc "^setgid_group[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^setgid_group =" "$config_directory"/main.cf.default)"
grep -qc "^myhostname[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^myhostname =" "$config_directory"/main.cf.default)"
grep -qc "^mydomain[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^mydomain =" "$config_directory"/main.cf.default)"
- grep -qc "^mynetworks[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^mynetworks =" "$config_directory"/main.cf.default)"
+ #grep -qc "^mynetworks[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^mynetworks =" "$config_directory"/main.cf.default)" #Setting mynetworks_style is enough
grep -qc "^mynetworks_style[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^mynetworks_style =" "$config_directory"/main.cf.default)"
grep -qc "^shlib_directory[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^shlib_directory =" "$config_directory"/main.cf.default)"
grep -qc "^meta_directory[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^meta_directory =" "$config_directory"/main.cf.default)"
postfix post-install upgrade-source
postfix upgrade-configuration
newaliases
+ postmap "$config_directory"/virtual
+ postfix check
fi
}
upgrade
postfix reload
}
+
+status() {
+ postfix status
+}
+
+abort() {
+ postfix abort
+}
+
+flush() {
+ postfix flush
+}
diff -rupN postfix-2.8.1/src/smtpd/smtpd_check.c postfix-2.8.1_patched/src/smtpd/smtpd_check.c
--- postfix-2.8.1/src/smtpd/smtpd_check.c 2011-01-04 22:03:50.000000000 +0300
+++ postfix-2.8.1_patched/src/smtpd/smtpd_check.c 2011-03-06 19:35:39.000000000 +0300
-@@ -5277,7 +5277,7 @@ char *smtpd_check_queue(SMTPD_STATE *s
+@@ -5296,7 +5296,7 @@ char *smtpd_check_queue(SMTPD_STATE *s
*/
#define BLOCKS(x) ((x) / fsbuf.block_size)
diff -Naur postfix-2.10.2/conf/post-install postfix-2.10.2_patched/conf/post-install
--- postfix-2.10.2/conf/post-install 2013-06-13 18:07:46.000000000 +0400
+++ postfix-2.10.2_patched/conf/post-install 2013-11-19 21:17:49.572820573 +0400
-@@ -359,10 +359,10 @@
+@@ -361,10 +361,10 @@
# Sanity checks
case $setgid_group in
no) echo $0: Error: setgid_group no longer accepts \"no\" values. 1>&2
-@@ -370,7 +370,7 @@
+@@ -372,7 +372,7 @@
esac
for path in "$daemon_directory" "$command_directory" "$queue_directory" \
"$meta_directory"
do
case "$path" in
-@@ -379,7 +379,7 @@
+@@ -381,7 +381,7 @@
esac
done
diff -Naur postfix-2.10.2/postfix-install postfix-2.10.2_patched/postfix-install
--- postfix-2.10.2/postfix-install 2012-05-22 23:40:29.000000000 +0400
+++ postfix-2.10.2_patched/postfix-install 2013-11-19 21:12:20.694160734 +0400
-@@ -543,13 +543,13 @@
+@@ -554,13 +554,13 @@
exit 1;;
esac
for path in "$html_directory" "$readme_directory" "$shlib_directory"
do
-@@ -562,7 +562,7 @@
+@@ -573,7 +573,7 @@
done
for path in "$daemon_directory" "$data_directory" "$command_directory" "$queue_directory" \
"$meta_directory"
do
case "$path" in
-@@ -758,8 +758,8 @@
+@@ -780,8 +780,8 @@
compare_or_replace $mode "$owner" "$group" html/$file \
$HTML_DIRECTORY/$file || exit 1;;
'$manpage_directory')
diff -Naur postfix-2.11.1/src/util/sys_defs.h postfix-2.11.1.patched/src/util/sys_defs.h
--- postfix-2.11.1/src/util/sys_defs.h 2013-09-30 00:51:55.000000000 +0400
+++ postfix-2.11.1.patched/src/util/sys_defs.h 2014-09-29 03:11:48.962277971 +0400
-@@ -768,9 +768,8 @@
+@@ -769,9 +769,8 @@
#define INTERNAL_LOCK MYFLOCK_STYLE_FLOCK
#define DEF_MAILBOX_LOCK "fcntl, dotlock" /* RedHat >= 4.x */
#define HAS_FSYNC
---- a/makedefs
-+++ b/makedefs
-@@ -190,9 +190,9 @@ error() {
+--- a/makedefs 2016-01-28 12:30:14.444082390 -0500
++++ b/makedefs 2016-01-28 13:44:02.092006512 -0500
+@@ -198,7 +198,7 @@ error() {
case $# in
# Officially supported usage.
- 0) SYSTEM=`(uname -s) 2>/dev/null`
-- RELEASE=`(uname -r) 2>/dev/null`
-- VERSION=`(uname -v) 2>/dev/null`
-+ 0) SYSTEM="Linux"
-+ RELEASE="3.10.18"
-+ VERSION="OpenWRT"
- case "$VERSION" in
- dcosx*) SYSTEM=$VERSION;;
- esac;;
-@@ -522,9 +522,9 @@ EOF
- esac
- for name in nsl resolv
- do
-- for lib in /usr/lib64 /lib64 /usr/lib /usr/lib/* /lib /lib/*
-+ for lib in /usr/lib64 /usr/lib64/* /usr/lib /usr/lib/* /lib /lib/*
- do
-- test -e $lib/lib$name.a -o -e $lib/lib$name.so && {
-+ test -e $STAGING_DIR/$lib/lib$name.a -o -e $STAGING_DIR/$lib/lib$name.so && {
- SYSLIBS="$SYSLIBS -l$name"
- break
- }
++ 0) SYSTEM="OpenWRT"
+ RELEASE=`(uname -r) 2>/dev/null`
+ # No ${x%%y} support in Solaris 11 /bin/sh
+ RELEASE_MAJOR=`expr "$RELEASE" : '\([0-9]*\)'` || exit 1
+@@ -212,6 +212,15 @@ case $# in
+ esac
+
+ case "$SYSTEM.$RELEASE" in
++ OpenWRT*) SYSTYPE=LINUX$RELEASE_MAJOR
++ SYSLIBS="$SYSLIBS -ldl"
++ : ${SHLIB_SUFFIX=.so}
++ : ${SHLIB_CFLAGS=-fPIC}
++ : ${SHLIB_LD="${CC-gcc} -shared"' -Wl,-soname,${LIB}'}
++ : ${SHLIB_RPATH='-Wl,--enable-new-dtags -Wl,-rpath,${SHLIB_DIR}'}
++ : ${SHLIB_ENV="LD_LIBRARY_PATH=`pwd`/lib"}
++ : ${PLUGIN_LD="${CC-gcc} -shared"}
++ ;;
+ SCO_SV.3.2) SYSTYPE=SCO5
+ # Use the native compiler by default
+ : ${CC="/usr/bin/cc -b elf"}
diff -Naur postfix-2.11.1/postfix-install postfix-2.11.1.patched/postfix-install
--- postfix-2.11.1/postfix-install 2014-10-05 20:43:58.598876904 +0400
+++ postfix-2.11.1.patched/postfix-install 2014-10-05 20:47:36.076700082 +0400
-@@ -830,23 +830,23 @@
+@@ -852,23 +852,23 @@
esac
done
diff -Naur postfix-2.11.1/conf/post-install postfix-2.11.1.patched/conf/post-install
--- postfix-2.11.1/conf/post-install 2014-10-05 20:43:58.597876946 +0400
+++ postfix-2.11.1.patched/conf/post-install 2014-10-11 16:28:01.258874097 +0400
-@@ -319,7 +319,7 @@
+@@ -321,7 +321,7 @@
case `uname -s` in
HP-UX*) FMT=cat;;
SunOS*) FMT=fake_fmt;;
- *) FMT=fmt;;
-+ *) FMT="xargs echo";;
++ *) FMT=cat;;
esac
# If a parameter is not set via the command line or environment,
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=ffmpeg
-PKG_VERSION:=2.7.2
+PKG_VERSION:=2.7.6
PKG_RELEASE:=1
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://ffmpeg.org/releases/
-PKG_MD5SUM:=7eb2140bab9f0a8669b65b50c8e4cfb5
+PKG_MD5SUM:=578c88242872e58cf0db5f23faa4b2af
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
PKG_LICENSE:=LGPL-2.1+ GPL-2+ LGPL-3
include $(TOPDIR)/rules.mk
PKG_NAME:=grilo-plugins
-PKG_VERSION:=0.2.16
+PKG_VERSION:=0.3.0
PKG_RELEASE:=1
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
PKG_LICENSE_FILES:=COPYING
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=@GNOME/grilo-plugins/0.2/
-PKG_MD5SUM:=62ecaad877b485a950259eef1ef38c18
+PKG_SOURCE_URL:=@GNOME/grilo-plugins/0.3/
+PKG_MD5SUM:=670f0302a4b91c043a7c9f9222545fbe
PKG_BUILD_DEPENDS:=glib2 grilo
--without-x \
define Package/grilo-plugins/install
- $(INSTALL_DIR) $(1)/usr/lib/grilo-0.2
+ $(INSTALL_DIR) $(1)/usr/lib/grilo-0.3
endef
define BuildPlugin
endef
define Package/grilo-plugins-$(1)/install
- $(INSTALL_DIR) $$(1)/usr/lib/grilo-0.2
+ $(INSTALL_DIR) $$(1)/usr/lib/grilo-0.3
for p in $(3); do \
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/grilo-0.2/libgrl$$$$$$$${p}.so $$(1)/usr/lib/grilo-0.2; \
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/grilo-0.2/grl-$$$$$$$${p}.xml $$(1)/usr/lib/grilo-0.2; \
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/grilo-0.3/libgrl$$$$$$$${p}.so $$(1)/usr/lib/grilo-0.3; \
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/grilo-0.3/grl-$$$$$$$${p}.xml $$(1)/usr/lib/grilo-0.3; \
done
endef
include $(TOPDIR)/rules.mk
PKG_NAME:=grilo
-PKG_VERSION:=0.2.14
+PKG_VERSION:=0.3.0
PKG_RELEASE:=1
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
PKG_LICENSE_FILES:=COPYING
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=@GNOME/grilo/0.2/
-PKG_MD5SUM:=7eba405ada20fefcb877d534d9d4f
+PKG_SOURCE_URL:=@GNOME/grilo/0.3/
+PKG_MD5SUM:=f8a51aacc604dcc308e71f8bca4c57ae
PKG_BUILD_DEPENDS:=glib2 libsoup libxml2
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/
$(CP) \
- $(PKG_INSTALL_DIR)/usr/include/grilo-0.2/ \
+ $(PKG_INSTALL_DIR)/usr/include/grilo-0.3/ \
$(1)/usr/include/
$(INSTALL_DIR) $(1)/usr/lib/
$(CP) \
$(INSTALL_DATA) \
$(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc \
$(1)/usr/lib/pkgconfig/
+ $(INSTALL_DIR) $(STAGING_DIR)/host/share/vala-0.30/vapi/
+ # Note: this are compiled elsewhere because grilo refuses to
+ # generate VAPI files unless gobject-introspection exists;
+ # OpenWrt does not yet have a gobject-introspection package.
+ $(INSTALL_DATA) \
+ ./files/*.vapi \
+ $(STAGING_DIR)/host/share/vala-0.30/vapi
endef
define Package/grilo/install
--- /dev/null
+/* grilo-0.3.vapi generated by vapigen-0.30, do not modify. */
+
+[CCode (cprefix = "Grl", gir_namespace = "Grl", gir_version = "0.3", lower_case_cprefix = "grl_")]
+namespace Grl {
+ [CCode (cheader_filename = "grilo.h", type_id = "grl_caps_get_type ()")]
+ public class Caps : GLib.Object {
+ [CCode (has_construct_function = false)]
+ public Caps ();
+ public unowned GLib.List<Grl.KeyID> get_key_filter ();
+ public unowned GLib.List<Grl.KeyID> get_key_range_filter ();
+ public Grl.TypeFilter get_type_filter ();
+ public bool is_key_filter (Grl.KeyID key);
+ public bool is_key_range_filter (Grl.KeyID key);
+ public void set_key_filter (GLib.List<Grl.KeyID> keys);
+ public void set_key_range_filter (GLib.List<Grl.KeyID> keys);
+ public void set_type_filter (Grl.TypeFilter filter);
+ public bool test_option (string key, GLib.Value value);
+ }
+ [CCode (cheader_filename = "grilo.h", type_id = "grl_config_get_type ()")]
+ public class Config : GLib.Object {
+ [CCode (array_length = false, array_null_terminated = true)]
+ public weak void*[] _grl_reserved;
+ [CCode (has_construct_function = false)]
+ public Config (string plugin, string? source);
+ public string get_api_key ();
+ public uint8 get_api_key_blob (size_t size);
+ public string get_api_secret ();
+ public string get_api_token ();
+ public string get_api_token_secret ();
+ public uint8 get_binary (string param, size_t? size);
+ public bool get_boolean (string param);
+ public float get_float (string param);
+ public int get_int (string param);
+ public string get_password ();
+ public string get_plugin ();
+ public string get_source ();
+ public string get_string (string param);
+ public string get_username ();
+ public bool has_param (string param);
+ public void @set (string param, GLib.Value value);
+ public void set_api_key (string key);
+ public void set_api_key_blob (uint8 blob, size_t size);
+ public void set_api_secret (string secret);
+ public void set_api_token (string token);
+ public void set_api_token_secret (string secret);
+ public void set_binary (string param, uint8 blob, size_t size);
+ public void set_boolean (string param, bool value);
+ public void set_float (string param, float value);
+ public void set_int (string param, int value);
+ public void set_password (string password);
+ public void set_plugin (string plugin);
+ public void set_source (string source);
+ public void set_string (string param, string value);
+ public void set_username (string username);
+ }
+ [CCode (cheader_filename = "grilo.h", type_id = "grl_data_get_type ()")]
+ public class Data : GLib.Object {
+ [CCode (array_length = false, array_null_terminated = true)]
+ public weak void*[] _grl_reserved;
+ [CCode (has_construct_function = false)]
+ public Data ();
+ public void add_binary (Grl.KeyID key, uint8 buf, size_t size);
+ public void add_boxed (Grl.KeyID key, void* boxed);
+ public void add_float (Grl.KeyID key, float floatvalue);
+ public void add_int (Grl.KeyID key, int intvalue);
+ public void add_int64 (Grl.KeyID key, int64 intvalue);
+ public void add_related_keys (Grl.RelatedKeys relkeys);
+ public void add_string (Grl.KeyID key, string strvalue);
+ public Grl.Data dup ();
+ public unowned GLib.Value? @get (Grl.KeyID key);
+ public uint8 get_binary (Grl.KeyID key, out size_t size);
+ public bool get_boolean (Grl.KeyID key);
+ public void* get_boxed (Grl.KeyID key);
+ public float get_float (Grl.KeyID key);
+ public int get_int (Grl.KeyID key);
+ public int64 get_int64 (Grl.KeyID key);
+ public GLib.List<weak Grl.KeyID> get_keys ();
+ public unowned Grl.RelatedKeys get_related_keys (Grl.KeyID key, uint index);
+ public GLib.List<weak GLib.Value?> get_single_values_for_key (Grl.KeyID key);
+ public GLib.List<weak string> get_single_values_for_key_string (Grl.KeyID key);
+ public unowned string get_string (Grl.KeyID key);
+ public bool has_key (Grl.KeyID key);
+ public uint length (Grl.KeyID key);
+ public void remove (Grl.KeyID key);
+ public void remove_nth (Grl.KeyID key, uint index);
+ public void @set (Grl.KeyID key, GLib.Value value);
+ public void set_binary (Grl.KeyID key, uint8 buf, size_t size);
+ public void set_boolean (Grl.KeyID key, bool boolvalue);
+ public void set_boxed (Grl.KeyID key, void* boxed);
+ public void set_float (Grl.KeyID key, float floatvalue);
+ public void set_int (Grl.KeyID key, int intvalue);
+ public void set_int64 (Grl.KeyID key, int64 intvalue);
+ public void set_related_keys (Grl.RelatedKeys relkeys, uint index);
+ public void set_string (Grl.KeyID key, string strvalue);
+ }
+ [CCode (cheader_filename = "grilo.h")]
+ [Compact]
+ public class LogDomain {
+ public void free ();
+ }
+ [CCode (cheader_filename = "grilo.h", type_id = "grl_media_get_type ()")]
+ public class Media : Grl.Data {
+ [CCode (has_construct_function = false)]
+ public Media ();
+ public void add_artist (string artist);
+ public void add_author (string author);
+ public void add_director (string director);
+ public void add_external_player (string player);
+ public void add_external_url (string url);
+ public void add_genre (string genre);
+ public void add_keyword (string keyword);
+ public void add_lyrics (string lyrics);
+ public void add_mb_artist_id (string mb_artist_id);
+ public void add_performer (string performer);
+ public void add_producer (string producer);
+ public void add_region_data (string region, GLib.DateTime publication_date, string certificate);
+ public void add_thumbnail (string thumbnail);
+ public void add_thumbnail_binary (uint8 thumbnail, size_t size);
+ public void add_url_data (string url, string mime, int bitrate, float framerate, int width, int height);
+ [CCode (cname = "grl_media_audio_new", has_construct_function = false)]
+ public Media.audio_new ();
+ [CCode (cname = "grl_media_container_new", has_construct_function = false)]
+ public Media.container_new ();
+ public unowned string get_album ();
+ public unowned string get_artist ();
+ public unowned string get_artist_nth (uint index);
+ public unowned string get_author ();
+ public unowned string get_author_nth (uint index);
+ public int get_bitrate ();
+ public unowned string get_camera_model ();
+ public unowned string get_certificate ();
+ public int get_childcount ();
+ public unowned GLib.DateTime get_creation_date ();
+ public unowned string get_description ();
+ public unowned string get_director ();
+ public unowned string get_director_nth (uint index);
+ public int get_duration ();
+ public int get_episode ();
+ public unowned string get_episode_title ();
+ public float get_exposure_time ();
+ public unowned string get_external_url ();
+ public unowned string get_external_url_nth (uint index);
+ public bool get_favourite ();
+ public unowned string get_flash_used ();
+ public float get_framerate ();
+ public unowned string get_genre ();
+ public unowned string get_genre_nth (uint index);
+ public int get_height ();
+ public unowned string get_id ();
+ public float get_iso_speed ();
+ public unowned string get_keyword ();
+ public unowned string get_keyword_nth (uint index);
+ public GLib.DateTime get_last_played ();
+ public int get_last_position ();
+ public unowned string get_license ();
+ public unowned string get_lyrics ();
+ public unowned string get_lyrics_nth (uint index);
+ public unowned string get_mb_album_id ();
+ public unowned string get_mb_artist_id ();
+ public unowned string get_mb_artist_id_nth (uint index);
+ public unowned string get_mb_recording_id ();
+ public unowned string get_mb_track_id ();
+ public Grl.MediaType get_media_type ();
+ public unowned string get_mime ();
+ public unowned GLib.DateTime get_modification_date ();
+ public int get_orientation ();
+ public unowned string get_original_title ();
+ public unowned string get_performer ();
+ public unowned string get_performer_nth (uint index);
+ public int get_play_count ();
+ public unowned string get_player ();
+ public unowned string get_player_nth (uint index);
+ public unowned string get_producer ();
+ public unowned string get_producer_nth (uint index);
+ public unowned GLib.DateTime get_publication_date ();
+ public float get_rating ();
+ public unowned string get_region ();
+ public unowned string get_region_data (out unowned GLib.DateTime publication_date, out unowned string certificate);
+ public unowned string get_region_data_nth (uint index, out unowned GLib.DateTime publication_date, out unowned string certificate);
+ public int get_season ();
+ public unowned string get_show ();
+ public unowned string get_site ();
+ public int64 get_size ();
+ public unowned string get_source ();
+ public float get_start_time ();
+ public unowned string get_studio ();
+ public unowned string get_thumbnail ();
+ public uint8 get_thumbnail_binary (size_t size);
+ public uint8 get_thumbnail_binary_nth (size_t size, uint index);
+ public unowned string get_thumbnail_nth (uint index);
+ public unowned string get_title ();
+ public int get_track_number ();
+ public unowned string get_url ();
+ public unowned string get_url_data (out unowned string mime, out int bitrate, float framerate, int width, int height);
+ public unowned string get_url_data_nth (uint index, out unowned string mime, out int bitrate, float framerate, int width, int height);
+ public int get_width ();
+ [CCode (cname = "grl_media_image_new", has_construct_function = false)]
+ public Media.image_new ();
+ public bool is_audio ();
+ public bool is_container ();
+ public bool is_image ();
+ public bool is_video ();
+ public string serialize ();
+ public void set_album (string album);
+ public void set_artist (string artist);
+ public void set_author (string author);
+ public void set_bitrate (int bitrate);
+ public void set_camera_model (string camera_model);
+ public void set_certificate (string certificate);
+ public void set_childcount (int childcount);
+ public void set_creation_date (GLib.DateTime creation_date);
+ public void set_description (string description);
+ public void set_director (string director);
+ public void set_duration (int duration);
+ public void set_episode (int episode);
+ public void set_episode_title (string episode_title);
+ public void set_exposure_time (float exposure_time);
+ public void set_external_player (string player);
+ public void set_external_url (string url);
+ public void set_favourite (bool favourite);
+ public void set_flash_used (string flash_used);
+ public void set_framerate (float framerate);
+ public void set_genre (string genre);
+ public void set_height (int height);
+ public void set_id (string id);
+ public void set_iso_speed (float iso_speed);
+ public void set_keyword (string keyword);
+ public void set_last_played (GLib.DateTime last_played);
+ public void set_last_position (int last_position);
+ public void set_license (string license);
+ public void set_lyrics (string lyrics);
+ public void set_mb_album_id (string mb_album_id);
+ public void set_mb_artist_id (string mb_artist_id);
+ public void set_mb_recording_id (string mb_recording_id);
+ public void set_mb_track_id (string mb_track_id);
+ public void set_mime (string mime);
+ public void set_modification_date (GLib.DateTime modification_date);
+ public void set_orientation (int orientation);
+ public void set_original_title (string original_title);
+ public void set_performer (string performer);
+ public void set_play_count (int play_count);
+ public void set_producer (string producer);
+ public void set_publication_date (GLib.DateTime date);
+ public void set_rating (float rating, float max);
+ public void set_region (string region);
+ public void set_region_data (string region, GLib.DateTime publication_date, string certificate);
+ public void set_season (int season);
+ public void set_show (string show);
+ public void set_site (string site);
+ public void set_size (int64 size);
+ public void set_source (string source);
+ public void set_studio (string studio);
+ public void set_thumbnail (string thumbnail);
+ public void set_thumbnail_binary (uint8 thumbnail, size_t size);
+ public void set_title (string title);
+ public void set_track_number (int track_number);
+ public void set_url (string url);
+ public void set_url_data (string url, string mime, int bitrate, float framerate, int width, int height);
+ public void set_width (int width);
+ public static Grl.Media unserialize (string serial);
+ [CCode (cname = "grl_media_video_new", has_construct_function = false)]
+ public Media.video_new ();
+ [NoAccessorMethod]
+ public Grl.MediaType media_type { get; set construct; }
+ }
+ [CCode (cheader_filename = "grilo.h", type_id = "grl_operation_options_get_type ()")]
+ public class OperationOptions : GLib.Object {
+ [CCode (has_construct_function = false)]
+ public OperationOptions (Grl.Caps? caps);
+ public Grl.OperationOptions copy ();
+ public int get_count ();
+ public unowned GLib.Value? get_key_filter (Grl.KeyID key);
+ public GLib.List<weak Grl.KeyID> get_key_filter_list ();
+ public void get_key_range_filter (Grl.KeyID key, out GLib.Value min_value, out GLib.Value max_value);
+ public GLib.List<weak Grl.KeyID> get_key_range_filter_list ();
+ public Grl.ResolutionFlags get_resolution_flags ();
+ public uint get_skip ();
+ public Grl.TypeFilter get_type_filter ();
+ public bool key_is_set (string key);
+ public bool obey_caps (Grl.Caps caps, out Grl.OperationOptions supported_options, out Grl.OperationOptions unsupported_options);
+ public bool set_count (int count);
+ public bool set_key_filter_dictionary (GLib.HashTable<Grl.KeyID,GLib.Value?> filters);
+ public bool set_key_filter_value (Grl.KeyID key, GLib.Value value);
+ public bool set_key_range_filter_value (Grl.KeyID key, GLib.Value? min_value, GLib.Value? max_value);
+ public bool set_resolution_flags (Grl.ResolutionFlags flags);
+ public bool set_skip (uint skip);
+ public bool set_type_filter (Grl.TypeFilter filter);
+ }
+ [CCode (cheader_filename = "grilo.h", type_id = "grl_plugin_get_type ()")]
+ public class Plugin : GLib.Object {
+ [CCode (has_construct_function = false)]
+ protected Plugin ();
+ public unowned string get_author ();
+ public unowned string get_description ();
+ public unowned string get_filename ();
+ public unowned string get_id ();
+ public unowned string get_license ();
+ public unowned string get_module_name ();
+ public unowned string get_name ();
+ public unowned string get_site ();
+ public GLib.List<weak Grl.Source> get_sources ();
+ public unowned string get_version ();
+ public void register_keys ();
+ public void set_filename (string filename);
+ public void set_id (string id);
+ public void set_module (GLib.Module module);
+ public void set_module_name (string module_name);
+ public void unload ();
+ [NoAccessorMethod]
+ public bool loaded { get; }
+ }
+ [CCode (cheader_filename = "grilo.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "grl_range_value_get_type ()")]
+ [Compact]
+ public class RangeValue {
+ public GLib.Value max;
+ public GLib.Value min;
+ [CCode (has_construct_function = false)]
+ public RangeValue (GLib.Value min, GLib.Value max);
+ public Grl.RangeValue dup ();
+ public void free ();
+ public static void hashtable_insert (GLib.HashTable<void*,void*> hash_table, void* key, GLib.Value min, GLib.Value max);
+ public static GLib.HashTable<void*,Grl.RangeValue> hashtable_new ();
+ }
+ [CCode (cheader_filename = "grilo.h", type_id = "grl_registry_get_type ()")]
+ public class Registry : GLib.Object {
+ [CCode (has_construct_function = false)]
+ protected Registry ();
+ public bool activate_all_plugins ();
+ public bool activate_plugin_by_id (string plugin_id) throws GLib.Error;
+ public bool add_config (owned Grl.Config config) throws GLib.Error;
+ public bool add_config_from_file (string config_file) throws GLib.Error;
+ public bool add_config_from_resource (string resource_path) throws GLib.Error;
+ public void add_directory (string path);
+ public static unowned Grl.Registry get_default ();
+ public GLib.List<weak Grl.KeyID> get_metadata_keys ();
+ public GLib.List<weak Grl.Plugin> get_plugins (bool only_loaded);
+ public GLib.List<weak Grl.Source> get_sources (bool ranked);
+ public GLib.List<weak Grl.Source> get_sources_by_operations (Grl.SupportedOps ops, bool ranked);
+ public bool load_all_plugins (bool activate) throws GLib.Error;
+ public bool load_plugin (string library_filename) throws GLib.Error;
+ public bool load_plugin_directory (string path) throws GLib.Error;
+ public Grl.KeyID lookup_metadata_key (string key_name);
+ public unowned string lookup_metadata_key_desc (Grl.KeyID key);
+ public unowned string lookup_metadata_key_name (Grl.KeyID key);
+ public unowned GLib.List<Grl.KeyID> lookup_metadata_key_relation (Grl.KeyID key);
+ public GLib.Type lookup_metadata_key_type (Grl.KeyID key);
+ public unowned Grl.Plugin lookup_plugin (string plugin_id);
+ public unowned Grl.Source lookup_source (string source_id);
+ public bool metadata_key_validate (Grl.KeyID key, GLib.Value value);
+ public Grl.KeyID register_metadata_key (owned GLib.ParamSpec param_spec, Grl.KeyID bind_key) throws GLib.Error;
+ public Grl.KeyID register_metadata_key_system (GLib.ParamSpec param_spec, Grl.KeyID key, Grl.KeyID bind_key) throws GLib.Error;
+ public bool register_source (Grl.Plugin plugin, owned Grl.Source source) throws GLib.Error;
+ public void restrict_plugins (string plugins);
+ public void shutdown ();
+ public bool unload_plugin (string plugin_id) throws GLib.Error;
+ public bool unregister_source (Grl.Source source) throws GLib.Error;
+ public signal void metadata_key_added (string key);
+ public signal void source_added (Grl.Source source);
+ public signal void source_removed (Grl.Source source);
+ }
+ [CCode (cheader_filename = "grilo.h", type_id = "grl_related_keys_get_type ()")]
+ public class RelatedKeys : GLib.Object {
+ [CCode (has_construct_function = false)]
+ public RelatedKeys ();
+ public Grl.RelatedKeys dup ();
+ public unowned GLib.Value? @get (Grl.KeyID key);
+ public uint8 get_binary (Grl.KeyID key, out size_t size);
+ public bool get_boolean (Grl.KeyID key);
+ public void* get_boxed (Grl.KeyID key);
+ public float get_float (Grl.KeyID key);
+ public int get_int (Grl.KeyID key);
+ public int64 get_int64 (Grl.KeyID key);
+ public GLib.List<weak Grl.KeyID> get_keys ();
+ public unowned string get_string (Grl.KeyID key);
+ public bool has_key (Grl.KeyID key);
+ public void remove (Grl.KeyID key);
+ public void @set (Grl.KeyID key, GLib.Value value);
+ public void set_binary (Grl.KeyID key, uint8 buf, size_t size);
+ public void set_boolean (Grl.KeyID key, bool booleanvalue);
+ public void set_boxed (Grl.KeyID key, void* boxed);
+ public void set_float (Grl.KeyID key, float floatvalue);
+ public void set_int (Grl.KeyID key, int intvalue);
+ public void set_int64 (Grl.KeyID key, int64 intvalue);
+ public void set_string (Grl.KeyID key, string strvalue);
+ }
+ [CCode (cheader_filename = "grilo.h", type_id = "grl_source_get_type ()")]
+ public abstract class Source : GLib.Object {
+ [CCode (has_construct_function = false)]
+ protected Source ();
+ [NoWrapper]
+ public virtual void browse (Grl.SourceBrowseSpec bs);
+ public GLib.List<Grl.Media> browse_sync (Grl.Media? container, GLib.List<Grl.KeyID> keys, Grl.OperationOptions options) throws GLib.Error;
+ [NoWrapper]
+ public virtual void cancel (uint operation_id);
+ [CCode (cname = "grl_source_browse")]
+ public uint do_browse (Grl.Media? container, GLib.List<Grl.KeyID> keys, Grl.OperationOptions options, Grl.SourceResultCb callback);
+ [CCode (cname = "grl_source_query")]
+ public uint do_query (string query, GLib.List<Grl.KeyID> keys, Grl.OperationOptions options, Grl.SourceResultCb callback);
+ [CCode (cname = "grl_source_remove")]
+ public void do_remove (Grl.Media media, Grl.SourceRemoveCb callback);
+ [CCode (cname = "grl_source_resolve")]
+ public uint do_resolve (Grl.Media? media, GLib.List<Grl.KeyID> keys, Grl.OperationOptions options, Grl.SourceResolveCb callback);
+ [CCode (cname = "grl_source_search")]
+ public uint do_search (string text, GLib.List<Grl.KeyID> keys, Grl.OperationOptions options, Grl.SourceResultCb callback);
+ [CCode (cname = "grl_source_store")]
+ public void do_store (Grl.Media? parent, Grl.Media media, Grl.WriteFlags flags, Grl.SourceStoreCb callback);
+ [CCode (cname = "grl_source_store_metadata")]
+ public void do_store_metadata (Grl.Media media, GLib.List<Grl.KeyID>? keys, Grl.WriteFlags flags, Grl.SourceStoreCb callback);
+ public uint get_auto_split_threshold ();
+ public virtual unowned Grl.Caps get_caps (Grl.SupportedOps operation);
+ public unowned string get_description ();
+ public unowned GLib.Icon get_icon ();
+ public unowned string get_id ();
+ public uint get_media_from_uri (string uri, GLib.List<Grl.KeyID> keys, Grl.OperationOptions options, Grl.SourceResolveCb callback);
+ public Grl.Media get_media_from_uri_sync (string uri, GLib.List<Grl.KeyID> keys, Grl.OperationOptions options) throws GLib.Error;
+ public unowned string get_name ();
+ public unowned Grl.Plugin get_plugin ();
+ public int get_rank ();
+ public Grl.SupportedMedia get_supported_media ();
+ [CCode (cname = "grl_source_supported_operations")]
+ public uint get_supported_operations ();
+ [CCode (array_length = false, array_null_terminated = true)]
+ public unowned string[] get_tags ();
+ public virtual bool may_resolve (Grl.Media media, Grl.KeyID key_id, GLib.List<Grl.KeyID> missing_keys);
+ [NoWrapper]
+ public virtual void media_from_uri (Grl.SourceMediaFromUriSpec mfus);
+ public void notify_change (Grl.Media? media, Grl.SourceChangeType change_type, bool location_unknown);
+ public void notify_change_list (owned GLib.GenericArray<Grl.Media> changed_medias, Grl.SourceChangeType change_type, bool location_unknown);
+ public virtual bool notify_change_start () throws GLib.Error;
+ public virtual bool notify_change_stop () throws GLib.Error;
+ [NoWrapper]
+ public virtual void query (Grl.SourceQuerySpec qs);
+ public GLib.List<Grl.Media> query_sync (string query, GLib.List<Grl.KeyID> keys, Grl.OperationOptions options) throws GLib.Error;
+ [NoWrapper]
+ public virtual void remove (Grl.SourceRemoveSpec rs);
+ public void remove_sync (Grl.Media media) throws GLib.Error;
+ [NoWrapper]
+ public virtual void resolve (Grl.SourceResolveSpec ms);
+ public Grl.Media resolve_sync (Grl.Media? media, GLib.List<Grl.KeyID> keys, Grl.OperationOptions options) throws GLib.Error;
+ [NoWrapper]
+ public virtual void search (Grl.SourceSearchSpec ss);
+ public GLib.List<Grl.Media> search_sync (string text, GLib.List<Grl.KeyID> keys, Grl.OperationOptions options) throws GLib.Error;
+ public void set_auto_split_threshold (uint threshold);
+ public virtual unowned GLib.List<Grl.KeyID> slow_keys ();
+ [NoWrapper]
+ public virtual void store (Grl.SourceStoreSpec ss);
+ [NoWrapper]
+ public virtual void store_metadata (Grl.SourceStoreMetadataSpec sms);
+ public GLib.List<weak Grl.KeyID> store_metadata_sync (Grl.Media media, GLib.List<Grl.KeyID>? keys, Grl.WriteFlags flags) throws GLib.Error;
+ public void store_sync (Grl.Media? parent, Grl.Media media, Grl.WriteFlags flags) throws GLib.Error;
+ public virtual unowned GLib.List<Grl.KeyID> supported_keys ();
+ [NoWrapper]
+ public virtual Grl.SupportedOps supported_operations ();
+ public virtual bool test_media_from_uri (string uri);
+ public virtual unowned GLib.List<Grl.KeyID> writable_keys ();
+ public uint auto_split_threshold { get; set; }
+ [NoAccessorMethod]
+ public Grl.Plugin plugin { owned get; set construct; }
+ [NoAccessorMethod]
+ public int rank { get; set construct; }
+ [NoAccessorMethod]
+ public string source_desc { owned get; set construct; }
+ [NoAccessorMethod]
+ public GLib.Icon source_icon { owned get; set construct; }
+ [NoAccessorMethod]
+ public string source_id { owned get; set construct; }
+ [NoAccessorMethod]
+ public string source_name { owned get; set construct; }
+ [CCode (array_length = false, array_null_terminated = true)]
+ [NoAccessorMethod]
+ public string[] source_tags { owned get; set construct; }
+ [NoAccessorMethod]
+ public Grl.SupportedMedia supported_media { get; set construct; }
+ public signal void content_changed (GLib.GenericArray<Grl.Media> changed_medias, Grl.SourceChangeType change_type, bool location_unknown);
+ }
+ [CCode (cheader_filename = "grilo.h")]
+ [SimpleType]
+ public struct KeyID : uint32 {
+ }
+ [CCode (cheader_filename = "grilo.h")]
+ public struct MetadataKey {
+ [CCode (cname = "GRL_METADATA_KEY_INVALID")]
+ public static Grl.KeyID INVALID;
+ [CCode (cname = "GRL_METADATA_KEY_ALBUM")]
+ public static Grl.KeyID ALBUM;
+ [CCode (cname = "GRL_METADATA_KEY_ARTIST")]
+ public static Grl.KeyID ARTIST;
+ [CCode (cname = "GRL_METADATA_KEY_AUTHOR")]
+ public static Grl.KeyID AUTHOR;
+ [CCode (cname = "GRL_METADATA_KEY_BITRATE")]
+ public static Grl.KeyID BITRATE;
+ [CCode (cname = "GRL_METADATA_KEY_CERTIFICATE")]
+ public static Grl.KeyID CERTIFICATE;
+ [CCode (cname = "GRL_METADATA_KEY_CHILDCOUNT")]
+ public static Grl.KeyID CHILDCOUNT;
+ [CCode (cname = "GRL_METADATA_KEY_PUBLICATION_DATE")]
+ public static Grl.KeyID PUBLICATION_DATE;
+ [CCode (cname = "GRL_METADATA_KEY_DESCRIPTION")]
+ public static Grl.KeyID DESCRIPTION;
+ [CCode (cname = "GRL_METADATA_KEY_DURATION")]
+ public static Grl.KeyID DURATION;
+ [CCode (cname = "GRL_METADATA_KEY_EXTERNAL_PLAYER")]
+ public static Grl.KeyID EXTERNAL_PLAYER;
+ [CCode (cname = "GRL_METADATA_KEY_EXTERNAL_URL")]
+ public static Grl.KeyID EXTERNAL_URL;
+ [CCode (cname = "GRL_METADATA_KEY_FRAMERATE")]
+ public static Grl.KeyID FRAMERATE;
+ [CCode (cname = "GRL_METADATA_KEY_GENRE")]
+ public static Grl.KeyID GENRE;
+ [CCode (cname = "GRL_METADATA_KEY_HEIGHT")]
+ public static Grl.KeyID HEIGHT;
+ [CCode (cname = "GRL_METADATA_KEY_ID")]
+ public static Grl.KeyID ID;
+ [CCode (cname = "GRL_METADATA_KEY_LAST_PLAYED")]
+ public static Grl.KeyID LAST_PLAYED;
+ [CCode (cname = "GRL_METADATA_KEY_LAST_POSITION")]
+ public static Grl.KeyID LAST_POSITION;
+ [CCode (cname = "GRL_METADATA_KEY_LICENSE")]
+ public static Grl.KeyID LICENSE;
+ [CCode (cname = "GRL_METADATA_KEY_LYRICS")]
+ public static Grl.KeyID LYRICS;
+ [CCode (cname = "GRL_METADATA_KEY_MIME")]
+ public static Grl.KeyID MIME;
+ [CCode (cname = "GRL_METADATA_KEY_PLAY_COUNT")]
+ public static Grl.KeyID PLAY_COUNT;
+ [CCode (cname = "GRL_METADATA_KEY_RATING")]
+ public static Grl.KeyID RATING;
+ [CCode (cname = "GRL_METADATA_KEY_REGION")]
+ public static Grl.KeyID REGION;
+ [CCode (cname = "GRL_METADATA_KEY_SITE")]
+ public static Grl.KeyID SITE;
+ [CCode (cname = "GRL_METADATA_KEY_SOURCE")]
+ public static Grl.KeyID SOURCE;
+ [CCode (cname = "GRL_METADATA_KEY_STUDIO")]
+ public static Grl.KeyID STUDIO;
+ [CCode (cname = "GRL_METADATA_KEY_THUMBNAIL")]
+ public static Grl.KeyID THUMBNAIL;
+ [CCode (cname = "GRL_METADATA_KEY_THUMBNAIL_BINARY")]
+ public static Grl.KeyID THUMBNAIL_BINARY;
+ [CCode (cname = "GRL_METADATA_KEY_TITLE")]
+ public static Grl.KeyID TITLE;
+ [CCode (cname = "GRL_METADATA_KEY_URL")]
+ public static Grl.KeyID URL;
+ [CCode (cname = "GRL_METADATA_KEY_WIDTH")]
+ public static Grl.KeyID WIDTH;
+ [CCode (cname = "GRL_METADATA_KEY_SEASON")]
+ public static Grl.KeyID SEASON;
+ [CCode (cname = "GRL_METADATA_KEY_EPISODE")]
+ public static Grl.KeyID EPISODE;
+ [CCode (cname = "GRL_METADATA_KEY_EPISODE_TITLE")]
+ public static Grl.KeyID EPISODE_TITLE;
+ [CCode (cname = "GRL_METADATA_KEY_SHOW")]
+ public static Grl.KeyID SHOW;
+ [CCode (cname = "GRL_METADATA_KEY_CREATION_DATE")]
+ public static Grl.KeyID CREATION_DATE;
+ [CCode (cname = "GRL_METADATA_KEY_CAMERA_MODEL")]
+ public static Grl.KeyID CAMERA_MODEL;
+ [CCode (cname = "GRL_METADATA_KEY_ORIENTATION")]
+ public static Grl.KeyID ORIENTATION;
+ [CCode (cname = "GRL_METADATA_KEY_FLASH_USED")]
+ public static Grl.KeyID FLASH_USED;
+ [CCode (cname = "GRL_METADATA_KEY_EXPOSURE_TIME")]
+ public static Grl.KeyID EXPOSURE_TIME;
+ [CCode (cname = "GRL_METADATA_KEY_ISO_SPEED")]
+ public static Grl.KeyID ISO_SPEED;
+ [CCode (cname = "GRL_METADATA_KEY_TRACK_NUMBER")]
+ public static Grl.KeyID TRACK_NUMBER;
+ [CCode (cname = "GRL_METADATA_KEY_MODIFICATION_DATE")]
+ public static Grl.KeyID MODIFICATION_DATE;
+ [CCode (cname = "GRL_METADATA_KEY_START_TIME")]
+ public static Grl.KeyID START_TIME;
+ [CCode (cname = "GRL_METADATA_KEY_KEYWORD")]
+ public static Grl.KeyID KEYWORD;
+ [CCode (cname = "GRL_METADATA_KEY_PERFORMER")]
+ public static Grl.KeyID PERFORMER;
+ [CCode (cname = "GRL_METADATA_KEY_PRODUCER")]
+ public static Grl.KeyID PRODUCER;
+ [CCode (cname = "GRL_METADATA_KEY_DIRECTOR")]
+ public static Grl.KeyID DIRECTOR;
+ [CCode (cname = "GRL_METADATA_KEY_ORIGINAL_TITLE")]
+ public static Grl.KeyID ORIGINAL_TITLE;
+ [CCode (cname = "GRL_METADATA_KEY_MB_ALBUM_ID")]
+ public static Grl.KeyID MB_ALBUM_ID;
+ [CCode (cname = "GRL_METADATA_KEY_MB_TRACK_ID")]
+ public static Grl.KeyID MB_TRACK_ID;
+ [CCode (cname = "GRL_METADATA_KEY_MB_ARTIST_ID")]
+ public static Grl.KeyID MB_ARTIST_ID;
+ [CCode (cname = "GRL_METADATA_KEY_MB_RECORDING_ID")]
+ public static Grl.KeyID MB_RECORDING_ID;
+ [CCode (cname = "GRL_METADATA_KEY_AUDIO_TRACK")]
+ public static Grl.KeyID AUDIO_TRACK;
+ [CCode (cname = "GRL_METADATA_KEY_CHILDCOUNT_UNKNOWN")]
+ public static uint CHILDCOUNT_UNKNOWN;
+ [CCode (cname = "GRL_SOURCE_REMAINING_UNKNOWN")]
+ public static uint REMAINING_UNKNOWN;
+ public static GLib.List list_new (Grl.KeyID p, ...);
+ }
+ [CCode (cheader_filename = "grilo.h", has_type_id = false)]
+ public struct SourceBrowseSpec {
+ public weak Grl.Source source;
+ public uint operation_id;
+ public weak Grl.Media container;
+ public weak GLib.List<void*> keys;
+ public weak Grl.OperationOptions options;
+ [CCode (delegate_target_cname = "user_data")]
+ public weak Grl.SourceResultCb callback;
+ public void* user_data;
+ }
+ [CCode (cheader_filename = "grilo.h", has_type_id = false)]
+ public struct SourceMediaFromUriSpec {
+ public weak Grl.Source source;
+ public uint operation_id;
+ public weak string uri;
+ public weak GLib.List<void*> keys;
+ public weak Grl.OperationOptions options;
+ [CCode (delegate_target_cname = "user_data")]
+ public weak Grl.SourceResolveCb callback;
+ public void* user_data;
+ }
+ [CCode (cheader_filename = "grilo.h", has_type_id = false)]
+ public struct SourceQuerySpec {
+ public weak Grl.Source source;
+ public uint operation_id;
+ public weak string query;
+ public weak GLib.List<void*> keys;
+ public weak Grl.OperationOptions options;
+ [CCode (delegate_target_cname = "user_data")]
+ public weak Grl.SourceResultCb callback;
+ public void* user_data;
+ }
+ [CCode (cheader_filename = "grilo.h", has_type_id = false)]
+ public struct SourceRemoveSpec {
+ public weak Grl.Source source;
+ public weak string media_id;
+ public weak Grl.Media media;
+ [CCode (delegate_target_cname = "user_data")]
+ public weak Grl.SourceRemoveCb callback;
+ public void* user_data;
+ }
+ [CCode (cheader_filename = "grilo.h", has_type_id = false)]
+ public struct SourceResolveSpec {
+ public weak Grl.Source source;
+ public uint operation_id;
+ public weak Grl.Media media;
+ public weak GLib.List<void*> keys;
+ public weak Grl.OperationOptions options;
+ [CCode (delegate_target_cname = "user_data")]
+ public weak Grl.SourceResolveCb callback;
+ public void* user_data;
+ }
+ [CCode (cheader_filename = "grilo.h", has_type_id = false)]
+ public struct SourceSearchSpec {
+ public weak Grl.Source source;
+ public uint operation_id;
+ public weak string text;
+ public weak GLib.List<void*> keys;
+ public weak Grl.OperationOptions options;
+ [CCode (delegate_target_cname = "user_data")]
+ public weak Grl.SourceResultCb callback;
+ public void* user_data;
+ }
+ [CCode (cheader_filename = "grilo.h", has_type_id = false)]
+ public struct SourceStoreMetadataSpec {
+ public weak Grl.Source source;
+ public weak Grl.Media media;
+ public weak GLib.List<void*> keys;
+ public Grl.WriteFlags flags;
+ [CCode (delegate_target_cname = "user_data")]
+ public weak Grl.SourceStoreCb callback;
+ public void* user_data;
+ public weak GLib.List<void*> failed_keys;
+ }
+ [CCode (cheader_filename = "grilo.h", has_type_id = false)]
+ public struct SourceStoreSpec {
+ public weak Grl.Source source;
+ public weak Grl.Media parent;
+ public weak Grl.Media media;
+ [CCode (delegate_target_cname = "user_data")]
+ public weak Grl.SourceStoreCb callback;
+ public string user_data;
+ }
+ [CCode (cheader_filename = "grilo.h", cprefix = "GRL_CORE_ERROR_", has_type_id = false)]
+ public enum CoreError {
+ BROWSE_FAILED,
+ SEARCH_FAILED,
+ SEARCH_NULL_UNSUPPORTED,
+ QUERY_FAILED,
+ RESOLVE_FAILED,
+ MEDIA_NOT_FOUND,
+ STORE_FAILED,
+ STORE_METADATA_FAILED,
+ REMOVE_FAILED,
+ MEDIA_FROM_URI_FAILED,
+ CONFIG_LOAD_FAILED,
+ CONFIG_FAILED,
+ UNREGISTER_SOURCE_FAILED,
+ LOAD_PLUGIN_FAILED,
+ UNLOAD_PLUGIN_FAILED,
+ REGISTER_METADATA_KEY_FAILED,
+ NOTIFY_CHANGED_FAILED,
+ OPERATION_CANCELLED,
+ AUTHENTICATION_TOKEN
+ }
+ [CCode (cheader_filename = "grilo.h", cprefix = "GRL_LOG_LEVEL_", has_type_id = false)]
+ public enum LogLevel {
+ NONE,
+ ERROR,
+ WARNING,
+ MESSAGE,
+ INFO,
+ DEBUG,
+ LAST
+ }
+ [CCode (cheader_filename = "grilo.h", cprefix = "GRL_MEDIA_SERIALIZE_", type_id = "grl_media_serialize_type_get_type ()")]
+ public enum MediaSerializeType {
+ BASIC,
+ PARTIAL,
+ FULL
+ }
+ [CCode (cheader_filename = "grilo.h", cprefix = "GRL_MEDIA_TYPE_", type_id = "grl_media_type_get_type ()")]
+ public enum MediaType {
+ UNKNOWN,
+ AUDIO,
+ VIDEO,
+ IMAGE,
+ CONTAINER
+ }
+ [CCode (cheader_filename = "grilo.h", cprefix = "GRL_RANK_", has_type_id = false)]
+ public enum Rank {
+ LOWEST,
+ LOW,
+ DEFAULT,
+ HIGH,
+ HIGHEST
+ }
+ [CCode (cheader_filename = "grilo.h", cprefix = "GRL_RESOLVE_", type_id = "grl_resolution_flags_get_type ()")]
+ [Flags]
+ public enum ResolutionFlags {
+ NORMAL,
+ FULL,
+ IDLE_RELAY,
+ FAST_ONLY
+ }
+ [CCode (cheader_filename = "grilo.h", cprefix = "GRL_CONTENT_", type_id = "grl_source_change_type_get_type ()")]
+ public enum SourceChangeType {
+ CHANGED,
+ ADDED,
+ REMOVED
+ }
+ [CCode (cheader_filename = "grilo.h", cprefix = "GRL_SUPPORTED_MEDIA_", type_id = "grl_supported_media_get_type ()")]
+ [Flags]
+ public enum SupportedMedia {
+ NONE,
+ AUDIO,
+ VIDEO,
+ IMAGE,
+ ALL
+ }
+ [CCode (cheader_filename = "grilo.h", cprefix = "GRL_OP_", type_id = "grl_supported_ops_get_type ()")]
+ [Flags]
+ public enum SupportedOps {
+ NONE,
+ RESOLVE,
+ BROWSE,
+ SEARCH,
+ QUERY,
+ STORE,
+ STORE_PARENT,
+ STORE_METADATA,
+ REMOVE,
+ MEDIA_FROM_URI,
+ NOTIFY_CHANGE
+ }
+ [CCode (cheader_filename = "grilo.h", cprefix = "GRL_TYPE_FILTER_", type_id = "grl_type_filter_get_type ()")]
+ [Flags]
+ public enum TypeFilter {
+ NONE,
+ AUDIO,
+ VIDEO,
+ IMAGE,
+ ALL
+ }
+ [CCode (cheader_filename = "grilo.h", cprefix = "GRL_WRITE_", type_id = "grl_write_flags_get_type ()")]
+ [Flags]
+ public enum WriteFlags {
+ NORMAL,
+ FULL
+ }
+ [CCode (cheader_filename = "grilo.h", has_target = false)]
+ public delegate void OperationCancelCb (void* data);
+ [CCode (cheader_filename = "grilo.h", has_target = false)]
+ public delegate void PluginDeinitFunc (Grl.Plugin plugin);
+ [CCode (cheader_filename = "grilo.h", has_target = false)]
+ public delegate void PluginRegisterKeysFunc (Grl.Registry registry, Grl.Plugin plugin);
+ [CCode (cheader_filename = "grilo.h", instance_pos = 2.9)]
+ public delegate void SourceRemoveCb (Grl.Source source, owned Grl.Media media, GLib.Error? error);
+ [CCode (cheader_filename = "grilo.h", instance_pos = 3.9)]
+ public delegate void SourceResolveCb (Grl.Source source, uint operation_id, owned Grl.Media media, GLib.Error? error);
+ [CCode (cheader_filename = "grilo.h", instance_pos = 4.9)]
+ public delegate void SourceResultCb (Grl.Source source, uint operation_id, owned Grl.Media? media, uint remaining, GLib.Error? error);
+ [CCode (cheader_filename = "grilo.h", instance_pos = 3.9)]
+ public delegate void SourceStoreCb (Grl.Source source, owned Grl.Media media, GLib.List<Grl.KeyID> failed_keys, GLib.Error? error);
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_CONFIG_KEY_APIKEY")]
+ public const string CONFIG_KEY_APIKEY;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_CONFIG_KEY_APIKEY_BLOB")]
+ public const string CONFIG_KEY_APIKEY_BLOB;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_CONFIG_KEY_APISECRET")]
+ public const string CONFIG_KEY_APISECRET;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_CONFIG_KEY_APITOKEN")]
+ public const string CONFIG_KEY_APITOKEN;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_CONFIG_KEY_APITOKEN_SECRET")]
+ public const string CONFIG_KEY_APITOKEN_SECRET;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_CONFIG_KEY_PASSWORD")]
+ public const string CONFIG_KEY_PASSWORD;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_CONFIG_KEY_PLUGIN")]
+ public const string CONFIG_KEY_PLUGIN;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_CONFIG_KEY_SOURCE")]
+ public const string CONFIG_KEY_SOURCE;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_CONFIG_KEY_USERNAME")]
+ public const string CONFIG_KEY_USERNAME;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_COUNT_INFINITY")]
+ public const int COUNT_INFINITY;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_KEYID_FORMAT")]
+ public const string KEYID_FORMAT;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_ALBUM")]
+ public const int METADATA_KEY_ALBUM;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_ARTIST")]
+ public const int METADATA_KEY_ARTIST;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_AUDIO_TRACK")]
+ public const int METADATA_KEY_AUDIO_TRACK;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_AUTHOR")]
+ public const int METADATA_KEY_AUTHOR;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_BITRATE")]
+ public const int METADATA_KEY_BITRATE;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_CAMERA_MODEL")]
+ public const int METADATA_KEY_CAMERA_MODEL;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_CERTIFICATE")]
+ public const int METADATA_KEY_CERTIFICATE;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_CHILDCOUNT")]
+ public const int METADATA_KEY_CHILDCOUNT;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_CHILDCOUNT_UNKNOWN")]
+ public const int METADATA_KEY_CHILDCOUNT_UNKNOWN;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_CREATION_DATE")]
+ public const int METADATA_KEY_CREATION_DATE;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_DESCRIPTION")]
+ public const int METADATA_KEY_DESCRIPTION;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_DIRECTOR")]
+ public const int METADATA_KEY_DIRECTOR;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_DURATION")]
+ public const int METADATA_KEY_DURATION;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_EPISODE")]
+ public const int METADATA_KEY_EPISODE;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_EPISODE_TITLE")]
+ public const int METADATA_KEY_EPISODE_TITLE;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_EXPOSURE_TIME")]
+ public const int METADATA_KEY_EXPOSURE_TIME;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_EXTERNAL_PLAYER")]
+ public const int METADATA_KEY_EXTERNAL_PLAYER;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_EXTERNAL_URL")]
+ public const int METADATA_KEY_EXTERNAL_URL;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_FAVOURITE")]
+ public const int METADATA_KEY_FAVOURITE;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_FLASH_USED")]
+ public const int METADATA_KEY_FLASH_USED;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_FRAMERATE")]
+ public const int METADATA_KEY_FRAMERATE;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_GENRE")]
+ public const int METADATA_KEY_GENRE;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_HEIGHT")]
+ public const int METADATA_KEY_HEIGHT;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_ID")]
+ public const int METADATA_KEY_ID;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_INVALID")]
+ public const int METADATA_KEY_INVALID;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_ISO_SPEED")]
+ public const int METADATA_KEY_ISO_SPEED;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_KEYWORD")]
+ public const int METADATA_KEY_KEYWORD;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_LAST_PLAYED")]
+ public const int METADATA_KEY_LAST_PLAYED;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_LAST_POSITION")]
+ public const int METADATA_KEY_LAST_POSITION;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_LICENSE")]
+ public const int METADATA_KEY_LICENSE;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_LYRICS")]
+ public const int METADATA_KEY_LYRICS;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_MB_ALBUM_ID")]
+ public const int METADATA_KEY_MB_ALBUM_ID;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_MB_ARTIST_ID")]
+ public const int METADATA_KEY_MB_ARTIST_ID;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_MB_RECORDING_ID")]
+ public const int METADATA_KEY_MB_RECORDING_ID;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_MB_TRACK_ID")]
+ public const int METADATA_KEY_MB_TRACK_ID;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_MIME")]
+ public const int METADATA_KEY_MIME;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_MODIFICATION_DATE")]
+ public const int METADATA_KEY_MODIFICATION_DATE;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_ORIENTATION")]
+ public const int METADATA_KEY_ORIENTATION;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_ORIGINAL_TITLE")]
+ public const int METADATA_KEY_ORIGINAL_TITLE;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_PERFORMER")]
+ public const int METADATA_KEY_PERFORMER;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_PLAY_COUNT")]
+ public const int METADATA_KEY_PLAY_COUNT;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_PRODUCER")]
+ public const int METADATA_KEY_PRODUCER;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_PUBLICATION_DATE")]
+ public const int METADATA_KEY_PUBLICATION_DATE;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_RATING")]
+ public const int METADATA_KEY_RATING;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_REGION")]
+ public const int METADATA_KEY_REGION;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_SEASON")]
+ public const int METADATA_KEY_SEASON;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_SHOW")]
+ public const int METADATA_KEY_SHOW;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_SITE")]
+ public const int METADATA_KEY_SITE;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_SIZE")]
+ public const int METADATA_KEY_SIZE;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_SOURCE")]
+ public const int METADATA_KEY_SOURCE;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_START_TIME")]
+ public const int METADATA_KEY_START_TIME;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_STUDIO")]
+ public const int METADATA_KEY_STUDIO;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_THUMBNAIL")]
+ public const int METADATA_KEY_THUMBNAIL;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_THUMBNAIL_BINARY")]
+ public const int METADATA_KEY_THUMBNAIL_BINARY;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_TITLE")]
+ public const int METADATA_KEY_TITLE;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_TITLE_FROM_FILENAME")]
+ public const int METADATA_KEY_TITLE_FROM_FILENAME;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_TRACK_NUMBER")]
+ public const int METADATA_KEY_TRACK_NUMBER;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_URL")]
+ public const int METADATA_KEY_URL;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_METADATA_KEY_WIDTH")]
+ public const int METADATA_KEY_WIDTH;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_OPERATION_OPTION_COUNT")]
+ public const string OPERATION_OPTION_COUNT;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_OPERATION_OPTION_KEY_EQUAL_FILTER")]
+ public const string OPERATION_OPTION_KEY_EQUAL_FILTER;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_OPERATION_OPTION_KEY_RANGE_FILTER")]
+ public const string OPERATION_OPTION_KEY_RANGE_FILTER;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_OPERATION_OPTION_RESOLUTION_FLAGS")]
+ public const string OPERATION_OPTION_RESOLUTION_FLAGS;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_OPERATION_OPTION_SKIP")]
+ public const string OPERATION_OPTION_SKIP;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_OPERATION_OPTION_TYPE_FILTER")]
+ public const string OPERATION_OPTION_TYPE_FILTER;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_PADDING")]
+ public const int PADDING;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_PADDING_SMALL")]
+ public const int PADDING_SMALL;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_PLUGIN_AUTHOR")]
+ public const string PLUGIN_AUTHOR;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_PLUGIN_DESCRIPTION")]
+ public const string PLUGIN_DESCRIPTION;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_PLUGIN_LICENSE")]
+ public const string PLUGIN_LICENSE;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_PLUGIN_LIST_VAR")]
+ public const string PLUGIN_LIST_VAR;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_PLUGIN_NAME")]
+ public const string PLUGIN_NAME;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_PLUGIN_PATH_VAR")]
+ public const string PLUGIN_PATH_VAR;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_PLUGIN_RANKS_VAR")]
+ public const string PLUGIN_RANKS_VAR;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_PLUGIN_SITE")]
+ public const string PLUGIN_SITE;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_PLUGIN_VERSION")]
+ public const string PLUGIN_VERSION;
+ [CCode (cheader_filename = "grilo.h", cname = "GRL_SOURCE_REMAINING_UNKNOWN")]
+ public const int SOURCE_REMAINING_UNKNOWN;
+ [CCode (cheader_filename = "grilo.h")]
+ public static GLib.DateTime date_time_from_iso8601 (string date);
+ [CCode (cheader_filename = "grilo.h")]
+ public static void deinit ();
+ [CCode (cheader_filename = "grilo.h")]
+ public static GLib.Value? g_value_dup (GLib.Value value);
+ [CCode (cheader_filename = "grilo.h")]
+ public static void g_value_free (GLib.Value value);
+ [CCode (cheader_filename = "grilo.h")]
+ public static GLib.HashTable<string,GLib.Value?> g_value_hashtable_new ();
+ [CCode (cheader_filename = "grilo.h")]
+ public static GLib.HashTable<void*,GLib.Value?> g_value_hashtable_new_direct ();
+ [CCode (cheader_filename = "grilo.h")]
+ public static GLib.Value? g_value_new (GLib.Type g_type);
+ [CCode (cheader_filename = "grilo.h")]
+ public static void init ([CCode (array_length_cname = "argc", array_length_pos = 0.5)] ref unowned string[]? argv);
+ [CCode (cheader_filename = "grilo.h")]
+ public static GLib.OptionGroup init_get_option_group ();
+ [CCode (cheader_filename = "grilo.h")]
+ public static void log_configure (string config);
+ [CCode (cheader_filename = "grilo.h")]
+ public static void marshal_VOID__BOXED_ENUM_BOOLEAN (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
+ [CCode (cheader_filename = "grilo.h")]
+ public static unowned string metadata_key_get_desc (Grl.KeyID key);
+ [CCode (cheader_filename = "grilo.h")]
+ public static unowned string metadata_key_get_name (Grl.KeyID key);
+ [CCode (cheader_filename = "grilo.h")]
+ public static GLib.Type metadata_key_get_type (Grl.KeyID key);
+ [CCode (cheader_filename = "grilo.h")]
+ public static void metadata_key_setup_system_keys (Grl.Registry registry);
+ [CCode (cheader_filename = "grilo.h")]
+ public static void multiple_get_media_from_uri (string uri, GLib.List<Grl.KeyID> keys, Grl.OperationOptions options, Grl.SourceResolveCb callback);
+ [CCode (cheader_filename = "grilo.h")]
+ public static uint multiple_search (GLib.List<Grl.Source>? sources, string text, GLib.List<Grl.KeyID> keys, Grl.OperationOptions options, Grl.SourceResultCb callback);
+ [CCode (cheader_filename = "grilo.h")]
+ public static GLib.List<Grl.Media> multiple_search_sync (GLib.List<Grl.Source>? sources, string text, GLib.List<Grl.KeyID> keys, Grl.OperationOptions options) throws GLib.Error;
+ [CCode (cheader_filename = "grilo.h")]
+ public static void operation_cancel (uint operation_id);
+ [CCode (cheader_filename = "grilo.h")]
+ public static uint operation_generate_id ();
+ [CCode (cheader_filename = "grilo.h")]
+ public static void* operation_get_data (uint operation_id);
+ [CCode (cheader_filename = "grilo.h")]
+ public static void operation_init ();
+ [CCode (cheader_filename = "grilo.h")]
+ public static void operation_remove (uint operation_id);
+ [CCode (cheader_filename = "grilo.h")]
+ public static void operation_set_data (uint operation_id, void* user_data);
+ [CCode (cheader_filename = "grilo.h")]
+ public static void operation_set_data_full (uint operation_id, void* user_data, GLib.DestroyNotify? destroy_func);
+ [CCode (cheader_filename = "grilo.h")]
+ public static void operation_set_private_data (uint operation_id, void* private_data, [CCode (destroy_notify_pos = 3.1)] owned Grl.OperationCancelCb cancel_cb);
+ [CCode (cheader_filename = "grilo.h")]
+ public static void paging_translate (uint skip, uint count, uint max_page_size, uint page_size, uint page_number, uint internal_offset);
+}
--- /dev/null
+/* grilo-net-0.3.vapi generated by vapigen-0.30, do not modify. */
+
+[CCode (cprefix = "GrlNet", gir_namespace = "GrlNet", gir_version = "0.3", lower_case_cprefix = "grl_net_")]
+namespace GrlNet {
+ [CCode (cheader_filename = "net/grl-net.h", type_id = "grl_net_wc_get_type ()")]
+ public class Wc : GLib.Object {
+ [CCode (has_construct_function = false)]
+ public Wc ();
+ public static GLib.Quark error_quark ();
+ public void flush_delayed_requests ();
+ public async bool request_async (string uri, GLib.Cancellable? cancellable, out unowned string content, out size_t length) throws GLib.Error;
+ [CCode (finish_name = "grl_net_wc_request_finish")]
+ public async bool request_with_headers_async (string uri, GLib.Cancellable? cancellable, ..., out unowned string content, out size_t length) throws GLib.Error;
+ [CCode (finish_name = "grl_net_wc_request_finish")]
+ public async bool request_with_headers_hash_async (string uri, GLib.HashTable<string,string>? headers, GLib.Cancellable? cancellable, out unowned string content, out size_t length) throws GLib.Error;
+ public void set_cache (bool use_cache);
+ public void set_cache_size (uint cache_size);
+ public void set_log_level (uint log_level);
+ public void set_throttling (uint throttling);
+ [NoAccessorMethod]
+ public bool cache { get; set construct; }
+ [NoAccessorMethod]
+ public uint cache_size { get; set construct; }
+ [NoAccessorMethod]
+ public uint loglevel { get; set; }
+ [NoAccessorMethod]
+ public uint throttling { get; set; }
+ [NoAccessorMethod]
+ public string user_agent { owned get; set construct; }
+ }
+ [CCode (cheader_filename = "net/grl-net.h", cprefix = "GRL_NET_WC_ERROR_", has_type_id = false)]
+ public enum WcError {
+ UNAVAILABLE,
+ PROTOCOL_ERROR,
+ AUTHENTICATION_REQUIRED,
+ NOT_FOUND,
+ CONFLICT,
+ FORBIDDEN,
+ NETWORK_ERROR,
+ PROXY_ERROR,
+ CANCELLED
+ }
+}
include $(TOPDIR)/rules.mk
PKG_NAME:=gst1-libav
-PKG_VERSION:=1.4.5
+PKG_VERSION:=1.6.2
PKG_RELEASE:=1
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
PKG_SOURCE:=gst-libav-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://gstreamer.freedesktop.org/src/gst-libav
-PKG_MD5SUM:=f4922a46adbcbe7bd01331ff5dc7979d
+PKG_MD5SUM:=09644a38827d233f53edeac815dd0ec0
PKG_LICENSE:=GPL-2.0 LGPL-2.0
PKG_LICENSE_FILES:=COPYING COPYING.LIB
include $(TOPDIR)/rules.mk
PKG_NAME:=gst1-plugins-bad
-PKG_VERSION:=1.4.5
-PKG_RELEASE:=3
+PKG_VERSION:=1.6.2
+PKG_RELEASE:=1
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
PKG_BUILD_DIR:=$(BUILD_DIR)/gst-plugins-bad-$(PKG_VERSION)
PKG_SOURCE:=gst-plugins-bad-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://gstreamer.freedesktop.org/src/gst-plugins-bad/
-PKG_MD5SUM:=e0bb39412cf4a48fe0397bcf3a7cd451
+PKG_MD5SUM:=7c73bec1d389f0e184ebbbbb9e9f883d
PKG_BUILD_DEPENDS:= libgstreamer1 gstreamer1-plugins-base
+++ /dev/null
---- a/configure.ac
-+++ b/configure.ac
-@@ -3334,7 +3334,6 @@ ext/timidity/Makefile
- ext/webp/Makefile
- ext/xvid/Makefile
- ext/zbar/Makefile
--po/Makefile.in
- docs/Makefile
- docs/plugins/Makefile
- docs/libs/Makefile
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -2,11 +2,11 @@ DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-d
-
- SUBDIRS = \
- gst-libs gst sys ext pkgconfig \
-- m4 common docs tests po tools
-+ m4 common docs tests tools
-
- DIST_SUBDIRS = \
- gst gst-libs sys ext pkgconfig \
-- m4 common docs tests po tools
-+ m4 common docs tests tools
-
- # include before EXTRA_DIST for win32 assignment
- include $(top_srcdir)/common/win32.mak
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -739,11 +739,11 @@ wayland_scanner = @wayland_scanner@
- DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
- SUBDIRS = \
- gst-libs gst sys ext pkgconfig \
-- m4 common docs tests po tools
-+ m4 common docs tests tools
-
- DIST_SUBDIRS = \
- gst gst-libs sys ext pkgconfig \
-- m4 common docs tests po tools
-+ m4 common docs tests tools
-
-
- # the MANIFEST contains all win32 related files that should be disted
--- /dev/null
+diff -u --recursive gst-plugins-bad-1.6.2-vanilla/configure.ac gst-plugins-bad-1.6.2/configure.ac
+--- gst-plugins-bad-1.6.2-vanilla/configure.ac 2016-01-01 10:40:17.883755147 -0500
++++ gst-plugins-bad-1.6.2/configure.ac 2016-01-01 10:41:14.832426692 -0500
+@@ -3455,7 +3455,6 @@
+ ext/xvid/Makefile
+ ext/zbar/Makefile
+ ext/dtls/Makefile
+-po/Makefile.in
+ docs/Makefile
+ docs/plugins/Makefile
+ docs/libs/Makefile
+diff -u --recursive gst-plugins-bad-1.6.2-vanilla/Makefile.am gst-plugins-bad-1.6.2/Makefile.am
+--- gst-plugins-bad-1.6.2-vanilla/Makefile.am 2016-01-01 10:40:17.883755147 -0500
++++ gst-plugins-bad-1.6.2/Makefile.am 2016-01-01 10:41:47.607858580 -0500
+@@ -2,11 +2,11 @@
+
+ SUBDIRS = \
+ gst-libs gst sys ext pkgconfig \
+- m4 common docs tests po tools
++ m4 common docs tests tools
+
+ DIST_SUBDIRS = \
+ gst gst-libs sys ext pkgconfig \
+- m4 common docs tests po tools
++ m4 common docs tests tools
+
+ # include before EXTRA_DIST for win32 assignment
+ include $(top_srcdir)/common/win32.mak
--- /dev/null
+diff -u --recursive gst-plugins-bad-1.6.2-vanilla/configure.ac gst-plugins-bad-1.6.2/configure.ac
+--- gst-plugins-bad-1.6.2-vanilla/configure.ac 2016-01-01 11:58:54.503551141 -0500
++++ gst-plugins-bad-1.6.2/configure.ac 2016-01-01 11:50:38.388185503 -0500
+@@ -3355,37 +3355,6 @@
+ sys/wininet/Makefile
+ sys/winks/Makefile
+ sys/winscreencap/Makefile
+-tests/Makefile
+-tests/check/Makefile
+-tests/files/Makefile
+-tests/examples/Makefile
+-tests/examples/avsamplesink/Makefile
+-tests/examples/camerabin2/Makefile
+-tests/examples/codecparsers/Makefile
+-tests/examples/directfb/Makefile
+-tests/examples/gl/Makefile
+-tests/examples/gl/cocoa/Makefile
+-tests/examples/gl/clutter/Makefile
+-tests/examples/gl/generic/Makefile
+-tests/examples/gl/generic/cube/Makefile
+-tests/examples/gl/generic/cubeyuv/Makefile
+-tests/examples/gl/generic/doublecube/Makefile
+-tests/examples/gl/generic/recordgraphic/Makefile
+-tests/examples/gl/gtk/Makefile
+-tests/examples/gl/gtk/gtkvideooverlay/Makefile
+-tests/examples/gl/gtk/3dvideo/Makefile
+-tests/examples/gl/gtk/filternovideooverlay/Makefile
+-tests/examples/gl/gtk/filtervideooverlay/Makefile
+-tests/examples/gl/gtk/fxtest/Makefile
+-tests/examples/gl/gtk/switchvideooverlay/Makefile
+-tests/examples/gl/qt/Makefile
+-tests/examples/gl/sdl/Makefile
+-tests/examples/gtk/Makefile
+-tests/examples/mpegts/Makefile
+-tests/examples/mxf/Makefile
+-tests/examples/opencv/Makefile
+-tests/examples/uvch264/Makefile
+-tests/icles/Makefile
+ ext/voamrwbenc/Makefile
+ ext/voaacenc/Makefile
+ ext/assrender/Makefile
+diff -u --recursive gst-plugins-bad-1.6.2-vanilla/Makefile.am gst-plugins-bad-1.6.2/Makefile.am
+--- gst-plugins-bad-1.6.2-vanilla/Makefile.am 2016-01-01 11:58:54.504551169 -0500
++++ gst-plugins-bad-1.6.2/Makefile.am 2016-01-01 11:50:06.848314203 -0500
+@@ -2,11 +2,11 @@
+
+ SUBDIRS = \
+ gst-libs gst sys ext pkgconfig \
+- m4 common docs tests tools
++ m4 common docs tools
+
+ DIST_SUBDIRS = \
+ gst gst-libs sys ext pkgconfig \
+- m4 common docs tests tools
++ m4 common docs tools
+
+ # include before EXTRA_DIST for win32 assignment
+ include $(top_srcdir)/common/win32.mak
include $(TOPDIR)/rules.mk
PKG_NAME:=gst1-plugins-base
-PKG_VERSION:=1.4.5
+PKG_VERSION:=1.6.2
PKG_RELEASE:=1
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
PKG_BUILD_DIR:=$(BUILD_DIR)/gst-plugins-base-$(PKG_VERSION)
PKG_SOURCE:=gst-plugins-base-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://gstreamer.freedesktop.org/src/gst-plugins-base/
-PKG_MD5SUM:=357165af625c0ca353ab47c5d843920e
+PKG_MD5SUM:=f530fbbe287edce79c55a37bd1a39fe2
PKG_BUILD_DEPENDS:= libgstreamer1
PKG_CONFIG_DEPENDS:= \
$(eval $(call GstBuildPlugin,playback,media decoder (v2),pbutils,,))
$(eval $(call GstBuildPlugin,gio,GIO,,,))
$(eval $(call GstBuildPlugin,ogg,Ogg,riff tag pbutils video,,+libogg))
-$(eval $(call GstBuildPlugin,tcp,TCP,,,))
+$(eval $(call GstBuildPlugin,tcp,TCP,net,,))
$(eval $(call GstBuildPlugin,theora,Theora,tag video,,+libogg +libtheora))
$(eval $(call GstBuildPlugin,typefindfunctions,'typefind' functions,audio pbutils tag video,,))
$(eval $(call GstBuildPlugin,videoconvert,video format conversion,video,,))
--- /dev/null
+diff -u --recursive gst-plugins-base-1.6.2-vanilla/configure.ac gst-plugins-base-1.6.2/configure.ac
+--- gst-plugins-base-1.6.2-vanilla/configure.ac 2016-01-01 10:40:17.931759357 -0500
++++ gst-plugins-base-1.6.2/configure.ac 2016-01-01 10:43:44.374351388 -0500
+@@ -921,7 +921,6 @@
+ docs/libs/Makefile
+ docs/plugins/Makefile
+ docs/version.entities
+-po/Makefile.in
+ common/Makefile
+ common/m4/Makefile
+ m4/Makefile
+diff -u --recursive gst-plugins-base-1.6.2-vanilla/Makefile.am gst-plugins-base-1.6.2/Makefile.am
+--- gst-plugins-base-1.6.2-vanilla/Makefile.am 2016-01-01 10:40:17.931759357 -0500
++++ gst-plugins-base-1.6.2/Makefile.am 2016-01-01 10:44:17.403209313 -0500
+@@ -13,7 +13,6 @@
+ tools \
+ tests \
+ docs \
+- po \
+ common \
+ m4
+
+@@ -24,7 +23,6 @@
+ gst sys ext \
+ tools \
+ tests \
+- po \
+ common \
+ m4
+
+++ /dev/null
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -12,14 +12,12 @@ SUBDIRS = \
- gst sys $(SUBDIRS_EXT) \
- tools \
- tests \
-- docs \
- po \
- common \
- m4
-
- DIST_SUBDIRS = \
- pkgconfig \
-- docs \
- gst-libs \
- gst sys ext \
- tools \
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -539,14 +539,12 @@ SUBDIRS = \
- gst sys $(SUBDIRS_EXT) \
- tools \
- tests \
-- docs \
- po \
- common \
- m4
-
- DIST_SUBDIRS = \
- pkgconfig \
-- docs \
- gst-libs \
- gst sys ext \
- tools \
--- /dev/null
+diff -u --recursive gst-plugins-base-1.6.2-vanilla/configure.ac gst-plugins-base-1.6.2/configure.ac
+--- gst-plugins-base-1.6.2-vanilla/configure.ac 2016-01-01 12:00:43.489564691 -0500
++++ gst-plugins-base-1.6.2/configure.ac 2016-01-01 12:02:24.452371618 -0500
+@@ -899,23 +899,6 @@
+ pkgconfig/gstreamer-video-uninstalled.pc
+ pkgconfig/gstreamer-plugins-base.pc
+ pkgconfig/gstreamer-plugins-base-uninstalled.pc
+-tests/Makefile
+-tests/check/Makefile
+-tests/examples/Makefile
+-tests/examples/app/Makefile
+-tests/examples/audio/Makefile
+-tests/examples/dynamic/Makefile
+-tests/examples/encoding/Makefile
+-tests/examples/fft/Makefile
+-tests/examples/gio/Makefile
+-tests/examples/overlay/Makefile
+-tests/examples/seek/Makefile
+-tests/examples/snapshot/Makefile
+-tests/examples/playback/Makefile
+-tests/examples/playrec/Makefile
+-tests/files/Makefile
+-tests/icles/Makefile
+-tests/icles/playback/Makefile
+ docs/Makefile
+ docs/design/Makefile
+ docs/libs/Makefile
+diff -u --recursive gst-plugins-base-1.6.2-vanilla/Makefile.am gst-plugins-base-1.6.2/Makefile.am
+--- gst-plugins-base-1.6.2-vanilla/Makefile.am 2016-01-01 12:00:43.489564691 -0500
++++ gst-plugins-base-1.6.2/Makefile.am 2016-01-01 12:01:54.055525170 -0500
+@@ -11,7 +11,6 @@
+ gst-libs \
+ gst sys $(SUBDIRS_EXT) \
+ tools \
+- tests \
+ docs \
+ common \
+ m4
+@@ -22,7 +21,6 @@
+ gst-libs \
+ gst sys ext \
+ tools \
+- tests \
+ common \
+ m4
+
+++ /dev/null
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -11,7 +11,6 @@ SUBDIRS = \
- gst-libs \
- gst sys $(SUBDIRS_EXT) \
- tools \
-- tests \
- po \
- common \
- m4
-@@ -21,7 +20,6 @@ DIST_SUBDIRS = \
- gst-libs \
- gst sys ext \
- tools \
-- tests \
- po \
- common \
- m4
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -538,7 +538,6 @@ SUBDIRS = \
- gst-libs \
- gst sys $(SUBDIRS_EXT) \
- tools \
-- tests \
- po \
- common \
- m4
-@@ -548,7 +547,6 @@ DIST_SUBDIRS = \
- gst-libs \
- gst sys ext \
- tools \
-- tests \
- po \
- common \
- m4
--- /dev/null
+diff -u --recursive gst-plugins-base-1.6.2-vanilla/configure.ac gst-plugins-base-1.6.2/configure.ac
+--- gst-plugins-base-1.6.2-vanilla/configure.ac 2016-01-01 12:10:41.158319142 -0500
++++ gst-plugins-base-1.6.2/configure.ac 2016-01-01 12:07:36.271107197 -0500
+@@ -899,11 +899,6 @@
+ pkgconfig/gstreamer-video-uninstalled.pc
+ pkgconfig/gstreamer-plugins-base.pc
+ pkgconfig/gstreamer-plugins-base-uninstalled.pc
+-docs/Makefile
+-docs/design/Makefile
+-docs/libs/Makefile
+-docs/plugins/Makefile
+-docs/version.entities
+ common/Makefile
+ common/m4/Makefile
+ m4/Makefile
+diff -u --recursive gst-plugins-base-1.6.2-vanilla/Makefile.am gst-plugins-base-1.6.2/Makefile.am
+--- gst-plugins-base-1.6.2-vanilla/Makefile.am 2016-01-01 12:10:41.159319170 -0500
++++ gst-plugins-base-1.6.2/Makefile.am 2016-01-01 12:07:32.869011473 -0500
+@@ -11,13 +11,11 @@
+ gst-libs \
+ gst sys $(SUBDIRS_EXT) \
+ tools \
+- docs \
+ common \
+ m4
+
+ DIST_SUBDIRS = \
+ pkgconfig \
+- docs \
+ gst-libs \
+ gst sys ext \
+ tools \
+++ /dev/null
---- a/configure.ac
-+++ b/configure.ac
-@@ -918,7 +918,6 @@ docs/design/Makefile
- docs/libs/Makefile
- docs/plugins/Makefile
- docs/version.entities
--po/Makefile.in
- common/Makefile
- common/m4/Makefile
- m4/Makefile
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -11,7 +11,6 @@ SUBDIRS = \
- gst-libs \
- gst sys $(SUBDIRS_EXT) \
- tools \
-- po \
- common \
- m4
-
-@@ -20,7 +19,6 @@ DIST_SUBDIRS = \
- gst-libs \
- gst sys ext \
- tools \
-- po \
- common \
- m4
-
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -538,7 +538,6 @@ SUBDIRS = \
- gst-libs \
- gst sys $(SUBDIRS_EXT) \
- tools \
-- po \
- common \
- m4
-
-@@ -547,7 +546,6 @@ DIST_SUBDIRS = \
- gst-libs \
- gst sys ext \
- tools \
-- po \
- common \
- m4
-
include $(TOPDIR)/rules.mk
PKG_NAME:=gst1-plugins-good
-PKG_VERSION:=1.4.5
-PKG_RELEASE:=2
+PKG_VERSION:=1.6.2
+PKG_RELEASE:=1
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
PKG_BUILD_DIR:=$(BUILD_DIR)/gst-plugins-good-$(PKG_VERSION)
PKG_SOURCE:=gst-plugins-good-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://gstreamer.freedesktop.org/src/gst-plugins-good/
-PKG_MD5SUM:=eaf1a6daf73749bc423feac301d60038
+PKG_MD5SUM:=ef4f5bc4f31f706832a234b0f603967b
PKG_BUILD_DEPENDS:= libgstreamer1 gstreamer1-plugins-base
$(eval $(call GstBuildPlugin,flv,flv codec,audio pbutils tag video,,))
$(eval $(call GstBuildPlugin,flxdec,flx codec,,,))
#$(eval $(call GstBuildPlugin,gdkpixbuf,gdkpixbuf support,video,,))
-$(eval $(call GstBuildPlugin,goom2k1,goom support,,,))
-$(eval $(call GstBuildPlugin,goom,goom support,,,))
+$(eval $(call GstBuildPlugin,goom2k1,goom support,audio video,,))
+$(eval $(call GstBuildPlugin,goom,goom support,audio video,,))
$(eval $(call GstBuildPlugin,icydemux,icy demuxer,audio tag,,))
$(eval $(call GstBuildPlugin,id3demux,ID3v1/v2 demuxer,pbutils tag,,))
$(eval $(call GstBuildPlugin,imagefreeze,imagefreeze support,,,))
--- /dev/null
+diff -u --recursive gst-plugins-good-1.6.2-vanilla/configure.ac gst-plugins-good-1.6.2/configure.ac
+--- gst-plugins-good-1.6.2-vanilla/configure.ac 2016-01-01 10:40:17.994764882 -0500
++++ gst-plugins-good-1.6.2/configure.ac 2016-01-01 10:45:25.668599823 -0500
+@@ -1014,7 +1014,6 @@
+ sys/v4l2/Makefile
+ sys/waveform/Makefile
+ sys/ximage/Makefile
+-po/Makefile.in
+ tests/Makefile
+ tests/check/Makefile
+ tests/examples/Makefile
+diff -u --recursive gst-plugins-good-1.6.2-vanilla/Makefile.am gst-plugins-good-1.6.2/Makefile.am
+--- gst-plugins-good-1.6.2-vanilla/Makefile.am 2016-01-01 10:40:17.994764882 -0500
++++ gst-plugins-good-1.6.2/Makefile.am 2016-01-01 10:45:19.923089598 -0500
+@@ -4,7 +4,6 @@
+ gst sys ext \
+ tests \
+ docs \
+- po \
+ common \
+ m4 \
+ pkgconfig
+++ /dev/null
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -3,7 +3,6 @@ DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-d
- ALWAYS_SUBDIRS = \
- gst sys ext \
- tests \
-- docs \
- po \
- common \
- m4 \
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -571,7 +571,6 @@ DISTCHECK_CONFIGURE_FLAGS = --enable-gtk
- ALWAYS_SUBDIRS = \
- gst sys ext \
- tests \
-- docs \
- po \
- common \
- m4 \
--- /dev/null
+diff -u --recursive gst-plugins-good-1.6.2-vanilla/configure.ac gst-plugins-good-1.6.2/configure.ac
+--- gst-plugins-good-1.6.2-vanilla/configure.ac 2016-01-01 12:00:52.525815362 -0500
++++ gst-plugins-good-1.6.2/configure.ac 2016-01-01 12:03:22.198982586 -0500
+@@ -1014,21 +1014,6 @@
+ sys/v4l2/Makefile
+ sys/waveform/Makefile
+ sys/ximage/Makefile
+-tests/Makefile
+-tests/check/Makefile
+-tests/examples/Makefile
+-tests/examples/audiofx/Makefile
+-tests/examples/cairo/Makefile
+-tests/examples/equalizer/Makefile
+-tests/examples/jack/Makefile
+-tests/examples/level/Makefile
+-tests/examples/pulse/Makefile
+-tests/examples/rtp/Makefile
+-tests/examples/shapewipe/Makefile
+-tests/examples/spectrum/Makefile
+-tests/examples/v4l2/Makefile
+-tests/files/Makefile
+-tests/icles/Makefile
+ common/Makefile
+ common/m4/Makefile
+ m4/Makefile
+diff -u --recursive gst-plugins-good-1.6.2-vanilla/Makefile.am gst-plugins-good-1.6.2/Makefile.am
+--- gst-plugins-good-1.6.2-vanilla/Makefile.am 2016-01-01 12:00:52.525815362 -0500
++++ gst-plugins-good-1.6.2/Makefile.am 2016-01-01 12:03:06.921556033 -0500
+@@ -2,7 +2,6 @@
+
+ ALWAYS_SUBDIRS = \
+ gst sys ext \
+- tests \
+ docs \
+ common \
+ m4 \
+++ /dev/null
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -2,7 +2,6 @@ DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-d
-
- ALWAYS_SUBDIRS = \
- gst sys ext \
-- tests \
- po \
- common \
- m4 \
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -570,7 +570,6 @@ top_srcdir = @top_srcdir@
- DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
- ALWAYS_SUBDIRS = \
- gst sys ext \
-- tests \
- po \
- common \
- m4 \
--- /dev/null
+diff -u --recursive gst-plugins-good-1.6.2-vanilla/configure.ac gst-plugins-good-1.6.2/configure.ac
+--- gst-plugins-good-1.6.2-vanilla/configure.ac 2016-01-01 12:10:51.392608142 -0500
++++ gst-plugins-good-1.6.2/configure.ac 2016-01-01 12:08:39.568889466 -0500
+@@ -1017,9 +1017,6 @@
+ common/Makefile
+ common/m4/Makefile
+ m4/Makefile
+-docs/Makefile
+-docs/plugins/Makefile
+-docs/version.entities
+ pkgconfig/Makefile
+ pkgconfig/gstreamer-plugins-good-uninstalled.pc
+ gst-plugins-good.spec
+diff -u --recursive gst-plugins-good-1.6.2-vanilla/Makefile.am gst-plugins-good-1.6.2/Makefile.am
+--- gst-plugins-good-1.6.2-vanilla/Makefile.am 2016-01-01 12:10:51.393608170 -0500
++++ gst-plugins-good-1.6.2/Makefile.am 2016-01-01 12:08:35.442773216 -0500
+@@ -2,7 +2,6 @@
+
+ ALWAYS_SUBDIRS = \
+ gst sys ext \
+- docs \
+ common \
+ m4 \
+ pkgconfig
+++ /dev/null
---- a/configure.ac
-+++ b/configure.ac
-@@ -1083,7 +1083,6 @@ sys/sunaudio/Makefile
- sys/v4l2/Makefile
- sys/waveform/Makefile
- sys/ximage/Makefile
--po/Makefile.in
- tests/Makefile
- tests/check/Makefile
- tests/examples/Makefile
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -2,7 +2,6 @@ DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-d
-
- ALWAYS_SUBDIRS = \
- gst sys ext \
-- po \
- common \
- m4 \
- pkgconfig
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -570,7 +570,6 @@ top_srcdir = @top_srcdir@
- DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
- ALWAYS_SUBDIRS = \
- gst sys ext \
-- po \
- common \
- m4 \
- pkgconfig
include $(TOPDIR)/rules.mk
PKG_NAME:=gst1-plugins-ugly
-PKG_VERSION:=1.4.5
+PKG_VERSION:=1.6.2
PKG_RELEASE:=1
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
PKG_BUILD_DIR:=$(BUILD_DIR)/gst-plugins-ugly-$(PKG_VERSION)
PKG_SOURCE:=gst-plugins-ugly-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://gstreamer.freedesktop.org/src/gst-plugins-ugly/
-PKG_MD5SUM:=6954beed7bb9a93e426dee543ff46393
+PKG_MD5SUM:=0f0e30336e3155443cd5bfec5c215d56
PKG_BUILD_DEPENDS:= libgstreamer1 gstreamer1-plugins-base
PKG_CONFIG_DEPENDS:= \
$$(eval $$(call BuildPackage,gst1-mod-$(1)))
endef
-$(eval $(call GstBuildPlugin,asf,ASF demuxer,audio riff rtp rtsp sdp tag,,))
+$(eval $(call GstBuildPlugin,asf,ASF demuxer,audio video riff rtp rtsp sdp tag,,))
$(eval $(call GstBuildPlugin,lame,MP3 encoder (using LAME),audio,,+lame-lib))
$(eval $(call GstBuildPlugin,mad,MP3 decoder (using MAD),audio tag,,+libid3tag +libmad))
$(eval $(call GstBuildPlugin,mpeg2dec,MPEG decoder,video,,+libmpeg2))
--- /dev/null
+diff -u --recursive gst-plugins-ugly-1.6.2-vanilla/configure.ac gst-plugins-ugly-1.6.2/configure.ac
+--- gst-plugins-ugly-1.6.2-vanilla/configure.ac 2016-01-01 10:47:06.333623730 -0500
++++ gst-plugins-ugly-1.6.2/configure.ac 2016-01-01 10:47:20.211613708 -0500
+@@ -470,7 +470,6 @@
+ tests/Makefile
+ tests/check/Makefile
+ m4/Makefile
+-po/Makefile.in
+ pkgconfig/Makefile
+ pkgconfig/gstreamer-plugins-ugly-uninstalled.pc
+ gst-plugins-ugly.spec
+diff -u --recursive gst-plugins-ugly-1.6.2-vanilla/Makefile.am gst-plugins-ugly-1.6.2/Makefile.am
+--- gst-plugins-ugly-1.6.2-vanilla/Makefile.am 2016-01-01 10:47:06.333623730 -0500
++++ gst-plugins-ugly-1.6.2/Makefile.am 2016-01-01 10:47:14.523210855 -0500
+@@ -1,7 +1,7 @@
+ DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc
+
+ SUBDIRS = \
+- gst-libs gst ext docs m4 tests common pkgconfig po
++ gst-libs gst ext docs m4 tests common pkgconfig
+
+ # include before EXTRA_DIST for win32 assignment
+ include $(top_srcdir)/common/win32.mak
+++ /dev/null
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -1,7 +1,7 @@
- DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc
-
- SUBDIRS = \
-- gst-libs gst ext docs m4 tests common pkgconfig po
-+ gst-libs gst ext m4 tests common pkgconfig po
-
- # include before EXTRA_DIST for win32 assignment
- include $(top_srcdir)/common/win32.mak
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -502,7 +502,7 @@ top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
- DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
- SUBDIRS = \
-- gst-libs gst ext docs m4 tests common pkgconfig po
-+ gst-libs gst ext m4 tests common pkgconfig po
-
-
- # the MANIFEST contains all win32 related files that should be disted
--- /dev/null
+diff -u --recursive gst-plugins-ugly-1.6.2-vanilla/configure.ac gst-plugins-ugly-1.6.2/configure.ac
+--- gst-plugins-ugly-1.6.2-vanilla/configure.ac 2016-01-01 12:01:01.547065731 -0500
++++ gst-plugins-ugly-1.6.2/configure.ac 2016-01-01 12:04:18.111545715 -0500
+@@ -467,8 +467,6 @@
+ docs/Makefile
+ docs/plugins/Makefile
+ docs/version.entities
+-tests/Makefile
+-tests/check/Makefile
+ m4/Makefile
+ pkgconfig/Makefile
+ pkgconfig/gstreamer-plugins-ugly-uninstalled.pc
+diff -u --recursive gst-plugins-ugly-1.6.2-vanilla/Makefile.am gst-plugins-ugly-1.6.2/Makefile.am
+--- gst-plugins-ugly-1.6.2-vanilla/Makefile.am 2016-01-01 12:01:01.547065731 -0500
++++ gst-plugins-ugly-1.6.2/Makefile.am 2016-01-01 12:04:12.087377153 -0500
+@@ -1,7 +1,7 @@
+ DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc
+
+ SUBDIRS = \
+- gst-libs gst ext docs m4 tests common pkgconfig
++ gst-libs gst ext docs m4 common pkgconfig
+
+ # include before EXTRA_DIST for win32 assignment
+ include $(top_srcdir)/common/win32.mak
+++ /dev/null
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -1,7 +1,7 @@
- DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc
-
- SUBDIRS = \
-- gst-libs gst ext m4 tests common pkgconfig po
-+ gst-libs gst ext m4 common pkgconfig po
-
- # include before EXTRA_DIST for win32 assignment
- include $(top_srcdir)/common/win32.mak
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -502,7 +502,7 @@ top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
- DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
- SUBDIRS = \
-- gst-libs gst ext m4 tests common pkgconfig po
-+ gst-libs gst ext m4 common pkgconfig po
-
-
- # the MANIFEST contains all win32 related files that should be disted
--- /dev/null
+diff -u --recursive gst-plugins-ugly-1.6.2-vanilla/configure.ac gst-plugins-ugly-1.6.2/configure.ac
+--- gst-plugins-ugly-1.6.2-vanilla/configure.ac 2016-01-01 12:11:03.267943540 -0500
++++ gst-plugins-ugly-1.6.2/configure.ac 2016-01-01 12:13:30.992120335 -0500
+@@ -464,9 +464,6 @@
+ ext/sidplay/Makefile
+ ext/twolame/Makefile
+ ext/x264/Makefile
+-docs/Makefile
+-docs/plugins/Makefile
+-docs/version.entities
+ m4/Makefile
+ pkgconfig/Makefile
+ pkgconfig/gstreamer-plugins-ugly-uninstalled.pc
+diff -u --recursive gst-plugins-ugly-1.6.2-vanilla/Makefile.am gst-plugins-ugly-1.6.2/Makefile.am
+--- gst-plugins-ugly-1.6.2-vanilla/Makefile.am 2016-01-01 12:11:03.268943568 -0500
++++ gst-plugins-ugly-1.6.2/Makefile.am 2016-01-01 12:13:28.110038773 -0500
+@@ -1,7 +1,7 @@
+ DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc
+
+ SUBDIRS = \
+- gst-libs gst ext docs m4 common pkgconfig
++ gst-libs gst ext m4 common pkgconfig
+
+ # include before EXTRA_DIST for win32 assignment
+ include $(top_srcdir)/common/win32.mak
+++ /dev/null
---- a/configure.ac
-+++ b/configure.ac
-@@ -475,7 +475,6 @@ docs/version.entities
- tests/Makefile
- tests/check/Makefile
- m4/Makefile
--po/Makefile.in
- pkgconfig/Makefile
- pkgconfig/gstreamer-plugins-ugly-uninstalled.pc
- gst-plugins-ugly.spec
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -1,7 +1,7 @@
- DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc
-
- SUBDIRS = \
-- gst-libs gst ext m4 common pkgconfig po
-+ gst-libs gst ext m4 common pkgconfig
-
- # include before EXTRA_DIST for win32 assignment
- include $(top_srcdir)/common/win32.mak
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -502,7 +502,7 @@ top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
- DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
- SUBDIRS = \
-- gst-libs gst ext m4 common pkgconfig po
-+ gst-libs gst ext m4 common pkgconfig
-
-
- # the MANIFEST contains all win32 related files that should be disted
include $(TOPDIR)/rules.mk
PKG_NAME:=gstreamer1
-PKG_VERSION:=1.4.5
+PKG_VERSION:=1.6.2
PKG_RELEASE:=1
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
PKG_BUILD_DIR:=$(BUILD_DIR)/gstreamer-$(PKG_VERSION)
PKG_SOURCE:=gstreamer-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://gstreamer.freedesktop.org/src/gstreamer/
-PKG_MD5SUM:=88a9289c64a4950ebb4f544980234289
+PKG_MD5SUM:=5e610b5a94c209487310739b39b6c464
PKG_FIXUP:=autoreconf
PKG_REMOVE_FILES:=autogen.sh aclocal.m4
./usr/include/gstreamer-$(GST_VERSION)/* \
$(1)/usr/include/gstreamer-$(GST_VERSION)/ \
)
+ $(INSTALL_DIR) $(1)/usr/lib/gstreamer-$(GST_VERSION)/include/gst
+ ( cd $(PKG_INSTALL_DIR); $(CP) \
+ ./usr/lib/gstreamer-$(GST_VERSION)/include/gst/*.h \
+ $(1)/usr/lib/gstreamer-$(GST_VERSION)/include/gst \
+ )
$(INSTALL_DIR) $(1)/usr/lib
( cd $(PKG_INSTALL_DIR); $(CP) \
./usr/lib/libgst*-$(GST_VERSION).{a,la,so*} \
--- /dev/null
+diff -u --recursive gstreamer-1.6.2-vanilla/configure.ac gstreamer-1.6.2/configure.ac
+--- gstreamer-1.6.2-vanilla/configure.ac 2016-01-01 10:40:18.040768907 -0500
++++ gstreamer-1.6.2/configure.ac 2016-01-01 10:48:24.160887684 -0500
+@@ -980,7 +980,6 @@
+ libs/gst/net/Makefile
+ plugins/Makefile
+ plugins/elements/Makefile
+-po/Makefile.in
+ tests/Makefile
+ tests/benchmarks/Makefile
+ tests/check/Makefile
+diff -u --recursive gstreamer-1.6.2-vanilla/Makefile.am gstreamer-1.6.2/Makefile.am
+--- gstreamer-1.6.2-vanilla/Makefile.am 2016-01-01 10:40:18.040768907 -0500
++++ gstreamer-1.6.2/Makefile.am 2016-01-01 10:48:19.150568341 -0500
+@@ -9,7 +9,6 @@
+ SUBDIRS = pkgconfig \
+ gst libs plugins tests \
+ docs \
+- po \
+ m4 \
+ common \
+ data
+@@ -22,7 +21,6 @@
+ DIST_SUBDIRS = pkgconfig \
+ gst libs plugins tools tests \
+ docs \
+- po \
+ m4 \
+ common \
+ data
+++ /dev/null
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -8,7 +8,6 @@ aclocal_DATA = gst-element-check-@GST_AP
-
- SUBDIRS = pkgconfig \
- gst libs plugins tests \
-- docs \
- po \
- m4 \
- common
-@@ -20,7 +19,6 @@ endif
- # These are all the possible subdirs
- DIST_SUBDIRS = pkgconfig \
- gst libs plugins tools tests \
-- docs \
- po \
- m4 \
- common
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -554,13 +554,12 @@ top_srcdir = @top_srcdir@
- DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-docbook
- aclocaldir = $(datadir)/aclocal
- aclocal_DATA = gst-element-check-@GST_API_VERSION@.m4
--SUBDIRS = pkgconfig gst libs plugins tests docs po m4 common \
-+SUBDIRS = pkgconfig gst libs plugins tests po m4 common \
- $(am__append_1)
-
- # These are all the possible subdirs
- DIST_SUBDIRS = pkgconfig \
- gst libs plugins tools tests \
-- docs \
- po \
- m4 \
- common
--- /dev/null
+diff -u --recursive gstreamer-1.6.2-vanilla/configure.ac gstreamer-1.6.2/configure.ac
+--- gstreamer-1.6.2-vanilla/configure.ac 2016-01-01 12:01:10.863324404 -0500
++++ gstreamer-1.6.2/configure.ac 2016-01-01 12:05:07.794937166 -0500
+@@ -980,21 +980,6 @@
+ libs/gst/net/Makefile
+ plugins/Makefile
+ plugins/elements/Makefile
+-tests/Makefile
+-tests/benchmarks/Makefile
+-tests/check/Makefile
+-tests/misc/Makefile
+-tests/examples/Makefile
+-tests/examples/adapter/Makefile
+-tests/examples/controller/Makefile
+-tests/examples/stepping/Makefile
+-tests/examples/helloworld/Makefile
+-tests/examples/manual/Makefile
+-tests/examples/memory/Makefile
+-tests/examples/netclock/Makefile
+-tests/examples/ptp/Makefile
+-tests/examples/streamiddemux/Makefile
+-tests/examples/streams/Makefile
+ tools/Makefile
+ common/Makefile
+ common/m4/Makefile
+diff -u --recursive gstreamer-1.6.2-vanilla/Makefile.am gstreamer-1.6.2/Makefile.am
+--- gstreamer-1.6.2-vanilla/Makefile.am 2016-01-01 12:01:10.862324377 -0500
++++ gstreamer-1.6.2/Makefile.am 2016-01-01 12:05:03.190808129 -0500
+@@ -7,7 +7,7 @@
+ aclocal_DATA = gst-element-check-@GST_API_VERSION@.m4
+
+ SUBDIRS = pkgconfig \
+- gst libs plugins tests \
++ gst libs plugins \
+ docs \
+ m4 \
+ common \
+@@ -19,7 +19,7 @@
+
+ # These are all the possible subdirs
+ DIST_SUBDIRS = pkgconfig \
+- gst libs plugins tools tests \
++ gst libs plugins tools \
+ docs \
+ m4 \
+ common \
+++ /dev/null
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -7,7 +7,7 @@ aclocaldir = $(datadir)/aclocal
- aclocal_DATA = gst-element-check-@GST_API_VERSION@.m4
-
- SUBDIRS = pkgconfig \
-- gst libs plugins tests \
-+ gst libs plugins \
- po \
- m4 \
- common
-@@ -18,7 +18,7 @@ endif
-
- # These are all the possible subdirs
- DIST_SUBDIRS = pkgconfig \
-- gst libs plugins tools tests \
-+ gst libs plugins tools \
- po \
- m4 \
- common
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -554,12 +554,12 @@ top_srcdir = @top_srcdir@
- DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-docbook
- aclocaldir = $(datadir)/aclocal
- aclocal_DATA = gst-element-check-@GST_API_VERSION@.m4
--SUBDIRS = pkgconfig gst libs plugins tests po m4 common \
-+SUBDIRS = pkgconfig gst libs plugins po m4 common \
- $(am__append_1)
-
- # These are all the possible subdirs
- DIST_SUBDIRS = pkgconfig \
-- gst libs plugins tools tests \
-+ gst libs plugins tools \
- po \
- m4 \
- common
--- /dev/null
+diff -u --recursive gstreamer-1.6.2-vanilla/configure.ac gstreamer-1.6.2/configure.ac
+--- gstreamer-1.6.2-vanilla/configure.ac 2016-01-01 12:11:19.150392204 -0500
++++ gstreamer-1.6.2/configure.ac 2016-01-01 12:06:49.611795028 -0500
+@@ -983,18 +983,6 @@
+ tools/Makefile
+ common/Makefile
+ common/m4/Makefile
+-docs/Makefile
+-docs/design/Makefile
+-docs/faq/Makefile
+-docs/gst/Makefile
+-docs/gst/gstreamer.types
+-docs/libs/Makefile
+-docs/plugins/Makefile
+-docs/manual/Makefile
+-docs/pwg/Makefile
+-docs/slides/Makefile
+-docs/xsl/Makefile
+-docs/version.entities
+ m4/Makefile
+ pkgconfig/Makefile
+ stamp.h
+diff -u --recursive gstreamer-1.6.2-vanilla/Makefile.am gstreamer-1.6.2/Makefile.am
+--- gstreamer-1.6.2-vanilla/Makefile.am 2016-01-01 12:11:19.151392233 -0500
++++ gstreamer-1.6.2/Makefile.am 2016-01-01 12:06:41.546568365 -0500
+@@ -8,7 +8,6 @@
+
+ SUBDIRS = pkgconfig \
+ gst libs plugins \
+- docs \
+ m4 \
+ common \
+ data
+@@ -20,7 +19,6 @@
+ # These are all the possible subdirs
+ DIST_SUBDIRS = pkgconfig \
+ gst libs plugins tools \
+- docs \
+ m4 \
+ common \
+ data
+++ /dev/null
---- a/configure.ac
-+++ b/configure.ac
-@@ -780,7 +780,6 @@ libs/gst/helpers/Makefile
- libs/gst/net/Makefile
- plugins/Makefile
- plugins/elements/Makefile
--po/Makefile.in
- tests/Makefile
- tests/benchmarks/Makefile
- tests/check/Makefile
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -8,7 +8,6 @@ aclocal_DATA = gst-element-check-@GST_AP
-
- SUBDIRS = pkgconfig \
- gst libs plugins \
-- po \
- m4 \
- common
-
-@@ -19,7 +18,6 @@ endif
- # These are all the possible subdirs
- DIST_SUBDIRS = pkgconfig \
- gst libs plugins tools \
-- po \
- m4 \
- common
-
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -554,13 +554,12 @@ top_srcdir = @top_srcdir@
- DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-docbook
- aclocaldir = $(datadir)/aclocal
- aclocal_DATA = gst-element-check-@GST_API_VERSION@.m4
--SUBDIRS = pkgconfig gst libs plugins po m4 common \
-+SUBDIRS = pkgconfig gst libs plugins m4 common \
- $(am__append_1)
-
- # These are all the possible subdirs
- DIST_SUBDIRS = pkgconfig \
- gst libs plugins tools \
-- po \
- m4 \
- common
-
--- /dev/null
+diff -u --recursive gstreamer-1.6.2-vanilla/gst/gstplugin.c gstreamer-1.6.2/gst/gstplugin.c
+--- gstreamer-1.6.2-vanilla/gst/gstplugin.c 2016-01-01 12:37:38.178990140 -0500
++++ gstreamer-1.6.2/gst/gstplugin.c 2016-01-01 12:38:30.431328737 -0500
+@@ -732,15 +732,8 @@
+ goto return_error;
+ }
+
+- flags = G_MODULE_BIND_LOCAL;
+- /* libgstpython.so is the gst-python plugin loader. It needs to be loaded with
+- * G_MODULE_BIND_LAZY.
+- *
+- * Ideally there should be a generic way for plugins to specify that they
+- * need to be loaded with _LAZY.
+- * */
+- if (strstr (filename, "libgstpython"))
+- flags |= G_MODULE_BIND_LAZY;
++ // No need to resolve all bindings until referenced
++ flags = G_MODULE_BIND_LOCAL | G_MODULE_BIND_LAZY;
+
+ module = g_module_open (filename, flags);
+ if (module == NULL) {
+++ /dev/null
---- a/gst/gstplugin.c
-+++ b/gst/gstplugin.c
-@@ -723,15 +723,8 @@ gst_plugin_load_file (const gchar * file
- goto return_error;
- }
-
-- flags = G_MODULE_BIND_LOCAL;
-- /* libgstpython.so is the gst-python plugin loader. It needs to be loaded with
-- * G_MODULE_BIND_LAZY.
-- *
-- * Ideally there should be a generic way for plugins to specify that they
-- * need to be loaded with _LAZY.
-- * */
-- if (strstr (filename, "libgstpython"))
-- flags |= G_MODULE_BIND_LAZY;
-+ // No need to resolve all bindings until referenced
-+ flags = G_MODULE_BIND_LOCAL | G_MODULE_BIND_LAZY;
-
- module = g_module_open (filename, flags);
- if (module == NULL) {
include $(TOPDIR)/rules.mk
PKG_NAME:=minidlna
-PKG_VERSION:=1.1.4
-PKG_RELEASE:=2
+PKG_VERSION:=1.1.5
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/minidlna
-PKG_MD5SUM:=67c9e91285bc3801fd91a5d26ea775d7
+PKG_MD5SUM:=1970e553a1eb8a3e7e302e2ce292cbc4
PKG_LICENSE:=GPL-2.0 BSD-3-Clause
PKG_LICENSE_FILES:=COPYING LICENCE.miniupnpd
#
-# Copyright (C) 2008-2015 OpenWrt.org
+# Copyright (C) 2008-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PKG_NAME:=motion
PKG_VERSION=3.4.0-20141018-$(PKG_SOURCE_VERSION)
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>
PKG_LICENSE:=GPLv2
endef
define Package/motion/conffiles
- /etc/motion.conf
+/etc/motion.conf
endef
CONFIGURE_ARGS+= \
include $(TOPDIR)/rules.mk
PKG_NAME:=tvheadend
-PKG_VERSION:=4.0.7
+PKG_VERSION:=4.0.9
PKG_RELEASE:=1
PKG_SOURCE_SUBDIR:=$(PKG_NAME)
--- /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:=youtube-dl
+PKG_VERSION:=2016.04.19
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://youtube-dl.org/downloads/$(PKG_VERSION)/
+PKG_MD5SUM:=7e5c7abc22a58ed55412fe7b263ae644
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
+
+PKG_LICENSE:=Unlicense
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Adrian Panella <ianchi74@outlook.com>
+
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/youtube-dl
+ SECTION:=multimedia
+ CATEGORY:=Multimedia
+ TITLE:=utility to download videos from YouTube.com
+ DEPENDS:=+python-openssl +python-email +python-xml +python-codecs +python-ctypes +ca-certificates
+ URL:=https://youtube-dl.org
+endef
+
+define Package/youtube-dl/description
+ youtube-dl is a small command-line program to download videos
+ from YouTube.com and a few more sites.
+ It requires the Python interpreter.
+endef
+
+define Package/youtube-dl/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/youtube-dl $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,youtube-dl))
#
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v3.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=adblock
-PKG_VERSION:=0.22.2
+PKG_VERSION:=1.1.1
PKG_RELEASE:=1
PKG_LICENSE:=GPL-3.0+
-PKG_MAINTAINER:=Dirk Brenken <dirk@brenken.org>
+PKG_MAINTAINER:=Dirk Brenken <openwrt@brenken.org>
include $(INCLUDE_DIR)/package.mk
SECTION:=net
CATEGORY:=Network
TITLE:=Powerful adblock script to block ad/abuse domains
- DEPENDS:=+curl +wget
+ DEPENDS:=+wget
PKGARCH:=all
endef
define Package/$(PKG_NAME)/description
-Powerful adblock script to block ad/abuse domains
-When the dns server on your router receives dns requests, we will sort out queries that ask for the [A]
-resource records of ad servers and return the local ip address of your router and the internal web server
-delivers a transparent pixel instead.
-The script supports the following domain blacklist sites:
- http://pgl.yoyo.org/adservers
- http://malwaredomains.com
- https://zeustracker.abuse.ch
- https://feodotracker.abuse.ch
- https://palevotracker.abuse.ch
- http://dshield.org
- http://www.shallalist.de
- http://www.spam404.com
- http://winhelp2002.mvps.org
-
-Please read README.md in /etc/adblock for further information.
+Powerful adblock script to block ad/abuse domains.
+Currently the script supports 19 domain blacklist sites plus manual black- and whitelist overrides.
+Please see https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md for further information.
endef
$(INSTALL_BIN) ./files/adblock-update.sh $(1)/usr/bin/
$(INSTALL_DATA) ./files/adblock-helper.sh $(1)/usr/bin/
+ $(INSTALL_DIR) $(1)/etc/hotplug.d/iface
+ $(INSTALL_BIN) ./files/adblock.hotplug $(1)/etc/hotplug.d/iface/99-adblock
+
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/adblock.init $(1)/etc/init.d/adblock
+
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) ./files/adblock.conf $(1)/etc/config/adblock
$(INSTALL_DIR) $(1)/etc/adblock
+ $(INSTALL_CONF) ./files/adblock.conf $(1)/etc/adblock/adblock.conf.default
$(INSTALL_CONF) ./files/adblock.blacklist $(1)/etc/adblock/
$(INSTALL_CONF) ./files/adblock.whitelist $(1)/etc/adblock/
- $(INSTALL_CONF) ./files/README.md $(1)/etc/adblock/
-
- $(INSTALL_DIR) $(1)/etc/adblock/samples
- $(INSTALL_CONF) ./files/samples/*.sample $(1)/etc/adblock/samples/
$(INSTALL_DIR) $(1)/www/adblock
$(INSTALL_DATA) ./files/www/adblock/* $(1)/www/adblock/
# adblock script for openwrt
## Description
-A lot of people already use adblocker plugins within their desktop browsers,
-but what if you are using your (smart) phone, tablet, watch or any other wlan gadget...
-...getting rid of annoying ads, trackers and other abuse sites (like facebook ;-) is simple: block them with your router.
-
-When the dns server on your router receives dns requests, you’ll sort out queries that ask for the [A] resource records of ad servers
-and return the local ip address of your router and the internal web server delivers a transparent pixel instead.
+A lot of people already use adblocker plugins within their desktop browsers, but what if you are using your (smart) phone, tablet, watch or any other wlan gadget...getting rid of annoying ads, trackers and other abuse sites (like facebook ;-) is simple: block them with your router. When the dns server on your router receives dns requests, you will sort out queries that ask for the resource records of ad servers and return the local ip address of your router and the internal web server delivers a transparent pixel instead.
## Main Features
-* support of the following domain blacklist sites (free for private usage, for commercial use please check their individual licenses):
- * [pgl.yoyo.org](http://pgl.yoyo.org/adservers), approx. 2.500 entries
- * [malwaredomains.com](http://malwaredomains.com), approx. 16.000 entries
- * [zeustracker.abuse.ch](https://zeustracker.abuse.ch), approx. 420 entries
- * [feodotracker.abuse.ch](https://feodotracker.abuse.ch), approx. 10 entries
- * [palevotracker.abuse.ch](https://palevotracker.abuse.ch), approx. 10 entries
- * [dshield.org](http://dshield.org), approx. 4.500 entries
- * [shallalist.de](http://www.shallalist.de) (categories "adv" "costtraps" "spyware" "tracker" "warez" enabled by default), approx. 32.000 entries
- * a short description of all shallalist categories can be found [online](http://www.shallalist.de/categories.html)
- * [spam404.com](http://www.spam404.com), approx. 5.000 entries
- * [winhelp2002.mvps.org](http://winhelp2002.mvps.org), approx. 15.000 entries
-* blocklist parsing by fast & flexible regex rulesets
-* additional white- and blacklist support for manual overrides
-* separate dynamic adblock network interface
-* separate dynamic uhttpd instance as pixel server
-* adblock quality checks after list update to ensure a reliable dnsmasq service
-* optional: powerful adblock list backup/restore handling
-* optional: adblock updates only on pre-defined wan interfaces (useful for (mobile) multiwan setups)
-* optional: domain query logging as a background service to easily identify free and already blocked domains (see example output below)
-* optional: status & error logging to separate file (req. ntp time sync)
-* optional: ntp time sync
+* support of the following domain blocklist sources (free for private usage, for commercial use please check their individual licenses):
+ * [adaway](https://adaway.org)
+ * => infrequent updates, approx. 400 entries (enabled by default)
+ * [blacklist]()
+ * => static local blacklist, located by default in '/etc/adblock/adblock.blacklist'
+ * [disconnect](https://disconnect.me)
+ * => numerous updates on the same day, approx. 6.500 entries (enabled by default)
+ * [dshield](http://dshield.org)
+ * => daily updates, approx. 4.500 entries
+ * [feodotracker](https://feodotracker.abuse.ch)
+ * => daily updates, approx. 0-10 entries
+ * [malwaredomains](http://malwaredomains.com)
+ * => daily updates, approx. 16.000 entries
+ * [malwaredomainlist](http://www.malwaredomainlist.com)
+ * => daily updates, approx. 1.500 entries
+ * [openphish](https://openphish.com)
+ * => numerous updates on the same day, approx. 1.800 entries
+ * [palevo tracker](https://palevotracker.abuse.ch)
+ * => daily updates, approx. 15 entries
+ * [ransomware tracker](https://ransomwaretracker.abuse.ch)
+ * => daily updates, approx. 150 entries
+ * [rolist/easylist](https://easylist-downloads.adblockplus.org/rolist+easylist.txt)
+ * => weekly updates, approx. 600 entries
+ * [ruadlist/easylist](https://code.google.com/p/ruadlist)
+ * => weekly updates, approx. 2.000 entries
+ * [shallalist](http://www.shallalist.de) (categories "adv" "costtraps" "spyware" "tracker" "warez" enabled by default)
+ * => daily updates, approx. 32.000 entries (a short description of all shallalist categories can be found [online](http://www.shallalist.de/categories.html))
+ * [spam404](http://www.spam404.com)
+ * => infrequent updates, approx. 5.000 entries
+ * [sysctl/cameleon](http://sysctl.org/cameleon)
+ * => weekly updates, approx. 21.000 entries
+ * [whocares](http://someonewhocares.org)
+ * => weekly updates, approx. 12.000 entries
+ * [winhelp](http://winhelp2002.mvps.org)
+ * => infrequent updates, approx. 15.000 entries
+ * [winspy](https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/hostsBlockWindowsSpy.txt)
+ * => infrequent updates, approx. 120 entries
+ * [yoyo](http://pgl.yoyo.org/adservers)
+ * => weekly updates, approx. 2.500 entries (enabled by default)
+ * [zeus tracker](https://zeustracker.abuse.ch)
+ * => daily updates, approx. 440 entries
+* zero-conf like automatic installation & setup, usually no manual changes needed (i.e. ip address, network devices etc.)
+* supports a wide range of router modes, as long as the firewall and the DNS server are enabled
+* full IPv4 and IPv6 support
+* each blocklist source will be updated and processed separately
+* timestamp check to download and process only updated adblock list sources
+* overall duplicate removal in separate adblock lists (will be automatically disabled on low memory systems)
+* adblock source list parsing by fast & flexible regex rulesets
+* additional whitelist for manual overrides, located by default in /etc/adblock/adblock.whitelist
+* quality checks during & after update of adblock lists to ensure a reliable dnsmasq service
+* basic adblock statistics via iptables packet counters
+* list states, (overall) list counts & last update time will be stored in uci config
+* status & error logging to stdout and syslog
+* use a dynamic uhttpd instance as an adblock pixel server
+* use dynamic iptables rulesets for adblock related redirects/rejects
+* openwrt init system support (start/stop/restart/reload)
+* hotplug support, the adblock start will be triggered by wan 'ifup' event
+* optional: adblock list backup/restore (disabled by default)
+* optional: add new adblock sources via uci config (see example below)
## Prerequisites
-* [openwrt](https://openwrt.org) (tested only with trunk > r47025), CC should also work
-* additional software packages:
- * curl
- * wget (due to an openwrt bug still needed for certain https requests - see ticket #19621)
- * optional: busybox find with *-mtime* support for logfile housekeeping (enabled by default with r47362, will be disabled if not found)
- * optional: coreutils-sort for reliable sort results, even on low memory systems
-* recommended: add an usb stick or any other storage device to supersize your /tmp directory with a swap partition (see [openwrt wiki](https://wiki.openwrt.org/doc/uci/fstab))
-* the above dependencies and requirements will be checked during package installation & script startup, please check console output or *logread -e "adblock"* for errors
-
-## Usage
-* select & install adblock package (*opkg install adblock*)
-* configure */etc/config/adblock* to your needs, see additional comments in *adblock.conf.sample*
-* at least configure the ip address of the local adblock interface/uhttpd instance, needs to be a different subnet from the normal LAN
-* optional: add additional domain white- or blacklist entries, one domain per line (wildcards & regex are not allowed!), both list are located in */etc/adblock*
-* by default openwrts main uhttpd instance is bind to all ports of your router. For a working adblock setup you have to bind uhttpd to the standard LAN port only, please change listen_http accordingly
-* start /usr/bin/adblock-update.sh and check console output or *logread -e "adblock"* for errors
-
-## Distributed samples
-* all sample configuration files stored in */etc/adblock/samples*
-* to enable/disable additional domain query logging set the dnsmasq option *logqueries* accordingly, see *dhcp.config.sample*
-* to bind uhttpd to standard LAN port only, see *uhttpd.config.sample*
-* for script autostart by rc.local and /tmp resizing on the fly see *rc.local.sample*
-* for scheduled call of *adblock-update.sh* see *root.crontab.sample*
-* to redirect/force all dns queries to your router see *firwall.user.sample*
-* for further dnsmasq tweaks see *dnsmasq.conf.sample*
+* [openwrt](https://openwrt.org), tested with latest stable release (Chaos Calmer) and with current trunk (Designated Driver)
+* usual openwrt setup with enabled 'iptables', 'dnsmasq' and 'uhttpd' - dump AP modes are _not_ supported!
+* additional required software packages:
+ * wget
+ * optional: 'kmod-ipt-nat6' for IPv6 support
+* the above dependencies and requirements will be checked during package installation & script runtime
+
+## Designated Driver Installation & Usage
+* install 'adblock' (_opkg install adblock_)
+* adblock starts automatically during boot/wan-ifup event, check _logread -e "adblock"_ for adblock related information
+* optional: start/restart/stop the adblock service manually with _/etc/init.d/adblock_
+* optional: enable/disable your required adblock list sources in _/etc/config/adblock_ - 'adaway', 'disconnect' and 'yoyo' are enabled by default
+* optional: maintain the adblock service in luci under 'System => Startup'
+
+## LuCI adblock companion package
+* for easy management of the various blocklist sources and adblock options there is also a nice & efficient LuCI frontend available
+* install 'luci-app-adblock' (_opkg install luci-app-adblock_)
+* the application is located in LuCI under 'Services' menu
+* _Thanks to Hannu Nyman for this great adblock LuCI frontend!_
+
+## Chaos Calmer installation notes
+* 'adblock' and 'luci-app-adblock' are _not_ available as .ipk packages in the Chaos Calmer download repository
+* download both packages from a development snapshot package directory:
+ * for 'adblock' look [here](https://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/packages/packages/)
+ * for 'luci-app-adblock' look [here](https://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/packages/luci/)
+* manually transfer the packages to your routers temp directory (with tools like _sshfs_ or _winscp_)
+* install the packages with _opkg install <...>_ as described above
+
+## Tweaks
+* to process & store all blocklist sources at once it might helpful to enlarge your temp directory with a swap partition => see [openwrt wiki](https://wiki.openwrt.org/doc/uci/fstab) for further details
+* add domain white- or blacklist entries to always-allow or -deny certain (sub) domains, by default both lists are located in _/etc/adblock_. Please add one domain per line - ip addresses, wildcards & regex are _not_ allowed (see example below)
+* enable the backup/restore feature, to restore automatically the latest stable backup of your adblock lists in case of any (partial) processing error (i.e. a single blocklist source is down). Please use an (external) solid partition and _not_ your volatile router temp directory for this
+* for a scheduled call of the adblock service via _/etc/init.d/adblock start_ add an appropriate crontab entry (see example below)
+* in case of any script runtime errors, you should enable script debugging: for this please change the 'DEBUG' variable in the header of _/usr/bin/adblock-update.sh_ from '0' to '1' and start this script afterwards (without any parameter)
+* you could add new blocklist sources on your own via uci config, all you need is a source url and an awk one-liner (see example below)
+
+## Further adblock config options
+* usually the adblock autodetection works quite well and no manual config overrides are needed, all options apply to the 'global' config section:
+ * adb\_enabled => main switch to enable/disable adblock service (default: '1', enabled)
+ * adb\_cfgversion => config version string (do not change!) - adblock will check this entry during startup
+ * adb\_lanif => name of the logical lan interface (default: 'lan')
+ * adb\_nullport => port of the adblock uhttpd instance (default: '65535')
+ * adb\_nullipv4 => IPv4 blackhole ip address (default: '192.0.2.1')
+ * adb\_nullipv6 => IPv6 blackhole ip address (default: '::ffff:c000:0201')
+ * adb\_forcedns => redirect all DNS queries to local dnsmasq resolver (default: '1', enabled)
## Examples
- stdout excerpt for successful adblock run:
-
- adblock[11541] info : domain adblock processing started (0.22.2, r47665, 29.11.2015 14:58:11)
- adblock[11541] info : wan update check will be disabled
- adblock[11541] info : get ntp time sync (192.168.254.254), after 0 loops
- adblock[11541] info : shallalist (pre-)processing started ...
- adblock[11541] info : shallalist (pre-)processing finished (adv costtraps spyware tracker warez)
- adblock[11541] info : source download finished (http://pgl.yoyo.org/adservers/serverlist.php?hostformat=one-line&showintro=0&mimetype=plaintext, 2423 entries)
- adblock[11541] info : source download finished (http://mirror1.malwaredomains.com/files/justdomains, 16016 entries)
- adblock[11541] info : source download finished (https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist, 419 entries)
- adblock[11541] info : source download finished (https://feodotracker.abuse.ch/blocklist/?download=domainblocklist, 0 entries)
- adblock[11541] info : source download finished (https://palevotracker.abuse.ch/blocklists.php?download=domainblocklist, 12 entries)
- adblock[11541] info : source download finished (http://www.dshield.org/feeds/suspiciousdomains_Low.txt, 4542 entries)
- adblock[11541] info : source download finished (http://spam404bl.com/spam404scamlist.txt, 5193 entries)
- adblock[11541] info : source download finished (http://winhelp2002.mvps.org/hosts.txt, 13635 entries)
- adblock[11541] info : source download finished (file:////tmp/tmp.CgbMmO/shallalist.txt, 32446 entries)
- adblock[11541] info : empty source download finished (file:///etc/adblock/adblock.blacklist)
- adblock[11541] info : domain merging finished
- adblock[11541] info : new adblock list with 69646 domains loaded, backup generated
- adblock[11541] info : domain adblock processing finished (0.22.2, r47665, 29.11.2015 14:59:23)
-
-
- generated domain blocklist for dnsmasq:
-
- address=/0-29.com/192.168.2.1
- address=/0-2u.com/192.168.2.1
- address=/0.r.msn.com/192.168.2.1
- address=/00.devoid.us/192.168.2.1
- address=/000007.ru/192.168.2.1
- [...]
- address=/zzz.cn/192.168.2.1
- address=/zzzjsh.com/192.168.2.1
- ####################################################
- # last adblock list update: 20.11.2015 - 18:00:02
- # adblock-update.sh (0.21.0) - 73087 ad/abuse domains blocked
- # domain blacklist sources:
- # http://pgl.yoyo.org/adservers/serverlist.php?hostformat=one-line&showintro=0&mimetype=plaintext
- # http://mirror1.malwaredomains.com/files/justdomains
- # https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist
- # https://feodotracker.abuse.ch/blocklist/?download=domainblocklist
- # https://palevotracker.abuse.ch/blocklists.php?download=domainblocklist
- # http://www.dshield.org/feeds/suspiciousdomains_Low.txt
- # http://spam404bl.com/spam404scamlist.txt
- # http://winhelp2002.mvps.org/hosts.txt
- # file:////tmp/tmp.CLBLNF/shallalist.txt
- # file:///etc/adblock/adblock.blacklist
- #####
- # /etc/adblock/adblock.whitelist
- ####################################################
-
-
- domain query log excerpt:
-
- query[A] www.seenby.de from fe80::6257:18ff:fe6b:4667
- query[A] tarifrechner.heise.de from 192.168.1.131
- query[A] www.mittelstandswiki.de from fe80::6257:18ff:fe6b:4667
- query[A] ad.doubleclick.net from 192.168.1.131
- ad.doubleclick.net is 192.168.2.1
-
-
-The first three queries are OK (not blocked), the last one has been blocked and answered by local dnsmasq instance.
+**example cronjob for a regular update of the block lists:**
+<pre><code>
+# configuration found in /etc/crontabs/root
+# start adblock script once a day at 6 a.m.
+#
+0 06 * * * /etc/init.d/adblock start
+</code></pre>
+
+**example blacklist entry (/etc/adblock/adblock.blacklist):**
+<pre><code>
+ads.example.com
+</code></pre>
+
+This rule blocks:
+http://ads.example.com/foo.gif
+http://server1.ads.example.com/foo.gif
+https://ads.example.com:8000/
+
+This rule doesn't block:
+http://ads.example.com.ua/foo.gif
+http://example.com/
+
+**example whitelist entry (/etc/adblock/adblock.whitelist):**
+<pre><code>
+analytics.com
+</code></pre>
+
+This rule removes _all_ domains from the blocklists with this string in it, i.e.:
+ google-analytics.com
+ ssl.google-analytics.com
+ api.gameanalytics.com
+ photos.daily-deals.analoganalytics.com
+ adblockanalytics.com
+
+**example to add a new blocklist sources:**
+<pre><code>
+1. the easy way ...
+example: https://easylist-downloads.adblockplus.org/rolist+easylist.txt
+adblock already supports an easylist source, called 'ruadlist'. To add the additional local easylist
+as a new source, copy the existing config source 'ruadlist' section and change only
+the source name, the url and the description - that's all!
+
+config source 'rolist'
+ option enabled '0'
+ option adb_src 'https://easylist-downloads.adblockplus.org/rolist+easylist.txt'
+ option adb_src_rset '{FS=\"[|^]\"} \$0 ~/^\|\|([A-Za-z0-9_-]+\.){1,}[A-Za-z]+\^$/{print tolower(\$3)}'
+ option adb_src_desc 'focus on romanian ad related domains plus generic easylist additions, weekly updates, approx. 600 entries'
+
+2. a bit harder ...
+to add a really new source with different domain/host format you have to write a suitable
+awk one-liner on your own, so basic awk skills are needed. As a starting point check the already
+existing awk strings (adb_src_rset) in adblock config, maybe you need only small changes for your individual list.
+Download the desired list and test your new awk string locally with:
+ cat new.list | awk 'fs__individual search__search core__result'
+ 'fs' => field separator (optional)
+ 'individual search' => individual search part to filter out needless list information
+ 'search core' => always '([A-Za-z0-9_-]+\.){1,}[A-Za-z]+', this is part of all list sources and should be unchanged
+ 'result' => always '{print tolower(\$n)}', only the output column 'n' may vary
+the output result should be a sequential list with one domain/host per line - nothing more.
+
+If your awk one-liner works quite well, add a new source section in adblock config and test your new source
+</code></pre>
+
+## Background
+This adblock package is a dns/dnsmasq based adblock solution for openwrt.
+Queries to ad/abuse domains are never forwarded and always replied with a local IP address which may be IPv4 or IPv6.
+For that purpose adblock uses an ip address from the private 'TEST-NET-1' subnet (192.0.2.1 / ::ffff:c000:0201) by default.
+Furthermore all ad/abuse queries will be filtered by ip(6)tables and redirected to internal adblock pixel server (in PREROUTING chain) or rejected (in FORWARD or OUTPUT chain).
+All iptables and uhttpd related adblock additions are non-destructive, no hard-coded changes in 'firewall.user', 'uhttpd' config or any other openwrt related config files. There is _no_ adblock background daemon running, the (scheduled) start of the adblock service keeps only the adblock lists up-to-date.
+
+## Support
+Please join the adblock discussion in this [openwrt forum thread](https://forum.openwrt.org/viewtopic.php?id=59803) or contact me by mail <openwrt@brenken.org>
+
+## Removal
+* stop all adblock related services with _/etc/init.d/adblock stop_
+* optional: remove the adblock package (_opkg remove adblock_)
Have fun!
Dirk
#!/bin/sh
-##############################################
-# function library used by adblock-update.sh #
-# written by Dirk Brenken (dirk@brenken.org) #
-##############################################
+# function library used by adblock-update.sh
+# written by Dirk Brenken (openwrt@brenken.org)
-#####################################
# f_envload: load adblock environment
#
f_envload()
#
if [ -r "/lib/functions.sh" ]
then
- . /lib/functions.sh
+ . "/lib/functions.sh"
else
- rc=510
+ rc=110
f_log "openwrt function library not found" "${rc}"
- f_deltemp
+ f_exit
fi
- # source in openwrt json helpers library
+ # source in openwrt network library
#
- if [ -r "/usr/share/libubox/jshn.sh" ]
+ if [ -r "/lib/functions/network.sh" ]
then
- . "/usr/share/libubox/jshn.sh"
+ . "/lib/functions/network.sh"
else
- rc=515
- f_log "openwrt json helpers library not found" "${rc}"
- f_deltemp
+ rc=115
+ f_log "openwrt network library not found" "${rc}"
+ f_exit
fi
- # get list with all installed openwrt packages
- #
- pkg_list="$(opkg list-installed 2>/dev/null)"
- if [ -z "${pkg_list}" ]
- then
- rc=520
- f_log "empty openwrt package list" "${rc}"
- f_deltemp
- fi
-}
-
-######################################################
-# f_envparse: parse adblock config and set environment
-#
-f_envparse()
-{
- # set the C locale, characters are single bytes, the charset is ASCII
- # speeds up sort, grep etc., guarantees unique domains
- #
- LC_ALL=C
-
- # set initial defaults (may be overwritten by adblock config options)
- #
- adb_if="adblock"
- adb_minspace="20000"
- adb_maxtime="60"
- adb_maxloop="5"
-
- # adblock device name auto detection
- # derived from first entry in openwrt lan ifname config
- #
- adb_dev="$(uci get network.lan.ifname 2>/dev/null)"
- adb_dev="${adb_dev/ *}"
-
- # adblock ntp server name auto detection
- # derived from ntp list found in openwrt ntp server config
+ # set initial defaults,
+ # may be overwritten by setting appropriate adblock config options in global section of /etc/config/adblock
#
- adb_ntpsrv="$(uci get system.ntp.server 2>/dev/null)"
+ adb_lanif="lan"
+ adb_nullport="65535"
+ adb_nullipv4="192.0.2.1"
+ adb_nullipv6="::ffff:c000:0201"
+ adb_whitelist="/etc/adblock/adblock.whitelist"
+ adb_whitelist_rset="\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}"
+ adb_forcedns=1
- # function to read/set global options by callback,
- # prepare list items and build option list for all others
+ # function to parse global section by callback
#
config_cb()
{
local type="${1}"
- local name="${2}"
if [ "${type}" = "adblock" ]
then
option_cb()
eval "${option}=\"${value}\""
}
else
- option_cb()
- {
- local option="${1}"
- local value="${2}"
- local opt_out="$(printf "${option}" | sed -n '/.*_ITEM[0-9]$/p; /.*_LENGTH$/p; /enabled/p')"
- if [ -z "${opt_out}" ]
- then
- all_options="${all_options} ${option}"
- fi
- }
- list_cb()
- {
- local list="${1}"
- local value="${2}"
- if [ "${list}" = "adb_wanlist" ]
- then
- adb_wandev="${adb_wandev} ${value}"
- elif [ "${list}" = "adb_ntplist" ]
- then
- adb_ntpsrv="${adb_ntpsrv} ${value}"
- elif [ "${list}" = "adb_catlist" ]
- then
- adb_cat_shalla="${adb_cat_shalla} ${value}"
- fi
- }
+ reset_cb
fi
}
- # function to iterate through option list, read/set all options in "enabled" sections
+ # function to parse 'service' and 'source' sections
#
parse_config()
{
- local config="${1}"
- config_get switch "${config}" "enabled"
+ local value opt section="${1}" options="adb_dir adb_src adb_src_rset adb_src_cat"
+ config_get switch "${section}" "enabled"
if [ "${switch}" = "1" ]
then
- for option in ${all_options}
+ if [ "${section}" != "backup" ]
+ then
+ eval "adb_sources=\"${adb_sources} ${section}\""
+ fi
+ for opt in ${options}
do
- config_get value "${config}" "${option}"
+ config_get value "${section}" "${opt}"
if [ -n "${value}" ]
then
- local opt_src="$(printf "${option}" | sed -n '/^adb_src_[a-z0-9]*$/p')"
- if [ -n "${opt_src}" ]
- then
- adb_sources="${adb_sources} ${value}"
- else
- eval "${option}=\"${value}\""
- fi
+ eval "${opt}_${section}=\"${value}\""
fi
done
- elif [ "${config}" = "wancheck" ]
- then
- unset adb_wandev 2>/dev/null
- elif [ "${config}" = "ntpcheck" ]
- then
- unset adb_ntpsrv 2>/dev/null
- elif [ "${config}" = "shalla" ]
- then
- unset adb_cat_shalla 2>/dev/null
fi
}
+ # check opkg availability
+ #
+ if [ -r "/var/lock/opkg.lock" ]
+ then
+ rc=-1
+ f_log "adblock installation finished successfully, 'opkg' currently locked by package installer"
+ f_exit
+ fi
+
+ # get list with all installed openwrt packages
+ #
+ pkg_list="$(opkg list-installed)"
+ if [ -z "${pkg_list}" ]
+ then
+ rc=120
+ f_log "empty openwrt package list" "${rc}"
+ f_exit
+ fi
+
# load adblock config and start parsing functions
#
config_load adblock
config_foreach parse_config service
config_foreach parse_config source
- # set temp variables and counter
+ # check 'enabled' & 'version' config options
#
- adb_tmpfile="$(mktemp -tu 2>/dev/null)"
- adb_tmpdir="$(mktemp -p /tmp -d 2>/dev/null)"
+ if [ -z "${adb_enabled}" ] || [ -z "${adb_cfgversion}" ] || [ "${adb_cfgversion}" != "${adb_scriptver%.*}" ]
+ then
+ rc=125
+ f_log "outdated adblock configuration found, please use latest version from '/etc/adblock/adblock.conf.default'" "${rc}"
+ f_exit
+ fi
+ if [ $((adb_enabled)) -ne 1 ]
+ then
+ rc=-1
+ f_log "adblock is currently disabled, please set adblock.global.adb_enabled=1' to use this service"
+ f_exit
+ fi
- # set adblock source ruleset definitions
+ # set more script defaults (can't be overwritten by adblock config options)
#
- rset_start="sed -r 's/[[:space:]]|[\[!#/:;_].*|[0-9\.]*localhost//g; s/[\^#/:;_\.\t ]*$//g'"
- rset_end="sed '/^[#/:;_\s]*$/d'"
- rset_default="${rset_start} | ${rset_end}"
- rset_yoyo="${rset_start} | sed 's/,/\n/g' | ${rset_end}"
- rset_shalla="${rset_start} | sed 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}$//g' | ${rset_end}"
- rset_spam404="${rset_start} | sed 's/^\|\|//g' | ${rset_end}"
- rset_winhelp="${rset_start} | sed 's/\([0-9]\{1,3\}\.\)\{3\}[0-1]\{1,1\}//g' | ${rset_end}"
+ adb_minspace=12000
+ adb_tmpfile="$(mktemp -tu)"
+ adb_tmpdir="$(mktemp -p /tmp -d)"
+ adb_dnsdir="/tmp/dnsmasq.d"
+ adb_dnsprefix="adb_list"
+ adb_fetch="/usr/bin/wget"
+ adb_uci="/sbin/uci"
+ unset adb_srclist adb_revsrclist adb_errsrclist
- # set adblock/dnsmasq destination file and format
+ # get lan ip addresses
#
- adb_dnsfile="/tmp/dnsmasq.d/adlist.conf"
- adb_dnsformat="sed 's/^/address=\//;s/$/\/'${adb_ip}'/'"
+ network_get_ipaddr adb_ipv4 "${adb_lanif}"
+ network_get_ipaddr6 adb_ipv6 "${adb_lanif}"
+ if [ -z "${adb_ipv4}" ] && [ -z "${adb_ipv6}" ]
+ then
+ rc=135
+ f_log "no valid IPv4/IPv6 configuration found (${adb_lanif}), please set 'adb_lanif' manually" "${rc}"
+ f_exit
+ fi
}
-#############################################
-# f_envcheck: check environment prerequisites
+# f_envcheck: check/set environment prerequisites
#
f_envcheck()
{
- # check required config variables
- #
- adb_varlist="adb_ip adb_dev adb_if adb_domain adb_minspace adb_maxloop adb_maxtime adb_blacklist adb_whitelist"
- for var in ${adb_varlist}
- do
- if [ -z "$(eval printf \"\$"${var}"\")" ]
- then
- rc=525
- f_log "missing adblock config option (${var})" "${rc}"
- f_deltemp
- fi
- done
+ local check
- # check main uhttpd configuration
+ # check logical update interfaces (with default route)
#
- check_uhttpd="$(uci get uhttpd.main.listen_http 2>/dev/null | grep -Fo "0.0.0.0")"
- if [ -n "${check_uhttpd}" ]
+ network_find_wan adb_wanif4
+ network_find_wan6 adb_wanif6
+ if [ -z "${adb_wanif4}" ] && [ -z "${adb_wanif6}" ]
then
- rc=530
- lan_ip="$(uci get network.lan.ipaddr 2>/dev/null)"
- f_log "main uhttpd instance listens to all network interfaces, please bind uhttpd to LAN only (${lan_ip})" "${rc}"
- f_deltemp
+ adb_wanif4="true"
+ f_log "no valid IPv4/IPv6 interface with default route found, IPv4 mode will be assumed"
fi
- # check adblock network device configuration
+ # check general package dependencies
#
- if [ ! -d "/sys/class/net/${adb_dev}" ]
- then
- rc=535
- f_log "invalid adblock network device input (${adb_dev})" "${rc}"
- f_deltemp
- fi
+ f_depend "uhttpd"
+ f_depend "wget"
+ f_depend "iptables"
+ f_depend "kmod-ipt-nat"
- # check adblock network interface configuration
+ # check ipv6 related package dependencies
#
- check_if="$(printf "${adb_if}" | sed -n '/[^._0-9A-Za-z]/p')"
- banned_if="$(printf "${adb_if}" | sed -n '/.*lan.*\|.*wan.*\|.*switch.*\|main\|globals\|loopback\|px5g/p')"
- if [ -n "${check_if}" ] || [ -n "${banned_if}" ]
+ if [ -n "${adb_wanif6}" ]
then
- rc=540
- f_log "invalid adblock network interface input (${adb_if})" "${rc}"
- f_deltemp
- fi
-
- # check adblock ip address configuration
- #
- check_ip="$(printf "${adb_ip}" | sed -n '/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/p')"
- if [ -z "${check_ip}" ]
- then
- rc=545
- f_log "invalid adblock ip address input (${adb_ip})" "${rc}"
- f_deltemp
+ check="$(printf "${pkg_list}" | grep "^ip6tables -")"
+ if [ -z "${check}" ]
+ then
+ f_log "package 'ip6tables' not found, IPv6 support will be disabled"
+ unset adb_wanif6
+ else
+ check="$(printf "${pkg_list}" | grep "^kmod-ipt-nat6 -")"
+ if [ -z "${check}" ]
+ then
+ f_log "package 'kmod-ipt-nat6' not found, IPv6 support will be disabled"
+ unset adb_wanif6
+ fi
+ fi
fi
- # check adblock blacklist/whitelist configuration
+ # check ca-certificates package and set fetch parms accordingly
#
- if [ ! -r "${adb_blacklist}" ]
- then
- rc=550
- f_log "adblock blacklist not found" "${rc}"
- f_deltemp
- elif [ ! -r "${adb_whitelist}" ]
+ fetch_parm="--no-config --quiet --tries=1 --no-cache --no-cookies --max-redirect=0 --dns-timeout=5 --connect-timeout=5 --read-timeout=5"
+ check="$(printf "${pkg_list}" | grep "^ca-certificates -")"
+ if [ -z "${check}" ]
then
- rc=555
- f_log "adblock whitelist not found" "${rc}"
- f_deltemp
+ fetch_parm="${fetch_parm} --no-check-certificate"
fi
# check adblock temp directory
if [ -n "${adb_tmpdir}" ] && [ -d "${adb_tmpdir}" ]
then
f_space "${adb_tmpdir}"
- tmp_ok="true"
+ if [ "${space_ok}" = "false" ]
+ then
+ if [ $((av_space)) -le 2000 ]
+ then
+ rc=140
+ f_log "not enough free space in '${adb_tmpdir}' (avail. ${av_space} kb)" "${rc}"
+ f_exit
+ else
+ f_log "not enough free space to handle all adblock list sources at once in '${adb_tmpdir}' (avail. ${av_space} kb)"
+ fi
+ fi
else
- rc=560
- tmp_ok="false"
+ rc=145
f_log "temp directory not found" "${rc}"
- f_deltemp
+ f_exit
fi
- # check curl package dependency
+ # check memory
#
- check="$(printf "${pkg_list}" | grep "^curl -")"
- if [ -z "${check}" ]
+ mem_total="$(awk '$1 ~ /^MemTotal/ {printf $2}' "/proc/meminfo")"
+ mem_free="$(awk '$1 ~ /^MemFree/ {printf $2}' "/proc/meminfo")"
+ mem_swap="$(awk '$1 ~ /^SwapTotal/ {printf $2}' "/proc/meminfo")"
+ if [ $((mem_total)) -le 64000 ] && [ $((mem_swap)) -eq 0 ]
then
- rc=565
- f_log "curl package not found" "${rc}"
- f_deltemp
+ mem_ok="false"
+ f_log "not enough free memory, overall sort processing will be disabled (total: ${mem_total}, free: ${mem_free}, swap: ${mem_swap})"
+ else
+ mem_ok="true"
fi
- # check wget package dependency
+ # check backup configuration
#
- check="$(printf "${pkg_list}" | grep "^wget -")"
- if [ -z "${check}" ]
+ if [ -n "${adb_dir_backup}" ] && [ -d "${adb_dir_backup}" ]
then
- rc=570
- f_log "wget package not found" "${rc}"
- f_deltemp
+ f_space "${adb_dir_backup}"
+ if [ "${space_ok}" = "false" ]
+ then
+ f_log "not enough free space in '${adb_dir_backup}'(avail. ${av_space} kb), backup/restore will be disabled"
+ backup_ok="false"
+ else
+ f_log "backup/restore will be enabled"
+ backup_ok="true"
+ fi
+ else
+ backup_ok="false"
+ f_log "backup/restore will be disabled"
fi
- # check ca-certificates package and set wget/curl parms accordingly
+ # check running dnsmasq instance & set defaults
#
- check="$(printf "${pkg_list}" | grep "^ca-certificates -")"
- if [ -z "${check}" ]
+ rc="$(ps | grep -q "[d]nsmasq"; printf ${?})"
+ if [ $((rc)) -eq 0 ]
then
- curl_parm="-q --insecure"
- wget_parm="--no-config --no-hsts --no-check-certificate"
+ if [ -n "${adb_wanif4}" ] && [ -n "${adb_wanif6}" ]
+ then
+ adb_dnsformat="awk -v ipv4="${adb_nullipv4}" -v ipv6="${adb_nullipv6}" '{print \"address=/\"\$0\"/\"ipv4\"\n\"\"address=/\"\$0\"/\"ipv6}'"
+ elif [ -n "${adb_wanif4}" ]
+ then
+ adb_dnsformat="awk -v ipv4="${adb_nullipv4}" '{print \"address=/\"\$0\"/\"ipv4}'"
+ else
+ adb_dnsformat="awk -v ipv6="${adb_nullipv6}" '{print \"address=/\"\$0\"/\"ipv6}'"
+ fi
else
- curl_parm="-q"
- wget_parm="--no-config --no-hsts"
+ rc=150
+ f_log "please enable the local dns server to use adblock" "${rc}"
+ f_exit
fi
- # check total and swap memory
+ # check running firewall
#
- mem_total="$(cat /proc/meminfo | grep -F "MemTotal" | grep -o "[0-9]*")"
- mem_free="$(cat /proc/meminfo | grep -F "MemFree" | grep -o "[0-9]*")"
- swap_total="$(cat /proc/meminfo | grep -F "SwapTotal" | grep -o "[0-9]*")"
- if [ $((mem_total)) -le 64000 ] && [ $((swap_total)) -eq 0 ]
+ check="$(/usr/sbin/iptables -vnL | grep -F "DROP")"
+ if [ -z "${check}" ]
then
- f_log "please consider adding an external swap device to supersize your /tmp directory (total: ${mem_total}, free: ${mem_free}, swap: ${mem_swap})"
+ rc=155
+ f_log "please enable the local firewall to use adblock" "${rc}"
+ f_exit
fi
- # check backup configuration
+ # check ipv4/iptables configuration
#
- adb_backupdir="${adb_backupfile%/*}"
- if [ -n "${adb_backupdir}" ] && [ -d "${adb_backupdir}" ]
+ if [ -n "${adb_wanif4}" ]
then
- f_space "${adb_backupdir}"
- backup_ok="true"
- else
- backup_ok="false"
- f_log "backup/restore will be disabled"
+ f_firewall "IPv4" "nat" "A" "prerouting_rule" "adb-nat" "-p tcp -d ${adb_nullipv4} -m multiport --dports 80,443 -j DNAT --to-destination ${adb_ipv4}:${adb_nullport}"
+ f_firewall "IPv4" "filter" "A" "forwarding_rule" "adb-fwd" "-p tcp -d ${adb_nullipv4} -j REJECT --reject-with tcp-reset"
+ f_firewall "IPv4" "filter" "A" "forwarding_rule" "adb-fwd" "-d ${adb_nullipv4} -j REJECT --reject-with icmp-host-unreachable"
+ f_firewall "IPv4" "filter" "A" "output_rule" "adb-out" "-p tcp -d ${adb_nullipv4} -j REJECT --reject-with tcp-reset"
+ f_firewall "IPv4" "filter" "A" "output_rule" "adb-out" "-d ${adb_nullipv4} -j REJECT --reject-with icmp-host-unreachable"
+ if [ $((adb_forcedns)) -eq 1 ]
+ then
+ f_firewall "IPv4" "nat" "A" "prerouting_rule" "adb-dns" "-p udp --dport 53 -j DNAT --to-destination ${adb_ipv4}:53"
+ f_firewall "IPv4" "nat" "A" "prerouting_rule" "adb-dns" "-p tcp --dport 53 -j DNAT --to-destination ${adb_ipv4}:53"
+ fi
+ if [ "${fw_done}" = "true" ]
+ then
+ f_log "created volatile IPv4 firewall ruleset"
+ fw_done="false"
+ fi
fi
- # check dns query log configuration
+ # check ipv6/ip6tables configuration
#
- adb_querydir="${adb_queryfile%/*}"
- adb_querypid="/var/run/adb_query.pid"
- if [ -n "${adb_querydir}" ] && [ -d "${adb_querydir}" ]
+ if [ -n "${adb_wanif6}" ]
then
- # check find capabilities
- #
- check="$(find --help 2>&1 | grep -F "mtime")"
- if [ -z "${check}" ]
+ f_firewall "IPv6" "nat" "A" "PREROUTING" "adb-nat" "-p tcp -d ${adb_nullipv6} -m multiport --dports 80,443 -j DNAT --to-destination [${adb_ipv6}]:${adb_nullport}"
+ f_firewall "IPv6" "filter" "A" "forwarding_rule" "adb-fwd" "-p tcp -d ${adb_nullipv6} -j REJECT --reject-with tcp-reset"
+ f_firewall "IPv6" "filter" "A" "forwarding_rule" "adb-fwd" "-d ${adb_nullipv6} -j REJECT --reject-with icmp6-addr-unreachable"
+ f_firewall "IPv6" "filter" "A" "output_rule" "adb-out" "-p tcp -d ${adb_nullipv6} -j REJECT --reject-with tcp-reset"
+ f_firewall "IPv6" "filter" "A" "output_rule" "adb-out" "-d ${adb_nullipv6} -j REJECT --reject-with icmp6-addr-unreachable"
+ if [ $((adb_forcedns)) -eq 1 ]
then
- query_ok="false"
- f_log "busybox without 'find/mtime' support (min. r47362), dns query logging will be disabled"
- else
- f_space "${adb_querydir}"
- query_ok="true"
- query_name="${adb_queryfile##*/}"
- query_ip="${adb_ip//./\\.}"
+ f_firewall "IPv6" "nat" "A" "PREROUTING" "adb-dns" "-p udp --dport 53 -j DNAT --to-destination [${adb_ipv6}]:53"
+ f_firewall "IPv6" "nat" "A" "PREROUTING" "adb-dns" "-p tcp --dport 53 -j DNAT --to-destination [${adb_ipv6}]:53"
fi
- else
- query_ok="false"
- f_log "dns query logging will be disabled"
- if [ -s "${adb_querypid}" ]
+ if [ "${fw_done}" = "true" ]
then
- kill -9 "$(cat "${adb_querypid}")" >/dev/null 2>&1
- f_log "remove old dns query log background process (pid: $(cat "${adb_querypid}" 2>/dev/null))"
- > "${adb_querypid}"
+ f_log "created volatile IPv6 firewall ruleset"
+ fw_done="false"
fi
fi
- # check debug log configuration
+ # check volatile adblock uhttpd instance configuration
#
- adb_logdir="${adb_logfile%/*}"
- if [ -n "${adb_logdir}" ] && [ -d "${adb_logdir}" ]
+ rc="$(ps | grep -q "[u]httpd.*\-h /www/adblock"; printf ${?})"
+ if [ $((rc)) -ne 0 ]
then
- f_space "${adb_logdir}"
- log_ok="true"
- else
- log_ok="false"
- f_log "debug logging will be disabled"
+ if [ -n "${adb_wanif4}" ] && [ -n "${adb_wanif6}" ]
+ then
+ uhttpd -h "/www/adblock" -k 0 -N 100 -t 0 -T 1 -D -S -E "/index.html" -p "${adb_ipv4}:${adb_nullport}" -p "[${adb_ipv6}]:${adb_nullport}"
+ rc=${?}
+ elif [ -n "${adb_wanif4}" ]
+ then
+ uhttpd -h "/www/adblock" -k 0 -N 100 -t 0 -T 1 -D -S -E "/index.html" -p "${adb_ipv4}:${adb_nullport}"
+ rc=${?}
+ else
+ uhttpd -h "/www/adblock" -k 0 -N 100 -t 0 -T 1 -D -S -E "/index.html" -p "[${adb_ipv6}]:${adb_nullport}"
+ rc=${?}
+ fi
+ if [ $((rc)) -eq 0 ]
+ then
+ f_log "created volatile uhttpd instance"
+ else
+ f_log "failed to initialize volatile uhttpd instance" "${rc}"
+ f_restore
+ fi
fi
- # check wan update configuration
+ # check whitelist entries
#
- if [ -n "${adb_wandev}" ]
+ if [ -s "${adb_whitelist}" ]
then
- f_wancheck "${adb_maxloop}"
- else
- wan_ok="false"
- f_log "wan update check will be disabled"
+ awk "${adb_whitelist_rset}" "${adb_whitelist}" > "${adb_tmpdir}/tmp.whitelist"
fi
- # check ntp sync configuration
+ # remove no longer used opkg package list
#
- if [ -n "${adb_ntpsrv}" ]
+ unset pkg_list
+}
+
+# f_depend: check package dependencies
+#
+f_depend()
+{
+ local check
+ local package="${1}"
+
+ check="$(printf "${pkg_list}" | grep "^${package} -")"
+ if [ -z "${check}" ]
then
- f_ntpcheck "${adb_maxloop}"
- else
- ntp_ok="false"
- f_log "ntp time sync will be disabled"
+ rc=160
+ f_log "package '${package}' not found" "${rc}"
+ f_exit
fi
+}
- # check dynamic/volatile adblock network interface configuration
- #
- rc="$(ifstatus "${adb_if}" >/dev/null 2>&1; printf ${?})"
- if [ $((rc)) -ne 0 ]
+# f_firewall: set iptables rules for ipv4/ipv6
+#
+f_firewall()
+{
+ local ipt
+ local iptv4="/usr/sbin/iptables"
+ local iptv6="/usr/sbin/ip6tables"
+ local proto="${1}"
+ local table="${2}"
+ local ctype="${3}"
+ local chain="${4}"
+ local notes="${5}"
+ local rules="${6}"
+
+ # select appropriate iptables executable
+ #
+ if [ "${proto}" = "IPv4" ]
then
- json_init
- json_add_string name "${adb_if}"
- json_add_string ifname "${adb_dev}"
- json_add_string proto "static"
- json_add_array ipaddr
- json_add_string "" "${adb_ip}"
- json_close_array
- json_close_object
- ubus call network add_dynamic "$(json_dump)"
- rc=${?}
- if [ $((rc)) -eq 0 ]
- then
- f_log "created new dynamic/volatile network interface (${adb_if}, ${adb_ip})"
- else
- f_log "failed to initialize new dynamic/volatile network interface (${adb_if}, ${adb_ip})" "${rc}"
- f_remove
- fi
+ ipt="${iptv4}"
+ else
+ ipt="${iptv6}"
fi
- # check dynamic/volatile adblock uhttpd instance configuration
+ # check whether iptables rule already applied and proceed accordingly
#
- rc="$(ps | grep "[u]httpd.*\-r ${adb_if}" >/dev/null 2>&1; printf ${?})"
+ rc="$("${ipt}" -w -t "${table}" -C "${chain}" -m comment --comment "${notes}" ${rules}; printf ${?})"
if [ $((rc)) -ne 0 ]
then
- uhttpd -h "/www/adblock" -r "${adb_if}" -E "/adblock.html" -p "${adb_ip}:80" >/dev/null 2>&1
+ "${ipt}" -w -t "${table}" -"${ctype}" "${chain}" -m comment --comment "${notes}" ${rules}
rc=${?}
if [ $((rc)) -eq 0 ]
then
- f_log "created new dynamic/volatile uhttpd instance (${adb_if}, ${adb_ip})"
+ fw_done="true"
else
- f_log "failed to initialize new dynamic/volatile uhttpd instance (${adb_if}, ${adb_ip})" "${rc}"
- f_remove
+ f_log "failed to initialize volatile ${proto} firewall rule '${notes}'" "${rc}"
+ f_exit
fi
fi
-
- # remove no longer used environment variables
- #
- env_list="$(set | grep -o "CONFIG_[A-Za-z0-9_]*")"
- for var in ${env_list}
- do
- unset "${var}" 2>/dev/null
- done
- unset env_list 2>/dev/null
- unset pkg_list 2>/dev/null
}
-################################################
-# f_log: log messages to stdout, syslog, logfile
+# f_log: log messages to stdout and syslog
#
f_log()
{
+ local log_parm
local log_msg="${1}"
local log_rc="${2}"
local class="info "
+
+ # check for terminal session
+ #
+ if [ -t 1 ]
+ then
+ log_parm="-s"
+ fi
+
+ # log to different output devices and set log class accordingly
+ #
if [ -n "${log_msg}" ]
then
- if [ $((log_rc)) -ne 0 ]
+ if [ $((log_rc)) -gt 0 ]
then
class="error"
log_rc=", rc: ${log_rc}"
log_msg="${log_msg}${log_rc}"
fi
- /usr/bin/logger -s -t "adblock[${pid}] ${class}" "${log_msg}"
- if [ "${log_ok}" = "true" ] && [ "${ntp_ok}" = "true" ]
- then
- printf "%s\n" "$(/bin/date "+%d.%m.%Y %H:%M:%S") adblock[${pid}] ${class}: ${log_msg}" >> "${adb_logfile}"
- fi
+ /usr/bin/logger ${log_parm} -t "adblock[${adb_pid}] ${class}" "${log_msg}" 2>&1
fi
}
f_space()
{
local mp="${1}"
+
if [ -d "${mp}" ]
then
- df "${mp}" 2>/dev/null |\
- tail -n1 |\
- while read filesystem overall used available scrap
- do
- av_space="${available}"
- if [ $((av_space)) -eq 0 ]
- then
- rc=575
- f_log "no space left on device/not mounted (${mp})" "${rc}"
- exit ${rc}
- elif [ $((av_space)) -lt $((adb_minspace)) ]
- then
- rc=580
- f_log "not enough space left on device (${mp})" "${rc}"
- exit ${rc}
- fi
- done
- rc=${?}
- if [ $((rc)) -eq 0 ]
+ av_space="$(df "${mp}" | tail -n1 | awk '{printf $4}')"
+ if [ $((av_space)) -lt $((adb_minspace)) ]
then
- space_ok="true"
- else
space_ok="false"
- f_deltemp
fi
fi
}
-####################################################
-# f_deltemp: delete temp files, directories and exit
+# f_cntconfig: calculate counters in config
#
-f_deltemp()
+f_cntconfig()
{
- if [ -f "${adb_tmpfile}" ]
- then
- rm -f "${adb_tmpfile}" >/dev/null 2>&1
- fi
- if [ -d "${adb_tmpdir}" ]
- then
- rm -rf "${adb_tmpdir}" >/dev/null 2>&1
- fi
- f_log "domain adblock processing finished (${adb_version}, ${openwrt_version}, $(/bin/date "+%d.%m.%Y %H:%M:%S"))"
- exit ${rc}
+ local list
+ local src_name
+ local count=0
+ local count_sum=0
+
+ for list in $(ls -ASr "${adb_dnsdir}/${adb_dnsprefix}."*)
+ do
+ src_name="${list/*./}"
+ count="$(wc -l < "${list}")"
+ if [ -n "${adb_wanif4}" ] && [ -n "${adb_wanif6}" ]
+ then
+ count=$((count / 2))
+ fi
+ ${adb_uci} -q set "adblock.${src_name}.adb_src_count=${count}"
+ count_sum=$((count_sum + count))
+ done
+ ${adb_uci} -q set "adblock.global.adb_overall_count=${count_sum}"
}
-####################################################
-# f_remove: maintain and (re-)start domain query log
+# f_rmconfig: remove counters & timestamps in given config sections
#
-f_remove()
+f_rmconfig()
{
- if [ "${query_ok}" = "true" ] && [ "${ntp_ok}" = "true" ]
- then
- query_date="$(date "+%Y%m%d")"
- if [ -s "${adb_querypid}" ] && [ ! -f "${adb_queryfile}.${query_date}" ]
- then
- kill -9 "$(cat "${adb_querypid}")" >/dev/null 2>&1
- find "${adb_backupdir}" -maxdepth 1 -type f -mtime +"${adb_queryhistory}" -name "${query_name}.*" -exec rm -f {} \; 2>/dev/null
- f_log "remove old domain query log background process (pid: $(cat "${adb_querypid}")) and do logfile housekeeping"
- > "${adb_querypid}"
- fi
- if [ ! -s "${adb_querypid}" ]
+ local rm_done="${1}"
+
+ for list in ${rm_done}
+ do
+ src_name="${list/*./}"
+ if [ -n "${restore_done}" ]
then
- (logread -f 2>/dev/null & printf ${!} > "${adb_querypid}") | grep -Eo "(query\[A\].*)|([a-z0-9\.\-]* is ${query_ip}$)" >> "${adb_queryfile}.${query_date}" &
- f_log "new domain query log background process started"
+ ${adb_uci} -q set "adblock.${src_name}.adb_src_timestamp=list restored"
+ else
+ ${adb_uci} -q delete "adblock.${src_name}.adb_src_count"
+ ${adb_uci} -q delete "adblock.${src_name}.adb_src_timestamp"
fi
- fi
- f_deltemp
+ done
+ unset restore_done
}
-################################################################
-# f_restore: restore last adblocklist backup and restart dnsmasq
+# f_restore: restore last adblock list backups and restart dnsmasq
#
f_restore()
{
- if [ "${backup_ok}" = "true" ] && [ -f "${adb_backupfile}" ]
+ local rm_done
+ local restore_done
+
+ # remove bogus adblock lists
+ #
+ if [ -n "${adb_revsrclist}" ]
then
- cp -f "${adb_backupfile}" "${adb_dnsfile}" >/dev/null 2>&1
- f_log "adblocklist backup restored"
- else
- > "${adb_dnsfile}"
- f_log="empty adblocklist generated"
+ rm_done="$(find "${adb_dnsdir}" -maxdepth 1 -type f \( ${adb_revsrclist} \) -print -exec rm -f "{}" \;)"
+ rc=${?}
+ if [ $((rc)) -eq 0 ] && [ -n "${rm_done}" ]
+ then
+ f_rmconfig "${rm_done}"
+ f_log "all bogus adblock lists removed"
+ elif [ $((rc)) -ne 0 ]
+ then
+ f_log "error during removal of bogus adblock lists" "${rc}"
+ f_exit
+ fi
fi
- /etc/init.d/dnsmasq restart >/dev/null 2>&1
- f_remove
-}
-#######################################################
-# f_wancheck: check for usable adblock update interface
-#
-f_wancheck()
-{
- local cnt=0
- local cnt_max="${1}"
- local dev
- local dev_out
- while [ $((cnt)) -le $((cnt_max)) ]
- do
- for dev in ${adb_wandev}
- do
- if [ -d "/sys/class/net/${dev}" ]
- then
- dev_out="$(cat /sys/class/net/${dev}/operstate 2>/dev/null)"
- rc=${?}
- if [ "${dev_out}" = "up" ]
- then
- wan_ok="true"
- f_log "get wan/update interface (${dev}), after ${cnt} loops"
- break 2
- fi
- fi
- done
- sleep 1
- cnt=$((cnt + 1))
- done
- if [ -z "${wan_ok}" ]
+ # restore backups
+ #
+ if [ "${backup_ok}" = "true" ]
then
- rc=585
- wan_ok="false"
- f_log "no wan/update interface(s) found (${adb_wandev# })" "${rc}"
- f_restore
+ restore_done="$(find "${adb_dir_backup}" -maxdepth 1 -type f -name "${adb_dnsprefix}.*" -print -exec cp -pf "{}" "${adb_dnsdir}" \;)"
+ rc=${?}
+ if [ $((rc)) -eq 0 ] && [ -n "${restore_done}" ]
+ then
+ f_log "all available backups restored"
+ elif [ $((rc)) -ne 0 ] && [ -n "${restore_done}" ]
+ then
+ f_log "error during restore of adblock lists" "${rc}"
+ f_exit
+ fi
+ else
+ f_log "backup service disabled, nothing to restore"
fi
-}
-#####################################
-# f_ntpcheck: check/get ntp time sync
-#
-f_ntpcheck()
-{
- local cnt=0
- local cnt_max="${1}"
- local ntp_pool
- for srv in ${adb_ntpsrv}
- do
- ntp_pool="${ntp_pool} -p ${srv}"
- done
- while [ $((cnt)) -le $((cnt_max)) ]
- do
- /usr/sbin/ntpd -nq ${ntp_pool} >/dev/null 2>&1
- rc=${?}
+ # (re-)try dnsmasq restart without bogus adblock lists / with backups
+ #
+ if [ -n "${restore_done}" ] || [ -n "${rm_done}" ]
+ then
+ /etc/init.d/dnsmasq restart
+ sleep 1
+ rc="$(ps | grep -q "[d]nsmasq"; printf ${?})"
if [ $((rc)) -eq 0 ]
then
- ntp_ok="true"
- f_log "get ntp time sync (${adb_ntpsrv# }), after ${cnt} loops"
- break
+ rc=0
+ f_cntconfig
+ f_log "adblock lists with overall ${adb_count} domains loaded"
+ else
+ rc=165
+ f_log "dnsmasq restart failed, please check 'logread' output" "${rc}"
fi
- sleep 1
- cnt=$((cnt + 1))
- done
- if [ -z "${ntp_ok}" ]
- then
- rc=590
- ntp_ok="false"
- f_log "ntp time sync failed (${adb_ntpsrv# })" "${rc}"
- f_restore
fi
+ f_exit
}
-####################################################################
-# f_dnscheck: dnsmasq health check with newly generated adblock list
+# f_exit: delete (temporary) files, generate statistics and exit
#
-f_dnscheck()
+f_exit()
{
- local dns_status
- dns_status="$(logread -l 20 -e "dnsmasq" -e "FAILED to start up")"
- rc=${?}
- if [ -z "${dns_status}" ]
+ local ipv4_adblock=0
+ local ipv6_adblock=0
+ local iptv4="/usr/sbin/iptables"
+ local iptv6="/usr/sbin/ip6tables"
+
+ # delete temporary files & directories
+ #
+ if [ -f "${adb_tmpfile}" ]
then
- dns_status="$(nslookup "${adb_domain}" 2>/dev/null | grep -F "${adb_ip}")"
- rc=${?}
- if [ -z "${dns_status}" ]
+ rm -f "${adb_tmpfile}"
+ fi
+ if [ -d "${adb_tmpdir}" ]
+ then
+ rm -rf "${adb_tmpdir}"
+ fi
+
+ # final log message and iptables statistics
+ #
+ if [ $((rc)) -eq 0 ]
+ then
+ if [ -n "${adb_wanif4}" ]
then
- if [ "${backup_ok}" = "true" ]
- then
- cp -f "${adb_dnsfile}" "${adb_backupfile}" >/dev/null 2>&1
- f_log "new adblock list with ${adb_count} domains loaded, backup generated"
- else
- f_log "new adblock list with ${adb_count} domains loaded, no backup"
- fi
- else
- f_log "nslookup probe failed" "${rc}"
- f_restore
+ ipv4_adblock="$(${iptv4} -t nat -vnL | awk '$11 ~ /^adb-nat$/ {sum += $1} END {printf sum}')"
+ ipv4_adblock="$((${ipv4_adblock} + $(${iptv4} -vnL | awk '$11 ~ /^adb-(fwd|out)$/ {sum += $1} END {printf sum}')))"
+ fi
+ if [ -n "${adb_wanif6}" ]
+ then
+ ipv6_adblock="$(${iptv6} -t nat -vnL | awk '$10 ~ /^adb-nat$/ {sum += $1} END {printf sum}')"
+ ipv6_adblock="$((${ipv6_adblock} + $(${iptv6} -vnL | awk '$10 ~ /^adb-(fwd|out)$/ {sum += $1} END {printf sum}')))"
+ fi
+ if [ -n "$(${adb_uci} -q changes adblock)" ]
+ then
+ ${adb_uci} -q commit "adblock"
+ fi
+ f_log "firewall statistics (IPv4/IPv6): ${ipv4_adblock}/${ipv6_adblock} ad related packets blocked"
+ f_log "domain adblock processing finished successfully (${adb_scriptver}, ${openwrt_version}, $(/bin/date "+%d.%m.%Y %H:%M:%S"))"
+ elif [ $((rc)) -gt 0 ]
+ then
+ if [ -n "$(${adb_uci} -q changes adblock)" ]
+ then
+ ${adb_uci} -q revert "adblock"
fi
+ f_log "domain adblock processing failed (${adb_scriptver}, ${openwrt_version}, $(/bin/date "+%d.%m.%Y %H:%M:%S"))"
else
- f_log "dnsmasq probe failed" "${rc}"
- f_restore
+ rc=0
fi
-}
-
-##########################################################
-# f_footer: write footer with a few statistics to dns file
-#
-f_footer()
-{
- local url
- adb_count="$(wc -l < "${adb_dnsfile}")"
- printf "%s\n" "####################################################" >> "${adb_dnsfile}"
- printf "%s\n" "# last adblock list update: $(date +"%d.%m.%Y - %T")" >> "${adb_dnsfile}"
- printf "%s\n" "# ${0##*/} (${adb_version}) - ${adb_count} ad/abuse domains blocked" >> "${adb_dnsfile}"
- printf "%s\n" "# domain blacklist sources:" >> "${adb_dnsfile}"
- for src in ${adb_sources}
- do
- url="${src//\&ruleset=*/}"
- printf "%s\n" "# ${url}" >> "${adb_dnsfile}"
- done
- printf "%s\n" "#####" >> "${adb_dnsfile}"
- printf "%s\n" "# ${adb_whitelist}" >> "${adb_dnsfile}"
- printf "%s\n" "####################################################" >> "${adb_dnsfile}"
+ rm -f "${adb_pidfile}"
+ exit ${rc}
}
#!/bin/sh
-#######################################################
-# ad/abuse domain blocking script for dnsmasq/openwrt #
-# written by Dirk Brenken (dirk@brenken.org) #
-#######################################################
-
-# LICENSE
-# ========
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
+# ad/abuse domain blocking script for dnsmasq/openwrt
+# written by Dirk Brenken (openwrt@brenken.org)
+
+# This is free software, licensed under the GNU General Public License v3.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-###############
-# environment #
-###############
+# set the C locale
+#
+LC_ALL=C
-# set script version
+# script debug switch (disabled by default)
+# set 'DEBUG=1' to enable script debugging
#
-adb_version="0.22.2"
+DEBUG=0
+if [ $((DEBUG)) -eq 0 ]
+then
+ exec 2>/dev/null
+fi
-# get current pid, script directory and openwrt version
+# pid handling
+#
+adb_pid="${$}"
+adb_pidfile="/var/run/adblock.pid"
+
+if [ -r "${adb_pidfile}" ]
+then
+ rc=255
+ /usr/bin/logger -s -t "adblock[${adb_pid}] error" "adblock service already running ($(cat ${adb_pidfile}))"
+ exit ${rc}
+else
+ printf "${adb_pid}" > "${adb_pidfile}"
+fi
+
+# get current directory, script- and openwrt version
#
-pid=${$}
adb_scriptdir="${0%/*}"
-openwrt_version="$(cat /etc/openwrt_version 2>/dev/null)"
+adb_scriptver="1.1.1"
+openwrt_version="$(cat /etc/openwrt_version)"
# source in adblock function library
#
then
. "${adb_scriptdir}/adblock-helper.sh"
else
- rc=500
- /usr/bin/logger -s -t "adblock[${pid}] error" "adblock function library not found, rc: ${rc}"
+ rc=254
+ /usr/bin/logger -s -t "adblock[${adb_pid}] error" "adblock function library not found"
+ rm -f "${adb_pidfile}"
exit ${rc}
fi
-################
-# main program #
-################
-
-# call restore function on trap signals (HUP, INT, QUIT, BUS, SEGV, TERM)
+# call trap function on error signals (HUP, INT, QUIT, BUS, SEGV, TERM)
#
-trap "f_log 'trap error' '600'; f_restore" 1 2 3 10 11 15
-
-# start logging
-#
-f_log "domain adblock processing started (${adb_version}, ${openwrt_version}, $(/bin/date "+%d.%m.%Y %H:%M:%S"))"
+trap "rc=250; f_log 'error signal received/trapped' '${rc}'; f_exit" 1 2 3 10 11 15
# load environment
#
f_envload
-# parse environment
+# start logging
#
-f_envparse
+f_log "domain adblock processing started (${adb_scriptver}, ${openwrt_version}, $(/bin/date "+%d.%m.%Y %H:%M:%S"))"
# check environment
#
f_envcheck
-# start shallalist (pre-)processing
+# loop through active adblock domain sources,
+# download sources, prepare output and store all extracted domains in temp file
#
-if [ -n "${adb_arc_shalla}" ]
-then
- # download shallalist archive
+for src_name in ${adb_sources}
+do
+ eval "url=\"\${adb_src_${src_name}}\""
+ eval "src_rset=\"\${adb_src_rset_${src_name}}\""
+ adb_dnsfile="${adb_dnsdir}/${adb_dnsprefix}.${src_name}"
+ list_time="$(${adb_uci} -q get "adblock.${src_name}.adb_src_timestamp")"
+ f_log "=> processing adblock source '${src_name}'"
+
+ # check 'url' and 'src_rset' values
#
- f_log "shallalist (pre-)processing started ..."
- shalla_archive="${adb_tmpdir}/shallalist.tar.gz"
- shalla_file="${adb_tmpdir}/shallalist.txt"
- curl ${curl_parm} --max-time "${adb_maxtime}" "${adb_arc_shalla}" --output "${shalla_archive}" 2>/dev/null
- rc=${?}
- if [ $((rc)) -ne 0 ]
+ if [ -z "${url}" ] || [ -z "${src_rset}" ]
then
- f_log "shallalist archive download failed (${adb_arc_shalla})" "${rc}"
- f_restore
+ ${adb_uci} -q set "adblock.${src_name}.adb_src_timestamp=broken config"
+ f_log " broken source configuration, check 'adb_src' and 'adb_src_rset' in config"
+ continue
fi
- # extract and merge only domains of selected shallalist categories
+ # prepare find statement with active adblock list sources
#
- > "${shalla_file}"
- for category in ${adb_cat_shalla}
- do
- tar -xOzf "${shalla_archive}" BL/${category}/domains 2>/dev/null >> "${shalla_file}"
- rc=${?}
- if [ $((rc)) -ne 0 ]
- then
- f_log "shallalist archive extraction failed (${category})" "${rc}"
- f_restore
- fi
- done
-
- # finish shallalist (pre-)processing
- #
- rm -f "${shalla_archive}" >/dev/null 2>&1
- rm -rf "${adb_tmpdir}/BL" >/dev/null 2>&1
- adb_sources="${adb_sources} file:///${shalla_file}&ruleset=rset_shalla"
- f_log "shallalist (pre-)processing finished (${adb_cat_shalla# })"
-fi
+ if [ -z "${adb_srclist}" ]
+ then
+ adb_srclist="! -name ${adb_dnsprefix}.${src_name}"
+ else
+ adb_srclist="${adb_srclist} -a ! -name ${adb_dnsprefix}.${src_name}"
+ fi
-# loop through active adblock domain sources,
-# prepare output and store all extracted domains in temp file
-#
-adb_sources="${adb_sources} file://${adb_blacklist}&ruleset=rset_default"
-for src in ${adb_sources}
-do
- # download selected adblock sources
+ # only download adblock list with newer/updated timestamp
#
- url="${src//\&ruleset=*/}"
- check_url="$(printf "${url}" | sed -n '/^https:/p')"
- if [ -n "${check_url}" ]
+ if [ "${src_name}" = "blacklist" ]
then
- tmp_var="$(wget ${wget_parm} --timeout="${adb_maxtime}" --tries=1 --output-document=- "${url}" 2>/dev/null)"
- rc=${?}
+ url_time="$(date -r "${url}")"
else
- tmp_var="$(curl ${curl_parm} --max-time "${adb_maxtime}" "${url}" 2>/dev/null)"
- rc=${?}
+ url_time="$(${adb_fetch} ${fetch_parm} --server-response --spider "${url}" 2>&1 | awk '$0 ~ /Last-Modified/ {printf substr($0,18)}')"
+ fi
+ if [ -z "${url_time}" ]
+ then
+ url_time="$(date)"
+ f_log " no online timestamp received, current date will be used"
+ fi
+ if [ -z "${list_time}" ] || [ "${list_time}" != "${url_time}" ] || [ ! -r "${adb_dnsfile}" ] ||\
+ ([ "${backup_ok}" = "true" ] && [ ! -r "${adb_dir_backup}/${adb_dnsprefix}.${src_name}" ])
+ then
+ if [ "${src_name}" = "blacklist" ]
+ then
+ tmp_domains="$(cat "${url}")"
+ rc=${?}
+ elif [ "${src_name}" = "shalla" ]
+ then
+ shalla_archive="${adb_tmpdir}/shallalist.tar.gz"
+ shalla_file="${adb_tmpdir}/shallalist.txt"
+ ${adb_fetch} ${fetch_parm} --output-document="${shalla_archive}" "${url}"
+ rc=${?}
+ if [ $((rc)) -eq 0 ]
+ then
+ > "${shalla_file}"
+ for category in ${adb_src_cat_shalla}
+ do
+ tar -xOzf "${shalla_archive}" BL/${category}/domains >> "${shalla_file}"
+ rc=${?}
+ if [ $((rc)) -ne 0 ]
+ then
+ f_log " archive extraction failed (${category})"
+ break
+ fi
+ done
+ rm -f "${shalla_archive}"
+ rm -rf "${adb_tmpdir}/BL"
+ tmp_domains="$(cat "${shalla_file}")"
+ rc=${?}
+ fi
+ else
+ tmp_domains="$(${adb_fetch} ${fetch_parm} --output-document=- "${url}")"
+ rc=${?}
+ fi
+ else
+ f_log " source doesn't change, no update required"
+ continue
fi
# check download result and prepare domain output by regex patterns
#
- if [ $((rc)) -eq 0 ] && [ -n "${tmp_var}" ]
+ if [ $((rc)) -eq 0 ] && [ -n "${tmp_domains}" ]
then
- eval "$(printf "${src}" | sed 's/\(.*\&ruleset=\)/ruleset=\$/g')"
- tmp_var="$(printf "%s\n" "${tmp_var}" | tr '[A-Z]' '[a-z]')"
- count="$(printf "%s\n" "${tmp_var}" | eval "${ruleset}" | tee -a "${adb_tmpfile}" | wc -l)"
- f_log "source download finished (${url}, ${count} entries)"
- if [ "${url}" = "file:///${shalla_file}" ]
+ count="$(printf "%s\n" "${tmp_domains}" | awk "${src_rset}" | tee "${adb_tmpfile}" | wc -l)"
+ f_log " source download finished (${count} entries)"
+ if [ "${src_name}" = "shalla" ]
then
- rm -f "${shalla_file}" >/dev/null 2>&1
+ rm -f "${shalla_file}"
fi
- unset tmp_var 2>/dev/null
- elif [ $((rc)) -eq 0 ] && [ -z "${tmp_var}" ]
+ unset tmp_domains
+ elif [ $((rc)) -eq 0 ] && [ -z "${tmp_domains}" ]
then
- f_log "empty source download finished (${url})"
+ ${adb_uci} -q set "adblock.${src_name}.adb_src_timestamp=empty download"
+ f_log " empty source download finished"
+ continue
else
- f_log "source download failed (${url})" "${rc}"
- f_restore
+ rc=0
+ if [ -z "${adb_errsrclist}" ]
+ then
+ adb_errsrclist="-name ${adb_dnsprefix}.${src_name}"
+ else
+ adb_errsrclist="${adb_errsrclist} -o -name ${adb_dnsprefix}.${src_name}"
+ fi
+ ${adb_uci} -q set "adblock.${src_name}.adb_src_timestamp=download failed"
+ f_log " source download failed"
+ continue
+ fi
+
+ # remove whitelist domains, sort domains and make them unique,
+ # finally rewrite ad/abuse domain information to separate dnsmasq files
+ #
+ if [ $((count)) -gt 0 ] && [ -n "${adb_tmpfile}" ]
+ then
+ if [ -s "${adb_tmpdir}/tmp.whitelist" ]
+ then
+ grep -vf "${adb_tmpdir}/tmp.whitelist" "${adb_tmpfile}" | sort -u | eval "${adb_dnsformat}" > "${adb_dnsfile}"
+ rc=${?}
+ else
+ sort -u "${adb_tmpfile}" | eval "${adb_dnsformat}" > "${adb_dnsfile}"
+ rc=${?}
+ fi
+
+ # prepare find statement with revised adblock list sources
+ #
+ if [ -z "${adb_revsrclist}" ]
+ then
+ adb_revsrclist="-name ${adb_dnsprefix}.${src_name}"
+ else
+ adb_revsrclist="${adb_revsrclist} -o -name ${adb_dnsprefix}.${src_name}"
+ fi
+
+ # store source timestamp in config
+ #
+ if [ $((rc)) -eq 0 ]
+ then
+ ${adb_uci} -q set "adblock.${src_name}.adb_src_timestamp=${url_time}"
+ f_log " domain merging finished"
+ else
+ f_log " domain merging failed" "${rc}"
+ f_restore
+ fi
+ else
+ ${adb_uci} -q set "adblock.${src_name}.adb_src_timestamp=empty domain input"
+ f_log " empty domain input received"
+ continue
fi
done
-# remove whitelist domains, sort domains and make them unique
-# and finally rewrite ad/abuse domain information to dnsmasq file
+# remove disabled adblock lists and their backups
#
-if [ -s "${adb_whitelist}" ]
+if [ -n "${adb_srclist}" ]
then
- grep -Fvxf "${adb_whitelist}" "${adb_tmpfile}" 2>/dev/null | sort -u 2>/dev/null | eval "${adb_dnsformat}" 2>/dev/null > "${adb_dnsfile}"
+ rm_done="$(find "${adb_dnsdir}" -maxdepth 1 -type f -name "${adb_dnsprefix}.*" \( ${adb_srclist} \) -print -exec rm -f "{}" \;)"
rc=${?}
+ if [ "${backup_ok}" = "true" ]
+ then
+ find "${adb_dir_backup}" -maxdepth 1 -type f -name "${adb_dnsprefix}.*" \( ${adb_srclist} \) -exec rm -f "{}" \;
+ fi
else
- sort -u "${adb_tmpfile}" 2>/dev/null | eval "${adb_dnsformat}" 2>/dev/null > "${adb_dnsfile}"
+ rm_done="$(find "${adb_dnsdir}" -maxdepth 1 -type f -name "${adb_dnsprefix}.*" -print -exec rm -f "{}" \;)"
rc=${?}
+ if [ "${backup_ok}" = "true" ]
+ then
+ find "${adb_dir_backup}" -maxdepth 1 -type f -name "${adb_dnsprefix}.*" -exec rm -f "{}" \;
+ fi
+fi
+if [ $((rc)) -eq 0 ] && [ -n "${rm_done}" ]
+then
+ f_rmconfig "${rm_done}"
+ f_log "remove disabled adblock lists"
+elif [ $((rc)) -ne 0 ] && [ -n "${rm_done}" ]
+then
+ f_log "error during removal of disabled adblock lists" "${rc}"
+ f_exit
fi
-if [ $((rc)) -eq 0 ]
+# partial restore of adblock lists in case of download errors
+#
+if [ "${backup_ok}" = "true" ] && [ -n "${adb_errsrclist}" ]
then
- rm -f "${adb_tmpfile}" >/dev/null 2>&1
- f_log "domain merging finished"
-else
- f_log "domain merging failed" "${rc}"
- f_restore
+ restore_done="$(find "${adb_dir_backup}" -maxdepth 1 -type f \( ${adb_errsrclist} \) -print -exec cp -pf "{}" "${adb_dnsdir}" \;)"
+ rc=${?}
+ if [ $((rc)) -eq 0 ] && [ -n "${restore_done}" ]
+ then
+ f_rmconfig "${restore_done}"
+ f_log "partial restore done"
+ elif [ $((rc)) -ne 0 ]
+ then
+ f_log "error during partial restore" "${rc}"
+ f_exit
+ fi
fi
-# write dns file footer
+# make separate adblock lists entries unique
#
-f_footer
+if [ "${mem_ok}" = "true" ] && [ -n "${adb_revsrclist}" ]
+then
+ f_log "remove duplicates in separate adblock lists"
+
+ # generate a unique overall block list
+ #
+ sort -u "${adb_dnsdir}/${adb_dnsprefix}."* > "${adb_tmpdir}/blocklist.overall"
+
+ # loop through all separate lists, ordered by size (ascending)
+ #
+ for list in $(ls -ASr "${adb_dnsdir}/${adb_dnsprefix}."*)
+ do
+ # check overall block list vs. separate block list,
+ # write all duplicate entries to separate list
+ #
+ list="${list/*./}"
+ sort "${adb_tmpdir}/blocklist.overall" "${adb_dnsdir}/${adb_dnsprefix}.${list}" | uniq -d > "${adb_tmpdir}/tmp.${list}"
+ mv -f "${adb_tmpdir}/tmp.${list}" "${adb_dnsdir}/${adb_dnsprefix}.${list}"
+
+ # write all unique entries back to overall block list
+ #
+ sort "${adb_tmpdir}/blocklist.overall" "${adb_dnsdir}/${adb_dnsprefix}.${list}" | uniq -u > "${adb_tmpdir}/tmp.overall"
+ mv -f "${adb_tmpdir}/tmp.overall" "${adb_tmpdir}/blocklist.overall"
+ done
+ rm -f "${adb_tmpdir}/blocklist.overall"
+fi
-# restart dnsmasq with newly generated block list
+# restart & check dnsmasq with newly generated set of adblock lists
#
-/etc/init.d/dnsmasq restart >/dev/null 2>&1
-sleep 2
+f_cntconfig
+adb_count="$(${adb_uci} -q get "adblock.global.adb_overall_count")"
+if [ -n "${adb_revsrclist}" ] || [ -n "${rm_done}" ] || [ -n "${restore_done}" ]
+then
+ /etc/init.d/dnsmasq restart
+ sleep 1
+ rc="$(ps | grep -q "[d]nsmasq"; printf ${?})"
+ if [ $((rc)) -eq 0 ]
+ then
+ f_log "adblock lists with overall ${adb_count} domains loaded"
+ else
+ rc=100
+ f_log "dnsmasq restart failed, please check 'logread' output" "${rc}"
+ f_restore
+ fi
+else
+ f_log "adblock lists with overall ${adb_count} domains are still valid, no update required"
+fi
-# dnsmasq health check
+# create adblock list backups
#
-f_dnscheck
+if [ "${backup_ok}" = "true" ] && [ -n "${adb_revsrclist}" ]
+then
+ backup_done="$(find "${adb_dnsdir}" -maxdepth 1 -type f \( ${adb_revsrclist} \) -print -exec cp -pf "{}" "${adb_dir_backup}" \;)"
+ rc=${?}
+ if [ $((rc)) -eq 0 ] && [ -n "${backup_done}" ]
+ then
+ f_log "new adblock list backups generated"
+ elif [ $((rc)) -ne 0 ] && [ -n "${backup_done}" ]
+ then
+ f_log "error during backup of adblock lists" "${rc}"
+ f_exit
+ fi
+fi
-# remove files and exit
+# remove temporary files and exit
#
-f_remove
+f_exit
-# adblock configuration
-#
-config adblock "global"
- option adb_ip "192.168.2.1"
- option adb_domain "heise.de"
- option adb_blacklist "/etc/adblock/adblock.blacklist"
- option adb_whitelist "/etc/adblock/adblock.whitelist"
-
-config service "wancheck"
- option enabled "0"
- list adb_wanlist "wan"
-
-config service "ntpcheck"
- option enabled "0"
-
-config service "backup"
- option enabled "0"
- option adb_backupfile "/tmp/adlist.backup"
-
-config service "debuglog"
- option enabled "0"
- option adb_logfile "/tmp/adb_debug.log"
-
-config service "querylog"
- option enabled "0"
- option adb_queryfile "/tmp/adb_query.log"
- option adb_queryhistory "1"
-
-config source "yoyo"
- option enabled "1"
- option adb_src_yoyo "http://pgl.yoyo.org/adservers/serverlist.php?hostformat=one-line&showintro=0&mimetype=plaintext&ruleset=rset_yoyo"
-
-config source "malware"
- option enabled "0"
- option adb_src_malware "http://mirror1.malwaredomains.com/files/justdomains&ruleset=rset_default"
-
-config source "zeus"
- option enabled "0"
- option adb_src_zeus "https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist&ruleset=rset_default"
-
-config source "feodo"
- option enabled "0"
- option adb_src_feodo "https://feodotracker.abuse.ch/blocklist/?download=domainblocklist&ruleset=rset_default"
-
-config source "palevo"
- option enabled "0"
- option adb_src_palevo "https://palevotracker.abuse.ch/blocklists.php?download=domainblocklist&ruleset=rset_default"
-
-config source "dshield"
- option enabled "0"
- option adb_src_dshield "http://www.dshield.org/feeds/suspiciousdomains_Low.txt&ruleset=rset_default"
-
-config source "spam404"
- option enabled "0"
- option adb_src_spam404 "http://spam404bl.com/spam404scamlist.txt&ruleset=rset_spam404"
-
-config source "winhelp"
- option enabled "0"
- option adb_src_winhelp "http://winhelp2002.mvps.org/hosts.txt&ruleset=rset_winhelp"
-
-config source "shalla"
- option enabled "0"
- option adb_arc_shalla "http://www.shallalist.de/Downloads/shallalist.tar.gz"
- list adb_catlist "adv"
- list adb_catlist "costtraps"
- list adb_catlist "spyware"
- list adb_catlist "tracker"
- list adb_catlist "warez"
+# adblock configuration, for further information
+# see 'https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md'
+
+config adblock 'global'
+ option adb_enabled '1'
+ option adb_cfgversion '1.1'
+ option adb_whitelist '/etc/adblock/adblock.whitelist'
+ option adb_whitelist_rset '\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
+ option adb_forcedns '1'
+
+config service 'backup'
+ option enabled '0'
+ option adb_dir '/mnt'
+
+config source 'adaway'
+ option enabled '1'
+ option adb_src 'https://adaway.org/hosts.txt'
+ option adb_src_rset '\$0 ~/^127\.0\.0\.1[ \t]+([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$2)}'
+ option adb_src_desc 'focus on mobile ads, infrequent updates, approx. 400 entries'
+
+config source 'blacklist'
+ option enabled '0'
+ option adb_src '/etc/adblock/adblock.blacklist'
+ option adb_src_rset '\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
+ option adb_src_desc 'static local domain blacklist (always deny these domains)'
+
+config source 'disconnect'
+ option enabled '1'
+ option adb_src 'https://s3.amazonaws.com/lists.disconnect.me/simple_malvertising.txt'
+ option adb_src_rset '\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
+ option adb_src_desc 'mozilla driven content blocklist, numerous updates on the same day, approx. 6.500 entries'
+
+config source 'dshield'
+ option enabled '0'
+ option adb_src 'http://www.dshield.org/feeds/suspiciousdomains_Low.txt'
+ option adb_src_rset '\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
+ option adb_src_desc 'broad blocklist for suspicious domains, daily updates, approx. 4.500 entries'
+
+config source 'feodo'
+ option enabled '0'
+ option adb_src 'https://feodotracker.abuse.ch/blocklist/?download=domainblocklist'
+ option adb_src_rset '\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
+ option adb_src_desc 'focus on feodo botnet domains, daily updates, approx. 0-10 entries'
+
+config source 'malware'
+ option enabled '0'
+ option adb_src 'https://mirror.cedia.org.ec/malwaredomains/justdomains'
+ option adb_src_rset '\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
+ option adb_src_desc 'broad blocklist for malware domains, daily updates, approx. 16.000 entries'
+
+config source 'malwarelist'
+ option enabled '0'
+ option adb_src 'http://www.malwaredomainlist.com/hostslist/hosts.txt'
+ option adb_src_rset '\$0 ~/^127\.0\.0\.1[ \t]+([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$2)}'
+ option adb_src_desc 'generic blocklist for malware domains, daily updates, approx. 1.500 entries'
+
+config source 'openphish'
+ option enabled '0'
+ option adb_src 'https://openphish.com/feed.txt'
+ option adb_src_rset '{FS=\"/\"} \$3 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$3)}'
+ option adb_src_desc 'focus on phishing domains, numerous updates on the same day, approx. 1.800 entries'
+
+config source 'palevo'
+ option enabled '0'
+ option adb_src 'https://palevotracker.abuse.ch/blocklists.php?download=domainblocklist'
+ option adb_src_rset '\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
+ option adb_src_desc 'focus on palevo worm domains, daily updates, approx. 15 entries'
+
+config source 'ransomware'
+ option enabled '0'
+ option adb_src 'https://ransomwaretracker.abuse.ch/downloads/RW_DOMBL.txt'
+ option adb_src_rset '\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
+ option adb_src_desc 'focus on ransomware domains, numerous updates on the same day, approx. 130 entries'
+
+config source 'rolist'
+ option enabled '0'
+ option adb_src 'https://easylist-downloads.adblockplus.org/rolist+easylist.txt'
+ option adb_src_rset '{FS=\"[|^]\"} \$0 ~/^\|\|([A-Za-z0-9_-]+\.){1,}[A-Za-z]+\^$/{print tolower(\$3)}'
+ option adb_src_desc 'focus on romanian ad related domains plus generic easylist additions, weekly updates, approx. 600 entries'
+
+config source 'ruadlist'
+ option enabled '0'
+ option adb_src 'https://easylist-downloads.adblockplus.org/ruadlist+easylist.txt'
+ option adb_src_rset '{FS=\"[|^]\"} \$0 ~/^\|\|([A-Za-z0-9_-]+\.){1,}[A-Za-z]+\^$/{print tolower(\$3)}'
+ option adb_src_desc 'focus on russian ad related domains plus generic easylist additions, weekly updates, approx. 2.000 entries'
+
+config source 'shalla'
+ option enabled '0'
+ option adb_src 'http://www.shallalist.de/Downloads/shallalist.tar.gz'
+ option adb_src_rset '{FS=\"/\"} \$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
+ option adb_src_desc 'broad blocklist subdivided in different categories (adv, costtraps, spyware, tracker and warez enabled by default), daily updates, approx. 32.000 entries'
+ list adb_src_cat 'adv'
+ list adb_src_cat 'costtraps'
+ list adb_src_cat 'spyware'
+ list adb_src_cat 'tracker'
+ list adb_src_cat 'warez'
+
+config source 'spam404'
+ option enabled '0'
+ option adb_src 'https://raw.githubusercontent.com/Dawsey21/Lists/master/main-blacklist.txt'
+ option adb_src_rset '\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
+ option adb_src_desc 'generic blocklist for suspicious domains, infrequent updates, approx. 5.000 entries'
+
+config source 'sysctl'
+ option enabled '0'
+ option adb_src 'http://sysctl.org/cameleon/hosts'
+ option adb_src_rset '\$0 ~/^127\.0\.0\.1[ \t]+([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$2)}'
+ option adb_src_desc 'generic blocklist for ad related domains, weekly updates, approx. 21.000 entries'
+
+config source 'whocares'
+ option enabled '0'
+ option adb_src 'http://someonewhocares.org/hosts/hosts'
+ option adb_src_rset '\$0 ~/^127\.0\.0\.1[ \t]+([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$2)}'
+ option adb_src_desc 'broad blocklist for suspicious domains, weekly updates, approx. 12.000 entries'
+
+config source 'winspy'
+ option enabled '0'
+ option adb_src 'https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/hostsBlockWindowsSpy.txt'
+ option adb_src_rset '\$0 ~/^0\.0\.0\.0[ \t]+([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$2)}'
+ option adb_src_desc 'focus on windows spy & telemetry domains, infrequent updates, approx. 120 entries'
+
+config source 'winhelp'
+ option enabled '0'
+ option adb_src 'http://winhelp2002.mvps.org/hosts.txt'
+ option adb_src_rset '\$0 ~/^0\.0\.0\.0[ \t]+([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$2)}'
+ option adb_src_desc 'broad blocklist for suspicious domains, infrequent updates, approx. 15.000 entries'
+
+config source 'yoyo'
+ option enabled '1'
+ option adb_src 'https://pgl.yoyo.org/adservers/serverlist.php?hostformat=nohtml&showintro=0&mimetype=plaintext'
+ option adb_src_rset '\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
+ option adb_src_desc 'focus on ad related domains, weekly updates, approx. 2.500 entries'
+
+config source 'zeus'
+ option enabled '0'
+ option adb_src 'https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist'
+ option adb_src_rset '\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
+ option adb_src_desc 'focus on zeus botnet domains, daily updates, approx. 440 entries'
--- /dev/null
+#!/bin/sh
+#
+
+adb_pid="${$}"
+adb_pidfile="/var/run/adblock.pid"
+adb_logger="/usr/bin/logger"
+
+if [ -f "${adb_pidfile}" ] || [ "${ACTION}" != "ifup" ]
+then
+ exit 0
+fi
+
+. /lib/functions/network.sh
+network_find_wan adb_wanif4
+network_find_wan6 adb_wanif6
+
+if [ "${INTERFACE}" = "${adb_wanif4}" ] || [ "${INTERFACE}" = "${adb_wanif6}" ]
+then
+ /etc/init.d/adblock start
+ "${adb_logger}" -t "adblock[${adb_pid}] info " "adblock service started due to '${ACTION}' of '${INTERFACE}' interface"
+fi
--- /dev/null
+#!/bin/sh /etc/rc.common
+#
+
+START=99
+
+exec 2>/dev/null
+adb_pid="${$}"
+adb_script="/usr/bin/adblock-update.sh"
+adb_pidfile="/var/run/adblock.pid"
+adb_logger="/usr/bin/logger"
+adb_uci="/sbin/uci"
+
+if [ -t 1 ]
+then
+ log_parm="-s"
+ unset bg_parm
+else
+ unset log_parm
+ bg_parm="&"
+fi
+
+if [ -r "${adb_pidfile}" ]
+then
+ "${adb_logger}" ${log_parm} -t "adblock[${adb_pid}] error" "adblock service already running ($(cat ${adb_pidfile})" 2>&1
+ exit 255
+fi
+
+remove_config()
+{
+ local value opt section="${1}" options="adb_src_timestamp adb_src_count"
+ for opt in ${options}
+ do
+ ${adb_uci} -q delete "adblock.${section}.${opt}"
+ done
+}
+
+boot()
+{
+ return 0
+}
+
+start()
+{
+ eval "${adb_script}" ${bg_parm}
+ return 0
+}
+
+restart()
+{
+ stop
+ start
+}
+
+reload()
+{
+ stop
+ start
+}
+
+stop()
+{
+ rm_done="$(find "/tmp/dnsmasq.d" -maxdepth 1 -type f -name "adb_list.*" -print -exec rm -f "{}" \;)"
+ rc=${?}
+ if [ $((rc)) -eq 0 ] && [ -n "${rm_done}" ]
+ then
+ . "/lib/functions.sh"
+ config_load adblock
+ config_foreach remove_config source
+ ${adb_uci} -q delete "adblock.global.adb_overall_count"
+ ${adb_uci} -q commit "adblock"
+ /etc/init.d/dnsmasq restart
+ /etc/init.d/firewall restart
+ fi
+
+ uhttpd_pid="$(ps | grep "[u]httpd.*\-h /www/adblock" | awk '{print $1}')"
+ if [ -n "${uhttpd_pid}" ]
+ then
+ kill -9 "${uhttpd_pid}"
+ fi
+
+ if [ -n "${rm_done}" ] || [ -n "${uhttpd_pid}" ]
+ then
+ "${adb_logger}" ${log_parm} -t "adblock[${adb_pid}] info " "all adblock related services stopped" 2>&1
+ fi
+ return 0
+}
+++ /dev/null
-# adblock configuration sample
-#
-
-# generic options (always required)
-#
-config adblock "global"
- # ip address of the local adblock interface/uhttpd instance,
- # needs to be a different subnet from the normal LAN
- option adb_ip "192.168.2.1"
-
- # name of an "always accessible" domain,
- # this domain will be used for the final nslookup check
- option adb_domain "heise.de"
-
- # full path to static domain blacklist file (one domain per line)
- option adb_blacklist "/etc/adblock/adblock.blacklist"
-
- # full path to static domain whitelist file (one domain per line)
- option adb_whitelist "/etc/adblock/adblock.whitelist"
-
-# list of wan devices that are allowed for adblock updates (check /sys/class/net/<dev>),
-# if no one found the last adlist backup will be restored,
-# useful only for (mobile) multiwan setups
-# disabled by default
-config service "wancheck"
- option enabled "0"
- list adb_wanlist "wan"
-
-# check that ntp has adjusted the system time on this device,
-# will be used for logfile writing and logfile housekeeping
-# disabled by default
-config service "ntpcheck"
- option enabled "0"
-
-# full path to backup file for adlist backups
-# disabled by default
-config service "backup"
- option enabled "0"
- option adb_backupfile "/tmp/adlist.backup"
-
-# full path to debug logfile
-# by default adblock logs to syslog and stdout only
-# disabled by default
-config service "debuglog"
- option enabled "0"
- option adb_logfile "/tmp/adb_debug.log"
-
-# full path to domain query logfile
-# a background task will trace every dns request to file, to easily identify free and already blocked domains,
-# for this to work, you've to enable the dnsmasq option "logqueries" too.
-# the "queryhistory" option deletes query logfiles older than n days (req. busybox find with mtime support)
-# disabled by default
-config service "querylog"
- option enabled "0"
- option adb_queryfile "/tmp/adb_query.log"
- option adb_queryhistory "1"
-
-# different adblock list sources
-# please do not change the urls listed below,
-# enable/disable sources as needed
-# for shallalist you can also enable/disable different ad categories
-config source "yoyo"
- option enabled "1"
- option adb_src_yoyo "http://pgl.yoyo.org/adservers/serverlist.php?hostformat=one-line&showintro=0&mimetype=plaintext&ruleset=rset_yoyo"
-
-config source "malware"
- option enabled "0"
- option adb_src_malware "http://mirror1.malwaredomains.com/files/justdomains&ruleset=rset_default"
-
-config source "zeus"
- option enabled "0"
- option adb_src_zeus "https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist&ruleset=rset_default"
-
-config source "feodo"
- option enabled "0"
- option adb_src_feodo "https://feodotracker.abuse.ch/blocklist/?download=domainblocklist&ruleset=rset_default"
-
-config source "palevo"
- option enabled "0"
- option adb_src_palevo "https://palevotracker.abuse.ch/blocklists.php?download=domainblocklist&ruleset=rset_default"
-
-config source "dshield"
- option enabled "0"
- option adb_src_dshield "http://www.dshield.org/feeds/suspiciousdomains_Low.txt&ruleset=rset_default"
-
-config source "spam404"
- option enabled "0"
- option adb_src_spam404 "http://spam404bl.com/spam404scamlist.txt&ruleset=rset_spam404"
-
-config source "winhelp"
- option enabled "0"
- option adb_src_winhelp "http://winhelp2002.mvps.org/hosts.txt&ruleset=rset_winhelp"
-
-config source "shalla"
- option enabled "0"
- option adb_arc_shalla "http://www.shallalist.de/Downloads/shallalist.tar.gz"
- list adb_catlist "adv"
- list adb_catlist "costtraps"
- list adb_catlist "downloads"
- list adb_catlist "spyware"
- list adb_catlist "tracker"
- list adb_catlist "warez"
+++ /dev/null
-# tweaks for dnsmasq
-# configuration found in /etc/config/dhcp
-#
-config dnsmasq
- option cachesize '1000'
- option filterwin2k '0'
- option logqueries '1'
+++ /dev/null
-# tell DHCP clients to not ask for proxy information
-# some clients - like Win7 - will constantly ask if not told "No!"
-# configuration found in /etc/dnsmasq
-#
-dhcp-option=252,"\n"
+++ /dev/null
-# redirect/force all dns queries to port 53 of your router
-# configuration found in /etc/firewall.user
-#
-iptables -t nat -I PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
-iptables -t nat -I PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
+++ /dev/null
-# sample startup script
-# configuration found in /etc/rc.local
-#
-
-# start logging
-#
-/usr/bin/logger -t rc.local "start rc.local processing"
-
-# set home directory
-#
-export HOME=/root
-
-# resize /tmp partition to 256 MB
-#
-/usr/bin/logger -t rc.local "resize /tmp partition to 256 MB"
-mount tmpfs /tmp -t tmpfs -o remount,nosuid,nodev,noatime,size=256M
-
-# start adblock script
-#
-/usr/bin/logger -t rc.local "start adblock script"
-/usr/bin/adblock-update.sh >/dev/null 2>&1
-
-# write log and exit
-#
-/usr/bin/logger -t rc.local "finish rc.local processing"
-exit 0
+++ /dev/null
-# sample crontab script
-# configuration found in /etc/crontabs/root
-#
-
-# start adblock script twice a day
-#
-0 06 * * * /usr/bin/adblock-update.sh &
-0 22 * * * /usr/bin/adblock-update.sh &
+++ /dev/null
-# main uhttpd instance listens only to internal LAN
-#
- config uhttpd 'main'
- list listen_http '192.168.1.1:80'
+++ /dev/null
-<html>
- <head></head>
- <body>
- <img src="/adblock.png" border=0 alt=""></img>
- </body>
-</html>
<html>
- <head></head>
- <body>
- <img src="/adblock.png" border=0 alt=""></img>
+ <body>
+ <img src="data:image/gif;base64,R0lGODlhAQABAAAAACwAAAAAAQABAAA=" alt=""></img>
</body>
</html>
PKG_NAME:=aircrack-ng
PKG_VERSION:=1.2-rc1
PKG_RELEASE:=1
-PKG_LICENSE:=GPLv2
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=LICENSE
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://download.aircrack-ng.org/ \
PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
+PKG_MAINTAINER:=Rick Farina <zerochaos@gentoo.org>
+
include $(INCLUDE_DIR)/package.mk
define Package/aircrack-ng
SECTION:=net
CATEGORY:=Network
- DEPENDS:=+libpcap +libpthread +libopenssl +libnl-core +libnl-genl +wireless-tools +ethtool
- TITLE:=WLAN tools for breaking 802.11 WEP/WPA keys
+ DEPENDS:=+libpcap +libpthread +libopenssl +libnl-core +libnl-genl
+ TITLE:=WLAN tools (without airmon-ng) for breaking 802.11 WEP/WPA keys
URL:=http://www.aircrack-ng.org/
- MAINTAINER:=Rick Farina <zerochaos@gentoo.org>
SUBMENU:=wireless
endef
WLAN tools for breaking 802.11 WEP/WPA keys
endef
+define Package/airmon-ng
+ SECTION:=net
+ CATEGORY:=Network
+ DEPENDS:=+wireless-tools +ethtool +procps +CONFIG_PCI_SUPPORT:pciutils +CONFIG_USB_SUPPORT:usbutils
+ TITLE:=Bash script designed to turn wireless cards into monitor mode.
+ URL:=http://www.aircrack-ng.org/
+ SUBMENU:=wireless
+endef
+
+define Package/airmon-ng/description
+ Bash script designed to turn wireless cards into monitor mode.
+endef
+
MAKE_FLAGS += prefix=/usr \
libnl=true \
sqlite=false \
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/* $(1)/usr/sbin/
+ rm -f $(1)/usr/sbin/airmon-ng
+endef
+
+define Package/airmon-ng/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/airmon-ng $(1)/usr/sbin/
endef
$(eval $(call BuildPackage,aircrack-ng))
+$(eval $(call BuildPackage,airmon-ng))
PKG_LICENSE:=Apache License
PKG_SOURCE:=$(PKG_SOURCE_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=http://mirrors.ibiblio.org/apache/httpd/ \
- http://apache.imsam.info/httpd/
+PKG_SOURCE_URL:=@APACHE/httpd/
PKG_MD5SUM:=6c10e15835ab214464228a9beb7afba8
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_NAME)-$(PKG_VERSION)
# UPSNAME xxx
# Use this to give your UPS a name in log files and such. This
-# is particulary useful if you have multiple UPSes. This does not
+# is particularly useful if you have multiple UPSes. This does not
# set the EEPROM. It should be 8 characters or less.
UPSNAME ups1
#
# Note: BATTERYLEVEL, MINUTES, and TIMEOUT work in conjunction, so
-# the first that occurs will cause the initation of a shutdown.
+# the first that occurs will cause the initiation of a shutdown.
#
# If during a power failure, the remaining battery percentage
#
# Note, if you have a Smart UPS, you will most likely want to disable
# this timer by setting it to zero. That way, you UPS will continue
-# on batteries until either the % charge remaing drops to or below BATTERYLEVEL,
+# on batteries until either the % charge remaining drops to or below BATTERYLEVEL,
# or the remaining battery runtime drops to or below MINUTES. Of course,
# if you are testing, setting this to 60 causes a quick system shutdown
# if you pull the power plug.
--- /dev/null
+#
+# Copyright (C) 2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=arp-scan
+PKG_VERSION:=1.9-40-g69b2f70
+PKG_RELEASE:=1
+PKG_LICENSE:=GPL-3.0
+PKG_MAINTAINER:=Sergey Urushkin <urusha.v1.0@gmail.com>
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/royhills/arp-scan.git
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_VERSION:=69b2f70588565385f3a61d9b1f100f01747cd5e1
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+
+PKG_FIXUP:=autoreconf
+
+PKG_BUILD_PARALLEL:=1
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/arp-scan
+ SECTION:=net
+ CATEGORY:=Network
+ TITLE:=ARP scanner
+ DEPENDS:=+libpcap
+ URL:=https://github.com/royhills/arp-scan
+ PKG_MAINTAINER:=Sergey Urushkin <urusha.v1.0@gmail.com>
+endef
+
+define Package/arp-scan/description
+ ARP scanner
+endef
+
+define Package/arp-scan/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/arp-scan $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,arp-scan))
--- /dev/null
+--- a/acinclude.m4 2016-02-19 15:21:01.000000000 +0300
++++ b/acinclude.m4 2016-02-19 17:18:50.480874343 +0300
+@@ -211,7 +211,6 @@
+ LONG_LONG_INT_FORMAT=''
+
+ case $pgac_cv_snprintf_long_long_int_format in
+- cross) AC_MSG_RESULT([cannot test (not on host machine)]);;
+ ?*) AC_MSG_RESULT([$pgac_cv_snprintf_long_long_int_format])
+ LONG_LONG_INT_FORMAT=$pgac_cv_snprintf_long_long_int_format;;
+ *) AC_MSG_RESULT(none);;
--- /dev/null
+if PACKAGE_bind-server
+
+config BIND_ENABLE_FILTER_AAAA
+ bool
+ default n
+ prompt "Enable filtering of AAAA records returned to the client"
+ help
+ BIND 9 has an option to filter AAAA (IPv6 address) records
+ returned to the client based on the transport used for the
+ query, and other filtering conditions. This filtering does
+ not affect the recursive queries made by the server (if
+ any) as a result of the client request.
+
+ Additional details are available at
+ https://kb.isc.org/article/AA-00576/0/Filter-AAAA-option-in-BIND-9-.html
+
+endif
include $(TOPDIR)/rules.mk
PKG_NAME:=bind
-PKG_VERSION:=9.9.7-P3
-PKG_RELEASE:=1
+PKG_VERSION:=9.9.8-P4
+PKG_RELEASE:=3
USERID:=bind=57:bind=57
PKG_MAINTAINER := Noah Meyerhans <frodo@morgul.net>
PKG_SOURCE_URL:= \
ftp://ftp.isc.org/isc/bind9/$(PKG_VERSION) \
http://www.mirrorservice.org/sites/ftp.isc.org/isc/bind9/$(PKG_VERSION)
-PKG_MD5SUM:=022a8aca9ca51e1027d77094094eecfd
+PKG_MD5SUM:=5e401f6cf024f596044d733ceb0d6415
PKG_FIXUP:=autoreconf
PKG_REMOVE_FILES:=aclocal.m4 libtool.m4
PKG_INSTALL:=1
-PKG_CONFIG_DEPENDS := CONFIG_OPENSSL_WITH_EC
+PKG_CONFIG_DEPENDS := \
+ CONFIG_OPENSSL_WITH_EC \
+ CONFIG_BIND_ENABLE_FILTER_AAAA
include $(INCLUDE_DIR)/package.mk
TITLE+= DNS server
endef
+define Package/bind-server/config
+ source "$(SOURCE)/Config.in"
+endef
+
define Package/bind-client
$(call Package/bind/Default)
TITLE+= dynamic DNS client
--with-ecdsa=$(if $(CONFIG_OPENSSL_WITH_EC),yes,no) \
--with-readline=no
+ifdef CONFIG_BIND_ENABLE_FILTER_AAAA
+ CONFIGURE_ARGS += \
+ --enable-filter-aaaa
+endif
+
CONFIGURE_VARS += \
BUILD_CC="$(TARGET_CC)" \
-
-; <<>> DiG 9.2.3 <<>> ns . @a.root-servers.net.
-;; global options: printcmd
-;; Got answer:
-;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18944
-;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13
-
-;; QUESTION SECTION:
-;. IN NS
-
-;; ANSWER SECTION:
-. 518400 IN NS A.ROOT-SERVERS.NET.
-. 518400 IN NS B.ROOT-SERVERS.NET.
-. 518400 IN NS C.ROOT-SERVERS.NET.
-. 518400 IN NS D.ROOT-SERVERS.NET.
-. 518400 IN NS E.ROOT-SERVERS.NET.
-. 518400 IN NS F.ROOT-SERVERS.NET.
-. 518400 IN NS G.ROOT-SERVERS.NET.
-. 518400 IN NS H.ROOT-SERVERS.NET.
-. 518400 IN NS I.ROOT-SERVERS.NET.
-. 518400 IN NS J.ROOT-SERVERS.NET.
-. 518400 IN NS K.ROOT-SERVERS.NET.
-. 518400 IN NS L.ROOT-SERVERS.NET.
-. 518400 IN NS M.ROOT-SERVERS.NET.
-
-;; ADDITIONAL SECTION:
-A.ROOT-SERVERS.NET. 3600000 IN A 198.41.0.4
-B.ROOT-SERVERS.NET. 3600000 IN A 192.228.79.201
-C.ROOT-SERVERS.NET. 3600000 IN A 192.33.4.12
-D.ROOT-SERVERS.NET. 3600000 IN A 128.8.10.90
-E.ROOT-SERVERS.NET. 3600000 IN A 192.203.230.10
-F.ROOT-SERVERS.NET. 3600000 IN A 192.5.5.241
-G.ROOT-SERVERS.NET. 3600000 IN A 192.112.36.4
-H.ROOT-SERVERS.NET. 3600000 IN A 128.63.2.53
-I.ROOT-SERVERS.NET. 3600000 IN A 192.36.148.17
-J.ROOT-SERVERS.NET. 3600000 IN A 192.58.128.30
-K.ROOT-SERVERS.NET. 3600000 IN A 193.0.14.129
-L.ROOT-SERVERS.NET. 3600000 IN A 199.7.83.42
-M.ROOT-SERVERS.NET. 3600000 IN A 202.12.27.33
-
-;; Query time: 81 msec
-;; SERVER: 198.41.0.4#53(a.root-servers.net.)
-;; WHEN: Sun Feb 1 11:27:14 2004
-;; MSG SIZE rcvd: 436
-
+; This file holds the information on root name servers needed to
+; initialize cache of Internet domain name servers
+; (e.g. reference this file in the "cache . <file>"
+; configuration file of BIND domain name servers).
+;
+; This file is made available by InterNIC
+; under anonymous FTP as
+; file /domain/named.cache
+; on server FTP.INTERNIC.NET
+; -OR- RS.INTERNIC.NET
+;
+; last update: February 17, 2016
+; related version of root zone: 2016021701
+;
+; formerly NS.INTERNIC.NET
+;
+. 3600000 NS A.ROOT-SERVERS.NET.
+A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
+A.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:ba3e::2:30
+;
+; FORMERLY NS1.ISI.EDU
+;
+. 3600000 NS B.ROOT-SERVERS.NET.
+B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201
+B.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:84::b
+;
+; FORMERLY C.PSI.NET
+;
+. 3600000 NS C.ROOT-SERVERS.NET.
+C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
+C.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2::c
+;
+; FORMERLY TERP.UMD.EDU
+;
+. 3600000 NS D.ROOT-SERVERS.NET.
+D.ROOT-SERVERS.NET. 3600000 A 199.7.91.13
+D.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2d::d
+;
+; FORMERLY NS.NASA.GOV
+;
+. 3600000 NS E.ROOT-SERVERS.NET.
+E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
+;
+; FORMERLY NS.ISC.ORG
+;
+. 3600000 NS F.ROOT-SERVERS.NET.
+F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
+F.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2f::f
+;
+; FORMERLY NS.NIC.DDN.MIL
+;
+. 3600000 NS G.ROOT-SERVERS.NET.
+G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
+;
+; FORMERLY AOS.ARL.ARMY.MIL
+;
+. 3600000 NS H.ROOT-SERVERS.NET.
+H.ROOT-SERVERS.NET. 3600000 A 198.97.190.53
+H.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:1::53
+;
+; FORMERLY NIC.NORDU.NET
+;
+. 3600000 NS I.ROOT-SERVERS.NET.
+I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
+I.ROOT-SERVERS.NET. 3600000 AAAA 2001:7fe::53
+;
+; OPERATED BY VERISIGN, INC.
+;
+. 3600000 NS J.ROOT-SERVERS.NET.
+J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30
+J.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:c27::2:30
+;
+; OPERATED BY RIPE NCC
+;
+. 3600000 NS K.ROOT-SERVERS.NET.
+K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129
+K.ROOT-SERVERS.NET. 3600000 AAAA 2001:7fd::1
+;
+; OPERATED BY ICANN
+;
+. 3600000 NS L.ROOT-SERVERS.NET.
+L.ROOT-SERVERS.NET. 3600000 A 199.7.83.42
+L.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:3::42
+;
+; OPERATED BY WIDE
+;
+. 3600000 NS M.ROOT-SERVERS.NET.
+M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
+M.ROOT-SERVERS.NET. 3600000 AAAA 2001:dc3::35
+; End of file
logdir=/var/log/named/
cachedir=/var/cache/bind
libdir=/var/lib/bind
-config_file=/etc/bind/named.conf
fix_perms() {
for dir in $libdir $logdir $cachedir; do
include $(TOPDIR)/rules.mk
PKG_NAME:=chrony
-PKG_VERSION:=2.2
-PKG_RELEASE:=2
+PKG_VERSION:=2.3
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://download.tuxfamily.org/chrony/
-PKG_MD5SUM:=17bc77d3d2ce942675f9600b60452717
+PKG_MD5SUM:=db6d46afea66f75dcc362f44623c1af4
PKG_MAINTAINER:=Miroslav Lichvar <mlichvar0@gmail.com>
PKG_LICENSE:=GPL-2.0
--- /dev/null
+#
+# Copyright (C) 2007-2012 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=cifs-utils
+PKG_VERSION:=6.4
+PKG_RELEASE:=1
+
+PKG_SOURCE_URL:=http://ftp.samba.org/pub/linux-cifs/cifs-utils
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_MD5SUM:=b7d75b67fd3987952896d27256c7293d
+
+PKG_MAINTAINER:=Florian Fainelli <florian@openwrt.org>
+PKG_LICENSE:=GPL-3.0
+PKG_LICENSE_FILES:=COPYING
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/cifsmount
+ SECTION:=net
+ CATEGORY:=Network
+ TITLE:=CIFS mount utilities
+ URL:=http://wiki.samba.org/index.php/LinuxCIFS_utils
+endef
+
+TARGET_CFLAGS += -Wno-error
+
+CONFIGURE_ARGS += \
+ --exec-prefix=/usr \
+ --prefix=/ \
+ --with-libcap-ng=no \
+ --with-libcap=no
+
+define Package/cifsmount/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/mount.cifs $(1)/usr/sbin/
+endef
+
+$(eval $(call BuildPackage,cifsmount))
--- /dev/null
+From 6603cef0f06c450196a1bca06bb143d8fcda5651 Mon Sep 17 00:00:00 2001
+From: Felix Janda <felix.janda@posteo.de>
+Date: Fri, 5 Dec 2014 23:19:29 +0100
+Subject: [PATCH 1/1] mtab.c: include <paths.h> for _PATH_MOUNTED
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Backported from: 6603cef0f06c450196a1bca06bb143d8fcda5651
+
+Signed-off-by: Felix Janda <felix.janda@posteo.de>
+Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
+---
+ mtab.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/mtab.c b/mtab.c
+index 7b365b3..a662a3c 100644
+--- a/mtab.c
++++ b/mtab.c
+@@ -38,6 +38,7 @@
+ #include <mntent.h>
+ #include <stdlib.h>
+ #include <signal.h>
++#include <paths.h>
+ #include "mount.h"
+ #include "config.h"
+
+--
+2.5.0
# name of TUN device name. required.
option tundev 'tun0'
+ # name of network interface
+ option network ''
+
# Include this flag if process is to run in the foreground
#option fg
include $(TOPDIR)/rules.mk
PKG_NAME:=davfs2
-PKG_VERSION:=1.5.2
-PKG_RELEASE:=3
+PKG_VERSION:=1.5.4
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://download.savannah.gnu.org/releases/davfs2/
-PKG_MD5SUM:=376bc9346454135cba78afacbcb23f86
+PKG_MD5SUM:=c9f0b557275b7ec88fec751bf22f30cf
PKG_FIXUP:=gettext-version autoreconf
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -32,8 +32,8 @@ mount_davfs_SOURCES = cache.c dav_coda.c
- kernel_interface.h mount_davfs.h webdav.h
- umount_davfs_SOURCES = umount_davfs.c defaults.h
-
--AM_CFLAGS = -Wall -Werror=format-security \
-- -fstack-protector --param=ssp-buffer-size=4
-+AM_CFLAGS = -Wall -Werror=format-security
-+# -fstack-protector --param=ssp-buffer-size=4 -- removed ssp not supported in openwrt
- DEFS = -DPROGRAM_NAME=\"mount.davfs\" \
- -DDAV_SYS_CONF_DIR=\"$(pkgsysconfdir)\" \
- -DDAV_LOCALSTATE_DIR=\"$(dav_localstatedir)\" \
--- a/src/cache.c
+++ b/src/cache.c
@@ -58,7 +58,7 @@
#
-# Copyright (C) 2008-2015 OpenWrt.org
+# Copyright (C) 2008-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
#
PKG_NAME:=ddns-scripts
# Version == major.minor.patch
# increase on new functionality (minor) or patches (patch)
-PKG_VERSION:=2.5.0
+PKG_VERSION:=2.6.4
# Release == build
# increase on changes of services files or tld_names.dat
-PKG_RELEASE:=1
+PKG_RELEASE:=3
PKG_LICENSE:=GPL-2.0
PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com>
- Proxy server support
- log file support
- support to run once
- .
Version: $(PKG_VERSION)-$(PKG_RELEASE)
Info : http://wiki.openwrt.org/doc/howto/ddns.client
- .
$(PKG_MAINTAINER)
endef
##### **********************************
define Package/$(PKG_NAME)_cloudflare
$(call Package/$(PKG_NAME)/Default)
- TITLE:=DDNS extension for CloudFlare
+ TITLE:=DDNS extension for CloudFlare.com
DEPENDS:=$(PKG_NAME)
endef
define Package/$(PKG_NAME)_cloudflare/description
- Dynamic DNS Client scripts extension for CloudFlare
+ Dynamic DNS Client scripts extension for CloudFlare.com
endef
##### **********************************
endef
define Package/$(PKG_NAME)_nsupdate/config
help
- The script directly updates a PowerDNS (or maybe bind server) via nsupdate
- from bind-client package. It requires
+ The script directly updates a PowerDNS (or maybe bind server) via nsupdate
+ from bind-client package. It requires
"option dns_server" to be set to the server to be used by nsupdate.
- "option username" should be set to the key name and
+ "option username" should be set to the key name and
"option password" to the base64 encoded shared secret.
endef
##### **********************************
define Package/$(PKG_NAME)_cloudflare/install
$(INSTALL_DIR) $(1)/usr/lib/ddns
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/update_CloudFlare.sh $(1)/usr/lib/ddns
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/update_cloudflare_com.sh $(1)/usr/lib/ddns
$(INSTALL_DATA) $(PKG_BUILD_DIR)/files/tld_names.dat.gz $(1)/usr/lib/ddns
endef
define Package/$(PKG_NAME)_cloudflare/postinst
#!/bin/sh
- echo -e '"CloudFlare"\t"update_CloudFlare.sh"' >> $${IPKG_INSTROOT}/usr/lib/ddns/services
- echo -e '"CloudFlare"\t"update_CloudFlare.sh"' >> $${IPKG_INSTROOT}/usr/lib/ddns/services_ipv6
+ echo -e '"cloudflare.com"\t"update_cloudflare_com.sh"' >> $${IPKG_INSTROOT}/usr/lib/ddns/services
+ echo -e '"cloudflare.com"\t"update_cloudflare_com.sh"' >> $${IPKG_INSTROOT}/usr/lib/ddns/services_ipv6
+ /bin/sed -i '/service_name/s/CloudFlare/cloudflare\.com/g' $${IPKG_INSTROOT}/etc/config/ddns
endef
define Package/$(PKG_NAME)_cloudflare/prerm
#!/bin/sh
- /bin/sed -i '/update_CloudFlare\.sh/ d' $${IPKG_INSTROOT}/usr/lib/ddns/services
- /bin/sed -i '/update_CloudFlare\.sh/ d' $${IPKG_INSTROOT}/usr/lib/ddns/services_ipv6
+ /bin/sed -i '/update_cloudflare_com\.sh/ d' $${IPKG_INSTROOT}/usr/lib/ddns/services
+ /bin/sed -i '/update_cloudflare_com\.sh/ d' $${IPKG_INSTROOT}/usr/lib/ddns/services_ipv6
endef
##### **********************************
define Package/$(PKG_NAME)_no-ip_com/install
$(INSTALL_DIR) $(1)/usr/lib/ddns
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/update_No-IP.com.sh $(1)/usr/lib/ddns
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/update_no-ip_com.sh $(1)/usr/lib/ddns
endef
define Package/$(PKG_NAME)_no-ip_com/postinst
#!/bin/sh
- echo -e '"No-IP.com"\t"update_No-IP.com.sh"' >> $${IPKG_INSTROOT}/usr/lib/ddns/services
- echo -e '"NoIP.com"\t"update_No-IP.com.sh"' >> $${IPKG_INSTROOT}/usr/lib/ddns/services
+ echo -e '"no-ip.com"\t"update_no-ip_com.sh"' >> $${IPKG_INSTROOT}/usr/lib/ddns/services
+ /bin/sed -i '/service_name/s/NoIP\.com/no-ip\.com/g' $${IPKG_INSTROOT}/etc/config/ddns
+ /bin/sed -i '/service_name/s/No-IP\.com/no-ip\.com/g' $${IPKG_INSTROOT}/etc/config/ddns
endef
define Package/$(PKG_NAME)_no-ip_com/prerm
#!/bin/sh
- /bin/sed -i '/update_No-IP\.com\.sh/ d' $${IPKG_INSTROOT}/usr/lib/ddns/services
+ /bin/sed -i '/update_no-ip_com\.sh/ d' $${IPKG_INSTROOT}/usr/lib/ddns/services
endef
##### **********************************
endef
define Package/$(PKG_NAME)_nsupdate/postinst
#!/bin/sh
- echo -e '"Bind-nsupdate"\t"update_nsupdate.sh"' >> $${IPKG_INSTROOT}/usr/lib/ddns/services
- echo -e '"Bind-nsupdate"\t"update_nsupdate.sh"' >> $${IPKG_INSTROOT}/usr/lib/ddns/services_ipv6
+ echo -e '"bind-nsupdate"\t"update_nsupdate.sh"' >> $${IPKG_INSTROOT}/usr/lib/ddns/services
+ echo -e '"bind-nsupdate"\t"update_nsupdate.sh"' >> $${IPKG_INSTROOT}/usr/lib/ddns/services_ipv6
+ /bin/sed -i '/service_name/s/Bind-nsupdate/bind-nsupdate/g' $${IPKG_INSTROOT}/etc/config/ddns
endef
define Package/$(PKG_NAME)_nsupdate/prerm
#!/bin/sh
config service "myddns_ipv4"
- option service_name "dyndns.com"
+ option service_name "dyndns.org"
option lookup_host "yourhost.example.com"
option domain "yourhost.example.com"
option username "your_username"
#!/bin/sh
# /usr/lib/ddns/dynamic_dns_functions.sh
#
-# Original written by Eric Paul Bishop, January 2008
#.Distributed under the terms of the GNU General Public License (GPL) version 2.0
+# Original written by Eric Paul Bishop, January 2008
# (Loosely) based on the script on the one posted by exobyte in the forums here:
# http://forum.openwrt.org/viewtopic.php?id=14040
-#
-# extended and partial rewritten in August 2014 by
-#.Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
-# to support:
-# - IPv6 DDNS services
-# - setting DNS Server to retrieve current IP including TCP transport
-# - Proxy Server to send out updates or retrieving WEB based IP detection
-# - force_interval=0 to run once (useful for cron jobs etc.)
-# - the usage of BIND's host instead of BusyBox's nslookup if installed (DNS via TCP)
-# - extended Verbose Mode and log file support for better error detection
+# extended and partial rewritten
+#.2014-2016 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
#
# function timeout
# copied from http://www.ict.griffith.edu.au/anthony/software/timeout.sh
. /lib/functions/network.sh
# GLOBAL VARIABLES #
-VERSION="2.5.0-1"
+VERSION="2.6.4-1"
SECTION_ID="" # hold config's section name
VERBOSE_MODE=1 # default mode is log to console, but easily changed with parameter
__IPV6=$(echo $__HOST | grep -m 1 -o "$IPV6_REGEX")
# if FQDN given get IP address
[ -z "$__IPV4" -a -z "$__IPV6" ] && {
- if [ -x /usr/bin/host ]; then # use BIND host if installed
+ if [ -n "$(which host)" ]; then # use BIND host if installed
__PROG="BIND host"
- __RUNPROG="/usr/bin/host -t ANY $__HOST >$DATFILE 2>$ERRFILE"
+ __RUNPROG="$(which host) -t ANY $__HOST >$DATFILE 2>$ERRFILE"
else # use BusyBox nslookup
__PROG="BusyBox nslookup"
- __RUNPROG="/usr/bin/nslookup $__HOST >$DATFILE 2>$ERRFILE"
+ __RUNPROG="$(which nslookup) $__HOST >$DATFILE 2>$ERRFILE"
fi
write_log 7 "#> $__RUNPROG"
eval $__RUNPROG
[ $# -ne 1 ] && write_log 12 "Error in 'do_transfer()' - wrong number of parameters"
# lets prefer GNU Wget because it does all for us - IPv4/IPv6/HTTPS/PROXY/force IP version
- grep -i "\+ssl" /usr/bin/wget >/dev/null 2>&1 # check for Wget with SSL support
- if [ $? -eq 0 -a $USE_CURL -eq 0 ]; then # except global option use_curl is set to "1"
- __PROG="/usr/bin/wget -nv -t 1 -O $DATFILE -o $ERRFILE" # non_verbose no_retry outfile errfile
+ if [ -n "$(which wget-ssl)" -a $USE_CURL -eq 0 ]; then # except global option use_curl is set to "1"
+ __PROG="$(which wget-ssl) -nv -t 1 -O $DATFILE -o $ERRFILE" # non_verbose no_retry outfile errfile
# force network/ip to use for communication
if [ -n "$bind_network" ]; then
local __BINDIP
__PROG="$__PROG --ca-certificate=${cacert}"
elif [ -d "$cacert" ]; then
__PROG="$__PROG --ca-directory=${cacert}"
- else # exit here because it makes no sense to start loop
+ elif [ -n "$cacert" ]; then # it's not a file and not a directory but given
write_log 14 "No valid certificate(s) found at '$cacert' for HTTPS communication"
fi
fi
__PROG="GNU Wget" # reuse for error logging
# 2nd choice is cURL IPv4/IPv6/HTTPS
- # libcurl might be compiled without Proxy Support (default in trunk)
- elif [ -x /usr/bin/curl ]; then
- __PROG="/usr/bin/curl -RsS -o $DATFILE --stderr $ERRFILE"
+ # libcurl might be compiled without Proxy or HTTPS Support
+ elif [ -n "$(which curl)" ]; then
+ __PROG="$(which curl) -RsS -o $DATFILE --stderr $ERRFILE"
+ # check HTTPS support
+ /usr/bin/curl -V | grep "Protocols:" | grep -F "https" >/dev/null 2>&1
+ [ $? -eq 1 -a $use_https -eq 1 ] && \
+ write_log 13 "cURL: libcurl compiled without https support"
# force network/interface-device to use for communication
if [ -n "$bind_network" ]; then
local __DEVICE
__PROG="$__PROG --cacert $cacert"
elif [ -d "$cacert" ]; then
__PROG="$__PROG --capath $cacert"
- else # exit here because it makes no sense to start loop
+ elif [ -n "$cacert" ]; then # it's not a file and not a directory but given
write_log 14 "No valid certificate(s) found at '$cacert' for HTTPS communication"
fi
fi
__RUNPROG="$__PROG '$__URL'" # build final command
__PROG="cURL" # reuse for error logging
- # busybox Wget (did not support neither IPv6 nor HTTPS)
- elif [ -x /usr/bin/wget ]; then
- __PROG="/usr/bin/wget -q -O $DATFILE"
+ # uclient-fetch possibly with ssl support if /lib/libustream-ssl.so installed
+ elif [ -n "$(which uclient-fetch)" ]; then
+ __PROG="$(which uclient-fetch) -q -O $DATFILE"
+ # force network/ip not supported
+ [ -n "$__BINDIP" ] && \
+ write_log 14 "uclient-fetch: FORCE binding to specific address not supported"
+ # force ip version to use
+ if [ $force_ipversion -eq 1 ]; then
+ [ $use_ipv6 -eq 0 ] && __PROG="$__PROG -4" || __PROG="$__PROG -6" # force IPv4/IPv6
+ fi
+ # https possibly not supported
+ [ $use_https -eq 1 -a ! -f /lib/libustream-ssl.so ] && \
+ write_log 14 "uclient-fetch: no HTTPS support! Additional install one of ustream-ssl packages"
+ # proxy support
+ [ -z "$proxy" ] && __PROG="$__PROG -Y off" || __PROG="$__PROG -Y on"
+ # https & certificates
+ if [ $use_https -eq 1 ]; then
+ if [ "$cacert" = "IGNORE" ]; then
+ __PROG="$__PROG --no-check-certificate"
+ elif [ -f "$cacert" ]; then
+ __PROG="$__PROG --ca-certificate=$cacert"
+ elif [ -n "$cacert" ]; then # it's not a file; nothing else supported
+ write_log 14 "No valid certificate file '$cacert' for HTTPS communication"
+ fi
+ fi
+ __RUNPROG="$__PROG '$__URL' 2>$ERRFILE" # build final command
+ __PROG="uclient-fetch" # reuse for error logging
+
+ # Busybox Wget or any other wget in search $PATH (did not support neither IPv6 nor HTTPS)
+ elif [ -n "$(which wget)" ]; then
+ __PROG="$(which wget) -q -O $DATFILE"
# force network/ip not supported
[ -n "$__BINDIP" ] && \
write_log 14 "BusyBox Wget: FORCE binding to specific address not supported"
__PROG="Busybox Wget" # reuse for error logging
else
- write_log 13 "Neither 'Wget' nor 'cURL' installed or executable"
+ write_log 13 "Neither 'Wget' nor 'cURL' nor 'uclient-fetch' installed or executable"
fi
while : ; do
)
else
__DATA=$(awk '
- /inet6/ && /: [0-9a-eA-E]/ && !/\/128/ { # Filter IPv6 exclude fxxx and /128 prefix
+ /inet6/ && /: [0-9a-eA-E]/ { # Filter IPv6 exclude fxxx
# inet6 addr: 2001:db8::xxxx:xxxx/32 Scope:Global
FS="/"; # separator "/"
$0=$0; # reread to activate separator
# $2 (optional) if set, do not retry on error
local __CNT=0 # error counter
local __ERR=255
- local __REGEX __PROG __RUNPROG __DATA
+ local __REGEX __PROG __RUNPROG __DATA __IP
+ local __MUSL=$(nslookup localhost 2>&1 | grep -qF "(null)"; echo $?) # 0 == busybox compiled with musl "(null)" found
# return codes
# 1 no IP detected
# set correct regular expression
[ $use_ipv6 -eq 0 ] && __REGEX="$IPV4_REGEX" || __REGEX="$IPV6_REGEX"
- if [ -x /usr/bin/host ]; then
- __PROG="/usr/bin/host"
+ if [ -n "$(which host)" ]; then
+ __PROG="$(which host)"
[ $use_ipv6 -eq 0 ] && __PROG="$__PROG -t A" || __PROG="$__PROG -t AAAA"
if [ $force_ipversion -eq 1 ]; then # force IP version
[ $use_ipv6 -eq 0 ] && __PROG="$__PROG -4" || __PROG="$__PROG -6"
__RUNPROG="$__PROG $lookup_host $dns_server >$DATFILE 2>$ERRFILE"
__PROG="BIND host"
- elif [ -x /usr/bin/nslookup ]; then # last use BusyBox nslookup
+ elif [ -n "$(which hostip)" ]; then # hostip package installed
+ __PROG="$(which hostip)"
+ [ $force_dnstcp -ne 0 ] && \
+ write_log 14 "hostip - no support for 'DNS over TCP'"
+
+ # is IP given as dns_server ?
+ __IP=$(echo $dns_server | grep -m 1 -o "$IPV4_REGEX")
+ [ -z "$__IP" ] && __IP=$(echo $dns_server | grep -m 1 -o "$IPV6_REGEX")
+
+ # we got NO ip for dns_server, so build command
+ [ -z "$__IP" -a -n "$dns_server" ] && {
+ __IP="\`/usr/bin/hostip"
+ [ $use_ipv6 -eq 1 -a $force_ipversion -eq 1 ] && __IP="$__IP -6"
+ __IP="$__IP $dns_server | grep -m 1 -o"
+ [ $use_ipv6 -eq 1 -a $force_ipversion -eq 1 ] \
+ && __IP="$__IP '$IPV6_REGEX'" \
+ || __IP="$__IP '$IPV4_REGEX'"
+ __IP="$__IP \`"
+ }
+
+ [ $use_ipv6 -eq 1 ] && __PROG="$__PROG -6"
+ [ -n "$dns_server" ] && __PROG="$__PROG -r $__IP"
+ __RUNPROG="$__PROG $lookup_host >$DATFILE 2>$ERRFILE"
+ __PROG="hostip"
+ elif [ -n "$(which nslookup)" ]; then # last use BusyBox nslookup
[ $force_ipversion -ne 0 -o $force_dnstcp -ne 0 ] && \
write_log 14 "Busybox nslookup - no support to 'force IP Version' or 'DNS over TCP'"
+ [ $__MUSL -eq 0 -a -n "$dns_server" ] && \
+ write_log 14 "Busybox compiled with musl - nslookup - no support to set/use DNS Server"
- __RUNPROG="/usr/bin/nslookup $lookup_host $dns_server >$DATFILE 2>$ERRFILE"
+ __RUNPROG="$(which nslookup) $lookup_host $dns_server >$DATFILE 2>$ERRFILE"
__PROG="BusyBox nslookup"
else # there must be an error
write_log 12 "Error in 'get_registered_ip()' - no supported Name Server lookup software accessible"
else
if [ "$__PROG" = "BIND host" ]; then
__DATA=$(cat $DATFILE | awk -F "address " '/has/ {print $2; exit}' )
+ elif [ "$__PROG" = "hostip" ]; then
+ __DATA=$(cat $DATFILE | grep -m 1 -o "$__REGEX")
else
__DATA=$(cat $DATFILE | sed -ne "/^Name:/,\$ { s/^Address[0-9 ]\{0,\}: \($__REGEX\).*$/\\1/p }" )
fi
# the leftover parameters are the HOST/SUBDOMAIN
while [ -n "$1" ]; do
- _HOST="$1 $HOST" # remember we need to invert
+ _HOST="$1 $_HOST" # remember we need to invert
shift
done
_HOST=$(echo $_HOST | tr " " ".") # insert DOT
eval "$4=''" # clear HOST/SUBDOMAIN
return 1
}
+
+expand_ipv6() {
+ # Original written for bash by
+ # Author: Florian Streibelt <florian@f-streibelt.de>
+ # Date: 08.04.2012
+ # License: Public Domain, but please be fair and
+ # attribute the original author(s) and provide
+ # a link to the original source for corrections:
+ #. https://github.com/mutax/IPv6-Address-checks
+
+ # $1 IPv6 t0 expand
+ # $2 name of variable to store expanded IPv6
+ [ $# -ne 2 ] && write_log 12 "Error calling 'expand_ipv6()' - wrong number of parameters"
+
+ INPUT="$(echo "$1" | tr 'A-F' 'a-f')"
+ [ "$INPUT" = "::" ] && INPUT="::0" # special case ::
+
+ O=""
+
+ while [ "$O" != "$INPUT" ]; do
+ O="$INPUT"
+
+ # fill all words with zeroes
+ INPUT=$( echo "$INPUT" | sed -e 's|:\([0-9a-f]\{3\}\):|:0\1:|g' \
+ -e 's|:\([0-9a-f]\{3\}\)$|:0\1|g' \
+ -e 's|^\([0-9a-f]\{3\}\):|0\1:|g' \
+ -e 's|:\([0-9a-f]\{2\}\):|:00\1:|g' \
+ -e 's|:\([0-9a-f]\{2\}\)$|:00\1|g' \
+ -e 's|^\([0-9a-f]\{2\}\):|00\1:|g' \
+ -e 's|:\([0-9a-f]\):|:000\1:|g' \
+ -e 's|:\([0-9a-f]\)$|:000\1|g' \
+ -e 's|^\([0-9a-f]\):|000\1:|g' )
+
+ done
+
+ # now expand the ::
+ ZEROES=""
+
+ echo "$INPUT" | grep -qs "::"
+ if [ "$?" -eq 0 ]; then
+ GRPS="$( echo "$INPUT" | sed 's|[0-9a-f]||g' | wc -m )"
+ GRPS=$(( GRPS-1 )) # remove carriage return
+ MISSING=$(( 8-GRPS ))
+ while [ $MISSING -gt 0 ]; do
+ ZEROES="$ZEROES:0000"
+ MISSING=$(( MISSING-1 ))
+ done
+
+ # be careful where to place the :
+ INPUT=$( echo "$INPUT" | sed -e 's|\(.\)::\(.\)|\1'$ZEROES':\2|g' \
+ -e 's|\(.\)::$|\1'$ZEROES':0000|g' \
+ -e 's|^::\(.\)|'$ZEROES':0000:\1|g;s|^:||g' )
+ fi
+
+ # an expanded address has 39 chars + CR
+ if [ $(echo $INPUT | wc -m) != 40 ]; then
+ write_log 4 "Error in 'expand_ipv6()' - invalid IPv6 found: '$1' expanded: '$INPUT'"
+ eval "$2='invalid'"
+ return 1
+ fi
+
+ # echo the fully expanded version of the address
+ eval "$2=$INPUT"
+ return 0
+}
# /usr/lib/ddns/luci_dns_helper.sh
#
#.Distributed under the terms of the GNU General Public License (GPL) version 2.0
-#
-# Written in August 2014 by
-#.Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
+#.2014-2016 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
# This script is used by luci-app-ddns
-# - getting registered IP
-# - check if possible to get local IP
-# - verifing given DNS- or Proxy-Server
#
# variables in small chars are read from /etc/config/ddns as parameter given here
# variables in big chars are defined inside these scripts as gloval vars
#!/bin/sh
# /usr/lib/ddns/dynamic_dns_updater.sh
#
-# Original written by Eric Paul Bishop, January 2008
#.Distributed under the terms of the GNU General Public License (GPL) version 2.0
+# Original written by Eric Paul Bishop, January 2008
# (Loosely) based on the script on the one posted by exobyte in the forums here:
# http://forum.openwrt.org/viewtopic.php?id=14040
-#
-# extended and partial rewritten in August 2014 by
-#.Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
-# to support:
-# - IPv6 DDNS services
-# - DNS Server to retrieve registered IP including TCP transport (Ticket 7820)
-# - Proxy Server to send out updates
-# - force_interval=0 to run once (Luci Ticket 538)
-# - the usage of BIND's host command instead of BusyBox's nslookup if installed
-# - extended Verbose Mode and log file support for better error detection
-# - wait for interface to fully come up, before the first update is done
+# extended and partial rewritten
+#.2014-2016 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
#
# variables in small chars are read from /etc/config/ddns
# variables in big chars are defined inside these scripts as global vars
ERR_LAST=$?
# No error or No IP set otherwise retry
[ $ERR_LAST -eq 0 -o $ERR_LAST -eq 127 ] || get_registered_ip REGISTERED_IP
+# on IPv6 we use expanded version to be shure when comparing
+[ $use_ipv6 -eq 1 ] && expand_ipv6 "$REGISTERED_IP" REGISTERED_IP
# loop endlessly, checking ip every check_interval and forcing an updating once every force_interval
write_log 6 "Starting main loop at $(eval $DATE_PROG)"
while : ; do
get_local_ip LOCAL_IP # read local IP
+ [ $use_ipv6 -eq 1 ] && expand_ipv6 "$LOCAL_IP" LOCAL_IP # on IPv6 we use expanded version
# prepare update
# never updated or forced immediate then NEXT_TIME = 0
REGISTERED_IP="" # clear variable
get_registered_ip REGISTERED_IP # get registered/public IP
+ [ $use_ipv6 -eq 1 ] && expand_ipv6 "$REGISTERED_IP" REGISTERED_IP # on IPv6 we use expanded version
# IP's are still different
if [ "$LOCAL_IP" != "$REGISTERED_IP" ]; then
# !!! Use only the script name (without path). Sample:
# !!! "example.com" "update_sample.sh"
#
+# !!! Since ddns-scripts Version 2.5.x additional parameters are supported
+# !!! and a given answer on success is checked (ignored by earlier versions)
+# !!! Additional parameters: [PARAMOPT] and [PARAMENC]; [PARAMENC] is send urlencoded
+#
+# Line syntax: "service" [TAB] "update_url" [TAB] "answer"
+# "service" name used as "option service_name" inside /etc/config/ddns
+# "update_url" update url as given by the provider; custom urls should not saved here
+# "answer" single words inside providers answer string; use "|" to combine "or"
+#
# 44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
"dyndns.org" "http://[USERNAME]:[PASSWORD]@members.dyndns.org/nic/update?hostname=[DOMAIN]&myip=[IP]"
"thatip.com" "http://update.dnsmax.com/update/?username=[USERNAME]&password=[PASSWORD]&resellerid=2&clientname=openwrt&clientversion=8.09&protocolversion=2.0&updatehostname=[DOMAIN]&ip=[IP]"
# Hurricane Electric Dynamic DNS
-"he.net" "http://[DOMAIN]:[PASSWORD]@dyn.dns.he.net/nic/update?hostname=[DOMAIN]&myip=[IP]"
+"he.net" "http://[DOMAIN]:[PASSWORD]@dyn.dns.he.net/nic/update?hostname=[DOMAIN]&myip=[IP]" "good|nochg"
# DNSdynamic.org
"dnsdynamic.org" "http://[USERNAME]:[PASSWORD]@www.dnsdynamic.org/api/?hostname=[DOMAIN]&myip=[IP]"
# OVH
"ovh.com" "http://[USERNAME]:[PASSWORD]@www.ovh.com/nic/update?system=dyndns&hostname=[DOMAIN]&myip=[IP]"
-# dns-o-matic is a free service by opendns.com for updating multiple hosts and
-# dynamic dns services in one api call. To update all your configured services
-# at once, use "all.dnsomatic.com as the hostname.
-"dnsomatic.com" "http://[USERNAME]:[PASSWORD]@updates.dnsomatic.com/nic/update?hostname=[DOMAIN]&myip=[IP]"
+# dns-o-matic is a free service by opendns.com for updating multiple hosts
+"dnsomatic.com" "http://[USERNAME]:[PASSWORD]@updates.dnsomatic.com/nic/update?hostname=[DOMAIN]&myip=[IP]" "good|nochg"
# 3322.org
"3322.org" "http://[USERNAME]:[PASSWORD]@members.3322.org/dyndns/update?system=dyndns&hostname=[DOMAIN]&myip=[IP]"
"ddns.com.br" "http://[DOMAIN]:[PASSWORD]@members.ddns.com.br/nic/update?hostname=[DOMAIN]&myip=[IP]"
# Mythic Beasts (https://www.mythic-beasts.com) Dynamic DNS
-"mythic-beasts.com" "http://dnsapi4.mythic-beasts.com/?domain=[USERNAME]&password=[PASSWORD]&command=REPLACE%20[DOMAIN]%2060%20A%20DYNAMIC_IP"
+"mythic-beasts.com" "http://dnsapi4.mythic-beasts.com/?domain=[USERNAME]&password=[PASSWORD]&command=REPLACE%20[DOMAIN]%2060%20A%20DYNAMIC_IP&origin=."
# Securepoint Dynamic-DNS-Service (http://www.spdns.de)
-"spdns.de" "http://[USERNAME]:[PASSWORD]@update.spdns.de/nic/update?hostname=[DOMAIN]&myip=[IP]" "good|nochg"
+"spdns.de" "http://[USERNAME]:[PASSWORD]@update.spdns.de/nic/update?hostname=[DOMAIN]&myip=[IP]" "good|nochg"
# duiadns.net - free dynamic DNS
"duiadns.net" "http://ipv4.duia.ro/dynamic.duia?host=[DOMAIN]&password=[PASSWORD]&ip4=[IP]"
"loopia.se" "http://[USERNAME]:[PASSWORD]@dns.loopia.se/XDynDNSServer/XDynDNS.php?system=custom&hostname=[DOMAIN]&myip=[IP]"
# SelfHost.de
-"selfhost.de" "http://carol.selfhost.de/update?username=[USERNAME]&password=[PASSWORD]&myip=[IP]&hostname=1" "good|nochg"
+"selfhost.de" "http://carol.selfhost.de/update?username=[USERNAME]&password=[PASSWORD]&myip=[IP]&hostname=1" "good|nochg"
# no-ip.pl nothing to do with no-ip.com (domain registered to www.domeny.tv) (IP autodetected by provider)
"no-ip.pl" "http://[USERNAME]:[PASSWORD]@update.no-ip.pl/?hostname=[DOMAIN]"
"domains.google.com" "http://[USERNAME]:[PASSWORD]@domains.google.com/nic/update?hostname=[DOMAIN]&myip=[IP]"
# Schokokeks Hosting, schokokeks.org
-"schokokeks.org" "http://[USERNAME]:[PASSWORD]@dyndns.schokokeks.org/nic/update?myip=[IP]"
+"schokokeks.org" "http://[USERNAME]:[PASSWORD]@dyndns.schokokeks.org/nic/update?myip=[IP]" "good|nochg"
# STRATO AG
"strato.de" "http://[USERNAME]:[PASSWORD]@dyndns.strato.com/nic/update?hostname=[DOMAIN]&myip=[IP]"
# Variomedia AG
-"variomedia.de" "http://[USERNAME]:[PASSWORD]@dyndns.variomedia.de/nic/update?hostname=[DOMAIN]&myip=[IP]"
+"variomedia.de" "http://[USERNAME]:[PASSWORD]@dyndns.variomedia.de/nic/update?hostname=[DOMAIN]&myip=[IP]" "good|nochg"
+
+# DtDNS
+"dtdns.com" "http://www.dtdns.com/api/autodns.cfm?id=[DOMAIN]&pw=[PASSWORD]&ip=[IP]"
+
+# dy.fi Dynamic DNS for finnish users (IP autodetected by provider)
+"dy.fi" "http://[USERNAME]:[PASSWORD]@www.dy.fi/nic/update?hostname=[DOMAIN]" "good|nochg"
+
+# duckdns.org
+"duckdns.org" "http://www.duckdns.org/update?domains=[USERNAME]&token=[PASSWORD]&ip=[IP]" "OK"
+
+# zzzz.io Free Dynamic DNS
+"zzzz.io" "https://zzzz.io/api/v1/update/[DOMAIN]/?token=[PASSWORD]&ip=[IP]" "Updated|No change"
+
+# dynu.com
+"dynu.com" "http://api.dynu.com/nic/update?hostname=[DOMAIN]&myip=[IP]&username=[USERNAME]&password=[PASSWORD]"
+
+# nubem.com
+"nubem.com" "http://[USERNAME]:[PASSWORD]@nubem.com/nic/update?hostname=[DOMAIN]&myip=[IP]"
+
+# nettica.com
+"nettica.com" "http://www.nettica.com/Domain/Update.aspx?U=[USERNAME]&PC=[PASSWORD]&FQDN=[DOMAIN]&N=[IP]"
+
+# zerigo.com
+"zerigo.com" "http://update.zerigo.com/dynamic?host=[DOMAIN]&ip=[IP]&user=[USERNAME]&password=[PASSWORD]"
+# regfish.de
+"regfish.de" "http://dyndns.regfish.de/?fqdn=[DOMAIN]&forcehost=1&authtype=secure&token=[PASSWORD]&ipv4=[IP]" "success|100|101"
# !!! Use only the script name (without path). Sample:
# !!! "example.com" "update_sample.sh"
#
+# !!! Since ddns-scripts Version 2.5.x additional parameters are supported
+# !!! and a given answer on success is checked (ignored by earlier versions)
+# !!! Additional parameters: [PARAMOPT] and [PARAMENC]; [PARAMENC] is send urlencoded
+#
+# Line syntax: "service" [TAB] "update_url" [TAB] "answer"
+# "service" name used as "option service_name" inside /etc/config/ddns
+# "update_url" update url as given by the provider; custom urls should not saved here
+# "answer" words inside providers answer string; use "|" to combine "or"
+#
# 66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
# IPv6 @ Securepoint Dynamic-DNS-Service
-"spdns.de" "http://[USERNAME]:[PASSWORD]@update.spdns.de/nic/update?hostname=[DOMAIN]&myip=[IP]" "good|nochg"
+"spdns.de" "http://[USERNAME]:[PASSWORD]@update.spdns.de/nic/update?hostname=[DOMAIN]&myip=[IP]" "good|nochg"
# IPv6 @ Hurricane Electric Dynamic DNS
-"he.net" "http://[DOMAIN]:[PASSWORD]@dyn.dns.he.net/nic/update?hostname=[DOMAIN]&myip=[IP]"
+"he.net" "http://[DOMAIN]:[PASSWORD]@dyn.dns.he.net/nic/update?hostname=[DOMAIN]&myip=[IP]" "good|nochg"
# IPv6 @ MyDNS.JP
"mydns.jp" "http://www.mydns.jp/directip.html?MID=[USERNAME]&PWD=[PASSWORD]&IPV6ADDR=[IP]"
"freedns.afraid.org" "http://freedns.afraid.org/dynamic/update.php?[PASSWORD]&address=[IP]"
# IPv6 @ LoopiaDNS
-"loopia.se" "http://[USERNAME]:[PASSWORD]@dns.loopia.se/XDynDNSServer/XDynDNS.php?system=custom&hostname=[DOMAIN]&myip=[IP]"
+"loopia.se" "http://[USERNAME]:[PASSWORD]@dns.loopia.se/XDynDNSServer/XDynDNS.php?system=custom&hostname=[DOMAIN]&myip=[IP]"
# Variomedia AG
-"variomedia.de" "http://[USERNAME]:[PASSWORD]@dyndns.variomedia.de/nic/update?hostname=[DOMAIN]&myip=[IP]"
+"variomedia.de" "http://[USERNAME]:[PASSWORD]@dyndns.variomedia.de/nic/update?hostname=[DOMAIN]&myip=[IP]" "good|nochg"
+
+# IPv6 @ Dyn.com
+"dyndns.org" "http://[USERNAME]:[PASSWORD]@members.dyndns.org/nic/update?hostname=[DOMAIN]&myip=[IP]"
+
+# duckdns.org
+"duckdns.org" "http://www.duckdns.org/update?domains=[DOMAIN]&token=[PASSWORD]&ipv6=[IP]" "OK"
+
+# IPv6 @ zzzz.io Free Dynamic DNS
+"zzzz.io" "https://zzzz.io/api/v1/update/[DOMAIN]/?token=[PASSWORD]&type=aaaa&ip=[IP]" "Updated|No change"
+
+# IPv6 @ zerigo.com
+"zerigo.com" "http://update.zerigo.com/dynamic?host=[DOMAIN]&ip=[IP]&user=[USERNAME]&password=[PASSWORD]"
+
+# IPv6 @ regfish.de
+"regfish.de" "http://dyndns.regfish.de/?fqdn=[DOMAIN]&forcehost=1&authtype=secure&token=[PASSWORD]&ipv6=[IP]" "success|100|101"
+# Mythic Beasts (https://www.mythic-beasts.com) Dynamic DNS
+"mythic-beasts.com" "http://dnsapi6.mythic-beasts.com/?domain=[USERNAME]&password=[PASSWORD]&command=REPLACE%20[DOMAIN]%2060%20AAAA%20DYNAMIC_IP&origin=."
logistics.aero
magazine.aero
maintenance.aero
-marketplace.aero
media.aero
microlight.aero
modelling.aero
skydiving.aero
software.aero
student.aero
-taxi.aero
trader.aero
trading.aero
trainer.aero
// am : http://en.wikipedia.org/wiki/.am
am
-// an : http://www.una.an/an_domreg/default.asp
-an
-com.an
-net.an
-org.an
-edu.an
-
// ao : http://en.wikipedia.org/wiki/.ao
// http://www.dns.ao/REGISTR.DOC
ao
tv.bo
// br : http://registro.br/dominio/categoria.html
-// Submitted by registry <fneves@registro.br> 2014-08-11
+// Submitted by registry <fneves@registro.br>
br
adm.br
adv.br
org.bt
// bv : No registrations at this time.
-// Submitted by registry <jarle@uninett.no> 2006-06-16
+// Submitted by registry <jarle@uninett.no>
bv
// bw : http://en.wikipedia.org/wiki/.bw
net.cm
// cn : http://en.wikipedia.org/wiki/.cn
-// Submitted by registry <tanyaling@cnnic.cn> 2008-06-11
+// Submitted by registry <tanyaling@cnnic.cn>
cn
ac.cn
com.cn
tw.cn
// co : http://en.wikipedia.org/wiki/.co
-// Submitted by registry <tecnico@uniandes.edu.co> 2008-06-11
+// Submitted by registry <tecnico@uniandes.edu.co>
co
arts.co
com.co
art.dz
// ec : http://www.nic.ec/reg/paso1.asp
-// Submitted by registry <vabboud@nic.ec> 2008-07-04
+// Submitted by registry <vabboud@nic.ec>
ec
com.ec
info.ec
ga
// gb : This registry is effectively dormant
-// Submitted by registry <Damien.Shaw@ja.net> 2008-06-12
+// Submitted by registry <Damien.Shaw@ja.net>
gb
// gd : http://en.wikipedia.org/wiki/.gd
gm
// gn : http://psg.com/dns/gn/gn.txt
-// Submitted by registry <randy@psg.com> 2008-06-17
+// Submitted by registry <randy@psg.com>
gn
ac.gn
com.gn
gq
// gr : https://grweb.ics.forth.gr/english/1617-B-2005.html
-// Submitted by registry <segred@ics.forth.gr> 2008-06-09
+// Submitted by registry <segred@ics.forth.gr>
gr
com.gr
edu.gr
gy
co.gy
com.gy
+edu.gy
+gov.gy
net.gy
+org.gy
// hk : https://www.hkdnr.hk
-// Submitted by registry <hk.tech@hkirc.hk> 2008-06-11
+// Submitted by registry <hk.tech@hkirc.hk>
hk
com.hk
edu.hk
org.il
// im : https://www.nic.im/
-// Submitted by registry <info@nic.im> 2013-11-15
+// Submitted by registry <info@nic.im>
im
ac.im
co.im
// in : http://en.wikipedia.org/wiki/.in
// see also: https://registry.in/Policies
-// Please note, that nic.in is not an offical eTLD, but used by most
+// Please note, that nic.in is not an official eTLD, but used by most
// government institutions.
in
co.in
// jp : http://en.wikipedia.org/wiki/.jp
// http://jprs.co.jp/en/jpdomain.html
-// Submitted by registry <info@jprs.jp> 2014-10-30
+// Submitted by registry <info@jprs.jp>
jp
// jp organizational type names
ac.jp
com.kz
// la : http://en.wikipedia.org/wiki/.la
-// Submitted by registry <gavin.brown@nic.la> 2008-06-10
+// Submitted by registry <gavin.brown@nic.la>
la
int.la
net.la
org.la
// lb : http://en.wikipedia.org/wiki/.lb
-// Submitted by registry <randy@psg.com> 2008-06-17
+// Submitted by registry <randy@psg.com>
lb
com.lb
edu.lb
ac.lk
// lr : http://psg.com/dns/lr/lr.txt
-// Submitted by registry <randy@psg.com> 2008-06-17
+// Submitted by registry <randy@psg.com>
lr
com.lr
edu.lr
org.ms
// mt : https://www.nic.org.mt/go/policy
-// Submitted by registry <help@nic.org.mt> 2013-11-19
+// Submitted by registry <help@nic.org.mt>
mt
com.mt
edu.mt
org.mw
// mx : http://www.nic.mx/
-// Submitted by registry <farias@nic.mx> 2008-06-19
+// Submitted by registry <farias@nic.mx>
mx
com.mx
org.mx
other.nf
store.nf
-// ng : http://psg.com/dns/ng/
+// ng : http://www.nira.org.ng/index.php/join-us/register-ng-domain/189-nira-slds
ng
com.ng
edu.ng
+gov.ng
+i.ng
+mil.ng
+mobi.ng
name.ng
net.ng
org.ng
sch.ng
-gov.ng
-mil.ng
-mobi.ng
-// ni : http://www.nic.ni/dominios.htm
-*.ni
+// ni : http://www.nic.ni/
+com.ni
+gob.ni
+edu.ni
+org.ni
+nom.ni
+net.ni
+mil.ni
+co.ni
+biz.ni
+web.ni
+int.ni
+ac.ni
+in.ni
+info.ni
// nl : http://en.wikipedia.org/wiki/.nl
// https://www.sidn.nl/
*.np
// nr : http://cenpac.net.nr/dns/index.html
-// Confirmed by registry <technician@cenpac.net.nr> 2008-06-17
+// Submitted by registry <technician@cenpac.net.nr>
nr
biz.nr
info.nr
nu
// nz : http://en.wikipedia.org/wiki/.nz
-// Confirmed by registry <jay@nzrs.net.nz> 2014-05-19
+// Submitted by registry <jay@nzrs.net.nz>
nz
ac.nz
co.nz
*.pg
// ph : http://www.domains.ph/FAQ2.asp
-// Submitted by registry <jed@email.com.ph> 2008-06-13
+// Submitted by registry <jed@email.com.ph>
ph
com.ph
net.ph
info.pk
// pl http://www.dns.pl/english/index.html
-// updated by .PL registry on 2015-04-28
+// Submitted by registry
pl
com.pl
net.pl
prof.pr
ac.pr
-// pro : http://www.nic.pro/support_faq.htm
+// pro : http://registry.pro/get-pro
pro
+aaa.pro
aca.pro
+acct.pro
+avocat.pro
bar.pro
cpa.pro
+eng.pro
jur.pro
law.pro
med.pro
-eng.pro
+recht.pro
// ps : http://en.wikipedia.org/wiki/.ps
// http://www.nic.ps/registration/policy.html#reg
belau.pw
// py : http://www.nic.py/pautas.html#seccion_9
-// Confirmed by registry 2012-10-03
+// Submitted by registry
py
com.py
coop.py
// re : http://www.afnic.re/obtenir/chartes/nommage-re/annexe-descriptifs
re
-com.re
asso.re
+com.re
nom.re
// ro : http://www.rotld.ro/
ro
+arts.ro
com.ro
-org.ro
-tm.ro
-nt.ro
-nom.ro
+firm.ro
info.ro
+nom.ro
+nt.ro
+org.ro
rec.ro
-arts.ro
-firm.ro
store.ro
+tm.ro
www.ro
-// rs : http://en.wikipedia.org/wiki/.rs
+// rs : https://www.rnids.rs/en/domains/national-domains
rs
+ac.rs
co.rs
-org.rs
edu.rs
-ac.rs
gov.rs
in.rs
+org.rs
// ru : http://www.cctld.ru/ru/docs/aktiv_8.php
// Industry domains
k-uralsk.ru
kustanai.ru
kuzbass.ru
-magnitka.ru
mytis.ru
nakhodka.ru
nkz.ru
sch.sa
// sb : http://www.sbnic.net.sb/
-// Submitted by registry <lee.humphries@telekom.com.sb> 2008-06-08
+// Submitted by registry <lee.humphries@telekom.com.sb>
sb
com.sb
edu.sb
edu.sc
// sd : http://www.isoc.sd/sudanic.isoc.sd/billing_pricing.htm
-// Submitted by registry <admin@isoc.sd> 2008-06-17
+// Submitted by registry <admin@isoc.sd>
sd
com.sd
net.sd
info.sd
// se : http://en.wikipedia.org/wiki/.se
-// Submitted by registry <patrik.wallstrom@iis.se> 2014-03-18
+// Submitted by registry <patrik.wallstrom@iis.se>
se
a.se
ac.se
si
// sj : No registrations at this time.
-// Submitted by registry <jarle@uninett.no> 2008-06-16
+// Submitted by registry <jarle@uninett.no>
sj
// sk : http://en.wikipedia.org/wiki/.sk
sk
// sl : http://www.nic.sl
-// Submitted by registry <adam@neoip.com> 2008-06-12
+// Submitted by registry <adam@neoip.com>
sl
com.sl
net.sl
red.sv
// sx : http://en.wikipedia.org/wiki/.sx
-// Confirmed by registry <jcvignes@openregistry.com> 2012-05-31
+// Submitted by registry <jcvignes@openregistry.com>
sx
gov.sx
tg
// th : http://en.wikipedia.org/wiki/.th
-// Submitted by registry <krit@thains.co.th> 2008-06-17
+// Submitted by registry <krit@thains.co.th>
th
ac.th
co.th
turen.tn
// to : http://en.wikipedia.org/wiki/.to
-// Submitted by registry <egullich@colo.to> 2008-06-17
+// Submitted by registry <egullich@colo.to>
to
com.to
gov.to
edu.to
mil.to
-// tp : No registrations at this time.
-// Submitted by Ryan Sleevi <ryan.sleevi@gmail.com> 2014-01-03
-tp
-
// subTLDs: https://www.nic.tr/forms/eng/policies.pdf
// and: https://www.nic.tr/forms/politikalar.pdf
-// Submitted by <mehmetgurevin@gmail.com> 2014-07-19
+// Submitted by <mehmetgurevin@gmail.com>
tr
com.tr
info.tr
xn--czrw28b.tw
// tz : http://www.tznic.or.tz/index.php/domains
-// Confirmed by registry <manager@tznic.or.tz> 2013-01-22
+// Submitted by registry <manager@tznic.or.tz>
tz
ac.tz
co.tz
tv.tz
// ua : https://hostmaster.ua/policy/?ua
-// Submitted by registry <dk@cctld.ua> 2012-04-27
+// Submitted by registry <dk@cctld.ua>
ua
// ua 2LD
com.ua
// lib.wv.us Bug 941670 - Removed at request of Larry W Arnold <arnold@wvlc.lib.wv.us>
lib.wy.us
// k12.ma.us contains school districts in Massachusetts. The 4LDs are
-// managed indepedently except for private (PVT), charter (CHTR) and
-// parochial (PAROCH) schools. Those are delegated dorectly to the
+// managed independently except for private (PVT), charter (CHTR) and
+// parochial (PAROCH) schools. Those are delegated directly to the
// 5LD operators. <k12-ma-hostmaster _ at _ rsuc.gweep.net>
pvt.k12.ma.us
chtr.k12.ma.us
va
// vc : http://en.wikipedia.org/wiki/.vc
-// Submitted by registry <kshah@ca.afilias.info> 2008-06-13
+// Submitted by registry <kshah@ca.afilias.info>
vc
com.vc
net.vc
edu.vc
// ve : https://registro.nic.ve/
-// Confirmed by registry 2012-10-04
-// Updated 2014-05-20 - Bug 940478
+// Submitted by registry
ve
arts.ve
co.ve
xn--ygbi2ammx
// xn--90a3ac ("srb", Cyrillic) : RS
-// http://www.rnids.rs/en/the-.срб-domain
+// https://www.rnids.rs/en/domains/national-domains
срб
xn--90a3ac
пр.срб
// za : http://www.zadna.org.za/content/page/domain-information
ac.za
-agrica.za
+agric.za
alt.za
co.za
edu.za
*.zw
-// List of new gTLDs imported from https://newgtlds.icann.org/newgtlds.csv on 2015-10-11T22:21:58Z
+// List of new gTLDs imported from https://newgtlds.icann.org/newgtlds.csv on 2016-01-04T22:39:54Z
// aaa : 2015-02-26 American Automobile Association, Inc.
aaa
// aquarelle : 2014-07-24 Aquarelle.com
aquarelle
+// arab : 2015-11-12 League of Arab States
+arab
+
// aramco : 2014-11-20 Aramco Services Company
aramco
// bargains : 2013-11-14 Half Hallow, LLC
bargains
+// baseball : 2015-10-29 MLB Advanced Media DH, LLC
+baseball
+
// basketball : 2015-08-20 Fédération Internationale de Basketball (FIBA)
basketball
// beats : 2015-05-14 Beats Electronics, LLC
beats
+// beauty : 2015-12-03 L'Oréal
+beauty
+
// beer : 2014-01-09 Top Level Domain Holdings Limited
beer
// bostik : 2015-05-28 Bostik SA
bostik
+// boston : 2015-12-10 Boston Globe Media Partners, LLC
+boston
+
// bot : 2014-12-18 Amazon EU S.à r.l.
bot
// boutique : 2013-11-14 Over Galley, LLC
boutique
+// box : 2015-11-12 NS1 Limited
+box
+
// bradesco : 2014-12-18 Banco Bradesco S.A.
bradesco
// catering : 2013-12-05 New Falls. LLC
catering
+// catholic : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)
+catholic
+
// cba : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA
cba
// crs : 2014-04-03 Federated Co-operatives Limited
crs
+// cruise : 2015-12-10 Viking River Cruises (Bermuda) Ltd.
+cruise
+
// cruises : 2013-12-05 Spring Way, LLC
cruises
// dish : 2015-07-30 Dish DBS Corporation
dish
+// diy : 2015-11-05 Lifestyle Domain Holdings, Inc.
+diy
+
// dnp : 2013-12-13 Dai Nippon Printing Co., Ltd.
dnp
// fox : 2015-09-11 FOX Registry, LLC
fox
+// free : 2015-12-10 Amazon EU S.à r.l.
+free
+
// fresenius : 2015-07-30 Fresenius Immobilien-Verwaltungs-GmbH
fresenius
// guru : 2013-08-27 Pioneer Cypress, LLC
guru
+// hair : 2015-12-03 L'Oréal
+hair
+
// hamburg : 2014-02-20 Hamburg Top-Level-Domain GmbH
hamburg
// hitachi : 2014-10-31 Hitachi, Ltd.
hitachi
-// hiv : 2014-03-13 dotHIV gemeinnuetziger e.V.
+// hiv : 2014-03-13
hiv
// hkt : 2015-05-14 PCCW-HKT DataCom Services Limited
// nissan : 2014-03-27 NISSAN MOTOR CO., LTD.
nissan
+// nissay : 2015-10-29 Nippon Life Insurance Company
+nissay
+
// nokia : 2015-01-08 Nokia Corporation
nokia
// progressive : 2015-07-23 Progressive Casualty Insurance Company
progressive
-// promo : 2014-12-18 Play.PROMO Oy
+// promo : 2014-12-18
promo
// properties : 2013-12-05 Big Pass, LLC
// pub : 2013-12-12 United TLD Holdco Ltd.
pub
+// pwc : 2015-10-29 PricewaterhouseCoopers LLP
+pwc
+
// qpon : 2013-11-14 dotCOOL, Inc.
qpon
// rip : 2014-07-10 United TLD Holdco Ltd.
rip
+// rmit : 2015-11-19 Royal Melbourne Institute of Technology
+rmit
+
// rocher : 2014-12-18 Ferrero Trading Lux S.A.
rocher
// uconnect : 2015-07-30 FCA US LLC.
uconnect
+// unicom : 2015-10-15 China United Network Communications Corporation Limited
+unicom
+
// university : 2014-03-06 Little Station, LLC
university
// volkswagen : 2015-05-14 Volkswagen Group of America Inc.
volkswagen
+// volvo : 2015-11-12 Volvo Holding Sverige Aktiebolag
+volvo
+
// vote : 2013-11-21 Monolith Registry LLC
vote
москва
xn--80adxhks
+// xn--80aqecdr1a : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)
+католик
+xn--80aqecdr1a
+
// xn--80asehdb : 2013-07-14 CORE Association
онлайн
xn--80asehdb
ابوظبي
xn--mgbca7dzdo
+// xn--mgbi4ecexp : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)
+كاثوليك
+xn--mgbi4ecexp
+
// xn--mgbt3dhd : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
همراه
xn--mgbt3dhd
بيتك
xn--ngbe9e0a
+// xn--ngbrx : 2015-11-12 League of Arab States
+عرب
+xn--ngbrx
+
// xn--nqv7f : 2013-11-14 Public Interest Registry
机构
xn--nqv7f
コム
xn--tckwe
+// xn--tiq49xqyj : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)
+天主教
+xn--tiq49xqyj
+
// xn--unup4y : 2013-07-14 Spring Fields, LLC
游戏
xn--unup4y
// (Note: these are in alphabetical order by company name)
// Amazon CloudFront : https://aws.amazon.com/cloudfront/
-// Submitted by Donavan Miller <donavanm@amazon.com> 2013-03-22
+// Submitted by Donavan Miller <donavanm@amazon.com>
cloudfront.net
// Amazon Elastic Compute Cloud: https://aws.amazon.com/ec2/
-// Submitted by Osman Surkatty <osmans@amazon.com> 2014-12-16
+// Submitted by Luke Wells <lawells@amazon.com>
ap-northeast-1.compute.amazonaws.com
+ap-northeast-2.compute.amazonaws.com
ap-southeast-1.compute.amazonaws.com
ap-southeast-2.compute.amazonaws.com
cn-north-1.compute.amazonaws.cn
+compute-1.amazonaws.com
compute.amazonaws.cn
compute.amazonaws.com
-compute-1.amazonaws.com
-eu-west-1.compute.amazonaws.com
eu-central-1.compute.amazonaws.com
+eu-west-1.compute.amazonaws.com
sa-east-1.compute.amazonaws.com
us-east-1.amazonaws.com
us-gov-west-1.compute.amazonaws.com
z-2.compute-1.amazonaws.com
// Amazon Elastic Beanstalk : https://aws.amazon.com/elasticbeanstalk/
-// Submitted by Adam Stein <astein@amazon.com> 2013-04-02
+// Submitted by Adam Stein <astein@amazon.com>
elasticbeanstalk.com
// Amazon Elastic Load Balancing : https://aws.amazon.com/elasticloadbalancing/
-// Submitted by Scott Vidmar <svidmar@amazon.com> 2013-03-27
+// Submitted by Scott Vidmar <svidmar@amazon.com>
elb.amazonaws.com
// Amazon S3 : https://aws.amazon.com/s3/
-// Submitted by Eric Kinolik <kilo@amazon.com> 2015-04-08
+// Submitted by Luke Wells <lawells@amazon.com>
s3.amazonaws.com
s3-ap-northeast-1.amazonaws.com
+s3-ap-northeast-2.amazonaws.com
s3-ap-southeast-1.amazonaws.com
s3-ap-southeast-2.amazonaws.com
+s3-eu-central-1.amazonaws.com
+s3-eu-west-1.amazonaws.com
s3-external-1.amazonaws.com
s3-external-2.amazonaws.com
s3-fips-us-gov-west-1.amazonaws.com
-s3-eu-central-1.amazonaws.com
-s3-eu-west-1.amazonaws.com
s3-sa-east-1.amazonaws.com
s3-us-gov-west-1.amazonaws.com
s3-us-west-1.amazonaws.com
s3-us-west-2.amazonaws.com
+s3.ap-northeast-2.amazonaws.com
s3.cn-north-1.amazonaws.com.cn
s3.eu-central-1.amazonaws.com
// BetaInABox
-// Submitted by adrian@betainabox.com 2012-09-13
+// Submitted by Adrian <adrian@betainabox.com>
betainabox.com
// CentralNic : http://www.centralnic.com/names/domains
-// Submitted by registry <gavin.brown@centralnic.com> 2012-09-27
+// Submitted by registry <gavin.brown@centralnic.com>
ae.org
ar.com
br.com
za.com
// Africa.com Web Solutions Ltd : https://registry.africa.com
-// Submitted by Gavin Brown <gavin.brown@centralnic.com> 2014-02-04
+// Submitted by Gavin Brown <gavin.brown@centralnic.com>
africa.com
+// Citrix : https://citrix.com
+// Submitted by Alex Stoddard <alex.stoddard@citrix.com>
+xenapponazure.com
+
// iDOT Services Limited : http://www.domain.gr.com
-// Submitted by Gavin Brown <gavin.brown@centralnic.com> 2014-02-04
+// Submitted by Gavin Brown <gavin.brown@centralnic.com>
gr.com
// Radix FZC : http://domains.in.net
-// Submitted by Gavin Brown <gavin.brown@centralnic.com> 2014-02-04
+// Submitted by Gavin Brown <gavin.brown@centralnic.com>
in.net
// US REGISTRY LLC : http://us.org
-// Submitted by Gavin Brown <gavin.brown@centralnic.com> 2014-02-04
+// Submitted by Gavin Brown <gavin.brown@centralnic.com>
us.org
// co.com Registry, LLC : https://registry.co.com
-// Submitted by Gavin Brown <gavin.brown@centralnic.com> 2014-02-04
+// Submitted by Gavin Brown <gavin.brown@centralnic.com>
co.com
// c.la : http://www.c.la/
c.la
// cloudControl : https://www.cloudcontrol.com/
-// Submitted by Tobias Wilken <tw@cloudcontrol.com> 2013-07-23
+// Submitted by Tobias Wilken <tw@cloudcontrol.com>
cloudcontrolled.com
cloudcontrolapp.com
// co.ca : http://registry.co.ca/
co.ca
+// i-registry s.r.o. : http://www.i-registry.cz/
+// Submitted by Martin Semrad <semrad@i-registry.cz>
+co.cz
+
// CDN77.com : http://www.cdn77.com
-// Submitted by Jan Krpes <jan.krpes@cdn77.com> 2015-07-13
+// Submitted by Jan Krpes <jan.krpes@cdn77.com>
c.cdn77.org
cdn77-ssl.net
r.cdn77.net
co.no
// Commerce Guys, SAS
-// Submitted by Damien Tournoud <damien@commerceguys.com> 2015-01-22
+// Submitted by Damien Tournoud <damien@commerceguys.com>
*.platform.sh
// Cupcake : https://cupcake.io/
-// Submitted by Jonathan Rudenberg <jonathan@cupcake.io> 2013-10-08
+// Submitted by Jonathan Rudenberg <jonathan@cupcake.io>
cupcake.is
// DreamHost : http://www.dreamhost.com/
-// Submitted by Andrew Farmer <andrew.farmer@dreamhost.com> 2012-10-02
+// Submitted by Andrew Farmer <andrew.farmer@dreamhost.com>
dreamhosters.com
+// Drobo : http://www.drobo.com/
+// Submitted by Ricardo Padilha <rpadilha@drobo.com>
+mydrobo.com
+
// DuckDNS : http://www.duckdns.org/
-// Submitted by Richard Harper <richard@duckdns.org> 2015-05-17
+// Submitted by Richard Harper <richard@duckdns.org>
duckdns.org
// DynDNS.com : http://www.dyndns.com/services/dns/dyndns/
writesthisblog.com
// EU.org https://eu.org/
-// Submitted by Pierre Beyssac <hostmaster@eu.org> 2015-04-17
-
+// Submitted by Pierre Beyssac <hostmaster@eu.org>
eu.org
al.eu.org
asso.eu.org
us.eu.org
// Fastly Inc. http://www.fastly.com/
-// Submitted by Vladimir Vuksan <vladimir@fastly.com> 2013-05-31
+// Submitted by Vladimir Vuksan <vladimir@fastly.com>
a.ssl.fastly.net
b.ssl.fastly.net
global.ssl.fastly.net
global.prod.fastly.net
// Firebase, Inc.
-// Submitted by Chris Raynor <chris@firebase.com> 2014-01-21
+// Submitted by Chris Raynor <chris@firebase.com>
firebaseapp.com
// Flynn : https://flynn.io
-// Submitted by Jonathan Rudenberg <jonathan@flynn.io> 2014-07-12
+// Submitted by Jonathan Rudenberg <jonathan@flynn.io>
flynnhub.com
// GDS : https://www.gov.uk/service-manual/operations/operating-servicegovuk-subdomains
-// Submitted by David Illsley <david.illsley@digital.cabinet-office.gov.uk> 2014-08-28
+// Submitted by David Illsley <david.illsley@digital.cabinet-office.gov.uk>
service.gov.uk
// GitHub, Inc.
-// Submitted by Ben Toews <btoews@github.com> 2014-02-06
+// Submitted by Ben Toews <btoews@github.com>
github.io
githubusercontent.com
// GlobeHosting, Inc.
-// Submitted by Zoltan Egresi <egresi@globehosting.com> 2013-07-12
+// Submitted by Zoltan Egresi <egresi@globehosting.com>
ro.com
// Google, Inc.
-// Submitted by Eduardo Vela <evn@google.com> 2014-12-19
+// Submitted by Eduardo Vela <evn@google.com>
appspot.com
blogspot.ae
blogspot.al
blogspot.tw
blogspot.ug
blogspot.vn
+cloudfunctions.net
codespot.com
googleapis.com
googlecode.com
withgoogle.com
withyoutube.com
+// Hashbang : https://hashbang.sh
+hashbang.sh
+
// Heroku : https://www.heroku.com/
-// Submitted by Tom Maher <tmaher@heroku.com> 2013-05-02
+// Submitted by Tom Maher <tmaher@heroku.com>
herokuapp.com
herokussl.com
// iki.fi
-// Submitted by Hannu Aronsson <haa@iki.fi> 2009-11-05
+// Submitted by Hannu Aronsson <haa@iki.fi>
iki.fi
// info.at : http://www.info.at/
co.pl
// Microsoft : http://microsoft.com
-// Submitted by Barry Dorrans <bdorrans@microsoft.com> 2014-01-24
+// Submitted by Barry Dorrans <bdorrans@microsoft.com>
azurewebsites.net
azure-mobile.net
cloudapp.net
// Mozilla Foundation : https://mozilla.org/
-// Submited by glob <glob@mozilla.com> 2015-07-06
+// Submitted by glob <glob@mozilla.com>
bmoattachments.org
// Neustar Inc.
-// Submitted by Trung Tran <Trung.Tran@neustar.biz> 2015-04-23
+// Submitted by Trung Tran <Trung.Tran@neustar.biz>
4u.com
+// ngrok : https://ngrok.com/
+// Submitted by Alan Shreve <alan@ngrok.com>
+ngrok.io
+
// NFSN, Inc. : https://www.NearlyFreeSpeech.NET/
-// Submitted by Jeff Wheelhouse <support@nearlyfreespeech.net> 2014-02-02
+// Submitted by Jeff Wheelhouse <support@nearlyfreespeech.net>
nfshost.com
// NYC.mn : http://www.information.nyc.mn
-// Submitted by Matthew Brown <mattbrown@nyc.mn> 2013-03-11
+// Submitted by Matthew Brown <mattbrown@nyc.mn>
nyc.mn
// One Fold Media : http://www.onefoldmedia.com/
-// Submitted by Eddie Jones <eddie@onefoldmedia.com> 2014-06-10
+// Submitted by Eddie Jones <eddie@onefoldmedia.com>
nid.io
// Opera Software, A.S.A.
-// Submitted by Yngve Pettersen <yngve@opera.com> 2009-11-26
+// Submitted by Yngve Pettersen <yngve@opera.com>
operaunite.com
// OutSystems
-// Submitted by Duarte Santos <domain-admin@outsystemscloud.com> 2014-03-11
+// Submitted by Duarte Santos <domain-admin@outsystemscloud.com>
outsystemscloud.com
+// Pagefront : https://www.pagefronthq.com/
+// Submitted by Jason Kriss <jason@pagefronthq.com>
+pagefrontapp.com
+
// .pl domains (grandfathered)
art.pl
gliwice.pl
zakopane.pl
// Pantheon Systems, Inc. : https://pantheon.io/
-// Submitted by Gary Dylina <gary@pantheon.io> 2015-09-14
+// Submitted by Gary Dylina <gary@pantheon.io>
pantheon.io
gotpantheon.com
+// prgmr.com : https://prgmr.com/
+// Submitted by Sarah Newman <owner@prgmr.com>
+xen.prgmr.com
+
// priv.at : http://www.nic.priv.at/
-// Submitted by registry <lendl@nic.at> 2008-06-09
+// Submitted by registry <lendl@nic.at>
priv.at
// QA2
-// Submitted by Daniel Dent (https://www.danieldent.com/) 2015-07-16
+// Submitted by Daniel Dent (https://www.danieldent.com/)
qa2.com
+// Rackmaze LLC : https://www.rackmaze.com
+// Submitted by Kirill Pertsev <kika@rackmaze.com>
+rackmaze.com
+rackmaze.net
+
// Red Hat, Inc. OpenShift : https://openshift.redhat.com/
-// Submitted by Tim Kramer <tkramer@rhcloud.com> 2012-10-24
+// Submitted by Tim Kramer <tkramer@rhcloud.com>
rhcloud.com
// Sandstorm Development Group, Inc. : https://sandcats.io/
-// Submitted by Asheesh Laroia <asheesh@sandstorm.io> 2015-07-21
+// Submitted by Asheesh Laroia <asheesh@sandstorm.io>
sandcats.io
// Service Online LLC : http://drs.ua/
-// Submitted by Serhii Bulakh <support@drs.ua> 2015-07-30
+// Submitted by Serhii Bulakh <support@drs.ua>
biz.ua
co.ua
pp.ua
// SinaAppEngine : http://sae.sina.com.cn/
-// Submitted by SinaAppEngine <saesupport@sinacloud.com> 2015-02-02
+// Submitted by SinaAppEngine <saesupport@sinacloud.com>
sinaapp.com
vipsinaapp.com
1kapp.com
+// Synology, Inc. : https://www.synology.com/
+// Submitted by Rony Weng <ronyweng@synology.com>
+diskstation.me
+dscloud.biz
+dscloud.me
+dscloud.mobi
+dsmynas.com
+dsmynas.net
+dsmynas.org
+familyds.com
+familyds.net
+familyds.org
+i234.me
+myds.me
+synology.me
+
// TASK geographical domains (www.task.gda.pl/uslugi/dns)
gda.pl
gdansk.pl
sopot.pl
// UDR Limited : http://www.udr.hk.com
-// Submitted by registry <hostmaster@udr.hk.com> 2014-11-07
+// Submitted by registry <hostmaster@udr.hk.com>
hk.com
hk.org
ltd.hk
inc.hk
// Yola : https://www.yola.com/
-// Submitted by Stefano Rivera <stefano@yola.com> 2014-07-09
+// Submitted by Stefano Rivera <stefano@yola.com>
yolasite.com
// ZaNiC : http://www.za.net/
-// Submitted by registry <hostmaster@nic.za.net> 2009-10-03
+// Submitted by registry <hostmaster@nic.za.net>
za.net
za.org
+++ /dev/null
-#
-#.Distributed under the terms of the GNU General Public License (GPL) version 2.0
-#
-# script for sending updates to cloudflare.com
-#.2014-2015 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
-# many thanks to Paul for testing and feedback during development
-#
-# This script is parsed by dynamic_dns_functions.sh inside send_update() function
-#
-# using following options from /etc/config/ddns
-# option username - your cloudflare e-mail
-# option password - cloudflare api key, you can get it from cloudflare.com/my-account/
-# option domain - your full hostname to update, in cloudflare its subdomain.domain
-# i.e. myhost.example.com where myhost is the subdomain and example.com is your domain
-#
-# variable __IP already defined with the ip-address to use for update
-#
-[ $use_https -eq 0 ] && write_log 14 "Cloudflare only support updates via Secure HTTP (HTTPS). Please correct configuration!"
-[ -z "$username" ] && write_log 14 "Service section not configured correctly! Missing 'username'"
-[ -z "$password" ] && write_log 14 "Service section not configured correctly! Missing 'password'"
-
-local __RECID __URL __KEY __KEYS __FOUND __SUBDOM __DOMAIN __TLD
-
-# split given Host/Domain into TLD, registrable domain, and subdomain
-split_FQDN $domain __TLD __DOMAIN __SUBDOM
-[ $? -ne 0 -o -z "$__DOMAIN" ] && \
- write_log 14 "Wrong Host/Domain configuration ($domain). Please correct configuration!"
-
-# put together what we need
-__DOMAIN="$__DOMAIN.$__TLD"
-
-# parse OpenWrt script with
-# functions for parsing and generating json
-. /usr/share/libubox/jshn.sh
-
-# function copied from /usr/share/libubox/jshn.sh
-# from BB14.09 for backward compatibility to AA12.09
-grep -i "json_get_keys" /usr/share/libubox/jshn.sh >/dev/null 2>&1 || json_get_keys() {
- local __dest="$1"
- local _tbl_cur
-
- if [ -n "$2" ]; then
- json_get_var _tbl_cur "$2"
- else
- _json_get_var _tbl_cur JSON_CUR
- fi
- local __var="${JSON_PREFIX}KEYS_${_tbl_cur}"
- eval "export -- \"$__dest=\${$__var}\"; [ -n \"\${$__var+x}\" ]"
-}
-
-# function to "sed" unwanted string parts from DATFILE
-cleanup() {
- # based on the sample output on cloudflare.com homepage we need to do some cleanup
- sed -i 's/^[ \t]*//;s/[ \t]*$//' $DATFILE # remove invisible chars at beginning and end of lines
- sed -i '/^-$/d' $DATFILE # remove lines with "-" (dash)
- sed -i '/^$/d' $DATFILE # remove empty lines
- sed -i "#'##g" $DATFILE # remove "'" (single quote)
-}
-
-# build url according to cloudflare client api at https://www.cloudflare.com/docs/client-api.html
-# to "rec_load_all" to detect rec_id needed for update
-__URL="https://www.cloudflare.com/api_json.html" # https://www.cloudflare.com/api_json.html
-__URL="${__URL}?a=rec_load_all" # -d 'a=rec_load_all'
-__URL="${__URL}&tkn=$password" # -d 'tkn=8afbe6dea02407989af4dd4c97bb6e25'
-__URL="${__URL}&email=$username" # -d 'email=sample@example.com'
-__URL="${__URL}&z=$__DOMAIN" # -d 'z=example.com'
-
-# lets request the data
-do_transfer "$__URL" || return 1
-
-cleanup # cleanup dat file
-json_load "$(cat $DATFILE)" # lets extract data
-__FOUND=0 # found record indicator
-json_get_var __RES "result" # cloudflare result of last request
-json_get_var __MSG "msg" # cloudflare error message
-[ "$__RES" != "success" ] && {
- write_log 4 "'rec_load_all' failed with error: \n$__MSG"
- return 1
-}
-
-json_select "response"
-json_select "recs"
-json_select "objs"
-json_get_keys __KEYS
-for __KEY in $__KEYS; do
- local __ZONE __DISPLAY __NAME __TYPE
- json_select "$__KEY"
-# json_get_var __ZONE "zone_name" # for debugging
-# json_get_var __DISPLAY "display_name" # for debugging
- json_get_var __NAME "name"
- json_get_var __TYPE "type"
- if [ "$__NAME" = "$domain" ]; then
- # we must verify IPv4 and IPv6 because there might be both for the same host
- [ \( $use_ipv6 -eq 0 -a "$__TYPE" = "A" \) -o \( $use_ipv6 -eq 1 -a "$__TYPE" = "AAAA" \) ] && {
- __FOUND=1 # mark found
- break # found leave for loop
- }
- fi
- json_select ..
-done
-[ $__FOUND -eq 0 ] && {
- # we don't need to continue trying to update cloudflare because record to update does not exist
- # user has to setup record first outside ddns-scripts
- write_log 14 "No valid record found at Cloudflare setup. Please create first!"
-}
-json_get_var __RECID "rec_id" # last thing to do get rec_id
-json_cleanup # cleanup
-write_log 7 "rec_id '$__RECID' detected for host/domain '$domain'"
-
-# build url according to cloudflare client api at https://www.cloudflare.com/docs/client-api.html
-# for "rec_edit" to update IP address
-__URL="https://www.cloudflare.com/api_json.html" # https://www.cloudflare.com/api_json.html
-__URL="${__URL}?a=rec_edit" # -d 'a=rec_edit'
-__URL="${__URL}&tkn=$password" # -d 'tkn=8afbe6dea02407989af4dd4c97bb6e25'
-__URL="${__URL}&id=$__RECID" # -d 'id=9001'
-__URL="${__URL}&email=$username" # -d 'email=sample@example.com'
-__URL="${__URL}&z=$__DOMAIN" # -d 'z=example.com'
-
-[ $use_ipv6 -eq 0 ] && __URL="${__URL}&type=A" # -d 'type=A' (IPv4)
-[ $use_ipv6 -eq 1 ] && __URL="${__URL}&type=AAAA" # -d 'type=AAAA' (IPv6)
-
-# handle subdomain or domain record
-[ -n "$__SUBDOM" ] && __URL="${__URL}&name=$__SUBDOM" # -d 'name=sub' (HOST/SUBDOMAIN)
-[ -z "$__SUBDOM" ] && __URL="${__URL}&name=$__DOMAIN" # -d 'name=example.com'(DOMAIN)
-
-__URL="${__URL}&content=$__IP" # -d 'content=1.2.3.4'
-__URL="${__URL}&service_mode=0" # -d 'service_mode=0'
-__URL="${__URL}&ttl=1" # -d 'ttl=1'
-
-# lets do the update
-do_transfer "$__URL" || return 1
-
-cleanup # cleanup tmp file
-json_load "$(cat $DATFILE)" # lets extract data
-json_get_var __RES "result" # cloudflare result of last request
-json_get_var __MSG "msg" # cloudflare error message
-[ "$__RES" != "success" ] && {
- write_log 4 "'rec_edit' failed with error:\n$__MSG"
- return 1
-}
-write_log 7 "Update of rec_id '$__RECID' successful"
-return 0
+++ /dev/null
-#
-#.Distributed under the terms of the GNU General Public License (GPL) version 2.0
-#
-# script for sending updates to no-ip.com / noip.com
-#.2014-2015 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
-#
-# This script is parsed by dynamic_dns_functions.sh inside send_update() function
-#
-# provider did not reactivate records, if no IP change was recognized
-# so we send a dummy (localhost) and a seconds later we send the correct IP addr
-#
-local __DUMMY
-local __UPDURL="http://[USERNAME]:[PASSWORD]@dynupdate.no-ip.com/nic/update?hostname=[DOMAIN]&myip=[IP]"
-# inside url we need username and password
-[ -z "$username" ] && write_log 14 "Service section not configured correctly! Missing 'username'"
-[ -z "$password" ] && write_log 14 "Service section not configured correctly! Missing 'password'"
-
-# set IP version dependend dummy (localhost)
-[ $use_ipv6 -eq 0 ] && __DUMMY="127.0.0.1" || __DUMMY="::1"
-
-# lets do DUMMY transfer
-write_log 7 "sending dummy IP to 'no-ip.com'"
-__URL=$(echo $__UPDURL | sed -e "s#\[USERNAME\]#$URL_USER#g" -e "s#\[PASSWORD\]#$URL_PASS#g" \
- -e "s#\[DOMAIN\]#$domain#g" -e "s#\[IP\]#$__DUMMY#g")
-[ $use_https -ne 0 ] && __URL=$(echo $__URL | sed -e 's#^http:#https:#')
-
-do_transfer "$__URL" || return 1
-
-write_log 7 "'no-ip.com' answered:\n$(cat $DATFILE)"
-# analyse provider answers
-# "good [IP_ADR]" = successful
-# "nochg [IP_ADR]" = no change but OK
-grep -E "good|nochg" $DATFILE >/dev/null 2>&1 || return 1
-
-# lets wait a seconds
-sleep 1
-
-# now send the correct data
-write_log 7 "sending real IP to 'no-ip.com'"
-__URL=$(echo $__UPDURL | sed -e "s#\[USERNAME\]#$URL_USER#g" -e "s#\[PASSWORD\]#$URL_PASS#g" \
- -e "s#\[DOMAIN\]#$domain#g" -e "s#\[IP\]#$__IP#g")
-[ $use_https -ne 0 ] && __URL=$(echo $__URL | sed -e 's#^http:#https:#')
-
-do_transfer "$__URL" || return 1
-
-write_log 7 "'no-ip.com' answered:\n$(cat $DATFILE)"
-# analyse provider answers
-# "good [IP_ADR]" = successful
-# "nochg [IP_ADR]" = no change but OK
-grep -E "good|nochg" $DATFILE >/dev/null 2>&1
-return $? # "0" if "good" or "nochg" found
-
--- /dev/null
+#
+#.Distributed under the terms of the GNU General Public License (GPL) version 2.0
+#
+# script for sending updates to cloudflare.com
+#.2014-2015 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
+# many thanks to Paul for testing and feedback during development
+#
+# This script is parsed by dynamic_dns_functions.sh inside send_update() function
+#
+# using following options from /etc/config/ddns
+# option username - your cloudflare e-mail
+# option password - cloudflare api key, you can get it from cloudflare.com/my-account/
+# option domain - your full hostname to update, in cloudflare its subdomain.domain
+# i.e. myhost.example.com where myhost is the subdomain and example.com is your domain
+#
+# variable __IP already defined with the ip-address to use for update
+#
+[ $use_https -eq 0 ] && write_log 14 "Cloudflare only support updates via Secure HTTP (HTTPS). Please correct configuration!"
+[ -z "$username" ] && write_log 14 "Service section not configured correctly! Missing 'username'"
+[ -z "$password" ] && write_log 14 "Service section not configured correctly! Missing 'password'"
+
+local __RECID __URL __KEY __KEYS __FOUND __SUBDOM __DOMAIN __TLD
+
+# split given Host/Domain into TLD, registrable domain, and subdomain
+split_FQDN $domain __TLD __DOMAIN __SUBDOM
+[ $? -ne 0 -o -z "$__DOMAIN" ] && \
+ write_log 14 "Wrong Host/Domain configuration ($domain). Please correct configuration!"
+
+# put together what we need
+__DOMAIN="$__DOMAIN.$__TLD"
+
+# parse OpenWrt script with
+# functions for parsing and generating json
+. /usr/share/libubox/jshn.sh
+
+# function copied from /usr/share/libubox/jshn.sh
+# from BB14.09 for backward compatibility to AA12.09
+grep -i "json_get_keys" /usr/share/libubox/jshn.sh >/dev/null 2>&1 || json_get_keys() {
+ local __dest="$1"
+ local _tbl_cur
+
+ if [ -n "$2" ]; then
+ json_get_var _tbl_cur "$2"
+ else
+ _json_get_var _tbl_cur JSON_CUR
+ fi
+ local __var="${JSON_PREFIX}KEYS_${_tbl_cur}"
+ eval "export -- \"$__dest=\${$__var}\"; [ -n \"\${$__var+x}\" ]"
+}
+
+# function to "sed" unwanted string parts from DATFILE
+cleanup() {
+ # based on the sample output on cloudflare.com homepage we need to do some cleanup
+ sed -i 's/^[ \t]*//;s/[ \t]*$//' $DATFILE # remove invisible chars at beginning and end of lines
+ sed -i '/^-$/d' $DATFILE # remove lines with "-" (dash)
+ sed -i '/^$/d' $DATFILE # remove empty lines
+ sed -i "#'##g" $DATFILE # remove "'" (single quote)
+}
+
+[ -n "$rec_id" ] && __RECID="$rec_id" || {
+ # build url according to cloudflare client api at https://www.cloudflare.com/docs/client-api.html
+ # to "rec_load_all" to detect rec_id needed for update
+ __URL="https://www.cloudflare.com/api_json.html" # https://www.cloudflare.com/api_json.html
+ __URL="${__URL}?a=rec_load_all" # -d 'a=rec_load_all'
+ __URL="${__URL}&tkn=$password" # -d 'tkn=8afbe6dea02407989af4dd4c97bb6e25'
+ __URL="${__URL}&email=$username" # -d 'email=sample@example.com'
+ __URL="${__URL}&z=$__DOMAIN" # -d 'z=example.com'
+
+ # lets request the data
+ do_transfer "$__URL" || return 1
+
+ cleanup # cleanup dat file
+ json_load "$(cat $DATFILE)" # lets extract data
+ __FOUND=0 # found record indicator
+ json_get_var __RES "result" # cloudflare result of last request
+ json_get_var __MSG "msg" # cloudflare error message
+ [ "$__RES" != "success" ] && {
+ write_log 4 "'rec_load_all' failed with error: \n$__MSG"
+ return 1
+ }
+
+ json_select "response"
+ json_select "recs"
+ json_select "objs"
+ json_get_keys __KEYS
+ for __KEY in $__KEYS; do
+ local __ZONE __DISPLAY __NAME __TYPE
+ json_select "$__KEY"
+ # json_get_var __ZONE "zone_name" # for debugging
+ # json_get_var __DISPLAY "display_name" # for debugging
+ json_get_var __NAME "name"
+ json_get_var __TYPE "type"
+ if [ "$__NAME" = "$domain" ]; then
+ # we must verify IPv4 and IPv6 because there might be both for the same host
+ [ \( $use_ipv6 -eq 0 -a "$__TYPE" = "A" \) -o \( $use_ipv6 -eq 1 -a "$__TYPE" = "AAAA" \) ] && {
+ __FOUND=1 # mark found
+ break # found leave for loop
+ }
+ fi
+ json_select ..
+ done
+ [ $__FOUND -eq 0 ] && {
+ # we don't need to continue trying to update cloudflare because record to update does not exist
+ # user has to setup record first outside ddns-scripts
+ write_log 14 "No valid record found at Cloudflare setup. Please create first!"
+ }
+ json_get_var __RECID "rec_id" # last thing to do get rec_id
+ json_cleanup # cleanup
+ write_log 7 "rec_id '$__RECID' detected for host/domain '$domain'"
+}
+
+# build url according to cloudflare client api at https://www.cloudflare.com/docs/client-api.html
+# for "rec_edit" to update IP address
+__URL="https://www.cloudflare.com/api_json.html" # https://www.cloudflare.com/api_json.html
+__URL="${__URL}?a=rec_edit" # -d 'a=rec_edit'
+__URL="${__URL}&tkn=$password" # -d 'tkn=8afbe6dea02407989af4dd4c97bb6e25'
+__URL="${__URL}&id=$__RECID" # -d 'id=9001'
+__URL="${__URL}&email=$username" # -d 'email=sample@example.com'
+__URL="${__URL}&z=$__DOMAIN" # -d 'z=example.com'
+
+[ $use_ipv6 -eq 0 ] && __URL="${__URL}&type=A" # -d 'type=A' (IPv4)
+[ $use_ipv6 -eq 1 ] && __URL="${__URL}&type=AAAA" # -d 'type=AAAA' (IPv6)
+
+# handle subdomain or domain record
+[ -n "$__SUBDOM" ] && __URL="${__URL}&name=$__SUBDOM" # -d 'name=sub' (HOST/SUBDOMAIN)
+[ -z "$__SUBDOM" ] && __URL="${__URL}&name=$__DOMAIN" # -d 'name=example.com'(DOMAIN)
+
+__URL="${__URL}&content=$__IP" # -d 'content=1.2.3.4'
+__URL="${__URL}&service_mode=0" # -d 'service_mode=0'
+__URL="${__URL}&ttl=1" # -d 'ttl=1'
+
+# lets do the update
+do_transfer "$__URL" || return 1
+
+cleanup # cleanup tmp file
+json_load "$(cat $DATFILE)" # lets extract data
+json_get_var __RES "result" # cloudflare result of last request
+json_get_var __MSG "msg" # cloudflare error message
+[ "$__RES" != "success" ] && {
+ write_log 4 "'rec_edit' failed with error:\n$__MSG"
+ return 1
+}
+write_log 7 "Update of rec_id '$__RECID' successful"
+return 0
--- /dev/null
+#
+#.Distributed under the terms of the GNU General Public License (GPL) version 2.0
+#
+# script for sending updates to no-ip.com / noip.com
+#.2014-2015 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
+#
+# This script is parsed by dynamic_dns_functions.sh inside send_update() function
+#
+# provider did not reactivate records, if no IP change was recognized
+# so we send a dummy (localhost) and a seconds later we send the correct IP addr
+#
+local __DUMMY
+local __UPDURL="http://[USERNAME]:[PASSWORD]@dynupdate.no-ip.com/nic/update?hostname=[DOMAIN]&myip=[IP]"
+# inside url we need username and password
+[ -z "$username" ] && write_log 14 "Service section not configured correctly! Missing 'username'"
+[ -z "$password" ] && write_log 14 "Service section not configured correctly! Missing 'password'"
+
+# set IP version dependend dummy (localhost)
+[ $use_ipv6 -eq 0 ] && __DUMMY="127.0.0.1" || __DUMMY="::1"
+
+# lets do DUMMY transfer
+write_log 7 "sending dummy IP to 'no-ip.com'"
+__URL=$(echo $__UPDURL | sed -e "s#\[USERNAME\]#$URL_USER#g" -e "s#\[PASSWORD\]#$URL_PASS#g" \
+ -e "s#\[DOMAIN\]#$domain#g" -e "s#\[IP\]#$__DUMMY#g")
+[ $use_https -ne 0 ] && __URL=$(echo $__URL | sed -e 's#^http:#https:#')
+
+do_transfer "$__URL" || return 1
+
+write_log 7 "'no-ip.com' answered:\n$(cat $DATFILE)"
+# analyse provider answers
+# "good [IP_ADR]" = successful
+# "nochg [IP_ADR]" = no change but OK
+grep -E "good|nochg" $DATFILE >/dev/null 2>&1 || return 1
+
+# lets wait a seconds
+sleep 1
+
+# now send the correct data
+write_log 7 "sending real IP to 'no-ip.com'"
+__URL=$(echo $__UPDURL | sed -e "s#\[USERNAME\]#$URL_USER#g" -e "s#\[PASSWORD\]#$URL_PASS#g" \
+ -e "s#\[DOMAIN\]#$domain#g" -e "s#\[IP\]#$__IP#g")
+[ $use_https -ne 0 ] && __URL=$(echo $__URL | sed -e 's#^http:#https:#')
+
+do_transfer "$__URL" || return 1
+
+write_log 7 "'no-ip.com' answered:\n$(cat $DATFILE)"
+# analyse provider answers
+# "good [IP_ADR]" = successful
+# "nochg [IP_ADR]" = no change but OK
+grep -E "good|nochg" $DATFILE >/dev/null 2>&1
+return $? # "0" if "good" or "nochg" found
+
#
-# Copyright (C) 2009-2014 OpenWrt.org
+# Copyright (C) 2009-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=dnscrypt-proxy
-PKG_VERSION:=1.6.0
+PKG_VERSION:=1.6.1
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://download.dnscrypt.org/dnscrypt-proxy
-PKG_MD5SUM:=039b8106cf4e15302dc2487cb7fbb17b
+PKG_MD5SUM:=6fc2a8c57007d582dee3313979a4d1b5
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
endef
define Package/dnscrypt-proxy/conffiles
- /etc/config/dnscrypt-proxy
+/etc/config/dnscrypt-proxy
endef
define Package/hostip/install
config 'etherwake' 'setup'
- # possible program pathes
+ # possible program paths
option 'pathes' '/usr/bin/etherwake /usr/bin/ether-wake'
# use sudo, defaults to off
option 'sudo' 'off'
include $(TOPDIR)/rules.mk
PKG_NAME:=ethtool
-PKG_VERSION:=4.2
+PKG_VERSION:=4.5
PKG_RELEASE:=1
PKG_MAINTAINER:=Matthias Schiffer <mschiffer@universe-factory.net>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/software/network/ethtool
-PKG_MD5SUM:=8433e71a256678d859ecc264132063c5
+PKG_MD5SUM:=f50d25177d10f0cb74da3edc66c3143a
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
default y
+config FASTD_WITH_CAPABILITIES
+ bool "Enable POSIX capability support"
+ depends on PACKAGE_fastd
+ default n
+
+
config FASTD_WITH_CMDLINE_USER
bool "Include support for setting user/group related options on the command line"
depends on PACKAGE_fastd
include $(TOPDIR)/rules.mk
PKG_NAME:=fastd
-PKG_VERSION:=17
-PKG_RELEASE:=2
+PKG_VERSION:=18
+PKG_RELEASE:=1
PKG_MAINTAINER:=Matthias Schiffer <mschiffer@universe-factory.net>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=https://projects.universe-factory.net/attachments/download/81
-PKG_MD5SUM:=bad4f1948702f418b799578f83a0edb8
+PKG_SOURCE_URL:=https://projects.universe-factory.net/attachments/download/86
+PKG_MD5SUM:=e53236d3049f64f7955ad9556da099eb
PKG_LICENSE:=BSD-2-Clause
PKG_LICENSE_FILES:=COPYRIGHT
CONFIG_FASTD_ENABLE_CIPHER_SALSA2012 \
CONFIG_FASTD_ENABLE_MAC_GHASH \
CONFIG_FASTD_ENABLE_MAC_UHASH \
+ CONFIG_FASTD_WITH_CAPABILITIES \
CONFIG_FASTD_WITH_CMDLINE_USER \
CONFIG_FASTD_WITH_CMDLINE_LOGGING \
CONFIG_FASTD_WITH_CMDLINE_OPERATION \
define Package/fastd
SECTION:=net
CATEGORY:=Network
- DEPENDS:=+kmod-tun +librt +libpthread +FASTD_WITH_STATUS_SOCKET:libjson-c
+ DEPENDS:=+kmod-tun +librt +libpthread +FASTD_WITH_STATUS_SOCKET:libjson-c +FASTD_WITH_CAPABILITIES:libcap
TITLE:=Fast and Secure Tunneling Daemon
URL:=https://projects.universe-factory.net/projects/fastd
SUBMENU:=VPN
-DWITH_CIPHER_SALSA2012:BOOL=FALSE \
-DWITH_MAC_GHASH:BOOL=FALSE \
-DWITH_MAC_UHASH:BOOL=FALSE \
+ -DWITH_CAPABILITIES:BOOL=FALSE \
-DWITH_CMDLINE_USER:BOOL=FALSE \
-DWITH_CMDLINE_LOGGING:BOOL=FALSE \
-DWITH_CMDLINE_OPERATION:BOOL=FALSE \
-DWITH_CMDLINE_COMMANDS:BOOL=FALSE \
-DWITH_DYNAMIC_PEERS:BOOL=FALSE \
-DWITH_STATUS_SOCKET:BOOL=FALSE \
- -DWITH_CAPABILITIES:BOOL=FALSE \
-DENABLE_SYSTEMD:BOOL=FALSE \
-DENABLE_LIBSODIUM:BOOL=FALSE \
-DENABLE_LTO:BOOL=TRUE
endif
+ifeq ($(CONFIG_FASTD_WITH_CAPABILITIES),y)
+CMAKE_OPTIONS += -DWITH_CAPABILITIES:BOOL=TRUE
+endif
+
+
ifeq ($(CONFIG_FASTD_WITH_CMDLINE_USER),y)
CMAKE_OPTIONS += -DWITH_CMDLINE_USER:BOOL=TRUE
endif
+++ /dev/null
---- a/cmake/checks.cmake
-+++ b/cmake/checks.cmake
-@@ -54,9 +54,13 @@ if(NOT DARWIN)
- endif(NOT DARWIN)
-
-
-+set(CMAKE_EXTRA_INCLUDE_FILES "linux/if_ether.h")
-+check_type_size("struct ethhdr" SIZEOF_ETHHDR)
-+string(COMPARE NOTEQUAL "${SIZEOF_ETHHDR}" "" HAVE_LINUX_ETHHDR)
-+
- set(CMAKE_EXTRA_INCLUDE_FILES "netinet/if_ether.h")
- check_type_size("struct ethhdr" SIZEOF_ETHHDR)
--string(COMPARE NOTEQUAL "${SIZEOF_ETHHDR}" "" HAVE_ETHHDR)
-+string(COMPARE NOTEQUAL "${SIZEOF_ETHHDR}" "" HAVE_NETINET_ETHHDR)
-
-
- set(CMAKE_REQUIRED_INCLUDES "sys/types.h")
---- a/src/compat.h
-+++ b/src/compat.h
-@@ -45,7 +45,12 @@
- #include <net/if.h>
- #include <net/if_arp.h>
- #include <netinet/in.h>
-+
-+#if defined(HAVE_LINUX_ETHHDR)
-+#include <linux/if_ether.h>
-+#elif defined(HAVE_NETINET_ETHHDR)
- #include <netinet/if_ether.h>
-+#endif
-
- #ifndef ETH_ALEN
- /** The length of a MAC address */
-@@ -55,9 +60,8 @@
- #ifndef ETH_HLEN
- /** The length of the standard ethernet header */
- #define ETH_HLEN 14
--#endif
-
--#ifndef HAVE_ETHHDR
-+#if !defined(HAVE_LINUX_ETHHDR) && !defined(HAVE_NETINET_ETHHDR)
- /** An ethernet header */
- struct ethhdr {
- uint8_t h_dest[ETH_ALEN]; /**< The destination MAC address field */
-@@ -65,6 +69,7 @@ struct ethhdr {
- uint16_t h_proto; /**< The EtherType/length field */
- } __attribute__((packed));
- #endif
-+#endif
-
- #if defined(USE_FREEBIND) && !defined(IP_FREEBIND)
- /** Compatiblity define for systems supporting, but not defining IP_FREEBIND */
---- a/src/fastd_config.h.in
-+++ b/src/fastd_config.h.in
-@@ -35,8 +35,11 @@
- /** Defined if the platform supports the AI_ADDRCONFIG flag to getaddrinfo() */
- #cmakedefine HAVE_AI_ADDRCONFIG
-
--/** Defined if the platform defines the \e ethhdr struct */
--#cmakedefine HAVE_ETHHDR
-+/** Defined if the platform defines the \e ethhdr struct through linux/if_ether.h */
-+#cmakedefine HAVE_LINUX_ETHHDR
-+
-+/** Defined if the platform defines the \e ethhdr struct through netinet/if_ether.h */
-+#cmakedefine HAVE_NETINET_ETHHDR
-
- /** Defined if the platform defines get_current_dir_name() */
- #cmakedefine HAVE_GET_CURRENT_DIR_NAME
#
-# 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.
include $(TOPDIR)/rules.mk
PKG_NAME:=freeradius2
-PKG_VERSION:=2.2.8
+PKG_VERSION:=2.2.9
PKG_RELEASE:=1
PKG_SOURCE:=freeradius-server-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=\
ftp://ftp.freeradius.org/pub/freeradius/ \
ftp://ftp.freeradius.org/pub/freeradius/old/
-PKG_MD5SUM:=0adc2454392ab8a43664dea416022e28
+PKG_MD5SUM:=d1398327ba4e23c75da06d8a0e01096b
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYRIGHT LICENSE
$(if $(CONFIG_FREERADIUS_OPENSSL),--with,--without)-openssl \
$(if $(CONFIG_FREERADIUS_OPENSSL),--with-openssl-includes="$(STAGING_DIR)/usr/include",) \
$(if $(CONFIG_FREERADIUS_OPENSSL),--with-openssl-libraries="$(STAGING_DIR)/usr/lib",) \
+ $(if $(CONFIG_FREERADIUS_OPENSSL),--disable-openssl-version-check,) \
--with-system-libtool \
--with-system-libltdl \
--enable-strict-dependencies \
#
-# Copyright (C) 2011-2012 OpenWrt.org
+# Copyright (C) 2011-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=fwknop
-PKG_VERSION:=2.6.6
-PKG_RELEASE:=3
+PKG_VERSION:=2.6.8
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://www.cipherdyne.org/fwknop/download
-PKG_MD5SUM:=1372aeaf1e33ab1d6b9906ef9b5cd02e
+PKG_MD5SUM:=1259adc5cff5e29006e4c3ce9f9b2711
PKG_MAINTAINER:=Jonathan Bennett <JBennett@incomsystems.biz>
PKG_LICENSE:=GPLv2
PKG_INSTALL:=1
define Package/fwknopd/conffiles
/etc/fwknop/access.conf
/etc/fwknop/fwknopd.conf
+/etc/config/fwknopd
endef
define Package/fwknopd/config
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/fwknopd $(1)/usr/sbin/
endef
-define Package/fwknopd/conffiles
- /etc/config/fwknopd
-endef
-
define Package/fwknop/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/fwknop $(1)/usr/bin/
gen_confs()
{
[ -f /tmp/access.conf.tmp ] && rm /tmp/access.conf.tmp
- if [ "`uci get fwknopd.@config[0].PCAP_INTF`" = ""]
+ if [ -z "$( uci get fwknopd.@config[0].PCAP_INTF )" ]
then
. /lib/functions/network.sh
network_get_physdev device wan
+++ /dev/null
-diff --git a/CREDITS b/CREDITS
-index de17d9e..38e2108 100644
---- a/CREDITS
-+++ b/CREDITS
-@@ -1,5 +1,6 @@
- Jonathan Bennett
- - Contributed OpenWRT support - see the extras/openwrt/ directory.
-+ - Suggested the addition of the --key-gen option to fwknopd.
-
- Sebastien Jeanquier
- - Assisted with getting fwknop included in BackTrack Linux - the choice
-diff --git a/ChangeLog b/ChangeLog
-index 21a5093..4daf008 100644
---- a/ChangeLog
-+++ b/ChangeLog
-@@ -1,3 +1,8 @@
-+fwknop-2.6.7 (05//2015):
-+ - Added --key-gen to fwknopd. This feature was suggested by Jonathan
-+ Bennett, and will help with ease of use efforts. The first platform to
-+ take advantage of this will likely be OpenWRT thanks to Jonathan.
-+
- fwknop-2.6.6 (04/23/2015):
- - [server] Add the ability for fwknopd to function as an generic SPA
- gateway. This allows scenarios such as the fwknopd system providing DHCP
-diff --git a/client/config_init.c b/client/config_init.c
-index cdb233d..f0ae135 100644
---- a/client/config_init.c
-+++ b/client/config_init.c
-@@ -199,7 +199,7 @@ static int critical_var_array[] =
- };
-
- /**
-- * @brief Generate Rijndael + HMAC keys from /dev/random (base64 encoded) and exit.
-+ * @brief Generate Rijndael + HMAC keys from /dev/urandom (base64 encoded).
- *
- * @param options FKO command line option structure
- */
-diff --git a/client/fwknop_common.h b/client/fwknop_common.h
-index aef20c4..c57db02 100644
---- a/client/fwknop_common.h
-+++ b/client/fwknop_common.h
-@@ -69,8 +69,6 @@
- #define MAX_HOSTNAME_LEN 70
- #define MAX_URL_HOST_LEN 256
- #define MAX_URL_PATH_LEN 1024
--#define MAX_KEY_LEN 128
--#define MAX_B64_KEY_LEN 180
-
- /* fwknop client configuration parameters and values
- */
-@@ -156,10 +154,10 @@ typedef struct fko_cli_options
- unsigned char use_gpg;
- unsigned char use_gpg_agent;
- unsigned char gpg_no_signing_pw;
-+ unsigned char key_gen;
- int time_offset_plus;
- int time_offset_minus;
- int fw_timeout;
-- int key_gen;
-
- char use_rc_stanza[MAX_LINE_LEN];
- unsigned char got_named_stanza;
-diff --git a/common/common.h b/common/common.h
-index b63e7c2..c7b2e57 100644
---- a/common/common.h
-+++ b/common/common.h
-@@ -157,6 +157,9 @@ enum {
- #define MAX_GPG_KEY_ID 128
- #define MAX_USERNAME_LEN 30
-
-+#define MAX_KEY_LEN 128
-+#define MAX_B64_KEY_LEN 180
-+
- /* Command line argument / argv handling
- */
- #define MAX_CMDLINE_ARGS 30 /*!< should be way more than enough */
-diff --git a/doc/fwknop.man.asciidoc b/doc/fwknop.man.asciidoc
-index 070ac77..efa99a7 100644
---- a/doc/fwknop.man.asciidoc
-+++ b/doc/fwknop.man.asciidoc
-@@ -196,6 +196,11 @@ GENERAL OPTIONS
- keys are generally more secure than passphrases that are typed in from the
- command line.
-
-+*--key-gen-file*='<file>'::
-+ Write generated keys to the specified file. Note that the file is
-+ overwritten if it already exists. If this option is not given, then
-+ *--key-gen* writes the keys to stdout.
-+
- *--key-len*='<length>'::
- Specify the number of bytes for a generated Rijndael key. The maximum size
- is currently 128 bytes.
-diff --git a/server/cmd_opts.h b/server/cmd_opts.h
-index bc1eee1..d7a645c 100644
---- a/server/cmd_opts.h
-+++ b/server/cmd_opts.h
-@@ -141,6 +141,10 @@ enum {
- FW_LIST = 0x200,
- FW_LIST_ALL,
- FW_FLUSH,
-+ KEY_GEN_FILE,
-+ KEY_LEN,
-+ HMAC_KEY_LEN,
-+ HMAC_DIGEST_TYPE,
- AFL_PKT_FILE,
- GPG_HOME_DIR,
- GPG_EXE_PATH,
-@@ -178,7 +182,12 @@ static struct option cmd_opts[] =
- {"fault-injection-tag", 1, NULL, FAULT_INJECTION_TAG},
- {"help", 0, NULL, 'h'},
- {"interface", 1, NULL, 'i'},
-- {"kill", 0, NULL, 'K'},
-+ {"key-gen", 0, NULL, 'k'},
-+ {"key-gen-file", 1, NULL, KEY_GEN_FILE },
-+ {"key-len", 1, NULL, KEY_LEN },
-+ {"hmac-key-len", 1, NULL, HMAC_KEY_LEN },
-+ {"hmac-digest-type", 1, NULL, HMAC_DIGEST_TYPE },
-+ {"kill", 0, NULL, 'K' },
- {"fw-flush", 0, NULL, FW_FLUSH },
- {"fw-list", 0, NULL, FW_LIST },
- {"fw-list-all", 0, NULL, FW_LIST_ALL },
-diff --git a/server/config_init.c b/server/config_init.c
-index 0ddceee..2f1d293 100644
---- a/server/config_init.c
-+++ b/server/config_init.c
-@@ -201,6 +201,69 @@ validate_int_var_ranges(fko_srv_options_t *opts)
- return;
- }
-
-+/**
-+ * @brief Generate Rijndael + HMAC keys from /dev/urandom (base64 encoded).
-+ *
-+ * @param options FKO command line option structure
-+ */
-+static void
-+generate_keys(fko_srv_options_t *options)
-+{
-+ char key_base64[MAX_B64_KEY_LEN+1];
-+ char hmac_key_base64[MAX_B64_KEY_LEN+1];
-+
-+ FILE *key_gen_file_ptr = NULL;
-+ int res;
-+
-+ /* Set defaults and validate for --key-gen mode
-+ */
-+ if(options->key_len == 0)
-+ options->key_len = FKO_DEFAULT_KEY_LEN;
-+
-+ if(options->hmac_key_len == 0)
-+ options->hmac_key_len = FKO_DEFAULT_HMAC_KEY_LEN;
-+
-+ if(options->hmac_type == 0)
-+ options->hmac_type = FKO_DEFAULT_HMAC_MODE;
-+
-+ /* Zero out the key buffers */
-+ memset(key_base64, 0x00, sizeof(key_base64));
-+ memset(hmac_key_base64, 0x00, sizeof(hmac_key_base64));
-+
-+ /* Generate the key through libfko */
-+ res = fko_key_gen(key_base64, options->key_len,
-+ hmac_key_base64, options->hmac_key_len,
-+ options->hmac_type);
-+
-+ if(res != FKO_SUCCESS)
-+ {
-+ log_msg(LOG_ERR, "%s: fko_key_gen: Error %i - %s",
-+ MY_NAME, res, fko_errstr(res));
-+ clean_exit(options, NO_FW_CLEANUP, EXIT_FAILURE);
-+ }
-+
-+ if(options->key_gen_file[0] != '\0')
-+ {
-+ if ((key_gen_file_ptr = fopen(options->key_gen_file, "w")) == NULL)
-+ {
-+ log_msg(LOG_ERR, "Unable to create key gen file: %s: %s",
-+ options->key_gen_file, strerror(errno));
-+ clean_exit(options, NO_FW_CLEANUP, EXIT_FAILURE);
-+ }
-+ fprintf(key_gen_file_ptr, "KEY_BASE64: %s\nHMAC_KEY_BASE64: %s\n",
-+ key_base64, hmac_key_base64);
-+ fclose(key_gen_file_ptr);
-+ fprintf(stdout, "[+] Wrote Rijndael and HMAC keys to: %s",
-+ options->key_gen_file);
-+ }
-+ else
-+ {
-+ fprintf(stdout, "KEY_BASE64: %s\nHMAC_KEY_BASE64: %s\n",
-+ key_base64, hmac_key_base64);
-+ }
-+ clean_exit(options, NO_FW_CLEANUP, EXIT_SUCCESS);
-+}
-+
- /* Parse the config file...
- */
- static void
-@@ -427,7 +490,7 @@ validate_options(fko_srv_options_t *opts)
- if(opts->config[CONF_ENABLE_DIGEST_PERSISTENCE] == NULL)
- set_config_entry(opts, CONF_ENABLE_DIGEST_PERSISTENCE,
- DEF_ENABLE_DIGEST_PERSISTENCE);
--
-+
- /* Enable destination rule.
- */
- if(opts->config[CONF_ENABLE_DESTINATION_RULE] == NULL)
-@@ -928,8 +991,9 @@ config_init(fko_srv_options_t *opts, int argc, char **argv)
-
- /* First, scan the command-line args for -h/--help or an alternate
- * configuration file. If we find an alternate config file, use it,
-- * otherwise use the default. We also grab any override config files
-- * as well.
-+ * otherwise use the default. We also grab any override config files
-+ * as well. In addition, we handle key generation here since this is
-+ * independent of configuration parsing.
- */
- while ((cmd_arg = getopt_long(argc, argv,
- GETOPTS_OPTION_STRING, cmd_opts, &index)) != -1) {
-@@ -952,6 +1016,45 @@ config_init(fko_srv_options_t *opts, int argc, char **argv)
- if(got_override_config > 0)
- break;
-
-+ case 'k':
-+ opts->key_gen = 1;
-+ break;
-+ case KEY_GEN_FILE:
-+ opts->key_gen = 1;
-+ strlcpy(opts->key_gen_file, optarg, sizeof(opts->key_gen_file));
-+ break;
-+ case KEY_LEN: /* used in --key-gen mode only */
-+ opts->key_len = strtol_wrapper(optarg, 1,
-+ MAX_KEY_LEN, NO_EXIT_UPON_ERR, &is_err);
-+ if(is_err != FKO_SUCCESS)
-+ {
-+ log_msg(LOG_ERR,
-+ "Invalid key length '%s', must be in [%d-%d]",
-+ optarg, 1, MAX_KEY_LEN);
-+ clean_exit(opts, NO_FW_CLEANUP, EXIT_FAILURE);
-+ }
-+ break;
-+ case HMAC_DIGEST_TYPE: /* used in --key-gen mode only */
-+ if((opts->hmac_type = hmac_digest_strtoint(optarg)) < 0)
-+ {
-+ log_msg(LOG_ERR,
-+ "* Invalid hmac digest type: %s, use {md5,sha1,sha256,sha384,sha512}",
-+ optarg);
-+ clean_exit(opts, NO_FW_CLEANUP, EXIT_FAILURE);
-+ }
-+ break;
-+ case HMAC_KEY_LEN: /* used in --key-gen mode only */
-+ opts->hmac_key_len = strtol_wrapper(optarg, 1,
-+ MAX_KEY_LEN, NO_EXIT_UPON_ERR, &is_err);
-+ if(is_err != FKO_SUCCESS)
-+ {
-+ log_msg(LOG_ERR,
-+ "Invalid hmac key length '%s', must be in [%d-%d]",
-+ optarg, 1, MAX_KEY_LEN);
-+ clean_exit(opts, NO_FW_CLEANUP, EXIT_FAILURE);
-+ }
-+ break;
-+
- /* Look for override configuration file arg.
- */
- case 'O':
-@@ -965,6 +1068,9 @@ config_init(fko_srv_options_t *opts, int argc, char **argv)
- }
- }
-
-+ if(opts->key_gen)
-+ generate_keys(opts);
-+
- /* If no alternate configuration file was specified, we use the
- * default.
- */
-diff --git a/server/fwknopd_common.h b/server/fwknopd_common.h
-index ecf2a81..8c33eaa 100644
---- a/server/fwknopd_common.h
-+++ b/server/fwknopd_common.h
-@@ -585,10 +585,14 @@ typedef struct fko_srv_options
- unsigned char fw_list; /* List current firewall rules */
- unsigned char fw_list_all; /* List all current firewall rules */
- unsigned char fw_flush; /* Flush current firewall rules */
-+ unsigned char key_gen; /* Generate keys and exit */
-+ unsigned char exit_after_parse_config; /* Parse config and exit */
-+
-+ /* Operational flags
-+ */
- unsigned char test; /* Test mode flag */
- unsigned char afl_fuzzing; /* SPA pkts from stdin for AFL fuzzing */
- unsigned char verbose; /* Verbose mode flag */
-- unsigned char exit_after_parse_config; /* Parse config and exit */
- unsigned char enable_udp_server; /* Enable UDP server mode */
-
- unsigned char firewd_disable_check_support; /* Don't use firewall-cmd ... -C */
-@@ -605,6 +609,13 @@ typedef struct fko_srv_options
- int tcp_server_pid;
- int lock_fd;
-
-+ /* Values used in --key-gen mode only
-+ */
-+ char key_gen_file[MAX_PATH_LEN];
-+ int key_len;
-+ int hmac_key_len;
-+ int hmac_type;
-+
- #if USE_FILE_CACHE
- struct digest_cache_list *digest_cache; /* In-memory digest cache list */
- #endif
-diff --git a/test/tests/basic_operations.pl b/test/tests/basic_operations.pl
-index f4dde2e..76a509d 100644
---- a/test/tests/basic_operations.pl
-+++ b/test/tests/basic_operations.pl
-@@ -390,6 +390,14 @@
- 'exec_err' => $YES,
- 'cmdline' => "$default_client_args --key-gen -K " . 'A'x1030
- },
-+ {
-+ 'category' => 'basic operations',
-+ 'subcategory' => 'server',
-+ 'detail' => '--key-gen file path (-K) too long',
-+ 'function' => \&generic_exec,
-+ 'exec_err' => $YES,
-+ 'cmdline' => "$fwknopdCmd --key-gen --key-gen-file " . 'A'x1030
-+ },
-
- {
- 'category' => 'basic operations',
-diff --git a/test/tests/rijndael.pl b/test/tests/rijndael.pl
-index 26aab6a..34af65e 100644
---- a/test/tests/rijndael.pl
-+++ b/test/tests/rijndael.pl
-@@ -421,33 +421,6 @@
- 'key_file' => $cf{'rc_named_key'},
- },
-
-- ### --key-gen tests
-- {
-- 'category' => 'Rijndael',
-- 'subcategory' => 'client',
-- 'detail' => '--key-gen',
-- 'function' => \&generic_exec,
-- 'cmdline' => "$fwknopCmd --key-gen",
-- 'positive_output_matches' => [qr/^KEY_BASE64\:?\s\S{10}/,
-- qw/HMAC_KEY_BASE64\:?\s\S{10}/],
-- },
-- {
-- 'category' => 'Rijndael',
-- 'subcategory' => 'client',
-- 'detail' => "--key-gen $uniq_keys key uniqueness",
-- 'function' => \&key_gen_uniqueness,
-- 'cmdline' => "$fwknopCmd --key-gen", ### no valgrind string (too slow for 100 client exec's)
-- 'disable_valgrind' => $YES,
-- },
-- {
-- 'category' => 'Rijndael',
-- 'subcategory' => 'client',
-- 'detail' => '--key-gen to file',
-- 'function' => \&generic_exec,
-- 'cmdline' => "$fwknopCmd --key-gen --key-gen-file $key_gen_file",
-- 'positive_output_matches' => [qr/Wrote.*\skeys/],
-- },
--
- ### rc file tests
- {
- 'category' => 'Rijndael',
-diff --git a/test/tests/rijndael_hmac.pl b/test/tests/rijndael_hmac.pl
-index fc1a8af..fd80f04 100644
---- a/test/tests/rijndael_hmac.pl
-+++ b/test/tests/rijndael_hmac.pl
-@@ -58,6 +58,59 @@
- 'exec_err' => $YES,
- },
-
-+ ### --key-gen tests
-+ {
-+ 'category' => 'Rijndael+HMAC',
-+ 'subcategory' => 'client',
-+ 'detail' => '--key-gen',
-+ 'function' => \&generic_exec,
-+ 'cmdline' => "$fwknopCmd --key-gen",
-+ 'positive_output_matches' => [qr/^KEY_BASE64\:?\s\S{10}/,
-+ qw/HMAC_KEY_BASE64\:?\s\S{10}/],
-+ },
-+ {
-+ 'category' => 'Rijndael+HMAC',
-+ 'subcategory' => 'server',
-+ 'detail' => '--key-gen',
-+ 'function' => \&generic_exec,
-+ 'cmdline' => "$fwknopdCmd --key-gen",
-+ 'positive_output_matches' => [qr/^KEY_BASE64\:?\s\S{10}/,
-+ qw/HMAC_KEY_BASE64\:?\s\S{10}/],
-+ },
-+ {
-+ 'category' => 'Rijndael+HMAC',
-+ 'subcategory' => 'client',
-+ 'detail' => "--key-gen $uniq_keys key uniqueness",
-+ 'function' => \&key_gen_uniqueness,
-+ 'cmdline' => "$fwknopCmd --key-gen", ### no valgrind string (too slow for 100 exec's)
-+ 'disable_valgrind' => $YES,
-+ },
-+ {
-+ 'category' => 'Rijndael+HMAC',
-+ 'subcategory' => 'server',
-+ 'detail' => "--key-gen $uniq_keys key uniqueness",
-+ 'function' => \&key_gen_uniqueness,
-+ 'cmdline' => "$fwknopdCmd --key-gen", ### no valgrind string (too slow for 100 exec's)
-+ 'disable_valgrind' => $YES,
-+ },
-+ {
-+ 'category' => 'Rijndael+HMAC',
-+ 'subcategory' => 'client',
-+ 'detail' => '--key-gen to file',
-+ 'function' => \&generic_exec,
-+ 'cmdline' => "$fwknopCmd --key-gen --key-gen-file $key_gen_file",
-+ 'positive_output_matches' => [qr/Wrote.*\skeys/],
-+ },
-+ {
-+ 'category' => 'Rijndael+HMAC',
-+ 'subcategory' => 'server',
-+ 'detail' => '--key-gen to file',
-+ 'function' => \&generic_exec,
-+ 'cmdline' => "$fwknopdCmd --key-gen --key-gen-file $key_gen_file",
-+ 'positive_output_matches' => [qr/Wrote.*\skeys/],
-+ },
-+
-+ ### complete cycle tests
- {
- 'category' => 'Rijndael+HMAC',
- 'subcategory' => 'client+server',
include $(TOPDIR)/rules.mk
PKG_NAME:=git
-PKG_VERSION:=2.6.3
+PKG_VERSION:=2.7.3
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/software/scm/git/
-PKG_MD5SUM:=5a6375349c3f13c8dbbabfc327bae429
+PKG_MD5SUM:=bb01710b1b24789a53c800a90c73957f
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
--- a/Makefile
+++ b/Makefile
-@@ -557,16 +557,7 @@ EXTRA_PROGRAMS =
+@@ -559,16 +559,7 @@ EXTRA_PROGRAMS =
# ... and all the rest that could be moved out of bindir to gitexecdir
PROGRAMS += $(EXTRA_PROGRAMS)
# Binary suffix, set to .exe for Windows builds
X =
-@@ -923,6 +914,11 @@ BUILTIN_OBJS += builtin/verify-pack.o
+@@ -929,6 +920,11 @@ BUILTIN_OBJS += builtin/verify-pack.o
BUILTIN_OBJS += builtin/verify-tag.o
BUILTIN_OBJS += builtin/worktree.o
BUILTIN_OBJS += builtin/write-tree.o
GITLIBS = $(LIB_FILE) $(XDIFF_LIB)
EXTLIBS =
-@@ -1106,7 +1102,7 @@ endif
+@@ -1112,7 +1108,7 @@ endif
EXTLIBS += -lz
ifndef NO_OPENSSL
ifdef OPENSSLDIR
BASIC_CFLAGS += -I$(OPENSSLDIR)/include
OPENSSL_LINK = -L$(OPENSSLDIR)/$(lib) $(CC_LD_DYNPATH)$(OPENSSLDIR)/$(lib)
-@@ -1977,10 +1973,6 @@ endif
+@@ -1989,10 +1985,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,$^) \
$(CURL_LIBCURL) $(LIBS)
-@@ -2300,10 +2292,11 @@ endif
+@@ -2312,10 +2304,11 @@ endif
bindir=$$(cd '$(DESTDIR_SQ)$(bindir_SQ)' && pwd) && \
execdir=$$(cd '$(DESTDIR_SQ)$(gitexec_instdir_SQ)' && pwd) && \
{ test "$$bindir/" = "$$execdir/" || \
} && \
--- a/builtin.h
+++ b/builtin.h
-@@ -141,5 +141,10 @@ extern int cmd_verify_pack(int argc, con
+@@ -142,5 +142,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);
+#include "../upload-pack.c"
--- a/daemon.c
+++ b/daemon.c
-@@ -1184,7 +1184,7 @@ static int serve(struct string_list *lis
+@@ -1178,7 +1178,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;
-@@ -1380,12 +1380,13 @@ int main(int argc, char **argv)
+@@ -1374,6 +1374,7 @@ int main(int argc, char **argv)
write_file(pid_file, "%"PRIuMAX, (uintmax_t) getpid());
/* prepare argv for serving-processes */
-- cld_argv = xmalloc(sizeof (char *) * (argc + 2));
-- cld_argv[0] = argv[0]; /* git-daemon */
-- cld_argv[1] = "--serve";
-+ cld_argv = xmalloc(sizeof (char *) * (argc + 3));
-+ cld_argv[0] = "git";
-+ cld_argv[1] = argv[0]; /* daemon */
-+ cld_argv[2] = "--serve";
++ argv_array_push(&cld_argv, "git"); /* git-daemon */
+ argv_array_push(&cld_argv, argv[0]); /* git-daemon */
+ argv_array_push(&cld_argv, "--serve");
for (i = 1; i < argc; ++i)
-- cld_argv[i+1] = argv[i];
-- cld_argv[argc+1] = NULL;
-+ cld_argv[i+2] = argv[i];
-+ cld_argv[argc+2] = NULL;
-
- return serve(&listen_addr, listen_port, cred);
- }
--- a/fast-import.c
+++ b/fast-import.c
-@@ -3380,7 +3380,7 @@ static void parse_argv(void)
+@@ -3381,7 +3381,7 @@ static void parse_argv(void)
read_marks();
}
--- a/git.c
+++ b/git.c
-@@ -311,11 +311,11 @@ static int handle_alias(int *argcp, cons
+@@ -307,11 +307,11 @@ static int handle_alias(int *argcp, cons
struct cmd_struct {
const char *cmd;
{
int status, help;
struct stat st;
-@@ -396,6 +396,7 @@ static struct cmd_struct commands[] = {
+@@ -392,6 +392,7 @@ static struct cmd_struct commands[] = {
{ "config", cmd_config, RUN_SETUP_GENTLY },
{ "count-objects", cmd_count_objects, RUN_SETUP },
{ "credential", cmd_credential, RUN_SETUP_GENTLY },
{ "describe", cmd_describe, RUN_SETUP },
{ "diff", cmd_diff },
{ "diff-files", cmd_diff_files, RUN_SETUP | NEED_WORK_TREE },
-@@ -414,6 +415,7 @@ static struct cmd_struct commands[] = {
+@@ -410,6 +411,7 @@ static struct cmd_struct commands[] = {
{ "grep", cmd_grep, RUN_SETUP_GENTLY },
{ "hash-object", cmd_hash_object },
{ "help", cmd_help },
{ "index-pack", cmd_index_pack, RUN_SETUP_GENTLY },
{ "init", cmd_init_db, NO_SETUP },
{ "init-db", cmd_init_db, NO_SETUP },
-@@ -463,6 +465,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 },
-@@ -479,6 +482,7 @@ static struct cmd_struct commands[] = {
+@@ -476,6 +479,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 },
{ "verify-pack", cmd_verify_pack },
--- a/imap-send.c
+++ b/imap-send.c
-@@ -1496,7 +1496,7 @@ static int curl_append_msgs_to_imap(stru
+@@ -1494,7 +1494,7 @@ static int curl_append_msgs_to_imap(stru
}
#endif
const char **user_argv;
--- a/upload-pack.c
+++ b/upload-pack.c
-@@ -819,7 +819,7 @@ static int upload_pack_config(const char
+@@ -820,7 +820,7 @@ static int upload_pack_config(const char
return parse_hide_refs_config(var, value, "uploadpack");
}
--- a/configure.ac
+++ b/configure.ac
-@@ -867,7 +867,8 @@ AC_RUN_IFELSE(
+@@ -860,7 +860,8 @@ AC_RUN_IFELSE(
FILE *f = fopen(".", "r");
return f && fread(&c, 1, 1, f)]])],
[ac_cv_fread_reads_directories=no],
])
if test $ac_cv_fread_reads_directories = yes; then
FREAD_READS_DIRECTORIES=UnfortunatelyYes
-@@ -901,7 +902,8 @@ AC_RUN_IFELSE(
+@@ -894,7 +895,8 @@ AC_RUN_IFELSE(
if (snprintf(buf, 3, "%s", "12345") != 5
|| strcmp(buf, "12")) return 1]])],
[ac_cv_snprintf_returns_bogus=no],
])
if test $ac_cv_snprintf_returns_bogus = yes; then
SNPRINTF_RETURNS_BOGUS=UnfortunatelyYes
-@@ -924,7 +926,8 @@ yippeeyeswehaveit
+@@ -917,7 +919,8 @@ yippeeyeswehaveit
#endif
]),
[ac_cv_sane_mode_bits=yes],
--- a/Makefile
+++ b/Makefile
-@@ -1074,7 +1074,7 @@ else
+@@ -1080,7 +1080,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"
#
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=gnunet
-PKG_SOURCE_VERSION:=36713
+PKG_SOURCE_VERSION:=37051
PKG_VERSION:=0.10.1-svn$(PKG_SOURCE_VERSION)
-PKG_RELEASE:=3
+PKG_RELEASE:=4
# ToDo:
# - break-out {peer,name,data}store for each backend
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-mysql),--with-mysql="$(STAGING_DIR)/usr",--without-mysql) \
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-pgsql),--with-postgresql="$(STAGING_DIR)/usr/bin/pg_config",--without-postgresql) \
$(if $(CONFIG_PACKAGE_$(PKG_NAME)-sqlite),--with-sqlite="$(STAGING_DIR)/usr",--without-sqlite) \
- $(if $(CONFIG_PACKAGE_$(PKG_NAME)-experiments),--enable-experimental,--disable-experimental) \
+ --enable-experimental \
--with-extractor=$(STAGING_DIR)/usr \
--with-gnutls=$(STAGING_DIR)/usr \
--with-libgnurl=$(STAGING_DIR)/usr \
define Package/gnunet
$(call Package/gnunet/Default)
TITLE+= - a peer-to-peer framework focusing on security
- DEPENDS:=+ca-certificates +libgnurl +libgnutls +libidn +libltdl \
- +libmicrohttpd +libunistring +librt $(ICONV_DEPENDS) $(INTL_DEPENDS)
+ DEPENDS:=+ca-certificates +libgcrypt +libgpg-error +libgnurl \
+ +libgnutls +libidn +libltdl +libunistring +librt \
+ $(ICONV_DEPENDS) $(INTL_DEPENDS)
USERID:=gnunet=400:gnunet=400
MENU:=1
endef
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/gnunet/config.d/$$$$$$$$conf.conf $$(1)/usr/share/gnunet/config.d ; \
done \
fi )
+
+ ( if [ -e ./files/gnunet-$(1).defaults ]; then \
+ $(INSTALL_DIR) $$(1)/etc/uci-defaults ; \
+ $(INSTALL_BIN) ./files/gnunet-$(1).defaults $$(1)/etc/uci-defaults/gnunet-$(1) ; \
+ fi )
endef
$$(eval $$(call BuildPackage,gnunet-$(1)))
$(INSTALL_DIR) $(1)/usr/share/gnunet/config.d $(1)/usr/share/gnunet/hellos
( for bin in arm ats cadet core config ecc identity nat nat-server nse \
- peerinfo peerstore revocation scalarproduct statistics transport uri; do \
+ peerinfo revocation scalarproduct statistics transport uri; do \
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gnunet-$$$$bin $(1)/usr/bin/ ; \
done )
( for lib in arm ats block cadet core datacache dht \
dns dnsparser dnsstub fragmentation friends hello identity nat nse \
- peerinfo peerstore regexblock regex revocation scalarproduct set \
+ peerinfo regexblock regex revocation scalarproduct set \
statistics transport util; do \
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libgnunet$$$$lib.so* $(1)/usr/lib/ ; \
done )
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/gnunet/libgnunet_plugin_$$$$plug*.so $(1)/usr/lib/gnunet ; \
done )
- ( for lex in daemon-hostlist daemon-topology helper-nat-client \
+ ( for lex in daemon-topology helper-nat-client \
helper-nat-server service-arm service-ats service-cadet \
service-core service-dht service-identity service-nse \
- service-peerinfo service-peerstore service-regex \
+ service-peerinfo service-regex \
service-revocation service-scalarproduct-alice \
service-scalarproduct-bob service-scalarproduct-ecc-alice \
service-scalarproduct-ecc-bob service-set service-statistics \
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/gnunet/libexec/gnunet-$$$$lex $(1)/usr/lib/gnunet/libexec ; \
done )
- ( for conf in arm ats cadet core datacache dht hostlist identity \
- nat nse peerinfo peerstore regex revocation scalarproduct \
+ ( for conf in arm ats cadet core datacache dht identity \
+ nat nse peerinfo regex revocation scalarproduct \
set statistics topology transport util; do \
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/share/gnunet/config.d/$$$$conf.conf $(1)/usr/share/gnunet/config.d ; \
done )
$(INSTALL_DATA) ./files/gnunet.upgrade $(1)/lib/upgrade/keep.d/gnunet
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) ./files/gnunet.defaults $(1)/etc/uci-defaults/gnunet
+ $(INSTALL_DIR) $(1)/lib/netifd/proto
+ $(INSTALL_BIN) ./files/gnunet-proto.sh $(1)/lib/netifd/proto
+endef
+
+define Package/gnunet/conffiles
+/etc/config/gnunet
endef
define Build/InstallDev
LIBEXEC_conversation:=helper-audio-playback helper-audio-record service-conversation
CONF_conversation:=conversation
+DEPENDS_hostlist:=+libmicrohttpd
+LIBEXEC_hostlist:=daemon-hostlist
+CONF_hostlist:=hostlist
+
DEPENDS_transport-http_client:=+libgnurl
PLUGIN_transport-http_client:=transport_http_client transport_https_client
PLUGIN_transport-wlan:=transport_wlan
LIBEXEC_transport-wlan:=helper-transport-wlan
-DEPENDS_experiments:=+libglpk +gnunet-sqlite
-BIN_experiments:=multicast rps
-LIB_experiments:=consensus dv env multicast psyc psycstore psycutil rps secretsharing social
-PLUGIN_experiments:=ats_mlp ats_ril namecache_flat namestore_flat psycstore_sqlite transport_dv
-LIBEXEC_experiments:=service-consensus service-dv service-evil-consensus service-multicast service-psyc service-psycstore service-rps service-secretsharing service-social
-CONF_experiments:=consensus dv multicast psyc psycstore rps secretsharing social
+DEPENDS_experiments:=+libglpk
+PLUGIN_experiments:=ats_mlp ats_ril
+LIBEXEC_experiments:=service-dht-whanau service-dht-xvine
+
+# BIN_dv:=dv
+LIB_dv:=dv
+PLUGIN_dv:=transport_dv
+LIBEXEC_dv:=service-dv
+CONF_dv:=dv
-DEPENDS_fs:=+gnunet-datastore +libextractor
+DEPENDS_fs:=+gnunet-datastore +gnunet-peerstore +libextractor
BIN_fs:=auto-share directory download download-manager.scm fs publish unindex search
LIB_fs:=fs
PLUGIN_fs:=block_fs
LIBEXEC_fs:=helper-fs-publish service-fs
CONF_fs:=fs
-DEPENDS_gns:=+gnunet-vpn
-USERID_gns:=gnunetdns=401:gnunetdns=401
+DEPENDS_gns:=+gnunet-vpn +iptables-mod-extra
+USERID_gns:=gnunet=400:gnunetdns=401
BIN_gns:=gns gns-import.sh namecache namestore resolver
LIB_gns:=gns gnsrecord namecache namestore
PLUGIN_gns:=block_dns block_gns gnsrecord_dns gnsrecord_gns
-LIBEXEC_gns:=dns2gns gns-proxy helper-dns namestore-fcfsd service-dns service-gns service-namecache service-namestore service-resolver
+LIBEXEC_gns:=dns2gns helper-dns service-dns service-gns service-namecache service-namestore service-resolver
CONF_gns:=dns gns namecache namestore resolver
+DEPENDS_namestore-fcfsd:=+gnunet-gns +libmicrohttpd
+LIBEXEC_namestore-fcfsd:=namestore-fcfsd
+
+DEPENDS_gns-proxy:=+gnunet-gns +libmicrohttpd
+LIBEXEC_gns-proxy:=gns-proxy
+
DEPENDS_datastore:=+gnunet-gns +libsqlite3
BIN_datastore:=datastore
LIB_datastore:=datastore
LIBEXEC_datastore:=daemon-latency-logger service-datastore
CONF_datastore:=datastore
+BIN_peerstore:=peerstore
+LIB_peerstore:=peerstore
+LIBEXEC_peerstore:=service-peerstore
+CONF_peerstore:=peerstore
+
+DEPENDS_flat:=+gnunet-gns
+PLUGIN_flat:=namecache_flat namestore_flat
+
DEPENDS_mysql:=+gnunet-gns +gnunet-datastore +libmysqlclient
LIB_mysql:=mysql
PLUGIN_mysql:=datastore_mysql
DEPENDS_pgsql:=+gnunet-gns +gnunet-datastore +libpq
-LIB_pgsql:=postgres
+LIB_pgsql:=postgres pq
PLUGIN_pgsql:=datacache_postgres datastore_postgres namecache_postgres namestore_postgres
-DEPENDS_sqlite:=+gnunet-gns +gnunet-datastore +libsqlite3
+DEPENDS_rest:=+gnunet-gns +gnunet-social +libmicrohttpd +jansson
+LIB_rest:=rest
+PLUGIN_rest:=rest_gns rest_identity rest_identity_provider rest_namestore
+LIBEXEC_rest:=rest-server
+CONF_rest:=rest
+
+BIN_rps:=rps
+LIB_rps:=rps
+LIBEXEC_rps:=service-rps
+CONF_rps:=rps
+
+DEPENDS_social:=+gnunet-sqlite +libmicrohttpd +jansson
+BIN_social:=identity-token multicast
+LIB_social:=consensus identityprovider multicast psyc psycstore psycutil secretsharing social
+PLUGIN_social:=psycstore_sqlite
+LIBEXEC_social:=service-consensus service-evil-consensus service-identity-provider service-multicast service-psyc service-psycstore service-secretsharing service-social
+CONF_social:=consensus multicast psyc psycstore secretsharing social
+
+DEPENDS_sqlite:=+gnunet-gns +gnunet-datastore +gnunet-peerstore +libsqlite3
PLUGIN_sqlite:=datacache_sqlite datastore_sqlite namecache_sqlite namestore_sqlite peerstore_sqlite
DEPENDS_transport-bluetooth:=+bluez-libs
DEPENDS_utils:=+certtool +openssl-util
BIN_utils:=gns-proxy-setup-ca transport-certificate-creation scrypt
-DEPENDS_vpn:=+kmod-tun +iptables
+DEPENDS_vpn:=+kmod-tun +iptables +firewall
BIN_vpn:=vpn
LIB_vpn:=tun vpn
LIBEXEC_vpn:=daemon-exit daemon-pt helper-exit helper-vpn service-vpn
CONF_vpn:=exit pt vpn
+
+define Package/gnunet-gns/prerm
+#!/bin/sh
+
+uci -q batch <<EOF
+del network.gnunetdns
+del network.gndnsrtt
+del network.gndnsrl
+commit network
+
+del firewall.gnunetdns
+del firewall.gndnsinc
+commit firewall
+EOF
+endef
+
+define Package/gnunet-vpn/prerm
+#!/bin/sh
+
+uci -q batch <<EOF
+del network.gnunetvpn
+del network.gnunetexit
+commit network
+del firewall.gnunetvpn
+del firewall.gnunetexit
+del firewall.gnexitfwd
+commit firewall
+EOF
+endef
+
+define PostInstFixSUIDPerms
+ define Package/$(1)/postinst
+#!/bin/sh
+[ -e /usr/share/gnunet/.permfix ] && rm /usr/share/gnunet/.permfix
+ endef
+endef
+
+$(eval $(call PostInstFixSUIDPerms,gnunet))
+$(eval $(call PostInstFixSUIDPerms,gnunet-gns))
+$(eval $(call PostInstFixSUIDPerms,gnunet-transport-bluetooth))
+$(eval $(call PostInstFixSUIDPerms,gnunet-transport-wlan))
+$(eval $(call PostInstFixSUIDPerms,gnunet-vpn))
+
$(eval $(call BuildPackage,gnunet))
$(eval $(call BuildComponent,conversation,conversation component,))
+$(eval $(call BuildComponent,datastore,data storage components,))
+$(eval $(call BuildComponent,dv,distance-vector routing component,))
$(eval $(call BuildComponent,experiments,experimental components,))
+$(eval $(call BuildComponent,flat,flat storage backends,))
$(eval $(call BuildComponent,fs,file-sharing components,))
$(eval $(call BuildComponent,gns,name resolution components,y))
-$(eval $(call BuildComponent,datastore,storage components,))
+$(eval $(call BuildComponent,gns-proxy,gns-proxy component,))
+$(eval $(call BuildComponent,mysql,mySQL datastore backend,))
+$(eval $(call BuildComponent,namestore-fcfsd,fist-come-first-serve registration server,))
+$(eval $(call BuildComponent,pgsql,PostgreSQL storage backends,))
+$(eval $(call BuildComponent,peerstore,peerstore local persistency component,))
+$(eval $(call BuildComponent,rest,REST interface,))
+$(eval $(call BuildComponent,rps,RPS routing component,))
+$(eval $(call BuildComponent,social,social components,))
+$(eval $(call BuildComponent,sqlite,libsqlite3 storage backends,y))
$(eval $(call BuildComponent,transport-bluetooth,bluetooth transport,))
$(eval $(call BuildComponent,transport-http_client,HTTP/HTTPS client transport,y))
$(eval $(call BuildComponent,transport-http_server,HTTP/HTTPS server transport,))
$(eval $(call BuildComponent,transport-wlan,WLAN transport,))
$(eval $(call BuildComponent,utils,administration utililties,))
$(eval $(call BuildComponent,vpn,vpn components,y))
-$(eval $(call BuildComponent,mysql,mySQL datastore backend,))
-$(eval $(call BuildComponent,pgsql,PostgreSQL backends,))
-$(eval $(call BuildComponent,sqlite,libsqlite3 backends,y))
--- /dev/null
+#!/bin/sh
+
+uci -q get gnunet.namestore || uci set gnunet.namestore=gnunet-config
+uci -q get gnunet.namecache || uci set gnunet.namecache=gnunet-config
+
+uci -q batch <<EOF
+ del gnunet.namestore_flat
+ set gnunet.namestore_flat=gnunet.config
+ set gnunet.namestore_flat.FILENAME=/etc/gnunet/namestore.flat
+ set gnunet.namestore.DATABASE=flat
+ set gnunet.namecache.DATABASE=flat
+ commit gnunet
+EOF
--- /dev/null
+#!/bin/sh
+
+uci -q batch <<EOF
+del network.gnunetdns
+set network.gnunetdns=interface
+set network.gnunetdns.ifname='gnunet-dns'
+set network.gnunetdns.proto='gnunet'
+
+del network.gndnsrtt
+set network.gndnsrtt=route
+set network.gndnsrtt.interface='gnunetdns'
+set network.gndnsrtt.table='53'
+set network.gndnsrtt.target='0.0.0.0/0'
+
+del network.gndnsrl
+set network.gndnsrl=rule
+set network.gndnsrl.mark='0x8260035'
+set network.gndnsrl.lookup='53'
+set network.gndnsrk.priority='0'
+
+commit network
+
+del firewall.gnunetdns
+set firewall.gnunetdns=zone
+set firewall.gnunetdns.name='gnunetdns'
+set firewall.gnunetdns.network='gnunetdns'
+set firewall.gnunetdns.input='ACCEPT'
+set firewall.gnunetdns.output='ACCEPT'
+set firewall.gnunetdns.forward='ACCEPT'
+
+del firewall.gndnsrl
+set firewall.gndnsrl=rule
+set firewall.gndnsrl.name='Mark-local-DNS-for-GNUnet'
+set firewall.gndnsrl.proto='udp'
+set firewall.gndnsrl.dest_port='53'
+set firewall.gndnsrl.extra='-m owner ! --gid-owner gnunetdns'
+set firewall.gndnsrl.target='MARK'
+set firewall.gndnsrl.set_mark='136708149'
+
+del firewall.gndnsrl2
+set firewall.gndnsrl2=rule
+set firewall.gndnsrl2.name='Mark-forwarded-DNS-for-GNUnet'
+set firewall.gndnsrl2.enabled='0'
+set firewall.gndnsrl2.src='*'
+set firewall.gndnsrl2.proto='udp'
+set firewall.gndnsrl2.dest_port='53'
+set firewall.gndnsrl2.target='MARK'
+set firewall.gndnsrl2.set_mark='136708149'
+
+commit firewall
+EOF
--- /dev/null
+#!/bin/sh
+# gnunet.sh - GNUnet proto for netifd
+# Copyright (c) 2016 OpenWrt.org
+
+[ -n "$INCLUDE_ONLY" ] || {
+ . /lib/functions.sh
+ . /lib/functions/network.sh
+ . ../netifd-proto.sh
+ init_proto "$@"
+}
+
+proto_gnunet_setup() {
+ local cfg="$1"
+ local iface="$2"
+
+ local ipv4_addr ipv6_addr prefix ipaddr ip6addr
+
+ local configfile="/var/run/gnunet/gnunet.conf"
+ local gnunet_iftype
+
+ for gnit in dns exit vpn; do
+ local i1="$(gnunet-config -c $configfile -s $gnit -o IFNAME 2>/dev/null)"
+ local i2="$(gnunet-config -c $configfile -s $gnit -o TUN_IFNAME 2>/dev/null)"
+ [ "$i1" = "$iface" -o "$i2" = "$iface" ] && gnunet_iftype="$gnit"
+ done
+
+ if [ -z "$iface" -o -z "$gnunet_iftype" ]; then
+ proto_setup_failed "$cfg"
+ return
+ fi
+
+ proto_init_update "$iface" 1
+ ipaddr="$(gnunet-config -c $configfile -s $gnunet_iftype -o IPV4ADDR 2>/dev/null)"
+ ipmask="$(gnunet-config -c $configfile -s $gnunet_iftype -o IPV4MASK 2>/dev/null)"
+ ip6addr="$(gnunet-config -c $configfile -s $gnunet_iftype -o IPV6ADDR 2>/dev/null)"
+ ip6prefix="$(gnunet-config -c $configfile -s $gnunet_iftype -o IPV6PREFIX 2>/dev/null)"
+
+ [ -n "$ipaddr" ] && proto_add_ipv4_address "$ipaddr" "$ipmask"
+ [ -n "$ip6addr" ] && proto_add_ipv6_address "$ip6addr" "$ip6prefix"
+ proto_send_update "$cfg"
+}
+
+proto_gnunet_teardown() {
+ return
+}
+
+[ -n "$INCLUDE_ONLY" ] || {
+ add_protocol gnunet
+}
+
+
--- /dev/null
+#!/bin/sh
+
+uci -q get gnunet.namestore || uci set gnunet.namestore=gnunet-config
+uci -q get gnunet.namecache || uci set gnunet.namecache=gnunet-config
+
+uci -q batch <<EOF
+ del gnunet.namestore_sqlite
+ set gnunet.namestore_sqlite=gnunet-config
+ set gnunet.namestore_sqlite.FILENAME=/etc/gnunet/namestore.sqlite
+ set gnunet.namestore.DATABASE=sqlite
+ set gnunet.namecache.DATABASE=sqlite
+ del gnunet.peerstore_sqlite
+ set gnunet.peerstore_sqlite=gnunet-config
+ set gnunet.peerstore_sqlite.FILENAME=/etc/gnunet/peerstore.sqlite
+ commit gnunet
+EOF
--- /dev/null
+#!/bin/sh
+
+uci -q batch <<EOF
+del network.gnunetvpn
+set network.gnunetvpn=interface
+set network.gnunetvpn.ifname='vpn-gnunet'
+set network.gnunetvpn.proto='gnunet'
+del network.gnunetexit
+set network.gnunetexit=interface
+set network.gnunetexit.ifname='exit-gnunet'
+set network.gnunetexit.proto='gnunet'
+commit network
+
+del firewall.gnunetvpn
+set firewall.gnunetvpn=zone
+set firewall.gnunetvpn.name='gnunetvpn'
+set firewall.gnunetvpn.network='gnunetvpn'
+set firewall.gnunetvpn.input='ACCEPT'
+set firewall.gnunetvpn.output='ACCEPT'
+set firewall.gnunetvpn.forward='REJECT'
+del firewall.gnunetexit
+set firewall.gnunetexit=zone
+set firewall.gnunetexit.name='gnunetexit'
+set firewall.gnunetexit.network='gnunetexit'
+set firewall.gnunetexit.input='ACCEPT'
+set firewall.gnunetexit.output='ACCEPT'
+set firewall.gnunetexit.forward='REJECT'
+
+del firewall.gnexitfwd
+set firewall.gnexitfwd=forwarding
+set firewall.gnexitfwd.src='gnunetexit'
+set firewall.gnexitfwd.dest='wan'
+commit firewall
+EOF
touch /etc/config/gnunet
-uci set gnunet.datastore=gnunet-config
-uci set gnunet.datastore.DATABASE=heap
-uci set gnunet.datastore.QUOTA="4 MB"
+uci batch <<EOF
+set gnunet.datastore=gnunet-config
+set gnunet.datastore.DATABASE=heap
+set gnunet.datastore.QUOTA="4 MB"
-uci set gnunet.fs=gnunet-config
-uci set gnunet.fs.CONTENT_PUSHING=NO
-uci set gnunet.fs.CONTENT_CACHING=NO
+set gnunet.fs=gnunet-config
+set gnunet.fs.CONTENT_PUSHING=NO
+set gnunet.fs.CONTENT_CACHING=NO
-# limit dhtcache memory usage to 4 MB
-uci set gnunet.dhtcache=gnunet-config
-uci set gnunet.dhtcache.QUOTA="4 MB"
+set gnunet.dhtcache=gnunet-config
+set gnunet.dhtcache.QUOTA="4 MB"
-# enable dns2gns
-uci set gnunet.dns2gns=gnunet-config
-uci set gnunet.dns2gns.AUTOSTART=YES
-uci set gnunet.dns2gns.FORCESTART=YES
+set gnunet.dns2gns=gnunet-config
+set gnunet.dns2gns.AUTOSTART=YES
+set gnunet.dns2gns.FORCESTART=YES
-# enable v4/v6 protocol translation for EXIT/VPN
-uci set gnunet.pt=gnunet-config
-uci set gnunet.pt.FORCESTART=YES
+set gnunet.pt=gnunet-config
+set gnunet.pt.FORCESTART=YES
-uci set gnunet.exit=gnunet-config
-uci set gnunet.exit.AUTOSTART=YES
-uci set gnunet.exit.FORCESTART=YES
+set gnunet.exit=gnunet-config
+set gnunet.exit.AUTOSTART=YES
+set gnunet.exit.FORCESTART=YES
-# increase WORKDELAY to something more sane on small CPUs
-uci set gnunet.nse=gnunet-config
-uci set gnunet.nse.WORKDELAY='500 ms'
+set gnunet.nse=gnunet-config
+set gnunet.nse.WORKDELAY='500 ms'
+
+commit gnunet
+
+EOF
-uci commit gnunet
PROG=/usr/lib/gnunet/libexec/gnunet-service-arm
GNUNET_HOME=/var/run/gnunet
-LOGFILE=$GNUNET_HOME/gnunet.log
+# LOGFILE=$GNUNET_HOME/gnunet.log
CONFIGFILE=$GNUNET_HOME/gnunet.conf
SUID_ROOT_HELPERS="exit nat-server nat-client transport-bluetooth transport-wlan vpn"
chmodown_execbin() {
execname=/usr/lib/gnunet/libexec/gnunet-$1
if [ -x $execname ]; then
- chmod $2 $execname
- [ "$3" ] && chown $3 $execname
+ [ "$3" ] && chown $3 $execname 2>/dev/null && chmod $2 $execname
fi
}
chmodown_execbin helper-$helper u+s
done
chmodown_execbin helper-dns 4750 root:gnunetdns
- chmodown_execbin service-dns 2750 root:gnunetdns
+ chmodown_execbin service-dns 2750 gnunet:gnunetdns
touch /usr/share/gnunet/.permfix
}
chmod 0750 $GNUNET_HOME
fi
touch $CONFIGFILE
- chown root:gnunet $CONFIGFILE
+ chown gnunet:gnunet $CONFIGFILE
chmod 0640 $CONFIGFILE
gnunet-config -c $CONFIGFILE -s PATHS -o GNUNET_HOME -V $GNUNET_HOME
chown gnunet:gnunet /etc/gnunet
}
- # defaults paths
+ # defaults paths for persistent files
gnunet-config -c $CONFIGFILE -s PATHS -o GNUNET_CONFIG_HOME -V /etc/gnunet
gnunet-config -c $CONFIGFILE -s PEER -o PRIVATE_KEY -V /etc/gnunet/private_key.ecc
gnunet-config -c $CONFIGFILE -s identity -o EGODIR -V /etc/gnunet/identity/egos
gnunet-config -c $CONFIGFILE -s revocation -o DATABASE -V /etc/gnunet/revocation.dat
gnunet-config -c $CONFIGFILE -s nse -o PROOFFILE -V /etc/gnunet/proof.dat
- gnunet-config -c $CONFIGFILE -s namestore-sqlite -o FILENAME -V /etc/gnunet/namestore.sqlite
# enable all installed transport plugins
transport_plugins=$(gnunet-config -c $CONFIGFILE -s transport -o PLUGINS)
done
gnunet-config -c $CONFIGFILE -s transport -o PLUGINS -V "$transport_plugins"
+ # do not touch sysctl, iptables and routing
+ gnunet-config -c $CONFIGFILE -s dns -o SKIP_ROUTING_SETUP -V YES
+ gnunet-config -c $CONFIGFILE -s exit -o EXIT_IFNAME -V ''
+
# apply config from UCI
_gnunet_section=""
config_cb()
procd_open_instance
procd_set_param user gnunet
- procd_set_param command $PROG -c $CONFIGFILE -l $LOGFILE
+ procd_set_param command $PROG -c $CONFIGFILE
+ [ "$LOGFILE" ] && procd_append_param command -l $LOGFILE
procd_set_param respawn
procd_close_instance
}
include $(TOPDIR)/rules.mk
PKG_NAME:=haproxy
-PKG_VERSION:=1.5.15
-PKG_RELEASE:=10
+PKG_VERSION:=1.5.16
+PKG_RELEASE:=01
PKG_SOURCE:=haproxy-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://haproxy.1wt.eu/download/1.5/src/
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_MD5SUM:=eeaa35744f84c92184cd735ee56dd0a3
+PKG_MD5SUM:=294fdb5aaaccba00c2070e5f4baf9f0e
PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
PKG_LICENSE:=GPL-2.0
+++ /dev/null
-From 4818bc3035bccc00d8c3fc9b14ec37366cac3059 Mon Sep 17 00:00:00 2001
-From: Jerome Duval <jerome.duval@gmail.com>
-Date: Mon, 2 Nov 2015 17:47:43 +0000
-Subject: [PATCH 01/10] BUG/BUILD: replace haproxy-systemd-wrapper with
- $(EXTRA) in install-bin.
-
-[wt: this should be backported to 1.6 and 1.5 as well since some platforms
- don't build the systemd-wrapper]
-(cherry picked from commit 796d2fc136359c31c5c35f00c0751890ab42a016)
-(cherry picked from commit 9d0b47d96825b0584ea81c826a96ed8babcc016b)
----
- Makefile | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index 9556069..e3199b2 100644
---- a/Makefile
-+++ b/Makefile
-@@ -719,10 +719,9 @@ install-doc:
- install -m 644 doc/$$x.txt "$(DESTDIR)$(DOCDIR)" ; \
- done
-
--install-bin: haproxy haproxy-systemd-wrapper
-+install-bin: haproxy $(EXTRA)
- install -d "$(DESTDIR)$(SBINDIR)"
-- install haproxy "$(DESTDIR)$(SBINDIR)"
-- install haproxy-systemd-wrapper "$(DESTDIR)$(SBINDIR)"
-+ install haproxy $(EXTRA) "$(DESTDIR)$(SBINDIR)"
-
- install: install-bin install-man install-doc
-
---
-2.4.10
-
+++ /dev/null
-From 1af6a324c3206902f69bd2c9838e94ffb4cee3ae Mon Sep 17 00:00:00 2001
-From: Lukas Tribus <luky-37@hotmail.com>
-Date: Thu, 5 Nov 2015 13:59:30 +0100
-Subject: [PATCH 02/10] BUG/MINOR: acl: don't use record layer in req_ssl_ver
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The initial record layer version in a SSL handshake may be set to TLSv1.0
-or similar for compatibility reasons, this is allowed as per RFC5246
-Appendix E.1 [1]. Some implementations are Openssl [2] and NSS [3].
-
-A related issue has been fixed some time ago in commit 57d229747
-("BUG/MINOR: acl: req_ssl_sni fails with SSLv3 record version").
-
-Fix this by using the real client hello version instead of the record
-layer version.
-
-This was reported by Julien Vehent and analyzed by Cyril Bonté.
-The initial patch is from Julien Vehent as well.
-
-This should be backported to stable series, the req_ssl_ver keyword was
-first introduced in 1.3.16.
-
-[1] https://tools.ietf.org/html/rfc5246#appendix-E.1
-[2] https://github.com/openssl/openssl/commit/4a1cf50187659e60c5867ecbbc36e37b2605d2c3
-[3] https://bugzilla.mozilla.org/show_bug.cgi?id=774547
-(cherry picked from commit c93242cab986087f06a4655d14fec18eecb7f5f4)
-(cherry picked from commit b048a6eb3d9cb518e4a378e20ba2a801afec553c)
----
- src/payload.c | 11 +++++++----
- 1 file changed, 7 insertions(+), 4 deletions(-)
-
-diff --git a/src/payload.c b/src/payload.c
-index f62163c..b8f1ca3 100644
---- a/src/payload.c
-+++ b/src/payload.c
-@@ -148,21 +148,24 @@ smp_fetch_req_ssl_ver(struct proxy *px, struct session *s, void *l7, unsigned in
- data = (const unsigned char *)s->req->buf->p;
- if ((*data >= 0x14 && *data <= 0x17) || (*data == 0xFF)) {
- /* SSLv3 header format */
-- if (bleft < 5)
-+ if (bleft < 11)
- goto too_short;
-
-- version = (data[1] << 16) + data[2]; /* version: major, minor */
-+ version = (data[1] << 16) + data[2]; /* record layer version: major, minor */
- msg_len = (data[3] << 8) + data[4]; /* record length */
-
- /* format introduced with SSLv3 */
- if (version < 0x00030000)
- goto not_ssl;
-
-- /* message length between 1 and 2^14 + 2048 */
-- if (msg_len < 1 || msg_len > ((1<<14) + 2048))
-+ /* message length between 6 and 2^14 + 2048 */
-+ if (msg_len < 6 || msg_len > ((1<<14) + 2048))
- goto not_ssl;
-
- bleft -= 5; data += 5;
-+
-+ /* return the client hello client version, not the record layer version */
-+ version = (data[4] << 16) + data[5]; /* client hello version: major, minor */
- } else {
- /* SSLv2 header format, only supported for hello (msg type 1) */
- int rlen, plen, cilen, silen, chlen;
---
-2.4.10
-
+++ /dev/null
-From ef8a113d59e89b2214adf7ab9f9b0b75905a7050 Mon Sep 17 00:00:00 2001
-From: lsenta <laurent.senta@gmail.com>
-Date: Fri, 13 Nov 2015 10:44:22 +0100
-Subject: [PATCH 03/10] BUG: http: do not abort keep-alive connections on
- server timeout
-
-When a server timeout is detected on the second or nth request of a keep-alive
-connection, HAProxy closes the connection without writing a response.
-Some clients would fail with a remote disconnected exception and some
-others would retry potentially unsafe requests.
-
-This patch removes the special case and makes sure a 504 timeout is
-written back whenever a server timeout is handled.
-
-Signed-off-by: lsenta <laurent.senta@gmail.com>
-(cherry picked from commit 1e1f41d0f3473d86da84dc3785b7d7cbef6e9044)
-(cherry picked from commit 1f279c0b116f7fbc208793fffbd256c3c736fc52)
----
- src/proto_http.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/src/proto_http.c b/src/proto_http.c
-index 17742c6..e7e1785 100644
---- a/src/proto_http.c
-+++ b/src/proto_http.c
-@@ -5782,8 +5782,6 @@ int http_wait_for_response(struct session *s, struct channel *rep, int an_bit)
- else if (rep->flags & CF_READ_TIMEOUT) {
- if (msg->err_pos >= 0)
- http_capture_bad_message(&s->be->invalid_rep, s, msg, msg->msg_state, s->fe);
-- else if (txn->flags & TX_NOT_FIRST)
-- goto abort_keep_alive;
-
- s->be->be_counters.failed_resp++;
- if (objt_server(s->target)) {
---
-2.4.10
-
+++ /dev/null
-From c0d56134320e507c82952f3d2a03f76b701945cb Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Wed, 18 Nov 2015 11:59:55 +0100
-Subject: [PATCH 04/10] BUG/MEDIUM: http: switch the request channel to
- no-delay once done.
-
-There's an issue when sending POST data that came in a second packet,
-the CF_NEVER_WAIT flag is not always set on the request channel, while
-the server is waiting for the request. We must always set this flag in
-this case since we're not going to shut down after sending, contrary
-to the response side.
-
-Note that option http-no-delay works around this issue.
-
-Reproducer :
-
-listen px
- mode http
- timeout client 10s
- timeout server 5s
- timeout connect 3s
- option http-server-close
- #option http-no-delay
- bind :8001
- server s1 127.0.0.1:8003
-
-$ (printf "POST / HTTP/1.1\r\nTransfer-encoding: chunked\r\n\r\n"; sleep 0.01; printf "10\r\nAZERTYUIOPQSDFGH\r\n0\r\n\r\n") | nc6 0 8001
-
-Before this fix :
-
-12:03:31.946763 epoll_wait(3, {{EPOLLIN, {u32=5, u64=5}}}, 200, 1000) = 1
-12:03:32.634175 accept4(5, {sa_family=AF_INET, sin_port=htons(53849), sin_addr=inet_addr("127.0.0.1")}, [16], SOCK_NONBLOCK) = 6
-12:03:32.634318 setsockopt(6, SOL_TCP, TCP_NODELAY, [1], 4) = 0
-12:03:32.634434 accept4(5, 0x7ffccfbb2cf0, [128], SOCK_NONBLOCK) = -1 EAGAIN (Resource temporarily unavailable)
-12:03:32.634574 recvfrom(6, "POST / HTTP/1.1\r\nTransfer-encodi"..., 8192, 0, NULL, NULL) = 47
-12:03:32.634809 setsockopt(6, SOL_TCP, TCP_QUICKACK, [1], 4) = 0
-12:03:32.634952 socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 7
-12:03:32.635031 fcntl(7, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
-12:03:32.635089 setsockopt(7, SOL_TCP, TCP_NODELAY, [1], 4) = 0
-12:03:32.635153 connect(7, {sa_family=AF_INET, sin_port=htons(8003), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress)
-12:03:32.635315 epoll_wait(3, {}, 200, 0) = 0
-12:03:32.635394 sendto(7, "POST / HTTP/1.1\r\nTransfer-encodi"..., 66, MSG_DONTWAIT|MSG_NOSIGNAL, NULL, 0) = 66
-12:03:32.635527 recvfrom(6, 0x7f0224e66024, 8192, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
-12:03:32.635651 epoll_ctl(3, EPOLL_CTL_ADD, 6, {EPOLLIN|0x2000, {u32=6, u64=6}}) = 0
-12:03:32.635782 epoll_wait(3, {}, 200, 0) = 0
-12:03:32.635842 recvfrom(7, 0x7f0224e66024, 8192, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
-12:03:32.635924 epoll_ctl(3, EPOLL_CTL_ADD, 7, {EPOLLIN|0x2000, {u32=7, u64=7}}) = 0
-12:03:32.636027 epoll_wait(3, {{EPOLLIN, {u32=6, u64=6}}}, 200, 1000) = 1
-12:03:32.644892 recvfrom(6, "10\r\nAZERTYUIOPQSDFGH\r\n0\r\n\r\n", 8192, 0, NULL, NULL) = 27
-12:03:32.645016 epoll_wait(3, {}, 200, 0) = 0
-12:03:32.645105 sendto(7, "10\r\nAZERTYUIOPQSDFGH\r\n0\r\n\r\n", 27, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_MORE, NULL, 0) = 27
-
-After the fix :
-
-11:59:12.538617 connect(7, {sa_family=AF_INET, sin_port=htons(8003), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress)
-11:59:12.538787 epoll_wait(3, {}, 200, 0) = 0
-11:59:12.538867 sendto(7, "POST / HTTP/1.1\r\nTransfer-encodi"..., 66, MSG_DONTWAIT|MSG_NOSIGNAL, NULL, 0) = 66
-11:59:12.539031 recvfrom(6, 0x7f832ce45024, 8192, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
-11:59:12.539161 epoll_ctl(3, EPOLL_CTL_ADD, 6, {EPOLLIN|0x2000, {u32=6, u64=6}}) = 0
-11:59:12.539259 epoll_wait(3, {}, 200, 0) = 0
-11:59:12.539337 recvfrom(7, 0x7f832ce45024, 8192, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
-11:59:12.539421 epoll_ctl(3, EPOLL_CTL_ADD, 7, {EPOLLIN|0x2000, {u32=7, u64=7}}) = 0
-11:59:12.539499 epoll_wait(3, {{EPOLLIN, {u32=6, u64=6}}}, 200, 1000) = 1
-11:59:12.548519 recvfrom(6, "10\r\nAZERTYUIOPQSDFGH\r\n0\r\n\r\n", 8192, 0, NULL, NULL) = 27
-11:59:12.548844 epoll_wait(3, {}, 200, 0) = 0
-11:59:12.549012 sendto(7, "10\r\nAZERTYUIOPQSDFGH\r\n0\r\n\r\n", 27, MSG_DONTWAIT|MSG_NOSIGNAL, NULL, 0) = 27
-11:59:12.549454 epoll_wait(3, {}, 200, 1000) = 0
-
-This fix must be backported to 1.6, 1.5 and 1.4.
-(cherry picked from commit 7f876a1eeb14ffae708327aad8a0b4b029da5e26)
-(cherry picked from commit 712a5339f384db62796aa4d4901e091dd7fd24dd)
----
- src/proto_http.c | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/src/proto_http.c b/src/proto_http.c
-index e7e1785..b32e778 100644
---- a/src/proto_http.c
-+++ b/src/proto_http.c
-@@ -5001,6 +5001,13 @@ int http_sync_req_state(struct session *s)
- */
- chn->cons->flags |= SI_FL_NOHALF;
-
-+ /* In any case we've finished parsing the request so we must
-+ * disable Nagle when sending data because 1) we're not going
-+ * to shut this side, and 2) the server is waiting for us to
-+ * send pending data.
-+ */
-+ chn->flags |= CF_NEVER_WAIT;
-+
- if (txn->rsp.msg_state == HTTP_MSG_ERROR)
- goto wait_other_side;
-
-@@ -5015,7 +5022,6 @@ int http_sync_req_state(struct session *s)
- /* if any side switches to tunnel mode, the other one does too */
- channel_auto_read(chn);
- txn->req.msg_state = HTTP_MSG_TUNNEL;
-- chn->flags |= CF_NEVER_WAIT;
- goto wait_other_side;
- }
-
-@@ -5048,7 +5054,6 @@ int http_sync_req_state(struct session *s)
- if ((txn->flags & TX_CON_WANT_MSK) == TX_CON_WANT_TUN) {
- channel_auto_read(chn);
- txn->req.msg_state = HTTP_MSG_TUNNEL;
-- chn->flags |= CF_NEVER_WAIT;
- }
- }
-
---
-2.4.10
-
+++ /dev/null
-From e77015cdc18ab74aba61cdf57de56d06be5c2a4d Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Wed, 14 Jan 2015 11:48:58 +0100
-Subject: [PATCH 05/10] MINOR: config: extend the default max hostname length
- to 64 and beyond
-
-Some users reported that the default max hostname length of 32 is too
-short in some environments. This patch does two things :
-
- - it relies on the system's max hostname length as found in MAXHOSTNAMELEN
- if it is set. This is the most logical thing to do as the system libs
- generally present the appropriate value supported by the system. This
- value is 64 on Linux and 256 on Solaris, to give a few examples.
-
- - otherwise it defaults to 64
-
-It is still possible to override this value by defining MAX_HOSTNAME_LEN at
-build time. After some observation time, this patch may be backported to
-1.5 if it does not cause any build issue, as it is harmless and may help
-some users.
-(cherry picked from commit 75abcb3106e2c27ef983df885558cf94e01f717a)
-
-Cc: Lukas Tribus <luky-37@hotmail.com>
-Cc: jose.castro.leon@cern.ch
-
-[wt: no issue reported so far and Jose rightfully asked for it in 1.5]
----
- include/common/defaults.h | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/include/common/defaults.h b/include/common/defaults.h
-index 0075509..a191b8a 100644
---- a/include/common/defaults.h
-+++ b/include/common/defaults.h
-@@ -190,8 +190,12 @@
-
- /* Maximum host name length */
- #ifndef MAX_HOSTNAME_LEN
--#define MAX_HOSTNAME_LEN 32
--#endif
-+#if MAXHOSTNAMELEN
-+#define MAX_HOSTNAME_LEN MAXHOSTNAMELEN
-+#else
-+#define MAX_HOSTNAME_LEN 64
-+#endif // MAXHOSTNAMELEN
-+#endif // MAX_HOSTNAME_LEN
-
- /* Maximum health check description length */
- #ifndef HCHK_DESC_LEN
---
-2.4.10
-
+++ /dev/null
-From 3de8e7ab8d9125402cc1a8fb48ee475ee21d7d4c Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Wed, 25 Nov 2015 20:11:11 +0100
-Subject: [PATCH 06/10] BUG/MEDIUM: http: don't enable auto-close on the
- response side
-
-There is a bug where "option http-keep-alive" doesn't force a response
-to stay in keep-alive if the server sends the FIN along with the response
-on the second or subsequent response. The reason is that the auto-close
-was forced enabled when recycling the HTTP transaction and it's never
-disabled along the response processing chain before the SHUTR gets a
-chance to be forwarded to the client side. The MSG_DONE state of the
-HTTP response properly disables it but too late.
-
-There's no more reason for enabling auto-close here, because either it
-doesn't matter in non-keep-alive modes because the connection is closed,
-or it is automatically enabled by process_stream() when it sees there's
-no analyser on the stream.
-
-This bug also affects 1.5 so a backport is desired.
-(cherry picked from commit 714ea78c9a09fe6a35a1f2d86af8f7fc9abb64d1)
-(cherry picked from commit a15091be17f27fcf4e3a84338df1a8b732e396a1)
----
- src/proto_http.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/src/proto_http.c b/src/proto_http.c
-index b32e778..5facfbb 100644
---- a/src/proto_http.c
-+++ b/src/proto_http.c
-@@ -4946,11 +4946,13 @@ void http_end_txn_clean_session(struct session *s)
- s->rep->flags |= CF_EXPECT_MORE;
- }
-
-- /* we're removing the analysers, we MUST re-enable events detection */
-+ /* we're removing the analysers, we MUST re-enable events detection.
-+ * We don't enable close on the response channel since it's either
-+ * already closed, or in keep-alive with an idle connection handler.
-+ */
- channel_auto_read(s->req);
- channel_auto_close(s->req);
- channel_auto_read(s->rep);
-- channel_auto_close(s->rep);
-
- /* we're in keep-alive with an idle connection, monitor it */
- si_idle_conn(s->req->cons);
---
-2.4.10
-
+++ /dev/null
-From 9154bc92ed11c6de75573dec341b6a0ce68bd0eb Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Wed, 25 Nov 2015 20:17:27 +0100
-Subject: [PATCH 07/10] BUG/MEDIUM: stream: fix half-closed timeout handling
-
-client-fin and server-fin are bogus. They are applied on the write
-side after a SHUTR was seen. The immediate effect is that sometimes
-if a SHUTR was seen after a SHUTW on the same side, the timeout is
-enabled again regardless of the fact that the output is already
-closed. This results in the timeout event not to be processed and
-a busy poll loop to happen until another timeout on the stream gets
-rid of it. Note that haproxy continues its job during this, it's just
-that it eats all the CPU trying to handle an event that it ignores.
-
-An reproducible case consists in having a client stop reading data from
-a server to ensure data remain in the response buffer, then the client
-sends a shutdown(write). If abortonclose is enabled on haproxy, the
-shutdown is passed to the server side and the server responds with a
-SHUTR that cannot immediately be forwarded to the client since the
-buffer is full. During this time the event is ignored and the task is
-woken again in loops.
-
-It is worth noting that the timeout handling since 1.5 is a bit fragile
-and that it might be possible that other similar conditions still exist,
-so the timeout handling should be audited regarding this issue.
-
-Many thanks to BaiYang for providing detailed information showing the
-problem in action.
-
-This bug also affects 1.5 thus the fix must be backported.
-(cherry picked from commit f25b3573d65fd2411c7537b7b0a4817b478df909)
-[Note for 1.5, it's in session.c here]
-(cherry picked from commit 44e86286159474a52dc74f80d3271504cc6f1550)
----
- src/session.c | 16 ----------------
- 1 file changed, 16 deletions(-)
-
-diff --git a/src/session.c b/src/session.c
-index 7520a85..2b2ad78 100644
---- a/src/session.c
-+++ b/src/session.c
-@@ -2213,10 +2213,6 @@ struct task *process_session(struct task *t)
- if (unlikely((s->req->flags & (CF_SHUTW|CF_SHUTW_NOW|CF_AUTO_CLOSE|CF_SHUTR)) ==
- (CF_AUTO_CLOSE|CF_SHUTR))) {
- channel_shutw_now(s->req);
-- if (tick_isset(s->fe->timeout.clientfin)) {
-- s->rep->wto = s->fe->timeout.clientfin;
-- s->rep->wex = tick_add(now_ms, s->rep->wto);
-- }
- }
-
- /* shutdown(write) pending */
-@@ -2241,10 +2237,6 @@ struct task *process_session(struct task *t)
- if (s->req->prod->flags & SI_FL_NOHALF)
- s->req->prod->flags |= SI_FL_NOLINGER;
- si_shutr(s->req->prod);
-- if (tick_isset(s->fe->timeout.clientfin)) {
-- s->rep->wto = s->fe->timeout.clientfin;
-- s->rep->wex = tick_add(now_ms, s->rep->wto);
-- }
- }
-
- /* it's possible that an upper layer has requested a connection setup or abort.
-@@ -2391,10 +2383,6 @@ struct task *process_session(struct task *t)
- if (unlikely((s->rep->flags & (CF_SHUTW|CF_SHUTW_NOW|CF_AUTO_CLOSE|CF_SHUTR)) ==
- (CF_AUTO_CLOSE|CF_SHUTR))) {
- channel_shutw_now(s->rep);
-- if (tick_isset(s->be->timeout.serverfin)) {
-- s->req->wto = s->be->timeout.serverfin;
-- s->req->wex = tick_add(now_ms, s->req->wto);
-- }
- }
-
- /* shutdown(write) pending */
-@@ -2417,10 +2405,6 @@ struct task *process_session(struct task *t)
- if (s->rep->prod->flags & SI_FL_NOHALF)
- s->rep->prod->flags |= SI_FL_NOLINGER;
- si_shutr(s->rep->prod);
-- if (tick_isset(s->be->timeout.serverfin)) {
-- s->req->wto = s->be->timeout.serverfin;
-- s->req->wex = tick_add(now_ms, s->req->wto);
-- }
- }
-
- if (s->req->prod->state == SI_ST_DIS || s->req->cons->state == SI_ST_DIS)
---
-2.4.10
-
+++ /dev/null
-From 07ccb48add8c8cb0dd8a0f7d3f4994866d0ef32e Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Thu, 26 Nov 2015 18:32:39 +0100
-Subject: [PATCH 08/10] BUG/MEDIUM: cli: changing compression rate-limiting
- must require admin level
-
-Right now it's possible to change the global compression rate limiting
-without the CLI being at the admin level.
-
-This fix must be backported to 1.6 and 1.5.
-(cherry picked from commit a1c2b2c4f3e65d198a0a4b25a4f655f7b307a855)
-(cherry picked from commit 9e5f1489c9f2d6926729890f249f7ebb9d3bfd43)
----
- src/dumpstats.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/src/dumpstats.c b/src/dumpstats.c
-index b4be2cd..b1bbf31 100644
---- a/src/dumpstats.c
-+++ b/src/dumpstats.c
-@@ -1695,6 +1695,12 @@ static int stats_sock_parse_request(struct stream_interface *si, char *line)
- if (strcmp(args[3], "global") == 0) {
- int v;
-
-+ if (s->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
-+ appctx->ctx.cli.msg = stats_permission_denied_msg;
-+ appctx->st0 = STAT_CLI_PRINT;
-+ return 1;
-+ }
-+
- if (!*args[4]) {
- appctx->ctx.cli.msg = "Expects a maximum input byte rate in kB/s.\n";
- appctx->st0 = STAT_CLI_PRINT;
---
-2.4.10
-
+++ /dev/null
-From 97ef6f99b8426ffdc97864fc8bb2d85c87cfdad0 Mon Sep 17 00:00:00 2001
-From: Thierry FOURNIER <tfournier@arpalert.org>
-Date: Tue, 3 Nov 2015 19:17:37 +0100
-Subject: [PATCH 09/10] BUILD: freebsd: double declaration
-
-On freebsd, the macro LIST_PREV already exists in the header file
-<sys/queue.h>, and this makes a build error.
-
-This patch removes the macros before declaring it. This ensure
-that the error doesn't occurs.
-(cherry picked from commit 1db96672c4cd264ebca8197bec93a5ce1b23aaa9)
-(cherry picked from commit 6cf9c6b270e57f05abf72cd61f4facb5b6980d57)
----
- include/common/mini-clist.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/include/common/mini-clist.h b/include/common/mini-clist.h
-index 3c3f001..404b6fa 100644
---- a/include/common/mini-clist.h
-+++ b/include/common/mini-clist.h
-@@ -144,6 +144,7 @@ struct cond_wordlist {
- * which contains list head <lh>, which is known as element <el> in
- * struct pt.
- */
-+#undef LIST_PREV
- #define LIST_PREV(lh, pt, el) (LIST_ELEM((lh)->p, pt, el))
-
- /*
---
-2.4.10
-
+++ /dev/null
-From 0f836e1361933721c5689c7943143fd6cd260148 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Cyril=20Bont=C3=A9?= <cyril.bonte@free.fr>
-Date: Thu, 26 Nov 2015 21:39:56 +0100
-Subject: [PATCH 10/10] BUG/MEDIUM: sample: urlp can't match an empty value
-
-Currently urlp fetching samples were able to find parameters with an empty
-value, but the return code depended on the value length. The final result was
-that acls using urlp couldn't match empty values.
-
-Example of acl which always returned "false":
- acl MATCH_EMPTY urlp(foo) -m len 0
-
-The fix consists in unconditionally return 1 when the parameter is found.
-
-This fix must be backported to 1.6 and 1.5.
-(cherry picked from commit ce1ef4df0135f9dc1cb6691395eacb487015fe3e)
-(cherry picked from commit 6bd426cf35c95985712369ed528c10a5f80ad8fd)
-[ note: in 1.5 we have value+value_l instead of vstart+vend ]
----
- src/proto_http.c | 10 ++++++----
- 1 file changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/src/proto_http.c b/src/proto_http.c
-index 5facfbb..3af7880 100644
---- a/src/proto_http.c
-+++ b/src/proto_http.c
-@@ -11050,9 +11050,11 @@ find_url_param_pos(char* query_string, size_t query_string_l,
- }
-
- /*
-- * Given a url parameter name, returns its value and size into *value and
-- * *value_l respectively, and returns non-zero. If the parameter is not found,
-- * zero is returned and value/value_l are not touched.
-+ * Given a url parameter name and a query string, find the next value.
-+ * An empty url_param_name matches the first available parameter.
-+ * If the parameter is found, 1 is returned and *value / *value_l are updated
-+ * to respectively provide a pointer to the value and its length.
-+ * Otherwise, 0 is returned and value/value_l are not modified.
- */
- static int
- find_url_param_value(char* path, size_t path_l,
-@@ -11082,7 +11084,7 @@ find_url_param_value(char* path, size_t path_l,
-
- *value = value_start;
- *value_l = value_end - value_start;
-- return value_end != value_start;
-+ return 1;
- }
-
- static int
---
-2.4.10
-
+env['ENV'] = os.environ
+if 'CC' in os.environ:
+ env['CC'] = Split(os.environ['CC'])
-+ print "using CC from enviroment: %s" % env['CC']
++ print "using CC from environment: %s" % env['CC']
+if 'CXX' in os.environ:
+ env['CXX'] = Split(os.environ['CXX'])
-+ print "using CXX from enviroment: %s" % env['CXX']
++ print "using CXX from environment: %s" % env['CXX']
+if 'CFLAGS' in os.environ:
+ env['CFLAGS'] = Split(os.environ['CFLAGS'])
-+ print "using CFLAGS from enviroment: %s" % env['CFLAGS']
++ print "using CFLAGS from environment: %s" % env['CFLAGS']
+if 'CXXFLAGS' in os.environ:
+ env['CXXFLAGS'] = Split(os.environ['CXXFLAGS'])
-+ print "using CXXFLAGS from enviroment: %s" % env['CXXFLAGS']
++ print "using CXXFLAGS from environment: %s" % env['CXXFLAGS']
+if 'CPPFLAGS' in os.environ:
+ env['CPPFLAGS'] = Split(os.environ['CPPFLAGS'])
-+ print "using CPPFLAGS from enviroment: %s" % env['CPPFLAGS']
++ print "using CPPFLAGS from environment: %s" % env['CPPFLAGS']
+if 'LDFLAGS' in os.environ:
+ env['LINKFLAGS'] = Split(os.environ['LDFLAGS'])
-+ print "using LDFLAGS/LINKFLAGS from enviroment: %s" % env['LINKFLAGS']
++ print "using LDFLAGS/LINKFLAGS from environment: %s" % env['LINKFLAGS']
+
if env.get('VERBOSE') == False:
env['CCCOMSTR'] = "Compiling $TARGET"
--- /dev/null
+#
+# Copyright (C) 2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=iptraf-ng
+PKG_VERSION:=1.1.4
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://fedorahosted.org/releases/i/p/iptraf-ng/
+PKG_MD5SUM:=de27cfeeede96e2acfb0edc8439b034a
+
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_MAINTAINER:=Florian Fainelli <florian@openwrt.org>
+
+PKG_CHECK_FORMAT_SECURITY:=0
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/iptraf-ng
+ SECTION:=net
+ CATEGORY:=Network
+ DEPENDS:=+libncurses
+ TITLE:=A console-based network monitoring program
+ URL:=https://fedorahosted.org/iptraf-ng/
+endef
+
+define Package/iptraf-ng/description
+ iptraf-ng is a console-based network statistics utility for Linux. It gathers a
+ variety of figures such as TCP connection packet and byte counts, interface
+ statistics and activity indicators, TCP/UDP traffic breakdowns, and LAN
+ station packet and byte counts.
+endef
+
+define Package/iptraf-ng/postinst
+#!/bin/sh
+if [ -z "$${IPKG_INSTROOT}" ]; then
+ mkdir -p $${IPKG_INSTROOT}/var/log/iptraf-ng \
+ $${IPKG_INSTROOT}/var/run/iptraf-ng \
+ $${IPKG_INSTROOT}/var/lib/iptraf-ng
+fi
+endef
+
+MAKE_FLAGS += \
+ CFLAGS="$(TARGET_CFLAGS) -std=gnu99" \
+ CPPFLAGS="$(TARGET_CPPFLAGS) -D_GNU_SOURCE" \
+ NCURSES_CFLAGS="$(TARGET_CFLAGS)" \
+ NCURSES_LDFLAGS="$(TARGET_LDFLAGS) -lncurses -lpanel" \
+ iptraf-ng rvnamed-ng
+
+define Package/iptraf-ng/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/iptraf-ng $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/rvnamed-ng $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,iptraf-ng))
--- /dev/null
+#
+# Copyright (C) 2006-2012 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=isc-dhcp
+UPSTREAM_NAME:=dhcp
+PKG_VERSION:=4.3.3
+PKG_RELEASE:=1
+
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Antony Antony <antony@phenome.org>
+
+PKG_SOURCE:=$(UPSTREAM_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=ftp://ftp.isc.org/isc/dhcp/$(PKG_VERSION)
+PKG_MD5SUM:=c5577b09c9017cdd319a11ff6364268e
+
+PKG_FIXUP:=autoreconf
+PKG_BUILD_PARALLEL:=1
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(UPSTREAM_NAME)-$(PKG_VERSION)
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/isc-dhcp/Default
+ SECTION:=net
+ CATEGORY:=Network
+ SUBMENU:=IP Addresses and Names
+ TITLE:=ISC's DHCP
+ URL:=https://www.isc.org/software/dhcp
+endef
+
+define Package/isc-dhcp-relay-ipv4
+ $(call Package/isc-dhcp/Default)
+ TITLE+= relay (without IPv6)
+ VARIANT:=ipv4
+endef
+
+define Package/isc-dhcp-relay-ipv6
+ $(call Package/isc-dhcp/Default)
+ TITLE+= relay (with IPv6)
+ VARIANT:=ipv6
+endef
+
+define Package/isc-dhcp-relay/description
+ provides a means for relaying DHCP and BOOTP requests from a subnet to which
+ no DHCP server is directly connected to one or more DHCP servers on other
+ subnets.
+endef
+
+define Package/isc-dhcp-relay-ipv4/description
+$(call Package/isc-dhcp-relay-ipv6/description)
+ This package is compiled with IPv4 support only.
+endef
+
+define Package/isc-dhcp-relay-ipv4/conffiles
+/etc/config/dhcrelay
+endef
+
+define Package/isc-dhcp-relay-ipv6/description
+$(call Package/isc-dhcp-relay/description)
+ This package is compiled with IPv4 and IPv6 support.
+endef
+
+define Package/isc-dhcp-relay-ipv6/conffiles
+/etc/config/dhcrelay
+endef
+
+define Package/isc-dhcp-client-ipv4
+ $(call Package/isc-dhcp/Default)
+ TITLE+= client (without IPv6)
+ VARIANT:=ipv4
+endef
+
+define Package/isc-dhcp-client-ipv6
+ $(call Package/isc-dhcp/Default)
+ TITLE+= client (with IPv6)
+ VARIANT:=ipv6
+endef
+
+define Package/isc-dhcp-client/description
+ provides a means for configuring one or more network interfaces using the
+ Dynamic Host Configuration Protocol, BOOTP protocol, or if these protocols
+ fail, by statically assigning an address.
+endef
+
+define Package/isc-dhcp-client-ipv4/description
+$(call Package/isc-dhcp-client/description)
+ This package is compiled with IPv4 support only.
+endef
+
+define Package/isc-dhcp-client-ipv6/description
+$(call Package/isc-dhcp-client/description)
+ This package is compiled with IPv4 and IPv6 support.
+endef
+
+define Package/isc-dhcp-server-ipv4
+ $(call Package/isc-dhcp/Default)
+ TITLE+= server (without IPv6)
+ VARIANT:=ipv4
+endef
+
+define Package/isc-dhcp-server-ipv6
+ $(call Package/isc-dhcp/Default)
+ TITLE+= server (with IPv6)
+ VARIANT:=ipv6
+endef
+
+define Package/isc-dhcp-server/description
+ implements the Dynamic Host Configuration Protocol (DHCP) and the Internet
+ Bootstrap Protocol (BOOTP).
+endef
+
+define Package/isc-dhcp-server-ipv4/description
+$(call Package/isc-dhcp-server/description)
+ This package is compiled with IPv4 support only.
+endef
+
+define Package/isc-dhcp-server-ipv6/description
+$(call Package/isc-dhcp-server/description)
+ This package is compiled with IPv4 and IPv6 support.
+endef
+
+define Package/isc-dhcp-omshell-ipv4
+ $(call Package/isc-dhcp/Default)
+ DEPENDS:= +isc-dhcp-server-ipv4
+ TITLE+= omshell (without IPv6)
+ VARIANT:=ipv4
+endef
+
+define Package/isc-dhcp-omshell-ipv6
+ $(call Package/isc-dhcp/Default)
+ DEPENDS:= +isc-dhcp-server-ipv6
+ TITLE+= omshell (with IPv6)
+ VARIANT:=ipv6
+endef
+
+define Package/isc-dhcp-omshell/description
+ provides an interactive way to connect to, query, and possibly change, the ISC
+ DHCP Server's state via OMAPI, the Object Management API.
+endef
+
+define Package/isc-dhcp-omshell-ipv4/description
+$(call Package/isc-dhcp-omshell/description)
+ This package is compiled with IPv4 support only.
+endef
+
+define Package/isc-dhcp-omshell-ipv6/description
+$(call Package/isc-dhcp-omshell/description)
+ This package is compiled with IPv4 and IPv6 support.
+endef
+
+CONFIGURE_ARGS += \
+ --disable-tracing \
+ --enable-paranoia \
+ --disable-dependency-tracking \
+ --with-randomdev=/dev/urandom \
+ ac_cv_file__dev_random=yes
+
+ifeq ($(BUILD_VARIANT),ipv4)
+ CONFIGURE_ARGS += --disable-dhcpv6
+endif
+ifeq ($(BUILD_VARIANT),ipv6)
+ CONFIGURE_ARGS += --enable-dhcpv6
+endif
+
+define Build/Compile
+ $(MAKE) -C $(PKG_BUILD_DIR) \
+ DESTDIR="$(PKG_INSTALL_DIR)" \
+ BUILD_CC="$(HOSTCC_NOCACHE)" \
+ CROSS_CC="$(TARGET_CC)" \
+ host_alias="$(GNU_TARGET_NAME)" \
+ target_alias="$(GNU_TARGET_NAME)" \
+ build_alias="$(GNU_HOST_NAME)" \
+ all install-exec
+endef
+
+define Package/isc-dhcp-relay-$(BUILD_VARIANT)/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/dhcrelay $(1)/usr/sbin
+ $(INSTALL_DIR) $(1)/etc/config
+ $(INSTALL_DATA) ./files/etc/config/dhcrelay $(1)/etc/config
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/dhcrelay4.init $(1)/etc/init.d/dhcrelay4
+endef
+
+define Package/isc-dhcp-server-$(BUILD_VARIANT)/install
+ $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc
+ $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/init.d
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/dhcpd $(1)/usr/sbin
+ $(INSTALL_BIN) ./files/dhcpd.init $(1)/etc/init.d/dhcpd
+ $(INSTALL_BIN) ./files/dhcpd.conf $(1)/etc
+ifeq ($(BUILD_VARIANT),ipv6)
+ $(INSTALL_BIN) ./files/dhcpd6.init $(1)/etc/init.d/dhcpd6
+ $(INSTALL_BIN) ./files/dhcpd6.conf $(1)/etc
+endif
+endef
+
+define Package/isc-dhcp-server-ipv4/conffiles
+/etc/dhcpd.conf
+endef
+
+define Package/isc-dhcp-server-ipv6/conffiles
+/etc/dhcpd6.conf
+endef
+
+define Package/isc-dhcp-client-$(BUILD_VARIANT)/install
+ $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/dhclient $(1)/usr/sbin
+ $(INSTALL_BIN) ./files/dhclient-script $(1)/usr/sbin/
+ifeq ($(BUILD_VARIANT),ipv6)
+ $(INSTALL_BIN) ./files/dhclient6.conf $(1)/etc
+endif
+endef
+
+define Package/isc-dhcp-client-ipv4/conffiles
+/etc/dhclient.conf
+endef
+
+define Package/isc-dhcp-client-ipv6/conffiles
+/etc/dhclient6.conf
+endef
+
+define Package/isc-dhcp-omshell-$(BUILD_VARIANT)/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/omshell $(1)/usr/bin
+endef
+
+$(eval $(call BuildPackage,isc-dhcp-relay-ipv4))
+$(eval $(call BuildPackage,isc-dhcp-server-ipv4))
+$(eval $(call BuildPackage,isc-dhcp-client-ipv4))
+$(eval $(call BuildPackage,isc-dhcp-omshell-ipv4))
+$(eval $(call BuildPackage,isc-dhcp-relay-ipv6))
+$(eval $(call BuildPackage,isc-dhcp-server-ipv6))
+$(eval $(call BuildPackage,isc-dhcp-client-ipv6))
+$(eval $(call BuildPackage,isc-dhcp-omshell-ipv6))
--- /dev/null
+#!/bin/sh
+
+make_resolv_conf() {
+ if [ x"$new_domain_name_servers" != x ]; then
+ cat /dev/null > /etc/resolv.conf.dhclient
+ chmod 644 /etc/resolv.conf.dhclient
+ if [ x"$new_domain_search" != x ]; then
+ echo search $new_domain_search >> /etc/resolv.conf.dhclient
+ elif [ x"$new_domain_name" != x ]; then
+ # Note that the DHCP 'Domain Name Option' is really just a domain
+ # name, and that this practice of using the domain name option as
+ # a search path is both nonstandard and deprecated.
+ echo search $new_domain_name >> /etc/resolv.conf.dhclient
+ fi
+ for nameserver in $new_domain_name_servers; do
+ echo nameserver $nameserver >>/etc/resolv.conf.dhclient
+ done
+
+ elif [ "x${new_dhcp6_name_servers}" != x ] ; then
+ cat /dev/null > /etc/resolv.conf.dhclient6
+ chmod 644 /etc/resolv.conf.dhclient6
+
+ if [ "x${new_dhcp6_domain_search}" != x ] ; then
+ echo search ${new_dhcp6_domain_search} >> /etc/resolv.conf.dhclient6
+ fi
+ for nameserver in ${new_dhcp6_name_servers} ; do
+ echo nameserver ${nameserver} >> /etc/resolv.conf.dhclient6
+ done
+ fi
+
+ # if both v4 and v6 clients are running, concatenate results
+ cat /etc/resolv.conf.* > /etc/resolv.conf
+}
+
+# Must be used on exit. Invokes the local dhcp client exit hooks, if any.
+exit_with_hooks() {
+ exit_status=$1
+ if [ -f /etc/dhclient-exit-hooks ]; then
+ . /etc/dhclient-exit-hooks
+ fi
+# probably should do something with exit status of the local script
+ exit $exit_status
+}
+
+# Invoke the local dhcp client enter hooks, if they exist.
+if [ -f /etc/dhclient-enter-hooks ]; then
+ exit_status=0
+ . /etc/dhclient-enter-hooks
+ # allow the local script to abort processing of this state
+ # local script must set exit_status variable to nonzero.
+ if [ $exit_status -ne 0 ]; then
+ exit $exit_status
+ fi
+fi
+
+###
+### DHCPv4 Handlers
+###
+
+if [ x$new_broadcast_address != x ]; then
+ new_broadcast_arg="broadcast $new_broadcast_address"
+fi
+if [ x$new_subnet_mask != x ]; then
+ new_subnet_arg="netmask $new_subnet_mask"
+fi
+if [ x$alias_subnet_mask != x ]; then
+ alias_subnet_arg="netmask $alias_subnet_mask"
+fi
+
+if [ x$reason = xMEDIUM ]; then
+ # Linux doesn't do mediums (ok, ok, media).
+ exit_with_hooks 0
+fi
+
+if [ x$reason = xPREINIT ]; then
+ if [ x$alias_ip_address != x ]; then
+ # Bring down alias interface. Its routes will disappear too.
+ ifconfig $interface:0- 0.0.0.0
+ fi
+ ifconfig $interface 0.0.0.0 up
+
+ # We need to give the kernel some time to get the interface up.
+ sleep 1
+
+ exit_with_hooks 0
+fi
+
+if [ x$reason = xARPCHECK ] || [ x$reason = xARPSEND ]; then
+ exit_with_hooks 0
+fi
+
+if [ x$reason = xBOUND ] || [ x$reason = xRENEW ] || \
+ [ x$reason = xREBIND ] || [ x$reason = xREBOOT ]; then
+ current_hostname=`hostname`
+ if [ x$current_hostname = x ] || \
+ [ x$current_hostname = x$old_host_name ]; then
+ if [ x$current_hostname = x ] || \
+ [ x$new_host_name != x$old_host_name ]; then
+ hostname $new_host_name
+ fi
+ fi
+
+ if [ x$old_ip_address != x ] && [ x$alias_ip_address != x ] && \
+ [ x$alias_ip_address != x$old_ip_address ]; then
+ # Possible new alias. Remove old alias.
+ ifconfig $interface:0- 0.0.0.0
+ fi
+ if [ x$old_ip_address != x ] && [ x$old_ip_address != x$new_ip_address ]; then
+ # IP address changed. Bringing down the interface will delete all routes,
+ # and clear the ARP cache.
+ ifconfig $interface 0.0.0.0 down
+
+ fi
+ if [ x$old_ip_address = x ] || [ x$old_ip_address != x$new_ip_address ] || \
+ [ x$reason = xBOUND ] || [ x$reason = xREBOOT ]; then
+
+ ifconfig $interface $new_ip_address $new_subnet_arg \
+ $new_broadcast_arg
+ for router in $new_routers; do
+ if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then
+ route add -host $router dev $interface
+ fi
+ route add default gw $router
+ done
+ fi
+ if [ x$new_ip_address != x$alias_ip_address ] && [ x$alias_ip_address != x ];
+ then
+ ifconfig $interface:0- 0.0.0.0
+ ifconfig $interface:0 $alias_ip_address $alias_subnet_arg
+ route add -host $alias_ip_address $interface:0
+ fi
+ make_resolv_conf
+ exit_with_hooks 0
+fi
+
+if [ x$reason = xEXPIRE ] || [ x$reason = xFAIL ] || [ x$reason = xRELEASE ] \
+ || [ x$reason = xSTOP ]; then
+ if [ x$alias_ip_address != x ]; then
+ # Turn off alias interface.
+ ifconfig $interface:0- 0.0.0.0
+ fi
+ if [ x$old_ip_address != x ]; then
+ # Shut down interface, which will delete routes and clear arp cache.
+ ifconfig $interface 0.0.0.0 down
+ fi
+ if [ x$alias_ip_address != x ]; then
+ ifconfig $interface:0 $alias_ip_address $alias_subnet_arg
+ route add -host $alias_ip_address $interface:0
+ fi
+
+ # remove v4 dns configuration for this interface
+ rm /etc/resolv.conf.dhclient
+ cat /etc/resolv.conf.* > /etc/resolv.conf
+
+ exit_with_hooks 0
+fi
+
+if [ x$reason = xTIMEOUT ]; then
+ if [ x$alias_ip_address != x ]; then
+ ifconfig $interface:0- 0.0.0.0
+ fi
+ ifconfig $interface $new_ip_address $new_subnet_arg \
+ $new_broadcast_arg
+ set $new_routers
+ if ping -q -c 1 $1; then
+ if [ x$new_ip_address != x$alias_ip_address ] && \
+ [ x$alias_ip_address != x ]; then
+ ifconfig $interface:0 $alias_ip_address $alias_subnet_arg
+ route add -host $alias_ip_address dev $interface:0
+ fi
+ for router in $new_routers; do
+ if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then
+ route add -host $router dev $interface
+ fi
+ route add default gw $router
+ done
+ make_resolv_conf
+ exit_with_hooks 0
+ fi
+ ifconfig $interface 0.0.0.0 down
+ exit_with_hooks 1
+fi
+
+###
+### DHCPv6 Handlers
+###
+
+if [ x$reason = xPREINIT6 ]; then
+ # Ensure interface is up.
+ ifconfig ${interface} up
+
+ # Remove any stale addresses from aborted clients.
+ ip -f inet6 addr flush dev ${interface} scope global
+
+ exit_with_hooks 0
+fi
+
+if [ x${old_ip6_prefix} != x ] || [ x${new_ip6_prefix} != x ] ; then
+ echo Prefix ${reason} old=${old_ip6_prefix} new=${new_ip6_prefix}
+
+ exit_with_hooks 0
+fi
+
+if [ x$reason = xBOUND6 ]; then
+ if [ x${new_ip6_address} = x ] || [ x${new_ip6_prefixlen} = x ] ; then
+ exit_with_hooks 2;
+ fi
+
+ ifconfig ${interface} add ${new_ip6_address}/${new_ip6_prefixlen}
+
+ # Check for nameserver options.
+ make_resolv_conf
+
+### <<
+ # Set up softwire tunnel
+ if [ x${new_dhcp6_softwire} != x ] ; then
+ /etc/init.d/dhclient stop
+ ifconfig ${interface} 0.0.0.0
+ ip -6 tunnel add tun0 mode ipip6 \
+ remote ${new_dhcp6_softwire} \
+ local ${new_ip6_address} \
+ dev ${interface} encaplimit none
+ ip link set tun0 up
+ ip route add default dev tun0
+ fi
+### >>
+
+ exit_with_hooks 0
+fi
+
+if [ x$reason = xRENEW6 ] || [ x$reason = xREBIND6 ]; then
+ if [ x${new_ip6_address} = x ] || [ x${new_ip6_prefixlen} = x ] ; then
+ exit_with_hooks 2;
+ fi
+
+ ifconfig ${interface} add ${new_ip6_address}/${new_ip6_prefixlen}
+
+ # Make sure nothing has moved around on us.
+
+ # Nameservers/domains/etc.
+ if [ "x${new_dhcp6_name_servers}" != "x${old_dhcp6_name_servers}" ] ||
+ [ "x${new_dhcp6_domain_search}" != "x${old_dhcp6_domain_search}" ] ; then
+ make_resolv_conf
+ fi
+
+ exit_with_hooks 0
+fi
+
+if [ x$reason = xDEPREF6 ]; then
+ if [ x${new_ip6_address} = x ] ; then
+ exit_with_hooks 2;
+ fi
+
+ # Busybox ifconfig has no way to communicate this to the kernel, so ignore it
+
+ exit_with_hooks 0
+fi
+
+if [ x$reason = xEXPIRE6 -o x$reason = xRELEASE6 -o x$reason = xSTOP6 ]; then
+ if [ x${old_ip6_address} = x ] || [ x${old_ip6_prefixlen} = x ] ; then
+ exit_with_hooks 2;
+ fi
+
+ ifconfig ${interface} del ${old_ip6_address}/${old_ip6_prefixlen}
+
+ # remove v6 dns configuration for this interface
+ rm /etc/resolv.conf.dhclient6
+ cat /etc/resolv.conf.* > /etc/resolv.conf
+
+### <<
+ # Tear down softwire tunnel
+ if [ x${old_dhcp6_softwire} != x ] ; then
+ ip link set tun0 down
+ ip tunnel del tun0
+ fi
+### >>
+
+ exit_with_hooks 0
+fi
+
+exit_with_hooks 0
--- /dev/null
+#!/bin/sh /etc/rc.common
+
+START=60
+
+lease_file=/var/dhclient.leases
+config_file=/etc/dhclient.conf
+pid_file=/var/run/dhclient.pid
+script_file=/usr/sbin/dhclient-script
+
+start() {
+ /usr/sbin/dhclient -q -nw -cf $config_file -lf $lease_file -pf $pid_file -sf $script_file `/sbin/uci get network.wan.ifname`
+
+ if [ $? -ne 0 ]; then
+ return 1
+ fi
+}
+
+stop() {
+ if [ ! -e $pid_file ]; then
+ return 1
+ fi
+
+ kill -9 `cat $pid_file`
+
+ if [ $? -ne 0 ]; then
+ return 1
+ fi
+
+ rm $pid_file
+}
--- /dev/null
+option dhcp6.softwire code 54 = ip6-address;
+also request dhcp6.softwire;
--- /dev/null
+#!/bin/sh /etc/rc.common
+
+START=60
+
+lease_file=/var/dhclient6.leases
+config_file=/etc/dhclient6.conf
+pid_file=/var/run/dhclient6.pid
+script_file=/usr/sbin/dhclient-script
+
+start() {
+ /usr/sbin/dhclient -q -nw -6 -cf $config_file -lf $lease_file -pf $pid_file -sf $script_file `/sbin/uci get network.wan.ifname`
+
+ if [ $? -ne 0 ]; then
+ return 1
+ fi
+}
+
+stop() {
+ if [ ! -e $pid_file ]; then
+ return 1
+ fi
+
+ kill -9 `cat $pid_file`
+
+ if [ $? -ne 0 ]; then
+ return 1
+ fi
+
+ rm $pid_file
+}
--- /dev/null
+# dhcpd.conf
+
+authoritative;
+
+default-lease-time 3600;
+max-lease-time 86400;
+
+option domain-name-servers 192.168.1.1;
+
+subnet 192.168.1.0 netmask 255.255.255.0 {
+ range 192.168.1.10 192.168.1.50;
+ option routers 192.168.1.1;
+}
--- /dev/null
+#!/bin/sh /etc/rc.common
+
+START=65
+
+lease_file=/tmp/dhcpd.leases
+config_file=/etc/dhcpd.conf
+pid_file=/var/run/dhcpd.pid
+
+start() {
+ if [ ! -e $lease_file ]; then
+ touch $lease_file
+ fi
+
+ /usr/sbin/dhcpd -q -cf $config_file -lf $lease_file -pf $pid_file $dhcp_ifs
+
+ if [ $? -ne 0 ]; then
+ return 1
+ fi
+}
+
+stop() {
+ if [ ! -e $pid_file ]; then
+ return 1
+ fi
+
+ kill -9 `cat $pid_file`
+
+ if [ $? -ne 0 ]; then
+ return 1
+ fi
+
+ rm $pid_file
+}
--- /dev/null
+# dhcpd6.conf
+
+authoritative;
+
+default-lease-time 3600;
+max-lease-time 86400;
+
+# Enable RFC 5007 support
+#allow leasequery;
+
+# Global definitions for name server address(es) and domain search list
+#option dhcp6.name-servers 3ffe:501:ffff:100:200:ff:fe00:3f3e;
+#option dhcp6.domain-search "test.example.com","example.com";
+
+# Set preference to 255 (maximum) in order to avoid waiting for
+# additional servers when there is only one
+#option dhcp6.preference 255;
+
+# Server side command to enable rapid-commit (2 packet exchange)
+#option dhcp6.rapid-commit;
+
+# The delay before information-request refresh
+# (minimum is 10 minutes, maximum one day, default is to not refresh)
+# (set to 6 hours)
+#option dhcp6.info-refresh-time 3600;
+
+subnet6 3ffe:501:ffff:101::/64 {
+ # Use the whole /64 prefix for clients
+ range6 3ffe:501:ffff:101:: /64;
+}
--- /dev/null
+#!/bin/sh /etc/rc.common
+
+START=65
+
+lease_file=/var/dhcpd6.leases
+config_file=/etc/dhcpd6.conf
+pid_file=/var/run/dhcpd6.pid
+
+start() {
+ if [ ! -e $lease_file ]; then
+ touch $lease_file
+ fi
+
+ /usr/sbin/dhcpd -q -6 -cf $config_file -lf $lease_file -pf $pid_file $dhcp_ifs
+
+ if [ $? -ne 0 ]; then
+ return 1
+ fi
+}
+
+stop() {
+ if [ ! -e $pid_file ]; then
+ return 1
+ fi
+
+ kill -9 `cat $pid_file`
+
+ if [ $? -ne 0 ]; then
+ return 1
+ fi
+
+ rm $pid_file
+}
--- /dev/null
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2012 OpenWrt.org
+
+START=91
+
+SERVICE_SIG="KILL"
+SERVICE_PID_FILE="/var/run/dhcrelay4.pid"
+SERVICE_USE_PID=1
+
+start() {
+ . /lib/functions/network.sh
+ config_load dhcrelay
+ local args=""
+
+ local enabled
+ config_get_bool enabled ipv4 enabled 0
+ [ "$enabled" -eq 0 ] && return 0
+
+ # listen interfaces
+ local interfaces
+ local ifname
+ config_get interfaces ipv4 interfaces
+ for net in $interfaces; do
+ if network_get_device ifname "$net"; then
+ append args "-i $ifname"
+ fi
+ done
+
+ # link selection sub-option (RFC3527)
+ local link_selection
+ config_get link_selection ipv4 link_selection
+ if network_get_device ifname "$link_selection"; then
+ append args "-l $ifname"
+ fi
+
+ # relay mode
+ local relay_mode
+ config_get relay_mode ipv4 relay_mode
+ [ -n "$relay_mode" ] && append args "-m $relay_mode"
+
+ # dhcp server address
+ local server
+ config_get server ipv4 dhcpserver
+ [ -n "$server" ] || return 0
+ append args "$server"
+
+ service_start /usr/sbin/dhcrelay -4 -q \
+ -pf $SERVICE_PID_FILE $args
+}
+
+stop() {
+ service_stop /usr/sbin/dhcrelay
+}
--- /dev/null
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2012 OpenWrt.org
+
+START=91
+
+SERVICE_SIG="KILL"
+SERVICE_PID_FILE="/var/run/dhcrelay6.pid"
+SERVICE_USE_PID=1
+
+start() {
+ local relay_dhcpserver
+ local relay_upper
+ local relay_lowers
+ local relay_lower_args
+
+ config_load dhcrelay
+ config_get relay_dhcpserver ipv6 dhcpserver
+ config_get relay_upper ipv6 upper
+ config_get relay_lowers ipv6 lower
+
+ # If a specific DHCP server is specified,
+ # add it to the upper interface.
+ if [ -n "$relay_dhcpserver" ]; then
+ relay_upper="${relay_dhcpserver}%$relay_upper"
+ fi
+
+ # Add all lower interfaces at the end.
+ if [ -n "$relay_lowers" ]; then
+ local relay_lower
+ for relay_lower in $relay_lowers; do
+ append relay_lower_args "-l $relay_lower"
+ done
+ fi
+
+ service_start /usr/sbin/dhcrelay -6 -q \
+ -pf $SERVICE_PID_FILE \
+ -u $relay_upper $relay_lower_args
+}
+
+stop() {
+ service_stop /usr/sbin/dhcrelay
+}
--- /dev/null
+
+config dhcrelay ipv4
+ option 'enabled' '0'
+
+ # IP address of the server
+ option 'dhcpserver' '192.0.2.10'
+
+ # network interfaces to listen on (e.g. lan or wan)
+ option 'interfaces' ''
+
+ # What to do about packets that already have a relay option:
+ # 'append': Forward and append our own relay option
+ # 'replace': Forward, but replace theirs with ours (default)
+ # 'forward': Forward without changes
+ # 'discard': Don't forward
+ option 'relay_mode' ''
+
+ # enable RFC3527 link selection sub-option and use the IP address of
+ # the specified network interface as "uplink" IP address (e.g. wan)
+ option 'link_selection' ''
+
+config dhcrelay ipv6
+# option dhcpserver '2001:db8:1::1'
+ option upper 'eth1'
+ list lower 'eth0.2'
+ list lower 'eth0.3'
+
--- /dev/null
+diff --git a/bind/Makefile.in b/bind/Makefile.in
+index bd784c6..5950d19 100644
+--- a/bind/Makefile.in
++++ b/bind/Makefile.in
+@@ -85,13 +85,13 @@ bind2:
+ echo Bind export libraries already installed ; \
+ else \
+ echo Building BIND Export libraries - this takes some time. ;\
+- (cd ${bindsrcdir}/lib/export ; \
+- echo building in `pwd` ; \
+- MAKE=${GMAKE} ${GMAKE} >> ${binddir}/build.log) ; \
++ (cd ${bindsrcdir}/lib/export/dns ; \
++ echo building gen using ${BUILD_CC} in `pwd` ; \
++ $(MAKE) CC=${BUILD_CC} CFLAGS="-O2" LIBS="" gen) ; \
+ \
+ echo Installing BIND Export libraries to ${binddir}. ; \
+ (cd ${bindsrcdir}/lib/export ; \
+- MAKE=${GMAKE} ${GMAKE} install > ${binddir}/install.log) ; \
++ $(MAKE) DESTDIR="" install > ${binddir}/build.log) ; \
+ fi
+
+ clean:
+@@ -100,6 +100,7 @@ clean:
+
+ # Include the following so that this Makefile is happy when the parent
+ # tries to use them.
++install-exec:
+
+ distdir:
+
--- /dev/null
+--- a/relay/dhcrelay.c
++++ b/relay/dhcrelay.c
+@@ -60,6 +60,7 @@
+ int client_packet_errors = 0; /* Errors sending packets to clients. */
+
+ int add_agent_options = 0; /* If nonzero, add relay agent options. */
++int add_rfc3527_suboption = 0; /* If nonzero, add RFC3527 link selection sub-option. */
+
+ int agent_option_errors = 0; /* Number of packets forwarded without
+ agent options because there was no room. */
+@@ -99,6 +100,8 @@
+ struct sockaddr_in to;
+ } *servers;
+
++struct interface_info *uplink;
++
+ #ifdef DHCPv6
+ struct stream_list {
+ struct stream_list *next;
+@@ -147,6 +150,7 @@
+ " [-pf <pid-file>] [--no-pid]\n"\
+ " [-m append|replace|forward|discard]\n" \
+ " [-i interface0 [ ... -i interfaceN]\n" \
++" [-l interface]\n" \
+ " server0 [ ... serverN]\n\n" \
+ " dhcrelay -6 [-d] [-q] [-I] [-c <hops>] [-p <port>]\n" \
+ " [-pf <pid-file>] [--no-pid]\n" \
+@@ -161,6 +165,7 @@
+ " [-pf <pid-file>] [--no-pid]\n" \
+ " [-m append|replace|forward|discard]\n" \
+ " [-i interface0 [ ... -i interfaceN]\n" \
++" [-l interface]\n" \
+ " server0 [ ... serverN]\n\n"
+ #endif
+
+@@ -325,6 +330,20 @@
+ agent_relay_mode = discard;
+ } else
+ usage();
++ } else if (!strcmp (argv [i], "-l")) {
++ add_agent_options = 1;
++ add_rfc3527_suboption = 1;
++ if (++i == argc)
++ usage();
++
++ status = interface_allocate(&uplink, MDL);
++ if (status != ISC_R_SUCCESS)
++ log_fatal("%s: interface_allocate: %s",
++ argv[i],
++ isc_result_totext(status));
++ strcpy(uplink->name, argv[i]);
++ interface_snorf(uplink, INTERFACE_REQUESTED);
++ //interface_dereference(&uplink, MDL);
+ } else if (!strcmp(argv[i], "-D")) {
+ #ifdef DHCPv6
+ if (local_family_set && (local_family == AF_INET6)) {
+@@ -711,12 +730,17 @@
+ ip->addresses[0])))
+ return;
+
++ /* RFC3527: Replace giaddr address by uplink address. The original
++ * giaddr will be used in the link selection sub-option */
++ if (add_rfc3527_suboption)
++ packet->giaddr = uplink->addresses[0];
++
+ /* If giaddr is not already set, Set it so the server can
+ figure out what net it's from and so that we can later
+ forward the response to the correct net. If it's already
+ set, the response will be sent directly to the relay agent
+ that set giaddr, so we won't see it. */
+- if (!packet->giaddr.s_addr)
++ else if (!packet->giaddr.s_addr)
+ packet->giaddr = ip->addresses[0];
+ if (packet->hops < max_hop_count)
+ packet->hops = packet->hops + 1;
+@@ -1090,6 +1114,9 @@
+ optlen += ip->remote_id_len + 2; /* RAI_REMOTE_ID + len */
+ }
+
++ if (add_rfc3527_suboption)
++ optlen += 6;
++
+ /* We do not support relay option fragmenting(multiple options to
+ * support an option data exceeding 255 bytes).
+ */
+@@ -1121,6 +1148,14 @@
+ memcpy(sp, ip->remote_id, ip->remote_id_len);
+ sp += ip->remote_id_len;
+ }
++
++ if (add_rfc3527_suboption) {
++ *sp++ = RAI_LINK_SELECT;
++ *sp++ = 4u;
++ memcpy(sp, &giaddr.s_addr, 4);
++ sp += 4;
++ log_debug ("RFC3527 link selection sub-option added: %s", inet_ntoa(giaddr));
++ }
+ } else {
+ ++agent_option_errors;
+ log_error("No room in packet (used %d of %d) "
--- /dev/null
+--- a/bind/Makefile.in
++++ b/bind/Makefile.in
+@@ -63,8 +63,14 @@
+ else \
+ echo Configuring BIND Export libraries for DHCP. ; \
+ rm -rf ${cleandirs} ${cleanfiles} ; \
+- (cd ${bindsrcdir} && \
+- ./configure ${bindconfig} > ${binddir}/configure.log); \
++ (cd ${bindsrcdir} && export CC=${CROSS_CC} && \
++ ./configure --disable-atomic --disable-kqueue \
++ --disable-epoll --disable-devpoll --without-openssl \
++ --without-libxml2 --enable-exportlib \
++ --enable-threads=no \
++ --with-export-includedir=${binddir}/include \
++ --with-export-libdir=${binddir}/lib --with-gssapi=no \
++ --without-randomdev > ${binddir}/configure.log); \
+ fi
+
+ atf:
# These channel lists MUST BE PRESENT for Kismet to work properly. While it is
# possible to change these, it is not recommended. These are used when the supported
# channel list can not be found for the source; to force using these instead of
-# the detected supported channels, override with channellist= in the source defintion
+# the detected supported channels, override with channellist= in the source definition
#
# IN GENERAL, if you think you want to modify these, what you REALLY want to do is
# copy them and use channellist= in the packet source.
listen=tcp://127.0.0.1:2501
#listen=tcp://0.0.0.0:2501
-# People allowed to connect, comma seperated IP addresses or network/mask
+# People allowed to connect, comma separated IP addresses or network/mask
# blocks. Netmasks can be expressed as dotted quad (/255.255.255.0) or as
# numbers (/24)
allowedhosts=127.0.0.1
# memory system and a huge number of alert conditions.
alertbacklog=50
-# File types to log, comma seperated. Built-in log file types:
+# File types to log, comma separated. Built-in log file types:
# alert Text file of alerts
# gpsxml XML per-packet GPS log
# nettxt Networks in text format
logtemplate=%p%n-%D-%t-%i.%l
-# Where state info, etc, is stored. You shouldnt ever need to change this.
+# Where state info, etc, is stored. You shouldn't ever need to change this.
# This is a directory.
configdir=%h/.kismet/
#
-# Copyright (C) 2014-2015 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+# Copyright (C) 2014-2016 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=knot
-PKG_VERSION:=1.6.5
+PKG_VERSION:=2.1.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_URL:=https://secure.nic.cz/files/knot-dns/
-PKG_MD5SUM:=934b6feaeefd0df7b3be6709e39b19ce
+PKG_MD5SUM:=ee6a54ec8a7898579b768c66e2eaeb54
PKG_MAINTAINER:=Daniel Salzman <daniel.salzman@nic.cz>
-PKG_LICENSE:=GPL-2.0+
+PKG_LICENSE:=GPL-3.0 LGPL-2.0 0BSD MIT OLDAP-2.8
-PKG_BUILD_PARALLEL:=1
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
+define Package/knot-lib/Default
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=Knot DNS
+ URL:=https://www.knot-dns.cz
+endef
+
define Package/knot/Default
SECTION:=net
CATEGORY:=Network
+ SUBMENU:=IP Addresses and Names
TITLE:=Knot DNS
URL:=https://www.knot-dns.cz
- SUBMENU:=IP Addresses and Names
- DEPENDS:=+libopenssl +liburcu
+ USERID:=knot=5353:knot=5353
+endef
+
+define Package/knot-libdnssec
+ $(call Package/knot-lib/Default)
+ TITLE+= DNSSEC library
+ DEPENDS=+libpthread +libgnutls +jansson
endef
define Package/knot-libknot
- $(call Package/knot/Default)
- TITLE+= (library)
+ $(call Package/knot-lib/Default)
+ TITLE+= library
+ DEPENDS=+libpthread +knot-libdnssec
+endef
+
+define Package/knot-libzscanner
+ $(call Package/knot-lib/Default)
+ TITLE+= zone parser library
+ DEPENDS=+libpthread
endef
define Package/knot
$(call Package/knot/Default)
- TITLE+= (server)
- DEPENDS+=+knot-libknot
+ TITLE+= server
+ DEPENDS=+liburcu +knot-libdnssec +knot-libknot +knot-libzscanner
endef
define Package/knot-dig
$(call Package/knot/Default)
- TITLE+= lookup utility
- DEPENDS+=+knot-libknot
+ TITLE+= advanced DNS lookup utility
+ DEPENDS=+knot-libdnssec +knot-libknot
endef
define Package/knot-host
$(call Package/knot/Default)
TITLE+= simple DNS lookup utility
- DEPENDS+=+knot-libknot
+ DEPENDS=+knot-libdnssec +knot-libknot
+endef
+
+define Package/knot-nsupdate
+ $(call Package/knot/Default)
+ TITLE+= dynamic DNS update utility
+ DEPENDS=+knot-libdnssec +knot-libknot +knot-libzscanner
endef
define Package/knot-nsec3hash
$(call Package/knot/Default)
TITLE+= simple NSEC3 hash utility
- DEPENDS+=+knot-libknot
+ DEPENDS=+knot-libdnssec
endef
-define Package/knot-nsupdate
+define Package/knot-keymgr
$(call Package/knot/Default)
- TITLE+= dynamic DNS update utility
- DEPENDS+=+knot-libknot
+ TITLE+= DNSSEC key management utility
+ DEPENDS=+knot-libdnssec +knot-libzscanner
endef
define Package/knot-tests
$(call Package/knot/Default)
- TITLE+= (tests)
- DEPENDS+=+knot-libknot
+ TITLE+= tests
+ DEPENDS=+liburcu +knot-libdnssec +knot-libknot +knot-libzscanner
+endef
+
+define Package/knot-libdnssec/description
+ Knot DNS DNSSEC library.
endef
define Package/knot-libknot/description
Knot DNS library.
endef
+define Package/knot-libdnssec/description
+ Knot DNS zone parser library.
+endef
+
define Package/knot/description
High-performance authoritative-only DNS server.
endef
define Package/knot-dig/description
- Knot DNS lookup utility.
+ Knot DNS advanced DNS lookup utility.
endef
define Package/knot-host/description
Knot DNS simple DNS lookup utility.
endef
+define Package/knot-nsupdate/description
+ Knot DNS dynamic DNS update utility.
+endef
+
define Package/knot-nsec3hash/description
- Knot DNS simple utility to compute NSEC3 hash.
+ Knot DNS simple NSEC3 hash utility.
endef
-define Package/knot-nsupdate/description
- Knot DNS dynamic DNS update utility.
+define Package/knot-keymgr/description
+ Knot DNS DNSSEC key management utility.
endef
define Package/knot-tests/description
- Unit tests for Knot DNS server.
+ Unit tests for the Knot DNS server and libraries.
Usage: /usr/share/knot/runtests.sh
endef
-define Package/knot/conffiles
-/etc/knot/knot.conf
-endef
-
CONFIGURE_ARGS += \
--enable-recvmmsg=no \
--disable-fastparser \
--without-libidn \
- --with-rundir=/var/run \
- --with-storage=/etc/knot
+ --with-rundir=/var/run/knot \
+ --with-storage=/var/lib/knot \
+ --with-configdir=/etc/knot \
+ --with-timer-mapsize=50 \
+ --with-conf-mapsize=50
-TARGET_CFLAGS += -std=gnu99 -DPSELECT_COMPAT
+TARGET_CFLAGS += -DPSELECT_COMPAT -DNDEBUG
+
+define Package/knot/conffiles
+/etc/knot/knot.conf
+endef
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR)
$(MAKE) -C $(PKG_BUILD_DIR)/libtap check
+ $(MAKE) -C $(PKG_BUILD_DIR)/src/dnssec/tests check-compile-only
$(MAKE) -C $(PKG_BUILD_DIR)/tests check-compile-only
$(MAKE) -C $(PKG_BUILD_DIR)/src/zscanner check-compile-only
endef
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.{a,so*} $(1)/usr/lib/
+
+ $(INSTALL_DIR) $(1)/usr/include/libknot
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/libknot/* $(1)/usr/include/libknot/
+
+ $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc $(1)/usr/lib/pkgconfig/
+endef
+
+define Package/knot-libdnssec/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libdnssec.so.* $(1)/usr/lib/
+endef
+
define Package/knot-libknot/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libknot.so.* $(1)/usr/lib/
+endef
+
+define Package/knot-libzscanner/install
+ $(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libzscanner.so.* $(1)/usr/lib/
endef
$(INSTALL_DIR) $(1)/etc/knot
$(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/knot/knot.sample.conf $(1)/etc/knot/knot.conf
- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/knot/example.com.zone $(1)/etc/knot/
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/knotd.init $(1)/etc/init.d/knotd
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/khost $(1)/usr/bin/
endef
+define Package/knot-nsupdate/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/knsupdate $(1)/usr/bin/
+endef
+
define Package/knot-nsec3hash/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/knsec3hash $(1)/usr/bin/
endef
-define Package/knot-nsupdate/install
- $(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/knsupdate $(1)/usr/bin/
+define Package/knot-keymgr/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/keymgr $(1)/usr/sbin/
endef
define Package/knot-tests/install
$(INSTALL_BIN) $(PKG_BUILD_DIR)/libtap/runtests $(1)/usr/share/knot/tap/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/libtap/tap/libtap.sh $(1)/usr/share/knot/tap/
- $(INSTALL_DIR) $(1)/usr/share/knot/tests
+ $(INSTALL_DIR) $(1)/usr/share/knot/tests
+
+ find $(PKG_BUILD_DIR)/src/dnssec/tests -maxdepth 1 -executable -type f | \
+ xargs -I{} basename {} | \
+ xargs -I{} $(INSTALL_BIN) -T $(PKG_BUILD_DIR)/src/dnssec/tests/{} $(1)/usr/share/knot/tests/dnssec_test_{}
+
find $(PKG_BUILD_DIR)/tests/.libs -maxdepth 1 -executable -type f | \
xargs -I{} basename {} | \
- xargs -I{} $(INSTALL_BIN) -T $(PKG_BUILD_DIR)/tests/.libs/{} $(1)/usr/share/knot/tests/test_{}
+ xargs -I{} $(INSTALL_BIN) -T $(PKG_BUILD_DIR)/tests/.libs/{} $(1)/usr/share/knot/tests/test_{}
- $(INSTALL_DIR) $(1)/usr/share/knot/tests/data
- $(INSTALL_DATA) $(PKG_BUILD_DIR)/tests/data/sample_conf $(1)/usr/share/knot/tests/data/
+ find $(PKG_BUILD_DIR)/tests/modules/.libs -maxdepth 1 -executable -type f | \
+ xargs -I{} basename {} | \
+ xargs -I{} $(INSTALL_BIN) -T $(PKG_BUILD_DIR)/tests/modules/.libs/{} $(1)/usr/share/knot/tests/test_module_{}
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/zscanner/tests/.libs/zscanner-tool $(1)/usr/share/knot/tests/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/zscanner/tests/unittests $(1)/usr/share/knot/tests/test_zscanner
cp -a $(PKG_BUILD_DIR)/src/zscanner/tests/data $(1)/usr/share/knot/tests/
endef
+$(eval $(call BuildPackage,knot-libdnssec))
$(eval $(call BuildPackage,knot-libknot))
+$(eval $(call BuildPackage,knot-libzscanner))
$(eval $(call BuildPackage,knot))
$(eval $(call BuildPackage,knot-dig))
$(eval $(call BuildPackage,knot-host))
-$(eval $(call BuildPackage,knot-nsec3hash))
$(eval $(call BuildPackage,knot-nsupdate))
+$(eval $(call BuildPackage,knot-nsec3hash))
+$(eval $(call BuildPackage,knot-keymgr))
$(eval $(call BuildPackage,knot-tests))
#!/bin/sh /etc/rc.common
-START=70
-
-knot_bin="/usr/sbin/knotd"
-knot_ctl="/usr/sbin/knotc"
-config_file="/etc/knot/knot.conf"
-pid_file="/var/run/knot.pid"
-
-start() {
- echo "Starting Knot DNS"
-
- if [ -e $pid_file ]; then
- echo " Already running with PID `cat $pid_file`"
- return 1
- fi
-
- $knot_bin -c $config_file -d
-
- if [ $? -ne 0 ]; then
- echo " Failed to start"
- fi
+#
+# Copyright (C) 2014-2016 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+#
+# This is free software, licensed under the GNU General Public License v2.
+
+START=50
+USE_PROCD=1
+
+PROG="/usr/sbin/knotd"
+CONFFILE="/etc/knot/knot.conf"
+
+USER="knot"
+USERID="5353"
+RUNDIR="/var/run/knot"
+STORAGE="/var/lib/knot"
+
+fix_perms() {
+ user_exists $USER $USERID || user_add $USER $USERID
+ group_exists $USER $USERID || group_add $USER $USERID
+
+ for dir in $RUNDIR $STORAGE; do
+ test -e $dir || {
+ mkdir -p $dir
+ chgrp $USER $dir
+ chmod g+w $dir
+ }
+ chgrp $USER $CONFFILE
+ chmod g+r $CONFFILE
+ done
}
-stop() {
- echo "Stopping Knot DNS"
-
- if [ -e $pid_file ]; then
- kill `cat $pid_file`
- rm -f $pid_file
- else
- echo " No PID file $pid_file"
- return 1
- fi
-}
-
-restart() {
- stop
- start
-}
-
-reload() {
- echo "Reloading Knot DNS"
-
- $knot_ctl -c $config_file reload
+start_service() {
+ fix_perms
+ procd_open_instance
+ procd_set_param command $PROG -c $CONFFILE
+ procd_set_param respawn
+ procd_close_instance
}
#!/bin/sh
cd `dirname "$0"`/tests
-../tap/runtests -b /tmp ./test_*
-
+../tap/runtests -b /tmp ./dnssec_test_* ./test_*
ret=$?
cd -
+++ /dev/null
-diff --git a/src/libknot/dnssec/key.c b/src/libknot/dnssec/key.c
-index 7dc0540..3e351bb 100644
---- a/src/libknot/dnssec/key.c
-+++ b/src/libknot/dnssec/key.c
-@@ -260,7 +260,15 @@ static int key_param_time(const void *save_to, char *value)
-
- struct tm parsed = { 0 };
-
-- if (!strptime(value, "%Y%m%d%H%M%S", &parsed)) {
-+ if (strlen(value) != 14) {
-+ return KNOT_EINVAL;
-+ }
-+
-+ char *v = value;
-+ char buf[32] = "";
-+ int ret = sprintf(buf, "%.4s %.2s %.2s %.2s %.2s %.2s",
-+ v, v + 4, v + 6, v + 8, v + 10, v + 12);
-+ if (ret != 19 || !strptime(buf, "%Y %m %d %H %M %S", &parsed)) {
- return KNOT_EINVAL;
- }
-
--- /dev/null
+diff --git a/src/zscanner/tests/unittests.in b/src/zscanner/tests/unittests.in
+index 9a4af53..f9b45bf 100644
+--- a/src/zscanner/tests/unittests.in
++++ b/src/zscanner/tests/unittests.in
+@@ -1,15 +1,14 @@
+ #!/bin/sh
+
+-SOURCE=@top_srcdir@/src/zscanner/tests
+-BUILD=@top_builddir@/src/zscanner/tests
++SOURCE="."
++BUILD="/tmp/knot-test"
++mkdir -p "$BUILD"
+
+-. @top_srcdir@/libtap/tap/libtap.sh
+-
+-cd "$BUILD"
++. ../tap/libtap.sh
+
+ TMPDIR=$(test_tmpdir)
+ TESTS_DIR="$SOURCE"/data
+-ZSCANNER_TOOL="$BUILD"/zscanner-tool
++ZSCANNER_TOOL=./zscanner-tool
+
+ plan 71
+
diff --git a/samples/knot.sample.conf.in b/samples/knot.sample.conf.in
-index 956e8a9..a068e67 100644
+index e07c8a7..ecc13ad 100644
--- a/samples/knot.sample.conf.in
+++ b/samples/knot.sample.conf.in
-@@ -14,7 +14,7 @@ system {
+@@ -9,7 +9,7 @@ server:
+ # Listen on all configured IPv6 interfaces.
+ listen: ::@53
+ # User for running the server.
+- # user: knot:knot
++ user: knot:knot
- # User for running server
- # May also specify user.group (e.g. knot.knot)
-- user knot.knot;
-+ user root.root;
-
- # Directory for storing run-time data
- # e.g. PID file and control sockets
-@@ -63,11 +63,11 @@ zones {
- # storage "@storage_dir@";
- #
- # Example master zone
--# example.com {
--# file "@config_dir@/example.com.zone";
-+ example.com {
-+ file "example.com.zone";
- # xfr-out slave0;
- # notify-out slave0;
--# }
-+ }
- #
- # Example slave zone
- # example.net {
+ log:
+ # Log info and more serious events to syslog.
--- /dev/null
+diff --git a/libtap/tap/files.c b/libtap/tap/files.c
+index 0c24075..d33db6c 100644
+--- a/libtap/tap/files.c
++++ b/libtap/tap/files.c
+@@ -27,6 +27,10 @@
+ #include <sys/types.h>
+ #include <unistd.h>
+
++#ifndef O_NOFOLLOW
++#define O_NOFOLLOW 0
++#endif
++
+ char *test_mkdtemp(void)
+ {
+ char *tmpdir = getenv("TMPDIR");
+++ /dev/null
-diff --git a/src/zscanner/tests/TESTS b/src/zscanner/tests/TESTS
-index c88aef1..4e2148f 100644
---- a/src/zscanner/tests/TESTS
-+++ b/src/zscanner/tests/TESTS
-@@ -18,10 +18,8 @@
- 05-2_TTL
- 05-3_TTL
- 05-4_TTL
--06-0_INCLUDE
- 06-1_INCLUDE
- 06-2_INCLUDE
--06-3_INCLUDE
- 06-4_INCLUDE
- 06-5_INCLUDE
- 06-6_INCLUDE
-diff --git a/src/zscanner/tests/unittests.in b/src/zscanner/tests/unittests.in
-index 846f351..272856c 100644
---- a/src/zscanner/tests/unittests.in
-+++ b/src/zscanner/tests/unittests.in
-@@ -1,9 +1,9 @@
- #!/bin/sh
-
--SOURCE=@top_srcdir@/src/zscanner/tests
--BUILD=@top_builddir@/src/zscanner/tests
-+SOURCE="."
-+BUILD="."
-
--. @top_srcdir@/libtap/tap/libtap.sh
-+. ../tap/libtap.sh
-
- cd "$BUILD"
-
-@@ -11,7 +11,7 @@ TMPDIR=$(test_tmpdir)
- TESTS_DIR="$SOURCE"/data
- ZSCANNER_TOOL="$BUILD"/zscanner-tool
-
--plan 71
-+plan 69
-
- mkdir -p "$TMPDIR"/includes/
- for a in 1 2 3 4 5 6; do
#
-# Copyright (C) 2008-2015 OpenWrt.org
+# Copyright (C) 2008-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=knxd
-PKG_VERSION=2015-07-19-$(PKG_SOURCE_VERSION)
+PKG_VERSION=2016-03-12
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/knxd/knxd.git
-PKG_SOURCE_VERSION:=be1fcfe85cc1dfcc41f791cd9a45c57fe18da6a0
+PKG_SOURCE_VERSION:=c8a4bb3b042de1fd692a93cdb7a307546f2be359
PKG_SOURCE_SUBDIR:=$(PKG_NAME)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
config daemon args
- # daemon is started as 'knxd $options $url'
- # use 'knxd --help' to get all possible options'
- #
- # typical example for options for tunnel mode
- option options '-D -T -S -d/tmp/knxd.log -i -p/var/run/knxd.pid'
- # add '-t1023' or '--trace=1023' for full log trace
-
- # example with tpuarts interface
- # option url 'tpuarts:/dev/ttyAMA0'
- # example with IP interface in tunnel mode
- option url 'ipt:192.168.1.20'
+ # driver:[arg] a Layer-2 driver to use (knxd supports more than one)
+ option layer2 ""
+ # enable caching of group communication networkstate
+ option GroupCache 0
+ # FILE start the programm as daemon. Output will be written to FILE if given
+ option daemon "/var/log/knxd.log"
+ #enable the EIBnet/IP server to answer discovery and description requests (SEARCH, DESCRIPTION)
+ option Discovery 1
+ # EIBADDR set our EIB address to EIBADDR (default 0.0.1)
+ option eibaddr "0.0.1"
+ # LEVEL set error level
+ option error 0
+ # PORT listen at TCP port PORT (default 6720)
+ option listen_tcp "6720"
+ # wait for L_Data_ind while sending (for all EMI based backends)
+ option no_emisend_queuing 0
+ # SERVERNAME name of the EIBnet/IP server (default is 'knxd')
+ option Name "OpenWrt"
+ # do not assume KNXnet/IP Tunneling bus interface can handle parallel cEMI requests
+ option no_tunnel_client_queuing 0
+ # the next Layer2 interface may not enter monitor mode
+ option no_monitor 0
+ # enable EIBnet/IP Routing in the EIBnet/IP server
+ option Routing 0
+ # [ip[:port]] starts an EIBnet/IP multicast server
+ option Server 1
+ # MASK set trace flags (bitmask)
+ option trace 0
+ # tpuarts backend should generate L2 acks for all group telegrams
+ option tpuarts_ack_all_group 0
+ # tpuarts backend should generate L2 acks for all individual telegrams
+ option tpuarts_ack_all_individual 0
+ # tpuarts backend should should use a full interface reset (for Disch TPUART interfaces)
+ option tpuarts_disch_reset 0
+ # enable EIBnet/IP Tunneling in the EIBnet/IP server
+ option Tunnelling 1
+ # FILE listen at Unix domain socket FILE (default /tmp/eib)
+ option listen_local "/var/run/knxd"
+ # example with tpuarts interface
+ # option url 'tpuarts:/dev/ttyAMA0'
+ # example with IP interface in tunnel mode
+ option url 'ip:'
#!/bin/sh /etc/rc.common
-# Copyright (C) 2006 OpenWrt.org
+# Copyright (C) 2016 OpenWrt.org
START=98
STOP=20
-NAME=knxd
-PROG=/usr/bin/$NAME
+PROG=/usr/bin/knxd
+USE_PROCD=1
-start() {
- local options url
- config_load "$NAME"
- config_get options args options ''
- config_get url args url
- service_start $PROG $options $url
+append_bool() {
+ local section="$1"
+ local option="$2"
+ local value="$3"
+ local _loctmp
+ local default="$4"
+ config_get_bool _loctmp "$section" "$option"
+ [ -z "$_loctmp" ] && _loctmp="$default"
+ [ "$_loctmp" -gt 0 ] && append params "--$value"
}
-stop() {
- service_stop $PROG
+append_parm() {
+ local section="$1"
+ local option="$2"
+ local switch="$3"
+ local _loctmp
+ local default="$4"
+ config_get _loctmp "$section" "$option"
+ [ -z "$_loctmp" ] && _loctmp="$default"
+ [ -z "$_loctmp" ] && return 0
+ append params "--$switch=$_loctmp"
+}
+
+start_service() {
+ local options url
+ config_load knxd
+ append_parm args eibaddr "eibaddr" "0.0.1"
+ append_parm args layer2 "layer2"
+ append_bool args GroupCache "GroupCache" 0
+ append_parm args daemon "daemon" "/var/log/knxd.log"
+ append_bool args Discovery "Discovery" 1
+ append_parm args error "error" # "5"
+ append_parm args listen_tcp "listen-tcp" "6720"
+ append_bool args no_emisend_queuing "no-emisend-queuing" 0
+ append_parm args Name "Name" "OpenWrt"
+ append_bool args no_tunnel_client_queuing "no-tunnel-client-queuing" 0
+ append_bool args no_monitor "no-monitor" 0
+ append_bool args Routing "Routing" 0
+ append_parm args trace "trace" # "7"
+ append_bool args tpuarts_ack_all_group "tpuarts-ack-all-group" 0
+ append_bool args tpuarts_ack_all_individual "tpuarts-ack-all-individual" 0
+ append_bool args tpuarts_disch_reset "tpuarts-disch-reset" 0
+ append_bool args Tunnelling "Tunnelling" 1
+ append_bool args Server "Server" 1
+ append_parm args listen_local "listen-local" "/var/run/knxd"
+ config_get url args url
+ procd_open_instance
+ procd_set_param command $PROG $params $url
+ procd_set_param respawn
+ procd_close_instance
+}
+
+stop_service() {
+ killall knxd
+}
+
+reload_service()
+{
+ restart
+}
+
+service_triggers()
+{
+ procd_add_reload_trigger knxd
}
include $(TOPDIR)/rules.mk
PKG_NAME:=krb5
-PKG_VERSION:=1.13.2
+PKG_VERSION:=1.14.1
PKG_RELEASE:=1
PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=NOTICE
-PKG_SOURCE:=krb5-$(PKG_VERSION)-signed.tar
-PKG_SOURCE_URL:=http://web.mit.edu/kerberos/dist/krb5/1.13/
-PKG_MD5SUM:=f7ebfa6c99c10b16979ebf9a98343189
+PKG_SOURCE:=krb5-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://web.mit.edu/kerberos/dist/krb5/1.14/
+PKG_MD5SUM:=400de0cabbfbe85c2c36f60347bf7dc6
PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
Kerberos
endef
-define Build/Prepare
- # Krb5 tarball contains signature and a second tarball
- # containing source code.
- tar xf "$(DL_DIR)/$(PKG_SOURCE)" -C "$(BUILD_DIR)"
- tar xzf "$(BUILD_DIR)/krb5-$(PKG_VERSION).tar.gz" -C "$(BUILD_DIR)"
- patch -p1 -d "$(PKG_BUILD_DIR)" < "$(PATCH_DIR)/001-fix-build.patch"
-endef
-
CONFIGURE_PATH = ./src
CONFIGURE_VARS += \
+++ /dev/null
-diff -u --recursive krb5-1.13.1-vanilla/src/lib/krad/packet.c krb5-1.13.1/src/lib/krad/packet.c
---- krb5-1.13.1-vanilla/src/lib/krad/packet.c 2015-02-22 10:08:38.213087138 -0500
-+++ krb5-1.13.1/src/lib/krad/packet.c 2015-02-22 10:13:25.223709951 -0500
-@@ -253,7 +253,7 @@
- {
- krb5_error_code retval;
- krad_packet *pkt;
-- uchar id;
-+ uchar id = 0;
- size_t attrset_len;
-
- pkt = packet_new();
-diff -u --recursive krb5-1.13.1-vanilla/src/lib/krb5/ccache/cc_file.c krb5-1.13.1/src/lib/krb5/ccache/cc_file.c
---- krb5-1.13.1-vanilla/src/lib/krb5/ccache/cc_file.c 2015-02-22 10:08:38.211087133 -0500
-+++ krb5-1.13.1/src/lib/krb5/ccache/cc_file.c 2015-02-22 10:14:15.410819464 -0500
-@@ -401,7 +401,7 @@
- {
- krb5_error_code ret;
- struct k5buf buf;
-- size_t maxsize;
-+ size_t maxsize = 0;
-
- *princ = NULL;
- k5_cc_mutex_assert_locked(context, &((fcc_data *)id->data)->lock);
-@@ -1088,7 +1088,7 @@
- krb5_fcc_cursor *fcursor = *cursor;
- fcc_data *data = id->data;
- struct k5buf buf;
-- size_t maxsize;
-+ size_t maxsize = 0;
-
- memset(creds, 0, sizeof(*creds));
- k5_cc_mutex_lock(context, &data->lock);
-diff -u --recursive krb5-1.13.1-vanilla/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c krb5-1.13.1/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c
---- krb5-1.13.1-vanilla/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c 2015-02-22 10:08:38.190087088 -0500
-+++ krb5-1.13.1/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c 2015-02-22 10:17:37.981263250 -0500
-@@ -3593,7 +3593,7 @@
- {
- CK_ULONG i, r;
- unsigned char *cp;
-- size_t label_len;
-+ size_t label_len = 0;
- CK_ULONG count = 0;
- CK_SLOT_ID_PTR slotlist;
- CK_TOKEN_INFO tinfo;
--- /dev/null
+diff -u --recursive krb5-1.14.1-vanilla/src/lib/kadm5/str_conv.c krb5-1.14.1/src/lib/kadm5/str_conv.c
+--- krb5-1.14.1-vanilla/src/lib/kadm5/str_conv.c 2016-03-26 19:49:13.651926364 -0400
++++ krb5-1.14.1/src/lib/kadm5/str_conv.c 2016-03-26 21:05:37.436084066 -0400
+@@ -131,7 +131,7 @@
+ {
+ int found = 0, invert = 0;
+ size_t i;
+- krb5_flags flag;
++ krb5_flags flag = 0;
+ unsigned long ul;
+
+ for (i = 0; !found && i < NFTBL; i++) {
+diff -u --recursive krb5-1.14.1-vanilla/src/lib/krad/packet.c krb5-1.14.1/src/lib/krad/packet.c
+--- krb5-1.14.1-vanilla/src/lib/krad/packet.c 2016-03-26 19:49:13.634926238 -0400
++++ krb5-1.14.1/src/lib/krad/packet.c 2016-03-26 21:13:03.023144940 -0400
+@@ -253,7 +253,7 @@
+ {
+ krb5_error_code retval;
+ krad_packet *pkt;
+- uchar id;
++ uchar id = 0;
+ size_t attrset_len;
+
+ pkt = packet_new();
+diff -u --recursive krb5-1.14.1-vanilla/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c krb5-1.14.1/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c
+--- krb5-1.14.1-vanilla/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c 2016-03-26 19:49:13.653926379 -0400
++++ krb5-1.14.1/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c 2016-03-26 21:17:07.151335877 -0400
+@@ -3618,7 +3618,7 @@
+ {
+ CK_ULONG i, r;
+ unsigned char *cp;
+- size_t label_len;
++ size_t label_len = 0;
+ CK_ULONG count = 0;
+ CK_SLOT_ID_PTR slotlist;
+ CK_TOKEN_INFO tinfo;
+Only in krb5-1.14.1/src/plugins/preauth/pkinit: .pkinit_crypto_openssl.c.swp
+diff -u --recursive krb5-1.14.1-vanilla/src/util/profile/prof_file.c krb5-1.14.1/src/util/profile/prof_file.c
+--- krb5-1.14.1-vanilla/src/util/profile/prof_file.c 2016-03-26 19:49:13.633926230 -0400
++++ krb5-1.14.1/src/util/profile/prof_file.c 2016-03-26 21:03:07.934427580 -0400
+@@ -309,7 +309,7 @@
+ unsigned long frac;
+ time_t now;
+ #endif
+- FILE *f;
++ FILE *f = NULL;
+ int isdir = 0;
+
+ #ifdef HAVE_STAT
include $(TOPDIR)/rules.mk
PKG_NAME:=lftp
-PKG_VERSION:=4.6.2
+PKG_VERSION:=4.7.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://lftp.yar.ru/ftp \
http://lftp.yar.ru/ftp/old \
http://lftp.cybermirror.org \
http://lftp.cybermirror.org/old
-PKG_MD5SUM:=487c064ee1bd732e5f95928e530435a8
+PKG_MD5SUM:=7dfb03c6544efeef633bc28ba7df8b77
--without-libidn \
--without-libresolv \
--with-openssl="$(STAGING_DIR)/usr" \
+ --with-zlib="$(STAGING_DIR)/usr" \
--disable-static
#CONFIGURE_VARS += \
include $(TOPDIR)/rules.mk
PKG_NAME:=lighttpd
-PKG_VERSION:=1.4.37
+PKG_VERSION:=1.4.38
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://download.lighttpd.net/lighttpd/releases-1.4.x
-PKG_MD5SUM:=ca40168f54b46ee29475868ced8507d6
+PKG_MD5SUM:=7adc12323f37ed24ecf026c7547b577d
PKG_LICENSE:=BSD-3c
PKG_LICENSE_FILES:=COPYING
#
-# Copyright (C) 2008-2015 OpenWrt.org
+# Copyright (C) 2008-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=linknx
-PKG_VERSION:=0.0.1.32
-PKG_RELEASE:=7
-PKG_MD5SUM:=7ecc1208f59bceb05068c752b2250b63
+PKG_VERSION:=0.0.1.33
+PKG_RELEASE:=1
PKG_MAINTAINER:=Othmar Truniger <github@truniger.ch>
PKG_LICENSE:=GPL-2.0+
-PKG_SOURCE_URL:=@SF/linknx
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/linknx/linknx.git
+PKG_SOURCE_VERSION:=f627ed44feaea5a1f67c53f2810c44a14c059cef
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)
+PKG_SOURCE:=$(PKG_NAME)-${PKG_VERSION}.tar.gz
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
PKG_BUILD_DEPENDS:=argp-standalone
PKG_FORTIFY_SOURCE:=1
+PKG_FIXUP:=autoreconf
+
include $(INCLUDE_DIR)/package.mk
define Package/linknx
+++ /dev/null
---- a/src/eibclient.c 2007-10-11 01:55:31.000000000 +0200
-+++ b/src/eibclient.c 2015-06-27 22:18:01.433296921 +0200
-@@ -32,6 +32,7 @@
- #include <netinet/in.h>
- #include <netdb.h>
- #include <errno.h>
-+#include <string.h>
-
- #include "config.h"
-
+++ /dev/null
---- a/src/linknx.cpp 2012-06-04 22:12:13.000000000 +0200
-+++ b/src/linknx.cpp 2015-06-27 22:35:23.705721355 +0200
-@@ -136,7 +136,7 @@
- if (errno)
- printf (": %s\n", strerror (errno));
- else
-- printf ("\n", strerror (errno));
-+ printf ("\n");
- exit (1);
- }
-
endef
define Package/lispd/description
- This packet provides support for the Locator-ID Seperation Protocol.
+ This packet provides support for the Locator-ID Separation Protocol.
endef
MAKE_FLAGS += \
logexceptionhits = s:taboption("tab_general", ListValue, "logexceptionhits", translate("Log Exception Hits"))
logexceptionhits:value("0", translate("never"))
-logexceptionhits:value("1", translate("log, but dont mark as exceptions"))
+logexceptionhits:value("1", translate("log, but don't mark as exceptions"))
logexceptionhits:value("2", translate("log and mark"))
logexceptionhits.default = "2"
preservecase = s:taboption("tab_general", ListValue, "perservecase", translate("Lower caseing options"))
preservecase:value("0", translate("force lower case"))
-preservecase:value("1", translate("dont change"))
+preservecase:value("1", translate("don't change"))
preservecase:value("2", translate("scan fist in lower, then in original"))
preservecase.default = "0"
include $(TOPDIR)/rules.mk
PKG_NAME:=mDNSResponder
-PKG_VERSION:=567
-PKG_RELEASE:=2
+PKG_VERSION:=576.30.4
+PKG_RELEASE:=1
PKG_SOURCE:=mDNSResponder-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://opensource.apple.com/tarballs/mDNSResponder/
-PKG_MD5SUM:=6eff6d243a12a3d4b6fca03c05a9893b
+PKG_MD5SUM:=940057ac8b513b00e8e9ca12ef796762
PKG_MAINTAINER:=Steven Barth <cyrus@openwrt.org>
PKG_LICENSE:=Apache-2.0
# I have no idea why -lc is required, but without it, C library symbols are
# not found:
MAKE_FLAGS += \
+ LD="$(TARGET_CC)" \
CFLAGS_DEBUG="$(TARGET_CFLAGS)" \
LINKOPTS=-lc \
LDCONFIG= \
--- /dev/null
+--- a/mDNSPosix/mDNSPosix.c
++++ b/mDNSPosix/mDNSPosix.c
+@@ -1673,7 +1673,7 @@ mDNSexport mDNSs32 mDNSPlatformGetServic
+ return -1;
+ }
+
+-mDNSexport void mDNSPlatformSetDelegatePID(UDPSocket *src, const mDNSAddr *dst, DNSQuestion *q)
++mDNSexport void mDNSPlatformSetuDNSSocktOpt(UDPSocket *src, const mDNSAddr *dst, DNSQuestion *q)
+ {
+ (void) src;
+ (void) dst;
default y
help
Includes websockets support in the broker, via libwebsockets
+
+config MOSQUITTO_PASSWD
+ bool "Include mosquitto_passwd utility"
+ depends on PACKAGE_mosquitto
+ default y
+ help
+ mosquitto_passwd is a tool for managing password files for mosquitto.
include $(TOPDIR)/rules.mk
PKG_NAME:=mosquitto
-PKG_VERSION:=1.4.4
+PKG_VERSION:=1.4.8
PKG_RELEASE:=1
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE.txt
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://mosquitto.org/files/source/
-PKG_MD5SUM:=89a57f11cdfec140fa21fe3d4493b2ca
+PKG_MD5SUM:=d859cd474ffa61a6197bdabe007b9027
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk
This package is built without SSL support
endef
+define Package/libmosquittopp
+ SECTION:=libs
+ CATEGORY:=Libraries
+ DEPENDS:=+libmosquitto +libstdcpp
+ TITLE:= mosquitto - client c++ library
+endef
+
+define Package/libmosquittopp/description
+ C++ Library wrapper for libmosquitto.
+endef
define Package/$(PKG_NAME)/conffiles
/etc/mosquitto/mosquitto.conf
Package/$(PKG_NAME)-nossl/conffiles = $(Package/$(PKG_NAME)/conffiles)
-define Package/$(PKG_NAME)/install
+define Package/mosquitto/install/default
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/mosquitto $(1)/usr/sbin/mosquitto
$(INSTALL_DIR) $(1)/etc/mosquitto
$(INSTALL_CONF) $(PKG_BUILD_DIR)/mosquitto.conf $(1)/etc/mosquitto/mosquitto.conf
- $(INSTALL_DIR) $(1)/etc/init.d
- $(INSTALL_BIN) ./files/mosquitto.init $(1)/etc/init.d/mosquitto
- $(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) ./files/mosquitto.uci.convert $(1)/usr/bin
+ $(CP) ./files/* $(1)/
+endef
+
+define Package/mosquitto-nossl/install
+ $(call Package/mosquitto/install/default,$(1))
endef
-Package/$(PKG_NAME)-nossl/install = $(Package/$(PKG_NAME)/install)
+define Package/mosquitto/install
+ $(call Package/mosquitto/install/default,$(1))
+ifeq ($(CONFIG_MOSQUITTO_PASSWD),y)
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/mosquitto_passwd $(1)/usr/bin
+endif
+endef
define Package/mosquitto-client/install
$(INSTALL_DIR) $(1)/usr/bin
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include
$(CP) $(PKG_BUILD_DIR)/lib/mosquitto.h $(1)/usr/include
+ $(CP) $(PKG_BUILD_DIR)/lib/cpp/mosquittopp.h $(1)/usr/include
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/lib/libmosquitto.so.1 $(1)/usr/lib/
+ $(CP) $(PKG_BUILD_DIR)/lib/cpp/libmosquittopp.so.1 $(1)/usr/lib/
$(LN) libmosquitto.so.1 $(1)/usr/lib/libmosquitto.so
+ $(LN) libmosquittopp.so.1 $(1)/usr/lib/libmosquittopp.so
endef
# This installs files on the target. Compare with Build/InstallDev
endef
Package/libmosquitto-nossl/install = $(Package/libmosquitto/install)
+define Package/libmosquittopp/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/lib/cpp/libmosquittopp.so.1 $(1)/usr/lib/
+ $(LN) libmosquittopp.so.1 $(1)/usr/lib/libmosquittopp.so
+endef
+
# Applies to all...
MAKE_FLAGS += WITH_DOCS=no
ifeq ($(BUILD_VARIANT),nossl)
- MAKE_FLAGS += WITH_TLS=no WITH_WEBSOCKETS=no
+ MAKE_FLAGS += WITH_TLS=no WITH_WEBSOCKETS=no
else
MAKE_FLAGS += WITH_WEBSOCKETS=$(if $(CONFIG_MOSQUITTO_LWS),"yes","no")
endif
$(eval $(call BuildPackage,$(PKG_NAME)-nossl))
$(eval $(call BuildPackage,libmosquitto))
$(eval $(call BuildPackage,libmosquitto-nossl))
+$(eval $(call BuildPackage,libmosquittopp))
$(eval $(call BuildPackage,mosquitto-client))
$(eval $(call BuildPackage,mosquitto-client-nossl))
--- /dev/null
+config owrt owrt
+ option use_uci 0
+
+config mosquitto mosquitto
--- /dev/null
+#!/bin/sh /etc/rc.common
+# Basic init script for mosquitto
+# April 2012, OpenWrt.org
+# Provides support for the luci-app-mosquitto package, if installed
+
+START=80
+USE_PROCD=1
+TCONF=/tmp/mosquitto.generated.conf
+
+# Usage: append_if cfg uci_name output_name
+# add a config line of the form "output_name <value>"
+# if the "uci_name" was found.
+# output_name defaults to uci_name if not specified.
+append_if() {
+ local cfg="$1"
+ local uci_name="$2"
+ local out_name="$3"
+ if [ -z "$out_name" ]; then
+ out_name=$uci_name
+ fi
+ config_get val $cfg $uci_name
+ if [ -n "$val" ]; then
+ echo "$out_name $val" >> $TCONF
+ fi
+}
+
+# mosquitto uses true/false, uci uses 1/0
+# note that this is not shell truthy, but equality with 1!
+append_bool() {
+ if [ $2 -eq 1 ]; then
+ echo "$1 true" >> $TCONF
+ else
+ echo "$1 false" >> $TCONF
+ fi
+}
+
+# as per append_if, but gets the value as a uci bool, not raw
+append_optional_bool() {
+ local cfg="$1"
+ local uci_name="$2"
+ local out_name="$3"
+ config_get val $cfg $uci_name
+ if [ -n "$val" ]; then
+ config_get_bool real $cfg $uci_name
+ append_bool $out_name $real
+ fi
+}
+
+
+convert_mosq_general() {
+ local cfg="$1"
+ config_get destinations "$1" log_dest
+ for dest in $destinations; do
+ echo "log_dest $dest" >> $TCONF
+ done
+
+ config_get_bool no_remote "$1" no_remote_access 0
+ if [ "$no_remote" -eq 1 ]; then
+ echo "bind_address 127.0.0.1" >> $TCONF
+ fi
+
+ config_get port "$1" port 1883
+ echo "port $port" >> $TCONF
+ append_if "$1" protocol
+ append_if "$1" max_inflight_messages
+ append_if "$1" max_queued_messages
+}
+
+convert_persistence() {
+ local cfg="$1"
+
+ append_if "$cfg" client_expiration persistent_client_expiration
+ append_if "$cfg" autosave_interval
+ append_optional_bool "$cfg" autosave_on_changes autosave_on_changes
+ append_optional_bool "$cfg" persistence persistence
+ append_if "$cfg" file persistence_file
+ config_get loc "$cfg" location
+ if [ -n "$loc" ]; then
+ [ -d "$loc" ] || mkdir -p "$loc";
+ echo "persistence_location $loc" >> $TCONF
+ fi
+}
+
+add_listener() {
+ echo "" >> $TCONF
+ config_get port "$1" port
+ if [ -z "$port" ]; then
+ echo "Ignoring listener section without port"
+ return
+ fi
+ config_get_bool no_remote "$1" no_remote_access 0
+ if [ "$no_remote" -eq 1 ]; then
+ echo "listener $port 127.0.0.1" >> $TCONF
+ else
+ echo "listener $port" >> $TCONF
+ fi
+
+ append_if "$1" protocol
+}
+
+add_topic() {
+ echo "topic $1" >> $TCONF
+}
+
+add_bridge() {
+ config_get conn "$1" connection
+ config_get addr "$1" address
+ if [ -z "$conn" -o -z "$addr" ]; then
+ echo "Ignoring bridge section, misisng connection/address"
+ return
+ fi
+ echo "" >> $TCONF
+ echo "# Bridge connection from UCI section" >> $TCONF
+ append_if "$1" connection
+ append_if "$1" address
+
+ config_list_foreach "$1" topic add_topic
+ append_optional_bool "$1" cleansession cleansession
+ append_optional_bool "$1" try_private try_private
+
+ append_if "$1" clientid
+ append_if "$1" identity bridge_identity
+ append_if "$1" psk bridge_psk
+ append_if "$1" tls_version bridge_tls_version
+}
+
+
+convert_uci() {
+ rm -rf $TCONF
+ echo "Generating mosquitto config file in $TCONF"
+ echo "# mosquitto.conf file generated from UCI config." >>$TCONF
+ # Don't include a timestamp, it makes md5sum compares fail
+
+ config_load mosquitto
+ config_foreach convert_mosq_general "mosquitto"
+ config_foreach convert_persistence "persistence"
+ config_foreach add_listener "listener"
+ config_foreach add_bridge "bridge"
+}
+
+start_service_real() {
+ local cfg="$1"
+ local use_uci write_pid
+ config_get use_uci "$cfg" use_uci
+ if [ "$use_uci" -eq 1 ]; then
+ CONF=$TCONF
+ convert_uci
+ else
+ CONF=/etc/mosquitto/mosquitto.conf
+ fi
+ config_get write_pid "$cfg" write_pid 0
+
+ procd_open_instance
+ procd_set_param command mosquitto
+ procd_append_param command -c $CONF
+ # Makes /etc/init.d/mosquitto reload work if you edit the final file.
+ procd_set_param file $CONF
+ [ "$write_pid" -eq 1 ] && procd_set_param pidfile /var/run/mosquitto.pid
+ procd_close_instance
+}
+
+start_service() {
+ config_load mosquitto
+ config_foreach start_service_real owrt
+}
+
+service_triggers() {
+ # Makes "reload_config" work
+ procd_add_reload_trigger "mosquitto"
+}
+++ /dev/null
-#!/bin/sh /etc/rc.common
-# Basic init script for mosquitto
-# April 2012, OpenWrt.org
-# Provides support for the luci-app-mosquitto package, if installed
-
-START=80
-APP=`which mosquitto`
-USE_UCI_CONFIG=$(uci -q get mosquitto.owrt.use_uci)
-if [ $? -eq 1 ]; then
- USE_UCI_CONFIG=0
-fi
-
-SERVICE_DAEMONIZE=1
-SERVICE_WRITE_PID=1
-
-start() {
- if [ "$USE_UCI_CONFIG" -eq 1 ]; then
- CONF=/tmp/mosquitto.converted.$$.conf
- mosquitto.uci.convert -f $CONF
- else
- CONF=/etc/mosquitto/mosquitto.conf
- fi
- service_start $APP -c $CONF
-}
-
-stop() {
- service_stop $APP
-}
+++ /dev/null
-#!/bin/sh
-# Converts a uci config file into an appropriate mosquitto.conf snippet
-# expected to be used in an init file to generate a config file to run from
-# Karl Palsson <karlp@remake.is> 2012.
-# Considered to be released into the public domain
-
-[ -f $IPKG_INSTROOT/lib/functions.sh ] && . $IPKG_INSTROOT/lib/functions.sh
-
-TCONF=/tmp/mosquitto.generated.$$.conf
-while getopts "f:" o; do
- case $o in
- f)
- TCONF=$OPTARG
- ;;
- esac
-done
-
-if [ -e $TCONF ]; then
- echo "Odd, same temporary generated config file already existed: $TCONF"
- exit 1
-fi
-
-echo "Generating mosquitto config file in $TCONF"
-NOW=$(date)
-echo "# mosquitto.conf file generated from UCI config." >>$TCONF
-echo "# Config snippet generated by $0 on $NOW" >>$TCONF
-echo "#" >> $TCONF
-
-# Usage: append_if cfg uci_name output_name
-# add a config line of the form "output_name <value>"
-# if the "uci_name" was found.
-# output_name defaults to uci_name if not specified.
-append_if() {
- local cfg="$1"
- local uci_name="$2"
- local out_name="$3"
- if [ -z "$out_name" ]; then
- out_name=$uci_name
- fi
- config_get val $cfg $uci_name
- if [ -n "$val" ]; then
- echo "$out_name $val" >> $TCONF
- fi
-}
-
-# mosquitto uses true/false, uci uses 1/0
-# note that this is not shell truthy, but equality with 1!
-append_bool() {
- if [ $2 -eq 1 ]; then
- echo "$1 true" >> $TCONF
- else
- echo "$1 false" >> $TCONF
- fi
-}
-
-# as per append_if, but gets the value as a uci bool, not raw
-append_optional_bool() {
- local cfg="$1"
- local uci_name="$2"
- local out_name="$3"
- config_get val $cfg $uci_name
- if [ -n "$val" ]; then
- config_get_bool real $cfg $uci_name
- append_bool $out_name $real
- fi
-}
-
-mosq_general() {
- config_get destinations "$1" log_dest
- for dest in $destinations; do
- echo "log_dest $dest" >> $TCONF
- done
-
- config_get_bool no_remote "$1" no_remote_access 0
- if [ "$no_remote" -eq 1 ]; then
- echo "bind_address 127.0.0.1" >> $TCONF
- fi
-
- config_get port "$1" port 1883
- echo "port $port" >> $TCONF
- append_if "$1" protocol
- append_if "$1" max_inflight_messages
- append_if "$1" max_queued_messages
-
-}
-
-add_listener() {
- echo "" >> $TCONF
- config_get port "$1" port
- if [ -z "$port" ]; then
- echo "Ignoring listener section without port"
- return
- fi
- config_get_bool no_remote "$1" no_remote_access 0
- if [ "$no_remote" -eq 1 ]; then
- echo "listener $port 127.0.0.1" >> $TCONF
- else
- echo "listener $port" >> $TCONF
- fi
-
- append_if "$1" protocol
-}
-
-add_topic() {
- echo "topic $1" >> $TCONF
-}
-
-add_bridge() {
- config_get conn "$1" connection
- config_get addr "$1" address
- if [ -z "$conn" -o -z "$addr" ]; then
- echo "Ignoring bridge section, misisng connection/address"
- return
- fi
- echo "" >> $TCONF
- echo "# Bridge connection from UCI section" >> $TCONF
- append_if "$1" connection
- append_if "$1" address
-
- config_list_foreach "$1" topic add_topic
- append_optional_bool "$1" cleansession cleansession
- append_optional_bool "$1" try_private try_private
-
- append_if "$1" clientid
- append_if "$1" identity bridge_identity
- append_if "$1" psk bridge_psk
- append_if "$1" tls_version bridge_tls_version
-}
-
-
-config_load "mosquitto"
-config_foreach mosq_general "mosquitto"
-config_foreach add_listener "listener"
-config_foreach add_bridge "bridge"
PKG_NAME:=mwan3
PKG_VERSION:=2.0
-PKG_RELEASE:=0
+PKG_RELEASE:=2
PKG_MAINTAINER:=Jeroen Louwes <jeroen.louwes@gmail.com>
PKG_LICENSE:=GPLv2
-config interface 'wan1'
+config interface 'wan'
option enabled '1'
list track_ip '8.8.4.4'
- option reliability '1'
- option count '1'
- option timeout '2'
- option interval '5'
- option down '3'
- option up '8'
-
-config interface 'wan2'
- option enabled '1'
list track_ip '8.8.8.8'
- option reliability '1'
- option count '1'
- option timeout '2'
- option interval '5'
- option down '3'
- option up '8'
-
-config interface 'wan3'
- option enabled '1'
list track_ip '208.67.222.222'
- option reliability '1'
+ list track_ip '208.67.220.220'
+ option reliability '2'
option count '1'
option timeout '2'
option interval '5'
option down '3'
option up '8'
-config interface 'wan1_v6'
- option family 'ipv6'
- option enabled '1'
- list track_ip '2001:7b8:1::2'
- option reliability '1'
- option count '1'
- option timeout '2'
- option interval '5'
- option down '3'
- option up '8'
-
-config interface 'wan2_v6'
- option family 'ipv6'
- option enabled '1'
- list track_ip '2001:7b8:2::2'
- option reliability '1'
- option count '1'
- option timeout '2'
- option interval '5'
- option down '3'
- option up '8'
-
-config interface 'wan3_v6'
- option family 'ipv6'
- option enabled '1'
- list track_ip '2001:7b8:3::2'
+config interface 'wan2'
+ option enabled '0'
+ list track_ip '8.8.8.8'
+ list track_ip '208.67.220.220'
option reliability '1'
option count '1'
option timeout '2'
option down '3'
option up '8'
-config member 'wan1_m1_w1'
- option interface 'wan1'
+config member 'wan_m1_w3'
+ option interface 'wan'
option metric '1'
- option weight '1'
+ option weight '3'
-config member 'wan2_m1_w1'
- option interface 'wan2'
- option metric '1'
- option weight '1'
+config member 'wan_m2_w3'
+ option interface 'wan'
+ option metric '2'
+ option weight '3'
-config member 'wan3_m1_w1'
- option interface 'wan3'
- option metric '1'
- option weight '1'
-
-config member 'wan1_v6_m1_w1'
- option interface 'wan1_v6'
- option metric '1'
- option weight '1'
-
-config member 'wan2_v6_m1_w1'
- option interface 'wan2_v6'
+config member 'wan2_m1_w2'
+ option interface 'wan2'
option metric '1'
- option weight '1'
+ option weight '2'
-config member 'wan3_v6_m1_w1'
- option interface 'wan3_v6'
- option metric '1'
- option weight '1'
+config member 'wan2_m2_w2'
+ option interface 'wan2'
+ option metric '2'
+ option weight '2'
-config policy 'wan1_only'
- list use_member 'wan1_m1_w1'
+config policy 'wan_only'
+ list use_member 'wan_m1_w3'
config policy 'wan2_only'
- list use_member 'wan2_m1_w1'
+ list use_member 'wan2_m1_w2'
-config policy 'wan3_only'
- list use_member 'wan3_m1_w1'
-
-config policy 'wan1_v6_only'
- list use_member 'wan1_v6_m1_w1'
-
-config policy 'wan2_v6_only'
- list use_member 'wan2_v6_m1_w1'
+config policy 'balanced'
+ list use_member 'wan_m1_w3'
+ list use_member 'wan2_m1_w2'
-config policy 'wan3_v6_only'
- list use_member 'wan3_v6_m1_w1'
+config policy 'wan_wan2'
+ list use_member 'wan_m1_w3'
+ list use_member 'wan2_m2_w2'
-config policy 'balanced'
- list use_member 'wan1_m1_w1'
- list use_member 'wan2_m1_w1'
- list use_member 'wan3_m1_w1'
- list use_member 'wan1_v6_m1_w1'
- list use_member 'wan2_v6_m1_w1'
- list use_member 'wan3_v6_m1_w1'
+config policy 'wan2_wan'
+ list use_member 'wan_m2_w3'
+ list use_member 'wan2_m1_w2'
config rule 'https'
- option src_ip '2001:3::/64'
+ option sticky '1'
option dest_port '443'
option proto 'tcp'
option use_policy 'balanced'
-config rule 'https2'
- option dest_port '19443'
- option proto 'tcp'
- option use_policy 'balanced'
- option sticky '1'
-
-config rule 'igs'
- option proto 'icmp'
- option family 'ipv4'
- option sticky '1'
- option ipset 'google'
- option use_policy 'balanced'
-
-config rule 'i6gs'
- option proto 'icmpv6'
- option family 'ipv6'
- option sticky '1'
- option ipset 'google'
- option use_policy 'balanced'
-
config rule 'default_rule'
+ option dest_ip '0.0.0.0/0'
option use_policy 'balanced'
#!/bin/sh
+. /lib/functions.sh
+. /lib/functions/network.sh
+. /lib/mwan3/mwan3.sh
+
+config_load mwan3
+
+config_get enabled $INTERFACE enabled 0
+[ "$enabled" == "1" ] || exit 0
+
[ "$ACTION" == "ifup" -o "$ACTION" == "ifdown" ] || exit 1
[ -n "$INTERFACE" ] || exit 2
[ -x /usr/sbin/ip6tables ] || exit 7
[ -x /usr/bin/logger ] || exit 8
-. /lib/functions.sh
-. /lib/functions/network.sh
-. /lib/mwan3/mwan3.sh
+local family gateway
-config_load mwan3
+config_get family $INTERFACE family ipv4
-config_get enabled $INTERFACE enabled 0
-[ "$enabled" == "1" ] || exit 0
+if [ "$family" == "ipv4" ]; then
+ network_get_gateway gateway $INTERFACE
+elif [ "$family" == "ipv6" ]; then
+ network_get_gateway6 gateway $INTERFACE
+fi
+
+[ -n "$gateway" ] || exit 9
$LOG notice "$ACTION interface $INTERFACE (${DEVICE:-unknown})"
mwan3_create_iface_iptables $INTERFACE $DEVICE
mwan3_create_iface_route $INTERFACE $DEVICE
mwan3_track $INTERFACE $DEVICE
+ mwan3_set_policies_iptables
mwan3_set_user_rules
;;
ifdown)
mwan3_delete_iface_iptables $INTERFACE
mwan3_delete_iface_route $INTERFACE
mwan3_delete_iface_ipset_entries $INTERFACE
+ mwan3_set_policies_iptables
+ mwan3_set_user_rules
;;
esac
-config_foreach mwan3_create_policies_iptables policy
-
exit 0
$IPT -N mwan3_ifaces_in
fi
- if ! $IPT -S mwan3_ifaces_out &> /dev/null; then
- $IPT -N mwan3_ifaces_out
- fi
-
if ! $IPT -S mwan3_connected &> /dev/null; then
$IPT -N mwan3_connected
$IPS -! create mwan3_connected list:set
$IPT -A mwan3_connected -m set --match-set mwan3_connected dst -j MARK --set-xmark 0xff00/0xff00
fi
+ if ! $IPT -S mwan3_ifaces_out &> /dev/null; then
+ $IPT -N mwan3_ifaces_out
+ fi
+
if ! $IPT -S mwan3_rules &> /dev/null; then
$IPT -N mwan3_rules
fi
$IPT -N mwan3_hook
$IPT -A mwan3_hook -j CONNMARK --restore-mark --nfmask 0xff00 --ctmask 0xff00
$IPT -A mwan3_hook -m mark --mark 0x0/0xff00 -j mwan3_ifaces_in
- $IPT -A mwan3_hook -m mark --mark 0x0/0xff00 -j mwan3_ifaces_out
$IPT -A mwan3_hook -m mark --mark 0x0/0xff00 -j mwan3_connected
+ $IPT -A mwan3_hook -m mark --mark 0x0/0xff00 -j mwan3_ifaces_out
$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
config_list_foreach $1 use_member mwan3_set_policy
}
+mwan3_set_policies_iptables()
+{
+ config_foreach mwan3_create_policies_iptables policy
+}
+
mwan3_set_sticky_iptables()
{
- local id
+ local id iface
- mwan3_get_iface_id id $1
+ for iface in $($IPT4 -S $policy | cut -s -d'"' -f2 | awk '{print $1}'); do
- [ -n "$id" ] || return 0
+ if [ "$iface" == "$1" ]; then
- $IPS -! create mwan3_sticky_v4_$rule hash:ip,mark markmask 0xff00 timeout $timeout
- $IPS -! create mwan3_sticky_v6_$rule hash:ip,mark markmask 0xff00 timeout $timeout family inet6
- $IPS -! create mwan3_sticky_$rule list:set
- $IPS -! add mwan3_sticky_$rule mwan3_sticky_v4_$rule
- $IPS -! add mwan3_sticky_$rule mwan3_sticky_v6_$rule
+ mwan3_get_iface_id id $1
- for IPT in "$IPT4" "$IPT6"; do
- 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 $(($id*256))/0xff00
+ [ -n "$id" ] || return 0
+
+ for IPT in "$IPT4" "$IPT6"; do
+ if [ -n "$($IPT -S mwan3_iface_in_$1 2> /dev/null)" -a -n "$($IPT -S mwan3_iface_out_$1 2> /dev/null)" ]; then
+ $IPT -I mwan3_rule_$rule -m mark --mark $(($id*256))/0xff00 -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 $(($id*256))/0xff00
+ fi
+ done
fi
done
}
fi
if [ -n "$ipset" ]; then
- if [ -z "$($IPS -n list $ipset 2> /dev/null)" ]; then
- $IPS create $ipset list:set
- $IPS create v4_$ipset hash:ip timeout 3600
- $IPS create v6_$ipset hash:ip timeout 3600 family inet6
- $IPS add $ipset v4_$ipset
- $IPS add $ipset v6_$ipset
- fi
-
ipset="-m set --match-set $ipset dst"
fi
policy="mwan3_policy_$use_policy"
- config_foreach mwan3_set_sticky_iptables interface
-
for IPT in "$IPT4" "$IPT6"; do
if ! $IPT -S $policy &> /dev/null; then
$IPT -N $policy
fi
$IPT -F mwan3_rule_$1
+ done
+
+ $IPS -! create mwan3_sticky_v4_$rule hash:ip,mark markmask 0xff00 timeout $timeout
+ $IPS -! create mwan3_sticky_v6_$rule hash:ip,mark markmask 0xff00 timeout $timeout family inet6
+ $IPS -! create mwan3_sticky_$rule list:set
+ $IPS -! add mwan3_sticky_$rule mwan3_sticky_v4_$rule
+ $IPS -! add mwan3_sticky_$rule mwan3_sticky_v6_$rule
+ config_foreach mwan3_set_sticky_iptables interface
+
+ for IPT in "$IPT4" "$IPT6"; do
$IPT -A mwan3_rule_$1 -m mark --mark 0/0xff00 -j $policy
$IPT -A mwan3_rule_$1 -m mark ! --mark 0xfc00/0xfc00 -j SET --del-set mwan3_sticky_$rule src,src
$IPT -A mwan3_rule_$1 -m mark ! --mark 0xfc00/0xfc00 -j SET --add-set mwan3_sticky_$rule src,src
{
echo "Current ipv4 policies:"
mwan3_report_policies_v4
+ echo -e
echo "Current ipv6 policies:"
mwan3_report_policies_v6
+ echo -e
}
connected()
done
done
- for ipset in $($IPS -n list | sort | grep mwan3); do
- $IPS destroy $ipset
+ for ipset in $($IPS -n list | grep mwan3_); do
+ $IPS -q destroy $ipset
+ done
+
+ for ipset in $($IPS -n list | grep mwan3 | grep -E '_v4|_v6'); do
+ $IPS -q destroy $ipset
done
}
--- /dev/null
+#
+# Copyright (C) 2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=ncp
+PKG_VERSION:=1.2.4
+PKG_RELEASE:=1
+
+PKG_LICENSE:=FREE
+PKG_LICENSE_FILES:=
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=http://dl.fefe.de/
+PKG_MD5SUM:=421c4855bd3148b7d0a4342942b4bf13
+
+PKG_BUILD_DEPENDS:=libowfat
+
+PKG_MAINTAINER:=Andreas Shimokawa <shimokawa@fsfe.org>
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/ncp
+ SECTION:=net
+ CATEGORY:=Network
+ TITLE:=copy files over the network
+ URL:=https://www.fefe.de/ncp/
+endef
+
+define Package/ncp/description
+ copy files over the network
+endef
+
+define Build/Compile
+ cd $(PKG_BUILD_DIR); \
+ $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) -I$(STAGING_DIR)/usr/include/libowfat ncp.c -lowfat -o ncp
+endef
+
+define Package/ncp/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/ncp $(1)/usr/bin/
+ ln -sf ncp $(1)/usr/bin/npush
+ ln -sf ncp $(1)/usr/bin/npoll
+endef
+
+$(eval $(call BuildPackage,ncp))
}
service_triggers(){
+ local script=$(readlink "$initscript")
+ local name=$(basename ${script:-$initscript})
+
+ procd_open_trigger
+ procd_add_raw_trigger "interface.*" 2000 /etc/init.d/$name reload
+ procd_close_trigger
+
procd_add_reload_trigger 'snmpd'
}
+ char uid[256];
+ LIST_HEAD ( , avNode ) *list;
+
-+ // NOTE: this assumes the UID is at the begining of the
++ // NOTE: this assumes the UID is at the beginning of the
+ // data structure and that UIDs are strings
+
+ list = ( LIST_HEAD ( , avNode ) * ) l; // NOTE: don't know how to get
+#define PROC_NET_WIRELESS "/proc/net/wireless"
+#define PROC_NET_DEV "/proc/net/dev"
+
-+/* Some usefull constants */
++/* Some useful constants */
+#define KILO 1e3
+#define MEGA 1e6
+#define GIGA 1e9
+}
+
+/*------------------------------------------------------------------*/
-+/* Backwards compatability
++/* Backwards compatibility
+ * Actually, those form are much easier to use when dealing with
+ * struct sockaddr... */
+static inline char*
+ iw_ether_ntop((const struct ether_addr *) addr, bufp);
+ return bufp;
+}
-+/* Backwards compatability */
++/* Backwards compatibility */
+static inline int
+iw_in_ether(const char *bufp, struct sockaddr *sap)
+{
-# Copyright (C) 2009-2015 OpenWrt.org
+# Copyright (C) 2009-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PKG_NAME:=nfs-kernel-server
PKG_VERSION:=1.3.3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_MD5SUM:=9b87d890669eaaec8e97a2b0a35b2665
PKG_SOURCE_URL:=@SF/nfs
$(call Package/nfs-kernel-server/Default)
SECTION:=utils
CATEGORY:=Utilities
- DEPENDS+= +libevent +USE_UCLIBC:librpc
+ DEPENDS+= +libevent2 +USE_UCLIBC:librpc
TITLE:=updated mount utility (includes nfs4)
endef
OPT="$(TARGET_CFLAGS)" \
INSTALLSUID="install -m 4755" \
DESTDIR="$(PKG_INSTALL_DIR)" \
- RPCGEN_PATH=$(STAGING_DIR_HOST)/bin/rpcgen \
- RPCGEN=$(STAGING_DIR_HOST)/bin/rpcgen
+ RPCGEN_PATH=$(STAGING_DIR)/host/bin/rpcgen \
+ RPCGEN=$(STAGING_DIR)/host/bin/rpcgen
HOST_CFLAGS += -Dlinux
endef
define Host/Install
- $(INSTALL_BIN) $(HOST_BUILD_DIR)/tools/rpcgen/rpcgen $(STAGING_DIR_HOST)/bin/rpcgen
+ $(INSTALL_DIR) $(STAGING_DIR)/host/bin
+ $(INSTALL_BIN) $(HOST_BUILD_DIR)/tools/rpcgen/rpcgen $(STAGING_DIR)/host/bin/rpcgen
endef
define Package/nfs-kernel-server/install
prompt "Enable PCRE library usage"
default y
+config NGINX_NAXSI
+ bool
+ prompt "Enable NAXSI module"
+ default y
+
endmenu
include $(TOPDIR)/rules.mk
PKG_NAME:=nginx
-PKG_VERSION:=1.9.6
+PKG_VERSION:=1.9.13
PKG_RELEASE:=1
PKG_SOURCE:=nginx-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://nginx.org/download/
-PKG_MD5SUM:=f6899825e7a8deadba4948ff84515ad6
+PKG_MD5SUM:=e7502dc170277597ca73eb53c359c771
PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
PKG_LICENSE:=2-clause BSD-like license
/etc/nginx/
endef
+ADDITIONAL_MODULES:=
+ifeq ($(CONFIG_NGINX_NAXSI),y)
+ ADDITIONAL_MODULES += --add-module=$(PKG_BUILD_DIR)/nginx-naxsi/naxsi_src
+endif
+
ADDITIONAL_MODULES:=
ifeq ($(CONFIG_IPV6),y)
ADDITIONAL_MODULES += --with-ipv6
$(INSTALL_DATA) $(addprefix $(PKG_INSTALL_DIR)/etc/nginx/,$(config_files)) $(1)/etc/nginx/
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/nginx.init $(1)/etc/init.d/nginx
+ifeq ($(CONFIG_NGINX_NAXSI),y)
+ $(INSTALL_DIR) $(1)/etc/nginx
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/nginx-naxsi/naxsi_config/naxsi_core.rules $(1)/etc/nginx
+ chmod 0640 $(1)/etc/nginx/naxsi_core.rules
+endif
+ $(if $(CONFIG_NGINX_NAXSI),$($(INSTALL_BIN) $(PKG_BUILD_DIR)/nginx-naxsi/naxsi_config/naxsi_core.rules $(1)/etc/nginx))
+ $(if $(CONFIG_NGINX_NAXSI),$(chmod 0640 $(1)/etc/nginx/naxsi_core.rules))
+endef
+
+define Build/Prepare
+ $(call Build/Prepare/Default)
+ $(if $(CONFIG_NGINX_NAXSI),$(call Prepare/nginx-naxsi))
+endef
+
+define Download/nginx-naxsi
+ VERSION:=6358c3d2e68a0c9e3ad11661c2a1f63fadc9b4f2
+ SUBDIR:=nginx-naxsi
+ FILE:=nginx-naxsi-module-$(PKG_VERSION)-$$(VERSION).tar.gz
+ URL:=https://github.com/nbs-system/naxsi.git
+ PROTO:=git
+endef
+
+define Prepare/nginx-naxsi
+ $(eval $(call Download,nginx-naxsi))
+ gzip -dc $(DL_DIR)/$(FILE) | tar -C $(PKG_BUILD_DIR) $(TAR_OPTIONS)
endef
$(eval $(call BuildPackage,nginx))
include $(TOPDIR)/rules.mk
PKG_NAME:=ngircd
-PKG_VERSION:=22.1
+PKG_VERSION:=23
PKG_RELEASE:=1
PKG_MAINTAINER:=Claudio Leite <leitec@staticky.com>
PKG_LICENSE:=GPL-2.0
PKG_SOURCE_URL:= \
http://ngircd.barton.de/pub/ngircd/ \
ftp://ftp.berlios.de/pub/ngircd/
-PKG_MD5SUM:=586c4fef1fbb77dcbe723e9136ec08eb
+PKG_MD5SUM:=a58e0075fea60176fa7df092ca7e2c6a
PKG_INSTALL:=1
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=nmap
-PKG_VERSION:=7.01
+PKG_VERSION:=7.12
PKG_RELEASE:=1
PKG_MAINTAINER=Nuno Goncalves <nunojpg@gmail.com>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://nmap.org/dist/
-PKG_MD5SUM:=7fa4edc592184c7addc14f5acb3fe6f7
+PKG_MD5SUM:=0764f4dabe7cccda3c49fc3990b62a8a
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
#
-# Copyright (C) 2014-2015 OpenWrt.org
+# Copyright (C) 2014-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=nsd
-PKG_VERSION:=4.1.2
+PKG_VERSION:=4.1.9
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.nlnetlabs.nl/downloads/nsd
-PKG_MD5SUM:=73014bab5514b9babaf6c9007a6b36d8
+PKG_MD5SUM:=9ac1d5ba51351d3d98b7de765439af57
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=ntp
-PKG_VERSION:=4.2.8p4
-PKG_RELEASE:=2
+PKG_VERSION:=4.2.8p7
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/
-PKG_MD5SUM:=6af96862b09324a8ef965ca76b759c8b
+PKG_MD5SUM:=46dfba933c3e4bc924d8e55068797578
PKG_LICENSE:=Unique
PKG_LICENSE_FILES:=COPYRIGHT html/copyright.html
include $(TOPDIR)/rules.mk
PKG_NAME:=nut
-PKG_VERSION:=2.7.3
+PKG_VERSION:=2.7.4
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.networkupstools.org/source/2.7/
-PKG_MD5SUM:=a1a7f747093663e1f39ab595b63b45e4
+PKG_MD5SUM:=3ba53656933d7471f95140b32a5b8d5c
PKG_MAINTAINER:=Martin Rowe <martin.p.rowe@gmail.com>
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=LICENSE-GPL2
endef
define Package/nut/conffiles
- /etc/nut/nut.conf
- $(if $(CONFIG_NUT_CLIENTS_UPSMON),/etc/nut/upsmon.conf)
- $(if $(CONFIG_NUT_CLIENTS_UPSSCHED),/etc/nut/upssched.conf)
- $(if $(CONFIG_NUT_SERVER),/etc/nut/ups.conf)
- $(if $(CONFIG_NUT_SERVER),/etc/nut/upsd.conf)
- $(if $(CONFIG_NUT_SERVER),/etc/nut/upsd.users)
+/etc/nut/nut.conf
+$(if $(CONFIG_NUT_CLIENTS_UPSMON),/etc/nut/upsmon.conf)
+$(if $(CONFIG_NUT_CLIENTS_UPSSCHED),/etc/nut/upssched.conf)
+$(if $(CONFIG_NUT_SERVER),/etc/nut/ups.conf)
+$(if $(CONFIG_NUT_SERVER),/etc/nut/upsd.conf)
+$(if $(CONFIG_NUT_SERVER),/etc/nut/upsd.users)
endef
define Package/nut/install
endef
define Package/nut-web-cgi/conffiles
- /etc/nut/hosts.conf
- /etc/nut/upsset.conf
- /etc/nut/upsstats.html
- /etc/nut/upsstats-single.html
+/etc/nut/hosts.conf
+/etc/nut/upsset.conf
+/etc/nut/upsstats.html
+/etc/nut/upsstats-single.html
endef
define Package/nut-web-cgi/install
endef
define Package/nut-avahi-service/conffiles
- /etc/avahi/services/nut.service
+/etc/avahi/services/nut.service
endef
define Package/nut-avahi-service/install
include $(TOPDIR)/rules.mk
PKG_NAME:=ocserv
-PKG_VERSION:=0.10.10
-PKG_RELEASE:=3
+PKG_VERSION:=0.11.2
+PKG_RELEASE:=1
PKG_USE_MIPS16:=0
PKG_BUILD_DIR :=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=ftp://ftp.infradead.org/pub/ocserv/
-PKG_MD5SUM:=1f73ccb66d36cd51279323e95ae99e68
+PKG_MD5SUM:=6731f4d9a85ff0476ae37fa7a4d57ee2
PKG_LICENSE:=GPLv2
PKG_LICENSE_FILES:=COPYING
TITLE:=OpenConnect VPN server
URL:=http://www.infradead.org/ocserv/
MAINTAINER:=Nikos Mavrogiannopoulos <n.mavrogiannopoulos@gmail.com>
- DEPENDS:= +OCSERV_RADIUS:libradcli +OCSERV_HTTP_PARSER:libhttp-parser +OCSERV_SECCOMP:libseccomp +libgnutls +certtool +libncurses +libreadline +OCSERV_PAM:libpam +OCSERV_PROTOBUF:libprotobuf-c +kmod-tun
+ DEPENDS:= +OCSERV_RADIUS:libradcli +OCSERV_HTTP_PARSER:libhttp-parser +OCSERV_SECCOMP:libseccomp +libgnutls +certtool +libncurses +libreadline +OCSERV_PAM:libpam +OCSERV_PROTOBUF:libprotobuf-c +libev +kmod-tun
USERID:=ocserv=72:ocserv=72
endef
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/ocserv $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/ocserv-fw $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/ocpasswd $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/occtl $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/ocpasswd/ocpasswd $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/occtl/occtl $(1)/usr/bin/
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/ocserv.init $(1)/etc/init.d/ocserv
$(INSTALL_DIR) $(1)/etc/ocserv
include $(TOPDIR)/rules.mk
PKG_NAME:=ola
-PKG_VERSION:=0.9.7
-PKG_RELEASE:=1
+PKG_VERSION:=0.10.1
+PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/OpenLightingProject/ola.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=2a306e4f0221fea9f4833ba04b042e72c6f10cd3
+PKG_SOURCE_VERSION:=5b86f5802e2e5b23c6a010dc8d10788e6dc57614
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_LICENSE:=LGPL-2.1+
TITLE:=Open Lighting Architecture Daemon
URL:=https://www.openlighting.org/
MAINTAINER:=Christian Beier <dontmind@freeshell.org>
- DEPENDS:=+protobuf +libusb-1.0 +libuuid +libstdcpp +libpthread +librt +zlib +libncurses +sudo
+ DEPENDS:=+protobuf +libusb-1.0 +libuuid +libstdcpp +libpthread +librt +zlib +libncurses +liblo +sudo
endef
define Package/ola/description
--disable-fatal-warnings \
--disable-unittests \
--disable-http \
+ --without-dns-sd \
--with-ola-protoc-plugin=$(HOST_BUILD_DIR)/protoc/ola_protoc_plugin
HOST_CONFIGURE_ARGS += \
--- /dev/null
+diff --git a/Makefile.am b/Makefile.am
+index 22647be..7dcf0de 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -32,7 +32,7 @@ AM_DISTCHECK_CONFIGURE_FLAGS = --enable-python-libs
+ COMMON_CXXFLAGS_ONLY_WARNINGS = \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+- -Wall -Wformat -W -fvisibility-inlines-hidden \
++ -Wall -Wformat -W \
+ $(libprotobuf_CFLAGS)
+
+ COMMON_CXXFLAGS = $(COMMON_CXXFLAGS_ONLY_WARNINGS)
--- /dev/null
+From a88d6d31fc5a04be4378095e03b4aac133954026 Mon Sep 17 00:00:00 2001
+From: Christian Beier <dontmind@freeshell.org>
+Date: Tue, 15 Mar 2016 15:09:25 +0100
+Subject: [PATCH] Make DNS-SD functionality optional at build time.
+
+When building for embedded systems, for instance, we
+want to limit dependencies to a minimum and it seems
+that OLA is able to perform its core tasks without
+DNS-SD perfectly fine.
+
+Signed-off-by: Christian Beier <dontmind@freeshell.org>
+---
+ configure.ac | 27 +++++++++++++++------------
+ 1 file changed, 15 insertions(+), 12 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 6654354..0d1947c 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -411,23 +411,26 @@ AS_IF([test "x$use_ossp_uuid" = xyes],
+
+ # DNS-SD support
+ # We use either avahi or the Apple DNS-SD library.
+-
+-# dns_sd
+-AC_CHECK_HEADER(
+- [dns_sd.h],
+- [AC_SEARCH_LIBS(DNSServiceRegister, [dns_sd], [have_dnssd="yes"])])
++AC_ARG_WITH(dns-sd,
++[AS_HELP_STRING([--without-dns-sd], [disable DNS-SD support])],,)
++if test "x$with_dns_sd" != "xno"; then
++ # dns_sd
++ AC_CHECK_HEADER(
++ [dns_sd.h],
++ [AC_SEARCH_LIBS(DNSServiceRegister, [dns_sd], [have_dnssd="yes"])])
++
++ # avahi
++ PKG_CHECK_MODULES(
++ avahi,
++ [avahi-client],
++ [have_avahi="yes"],
++ [true])
++fi
+
+ AS_IF([test "x$have_dnssd" = xyes],
+ [AC_DEFINE([HAVE_DNSSD], [1], [Defined to use Bonjour DNS_SD])])
+ AM_CONDITIONAL([HAVE_DNSSD], [test "x$have_dnssd" = xyes])
+
+-# avahi
+-PKG_CHECK_MODULES(
+- avahi,
+- [avahi-client],
+- [have_avahi="yes"],
+- [true])
+-
+ AS_IF([test "x$have_avahi" = xyes],
+ [AC_DEFINE([HAVE_AVAHI], [1], [Defined to use Avahi])])
+ AM_CONDITIONAL([HAVE_AVAHI], [test "x$have_avahi" = xyes])
+--
+2.1.4
+
include $(TOPDIR)/rules.mk
PKG_NAME:=openssh
-PKG_VERSION:=7.1p1
+PKG_VERSION:=7.2p2
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:=8709736bc8a8c253bc4eeb4829888ca5
+PKG_MD5SUM:=13009a9156510d8f27e752659075cced
PKG_LICENSE:=BSD ISC
PKG_LICENSE_FILES:=LICENCE
include $(TOPDIR)/rules.mk
PKG_NAME:=opentracker
-PKG_VERSION:=20150427
+PKG_VERSION:=20151211
PKG_RELEASE:=1
-PKG_REV:=27499d7a55bde404f3273a23026f2495e96adf87
+PKG_REV:=ba25d2b2a84a31eac2956b71cb12b4b0748b35f5
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=Beerware
# $Id: Makefile $
include $(TOPDIR)/rules.mk
+include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=openvswitch
-PKG_RELEASE:=2
-PKG_VERSION:=2.4.0
+PKG_RELEASE:=7
+PKG_VERSION:=2.5.0
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=COPYING
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/openvswitch/ovs
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=b979c282ef040a20d09b8d6885648b09352f05db
+PKG_SOURCE_VERSION:=22d4614ddf83988a3771fb379ea029e663b4455a
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_BUILD_PARALLEL:=1
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
-SUPPORTED_KERNELS:=LINUX_3_8||LINUX_3_10||LINUX_3_13||LINUX_3_14||LINUX_3_18||LINUX_4_0||LINUX_4_1
+# Upstream package supports kernels between 2.6.32 and 4.3
+# see https://github.com/openvswitch/ovs/blob/master/FAQ.md
+# This list is pruned to only those kernels used in OpenWRT
+# Support for kernel 4.4 is backported
+SUPPORTED_KERNELS:=LINUX_3_18||LINUX_4_1||LINUX_4_3||LINUX_4_4
include $(INCLUDE_DIR)/package.mk
-include $(INCLUDE_DIR)/kernel.mk
$(call include_mk, python-package.mk)
define Package/openvswitch/Default
SECTION:=net
+ SUBMENU:=Open vSwitch
CATEGORY:=Network
URL:=http://openvswitch.org/
MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
1000V.
endef
-define Package/openvswitch
+define Package/openvswitch-base
$(call Package/openvswitch/Default)
- TITLE:=Open vSwitch Userspace Package
+ TITLE:=Open vSwitch Userspace Package (base)
DEPENDS:=+libpcap +libopenssl +librt +kmod-openvswitch @($(SUPPORTED_KERNELS))
endef
-define Package/openvswitch/description
+define Package/openvswitch-base/description
Provides the main userspace components required for Open vSwitch to function.
+ The main OVS tools (ovs-vsctl, ovs-ofctl, etc) are packaged separately
+ to conserve some room and allow more configurability.
endef
define Package/openvswitch-python
$(call Package/openvswitch/Default)
TITLE:=Open vSwitch Python Support
- DEPENDS:=@PACKAGE_openvswitch +PACKAGE_openvswitch:openvswitch +python
+ DEPENDS:=+openvswitch +python
endef
define Package/openvswitch-python/description
define Package/openvswitch-ipsec
$(call Package/openvswitch/Default)
- TITLE:=Open vSwitch Userspace Package
- DEPENDS:=@PACKAGE_openvswitch +PACKAGE_openvswitch:openvswitch-python
+ TITLE:=Open vSwitch GRE through IPsec tool
+ DEPENDS:=+openvswitch-python
endef
define Package/openvswitch-ipsec/description
define Package/openvswitch-benchmark
$(call Package/openvswitch/Default)
- TITLE:=Open vSwitch Userspace Package
- DEPENDS:=@PACKAGE_openvswitch +PACKAGE_openvswitch:openvswitch
+ TITLE:=Open vSwitch flow setup benchmark utility
+ DEPENDS:=+openvswitch
endef
define Package/openvswitch-benchmark/description
Utility for running OpenVSwitch benchmarking
endef
+OVS_BIN_TOOLS:=ovs-appctl ovs-ofctl ovs-dpctl ovs-vsctl ovsdb-client
+define Package/openvswitch
+ $(call Package/openvswitch/Default)
+ TITLE:=Open vSwitch Userspace Package
+ DEPENDS:=+openvswitch-base $(foreach t,$(OVS_BIN_TOOLS),+openvswitch-$(t))
+endef
+
+define Package/openvswitch/description
+ Provides the main userspace components required for Open vSwitch to function.
+ Includes also the main OVS utilities (ovs-appctl, ovs-vsctl, etc).
+endef
+
define KernelPackage/openvswitch
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Support
TITLE:=Open vSwitch Kernel Package
KCONFIG:=CONFIG_BRIDGE
- DEPENDS:=+kmod-stp @IPV6 +kmod-gre +kmod-lib-crc32c +kmod-vxlan @($(SUPPORTED_KERNELS))
+ DEPENDS:=+kmod-stp @IPV6 +kmod-gre +kmod-lib-crc32c +kmod-vxlan +kmod-nf-conntrack +kmod-nf-conntrack6 @($(SUPPORTED_KERNELS))
FILES:= \
$(PKG_BUILD_DIR)/datapath/linux/openvswitch.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,21,openvswitch)
CONFIGURE_VARS += KARCH=$(LINUX_KARCH)
MAKE_FLAGS += ARCH="$(LINUX_KARCH)"
-define Package/openvswitch/install
+define OvsBinUtility
+ define Package/openvswitch-$(1)
+ $(call Package/openvswitch/Default)
+ TITLE:=$(2)
+ DEPENDS:=+openvswitch-base
+ endef
+
+ define Package/openvswitch-$(1)/description
+ $(2)
+ endef
+
+ define Package/openvswitch-$(1)/install
+ $(INSTALL_DIR) $$(1)/usr/bin/ ;\
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/$(1) $$(1)/usr/bin/
+ endef
+endef
+
+define Package/openvswitch-base/install
$(INSTALL_DIR) $(1)/etc/openvswitch
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/etc/init.d/openvswitch.init $(1)/etc/init.d/openvswitch
$(INSTALL_DIR) $(1)/usr/lib/
- $(CP) $(PKG_BUILD_DIR)/lib/.libs/libsflow.so* $(1)/usr/lib/
- $(CP) $(PKG_BUILD_DIR)/lib/.libs/libopenvswitch.so* $(1)/usr/lib/
- $(CP) $(PKG_BUILD_DIR)/ofproto/.libs/libofproto.so* $(1)/usr/lib/
- $(CP) $(PKG_BUILD_DIR)/ovsdb/.libs/libovsdb.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libofproto.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libopenvswitch.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libovsdb.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsflow.so* $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/.libs/ovs-appctl $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/.libs/ovs-ofctl $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/ovsdb/.libs/ovsdb-client $(1)/usr/bin/
-
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/.libs/ovs-dpctl $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/.libs/ovs-vsctl $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/ovsdb/.libs/ovsdb-tool $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ovsdb-tool $(1)/usr/bin/
$(INSTALL_DIR) $(1)/usr/sbin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/vswitchd/.libs/ovs-vswitchd $(1)/usr/sbin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/ovsdb/.libs/ovsdb-server $(1)/usr/sbin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/ovs-vswitchd $(1)/usr/sbin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/ovsdb-server $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/usr/share/openvswitch/
- $(INSTALL_CONF) $(PKG_BUILD_DIR)/vswitchd/vswitch.ovsschema $(1)/usr/share/openvswitch/
+ $(INSTALL_CONF) $(PKG_INSTALL_DIR)/usr/share/openvswitch/vswitch.ovsschema $(1)/usr/share/openvswitch/
endef
define Package/openvswitch-python/install
- $(INSTALL_DIR) $(1)/usr/lib/python$(PYTHON_VERSION)/
- $(CP) $(PKG_BUILD_DIR)/python/ovs/ $(1)/usr/lib/python$(PYTHON_VERSION)/
+ $(INSTALL_DIR) $(1)/usr/lib/python$(PYTHON_VERSION)/ovs
+ $(CP) $(PKG_INSTALL_DIR)/usr/share/openvswitch/python/ovs/* $(1)/usr/lib/python$(PYTHON_VERSION)/ovs
endef
define Package/openvswitch-ipsec/install
define Package/openvswitch-benchmark/install
$(INSTALL_DIR) $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/.libs/ovs-benchmark $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ovs-benchmark $(1)/usr/bin/
endef
-define Package/openvswitch/postinst
-#!/bin/sh
-[ -n "$${IPKG_INSTROOT}" ] || /etc/init.d/openvswitch enable || true
+define Package/openvswitch/install
+ :
endef
-$(eval $(call BuildPackage,openvswitch))
+$(eval $(call OvsBinUtility,ovs-appctl,Open vSwitch app control utility))
+$(eval $(call OvsBinUtility,ovs-ofctl,Open vSwitch OpenFlow control utility))
+$(eval $(call OvsBinUtility,ovs-dpctl,Open vSwitch datapath management utility))
+$(eval $(call OvsBinUtility,ovs-vsctl,Open vSwitch ovs-vswitchd management utility))
+$(eval $(call OvsBinUtility,ovsdb-client,Open vSwitch database JSON-RPC client))
+
+$(foreach t,$(OVS_BIN_TOOLS),$(eval $(call BuildPackage,openvswitch-$(t))))
+
+$(eval $(call BuildPackage,openvswitch-base))
$(eval $(call BuildPackage,openvswitch-python))
$(eval $(call BuildPackage,openvswitch-ipsec))
$(eval $(call BuildPackage,openvswitch-benchmark))
+$(eval $(call BuildPackage,openvswitch))
$(eval $(call KernelPackage,openvswitch))
+++ /dev/null
-From 5919cb26c631b1dd77a745a3c546f9d117ed34b3 Mon Sep 17 00:00:00 2001
-From: Hauke Mehrtens <hauke@hauke-m.de>
-Date: Sat, 23 May 2015 18:12:09 +0200
-Subject: [PATCH] datapath: do not add vlan_hwaccel_push_inside() for kernel >=
- 3.18.13
-
-The vlan_hwaccel_push_inside() function was backported in this commit
-to kernel 3.18.13:
-
-commit a67e2e88342accd49587d9bad72f6dabd7673f7c
-Author: Jiri Pirko <jiri@resnulli.us>
-Date: Wed Nov 19 14:04:59 2014 +0100
-
- vlan: introduce *vlan_hwaccel_push_inside helpers
-
- [ Upstream commit 5968250c868ceee680aa77395b24e6ddcae17d36 ]
-
-Without this patch compilation breaks on kernel >= 3.18.13
-
-Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
----
- datapath/linux/compat/include/linux/if_vlan.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/datapath/linux/compat/include/linux/if_vlan.h
-+++ b/datapath/linux/compat/include/linux/if_vlan.h
-@@ -52,7 +52,7 @@ static inline struct sk_buff *rpl_vlan_i
- }
- #endif
-
--#if LINUX_VERSION_CODE < KERNEL_VERSION(3,19,0)
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,18,13)
- /*
- * __vlan_hwaccel_push_inside - pushes vlan tag to the payload
- * @skb: skbuff to tag
diff --git a/configure.ac b/configure.ac
-index 8d47eb9..69eeed8 100644
+index e6a23a6..8a7c6d6 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -117,7 +117,6 @@ OVS_CHECK_XENSERVER_VERSION
+@@ -118,7 +118,6 @@ OVS_CHECK_XENSERVER_VERSION
OVS_CHECK_GROFF
OVS_CHECK_GNU_MAKE
OVS_CHECK_TLS
OVS_CHECK_ATOMIC_ALWAYS_LOCK_FREE(1)
OVS_CHECK_ATOMIC_ALWAYS_LOCK_FREE(2)
diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c
-index 9b2e74f..70126bb 100644
+index 712cb5a..e840f10 100644
--- a/lib/netdev-linux.c
+++ b/lib/netdev-linux.c
@@ -40,7 +40,9 @@
#include <netinet/in.h>
#include <poll.h>
diff --git a/lib/ovs-atomic.h b/lib/ovs-atomic.h
-index 9ead907..86d3341 100644
+index 9ead907..0a131d7 100644
--- a/lib/ovs-atomic.h
+++ b/lib/ovs-atomic.h
-@@ -325,8 +325,6 @@
- #include "ovs-atomic-clang.h"
- #elif HAVE_STDATOMIC_H
- #include "ovs-atomic-c11.h"
-- #elif __GNUC__ >= 4 && __GNUC_MINOR__ >= 7
-- #include "ovs-atomic-gcc4.7+.h"
- #elif __GNUC__ && defined(__x86_64__)
- #include "ovs-atomic-x86_64.h"
- #elif __GNUC__ && defined(__i386__)
+@@ -318,7 +318,7 @@
+ #include "util.h"
+
+ #define IN_OVS_ATOMIC_H
+- #if __CHECKER__
++ #if 1
+ /* sparse doesn't understand some GCC extensions we use. */
+ #include "ovs-atomic-pthreads.h"
+ #elif __has_extension(c_atomic)
+++ /dev/null
-From 554daf066bf4a8eb7bbc8edc1a877a3afc0de38d Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Jason=20K=C3=B6lker?= <jason@koelker.net>
-Date: Wed, 2 Sep 2015 22:40:24 +0000
-Subject: [PATCH] datapath: Add net/ip6_checksum.h to stt.c
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-`csum_ipv6_magic` is an asm inline on most platforms. However if it is
-not defined (like on ppc64le) including <net/ip6_checksum.h> will fall
-back to the c implementation by wrapping it in an
-`#ifndef _HAVE_ARCH_IPV6_CSUM`.
-
-Signed-off-by: Jason Kölker <jason@koelker.net>
-Signed-off-by: Jesse Gross <jesse@nicira.com>
----
- datapath/linux/compat/stt.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/datapath/linux/compat/stt.c b/datapath/linux/compat/stt.c
-index b44f470..dd21753 100644
---- a/datapath/linux/compat/stt.c
-+++ b/datapath/linux/compat/stt.c
-@@ -30,6 +30,7 @@
- #include <net/icmp.h>
- #include <net/inet_ecn.h>
- #include <net/ip.h>
-+#include <net/ip6_checksum.h>
- #include <net/net_namespace.h>
- #include <net/netns/generic.h>
- #include <net/sock.h>
---
-2.1.4
-
+++ /dev/null
-diff --git a/acinclude.m4 b/acinclude.m4
-index 45cfaf6..42866de 100644
---- a/acinclude.m4
-+++ b/acinclude.m4
-@@ -134,10 +134,10 @@ AC_DEFUN([OVS_CHECK_LINUX], [
- AC_MSG_RESULT([$kversion])
-
- if test "$version" -ge 4; then
-- if test "$version" = 4 && test "$patchlevel" -le 0; then
-+ if test "$version" = 4 && test "$patchlevel" -le 1; then
- : # Linux 4.x
- else
-- AC_ERROR([Linux kernel in $KBUILD is version $kversion, but version newer than 4.0.x is not supported (please refer to the FAQ for advice)])
-+ AC_ERROR([Linux kernel in $KBUILD is version $kversion, but version newer than 4.1.x is not supported (please refer to the FAQ for advice)])
- fi
- elif test "$version" = 3; then
- : # Linux 3.x
+++ /dev/null
-diff --git a/datapath/datapath.h b/datapath/datapath.h
-index fdf35f0..02be8be 100644
---- a/datapath/datapath.h
-+++ b/datapath/datapath.h
-@@ -86,10 +86,8 @@ struct datapath {
- /* Stats. */
- struct dp_stats_percpu __percpu *stats_percpu;
-
--#ifdef CONFIG_NET_NS
- /* Network namespace ref. */
-- struct net *net;
--#endif
-+ possible_net_t net;
-
- u32 user_features;
- };
-@@ -154,12 +152,12 @@ int lockdep_ovsl_is_held(void);
-
- static inline struct net *ovs_dp_get_net(const struct datapath *dp)
- {
-- return read_pnet(&dp->net);
-+ return ovs_compat_read_pnet(&dp->net);
- }
-
- static inline void ovs_dp_set_net(struct datapath *dp, struct net *net)
- {
-- write_pnet(&dp->net, net);
-+ ovs_compat_write_pnet(&dp->net, net);
- }
-
- struct vport *ovs_lookup_vport(const struct datapath *dp, u16 port_no);
-diff --git a/datapath/linux/compat/include/net/net_namespace.h b/datapath/linux/compat/include/net/net_namespace.h
-index b7dbfe3..7763584 100644
---- a/datapath/linux/compat/include/net/net_namespace.h
-+++ b/datapath/linux/compat/include/net/net_namespace.h
-@@ -51,4 +51,57 @@ static void rpl_unregister_pernet_gen_##TYPE(struct rpl_pernet_operations *rpl_p
- #define DEFINE_COMPAT_PNET_REG_FUNC(TYPE)
- #endif /* 2.6.33 */
-
-+/* In recent kernel versions (4.1) this type is defined ; for older versions we have to define it */
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0)
-+#define ovs_compat_read_pnet read_pnet
-+#define ovs_compat_write_pnet write_pnet
-+
-+#if defined(CONFIG_NET_NS) && defined(NETNS_REFCNT_DEBUG)
-+static inline struct net *hold_net(struct net *net)
-+{
-+ if (net)
-+ atomic_inc(&net->use_count);
-+ return net;
-+}
-+
-+static inline void release_net(struct net *net)
-+{
-+ if (net)
-+ atomic_dec(&net->use_count);
-+}
-+#else
-+static inline struct net *hold_net(struct net *net)
-+{
-+ return net;
-+}
-+
-+static inline void release_net(struct net *net)
-+{
-+}
-+#endif
-+
-+#else /* lower than 4.1 */
-+typedef struct {
-+#ifdef CONFIG_NET_NS
-+ struct net *net;
-+#endif
-+} possible_net_t;
-+
-+static inline void ovs_compat_write_pnet(possible_net_t *pnet, struct net *net)
-+{
-+#ifdef CONFIG_NET_NS
-+ pnet->net = net;
-+#endif
-+}
-+
-+static inline struct net *ovs_compat_read_pnet(const possible_net_t *pnet)
-+{
-+#ifdef CONFIG_NET_NS
-+ return pnet->net;
-+#else
-+ return &init_net;
-+#endif
-+}
-+#endif /* 4.1.0 */
-+
- #endif /* net/net_namespace.h wrapper */
--- /dev/null
+--- a/tests/test-ovn.c
++++ b/tests/test-ovn.c
+@@ -1043,7 +1043,7 @@ wait_pid(pid_t *pids, int *n)
+ int status;
+ pid_t pid;
+
+- pid = waitpid(WAIT_ANY, &status, 0);
++ pid = waitpid(-1, &status, 0);
+ if (pid < 0) {
+ ovs_fatal(errno, "waitpid failed");
+ } else if (WIFEXITED(status)) {
--- /dev/null
+From 8147cec9ee8feea9440cf79365709ddc32ff57d5 Mon Sep 17 00:00:00 2001
+From: Alexandru Ardelean <ardeleanalex@gmail.com>
+Date: Thu, 4 Feb 2016 09:20:34 +0200
+Subject: [PATCH] lib/ovs-thread: Ensure that thread stacks are always at least
+ 512 kB.
+
+This makes a difference for libc implementations (such as musl libc) that
+have a really small default pthread stack size.
+
+Will reference this discussion:
+http://patchwork.ozlabs.org/patch/572340/
+
+Reported-by: Robert McKay <robert@mckay.com>
+Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
+[blp@ovn.org made style changes]
+Signed-off-by: Ben Pfaff <blp@ovn.org>
+---
+ lib/ovs-thread.c | 29 +++++++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
+
+diff --git a/lib/ovs-thread.c b/lib/ovs-thread.c
+index 6ebda07..b0e10ee 100644
+--- a/lib/ovs-thread.c
++++ b/lib/ovs-thread.c
+@@ -340,6 +340,25 @@ ovsthread_wrapper(void *aux_)
+ return aux.start(aux.arg);
+ }
+
++static void
++set_min_stack_size(pthread_attr_t *attr, size_t min_stacksize)
++{
++ size_t stacksize;
++ int error;
++
++ error = pthread_attr_getstacksize(attr, &stacksize);
++ if (error) {
++ ovs_abort(error, "pthread_attr_getstacksize failed");
++ }
++
++ if (stacksize < min_stacksize) {
++ error = pthread_attr_setstacksize(attr, min_stacksize);
++ if (error) {
++ ovs_abort(error, "pthread_attr_setstacksize failed");
++ }
++ }
++}
++
+ /* Starts a thread that calls 'start(arg)'. Sets the thread's name to 'name'
+ * (suffixed by its ovsthread_id()). Returns the new thread's pthread_t. */
+ pthread_t
+@@ -358,10 +377,20 @@ ovs_thread_create(const char *name, void *(*start)(void *), void *arg)
+ aux->arg = arg;
+ ovs_strlcpy(aux->name, name, sizeof aux->name);
+
+- error = pthread_create(&thread, NULL, ovsthread_wrapper, aux);
++ /* Some small systems use a default stack size as small as 80 kB, but OVS
++ * requires approximately 384 kB according to the following analysis:
++ * http://openvswitch.org/pipermail/dev/2016-January/065049.html
++ *
++ * We use 512 kB to give us some margin of error. */
++ pthread_attr_t attr;
++ pthread_attr_init(&attr);
++ set_min_stack_size(&attr, 512 * 1024);
++
++ error = pthread_create(&thread, &attr, ovsthread_wrapper, aux);
+ if (error) {
+ ovs_abort(error, "pthread_create failed");
+ }
++ pthread_attr_destroy(&attr);
+ return thread;
+ }
+ \f
+--
+2.1.4
+
+++ /dev/null
-diff --git a/datapath/linux/compat/stt.c b/datapath/linux/compat/stt.c
-index b44f470..f95416e 100644
---- a/datapath/linux/compat/stt.c
-+++ b/datapath/linux/compat/stt.c
-@@ -1326,9 +1326,14 @@ static void clean_percpu(struct work_struct *work)
-
- static unsigned int nf_ip_hook(FIRST_PARAM
- struct sk_buff *skb,
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0)
-+ const struct nf_hook_state *state
-+#else
- const struct net_device *in,
- const struct net_device *out,
-- int (*okfn)(struct sk_buff *))
-+ int (*okfn)(struct sk_buff *)
-+#endif
-+ )
- {
- struct stt_sock *stt_sock;
- int ip_hdr_len;
+++ /dev/null
-diff --git a/datapath/linux/compat/include/net/vxlan.h b/datapath/linux/compat/include/net/vxlan.h
-index 0d60c18..db4dfb6 100644
---- a/datapath/linux/compat/include/net/vxlan.h
-+++ b/datapath/linux/compat/include/net/vxlan.h
-@@ -99,8 +99,13 @@ static inline int rpl_vxlan_xmit_skb(struct vxlan_sock *vs,
- return -ENOSYS;
- }
-
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0)
-+ return vxlan_xmit_skb(rt, vs->sock->sk, skb, src, dst, tos, ttl, df,
-+ src_port, dst_port, md, xnet, vxflags);
-+#else
- return vxlan_xmit_skb(rt, skb, src, dst, tos, ttl, df,
- src_port, dst_port, md, xnet, vxflags);
-+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0) */
- }
-
- #define vxlan_xmit_skb rpl_vxlan_xmit_skb
--- /dev/null
+diff --git a/acinclude.m4 b/acinclude.m4
+index 11c7787..07dd647 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -134,10 +134,10 @@ AC_DEFUN([OVS_CHECK_LINUX], [
+ AC_MSG_RESULT([$kversion])
+
+ if test "$version" -ge 4; then
+- if test "$version" = 4 && test "$patchlevel" -le 3; then
++ if test "$version" = 4 && test "$patchlevel" -le 4; then
+ : # Linux 4.x
+ else
+- AC_ERROR([Linux kernel in $KBUILD is version $kversion, but version newer than 4.3.x is not supported (please refer to the FAQ for advice)])
++ AC_ERROR([Linux kernel in $KBUILD is version $kversion, but version newer than 4.4.x is not supported (please refer to the FAQ for advice)])
+ fi
+ elif test "$version" = 3; then
+ : # Linux 3.x
+diff --git a/datapath/actions.c b/datapath/actions.c
+index 20413c9..719c43d 100644
+--- a/datapath/actions.c
++++ b/datapath/actions.c
+@@ -706,7 +706,8 @@ static void ovs_fragment(struct vport *vport, struct sk_buff *skb, u16 mru,
+ skb_dst_set_noref(skb, &ovs_dst);
+ IPCB(skb)->frag_max_size = mru;
+
+- ip_do_fragment(skb->sk, skb, ovs_vport_output);
++ ip_do_fragment(NET_ARG(dev_net(ovs_dst.dev))
++ skb->sk, skb, ovs_vport_output);
+ refdst_drop(orig_dst);
+ } else if (ethertype == htons(ETH_P_IPV6)) {
+ const struct nf_ipv6_ops *v6ops = nf_get_ipv6_ops();
+@@ -727,7 +728,8 @@ static void ovs_fragment(struct vport *vport, struct sk_buff *skb, u16 mru,
+ skb_dst_set_noref(skb, &ovs_rt.dst);
+ IP6CB(skb)->frag_max_size = mru;
+
+- v6ops->fragment(skb->sk, skb, ovs_vport_output);
++ v6ops->fragment(NET_ARG(dev_net(ovs_rt.dst.dev))
++ skb->sk, skb, ovs_vport_output);
+ refdst_drop(orig_dst);
+ } else {
+ WARN_ONCE(1, "Failed fragment ->%s: eth=%04x, MRU=%d, MTU=%d.",
+diff --git a/datapath/conntrack.c b/datapath/conntrack.c
+index 795ed91..3b9bfba 100644
+--- a/datapath/conntrack.c
++++ b/datapath/conntrack.c
+@@ -323,7 +323,7 @@ static int handle_fragments(struct net *net, struct sw_flow_key *key,
+ int err;
+
+ memset(IPCB(skb), 0, sizeof(struct inet_skb_parm));
+- err = ip_defrag(skb, user);
++ err = ip_defrag(NET_ARG(net) skb, user);
+ if (err)
+ return err;
+
+@@ -374,7 +374,7 @@ ovs_ct_expect_find(struct net *net, const struct nf_conntrack_zone *zone,
+ {
+ struct nf_conntrack_tuple tuple;
+
+- if (!nf_ct_get_tuplepr(skb, skb_network_offset(skb), proto, &tuple))
++ if (!nf_ct_get_tuplepr(skb, skb_network_offset(skb), proto, NET_ARG(net) &tuple))
+ return NULL;
+ return __nf_ct_expect_find(net, zone, &tuple);
+ }
+diff --git a/datapath/datapath.c b/datapath/datapath.c
+index e3d3c8c..a4157f4 100644
+--- a/datapath/datapath.c
++++ b/datapath/datapath.c
+@@ -96,8 +96,12 @@ static bool ovs_must_notify(struct genl_family *family, struct genl_info *info,
+ static void ovs_notify(struct genl_family *family, struct genl_multicast_group *grp,
+ struct sk_buff *skb, struct genl_info *info)
+ {
+- genl_notify(family, skb, genl_info_net(info),
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,0)
++ genl_notify(family, skb, info, GROUP_ID(grp), GFP_KERNEL);
++#else
++ genl_notify(family, skb, genl_info_net(info),
+ info->snd_portid, GROUP_ID(grp), info->nlhdr, GFP_KERNEL);
++#endif
+ }
+
+ /**
+diff --git a/datapath/linux/compat/include/linux/netfilter_ipv6.h b/datapath/linux/compat/include/linux/netfilter_ipv6.h
+index 3939e14..b724623 100644
+--- a/datapath/linux/compat/include/linux/netfilter_ipv6.h
++++ b/datapath/linux/compat/include/linux/netfilter_ipv6.h
+@@ -13,7 +13,7 @@
+ * the callback parameter needs to be in the form that older kernels accept.
+ * We don't backport the other ipv6_ops as they're currently unused by OVS. */
+ struct ovs_nf_ipv6_ops {
+- int (*fragment)(struct sock *sk, struct sk_buff *skb,
++ int (*fragment)(NET_ARG(net) struct sock *sk, struct sk_buff *skb,
+ int (*output)(OVS_VPORT_OUTPUT_PARAMS));
+ };
+ #define nf_ipv6_ops ovs_nf_ipv6_ops
+diff --git a/datapath/linux/compat/include/net/ip.h b/datapath/linux/compat/include/net/ip.h
+index cd87bcc..b749301 100644
+--- a/datapath/linux/compat/include/net/ip.h
++++ b/datapath/linux/compat/include/net/ip.h
+@@ -66,8 +66,20 @@ static inline unsigned int rpl_ip_skb_dst_mtu(const struct sk_buff *skb)
+ #define ip_skb_dst_mtu rpl_ip_skb_dst_mtu
+ #endif /* HAVE_IP_SKB_DST_MTU */
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,0)
++#define NET_PARAM(x) struct net *x,
++#define NET_ARG(x) x,
++#define NET_DEV_NET(x) dev_net(x)
++#define NET_DECLARE_INIT(x,y)
++#else
++#define NET_PARAM(x)
++#define NET_ARG(x)
++#define NET_DEV_NET(x)
++#define NET_DECLARE_INIT(x,y) struct net *x = y;
++#endif
++
+ #ifdef HAVE_IP_FRAGMENT_TAKES_SOCK
+-#define OVS_VPORT_OUTPUT_PARAMS struct sock *sock, struct sk_buff *skb
++#define OVS_VPORT_OUTPUT_PARAMS NET_PARAM(net) struct sock *sock, struct sk_buff *skb
+ #else
+ #define OVS_VPORT_OUTPUT_PARAMS struct sk_buff *skb
+ #endif
+@@ -89,12 +101,13 @@ static inline bool ip_defrag_user_in_between(u32 user,
+ #endif /* < v4.2 */
+
+ #ifndef HAVE_IP_DO_FRAGMENT
+-static inline int rpl_ip_do_fragment(struct sock *sk, struct sk_buff *skb,
++static inline int rpl_ip_do_fragment(NET_PARAM(net) struct sock *sk, struct sk_buff *skb,
+ int (*output)(OVS_VPORT_OUTPUT_PARAMS))
+ {
+ unsigned int mtu = ip_skb_dst_mtu(skb);
+ struct iphdr *iph = ip_hdr(skb);
+ struct rtable *rt = skb_rtable(skb);
+ struct net_device *dev = rt->dst.dev;
++ NET_DECLARE_INIT(net, dev_net(dev));
+
+ if (unlikely(((iph->frag_off & htons(IP_DF)) && !skb->ignore_df) ||
+@@ -102,7 +115,7 @@ static inline int rpl_ip_do_fragment(struct sock *sk, struct sk_buff *skb,
+ IPCB(skb)->frag_max_size > mtu))) {
+
+ pr_warn("Dropping packet in ip_do_fragment()\n");
+- IP_INC_STATS(dev_net(dev), IPSTATS_MIB_FRAGFAILS);
++ IP_INC_STATS(net, IPSTATS_MIB_FRAGFAILS);
+ kfree_skb(skb);
+ return -EMSGSIZE;
+ }
+@@ -116,8 +129,7 @@ static inline int rpl_ip_do_fragment(struct sock *sk, struct sk_buff *skb,
+ #define ip_do_fragment rpl_ip_do_fragment
+ #endif /* IP_DO_FRAGMENT */
+
+-int rpl_ip_defrag(struct sk_buff *skb, u32 user);
+-#define ip_defrag rpl_ip_defrag
++int rpl_ip_defrag(NET_PARAM(net) struct sk_buff *skb, u32 user);
+
+ int __init rpl_ipfrag_init(void);
+ void rpl_ipfrag_fini(void);
+@@ -127,14 +139,15 @@ void rpl_ipfrag_fini(void);
+ * ("inet: frag: Always orphan skbs inside ip_defrag()"), but it should be
+ * always included in kernels 4.5+. */
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(4,5,0)
+-static inline int rpl_ip_defrag(struct sk_buff *skb, u32 user)
++static inline int rpl_ip_defrag(NET_PARAM(net) struct sk_buff *skb, u32 user)
+ {
+ skb_orphan(skb);
+- return ip_defrag(skb, user);
++ return ip_defrag(NET_ARG(net) skb, user);
+ }
+-#define ip_defrag rpl_ip_defrag
+ #endif
+
++#define ip_defrag rpl_ip_defrag
++
+ static inline int rpl_ipfrag_init(void) { return 0; }
+ static inline void rpl_ipfrag_fini(void) { }
+ #endif /* HAVE_CORRECT_MRU_HANDLING && OVS_FRAGMENT_BACKPORT */
+diff --git a/datapath/linux/compat/include/net/ip6_tunnel.h b/datapath/linux/compat/include/net/ip6_tunnel.h
+index ce65087..eacf9ca 100644
+--- a/datapath/linux/compat/include/net/ip6_tunnel.h
++++ b/datapath/linux/compat/include/net/ip6_tunnel.h
+@@ -17,11 +17,15 @@ static inline void ip6tunnel_xmit(struct sock *sk, struct sk_buff *skb,
+
+ pkt_len = skb->len - skb_inner_network_offset(skb);
+ /* TODO: Fix GSO for ipv6 */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,0)
++ err = ip6_local_out(dev_net(dev), sk, skb);
++#else
+ #ifdef HAVE_IP6_LOCAL_OUT_SK
+ err = ip6_local_out_sk(sk, skb);
+ #else
+ err = ip6_local_out(skb);
+ #endif
++#endif /* >= kernel 4.4 */
+ if (net_xmit_eval(err) != 0)
+ pkt_len = net_xmit_eval(err);
+ else
+diff --git a/datapath/linux/compat/include/net/vxlan.h b/datapath/linux/compat/include/net/vxlan.h
+index b50cd17..230f3ad 100644
+--- a/datapath/linux/compat/include/net/vxlan.h
++++ b/datapath/linux/compat/include/net/vxlan.h
+@@ -218,10 +218,20 @@ struct vxlan_dev {
+ struct net_device *rpl_vxlan_dev_create(struct net *net, const char *name,
+ u8 name_assign_type, struct vxlan_config *conf);
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,0)
++static inline __be16 vxlan_dev_dst_port(struct vxlan_dev *vxlan,
++ unsigned short family)
++{
++ if (family == AF_INET6)
++ return inet_sk(vxlan->vn6_sock->sock->sk)->inet_sport;
++ return inet_sk(vxlan->vn4_sock->sock->sk)->inet_sport;
++}
++#else
+ static inline __be16 vxlan_dev_dst_port(struct vxlan_dev *vxlan)
+ {
+ return inet_sport(vxlan->vn_sock->sock->sk);
+ }
++#endif
+
+ static inline netdev_features_t vxlan_features_check(struct sk_buff *skb,
+ netdev_features_t features)
+diff --git a/datapath/linux/compat/ip_fragment.c b/datapath/linux/compat/ip_fragment.c
+index cf2daaa..e168196 100644
+--- a/datapath/linux/compat/ip_fragment.c
++++ b/datapath/linux/compat/ip_fragment.c
+@@ -674,11 +674,11 @@ out_fail:
+ }
+
+ /* Process an incoming IP datagram fragment. */
+-int rpl_ip_defrag(struct sk_buff *skb, u32 user)
++int rpl_ip_defrag(NET_ARG(net) struct sk_buff *skb, u32 user)
+ {
+ struct net_device *dev = skb->dev ? : skb_dst(skb)->dev;
+ int vif = vrf_master_ifindex_rcu(dev);
+- struct net *net = dev_net(dev);
++ NET_DECLARE_INIT(net, dev_net(dev));
+ struct ipq *qp;
+
+ IP_INC_STATS_BH(net, IPSTATS_MIB_REASMREQDS);
+diff --git a/datapath/linux/compat/stt.c b/datapath/linux/compat/stt.c
+index eb397e8..5ea3c52 100644
+--- a/datapath/linux/compat/stt.c
++++ b/datapath/linux/compat/stt.c
+@@ -1450,7 +1450,11 @@ static void clean_percpu(struct work_struct *work)
+ }
+
+ #ifdef HAVE_NF_HOOKFN_ARG_OPS
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,0)
++#define FIRST_PARAM void *priv
++#else
+ #define FIRST_PARAM const struct nf_hook_ops *ops
++#endif /* >= kernel 4.4 */
+ #else
+ #define FIRST_PARAM unsigned int hooknum
+ #endif
+@@ -1498,7 +1502,9 @@ static unsigned int nf_ip_hook(FIRST_PARAM, struct sk_buff *skb, LAST_PARAM)
+
+ static struct nf_hook_ops nf_hook_ops __read_mostly = {
+ .hook = nf_ip_hook,
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,4,0)
+ .owner = THIS_MODULE,
++#endif
+ .pf = NFPROTO_IPV4,
+ .hooknum = NF_INET_LOCAL_IN,
+ .priority = INT_MAX,
+diff --git a/datapath/vport-vxlan.c b/datapath/vport-vxlan.c
+index c05f5d4..3cbb568 100644
+--- a/datapath/vport-vxlan.c
++++ b/datapath/vport-vxlan.c
+@@ -153,7 +153,12 @@ static int vxlan_get_egress_tun_info(struct vport *vport, struct sk_buff *skb,
+ {
+ struct vxlan_dev *vxlan = netdev_priv(vport->dev);
+ struct net *net = ovs_dp_get_net(vport->dp);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,0)
++ unsigned short family = ip_tunnel_info_af(upcall->egress_tun_info);
++ __be16 dst_port = vxlan_dev_dst_port(vxlan, family);
++#else
+ __be16 dst_port = vxlan_dev_dst_port(vxlan);
++#endif
+ __be16 src_port;
+ int port_min;
+ int port_max;
+++ /dev/null
-diff --git a/datapath/vport-lisp.c b/datapath/vport-lisp.c
-index 0024eb4..ce1c3a8 100644
---- a/datapath/vport-lisp.c
-+++ b/datapath/vport-lisp.c
-@@ -455,7 +455,11 @@ static int lisp_send(struct vport *vport, struct sk_buff *skb)
- ovs_skb_set_inner_protocol(skb, skb->protocol);
-
- df = tun_key->tun_flags & TUNNEL_DONT_FRAGMENT ? htons(IP_DF) : 0;
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0)
-+ sent_len = udp_tunnel_xmit_skb(rt, lisp_port->lisp_rcv_socket->sk, skb, saddr, tun_key->ipv4_dst,
-+#else
- sent_len = udp_tunnel_xmit_skb(rt, skb, saddr, tun_key->ipv4_dst,
-+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0) */
- tun_key->ipv4_tos, tun_key->ipv4_ttl,
- df, src_port, dst_port, false, true);
-
PKG_NAME:=p910nd
PKG_VERSION:=0.97
-PKG_RELEASE:=4
+PKG_RELEASE:=5
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=@SF/p910nd
#!/bin/sh /etc/rc.common
# Copyright (C) 2007 OpenWrt.org
START=50
+USE_PROCD=1
append_bool() {
local section="$1"
}
start_service() {
- local section="$1"
- args=""
-
- append_bool "$section" bidirectional "-b"
- append_string "$section" device "-f "
- append_string "$section" bind "-i "
- append_string "$section" port ""
- config_get_bool "enabled" "$section" "enabled" '1'
- [ "$enabled" -gt 0 ] && /usr/sbin/p910nd $args
-}
-
-stop_service() {
- local section="$1"
- config_get port "$section" port
-
- PID_F=/var/run/p910${port}d.pid
- [ -f $PID_F ] && kill $(cat $PID_F)
-}
-
-start() {
config_load "p910nd"
- config_foreach start_service p910nd
+ config_foreach start_p910nd p910nd
}
-stop() {
- config_load "p910nd"
- config_foreach stop_service p910nd
+
+start_p910nd() {
+ local section="$1"
+ config_get_bool "enabled" "$section" "enabled" '1'
+ if [ "$enabled" -gt 0 ]; then
+ args="-d "
+ config_get port "$section" port
+ name=p910${port}d
+ append_bool "$section" bidirectional "-b"
+ append_string "$section" device "-f "
+ append_string "$section" bind "-i "
+ append_string "$section" port ""
+ procd_open_instance $name
+ procd_set_param command /usr/sbin/p910nd $args
+ procd_close_instance
+ fi
}
config 'polipo' 'general'
option 'enabled' '1'
- # adress on which polipo will listen, 0.0.0.0 means all addresses
+ # address on which polipo will listen, 0.0.0.0 means all addresses
option 'proxyAddress' '0.0.0.0'
# port on which polipo will listen, default is 8123
#option 'proxyPort' '8123'
Sun Oct 25 09:45:14 2015 daemon.err pppd[22188]: Received bad configure-rej: 12 06 00 00 00 00
-To debug such problems, we can try adding `option pppd_optinos debug` to the interface config. In the above case, it's a LCP CCP configure rej (the CCP options struct is exactly 6 octets in size as indicated in source code `pppd/ccp.h`) and since the internet fee is not charged on the bytes transfered, I will just use `noccp` to disable the negotiation altogether.
+To debug such problems, we can try adding `option pppd_optinos debug` to the interface config. In the above case, it's a LCP CCP configure rej (the CCP options struct is exactly 6 octets in size as indicated in source code `pppd/ccp.h`) and since the internet fee is not charged on the bytes transferred, I will just use `noccp` to disable the negotiation altogether.
Also to optimize bulk transfer performance, you can try tweaking the ciphers. OpenSSH client does not support `none` cipher by default and you have to patch and install it for by yourself. Another option is to try ciphers like `arcfour` and `blowfish-cbc`. In my case, `arcfour` has the best throughput.
PKG_NAME:=pptpd
PKG_VERSION:=1.4.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/poptop
nodeflate
#noproxyarp
#nomppc
-mppe required,no40,no56,stateless
require-mschap-v2
refuse-chap
refuse-mschap
#debug
-option /etc/ppp/options.pptpd
speed 115200
stimeout 10
#localip & remoteip are not needed, ip management is done by pppd
BIN=/usr/sbin/pptpd
CONFIG=/var/etc/pptpd.conf
CHAP_SECRETS=/var/etc/chap-secrets
+OPTIONS_PPTP=/var/etc/options.pptpd
validate_login_section() {
uci_validate_section pptpd login "${1}" \
uci_validate_section pptpd service "${1}" \
'enabled:uinteger' \
'localip:string' \
- 'remoteip:string'
+ 'remoteip:string' \
+ 'mppe:list(string):required no40 no56 stateless' \
+ 'logwtmp:uinteger'
}
setup_login() {
}
setup_config() {
+ local enabled localip remoteip mppe
+
validate_pptpd_section "${1}" || {
echo "validation failed"
return 1
mkdir -p /var/etc
cp /etc/pptpd.conf $CONFIG
+ cp /etc/ppp/options.pptpd $OPTIONS_PPTP
[ -n "$localip" ] && echo "localip $localip" >> $CONFIG
[ -n "$remoteip" ] && echo "remoteip $remoteip" >> $CONFIG
+ [ "$logwtmp" -eq 1 ] && echo "logwtmp" >> $CONFIG
+
+ echo "mppe $(echo $mppe | sed -e 's/\s/,/g')" >> $OPTIONS_PPTP
return 0
}
ln -sfn $CHAP_SECRETS /etc/ppp/chap-secrets
procd_open_instance
- procd_set_param command $BIN -c $CONFIG
+ procd_set_param command $BIN -c $CONFIG -o $OPTIONS_PPTP
procd_close_instance
}
--- /dev/null
+if PACKAGE_privoxy
+
+ comment "Shared libraries settings"
+
+ config PRIVOXY_disable-pthread
+ bool "Don't use POSIX libpthread (-5489b)"
+ default n
+
+ config PRIVOXY_disable-dynamic-pcre
+ bool "Use the built-in, static pcre, even if libpcre is available (+25669b)"
+ default n
+
+ config PRIVOXY_disable-zlib
+ bool "Don't use zlib to decompress data before filtering. (-1336b)"
+ default n
+
+ comment "Config options. Overwrites/ignore configuration file settings"
+
+ config PRIVOXY_disable-toggle
+ bool "Don't support temporary disable (+2797b)"
+ default n
+
+ config PRIVOXY_disable-force
+ bool "Don't allow single-page disable (-434b)"
+ default n
+
+ config PRIVOXY_disable-fast-redirects
+ bool "Don't support fast redirects (-1393b)"
+ default n
+
+ config PRIVOXY_disable-stats
+ bool "Don't keep statistics (+2870b)"
+ default n
+
+ config PRIVOXY_enable-ie-images
+ bool "Enable MS IE image handling. !Read help! (+2694b)"
+ help
+ Enable a quick but not always reliable auto-detect whether
+ requests from MS Internet Explorer are for an image or not.
+ default n
+
+ config PRIVOXY_disable-image-blocking
+ bool "Don't check for image request - assume HTML (-655b)"
+ help
+ Don't try to figure out whether a request is
+ for an image or HTML - assume HTML.
+ default n
+
+ config PRIVOXY_disable-acl-support
+ bool "Disable ACL access control (-3496b)"
+ help
+ Prevents the use of ACLs to control access to Privoxy by IP address.
+ default n
+
+ config PRIVOXY_disable-trust-files
+ bool "Prevents the use of trust files. (-1302b)"
+ default n
+
+ config PRIVOXY_disable-editor
+ bool "Disable web-based editor. !Read help! (-44979b)"
+ help
+ Prevents the use of the web-based actions file
+ editor and web-based temporary disable setting.
+ default n
+
+ config PRIVOXY_enable-no-gifs
+ bool "Use politically correct PNG format. !Read help! (+112b)"
+ help
+ Use politically correct PNG format instead of GIF
+ for built-in images. May not work with all browsers.
+ default n
+
+ config PRIVOXY_enable-graceful-termination
+ bool "Allow to shutdown Privoxy through the webinterface. (+1685b)"
+ default n
+
+ config PRIVOXY_enable-extended-host-patterns
+ bool "Enable and require PCRE syntax in host patterns. !Read help! (-1329b)"
+ help
+ Enable and require PCRE syntax in host patterns. This feature hasn't
+ been announced yet and it's not clear if it's a good idea. It's expected
+ to work, but undocumented. You should only enable it if you know what
+ PCRE is and are sure that you need it for your host patterns. You can
+ use tools/url-pattern-translator.pl to convert existing action files to
+ use PCRE host patterns. Please don't enable this option when creating
+ packages for others that may not be expecting it.
+ default n
+
+ config PRIVOXY_enable-external-filters
+ bool "Allow to filter content with scripts and programs. Experimental. (+4821b)"
+ default n
+
+ config PRIVOXY_enable-accept-filter
+ bool "Try to use accf_http(9) if supported. (+-0b)"
+ default n
+
+ config PRIVOXY_enable-strptime-sanity-checks
+ bool "Only trust strptime() results if ... !Read help! (+407b)"
+ help
+ Only trust strptime() results if an additional strftime()/strptime()
+ conversion doesn't change the result. Can be useful if strptime() is
+ known or suspected to be broken.
+ default n
+
+ config PRIVOXY_enable-compression
+ bool "Allow Privoxy to compress buffered content. (+1275b)"
+ help
+ Allow Privoxy to compress buffered content
+ if the client supports it. Requires zlib support.
+ depends on !PRIVOXY_no_zlib
+ default n
+
+
+endif
+
\ No newline at end of file
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=privoxy
-PKG_VERSION:=3.0.23
-PKG_RELEASE:=3
+PKG_VERSION:=3.0.24
+PKG_RELEASE:=1
PKG_SOURCE:=privoxy-$(PKG_VERSION)-stable-src.tar.gz
PKG_SOURCE_URL:=@SF/ijbswa
-PKG_MD5SUM:=bbe47d5ff1a54d9f9fc93a160532697f
+PKG_MD5SUM:=44a47d1a5000db8cccd61ace0e25e7f7
PKG_BUILD_DIR:=$(BUILD_DIR)/privoxy-$(PKG_VERSION)-stable
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=LICENSE
-PKG_MAINTAINER:=christian.schoenebeck@gmail.com
+PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com>
+
+PKG_CONFIG_DEPENDS:= \
+ CONFIG_IPV6 \
+ \
+ CONFIG_PRIVOXY_disable-pthread \
+ CONFIG_PRIVOXY_disable-dynamic-pcre \
+ CONFIG_PRIVOXY_disable-zlib \
+ \
+ CONFIG_PRIVOXY_disable-toggle \
+ CONFIG_PRIVOXY_disable-force \
+ CONFIG_PRIVOXY_disable-fast-redirects \
+ CONFIG_PRIVOXY_disable-stats \
+ CONFIG_PRIVOXY_enable-ie-images \
+ CONFIG_PRIVOXY_disable-image-blocking \
+ CONFIG_PRIVOXY_disable-acl-support \
+ CONFIG_PRIVOXY_disable-trust-files \
+ CONFIG_PRIVOXY_disable-editor \
+ CONFIG_PRIVOXY_enable-no-gifs \
+ CONFIG_PRIVOXY_enable-graceful-termination \
+ CONFIG_PRIVOXY_enable-extended-host-patterns \
+ CONFIG_PRIVOXY_enable-external-filters \
+ CONFIG_PRIVOXY_enable-accept-filter \
+ CONFIG_PRIVOXY_enable-strptime-sanity-checks \
+ CONFIG_PRIVOXY_enable-compression
include $(INCLUDE_DIR)/package.mk
SECTION:=net
CATEGORY:=Network
SUBMENU:=Web Servers/Proxies
- DEPENDS:=+libpcre +libpthread +zlib
TITLE:=Privoxy WEB Proxy
URL:=http://www.privoxy.org/
USERID:=privoxy=8118:privoxy=8118
+ MENU:=1
+ DEPENDS:=+!PRIVOXY_no_pcre:libpcre +!PRIVOXY_no_pthread:libpthread +!PRIVOXY_no_zlib:zlib
endef
# shown in LuCI package description
# shown in make menuconfig <Help>
define Package/$(PKG_NAME)/config
-help
- Privoxy is a web proxy with advanced filtering capabilities for protecting
- privacy, modifying web page content, managing cookies, controlling access,
- and removing ads, banners, pop-ups and other obnoxious Internet junk.
- Privoxy has a very flexible configuration and can be customized to suit
- individual needs and tastes.
- Privoxy has application for both stand-alone systems and multi-user networks.
-
- Run as : $(USERID)
- Version: $(PKG_VERSION)-$(PKG_RELEASE)
- Home : $(URL)
-
- $(PKG_MAINTAINER)
+ help
+ Privoxy is a web proxy with advanced filtering capabilities for protecting
+ privacy, modifying web page content, managing cookies, controlling access,
+ and removing ads, banners, pop-ups and other obnoxious Internet junk.
+ Privoxy has a very flexible configuration and can be customized to suit
+ individual needs and tastes.
+ Privoxy has application for both stand-alone systems and multi-user networks.
+ Run as : $(USERID)
+ Version: $(PKG_VERSION)-$(PKG_RELEASE)
+ Home : $(URL)
+ $(PKG_MAINTAINER)
+
+ source "$(SOURCE)/Config.in"
endef
CONFIGURE_ARGS += \
- --sysconfdir=/etc/privoxy
+ --sysconfdir=/etc/privoxy \
+ $(if $(CONFIG_IPV6),,--disable-ipv6-support) \
+ \
+ $(if $(CONFIG_PRIVOXY_disable-pthread),--disable-pthread) \
+ $(if $(CONFIG_PRIVOXY_disable-dynamic-pcre),--disable-dynamic-pcre) \
+ $(if $(CONFIG_PRIVOXY_disable-zlib),--disable-zlib) \
+ \
+ $(if $(CONFIG_PRIVOXY_disable-toggle),--disable-toggle) \
+ $(if $(CONFIG_PRIVOXY_disable-force),--disable-force) \
+ $(if $(CONFIG_PRIVOXY_disable-fast-redirects),--disable-fast-redirects) \
+ $(if $(CONFIG_PRIVOXY_disable-stats),--disable-stats) \
+ $(if $(CONFIG_PRIVOXY_enable-ie-images),--enable-ie-images) \
+ $(if $(CONFIG_PRIVOXY_disable-image-blocking),--disable-image-blocking) \
+ $(if $(CONFIG_PRIVOXY_disable-acl-support),--disable-acl-support) \
+ $(if $(CONFIG_PRIVOXY_disable-trust-files),--disable-trust-files) \
+ $(if $(CONFIG_PRIVOXY_disable-editor),--disable-editor) \
+ $(if $(CONFIG_PRIVOXY_enable-no-gifs),--enable-no-gifs) \
+ $(if $(CONFIG_PRIVOXY_enable-graceful-termination),--enable-graceful-termination) \
+ $(if $(CONFIG_PRIVOXY_enable-extended-host-patterns),--enable-extended-host-patterns) \
+ $(if $(CONFIG_PRIVOXY_enable-external-filters),--enable-external-filters) \
+ $(if $(CONFIG_PRIVOXY_enable-accept-filter),--enable-accept-filter) \
+ $(if $(CONFIG_PRIVOXY_enable-strptime-sanity-checks),--enable-strptime-sanity-checks) \
+ $(if $(CONFIG_PRIVOXY_enable-compression),--enable-compression)
# needed otherwise errors during compile
MAKE_FLAGS:=
# stop service if PKG_UPGRADE
[ "$${PKG_UPGRADE}" = "1" ] && /etc/init.d/privoxy stop >/dev/null 2>&1
- exit 0 # supress errors from stop command
+ exit 0 # suppress errors from stop command
endef
define Package/$(PKG_NAME)/install
-exec install -m0664 -t $(1)/etc/privoxy {} \;
$(INSTALL_DIR) \
+ $(1)/lib/upgrade/keep.d \
$(1)/etc/init.d \
$(1)/etc/hotplug.d/iface \
$(1)/etc/config
+ $(INSTALL_DATA) ./files/privoxy.upgrade $(1)/lib/upgrade/keep.d/privoxy
$(INSTALL_BIN) ./files/privoxy.init $(1)/etc/init.d/privoxy
$(INSTALL_BIN) ./files/privoxy.hotplug $(1)/etc/hotplug.d/iface/80-privoxy
$(INSTALL_CONF) ./files/privoxy.config $(1)/etc/config/privoxy
endef
+define Package/$(PKG_NAME)/postinst
+ #!/bin/sh
+ grep -i privoxy $${IPKG_INSTROOT}/etc/services >/dev/null 2>&1 || \
+ echo -e "privoxy\t8118" >> $${IPKG_INSTROOT}/etc/services
+endef
+
$(eval $(call BuildPackage,$(PKG_NAME)))
# only (re-)start on ifup
[ "$ACTION" = "ifup" ] || exit 0
+# only start if boot_delay is done
+[ -f /tmp/privoxy.hotplug ] || exit 0
PIDFILE=/var/run/privoxy.pid
# detect list options (LENGTH) and ignore
echo $__OPT | grep -i "_LENGTH" >/dev/null 2>&1 && return
# detect list options (ITEM) and ignore
- echo $__OPT | grep -i "_ITEM" >/dev/null 2>&1 && __OPT=$(echo $__OPT | sed -e "s#_ITEM.##g")
+ echo $__OPT | grep -i "_ITEM" >/dev/null 2>&1 && __OPT=$(echo $__OPT | sed -e "s#_ITEM.*##g")
# uci only accept "_" but we need "-"
local __OPT=$(echo $__OPT | sed -e "s#_#-#g")
# write to config
echo '### SEE /etc/config/privoxy INSTEAD' >> $CFGTEMP
echo '' >> $CFGTEMP
+ # logdir and logfile
+ # privoxy needs read/write access
+ _LOGDIR=$(uci -q get privoxy.privoxy.logdir) || _LOGDIR="/var/log"
+ _LOGFILE=$(uci -q get privoxy.privoxy.logfile) || _LOGFILE="privoxy.log"
+ mkdir -m0755 -p $_LOGDIR
+ touch $_LOGDIR/$_LOGFILE
+ chmod 664 $_LOGDIR/$_LOGFILE
+ chown privoxy:privoxy $_LOGDIR/$_LOGFILE
+ echo -e "logdir\t$_LOGDIR" >> $CFGTEMP
+ echo -e "logfile\t$_LOGFILE" >> $CFGTEMP
+
# confdir
# privoxy needs read access (possibly write access)
_CONFDIR=$(uci -q get privoxy.privoxy.confdir) || _CONFDIR="/etc/privoxy"
echo -e "templdir\t$_TEMPLDIR" >> $CFGTEMP
fi
- # logdir and logfile
- # privoxy needs read/write access
- _LOGDIR=$(uci -q get privoxy.privoxy.logdir) || _LOGDIR="/var/log"
- _LOGFILE=$(uci -q get privoxy.privoxy.logfile) || _LOGFILE="privoxy.log"
- mkdir -m0755 -p $_LOGDIR
- touch $_LOGDIR/$_LOGFILE
- chmod 664 $_LOGDIR/$_LOGFILE
- chown privoxy:privoxy $_LOGDIR/$_LOGFILE
- echo -e "logdir\t$_LOGDIR" >> $CFGTEMP
- echo -e "logfile\t$_LOGFILE" >> $CFGTEMP
-
# temporary-directory
# privoxy needs read/write access
_TMP_DIR=$(uci -q get privoxy.privoxy.temporary_directory) # no default needed
}
boot() {
- return 0 # will be started by "iface" hotplug events
+ # wait a given time (default 10 seconds) before startup
+ # to wait for interfaces to come up / not using hotplug events during boot
+ _start() {
+ [ $1 -gt 0 ] && {
+ logger -p daemon.info -t "privoxy[]" "Scheduled startup in $1 seconds"
+ sleep $1
+ }
+ start
+ }
+
+ local _DELAY
+ _DELAY=$(uci_get "privoxy" "system" "boot_delay" "10")
+ _start $_DELAY &
+ return 0
+}
+
+shutdown() {
+ rm -f /tmp/privoxy.hotplug
+ stop
}
start() {
_uci2conf
/usr/sbin/privoxy --pidfile $PIDFILE --user privoxy.privoxy $CFGFILE
+ touch /tmp/privoxy.hotplug
# verify startup
_PID=$(cat $PIDFILE 2>/dev/null)
local _ERR=$?
[ $_ERR -eq 0 ] \
&& logger -p daemon.notice -t "privoxy[$_PID]" "Started successfully"\
- || logger -p daemon.warn -t "privoxy[-----]" "Failed to start"
+ || logger -p daemon.warn -t "privoxy[]" "Failed to start"
return $_ERR
}
logger -p daemon.notice -t "privoxy[$_PID]" "Shutdown successfully"
else
kill -9 $_tmp # Normally never come here
- logger -p daemon.warn -t "privoxy[-----]" "Shutdown forced by KILL"
+ logger -p daemon.warn -t "privoxy[$_tmp]" "Shutdown forced by KILL"
fi
return 0
}
--- /dev/null
+/etc/config/privoxy
+/etc/privoxy/user.action
+/etc/privoxy/user.filter
+/etc/privoxy/user.trust
include $(TOPDIR)/rules.mk
PKG_NAME:=prosody
-PKG_VERSION:=0.9.8
+PKG_VERSION:=0.9.10
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://prosody.im/downloads/source
-PKG_MD5SUM:=5144cd832a1860443e21e336dc560ee7
+PKG_MD5SUM:=ef6d4a9e6dcae577eb52f7277d7beac5
PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
PKG_LICENSE:=MIT/X11
#!/bin/sh /etc/rc.common
-# Copyright (C) 2010-2011 OpenWrt.org
+# Copyright (C) 2011-2016 OpenWrt.org
START=99
-EXTRA_COMMANDS="status"
-EXTRA_HELP=" status Print the status of the service"
+USE_PROCD=1
BIN=/usr/bin/prosodyctl
LOG_D=/var/log/prosody
RUN_USER=prosody
RUN_GROUP=prosody
-start() {
+start_service() {
[ -d /var/run/prosody ] || {
mkdir -m 0755 -p /var/run/prosody
chown prosody:prosody /var/run/prosody
}
}
-
- $BIN start
+ procd_open_instance
+ procd_set_param command "$BIN" start
+ procd_set_param file /etc/prosody/prosody.cfg.lua
+ procd_close_instance
}
-stop() {
- $BIN stop
-}
-
-reload() {
- [ -f $PID_F ] && kill -HUP $(cat $PID_F)
-}
-
-status() {
- $BIN status
+stop_service() {
+ ${BIN} stop
}
+++ /dev/null
-diff -u --recursive prosody-0.9.7-vanilla/net/dns.lua prosody-0.9.7/net/dns.lua
---- prosody-0.9.7-vanilla/net/dns.lua 2015-01-02 00:26:19.981433830 -0500
-+++ prosody-0.9.7/net/dns.lua 2015-01-02 00:33:10.467077715 -0500
-@@ -225,7 +225,7 @@
-
-
- function dns.random(...) -- - - - - - - - - - - - - - - - - - - dns.random
-- math.randomseed(math.floor(10000*socket.gettime()) % 0x100000000);
-+ math.randomseed(math.floor(10000*socket.gettime()) % 0x80000000);
- dns.random = math.random;
- return dns.random(...);
- end
#
-# Copyright (C) 2008-2015 OpenWrt.org
+# Copyright (C) 2008-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=radicale
-PKG_VERSION:=0.10
-PKG_RELEASE:=2
+PKG_VERSION:=1.1.1
+PKG_RELEASE:=1
PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com>
PKG_LICENSE:=GPL-3.0
PKG_SOURCE:=Radicale-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://pypi.python.org/packages/source/R/Radicale/
-PKG_MD5SUM:=32655d8893962956ead0ad690cca6044
+PKG_MD5SUM:=a29dd538377ea24cec83237a636122ae
# needed for "r"adicale <-> "R"adicale
PKG_BUILD_DIR:=$(BUILD_DIR)/Radicale-$(PKG_VERSION)
# stop service if PKG_UPGRADE
[ "$${PKG_UPGRADE}" = "1" ] && /etc/init.d/$(PKG_NAME) stop >/dev/null 2>&1
- exit 0 # supress errors from stop command
+ exit 0 # suppress errors from stop command
endef
define Package/$(PKG_NAME)-py3/preinst
$(call Package/$(PKG_NAME)-py2/preinst)
endef
define Package/$(PKG_NAME)-py2/install
- $(INSTALL_DIR) $(1)/etc/init.d
- $(INSTALL_BIN) ./files/radicale.init $(1)/etc/init.d/radicale
- $(INSTALL_DIR) $(1)/etc/hotplug.d/iface
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/radicale.init $(1)/etc/init.d/radicale
+
+ $(INSTALL_DIR) $(1)/etc/hotplug.d/iface
$(INSTALL_BIN) ./files/radicale.hotplug $(1)/etc/hotplug.d/iface/80-radicale
- $(INSTALL_DIR) $(1)/etc/config
- $(INSTALL_CONF) ./files/radicale.config $(1)/etc/config/radicale
- $(INSTALL_DIR) $(1)/etc/radicale/ssl
- $(INSTALL_DATA) ./files/config.template $(1)/etc/radicale/
- $(INSTALL_DATA) ./files/logging.template $(1)/etc/radicale/
+ $(INSTALL_DIR) $(1)/etc/config
+ $(INSTALL_CONF) ./files/radicale.config $(1)/etc/config/radicale
+
+ $(INSTALL_DIR) $(1)/lib/upgrade/keep.d
+ $(INSTALL_DATA) ./files/radicale.upgrade $(1)/lib/upgrade/keep.d/radicale
+
+ $(INSTALL_DIR) $(1)/etc/radicale/ssl
+ $(INSTALL_DATA) ./files/config.template $(1)/etc/radicale/config.template
+ $(INSTALL_DATA) ./files/logging.template $(1)/etc/radicale/logging.template
$(INSTALL_DATA) ./files/radicale.users $(1)/etc/radicale/users
$(INSTALL_DATA) ./files/radicale.rights $(1)/etc/radicale/rights
# Each Radicale's config [section] is setup as UCI config setting 'section'
#
+####################################################
+# OpenWrt specific settings
+# not part of radicale package
+#
+config system 'radicale'
+ # delayed startup at boot (default 10 seconds)
+ # to wait for netifd to bring up interfaces
+ # during this time iface hotplug events are ignored
+# option boot_delay '10'
+
####################################################
# Server options
#
####################################################
# Authentication options
#
-config setting 'auth'
+config setting 'auth'
# Authentication method
# Value: None | htpasswd | IMAP | LDAP | PAM | courier | http | remote_user | custom
# only (re-)start on ifup
[ "$ACTION" = "ifup" ] || exit 0
+# only start if boot_delay is done
+[ -f /tmp/radicale.hotplug ] || exit 0
_PID=$(ps | grep '[p]ython.*[r]adicale' 2>/dev/null | awk '{print $1}')
kill -1 $_PID 2>/dev/null
#!/bin/sh /etc/rc.common
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
START=80
STOP=10
}
boot() {
- return 0 # will be started by "iface" hotplug events
+ # wait a given time (default 10 seconds) before startup
+ # to wait for interfaces to come up / not using hotplug events during boot
+ _start() {
+ [ $1 -gt 0 ] && sleep $1
+ start
+ }
+
+ local _DELAY
+ _DELAY=$(uci_get "radicale" "system" "boot_delay" "10")
+ _start $_DELAY &
+ return 0
+}
+
+shutdown() {
+ rm -f /tmp/radicale.hotplug
+ stop
}
start() {
_set_permission
radicale --daemon --config=$SYSCFG
+ touch /tmp/radicale.hotplug
_running & # check if running and syslog
--- /dev/null
+/etc/config/radicale
+/etc/radicale/users
+/etc/radicale/rights
+
include $(TOPDIR)/rules.mk
PKG_NAME:=radsecproxy
-PKG_VERSION:=1.6.6
+PKG_VERSION:=1.6.7
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://software.uninett.no/radsecproxy/
-PKG_MD5SUM:=8270b2a9d7cb1dcf30ddd677f3e7ac5f
+PKG_MD5SUM:=d76cf4fc68515667b8c67387f5045150
PKG_INSTALL:=1
include $(TOPDIR)/rules.mk
PKG_NAME:=rsync
-PKG_VERSION:=3.1.1
-PKG_RELEASE:=2
+PKG_VERSION:=3.1.2
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://rsync.samba.org/ftp/rsync/src
-PKG_MD5SUM:=43bd6676f0b404326eee2d63be3cdcfe
+PKG_MD5SUM:=0f758d7e000c0f7f7d3792610fad70cb
PKG_MAINTAINER:=Maxim Storchak <m.storchak@gmail.com>
PKG_LICENSE:=GPL-3.0
PKG_LICENSE_FILES:=COPYING
+++ /dev/null
-From: Wayne Davison <wayned@samba.org>
-Date: Wed, 31 Dec 2014 20:41:03 +0000 (-0800)
-Subject: Complain if an inc-recursive path is not right for its dir.
-X-Git-Url: https://git.samba.org/?p=rsync.git;a=commitdiff_plain;h=962f8b90045ab331fc04c9e65f80f1a53e68243b
-
-Complain if an inc-recursive path is not right for its dir.
-This ensures that a malicious sender can't use a just-sent
-symlink as a trasnfer path.
----
-
-diff --git a/flist.c b/flist.c
-index c24672e..92e4b65 100644
---- a/flist.c
-+++ b/flist.c
-@@ -2435,8 +2435,9 @@ struct file_list *send_file_list(int f, int argc, char *argv[])
- return flist;
- }
-
--struct file_list *recv_file_list(int f)
-+struct file_list *recv_file_list(int f, int dir_ndx)
- {
-+ const char *good_dirname = NULL;
- struct file_list *flist;
- int dstart, flags;
- int64 start_read;
-@@ -2492,6 +2493,23 @@ struct file_list *recv_file_list(int f)
- flist_expand(flist, 1);
- file = recv_file_entry(f, flist, flags);
-
-+ if (inc_recurse) {
-+ static const char empty_dir[] = "\0";
-+ const char *cur_dir = file->dirname ? file->dirname : empty_dir;
-+ if (relative_paths && *cur_dir == '/')
-+ cur_dir++;
-+ if (cur_dir != good_dirname) {
-+ const char *d = dir_ndx >= 0 ? f_name(dir_flist->files[dir_ndx], NULL) : empty_dir;
-+ if (strcmp(cur_dir, d) != 0) {
-+ rprintf(FERROR,
-+ "ABORTING due to invalid dir prefix from sender: %s (should be: %s)\n",
-+ cur_dir, d);
-+ exit_cleanup(RERR_PROTOCOL);
-+ }
-+ good_dirname = cur_dir;
-+ }
-+ }
-+
- if (S_ISREG(file->mode)) {
- /* Already counted */
- } else if (S_ISDIR(file->mode)) {
-@@ -2615,7 +2633,7 @@ void recv_additional_file_list(int f)
- rprintf(FINFO, "[%s] receiving flist for dir %d\n",
- who_am_i(), ndx);
- }
-- flist = recv_file_list(f);
-+ flist = recv_file_list(f, ndx);
- flist->parent_ndx = ndx;
- }
- }
-diff --git a/io.c b/io.c
-index b9a9bd0..a868fa9 100644
---- a/io.c
-+++ b/io.c
-@@ -1685,7 +1685,7 @@ void wait_for_receiver(void)
- rprintf(FINFO, "[%s] receiving flist for dir %d\n",
- who_am_i(), ndx);
- }
-- flist = recv_file_list(iobuf.in_fd);
-+ flist = recv_file_list(iobuf.in_fd, ndx);
- flist->parent_ndx = ndx;
- #ifdef SUPPORT_HARD_LINKS
- if (preserve_hard_links)
-diff --git a/main.c b/main.c
-index e7a13f7..713b818 100644
---- a/main.c
-+++ b/main.c
-@@ -1009,7 +1009,7 @@ static void do_server_recv(int f_in, int f_out, int argc, char *argv[])
- filesfrom_fd = -1;
- }
-
-- flist = recv_file_list(f_in);
-+ flist = recv_file_list(f_in, -1);
- if (!flist) {
- rprintf(FERROR,"server_recv: recv_file_list error\n");
- exit_cleanup(RERR_FILESELECT);
-@@ -1183,7 +1183,7 @@ int client_run(int f_in, int f_out, pid_t pid, int argc, char *argv[])
-
- if (write_batch && !am_server)
- start_write_batch(f_in);
-- flist = recv_file_list(f_in);
-+ flist = recv_file_list(f_in, -1);
- if (inc_recurse && file_total == 1)
- recv_additional_file_list(f_in);
-
-diff --git a/rsync.c b/rsync.c
-index 68ff6b1..c3ecc51 100644
---- a/rsync.c
-+++ b/rsync.c
-@@ -364,7 +364,7 @@ int read_ndx_and_attrs(int f_in, int f_out, int *iflag_ptr, uchar *type_ptr,
- }
- /* Send all the data we read for this flist to the generator. */
- start_flist_forward(ndx);
-- flist = recv_file_list(f_in);
-+ flist = recv_file_list(f_in, ndx);
- flist->parent_ndx = ndx;
- stop_flist_forward();
- }
include $(TOPDIR)/rules.mk
PKG_NAME:=rsyslog
-PKG_VERSION:=8.14.0
+PKG_VERSION:=8.17.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.rsyslog.com/files/download/rsyslog/
-PKG_MD5SUM:=9862b08fd8d13753c13d7f9d86ec8f4e
+PKG_MD5SUM:=fadc26576a783afdf11f64beca278bc9
PKG_MAINTAINER:=Dov Murik <dmurik@us.ibm.com>
PKG_LICENSE:=GPL-3.0
CATEGORY:=Network
TITLE:=Enhanced system logging and kernel message trapping daemons
URL:=http://www.rsyslog.com/
- DEPENDS:=+libestr +libjson-c +libuuid +zlib
+ DEPENDS:=+libestr +libfastjson +libuuid +zlib
endef
define Package/rsyslog/conffiles
include $(TOPDIR)/rules.mk
PKG_NAME:=scapy
-PKG_VERSION:=2.2.0
+PKG_VERSION:=2.3.1
PKG_RELEASE:=1
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=PKG-INFO
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).zip
PKG_SOURCE_URL:=https://bitbucket.org/secdev/scapy/downloads/
-PKG_MD5SUM:=d68903c5d877820026dc544caa0b5d3c
+PKG_MD5SUM:=a30d828e59801d1d092219b349f1da9e
PKG_BUILD_DEPENDS:=python python-setuptools
include $(TOPDIR)/rules.mk
PKG_NAME:=shadowsocks-client
-PKG_VERSION:=0.5
+PKG_VERSION:=0.6
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=http://github.com/zhao-gang/shadowsocks-tiny.git
+PKG_SOURCE_URL:=https://github.com/zhao-gang/shadowsocks-tiny.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=d8ef02715f40de0fb7ba0f7267d3f8260f38ba80
+PKG_SOURCE_VERSION:=b59d754f838213d60b908aed0b7d4d5a81f273e2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MAINTAINER:=Zhao, Gang <gang.zhao.42@gmail.com>
+++ /dev/null
---- a/client.c
-+++ b/client.c
-@@ -111,7 +111,7 @@ int client_do_local_read(int sockfd, str
- goto out;
- }
-
-- if (encrypt(sockfd, ln) == -1)
-+ if (crypto_encrypt(sockfd, ln) == -1)
- goto out;
-
- ret = do_send(ln->server_sockfd, ln, "cipher", 0);
-@@ -172,7 +172,7 @@ int client_do_server_read(int sockfd, st
- }
- }
-
-- if (decrypt(sockfd, ln) == -1)
-+ if (crypto_decrypt(sockfd, ln) == -1)
- goto out;
-
- if (ln->state & SS_UDP) {
---- a/crypto.c
-+++ b/crypto.c
-@@ -185,7 +185,7 @@ err:
- return -1;
- }
-
--int encrypt(int sockfd, struct link *ln)
-+int crypto_encrypt(int sockfd, struct link *ln)
- {
- int len, cipher_len;
- EVP_CIPHER_CTX *ctx_p;
-@@ -223,7 +223,7 @@ err:
- return -1;
- }
-
--int decrypt(int sockfd, struct link *ln)
-+int crypto_decrypt(int sockfd, struct link *ln)
- {
- int len, text_len;
- EVP_CIPHER_CTX *ctx_p;
---- a/crypto.h
-+++ b/crypto.h
-@@ -15,7 +15,7 @@ extern int iv_len;
-
- int crypto_init(char *key, char *method);
- void crypto_exit(void);
--int encrypt(int sockfd, struct link *ln);
--int decrypt(int sockfd, struct link *ln);
-+int crypto_encrypt(int sockfd, struct link *ln);
-+int crypto_decrypt(int sockfd, struct link *ln);
-
- #endif
---- a/server.c
-+++ b/server.c
-@@ -36,7 +36,7 @@ int server_do_remote_read(int sockfd, st
- goto out;
- }
-
-- if (encrypt(sockfd, ln) == -1)
-+ if (crypto_encrypt(sockfd, ln) == -1)
- goto out;
-
- ret = do_send(ln->local_sockfd, ln, "cipher", 0);
-@@ -91,7 +91,7 @@ int server_do_local_read(int sockfd, str
- }
- }
-
-- if (decrypt(sockfd, ln) == -1)
-+ if (crypto_decrypt(sockfd, ln) == -1)
- goto out;
-
- if (ln->state & SS_UDP) {
}
else if (next_hdr == NEXTHDR_ESP || next_hdr == NEXTHDR_AUTH)
{
- PDEBUG("ip6_ip4(): cannot translate AUTH or ESP extention header, packet dropped\n");
+ PDEBUG("ip6_ip4(): cannot translate AUTH or ESP extension header, packet dropped\n");
return -1;
}
else if (next_hdr == NEXTHDR_IPV6)
value within the original packet
*/
/* NOT IMPLEMENTED */
- PDEBUG("ip6_ip4(): NEXTHDR in extention header = 0, packet dropped\n");
+ PDEBUG("ip6_ip4(): NEXTHDR in extension header = 0, packet dropped\n");
return -1;
}
else
{
- PDEBUG("ip6_ip4(): cannot translate extention header = %d, packet dropped\n", next_hdr);
+ PDEBUG("ip6_ip4(): cannot translate extension header = %d, packet dropped\n", next_hdr);
return -1;
}
}
menu "Configuration"
depends on PACKAGE_snort
-config SNORT_MYSQL
- bool "Enable MySQL support"
- default n
- help
- This option enables support for logging to a MySQL database.
- Disabled by default.
-
-config SNORT_PGSQL
- bool "Enable PostgreSQL support"
- default n
- help
- This option enables support for logging to a PostgreSQL database.
- Disabled by default.
-
config SNORT_LZMA
bool "Enable LZMA support"
default n
PKG_NAME:=snort
PKG_VERSION:=2.9.7.2
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_LICENSE:=GPL-2.0
PKG_MAINTAINER:=Luka Perkov <luka@openwrt.org>
SUBMENU:=Firewall
SECTION:=net
CATEGORY:=Network
- DEPENDS:=+libdaq +libdnet +libopenssl +libpcap +libpcre +libpthread +libuuid +zlib +SNORT_MYSQL:libmysqlclient +SNORT_PGSQL:libpq +SNORT_PGSQL:libuuid +SNORT_LZMA:liblzma
+ DEPENDS:=+libdaq +libdnet +libopenssl +libpcap +libpcre +libpthread +libuuid +zlib +SNORT_LZMA:liblzma
TITLE:=Lightweight Network Intrusion Detection System
URL:=http://www.snort.org/
MENU:=1
--with-daq-libraries="$(STAGING_DIR)/usr/lib" \
--disable-static-daq
-ifeq ($(CONFIG_SNORT_MYSQL),)
-CONFIGURE_ARGS += \
- --without-mysql
-endif
-
-ifeq ($(CONFIG_PGSQL),)
-CONFIGURE_ARGS += \
- --without-postgresql
-endif
-
ifeq ($(CONFIG_SNORT_LZMA),)
CONFIGURE_ARGS += \
--disable-lzma
endif
CONFIGURE_VARS += \
- CPPFLAGS="$$$$CPPFLAGS -I$(STAGING_DIR)/usr/include/mysql" \
- LDFLAGS="$$$$LDFLAGS -L$(STAGING_DIR)/usr/lib/mysql" \
PATH="$(STAGING_DIR)/usr/lib/libnet-1.0.x/bin:$$$$PATH"
MAKE_FLAGS += \
include $(TOPDIR)/rules.mk
PKG_NAME:=sqm-scripts
-PKG_SOURCE_VERSION:=f2be2cc07c9902c3031f799ed4e133964e8c608f
-PKG_VERSION:=1.0.6
+PKG_SOURCE_VERSION:=56677e61a0d410d744e0382c35980dd44aaa072b
+PKG_VERSION:=1.0.7
PKG_RELEASE:=1
PKG_LICENSE:=GPLv2
--disable-auth-basic \
--disable-arch-native \
--with-krb5-config=no \
+ --without-mit-krb5 \
--without-libcap \
--without-netfilter-conntrack
PKG_MAINTAINER:=Zoltan HERPAI <wigyori@uid0.hu>
PKG_SOURCE:=$(PKG_NAME)-fuse-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=@SF/fuse
+PKG_SOURCE_URL:=https://github.com/libfuse/sshfs/releases/download/sshfs_2_5
PKG_MD5SUM:=17494910db8383a366b1301e5f5148a9
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-fuse-$(PKG_VERSION)
$(MAKE) -C $(PKG_BUILD_DIR) \
CC="$(TARGET_CC)" \
CFLAGS="$(TARGET_CFLAGS)" \
+ LDFLAGS="$(TARGET_LDFLAGS)" \
USELIBCONFIG= \
USELIBWRAP= \
USELIBPCRE= \
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PKG_NAME:=sstp-client
PKG_VERSION:=1.0.10
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/sstp-client/$(PKG_VERSION)
endef
define Package/sstp-client/conffiles
- /etc/ppp/chap-secrets
- /etc/ppp/peers/peer-sstp-example-nopty.txt
- /etc/ppp/peers/peer-sstp-example.txt
+/etc/ppp/chap-secrets
+/etc/ppp/peers/peer-sstp-example-nopty.txt
+/etc/ppp/peers/peer-sstp-example.txt
endef
define Package/sstp-client/install
include $(TOPDIR)/rules.mk
PKG_NAME:=strongswan
-PKG_VERSION:=5.3.4
-PKG_RELEASE:=2
+PKG_VERSION:=5.3.5
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://download.strongswan.org/ http://download2.strongswan.org/
-PKG_MD5SUM:=655a632a515c74a99f2e9cc337ab2f33
+PKG_MD5SUM:=a2f9ea185f27e7f8413d4cd2ee61efe4
PKG_LICENSE:=GPL-2.0+
PKG_MAINTAINER:=Steven Barth <cyrus@openwrt.org>
ccm \
cmac \
constraints \
+ connmark \
coupling \
ctr \
curl \
+strongswan-mod-ccm \
+strongswan-mod-cmac \
+strongswan-mod-constraints \
+ +strongswan-mod-connmark \
+strongswan-mod-coupling \
+strongswan-mod-ctr \
+strongswan-mod-curl \
$(call Package/strongswan/description/Default)
This meta-package contains dependencies for all of the strongswan plugins
except kernel-libipsec,
- socket-dynamic and which are ommitted in favor of the kernel-netlink and
+ socket-dynamic and which are omitted in favor of the kernel-netlink and
socket-default plugins.
endef
+strongswan-charon \
+strongswan-mod-aes \
+strongswan-mod-attr \
+ +strongswan-mod-connmark \
+strongswan-mod-constraints \
+strongswan-mod-des \
+strongswan-mod-dnskey \
EXTRA_LDFLAGS+= -Wl,-rpath-link,$(STAGING_DIR)/usr/lib
define Package/strongswan/conffiles
+/etc/ipsec.d/
/etc/ipsec.conf
/etc/ipsec.secrets
/etc/ipsec.user
$(eval $(call BuildPlugin,blowfish,Blowfish crypto,))
$(eval $(call BuildPlugin,ccm,CCM AEAD wrapper crypto,))
$(eval $(call BuildPlugin,cmac,CMAC crypto,))
+$(eval $(call BuildPlugin,connmark,netfilter connection marking,))
$(eval $(call BuildPlugin,constraints,advanced X509 constraint checking,))
$(eval $(call BuildPlugin,coupling,IKEv2 plugin to couple peer certificates permanently to authentication,))
$(eval $(call BuildPlugin,ctr,Counter Mode wrapper crypto,))
+++ /dev/null
-From ea651877c0bb6e129f52eb592cea3b10b2e3347b Mon Sep 17 00:00:00 2001
-From: Tobias Brunner <tobias@strongswan.org>
-Date: Thu, 19 Nov 2015 11:21:48 +0100
-Subject: [PATCH] sigwaitinfo() may fail with EINTR if an unblocked signal not
- in the set is received
-
- #1213.
----
- src/charon-cmd/charon-cmd.c | 9 ++++-----
- src/charon-nm/charon-nm.c | 9 ++++-----
- src/charon-systemd/charon-systemd.c | 9 ++++-----
- src/charon-tkm/src/charon-tkm.c | 9 ++++-----
- src/charon/charon.c | 11 +++++------
- src/conftest/conftest.c | 2 +-
- src/frontends/osx/charon-xpc/charon-xpc.c | 7 ++++---
- src/libfast/fast_dispatcher.c | 6 +++++-
- src/libstrongswan/utils/utils.c | 5 ++++-
- 9 files changed, 35 insertions(+), 32 deletions(-)
-
-diff --git a/src/charon-cmd/charon-cmd.c b/src/charon-cmd/charon-cmd.c
-index b8f943f..d3b31cc 100644
---- a/src/charon-cmd/charon-cmd.c
-+++ b/src/charon-cmd/charon-cmd.c
-@@ -115,6 +115,10 @@ static int run()
- sig = sigwaitinfo(&set, NULL);
- if (sig == -1)
- {
-+ if (errno == EINTR)
-+ { /* ignore signals we didn't wait for */
-+ continue;
-+ }
- DBG1(DBG_DMN, "waiting for signal failed: %s", strerror(errno));
- return 1;
- }
-@@ -152,11 +156,6 @@ static int run()
- charon->bus->alert(charon->bus, ALERT_SHUTDOWN_SIGNAL, sig);
- return 1;
- }
-- default:
-- {
-- DBG1(DBG_DMN, "unknown signal %d received. Ignored", sig);
-- break;
-- }
- }
- }
- }
-diff --git a/src/charon-nm/charon-nm.c b/src/charon-nm/charon-nm.c
-index 1773e7c..fb090e5 100644
---- a/src/charon-nm/charon-nm.c
-+++ b/src/charon-nm/charon-nm.c
-@@ -85,6 +85,10 @@ static void run()
- sig = sigwaitinfo(&set, NULL);
- if (sig == -1)
- {
-+ if (errno == EINTR)
-+ { /* ignore signals we didn't wait for */
-+ continue;
-+ }
- DBG1(DBG_DMN, "waiting for signal failed: %s", strerror(errno));
- return;
- }
-@@ -102,11 +106,6 @@ static void run()
- charon->bus->alert(charon->bus, ALERT_SHUTDOWN_SIGNAL, sig);
- return;
- }
-- default:
-- {
-- DBG1(DBG_DMN, "unknown signal %d received. Ignored", sig);
-- break;
-- }
- }
- }
- }
-diff --git a/src/charon-systemd/charon-systemd.c b/src/charon-systemd/charon-systemd.c
-index f302d45..4286cde 100644
---- a/src/charon-systemd/charon-systemd.c
-+++ b/src/charon-systemd/charon-systemd.c
-@@ -254,6 +254,10 @@ static int run()
- sig = sigwaitinfo(&set, NULL);
- if (sig == -1)
- {
-+ if (errno == EINTR)
-+ { /* ignore signals we didn't wait for */
-+ continue;
-+ }
- DBG1(DBG_DMN, "waiting for signal failed: %s", strerror(errno));
- return SS_RC_INITIALIZATION_FAILED;
- }
-@@ -265,11 +269,6 @@ static int run()
- charon->bus->alert(charon->bus, ALERT_SHUTDOWN_SIGNAL, sig);
- return 0;
- }
-- default:
-- {
-- DBG1(DBG_DMN, "unknown signal %d received. Ignored", sig);
-- break;
-- }
- }
- }
- }
-diff --git a/src/charon-tkm/src/charon-tkm.c b/src/charon-tkm/src/charon-tkm.c
-index 52d82f3..3923c8a 100644
---- a/src/charon-tkm/src/charon-tkm.c
-+++ b/src/charon-tkm/src/charon-tkm.c
-@@ -104,6 +104,10 @@ static void run()
- sig = sigwaitinfo(&set, NULL);
- if (sig == -1)
- {
-+ if (errno == EINTR)
-+ { /* ignore signals we didn't wait for */
-+ continue;
-+ }
- DBG1(DBG_DMN, "waiting for signal failed: %s", strerror(errno));
- return;
- }
-@@ -121,11 +125,6 @@ static void run()
- charon->bus->alert(charon->bus, ALERT_SHUTDOWN_SIGNAL, sig);
- return;
- }
-- default:
-- {
-- DBG1(DBG_DMN, "unknown signal %d received. Ignored", sig);
-- break;
-- }
- }
- }
- }
-diff --git a/src/charon/charon.c b/src/charon/charon.c
-index f03b6e1..4c2a9a4 100644
---- a/src/charon/charon.c
-+++ b/src/charon/charon.c
-@@ -98,7 +98,7 @@ static void run()
- {
- sigset_t set;
-
-- /* handle SIGINT, SIGHUP ans SIGTERM in this handler */
-+ /* handle SIGINT, SIGHUP and SIGTERM in this handler */
- sigemptyset(&set);
- sigaddset(&set, SIGINT);
- sigaddset(&set, SIGHUP);
-@@ -112,6 +112,10 @@ static void run()
- sig = sigwaitinfo(&set, NULL);
- if (sig == -1)
- {
-+ if (errno == EINTR)
-+ { /* ignore signals we didn't wait for */
-+ continue;
-+ }
- DBG1(DBG_DMN, "waiting for signal failed: %s", strerror(errno));
- return;
- }
-@@ -144,11 +148,6 @@ static void run()
- charon->bus->alert(charon->bus, ALERT_SHUTDOWN_SIGNAL, sig);
- return;
- }
-- default:
-- {
-- DBG1(DBG_DMN, "unknown signal %d received. Ignored", sig);
-- break;
-- }
- }
- }
- }
-diff --git a/src/conftest/conftest.c b/src/conftest/conftest.c
-index 9348b64..edfe0ca 100644
---- a/src/conftest/conftest.c
-+++ b/src/conftest/conftest.c
-@@ -565,7 +565,7 @@ int main(int argc, char *argv[])
- sigaddset(&set, SIGTERM);
- sigprocmask(SIG_BLOCK, &set, NULL);
-
-- while ((sig = sigwaitinfo(&set, NULL)) != -1)
-+ while ((sig = sigwaitinfo(&set, NULL)) != -1 || errno == EINTR)
- {
- switch (sig)
- {
-diff --git a/src/libfast/fast_dispatcher.c b/src/libfast/fast_dispatcher.c
-index b4c6ce3..66a2ee5 100644
---- a/src/libfast/fast_dispatcher.c
-+++ b/src/libfast/fast_dispatcher.c
-@@ -21,6 +21,7 @@
- #include <fcgiapp.h>
- #include <signal.h>
- #include <unistd.h>
-+#include <errno.h>
-
- #include <utils/debug.h>
- #include <threading/thread.h>
-@@ -389,7 +390,10 @@ METHOD(fast_dispatcher_t, waitsignal, void,
- sigaddset(&set, SIGTERM);
- sigaddset(&set, SIGHUP);
- sigprocmask(SIG_BLOCK, &set, NULL);
-- sigwaitinfo(&set, NULL);
-+ while (sigwaitinfo(&set, NULL) == -1 && errno == EINTR)
-+ {
-+ /* wait for signal */
-+ }
- }
-
- METHOD(fast_dispatcher_t, destroy, void,
-diff --git a/src/libstrongswan/utils/utils.c b/src/libstrongswan/utils/utils.c
-index 4e86165..40cb43d 100644
---- a/src/libstrongswan/utils/utils.c
-+++ b/src/libstrongswan/utils/utils.c
-@@ -124,7 +124,10 @@ void wait_sigint()
- sigaddset(&set, SIGTERM);
-
- sigprocmask(SIG_BLOCK, &set, NULL);
-- sigwaitinfo(&set, NULL);
-+ while (sigwaitinfo(&set, NULL) == -1 && errno == EINTR)
-+ {
-+ /* wait for signal */
-+ }
- }
-
- #ifndef HAVE_SIGWAITINFO
ARG_DISBL_SET([hmac], [disable HMAC crypto implementation plugin.])
ARG_ENABL_SET([md4], [enable MD4 software implementation plugin.])
ARG_DISBL_SET([md5], [disable MD5 software implementation plugin.])
-@@ -1310,6 +1311,7 @@ ADD_PLUGIN([gcrypt], [s ch
+@@ -1312,6 +1313,7 @@ ADD_PLUGIN([gcrypt], [s ch
ADD_PLUGIN([af-alg], [s charon scepclient pki scripts medsrv attest nm cmd aikgen])
ADD_PLUGIN([fips-prf], [s charon nm cmd])
ADD_PLUGIN([gmp], [s charon scepclient pki scripts manager medsrv attest nm cmd aikgen])
ADD_PLUGIN([agent], [s charon nm cmd])
ADD_PLUGIN([keychain], [s charon cmd])
ADD_PLUGIN([chapoly], [s charon scripts nm cmd])
-@@ -1441,6 +1443,7 @@ AM_CONDITIONAL(USE_SHA1, test x$sha1 = x
- AM_CONDITIONAL(USE_SHA2, test x$sha2 = xtrue)
+@@ -1444,6 +1446,7 @@ AM_CONDITIONAL(USE_SHA2, test x$sha2 = x
+ AM_CONDITIONAL(USE_SHA3, test x$sha3 = xtrue)
AM_CONDITIONAL(USE_FIPS_PRF, test x$fips_prf = xtrue)
AM_CONDITIONAL(USE_GMP, test x$gmp = xtrue)
+AM_CONDITIONAL(USE_GMPDH, test x$gmpdh = xtrue)
AM_CONDITIONAL(USE_RDRAND, test x$rdrand = xtrue)
AM_CONDITIONAL(USE_AESNI, test x$aesni = xtrue)
AM_CONDITIONAL(USE_RANDOM, test x$random = xtrue)
-@@ -1688,6 +1691,7 @@ AC_CONFIG_FILES([
- src/libstrongswan/plugins/sha2/Makefile
+@@ -1692,6 +1695,7 @@ AC_CONFIG_FILES([
+ src/libstrongswan/plugins/sha3/Makefile
src/libstrongswan/plugins/fips_prf/Makefile
src/libstrongswan/plugins/gmp/Makefile
+ src/libstrongswan/plugins/gmpdh/Makefile
src/libstrongswan/plugins/random/Makefile
--- a/src/libstrongswan/Makefile.am
+++ b/src/libstrongswan/Makefile.am
-@@ -295,6 +295,13 @@ if MONOLITHIC
+@@ -303,6 +303,13 @@ if MONOLITHIC
endif
endif
CATEGORY:=Network
URL:=http://stgt.sourceforge.net/
TITLE:=userspace iSCSI target
- DEPENDS:=+libpthread +libaio +@KERNEL_AIO +@KERNEL_DIRECT_IO
+ DEPENDS:=+libpthread +libaio @KERNEL_AIO @KERNEL_DIRECT_IO
endef
define Package/tgt/description
# option 'readonly' '0'
# Disk devices default to non-removable, cd - to removable
# option 'removable' '0'
-# 0 = Clasic sense format, 1 = Support descriptor format.
+# 0 = Classic sense format, 1 = Support descriptor format.
# option 'sense_format' '0'
#config lun 2_1
include $(TOPDIR)/rules.mk
PKG_NAME:=tinc
-PKG_VERSION:=1.0.26
+PKG_VERSION:=1.0.28
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.tinc-vpn.org/packages
-PKG_MD5SUM:=a8c168227fa42cbfcd4983247bf609ca
+PKG_MD5SUM:=9ca14c9902fb4011b5df6a09ffd40ea9
PKG_INSTALL:=1
#
# DefaultErrorFile: The HTML file that gets sent if there is no
# HTML file defined with an ErrorFile keyword for the HTTP error
-# that has occured.
+# that has occurred.
#
option DefaultErrorFile "/usr/share/tinyproxy/default.html"
#
-# Copyright (C) 2008-2014 OpenWrt.org
+# Copyright (C) 2008-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=tor
-PKG_VERSION:=0.2.6.10
-PKG_RELEASE:=1
+PKG_VERSION:=0.2.7.6
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://www.torproject.org/dist \
https://archive.torproject.org/tor-package-archive
-PKG_MD5SUM:=04f919e7882d1ca80f835545af562bad
+PKG_MD5SUM:=cc19107b57136a68e8c563bf2d35b072
PKG_MAINTAINER:=Hauke Mehrtens <hauke@hauke-m.de>
PKG_LICENSE_FILES:=LICENSE
-PKG_BUILD_DEPENDS:=libminiupnpc libnatpmp
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
This package contains the tor daemon.
endef
-define Package/tor-fw-helper
-$(call Package/tor/Default)
- TITLE:=Firewall helper for tor
- DEPENDS:=+tor +libminiupnpc +libnatpmp
-endef
-
-define Package/tor-fw-helper/description
-$(call Package/tor/Default/description)
- This package contains a helper for automatically configuring port forwarding.
-endef
-
define Package/tor-geoip
$(call Package/tor/Default)
TITLE:=GeoIP db for tor
CONFIGURE_ARGS += \
--with-libevent-dir="$(STAGING_DIR)/usr" \
--with-ssl-dir="$(STAGING_DIR)/usr" \
- --enable-upnp \
- --with-libminiupnpc-dir="$(STAGING_DIR)/usr" \
- --enable-nat-pmp \
- --with-libnatpmp-dir="$(STAGING_DIR)/usr" \
--disable-asciidoc \
--disable-seccomp
CFLAGS="$(TARGET_CFLAGS) -std=gnu99"
else
MAKE_FLAGS += \
- CFLAGS="$(TARGET_CFLAGS) -fPIC -std=gnu99"
+ CFLAGS="$(TARGET_CFLAGS) -fPIC -std=gnu99"
endif
CONFIGURE_VARS += \
$(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/tor/torrc.sample $(1)/etc/tor/torrc
endef
-define Package/tor-fw-helper/install
- $(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/tor-fw-helper $(1)/usr/bin/
-endef
-
define Package/tor-geoip/install
$(INSTALL_DIR) $(1)/usr/share/tor
$(CP) $(PKG_INSTALL_DIR)/usr/share/tor/geoip $(1)/usr/share/tor/
endef
$(eval $(call BuildPackage,tor))
-$(eval $(call BuildPackage,tor-fw-helper))
$(eval $(call BuildPackage,tor-geoip))
#
-# Copyright (C) 2009-2014 OpenWrt.org
+# Copyright (C) 2009-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=transmission
-PKG_VERSION:=2.84
-PKG_RELEASE:=4
+PKG_VERSION:=2.92
+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
-PKG_MD5SUM:=411aec1c418c14f6765710d89743ae42
+PKG_MD5SUM:=3fce404a436e3cd7fde80fb6ed61c264
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
+
include $(INCLUDE_DIR)/package.mk
define Package/transmission/template
SUBMENU:=BitTorrent
SECTION:=net
CATEGORY:=Network
- TITLE:=A free, lightweight BitTorrent client
+ TITLE:=BitTorrent client
URL:=http://www.transmissionbt.com
MAINTAINER:=Cezary Jackiewicz <cezary@eko.one.pl>
endef
-define Package/transmission-daemon
+define Package/transmission-daemon/Default
$(call Package/transmission/template)
- DEPENDS:=+libcurl +libopenssl +libpthread +libevent2 +librt
- MENU:=1
+ DEPENDS:=+libcurl +libpthread +libevent2 +librt
USERID:=transmission=224:transmission=224
+ PROVIDES:=transmission-daemon
+endef
+
+define Package/transmission-daemon-openssl
+ $(call Package/transmission-daemon/Default)
+ TITLE+= (with OpenSSL)
+ DEPENDS+=+libopenssl
+ VARIANT:=openssl
+endef
+
+define Package/transmission-daemon-polarssl
+ $(call Package/transmission-daemon/Default)
+ TITLE+= (with PolarSSL)
+ DEPENDS+=+libpolarssl +zlib
+ VARIANT:=polarssl
endef
-define Package/transmission-cli
+define Package/transmission-cli/Default
$(call Package/transmission/template)
- DEPENDS:=transmission-daemon
+ DEPENDS:=+libcurl +libpthread +libevent2 +librt
+endef
+
+define Package/transmission-cli-openssl
+ $(call Package/transmission-cli/Default)
+ TITLE+= (with OpenSSL)
+ DEPENDS+=+libopenssl
+ VARIANT:=openssl
+endef
+
+define Package/transmission-cli-polarssl
+ $(call Package/transmission-cli/Default)
+ TITLE+= (with PolarSSL)
+ DEPENDS+=+libpolarssl +zlib
+ VARIANT:=polarssl
endef
-define Package/transmission-remote
+define Package/transmission-remote/Default
$(call Package/transmission/template)
- DEPENDS:=+libcurl +libopenssl +libpthread +libevent2 +librt
+ DEPENDS:=+libcurl +libpthread +libevent2 +librt
+endef
+
+define Package/transmission-remote-openssl
+ $(call Package/transmission-remote/Default)
+ TITLE+= (with OpenSSL)
+ DEPENDS+=+libopenssl
+ VARIANT:=openssl
+endef
+
+define Package/transmission-remote-polarssl
+ $(call Package/transmission-remote/Default)
+ TITLE+= (with PolarSSL)
+ DEPENDS+=+libpolarssl +zlib
+ VARIANT:=polarssl
endef
define Package/transmission-web
$(call Package/transmission/template)
+ TITLE+= (webinterface)
DEPENDS:=transmission-daemon
endef
-define Package/transmission-daemon/description
+define Package/transmission-daemon/Default/description
Transmission is a simple BitTorrent client.
It features a very simple, intuitive interface
on top on an efficient, cross-platform back-end.
This package contains the daemon itself.
endef
+Package/transmission-daemon-openssl/description = $(Package/transmission-daemon/Default/description)
+Package/transmission-daemon-polarssl/description = $(Package/transmission-daemon/Default/description)
-define Package/transmission-cli/description
+define Package/transmission-cli/Default/description
CLI utilities for transmission.
endef
+Package/transmission-cli-openssl/description = $(Package/transmission-cli/Default/description)
+Package/transmission-cli-polarssl/description = $(Package/transmission-cli/Default/description)
-define Package/transmission-remote/description
+define Package/transmission-remote/Default/description
CLI remote interface for transmission.
endef
+Package/transmission-remote-openssl/description = $(Package/transmission-remote/Default/description)
+Package/transmission-remote-polarssl/description = $(Package/transmission-remote/Default/description)
define Package/transmission-web/description
Webinterface resources for transmission.
endef
-define Package/transmission-daemon/conffiles
+define Package/transmission-daemon-openssl/conffiles
/etc/config/transmission
endef
+Package/transmission-daemon-polarssl/conffiles = $(Package/transmission-daemon-openssl/conffiles)
+
CONFIGURE_VARS += \
LIBEVENT_LIBS="$(STAGING_DIR)/usr/lib/libevent-2.0.so.5"
--enable-largefile \
--enable-lightweight
+ifeq ($(BUILD_VARIANT),openssl)
+ CONFIGURE_ARGS += \
+ --with-crypto=openssl
+endif
+
+ifeq ($(BUILD_VARIANT),polarssl)
+ CONFIGURE_ARGS += \
+ --with-crypto=polarssl
+endif
+
MAKE_FLAGS += \
CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE"
-define Package/transmission-daemon/install
+TARGET_CFLAGS += -std=gnu99
+
+define Package/transmission-daemon-openssl/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/transmission-daemon $(1)/usr/bin/
$(INSTALL_DIR) $(1)/etc/init.d/
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) files/transmission.config $(1)/etc/config/transmission
endef
+Package/transmission-daemon-polarssl/install = $(Package/transmission-daemon-openssl/install)
-define Package/transmission-cli/install
+define Package/transmission-cli-openssl/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/transmission-cli \
$(PKG_INSTALL_DIR)/usr/bin/transmission-create \
$(PKG_INSTALL_DIR)/usr/bin/transmission-show \
$(1)/usr/bin/
endef
+Package/transmission-cli-polarssl/install = $(Package/transmission-cli-openssl/install)
-define Package/transmission-remote/install
+define Package/transmission-remote-openssl/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/transmission-remote $(1)/usr/bin/
endef
+Package/transmission-remote-polarssl/install = $(Package/transmission-remote-openssl/install)
define Package/transmission-web/install
$(INSTALL_DIR) $(1)/usr/share/transmission
$(CP) $(PKG_INSTALL_DIR)/usr/share/transmission/web $(1)/usr/share/transmission/
endef
-$(eval $(call BuildPackage,transmission-daemon))
-$(eval $(call BuildPackage,transmission-cli))
-$(eval $(call BuildPackage,transmission-remote))
+$(eval $(call BuildPackage,transmission-daemon-openssl))
+$(eval $(call BuildPackage,transmission-daemon-polarssl))
+$(eval $(call BuildPackage,transmission-cli-openssl))
+$(eval $(call BuildPackage,transmission-cli-polarssl))
+$(eval $(call BuildPackage,transmission-remote-openssl))
+$(eval $(call BuildPackage,transmission-remote-polarssl))
$(eval $(call BuildPackage,transmission-web))
+++ /dev/null
---- a/libtransmission/fdlimit.c
-+++ b/libtransmission/fdlimit.c
-@@ -22,11 +22,6 @@
- #include <fcntl.h>
- #endif
-
--#ifdef 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);
--#endif
--
- #ifdef HAVE_XFS_XFS_H
- #include <xfs/xfs.h>
- #endif
--- a/configure.ac
+++ b/configure.ac
-@@ -251,7 +251,7 @@
+@@ -378,7 +378,7 @@ dnl See if ANY version of miniupnpc is i
AC_LINK_IFELSE(
[AC_LANG_PROGRAM([#include <miniupnpc/miniupnpc.h>],
[struct UPNPDev dev;])],
-Index: transmission-2.84/libtransmission/bitfield.c
-===================================================================
---- transmission-2.84.orig/libtransmission/bitfield.c
-+++ transmission-2.84/libtransmission/bitfield.c
+--- a/libtransmission/bitfield.c
++++ b/libtransmission/bitfield.c
@@ -7,6 +7,8 @@
- * $Id: bitfield.c 14302 2014-06-29 01:42:38Z jordan $
+ * $Id: bitfield.c 14646 2015-12-31 05:22:42Z mikedld $
*/
+#define __NEED_ssize_t
+
#include <assert.h>
- #include <stdlib.h> /* realloc () */
#include <string.h> /* memset */
-@@ -15,6 +17,7 @@
+
+@@ -14,6 +16,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
+--- a/libtransmission/fdlimit.h
++++ b/libtransmission/fdlimit.h
@@ -11,6 +11,8 @@
#error only libtransmission should #include this header.
#endif
+#define __NEED_off_t
+
#include "transmission.h"
+ #include "file.h"
#include "net.h"
-
#
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=u2pnpd
-PKG_VERSION:=0.1
+PKG_VERSION:=0.3
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://github.com/mhei/u2pnpd/releases/download/v$(PKG_VERSION)
-PKG_MD5SUM:=a98089923d93803fa90d03a504c98b8e
+PKG_MD5SUM:=ac6f378590d3e4e38b40e4b13f03b369
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
IPSec in Tunnel mode and allows tunneling of every ETHER TYPE protocol (e.g.
ethernet, ip, arp ...). SATP directly includes cryptography and message
authentication based on the methods used by SRTP. It is intended to deliver
- a generic, scaleable and secure solution for tunneling and relaying of packets
+ a generic, scalable and secure solution for tunneling and relaying of packets
of any protocol.
Unlike Anytun which is a full featured implementation uAnytun has no support
for multiple connections or synchronisation. It is a small single threaded
#
-# Copyright (C) 2010-2015 OpenWrt.org
+# Copyright (C) 2010-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=unbound
-PKG_VERSION:=1.5.6
+PKG_VERSION:=1.5.8
PKG_RELEASE:=1
PKG_LICENSE:=BSD-3-Clause
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.unbound.net/downloads
-PKG_MD5SUM:=691a34abd8e9257dd65b70f28326c1f0
+PKG_MD5SUM:=1c34282bae0c625b86374ee9caaef6f7
PKG_BUILD_DEPENDS:=libexpat
PKG_BUILD_PARALLEL:=1
diff --git a/doc/example.conf.in b/doc/example.conf.in
-index 60ed5c8..abd85f9 100644
+index ff90e3b..5c20fdf 100644
--- a/doc/example.conf.in
+++ b/doc/example.conf.in
@@ -38,6 +38,8 @@ server:
+ interface: ::0
# enable this feature to copy the source address of queries to reply.
- # Socket options are not supported on all platforms. experimental.
+ # Socket options are not supported on all platforms. experimental.
@@ -57,6 +59,7 @@ server:
# port range that can be open simultaneously. About double the
# num-queries-per-thread, or, use as many as the OS will allow you.
# buffer size for UDP port 53 incoming (SO_RCVBUF socket option).
# 0 is system default. Use 4m to catch query spikes for busy servers.
-@@ -99,18 +104,22 @@ server:
+@@ -103,18 +108,22 @@ server:
# buffer size for handling DNS data. No messages larger than this
# size can be sent or received, by UDP or TCP. In bytes.
# msg-buffer-size: 65552
+ msg-buffer-size: 8192
# the amount of memory to use for the message cache.
- # plain value in bytes or you can append k, m or G. default is "4Mb".
+ # plain value in bytes or you can append k, m or G. default is "4Mb".
# msg-cache-size: 4m
+ msg-cache-size: 100k
# if very busy, 50% queries run to completion, 50% get timeout in msec
# jostle-timeout: 200
-@@ -121,11 +130,13 @@ server:
+@@ -125,11 +134,13 @@ server:
# the amount of memory to use for the RRset cache.
- # plain value in bytes or you can append k, m or G. default is "4Mb".
+ # plain value in bytes or you can append k, m or G. default is "4Mb".
# rrset-cache-size: 4m
+ rrset-cache-size: 100k
# the time to live (TTL) value lower bound, in seconds. Default 0.
# If more than an hour could easily give trouble due to stale data.
-@@ -146,9 +157,11 @@ server:
+@@ -153,9 +164,11 @@ server:
# the number of slabs must be a power of 2.
# more slabs reduce lock contention, but fragment memory usage.
# infra-cache-slabs: 4
# Enable IPv4, "yes" or "no".
# do-ip4: yes
-@@ -181,6 +194,8 @@ server:
+@@ -188,6 +201,8 @@ server:
# access-control: ::0/0 refuse
# access-control: ::1 allow
# access-control: ::ffff:127.0.0.1 allow
# if given, a chroot(2) is done to the given directory.
# i.e. you can chroot to the working directory, for example,
-@@ -211,6 +226,7 @@ server:
+@@ -218,6 +233,7 @@ server:
# and the given username is assumed. Default is user "unbound".
# If you give "" no privileges are dropped.
# username: "@UNBOUND_USERNAME@"
+ username: ""
- # the working directory. The relative files in this config are
+ # the working directory. The relative files in this config are
# relative to this directory. If you give "" the working directory
-@@ -233,10 +249,12 @@ server:
+@@ -240,10 +256,12 @@ server:
# the pid file. Can be an absolute path outside of chroot/work dir.
# pidfile: "@UNBOUND_PIDFILE@"
+ pidfile: "/var/run/unbound.pid"
# file to read root hints from.
- # get one from ftp://FTP.INTERNIC.NET/domain/named.cache
+ # get one from https://www.internic.net/domain/named.cache
# root-hints: ""
+ root-hints: "/etc/unbound/named.cache"
# enable to not answer id.server and hostname.bind queries.
# hide-identity: no
-@@ -259,12 +277,15 @@ server:
+@@ -266,12 +284,15 @@ server:
# positive value: fetch that many targets opportunistically.
# Enclose the list of numbers between quotes ("").
# target-fetch-policy: "3 2 1 0 0"
+ target-fetch-policy: "2 1 0 0 0 0"
- # Harden against very small EDNS buffer sizes.
+ # Harden against very small EDNS buffer sizes.
# harden-short-bufsize: no
+ harden-short-bufsize: yes
# harden-large-queries: no
+ harden-large-queries: yes
- # Harden against out of zone rrsets, to avoid spoofing attempts.
+ # Harden against out of zone rrsets, to avoid spoofing attempts.
# harden-glue: yes
-@@ -345,7 +366,7 @@ server:
+@@ -367,7 +388,7 @@ server:
# you start unbound (i.e. in the system boot scripts). And enable:
# Please note usage of unbound-anchor root anchor is at your own risk
# and under the terms of our LICENSE (see that file in the source).
# File with DLV trusted keys. Same format as trust-anchor-file.
# There can be only one DLV configured, it is trusted from root down.
-@@ -431,15 +452,18 @@ server:
+@@ -456,15 +477,18 @@ server:
# the amount of memory to use for the key cache.
- # plain value in bytes or you can append k, m or G. default is "4Mb".
+ # plain value in bytes or you can append k, m or G. default is "4Mb".
# key-cache-size: 4m
+ key-cache-size: 100k
+ key-cache-slabs: 1
# the amount of memory to use for the negative cache (used for DLV).
- # plain value in bytes or you can append k, m or G. default is "1Mb".
+ # plain value in bytes or you can append k, m or G. default is "1Mb".
# neg-cache-size: 1m
+ neg-cache-size: 10k
endef
Hooks/Prepare/Pre += prepare_source_directory
-PKG_BUILD_DEPENDS:=udev
+PKG_BUILD_DEPENDS:=eudev
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
define Package/usbip
$(call Package/usbip/Default)
TITLE+= (common)
- DEPENDS+= +libwrap +kmod-usbip +udev
+ DEPENDS+= +libwrap +kmod-usbip +eudev
endef
define Package/usbip-client
include $(TOPDIR)/rules.mk
PKG_NAME:=vpnc-scripts
-PKG_VERSION:=20150116
-PKG_RELEASE:=3
+PKG_VERSION:=20151220
+PKG_RELEASE:=1
include $(INCLUDE_DIR)/package.mk
continue
fi
if [ -n "$INTERNAL_IP4_DNS" ];then
- for dns in "$INTERNAL_IP4_DNS";do
+ for dns in $INTERNAL_IP4_DNS;do
echo "server=/$i/$dns" >> $DNSMASQ_FILE
done
fi
if [ -n "$INTERNAL_IP6_DNS" ];then
- for dns in "$INTERNAL_IP6_DNS";do
+ for dns in $INTERNAL_IP6_DNS;do
echo "server=/$i/$dns" >> $DNSMASQ_FILE
done
fi
/etc/init.d/dnsmasq restart
else
if [ -n "$INTERNAL_IP4_DNS" ];then
- for dns in "$INTERNAL_IP4_DNS";do
+ for dns in $INTERNAL_IP4_DNS;do
proto_add_dns_server "$dns"
done
fi
if [ -n "$INTERNAL_IP6_DNS" ];then
- for dns in "$INTERNAL_IP6_DNS";do
+ for dns in $INTERNAL_IP6_DNS;do
proto_add_dns_server "$dns"
done
fi
if [ -n "$CISCO_DEF_DOMAIN" ] && [ "$CISCO_DEF_DOMAIN" != "$LOCAL_DOMAIN" ];then
if [ -n "$INTERNAL_IP4_DNS" ];then
- for dns in "$INTERNAL_IP4_DNS";do
+ for dns in $INTERNAL_IP4_DNS;do
echo "server=/$CISCO_DEF_DOMAIN/$dns" >> $DNSMASQ_FILE
done
fi
if [ -n "$INTERNAL_IP6_DNS" ];then
- for dns in "$INTERNAL_IP6_DNS";do
+ for dns in $INTERNAL_IP6_DNS;do
echo "server=/$CISCO_DEF_DOMAIN/$dns" >> $DNSMASQ_FILE
done
fi
PKG_NAME:=vpnc
PKG_REV:=550
PKG_VERSION:=0.5.3.r$(PKG_REV)
-PKG_RELEASE:=4
+PKG_RELEASE:=5
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://svn.unix-ag.uni-kl.de/vpnc/trunk/
proto_config_add_int "dpd_idle"
proto_config_add_string "auth_mode"
proto_config_add_string "target_network"
+ proto_config_add_boolean "authfail"
no_device=1
available=1
}
proto_vpnc_setup() {
local config="$1"
- json_get_vars server username hexpasswd authgroup password token_mode token_secret interface passgroup hexpassgroup domain vendor natt_mode dh_group pfs enable_single_des enable_no_enc mtu local_addr local_port udp_port dpd_idle auth_mode target_network
+ json_get_vars server username hexpasswd authgroup password token_mode token_secret interface passgroup hexpassgroup domain vendor natt_mode dh_group pfs enable_single_des enable_no_enc mtu local_addr local_port udp_port dpd_idle auth_mode target_network authfail
grep -q tun /proc/modules || insmod tun
pwfile="/var/etc/vpnc-$config.conf"
+ json_get_var authfail authfail
+ # On error exit (vpnc only has success = 0 and error = 1, so
+ # we can't be fine-grained and say only auth error)
+ # and authfail setting true, then don't retry starting vpnc
+ # This is used for the case were the server blocks repeated
+ # failed authentication attempts (which will occur if the password
+ # is wrong, for example).
+ if [ ${ERROR:-0} -gt 0 ] && [ "${authfail:-0}" -gt 0 ]; then
+ proto_block_restart "$config"
+ fi
+
rm -f $pwfile
logger -t vpnc "bringing down vpnc"
proto_kill_command "$config" 2
include $(TOPDIR)/rules.mk
PKG_NAME:=wavemon
-PKG_VERSION:=0.7.6
-PKG_RELEASE:=2
+PKG_VERSION:=0.8.0
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_PROTO:=git
SECTION:=net
CATEGORY:=Network
TITLE:=N-curses based wireless network devices monitor
- DEPENDS:=+libncurses +libpthread
+ DEPENDS:=+libncurses +libpthread +libnl-genl
SUBMENU:=wireless
URL:=https://github.com/uoaerg/wavemon/releases
endef
CONFIGURE_VARS += \
ac_cv_lib_cap_cap_get_flag=no
-TARGET_CFLAGS += -pthread
+TARGET_CFLAGS += -pthread -I$(STAGING_DIR)/usr/include/libnl3
MAKE_FLAGS += \
CFLAGS="$(TARGET_CFLAGS) -L$(STAGING_DIR)/usr/lib -I$(STAGING_DIR)/usr/include"
--- /dev/null
+diff --git a/wavemon.h b/wavemon.h
+index e7584f7..8c76d11 100644
+--- a/wavemon.h
++++ b/wavemon.h
+@@ -19,6 +19,7 @@
+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+ #include <stdio.h>
++#include <stdint.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <signal.h>
+@@ -33,7 +34,7 @@
+ #include <ctype.h>
+ #include <math.h>
+ #include <stdbool.h>
+-#include <ncurses.h>
++#include <curses.h>
+
+ #include "llist.h"
+
include $(TOPDIR)/rules.mk
PKG_NAME:=wget
-PKG_VERSION:=1.17
-PKG_RELEASE:=3
+PKG_VERSION:=1.17.1
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
-PKG_MD5SUM:=b8cff5a2f88f5ce60a2b0e361e030b46
+PKG_MD5SUM:=b0d58ef4963690e71effba24c105ed52
PKG_MAINTAINER:=Maxim Storchak <m.storchak@gmail.com>
PKG_LICENSE:=GPL-3.0+
PKG_LICENSE_FILES:=COPYING
+++ /dev/null
-From 1cb3af1e5b392ac2fae6d9ed8b5d7be399d9f37e Mon Sep 17 00:00:00 2001
-From: Ygal Blum <address@hidden>
-Date: Tue, 24 Nov 2015 11:24:54 +0200
-Subject: [PATCH] Fix compilation when without-ssl is selected
-
----
- src/ftp.c | 2 ++
- src/main.c | 12 ++++++++++--
- src/recur.c | 6 +++++-
- src/retr.c | 18 +++++++++++++++---
- src/url.c | 6 +++++-
- 5 files changed, 37 insertions(+), 7 deletions(-)
-
-diff --git a/src/ftp.c b/src/ftp.c
-index 80420ef..5394b71 100644
---- a/src/ftp.c
-+++ b/src/ftp.c
-@@ -393,7 +393,9 @@ getftp (struct url *u, wgint passed_expected_bytes, wgint *qtyread,
- if (!(cmd & DO_LOGIN))
- {
- csock = con->csock;
-+#ifdef HAVE_SSL
- using_data_security = con->st & DATA_CHANNEL_SECURITY;
-+#endif
- }
- else /* cmd & DO_LOGIN */
- {
-diff --git a/src/main.c b/src/main.c
-index 61a157a..4641008 100644
---- a/src/main.c
-+++ b/src/main.c
-@@ -1842,13 +1842,21 @@ only if outputting to a regular file.\n"));
- else
- {
- if ((opt.recursive || opt.page_requisites)
-- && ((url_scheme (*t) != SCHEME_FTP && url_scheme (*t) != SCHEME_FTPS)
-+ && ((url_scheme (*t) != SCHEME_FTP
-+#ifdef HAVE_SSL
-+ && url_scheme (*t) != SCHEME_FTPS
-+#endif
-+ )
- || url_uses_proxy (url_parsed)))
- {
- int old_follow_ftp = opt.follow_ftp;
-
- /* Turn opt.follow_ftp on in case of recursive FTP retrieval */
-- if (url_scheme (*t) == SCHEME_FTP || url_scheme (*t) == SCHEME_FTPS)
-+ if (url_scheme (*t) == SCHEME_FTP
-+#ifdef HAVE_SSL
-+ || url_scheme (*t) == SCHEME_FTPS
-+#endif
-+ )
- opt.follow_ftp = 1;
-
- retrieve_tree (url_parsed, NULL);
-diff --git a/src/recur.c b/src/recur.c
-index 25cdbb7..b212ec6 100644
---- a/src/recur.c
-+++ b/src/recur.c
-@@ -610,7 +610,11 @@ download_child (const struct urlpos *upos, struct url *parent, int depth,
- u_scheme_like_http = schemes_are_similar_p (u->scheme, SCHEME_HTTP);
-
- /* 1. Schemes other than HTTP are normally not recursed into. */
-- if (!u_scheme_like_http && !((u->scheme == SCHEME_FTP || u->scheme == SCHEME_FTPS) && opt.follow_ftp))
-+ if (!u_scheme_like_http && !((u->scheme == SCHEME_FTP
-+#ifdef HAVE_SSL
-+ || u->scheme == SCHEME_FTPS
-+#endif
-+ ) && opt.follow_ftp))
- {
- DEBUGP (("Not following non-HTTP schemes.\n"));
- reason = WG_RR_NONHTTP;
-diff --git a/src/retr.c b/src/retr.c
-index 318b09c..a6a9bd7 100644
---- a/src/retr.c
-+++ b/src/retr.c
-@@ -837,7 +837,11 @@ retrieve_url (struct url * orig_parsed, const char *origurl, char **file,
- FTP. In these cases we must decide whether the text is HTML
- according to the suffix. The HTML suffixes are `.html',
- `.htm' and a few others, case-insensitive. */
-- if (redirection_count && local_file && (u->scheme == SCHEME_FTP || u->scheme == SCHEME_FTPS))
-+ if (redirection_count && local_file && (u->scheme == SCHEME_FTP
-+#ifdef HAVE_SSL
-+ || u->scheme == SCHEME_FTPS
-+#endif
-+ ))
- {
- if (has_html_suffix_p (local_file))
- *dt |= TEXTHTML;
-@@ -1099,12 +1103,20 @@ retrieve_from_file (const char *file, bool html, int *count)
-
- proxy = getproxy (cur_url->url);
- if ((opt.recursive || opt.page_requisites)
-- && ((cur_url->url->scheme != SCHEME_FTP && cur_url->url->scheme != SCHEME_FTPS) || proxy))
-+ && ((cur_url->url->scheme != SCHEME_FTP
-+#ifdef HAVE_SSL
-+ && cur_url->url->scheme != SCHEME_FTPS
-+#endif
-+ ) || proxy))
- {
- int old_follow_ftp = opt.follow_ftp;
-
- /* Turn opt.follow_ftp on in case of recursive FTP retrieval */
-- if (cur_url->url->scheme == SCHEME_FTP || cur_url->url->scheme == SCHEME_FTPS)
-+ if (cur_url->url->scheme == SCHEME_FTP
-+#ifdef HAVE_SSL
-+ || cur_url->url->scheme == SCHEME_FTPS
-+#endif
-+ )
- opt.follow_ftp = 1;
-
- status = retrieve_tree (parsed_url ? parsed_url : cur_url->url,
-diff --git a/src/url.c b/src/url.c
-index 56079cd..c62867f 100644
---- a/src/url.c
-+++ b/src/url.c
-@@ -1787,7 +1787,11 @@ path_simplify (enum url_scheme scheme, char *path)
- for (--t; t > beg && t[-1] != '/'; t--)
- ;
- }
-- else if (scheme == SCHEME_FTP || scheme == SCHEME_FTPS)
-+ else if (scheme == SCHEME_FTP
-+#ifdef HAVE_SSL
-+ || scheme == SCHEME_FTPS
-+#endif
-+ )
- {
- /* If we're at the beginning, copy the "../" literally
- and move the beginning so a later ".." doesn't remove
---
-1.9.1
-
+++ /dev/null
-From 2cfcadf5e6d5c444765aa460915ae27109a8dbce Mon Sep 17 00:00:00 2001
-From: Darshit Shah <darnir@gmail.com>
-Date: Mon, 16 Nov 2015 23:16:25 +0000
-Subject: Fix compile error when IPv6 is disabled
-
-* src/ftp-basic.c: The code for the new FTPS functionality was unintentionally
-inside a #ifdef IPV6 block. Move the code around so that it is defined even when
-IPV6 isn't used
----
-diff --git a/src/ftp-basic.c b/src/ftp-basic.c
-index bcb7847..378374c 100644
---- a/src/ftp-basic.c
-+++ b/src/ftp-basic.c
-@@ -429,6 +429,65 @@ ip_address_to_eprt_repr (const ip_address *addr, int port, char *buf,
- buf[buflen - 1] = '\0';
- }
-
-+/* Bind a port and send the appropriate PORT command to the FTP
-+ server. Use acceptport after RETR, to get the socket of data
-+ connection. */
-+uerr_t
-+ftp_eprt (int csock, int *local_sock)
-+{
-+ uerr_t err;
-+ char *request, *respline;
-+ ip_address addr;
-+ int nwritten;
-+ int port;
-+ /* Must contain the argument of EPRT (of the form |af|addr|port|).
-+ * 4 chars for the | separators, INET6_ADDRSTRLEN chars for addr
-+ * 1 char for af (1-2) and 5 chars for port (0-65535) */
-+ char bytes[4 + INET6_ADDRSTRLEN + 1 + 5 + 1];
-+
-+ /* Get the address of this side of the connection. */
-+ if (!socket_ip_address (csock, &addr, ENDPOINT_LOCAL))
-+ return FTPSYSERR;
-+
-+ /* Setting port to 0 lets the system choose a free port. */
-+ port = 0;
-+
-+ /* Bind the port. */
-+ *local_sock = bind_local (&addr, &port);
-+ if (*local_sock < 0)
-+ return FTPSYSERR;
-+
-+ /* Construct the argument of EPRT (of the form |af|addr|port|). */
-+ ip_address_to_eprt_repr (&addr, port, bytes, sizeof (bytes));
-+
-+ /* Send PORT request. */
-+ request = ftp_request ("EPRT", bytes);
-+ nwritten = fd_write (csock, request, strlen (request), -1);
-+ if (nwritten < 0)
-+ {
-+ xfree (request);
-+ fd_close (*local_sock);
-+ return WRITEFAILED;
-+ }
-+ xfree (request);
-+ /* Get appropriate response. */
-+ err = ftp_response (csock, &respline);
-+ if (err != FTPOK)
-+ {
-+ fd_close (*local_sock);
-+ return err;
-+ }
-+ if (*respline != '2')
-+ {
-+ xfree (respline);
-+ fd_close (*local_sock);
-+ return FTPPORTERR;
-+ }
-+ xfree (respline);
-+ return FTPOK;
-+}
-+#endif
-+
- #ifdef HAVE_SSL
- /*
- * The following three functions defined into this #ifdef block
-@@ -542,65 +601,6 @@ bail:
- }
- #endif /* HAVE_SSL */
-
--/* Bind a port and send the appropriate PORT command to the FTP
-- server. Use acceptport after RETR, to get the socket of data
-- connection. */
--uerr_t
--ftp_eprt (int csock, int *local_sock)
--{
-- uerr_t err;
-- char *request, *respline;
-- ip_address addr;
-- int nwritten;
-- int port;
-- /* Must contain the argument of EPRT (of the form |af|addr|port|).
-- * 4 chars for the | separators, INET6_ADDRSTRLEN chars for addr
-- * 1 char for af (1-2) and 5 chars for port (0-65535) */
-- char bytes[4 + INET6_ADDRSTRLEN + 1 + 5 + 1];
--
-- /* Get the address of this side of the connection. */
-- if (!socket_ip_address (csock, &addr, ENDPOINT_LOCAL))
-- return FTPSYSERR;
--
-- /* Setting port to 0 lets the system choose a free port. */
-- port = 0;
--
-- /* Bind the port. */
-- *local_sock = bind_local (&addr, &port);
-- if (*local_sock < 0)
-- return FTPSYSERR;
--
-- /* Construct the argument of EPRT (of the form |af|addr|port|). */
-- ip_address_to_eprt_repr (&addr, port, bytes, sizeof (bytes));
--
-- /* Send PORT request. */
-- request = ftp_request ("EPRT", bytes);
-- nwritten = fd_write (csock, request, strlen (request), -1);
-- if (nwritten < 0)
-- {
-- xfree (request);
-- fd_close (*local_sock);
-- return WRITEFAILED;
-- }
-- xfree (request);
-- /* Get appropriate response. */
-- err = ftp_response (csock, &respline);
-- if (err != FTPOK)
-- {
-- fd_close (*local_sock);
-- return err;
-- }
-- if (*respline != '2')
-- {
-- xfree (respline);
-- fd_close (*local_sock);
-- return FTPPORTERR;
-- }
-- xfree (respline);
-- return FTPOK;
--}
--#endif
--
- /* Similar to ftp_port, but uses `PASV' to initiate the passive FTP
- transfer. Reads the response from server and parses it. Reads the
- host and port addresses and returns them. */
---
-cgit v0.9.0.2
include $(TOPDIR)/rules.mk
PKG_NAME:=znc
-PKG_VERSION:=1.6.1
+PKG_VERSION:=1.6.2
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://znc.in/releases \
http://znc.in/releases/archive
-PKG_MD5SUM:=8e29289e6229b6d2473de202170745ab
+PKG_MD5SUM:=89f6696ed366661f7432ece343fd19d0
PKG_MAINTAINER:=Jonas Gorski <jogo@openwrt.org>
PKG_LICENSE:=Apache-2.0
# include webadmin page templates if existing
if [ -d $$(PKG_BUILD_DIR)/modules/data/$(subst -,_,$(strip $(1))) ]; then \
$(INSTALL_DIR) $$(1)/usr/share/znc/modules ;\
- $(CP) -r $$(PKG_BUILD_DIR)/modules/data/$(subst -,_,$(strip $(1))) $$(1)/usr/share/znc/modules ;\
+ $(CP) $$(PKG_BUILD_DIR)/modules/data/$(subst -,_,$(strip $(1))) $$(1)/usr/share/znc/modules ;\
fi
endef
$(INSTALL_DIR) $$(1)/usr/lib/znc/
$(INSTALL_BIN) $$(PKG_BUILD_DIR)/modules/webadmin.so $$(1)/usr/lib/znc/
$(INSTALL_DIR) $$(1)/usr/share/znc/modules
- $(CP) -r $$(PKG_BUILD_DIR)/modules/data/webadmin $$(1)/usr/share/znc/modules
+ $(CP) $$(PKG_BUILD_DIR)/modules/data/webadmin $$(1)/usr/share/znc/modules
$(INSTALL_DIR) $$(1)/usr/share/znc/webskins/
- $(CP) -r $$(PKG_BUILD_DIR)/webskins/_default_ $$(1)/usr/share/znc/webskins/
+ $(CP) $$(PKG_BUILD_DIR)/webskins/_default_ $$(1)/usr/share/znc/webskins/
endef
ZNC_MODULES += znc-mod-webadmin
define Package/znc-webskin-$(strip $(1))/install
$(INSTALL_DIR) $$(1)/usr/share/znc/webskins/
- $(CP) -r $$(PKG_BUILD_DIR)/webskins/$(strip $(1)) $$(1)/usr/share/znc/webskins/
+ $(CP) $$(PKG_BUILD_DIR)/webskins/$(strip $(1)) $$(1)/usr/share/znc/webskins/
endef
ZNC_MODULES += znc-webskin-$(strip $(1))
endef
LIBS="-lstdc++ -lm -lssl -lcrypto $(LIBGCC_S) -lc"
CONFIGURE_ARGS += \
- --disable-c-ares \
- --disable-perl
+ --disable-charset \
+ --disable-cyrus \
+ --disable-debug \
+ --enable-largefile \
+ --disable-perl \
+ --enable-poll \
+ --disable-python \
+ --enable-ssl \
+ --disable-swig \
+ --disable-tcl \
+ --enable-tdns \
+ --enable-zlib
define Build/Configure
$(call Build/Configure/Default,)
+
+ if (m_user == 0) {
+ sMessage
-+ = "Error: Cannot run as root, check your config file | Useage: LoadModule = Droproot <uid> <gid>";
++ = "Error: Cannot run as root, check your config file | Usage: LoadModule = Droproot <uid> <gid>";
+ return false;
+ }
+
+
+ if (m_group == 0) {
+ sMessage
-+ = "Error: Cannot run as root, check your config file | Useage: LoadModule = Droproot <uid> <gid>";
++ = "Error: Cannot run as root, check your config file | Usage: LoadModule = Droproot <uid> <gid>";
+ return false;
+ }
+
include $(TOPDIR)/rules.mk
PKG_NAME:=forked-daapd
-PKG_VERSION:=23.2
-PKG_RELEASE:=20150622
-PKG_REV:=227017ef5ba8df921b2f1db681a46494ec296b8b
+PKG_VERSION:=23.4
+PKG_RELEASE:=20160101
+PKG_REV:=90514de7c8d9bf06b54596bc66e0668181eee25a
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_LICENSE_FILES:=COPYING
include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
define Package/forked-daapd
SECTION:=sound
URL:=https://github.com/ejurgensen/forked-daapd
DEPENDS:=+libgpg-error +libgcrypt +libgdbm +zlib +libexpat +libunistring \
+libevent2 +libdaemon +libantlr3c +confuse +alsa-lib +libffmpeg-full \
- +mxml +libavahi-client +sqlite3-cli +libplist +libcurl
+ +mxml +libavahi-client +sqlite3-cli +libplist +libcurl $(ICONV_DEPENDS)
endef
define Package/forked-daapd/description
\ No newline at end of file
diff --git a/src/pregen/DAAP2SQL.c b/src/pregen/DAAP2SQL.c
new file mode 100644
-index 0000000..f13209c
+index 0000000..04d6153
--- /dev/null
+++ b/src/pregen/DAAP2SQL.c
@@ -0,0 +1,975 @@
+ * This C source file was generated by $ANTLR version 3.2 debian-7ubuntu3
+ *
+ * - From the grammar source file : DAAP2SQL.g
-+ * - On : 2015-06-27 19:05:20
++ * - On : 2016-01-01 12:23:43
+ * - for the tree parser : DAAP2SQLTreeParser *
+ * Editing it, at least manually, is not wise.
+ *
+ */
diff --git a/src/pregen/DAAP2SQL.h b/src/pregen/DAAP2SQL.h
new file mode 100644
-index 0000000..2b1e806
+index 0000000..e829049
--- /dev/null
+++ b/src/pregen/DAAP2SQL.h
@@ -0,0 +1,195 @@
+ * This C header file was generated by $ANTLR version 3.2 debian-7ubuntu3
+ *
+ * - From the grammar source file : DAAP2SQL.g
-+ * - On : 2015-06-27 19:05:20
++ * - On : 2016-01-01 12:23:43
+ * - for the tree parser : DAAP2SQLTreeParser *
+ * Editing it, at least manually, is not wise.
+ *
\ No newline at end of file
diff --git a/src/pregen/DAAPLexer.c b/src/pregen/DAAPLexer.c
new file mode 100644
-index 0000000..b72f28a
+index 0000000..eab3ff4
--- /dev/null
+++ b/src/pregen/DAAPLexer.c
@@ -0,0 +1,1101 @@
+ * This C source file was generated by $ANTLR version 3.2 debian-7ubuntu3
+ *
+ * - From the grammar source file : DAAP.g
-+ * - On : 2015-06-27 19:05:17
++ * - On : 2016-01-01 12:23:41
+ * - for the lexer : DAAPLexerLexer *
+ * Editing it, at least manually, is not wise.
+ *
+ */
diff --git a/src/pregen/DAAPLexer.h b/src/pregen/DAAPLexer.h
new file mode 100644
-index 0000000..401b214
+index 0000000..685a0bc
--- /dev/null
+++ b/src/pregen/DAAPLexer.h
@@ -0,0 +1,188 @@
+ * This C header file was generated by $ANTLR version 3.2 debian-7ubuntu3
+ *
+ * - From the grammar source file : DAAP.g
-+ * - On : 2015-06-27 19:05:17
++ * - On : 2016-01-01 12:23:41
+ * - for the lexer : DAAPLexerLexer *
+ * Editing it, at least manually, is not wise.
+ *
+/* END - Note:Keep extra line feed to satisfy UNIX systems */
diff --git a/src/pregen/DAAPParser.c b/src/pregen/DAAPParser.c
new file mode 100644
-index 0000000..7a9aae9
+index 0000000..1091f05
--- /dev/null
+++ b/src/pregen/DAAPParser.c
@@ -0,0 +1,1014 @@
+ * This C source file was generated by $ANTLR version 3.2 debian-7ubuntu3
+ *
+ * - From the grammar source file : DAAP.g
-+ * - On : 2015-06-27 19:05:16
++ * - On : 2016-01-01 12:23:41
+ * - for the parser : DAAPParserParser *
+ * Editing it, at least manually, is not wise.
+ *
+ */
diff --git a/src/pregen/DAAPParser.h b/src/pregen/DAAPParser.h
new file mode 100644
-index 0000000..82ce85e
+index 0000000..e206694
--- /dev/null
+++ b/src/pregen/DAAPParser.h
@@ -0,0 +1,226 @@
+ * This C header file was generated by $ANTLR version 3.2 debian-7ubuntu3
+ *
+ * - From the grammar source file : DAAP.g
-+ * - On : 2015-06-27 19:05:16
++ * - On : 2016-01-01 12:23:41
+ * - for the parser : DAAPParserParser *
+ * Editing it, at least manually, is not wise.
+ *
\ No newline at end of file
diff --git a/src/pregen/RSP2SQL.c b/src/pregen/RSP2SQL.c
new file mode 100644
-index 0000000..05b54d3
+index 0000000..40958f9
--- /dev/null
+++ b/src/pregen/RSP2SQL.c
@@ -0,0 +1,2546 @@
+ * This C source file was generated by $ANTLR version 3.2 debian-7ubuntu3
+ *
+ * - From the grammar source file : RSP2SQL.g
-+ * - On : 2015-06-27 19:05:19
++ * - On : 2016-01-01 12:23:43
+ * - for the tree parser : RSP2SQLTreeParser *
+ * Editing it, at least manually, is not wise.
+ *
+ */
diff --git a/src/pregen/RSP2SQL.h b/src/pregen/RSP2SQL.h
new file mode 100644
-index 0000000..a94e317
+index 0000000..08ac7bb
--- /dev/null
+++ b/src/pregen/RSP2SQL.h
@@ -0,0 +1,291 @@
+ * This C header file was generated by $ANTLR version 3.2 debian-7ubuntu3
+ *
+ * - From the grammar source file : RSP2SQL.g
-+ * - On : 2015-06-27 19:05:19
++ * - On : 2016-01-01 12:23:43
+ * - for the tree parser : RSP2SQLTreeParser *
+ * Editing it, at least manually, is not wise.
+ *
\ No newline at end of file
diff --git a/src/pregen/RSPLexer.c b/src/pregen/RSPLexer.c
new file mode 100644
-index 0000000..bc4245a
+index 0000000..2e3faae
--- /dev/null
+++ b/src/pregen/RSPLexer.c
@@ -0,0 +1,4867 @@
+ * This C source file was generated by $ANTLR version 3.2 debian-7ubuntu3
+ *
+ * - From the grammar source file : RSP.g
-+ * - On : 2015-06-27 19:05:18
++ * - On : 2016-01-01 12:23:42
+ * - for the lexer : RSPLexerLexer *
+ * Editing it, at least manually, is not wise.
+ *
+ */
diff --git a/src/pregen/RSPLexer.h b/src/pregen/RSPLexer.h
new file mode 100644
-index 0000000..d93f93e
+index 0000000..27bc791
--- /dev/null
+++ b/src/pregen/RSPLexer.h
@@ -0,0 +1,254 @@
+ * This C header file was generated by $ANTLR version 3.2 debian-7ubuntu3
+ *
+ * - From the grammar source file : RSP.g
-+ * - On : 2015-06-27 19:05:18
++ * - On : 2016-01-01 12:23:42
+ * - for the lexer : RSPLexerLexer *
+ * Editing it, at least manually, is not wise.
+ *
+/* END - Note:Keep extra line feed to satisfy UNIX systems */
diff --git a/src/pregen/RSPParser.c b/src/pregen/RSPParser.c
new file mode 100644
-index 0000000..c0f3e2a
+index 0000000..ba8a9d2
--- /dev/null
+++ b/src/pregen/RSPParser.c
-@@ -0,0 +1,2684 @@
+@@ -0,0 +1,3152 @@
+/** \file
+ * This C source file was generated by $ANTLR version 3.2 debian-7ubuntu3
+ *
+ * - From the grammar source file : RSP.g
-+ * - On : 2015-06-27 19:05:18
++ * - On : 2016-01-01 12:23:42
+ * - for the parser : RSPParserParser *
+ * Editing it, at least manually, is not wise.
+ *
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STR_in_strcrit161 */
+static ANTLR3_BITWORD FOLLOW_STR_in_strcrit161_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static ANTLR3_BITSET_LIST FOLLOW_STR_in_strcrit161 = { FOLLOW_STR_in_strcrit161_bits, 1 };
-+/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_strop0 */
-+static ANTLR3_BITWORD FOLLOW_set_in_strop0_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
-+static ANTLR3_BITSET_LIST FOLLOW_set_in_strop0 = { FOLLOW_set_in_strop0_bits, 1 };
-+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FIELD_in_intcrit211 */
-+static ANTLR3_BITWORD FOLLOW_FIELD_in_intcrit211_bits[] = { ANTLR3_UINT64_LIT(0x00000000001E1000) };
-+static ANTLR3_BITSET_LIST FOLLOW_FIELD_in_intcrit211 = { FOLLOW_FIELD_in_intcrit211_bits, 1 };
-+/** Bitset defining follow set for error recovery in rule state: FOLLOW_intop_in_intcrit213 */
-+static ANTLR3_BITWORD FOLLOW_intop_in_intcrit213_bits[] = { ANTLR3_UINT64_LIT(0x0000000000010000) };
-+static ANTLR3_BITSET_LIST FOLLOW_intop_in_intcrit213 = { FOLLOW_intop_in_intcrit213_bits, 1 };
-+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INT_in_intcrit215 */
-+static ANTLR3_BITWORD FOLLOW_INT_in_intcrit215_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
-+static ANTLR3_BITSET_LIST FOLLOW_INT_in_intcrit215 = { FOLLOW_INT_in_intcrit215_bits, 1 };
-+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FIELD_in_intcrit232 */
-+static ANTLR3_BITWORD FOLLOW_FIELD_in_intcrit232_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) };
-+static ANTLR3_BITSET_LIST FOLLOW_FIELD_in_intcrit232 = { FOLLOW_FIELD_in_intcrit232_bits, 1 };
-+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NOT_in_intcrit234 */
-+static ANTLR3_BITWORD FOLLOW_NOT_in_intcrit234_bits[] = { ANTLR3_UINT64_LIT(0x00000000001E1000) };
-+static ANTLR3_BITSET_LIST FOLLOW_NOT_in_intcrit234 = { FOLLOW_NOT_in_intcrit234_bits, 1 };
-+/** Bitset defining follow set for error recovery in rule state: FOLLOW_intop_in_intcrit236 */
-+static ANTLR3_BITWORD FOLLOW_intop_in_intcrit236_bits[] = { ANTLR3_UINT64_LIT(0x0000000000010000) };
-+static ANTLR3_BITSET_LIST FOLLOW_intop_in_intcrit236 = { FOLLOW_intop_in_intcrit236_bits, 1 };
-+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INT_in_intcrit238 */
-+static ANTLR3_BITWORD FOLLOW_INT_in_intcrit238_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
-+static ANTLR3_BITSET_LIST FOLLOW_INT_in_intcrit238 = { FOLLOW_INT_in_intcrit238_bits, 1 };
-+/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_intop0 */
-+static ANTLR3_BITWORD FOLLOW_set_in_intop0_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
-+static ANTLR3_BITSET_LIST FOLLOW_set_in_intop0 = { FOLLOW_set_in_intop0_bits, 1 };
-+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FIELD_in_datecrit292 */
-+static ANTLR3_BITWORD FOLLOW_FIELD_in_datecrit292_bits[] = { ANTLR3_UINT64_LIT(0x0000000000600000) };
-+static ANTLR3_BITSET_LIST FOLLOW_FIELD_in_datecrit292 = { FOLLOW_FIELD_in_datecrit292_bits, 1 };
-+/** Bitset defining follow set for error recovery in rule state: FOLLOW_dateop_in_datecrit294 */
-+static ANTLR3_BITWORD FOLLOW_dateop_in_datecrit294_bits[] = { ANTLR3_UINT64_LIT(0x0000000001810000) };
-+static ANTLR3_BITSET_LIST FOLLOW_dateop_in_datecrit294 = { FOLLOW_dateop_in_datecrit294_bits, 1 };
-+/** Bitset defining follow set for error recovery in rule state: FOLLOW_datespec_in_datecrit296 */
-+static ANTLR3_BITWORD FOLLOW_datespec_in_datecrit296_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
-+static ANTLR3_BITSET_LIST FOLLOW_datespec_in_datecrit296 = { FOLLOW_datespec_in_datecrit296_bits, 1 };
-+/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_dateop0 */
-+static ANTLR3_BITWORD FOLLOW_set_in_dateop0_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
-+static ANTLR3_BITSET_LIST FOLLOW_set_in_dateop0 = { FOLLOW_set_in_dateop0_bits, 1 };
-+/** Bitset defining follow set for error recovery in rule state: FOLLOW_dateref_in_datespec331 */
-+static ANTLR3_BITWORD FOLLOW_dateref_in_datespec331_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
-+static ANTLR3_BITSET_LIST FOLLOW_dateref_in_datespec331 = { FOLLOW_dateref_in_datespec331_bits, 1 };
-+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INT_in_datespec336 */
-+static ANTLR3_BITWORD FOLLOW_INT_in_datespec336_bits[] = { ANTLR3_UINT64_LIT(0x000000001E000000) };
-+static ANTLR3_BITSET_LIST FOLLOW_INT_in_datespec336 = { FOLLOW_INT_in_datespec336_bits, 1 };
-+/** Bitset defining follow set for error recovery in rule state: FOLLOW_dateintval_in_datespec338 */
-+static ANTLR3_BITWORD FOLLOW_dateintval_in_datespec338_bits[] = { ANTLR3_UINT64_LIT(0x0000000000600000) };
-+static ANTLR3_BITSET_LIST FOLLOW_dateintval_in_datespec338 = { FOLLOW_dateintval_in_datespec338_bits, 1 };
-+/** Bitset defining follow set for error recovery in rule state: FOLLOW_dateop_in_datespec340 */
-+static ANTLR3_BITWORD FOLLOW_dateop_in_datespec340_bits[] = { ANTLR3_UINT64_LIT(0x0000000001800000) };
-+static ANTLR3_BITSET_LIST FOLLOW_dateop_in_datespec340 = { FOLLOW_dateop_in_datespec340_bits, 1 };
-+/** Bitset defining follow set for error recovery in rule state: FOLLOW_dateref_in_datespec342 */
-+static ANTLR3_BITWORD FOLLOW_dateref_in_datespec342_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
-+static ANTLR3_BITSET_LIST FOLLOW_dateref_in_datespec342 = { FOLLOW_dateref_in_datespec342_bits, 1 };
-+/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_dateref0 */
-+static ANTLR3_BITWORD FOLLOW_set_in_dateref0_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
-+static ANTLR3_BITSET_LIST FOLLOW_set_in_dateref0 = { FOLLOW_set_in_dateref0_bits, 1 };
-+/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_dateintval0 */
-+static ANTLR3_BITWORD FOLLOW_set_in_dateintval0_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
-+static ANTLR3_BITSET_LIST FOLLOW_set_in_dateintval0 = { FOLLOW_set_in_dateintval0_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_strop188 */
++static ANTLR3_BITWORD FOLLOW_EQUAL_in_strop188_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
++static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_strop188 = { FOLLOW_EQUAL_in_strop188_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_INCLUDES_in_strop195 */
++static ANTLR3_BITWORD FOLLOW_INCLUDES_in_strop195_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
++static ANTLR3_BITSET_LIST FOLLOW_INCLUDES_in_strop195 = { FOLLOW_INCLUDES_in_strop195_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_STARTSW_in_strop202 */
++static ANTLR3_BITWORD FOLLOW_STARTSW_in_strop202_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
++static ANTLR3_BITSET_LIST FOLLOW_STARTSW_in_strop202 = { FOLLOW_STARTSW_in_strop202_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_ENDSW_in_strop209 */
++static ANTLR3_BITWORD FOLLOW_ENDSW_in_strop209_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
++static ANTLR3_BITSET_LIST FOLLOW_ENDSW_in_strop209 = { FOLLOW_ENDSW_in_strop209_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_FIELD_in_intcrit219 */
++static ANTLR3_BITWORD FOLLOW_FIELD_in_intcrit219_bits[] = { ANTLR3_UINT64_LIT(0x00000000001E1000) };
++static ANTLR3_BITSET_LIST FOLLOW_FIELD_in_intcrit219 = { FOLLOW_FIELD_in_intcrit219_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_intop_in_intcrit221 */
++static ANTLR3_BITWORD FOLLOW_intop_in_intcrit221_bits[] = { ANTLR3_UINT64_LIT(0x0000000000010000) };
++static ANTLR3_BITSET_LIST FOLLOW_intop_in_intcrit221 = { FOLLOW_intop_in_intcrit221_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_INT_in_intcrit223 */
++static ANTLR3_BITWORD FOLLOW_INT_in_intcrit223_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
++static ANTLR3_BITSET_LIST FOLLOW_INT_in_intcrit223 = { FOLLOW_INT_in_intcrit223_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_FIELD_in_intcrit240 */
++static ANTLR3_BITWORD FOLLOW_FIELD_in_intcrit240_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) };
++static ANTLR3_BITSET_LIST FOLLOW_FIELD_in_intcrit240 = { FOLLOW_FIELD_in_intcrit240_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_NOT_in_intcrit242 */
++static ANTLR3_BITWORD FOLLOW_NOT_in_intcrit242_bits[] = { ANTLR3_UINT64_LIT(0x00000000001E1000) };
++static ANTLR3_BITSET_LIST FOLLOW_NOT_in_intcrit242 = { FOLLOW_NOT_in_intcrit242_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_intop_in_intcrit244 */
++static ANTLR3_BITWORD FOLLOW_intop_in_intcrit244_bits[] = { ANTLR3_UINT64_LIT(0x0000000000010000) };
++static ANTLR3_BITSET_LIST FOLLOW_intop_in_intcrit244 = { FOLLOW_intop_in_intcrit244_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_INT_in_intcrit246 */
++static ANTLR3_BITWORD FOLLOW_INT_in_intcrit246_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
++static ANTLR3_BITSET_LIST FOLLOW_INT_in_intcrit246 = { FOLLOW_INT_in_intcrit246_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_intop273 */
++static ANTLR3_BITWORD FOLLOW_EQUAL_in_intop273_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
++static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_intop273 = { FOLLOW_EQUAL_in_intop273_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_LESS_in_intop280 */
++static ANTLR3_BITWORD FOLLOW_LESS_in_intop280_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
++static ANTLR3_BITSET_LIST FOLLOW_LESS_in_intop280 = { FOLLOW_LESS_in_intop280_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_GREATER_in_intop287 */
++static ANTLR3_BITWORD FOLLOW_GREATER_in_intop287_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
++static ANTLR3_BITSET_LIST FOLLOW_GREATER_in_intop287 = { FOLLOW_GREATER_in_intop287_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_LTE_in_intop294 */
++static ANTLR3_BITWORD FOLLOW_LTE_in_intop294_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
++static ANTLR3_BITSET_LIST FOLLOW_LTE_in_intop294 = { FOLLOW_LTE_in_intop294_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_GTE_in_intop301 */
++static ANTLR3_BITWORD FOLLOW_GTE_in_intop301_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
++static ANTLR3_BITSET_LIST FOLLOW_GTE_in_intop301 = { FOLLOW_GTE_in_intop301_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_FIELD_in_datecrit310 */
++static ANTLR3_BITWORD FOLLOW_FIELD_in_datecrit310_bits[] = { ANTLR3_UINT64_LIT(0x0000000000600000) };
++static ANTLR3_BITSET_LIST FOLLOW_FIELD_in_datecrit310 = { FOLLOW_FIELD_in_datecrit310_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_dateop_in_datecrit312 */
++static ANTLR3_BITWORD FOLLOW_dateop_in_datecrit312_bits[] = { ANTLR3_UINT64_LIT(0x0000000001810000) };
++static ANTLR3_BITSET_LIST FOLLOW_dateop_in_datecrit312 = { FOLLOW_dateop_in_datecrit312_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_datespec_in_datecrit314 */
++static ANTLR3_BITWORD FOLLOW_datespec_in_datecrit314_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
++static ANTLR3_BITSET_LIST FOLLOW_datespec_in_datecrit314 = { FOLLOW_datespec_in_datecrit314_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_BEFORE_in_dateop337 */
++static ANTLR3_BITWORD FOLLOW_BEFORE_in_dateop337_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
++static ANTLR3_BITSET_LIST FOLLOW_BEFORE_in_dateop337 = { FOLLOW_BEFORE_in_dateop337_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_AFTER_in_dateop344 */
++static ANTLR3_BITWORD FOLLOW_AFTER_in_dateop344_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
++static ANTLR3_BITSET_LIST FOLLOW_AFTER_in_dateop344 = { FOLLOW_AFTER_in_dateop344_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_dateref_in_datespec353 */
++static ANTLR3_BITWORD FOLLOW_dateref_in_datespec353_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
++static ANTLR3_BITSET_LIST FOLLOW_dateref_in_datespec353 = { FOLLOW_dateref_in_datespec353_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_INT_in_datespec358 */
++static ANTLR3_BITWORD FOLLOW_INT_in_datespec358_bits[] = { ANTLR3_UINT64_LIT(0x000000001E000000) };
++static ANTLR3_BITSET_LIST FOLLOW_INT_in_datespec358 = { FOLLOW_INT_in_datespec358_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_dateintval_in_datespec360 */
++static ANTLR3_BITWORD FOLLOW_dateintval_in_datespec360_bits[] = { ANTLR3_UINT64_LIT(0x0000000000600000) };
++static ANTLR3_BITSET_LIST FOLLOW_dateintval_in_datespec360 = { FOLLOW_dateintval_in_datespec360_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_dateop_in_datespec362 */
++static ANTLR3_BITWORD FOLLOW_dateop_in_datespec362_bits[] = { ANTLR3_UINT64_LIT(0x0000000001800000) };
++static ANTLR3_BITSET_LIST FOLLOW_dateop_in_datespec362 = { FOLLOW_dateop_in_datespec362_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_dateref_in_datespec364 */
++static ANTLR3_BITWORD FOLLOW_dateref_in_datespec364_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
++static ANTLR3_BITSET_LIST FOLLOW_dateref_in_datespec364 = { FOLLOW_dateref_in_datespec364_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_DATE_in_dateref388 */
++static ANTLR3_BITWORD FOLLOW_DATE_in_dateref388_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
++static ANTLR3_BITSET_LIST FOLLOW_DATE_in_dateref388 = { FOLLOW_DATE_in_dateref388_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_TODAY_in_dateref395 */
++static ANTLR3_BITWORD FOLLOW_TODAY_in_dateref395_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
++static ANTLR3_BITSET_LIST FOLLOW_TODAY_in_dateref395 = { FOLLOW_TODAY_in_dateref395_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_DAY_in_dateintval408 */
++static ANTLR3_BITWORD FOLLOW_DAY_in_dateintval408_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
++static ANTLR3_BITSET_LIST FOLLOW_DAY_in_dateintval408 = { FOLLOW_DAY_in_dateintval408_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_WEEK_in_dateintval415 */
++static ANTLR3_BITWORD FOLLOW_WEEK_in_dateintval415_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
++static ANTLR3_BITSET_LIST FOLLOW_WEEK_in_dateintval415 = { FOLLOW_WEEK_in_dateintval415_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_MONTH_in_dateintval422 */
++static ANTLR3_BITWORD FOLLOW_MONTH_in_dateintval422_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
++static ANTLR3_BITSET_LIST FOLLOW_MONTH_in_dateintval422 = { FOLLOW_MONTH_in_dateintval422_bits, 1 };
++/** Bitset defining follow set for error recovery in rule state: FOLLOW_YEAR_in_dateintval429 */
++static ANTLR3_BITWORD FOLLOW_YEAR_in_dateintval429_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) };
++static ANTLR3_BITSET_LIST FOLLOW_YEAR_in_dateintval429 = { FOLLOW_YEAR_in_dateintval429_bits, 1 };
+
+
+
+
+ }
+ break;
-+ case INCLUDES:
-+ case STARTSW:
-+ case ENDSW:
-+ {
-+ alt4=2;
-+ }
-+ break;
+ case LESS:
+ case GREATER:
+ case LTE:
+ alt4=3;
+ }
+ break;
++ case INCLUDES:
++ case STARTSW:
++ case ENDSW:
++ {
++ alt4=2;
++ }
++ break;
+
+ default:
+ CONSTRUCTEX();
+
+ }
+ break;
++ case BEFORE:
++ case AFTER:
++ {
++ alt4=4;
++ }
++ break;
+ case EQUAL:
+ {
+ switch ( LA(3) )
+ EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+ EXCEPTION->message = (void *)"";
+ EXCEPTION->decisionNum = 4;
-+ EXCEPTION->state = 4;
++ EXCEPTION->state = 5;
+
+
+ goto rulecritEx;
+
+ }
+ break;
-+ case BEFORE:
-+ case AFTER:
-+ {
-+ alt4=4;
-+ }
-+ break;
+ case LESS:
+ case GREATER:
+ case LTE:
+
+
+ /* AST REWRITE
-+ * elements : strop, STR, FIELD
++ * elements : FIELD, STR, strop
+ * token labels :
+ * rule labels : retval
+ * token list labels :
+
+
+ /* AST REWRITE
-+ * elements : NOT, strop, STR, FIELD
++ * elements : STR, FIELD, strop, NOT
+ * token labels :
+ * rule labels : retval
+ * token list labels :
+
+/**
+ * $ANTLR start strop
-+ * RSP.g:46:1: strop : ( EQUAL | INCLUDES | STARTSW | ENDSW );
++ * RSP.g:46:1: strop : (equal= EQUAL | includes= INCLUDES | startsw= STARTSW | endsw= ENDSW );
+ */
+static RSPParser_strop_return
+strop(pRSPParser ctx)
+
+ pANTLR3_BASE_TREE root_0;
+
-+ pANTLR3_COMMON_TOKEN set23;
++ pANTLR3_COMMON_TOKEN equal;
++ pANTLR3_COMMON_TOKEN includes;
++ pANTLR3_COMMON_TOKEN startsw;
++ pANTLR3_COMMON_TOKEN endsw;
+
-+ pANTLR3_BASE_TREE set23_tree;
++ pANTLR3_BASE_TREE equal_tree;
++ pANTLR3_BASE_TREE includes_tree;
++ pANTLR3_BASE_TREE startsw_tree;
++ pANTLR3_BASE_TREE endsw_tree;
+
+ /* Initialize rule variables
+ */
+
+ root_0 = NULL;
+
-+ set23 = NULL;
++ equal = NULL;
++ includes = NULL;
++ startsw = NULL;
++ endsw = NULL;
+ retval.start = LT(1); retval.stop = retval.start;
+
-+ set23_tree = NULL;
++ equal_tree = NULL;
++ includes_tree = NULL;
++ startsw_tree = NULL;
++ endsw_tree = NULL;
+
+
+ retval.tree = NULL;
+ {
-+ // RSP.g:46:7: ( EQUAL | INCLUDES | STARTSW | ENDSW )
-+ // RSP.g:
+ {
-+ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
++ // RSP.g:46:7: (equal= EQUAL | includes= INCLUDES | startsw= STARTSW | endsw= ENDSW )
++
++ ANTLR3_UINT32 alt6;
+
-+ set23=(pANTLR3_COMMON_TOKEN)LT(1);
-+ if ( ((LA(1) >= EQUAL) && (LA(1) <= ENDSW)) )
-+ {
-+ CONSUME();
-+ ADAPTOR->addChild(ADAPTOR, root_0, (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, set23)));
-+ PERRORRECOVERY=ANTLR3_FALSE;
-+ }
-+ else
++ alt6=4;
++
++ switch ( LA(1) )
+ {
++ case EQUAL:
++ {
++ alt6=1;
++ }
++ break;
++ case INCLUDES:
++ {
++ alt6=2;
++ }
++ break;
++ case STARTSW:
++ {
++ alt6=3;
++ }
++ break;
++ case ENDSW:
++ {
++ alt6=4;
++ }
++ break;
++
++ default:
+ CONSTRUCTEX();
-+ EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION;
-+ EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME;
-+ EXCEPTION->expectingSet = &FOLLOW_set_in_strop0;
-+ RECOVERFROMMISMATCHEDSET(&FOLLOW_set_in_strop0); goto rulestropEx;
++ EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
++ EXCEPTION->message = (void *)"";
++ EXCEPTION->decisionNum = 6;
++ EXCEPTION->state = 0;
++
++
++ goto rulestropEx;
+ }
+
++ switch (alt6)
++ {
++ case 1:
++ // RSP.g:46:9: equal= EQUAL
++ {
++ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
+
-+ }
++ equal = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_strop188);
++ if (HASEXCEPTION())
++ {
++ goto rulestropEx;
++ }
++
++ equal_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, equal));
++ ADAPTOR->addChild(ADAPTOR, root_0, equal_tree);
++
++
++ }
++ break;
++ case 2:
++ // RSP.g:47:4: includes= INCLUDES
++ {
++ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
++
++ includes = (pANTLR3_COMMON_TOKEN) MATCHT(INCLUDES, &FOLLOW_INCLUDES_in_strop195);
++ if (HASEXCEPTION())
++ {
++ goto rulestropEx;
++ }
++
++ includes_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, includes));
++ ADAPTOR->addChild(ADAPTOR, root_0, includes_tree);
++
++
++ }
++ break;
++ case 3:
++ // RSP.g:48:4: startsw= STARTSW
++ {
++ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
++
++ startsw = (pANTLR3_COMMON_TOKEN) MATCHT(STARTSW, &FOLLOW_STARTSW_in_strop202);
++ if (HASEXCEPTION())
++ {
++ goto rulestropEx;
++ }
++
++ startsw_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, startsw));
++ ADAPTOR->addChild(ADAPTOR, root_0, startsw_tree);
++
++
++ }
++ break;
++ case 4:
++ // RSP.g:49:4: endsw= ENDSW
++ {
++ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
++
++ endsw = (pANTLR3_COMMON_TOKEN) MATCHT(ENDSW, &FOLLOW_ENDSW_in_strop209);
++ if (HASEXCEPTION())
++ {
++ goto rulestropEx;
++ }
++
++ endsw_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, endsw));
++ ADAPTOR->addChild(ADAPTOR, root_0, endsw_tree);
+
++
++ }
++ break;
++
++ }
++ }
+ }
+
+
+
+ pANTLR3_BASE_TREE root_0;
+
-+ pANTLR3_COMMON_TOKEN FIELD24;
-+ pANTLR3_COMMON_TOKEN INT26;
-+ pANTLR3_COMMON_TOKEN FIELD27;
-+ pANTLR3_COMMON_TOKEN NOT28;
-+ pANTLR3_COMMON_TOKEN INT30;
-+ RSPParser_intop_return intop25;
-+ #undef RETURN_TYPE_intop25
-+ #define RETURN_TYPE_intop25 RSPParser_intop_return
-+
-+ RSPParser_intop_return intop29;
-+ #undef RETURN_TYPE_intop29
-+ #define RETURN_TYPE_intop29 RSPParser_intop_return
-+
-+ pANTLR3_BASE_TREE FIELD24_tree;
-+ pANTLR3_BASE_TREE INT26_tree;
-+ pANTLR3_BASE_TREE FIELD27_tree;
-+ pANTLR3_BASE_TREE NOT28_tree;
-+ pANTLR3_BASE_TREE INT30_tree;
++ pANTLR3_COMMON_TOKEN FIELD23;
++ pANTLR3_COMMON_TOKEN INT25;
++ pANTLR3_COMMON_TOKEN FIELD26;
++ pANTLR3_COMMON_TOKEN NOT27;
++ pANTLR3_COMMON_TOKEN INT29;
++ RSPParser_intop_return intop24;
++ #undef RETURN_TYPE_intop24
++ #define RETURN_TYPE_intop24 RSPParser_intop_return
++
++ RSPParser_intop_return intop28;
++ #undef RETURN_TYPE_intop28
++ #define RETURN_TYPE_intop28 RSPParser_intop_return
++
++ pANTLR3_BASE_TREE FIELD23_tree;
++ pANTLR3_BASE_TREE INT25_tree;
++ pANTLR3_BASE_TREE FIELD26_tree;
++ pANTLR3_BASE_TREE NOT27_tree;
++ pANTLR3_BASE_TREE INT29_tree;
+ pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_FIELD;
+ pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_INT;
+ pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_NOT;
+
+ root_0 = NULL;
+
-+ FIELD24 = NULL;
-+ INT26 = NULL;
-+ FIELD27 = NULL;
-+ NOT28 = NULL;
-+ INT30 = NULL;
-+ intop25.tree = NULL;
++ FIELD23 = NULL;
++ INT25 = NULL;
++ FIELD26 = NULL;
++ NOT27 = NULL;
++ INT29 = NULL;
++ intop24.tree = NULL;
+
-+ intop29.tree = NULL;
++ intop28.tree = NULL;
+
+ retval.start = LT(1); retval.stop = retval.start;
+
-+ FIELD24_tree = NULL;
-+ INT26_tree = NULL;
-+ FIELD27_tree = NULL;
-+ NOT28_tree = NULL;
-+ INT30_tree = NULL;
++ FIELD23_tree = NULL;
++ INT25_tree = NULL;
++ FIELD26_tree = NULL;
++ NOT27_tree = NULL;
++ INT29_tree = NULL;
+
+ stream_FIELD = NULL;
+ #define CREATE_stream_FIELD if (stream_FIELD == NULL) {stream_FIELD = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token FIELD"); }
+ {
+ // RSP.g:52:9: ( FIELD intop INT -> ^( intop FIELD INT ) | FIELD NOT intop INT -> ^( NOT ^( intop FIELD INT ) ) )
+
-+ ANTLR3_UINT32 alt6;
++ ANTLR3_UINT32 alt7;
+
-+ alt6=2;
++ alt7=2;
+
+ switch ( LA(1) )
+ {
+ {
+ case NOT:
+ {
-+ alt6=2;
++ alt7=2;
+ }
+ break;
+ case EQUAL:
+ case LTE:
+ case GTE:
+ {
-+ alt6=1;
++ alt7=1;
+ }
+ break;
+
+ CONSTRUCTEX();
+ EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+ EXCEPTION->message = (void *)"";
-+ EXCEPTION->decisionNum = 6;
++ EXCEPTION->decisionNum = 7;
+ EXCEPTION->state = 1;
+
+
+ CONSTRUCTEX();
+ EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+ EXCEPTION->message = (void *)"";
-+ EXCEPTION->decisionNum = 6;
++ EXCEPTION->decisionNum = 7;
+ EXCEPTION->state = 0;
+
+
+ goto ruleintcritEx;
+ }
+
-+ switch (alt6)
++ switch (alt7)
+ {
+ case 1:
+ // RSP.g:52:11: FIELD intop INT
+ {
-+ FIELD24 = (pANTLR3_COMMON_TOKEN) MATCHT(FIELD, &FOLLOW_FIELD_in_intcrit211);
++ FIELD23 = (pANTLR3_COMMON_TOKEN) MATCHT(FIELD, &FOLLOW_FIELD_in_intcrit219);
+ if (HASEXCEPTION())
+ {
+ goto ruleintcritEx;
+ }
+
-+ CREATE_stream_FIELD; stream_FIELD->add(stream_FIELD, FIELD24, NULL);
++ CREATE_stream_FIELD; stream_FIELD->add(stream_FIELD, FIELD23, NULL);
+
-+ FOLLOWPUSH(FOLLOW_intop_in_intcrit213);
-+ intop25=intop(ctx);
++ FOLLOWPUSH(FOLLOW_intop_in_intcrit221);
++ intop24=intop(ctx);
+
+ FOLLOWPOP();
+ if (HASEXCEPTION())
+ goto ruleintcritEx;
+ }
+
-+ CREATE_stream_intop; stream_intop->add(stream_intop, intop25.tree, NULL);
-+ INT26 = (pANTLR3_COMMON_TOKEN) MATCHT(INT, &FOLLOW_INT_in_intcrit215);
++ CREATE_stream_intop; stream_intop->add(stream_intop, intop24.tree, NULL);
++ INT25 = (pANTLR3_COMMON_TOKEN) MATCHT(INT, &FOLLOW_INT_in_intcrit223);
+ if (HASEXCEPTION())
+ {
+ goto ruleintcritEx;
+ }
+
-+ CREATE_stream_INT; stream_INT->add(stream_INT, INT26, NULL);
++ CREATE_stream_INT; stream_INT->add(stream_INT, INT25, NULL);
+
+
+
+ /* AST REWRITE
-+ * elements : intop, INT, FIELD
++ * elements : FIELD, INT, intop
+ * token labels :
+ * rule labels : retval
+ * token list labels :
+ case 2:
+ // RSP.g:53:4: FIELD NOT intop INT
+ {
-+ FIELD27 = (pANTLR3_COMMON_TOKEN) MATCHT(FIELD, &FOLLOW_FIELD_in_intcrit232);
++ FIELD26 = (pANTLR3_COMMON_TOKEN) MATCHT(FIELD, &FOLLOW_FIELD_in_intcrit240);
+ if (HASEXCEPTION())
+ {
+ goto ruleintcritEx;
+ }
+
-+ CREATE_stream_FIELD; stream_FIELD->add(stream_FIELD, FIELD27, NULL);
++ CREATE_stream_FIELD; stream_FIELD->add(stream_FIELD, FIELD26, NULL);
+
-+ NOT28 = (pANTLR3_COMMON_TOKEN) MATCHT(NOT, &FOLLOW_NOT_in_intcrit234);
++ NOT27 = (pANTLR3_COMMON_TOKEN) MATCHT(NOT, &FOLLOW_NOT_in_intcrit242);
+ if (HASEXCEPTION())
+ {
+ goto ruleintcritEx;
+ }
+
-+ CREATE_stream_NOT; stream_NOT->add(stream_NOT, NOT28, NULL);
++ CREATE_stream_NOT; stream_NOT->add(stream_NOT, NOT27, NULL);
+
-+ FOLLOWPUSH(FOLLOW_intop_in_intcrit236);
-+ intop29=intop(ctx);
++ FOLLOWPUSH(FOLLOW_intop_in_intcrit244);
++ intop28=intop(ctx);
+
+ FOLLOWPOP();
+ if (HASEXCEPTION())
+ goto ruleintcritEx;
+ }
+
-+ CREATE_stream_intop; stream_intop->add(stream_intop, intop29.tree, NULL);
-+ INT30 = (pANTLR3_COMMON_TOKEN) MATCHT(INT, &FOLLOW_INT_in_intcrit238);
++ CREATE_stream_intop; stream_intop->add(stream_intop, intop28.tree, NULL);
++ INT29 = (pANTLR3_COMMON_TOKEN) MATCHT(INT, &FOLLOW_INT_in_intcrit246);
+ if (HASEXCEPTION())
+ {
+ goto ruleintcritEx;
+ }
+
-+ CREATE_stream_INT; stream_INT->add(stream_INT, INT30, NULL);
++ CREATE_stream_INT; stream_INT->add(stream_INT, INT29, NULL);
+
+
+
+ /* AST REWRITE
-+ * elements : INT, FIELD, intop, NOT
++ * elements : intop, NOT, INT, FIELD
+ * token labels :
+ * rule labels : retval
+ * token list labels :
+
+/**
+ * $ANTLR start intop
-+ * RSP.g:56:1: intop : ( EQUAL | LESS | GREATER | LTE | GTE );
++ * RSP.g:56:1: intop : (equal= EQUAL | less= LESS | greater= GREATER | lte= LTE | gte= GTE );
+ */
+static RSPParser_intop_return
+intop(pRSPParser ctx)
+
+ pANTLR3_BASE_TREE root_0;
+
-+ pANTLR3_COMMON_TOKEN set31;
++ pANTLR3_COMMON_TOKEN equal;
++ pANTLR3_COMMON_TOKEN less;
++ pANTLR3_COMMON_TOKEN greater;
++ pANTLR3_COMMON_TOKEN lte;
++ pANTLR3_COMMON_TOKEN gte;
+
-+ pANTLR3_BASE_TREE set31_tree;
++ pANTLR3_BASE_TREE equal_tree;
++ pANTLR3_BASE_TREE less_tree;
++ pANTLR3_BASE_TREE greater_tree;
++ pANTLR3_BASE_TREE lte_tree;
++ pANTLR3_BASE_TREE gte_tree;
+
+ /* Initialize rule variables
+ */
+
+ root_0 = NULL;
+
-+ set31 = NULL;
++ equal = NULL;
++ less = NULL;
++ greater = NULL;
++ lte = NULL;
++ gte = NULL;
+ retval.start = LT(1); retval.stop = retval.start;
+
-+ set31_tree = NULL;
++ equal_tree = NULL;
++ less_tree = NULL;
++ greater_tree = NULL;
++ lte_tree = NULL;
++ gte_tree = NULL;
+
+
+ retval.tree = NULL;
+ {
-+ // RSP.g:56:7: ( EQUAL | LESS | GREATER | LTE | GTE )
-+ // RSP.g:
+ {
-+ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
++ // RSP.g:56:7: (equal= EQUAL | less= LESS | greater= GREATER | lte= LTE | gte= GTE )
++
++ ANTLR3_UINT32 alt8;
+
-+ set31=(pANTLR3_COMMON_TOKEN)LT(1);
-+ if ( LA(1) == EQUAL || ((LA(1) >= LESS) && (LA(1) <= GTE)) )
-+ {
-+ CONSUME();
-+ ADAPTOR->addChild(ADAPTOR, root_0, (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, set31)));
-+ PERRORRECOVERY=ANTLR3_FALSE;
-+ }
-+ else
++ alt8=5;
++
++ switch ( LA(1) )
+ {
++ case EQUAL:
++ {
++ alt8=1;
++ }
++ break;
++ case LESS:
++ {
++ alt8=2;
++ }
++ break;
++ case GREATER:
++ {
++ alt8=3;
++ }
++ break;
++ case LTE:
++ {
++ alt8=4;
++ }
++ break;
++ case GTE:
++ {
++ alt8=5;
++ }
++ break;
++
++ default:
+ CONSTRUCTEX();
-+ EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION;
-+ EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME;
-+ EXCEPTION->expectingSet = &FOLLOW_set_in_intop0;
-+ RECOVERFROMMISMATCHEDSET(&FOLLOW_set_in_intop0); goto ruleintopEx;
++ EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
++ EXCEPTION->message = (void *)"";
++ EXCEPTION->decisionNum = 8;
++ EXCEPTION->state = 0;
++
++
++ goto ruleintopEx;
+ }
+
++ switch (alt8)
++ {
++ case 1:
++ // RSP.g:56:9: equal= EQUAL
++ {
++ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
+
-+ }
++ equal = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_intop273);
++ if (HASEXCEPTION())
++ {
++ goto ruleintopEx;
++ }
++
++ equal_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, equal));
++ ADAPTOR->addChild(ADAPTOR, root_0, equal_tree);
++
++
++ }
++ break;
++ case 2:
++ // RSP.g:57:4: less= LESS
++ {
++ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
++
++ less = (pANTLR3_COMMON_TOKEN) MATCHT(LESS, &FOLLOW_LESS_in_intop280);
++ if (HASEXCEPTION())
++ {
++ goto ruleintopEx;
++ }
++
++ less_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, less));
++ ADAPTOR->addChild(ADAPTOR, root_0, less_tree);
++
++
++ }
++ break;
++ case 3:
++ // RSP.g:58:4: greater= GREATER
++ {
++ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
++
++ greater = (pANTLR3_COMMON_TOKEN) MATCHT(GREATER, &FOLLOW_GREATER_in_intop287);
++ if (HASEXCEPTION())
++ {
++ goto ruleintopEx;
++ }
++
++ greater_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, greater));
++ ADAPTOR->addChild(ADAPTOR, root_0, greater_tree);
++
++
++ }
++ break;
++ case 4:
++ // RSP.g:59:4: lte= LTE
++ {
++ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
++
++ lte = (pANTLR3_COMMON_TOKEN) MATCHT(LTE, &FOLLOW_LTE_in_intop294);
++ if (HASEXCEPTION())
++ {
++ goto ruleintopEx;
++ }
++
++ lte_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, lte));
++ ADAPTOR->addChild(ADAPTOR, root_0, lte_tree);
++
++
++ }
++ break;
++ case 5:
++ // RSP.g:60:4: gte= GTE
++ {
++ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
++
++ gte = (pANTLR3_COMMON_TOKEN) MATCHT(GTE, &FOLLOW_GTE_in_intop301);
++ if (HASEXCEPTION())
++ {
++ goto ruleintopEx;
++ }
++
++ gte_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, gte));
++ ADAPTOR->addChild(ADAPTOR, root_0, gte_tree);
+
++
++ }
++ break;
++
++ }
++ }
+ }
+
+
+
+ pANTLR3_BASE_TREE root_0;
+
-+ pANTLR3_COMMON_TOKEN FIELD32;
-+ RSPParser_dateop_return dateop33;
-+ #undef RETURN_TYPE_dateop33
-+ #define RETURN_TYPE_dateop33 RSPParser_dateop_return
++ pANTLR3_COMMON_TOKEN FIELD30;
++ RSPParser_dateop_return dateop31;
++ #undef RETURN_TYPE_dateop31
++ #define RETURN_TYPE_dateop31 RSPParser_dateop_return
+
-+ RSPParser_datespec_return datespec34;
-+ #undef RETURN_TYPE_datespec34
-+ #define RETURN_TYPE_datespec34 RSPParser_datespec_return
++ RSPParser_datespec_return datespec32;
++ #undef RETURN_TYPE_datespec32
++ #define RETURN_TYPE_datespec32 RSPParser_datespec_return
+
-+ pANTLR3_BASE_TREE FIELD32_tree;
++ pANTLR3_BASE_TREE FIELD30_tree;
+ pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_FIELD;
+ pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_datespec;
+ pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_dateop;
+
+ root_0 = NULL;
+
-+ FIELD32 = NULL;
-+ dateop33.tree = NULL;
++ FIELD30 = NULL;
++ dateop31.tree = NULL;
+
-+ datespec34.tree = NULL;
++ datespec32.tree = NULL;
+
+ retval.start = LT(1); retval.stop = retval.start;
+
-+ FIELD32_tree = NULL;
++ FIELD30_tree = NULL;
+
+ stream_FIELD = NULL;
+ #define CREATE_stream_FIELD if (stream_FIELD == NULL) {stream_FIELD = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token FIELD"); }
+ // RSP.g:63:9: ( FIELD dateop datespec -> ^( dateop FIELD datespec ) )
+ // RSP.g:63:11: FIELD dateop datespec
+ {
-+ FIELD32 = (pANTLR3_COMMON_TOKEN) MATCHT(FIELD, &FOLLOW_FIELD_in_datecrit292);
++ FIELD30 = (pANTLR3_COMMON_TOKEN) MATCHT(FIELD, &FOLLOW_FIELD_in_datecrit310);
+ if (HASEXCEPTION())
+ {
+ goto ruledatecritEx;
+ }
+
-+ CREATE_stream_FIELD; stream_FIELD->add(stream_FIELD, FIELD32, NULL);
++ CREATE_stream_FIELD; stream_FIELD->add(stream_FIELD, FIELD30, NULL);
+
-+ FOLLOWPUSH(FOLLOW_dateop_in_datecrit294);
-+ dateop33=dateop(ctx);
++ FOLLOWPUSH(FOLLOW_dateop_in_datecrit312);
++ dateop31=dateop(ctx);
+
+ FOLLOWPOP();
+ if (HASEXCEPTION())
+ goto ruledatecritEx;
+ }
+
-+ CREATE_stream_dateop; stream_dateop->add(stream_dateop, dateop33.tree, NULL);
-+ FOLLOWPUSH(FOLLOW_datespec_in_datecrit296);
-+ datespec34=datespec(ctx);
++ CREATE_stream_dateop; stream_dateop->add(stream_dateop, dateop31.tree, NULL);
++ FOLLOWPUSH(FOLLOW_datespec_in_datecrit314);
++ datespec32=datespec(ctx);
+
+ FOLLOWPOP();
+ if (HASEXCEPTION())
+ goto ruledatecritEx;
+ }
+
-+ CREATE_stream_datespec; stream_datespec->add(stream_datespec, datespec34.tree, NULL);
++ CREATE_stream_datespec; stream_datespec->add(stream_datespec, datespec32.tree, NULL);
+
+
+ /* AST REWRITE
-+ * elements : datespec, FIELD, dateop
++ * elements : FIELD, dateop, datespec
+ * token labels :
+ * rule labels : retval
+ * token list labels :
+
+/**
+ * $ANTLR start dateop
-+ * RSP.g:66:1: dateop : ( BEFORE | AFTER );
++ * RSP.g:66:1: dateop : (before= BEFORE | after= AFTER );
+ */
+static RSPParser_dateop_return
+dateop(pRSPParser ctx)
+
+ pANTLR3_BASE_TREE root_0;
+
-+ pANTLR3_COMMON_TOKEN set35;
++ pANTLR3_COMMON_TOKEN before;
++ pANTLR3_COMMON_TOKEN after;
+
-+ pANTLR3_BASE_TREE set35_tree;
++ pANTLR3_BASE_TREE before_tree;
++ pANTLR3_BASE_TREE after_tree;
+
+ /* Initialize rule variables
+ */
+
+ root_0 = NULL;
+
-+ set35 = NULL;
++ before = NULL;
++ after = NULL;
+ retval.start = LT(1); retval.stop = retval.start;
+
-+ set35_tree = NULL;
++ before_tree = NULL;
++ after_tree = NULL;
+
+
+ retval.tree = NULL;
+ {
-+ // RSP.g:66:8: ( BEFORE | AFTER )
-+ // RSP.g:
+ {
-+ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
++ // RSP.g:66:8: (before= BEFORE | after= AFTER )
++
++ ANTLR3_UINT32 alt9;
+
-+ set35=(pANTLR3_COMMON_TOKEN)LT(1);
-+ if ( ((LA(1) >= BEFORE) && (LA(1) <= AFTER)) )
-+ {
-+ CONSUME();
-+ ADAPTOR->addChild(ADAPTOR, root_0, (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, set35)));
-+ PERRORRECOVERY=ANTLR3_FALSE;
-+ }
-+ else
++ alt9=2;
++
++ switch ( LA(1) )
+ {
++ case BEFORE:
++ {
++ alt9=1;
++ }
++ break;
++ case AFTER:
++ {
++ alt9=2;
++ }
++ break;
++
++ default:
+ CONSTRUCTEX();
-+ EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION;
-+ EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME;
-+ EXCEPTION->expectingSet = &FOLLOW_set_in_dateop0;
-+ RECOVERFROMMISMATCHEDSET(&FOLLOW_set_in_dateop0); goto ruledateopEx;
++ EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
++ EXCEPTION->message = (void *)"";
++ EXCEPTION->decisionNum = 9;
++ EXCEPTION->state = 0;
++
++
++ goto ruledateopEx;
+ }
+
++ switch (alt9)
++ {
++ case 1:
++ // RSP.g:66:10: before= BEFORE
++ {
++ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
+
-+ }
++ before = (pANTLR3_COMMON_TOKEN) MATCHT(BEFORE, &FOLLOW_BEFORE_in_dateop337);
++ if (HASEXCEPTION())
++ {
++ goto ruledateopEx;
++ }
++
++ before_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, before));
++ ADAPTOR->addChild(ADAPTOR, root_0, before_tree);
++
++
++ }
++ break;
++ case 2:
++ // RSP.g:67:4: after= AFTER
++ {
++ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
++
++ after = (pANTLR3_COMMON_TOKEN) MATCHT(AFTER, &FOLLOW_AFTER_in_dateop344);
++ if (HASEXCEPTION())
++ {
++ goto ruledateopEx;
++ }
++
++ after_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, after));
++ ADAPTOR->addChild(ADAPTOR, root_0, after_tree);
++
++
++ }
++ break;
+
++ }
++ }
+ }
+
+
+
+ pANTLR3_BASE_TREE root_0;
+
-+ pANTLR3_COMMON_TOKEN INT37;
-+ RSPParser_dateref_return dateref36;
-+ #undef RETURN_TYPE_dateref36
-+ #define RETURN_TYPE_dateref36 RSPParser_dateref_return
++ pANTLR3_COMMON_TOKEN INT34;
++ RSPParser_dateref_return dateref33;
++ #undef RETURN_TYPE_dateref33
++ #define RETURN_TYPE_dateref33 RSPParser_dateref_return
+
-+ RSPParser_dateintval_return dateintval38;
-+ #undef RETURN_TYPE_dateintval38
-+ #define RETURN_TYPE_dateintval38 RSPParser_dateintval_return
++ RSPParser_dateintval_return dateintval35;
++ #undef RETURN_TYPE_dateintval35
++ #define RETURN_TYPE_dateintval35 RSPParser_dateintval_return
+
-+ RSPParser_dateop_return dateop39;
-+ #undef RETURN_TYPE_dateop39
-+ #define RETURN_TYPE_dateop39 RSPParser_dateop_return
++ RSPParser_dateop_return dateop36;
++ #undef RETURN_TYPE_dateop36
++ #define RETURN_TYPE_dateop36 RSPParser_dateop_return
+
-+ RSPParser_dateref_return dateref40;
-+ #undef RETURN_TYPE_dateref40
-+ #define RETURN_TYPE_dateref40 RSPParser_dateref_return
++ RSPParser_dateref_return dateref37;
++ #undef RETURN_TYPE_dateref37
++ #define RETURN_TYPE_dateref37 RSPParser_dateref_return
+
-+ pANTLR3_BASE_TREE INT37_tree;
++ pANTLR3_BASE_TREE INT34_tree;
+ pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_INT;
+ pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_dateintval;
+ pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_dateref;
+
+ root_0 = NULL;
+
-+ INT37 = NULL;
-+ dateref36.tree = NULL;
++ INT34 = NULL;
++ dateref33.tree = NULL;
+
-+ dateintval38.tree = NULL;
++ dateintval35.tree = NULL;
+
-+ dateop39.tree = NULL;
++ dateop36.tree = NULL;
+
-+ dateref40.tree = NULL;
++ dateref37.tree = NULL;
+
+ retval.start = LT(1); retval.stop = retval.start;
+
-+ INT37_tree = NULL;
++ INT34_tree = NULL;
+
+ stream_INT = NULL;
+ #define CREATE_stream_INT if (stream_INT == NULL) {stream_INT = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token INT"); }
+ {
+ // RSP.g:70:9: ( dateref | INT dateintval dateop dateref -> ^( dateop dateref INT dateintval ) )
+
-+ ANTLR3_UINT32 alt7;
++ ANTLR3_UINT32 alt10;
+
-+ alt7=2;
++ alt10=2;
+
+ switch ( LA(1) )
+ {
+ case DATE:
+ case TODAY:
+ {
-+ alt7=1;
++ alt10=1;
+ }
+ break;
+ case INT:
+ {
-+ alt7=2;
++ alt10=2;
+ }
+ break;
+
+ CONSTRUCTEX();
+ EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+ EXCEPTION->message = (void *)"";
-+ EXCEPTION->decisionNum = 7;
++ EXCEPTION->decisionNum = 10;
+ EXCEPTION->state = 0;
+
+
+ goto ruledatespecEx;
+ }
+
-+ switch (alt7)
++ switch (alt10)
+ {
+ case 1:
+ // RSP.g:70:11: dateref
+ {
+ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
+
-+ FOLLOWPUSH(FOLLOW_dateref_in_datespec331);
-+ dateref36=dateref(ctx);
++ FOLLOWPUSH(FOLLOW_dateref_in_datespec353);
++ dateref33=dateref(ctx);
+
+ FOLLOWPOP();
+ if (HASEXCEPTION())
+ goto ruledatespecEx;
+ }
+
-+ ADAPTOR->addChild(ADAPTOR, root_0, dateref36.tree);
++ ADAPTOR->addChild(ADAPTOR, root_0, dateref33.tree);
+
+ }
+ break;
+ case 2:
+ // RSP.g:71:4: INT dateintval dateop dateref
+ {
-+ INT37 = (pANTLR3_COMMON_TOKEN) MATCHT(INT, &FOLLOW_INT_in_datespec336);
++ INT34 = (pANTLR3_COMMON_TOKEN) MATCHT(INT, &FOLLOW_INT_in_datespec358);
+ if (HASEXCEPTION())
+ {
+ goto ruledatespecEx;
+ }
+
-+ CREATE_stream_INT; stream_INT->add(stream_INT, INT37, NULL);
++ CREATE_stream_INT; stream_INT->add(stream_INT, INT34, NULL);
+
-+ FOLLOWPUSH(FOLLOW_dateintval_in_datespec338);
-+ dateintval38=dateintval(ctx);
++ FOLLOWPUSH(FOLLOW_dateintval_in_datespec360);
++ dateintval35=dateintval(ctx);
+
+ FOLLOWPOP();
+ if (HASEXCEPTION())
+ goto ruledatespecEx;
+ }
+
-+ CREATE_stream_dateintval; stream_dateintval->add(stream_dateintval, dateintval38.tree, NULL);
-+ FOLLOWPUSH(FOLLOW_dateop_in_datespec340);
-+ dateop39=dateop(ctx);
++ CREATE_stream_dateintval; stream_dateintval->add(stream_dateintval, dateintval35.tree, NULL);
++ FOLLOWPUSH(FOLLOW_dateop_in_datespec362);
++ dateop36=dateop(ctx);
+
+ FOLLOWPOP();
+ if (HASEXCEPTION())
+ goto ruledatespecEx;
+ }
+
-+ CREATE_stream_dateop; stream_dateop->add(stream_dateop, dateop39.tree, NULL);
-+ FOLLOWPUSH(FOLLOW_dateref_in_datespec342);
-+ dateref40=dateref(ctx);
++ CREATE_stream_dateop; stream_dateop->add(stream_dateop, dateop36.tree, NULL);
++ FOLLOWPUSH(FOLLOW_dateref_in_datespec364);
++ dateref37=dateref(ctx);
+
+ FOLLOWPOP();
+ if (HASEXCEPTION())
+ goto ruledatespecEx;
+ }
+
-+ CREATE_stream_dateref; stream_dateref->add(stream_dateref, dateref40.tree, NULL);
++ CREATE_stream_dateref; stream_dateref->add(stream_dateref, dateref37.tree, NULL);
+
+
+ /* AST REWRITE
-+ * elements : INT, dateintval, dateop, dateref
++ * elements : dateop, INT, dateintval, dateref
+ * token labels :
+ * rule labels : retval
+ * token list labels :
+
+/**
+ * $ANTLR start dateref
-+ * RSP.g:74:1: dateref : ( DATE | TODAY );
++ * RSP.g:74:1: dateref : (date= DATE | today= TODAY );
+ */
+static RSPParser_dateref_return
+dateref(pRSPParser ctx)
+
+ pANTLR3_BASE_TREE root_0;
+
-+ pANTLR3_COMMON_TOKEN set41;
++ pANTLR3_COMMON_TOKEN date;
++ pANTLR3_COMMON_TOKEN today;
+
-+ pANTLR3_BASE_TREE set41_tree;
++ pANTLR3_BASE_TREE date_tree;
++ pANTLR3_BASE_TREE today_tree;
+
+ /* Initialize rule variables
+ */
+
+ root_0 = NULL;
+
-+ set41 = NULL;
++ date = NULL;
++ today = NULL;
+ retval.start = LT(1); retval.stop = retval.start;
+
-+ set41_tree = NULL;
++ date_tree = NULL;
++ today_tree = NULL;
+
+
+ retval.tree = NULL;
+ {
-+ // RSP.g:74:9: ( DATE | TODAY )
-+ // RSP.g:
+ {
-+ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
++ // RSP.g:74:9: (date= DATE | today= TODAY )
++
++ ANTLR3_UINT32 alt11;
+
-+ set41=(pANTLR3_COMMON_TOKEN)LT(1);
-+ if ( ((LA(1) >= DATE) && (LA(1) <= TODAY)) )
-+ {
-+ CONSUME();
-+ ADAPTOR->addChild(ADAPTOR, root_0, (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, set41)));
-+ PERRORRECOVERY=ANTLR3_FALSE;
-+ }
-+ else
++ alt11=2;
++
++ switch ( LA(1) )
+ {
++ case DATE:
++ {
++ alt11=1;
++ }
++ break;
++ case TODAY:
++ {
++ alt11=2;
++ }
++ break;
++
++ default:
+ CONSTRUCTEX();
-+ EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION;
-+ EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME;
-+ EXCEPTION->expectingSet = &FOLLOW_set_in_dateref0;
-+ RECOVERFROMMISMATCHEDSET(&FOLLOW_set_in_dateref0); goto ruledaterefEx;
++ EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
++ EXCEPTION->message = (void *)"";
++ EXCEPTION->decisionNum = 11;
++ EXCEPTION->state = 0;
++
++
++ goto ruledaterefEx;
+ }
+
++ switch (alt11)
++ {
++ case 1:
++ // RSP.g:74:11: date= DATE
++ {
++ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
+
-+ }
++ date = (pANTLR3_COMMON_TOKEN) MATCHT(DATE, &FOLLOW_DATE_in_dateref388);
++ if (HASEXCEPTION())
++ {
++ goto ruledaterefEx;
++ }
++
++ date_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, date));
++ ADAPTOR->addChild(ADAPTOR, root_0, date_tree);
++
++
++ }
++ break;
++ case 2:
++ // RSP.g:75:4: today= TODAY
++ {
++ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
+
++ today = (pANTLR3_COMMON_TOKEN) MATCHT(TODAY, &FOLLOW_TODAY_in_dateref395);
++ if (HASEXCEPTION())
++ {
++ goto ruledaterefEx;
++ }
++
++ today_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, today));
++ ADAPTOR->addChild(ADAPTOR, root_0, today_tree);
++
++
++ }
++ break;
++
++ }
++ }
+ }
+
+
+
+/**
+ * $ANTLR start dateintval
-+ * RSP.g:78:1: dateintval : ( DAY | WEEK | MONTH | YEAR );
++ * RSP.g:78:1: dateintval : (day= DAY | week= WEEK | month= MONTH | year= YEAR );
+ */
+static RSPParser_dateintval_return
+dateintval(pRSPParser ctx)
+
+ pANTLR3_BASE_TREE root_0;
+
-+ pANTLR3_COMMON_TOKEN set42;
++ pANTLR3_COMMON_TOKEN day;
++ pANTLR3_COMMON_TOKEN week;
++ pANTLR3_COMMON_TOKEN month;
++ pANTLR3_COMMON_TOKEN year;
+
-+ pANTLR3_BASE_TREE set42_tree;
++ pANTLR3_BASE_TREE day_tree;
++ pANTLR3_BASE_TREE week_tree;
++ pANTLR3_BASE_TREE month_tree;
++ pANTLR3_BASE_TREE year_tree;
+
+ /* Initialize rule variables
+ */
+
+ root_0 = NULL;
+
-+ set42 = NULL;
++ day = NULL;
++ week = NULL;
++ month = NULL;
++ year = NULL;
+ retval.start = LT(1); retval.stop = retval.start;
+
-+ set42_tree = NULL;
++ day_tree = NULL;
++ week_tree = NULL;
++ month_tree = NULL;
++ year_tree = NULL;
+
+
+ retval.tree = NULL;
+ {
-+ // RSP.g:79:2: ( DAY | WEEK | MONTH | YEAR )
-+ // RSP.g:
+ {
-+ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
++ // RSP.g:79:2: (day= DAY | week= WEEK | month= MONTH | year= YEAR )
++
++ ANTLR3_UINT32 alt12;
+
-+ set42=(pANTLR3_COMMON_TOKEN)LT(1);
-+ if ( ((LA(1) >= DAY) && (LA(1) <= YEAR)) )
-+ {
-+ CONSUME();
-+ ADAPTOR->addChild(ADAPTOR, root_0, (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, set42)));
-+ PERRORRECOVERY=ANTLR3_FALSE;
-+ }
-+ else
++ alt12=4;
++
++ switch ( LA(1) )
+ {
++ case DAY:
++ {
++ alt12=1;
++ }
++ break;
++ case WEEK:
++ {
++ alt12=2;
++ }
++ break;
++ case MONTH:
++ {
++ alt12=3;
++ }
++ break;
++ case YEAR:
++ {
++ alt12=4;
++ }
++ break;
++
++ default:
+ CONSTRUCTEX();
-+ EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION;
-+ EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME;
-+ EXCEPTION->expectingSet = &FOLLOW_set_in_dateintval0;
-+ RECOVERFROMMISMATCHEDSET(&FOLLOW_set_in_dateintval0); goto ruledateintvalEx;
++ EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
++ EXCEPTION->message = (void *)"";
++ EXCEPTION->decisionNum = 12;
++ EXCEPTION->state = 0;
++
++
++ goto ruledateintvalEx;
+ }
+
++ switch (alt12)
++ {
++ case 1:
++ // RSP.g:79:4: day= DAY
++ {
++ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
++
++ day = (pANTLR3_COMMON_TOKEN) MATCHT(DAY, &FOLLOW_DAY_in_dateintval408);
++ if (HASEXCEPTION())
++ {
++ goto ruledateintvalEx;
++ }
++
++ day_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, day));
++ ADAPTOR->addChild(ADAPTOR, root_0, day_tree);
+
-+ }
+
++ }
++ break;
++ case 2:
++ // RSP.g:80:4: week= WEEK
++ {
++ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
++
++ week = (pANTLR3_COMMON_TOKEN) MATCHT(WEEK, &FOLLOW_WEEK_in_dateintval415);
++ if (HASEXCEPTION())
++ {
++ goto ruledateintvalEx;
++ }
++
++ week_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, week));
++ ADAPTOR->addChild(ADAPTOR, root_0, week_tree);
++
++
++ }
++ break;
++ case 3:
++ // RSP.g:81:4: month= MONTH
++ {
++ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
++
++ month = (pANTLR3_COMMON_TOKEN) MATCHT(MONTH, &FOLLOW_MONTH_in_dateintval422);
++ if (HASEXCEPTION())
++ {
++ goto ruledateintvalEx;
++ }
++
++ month_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, month));
++ ADAPTOR->addChild(ADAPTOR, root_0, month_tree);
++
++
++ }
++ break;
++ case 4:
++ // RSP.g:82:4: year= YEAR
++ {
++ root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR));
++
++ year = (pANTLR3_COMMON_TOKEN) MATCHT(YEAR, &FOLLOW_YEAR_in_dateintval429);
++ if (HASEXCEPTION())
++ {
++ goto ruledateintvalEx;
++ }
++
++ year_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, year));
++ ADAPTOR->addChild(ADAPTOR, root_0, year_tree);
++
++
++ }
++ break;
++
++ }
++ }
+ }
+
+
+ */
diff --git a/src/pregen/RSPParser.h b/src/pregen/RSPParser.h
new file mode 100644
-index 0000000..4b3bbfe
+index 0000000..1796c0a
--- /dev/null
+++ b/src/pregen/RSPParser.h
@@ -0,0 +1,365 @@
+ * This C header file was generated by $ANTLR version 3.2 debian-7ubuntu3
+ *
+ * - From the grammar source file : RSP.g
-+ * - On : 2015-06-27 19:05:18
++ * - On : 2016-01-01 12:23:42
+ * - for the parser : RSPParserParser *
+ * Editing it, at least manually, is not wise.
+ *
\ No newline at end of file
diff --git a/src/pregen/SMARTPL2SQL.c b/src/pregen/SMARTPL2SQL.c
new file mode 100644
-index 0000000..c435f37
+index 0000000..bd93752
--- /dev/null
+++ b/src/pregen/SMARTPL2SQL.c
@@ -0,0 +1,1649 @@
+ * This C source file was generated by $ANTLR version 3.2 debian-7ubuntu3
+ *
+ * - From the grammar source file : SMARTPL2SQL.g
-+ * - On : 2015-06-27 19:05:21
++ * - On : 2016-01-01 12:23:44
+ * - for the tree parser : SMARTPL2SQLTreeParser *
+ * Editing it, at least manually, is not wise.
+ *
+ }
+ else if (strcmp((char *)val, "url") == 0)
+ {
-+ sprintf(str, "f.data_kind = %d", DATA_KIND_URL);
++ sprintf(str, "f.data_kind = %d", DATA_KIND_HTTP);
+ }
+ else if (strcmp((char *)val, "spotify") == 0)
+ {
+ */
diff --git a/src/pregen/SMARTPL2SQL.h b/src/pregen/SMARTPL2SQL.h
new file mode 100644
-index 0000000..322e8fd
+index 0000000..8e06de7
--- /dev/null
+++ b/src/pregen/SMARTPL2SQL.h
@@ -0,0 +1,220 @@
+ * This C header file was generated by $ANTLR version 3.2 debian-7ubuntu3
+ *
+ * - From the grammar source file : SMARTPL2SQL.g
-+ * - On : 2015-06-27 19:05:21
++ * - On : 2016-01-01 12:23:44
+ * - for the tree parser : SMARTPL2SQLTreeParser *
+ * Editing it, at least manually, is not wise.
+ *
\ No newline at end of file
diff --git a/src/pregen/SMARTPLLexer.c b/src/pregen/SMARTPLLexer.c
new file mode 100644
-index 0000000..9ea1a83
+index 0000000..91d6e99
--- /dev/null
+++ b/src/pregen/SMARTPLLexer.c
@@ -0,0 +1,4168 @@
+ * This C source file was generated by $ANTLR version 3.2 debian-7ubuntu3
+ *
+ * - From the grammar source file : SMARTPL.g
-+ * - On : 2015-06-27 19:05:15
++ * - On : 2016-01-01 12:23:40
+ * - for the lexer : SMARTPLLexerLexer *
+ * Editing it, at least manually, is not wise.
+ *
+ */
diff --git a/src/pregen/SMARTPLLexer.h b/src/pregen/SMARTPLLexer.h
new file mode 100644
-index 0000000..9d73721
+index 0000000..87e8c7e
--- /dev/null
+++ b/src/pregen/SMARTPLLexer.h
@@ -0,0 +1,248 @@
+ * This C header file was generated by $ANTLR version 3.2 debian-7ubuntu3
+ *
+ * - From the grammar source file : SMARTPL.g
-+ * - On : 2015-06-27 19:05:15
++ * - On : 2016-01-01 12:23:40
+ * - for the lexer : SMARTPLLexerLexer *
+ * Editing it, at least manually, is not wise.
+ *
+/* END - Note:Keep extra line feed to satisfy UNIX systems */
diff --git a/src/pregen/SMARTPLParser.c b/src/pregen/SMARTPLParser.c
new file mode 100644
-index 0000000..afe9f99
+index 0000000..f39e5ae
--- /dev/null
+++ b/src/pregen/SMARTPLParser.c
@@ -0,0 +1,1812 @@
+ * This C source file was generated by $ANTLR version 3.2 debian-7ubuntu3
+ *
+ * - From the grammar source file : SMARTPL.g
-+ * - On : 2015-06-27 19:05:15
++ * - On : 2016-01-01 12:23:40
+ * - for the parser : SMARTPLParserParser *
+ * Editing it, at least manually, is not wise.
+ *
+ */
diff --git a/src/pregen/SMARTPLParser.h b/src/pregen/SMARTPLParser.h
new file mode 100644
-index 0000000..5360136
+index 0000000..38ef500
--- /dev/null
+++ b/src/pregen/SMARTPLParser.h
@@ -0,0 +1,285 @@
+ * This C header file was generated by $ANTLR version 3.2 debian-7ubuntu3
+ *
+ * - From the grammar source file : SMARTPL.g
-+ * - On : 2015-06-27 19:05:15
++ * - On : 2016-01-01 12:23:40
+ * - for the parser : SMARTPLParserParser *
+ * Editing it, at least manually, is not wise.
+ *
PKG_NAME:=madplay
PKG_VERSION:=0.15.2b
-PKG_RELEASE:=5
+PKG_RELEASE:=6
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/mad \
define Package/madplay/install
$(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/madplay $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/madplay $(1)/usr/bin/
endef
define Package/madplay-alsa/install
#
-# Copyright (C) 2007-2015 OpenWrt.org
+# Copyright (C) 2007-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=mpd
-PKG_VERSION:=0.19.11
+PKG_VERSION:=0.19.14
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://www.musicpd.org/download/mpd/0.19/
-PKG_MD5SUM:=78935f6c464b67e19b4dc65bdb80319e
+PKG_MD5SUM:=9f99340ec6b77bea4ba3729e3b76fd7c
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
PKG_LICENSE:=GPL-2.0
--disable-wildmidi \
--disable-zzip \
--with-zeroconf=no \
+ --disable-soxr \
\
--enable-curl \
--enable-flac \
constexpr
#endif
notify():pending(false) {}
---- a/src/thread/PosixCond.hxx
-+++ b/src/thread/PosixCond.hxx
-@@ -41,7 +41,7 @@ class PosixCond {
- pthread_cond_t cond;
-
- public:
--#if defined(__NetBSD__) || defined(__BIONIC__)
-+#if !defined(__GLIBC__)
- /* NetBSD's PTHREAD_COND_INITIALIZER is not compatible with
- "constexpr" */
- PosixCond() {
---- a/src/thread/PosixMutex.hxx
-+++ b/src/thread/PosixMutex.hxx
-@@ -41,7 +41,7 @@ class PosixMutex {
- pthread_mutex_t mutex;
-
- public:
--#if defined(__NetBSD__) || defined(__BIONIC__)
-+#if !defined(__GLIBC__)
- /* NetBSD's PTHREAD_MUTEX_INITIALIZER is not compatible with
- "constexpr" */
- PosixMutex() {
PKG_NAME:=mpg123
PKG_VERSION:=1.22.3
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://www.mpg123.de/download/
--enable-shared \
--enable-static \
--with-cpu=generic_nofpu \
+ --with-audio=alsa \
--with-default-audio=alsa \
)
endef
#
-# Copyright (C) 2011-2014 OpenWrt.org
+# Copyright (C) 2011-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=pulseaudio
-PKG_VERSION:=7.1
+PKG_VERSION:=8.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://freedesktop.org/software/pulseaudio/releases/
-PKG_MD5SUM:=9d0a9817b632cac8e3f3834d7eb1c99d
+PKG_MD5SUM:=8678442ba0bb4b4c33ac6f62542962df
PKG_LICENSE:=LGPL-2.1+
PKG_LICENSE_FILES:=GPL LICENSE
--disable-udev \
--without-fftw \
--disable-avahi \
- --disable-dbus
+ --disable-dbus \
+ --without-soxr
CONFIGURE_VARS += \
PKG_CONFIG_LIBDIR="$(STAGING_DIR)/usr/lib/pkgconfig"
./files/pulseaudio.init \
$(1)/etc/init.d/pulseaudio
- $(INSTALL_CONF) \
+ $(INSTALL_DATA) \
$(PKG_INSTALL_DIR)/etc/pulse/* \
$(1)/etc/pulse
$(PKG_INSTALL_DIR)/usr/lib/pulse-$(PKG_VERSION)/modules/module*.so \
$(1)/usr/lib/pulse-$(PKG_VERSION)/modules/
- chmod -R 0644 $(1)/etc/pulse/*
endef
define Package/pulseaudio-tools/install
$(1)/usr/share/pulseaudio/alsa-mixer/paths \
$(1)/usr/share/pulseaudio/alsa-mixer/profile-sets
- $(INSTALL_CONF) \
+ $(INSTALL_DATA) \
$(PKG_INSTALL_DIR)/usr/share/pulseaudio/alsa-mixer/paths/* \
$(1)/usr/share/pulseaudio/alsa-mixer/paths
- $(INSTALL_CONF) \
+ $(INSTALL_DATA) \
$(PKG_INSTALL_DIR)/usr/share/pulseaudio/alsa-mixer/profile-sets/* \
$(1)/usr/share/pulseaudio/alsa-mixer/profile-sets
endef
+++ /dev/null
-diff --git a/pulsecore/core-util.c b/pulsecore/core-util.c
-index ba31221..824368a 100644
---- a/src/pulsecore/core-util.c
-+++ b/src/pulsecore/core-util.c
-@@ -54,7 +54,6 @@
-
- #ifdef HAVE_STRTOD_L
- #include <locale.h>
--#include <xlocale.h>
- #endif
-
- #ifdef HAVE_SCHED_H
#
-# Copyright (C) 2014-2015 OpenWrt.org
+# Copyright (C) 2014-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=shairplay
-PKG_VERSION:=2015-09-29
+PKG_VERSION:=2016-01-01
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=git://github.com/juhovh/shairplay.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=498bc5bcdd305e04721f94a04b9f26a7da72673f
+PKG_SOURCE_VERSION:=ce80e005908f41d0e6fde1c4a21e9cb8ee54007b
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
--- a/src/shairplay.c
+++ b/src/shairplay.c
-@@ -346,7 +346,7 @@ main(int argc, char *argv[])
+@@ -350,7 +350,7 @@ main(int argc, char *argv[])
raop_cbs.audio_destroy = audio_destroy;
raop_cbs.audio_set_volume = audio_set_volume;
#
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=shairport-sync
-PKG_VERSION:=2.6
-PKG_RELEASE:=2
+PKG_VERSION:=2.8.2
+PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=git://github.com/mikebrady/shairport-sync.git
CATEGORY:=Sound
TITLE:=AirPlay compatible audio player
DEPENDS:=@AUDIO_SUPPORT +libpthread +alsa-lib +libconfig +libdaemon +libpopt
+ PROVIDES:=shairport-sync
URL:=http://github.com/mikebrady/shairport-sync
endef
define Package/shairport-sync-openssl
$(Package/shairport-sync/default)
TITLE+= (openssl)
- DEPENDS+= +PACKAGE_shairport-sync-openssl:libopenssl +libavahi-client +libsoxr
+ DEPENDS+= +libopenssl +libavahi-client +libsoxr
VARIANT:=openssl
endef
define Package/shairport-sync-polarssl
$(Package/shairport-sync/default)
TITLE+= (polarssl)
- DEPENDS+= +PACKAGE_shairport-sync-polarssl:libpolarssl +libavahi-client +libsoxr
+ DEPENDS+= +libpolarssl +libavahi-client +libsoxr
VARIANT:=polarssl
DEFAULT_VARIANT:=1
endef
option log_verbosity '' # 0/1/2/3
option ignore_volume_control '' # no/yes
option volume_range_db '' # 30 to 150
- # Latencies
- option latencies_default '' # 88200
- option latencies_itunes '' # 99400
- option latencies_airplay '' # 88200
- option latencies_forked_daapd '' # 99400
+ option regtype '' # _raop._tcp
# Metadata
option metadata_enabled '' # no/yes
option metadata_cover_art '' # no/yes
option alsa_mixer_device '' # default
option alsa_latency_offset '' # 0
option alsa_buffer_length '' # 6615
+ option alsa_disable_synchronization '' # no/yes
+ option alsa_period_size '' # number
+ option alsa_buffer_size '' # number
# Pipe
option pipe_name '' # /tmp/shairport-sync-audio
option pipe_latency_offset '' # 0
# Stdout
option stdout_latency_offset '' # 0
option stdout_buffer_length '' # 44100
+ # AO
+ option ao_latency_offset '' # 0
+ option ao_buffer_length '' # 44100
#!/bin/sh /etc/rc.common
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
START=99
USE_PROCD=1
append_num "$cfg" "$conf_file" log_verbosity "log_verbosity"
append_str "$cfg" "$conf_file" ignore_volume_control "ignore_volume_control"
append_num "$cfg" "$conf_file" volume_range_db "volume_range_db"
- echo -e "};\n" >> $conf_file
-
- # Latencies
- echo -e "latencies =" >> $conf_file
- echo -e "{" >> $conf_file
- append_num "$cfg" "$conf_file" latencies_default "default"
- append_num "$cfg" "$conf_file" latencies_itunes "itunes"
- append_num "$cfg" "$conf_file" latencies_airplay "airplay"
- append_num "$cfg" "$conf_file" latencies_forked_daapd "forkedDaapd"
+ append_str "$cfg" "$conf_file" regtype "regtype"
echo -e "};\n" >> $conf_file
# Metadata
append_str "$cfg" "$conf_file" alsa_mixer_device "mixer_device"
append_num "$cfg" "$conf_file" alsa_latency_offset "audio_backend_latency_offset"
append_num "$cfg" "$conf_file" alsa_buffer_length "audio_backend_buffer_desired_length"
+ append_str "$cfg" "$conf_file" alsa_disable_synchronization "disable_synchronization"
+ append_num "$cfg" "$conf_file" alsa_period_size "period_size"
+ append_num "$cfg" "$conf_file" alsa_buffer_size "buffer_size"
echo -e "};\n" >> $conf_file
# Pipe audio back end
append_num "$cfg" "$conf_file" stdout_latency_offset "audio_backend_latency_offset"
append_num "$cfg" "$conf_file" stdout_buffer_length "audio_backend_buffer_desired_length"
echo -e "};\n" >> $conf_file
+
+ # AO audio back end
+ echo -e "ao =" >> $conf_file
+ echo -e "{" >> $conf_file
+ append_num "$cfg" "$conf_file" ao_latency_offset "audio_backend_latency_offset"
+ append_num "$cfg" "$conf_file" ao_buffer_length "audio_backend_buffer_desired_length"
+ echo -e "};\n" >> $conf_file
fi
procd_open_instance
#
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PKG_NAME:=squeezelite
PKG_VERSION:=1.8
-PKG_RELEASE=1
+PKG_RELEASE=2
PKG_LICENSE:=GPL-3.0
PKG_LICENSE_FILES:=LICENSE.txt
option decoder_auto_conf '1'
option dsd_over_pcm '0'
option ircontrol '0'
+ option interface ''
option enabled '1'
config_get model_name options model_name "SqueezeLite"
cmdline="$cmdline -M $model_name"
+ config_get interface options interface ""
+ [ -n "$interface" ] && cmdline="$cmdline -I $interface"
+
config_get device options device ""
- [ -n $device ] && cmdline="$cmdline -o $device"
+ [ -n "$device" ] && cmdline="$cmdline -o $device"
config_get alsa_buffer options alsa_buffer 200
[ $alsa_buffer -eq 0 ] && alsa_buffer="200"
# ***NOTE: codec lib names are in squeezelite.h (set decode_auto_conf to 0 to ignore)
#
local excl_codecs=""
+ local vorbis_lib="libvorbisidec.so.1"
+
excl_codecs=`checkcodec decode_flac "libFLAC.so.8" flac "$excl_codecs"`
excl_codecs=`checkcodec decode_mp3 "libmad.so.0" mp3 "$excl_codecs"`
excl_codecs=`checkcodec decode_aac "libfaad.so.2" aac "$excl_codecs"`
- excl_codecs=`checkcodec decode_ogg "libvorbisfile.so.3" ogg "$excl_codecs"`
+
+ [ -e "/usr/lib/$vorbis_lib" ] || vorbis_lib="libvorbisfile.so.3"
+
+ excl_codecs=`checkcodec decode_ogg "$vorbis_lib" ogg "$excl_codecs"`
excl_codecs=`checkcodec decode_wma_alac "libavcodec.so.56" wma,alac "$excl_codecs"`
cmdline="$cmdline $excl_codecs"
--- /dev/null
+--- a/main.c
++++ b/main.c
+@@ -69,6 +69,7 @@ static void usage(const char *argv0) {
+ #if IR
+ " -i [<filename>]\tEnable lirc remote control support (lirc config file ~/.lircrc used if filename not specified)\n"
+ #endif
++ " -I <interface>\t\tNetwork interface used to send discovery\n"
+ " -m <mac addr>\t\tSet mac address, format: ab:cd:ef:12:34:56\n"
+ " -M <modelname>\tSet the squeezelite player model name sent to the server (default: " MODEL_NAME_STRING ")\n"
+ " -n <name>\t\tSet the player name\n"
+@@ -197,6 +198,8 @@ int main(int argc, char **argv) {
+ char *modelname = NULL;
+ char *logfile = NULL;
+ u8_t mac[6];
++ char *iface = NULL;
++ in_addr_t bcast_addr = 0;
+ unsigned stream_buf_size = STREAMBUF_SIZE;
+ unsigned output_buf_size = 0; // set later
+ unsigned rates[MAX_SUPPORTED_SAMPLERATES] = { 0 };
+@@ -233,6 +236,7 @@ int main(int argc, char **argv) {
+ log_level log_ir = lWARN;
+ #endif
+
++ memset(mac, 0, sizeof(mac));
+ char *optarg = NULL;
+ int optind = 1;
+ int i;
+@@ -240,8 +244,6 @@ int main(int argc, char **argv) {
+ #define MAXCMDLINE 512
+ char cmdline[MAXCMDLINE] = "";
+
+- get_mac(mac);
+-
+ for (i = 0; i < argc && (strlen(argv[i]) + strlen(cmdline) + 2 < MAXCMDLINE); i++) {
+ strcat(cmdline, argv[i]);
+ strcat(cmdline, " ");
+@@ -249,7 +251,7 @@ int main(int argc, char **argv) {
+
+ while (optind < argc && strlen(argv[optind]) >= 2 && argv[optind][0] == '-') {
+ char *opt = argv[optind] + 1;
+- if (strstr("oabcCdefmMnNpPrs"
++ if (strstr("oabcCdefImMnNpPrs"
+ #if ALSA
+ "UV"
+ #endif
+@@ -334,6 +336,9 @@ int main(int argc, char **argv) {
+ case 'f':
+ logfile = optarg;
+ break;
++ case 'I':
++ iface = optarg;
++ break;
+ case 'm':
+ {
+ int byte = 0;
+@@ -556,6 +561,11 @@ int main(int argc, char **argv) {
+ winsock_init();
+ #endif
+
++ if (!(bcast_addr = get_iface_info(log_slimproto, iface, mac))) {
++ fprintf(stderr, "Error binding to network or none given\n");
++ exit(1);
++ }
++
+ stream_init(log_stream, stream_buf_size);
+
+ if (!strcmp(output_device, "-")) {
+@@ -599,7 +609,7 @@ int main(int argc, char **argv) {
+ exit(1);
+ }
+
+- slimproto(log_slimproto, server, mac, name, namefile, modelname);
++ slimproto(log_slimproto, server, bcast_addr, mac, name, namefile, modelname);
+
+ decode_close();
+ stream_close();
+--- a/squeezelite.h
++++ b/squeezelite.h
+@@ -374,7 +374,7 @@ typedef enum { EVENT_TIMEOUT = 0, EVENT_
+
+ char *next_param(char *src, char c);
+ u32_t gettime_ms(void);
+-void get_mac(u8_t *mac);
++in_addr_t get_iface_info(log_level level, char *iface, u8_t *mac);
+ void set_nonblock(sockfd s);
+ int connect_timeout(sockfd sock, const struct sockaddr *addr, socklen_t addrlen, int timeout);
+ void server_addr(char *server, in_addr_t *ip_ptr, unsigned *port_ptr);
+@@ -426,7 +426,7 @@ void buf_init(struct buffer *buf, size_t
+ void buf_destroy(struct buffer *buf);
+
+ // slimproto.c
+-void slimproto(log_level level, char *server, u8_t mac[6], const char *name, const char *namefile, const char *modelname);
++void slimproto(log_level level, char *server, in_addr_t bcast_addr, u8_t *mac, const char *name, const char *namefile, const char *modelname);
+ void slimproto_stop(void);
+ void wake_controller(void);
+
+--- a/slimproto.c
++++ b/slimproto.c
+@@ -107,7 +107,7 @@ void send_packet(u8_t *packet, size_t le
+ }
+ }
+
+-static void sendHELO(bool reconnect, const char *fixed_cap, const char *var_cap, u8_t mac[6]) {
++static void sendHELO(bool reconnect, const char *fixed_cap, const char *var_cap, u8_t *mac) {
+ const char *base_cap = "Model=squeezelite,AccuratePlayPoints=1,HasDigitalOut=1,HasPolarityInversion=1,Firmware=" VERSION;
+ struct HELO_packet pkt;
+
+@@ -730,7 +730,7 @@ void wake_controller(void) {
+ wake_signal(wake_e);
+ }
+
+-in_addr_t discover_server(void) {
++in_addr_t discover_server(in_addr_t bcast_addr) {
+ struct sockaddr_in d;
+ struct sockaddr_in s;
+ char *buf;
+@@ -746,7 +746,7 @@ in_addr_t discover_server(void) {
+ memset(&d, 0, sizeof(d));
+ d.sin_family = AF_INET;
+ d.sin_port = htons(PORT);
+- d.sin_addr.s_addr = htonl(INADDR_BROADCAST);
++ d.sin_addr.s_addr = bcast_addr;
+
+ pollinfo.fd = disc_sock;
+ pollinfo.events = POLLIN;
+@@ -777,7 +777,7 @@ in_addr_t discover_server(void) {
+ #define FIXED_CAP_LEN 256
+ #define VAR_CAP_LEN 128
+
+-void slimproto(log_level level, char *server, u8_t mac[6], const char *name, const char *namefile, const char *modelname) {
++void slimproto(log_level level, char *server, in_addr_t bcast_addr, u8_t *mac, const char *name, const char *namefile, const char *modelname) {
+ struct sockaddr_in serv_addr;
+ static char fixed_cap[FIXED_CAP_LEN], var_cap[VAR_CAP_LEN] = "";
+ bool reconnect = false;
+@@ -795,7 +795,7 @@ void slimproto(log_level level, char *se
+ }
+
+ if (!slimproto_ip) {
+- slimproto_ip = discover_server();
++ slimproto_ip = discover_server(bcast_addr);
+ }
+
+ if (!slimproto_port) {
+@@ -870,7 +870,7 @@ void slimproto(log_level level, char *se
+
+ // rediscover server if it was not set at startup
+ if (!server && ++failed_connect > 5) {
+- slimproto_ip = serv_addr.sin_addr.s_addr = discover_server();
++ slimproto_ip = serv_addr.sin_addr.s_addr = discover_server(bcast_addr);
+ }
+
+ } else {
+--- a/utils.c
++++ b/utils.c
+@@ -21,11 +21,11 @@
+ #include "squeezelite.h"
+
+ #if LINUX || OSX || FREEBSD
+-#include <sys/ioctl.h>
++#include <sys/types.h>
+ #include <net/if.h>
+-#include <netdb.h>
+-#if FREEBSD
+ #include <ifaddrs.h>
++#include <netdb.h>
++#if FREEBSD || OSX
+ #include <net/if_dl.h>
+ #include <net/if_types.h>
+ #endif
+@@ -33,15 +33,11 @@
+ #if WIN
+ #include <iphlpapi.h>
+ #endif
+-#if OSX
+-#include <net/if_dl.h>
+-#include <net/if_types.h>
+-#include <ifaddrs.h>
+-#include <netdb.h>
+-#endif
+
+ #include <fcntl.h>
+
++static log_level loglevel;
++
+ // logging functions
+ const char *logtime(void) {
+ static char buf[100];
+@@ -99,67 +95,101 @@ u32_t gettime_ms(void) {
+ #endif
+ }
+
+-// mac address
+-#if LINUX
+-// search first 4 interfaces returned by IFCONF
+-void get_mac(u8_t mac[]) {
+- struct ifconf ifc;
+- struct ifreq *ifr, *ifend;
+- struct ifreq ifreq;
+- struct ifreq ifs[4];
+-
+- mac[0] = mac[1] = mac[2] = mac[3] = mac[4] = mac[5] = 0;
+-
+- int s = socket(AF_INET, SOCK_DGRAM, 0);
+-
+- ifc.ifc_len = sizeof(ifs);
+- ifc.ifc_req = ifs;
+-
+- if (ioctl(s, SIOCGIFCONF, &ifc) == 0) {
+- ifend = ifs + (ifc.ifc_len / sizeof(struct ifreq));
+-
+- for (ifr = ifc.ifc_req; ifr < ifend; ifr++) {
+- if (ifr->ifr_addr.sa_family == AF_INET) {
+-
+- strncpy(ifreq.ifr_name, ifr->ifr_name, sizeof(ifreq.ifr_name));
+- if (ioctl (s, SIOCGIFHWADDR, &ifreq) == 0) {
+- memcpy(mac, ifreq.ifr_hwaddr.sa_data, 6);
+- if (mac[0]+mac[1]+mac[2] != 0) {
+- break;
+- }
++// Get broadcast address for interface (given or first available)
++// Return MAC address if none given
++#if LINUX || OSX || FREEBSD
++
++in_addr_t get_iface_info(log_level level, char *iface, u8_t *mac) {
++ struct ifaddrs *addrs, *ifa;
++ struct sockaddr *sdl;
++ char ifname[16];
++ unsigned char *ptr;
++ in_addr_t bcast_addr = 0;
++ int have_mac = 0, have_ifname = 0;
++
++ loglevel = level;
++
++ // Check for non-zero MAC
++ if ((mac[0] | mac[1] | mac[2]) != 0)
++ have_mac = 1;
++
++ // Copy interface name, if it was provided.
++ if (iface != NULL)
++ {
++ if( strlen(iface) > sizeof(ifname) )
++ return -1;
++
++ strncpy(ifname, iface, sizeof(ifname));
++ have_ifname = 1;
++ }
++
++ if (getifaddrs(&addrs) == 0) {
++ //iterate to find corresponding ethernet address
++ for (ifa = addrs; ifa; ifa = ifa->ifa_next) {
++ // Skip LOOPBACK interfaces, DOWN interfaces and interfaces that
++ // don't support BROADCAST.
++ if ((ifa->ifa_flags & IFF_LOOPBACK)
++ || !(ifa->ifa_flags & IFF_UP)
++ || !(ifa->ifa_flags & IFF_BROADCAST))
++ {
++ continue;
++ }
++
++ if (!have_ifname)
++ {
++ // We have found a valid interface name. Keep it.
++ strncpy(ifname, ifa->ifa_name, sizeof(ifname));
++ have_ifname = 1;
++ } else {
++ if (strncmp(ifname, ifa->ifa_name, sizeof(ifname)) != 0)
++ {
++ // This is not the interface we're looking for.
++ continue;
+ }
+ }
+- }
+- }
+
+- close(s);
+-}
+-#endif
+
+-#if OSX || FREEBSD
+-void get_mac(u8_t mac[]) {
+- struct ifaddrs *addrs, *ptr;
+- const struct sockaddr_dl *dlAddr;
+- const unsigned char *base;
+-
+- mac[0] = mac[1] = mac[2] = mac[3] = mac[4] = mac[5] = 0;
+-
+- if (getifaddrs(&addrs) == 0) {
+- ptr = addrs;
+- while (ptr) {
+- if (ptr->ifa_addr->sa_family == AF_LINK && ((const struct sockaddr_dl *) ptr->ifa_addr)->sdl_type == IFT_ETHER) {
+- dlAddr = (const struct sockaddr_dl *)ptr->ifa_addr;
+- base = (const unsigned char*) &dlAddr->sdl_data[dlAddr->sdl_nlen];
+- memcpy(mac, base, min(dlAddr->sdl_alen, 6));
++ // Check address family.
++ if ((ifa->ifa_addr->sa_family == AF_INET) &&
++ (((struct sockaddr_in *)ifa->ifa_broadaddr)->sin_addr.s_addr != 0))
++ {
++ // Get broadcast address and MAC address
++ bcast_addr = ((struct sockaddr_in *)ifa->ifa_broadaddr)->sin_addr.s_addr;
+ break;
+ }
+- ptr = ptr->ifa_next;
++ else
++ {
++ // Address is not IPv4
++ if (iface == NULL)
++ have_ifname = 0;
++ }
++
+ }
++
++ // Find MAC address matching interface
++ if (!have_mac && (bcast_addr != 0)) {
++ for (ifa = addrs; ifa; ifa = ifa->ifa_next) {
++ if ((ifa->ifa_addr->sa_family == PF_PACKET) &&
++ (strncmp(ifname, ifa->ifa_name, sizeof(ifname)) == 0)) {
++ sdl = (struct sockaddr *)(ifa->ifa_addr);
++ ptr = (unsigned char *)sdl->sa_data;
++ memcpy(mac, ptr + 10, 6);
++ have_mac = 1;
++ }
++ }
++ }
++
+ freeifaddrs(addrs);
+ }
++
++ LOG_INFO("Interface: %s, broadcast: %08X, macaddr = %02x:%02x:%02x:%02x:%02x:%02x",
++ ifname, bcast_addr, mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
++
++ return bcast_addr;
+ }
+ #endif
+
++
+ #if WIN
+ #pragma comment(lib, "IPHLPAPI.lib")
+ void get_mac(u8_t mac[]) {
+++ /dev/null
---- a/main.c
-+++ b/main.c
-@@ -187,6 +187,17 @@ static void sighandler(int signum) {
- signal(signum, SIG_DFL);
- }
-
-+// Waits for nonzero MAC
-+static void get_nonzero_mac(u8_t mac[], u32_t timeout_ms) {
-+ u32_t wait_timeout = gettime_ms() + timeout_ms;
-+ do{
-+ get_mac(mac);
-+ if ((mac[0]+mac[1]+mac[2]+mac[3]+mac[4]+mac[5]) != 0) {
-+ break;
-+ }
-+ }while(wait_timeout > gettime_ms());
-+}
-+
- int main(int argc, char **argv) {
- char *server = NULL;
- char *output_device = "default";
-@@ -240,7 +251,8 @@ int main(int argc, char **argv) {
- #define MAXCMDLINE 512
- char cmdline[MAXCMDLINE] = "";
-
-- get_mac(mac);
-+ // Waits for nonzero MAC
-+ get_nonzero_mac(mac,10000);
-
- for (i = 0; i < argc && (strlen(argv[i]) + strlen(cmdline) + 2 < MAXCMDLINE); i++) {
- strcat(cmdline, argv[i]);
ifneq ($(CONFIG_PACKAGE_UPMPDCLI_SC_WEB_INTERFACE),y)
$(RM) -rf $(PKG_INSTALL_DIR)/usr/share/upmpdcli/web
endif
- $(CP) -r $(PKG_INSTALL_DIR)/usr/share/upmpdcli $(1)/usr/share/
+ $(CP) $(PKG_INSTALL_DIR)/usr/share/upmpdcli $(1)/usr/share/
$(INSTALL_DATA) ./files/upmpdcli.png $(1)/usr/share/upmpdcli/
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/upmpdcli.init $(1)/etc/init.d/upmpdcli
define Build/InstallDev
mkdir -p $(1)/usr/include
mkdir -p $(1)/usr/lib/pkgconfig
- $(CP) -r $(PKG_INSTALL_DIR)/usr/{include,lib} $(1)/usr/
+ $(CP) $(PKG_INSTALL_DIR)/usr/{include,lib} $(1)/usr/
endef
$(eval $(call BuildPackage,acl))
include $(TOPDIR)/rules.mk
PKG_NAME:=acpid
-PKG_VERSION:=2.0.25
+PKG_VERSION:=2.0.27
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@SF/acpid2
-PKG_MD5SUM:=69bb0cc4a0a89eb2dfecc4851087f568
+PKG_MD5SUM:=e41bdf628e122edb4342fca432ea7db9
PKG_MAINTAINER:=Thomas Heil<heil@terminal-consulting.de>
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=alsa-utils
-PKG_VERSION:=1.0.29
+PKG_VERSION:=1.1.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=ftp://ftp.alsa-project.org/pub/utils/ \
http://alsa.cybermirror.org/utils/
-PKG_MD5SUM:=6b289bf874c4c9a63f4b3973093dd404
+PKG_MD5SUM:=b9d6102fbbd0b68040bb77023ed30c0c
PKG_INSTALL:=1
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
define Package/alsa-utils
SECTION:=utils
CATEGORY:=Utilities
- DEPENDS:=+alsa-lib +libncurses +libpthread
+ DEPENDS:=+alsa-lib +libncursesw +libpthread
TITLE:=ALSA (Advanced Linux Sound Architecture) utilities
URL:=http://www.alsa-project.org/
endef
DEPENDS:=+alsa-lib +libpthread
endef
-define Build/Configure
- $(call Build/Configure/Default, \
+CONFIGURE_ARGS+= \
--disable-rpath \
--disable-alsatest \
+ --disable-bat \
--disable-xmlto \
- , \
- ac_cv_prog_ncurses5_config=no \
- ac_cv_prog_ncursesw5_config=no \
- )
-endef
+ --with-curses=ncursesw
define Package/alsa-utils/install
$(INSTALL_DIR) $(1)/usr/{s,}bin
define Build/InstallDev
mkdir -p $(1)/usr/include
mkdir -p $(1)/usr/lib/pkgconfig
- $(CP) -r $(PKG_INSTALL_DIR)/usr/{include,lib} $(1)/usr/
+ $(CP) $(PKG_INSTALL_DIR)/usr/{include,lib} $(1)/usr/
endef
$(eval $(call BuildPackage,attr))
endef
define Package/bandwidthd/daemon
- This package contains bandwidthd a bandwith tracking utility.
+ This package contains bandwidthd a bandwidth tracking utility.
endef
define Package/bandwidthd-pgsql/daemon
- This package contains bandwidthd a bandwith tracking utility.
+ This package contains bandwidthd a bandwidth tracking utility.
endef
ifeq ($(BUILD_VARIANT),no-pgsql)
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=bluez
-PKG_VERSION:=5.33
+PKG_VERSION:=5.38
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/linux/bluetooth/
-PKG_MD5SUM:=78782dc33d9a8b6344c4cc1af70c8a98
+PKG_MD5SUM:=dae2ed00c63791800ea7d10a381270a5
PKG_LICENSE:=GPL-2.0+
PKG_LICENSE_FILES:=COPYING
--- /dev/null
+From b4f2b77472aeb967d3a7595e8a965785c7a37c87 Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil@raspberrypi.org>
+Date: Tue, 16 Feb 2016 16:40:46 +0000
+Subject: [PATCH 1/4] bcm43xx: Add bcm43xx-3wire variant
+
+---
+ tools/hciattach.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/tools/hciattach.c
++++ b/tools/hciattach.c
+@@ -1144,6 +1144,9 @@ struct uart_t uart[] = {
+ { "bcm43xx", 0x0000, 0x0000, HCI_UART_H4, 115200, 3000000,
+ FLOW_CTL, DISABLE_PM, NULL, bcm43xx, NULL },
+
++ { "bcm43xx-3wire", 0x0000, 0x0000, HCI_UART_3WIRE, 115200, 3000000,
++ 0, DISABLE_PM, NULL, bcm43xx, NULL },
++
+ { "ath3k", 0x0000, 0x0000, HCI_UART_ATH3K, 115200, 115200,
+ FLOW_CTL, DISABLE_PM, NULL, ath3k_ps, ath3k_pm },
+
--- /dev/null
+From e145c9621f976063e5c573db1f2053d906f63427 Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil@raspberrypi.org>
+Date: Tue, 16 Feb 2016 16:39:09 +0000
+Subject: [PATCH 2/4] bcm43xx: The UART speed must be reset after the firmware
+ download
+
+---
+ tools/hciattach_bcm43xx.c | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+--- a/tools/hciattach_bcm43xx.c
++++ b/tools/hciattach_bcm43xx.c
+@@ -366,11 +366,8 @@ int bcm43xx_init(int fd, int def_speed,
+ return -1;
+
+ if (bcm43xx_locate_patch(FIRMWARE_DIR, chip_name, fw_path)) {
+- fprintf(stderr, "Patch not found, continue anyway\n");
++ fprintf(stderr, "Patch not found for %s, continue anyway\n", chip_name);
+ } else {
+- if (bcm43xx_set_speed(fd, ti, speed))
+- return -1;
+-
+ if (bcm43xx_load_firmware(fd, fw_path))
+ return -1;
+
+@@ -380,6 +377,7 @@ int bcm43xx_init(int fd, int def_speed,
+ return -1;
+ }
+
++ sleep(1);
+ if (bcm43xx_reset(fd))
+ return -1;
+ }
--- /dev/null
+From d41dc2046dd08d8c95197f677e224506f5b39bdd Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil@raspberrypi.org>
+Date: Wed, 20 Jan 2016 16:00:37 +0000
+Subject: [PATCH 3/4] Increase firmware load timeout to 30s
+
+---
+ tools/hciattach.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/tools/hciattach.c
++++ b/tools/hciattach.c
+@@ -1293,7 +1293,7 @@ int main(int argc, char *argv[])
+ {
+ struct uart_t *u = NULL;
+ int detach, printpid, raw, opt, i, n, ld, err;
+- int to = 10;
++ int to = 30;
+ int init_speed = 0;
+ int send_break = 0;
+ pid_t pid;
--- /dev/null
+From 76681284b0ea49852041fdb97a35175089a08781 Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil@raspberrypi.org>
+Date: Tue, 23 Feb 2016 17:52:29 +0000
+Subject: [PATCH 4/4] Move the 43xx firmware into /lib/firmware
+
+---
+ tools/hciattach_bcm43xx.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/tools/hciattach_bcm43xx.c
++++ b/tools/hciattach_bcm43xx.c
+@@ -43,7 +43,7 @@
+ #include "hciattach.h"
+
+ #ifndef FIRMWARE_DIR
+-#define FIRMWARE_DIR "/etc/firmware"
++#define FIRMWARE_DIR "/lib/firmware/brcm"
+ #endif
+
+ #define FW_EXT ".hcd"
--- a/Makefile.in
+++ b/Makefile.in
-@@ -2405,7 +2405,7 @@ unit_tests = $(am__append_32) unit/test-
+@@ -2441,7 +2441,7 @@ unit_tests = $(am__append_35) 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 \
-@@ -2651,13 +2651,13 @@ unit_tests = $(am__append_32) unit/test-
+@@ -2691,13 +2691,13 @@ unit_tests = $(am__append_35) 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
-@@ -2667,17 +2667,17 @@ unit_tests = $(am__append_32) unit/test-
+@@ -2707,17 +2707,17 @@ unit_tests = $(am__append_35) unit/test-
@READLINE_TRUE@ client/display.h client/display.c
@READLINE_TRUE@tools_bluetooth_player_LDADD = gdbus/libgdbus-internal.la \
--- /dev/null
+#
+# Copyright (C) 2009-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=bonnie++
+PKG_VERSION:=1.97
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
+PKG_SOURCE_URL:=http://www.coker.com.au/bonnie++/experimental/
+PKG_MD5SUM:=d6cf9703242998b2ddc2d875b028b3c6
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=copyright.txt
+PKG_MAINTAINER:=Florian Fainelli <florian@openwrt.org>
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION).1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/bonniexx
+ SECTION:=utils
+ CATEGORY:=Utilities
+ DEPENDS:=+libstdcpp +libpthread
+ TITLE:=Bonnie++ - hard drive bottleneck testing program.
+ URL:=http://www.coker.com.au/bonnie++/
+endef
+
+define Package/bonniexx/description
+ Bonnie++ is a benchmark suite that is aimed at performing a number of simple
+ tests of hard drive and file system performance.
+endef
+
+define Build/Compile
+ $(MAKE) -C $(PKG_BUILD_DIR) \
+ TARGET_CXX="$(TARGET_CXX)" \
+ TARGET_LINK="$(TARGET_CXX)" \
+ MORECFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CXXFLAGS)" \
+ DESTDIR="$(PKG_INSTALL_DIR)" \
+ all
+endef
+
+define Package/bonniexx/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(CP) $(PKG_BUILD_DIR)/bonnie++ $(1)/usr/bin/
+ $(CP) $(PKG_BUILD_DIR)/bon_csv2html $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,bonniexx))
--- /dev/null
+Index: bonnie++-1.97.1/configure
+===================================================================
+--- bonnie++-1.97.1.orig/configure
++++ bonnie++-1.97.1/configure
+@@ -3955,9 +3955,7 @@ rm -f core conftest.err conftest.$ac_obj
+
+ if test "$cross_compiling" = yes; then :
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+-as_fn_error $? "cannot run test program while cross compiling
+-See \`config.log' for more details" "$LINENO" 5 ; }
++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} }
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+Index: bonnie++-1.97.1/Makefile
+===================================================================
+--- bonnie++-1.97.1.orig/Makefile
++++ bonnie++-1.97.1/Makefile
+@@ -1,5 +1,7 @@
+ EXES=bonnie++ zcav getc_putc getc_putc_helper
+ EXE=bon_csv2html generate_randfile
++TARGET_CXX=g++
++TARGET_LINK=g++
+
+ all: $(EXE) $(EXES)
+
+@@ -10,8 +12,8 @@ eprefix=${prefix}
+ #MORE_WARNINGS=-Weffc++
+ WFLAGS=-Wall -W -Wshadow -Wpointer-arith -Wwrite-strings -pedantic -ffor-scope -Wcast-align -Wsign-compare -Wpointer-arith -Wwrite-strings -Wformat-security -Wswitch-enum -Winit-self $(MORE_WARNINGS)
+ CFLAGS=-O2 -DNDEBUG $(WFLAGS) $(MORECFLAGS)
+-CXX=g++ $(CFLAGS)
+-LINK=g++
++CXX=$(TARGET_CXX) $(CFLAGS)
++LINK=$(TARGET_LINK)
+ THREAD_LFLAGS=-lpthread
+
+ INSTALL=/usr/bin/install -c
--- /dev/null
+--- a/bon_file.cpp
++++ b/bon_file.cpp
+@@ -464,25 +464,37 @@ int COpenTest::delete_sequential(BonTime
+ }
+ if(m_number_directories != 1)
+ {
+- if(chdir("..") || rmdir(buf))
++ if(chdir(".."))
+ {
++ io_error("chdir");
++ return -1;
++ }
++ if(rmdir(buf))
++ {
++ fprintf(stderr, "Unable to delete directory '%s'\n", buf);
+ io_error("rmdir");
+ return -1;
+ }
+ }
+ }
+- if(chdir("..") || rmdir(m_dirname))
++ if(count != m_number)
+ {
+- io_error("rmdir");
++ fprintf(stderr, "Expected %d files but only got %d\n", m_number, count);
+ return -1;
+ }
+- delete m_dirname;
+- m_dirname = NULL;
+- if(count != m_number)
++ if(chdir(".."))
+ {
+- fprintf(stderr, "Expected %d files but only got %d\n", m_number, count);
++ io_error("chdir");
++ return -1;
++ }
++ if(rmdir(m_dirname))
++ {
++ fprintf(stderr, "Unable to delete directory '%s'\n", m_dirname);
++ io_error("rmdir");
+ return -1;
+ }
++ delete m_dirname;
++ m_dirname = NULL;
+ sync();
+ timer.stop_and_record(DelSeq);
+ timer.add_latency(DelSeq, dur.getMax());
include $(TOPDIR)/rules.mk
PKG_NAME:=btrfs-progs
-PKG_VERSION:=3.19.1
-PKG_RELEASE:=4
+PKG_VERSION:=4.5.1
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-v$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/linux/kernel/people/kdave/btrfs-progs/
-PKG_MD5SUM:=ec3b3c99df18633ddc9e41f0680c5a51
+PKG_MD5SUM:=31be62e9a772f297669b2ee14dc85c27
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-v$(PKG_VERSION)
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
--- /dev/null
+--- btrfs-progs-v4.2.3/chunk-recover.c
++++ btrfs-progs-v4.2.3/chunk-recover.c.new
+@@ -883,7 +883,7 @@
+ for (i = 0; i < devidx; i++) {
+ if (dev_scans[i].bytenr == -1)
+ continue;
+- ret = pthread_tryjoin_np(t_scans[i],
++ ret = pthread_join(t_scans[i],
+ (void **)&t_rets[i]);
+ if (ret == EBUSY) {
+ all_done = 0;
include $(TOPDIR)/rules.mk
PKG_NAME:=ccid
-PKG_VERSION:=1.4.20
+PKG_VERSION:=1.4.22
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=https://alioth.debian.org/frs/download.php/file/4140
-PKG_MD5SUM:=a73c203cfe27e684850df73630065738
+PKG_SOURCE_URL:=https://alioth.debian.org/frs/download.php/file/4162
+PKG_MD5SUM:=150e1edc449ad394572dd72490b7b6f4
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=LGPL-2.1+
PKG_LICENSE_FILES:=COPYING
define Package/cmdpad/description
cmdpad - execute commands when a key is pressed, released or hold down.
- Should be started from /etc/rc or /etc/rc.local. To run it as deamon you
+ Should be started from /etc/rc or /etc/rc.local. To run it as daemon you
need to start it with '&'. All logs are printed to standard out and standard
error (to write the log to disk use cmdpad > /var/log/cmdpad). Cmdpad
searches for /etc/cmdpad.conf and load the key bindings. Then wait for
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=collectd
-PKG_VERSION:=5.5.0
-PKG_RELEASE:=5
+PKG_VERSION:=5.5.1
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://collectd.org/files/
-PKG_MD5SUM:=c39305ef5514b44238b0d31f77e29e6a
+PKG_MD5SUM:=fd24b947cef9351ce3e2d6d2a0762e18
PKG_FIXUP:=autoreconf
PKG_REMOVE_FILES:=aclocal.m4 libltdl/aclocal.m4
and provides mechanismns to store the values in a variety of ways.
endef
+define Package/collectd/config
+ config PACKAGE_COLLECTD_ENCRYPTED_NETWORK
+ bool "Enable ability to use encrypted networking"
+ default n
+ depends on PACKAGE_collectd
+ select PACKAGE_collectd-mod-network
+endef
+
ifneq ($(CONFIG_avr32),)
TARGET_CFLAGS += -fsigned-char
endif
--disable-debug \
--enable-daemon \
--with-nan-emulation \
- --with-perl-bindings= \
+ --without-perl-bindings
+
+ifneq ($(CONFIG_PACKAGE_COLLECTD_ENCRYPTED_NETWORK),)
+CONFIGURE_ARGS+= \
+ --with-libgcrypt=$(STAGING_DIR)/include
+else
+CONFIGURE_ARGS+= \
--without-libgcrypt
+endif
CONFIGURE_VARS+= \
CFLAGS="$$$$CFLAGS $(FPIC)" \
$(eval $(call BuildPlugin,memory,physical memory usage input,memory,))
$(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:libmnl))
-$(eval $(call BuildPlugin,network,network input/output,network))
+$(eval $(call BuildPlugin,network,network input/output,network,+PACKAGE_COLLECTD_ENCRYPTED_NETWORK:libgcrypt))
$(eval $(call BuildPlugin,nginx,nginx status input,nginx,+PACKAGE_collectd-mod-nginx:libcurl))
$(eval $(call BuildPlugin,ntpd,NTP daemon status input,ntpd,))
$(eval $(call BuildPlugin,nut,UPS monitoring input,nut,+PACKAGE_collectd-mod-nut:nut))
#!/bin/sh /etc/rc.common
-# Copyright (C) 2006-2011 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
START=80
+STOP=10
-SERVICE_USE_PID=1
+USE_PROCD=1
-start() {
+start_service() {
mkdir -m 0755 -p /var/lib/collectd
- service_start /usr/sbin/collectd
+ procd_open_instance
+ procd_set_param command /usr/sbin/collectd -f
+ procd_close_instance
}
-stop() {
- service_stop /usr/sbin/collectd
-}
/* consolidation_functions = */ NULL,
/* consolidation_functions_num = */ 0,
-@@ -1093,6 +1096,14 @@ static int rrd_config (const char *key,
+@@ -1110,6 +1113,14 @@ static int rrd_config (const char *key,
free (value_copy);
}
double tmp = atof (value);
--- a/src/utils_rrdcreate.c
+++ b/src/utils_rrdcreate.c
-@@ -217,6 +217,9 @@ static int rra_get (char ***ret, const v
+@@ -213,6 +213,9 @@ static int rra_get (char ***ret, const v
rts_num = rra_timespans_num;
}
+ rra_types_num = 1;
+
rra_max = rts_num * rra_types_num;
+ assert (rra_max > 0);
- if ((rra_def = (char **) malloc ((rra_max + 1) * sizeof (char *))) == NULL)
--- a/src/utils_rrdcreate.h
+++ b/src/utils_rrdcreate.h
@@ -41,6 +41,8 @@ struct rrdcreate_config_s
--- a/src/daemon/configfile.c
+++ b/src/daemon/configfile.c
-@@ -109,7 +109,7 @@ static cf_global_option_t cf_global_opti
+@@ -111,7 +111,7 @@ static cf_global_option_t cf_global_opti
{"BaseDir", NULL, PKGLOCALSTATEDIR},
{"PIDFile", NULL, PIDFILE},
{"Hostname", NULL, NULL},
+++ b/version-gen.sh
@@ -2,7 +2,7 @@
- DEFAULT_VERSION="5.5.0.git"
+ DEFAULT_VERSION="5.5.1.git"
-VERSION="`git describe 2> /dev/null | grep collectd | sed -e 's/^collectd-//'`"
+#VERSION="`git describe 2> /dev/null | grep collectd | sed -e 's/^collectd-//'`"
rf->rf_effective_interval = rf->rf_interval;
pthread_mutex_lock (&read_lock);
-
+++ /dev/null
-Backport of 780e6a76021a240e95007a04b723d827120afa95
-Subject: [PATCH] build: add libavltree, libcommon & libheap dependencies
-
-Otherwise it can break on very parallel builds since collectd link time
-arrives before one or more of these were built.
-
---- a/src/daemon/Makefile.am
-+++ b/src/daemon/Makefile.am
-@@ -49,7 +49,7 @@ collectd_CPPFLAGS = $(AM_CPPFLAGS) $(LT
- collectd_CFLAGS = $(AM_CFLAGS)
- collectd_LDFLAGS = -export-dynamic
- collectd_LDADD = libavltree.la libcommon.la libheap.la -lm
--collectd_DEPENDENCIES =
-+collectd_DEPENDENCIES = libavltree.la libcommon.la libheap.la
-
- # Link to these libraries..
- if BUILD_WITH_LIBRT
--- /dev/null
+Patch reverts upstream commit:
+https://github.com/collectd/collectd/commit/6124da7a48f28f54fc09ebeb942d1037516fe6ab
+
+The commit changed the detection path due to FreeBSD issues,
+but apparently affects also Openwrt buildroot negatively.
+
+Original explanation:
+ From 6124da7a48f28f54fc09ebeb942d1037516fe6ab Mon Sep 17 00:00:00 2001
+ Subject: [PATCH] Fix libmodbus detection on FreeBSD
+
+ We look for modbus/modbus.h in /usr/local/include/modbus
+ but we should look for modbus.h
+
+ This is only an issue on FreeBSD since /usr/local/include is not
+ in the default search path.
+
+Reversed patch to be applied:
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -2585,7 +2585,7 @@ then
+ SAVE_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $with_libmodbus_cflags"
+
+- AC_CHECK_HEADERS(modbus.h, [], [with_libmodbus="no (modbus.h not found)"])
++ AC_CHECK_HEADERS(modbus/modbus.h, [], [with_libmodbus="no (modbus/modbus.h not found)"])
+
+ CPPFLAGS="$SAVE_CPPFLAGS"
+ fi
+--- a/src/modbus.c
++++ b/src/modbus.c
+@@ -27,7 +27,7 @@
+
+ #include <netdb.h>
+
+-#include <modbus.h>
++#include <modbus/modbus.h>
+
+ #ifndef LIBMODBUS_VERSION_CHECK
+ /* Assume version 2.0.3 */
--- a/configure.ac
+++ b/configure.ac
-@@ -589,6 +589,9 @@ AC_CHECK_HEADERS(net/pfvar.h,
+@@ -663,6 +663,9 @@ AC_CHECK_HEADERS(net/pfvar.h,
have_termios_h="no"
AC_CHECK_HEADERS(termios.h, [have_termios_h="yes"])
# For the turbostat plugin
have_asm_msrindex_h="no"
AC_CHECK_HEADERS(asm/msr-index.h, [have_asm_msrindex_h="yes"])
-@@ -5171,6 +5174,7 @@ plugin_interface="no"
+@@ -5241,6 +5244,7 @@ plugin_interface="no"
plugin_ipmi="no"
plugin_ipvs="no"
plugin_irq="no"
plugin_load="no"
plugin_log_logstash="no"
plugin_memory="no"
-@@ -5562,6 +5566,7 @@ AC_PLUGIN([ipmi], [$plugin_ipmi],
+@@ -5638,6 +5642,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([load], [$plugin_load], [System load])
AC_PLUGIN([logfile], [yes], [File logging plugin])
-@@ -5891,6 +5896,7 @@ Configuration:
+@@ -5967,6 +5972,7 @@ Configuration:
oracle . . . . . . . $with_oracle
protobuf-c . . . . . $have_protoc_c
python . . . . . . . $with_python
Features:
daemon mode . . . . . $enable_daemon
-@@ -5940,6 +5946,7 @@ Configuration:
+@@ -6016,6 +6022,7 @@ Configuration:
iptables . . . . . . $enable_iptables
ipvs . . . . . . . . $enable_ipvs
irq . . . . . . . . . $enable_irq
--- a/src/collectd.conf.in
+++ b/src/collectd.conf.in
@@ -128,6 +128,7 @@
- #@BUILD_PLUGIN_IPMI_TRUE@LoadPlugin ipmi
+ #@BUILD_PLUGIN_IPTABLES_TRUE@LoadPlugin iptables
#@BUILD_PLUGIN_IPVS_TRUE@LoadPlugin ipvs
#@BUILD_PLUGIN_IRQ_TRUE@LoadPlugin irq
+#@BUILD_PLUGIN_IWINFO_TRUE@LoadPlugin iwinfo
# JVMArg "-Djava.class.path=@prefix@/share/collectd/java/collectd-api.jar"
--- a/src/collectd.conf.pod
+++ b/src/collectd.conf.pod
-@@ -2572,6 +2572,27 @@ and all other interrupts are collected.
+@@ -2608,6 +2608,27 @@ and all other interrupts are collected.
=back
+}
--- a/src/Makefile.am
+++ b/src/Makefile.am
-@@ -459,6 +459,13 @@ irq_la_SOURCES = irq.c \
+@@ -454,6 +454,13 @@ irq_la_SOURCES = irq.c
irq_la_LDFLAGS = $(PLUGIN_LDFLAGS)
endif
+if BUILD_PLUGIN_IWINFO
+pkglib_LTLIBRARIES += iwinfo.la
-+iwinfo_la_SOURCES = iwinfo.c utils_ignorelist.c utils_ignorelist.h
++iwinfo_la_SOURCES = iwinfo.c
+iwinfo_la_LDFLAGS = -module -avoid-version
+iwinfo_la_LIBADD = -liwinfo
+endif
java_la_SOURCES = java.c
--- a/src/types.db
+++ b/src/types.db
-@@ -227,6 +227,7 @@ voltage value:GAUGE:U:U
+@@ -228,6 +228,7 @@ voltage value:GAUGE:U:U
vs_memory value:GAUGE:0:9223372036854775807
vs_processes value:GAUGE:0:65535
vs_threads value:GAUGE:0:65535
--- a/src/ping.c
+++ b/src/ping.c
-@@ -656,7 +656,7 @@ static int ping_read (void) /* {{{ */
+@@ -658,7 +658,7 @@ static int ping_read (void) /* {{{ */
/ ((double) (pkg_recv * (pkg_recv - 1))));
/* Calculate drop rate. */
#
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=crelay
-PKG_VERSION:=0.9
+PKG_VERSION:=0.10
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
crelay is used to control different relay cards in a unified manner. It provides
several interfaces for controlling the relays locally or remotely by a web browser
or a smartphone. The card which is detected first will be used. A WebUI control is
- availble on port 8000 (default)
+ available on port 8000 (default)
.
Currently supported relay cards:
- Conrad USB 4-channel relay card
- - Sainsmart USB 4-channel relay card
+ - Sainsmart USB 4/8-channel relay board
+ - Sainsmart USB 16-channel relay control module
- Generic GPIO relays
- HID API compatible relay card
endef
start_service() {
procd_open_instance
+ # restart if it croaks
+ procd_set_param respawn
+
procd_set_param command "$PROG"
# daemon mode (not daemonized) - starts HTTP server
procd_append_param command -d
--- a/src/Makefile
+++ b/src/Makefile
-@@ -45,7 +45,7 @@ endif
- #ifdef DRV_SAINSMART
+@@ -44,7 +44,7 @@ OPTS += -DDRV_CONRAD
+ endif
ifeq ($(DRV_SAINSMART), y)
SRC += relay_drv_sainsmart.c
-LIBS += -lftdi
+LIBS += -lftdi1
OPTS += -DDRV_SAINSMART
endif
- #ifdef DRV_HIDAPI
+ ifeq ($(DRV_SAINSMART16), y)
--- a/src/Makefile
+++ b/src/Makefile
-@@ -61,7 +61,7 @@ all: $(BIN)
+@@ -64,7 +64,7 @@ all: $(BIN)
$(BIN): $(OBJ)
@echo "[Link $(BIN)] with libs $(LIBS)"
--- /dev/null
+--- a/src/crelay.c
++++ b/src/crelay.c
+@@ -678,10 +678,12 @@ int main(int argc, char *argv[])
+ listen(sock, 5);
+ syslog(LOG_DAEMON | LOG_NOTICE, "HTTP server listening on %s:%d\n", inet_ntoa(iface), port);
+
++#if 0
+ if (daemon(0, 0) == -1) {
+ syslog(LOG_DAEMON | LOG_ERR, "Failed to daemonize: %s", strerror(errno));
+ exit(EXIT_FAILURE);
+ }
++#endif
+
+ while (1)
+ {
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=cryptodev-linux
-PKG_VERSION:=1.7
+PKG_VERSION:=1.8
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://download.gna.org/cryptodev-linux/
-PKG_MD5SUM:=0b63b3481cf2c90386b35f057481d36b
+PKG_MD5SUM:=02644cc4cd02301e0b503a332eb2f0b5
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
URL:=http://cryptodev-linux.org/
MAINTAINER:=Nikos Mavrogiannopoulos <n.mavrogiannopoulos@gmail.com>
VERSION:=$(LINUX_VERSION)+$(PKG_VERSION)-$(BOARD)-$(PKG_RELEASE)
- DEPENDS:=+kmod-crypto-core +kmod-crypto-authenc +kmod-crypto-hash
+ DEPENDS:=+kmod-crypto-authenc +kmod-crypto-hash
FILES:= \
$(PKG_BUILD_DIR)/cryptodev.$(LINUX_KMOD_SUFFIX)
AUTOLOAD:=$(call AutoLoad,50,$(CRYPTODEV_AUTOLOAD))
+++ /dev/null
-Index: cryptodev-linux-1.7/ioctl.c
-===================================================================
---- cryptodev-linux-1.7.orig/ioctl.c
-+++ cryptodev-linux-1.7/ioctl.c
-@@ -546,7 +546,7 @@ static int
- clonefd(struct file *filp)
- {
- int ret;
-- ret = get_unused_fd();
-+ ret = get_unused_fd_flags(0);
- if (ret >= 0) {
- get_file(filp);
- fd_install(ret, filp);
include $(TOPDIR)/rules.mk
PKG_NAME:=cryptsetup
-PKG_VERSION:=1.7.0
-PKG_RELEASE:=1
+PKG_VERSION:=1.7.1
+PKG_RELEASE:=2
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.7
-PKG_MD5SUM:=56c385fe87fc2b6873df4b7f89202d0f
+PKG_MD5SUM:=e38da1c80088cbaaccf931ef61e726dc
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
--disable-verbose-mode \
--disable-xml-docs \
--with-dbus-user=root \
- --with-dbus-daemondir="$(STAGIND_DIR_HOST)/bin" \
- --with-system-socket="$(STAGING_DIR_HOST)/var/run/dbus/system_bus_socket" \
- --with-system-pid-file="$(STAGING_DIR_HOST)/var/run/dbus.pid" \
+ --with-dbus-daemondir="$(STAGIND_DIR)/host/bin" \
+ --with-system-socket="$(STAGING_DIR)/host/var/run/dbus/system_bus_socket" \
+ --with-system-pid-file="$(STAGING_DIR)/host/var/run/dbus.pid" \
--without-x \
- --libexecdir="$(STAGING_DIR_HOST)/lib/dbus-1"
+ --libexecdir="$(STAGING_DIR)/host/lib/dbus-1"
HOST_CONFIGURE_VARS+= \
ac_cv_have_abstract_sockets="yes" \
#
-# Copyright (C) 2013-2015 OpenWrt.org
+# Copyright (C) 2013-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=dump1090
-PKG_VERSION:=2015-11-22
+PKG_VERSION:=2016-02-25
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=git://github.com/mutability/dump1090.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=497f88fe1c597652aca23c1035ddb55a9f6c274d
+PKG_SOURCE_VERSION:=214bc0e587fa70b7206c094e10e62c88bf387322
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
endef
MAKE_FLAGS += \
- CFLAGS="$(TARGET_CFLAGS)"
+ CFLAGS="$(TARGET_CFLAGS)" \
+ UNAME=Linux
define Package/dump1090/install
$(INSTALL_DIR) $(1)/etc/init.d
option raw '0'
option net '1'
option modeac '0'
- option net_beast '0'
option net_only '0'
option net_bind_address ''
option net_http_port '8080'
option net_sbs_port ''
option net_bi_port ''
option net_bo_port ''
- option net_fatsv_port ''
option net_ro_size ''
option net_ro_interval ''
option net_heartbeat ''
option no_fix '0'
option no_crc_check '0'
option phase_enhance '0'
- option aggressive '0'
option mlat '0'
option stats '0'
option stats_range '0'
option stats_every ''
option onlyaddr '0'
option metric '0'
+ option hae '0'
option snip ''
option debug ''
option ppm ''
append_bool "$cfg" raw "--raw"
append_bool "$cfg" net "--net"
append_bool "$cfg" modeac "--modeac"
- append_bool "$cfg" net_beast "--net-beast"
append_bool "$cfg" net_only "--net-only"
append_arg "$cfg" net_bind_address "--net-bind-address"
append_arg "$cfg" net_http_port "--net-http-port"
append_arg "$cfg" net_sbs_port "--net-sbs-port"
append_arg "$cfg" net_bi_port "--net-bi-port"
append_arg "$cfg" net_bo_port "--net-bo-port"
- append_arg "$cfg" net_fatsv_port "net-fatsv-port"
append_arg "$cfg" net_ro_size "--net-ro-size"
append_arg "$cfg" net_ro_interval "--net-ro-interval"
append_arg "$cfg" net_heartbeat "--net-heartbeat"
append_bool "$cfg" no_fix "--no-fix"
append_bool "$cfg" no_crc_check "--no-crc-check"
append_bool "$cfg" phase_enhance "--phase-enhance"
- append_bool "$cfg" aggressive "--aggressive"
append_bool "$cfg" mlat "--mlat"
append_bool "$cfg" stats "--stats"
append_bool "$cfg" stats_range "--stats-range"
append_arg "$cfg" stats_every "--stats-every"
append_bool "$cfg" onlyaddr "--onlyaddr"
append_bool "$cfg" metric "--metric"
+ append_bool "$cfg" hae "--hae"
append_arg "$cfg" snip "--snip"
append_arg "$cfg" debug "--debug"
append_arg "$cfg" ppm "--ppm"
--- /dev/null
+#
+# Copyright (C) 2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=dvtm
+PKG_VERSION:=0.15
+PKG_RELEASE:=1
+
+PKG_SOURCE:=dvtm-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://www.brain-dump.org/projects/dvtm/
+PKG_MD5SUM:=887e162a3abe2ad8e86caefab20cdd63
+PKG_MAINTAINER:=Yunfan Jiang <jyf1987@gmail.com>
+
+PKG_LICENSE:=MIT/X
+PKG_LICENSE_FILES:=LICENSE
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/dvtm
+ SECTION:=utils
+ CATEGORY:=Utilities
+ DEPENDS:=+libncursesw
+ TITLE:=dynamic virtual terminal manager
+ URL:=http://www.brain-dump.org/projects/dvtm/
+endef
+
+define Package/dvtm/description
+ dvtm brings the concept of tiling window management, popularized by X11-window managers like dwm to the console. As a console window manager it tries to make it easy to work with multiple console based programs.
+endef
+
+define Package/dvtm/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/dvtm $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,dvtm))
--- /dev/null
+# udev package config
+
+menu "Configuration"
+ depends on PACKAGE_eudev
+
+config EUDEV_EXTRA_ata_id
+ bool "Install eudev ata_id callout"
+ default y
+ help
+ ata_id - udev callout to read product/serial number
+ from ATA drives
+
+config EUDEV_EXTRA_blkid
+ bool "Use blkid to identify block devices"
+ default y
+ help
+ blkid - make use of libblkid to identify block devices
+
+config EUDEV_EXTRA_cdrom_id
+ bool "Install eudev cdrom_id callout"
+ default y
+ help
+ cdrom_id - udev callout to determine the capabilities
+ of optical drives and media
+
+config EUDEV_EXTRA_collect
+ bool "Install eudev collect"
+ default n
+ help
+ Adds ID to the list governed by <checkpoint>
+
+config EUDEV_EXTRA_input_id
+ bool "Install input_id callout"
+ default y
+ help
+ input_id - udev callout to classify input devices
+
+config EUDEV_EXTRA_kmod
+ bool "Use kmod for loading kernel modules"
+ default n
+ help
+ kmod - make use of kmod to load kernel modules on demand
+
+config EUDEV_EXTRA_mtd_probe
+ bool "Install mtd_probe callout"
+ default y
+ help
+ mtd_probe - udev callout to probe mtd devices
+
+config EUDEV_EXTRA_rule_generator
+ bool "Install (legacy) eudev rule_generator"
+ default n
+ help
+
+config EUDEV_EXTRA_scsi_id
+ bool "Install eudev scsi_id callout"
+ default y
+ help
+ scsi_id - retrieve and generate a unique SCSI identifier
+
+config EUDEV_EXTRA_v4l_id
+ bool "Install eudev v4l_id callout"
+ default y
+ help
+ v4l_id - udev callout to identify Video4Linux devices
+
+
+endmenu
--- /dev/null
+#
+# Copyright (C) 2006-2008 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:=eudev
+PKG_VERSION:=3.1.5
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://dev.gentoo.org/~blueness/eudev/
+PKG_MD5SUM:=c4dace42deecede102b6c01904042acc
+PKG_LICENSE:=GPL-2.0
+
+include $(INCLUDE_DIR)/package.mk
+
+PKG_BUILD_DEPENDS:=gperf/host
+PKG_FIXUP:=autoreconf
+PKG_INSTALL=1
+
+define Package/eudev
+ SECTION:=base
+ CATEGORY:=Base system
+ TITLE:=Dynamic device management subsystem
+ URL:=https://wiki.gentoo.org/wiki/Project:Eudev
+ MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
+ MENU:=1
+ DEPENDS:=+librt +EUDEV_EXTRA_blkid:libblkid +EUDEV_EXTRA_kmod:libkmod
+ PROVIDES:=udev
+ CONFLICTS:=udev
+endef
+
+define Package/eudev/description
+udev allows Linux users to have a dynamic /dev directory and it
+provides the ability to have persistent device names.
+eudev is a fork of systemd-udev with the goal of obtaining better
+compatibility with existing software such as OpenRC and Upstart, older
+kernels, various toolchains and anything else required by users and
+various distributions.
+endef
+
+define Package/eudev/conffiles
+/etc/udev/udev.conf
+endef
+
+define Package/eudev/config
+ source "$(SOURCE)/Config.in"
+endef
+
+CONFIGURE_ARGS += \
+ --prefix=/usr --exec-prefix= --sysconfdir=/etc \
+ --libexecdir=/lib/udev --sbindir=/sbin \
+ --disable-hwdb --disable-introspection --disable-manpages \
+ --disable-selinux \
+ $(if $(CONFIG_EUDEV_EXTRA_blkid),--enable-blkid,--disable-blkid) \
+ $(if $(CONFIG_EUDEV_EXTRA_kmod),--enable-kmod,--disable-kmod)
+
+
+eudev-extra-lib-bin-$(CONFIG_EUDEV_EXTRA_ata_id) += ata_id
+
+eudev-extra-rules-$(CONFIG_EUDEV_EXTRA_blkid) += 60-persistent-storage.rules
+
+eudev-extra-lib-bin-$(CONFIG_EUDEV_EXTRA_cdrom_id) += cdrom_id
+eudev-extra-rules-$(CONFIG_EUDEV_EXTRA_cdrom_id) += 60-cdrom_id.rules
+
+eudev-extra-lib-bin-$(CONFIG_EUDEV_EXTRA_collect) += collect
+
+eudev-extra-rules-$(CONFIG_EUDEV_EXTRA_input_id) += 60-persistent-input.rules
+
+eudev-extra-lib-bin-$(CONFIG_EUDEV_EXTRA_mtd_probe) += mtd_probe
+eudev-extra-rules-$(CONFIG_EUDEV_EXTRA_mtd_probe) += 75-probe_mtd.rules
+
+eudev-extra-lib-bin-$(CONFIG_EUDEV_EXTRA_scsi_id) += scsi_id
+
+eudev-extra-lib-bin-$(CONFIG_EUDEV_EXTRA_v4l_id) += v4l_id
+eudev-extra-rules-$(CONFIG_EUDEV_EXTRA_v4l_id) += 60-persistent-v4l.rules
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/libudev.h $(1)/usr/include
+ $(INSTALL_DIR) $(1)/usr/share/pkgconfig
+ $(CP) $(PKG_INSTALL_DIR)/usr/share/pkgconfig/udev.pc $(1)/usr/share/pkgconfig
+ $(INSTALL_DIR) $(1)/lib
+ $(CP) $(PKG_INSTALL_DIR)/lib/libudev.so* $(1)/lib
+ $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+ $(CP) $(PKG_INSTALL_DIR)/lib/pkgconfig/libudev.pc $(1)/usr/lib/pkgconfig
+endef
+
+define Package/eudev/install
+ $(INSTALL_DIR) $(1)/etc/udev/rules.d
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/udev/udev.conf $(1)/etc/udev
+
+ $(INSTALL_DIR) $(1)/sbin
+ $(INSTALL_BIN) \
+ $(PKG_INSTALL_DIR)/usr/bin/udevadm \
+ $(PKG_INSTALL_DIR)/sbin/udevd \
+ $(1)/sbin
+
+ $(INSTALL_DIR) $(1)/lib/udev/rules.d
+ $(INSTALL_DATA) \
+ $(addprefix $(PKG_INSTALL_DIR)/lib/udev/rules.d/, \
+ $(eudev-extra-rules-y)) \
+ $(addprefix $(PKG_INSTALL_DIR)/lib/udev/rules.d/, \
+ 50-udev-default.rules \
+ 60-block.rules \
+ 60-drm.rules \
+ 60-evdev.rules \
+ 60-persistent-alsa.rules \
+ 60-persistent-storage-tape.rules \
+ 60-serial.rules \
+ 64-btrfs.rules \
+ 70-mouse.rules \
+ 75-net-description.rules \
+ 78-sound-card.rules \
+ 80-net-name-slot.rules) \
+ $(1)/lib/udev/rules.d
+
+ $(INSTALL_DIR) $(1)/lib
+ $(CP) $(PKG_INSTALL_DIR)/lib/libudev.so* $(1)/lib
+
+ $(INSTALL_DIR) $(1)/lib/udev
+ifneq ($(eudev-extra-lib-bin-y),)
+ $(INSTALL_BIN) \
+ $(addprefix $(PKG_INSTALL_DIR)/lib/udev/, \
+ $(eudev-extra-lib-bin-y)) \
+ $(1)/lib/udev/
+endif
+ifneq ($(eudev-extra-lib-data-y),)
+ $(INSTALL_DATA) \
+ $(addprefix $(PKG_INSTALL_DIR)/lib/udev/, \
+ $(eudev-extra-lib-data-y)) \
+ $(1)/lib/udev/
+endif
+endef
+
+$(eval $(call BuildPackage,eudev))
--- /dev/null
+Index: eudev-3.1.5/src/mtd_probe/mtd_probe.h
+===================================================================
+--- eudev-3.1.5.orig/src/mtd_probe/mtd_probe.h
++++ eudev-3.1.5/src/mtd_probe/mtd_probe.h
+@@ -18,6 +18,7 @@
+ */
+
+ #include <mtd/mtd-user.h>
++#include <stdint.h>
+
+ #include "macro.h"
+
--- /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:=evtest
+PKG_REV:=ab140a2dab1547f7deb5233be6d94a388cf08b26
+PKG_VERSION:=1.33
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=git://anongit.freedesktop.org/evtest
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_VERSION:=$(PKG_REV)
+
+PKG_MAINTAINER:=Pushpal Sidhu (psidhu@gateworks.com)
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=COPYING
+
+PKG_FIXUP:=autoreconf
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/autotools.mk
+
+define Package/evtest
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=Event Test Program
+endef
+
+define Package/evtest/description
+ Utility to test event driven devices such as keyboards and mice
+endef
+
+define Package/evtest/install
+ $(INSTALL_DIR) $(1)/sbin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/evtest $(1)/sbin/
+endef
+
+$(eval $(call BuildPackage,evtest))
#
-# Copyright (C) 2010-2015 OpenWrt.org
+# Copyright (C) 2010-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=flashrom
-PKG_VERSION:=0.9.8
-PKG_RELEASE:=5
+PKG_VERSION:=0.9.9
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://download.flashrom.org/releases
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_MD5SUM:=ac513076b63ab7eb411a7694bb8f6fda
+PKG_MD5SUM:=aab9c98925d9cfb5ffb28b67a6112530
PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_SOURCE_SUBDIR)
$(Package/flashrom/default)
TITLE+= (full)
DEPENDS+= \
- +(PACKAGE_flashrom&&(TARGET_x86||TARGET_x86_64)):dmidecode \
- +PACKAGE_flashrom:libftdi \
- +PACKAGE_flashrom:libusb-compat \
- +PACKAGE_flashrom:pciutils
+ +(TARGET_x86||TARGET_x86_64):dmidecode \
+ +libftdi1 \
+ +libusb-1.0 \
+ +libusb-compat \
+ +pciutils
VARIANT:=full
DEFAULT_VARIANT:=1
endef
$(Package/flashrom/default)
TITLE+= (pci)
DEPENDS+= \
- +(PACKAGE_flashrom-pci&&(TARGET_x86||TARGET_x86_64)):dmidecode \
- +PACKAGE_flashrom-pci:pciutils
+ +(TARGET_x86||TARGET_x86_64):dmidecode \
+ +pciutils
VARIANT:=pci
endef
$(Package/flashrom/default)
TITLE+= (usb)
DEPENDS+= \
- +PACKAGE_flashrom-usb:libftdi \
- +PACKAGE_flashrom-usb:libusb-compat
+ +libftdi1 \
+ +libusb-1.0 \
+ +libusb-compat
VARIANT:=usb
endef
FLASHROM_BASIC := yes
FLASHROM_FTDI := yes
FLASHROM_PCI := yes
+ FLASHROM_RAW := yes
FLASHROM_SERIAL := yes
FLASHROM_USB := yes
endif
FLASHROM_BASIC := yes
FLASHROM_FTDI := no
FLASHROM_PCI := yes
+ FLASHROM_RAW := yes
FLASHROM_SERIAL := no
FLASHROM_USB := no
endif
FLASHROM_BASIC := yes
FLASHROM_FTDI := no
FLASHROM_PCI := no
+ FLASHROM_RAW := no
FLASHROM_SERIAL := no
FLASHROM_USB := no
endif
FLASHROM_BASIC := yes
FLASHROM_FTDI := yes
FLASHROM_PCI := no
+ FLASHROM_RAW := no
FLASHROM_SERIAL := yes
FLASHROM_USB := yes
endif
$(eval $(call DefineProgrammer,FT2232_SPI,$(FLASHROM_FTDI)))
$(eval $(call DefineProgrammer,USBBLASTER_SPI,$(FLASHROM_FTDI)))
+# RAW
+$(eval $(call DefineConfig,RAW_ACCESS,$(FLASHROM_RAW)))
+$(eval $(call DefineProgrammer,RAYER_SPI,$(FLASHROM_RAW)))
+
# PCI
$(eval $(call DefineConfig,PCI,$(FLASHROM_PCI)))
$(eval $(call DefineProgrammer,INTERNAL,$(FLASHROM_PCI)))
-$(eval $(call DefineProgrammer,RAYER_SPI,$(FLASHROM_PCI)))
$(eval $(call DefineProgrammer,NIC3COM,$(FLASHROM_PCI)))
$(eval $(call DefineProgrammer,GFXNVIDIA,$(FLASHROM_PCI)))
$(eval $(call DefineProgrammer,SATASII,$(FLASHROM_PCI)))
$(eval $(call DefineProgrammer,PONY_SPI,$(FLASHROM_SERIAL)))
$(eval $(call DefineProgrammer,BUSPIRATE_SPI,$(FLASHROM_SERIAL)))
-# USB
-$(eval $(call DefineConfig,USB,$(FLASHROM_USB)))
+# USB0
+$(eval $(call DefineConfig,USB0,$(FLASHROM_USB)))
$(eval $(call DefineProgrammer,PICKIT2_SPI,$(FLASHROM_USB)))
-#$(eval $(call DefineProgrammer,DEDIPROG,$(FLASHROM_USB)))
+
+# USB1
+$(eval $(call DefineConfig,USB1,$(FLASHROM_USB)))
+$(eval $(call DefineProgrammer,CH341A_SPI,$(FLASHROM_USB)))
+$(eval $(call DefineProgrammer,DEDIPROG,$(FLASHROM_USB)))
--- /dev/null
+diff -uprN a/linux_spi.c b/linux_spi.c
+--- a/flash.h 2015-02-08 16:57:52.000000000 -0500
++++ b/flash.h 2016-01-08 20:09:51.599387507 -0500
+@@ -30,6 +30,7 @@
+ #include <stdio.h>
+ #include <stdint.h>
+ #include <stddef.h>
++#include <sys/io.h>
+ #include <stdbool.h>
+ #if IS_WINDOWS
+ #include <windows.h>
+
+++ /dev/null
-diff -uprN a/linux_spi.c b/linux_spi.c
---- a/linux_spi.c 2015-06-17 20:50:36.492963100 +0200
-+++ b/linux_spi.c 2015-06-17 20:50:00.444860800 +0200
-@@ -22,7 +22,7 @@
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
--#include <sys/fcntl.h>
-+#include <fcntl.h>
- #include <errno.h>
- #include <ctype.h>
- #include <unistd.h>
include $(TOPDIR)/rules.mk
PKG_NAME:=gammu
-PKG_VERSION:=1.36.8
+PKG_VERSION:=1.37.2
PKG_RELEASE:=1
PKG_SOURCE_URL:=http://dl.cihar.com/gammu/releases/
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_MD5SUM:=462d45f9fb359bd7931c288785028e2d
+PKG_MD5SUM:=c31bd4a81a447e98ea66797429b55281
PKG_MAINTAINER:=Vitaly Protsko <villy@sft.ru>
PKG_LICENCE:=GPL-2.0
define Build/InstallDev
mkdir -p $(1)/usr/include
- $(CP) -r $(PKG_INSTALL_DIR)/usr/include/gammu $(1)/usr/include/
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/gammu $(1)/usr/include/
mkdir -p $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib$(LIB_SUFFIX)/lib{Gammu*,gsmsd*} $(1)/usr/lib/
endef
config_get_bool item "$conf" enabled 0
[ $item = 0 ] && return
- echo -e "; dont edit. instead look into /etc/config/gammu\n[gammu]\n" > $conffile
+ echo -e "; don't edit. instead look into /etc/config/gammu\n[gammu]\n" > $conffile
config_get item "$conf" device
[ -z "$item" ] && return
include $(TOPDIR)/rules.mk
PKG_NAME:=gnupg
-PKG_VERSION:=1.4.19
-PKG_RELEASE:=1
+PKG_VERSION:=1.4.20
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=ftp://ftp.franken.de/pub/crypt/mirror/ftp.gnupg.org/gcrypt/gnupg \
ftp://ftp.gnupg.org/gcrypt/gnupg
-PKG_MD5SUM:=3af4ab5b3113b3e28d3551ecf9600785
+PKG_MD5SUM:=b7af897a041c03c8ad1c7c466b54d10d
PKG_LICENSE:=GPL-3.0
PKG_LICENSE_FILES:=COPYING
include $(INCLUDE_DIR)/package.mk
-define Package/gnupg
+define Package/gnupg/Default
SECTION:=utils
CATEGORY:=Utilities
DEPENDS:=+zlib +libncurses +libreadline
URL:=http://www.gnupg.org/
endef
+define Package/gnupg
+ $(call Package/gnupg/Default)
+ MENU:=1
+endef
+
+define Package/gnupg-utils
+ $(call Package/gnupg/Default)
+ DEPENDS:=gnupg +libcurl
+ TITLE:=Key management utilities for GnuPG
+endef
+
define Package/gnupg/description
GnuPG is GNU's tool for secure communication and data storage.
It can be used to encrypt data and to create digital signatures.
with PGP2 because it uses IDEA (which is patented worldwide).
endef
+define Package/gnupg-utils/description
+ Key management utilies for GnuPG.
+ This package is needed to import keys from a keyserver.
+endef
+
CONFIGURE_ARGS += \
--disable-rpath \
--disable-asm \
--disable-card-support \
--disable-agent-support \
--disable-bzip2 \
- --disable-exec \
--disable-ldap \
- --disable-hkp \
--disable-finger \
- --disable-ftp \
--disable-dns-srv \
- --enable-fake-curl \
--disable-regex \
MAKE_FLAGS += \
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gpg $(1)/usr/bin/
endef
+define Package/gnupg-utils/install
+ $(INSTALL_DIR) $(1)/usr/lib/gnupg
+ for file in gpgkeys_curl gpgkeys_hkp; do \
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/gnupg/$$$$file \
+ $(1)/usr/lib/gnupg/; \
+ done
+endef
+
$(eval $(call BuildPackage,gnupg))
+$(eval $(call BuildPackage,gnupg-utils))
PKG_NAME:=gpsd
PKG_VERSION:=3.15
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://download-mirror.savannah.gnu.org/releases/gpsd/
This package contains the libgps library.
endef
+SCONS_VARS += \
+ LINKFLAGS="$(TARGET_LDFLAGS)"
+
SCONS_OPTIONS += \
dbus_export=no \
tsip=no \
option device "/dev/ttyUSB0"
option port "2947"
option listen_globally "false"
- option enabled "true"
+ option enabled "false"
#
-# Copyright (C) 2010-2015 OpenWrt.org
+# Copyright (C) 2010-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=grep
-PKG_VERSION:=2.22
+PKG_VERSION:=2.24
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GNU/grep
-PKG_MD5SUM:=e1015e951a49a82b02e38891026ef5df
+PKG_MD5SUM:=f1c980134c04692a90078e87283074b6
PKG_LICENSE:=GPL-3.0
PKG_LICENSE_FILES:=COPYING
#
-# Copyright (C) 2014 OpenWrt.org
+# Copyright (C) 2014-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=hamlib
-PKG_VERSION:=1.2.15.3
-PKG_RELEASE:=3
-PKG_MD5SUM:=3cad8987e995a00e5e9d360e2be0eb43
+PKG_VERSION:=3.0.1
+PKG_RELEASE:=1
+PKG_MD5SUM:=451acb9f727ed706ae2f59ee3f0e03c7
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/hamlib
TITLE+= utilities
SECTION:=utils
CATEGORY:=Utilities
- DEPENDS:=+libpthread +libhamlib
+ DEPENDS:=+libhamlib
endef
define Package/hamlib/description
define Package/libhamlib
$(call Package/libhamlib/Default)
- DEPENDS:=+libusb-1.0 +libltdl
+ DEPENDS:=+libusb-1.0
MENU:=1
endef
This package contains the hamlib shared library.
endef
-define Package/hamlib-adat
- $(call Package/libhamlib/Default)
- TITLE:= for ADAT
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-alinco
- $(call Package/libhamlib/Default)
- TITLE:= for Alinco
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-amsat
- $(call Package/libhamlib/Default)
- TITLE:= for AMSAT
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-aor
- $(call Package/libhamlib/Default)
- TITLE:= for AOR
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-ars
- $(call Package/libhamlib/Default)
- TITLE:= for ARS
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-celestron
- $(call Package/libhamlib/Default)
- TITLE:= for Celestron
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-drake
- $(call Package/libhamlib/Default)
- TITLE:= for Drake
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-dummy
- $(call Package/libhamlib/Default)
- TITLE:= for dummy
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-easycomm
- $(call Package/libhamlib/Default)
- TITLE:= for EasyComm
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-flexradio
- $(call Package/libhamlib/Default)
- TITLE:= for FlexRadio
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-fodtrack
- $(call Package/libhamlib/Default)
- TITLE:= for FodTrack
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-gs232a
- $(call Package/libhamlib/Default)
- TITLE:= for GS-232A
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-heathkit
- $(call Package/libhamlib/Default)
- TITLE:= for Heathkit
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-icom
- $(call Package/libhamlib/Default)
- TITLE:= for ICOM
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-jrc
- $(call Package/libhamlib/Default)
- TITLE:= for JRC
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-kachina
- $(call Package/libhamlib/Default)
- TITLE:= for Kachina
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-kenwood
- $(call Package/libhamlib/Default)
- TITLE:= for Kenwood
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-kit
- $(call Package/libhamlib/Default)
- TITLE:= for kits
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-lowe
- $(call Package/libhamlib/Default)
- TITLE:= for Lowe
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-m2
- $(call Package/libhamlib/Default)
- TITLE:= for M2
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-pcr
- $(call Package/libhamlib/Default)
- TITLE:= for PCR
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-prm80
- $(call Package/libhamlib/Default)
- TITLE:= for PRM80
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-racal
- $(call Package/libhamlib/Default)
- TITLE:= for Racal
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-rft
- $(call Package/libhamlib/Default)
- TITLE:= for RFT
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-rotorez
- $(call Package/libhamlib/Default)
- TITLE:= for Rotor-EZ
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-rs
- $(call Package/libhamlib/Default)
- TITLE:= for R&S
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-sartek
- $(call Package/libhamlib/Default)
- TITLE:= for SARtek
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-skanti
- $(call Package/libhamlib/Default)
- TITLE:= for Skanti
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-spid
- $(call Package/libhamlib/Default)
- TITLE:= for SPID
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-tapr
- $(call Package/libhamlib/Default)
- TITLE:= for TAPR
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-tentec
- $(call Package/libhamlib/Default)
- TITLE:= for TenTec
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-ts7400
- $(call Package/libhamlib/Default)
- TITLE:= for TS-7400
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-tuner
- $(call Package/libhamlib/Default)
- TITLE:= for Video for Linux tuner
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-uniden
- $(call Package/libhamlib/Default)
- TITLE:= for Uniden
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-wj
- $(call Package/libhamlib/Default)
- TITLE:= for Watkins - Johnson
- DEPENDS:=libhamlib
-endef
-
-define Package/hamlib-yaesu
- $(call Package/libhamlib/Default)
- TITLE:= for Yaesu
- DEPENDS:=libhamlib
-endef
-
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/hamlib
$(CP) $(PKG_INSTALL_DIR)/usr/include/hamlib/*.h $(1)/usr/include/hamlib
endef
CONFIGURE_ARGS+= \
+ --disable-html-matrix \
+ --disable-winradio \
+ --without-readline \
--without-cxx-binding \
- --without-winradio \
- --without-rpc-backends \
--with-pic \
+CONFIGURE_VARS+= \
+ LIBUSB_LIBS="-lusb-1.0" \
+
define Package/hamlib/install
$(INSTALL_DIR) $(1)/usr/bin
$(CP) $(PKG_INSTALL_DIR)/usr/bin/{rig,rot}* $(1)/usr/bin/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libhamlib.so* $(1)/usr/lib/
endef
-define Package/hamlib-adat/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-adat.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-alinco/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-alinco.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-amsat/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-amsat.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-aor/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-aor.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-ars/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-ars.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-celestron/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-celestron.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-drake/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-drake.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-dummy/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-dummy.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-easycomm/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-easycomm.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-flexradio/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-flexradio.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-fodtrack/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-fodtrack.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-gs232a/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-gs232a.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-heathkit/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-heathkit.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-icom/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-icom.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-jrc/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-jrc.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-kachina/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-kachina.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-kenwood/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-kenwood.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-kit/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-kit.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-lowe/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-lowe.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-m2/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-m2.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-pcr/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-pcr.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-prm80/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-prm80.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-racal/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-racal.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-rft/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-rft.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-rotorez/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-rotorez.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-rs/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-rs.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-sartek/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-sartek.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-skanti/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-skanti.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-spid/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-spid.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-tapr/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-tapr.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-tentec/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-tentec.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-ts7400/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-ts7400.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-tuner/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-tuner.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-uniden/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-uniden.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-wj/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-wj.so* $(1)/usr/lib/hamlib
-endef
-
-define Package/hamlib-yaesu/install
- $(INSTALL_DIR) $(1)/usr/lib/hamlib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/hamlib/hamlib-yaesu.so* $(1)/usr/lib/hamlib
-endef
-
$(eval $(call BuildPackage,hamlib))
$(eval $(call BuildPackage,libhamlib))
-$(eval $(call BuildPackage,hamlib-adat))
-$(eval $(call BuildPackage,hamlib-alinco))
-$(eval $(call BuildPackage,hamlib-amsat))
-$(eval $(call BuildPackage,hamlib-aor))
-$(eval $(call BuildPackage,hamlib-ars))
-$(eval $(call BuildPackage,hamlib-celestron))
-$(eval $(call BuildPackage,hamlib-drake))
-$(eval $(call BuildPackage,hamlib-dummy))
-$(eval $(call BuildPackage,hamlib-easycomm))
-$(eval $(call BuildPackage,hamlib-flexradio))
-$(eval $(call BuildPackage,hamlib-fodtrack))
-$(eval $(call BuildPackage,hamlib-gs232a))
-$(eval $(call BuildPackage,hamlib-heathkit))
-$(eval $(call BuildPackage,hamlib-icom))
-$(eval $(call BuildPackage,hamlib-jrc))
-$(eval $(call BuildPackage,hamlib-kachina))
-$(eval $(call BuildPackage,hamlib-kenwood))
-$(eval $(call BuildPackage,hamlib-kit))
-$(eval $(call BuildPackage,hamlib-lowe))
-$(eval $(call BuildPackage,hamlib-m2))
-$(eval $(call BuildPackage,hamlib-pcr))
-$(eval $(call BuildPackage,hamlib-prm80))
-$(eval $(call BuildPackage,hamlib-racal))
-$(eval $(call BuildPackage,hamlib-rft))
-$(eval $(call BuildPackage,hamlib-rotorez))
-$(eval $(call BuildPackage,hamlib-rs))
-$(eval $(call BuildPackage,hamlib-sartek))
-$(eval $(call BuildPackage,hamlib-skanti))
-$(eval $(call BuildPackage,hamlib-spid))
-$(eval $(call BuildPackage,hamlib-tapr))
-$(eval $(call BuildPackage,hamlib-tentec))
-$(eval $(call BuildPackage,hamlib-ts7400))
-$(eval $(call BuildPackage,hamlib-tuner))
-$(eval $(call BuildPackage,hamlib-uniden))
-$(eval $(call BuildPackage,hamlib-wj))
-$(eval $(call BuildPackage,hamlib-yaesu))
-
+++ /dev/null
-Index: hamlib-1.2.15.3/configure.ac
-===================================================================
---- hamlib-1.2.15.3.orig/configure.ac 2012-11-01 22:27:27.000000000 +0100
-+++ hamlib-1.2.15.3/configure.ac 2014-06-15 09:34:25.557966205 +0200
-@@ -234,12 +234,12 @@
- "You need a C99 compliant C compiler that supports struct/array intializers."
- "Have you considered GCC lately?.")]);
-
--dnl libxml2 required rigmem xml support
--PKG_CHECK_MODULES([LIBXML2], [libxml-2.0],
-- [AC_DEFINE(HAVE_XML2,[1],[Define if libxml2 is available])],
-- [AC_MSG_WARN([libxml-2.0 pkg-config not found, XML support will be disabled])])
-+#dnl libxml2 required rigmem xml support
-+#PKG_CHECK_MODULES([LIBXML2], [libxml-2.0],
-+# [AC_DEFINE(HAVE_XML2,[1],[Define if libxml2 is available])],
-+# [AC_MSG_WARN([libxml-2.0 pkg-config not found, XML support will be disabled])])
- AC_SUBST(LIBXML2_LIBS)
- AC_SUBST(LIBXML2_CFLAGS)
-
- dnl Check if libgd-dev is installed, so we can enable rigmatrix
-
-@@ -406,7 +406,7 @@
- AM_CONDITIONAL(HAVE_USRP, test x"${cf_with_usrp}" = "xyes")
-
-
--PKG_CHECK_MODULES(LIBUSB, libusb >= 0.1, ,
-+PKG_CHECK_MODULES(LIBUSB, libusb >= 1.0, ,
- [AC_MSG_WARN([libusb pkg-config not found, USB backends will be disabled])])
- CFLAGS="${CFLAGS} ${LIBUSB_CFLAGS}"
- CXXFLAGS="${CXXFLAGS} ${LIBUSB_CFLAGS}"
+ u_int32_t textEncoding; /* hint for name conversions */
+ u_int32_t attrBlocks; /* cached count of attribute data blocks */
+
-+ /* Note: these start on double long (64 bit) boundry */
++ /* Note: these start on double long (64 bit) boundary */
+ HFSPlusForkData dataFork; /* size and block data for data fork */
+ HFSPlusForkData resourceFork; /* size and block data for resource fork */
+}PACKED_S;
+/*
+ HFSPlusAttrForkData
+ For larger attributes, whose value is stored in allocation blocks.
-+ If the attribute has more than 8 extents, there will be additonal
++ If the attribute has more than 8 extents, there will be additional
+ records (of type HFSPlusAttrExtents) for this attribute.
+*/
+struct HFSPlusAttrForkData {
PKG_VERSION:=3.1.2
PKG_RELEASE:=1
-PKG_SOURCE_URL:=http://dl.lm-sensors.org/i2c-tools/releases/
+PKG_SOURCE_URL:=http://dl.lm-sensors.org/i2c-tools/releases/ \
+ http://fossies.org/linux/misc/
+
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_MD5SUM:=7104a1043d11a5e2c7b131614eb1b962
include $(TOPDIR)/rules.mk
PKG_NAME:=joe
-PKG_VERSION:=4.1
+PKG_VERSION:=4.2
PKG_RELEASE:=1
PKG_SOURCE_URL:=@SF/joe-editor
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_MD5SUM:=b8c9ab4295e3208ddbbaa9c1141564f9
+PKG_MD5SUM:=0a70057cc4493320f9838822451857ef
PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_MAINTAINER:=Vitaly Protsko <villy@sft.ru>
PKG_LICENCE:=GPL-2.0
-
-asis
-nobackups
-nonotice
-assume_color
-assume_256color
-guess_non_utf8
+-guess_utf16
-guess_crlf
-guess_indent
-menu_above
-transpose
--joe_state
--restore
--mouse
+ -joe_state
-joexterm
+-brpaste
+-pastehack
+-restore
-search_prompting
-lmsg \i%k%T%W%I%X %n %m%y%R %M %x
--rmsg %S Row %r Col %c %t Ctrl-K H for help
+-rmsg %S Row %4r Col %3c
+-smsg ** Line %r Col %c Offset %o(0x%O) %e %a(0x%A) Width %w **
+-zmsg ** Line %r Col %c Offset %o(0x%O) **
+-xmsg \i Joe's Own Editor %v (%b) ** Type \bCtrl-K Q\b to exit or \bCtrl-K H\b for help **\i
+-aborthint ^C
+-helphint ^K H
-highlight
--istep 2
+-istep 4
- :include ftyperc
+:include ftyperc
:defmenu root
mode,"overwrite",rtn T Overtype %Zoverwrite%
-mode,"hex",rtn % % Hex edit mode
+mode,"hex",rtn ' Hex edit mode
mode,"autoindent",rtn I Autoindent %Zautoindent%
mode,"wordwrap",rtn W Word wrap %Zwordwrap%
mode,"tab",rtn D Tab width %Ztab%
mode,"lmargin",rtn L Left margin %Zlmargin%
mode,"rmargin",rtn R Right margin %Zrmargin%
-mode,"square",rtn X Rectangle mode %Zsquare%
+mode,"square",rtn X Column mode %Zsquare%
mode,"indentc",rtn % % Indent char %Zindentc%
mode,"istep",rtn % % Indent step %Zistep%
+menu,"indent",rtn = Indent select
mode,"highlight",rtn H Highlighting %Zhighlight%
-mode,"crlf",rtn Z CR-LF (MS-DOS) %Zcrlf%
+mode,"crlf",rtn Z CR-LF/MS-DOS %Zcrlf%
mode,"linums",rtn N Line numbers %Zlinums%
mode,"beep",rtn B Beep %Zbeep%
mode,"rdonly",rtn O Read only %Zrdonly%
- mode,"syntax",rtn Y Syntax
+mode,"syntax",rtn Y Syntax
mode,"encoding",rtn E Encoding
mode,"asis",rtn % % Meta chars as-is
mode,"language",rtn V Language
mode,"picture",rtn P picture %Zpicture%
+mode,"type",rtn F File type [%Ztype%]
menu,"more-options",rtn % % More options...
-:defmenu more-options
+:defmenu more-options menu,"root",rtn
menu,"^G",rtn % % ^G options
menu,"search",rtn % % search options
menu,"paragraph",rtn % % paragraph options
menu,"marking",rtn % % marking options
menu,"tab",rtn % % tab/indent options
-:defmenu menu
+:defmenu indent menu,"root",rtn
+mode,"istep",rtn,"1",rtn,mode,"indentc",rtn,"32",rtn,msg,"Indent step = 1, Indent character = 32",rtn 1 Space
+mode,"istep",rtn,"2",rtn,mode,"indentc",rtn,"32",rtn,msg,"Indent step = 2, Indent character = 32",rtn 2 Spaces
+mode,"istep",rtn,"3",rtn,mode,"indentc",rtn,"32",rtn,msg,"Indent step = 3, Indent character = 32",rtn 3 Spaces
+mode,"istep",rtn,"4",rtn,mode,"indentc",rtn,"32",rtn,msg,"Indent step = 4, Indent character = 32",rtn 4 Spaces
+mode,"istep",rtn,"5",rtn,mode,"indentc",rtn,"32",rtn,msg,"Indent step = 5, Indent character = 32",rtn 5 Spaces
+mode,"istep",rtn,"8",rtn,mode,"indentc",rtn,"32",rtn,msg,"Indent step = 8, Indent character = 32",rtn 8 Spaces
+mode,"istep",rtn,"10",rtn,mode,"indentc",rtn,"32",rtn,msg,"Indent step = 10, Indent character = 32",rtn 0 Ten
+mode,"istep",rtn,"1",rtn,mode,"indentc",rtn,"9",rtn,msg,"Indent step = 1, Indent character = 9",rtn T Tab
+
+:defmenu menu menu,"more-options",rtn
mode,"menu_explorer",rtn % % Menu explorer %Zmenu_explorer%
mode,"menu_above",rtn % % Menu position %Zmenu_above%
mode,"menu_jump",rtn % % Jump into menu %Zmenu_jump%
mode,"transpose",rtn % % Transpose menus %Ztranspose%
-:defmenu ^G
+:defmenu ^G menu,"more-options",rtn
+mode,"highlighter_context",rtn % % ^G uses highlighter context %Zhighlighter_context%
mode,"single_quoted",rtn % % ^G ignores '...' %Zsingle_quoted%
mode,"no_double_quoted",rtn % % ^G no ignore "..." %Zno_double_quoted%
mode,"c_comment",rtn % % ^G ignores /*...*/ %Zc_comment%
mode,"pound_comment",rtn % % ^G ignores #... %Zpound_comment%
mode,"vhdl_comment",rtn % % ^G ignores --... %Zvhdl_comment%
mode,"semi_comment",rtn % % ^G ignores ;... %Zsemi_comment%
-mode,"tex_comment",rtn % % ^G ignores %... %Ztex_comment%
+mode,"tex_comment",rtn % % ^G ignores %%... %Ztex_comment%
mode,"text_delimiters",rtn % % Text delimiters %Ztext_delimiters%
-:defmenu search
+:defmenu search menu,"more-options",rtn
mode,"icase",rtn % % Case insensitivity %Zicase%
mode,"wrap",rtn % % Search wraps %Zwrap%
mode,"search_prompting",rtn % % Search prompting %Zsearch_prompting%
mode,"csmode",rtn % % Continued search %Zcsmode%
-:defmenu paragraph
+:defmenu paragraph menu,"more-options",rtn
mode,"french",rtn % % French spacing %Zfrench%
mode,"flowed",rtn % % Flowed text %Zflowed%
mode,"cpara",rtn % % Paragraph indent chars %Zcpara%
+mode,"cnotpara",rtn % % Not-paragraph chars %Zcnotpara%
-:defmenu file
+:defmenu file menu,"more-options",rtn
mode,"restore",rtn % % Restore cursor %Zrestore%
mode,"guess_crlf",rtn % % Auto detect CR-LF %Zguess_crlf%
mode,"guess_indent",rtn % % Guess indent %Zguess_indent%
mode,"guess_non_utf8",rtn % % Guess non-UTF-8 %Zguess_non_utf8%
mode,"guess_utf8",rtn % % Guess UTF-8 %Zguess_utf8%
+mode,"guess_utf16",rtn % % Guess UTF-16 %Zguess_utf16%
mode,"force",rtn % % Force last NL %Zforce%
mode,"nobackup",rtn % % No backup %Znobackup%
-:defmenu global
+:defmenu global menu,"more-options",rtn
mode,"nolocks",rtn % % Disable locks %Znolocks%
mode,"nobackups",rtn % % Disable backups %Znobackups%
+mode,"nodeadjoe",rtn % % Disable DEADJOE %Znodeadjoe%
mode,"nomodcheck",rtn % % Disable mtime check %Znomodcheck%
mode,"nocurdir",rtn % % Disable current dir %Znocurdir%
mode,"exask",rtn % % Exit ask %Zexask%
mode,"undo_keep",rtn % % No. undo records %Zundo_keep%
mode,"backpath",rtn % % Path to backup files %Zbackpath%
-:defmenu cursor
+:defmenu cursor menu,"more-options",rtn
mode,"pg",rtn % % No. PgUp/PgDn lines %Zpg%
mode,"mid",rtn C Center on scroll %Zmid%
+mode,"left",rtn L Columns to scroll left %Zleft%
+mode,"right",rtn R Columns to scroll right %Zright%
mode,"floatmouse",rtn % % Click past end %Zfloatmouse%
mode,"rtbutton",rtn % % Right button %Zrtbutton%
-:defmenu marking
+:defmenu marking menu,"more-options",rtn
mode,"autoswap",rtn % % Autoswap mode %Zautoswap%
mode,"marking",rtn % % Marking %Zmarking%
mode,"lightoff",rtn % % Auto unmask %Zlightoff%
-:defmenu tab
+:defmenu tab menu,"more-options",rtn
mode,"smarthome",rtn % % Smart home key %Zsmarthome%
mode,"smartbacks",rtn % % Smart backspace %Zsmartbacks%
mode,"indentfirst",rtn % % To indent first %Zindentfirst%
mode,"spaces",rtn % % No tabs %Zspaces%
{Basic
-\i Help Screen \|turn off with ^KH more help with ESC . (^[.) \i
-\i \i\|\uCURSOR\u \|\uGO TO\u \|\uBLOCK\u \|\uDELETE\u \|\uMISC\u \|\uEXIT\u \|\i \i
-\i \i\|^B left ^F right \|^U prev. screen \|^KB begin \|^D char. \|^KJ reformat \|^KX save \|\i \i
-\i \i\|^P up ^N down \|^V next screen \|^KK end \|^Y line \|^KA center \|^C abort \|\i \i
-\i \i\|^Z previous word \|^A beg. of line \|^KM move \|^W >word \|^T options \|^KZ shell \|\i \i
-\i \i\|^X next word \|^E end of line \|^KC copy \|^O word< \|^R refresh \|\uFILE\u \|\i \i
-\i \i\|\uSEARCH\u \|^KU top of file \|^KW file \|^J >line \|\uSPELL\u \|^KE edit \|\i \i
-\i \i\|^KF find text \|^KV end of file \|^KY delete \|^_ undo \|^[N word \|^KR insert\|\i \i
-\i \i\|^L find next \|^KL to line No. \|^K/ filter \|^^ redo \|^[L file \|^KD save \|\i \i
-}
-
-{Windows
-\i Help Screen \|turn off with ^KH prev. screen ^[, next screen ^[. \i
-\i \i\|^KO Split the window in half \|^KE Load file into window \|\i \i
-\i \i\|^KG Make current window bigger \|^KT Make current window smaller \|\i \i
-\i \i\|^KN Go to the window below \|^KP Go to the window above \|\i \i
-\i \i\|^[V Switch to next buffer \|^[U Switch to previous buffer \|\i \i
-\i \i\|^C Eliminate the current window \|^KI Show all windows / Show one window\|\i \i
+ \|\uREGION\u \|\uGO TO\u \|\uGO TO\u \|\uDELETE\u \|\uEXIT\u \|\uSEARCH\u \|
+ \|\b^Arrow\b Select \|\b^Z\b Prev. word \|\b^U/^V\b PgUp/PgDn \|\b^D\b Char. \|\b^KX\b Save \|\b^KF\b Find \|
+ \|\b^KB\b Begin \|\b^X\b Next word \|\uMISC\u \|\b^Y\b Line \|\b^C\b Abort \|\b^L\b Next \|
+ \|\b^KK\b End \|\b^KU\b Top of file \|\b^KJ\b Paragraph \|\b^W\b >Word \|\b^KQ\b All \|\uHELP\u \|
+ \|\b^KC\b Copy \|\b^KV\b End of file \|\b^KA\b Center line \|\b^O\b Word< \|\uFILE\u \|\bEsc .\b Next\|
+ \|\b^KM\b Move \|\b^A\b Beg. of line \|\b^K Space\b Status \|\b^J\b >Line \|\b^KE\b Edit \|\bEsc ,\b Prev\|
+ \|\b^KW\b File \|\b^E\b End of line \|\uSPELL\u \|\b^[O\b Line< \|\b^KR\b Insert \|\b^KH\b Off \|
+ \|\b^KY\b Delete \|\b^KL\b To line no. \|\bEsc N\b Word \|\b^_\b Undo \|\b^KD\b Save \|\b^T\b Menu \|
+ \|\b^K/\b Filter \|\b^G\b Matching ( \|\bEsc L\b File \|\b^^\b Redo \|\b^K`\b Revert \|\b\b \|
}
{Advanced
-\i Help Screen \|turn off with ^KH prev. screen ^[, next screen ^[. \i
-\i \i\|\uMACROS\u \|\uMISC\u \|\uSCROLL\u \|\uSHELL\u \|\uGOTO\u \|\uI-SEARCH\u \|\i \i
-\i \i\|^K[ 0-9 Record \|^K SPACE status \|^[W Up \|^K' Window \|^[B To ^KB \|^[R Backwards\|\i \i
-\i \i\|^K] Stop \|^K\\ Repeat \|^[Z Down \|^[! Command \|^[K To ^KK \|^[S Forwards \|\i \i
-\i \i\|^K 0-9 Play \|\uINSERT\u \|^K< Left \|\uQUOTE\u \|\uDELETE\u \|\uBOOKMARKS\u \|\i \i
-\i \i\|^K? Query \|^] split line \|^K> Right \|^[' Ctrl- \|^[Y yank \|^[ 0-9 Goto \|\i \i
-\i \i\|^[D Dump \|^SPACE ins space\| \|^\\ Meta- \|^[O line< \|^[^[ Set \|\i \i
+ \|\uMACROS\u \|\uSCROLL\u \|\uWINDOW\u \|\uGO TO\u \|\uI-SEARCH\u \|
+ \|\b^K[ 0-9\b Record \|\bEsc W\b Up \|\b^KO\b Open \b^C\b Close \|\bEsc B\b / \bK\b \|\b^R\b Backwards \|
+ \|\b^K]\b Stop \|\bEsc Z\b Down \|\b^KG\b Grow \b^KT\b Shrink \|to \b^KB\b/\b^KK \b\|\b^S\b Forwards \|
+ \|\bEsc I\b Text \|\bEsc <\b Left \|\b^KN\b Next \b^KP\b Prev. \|\b^P\b Up \|\uBOOKMARKS\u \|
+ \|\b^K?\b Pause \|\bEsc >\b Right \|\b^KI\b Show one / All \|\b^N\b Down \|\bEsc 0-9\b Goto \|
+ \| for prompt \|\uINSERT\u \|\uSHELL\u \|\b^B\b Left \|\bEsc Esc\b Set \|
+ \|\b^K 0-9\b Play \|\b^]\b Line \b^Q\b Ctrl \|\bF1-F4\b Term emulator \|\b^F\b Right \|\b^K-\b Auto prev\|
+ \|\b^K\\\b Repeat \|\b^@\b Space \b^\\\b Meta \|\b^K'\b In buffer \| \|\b^K=\b Auto next\|
+ \|\bEsc D\b Dump \|\bEsc Y\b Paste \|\b^KZ\b Suspend \bEsc !\b Append \| \| \|
}
{Programs
-\i Help Screen \|turn off with ^KH prev. screen ^[, next screen ^[. \i
-\i \i\|\uGOTO\u \|\uINDENT\u \|\uCOMPILING\u \uQUICK\u \|\i \i
-\i \i\|^G Matching ( [ { \|^K, less \|^[C Compile & parse ^G find word under cursor \|\i \i
-\i \i\|^K- Previous place \|^K. more \|^[G Grep & parse ^[ENTER complete word \|\i \i
-\i \i\|^K= Next place \|\uFILE\u \|^[= To next error ^[Y paste deleted text \|\i \i
-\i \i\|^K; Tags file search \|^K ` \|^[- To prev. error ^[^Y cycle through deleted \|\i \i
-\i \i\| \| revert \|^[ SP Jump to error \|\i \i
+ \|\uCOMMANDS\u \|\uCOMPILING\u \|\uQUICK\u \|
+ \|\bEsc X\b Command prompt\|\bEsc C\b Save modified compile\|\b^G\b Find word under cursor \|
+ \|\bEsc M\b Calculator \|\bEsc G\b Grep \|\b^K;\b Tags file search \|
+ \|\bshowlog\b Startup log \|\bEsc =\b To next error \|\bEsc Enter\b Complete word \|
+ \|\bupper\b Change case \|\bEsc -\b To prev. error \|\uBUFFER\u \|
+ \|\blower\b Change case \|\bEsc Space\b Jump to error \|\bEsc U\b Next \|
+ \|\bcd\b Change dir \|\uINDENT\u \|\bEsc V\b Previous \|
+ \|\bkeymap\b Change map \|\b^K,\b Less \|\bEsc X bufed\b Switch \|
+ \| \|\b^K.\b More \| \|
}
{Search
-\i Help Screen \|turn off with ^KH prev. screen ^[, next screen ^[. \i
-\i \iSpecial search sequences: \|\i \i
-\i \i \\^ \\$ matches beg./end of line \\? match any single char \|\i \i
-\i \i \\< \\> matches beg./end of word \\* match 0 or more chars \|\i \i
-\i \i \\c matches balanced C expression \\\\ matches a \\ \|\i \i
-\i \i \\[..] matches one of a set \\n matches a newline \|\i \i
-\i \i \\+ matches 0 or more of the character which follows the \\+ \|\i \i
-\i \iSpecial replace sequences: \|\i \i
-\i \i \\& replaced with text which matched search string \|\i \i
-\i \i \\0 - 9 replaced with text which matched Nth \\*, \\?, \\c, \\+, or \\[..] \|\i \i
-\i \i \\\\ replaced with \\ \\n replaced with newline \|\i \i
+ Search sequences: \|
+ \b\\^ \\$\b matches beg./end of line \b\\.\b match any single char \|
+ \b\\< \\>\b matches beg./end of word \b\\!\b match char or expression \|
+ \b\\( \\)\b grouping \b\\|\b match left or right \|
+ \b\\[a-z]\b matches one of a set \b\\y \\Y\b short for (.*) / (!*) \|
+ \b\\{1,3}\b match 1 - 3 occurrences \b\\?\b match 0 or 1 occurrence \|
+ \b\\+\b match 1 or more occurrences \b\\*\b match 0 or more occurrences \|
+ \|
+ \b^C\b to abort \bEsc .\b to list of escape sequences \|
+}
+
+{Escape sequences
+ Escape sequences: \|
+ \b\\x{10fff}\b Unicode code point \b\\p{Ll}\b Unicode category \|
+ \b\\i\b / \b\\I\b Identifier start \b\\t\b tab \b\\e\b escape \|
+ \b\\c\b / \b\\C\b Identifier continue \b\\n\b newline \b\\r\b carriage return \|
+ \b\\d\b / \b\\D\b Digit / Not a digit \b\\b\b backspace \b\\xFF\b hex character \|
+ \b\\w\b / \b\\W\b Word / Not a word \b\\a\b alert \b\\377\b octal character \|
+ \b\\s\b / \b\\S\b Space / Not a space \b\\f\b formfeed \b\\\\\b backslash \|
+ \|
+ \|
+}
+
+{Replace
+ Replace sequences: \|
+ \b\\&\b replaced with entire match \b\\1\b - \b9\b replaced with Nth group \|
+ \b\\u \\l\b convert next to upper/lower \b\\U \\L\b case convert until \b\\E\b \|
+ \|
+ \|
+ \|
+ \|
+ \|
+ \b^C\b to abort \bEsc ,\b to list of escape sequences \|
}
{SearchOptions
-\i Help Screen \|turn off with ^KH prev. screen ^[, next screen ^[. \i
-\i \iSearch options: \|\i \i
-\i \i r Replace \|\i \i
-\i \i k Restrict search to highlighted block, which can be rectangular \|\i \i
-\i \i b Search backward instead of forward \|\i \i
-\i \i i Ignore case \|\i \i
-\i \i a Search across all loaded files \|\i \i
-\i \i e Search across all files in Grep or Compile error list \|\i \i
-\i \i w Wrap to beginning of file for this search \|\i \i
-\i \i n Do not wrap to beginning of file for this search \|\i \i
-\i \i nnn Perform exaclty nnn replacements \|\i \i
+ Search options: \|
+ \br\b Replace \bk\b Restrict search to highlighted block \|
+ \bi\b Ignore case \bb\b Search backwards instead of forwards \|
+ \ba\b Search across all loaded files \|
+ \be\b Search across all files in Grep or Compile error list \|
+ \bw\b / \bn\b Allow / prevent wrap to start of file \|
+ \bx\b / \by\b Search text is standard format / JOE format regular expression \|
+ \bnnn\b Perform exactly nnn replacements \|
+ \b^C\b to abort
}
{Math
-\i Help Screen \|turn off with ^KH prev. screen ^[, next screen ^[. \i
-\i \i \uCOMMANDS\u (hit ESC m for math) \uFUNCTIONS\u \|\i \i
-\i \i hex hex display mode sin cos tab asin acos atan \|\i \i
-\i \i dec decimal mode sinh cosh tanh asinh acosh atanh \|\i \i
-\i \i ins type result into file sqrt cbrt exp ln log \|\i \i
-\i \i eval evaluate block int floor ceil abs erg ergc \|\i \i
-\i \i 0xff enter number in hex joe(..macro..) - runs an editor macro \|\i \i
-\i \i 3e-4 floating point decimal \uBLOCK\u \|\i \i
-\i \i a=10 assign a variable sum cnt Sum, count \|\i \i
-\i \i 2+3:ins multiple commands avg dev Average, std. deviation \|\i \i
-\i \i e pi constants \uOPERATORS\u \|\i \i
-\i \i ans previous result ! ^ * / % + - < <= > >= == != && || ? :\|\i \i
+ \uMATH COMMANDS\u \uCONSTANTS\u \|
+ \bhex oct bin\b display mode \b0xff\b hex entry \|
+ \beng dec\b engineering / normal \b0o77\b octal entry \|
+ \bins\b type result into file \b0b11\b binary entry \|
+ \beval\b evaluate block \b3e-4\b floating point entry \|
+ 2+3\b:\bins multiple commands \uVARIABLES\u \|
+ \uOPERATORS\u \bans\b Previous result \|
+ \b! ^ * / % + -\b \ba=10\b Assign a variable \|
+ \b< <= > >= == != && || ? :\b \bEsc .\b for list of functions \|
}
-{Names
-\i Help Screen \|turn off with ^KH prev. screen ^[, next screen ^[. \i
-\i \i Hit TAB at file name prompts to generate menu of file names \|\i \i
-\i \i Or use up/down keys to access history of previously entered names \|\i \i
-\i \i Special file names: \|\i \i
-\i \i !command Pipe in/out of a shell command \|\i \i
-\i \i >>filename Append to a file \|\i \i
-\i \i - Read/Write to/from standard I/O \|\i \i
-\i \i filename,START,SIZE Read/Write a part of a file/device \|\i \i
-\i \i Give START/SIZE in decimal (255), octal (0377) or hex (0xFF) \|\i \i
+{Functions
+ \uFUNCTIONS\u \uCONSTANTS\u \|
+ \bsin cos tab asin acos atan\b \be pi\b \|
+ \bsinh cosh tanh asinh acosh atanh\b \|
+ \bsqrt cbrt exp ln log\b \|
+ \bint floor ceil abs\b \|
+ \berf erfc j0 j1 y0 y1\b \|
+ \bjoe(..macro..)\b - runs an editor macro \|
+ \|
+ \bEsc .\b for statistics \|
}
-{Joe
-\i Help Screen \|turn off with ^KH prev. screen ^[, next screen ^[. \i
-\i \i Send bug reports to: http://sourceforge.net/projects/joe-editor \|\i \i
-\i \i \|\i \i
-\i \i default joerc file is here /etc/joe/joerc \|\i \i
-\i \i default syntax and i18n files are here /usr/share/joe \|\i \i
-\i \i additional documentation can be found here /usr/share/doc/joe \|\i \i
+{Statistics
+ \uMATH COMMANDS\u \|
+ Statistics on region of numbers Linear regression on region of x y pairs \|
+ \bsum\b Sum \blr(x)\b Estimate y given x y=m*x+b \|
+ \bcnt\b Count \brlr(y)\b Estimate x given y \|
+ \bavg\b Mean \bLr rLr\b Logarithmic regression y=m*ln(x)+b \|
+ Standard deviation: \blR rlR\b Exponential regression y=e^(m*x)+b \|
+ \bdev\b all data present \bLR rLR\b Power regression y=b*x^m \|
+ \bsamp\b sample of data present Side effects: \bb\b, \bm\b: regression coef. \|
+ \br\b: correlation coef., \bcov\b: covariance \|
+}
+
+{Names
+ Hit TAB to complete names. Use up / down arrow keys to traverse history. \|
+ Special file names: \|
+ \b!\bcommand Pipe in/out of a shell command \|
+ \b>>\bfilename Append to a file \|
+ \b-\b Read/Write to/from standard I/O \|
+ filename\b,START,SIZE\b Read/Write a part of a file/device \|
+ Give START/SIZE in decimal (255), octal (0377) or hex (0xFF) \|
+ \b\\,\b Use backslash to quote special characters \|
+ \b^C\b to abort
}
{CharTable
-\i Help Screen \|turn off with ^KH prev. screen ^[, \i
-\i \i\| Dec \u 0123 4567 8901 2345 0123 4567 8901 2345 \u Dec \|\i \i
-\i \i\| | | \|\i \i
-\i \i\| 0 | \u@ABC\u \uDEFG\u \uHIJK\u \uLMNO\u \i\u@ABC\u\i \i\uDEFG\u\i \i\uHIJK\u\i \i\uLMNO\u\i | 128 \|\i \i
-\i \i\| 16 | \uPQRS\u \uTUVW\u \uXYZ[\u \u\\]^_\u \i\uPQRS\u\i \i\uTUVW\u\i \i\uXYZ[\u\i \i\u\\]^_\u\i | 144 \|\i \i
-\i \i\| 32 | !"# $%&' ()*+ ,-./ ¡¢£ ¤¥¦§ ¨©ª« ¬®¯ | 160 \|\i \i
-\i \i\| 48 | 0123 4567 89:; <=>? °±²³ ´µ¶· ¸¹º» ¼½¾¿ | 176 \|\i \i
-\i \i\| 64 | @ABC DEFG HIJK LMNO ÀÁÂÃ ÄÅÆÇ ÈÉÊË ÌÍÎÏ | 192 \|\i \i
-\i \i\| 80 | PQRS TUVW XYZ[ \\]^_ ÐÑÒÓ ÔÕÖ× ØÙÚÛ ÜÝÞß | 208 \|\i \i
-\i \i\| 96 | `abc defg hijk lmno àáâã äåæç èéêë ìíîï | 224 \|\i \i
-\i \i\| 112 | pqrs tuvw xyz{ |}~\7f ðñòó ôõö÷ øùúû üýþÿ | 240 \|\i \i
+ \| Dec \u 0123 4567 8901 2345 0123 4567 8901 2345 \u Dec \|
+ \| 0 | \u@ABC\u \uDEFG\u \uHIJK\u \uLMNO\u \i\u@ABC\u\i \i\uDEFG\u\i \i\uHIJK\u\i \i\uLMNO\u\i | 128 \|
+ \| 16 | \uPQRS\u \uTUVW\u \uXYZ[\u \u\\]^_\u \i\uPQRS\u\i \i\uTUVW\u\i \i\uXYZ[\u\i \i\u\\]^_\u\i | 144 \|
+ \| 32 | !"# $%&' ()*+ ,-./ ¡¢£ ¤¥¦§ ¨©ª« ¬X®¯ | 160 \|
+ \| 48 | 0123 4567 89:; <=>? °±²³ ´µ¶· ¸¹º» ¼½¾¿ | 176 \|
+ \| 64 | @ABC DEFG HIJK LMNO ÀÁÂÃ ÄÅÆÇ ÈÉÊË ÌÍÎÏ | 192 \|
+ \| 80 | PQRS TUVW XYZ[ \\]^_ ÐÑÒÓ ÔÕÖ× ØÙÚÛ ÜÝÞß | 208 \|
+ \| 96 | `abc defg hijk lmno àáâã äåæç èéêë ìíîï | 224 \|
+ \| 112 | pqrs tuvw xyz{ |}~\7f ðñòó ôõö÷ øùúû üýþÿ | 240 \|
+}
+
+{Joe
+ Send bug reports to: http://sourceforge.net/projects/joe-editor \|
+ \|
+ default joerc file is here @JOERC@/joerc \|
+ default syntax and i18n files are here @JOEDATA@ \|
+ additional documentation can be found here @JOEDOC@ \|
+ \|
+ \|
+ \|
+ \|
}
-:windows Bindings common to all windows
+:def recenter retype,arg,"top+height/2-line",rtn,upslide
+
+:windows
+type U+0 TO U+10FFFF
abort ^C
-abort ^K Q
-abort ^K ^Q
-abort ^K q
+ abort ^K Q
+ abort ^K ^Q
+ abort ^K q
+querysave,query,killjoe ^K Q
+querysave,query,killjoe ^K ^Q
+querysave,query,killjoe ^K q
arg ^K \
explode ^K I
explode ^K ^I
hprev ^[ ,
math ^[ m
math ^[ M
+ math ^[ ^M
msg ^[ h
msg ^[ H
msg ^[ ^H
pgdn .kN
pgdn ^V
pgdn ^[ [ 6 ~
+ pgdn ^# S
pgup .kP
pgup ^U
pgup ^[ [ 5 ~
+ pgup ^# T
play ^K 0 TO 9
prevw ^K P
prevw ^K ^P
prevw ^K p
query ^K ?
record ^K [
-retype ^R
+ retype ^R
+ recenter ^R
rtn ^M
shell ^K Z
shell ^K ^Z
shell ^K z
stop ^K ]
-
+ Mouse handling
defmdown MDOWN
defmup MUP
defmdrag MDRAG
defm3drag M3DRAG
xtmouse ^[ [ M
-
-if,"char==65",then,"it's an A",else,"it's not an a",endif ^[ q
+extmouse ^[ [ <
:main Text editing window
:inherit windows
-:def ispellfile filt,"cat >ispell.tmp;ispell ispell.tmp </dev/tty >/dev/tty;cat ispell.tmp;/bin/rm ispell.tmp",rtn,retype
-:def ispellword psh,nextword,markk,prevword,markb,filt,"cat >ispell.tmp;ispell ispell.tmp </dev/tty >/dev/tty;tr -d <ispell.tmp '\\012';/bin/rm ispell.tmp",rtn,retype,nextword
-
-:def aspellfile filt,"SPLTMP=ispell.tmp;cat >$SPLTMP;aspell --lang=",language,".",charset," -x -c $SPLTMP </dev/tty >/dev/tty;cat $SPLTMP;/bin/rm $SPLTMP",rtn,retype
-:def aspellword psh,nextword,markk,prevword,markb,filt,"SPLTMP=ispell.tmp;cat >$SPLTMP;aspell --lang=",language,".",charset," -x -c $SPLTMP </dev/tty >/dev/tty;tr -d <$SPLTMP '\\012';/bin/rm $SPLTMP",rtn,retype,nextword
-
-aspellfile ^[ l
-aspellword ^[ n
-
:def compile mwind!,mfit!,querysave,query,scratch,"* Build Log *",rtn,bof,markb,eof," ",markk,blkdel,build
-
:def grep_find mwind!,mfit!,scratch,"* Grep Log *",rtn,bof,markb,eof," ",markk,blkdel,grep
-:def man scratch,"* Man Page *",rtn,bof,markb,eof," ",markk,blkdel," ",ltarw,run,"man -P cat -S 2:3 "
+:def shell1 scratch_push,"* Startup Log *",rtn,scratch_push,"* Shell 1 *",rtn,vtbknd!,eof
+:def shell2 scratch_push,"* Startup Log *",rtn,scratch_push,"* Shell 2 *",rtn,vtbknd!,eof
+:def shell3 scratch_push,"* Startup Log *",rtn,scratch_push,"* Shell 3 *",rtn,vtbknd!,eof
+:def shell4 scratch_push,"* Startup Log *",rtn,scratch_push,"* Shell 4 *",rtn,vtbknd!,eof
+:def shell_clear psh,bof,markb,eof,markk,blkdel
+:def shell_parse parserr
+:def shell_gparse gparse
+:def shell_release release
+:def shell_math maths
+:def shell_abort abort
+:def shell_typemath txt,maths,"ins",rtn,rtn,txt,"\r",rtn,txt,quote,"d",rtn
+:def shell_rtn rtn
+:def shell_edit edit
+:def shell_dellin dellin
+:def shell_cd cd
+:def shell_pop popabort
+:def shell_markb markb
+:def shell_markk markk
paste ^[ ] 5 2 ;
-
+brpaste ^[ [ 2 0 0 ~
+brpaste_done ^[ [ 2 0 1 ~
insc ^[ [ 2 ~
insc ^[ [ L
-
delch ^[ [ 3 ~
-
pgup ^[ [ I
-
pgdn ^[ [ G
-
home ^[ [ 1 ~
home ^[ [ H
home ^[ O H
home ^[ [ 7 ~
-
+ home ^# SP A
eol ^[ [ 4 ~
eol ^[ [ F
eol ^[ O F
eol ^[ [ 8 ~
+ eol ^# SP @
rtarw,ltarw,begin_marking,rtarw,toggle_marking ^[ [ 1 ; 5 C
rtarw,ltarw,begin_marking,rtarw,toggle_marking ^[ [ 5 C
rtarw,ltarw,begin_marking,rtarw,toggle_marking ^[ O c
-
ltarw,rtarw,begin_marking,ltarw,toggle_marking ^[ [ 1 ; 5 D
ltarw,rtarw,begin_marking,ltarw,toggle_marking ^[ [ 5 D
+ ltarw,rtarw,begin_marking,ltarw,toggle_marking ^[ O D
ltarw,rtarw,begin_marking,ltarw,toggle_marking ^[ O d
-
uparw,dnarw,begin_marking,uparw,toggle_marking ^[ [ 1 ; 5 A
uparw,dnarw,begin_marking,uparw,toggle_marking ^[ [ 5 A
+ uparw,dnarw,begin_marking,uparw,toggle_marking ^[ O A
uparw,dnarw,begin_marking,uparw,toggle_marking ^[ O a
-
dnarw,uparw,begin_marking,dnarw,toggle_marking ^[ [ 1 ; 5 B
dnarw,uparw,begin_marking,dnarw,toggle_marking ^[ [ 5 B
+ dnarw,uparw,begin_marking,dnarw,toggle_marking ^[ O B
dnarw,uparw,begin_marking,dnarw,toggle_marking ^[ O b
blkdel,nmark ^[ [ 3 ; 5 -
yank ^[ [ 2 ; 5 -
yank ^[ [ 2 ; 5 ~
-
delbol ^[ o
delbol ^[ ^O
dnslide ^[ z
execmd ^[ ^X
finish ^[ ^I
finish ^[ ^M
-mwind,mfit,jump,bol ^[ SP
+mwind!,mfit,jump,bol ^[ SP
isrch ^[ s
isrch ^[ S
isrch ^[ ^S
+isrch ^S
notmod ^[ ~
mwind,mfit,prevw,nxterr ^[ =
parserr ^[ e
rsrch ^[ r
rsrch ^[ R
rsrch ^[ ^R
+retype,rsrch ^R
run ^[ !
tomarkb ^[ b
tomarkb ^[ ^B
yank ^[ y
yankpop ^[ ^Y
yank ^[ Y
-
insc ^@
-
+ bufed ^[ d
nbuf ^[ v
nbuf ^[ V
nbuf ^[ ^V
pbuf ^[ u
pbuf ^[ U
pbuf ^[ ^U
-
+ query ^[ q
+ byte ^[ n
+ col ^[ c
+ abortbuf ^[ k
+ ask ^[ a
+ bop ^[ p
+ bos ^[ x
+ copy ^[ ^W
+ dupw ^[ \
+ eop ^[ n
+ format ^[ j
+ markl ^[ l
+ nmark ^[ @
+ pop ^[ >
+ psh ^[ <
+ swap ^[ x
+ tomarkbk ^[ g
+ tos ^[ e
+ tw0 ^[ 0
+ tw1 ^[ 1
+ uarg ^[ u
+ yank ^[ ^Y
+ yapp ^[ w
quote8 ^\
+ quote `
quote ^[ '
quote ^Q
-
backs ^?
backs ^H
backw ^O
bof ^K U
bof ^K ^U
bof ^K u
+ bol .kh
+ bol ^A
+ bol ^# SP A
home .kh
home ^A
center ^K A
center ^K ^A
center ^K a
crawll ^K <
+crawll ^[ <
crawlr ^K >
+crawlr ^[ >
delch .kD
delch ^D
deleol ^J
dnarw ^N
dnarw ^[ O B
dnarw ^[ [ B
+ dnarw ^# B
edit ^K E
edit ^K ^E
edit ^K e
ffirst ^K ^F
ffirst ^K f
filt ^K /
+ finish ^K ^M
fnext ^L
fmtblk ^K J
fmtblk ^K ^J
groww ^K ^G
groww ^K g
insc .kI
+ insc ^@
insf ^K R
insf ^K ^R
insf ^K r
ltarw ^B
ltarw ^[ O D
ltarw ^[ [ D
+ ltarw ^# D
macros ^[ d
macros ^[ ^D
markb ^K B
markk ^K K
markk ^K ^K
markk ^K k
+ mode ^T
menu,"root",rtn ^T
nextpos ^K =
nextword ^X
rtarw ^F
rtarw ^[ O C
rtarw ^[ [ C
+ rtarw ^# C
run ^K !
save ^K D
save ^K S
splitw ^K ^O
splitw ^K o
stat ^K SP
+stat ^K ^@
tag ^K ;
tomatch ^G
undo ^_
uparw .ku
+ uparw ^# A
uparw ^P
uparw ^[ O A
uparw ^[ [ A
+shell1 ^[ [ 1 1 ~
+shell1 ^[ O P
+shell1 ^[ [ [ A
+shell1 .k1
+shell2 ^[ [ 1 2 ~
+shell2 ^[ O Q
+shell2 ^[ [ [ B
+shell2 .k2
+shell3 ^[ [ 1 3 ~
+shell3 ^[ O R
+shell3 ^[ [ [ C
+shell3 .k3
+shell4 ^[ [ 1 4 ~
+shell4 ^[ O S
+shell4 ^[ [ [ D
+shell4 .k4
:prompt Prompt windows
:inherit main
dnarw,eol ^N
dnarw,eol ^[ O B
dnarw,eol ^[ [ B
+ dnarw,eol ^# B
uparw,eol .ku
+ uparw,eol ^# A
uparw,eol ^P
uparw,eol ^[ O A
uparw,eol ^[ [ A
:menu Selection menus
:inherit windows
-pgupmenu ^[ [ I
-
-pgdnmenu ^[ [ G
-
-bolmenu ^[ [ 1 ~
-bolmenu ^[ [ H
-bolmenu ^[ O H
-bolmenu ^[ [ 7 ~
-
-eolmenu ^[ [ 4 ~
-eolmenu ^[ [ F
-eolmenu ^[ O F
-eolmenu ^[ [ 8 ~
-
+pgupmenu ^[ [ I
+pgdnmenu ^[ [ G
+bolmenu ^[ [ 1 ~
+bolmenu ^[ [ H
+bolmenu ^[ O H
+bolmenu ^[ [ 7 ~
+ bolmenu ^# SP A
+eolmenu ^[ [ 4 ~
+eolmenu ^[ [ F
+eolmenu ^[ O F
+eolmenu ^[ [ 8 ~
+ eolmenu ^# SP @
abort ^[ ^[
backsmenu ^?
backsmenu ^H
dnarwmenu ^N
dnarwmenu ^[ [ B
dnarwmenu ^[ O B
+ dnarwmenu ^# B
dnarwmenu MWDOWN
eofmenu ^K V
eofmenu ^K ^V
ltarwmenu ^B
ltarwmenu ^[ [ D
ltarwmenu ^[ O D
+ ltarwmenu ^# D
pgdnmenu .kN
pgdnmenu ^V
pgdnmenu ^[ [ 6 ~
+ pgdnmenu ^# S
pgupmenu .kP
pgupmenu ^U
pgupmenu ^[ [ 5 ~
+ pgupmenu ^# T
rtarwmenu .kr
rtarwmenu ^F
rtarwmenu ^[ [ C
+ rtarwmenu ^# C
rtarwmenu ^[ O C
rtn SP
rtn ^I
uparwmenu ^P
uparwmenu ^[ [ A
uparwmenu ^[ O A
+ uparwmenu ^# A
uparwmenu MWUP
defm2down M2DOWN
:query Single-key query window
:inherit windows
+:querya Single-key query window for quoting
+type U+0 TO U+10FFFF
+
+:querysr Search & replace query window
+type U+0 TO U+10FFFF
+
:shell Input to shell windows
:inherit main
-"\ 3" ^C Abort
-"\ 4" ^D Eof
-" " ^I Tab
-"\b" ^H Backspace
-"\r" ^M Return
-"\7f" ^? Backspace
+"\ 3" ^C
+"\ 4" ^D
+" " ^I
+"\b" ^H
+"\r" ^M
+"\7f" ^?
:vtshell Input to ANSI shell windows
:inherit main
"\e[C" .kr
"\e[D" \e [ D
"\e[D" .kl
-"\ 1" ^A BOL for bash
-"\ 3" ^C Abort
-"\ 4" ^D Eof
-"\ 5" ^E EOL for bash
-" " ^I Tab
-"\b" ^H Backspace
-"\r" ^M Return
-"\7f" ^? Backspace
+"\ 1" ^A
+"\ 3" ^C
+"\ 4" ^D
+"\ 5" ^E
+" " ^I
+"\b" ^H
+"\r" ^M
+"\7f" ^?
include $(TOPDIR)/rules.mk
PKG_NAME:=LVM2
-PKG_VERSION:=2.02.136
+PKG_VERSION:=2.02.150
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/releases
-PKG_MD5SUM:=f1ac794d1cf44e863a7fa614f4c28410
+PKG_MD5SUM:=4ec33d0914d870388f9020607e2d3998
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME).$(PKG_VERSION)
CATEGORY:=Libraries
TITLE:=The Linux Kernel Device Mapper userspace library
URL:=http://sourceware.org/dm/
- DEPENDS:=+kmod-dm +libpthread
+ DEPENDS:=+kmod-dm +libpthread +libuuid
endef
define Package/libdevmapper/description
--- a/lib/commands/toolcontext.c
+++ b/lib/commands/toolcontext.c
-@@ -1740,8 +1740,10 @@ struct cmd_context *create_toolcontext(u
+@@ -1747,8 +1747,10 @@ struct cmd_context *create_toolcontext(u
unsigned set_filters)
{
struct cmd_context *cmd;
#ifdef M_MMAP_MAX
mallopt(M_MMAP_MAX, 0);
-@@ -1777,7 +1779,7 @@ struct cmd_context *create_toolcontext(u
+@@ -1784,7 +1786,7 @@ struct cmd_context *create_toolcontext(u
/* FIXME Make this configurable? */
reset_lvm_errno(1);
/* Set in/out stream buffering before glibc */
if (set_buffering) {
/* Allocate 2 buffers */
-@@ -2160,7 +2162,7 @@ void destroy_toolcontext(struct cmd_cont
+@@ -2167,7 +2169,7 @@ void destroy_toolcontext(struct cmd_cont
if (cmd->libmem)
dm_pool_destroy(cmd->libmem);
if (is_valid_fd(STDIN_FILENO) &&
--- a/tools/lvmcmdline.c
+++ b/tools/lvmcmdline.c
-@@ -1741,6 +1741,7 @@ int lvm_split(char *str, int *argc, char
+@@ -1744,6 +1744,7 @@ int lvm_split(char *str, int *argc, char
/* Make sure we have always valid filedescriptors 0,1,2 */
static int _check_standard_fds(void)
{
int err = is_valid_fd(STDERR_FILENO);
if (!is_valid_fd(STDIN_FILENO) &&
-@@ -1767,6 +1768,12 @@ static int _check_standard_fds(void)
+@@ -1770,6 +1771,12 @@ static int _check_standard_fds(void)
strerror(errno));
return 0;
}
--- a/lib/mm/memlock.c
+++ b/lib/mm/memlock.c
-@@ -161,12 +161,15 @@ static void _allocate_memory(void)
+@@ -169,12 +169,15 @@ static void _allocate_memory(void)
* memory on free(), this is good enough for our purposes.
*/
while (missing > 0) {
inf = mallinfo();
if (hblks < inf.hblks) {
-@@ -176,9 +179,12 @@ static void _allocate_memory(void)
+@@ -184,9 +187,12 @@ static void _allocate_memory(void)
free(areas[area]);
_size_malloc_tmp /= 2;
} else {
if (area == max_areas && missing > 0) {
/* Too bad. Warn the user and proceed, as things are
-@@ -467,8 +473,13 @@ static void _lock_mem(struct cmd_context
+@@ -475,8 +481,13 @@ static void _lock_mem(struct cmd_context
* will not block memory locked thread
* Note: assuming _memlock_count_daemon is updated before _memlock_count
*/
include $(TOPDIR)/rules.mk
PKG_NAME:=lxc
-PKG_VERSION:=1.1.3
-PKG_RELEASE:=1
+PKG_VERSION:=1.1.5
+PKG_RELEASE:=2
PKG_LICENSE:=LGPL-2.1+ BSD-2-Clause GPL-2.0
PKG_MAINTAINER:=Luka Perkov <luka@openwrt.org>
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://linuxcontainers.org/downloads/lxc/
-PKG_MD5SUM:=197abb5a28ab0b689c737eb1951023fb
+PKG_MD5SUM:=dd9684dde0a58ed13f4f49c855b79a1a
PKG_BUILD_DEPENDS:=lua
PKG_BUILD_PARALLEL:=1
DEPENDS_APPLETS = +libpthread +libcap +liblxc
-DEPENDS_create = +lxc-configs +lxc-hooks +lxc-templates
+DEPENDS_create = +lxc-configs +lxc-hooks +lxc-templates +flock
+
DEPENDS_ls = +lxc-config
DEPENDS_top = +lxc-lua +luafilesystem @BROKEN
MENU:=1
endef
+define Package/lxc-auto
+ $(call Package/lxc/Default)
+ TITLE:= (initscript)
+ DEPENDS:=+lxc-start +lxc-stop
+endef
+
+define Package/lxc-auto/description
+ LXC is the userspace control package for Linux Containers, a lightweight
+ virtual system mechanism sometimes described as "chroot on steroids".
+ This package adds and initscript for starting and stopping the containers
+ on boot and shutdown.
+endef
+
+define Package/lxc-auto/conffiles
+/etc/config/lxc-auto
+endef
+
define Package/lxc/config
source "$(SOURCE)/Config.in"
endef
true
endef
+define Package/lxc-auto/install
+ $(INSTALL_DIR) $(1)/etc/config $(1)/etc/init.d
+ $(INSTALL_CONF) ./files/lxc-auto.config $(1)/etc/config/lxc-auto
+ $(INSTALL_BIN) ./files/lxc-auto.init $(1)/etc/init.d/lxc-auto
+endef
+
define Package/lxc-common/conffiles
/etc/lxc/default.conf
/etc/lxc/lxc.conf
$(eval $(call BuildPackage,liblxc))
$(eval $(call BuildPackage,lxc-lua))
$(eval $(call BuildPackage,lxc-init))
+$(eval $(call BuildPackage,lxc-auto))
$(foreach u,$(LXC_APPLETS_BIN),$(eval $(call GenPlugin,$(u),$(DEPENDS_APPLETS),"/usr/bin")))
$(foreach u,$(LXC_APPLETS_LIB),$(eval $(call GenPlugin,$(u),$(DEPENDS_APPLETS),"/usr/lib/lxc")))
$(foreach u,$(LXC_SCRIPTS),$(eval $(call GenPlugin,$(u),,"/usr/bin")))
--- /dev/null
+#config container
+ #option name container1
+ #option timeout 300
+ #list command '/bin/command --option'
+
--- /dev/null
+#!/bin/sh /etc/rc.common
+
+. /lib/functions.sh
+
+START=99
+STOP=00
+
+run_command() {
+ local command="$1"
+ $command
+}
+
+start_container() {
+ local cfg="$1"
+ local name
+
+ config_get name "$cfg" name
+ config_list_foreach "$cfg" command run_command
+ if [ -n "$name" ]; then
+ /usr/bin/lxc-start -n "$name"
+ fi
+}
+
+max_timeout=0
+
+stop_container() {
+ local cfg="$1"
+ local name timeout
+
+ config_get name "$cfg" name
+ config_get timeout "$cfg" timeout 300
+
+ if [ "$max_timeout" -lt "$timeout" ]; then
+ max_timeout=$timeout
+ fi
+
+ if [ -n "$name" ]; then
+ if [ "$timeout" = "0" ]; then
+ /usr/bin/lxc-stop -n "$name" &
+ else
+ /usr/bin/lxc-stop -n "$name" -t $timeout &
+ fi
+ fi
+}
+
+start() {
+ config_load lxc-auto
+ config_foreach start_container container
+}
+
+stop() {
+ config_load lxc-auto
+ config_foreach stop_container container
+ # ensure e.g. shutdown doesn't occur before maximum timeout on
+ # containers that are shutting down
+ if [ $max_timeout -gt 0 ]; then
+ sleep $max_timeout
+ fi
+}
+
--- a/src/lxc/utils.h
+++ b/src/lxc/utils.h
-@@ -44,11 +44,7 @@ extern char *get_rundir(void);
- extern const char *lxc_global_config_value(const char *option_name);
+@@ -41,11 +41,7 @@ extern int mkdir_p(const char *dir, mode
+ extern char *get_rundir(void);
/* Define getline() if missing from the C library */
-#ifndef HAVE_GETLINE
--- a/src/lxc/bdev.c
+++ b/src/lxc/bdev.c
-@@ -1936,3 +1936,3 @@ static int loop_mount(struct bdev *bdev)
+@@ -1939,7 +1939,7 @@ static int find_free_loopdev(int *retfd,
+
+ static int loop_mount(struct bdev *bdev)
{
- int lfd, ffd = -1, ret = -1;
+ int lfd = -1, ffd = -1, ret = -1;
struct loop_info64 lo;
-@@ -1974,3 +1974,3 @@ out:
+ char loname[100];
+
+@@ -1977,7 +1977,7 @@ out:
+ if (ffd > -1)
+ close(ffd);
if (ret < 0) {
- close(lfd);
+ if (lfd > -1) close(lfd);
bdev->lofd = -1;
+ }
+ return ret;
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=mc
-PKG_VERSION:=4.8.15
-PKG_RELEASE:=2
-PKG_MAINTAINER:=Dirk Brenken <dirk@brenken.org>
+PKG_VERSION:=4.8.16
+PKG_RELEASE:=1
+PKG_MAINTAINER:=Dirk Brenken <openwrt@brenken.org>
PKG_LICENSE:=GPL-3.0+
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://ftp.midnight-commander.org/
-PKG_MD5SUM:=7c1935433866fdf59a3c2d9b7dae81ad
+PKG_SHA256SUM:=bbbcbe3097d3160f865d24aa38ff122f1c59752b5ef153ca4ade5ac0f82b7020
PKG_BUILD_PARALLEL:=1
PKG_FIXUP:=autoreconf
---- a/lib/global.c
-+++ b/lib/global.c
-@@ -97,6 +97,7 @@ mc_global_t mc_global = {
- #endif /* !ENABLE_SUBSHELL */
-
- .shell = NULL,
-+ .shell_realpath = NULL,
-
- .xterm_flag = FALSE,
- .disable_x11 = FALSE,
---- a/lib/global.h
-+++ b/lib/global.h
-@@ -255,6 +255,7 @@ typedef struct
-
- /* The user's shell */
- char *shell;
-+ char *shell_realpath;
-
- /* This flag is set by xterm detection routine in function main() */
- /* It is used by function view_other_cmd() */
---- a/lib/mcconfig/paths.c
-+++ b/lib/mcconfig/paths.c
-@@ -84,6 +84,7 @@ static const struct
- /* data */
- { "skins", &mc_data_str, MC_SKINS_SUBDIR},
- { "fish", &mc_data_str, FISH_PREFIX},
-+ { "ashrc", &mc_data_str, "ashrc"},
- { "bashrc", &mc_data_str, "bashrc"},
- { "inputrc", &mc_data_str, "inputrc"},
- { "extfs.d", &mc_data_str, MC_EXTFS_DIR},
---- a/src/main.c
-+++ b/src/main.c
-@@ -87,6 +87,9 @@
- /*** file scope variables ************************************************************************/
-
- /*** file scope functions ************************************************************************/
-+
-+static char rp_shell[PATH_MAX];
-+
- /* --------------------------------------------------------------------------------------------- */
-
- static void
-@@ -118,6 +121,44 @@ check_codeset (void)
- }
-
- /* --------------------------------------------------------------------------------------------- */
-+/**
-+ * Get a system shell.
-+ *
-+ * @return newly allocated string with shell name
-+ */
-+
-+static char *
-+mc_get_system_shell (void)
-+{
-+ char *sh_str;
-+ /* 3rd choice: look for existing shells supported as MC subshells. */
-+ if (access ("/bin/bash", X_OK) == 0)
-+ sh_str = g_strdup ("/bin/bash");
-+ else if (access ("/bin/ash", X_OK) == 0)
-+ sh_str = g_strdup ("/bin/ash");
-+ else if (access ("/bin/dash", X_OK) == 0)
-+ sh_str = g_strdup ("/bin/dash");
-+ else if (access ("/bin/busybox", X_OK) == 0)
-+ sh_str = g_strdup ("/bin/busybox");
-+ else if (access ("/bin/zsh", X_OK) == 0)
-+ sh_str = g_strdup ("/bin/zsh");
-+ else if (access ("/bin/tcsh", X_OK) == 0)
-+ sh_str = g_strdup ("/bin/tcsh");
-+ /* No fish as fallback because it is so much different from other shells and
-+ * in a way exotic (even though user-friendly by name) that we should not
-+ * present it as a subshell without the user's explicit intention. We rather
-+ * will not use a subshell but just a command line.
-+ * else if (access("/bin/fish", X_OK) == 0)
-+ * mc_global.tty.shell = g_strdup ("/bin/fish");
-+ */
-+ else
-+ /* Fallback and last resort: system default shell */
-+ sh_str = g_strdup ("/bin/sh");
-+
-+ return sh_str;
-+}
-+
-+/* --------------------------------------------------------------------------------------------- */
-
- /** POSIX version. The only version we support. */
- static void
-@@ -126,9 +167,11 @@ OS_Setup (void)
- const char *shell_env;
- const char *datadir_env;
-
-+
- shell_env = getenv ("SHELL");
- if ((shell_env == NULL) || (shell_env[0] == '\0'))
- {
-+ /* 2nd choice: user login shell */
- struct passwd *pwd;
-
- pwd = getpwuid (geteuid ());
-@@ -136,13 +179,15 @@ OS_Setup (void)
- mc_global.tty.shell = g_strdup (pwd->pw_shell);
- }
- else
-+ /* 1st choice: SHELL environment variable */
- mc_global.tty.shell = g_strdup (shell_env);
-
- if ((mc_global.tty.shell == NULL) || (mc_global.tty.shell[0] == '\0'))
- {
- g_free (mc_global.tty.shell);
-- mc_global.tty.shell = g_strdup ("/bin/sh");
-+ mc_global.tty.shell = mc_get_system_shell ();
- }
-+ mc_global.tty.shell_realpath = mc_realpath (mc_global.tty.shell, rp_shell);
-
- /* This is the directory, where MC was installed, on Unix this is DATADIR */
- /* and can be overriden by the MC_DATADIR environment variable */
---- a/src/subshell.c
-+++ b/src/subshell.c
-@@ -114,6 +114,8 @@ enum
- static enum
- {
- BASH,
-+ ASH_BUSYBOX, /* BusyBox default shell (ash) */
-+ DASH, /* Debian variant of ash */
- TCSH,
- ZSH,
- FISH
-@@ -209,6 +211,7 @@ static void
- init_subshell_child (const char *pty_name)
- {
- char *init_file = NULL;
-+ char *putenv_str = NULL;
- pid_t mc_sid;
-
- (void) pty_name;
-@@ -257,32 +260,53 @@ init_subshell_child (const char *pty_nam
- switch (subshell_type)
- {
- case BASH:
-+ /* Do we have a custom init file ~/.local/share/mc/bashrc? */
- init_file = mc_config_get_full_path ("bashrc");
-
-+ /* Otherwise use ~/.bashrc */
- if (access (init_file, R_OK) == -1)
- {
- g_free (init_file);
- init_file = g_strdup (".bashrc");
- }
-
-- /* Make MC's special commands not show up in bash's history */
-- putenv ((char *) "HISTCONTROL=ignorespace");
-+ /* Make MC's special commands not show up in bash's history and also suppress
-+ * consecutive identical commands*/
-+ putenv ((char *) "HISTCONTROL=ignoreboth");
-
- /* Allow alternative readline settings for MC */
- {
- char *input_file = mc_config_get_full_path ("inputrc");
- if (access (input_file, R_OK) == 0)
- {
-- char *putenv_str = g_strconcat ("INPUTRC=", input_file, NULL);
-+ putenv_str = g_strconcat ("INPUTRC=", input_file, NULL);
- putenv (putenv_str);
-- g_free (putenv_str);
- }
- g_free (input_file);
- }
-
- break;
-
-- /* TODO: Find a way to pass initfile to TCSH and ZSH */
-+ case ASH_BUSYBOX:
-+ case DASH:
-+ /* Do we have a custom init file ~/.local/share/mc/ashrc? */
-+ init_file = mc_config_get_full_path ("ashrc");
-+
-+ /* Otherwise use ~/.profile */
-+ if (access (init_file, R_OK) == -1)
-+ {
-+ g_free (init_file);
-+ init_file = g_strdup (".profile");
-+ }
-+
-+ /* Put init file to ENV variable used by ash */
-+ putenv_str = g_strconcat ("ENV=", init_file, NULL);
-+ putenv (putenv_str);
-+ /* Do not use "g_free (putenv_str)" here, otherwise ENV will be undefined! */
-+
-+ break;
-+
-+ /* TODO: Find a way to pass initfile to TCSH, ZSH and FISH */
- case TCSH:
- case ZSH:
- case FISH:
-@@ -320,10 +344,6 @@ init_subshell_child (const char *pty_nam
- execl (mc_global.tty.shell, "bash", "-rcfile", init_file, (char *) NULL);
- break;
-
-- case TCSH:
-- execl (mc_global.tty.shell, "tcsh", (char *) NULL);
-- break;
--
- case ZSH:
- /* Use -g to exclude cmds beginning with space from history
- * and -Z to use the line editor on non-interactive term */
-@@ -331,8 +351,11 @@ init_subshell_child (const char *pty_nam
-
- break;
-
-+ case ASH_BUSYBOX:
-+ case DASH:
-+ case TCSH:
- case FISH:
-- execl (mc_global.tty.shell, "fish", (char *) NULL);
-+ execl (mc_global.tty.shell, mc_global.tty.shell, (char *) NULL);
- break;
-
- default:
-@@ -341,6 +364,7 @@ init_subshell_child (const char *pty_nam
-
- /* If we get this far, everything failed miserably */
- g_free (init_file);
-+ g_free (putenv_str);
- my_exit (FORK_FAILURE);
- }
-
-@@ -742,6 +766,171 @@ pty_open_slave (const char *pty_name)
- }
- #endif /* !HAVE_GRANTPT */
-
-+
-+/* --------------------------------------------------------------------------------------------- */
-+/**
-+ * Get a subshell type and store in subshell_type variable
-+ *
-+ * @return TRUE if subtype was gotten, FALSE otherwise
-+ */
-+
-+static gboolean
-+init_subshell_type (void)
-+{
-+ gboolean result = TRUE;
-+
-+ /* Find out what type of shell we have. Also consider real paths (resolved symlinks)
-+ * because e.g. csh might point to tcsh, ash to dash or busybox, sh to anything. */
-+
-+ if (strstr (mc_global.tty.shell, "/zsh") || strstr (mc_global.tty.shell_realpath, "/zsh")
-+ || getenv ("ZSH_VERSION"))
-+ /* Also detects ksh symlinked to zsh */
-+ subshell_type = ZSH;
-+ else if (strstr (mc_global.tty.shell, "/tcsh")
-+ || strstr (mc_global.tty.shell_realpath, "/tcsh"))
-+ /* Also detects csh symlinked to tcsh */
-+ subshell_type = TCSH;
-+ else if (strstr (mc_global.tty.shell, "/fish")
-+ || strstr (mc_global.tty.shell_realpath, "/fish"))
-+ subshell_type = FISH;
-+ else if (strstr (mc_global.tty.shell, "/dash")
-+ || strstr (mc_global.tty.shell_realpath, "/dash"))
-+ /* Debian ash (also found if symlinked to by ash/sh) */
-+ subshell_type = DASH;
-+ else if (strstr (mc_global.tty.shell_realpath, "/busybox"))
-+ {
-+ /* If shell is symlinked to busybox, assume it is an ash, even though theoretically
-+ * it could also be a hush (a mini shell for non-MMU systems deactivated by default).
-+ * For simplicity's sake we assume that busybox always contains an ash, not a hush.
-+ * On embedded platforms or on server systems, /bin/sh often points to busybox.
-+ * Sometimes even bash is symlinked to busybox (CONFIG_FEATURE_BASH_IS_ASH option),
-+ * so we need to check busybox symlinks *before* checking for the name "bash"
-+ * in order to avoid that case. */
-+ subshell_type = ASH_BUSYBOX;
-+ }
-+ else if (strstr (mc_global.tty.shell, "/bash") || getenv ("BASH"))
-+ /* If bash is not symlinked to busybox, it is safe to assume it is a real bash */
-+ subshell_type = BASH;
-+ else
-+ {
-+ mc_global.tty.use_subshell = FALSE;
-+ result = FALSE;
-+ }
-+ return result;
-+}
-+
-+/* --------------------------------------------------------------------------------------------- */
-+/**
-+ * Set up `precmd' or equivalent for reading the subshell's CWD.
-+ *
-+ * Attention! Never forget that these are *one-liners* even though the concatenated
-+ * substrings contain line breaks and indentation for better understanding of the
-+ * shell code. It is vital that each one-liner ends with a line feed character ("\n" ).
-+ *
-+ * @return initialized pre-command string
-+ */
-+
-+static void
-+init_subshell_precmd (char *precmd, size_t buff_size)
-+{
-+
-+ switch (subshell_type)
-+ {
-+ case BASH:
-+ g_snprintf (precmd, buff_size,
-+ " PROMPT_COMMAND='pwd>&%d; kill -STOP $$';\n", subshell_pipe[WRITE]);
-+ break;
-+
-+ case ASH_BUSYBOX:
-+ /* BusyBox ash needs a somewhat complicated precmd emulation via PS1, and it is vital
-+ * that BB be built with active CONFIG_ASH_EXPAND_PRMT, but this is the default anyway.
-+ *
-+ * A: This leads to a stopped subshell (=frozen mc) if user calls "ash" command
-+ * "PS1='$(pwd>&%d; kill -STOP $$)\\u@\\h:\\w\\$ '\n",
-+ *
-+ * B: This leads to "sh: precmd: not found" in sub-subshell if user calls "ash" command
-+ * "precmd() { pwd>&%d; kill -STOP $$; }; "
-+ * "PS1='$(precmd)\\u@\\h:\\w\\$ '\n",
-+ *
-+ * C: This works if user calls "ash" command because in sub-subshell
-+ * PRECMD is unfedined, thus evaluated to empty string - no damage done.
-+ * Attention: BusyBox must be built with FEATURE_EDITING_FANCY_PROMPT to
-+ * permit \u, \w, \h, \$ escape sequences. Unfortunately this cannot be guaranteed,
-+ * especially on embedded systems where people try to save space, so let's use
-+ * the dash version below. It should work on virtually all systems.
-+ * "precmd() { pwd>&%d; kill -STOP $$; }; "
-+ * "PRECMD=precmd; "
-+ * "PS1='$(eval $PRECMD)\\u@\\h:\\w\\$ '\n",
-+ */
-+ case DASH:
-+ /* Debian ash needs a precmd emulation via PS1, similar to BusyBox ash,
-+ * but does not support escape sequences for user, host and cwd in prompt.
-+ * Attention! Make sure that the buffer for precmd is big enough.
-+ *
-+ * We want to have a fancy dynamic prompt with user@host:cwd just like in the BusyBox
-+ * examples above, but because replacing the home directory part of the path by "~" is
-+ * complicated, it bloats the precmd to a size > BUF_SMALL (128).
-+ *
-+ * The following example is a little less fancy (home directory not replaced)
-+ * and shows the basic workings of our prompt for easier understanding:
-+ *
-+ * "precmd() { "
-+ * "echo \"$USER@$(hostname -s):$PWD\"; "
-+ * "pwd>&%d; "
-+ * "kill -STOP $$; "
-+ * "}; "
-+ * "PRECMD=precmd; "
-+ * "PS1='$($PRECMD)$ '\n",
-+ */
-+ g_snprintf (precmd, buff_size,
-+ "precmd() { "
-+ "if [ ! \"${PWD##$HOME}\" ]; then "
-+ "MC_PWD=\"~\"; "
-+ "else "
-+ "[ \"${PWD##$HOME/}\" = \"$PWD\" ] && MC_PWD=\"$PWD\" || MC_PWD=\"~/${PWD##$HOME/}\"; "
-+ "fi; "
-+ "echo \"$USER@openwrt:$MC_PWD\"; "
-+ "pwd>&%d; "
-+ "kill -STOP $$; "
-+ "}; " "PRECMD=precmd; " "PS1='$($PRECMD)$ '\n", subshell_pipe[WRITE]);
-+ break;
-+
-+ case ZSH:
-+ g_snprintf (precmd, buff_size,
-+ " precmd() { pwd>&%d; kill -STOP $$; }; "
-+ "PS1='%%n@%%m:%%~%%# '\n", subshell_pipe[WRITE]);
-+ break;
-+
-+ case TCSH:
-+ g_snprintf (precmd, buff_size,
-+ "set echo_style=both; "
-+ "set prompt='%%n@%%m:%%~%%# '; "
-+ "alias precmd 'echo $cwd:q >>%s; kill -STOP $$'\n", tcsh_fifo);
-+ break;
-+
-+ case FISH:
-+ /* We also want a fancy user@host:cwd prompt here, but fish makes it very easy to also
-+ * use colours, which is what we will do. But first here is a simpler, uncoloured version:
-+ * "function fish_prompt; "
-+ * "echo (whoami)@(hostname -s):(pwd)\\$\\ ; "
-+ * "echo \"$PWD\">&%d; "
-+ * "kill -STOP %%self; "
-+ * "end\n",
-+ *
-+ * TODO: fish prompt is shown when panel is hidden (Ctrl-O), but not when it is visible.
-+ * Find out how to fix this.
-+ */
-+ g_snprintf (precmd, buff_size,
-+ "function fish_prompt; "
-+ "echo (whoami)@(hostname -s):(set_color $fish_color_cwd)(pwd)(set_color normal)\\$\\ ; "
-+ "echo \"$PWD\">&%d; " "kill -STOP %%self; " "end\n", subshell_pipe[WRITE]);
-+ break;
-+
-+ default:
-+ break;
-+ }
-+}
-+
- /* --------------------------------------------------------------------------------------------- */
- /*** public functions ****************************************************************************/
- /* --------------------------------------------------------------------------------------------- */
-@@ -761,6 +950,7 @@ init_subshell (void)
- {
- /* This must be remembered across calls to init_subshell() */
- static char pty_name[BUF_SMALL];
-+ /* Must be considerably longer than BUF_SMALL (128) to support fancy shell prompts */
- char precmd[BUF_MEDIUM];
-
- switch (check_sid ())
-@@ -782,23 +972,8 @@ init_subshell (void)
-
- if (mc_global.tty.subshell_pty == 0)
- { /* First time through */
-- /* Find out what type of shell we have */
--
-- if (strstr (mc_global.tty.shell, "/zsh") || getenv ("ZSH_VERSION"))
-- subshell_type = ZSH;
-- else if (strstr (mc_global.tty.shell, "/tcsh"))
-- subshell_type = TCSH;
-- else if (strstr (mc_global.tty.shell, "/csh"))
-- subshell_type = TCSH;
-- else if (strstr (mc_global.tty.shell, "/bash") || getenv ("BASH"))
-- subshell_type = BASH;
-- else if (strstr (mc_global.tty.shell, "/fish"))
-- subshell_type = FISH;
-- else
-- {
-- mc_global.tty.use_subshell = FALSE;
-+ if (!init_subshell_type ())
- return;
-- }
-
- /* Open a pty for talking to the subshell */
-
-@@ -844,7 +1019,7 @@ init_subshell (void)
- return;
- }
- }
-- else /* subshell_type is BASH or ZSH */ if (pipe (subshell_pipe))
-+ else if (pipe (subshell_pipe)) /* subshell_type is BASH, ASH_BUSYBOX, DASH or ZSH */
- {
- perror (__FILE__ ": couldn't create pipe");
- mc_global.tty.use_subshell = FALSE;
-@@ -872,39 +1047,116 @@ init_subshell (void)
- init_subshell_child (pty_name);
- }
-
-- /* Set up 'precmd' or equivalent for reading the subshell's CWD */
-+ init_subshell_precmd (precmd, BUF_MEDIUM);
-+
-+ /* Set up `precmd' or equivalent for reading the subshell's CWD
-+ *
-+ * Attention! Never forget that these are *one-liners* even though the concatenated
-+ * substrings contain line breaks and indentation for better understanding of the
-+ * shell code. It is vital that each one-liner ends with a line feed character ("\n" ).
-+ */
-
- switch (subshell_type)
- {
- case BASH:
- g_snprintf (precmd, sizeof (precmd),
-- " PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND\n}'pwd>&%d;kill -STOP $$'\n",
-- subshell_pipe[WRITE]);
-+ " PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND\n}'pwd>&%d;kill -STOP $$'\n"
-+ "PS1='\\u@\\h:\\w\\$ '\n", subshell_pipe[WRITE]);
-+ break;
-+
-+ case ASH_BUSYBOX:
-+ /* BusyBox ash needs a somewhat complicated precmd emulation via PS1, and it is vital
-+ * that BB be built with active CONFIG_ASH_EXPAND_PRMT, but this is the default anyway.
-+ *
-+ * A: This leads to a stopped subshell (=frozen mc) if user calls "ash" command
-+ * "PS1='$(pwd>&%d; kill -STOP $$)\\u@\\h:\\w\\$ '\n",
-+ *
-+ * B: This leads to "sh: precmd: not found" in sub-subshell if user calls "ash" command
-+ * "precmd() { pwd>&%d; kill -STOP $$; }; "
-+ * "PS1='$(precmd)\\u@\\h:\\w\\$ '\n",
-+ *
-+ * C: This works if user calls "ash" command because in sub-subshell
-+ * PRECMD is unfedined, thus evaluated to empty string - no damage done.
-+ * Attention: BusyBox must be built with FEATURE_EDITING_FANCY_PROMPT to
-+ * permit \u, \w, \h, \$ escape sequences. Unfortunately this cannot be guaranteed,
-+ * especially on embedded systems where people try to save space, so let's use
-+ * the dash version below. It should work on virtually all systems.
-+ * "precmd() { pwd>&%d; kill -STOP $$; }; "
-+ * "PRECMD=precmd; "
-+ * "PS1='$(eval $PRECMD)\\u@\\h:\\w\\$ '\n",
-+ */
-+ case DASH:
-+ /* Debian ash needs a precmd emulation via PS1, similar to BusyBox ash,
-+ * but does not support escape sequences for user, host and cwd in prompt.
-+ * Attention! Make sure that the buffer for precmd is big enough.
-+ *
-+ * We want to have a fancy dynamic prompt with user@host:cwd just like in the BusyBox
-+ * examples above, but because replacing the home directory part of the path by "~" is
-+ * complicated, it bloats the precmd to a size > BUF_SMALL (128).
-+ *
-+ * The following example is a little less fancy (home directory not replaced)
-+ * and shows the basic workings of our prompt for easier understanding:
-+ *
-+ * "precmd() { "
-+ * "echo \"$USER@$(hostname -s):$PWD\"; "
-+ * "pwd>&%d; "
-+ * "kill -STOP $$; "
-+ * "}; "
-+ * "PRECMD=precmd; "
-+ * "PS1='$($PRECMD)$ '\n",
-+ */
-+ g_snprintf (precmd, sizeof (precmd),
-+ "precmd() { "
-+ "if [ ! \"${PWD##$HOME}\" ]; then "
-+ "MC_PWD=\"~\"; "
-+ "else "
-+ "[ \"${PWD##$HOME/}\" = \"$PWD\" ] && MC_PWD=\"$PWD\" || MC_PWD=\"~/${PWD##$HOME/}\"; "
-+ "fi; "
-+ "echo \"$USER@openwrt:$MC_PWD\"; "
-+ "pwd>&%d; "
-+ "kill -STOP $$; "
-+ "}; " "PRECMD=precmd; " "PS1='$($PRECMD)$ '\n", subshell_pipe[WRITE]);
- break;
-
- case ZSH:
- g_snprintf (precmd, sizeof (precmd),
-- " _mc_precmd(){ pwd>&%d;kill -STOP $$ }; precmd_functions+=(_mc_precmd)\n",
-- subshell_pipe[WRITE]);
-+ " _mc_precmd(){ pwd>&%d;kill -STOP $$ }; precmd_functions+=(_mc_precmd)\n"
-+ "PS1='%%n@%%m:%%~%%# '\n", subshell_pipe[WRITE]);
- break;
-
- case TCSH:
- g_snprintf (precmd, sizeof (precmd),
-- "set echo_style=both;"
-- "alias precmd 'echo $cwd:q >>%s;kill -STOP $$'\n", tcsh_fifo);
-+ "set echo_style=both; "
-+ "set prompt='%%n@%%m:%%~%%# '; "
-+ "alias precmd 'echo $cwd:q >>%s; kill -STOP $$'\n", tcsh_fifo);
- break;
-+
- case FISH:
- /* Use fish_prompt_mc function for prompt, if not present then copy fish_prompt to it. */
-+ /* We also want a fancy user@host:cwd prompt here, but fish makes it very easy to also
-+ * use colours, which is what we will do. But first here is a simpler, uncoloured version:
-+ * "function fish_prompt; "
-+ * "echo (whoami)@(hostname -s):(pwd)\\$\\ ; "
-+ * "echo \"$PWD\">&%d; "
-+ * "kill -STOP %%self; "
-+ * "end\n",
-+ *
-+ * TODO: fish prompt is shown when panel is hidden (Ctrl-O), but not when it is visible.
-+ * Find out how to fix this.
-+ */
- g_snprintf (precmd, sizeof (precmd),
- "if not functions -q fish_prompt_mc;"
- "functions -c fish_prompt fish_prompt_mc; end;"
-- "function fish_prompt; echo $PWD>&%d; fish_prompt_mc; kill -STOP %%self; end\n",
-+ "function fish_prompt;"
-+ "echo (whoami)@(hostname -s):(set_color $fish_color_cwd)(pwd)(set_color normal)\\$\\ ; "
-+ "echo \"$PWD\">&%d; fish_prompt_mc; kill -STOP %%self; end\n",
- subshell_pipe[WRITE]);
- break;
-
- default:
- break;
- }
-+
- write_all (mc_global.tty.subshell_pty, precmd, strlen (precmd));
-
- /* Wait until the subshell has started up and processed the command */
-@@ -1108,6 +1360,13 @@ subshell_name_quote (const char *s)
- quote_cmd_start = "(printf \"%b\" '";
- quote_cmd_end = "')";
- }
-+ /* TODO: When BusyBox printf is fixed, get rid of this "else if", see
-+ http://lists.busybox.net/pipermail/busybox/2012-March/077460.html */
-+ /* else if (subshell_type == ASH_BUSYBOX)
-+ {
-+ quote_cmd_start = "\"`echo -en '";
-+ quote_cmd_end = "'`\"";
-+ } */
- else
- {
- quote_cmd_start = "\"`printf \"%b\" '";
+--- a/src/subshell/common.c
++++ b/src/subshell/common.c
+@@ -849,7 +849,7 @@ init_subshell_precmd (char *precmd, size
+ "else "
+ "[ \"${PWD##$HOME/}\" = \"$PWD\" ] && MC_PWD=\"$PWD\" || MC_PWD=\"~/${PWD##$HOME/}\"; "
+ "fi; "
+- "echo \"$USER@$(hostname -s):$MC_PWD\"; "
++ "echo \"$USER@$HOSTNAME:$MC_PWD\"; "
+ "pwd>&%d; "
+ "kill -STOP $$; "
+ "}; " "PRECMD=precmd; " "PS1='$($PRECMD)$ '\n", subshell_pipe[WRITE]);
#
-# Copyright (C) 2015 OpenWrt.org
+# Copyright (C) 2015-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=mmc-utils
-PKG_VERSION=2015-05-01-$(PKG_SOURCE_VERSION)
+PKG_VERSION=2016-02-23-$(PKG_SOURCE_VERSION)
PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git
-PKG_SOURCE_VERSION:=d0b46442b50794217e53b2455c1344c548d9d088
+PKG_SOURCE_VERSION:=4af1749d23503c25f692a60f23d295d16ddcfb61
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
#
-# Copyright (C) 2007-2015 OpenWrt.org
+# Copyright (C) 2007-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=nano
-PKG_VERSION:=2.5.0
+PKG_VERSION:=2.5.3
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.5
-PKG_MD5SUM:=751ed96457017572bab15be18cb873ba
+PKG_SOURCE_URL:=@GNU/nano
+PKG_MD5SUM:=a04d77611422ab4b6a7b489650c7a793
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
OpenOCD provides on-chip programming and debugging support with a
layered architecture of JTAG interface and TAP support including:
-- (X)SVF playback to faciliate automated boundary scan and FPGA/CPLD
+- (X)SVF playback to facilitate automated boundary scan and FPGA/CPLD
programming;
- debug target support (e.g. ARM, MIPS): single-stepping,
breakpoints/watchpoints, gprof profiling, etc;
}
@@ -998,7 +997,6 @@ pgp_select_file(sc_card_t *card, const s
- /* This file ID is refered when importing key&certificate via pkcs15init, like above.
+ /* This file ID is referred when importing key&certificate via pkcs15init, like above.
* We pretend to successfully find this inexistent file. */
if (id == 0x4402 || id == 0x5f48) {
- priv->current = NULL;
define Package/$(PKG_NAME)/Default/description
OWFS is a suite of programs that designed to make the 1-wire bus and its
- devices easily accessible. The underlying priciple is to create a virtual
+ devices easily accessible. The underlying principle is to create a virtual
filesystem, with the unique ID being the directory, and the individual
properties of the device are represented as simple files that can be read
and written.
#
-# Copyright (C) 2007-2015 OpenWrt.org
+# Copyright (C) 2007-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=pciutils
-PKG_VERSION:=3.4.0
-PKG_RELEASE:=1
+PKG_VERSION:=3.4.1
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@KERNEL/software/utils/pciutils
-PKG_MD5SUM:=46674cdbf2f72e4cfef75fea1b1ec5c8
+PKG_MD5SUM:=e901d17fcc6850747f43efde4de3452b
PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
PKG_LICENSE:=GPL-2.0
CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include" \
PREFIX="/usr" \
HOST="$(GNU_TARGET_NAME)" \
+ HWDB="no" \
ZLIB="yes"
ifneq ($(CONFIG_USE_GLIBC),)
include $(TOPDIR)/rules.mk
PKG_NAME:=pcsc-lite
-PKG_VERSION:=1.8.14
+PKG_VERSION:=1.8.16
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=https://alioth.debian.org/frs/download.php/file/4138
-PKG_MD5SUM:=439b2c8892f502e39e5b8997a7ae01ed
+PKG_SOURCE_URL:=https://alioth.debian.org/frs/download.php/file/4164
+PKG_MD5SUM:=14a8ab01c225ba90f03d0720ad714c12
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=COPYING
endef
define Package/pps-tools/description
- Userland tools for GPS and DCF-77 Clock syncronization. PPS support in Kernel must be enabled.
+ Userland tools for GPS and DCF-77 Clock synchronization. PPS support in Kernel must be enabled.
endef
TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include
--- /dev/null
+#
+# Copyright (C) 2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=qemu
+PKG_VERSION:=2.5.0
+PKG_RELEASE:=1
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=http://wiki.qemu-project.org/download/
+PKG_SOURCE_MD5SUM:=f469f2330bbe76e3e39db10e9ac4f8db
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=LICENSE tcg/LICENSE
+PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/qemu-ga
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=QEMU Guest Agent
+ URL:=http://www.qemu.org
+ DEPENDS:=+glib2 +libpthread +libstdcpp +librt
+endef
+
+define Package/qemu-ga/description
+This package contains the QEMU Guest Agent daemon
+endef
+
+# QEMU configure script does not recognize these options
+CONFIGURE_ARGS:=$(filter-out \
+ --target=% \
+ --host=% \
+ --build=% \
+ --program-prefix=% \
+ --program-suffix=% \
+ --exec-prefix=% \
+ --disable-nls \
+ , $(CONFIGURE_ARGS))
+
+# Building qemu-ga alone does not require zlib
+CONFIGURE_ARGS+= \
+ --cross-prefix=$(TARGET_CROSS) \
+ --host-cc=$(HOSTCC) \
+ --target-list='' \
+ --disable-zlib-test \
+ --enable-guest-agent
+
+define Package/qemu-ga/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/qemu-ga $(1)/usr/bin
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/qemu-ga.init $(1)/etc/init.d/qemu-ga
+ $(INSTALL_DIR) $(1)/etc/hotplug.d/virtio-ports
+ $(INSTALL_BIN) ./files/virtio-ports.hotplug $(1)/etc/hotplug.d/virtio-ports/qemu-ga
+endef
+
+$(eval $(call BuildPackage,qemu-ga))
--- /dev/null
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2016 OpenWrt.org
+
+START=99
+USE_PROCD=1
+
+BIN=/usr/bin/qemu-ga
+
+start_service() {
+ procd_open_instance
+ procd_set_param command $BIN
+ procd_set_param respawn
+ procd_set_param stderr 1
+ procd_close_instance
+}
--- /dev/null
+#!/bin/sh
+# Copyright (C) 2016 OpenWrt.org
+
+[ "$SUBSYSTEM" = "virtio-ports" ] || exit 0
+
+syspath="/sys/$DEVPATH"
+name="$(cat "$syspath/name" 2>/dev/null)"
+[ -n "$name" ] || exit 0
+
+case "$ACTION" in
+ "add")
+ mkdir -p /dev/virtio-ports
+ ln -s "/dev/$DEVNAME" "/dev/virtio-ports/$name"
+ /etc/init.d/qemu-ga start
+ ;;
+ "del")
+ rm -f "/dev/virtio-ports/$name"
+ ;;
+esac
PKG_NAME:=rtl-sdr
PKG_VERSION:=0.5.3-20150608-$(PKG_SOURCE_VERSION)
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=git://git.osmocom.org/rtl-sdr.git
define Package/rtl-sdr/install
$(INSTALL_DIR) $(1)/usr/bin
$(CP) $(PKG_INSTALL_DIR)/usr/bin/rtl_* $(1)/usr/bin/
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) files/rtl_tcp.init $(1)/etc/init.d/rtl_tcp
+ $(INSTALL_DIR) $(1)/etc/config
+ $(INSTALL_CONF) files/rtl_tcp.config $(1)/etc/config/rtl_tcp
endef
define Package/librtlsdr/install
--- /dev/null
+config rtl_tcp main
+ option disabled '1'
+ option respawn '1'
+ option device_index ''
+ option address '0.0.0.0'
+ option port ''
+ option frequency ''
+ option gain ''
+ option samplerate ''
+ option buffers '8'
+ option num_linked_lists '8'
+ option ppm_error ''
--- /dev/null
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2016 OpenWrt.org
+
+START=90
+STOP=10
+USE_PROCD=1
+
+append_arg() {
+ local cfg="$1"
+ local var="$2"
+ local opt="$3"
+ local def="$4"
+ local val
+
+ config_get val "$cfg" "$var"
+ [ -n "$val" -o -n "$def" ] && procd_append_param command $opt "${val:-$def}"
+}
+
+append_bool() {
+ local cfg="$1"
+ local var="$2"
+ local opt="$3"
+ local def="$4"
+ local val
+
+ config_get_bool val "$cfg" "$var" "$def"
+ [ "$val" = 1 ] && procd_append_param command "$opt"
+}
+
+
+start_instance() {
+ local cfg="$1"
+ local aux
+
+ config_get_bool aux "$cfg" 'disabled' '0'
+ [ "$aux" = 1 ] && return 1
+
+ procd_open_instance
+
+ procd_set_param command /usr/bin/rtl_tcp
+ append_arg "$cfg" device_index "-d"
+ append_arg "$cfg" address "-a"
+ append_arg "$cfg" port "-p"
+ append_arg "$cfg" frequency "-f"
+ append_arg "$cfg" gain "-g"
+ append_arg "$cfg" samplerate "-s"
+ append_arg "$cfg" buffers "-b"
+ append_arg "$cfg" num_linked_lists "-n"
+ append_arg "$cfg" ppm_error "-P"
+
+ config_get_bool aux "$cfg" 'respawn' '0'
+ [ "$aux" = 1 ] && procd_set_param respawn
+
+ procd_close_instance
+}
+
+service_triggers() {
+ procd_add_reload_trigger "rtl_tcp"
+}
+
+start_service() {
+ config_load rtl_tcp
+ config_foreach start_instance rtl_tcp
+}
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PKG_NAME:=sane-backends
PKG_VERSION:=1.0.25
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://fossies.org/linux/misc \
https://alioth.debian.org/frs/download.php/file/4146/
depends on PACKAGE_sane-backends
prompt "Include all SANE backends (sane-backends-all)"
- comment "Modules"
+ comment "Backends"
$(foreach backend,$(SANE_BACKENDS), \
$(eval \
HIDDEN:=1
endef
-define Package/sane-backends/description
+define Package/sane-backends-all/description
$(call Package/sane-backends/Default/description)
.
Metapackage for selecting all SANE Backends
define Package/sane-daemon/conffiles
/etc/sane.d/saned.conf
+/etc/xinetd.d/sane-port
endef
define Package/sane-frontends/install
echo ""
dots=0
fi
- echo "Timeout occured, killing $NAME hardly."
+ echo "Timeout occurred, killing $NAME hardly."
kill -9 `ps $PSOPT | grep $NAME | grep -v grep | awk '{print $1}'` >/dev/null 2>&1
[ -f $PIDFILE ] && rm $PIDFILE
seconds=0
--- /dev/null
+config SQUASHFS_TOOLS_LZO_SUPPORT
+ depends on PACKAGE_squashfs-tools-mksquashfs || PACKAGE_squashfs-tools-unsquashfs
+ bool "Enable LZO support"
+ select PACKAGE_liblzo
+ default y
+
+config SQUASHFS_TOOLS_LZ4_SUPPORT
+ depends on PACKAGE_squashfs-tools-mksquashfs || PACKAGE_squashfs-tools-unsquashfs
+ bool "Enable LZ4 support"
+ select PACKAGE_liblz4
+ default y
+
+config SQUASHFS_TOOLS_XZ_SUPPORT
+ depends on PACKAGE_squashfs-tools-mksquashfs || PACKAGE_squashfs-tools-unsquashfs
+ bool "Enable XZ support"
+ select PACKAGE_liblzma
+ default y
--- /dev/null
+#
+# Copyright (C) 2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=squashfs-tools
+PKG_VERSION:=4.3
+PKG_RELEASE:=2
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=COPYING
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/plougher/squashfs-tools
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_VERSION:=9c1db6d13a51a2e009f0027ef336ce03624eac0d
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
+
+PKG_BUILD_PARALLEL:=1
+include $(INCLUDE_DIR)/package.mk
+
+define Package/squashfs-tools/Default
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=squashfs-tools
+ URL:=https://github.com/plougher/squashfs-tools
+ DEPENDS += +libpthread +zlib \
+ +SQUASHFS_TOOLS_LZO_SUPPORT:liblzo \
+ +SQUASHFS_TOOLS_LZ4_SUPPORT:liblz4 \
+ +SQUASHFS_TOOLS_XZ_SUPPORT:liblzma
+ MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
+endef
+
+define Package/squashfs-tools-mksquashfs
+ $(call Package/squashfs-tools/Default)
+ TITLE+= mksquashfs
+endef
+
+define Package/squashfs-tools-unsquashfs
+ $(call Package/squashfs-tools/Default)
+ TITLE+= unsquashfs
+endef
+
+define Package/squashfs-tools-unsquashfs/config
+ source "$(SOURCE)/Config.in"
+endef
+
+Build/Configure:=
+
+MAKE_FLAGS += \
+ XATTR_SUPPORT=
+
+ifneq ($(CONFIG_SQUASHFS_TOOLS_XZ_SUPPORT),)
+MAKE_FLAGS += XZ_SUPPORT=1
+endif
+
+ifneq ($(CONFIG_SQUASHFS_TOOLS_LZO_SUPPORT),)
+MAKE_FLAGS += LZO_SUPPORT=1
+endif
+
+ifneq ($(CONFIG_SQUASHFS_TOOLS_LZ4_SUPPORT),)
+MAKE_FLAGS += LZ4_SUPPORT=1
+endif
+
+define Build/Compile
+ $(MAKE) -C $(PKG_BUILD_DIR)/squashfs-tools \
+ CC="$(TARGET_CC)" \
+ $(MAKE_FLAGS) \
+ mksquashfs unsquashfs
+endef
+
+define Package/squashfs-tools-mksquashfs/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/squashfs-tools/mksquashfs $(1)/usr/sbin/mksquashfs
+endef
+
+define Package/squashfs-tools-unsquashfs/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/squashfs-tools/unsquashfs $(1)/usr/sbin/unsquashfs
+endef
+
+$(eval $(call BuildPackage,squashfs-tools-mksquashfs))
+$(eval $(call BuildPackage,squashfs-tools-unsquashfs))
--- /dev/null
+From a0c129760ca9bdc7e564ae2a508fac3799f9d39b Mon Sep 17 00:00:00 2001
+From: Alexandru Ardelean <aa@ocedo.com>
+Date: Wed, 6 Jan 2016 15:33:43 +0200
+Subject: [PATCH 1/2] squashfs-tools: with fnmatch.h compatibility with musl
+
+Signed-off-by: Alexandru Ardelean <aa@ocedo.com>
+---
+ squashfs-tools/action.c | 2 +-
+ squashfs-tools/fnmatch_compat.h | 32 ++++++++++++++++++++++++++++++++
+ squashfs-tools/mksquashfs.c | 2 +-
+ squashfs-tools/unsquashfs.c | 1 +
+ squashfs-tools/unsquashfs.h | 1 -
+ 5 files changed, 35 insertions(+), 3 deletions(-)
+ create mode 100644 squashfs-tools/fnmatch_compat.h
+
+diff --git a/squashfs-tools/action.c b/squashfs-tools/action.c
+index 35889a4..4b06ccb 100644
+--- a/squashfs-tools/action.c
++++ b/squashfs-tools/action.c
+@@ -31,7 +31,6 @@
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+-#include <fnmatch.h>
+ #include <pwd.h>
+ #include <grp.h>
+ #include <sys/wait.h>
+@@ -43,6 +42,7 @@
+ #include "mksquashfs.h"
+ #include "action.h"
+ #include "error.h"
++#include "fnmatch_compat.h"
+
+ /*
+ * code to parse actions
+diff --git a/squashfs-tools/fnmatch_compat.h b/squashfs-tools/fnmatch_compat.h
+new file mode 100644
+index 0000000..7b4afd8
+--- /dev/null
++++ b/squashfs-tools/fnmatch_compat.h
+@@ -0,0 +1,32 @@
++#ifndef FNMATCH_COMPAT
++#define FNMATCH_COMPAT
++/*
++ * Squashfs
++ *
++ * Copyright (c) 2015
++ * Phillip Lougher <phillip@squashfs.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * fnmatch_compat.h
++ */
++
++#include <fnmatch.h>
++
++#ifndef FNM_EXTMATCH
++#define FNM_EXTMATCH 0
++#endif
++
++#endif
+diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c
+index d221c35..4e7cbdd 100644
+--- a/squashfs-tools/mksquashfs.c
++++ b/squashfs-tools/mksquashfs.c
+@@ -46,7 +46,6 @@
+ #include <sys/mman.h>
+ #include <pthread.h>
+ #include <regex.h>
+-#include <fnmatch.h>
+ #include <sys/wait.h>
+ #include <limits.h>
+ #include <ctype.h>
+@@ -76,6 +75,7 @@
+ #include "read_fs.h"
+ #include "restore.h"
+ #include "process_fragments.h"
++#include "fnmatch_compat.h"
+
+ int delete = FALSE;
+ int fd;
+diff --git a/squashfs-tools/unsquashfs.c b/squashfs-tools/unsquashfs.c
+index 1323dd6..2428baa 100644
+--- a/squashfs-tools/unsquashfs.c
++++ b/squashfs-tools/unsquashfs.c
+@@ -30,6 +30,7 @@
+ #include "xattr.h"
+ #include "unsquashfs_info.h"
+ #include "stdarg.h"
++#include "fnmatch_compat.h"
+
+ #include <sys/sysinfo.h>
+ #include <sys/types.h>
+diff --git a/squashfs-tools/unsquashfs.h b/squashfs-tools/unsquashfs.h
+index ecd0bb4..0edbd25 100644
+--- a/squashfs-tools/unsquashfs.h
++++ b/squashfs-tools/unsquashfs.h
+@@ -40,7 +40,6 @@
+ #include <grp.h>
+ #include <time.h>
+ #include <regex.h>
+-#include <fnmatch.h>
+ #include <signal.h>
+ #include <pthread.h>
+ #include <math.h>
+--
+2.1.4
+
--- /dev/null
+From 0ea07a1b5ddb2f2fa1358b2c1b42bcf34bbf5ee2 Mon Sep 17 00:00:00 2001
+From: Alexandru Ardelean <aa@ocedo.com>
+Date: Wed, 6 Jan 2016 15:36:48 +0200
+Subject: [PATCH 2/2] pseudo.c: add explicit <stat.h> include
+
+Signed-off-by: Alexandru Ardelean <aa@ocedo.com>
+---
+ squashfs-tools/pseudo.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/squashfs-tools/pseudo.c b/squashfs-tools/pseudo.c
+index f85fe60..7a26bca 100644
+--- a/squashfs-tools/pseudo.c
++++ b/squashfs-tools/pseudo.c
+@@ -32,6 +32,7 @@
+ #include <stdlib.h>
+ #include <sys/types.h>
+ #include <sys/wait.h>
++#include <sys/stat.h>
+ #include <ctype.h>
+
+ #include "pseudo.h"
+--
+2.1.4
+
--- /dev/null
+From ac6268e843c43286eebff2a1052182c2393cdb2e Mon Sep 17 00:00:00 2001
+From: Roy Li <rongqing.li@windriver.com>
+Date: Mon, 14 Sep 2015 12:31:42 +0800
+Subject: [PATCH] mksquashfs.c: get inline functions work with both gnu11 and gnu89
+
+Upstream-Status: Pending
+
+After gcc upgraded to gcc5, and if the codes is compiled without optimization(-O0),
+and the below error will happen:
+
+| mksquashfs.o: In function `create_inode':
+| git/squashfs-tools/mksquashfs.c:897: undefined reference to `get_inode_no'
+| git/squashfs-tools/mksquashfs.c:960: undefined reference to `get_parent_no'
+| git/squashfs-tools/mksquashfs.c:983: undefined reference to `get_parent_no'
+| mksquashfs.o: In function `reader_read_process':
+| git/squashfs-tools/mksquashfs.c:2132: undefined reference to `is_fragment'
+| mksquashfs.o: In function `reader_read_file':
+| git/squashfs-tools/mksquashfs.c:2228: undefined reference to `is_fragment'
+| mksquashfs.o: In function `dir_scan':
+| git/squashfs-tools/mksquashfs.c:3101: undefined reference to `create_dir_entry'
+
+gcc5 defaults to -std=gnu11 instead of -std=gnu89, and it requires that exactly one C
+source file has the callable copy of the inline function. Consider the following
+program:
+
+ inline int
+ foo (void)
+ {
+ return 42;
+ }
+
+ int
+ main (void)
+ {
+ return foo ();
+ }
+
+The program above will not link with the C99 inline semantics, because no out-of-line
+function foo is generated. To fix this, either mark the function foo as static, or
+add the following declaration:
+ static inline int foo (void);
+
+more information refer to: https://gcc.gnu.org/gcc-5/porting_to.html;
+
+but the use of "extern inline" will lead to the compilation issue if gcc is not
+gcc5, as the commit in oe-core d0af30c92fde [alsa-lib: Change function type to
+"static __inline__"]
+ "extern __inline__ function()" is the inlined version that
+ can be used in this compilation unit, but there will be another
+ definition of this function somewhere, so compiler will not emit
+ any code for the function body. This causes problem in -O0,
+ where functions are never inlined, the function call is preserved,
+ but linker can't find the symbol, thus the error happens.
+
+so replace "inline" with "static inline" to make it work with both gnu11 and gnu89
+
+Signed-off-by: Roy Li <rongqing.li@windriver.com>
+---
+ squashfs-tools/mksquashfs.c | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c
+index d221c35..6bba1d2 100644
+--- a/squashfs-tools/mksquashfs.c
++++ b/squashfs-tools/mksquashfs.c
+@@ -828,13 +828,13 @@ char *subpathname(struct dir_ent *dir_ent)
+ }
+
+
+-inline unsigned int get_inode_no(struct inode_info *inode)
++static inline unsigned int get_inode_no(struct inode_info *inode)
+ {
+ return inode->inode_number;
+ }
+
+
+-inline unsigned int get_parent_no(struct dir_info *dir)
++static inline unsigned int get_parent_no(struct dir_info *dir)
+ {
+ return dir->depth ? get_inode_no(dir->dir_ent->inode) : inode_no;
+ }
+@@ -2027,7 +2027,7 @@ struct file_info *duplicate(long long file_size, long long bytes,
+ }
+
+
+-inline int is_fragment(struct inode_info *inode)
++static inline int is_fragment(struct inode_info *inode)
+ {
+ off_t file_size = inode->buf.st_size;
+
+@@ -2996,13 +2996,13 @@ struct inode_info *lookup_inode2(struct stat *buf, int pseudo, int id)
+ }
+
+
+-inline struct inode_info *lookup_inode(struct stat *buf)
++static inline struct inode_info *lookup_inode(struct stat *buf)
+ {
+ return lookup_inode2(buf, 0, 0);
+ }
+
+
+-inline void alloc_inode_no(struct inode_info *inode, unsigned int use_this)
++static inline void alloc_inode_no(struct inode_info *inode, unsigned int use_this)
+ {
+ if (inode->inode_number == 0) {
+ inode->inode_number = use_this ? : inode_no ++;
+@@ -3013,7 +3013,7 @@ inline void alloc_inode_no(struct inode_info *inode, unsigned int use_this)
+ }
+
+
+-inline struct dir_ent *create_dir_entry(char *name, char *source_name,
++static inline struct dir_ent *create_dir_entry(char *name, char *source_name,
+ char *nonstandard_pathname, struct dir_info *dir)
+ {
+ struct dir_ent *dir_ent = malloc(sizeof(struct dir_ent));
+@@ -3031,7 +3031,7 @@ inline struct dir_ent *create_dir_entry(char *name, char *source_name,
+ }
+
+
+-inline void add_dir_entry(struct dir_ent *dir_ent, struct dir_info *sub_dir,
++static inline void add_dir_entry(struct dir_ent *dir_ent, struct dir_info *sub_dir,
+ struct inode_info *inode_info)
+ {
+ struct dir_info *dir = dir_ent->our_dir;
+@@ -3047,7 +3047,7 @@ inline void add_dir_entry(struct dir_ent *dir_ent, struct dir_info *sub_dir,
+ }
+
+
+-inline void add_dir_entry2(char *name, char *source_name,
++static inline void add_dir_entry2(char *name, char *source_name,
+ char *nonstandard_pathname, struct dir_info *sub_dir,
+ struct inode_info *inode_info, struct dir_info *dir)
+ {
+@@ -3059,7 +3059,7 @@ inline void add_dir_entry2(char *name, char *source_name,
+ }
+
+
+-inline void free_dir_entry(struct dir_ent *dir_ent)
++static inline void free_dir_entry(struct dir_ent *dir_ent)
+ {
+ if(dir_ent->name)
+ free(dir_ent->name);
+@@ -3080,7 +3080,7 @@ inline void free_dir_entry(struct dir_ent *dir_ent)
+ }
+
+
+-inline void add_excluded(struct dir_info *dir)
++static inline void add_excluded(struct dir_info *dir)
+ {
+ dir->excluded ++;
+ }
+--
+1.9.1
+
include $(TOPDIR)/rules.mk
PKG_NAME:=sumo
-PKG_VERSION:=0.24.0
+PKG_VERSION:=0.25.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-src-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/sumo
-PKG_MD5SUM:=5522dffc71ecf636b02dc6bdea7e569d
+PKG_MD5SUM:=6bfc4e1ff37fe4ba5d481ddc40323529
PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
PKG_LICENSE:=GPL-3.0
include $(TOPDIR)/rules.mk
PKG_NAME:=tracertools
-PKG_VERSION:=20150916
+PKG_VERSION:=20160308
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/dangowrt/tracertools.git
-PKG_SOURCE_VERSION:=7dba3342fedfd04eb7b0d9941971726fde948ec0
+PKG_SOURCE_VERSION:=28d0bb9a10a0b56b4964e3256135cfd152075a59
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
#
-# 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:=triggerhappy
-PKG_VERSION:=0.3.4
+PKG_VERSION:=0.3.4-151001
PKG_REV:=7e5abc69f215678e93a6b999524981c8b40bdcd9
-PKG_RELEASE:=3
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=git://github.com/wertarbyte/triggerhappy
#
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=unrar
-PKG_VERSION:=5.3.8
+PKG_VERSION:=5.3.11
PKG_RELEASE:=1
PKG_SOURCE:=unrarsrc-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.rarlab.com/rar
-PKG_MD5SUM:=9aa9643e817187519e358be292185f6f
+PKG_MD5SUM:=4a29cc1b47ced82db11e06090a95ed51
PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
PKG_LICENSE:=UnRAR
PKG_NAME:=unzip
PKG_REV:=60
PKG_VERSION:=6.0
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)$(PKG_REV).tar.gz
PKG_SOURCE_URL:=@SF/infozip
define Build/Configure
endef
-TARGET_CFLAGS += -DNO_LCHMOD -DLARGE_FILE_SUPPORT
+TARGET_CFLAGS += \
+ -DNO_LCHMOD \
+ -DLARGE_FILE_SUPPORT \
+ -DUNICODE_WCHAR \
+ -DUNICODE_SUPPORT \
+ -DUTF8_MAYBE_NATIVE \
+ -DZIP64_SUPPORT
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) -f unix/Makefile unzips \
define Package/unzip/install
$(INSTALL_DIR) $(1)/usr/bin/
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
+ $(INSTALL_BIN) \
+ $(PKG_INSTALL_DIR)/usr/bin/{funzip,unzip,unzipsfx,zipgrep} \
+ $(1)/usr/bin/
+ $(LN) unzip $(1)/usr/bin/zipinfo
endef
$(eval $(call BuildPackage,unzip))
PKG_NAME:=usbmuxd
PKG_VERSION:=1.1.1
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE_PROTO:=git
PKG_MAINTAINER:=Lukasz Baj <l.baj@radytek.com>
PKG_SOURCE_URL:=https://github.com/libimobiledevice/usbmuxd.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=4bd7cd0d28e7f5920de51470b863f3aeee00409d
+PKG_SOURCE_VERSION:=35e5d48f29ae03b2b9686109e4ed9ab8b9677ce8
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_FIXUP:=autoreconf
endef
define Package/watchcat/description
-Allows to configure a periodically reboot, or after loosing internet connectivity. Configured trough UCI /etc/config/system.
+Allows to configure a periodically reboot, or after losing internet connectivity. Configured trough UCI /etc/config/system.
endef
define Package/watchcat/conffiles
load_watchcat() {
config_get period $1 period
- config_get mode $1 mode "allways"
+ config_get mode $1 mode "always"
config_get pinghosts $1 pinghosts "8.8.8.8"
config_get pingperiod $1 pingperiod
config_get forcedelay $1 forcedelay "0"
+ # Fix potential typo in mode (backward compatibility).
+ [ "$mode" = "allways" ] && mode="always"
+
error=""
timetoseconds "$period"
period="$seconds"
[ "$period" -ge 1 ] \
|| append_string "error" 'period is not a valid time value (ex: "30"; "4m"; "6h"; "2d")' "; "
- [ "$mode" = "allways" -o "$mode" = "ping" ] \
- || append_string "error" "mode must be 'allways' or 'ping'" "; "
- [ -n "$pinghosts" -o "$mode" = "allways" ] \
+ [ "$mode" = "always" -o "$mode" = "ping" ] \
+ || append_string "error" "mode must be 'always' or 'ping'" "; "
+ [ -n "$pinghosts" -o "$mode" = "always" ] \
|| append_string "error" "pinghosts must be set when in 'ping' mode" "; "
[ "$mode" = "ping" ] && {
if [ -n "$pingperiod" ]
pingperiod="$((period/20))"
fi
}
- [ "$pingperiod" -lt "$period" -o "$mode" = "allways" ] \
+ [ "$pingperiod" -lt "$period" -o "$mode" = "always" ] \
|| append_string "error" "pingperiod is not recognized" "; "
[ "$forcedelay" -ge 0 ] \
|| append_string "error" "forcedelay must be a integer greater or equal than 0, where 0 means disabled" "; "
[ -n "$error" ] && { logger -p user.err -t "watchcat" "reboot program $1 not started - $error"; return; }
- if [ "$mode" = "allways" ]
+ if [ "$mode" = "always" ]
then
- /usr/bin/watchcat.sh "allways" "$period" "$forcedelay" &
- logger -p user.info -t "wathchat" "started task (mode=$mode;period=$period;forcedelay=$forcedelay)"
+ /usr/bin/watchcat.sh "always" "$period" "$forcedelay" &
+ logger -p user.info -t "watchcat" "started task (mode=$mode;period=$period;forcedelay=$forcedelay)"
else
/usr/bin/watchcat.sh "period" "$period" "$forcedelay" "$pinghosts" "$pingperiod" &
- logger -p user.info -t "wathchat" "started task (mode=$mode;period=$period;pinghosts=$pinghosts;pingperiod=$pingperiod;forcedelay=$forcedelay)"
+ logger -p user.info -t "watchcat" "started task (mode=$mode;period=$period;pinghosts=$pinghosts;pingperiod=$pingperiod;forcedelay=$forcedelay)"
fi
echo $! >> "${PIDFILE}.pids"
mode="$1"
+# Fix potential typo in mode (backward compatibility).
+[ "$mode" = "allways" ] && mode="always"
+
shutdown_now() {
local forcedelay="$1"
}
}
-watchcat_allways() {
+watchcat_always() {
local period="$1"; local forcedelay="$2"
sleep "$period" && shutdown_now "$forcedelay"
done
}
- if [ "$mode" = "allways" ]
+ if [ "$mode" = "always" ]
then
- watchcat_allways "$2" "$3"
+ watchcat_always "$2" "$3"
else
watchcat_ping "$2" "$3" "$4" "$5"
fi
#
# Copyright (C) 2010-2014 OpenWrt.org
# Copyright (C) 2010 segal.di.ubi.pt
+# Copyright (C) 2016 Karol Babioch <karol@babioch.de>
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PKG_NAME:=wifitoggle
PKG_VERSION:=1
-PKG_RELEASE:=4
+PKG_RELEASE:=5
PKG_LICENSE:=GPL-2.0+
PKG_MAINTAINER:=Nuno Goncalves <nunojpg@gmail.com>
option persistent '0'
option timer '600'
- option led_sysfs 'wrt160nl:amber:wps'
+ #option led_sysfs 'wrt160nl:amber:wps'
+ # Leaving this option empty, makes sure that no LED is touched
+ option led_sysfs ''
option led_enable_trigger 'timer'
option led_enable_delayon '500'
option led_enable_delayoff '500'
# /bin/sh
setled() {
- if [ -e /sys/class/leds/${led_sysfs}/brightness ]
+ if [ -z "${led_sysfs}" ]; then
+ return
+ elif [ -e /sys/class/leds/${led_sysfs}/brightness ]
then
[ $led_default -eq 1 ] && echo 1 >/sys/class/leds/${led_sysfs}/brightness
[ $led_default -eq 1 ] || echo 0 >/sys/class/leds/${led_sysfs}/brightness
#
-# Copyright (C) 2007-2014 OpenWrt.org
+# Copyright (C) 2007-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PKG_NAME:=zip
PKG_REV:=30
PKG_VERSION:=3.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)$(PKG_REV).tar.gz
PKG_SOURCE_URL:=@SF/infozip
$(MAKE) -C $(PKG_BUILD_DIR) -f unix/Makefile generic \
prefix="$(PKG_INSTALL_DIR)/usr" \
CFLAGS="$(TARGET_CFLAGS)" \
- CC="$(TARGET_CC) $(TARGET_CFLAGS) -O $(TARGET_CPPFLAGS) -I. -DUNIX" \
- LD="$(TARGET_CC) $(TARGET_LDFLAGS)" \
+ CC="$(TARGET_CC) $(TARGET_CFLAGS) -O $(TARGET_CPPFLAGS) -I. -DUNIX $(TARGET_LDFLAGS)" \
IZ_BZIP2="no" \
install
endef
#
-# Copyright (C) 2007-2015 OpenWrt.org
+# Copyright (C) 2007-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=zoneinfo
-PKG_VERSION:=2015g
-PKG_VERSION_CODE:=2015g
+PKG_VERSION:=2016d
+PKG_VERSION_CODE:=2016d
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:=8d46e8b225b9a04c75f5c39636435ad6
+PKG_MD5SUM:=14bf84b6c2cdab0a9428991e0150ebe6
include $(INCLUDE_DIR)/package.mk
define Download/tzcode
FILE=$(PKG_SOURCE_CODE)
URL=$(PKG_SOURCE_URL)
- MD5SUM:=a2c47d908a6426f530efb1393cf1cd06
+ MD5SUM:=06fc6fc111cd8dd681abdc5326529afd
endef
$(eval $(call Download,tzcode))