Merge pull request #2344 from dibdot/adblock
authorHannu Nyman <hannu.nyman@iki.fi>
Wed, 3 Feb 2016 18:40:08 +0000 (20:40 +0200)
committerHannu Nyman <hannu.nyman@iki.fi>
Wed, 3 Feb 2016 18:40:08 +0000 (20:40 +0200)
adblock: 0.60.1

409 files changed:
CONTRIBUTING.md
admin/debootstrap/Makefile
admin/sudo/Makefile
admin/sudo/patches/010-cross-compile-fixes.patch
devel/autoconf/Makefile [new file with mode: 0644]
devel/automake/Makefile [new file with mode: 0644]
devel/libtool-bin/Makefile [new file with mode: 0644]
devel/m4/Makefile [new file with mode: 0644]
devel/make/Makefile [new file with mode: 0644]
devel/pkg-config/Makefile [new file with mode: 0644]
kernel/exfat-nofuse/Makefile
lang/lualanes/Makefile
lang/luaposix/Makefile
lang/luarocks/Makefile
lang/luasec/Makefile
lang/micropython-lib/Makefile
lang/micropython/Makefile
lang/node-arduino-firmata/Makefile
lang/node-cylon/Makefile
lang/node-hid/Makefile
lang/node-serialport/Makefile
lang/node/Makefile
lang/perl-cgi/Makefile
lang/perl-compress-bzip2/Makefile
lang/perl-html-parser/Makefile
lang/perl-test-harness/Makefile
lang/perl-uri/Makefile
lang/perl-www/Makefile
lang/perl-xml-parser/Makefile
lang/perl/Makefile
lang/perl/files/README.config
lang/perl/files/libc.config
lang/perl/files/misc.config
lang/perl/files/version.config
lang/perl/patches/020-host-libc-dir-moved-debian+derivatives.patch
lang/perl/patches/110-always_use_miniperl.patch
lang/perl/patches/310-recompile-hack.patch [new file with mode: 0644]
lang/perl/patches/700-tie_fetch_count_t-handle_missing_crypt.patch
lang/perl/patches/710-threads_join-skip_ps_on_busybox.patch
lang/perl/patches/900-CVE-2015-8607.patch [new file with mode: 0644]
lang/perl/perlmod.mk
lang/php5/Makefile
lang/php5/pecl.mk
lang/python-cffi/Makefile [new file with mode: 0644]
lang/python-cryptography/Makefile [new file with mode: 0644]
lang/python-enum34/Makefile [new file with mode: 0644]
lang/python-enum34/patches/001-omit-docs.patch [new file with mode: 0644]
lang/python-idna/Makefile [new file with mode: 0644]
lang/python-ipaddress/Makefile [new file with mode: 0644]
lang/python-pip/Makefile
lang/python-pip/files/pip.conf [new file with mode: 0644]
lang/python-ply/Makefile [new file with mode: 0644]
lang/python-psycopg2/Makefile
lang/python-pyasn1/Makefile [new file with mode: 0644]
lang/python-pycparser/Makefile [new file with mode: 0644]
lang/python-pycparser/patches/001-use-external-ply.patch [new file with mode: 0644]
lang/python-pyopenssl/Makefile [new file with mode: 0644]
lang/python-pyopenssl/patches/001-omit-tests.patch [new file with mode: 0644]
lang/python-setuptools/Makefile
lang/python-setuptools/patches/0001-remove-windows-support.patch
lang/python-six/Makefile [new file with mode: 0644]
lang/python/Makefile
lang/python/files/python-host.mk [new file with mode: 0644]
lang/python/files/python-package-dev.mk [new file with mode: 0644]
lang/python/files/python-package-lib2to3.mk [new file with mode: 0644]
lang/python/files/python-package-xml.mk
lang/python/files/python-package.mk
lang/python3-pip/Makefile [new file with mode: 0644]
lang/python3-pip/patches/0001-remove-self-version-checking.patch [new file with mode: 0644]
lang/python3-setuptools/Makefile [new file with mode: 0644]
lang/python3-setuptools/patches/0001-remove-windows-support.patch [new file with mode: 0644]
lang/python3-setuptools/patches/0002-fix-pyvenv-environment-get.patch [new file with mode: 0644]
lang/python3/Makefile
lang/python3/files/python3-package-dev.mk [new file with mode: 0644]
lang/python3/files/python3-package-lib2to3.mk [new file with mode: 0644]
lang/python3/files/python3-package.mk
lang/ruby/Makefile
lang/tcl/Makefile [new file with mode: 0644]
lang/tcl/patches/100-disable_tzdata_and_msgs_install.patch [new file with mode: 0644]
lang/tcl/patches/200-fix_mips_build.patch [new file with mode: 0644]
lang/zope-interface/Makefile [new file with mode: 0644]
libs/apr-util/Makefile
libs/apr/Makefile
libs/avahi/patches/011-fix-poll-h-warnings-on-musl.patch [new file with mode: 0644]
libs/boost/Makefile
libs/file/Makefile
libs/gdbm/Makefile
libs/glib2/Makefile
libs/glpk/Makefile
libs/gnutls/Makefile
libs/ibrcommon/Makefile
libs/ibrcommon/patches/001-fix-build-with-musl.patch [new file with mode: 0644]
libs/icu/Makefile [new file with mode: 0644]
libs/icu/patches/000-dont-cpy-files-from-topdirs.patch [new file with mode: 0644]
libs/libev/Makefile
libs/libevdev/Makefile
libs/libffi/Makefile
libs/libffi/patches/001-fix-includedir-pkg.patch [new file with mode: 0644]
libs/libffi/patches/100-fix_mips_softfloat.patch [new file with mode: 0644]
libs/libgee/Makefile
libs/libgpg-error/patches/001-gcc5.patch [new file with mode: 0644]
libs/libinput/Makefile
libs/libmicrohttpd/Makefile
libs/libmicrohttpd/patches/001-bump-to-r35864.patch [deleted file]
libs/libmraa/Makefile
libs/libpng/Makefile
libs/libradcli/Makefile
libs/libsearpc/Makefile
libs/libshout/Makefile
libs/libsndfile/Makefile
libs/libsndfile/patches/001-automake-compat.patch [deleted file]
libs/libsodium/Makefile
libs/libsoup/Makefile
libs/libupm/Makefile
libs/libwebsockets/Makefile
libs/libxml2/Makefile
libs/libxml2/patches/0001-threads-use-forward-declarations-only-for-glibc-fixe.patch [deleted file]
libs/libzdb/Makefile
libs/libzdb/patches/020-filterh-use-host-built-version.patch
libs/openldap/Makefile
libs/p11-kit/Makefile
libs/pcre/Makefile
libs/pcre/patches/100-pcre-cve-2015-3210.patch [deleted file]
libs/postgresql/Makefile
libs/protobuf/Makefile
libs/unixodbc/Makefile
libs/zmq/Makefile
libs/zmq/patches/010-disable_pedantic_on_linux_with_ulibc++.patch
libs/zmq/patches/020-map_with_const_string_with_ublic++.patch
libs/zmq/patches/030-streamoff_missing_with_ulibc++.patch
libs/zmq/patches/040-fix_GNUC_conditional_for_GCC5.patch [new file with mode: 0644]
libs/zmq/patches/100-fix-cxx-include-order.patch
mail/mutt/Makefile [new file with mode: 0644]
mail/mutt/patches/0001-no-po-and-docs.patch [new file with mode: 0644]
mail/ssmtp/Makefile
mail/ssmtp/patches/004-remove_dead-letter.patch [new file with mode: 0644]
mail/ssmtp/patches/006-add_ip-header.patch [new file with mode: 0644]
mail/ssmtp/patches/008-remove_garbage.patch [new file with mode: 0644]
mail/ssmtp/patches/010-fix_message-header.patch [new file with mode: 0644]
multimedia/ffmpeg/Makefile
multimedia/grilo-plugins/Makefile
multimedia/grilo/Makefile
multimedia/grilo/files/grilo-0.3.vapi [new file with mode: 0644]
multimedia/grilo/files/grilo-net-0.3.vapi [new file with mode: 0644]
multimedia/gst1-libav/Makefile
multimedia/gst1-plugins-bad/Makefile
multimedia/gst1-plugins-bad/patches/000-gettext.patch [deleted file]
multimedia/gst1-plugins-bad/patches/001-no-translations.patch [new file with mode: 0644]
multimedia/gst1-plugins-bad/patches/002-no-tests.patch [new file with mode: 0644]
multimedia/gst1-plugins-base/Makefile
multimedia/gst1-plugins-base/patches/001-no-translations.patch [new file with mode: 0644]
multimedia/gst1-plugins-base/patches/001-no_docs.patch [deleted file]
multimedia/gst1-plugins-base/patches/002-no-tests.patch [new file with mode: 0644]
multimedia/gst1-plugins-base/patches/002-no_tests.patch [deleted file]
multimedia/gst1-plugins-base/patches/003-no-docs.patch [new file with mode: 0644]
multimedia/gst1-plugins-base/patches/003-no_translations.patch [deleted file]
multimedia/gst1-plugins-good/Makefile
multimedia/gst1-plugins-good/patches/001-no-translations.patch [new file with mode: 0644]
multimedia/gst1-plugins-good/patches/001-no_docs.patch [deleted file]
multimedia/gst1-plugins-good/patches/002-no-tests.patch [new file with mode: 0644]
multimedia/gst1-plugins-good/patches/002-no_tests.patch [deleted file]
multimedia/gst1-plugins-good/patches/003-no-docs.patch [new file with mode: 0644]
multimedia/gst1-plugins-good/patches/003-no_translations.patch [deleted file]
multimedia/gst1-plugins-ugly/Makefile
multimedia/gst1-plugins-ugly/patches/001-no-translations.patch [new file with mode: 0644]
multimedia/gst1-plugins-ugly/patches/001-no_docs.patch [deleted file]
multimedia/gst1-plugins-ugly/patches/002-no-tests.patch [new file with mode: 0644]
multimedia/gst1-plugins-ugly/patches/002-no_tests.patch [deleted file]
multimedia/gst1-plugins-ugly/patches/003-no-docs.patch [new file with mode: 0644]
multimedia/gst1-plugins-ugly/patches/003-no_translations.patch [deleted file]
multimedia/gstreamer1/Makefile
multimedia/gstreamer1/patches/001-no-translations.patch [new file with mode: 0644]
multimedia/gstreamer1/patches/001-no_docs.patch [deleted file]
multimedia/gstreamer1/patches/002-no-tests.patch [new file with mode: 0644]
multimedia/gstreamer1/patches/002-no_tests.patch [deleted file]
multimedia/gstreamer1/patches/003-no-docs.patch [new file with mode: 0644]
multimedia/gstreamer1/patches/003-no_translations.patch [deleted file]
multimedia/gstreamer1/patches/010-gstplugin-use-lazy-symbol-binding.patch [new file with mode: 0644]
multimedia/gstreamer1/patches/010-gstplugin_use_lazy_symbol_binding.patch [deleted file]
multimedia/icecast/Makefile
multimedia/icecast/files/icecast.init
multimedia/icecast/patches/020-icecast_config_for_openwrt.patch [new file with mode: 0644]
multimedia/minidlna/Makefile
multimedia/mjpg-streamer/Makefile
multimedia/mjpg-streamer/patches/060-fix-sigtrap-in-v4l2uvc.patch [new file with mode: 0644]
multimedia/oggfwd/Makefile
net/apache/Makefile
net/atftp/Makefile
net/atftp/patches/03-Fix-undefined-reference-linker-errors.patch [new file with mode: 0644]
net/bind/Config.in [new file with mode: 0644]
net/bind/Makefile
net/chrony/Makefile
net/cifs-utils/Makefile [new file with mode: 0644]
net/cifs-utils/patches/001-fix-musl-build.patch [new file with mode: 0644]
net/coova-chilli/patches/400-fix-compile-with-musl.patch [new file with mode: 0644]
net/cshark/Makefile
net/daemonlogger/Makefile [new file with mode: 0644]
net/davfs2/Makefile
net/ddns-scripts/Makefile
net/ddns-scripts/files/ddns.config
net/ddns-scripts/files/dynamic_dns_functions.sh
net/ddns-scripts/files/dynamic_dns_lucihelper.sh
net/ddns-scripts/files/dynamic_dns_updater.sh
net/ddns-scripts/files/services
net/ddns-scripts/files/services_ipv6
net/ddns-scripts/files/tld_names.dat
net/ddns-scripts/files/update_CloudFlare.sh
net/etherwake/Makefile
net/freeradius2/Makefile
net/fwknop/Makefile
net/fwknop/files/fwknopd.init
net/fwknop/patches/001-add-keygen.patch [deleted file]
net/gnunet/Makefile
net/gnunet/files/gnunet.init
net/gnurl/Makefile
net/haproxy/Makefile
net/haproxy/patches/0001-BUG-BUILD-replace-haproxy-systemd-wrapper-with-EXTRA.patch [new file with mode: 0644]
net/haproxy/patches/0001-BUG-MINOR-log-missing-some-ARGC_-entries-in-fmt_dire.patch [deleted file]
net/haproxy/patches/0002-BUG-MINOR-acl-don-t-use-record-layer-in-req_ssl_ver.patch [new file with mode: 0644]
net/haproxy/patches/0002-DOC-usesrc-root-privileges-requirements.patch [deleted file]
net/haproxy/patches/0003-BUG-http-do-not-abort-keep-alive-connections-on-serv.patch [new file with mode: 0644]
net/haproxy/patches/0003-BUILD-ssl-Allow-building-against-libssl-without-SSLv.patch [deleted file]
net/haproxy/patches/0004-BUG-MEDIUM-http-switch-the-request-channel-to-no-del.patch [new file with mode: 0644]
net/haproxy/patches/0004-DOC-MINOR-fix-OpenBSD-versions-where-haproxy-works.patch [deleted file]
net/haproxy/patches/0005-BUG-MINOR-http-sample-gmtime-localtime-can-fail.patch [deleted file]
net/haproxy/patches/0005-MINOR-config-extend-the-default-max-hostname-length-.patch [new file with mode: 0644]
net/haproxy/patches/0006-BUG-MEDIUM-http-don-t-enable-auto-close-on-the-respo.patch [new file with mode: 0644]
net/haproxy/patches/0006-DOC-typo-in-redirect-302-code-meaning.patch [deleted file]
net/haproxy/patches/0007-BUG-MEDIUM-stream-fix-half-closed-timeout-handling.patch [new file with mode: 0644]
net/haproxy/patches/0007-DOC-mention-that-ms-is-left-padded-with-zeroes.patch [deleted file]
net/haproxy/patches/0008-BUG-MEDIUM-cli-changing-compression-rate-limiting-mu.patch [new file with mode: 0644]
net/haproxy/patches/0008-CLEANUP-.gitignore-ignore-more-test-files.patch [deleted file]
net/haproxy/patches/0009-BUILD-freebsd-double-declaration.patch [new file with mode: 0644]
net/haproxy/patches/0009-CLEANUP-.gitignore-finally-ignore-everything-but-wha.patch [deleted file]
net/haproxy/patches/0010-BUG-MEDIUM-sample-urlp-can-t-match-an-empty-value.patch [new file with mode: 0644]
net/haproxy/patches/0010-MEDIUM-config-emit-a-warning-on-a-frontend-without-l.patch [deleted file]
net/haproxy/patches/0011-BUG-MEDIUM-counters-ensure-that-src_-inc-clr-_gpc0-c.patch [deleted file]
net/haproxy/patches/0011-BUG-MEDIUM-peers-table-entries-learned-from-a-remote.patch [new file with mode: 0644]
net/haproxy/patches/0012-BUG-MEDIUM-peers-old-stick-table-updates-could-be-re.patch [new file with mode: 0644]
net/haproxy/patches/0012-DOC-ssl-missing-LF.patch [deleted file]
net/haproxy/patches/0013-CLEANUP-haproxy-using-_GNU_SOURCE-instead-of-__USE_G.patch [new file with mode: 0644]
net/haproxy/patches/0013-DOC-fix-example-of-http-request-using-ssl_fc_session.patch [deleted file]
net/haproxy/patches/0014-BUG-MINOR-http-remove-stupid-HTTP_METH_NONE-entry.patch [deleted file]
net/haproxy/patches/0015-BUG-MAJOR-http-don-t-call-http_send_name_header-afte.patch [deleted file]
net/haproxy/patches/0016-BUG-MINOR-tools-make-str2sa_range-report-unresolvabl.patch [deleted file]
net/iptraf-ng/Makefile [new file with mode: 0644]
net/knxd/Makefile
net/knxd/files/knxd.config
net/knxd/files/knxd.init
net/krb5/Makefile
net/krb5/patches/001-fix-build.patch [deleted file]
net/krb5/patches/001-fix-uninitialized-warning-errors.patch [new file with mode: 0644]
net/lighttpd/Makefile
net/mdnsresponder/Makefile
net/mdnsresponder/patches/114-fix_posix_build.patch [new file with mode: 0644]
net/mosquitto/Config.in
net/mosquitto/Makefile
net/mwan3/Makefile
net/mwan3/files/etc/config/mwan3
net/mwan3/files/etc/hotplug.d/iface/15-mwan3
net/mwan3/files/lib/mwan3/mwan3.sh [new file with mode: 0644]
net/mwan3/files/usr/sbin/mwan3
net/mwan3/files/usr/sbin/mwan3track
net/net-snmp/files/snmpd.init
net/nfs-kernel-server/Makefile
net/nginx/Config.in
net/nginx/Makefile
net/nmap/Makefile
net/ntpd/Makefile
net/ocserv/Makefile
net/ocserv/README
net/ocserv/files/ocserv.conf.template
net/ocserv/files/ocserv.init
net/ola/patches/002-remove-visibility-inlines-hidden-flag.patch [new file with mode: 0644]
net/openssh/Makefile
net/openssh/files/sshd.init
net/openvswitch/Makefile
net/openvswitch/patches/0003-datapath-do-not-add-vlan_hwaccel_push_inside-for-ker.patch [deleted file]
net/openvswitch/patches/0004-musl-compatibility.patch
net/openvswitch/patches/0005-datapath-Add-net-ip6_checksum.h-to-stt.c.patch [deleted file]
net/openvswitch/patches/0006-force-kernel-4-1.patch [deleted file]
net/openvswitch/patches/0007-add-netns-compat.patch [deleted file]
net/openvswitch/patches/0009-fix-test-ovn.patch [new file with mode: 0644]
net/openvswitch/patches/0010-patch-nf_ip_hook-4.1.patch [deleted file]
net/openvswitch/patches/0011-fix-vxlan-xmit-skb-4.1.patch [deleted file]
net/openvswitch/patches/0012-fix-vport-lisp-4.1.patch [deleted file]
net/pingcheck/Makefile [new file with mode: 0644]
net/pingcheck/pingcheck.init [new file with mode: 0755]
net/privoxy/Makefile
net/privoxy/files/privoxy.init
net/prosody/Makefile
net/prosody/patches/010-fix-randomseed.patch [deleted file]
net/radicale/Makefile
net/radicale/files/radicale.config
net/radicale/files/radicale.hotplug
net/radicale/files/radicale.init
net/redsocks/Makefile
net/redsocks/patches/0001-Fix-bug-in-DNS-resolution-results-were-ignored-since.patch [deleted file]
net/redsocks/patches/0002-inet_ntop-red_inet_ntop.patch [deleted file]
net/redsocks/patches/0003-Initial-support-for-UDP-TPROXY-redirection.-No-more-.patch [deleted file]
net/redsocks/patches/0004-Fix-transposition-of-memset-parameters.patch [deleted file]
net/redsocks/patches/0005-Fix-compilation-on-Ubuntu-10.04-LTS-and-hopefully-De.patch [deleted file]
net/redsocks/patches/0006-fix_default_config_location.patch
net/rsync/Makefile
net/rsync/patches/000-CVE-2014-9512.patch [deleted file]
net/rsyslog/Makefile
net/scapy/Makefile
net/sqm-scripts/Makefile
net/squid/Makefile
net/sshtunnel/Makefile
net/sshtunnel/files/sshtunnel.init
net/sshtunnel/files/sshtunnel.sh [deleted file]
net/sslh/Makefile
net/strongswan/Makefile
net/strongswan/patches/305-minimal_dh_plugin.patch [new file with mode: 0644]
net/tgt/Makefile
net/tor/Makefile
net/u2pnpd/Makefile
net/unbound/Makefile
net/unbound/patches/001-conf.patch
net/vnstat/Makefile
net/vpnc-scripts/Makefile
net/vpnc-scripts/files/vpnc-script
net/wget/Makefile
net/xl2tpd/Makefile
net/xl2tpd/files/l2tp.sh
net/xl2tpd/patches/100-makefile_opt_flags.patch
net/znc/Makefile
sound/forked-daapd/Makefile
sound/forked-daapd/patches/010-include_pregen.patch
sound/madplay/Makefile
sound/mpd/Makefile
sound/mpd/patches/100-musl_gcc5_fixes.patch [new file with mode: 0644]
sound/mpd/patches/210-support_raw_pcm_streams.patch
sound/mpd/patches/220-handle_slow_server_stream_startup.patch
sound/mpg123/Makefile
sound/pulseaudio/Makefile
sound/pulseaudio/files/pulseaudio.init
utils/at/Makefile [new file with mode: 0644]
utils/at/files/atd.init [new file with mode: 0755]
utils/at/patches/100-remove-glibc-assumption.patch [new file with mode: 0644]
utils/at/patches/110-getloadavg.patch [new file with mode: 0644]
utils/avrdude/Makefile
utils/bandwidthd/Makefile
utils/bandwidthd/files/bandwidthd.init
utils/bonnie++/Makefile [new file with mode: 0644]
utils/bonnie++/patches/001-cross_compile_fix.patch [new file with mode: 0644]
utils/bonnie++/patches/002-add-verbose-error-messages.patch [new file with mode: 0644]
utils/btrfs-progs/Makefile
utils/btrfs-progs/patches/001-fix-xattr-h-include-location.patch [deleted file]
utils/ccid/Makefile
utils/collectd/Makefile
utils/cryptodev-linux/Makefile
utils/cryptodev-linux/patches/001-no-get-unused-fd.patch [deleted file]
utils/cryptsetup/Makefile
utils/dbus/Makefile
utils/dosfstools/Makefile
utils/dosfstools/patches/010-consistent_use_of_uint32.patch [new file with mode: 0644]
utils/dump1090/Makefile
utils/dump1090/files/dump1090.config
utils/dump1090/files/dump1090.init
utils/dvtm/Makefile [new file with mode: 0644]
utils/evtest/Makefile [new file with mode: 0644]
utils/flashrom/Makefile
utils/flashrom/patches/0003-fix-io-h-include.patch [new file with mode: 0644]
utils/gammu/Makefile
utils/gnupg/Makefile
utils/gpsd/Makefile
utils/i2c-tools/Makefile
utils/joe/files/joerc
utils/lvm2/Makefile
utils/lvm2/patches/002-const-stdio.patch
utils/lvm2/patches/003-no-mallinfo.patch
utils/mc/Config.in
utils/mc/Makefile
utils/mc/patches/010-subshell.patch [new file with mode: 0644]
utils/mt-st/Makefile [new file with mode: 0644]
utils/nano/Makefile
utils/owfs/Config.in [new file with mode: 0644]
utils/owfs/Makefile
utils/owfs/files/owfs.conf [new file with mode: 0644]
utils/owfs/files/owfs.init [new file with mode: 0644]
utils/owfs/files/owftpd.conf [new file with mode: 0644]
utils/owfs/files/owftpd.init [new file with mode: 0644]
utils/owfs/files/owhttpd.conf [new file with mode: 0644]
utils/owfs/files/owhttpd.init [new file with mode: 0644]
utils/owfs/files/owserver.conf [new file with mode: 0644]
utils/owfs/files/owserver.init [new file with mode: 0644]
utils/owfs/patches/100-fix-netlink-w1-status-message-detection.patch [new file with mode: 0644]
utils/owfs/patches/101-fix-no-reset-routine-segfault.patch [new file with mode: 0644]
utils/pcsc-lite/Makefile
utils/rtl-ais/Makefile
utils/rtl-ais/files/rtl_ais.init
utils/sane-backends/Makefile
utils/smstools3/Makefile
utils/smstools3/patches/002-Makefile.patch
utils/stress/Makefile [new file with mode: 0644]
utils/sumo/Makefile
utils/tracertools/Makefile
utils/triggerhappy/Makefile
utils/triggerhappy/patches/100-fix-LINUX_INPUT_H.patch [deleted file]
utils/unrar/Makefile
utils/unrar/patches/100-makefile_fixes.patch
utils/unzip/Makefile
utils/zile/Makefile
utils/zile/patches/005-fix_configure_checking_for_ncursesw.patch [new file with mode: 0644]
utils/zile/patches/010-remove_gets_definition_warning.patch [new file with mode: 0644]
utils/zile/patches/020-build_with_ncursesw.patch [new file with mode: 0644]
utils/zoneinfo/Makefile

index 03f965f69e93412d03afc9d07d5c5d37a0ba44e2..29ba5dbaa9eab437bce9db6f4314486f08fbb1bd 100644 (file)
@@ -2,8 +2,9 @@
 (See <http://wiki.openwrt.org/doc/devel/packages> for overall format and construction)
 
 
-All packages you commit or submit by pull-request should follow these simple guidelines:
+### Basic guidelines
 
+All packages you commit or submit by pull-request should follow these simple guidelines:
 * Package a version which is still maintained by the upstream author.
 * Will be updated regularly to maintained and supported versions.
 * Have no dependencies outside the OpenWrt core packages or this repository feed.
@@ -11,10 +12,10 @@ All packages you commit or submit by pull-request should follow these simple gui
 * Do NOT use a rolling source file (e.g. foo-latest.tar.gz) or the head of a branch as source for the package since that would create unpredictable builds which change over time.
 * Best of all -- it works as expected!
 
-Makefile contents should contain:
+#### Makefile contents should contain:
 
 * An up-to-date copyright notice. Use OpenWrt if no other present or supply your own.
-* A (PKG_)MAINTAINER definition listing either yourself or another person in the field.  
+* A (PKG_)MAINTAINER definition listing either yourself or another person in the field.
     (E.g.: PKG_MAINTAINER:= Joe D. Hacker `<jdh@jdhs-email-provider.org`>)
 * A PKG_LICENSE tag declaring the main license of the package.
     (E.g.: PKG_LICENSE:=GPL-2.0+) Please use SPDX identifiers if possible (see list at the bottom).
@@ -22,27 +23,47 @@ Makefile contents should contain:
     (E.g.: PKG_LICENSE_FILES:=COPYING)
 * PKG_RELEASE should be initially set to 1 or reset to 1 if the software version is changed. You should increment it if the package itself has changed. For example, modifying a support script, changing configure options like --disable* or --enable* switches, or if you changed something in the package which causes the resulting binaries to be different. Changes like correcting md5sums, changing mirror URLs, adding a maintainer field or updating a comment or copyright year in a Makefile do not require a change to PKG_RELEASE.
 
-Commits in your pull-requests should:
+#### Commits in your pull-requests should:
 
-* Have a useful description prefixed with the package name  
+* Have a useful description prefixed with the package name
     (E.g.: "foopkg: Add libzot dependency")
-* Include Signed-off-by in the comment  
+* Include Signed-off-by in the comment
     (See <https://dev.openwrt.org/wiki/SubmittingPatches#a10.Signyourwork>)
 
-If you have commit access:
+### Advice on pull requests:
+
+Pull requests are the easiest way to contribute changes to git repos at Github. They are the preferred contribution method, as they offer a nice way for commenting and amending the proposed changes.
+
+* You need a local "fork" of the Github repo.
+* Use a "feature branch" for your changes. That separates the changes in the pull request from your other changes and makes it easy to edit/amend commits in the pull request. Workflow using "feature_x" as the example:
+  - Update your local git fork to the tip (of the master, usually)
+  - Create the feature branch with `git checkout -b feature_x`
+  - Edit changes and commit them locally
+  - Push them to your Github fork by `git push -u origin feature_x`. That creates the "feature_x" branch at your Github fork and sets it as the remote of this branch
+  - When you now visit Github, you should see a proposal to create a pull request
+
+* If you later need to add new commits to the pull request, you can simply commit the changes to the local branch and then use `git push` to automatically update the pull request.
+
+* If you need to change something in the existing pull request (e.g. to add a missing signed-off-by line to the commit message), you can use `git push -f` to overwrite the original commits. That is easy and safe when using a feature branch. Example workflow:
+  - Checkout the feature branch by `git checkout feature_x`
+  - Edit changes and commit them locally. If you are just updating the commit message in the last commit, you can use `git commit --amend` to do that
+  - If you added several new commits or made other changes that require cleaning up, you can use `git rebase -i HEAD~X` (X = number of commits to edit) to possibly squash some commits
+  - Push the changed commits to Github with `git push -f` to overwrite the original commits in the "feature_x" branch with the new ones. The pull request gets automatically updated
+
+### If you have commit access:
 
 * Do NOT use git push --force.
 * Do NOT commit to other maintainer's packages without their consent.
 * Use Pull Requests if you are unsure and to suggest changes to other maintainers.
 
-Gaining commit access:
+#### Gaining commit access:
 
 * We will gladly grant commit access to responsible contributors who have made
   useful pull requests and / or feedback or patches to this repository or
   OpenWrt in general. Please include your request for commit access in your
   next pull request or ticket.
 
-Release Branches:
+### Release Branches:
 
 * Branches named "for-XX.YY" (e.g. for-14.07) are release branches.
 * These branches are built with the respective OpenWrt release and are created
@@ -51,9 +72,8 @@ Release Branches:
 * Do NOT add new packages and do NOT do major upgrades of packages here.
 * If you are unsure if your change is suitable, please use a pull request.
 
-####Common LICENSE tags (short list)  
+### Common LICENSE tags (short list)  
 (Complete list can be found at: <http://spdx.org/licenses>)
-####  
 
 | Full Name | Identifier  |
 |---|:---|
index 8190d2ac7c796bfc6cab9c5431bf9ebbbc0b6eb4..8d38005527ea74b47be62272070974293c37135f 100644 (file)
@@ -9,13 +9,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=debootstrap
-PKG_VERSION:=1.0.72
+PKG_VERSION:=1.0.75
 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:=49f24e3299352aa5453f725ec0d55566
+PKG_MD5SUM:=5b568d66390d76fba87b839984254730
 PKG_LICENSE:=Unique
 PKG_LICENSE_FILES:=debian/copyright
 
index 3f2d6f81aeee0466dc2570bcf3f430345156ab7b..43e92977d7552e2ab08023618a22049c92864443 100644 (file)
@@ -64,8 +64,8 @@ define Host/Compile
 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))
index 4e80d4d42f7c0619ef20e2bc37372fda9698849d..b9c1e79956e94e53a8a88c1e4647b27b7e779aff 100644 (file)
@@ -1,25 +1,16 @@
 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 $@
diff --git a/devel/autoconf/Makefile b/devel/autoconf/Makefile
new file mode 100644 (file)
index 0000000..35af2db
--- /dev/null
@@ -0,0 +1,69 @@
+#
+# 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))
diff --git a/devel/automake/Makefile b/devel/automake/Makefile
new file mode 100644 (file)
index 0000000..e8c9bef
--- /dev/null
@@ -0,0 +1,65 @@
+#
+# 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))
diff --git a/devel/libtool-bin/Makefile b/devel/libtool-bin/Makefile
new file mode 100644 (file)
index 0000000..e7922c3
--- /dev/null
@@ -0,0 +1,51 @@
+#
+# 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))
diff --git a/devel/m4/Makefile b/devel/m4/Makefile
new file mode 100644 (file)
index 0000000..61be19b
--- /dev/null
@@ -0,0 +1,41 @@
+#
+# 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))
diff --git a/devel/make/Makefile b/devel/make/Makefile
new file mode 100644 (file)
index 0000000..65079c5
--- /dev/null
@@ -0,0 +1,46 @@
+#
+# 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))
diff --git a/devel/pkg-config/Makefile b/devel/pkg-config/Makefile
new file mode 100644 (file)
index 0000000..36abc5d
--- /dev/null
@@ -0,0 +1,49 @@
+#
+# 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
+PKG_RELEASE:=2
+
+PKG_SOURCE_URL:=http://pkgconfig.freedesktop.org/releases/
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_MD5SUM:=77f27dce7ef88d0634d0d6f90e03a77f
+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))
index bae51532de7fdb01c7fb81b9d71dfe7c0a82e1a6..15773755176de0ef964bbafab6d40b0c054060d0 100644 (file)
@@ -9,14 +9,14 @@ include $(TOPDIR)/rules.mk
 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
index 06bc1e286404ab2ecab6b3b74709ceae28446418..616129066f82df1be07e5945bea37739110c4e1a 100644 (file)
@@ -42,8 +42,8 @@ endef
 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
 
index a189e6645f8f1dd9bbca32417b6e14c00ec7e297..9bf362865cf46374906116a52a650f4ebc0fde73 100644 (file)
@@ -38,7 +38,7 @@ define Package/luaposix/description
   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)
index e0a0f57114ca87ab4240aa756160fa6a82b8d307..7519f8f7c806cbd7abf53bf3422b0f4b260d84c8 100644 (file)
@@ -41,7 +41,7 @@ endef
 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)
index 9ed69d24503ffa09db81b1957a486bcc40dc051a..6429b2d3e74a9d87578d8699fcb6fea0a60d476f 100644 (file)
@@ -8,12 +8,12 @@
 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>
index b8af737fcaa0965efad35706c3d101f67d10f7db..6c99f3f3ef5ffedc00f98407b3fb5f5868a61051 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=micropython-lib
-PKG_VERSION=0.5-20150827-$(PKG_SOURCE_VERSION)
+PKG_VERSION=0.5-20151122-$(PKG_SOURCE_VERSION)
 PKG_RELEASE:=1
 
 PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>
@@ -17,7 +17,7 @@ PKG_LICENSE_FILES:=LICENSE
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/micropython/micropython-lib.git
-PKG_SOURCE_VERSION:=bfbbf85a181d84e2494ea6f15be311734666bf67
+PKG_SOURCE_VERSION:=9643541e6e89b96cb9785a618b19865f8c0f7215
 
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION)
 PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
index b83a500594b2b1b94e98698567d2aa177ecc32a5..83806167ca4191175660681f07776559e7585b09 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=micropython
-PKG_VERSION=1.4.5-20150827-$(PKG_SOURCE_VERSION)
+PKG_VERSION=1.5-20151122-$(PKG_SOURCE_VERSION)
 PKG_RELEASE:=1
 
 PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>
@@ -17,7 +17,7 @@ PKG_LICENSE_FILES:=LICENSE
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/micropython/micropython.git
-PKG_SOURCE_VERSION:=936e25b164d837fc91e4bafd76580e747b235dff
+PKG_SOURCE_VERSION:=4120f32292090bd811165fe76780e4e74e3450b9
 
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
 PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
index aced0701287475e245a185f969b71232cf3ee6e0..82310d4c28dcf62a00f56d9a312afca95e0165f1 100644 (file)
@@ -53,7 +53,7 @@ define Build/Compile
        npm_config_arch=$(CONFIG_ARCH) \
        npm_config_nodedir=$(BUILD_DIR)/node-v$(PKG_NODE_VERSION)/ \
        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
index 753ae2319b103e392297c8cf63c915cc2fcd3453..d2e40b277061740b41734747ed922b4517c38661 100644 (file)
@@ -68,7 +68,7 @@ define Build/Compile
        npm_config_arch=$(CONFIG_ARCH) \
        npm_config_nodedir=$(BUILD_DIR)/node-v$(PKG_NODE_VERSION)/ \
        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
index 911e2a4cc695004d4ee4ee3d3078fc7d1876bee2..620fc29d734f4e2f1ee9cdbad482528844619f3e 100644 (file)
@@ -50,7 +50,7 @@ define Build/Compile
        npm_config_arch=$(CONFIG_ARCH) \
        npm_config_nodedir=$(BUILD_DIR)/node-v$(PKG_NODE_VERSION)/ \
        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
index ad4b7aff604543fdfd5a443064552c5fa8fbc472..c73e85848fafeed6d258ec6bab973b9c5c6eead8 100644 (file)
@@ -50,7 +50,7 @@ define Build/Compile
        npm_config_arch=$(CONFIG_ARCH) \
        npm_config_nodedir=$(BUILD_DIR)/node-v$(PKG_NODE_VERSION)/ \
        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
index 65a53900c7a907f41380469571fb5bd22028f62e..9df887614e9b2442ab9d8de87059859fcdd4e03c 100644 (file)
@@ -9,11 +9,12 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=node
 PKG_VERSION:=v0.12.7
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=node-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://nodejs.org/dist/${PKG_VERSION}
 
+HOST_BUILD_DEPENDS:=python/host
 PKG_BUILD_DEPENDS:=python/host
 PKG_INSTALL:=1
 PKG_USE_MIPS16:=0
@@ -39,8 +40,13 @@ define Package/node/description
    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 \
@@ -51,7 +57,7 @@ HOST_CONFIGURE_VARS:=
 HOST_CONFIGURE_ARGS:= \
        --dest-os=linux \
        --without-snapshot \
-       --prefix=$(STAGING_DIR_HOST)/
+       --prefix=$(STAGING_DIR)/host/
 
 HOST_CONFIGURE_CMD:=python ./configure
 
index 51af315141a9f42d9cbd36f09a84911593d4cd0b..9d2eac3309a8887df3d0fa559aa8af477f387f55 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=perl-cgi
-PKG_VERSION:=4.22
+PKG_VERSION:=4.25
 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:=e047bec455105cdfa413b9c776f95bb9
 
 PKG_LICENSE:=GPL Artistic-2.0
 PKG_MAINTAINER:=Marcel Denia <naoir@gmx.net>
index e6c7c8fd6aef04d30df93c55553e81bec6e37b6d..28766464ca210b2a39be81a4d370f9166e6c0231 100644 (file)
@@ -8,12 +8,12 @@
 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>
index c248a615c1ce23aef50660abb93920710f082a3d..e9772171b8b82b08b0e34ee8c8361b2a8d373ce7 100644 (file)
@@ -1,5 +1,5 @@
 #
-# 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.
@@ -8,12 +8,12 @@
 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>
index fd2b4f63482d94480669db2067bc97212581a0ce..0c14e85927f6424d7b8bd623cc960866407722c6 100644 (file)
@@ -1,5 +1,5 @@
 #
-# 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.
@@ -8,12 +8,12 @@
 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>
index e3f566efb67e65da7951b3ce8ca8c7b0e8ec4317..18667fcdb3387adf1be9cf3e9c034811310ddf70 100644 (file)
@@ -1,5 +1,5 @@
 #
-# 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.
@@ -8,12 +8,12 @@
 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>
index 6bb7c653934abcff231f8e33a28eb561e12693a9..86bf15bea6a1f310c9a55f3de15ae21e65af62c5 100644 (file)
@@ -8,12 +8,12 @@
 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>
index 08acb239f2d4bcf7504b9c69f7acf536cc3c81e8..e5d3b2c88bbaa4b02669a75dd49d03ee6e049728 100644 (file)
@@ -25,8 +25,8 @@ HOST_BUILD_DEPENDS:=perl/host expat/host
 
 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
index fd20bc8be68f55f75230448475f00990b220574c..5e6da214114674e92ee40830826a9e2a0258c69c 100644 (file)
@@ -8,8 +8,8 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=perl
-PKG_VERSION:=5.22.0
-PKG_RELEASE:=3
+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 \
@@ -20,7 +20,7 @@ PKG_SOURCE_URL:=ftp://ftp.cpan.org/pub/CPAN/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
@@ -35,7 +35,7 @@ PKG_BUILD_PARALLEL:=1
 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))
@@ -93,10 +93,11 @@ endef
 # Target perl
 define Build/Configure
        $(PERL_CMD) files/perlconfig.pl -Dowrt:target_cc='$(TARGET_CC)' \
+                                       -Dowrt:gccversion=$(CONFIG_GCC_VERSION) \
                                        -Dowrt:target_cross='$(TARGET_CROSS)' \
                                        -Dowrt:cflags='$(TARGET_CFLAGS_PERL) $(TARGET_CPPFLAGS_PERL)' \
                                        -Dowrt:ldflags='-rdynamic $(TARGET_LDFLAGS)' \
-                                       -Dowrt:libc=$(CONFIG_LIBC) \
+                                       -Dowrt:libc=$(subst uClibc,uclibc,$(CONFIG_LIBC)) \
                                        -Dowrt:ipv6=$(if $($(CONFIG_IPV6)),define,undef) \
                                        -Dowrt:threads=$(if $(CONFIG_PERL_THREADS),yes,no) \
                                        -Dowrt:staging_dir='$(STAGING_DIR)' \
index a7d14a75d471e4d7faff0c309494359ec1619a1f..572cf923d162b7a8dd3518eb32d2592c0b007dac 100644 (file)
@@ -45,6 +45,7 @@ owrt:threads          yes/no              Whether to enable threading support.
 owrt:ipv6             define/undef        Whether to enable IPv6 support.
 owrt:target_cross     *                   Target architecture's host triplet.
 owrt:target_cc        *                   C compiler to use.
+owrt:gccversion       *                   target_cc's version number.
 owrt:cflags           *                   Additional C compiler flags.
 owrt:ldflags          *                   Additional linker flags.
 owrt:staging_dir      *                   Same as OpenWRT buildroot's
index 2c355a3ce4157b892dbece761733270d9d1e404b..93d190c5a8bfa68f756184f124352a185291e479 100644 (file)
@@ -3,11 +3,9 @@
        ldflags="$ldflags -L$owrt:staging_dir/lib"
 }
 
-# uclibc does not provide crypt_r(). Enable crypt() usage for glibc builds only
-($owrt:libc ne 'glibc') {
+# uclibc does not provide crypt_r().
+($owrt:libc eq 'uclibc') {
        crypt_r_proto='0'
-       i_crypt='undef'
-       d_crypt='undef'
        d_crypt_r='undef'
 }
 
index a1d93d36b8c46fe253603fe55ec15608242455e0..3e8f6bd75bfe32eb2196eb042242b68cbacff6b4 100644 (file)
@@ -1,6 +1,6 @@
 cf_email='naoir@gmx.net'
 osvers='3.18.19'
-gccversion='4.8.0'
+gccversion="$owrt:gccversion"
 myhostname='OpenWrt'
 cf_time='Thu Jan 1 12:00:00 CEST 2015'
 
index 7ffe9043c05320642ca10cc2211144fef5859194..98cd2a585ef4357ccd3630c57db56e7552af18ba 100644 (file)
@@ -1,7 +1,7 @@
 # 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
index 761f8b9273469f4cae0ddfb77445b7a8f8838076..956466d99ae701e0b55e90521ba07a55ccb10f19 100644 (file)
@@ -1,6 +1,6 @@
 --- a/hints/linux.sh
 +++ b/hints/linux.sh
-@@ -204,6 +204,24 @@ case "$libc" in
+@@ -221,6 +221,24 @@ case "$libc" in
      ;;
  esac
  
index f8f8a65deb5c3b24f7db85df5fc2c173ddd67cab..9f9f812197d35467f2f32a9c18ea4bde6a8c48b4 100644 (file)
@@ -1,6 +1,6 @@
 --- a/Makefile.SH
 +++ b/Makefile.SH
-@@ -315,22 +315,11 @@ MINIPERL = \$(LDLIBPTH) ./miniperl\$(EXE
+@@ -316,22 +316,11 @@ MANIFEST_SRT = MANIFEST.srt
  
  !GROK!THIS!
  
diff --git a/lang/perl/patches/310-recompile-hack.patch b/lang/perl/patches/310-recompile-hack.patch
new file mode 100644 (file)
index 0000000..05a8e9b
--- /dev/null
@@ -0,0 +1,16 @@
+perl: Work around recompile failures
+
+Apparently, recompiling/relinking fails under some circumstances. This
+patch has been reported to work around that issue.
+
+--- a/Makefile.SH
++++ b/Makefile.SH
+@@ -818,7 +818,7 @@ $(LIBPERL): $& $(obj) $(DYNALOADER) $(LI
+       true)
+               $spitshell >>$Makefile <<'!NO!SUBS!'
+       rm -f $@
+-      $(LD) -o $@ $(SHRPLDFLAGS) $(obj) $(DYNALOADER) $(libs)
++      $(CC) -o $@ $(SHRPLDFLAGS) $(obj) $(DYNALOADER) $(libs)
+ !NO!SUBS!
+               case "$osname" in
+               aix)
index 32914dde72cab619853386557a059a49efb6ec6a..f90e5d9ca73c21ace03493ca0a5cfbd9a433af3c 100644 (file)
@@ -1,7 +1,5 @@
-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";
  }
index 27ee75749a76f50f2235ee7f65a0feb877464cc8..e60ee8cc1f10808f0a54a55e8160f0b206b54f21 100644 (file)
@@ -5,10 +5,8 @@ We can't provide either with busybox. Just skip it for now.
 
 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.
diff --git a/lang/perl/patches/900-CVE-2015-8607.patch b/lang/perl/patches/900-CVE-2015-8607.patch
new file mode 100644 (file)
index 0000000..5f1c1cb
--- /dev/null
@@ -0,0 +1,57 @@
+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";
++}
index a6f4eaaf933eb9ef18b7ff09e54e7791b61d00c0..c64942fedee3b8bc161e029f51caa4f4b1c7cd02 100644 (file)
@@ -4,12 +4,12 @@
 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
@@ -26,7 +26,7 @@ define perlmod/host/relink
        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
index cc31822fbeb350c742300e5f7f92ab95c8a04e2b..9d02a2d29c83589c1bc2fe6e8f02bfe80f72087e 100644 (file)
@@ -1,5 +1,5 @@
 #
-# 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.
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=php
-PKG_VERSION:=5.6.15
+PKG_VERSION:=5.6.17
 PKG_RELEASE:=1
 
 PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>, Michael Heimpold <mhei@heimpold.de>
@@ -16,9 +16,9 @@ PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>, Michael Heimpold <mhei@heimp
 PKG_LICENSE:=PHPv3.01
 PKG_LICENSE_FILES:=LICENSE
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=http://www.php.net/distributions/
-PKG_MD5SUM:=bdfa8fb1b895a25e1cc05c162f9ae5fc
+PKG_MD5SUM:=5e080e4b7df5db24f1b64313f8114bd8
 
 PKG_FIXUP:=libtool autoreconf
 PKG_BUILD_PARALLEL:=1
@@ -491,10 +491,10 @@ define Build/InstallDev
        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
index ee2a5ce771a20d74ff857c2ca1f1b2eff111b4d9..88d3a98bb259bdf04346f84d61c7914825c72807 100644 (file)
@@ -15,11 +15,11 @@ endef
 
 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
 
diff --git a/lang/python-cffi/Makefile b/lang/python-cffi/Makefile
new file mode 100644 (file)
index 0000000..b418bc1
--- /dev/null
@@ -0,0 +1,57 @@
+#
+# 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:=cffi
+PKG_VERSION:=1.4.2
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/c/cffi
+PKG_MD5SUM:=81357fe5042d00650b85b728cc181df2
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+HOST_BUILD_DEPENDS:=libffi/host python/host python-setuptools/host python-pycparser/host
+
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/host-build.mk
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+$(call include_mk, python-host.mk)
+
+define Package/python-cffi
+       SECTION:=lang
+       CATEGORY:=Languages
+       SUBMENU:=Python
+       TITLE:=python-cffi
+       URL:=http://cffi.readthedocs.org/
+       DEPENDS:=+libffi +python-light +python-pycparser
+endef
+
+define Package/python-cffi/description
+Foreign Function Interface for Python calling C code.
+endef
+
+define Build/Compile
+       $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
+endef
+
+define Host/Compile
+       $(call Build/Compile/HostPyMod,,install --prefix="/usr" --root="$(STAGING_DIR)/host")
+endef
+
+define Host/Install
+endef
+
+$(eval $(call HostBuild))
+
+$(eval $(call PyPackage,python-cffi))
+$(eval $(call BuildPackage,python-cffi))
diff --git a/lang/python-cryptography/Makefile b/lang/python-cryptography/Makefile
new file mode 100644 (file)
index 0000000..6959f6d
--- /dev/null
@@ -0,0 +1,53 @@
+#
+# 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:=cryptography
+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/c/cryptography
+PKG_MD5SUM:=15eeba9e31f852bac21155baa3dfbc61
+
+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))
diff --git a/lang/python-enum34/Makefile b/lang/python-enum34/Makefile
new file mode 100644 (file)
index 0000000..351a9eb
--- /dev/null
@@ -0,0 +1,49 @@
+#
+# 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:=enum34
+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:=025bb71b3f9d2fad15d0ee53e48dc873
+
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=enum/LICENSE
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-enum34
+       SECTION:=lang
+       CATEGORY:=Languages
+       SUBMENU:=Python
+       TITLE:=python-enum34
+       URL:=https://pypi.python.org/pypi/enum34/
+       DEPENDS:=+python-light
+endef
+
+define Package/python-enum34/description
+enum34 is the new Python stdlib enum module available in Python 3.4
+backported for previous versions of Python from 2.4 to 3.3.
+endef
+
+define PyPackage/python-enum34/filespec
++|$(PYTHON_PKG_DIR)
+-|$(PYTHON_PKG_DIR)/enum/test_enum.py
+endef
+
+define Build/Compile
+       $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+$(eval $(call PyPackage,python-enum34))
+$(eval $(call BuildPackage,python-enum34))
diff --git a/lang/python-enum34/patches/001-omit-docs.patch b/lang/python-enum34/patches/001-omit-docs.patch
new file mode 100644 (file)
index 0000000..7391ac5
--- /dev/null
@@ -0,0 +1,19 @@
+diff -Nur a/setup.py b/setup.py
+--- a/setup.py 2015-11-29 17:31:14.000000000 +0800
++++ b/setup.py 2015-12-07 18:39:00.863378684 +0800
+@@ -13,15 +13,6 @@
+        version='1.1.1',\r
+        url='https://pypi.python.org/pypi/enum34',\r
+        packages=['enum'],\r
+-       package_data={\r
+-           'enum' : [\r
+-               'LICENSE',\r
+-               'README',\r
+-               'doc/enum.rst',\r
+-               'doc/enum.pdf',\r
+-               'test_enum.py',\r
+-               ]\r
+-           },\r
+        license='BSD License',\r
+        description='Python 3.4 Enum backported to 3.3, 3.2, 3.1, 2.7, 2.6, 2.5, and 2.4',\r
+        long_description=long_desc,\r
diff --git a/lang/python-idna/Makefile b/lang/python-idna/Makefile
new file mode 100644 (file)
index 0000000..af0b860
--- /dev/null
@@ -0,0 +1,48 @@
+#
+# 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:=idna
+PKG_VERSION:=2.0
+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_BUILD_DEPENDS:=python python-setuptools
+
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=LICENSE.rst
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-idna
+       SECTION:=lang
+       CATEGORY:=Languages
+       SUBMENU:=Python
+       TITLE:=python-idna
+       URL:=https://github.com/kjd/idna
+       DEPENDS:=+python-light
+endef
+
+define Package/python-idna/description
+A library to support the Internationalised Domain Names in Applications
+(IDNA) protocol as specified in RFC 5891. This version of the protocol
+is often referred to as "IDNA2008" and can produce different results
+from the earlier standard from 2003.
+endef
+
+define Build/Compile
+       $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+$(eval $(call PyPackage,python-idna))
+$(eval $(call BuildPackage,python-idna))
diff --git a/lang/python-ipaddress/Makefile b/lang/python-ipaddress/Makefile
new file mode 100644 (file)
index 0000000..65b4a05
--- /dev/null
@@ -0,0 +1,44 @@
+#
+# 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:=ipaddress
+PKG_VERSION:=1.0.15
+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_BUILD_DEPENDS:=python python-setuptools
+
+PKG_LICENSE:=Python-2.0
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-ipaddress
+       SECTION:=lang
+       CATEGORY:=Languages
+       SUBMENU:=Python
+       TITLE:=python-ipaddress
+       URL:=https://github.com/phihag/ipaddress
+       DEPENDS:=+python-light
+endef
+
+define Package/python-ipaddress/description
+Python 3.3+'s ipaddress for Python 2.6, 2.7, 3.2.
+endef
+
+define Build/Compile
+       $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+$(eval $(call PyPackage,python-ipaddress))
+$(eval $(call BuildPackage,python-ipaddress))
index 1d20ca92e6d24c123c7ec6f7295356c1bbd4b10d..f260e7ffee1da6c5bff80015d278087dc2e4ede9 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-pip
 PKG_VERSION:=7.1.2
-PKG_RELEASE:=1
+PKG_RELEASE:=3
 
 PKG_SOURCE:=pip-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pip/
@@ -27,7 +27,7 @@ define Package/python-pip
   CATEGORY:=Languages
   TITLE:=Tool for installing Python packages.
   URL:=https://pip.pypa.io
-  DEPENDS:=+python +python-setuptools
+  DEPENDS:=+python +python-setuptools +ca-certificates
   MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
 endef
 
@@ -48,8 +48,9 @@ define PyPackage/python-pip/filespec
 endef
 
 define PyPackage/python-pip/install
-       $(INSTALL_DIR) $(1)/usr/bin
-       $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin
+       $(INSTALL_DIR) $(1)/usr/bin $(1)/etc
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin
+       $(INSTALL_CONF) ./files/pip.conf $(1)/etc/
 endef
 
 $(eval $(call PyPackage,python-pip))
diff --git a/lang/python-pip/files/pip.conf b/lang/python-pip/files/pip.conf
new file mode 100644 (file)
index 0000000..89339e9
--- /dev/null
@@ -0,0 +1,3 @@
+[global]
+cache-dir=/tmp/.cache
+log-file=/tmp/pip-log.txt
diff --git a/lang/python-ply/Makefile b/lang/python-ply/Makefile
new file mode 100644 (file)
index 0000000..5f1a95d
--- /dev/null
@@ -0,0 +1,65 @@
+#
+# 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:=ply
+PKG_VERSION:=3.8
+PKG_RELEASE:=2
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://www.dabeaz.com/ply
+PKG_MD5SUM:=94726411496c52c87c2b9429b12d5c50
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+HOST_BUILD_DEPENDS:=python/host python-setuptools/host
+
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=README.md
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/host-build.mk
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+$(call include_mk, python-host.mk)
+
+define Package/python-ply
+       SECTION:=lang
+       CATEGORY:=Languages
+       SUBMENU:=Python
+       TITLE:=python-ply
+       URL:=http://www.dabeaz.com/ply/
+       DEPENDS:=+python-light
+endef
+
+define Package/python-ply/description
+PLY is a 100% Python implementation of the common parsing tools lex
+and yacc.
+endef
+
+define Build/Compile
+       $(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="/usr" --root="$(STAGING_DIR)/host")
+endef
+
+define Host/Install
+endef
+
+$(eval $(call HostBuild))
+
+$(eval $(call PyPackage,python-ply))
+$(eval $(call BuildPackage,python-ply))
index b55eb001e28e89675568fb73350d99003fef6177..5b0b6aa3b2b4b0ba191357a6d3d844c6c0487094 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-psycopg2
 PKG_VERSION:=2.6.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 PKG_MAINTAINER:=Dmitry Trefilov <the-alien@live.ru>
 PKG_LICENSE:=LGPL-3.0+
 PKG_LICENSE_FILES:=LICENSE
@@ -39,9 +39,10 @@ define Package/python-psycopg2/description
 endef
 
 define Build/Compile
-       $(call Build/Compile/PyMod,.,build_py)
-       $(call Build/Compile/PyMod,,build_ext --pg-config="$(STAGING_DIR)/usr/bin/pg_config")
-       $(call Build/Compile/PyMod,.,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+       # The PATH var is required so that psycopg2's setup.py script finds pg_config
+       $(call Build/Compile/PyMod,., \
+               install --prefix=/usr --root=$(PKG_INSTALL_DIR), \
+               PATH=$(STAGING_DIR)/usr/bin:$(PATH))
 endef
 
 define Package/python-psycopg2/install
diff --git a/lang/python-pyasn1/Makefile b/lang/python-pyasn1/Makefile
new file mode 100644 (file)
index 0000000..07549db
--- /dev/null
@@ -0,0 +1,48 @@
+#
+# 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
+PKG_VERSION:=0.1.9
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pyasn1
+PKG_MD5SUM:=f00a02a631d4016818659d1cc38d229a
+
+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
+       SECTION:=lang
+       CATEGORY:=Languages
+       SUBMENU:=Python
+       TITLE:=python-pyasn1
+       URL:=http://pyasn1.sourceforge.net/
+       DEPENDS:=+python-light
+endef
+
+define Package/python-pyasn1/description
+This is an implementation of ASN.1 types and codecs in Python programming
+language. It has been first written to support particular protocol (SNMP)
+but then generalized to be suitable for a wide range of protocols
+based on ASN.1 specification.
+endef
+
+define Build/Compile
+       $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+$(eval $(call PyPackage,python-pyasn1))
+$(eval $(call BuildPackage,python-pyasn1))
diff --git a/lang/python-pycparser/Makefile b/lang/python-pycparser/Makefile
new file mode 100644 (file)
index 0000000..b657cd8
--- /dev/null
@@ -0,0 +1,59 @@
+#
+# 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:=pycparser
+PKG_VERSION:=2.14
+PKG_RELEASE:=2
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pycparser
+PKG_MD5SUM:=a2bc8d28c923b4fe2b2c3b4b51a4f935
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+HOST_BUILD_DEPENDS:=python/host python-setuptools/host python-ply/host
+
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+include $(INCLUDE_DIR)/host-build.mk
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+$(call include_mk, python-host.mk)
+
+define Package/python-pycparser
+       SECTION:=lang
+       CATEGORY:=Languages
+       SUBMENU:=Python
+       TITLE:=python-pycparser
+       URL:=https://github.com/eliben/pycparser
+       DEPENDS:=+python-light +python-ply
+endef
+
+define Package/python-pycparser/description
+pycparser is a parser for the C language, written in pure Python. It is a
+module designed to be easily integrated into applications that need to parse
+C source code.
+endef
+
+define Build/Compile
+       $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)")
+endef
+
+define Host/Compile
+       $(call Build/Compile/HostPyMod,,install --prefix="/usr" --root="$(STAGING_DIR)/host")
+endef
+
+define Host/Install
+endef
+
+$(eval $(call HostBuild))
+
+$(eval $(call PyPackage,python-pycparser))
+$(eval $(call BuildPackage,python-pycparser))
diff --git a/lang/python-pycparser/patches/001-use-external-ply.patch b/lang/python-pycparser/patches/001-use-external-ply.patch
new file mode 100644 (file)
index 0000000..96b1d03
--- /dev/null
@@ -0,0 +1,41 @@
+diff --git a/pycparser/c_lexer.py b/pycparser/c_lexer.py
+index cbb9d26..cbd7742 100644
+--- a/pycparser/c_lexer.py
++++ b/pycparser/c_lexer.py
+@@ -9,8 +9,8 @@
+ import re
+ import sys
+-from .ply import lex
+-from .ply.lex import TOKEN
++from ply import lex
++from ply.lex import TOKEN
+ class CLexer(object):
+diff --git a/pycparser/c_parser.py b/pycparser/c_parser.py
+index f4f7453..5c0ca88 100644
+--- a/pycparser/c_parser.py
++++ b/pycparser/c_parser.py
+@@ -8,7 +8,7 @@
+ #------------------------------------------------------------------------------
+ import re
+-from .ply import yacc
++from ply import yacc
+ from . import c_ast
+ from .c_lexer import CLexer
+diff --git a/setup.py b/setup.py
+index fdccbb3..036a10b 100644
+--- a/setup.py
++++ b/setup.py
+@@ -49,7 +49,7 @@ setup(
+     classifiers = [
+         'Programming Language :: Python :: 2',
+         'Programming Language :: Python :: 3',],
+-    packages=['pycparser', 'pycparser.ply'],
++    packages=['pycparser'],
+     package_data={'pycparser': ['*.cfg']},
+     cmdclass={'install': install, 'sdist': sdist},
+ )
diff --git a/lang/python-pyopenssl/Makefile b/lang/python-pyopenssl/Makefile
new file mode 100644 (file)
index 0000000..187e19f
--- /dev/null
@@ -0,0 +1,45 @@
+#
+# 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:=pyOpenSSL
+PKG_VERSION:=0.15.1
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pyOpenSSL
+PKG_MD5SUM:=f447644afcbd5f0a1f47350fec63a4c6
+
+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))
diff --git a/lang/python-pyopenssl/patches/001-omit-tests.patch b/lang/python-pyopenssl/patches/001-omit-tests.patch
new file mode 100644 (file)
index 0000000..b3c387e
--- /dev/null
@@ -0,0 +1,27 @@
+diff --git a/setup.py b/setup.py
+index c376f87..6444fac 100755
+--- a/setup.py
++++ b/setup.py
+@@ -22,14 +22,7 @@ setup(name='pyOpenSSL', version=__version__,
+                      'OpenSSL.rand',
+                      'OpenSSL.crypto',
+                      'OpenSSL.SSL',
+-                     'OpenSSL.version',
+-                     'OpenSSL.test.__init__',
+-                     'OpenSSL.test.util',
+-                     'OpenSSL.test.test_crypto',
+-                     'OpenSSL.test.test_rand',
+-                     'OpenSSL.test.test_ssl',
+-                     'OpenSSL.test.test_tsafe',
+-                     'OpenSSL.test.test_util',],
++                     'OpenSSL.version',],
+       description = 'Python wrapper module around the OpenSSL library',
+       author = 'Jean-Paul Calderone',
+       author_email = 'exarkun@twistedmatrix.com',
+@@ -74,5 +67,4 @@ High-level wrapper around a subset of the OpenSSL library, includes
+         'Topic :: Security :: Cryptography',
+         'Topic :: Software Development :: Libraries :: Python Modules',
+         'Topic :: System :: Networking',
+-        ],
+-      test_suite="OpenSSL")
++        ])
index c22024b21e9c0720ed872d32920dda44328ee1d0..880dd0ba8423a9613f4495f63dfdeaedce47aa53 100644 (file)
@@ -8,17 +8,22 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-setuptools
-PKG_VERSION:=18.5
+PKG_VERSION:=19.4
 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:=c5a7d90c1e0acf8c4ec5c2bf31bc25b5
+
+HOST_BUILD_DEPENDS:=python/host
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/setuptools-$(PKG_VERSION)
+HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/setuptools-$(PKG_VERSION)
 
+include $(INCLUDE_DIR)/host-build.mk
 include $(INCLUDE_DIR)/package.mk
 $(call include_mk, python-package.mk)
+$(call include_mk, python-host.mk)
 
 define Package/python-setuptools
   SUBMENU:=Python
@@ -26,7 +31,7 @@ define Package/python-setuptools
   CATEGORY:=Languages
   TITLE:=Tool for installing Python packages.
   URL:=https://bitbucket.org/pypa/setuptools
-  DEPENDS:=+python
+  DEPENDS:=+python +ca-certificates
   MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
 endef
 
@@ -53,6 +58,18 @@ define PyPackage/python-setuptools/install
        $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
 endef
 
+define Host/Compile
+       $(call Build/Compile/HostPyMod,,\
+               install --root="$(STAGING_DIR)/host" --prefix="/usr" \
+               --single-version-externally-managed \
+       )
+endef
+
+define Host/Install
+endef
+
+$(eval $(call HostBuild))
+
 $(eval $(call PyPackage,python-setuptools))
 $(eval $(call BuildPackage,python-setuptools))
 
index 0a2d50baf11cbb4b023b9f38f7c899995f15a0b0..f48127fab316e90432822e297e2705bf5b2f6eb0 100644 (file)
@@ -1,16 +1,16 @@
 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)
diff --git a/lang/python-six/Makefile b/lang/python-six/Makefile
new file mode 100644 (file)
index 0000000..9f07049
--- /dev/null
@@ -0,0 +1,48 @@
+#
+# 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:=six
+PKG_VERSION:=1.10.0
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/s/six
+PKG_MD5SUM:=34eed507548117b2ab523ab14b2f8b55
+
+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-six
+       SECTION:=lang
+       CATEGORY:=Languages
+       SUBMENU:=Python
+       TITLE:=python-six
+       URL:=https://pypi.python.org/pypi/six
+       DEPENDS:=+python-light
+endef
+
+define Package/python-six/description
+Six is a Python 2 and 3 compatibility library.  It provides utility functions
+for smoothing over the differences between the Python versions with the goal of
+writing Python code that is compatible on both Python versions.  See the
+documentation for more information on what is provided.
+endef
+
+define Build/Compile
+       $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+$(eval $(call PyPackage,python-six))
+$(eval $(call BuildPackage,python-six))
index 698f4bee6d5736aa22f417db7c4879f26e1f2b3e..a75676964c0094128f83d24f7c119a8af3041471 100644 (file)
@@ -12,11 +12,11 @@ include ./files/python-package.mk
 
 PKG_NAME:=python
 PKG_VERSION:=$(PYTHON_VERSION).$(PYTHON_VERSION_MICRO)
-PKG_RELEASE:=6
+PKG_RELEASE:=3
 
 PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=http://www.python.org/ftp/python/$(PKG_VERSION)
-PKG_MD5SUM:=c685ef0b8e9f27b5e3db5db12b268ac6
+PKG_SOURCE_URL:=https://www.python.org/ftp/python/$(PKG_VERSION)
+PKG_MD5SUM:=1dbcc848b4cd8399a8199d000f9f823c
 
 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
@@ -29,7 +29,7 @@ PKG_BUILD_DIR:=$(BUILD_DIR)/Python-$(PKG_VERSION)
 HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/Python-$(PKG_VERSION)
 
 PKG_BUILD_DEPENDS:=python/host
-HOST_BUILD_DEPENDS:=bzip2/host
+HOST_BUILD_DEPENDS:=bzip2/host expat/host
 
 include $(INCLUDE_DIR)/host-build.mk
 include $(INCLUDE_DIR)/package.mk
@@ -39,7 +39,7 @@ define Package/python/Default
   SECTION:=lang
   CATEGORY:=Languages
   TITLE:=Python $(PYTHON_VERSION) programming language
-  URL:=http://www.python.org/
+  URL:=https://www.python.org/
   MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
 endef
 
@@ -75,16 +75,14 @@ define Package/python-light/description
   into separate packages.
 endef
 
-# Define newline here, since it's not defined in OpenWRT
-define newline
-
-
-endef
-
 PYTHON_LIB_FILES_DEL:=
 PYTHON_PACKAGES:=
+PYTHON_PACKAGES_DEPENDS:=
 define PyBasePackage
   PYTHON_PACKAGES+=$(1)
+  ifeq ($(3),)
+    PYTHON_PACKAGES_DEPENDS+=$(1)
+  endif
   PYTHON_LIB_FILES_DEL+=$(2)
   define PyPackage/$(1)/filespec
     $(subst $(space),$(newline),$(foreach lib_file,$(2),+|$(lib_file)))
@@ -95,7 +93,7 @@ include ./files/python-package-*.mk
 
 define Package/python
 $(call Package/python/Default)
-  DEPENDS:=+python-light $(foreach package,$(PYTHON_PACKAGES),+$(package))
+  DEPENDS:=+python-light $(foreach package,$(PYTHON_PACKAGES_DEPENDS),+$(package))
 endef
 
 define Package/python/description
@@ -138,18 +136,21 @@ define Build/InstallDev
        $(INSTALL_DIR) $(STAGING_DIR)/mk/
        $(INSTALL_DIR) $(1)/usr/include/ $(1)/usr/lib/ $(1)/usr/lib/pkgconfig
        $(INSTALL_DIR) $(1)/usr/lib/python$(PYTHON_VERSION)/
-       $(INSTALL_DATA) ./files/python-package.mk $(STAGING_DIR)/mk/
+       $(INSTALL_DATA) \
+               ./files/python-package.mk \
+               ./files/python-host.mk \
+               $(STAGING_DIR)/mk/
        $(CP) \
                $(PKG_INSTALL_DIR)/usr/include/python$(PYTHON_VERSION) \
                $(1)/usr/include/
        $(CP) \
-               $(STAGING_DIR_HOST)/lib/python$(PYTHON_VERSION) \
+               $(STAGING_DIR)/host/usr/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 \
@@ -187,12 +188,10 @@ endef
 
 define PyPackage/python-light/filespec
 +|/usr/lib/python$(PYTHON_VERSION)
--|/usr/lib/python$(PYTHON_VERSION)/config
 -|/usr/lib/python$(PYTHON_VERSION)/distutils/cygwinccompiler.py
 -|/usr/lib/python$(PYTHON_VERSION)/distutils/command/wininst*
 -|/usr/lib/python$(PYTHON_VERSION)/ensurepip
 -|/usr/lib/python$(PYTHON_VERSION)/idlelib
--|/usr/lib/python$(PYTHON_VERSION)/lib2to3
 -|/usr/lib/python$(PYTHON_VERSION)/lib-tk
 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_testcapi.so
 -|/usr/lib/python$(PYTHON_VERSION)/pdb.doc
@@ -222,16 +221,16 @@ HOST_CONFIGURE_ARGS+= \
        --without-cxx-main \
        --without-pymalloc \
        --with-threads \
-       --with-system-expat=$(STAGING_DIR_HOST) \
-       --prefix=$(STAGING_DIR_HOST) \
+       --prefix=$(STAGING_DIR)/host/usr \
+       --with-system-expat=$(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))
diff --git a/lang/python/files/python-host.mk b/lang/python/files/python-host.mk
new file mode 100644 (file)
index 0000000..65d9ca5
--- /dev/null
@@ -0,0 +1,59 @@
+#
+# Copyright (C) 2015 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_PKG_DIR:=/usr/lib/python$(PYTHON_VERSION)/site-packages
+
+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"; \
+       else \
+               export PYTHONPATH="$(PYTHONPATH)"; \
+               export _python_sysroot="$(STAGING_DIR)"; \
+       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" \
+       _python_prefix="/usr" \
+       _python_exec_prefix="/usr"
+
+# $(1) => build subdir
+# $(2) => additional arguments to setup.py
+# $(3) => additional variables
+define Build/Compile/HostPyMod
+       $(call HostPython, \
+               cd $(HOST_BUILD_DIR)/$(strip $(1)); \
+               CC="$(HOSTCC)" \
+               CCSHARED="$(HOSTCC) $(HOST_FPIC)" \
+               CXX="$(HOSTCXX)" \
+               LD="$(HOSTCC)" \
+               LDSHARED="$(HOSTCC) -shared" \
+               CFLAGS="$(HOST_CFLAGS)" \
+               CPPFLAGS="$(HOST_CPPFLAGS) -I$(HOST_PYTHON_INC_DIR)" \
+               LDFLAGS="$(HOST_LDFLAGS) -lpython$(PYTHON_VERSION)" \
+               _PYTHON_HOST_PLATFORM=linux2 \
+               __PYVENV_LAUNCHER__="/usr/bin/$(PYTHON)" \
+               $(3) \
+               , \
+               ./setup.py $(2) \
+               , \
+               HOST \
+       )
+endef
+
diff --git a/lang/python/files/python-package-dev.mk b/lang/python/files/python-package-dev.mk
new file mode 100644 (file)
index 0000000..2f807b2
--- /dev/null
@@ -0,0 +1,27 @@
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-dev
+$(call Package/python/Default)
+  TITLE:=Python $(PYTHON_VERSION) development files
+  DEPENDS:=+python
+endef
+
+define PyPackage/python-dev/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(CP) $(PKG_INSTALL_DIR)/usr/bin/python*config $(1)/usr/bin
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpython$(PYTHON_VERSION).so* $(1)/usr/lib
+endef
+
+$(eval $(call PyBasePackage,python-dev, \
+       /usr/lib/python$(PYTHON_VERSION)/config \
+       /usr/include/python$(PYTHON_VERSION) \
+       /usr/lib/pkgconfig \
+       , \
+       DO_NOT_ADD_TO_PACKAGE_DEPENDS \
+))
+
diff --git a/lang/python/files/python-package-lib2to3.mk b/lang/python/files/python-package-lib2to3.mk
new file mode 100644 (file)
index 0000000..5d6942d
--- /dev/null
@@ -0,0 +1,18 @@
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python-lib2to3
+$(call Package/python/Default)
+  TITLE:=Python $(PYTHON_VERSION) lib2to3 module
+  DEPENDS:=+python
+endef
+
+$(eval $(call PyBasePackage,python-lib2to3, \
+       /usr/lib/python$(PYTHON_VERSION)/lib2to3 \
+       , \
+       DO_NOT_ADD_TO_PACKAGE_DEPENDS \
+))
index 69074ccb4b6e3bc358a14f6f4505def18341f3e8..bb82f0170833baa6e2d0abfbe6fb33d40c4843d7 100644 (file)
@@ -8,7 +8,7 @@
 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, \
index b4be3a8ee98569b86656561c098a752ee7feb3af..e8c049224b8ca3beeb893a68df4601917e293a09 100644 (file)
@@ -6,7 +6,7 @@
 #
 
 PYTHON_VERSION:=2.7
-PYTHON_VERSION_MICRO:=10
+PYTHON_VERSION_MICRO:=11
 
 PYTHON_DIR:=$(STAGING_DIR)/usr
 PYTHON_BIN_DIR:=$(PYTHON_DIR)/bin
@@ -17,21 +17,10 @@ PYTHON_PKG_DIR:=/usr/lib/python$(PYTHON_VERSION)/site-packages
 
 PYTHON:=python$(PYTHON_VERSION)
 
-HOST_PYTHON_LIB_DIR:=$(STAGING_DIR_HOST)/lib/python$(PYTHON_VERSION)
-HOST_PYTHON_BIN:=$(STAGING_DIR_HOST)/bin/python2
+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)
-define HostPython
-       (       export PYTHONPATH="$(PYTHONPATH)"; \
-               export PYTHONOPTIMIZE=""; \
-               export PYTHONDONTWRITEBYTECODE=1; \
-               export _python_sysroot="$(STAGING_DIR)"; \
-               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.
@@ -94,6 +83,8 @@ define PyPackage
   endef
 endef
 
+$(call include_mk, python-host.mk)
+
 # $(1) => build subdir
 # $(2) => additional arguments to setup.py
 # $(3) => additional variables
@@ -118,3 +109,21 @@ define Build/Compile/PyMod
        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
+
diff --git a/lang/python3-pip/Makefile b/lang/python3-pip/Makefile
new file mode 100644 (file)
index 0000000..2383520
--- /dev/null
@@ -0,0 +1,60 @@
+#
+# 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:=python3-pip
+PKG_VERSION:=7.1.2
+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_LICENSE:=MIT
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/pip-$(PKG_VERSION)
+PKG_USE_MIPS16:=0
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python3-package.mk)
+
+define Package/python3-pip
+       SUBMENU:=Python
+       SECTION:=lang
+       CATEGORY:=Languages
+       TITLE:=Tool for installing Python $(PYTHON3_VERSION) packages.
+       URL:=https://pip.pypa.io
+       DEPENDS:=+python3 +python3-dev +python3-lib2to3 +python3-setuptools
+       MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
+endef
+
+define Package/python3-pip/description
+       A tool for installing and managing Python $(PYTHON3_VERSION) packages.
+endef
+
+define Build/Compile
+       $(call Build/Compile/Py3Mod,,\
+               install --root="$(PKG_INSTALL_DIR)" --prefix="/usr" \
+               --single-version-externally-managed \
+       )
+endef
+
+define Py3Package/python3-pip/filespec
++|$(PYTHON3_PKG_DIR)
+-|$(PYTHON3_PKG_DIR)/_vendor/distlib/*.exe
+-|$(PYTHON3_PKG_DIR)/utils/outdated.py
+endef
+
+define Py3Package/python3-pip/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(CP) $(PKG_INSTALL_DIR)/usr/bin/pip$(PYTHON3_VERSION) $(1)/usr/bin
+       $(LN) pip$(PYTHON3_VERSION) $(1)/usr/bin/pip3
+endef
+
+$(eval $(call Py3Package,python3-pip))
+$(eval $(call BuildPackage,python3-pip))
diff --git a/lang/python3-pip/patches/0001-remove-self-version-checking.patch b/lang/python3-pip/patches/0001-remove-self-version-checking.patch
new file mode 100644 (file)
index 0000000..b8c0bb6
--- /dev/null
@@ -0,0 +1,70 @@
+From 771a1407b15538697a7f38209e40dbbf58828d33 Mon Sep 17 00:00:00 2001
+From: Florian Fieber <florian@florianfieber.de>
+Date: Tue, 9 Jun 2015 15:59:04 +0200
+Subject: [PATCH] Remove self version checking
+
+Signed-off-by: Florian Fieber <florian@florianfieber.de>
+---
+ pip/basecommand.py | 10 ----------
+ pip/cmdoptions.py  | 10 ----------
+ 2 files changed, 20 deletions(-)
+
+diff --git a/pip/basecommand.py b/pip/basecommand.py
+index 854d113..c2337a4 100644
+--- a/pip/basecommand.py
++++ b/pip/basecommand.py
+@@ -22,7 +22,6 @@ from pip.status_codes import (
+ from pip.utils import get_prog, normalize_path
+ from pip.utils.deprecation import RemovedInPip8Warning
+ from pip.utils.logging import IndentingFormatter
+-from pip.utils.outdated import pip_version_check
+ __all__ = ['Command']
+@@ -237,15 +236,6 @@ class Command(object):
+             logger.critical('Exception:', exc_info=True)
+             return UNKNOWN_ERROR
+-        finally:
+-            # Check if we're using the latest version of pip available
+-            if (not options.disable_pip_version_check and not
+-                    getattr(options, "no_index", False)):
+-                with self._build_session(
+-                        options,
+-                        retries=0,
+-                        timeout=min(5, options.timeout)) as session:
+-                    pip_version_check(session)
+         return SUCCESS
+diff --git a/pip/cmdoptions.py b/pip/cmdoptions.py
+index 9a0446a..4fa29d3 100644
+--- a/pip/cmdoptions.py
++++ b/pip/cmdoptions.py
+@@ -514,15 +514,6 @@ no_clean = partial(
+     default=False,
+     help="Don't clean up build directories.")
+-disable_pip_version_check = partial(
+-    Option,
+-    "--disable-pip-version-check",
+-    dest="disable_pip_version_check",
+-    action="store_true",
+-    default=False,
+-    help="Don't periodically check PyPI to determine whether a new version "
+-         "of pip is available for download. Implied with --no-index.")
+-
+ # Deprecated, Remove later
+ always_unzip = partial(
+     Option,
+@@ -560,7 +551,6 @@ general_group = {
+         client_cert,
+         cache_dir,
+         no_cache,
+-        disable_pip_version_check,
+     ]
+ }
+-- 
+2.6.2
+
diff --git a/lang/python3-setuptools/Makefile b/lang/python3-setuptools/Makefile
new file mode 100644 (file)
index 0000000..ea299ea
--- /dev/null
@@ -0,0 +1,60 @@
+#
+# 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:=python3-setuptools
+PKG_VERSION:=19.4
+PKG_RELEASE:=1
+
+PKG_SOURCE:=setuptools-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/s/setuptools/
+PKG_MD5SUM:=c5a7d90c1e0acf8c4ec5c2bf31bc25b5
+
+PKG_LICENSE:=PSF
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/setuptools-$(PKG_VERSION)
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python3-package.mk)
+
+define Package/python3-setuptools
+       SUBMENU:=Python
+       SECTION:=lang
+       CATEGORY:=Languages
+       TITLE:=Tool for installing Python $(PYTHON3_VERSION) packages.
+       URL:=https://bitbucket.org/pypa/setuptools
+       DEPENDS:=+python3 +python3-dev +python3-lib2to3
+       MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
+endef
+
+define Package/python3-setuptools/description
+       Easily download, build, install, upgrade, and uninstall Python $(PYTHON3_VERSION) packages
+endef
+
+define Build/Compile
+       $(call Build/Compile/Py3Mod,,\
+               install --root="$(PKG_INSTALL_DIR)" --prefix="/usr" \
+               --single-version-externally-managed \
+       )
+endef
+
+define Build/InstallDev
+       $(INSTALL_DIR) $(PYTHON3_LIB_DIR)
+       $(CP) \
+               $(PKG_INSTALL_DIR)$(PYTHON3_PKG_DIR)/* \
+               $(PYTHON3_LIB_DIR)
+endef
+
+define Py3Package/python3-setuptools/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/easy_install-$(PYTHON3_VERSION) $(1)/usr/bin/
+       $(LN) easy_install-$(PYTHON3_VERSION) $(1)/usr/bin/easy_install3
+endef
+
+$(eval $(call Py3Package,python3-setuptools))
+$(eval $(call BuildPackage,python3-setuptools))
diff --git a/lang/python3-setuptools/patches/0001-remove-windows-support.patch b/lang/python3-setuptools/patches/0001-remove-windows-support.patch
new file mode 100644 (file)
index 0000000..f48127f
--- /dev/null
@@ -0,0 +1,20 @@
+diff --git a/setuptools/dist.py b/setuptools/dist.py
+index 7785541..23108c7 100644
+--- a/setuptools/dist.py
++++ b/setuptools/dist.py
+@@ -18,7 +18,6 @@ from setuptools.extern.six.moves import map
+ from pkg_resources.extern import packaging
+ from setuptools.depends import Require
+-from setuptools import windows_support
+ import pkg_resources
+@@ -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)
+-            windows_support.hide_file(egg_cache_dir)
+             readme_txt_filename = os.path.join(egg_cache_dir, 'README.txt')
+             with open(readme_txt_filename, 'w') as f:
+                 f.write('This directory contains eggs that were downloaded '
diff --git a/lang/python3-setuptools/patches/0002-fix-pyvenv-environment-get.patch b/lang/python3-setuptools/patches/0002-fix-pyvenv-environment-get.patch
new file mode 100644 (file)
index 0000000..c46a5f3
--- /dev/null
@@ -0,0 +1,13 @@
+diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py
+index df1655b..24c34e5 100755
+--- a/setuptools/command/easy_install.py
++++ b/setuptools/command/easy_install.py
+@@ -1885,7 +1885,7 @@ class CommandSpec(list):
+             return param
+         if isinstance(param, list):
+             return cls(param)
+-        if param is None:
++        if param is None or os.environ.get('__PYVENV_LAUNCHER__'):
+             return cls.from_environment()
+         # otherwise, assume it's a string.
+         return cls.from_string(param)
index fa3d6e62e861b7d891b06098acc4874fca69288d..cdaa93a099d8ea3b604bf2ba0ccbf4577ecfadda 100644 (file)
@@ -14,11 +14,11 @@ PYTHON_VERSION:=$(PYTHON3_VERSION)
 PYTHON_VERSION_MICRO:=$(PYTHON3_VERSION_MICRO)
 
 PKG_NAME:=python3
-PKG_RELEASE:=1
+PKG_RELEASE:=3
 PKG_VERSION:=$(PYTHON_VERSION).$(PYTHON_VERSION_MICRO)
 
 PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=http://www.python.org/ftp/python/$(PKG_VERSION)
+PKG_SOURCE_URL:=https://www.python.org/ftp/python/$(PKG_VERSION)
 PKG_MD5SUM:=d149d2812f10cbe04c042232e7964171
 
 PKG_LICENSE:=PSF
@@ -41,7 +41,7 @@ define Package/python3/Default
   SECTION:=lang
   CATEGORY:=Languages
   TITLE:=Python $(PYTHON_VERSION) programming language
-  URL:=http://www.python.org/
+  URL:=https://www.python.org/
   MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
 endef
 
@@ -92,7 +92,7 @@ include ./files/python3-package-*.mk
 
 define Package/python3
 $(call Package/python3/Default)
-  DEPENDS:=+python3-light $(foreach package,$(PYTHON3_PACKAGES),+$(package))
+  DEPENDS:=+python3-light $(foreach package,$(filter-out python3-dev python3-lib2to3,$(PYTHON3_PACKAGES)),+$(package))
 endef
 
 define Package/python3/description
@@ -146,7 +146,7 @@ define Build/InstallDev
                $(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) \
@@ -179,12 +179,10 @@ endef
 
 define Py3Package/python3-light/filespec
 +|/usr/lib/python$(PYTHON_VERSION)
--|/usr/lib/python$(PYTHON_VERSION)/config-$(PYTHON_VERSION)
 -|/usr/lib/python$(PYTHON_VERSION)/distutils/cygwinccompiler.py
 -|/usr/lib/python$(PYTHON_VERSION)/distutils/command/wininst*
 -|/usr/lib/python$(PYTHON_VERSION)/ensurepip
 -|/usr/lib/python$(PYTHON_VERSION)/idlelib
--|/usr/lib/python$(PYTHON_VERSION)/lib2to3
 -|/usr/lib/python$(PYTHON_VERSION)/tkinter
 -|/usr/lib/python$(PYTHON_VERSION)/turtledemo
 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_test*.so
@@ -218,8 +216,8 @@ HOST_CONFIGURE_ARGS+= \
        --without-cxx-main \
        --without-pymalloc \
        --with-threads \
-       --prefix=$(STAGING_DIR_HOST) \
-       --with-system-expat=$(STAGING_DIR_HOST) \
+       --prefix=$(STAGING_DIR)/host \
+       --with-system-expat=$(STAGING_DIR)/host \
        --with-ensurepip=upgrade \
        CONFIG_SITE= \
        CFLAGS="$(HOST_CFLAGS)"
@@ -230,10 +228,10 @@ define Host/Compile
 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))
diff --git a/lang/python3/files/python3-package-dev.mk b/lang/python3/files/python3-package-dev.mk
new file mode 100644 (file)
index 0000000..37ee05f
--- /dev/null
@@ -0,0 +1,25 @@
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-dev
+$(call Package/python3/Default)
+  TITLE:=Python $(PYTHON3_VERSION) development files
+  DEPENDS:=+python3
+endef
+
+define Py3Package/python3-dev/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(CP) $(PKG_INSTALL_DIR)/usr/bin/python$(PYTHON3_VERSION)-config $(1)/usr/bin
+       $(LN) python$(PYTHON3_VERSION)-config $(1)/usr/bin/python3-config
+       $(LN) python$(PYTHON_VERSION)/config-$(PYTHON_VERSION)/libpython$(PYTHON3_VERSION).a $(1)/usr/lib/libpython$(PYTHON3_VERSION).a
+endef
+
+$(eval $(call Py3BasePackage,python3-dev, \
+    /usr/lib/python$(PYTHON_VERSION)/config-$(PYTHON_VERSION) \
+    /usr/include/python$(PYTHON_VERSION) \
+    /usr/lib/pkgconfig \
+))
diff --git a/lang/python3/files/python3-package-lib2to3.mk b/lang/python3/files/python3-package-lib2to3.mk
new file mode 100644 (file)
index 0000000..4426a42
--- /dev/null
@@ -0,0 +1,16 @@
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-lib2to3
+$(call Package/python3/Default)
+  TITLE:=Python $(PYTHON3_VERSION) lib2to3 module
+  DEPENDS:=+python3
+endef
+
+$(eval $(call Py3BasePackage,python3-lib2to3, \
+       /usr/lib/python$(PYTHON3_VERSION)/lib2to3 \
+))
index 37a023eb00213c599e64f39cce009584caf3db33..4ffb181757e6a6d02a39e0e9fd1f90cdfd495caf 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2014 OpenWrt.org
+# Copyright (C) 2007-2015 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -20,19 +20,29 @@ PYTHON3_PKG_DIR:=/usr/lib/python$(PYTHON3_VERSION)/site-packages
 
 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
        (       export PYTHONPATH="$(PYTHON3PATH)"; \
                export PYTHONOPTIMIZE=""; \
                export PYTHONDONTWRITEBYTECODE=1; \
+               export _python_sysroot="$(STAGING_DIR)"; \
+               export _python_prefix="/usr"; \
+               export _python_exec_prefix="/usr"; \
                $(1) \
                $(HOST_PYTHON3_BIN) $(2); \
        )
 endef
 
+# These configure args are needed in detection of path to Python header files
+# using autotools.
+CONFIGURE_ARGS += \
+       _python_sysroot="$(STAGING_DIR)" \
+       _python_prefix="/usr" \
+       _python_exec_prefix="/usr"
+
 PKG_USE_MIPS16:=0
 # This is required in addition to PKG_USE_MIPS16:=0 because otherwise MIPS16
 # flags are inherited from the Python base package (via sysconfig module)
index 210d63319ec60375c840ef4a654d8aea96a0ea8c..3922dad16fc61b175f27a4b5a94dca738204518d 100644 (file)
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ruby
-PKG_VERSION:=2.2.3
+PKG_VERSION:=2.2.4
 PKG_RELEASE:=1
 
 PKG_LIBVER:=2.2
 
 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:=c3d65f6d2ebe90dda81a37885ea244f5
 PKG_MAINTAINER:=Luiz Angelo Daros de Luca <luizluca@gmail.com>
 PKG_LICENSE:=BSD-2-Clause
 PKG_LICENSE_FILES:=COPYING
@@ -833,6 +833,13 @@ 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"
diff --git a/lang/tcl/Makefile b/lang/tcl/Makefile
new file mode 100644 (file)
index 0000000..8ed5e0b
--- /dev/null
@@ -0,0 +1,73 @@
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=tcl
+PKG_VERSION:=8.6.4
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)$(PKG_VERSION)-src.tar.gz
+PKG_SOURCE_URL:=@SF/$(PKG_NAME)
+PKG_MD5SUM:=d7cbb91f1ded1919370a30edd1534304
+
+PKG_LICENSE:=TCL
+PKG_LICENSE_FILES:=license.terms
+PKG_MAINTAINER:=Joe Mistachkin <joe@mistachkin.com>
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)$(PKG_VERSION)
+
+PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/tcl
+  SUBMENU:=Tcl
+  SECTION:=lang
+  CATEGORY:=Languages
+  DEPENDS:=+libpthread
+  TITLE:=The Tcl language
+  URL:=http://www.tcl.tk/
+endef
+
+define Package/tcl/description
+  Tcl, or Tool Command Language, is a an elegant, versatile, feature-rich,
+  simple-to-learn yet very powerful industrial-strength open-source
+  programming language and development platform. It is renowned for its
+  stability and utility, and its emphasis on providing a cross-platform
+  programming API makes it an ideal choice for an enormous variety of
+  programming jobs.
+endef
+
+CONFIGURE_PATH := unix
+
+CONFIGURE_VARS += \
+       tcl_cv_strtod_unbroken=ok
+
+CONFIGURE_ARGS += \
+       --enable-threads
+
+MAKE_PATH := unix
+
+define Build/InstallDev
+       $(INSTALL_DIR) $(1)/usr/include
+       $(CP) $(PKG_INSTALL_DIR)/usr/include/*.h $(1)/usr/include/
+
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libtcl*.{a,so*} $(1)/usr/lib/
+endef
+
+define Package/tcl/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so $(1)/usr/lib
+
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin
+endef
+
+$(eval $(call BuildPackage,tcl))
diff --git a/lang/tcl/patches/100-disable_tzdata_and_msgs_install.patch b/lang/tcl/patches/100-disable_tzdata_and_msgs_install.patch
new file mode 100644 (file)
index 0000000..1db8f07
--- /dev/null
@@ -0,0 +1,22 @@
+--- a/unix/Makefile.in
++++ b/unix/Makefile.in
+@@ -817,15 +817,15 @@ install-tzdata: tclsh
+       @echo "Installing time zone data"
+       @@LD_LIBRARY_PATH_VAR@="`pwd`:$${@LD_LIBRARY_PATH_VAR@}"; export @LD_LIBRARY_PATH_VAR@; \
+       TCL_LIBRARY="${TCL_BUILDTIME_LIBRARY}"; export TCL_LIBRARY; \
+-      ./tclsh $(TOOL_DIR)/installData.tcl \
+-          $(TOP_DIR)/library/tzdata "$(SCRIPT_INSTALL_DIR)"/tzdata
++      #./tclsh $(TOOL_DIR)/installData.tcl \
++      #    $(TOP_DIR)/library/tzdata "$(SCRIPT_INSTALL_DIR)"/tzdata
+ install-msgs: tclsh
+       @echo "Installing message catalogs"
+       @@LD_LIBRARY_PATH_VAR@="`pwd`:$${@LD_LIBRARY_PATH_VAR@}"; export @LD_LIBRARY_PATH_VAR@; \
+       TCL_LIBRARY="${TCL_BUILDTIME_LIBRARY}"; export TCL_LIBRARY; \
+-      ./tclsh $(TOOL_DIR)/installData.tcl \
+-          $(TOP_DIR)/library/msgs "$(SCRIPT_INSTALL_DIR)"/msgs
++      #./tclsh $(TOOL_DIR)/installData.tcl \
++      #    $(TOP_DIR)/library/msgs "$(SCRIPT_INSTALL_DIR)"/msgs
+ install-doc: doc
+       @for i in "$(MAN_INSTALL_DIR)" "$(MAN1_INSTALL_DIR)" "$(MAN3_INSTALL_DIR)" "$(MANN_INSTALL_DIR)" ; \
diff --git a/lang/tcl/patches/200-fix_mips_build.patch b/lang/tcl/patches/200-fix_mips_build.patch
new file mode 100644 (file)
index 0000000..48485ca
--- /dev/null
@@ -0,0 +1,20 @@
+--- a/generic/tclStrToD.c
++++ b/generic/tclStrToD.c
+@@ -73,7 +73,7 @@ typedef unsigned int fpu_control_t __att
+  * MIPS floating-point units need special settings in control registers
+  * to use gradual underflow as we expect.
+  */
+-#if defined(__mips)
++#if defined(__sgi) && defined(_COMPILER_VERSION)
+ #include <sys/fpu.h>
+ #endif
+ /*
+@@ -2166,7 +2166,7 @@ TclInitDoubleConversion(void)
+     } bitwhack;
+ #endif
+-#if defined(__mips)
++#if defined(__sgi) && defined(_COMPILER_VERSION)
+     union fpc_csr mipsCR;
+     mipsCR.fc_word = get_fpc_csr();
diff --git a/lang/zope-interface/Makefile b/lang/zope-interface/Makefile
new file mode 100644 (file)
index 0000000..3a12229
--- /dev/null
@@ -0,0 +1,56 @@
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=zope.interface
+PKG_VERSION:=4.1.3
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://pypi.python.org/packages/source/z/zope.interface
+PKG_MD5SUM:=9ae3d24c0c7415deb249dd1a132f0f79
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+PKG_LICENSE:=ZPL-2.1
+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/zope-interface
+  SECTION:=lang
+  CATEGORY:=Languages
+  SUBMENU:=Python
+  TITLE:=Zope interface
+  URL:=https://github.com/zopefoundation/zope.interface
+  DEPENDS:=+python-light
+endef
+
+define Package/zope-interface/description
+This package provides an implementation of "object interfaces" for
+Python. Interfaces are a mechanism for labeling objects as conforming to
+a given API or contract. So, this package can be considered as
+implementation of the Design By Contract methodology support in Python.
+endef
+
+define PyPackage/zope-interface/filespec
++|$(PYTHON_PKG_DIR)
+-|$(PYTHON_PKG_DIR)/zope/interface/common/tests
+-|$(PYTHON_PKG_DIR)/zope/interface/tests
+endef
+
+define Build/Compile
+       $(call Build/Compile/PyMod,, \
+               install --prefix="/usr" --root="$(PKG_INSTALL_DIR)" --no-compile, \
+       )
+endef
+
+$(eval $(call PyPackage,zope-interface))
+$(eval $(call BuildPackage,zope-interface))
index d5178d5679f71be826f8e14f1f97d3850a409931..ae352f2fd37352e52215edc4588d7f1bf1db8612 100644 (file)
@@ -12,7 +12,7 @@ PKG_VERSION:=1.5.4
 PKG_RELEASE:=1
 
 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
index d61d31f9e6290af172f2d185f80daffae46cde8a..975447ddc5ca3c9fe1cfa19638c5cd18b468817e 100644 (file)
@@ -12,7 +12,7 @@ PKG_VERSION:=1.5.2
 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
diff --git a/libs/avahi/patches/011-fix-poll-h-warnings-on-musl.patch b/libs/avahi/patches/011-fix-poll-h-warnings-on-musl.patch
new file mode 100644 (file)
index 0000000..a331e64
--- /dev/null
@@ -0,0 +1,65 @@
+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>
index 23e91ad3e64dd2746203060e705c91deacdbd12d..51e7bf49d307844e9bdb005bb73584b311d845b1 100644 (file)
@@ -16,14 +16,14 @@ include $(INCLUDE_DIR)/nls.mk
 include $(INCLUDE_DIR)/target.mk 
 
 PKG_NAME:=boost
-PKG_VERSION:=1_59_0
-PKG_RELEASE:=3
+PKG_VERSION:=1_60_0
+PKG_RELEASE:=1
 
 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>
 
@@ -34,17 +34,49 @@ PKG_USE_MIPS16:=0
 include $(INCLUDE_DIR)/package.mk
 include $(INCLUDE_DIR)/host-build.mk
 
-# For now, the combination TARGET_mpc85xx&&USE_UCLIBC disables boost due to incompatibility
+
 define Package/boost/Default
   SECTION:=libs
   CATEGORY:=Libraries
   TITLE:=Boost C++ source library
   URL:=http://www.boost.org
-  DEPENDS:=@(!(TARGET_mpc85xx&&USE_UCLIBC)) +libstdcpp +libpthread +librt
+  DEPENDS:=+libstdcpp +libpthread +librt
 endef
 
 define Package/boost/description/Default
-  Boost provides free peer-reviewed portable C++ source libraries
+  true
+endef
+
+define Package/boost/description
+This package provides the Boost v1.59 libraries.
+Boost is a set of free, peer-reviewed, portable C++ source libraries.
+This package provides the following libraries:
+ - atomic
+ - chrono
+ - container
+ - context
+ - coroutine
+ - - coroutine2 (requires GCC v5 and up)
+ - date_time
+ - exception
+ - filesystem
+ - graph
+ - - graph-parallel
+ - iostreams
+ - locale
+ - log
+ - math
+ - program_options
+ - python
+ - python3
+ - random
+ - regex
+ - serialization
+ - signals
+ - system
+ - thread
+ - timer
+ - wave
 endef
 
 BOOST_LIBS =
@@ -72,34 +104,140 @@ define Package/boost/install
   true
 endef
 
-# For now, the combination TARGET_mpc85xx&&USE_UCLIBC disables boost due to incompatibility
+
 define Package/boost
   $(call Package/boost/Default)
   TITLE+= packages
-  DEPENDS:=@(!(TARGET_mpc85xx&&USE_UCLIBC)) +ALL:boost-libs +ALL:boost-test
+  DEPENDS:=+ALL:boost-libs +ALL:boost-test
 endef
 
 define Package/boost/config
-    menu "Select Boost libraries"
+    menu "Select Boost Options"
       depends on PACKAGE_boost
+       comment "Boost compilation options."
+
+       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 seperate 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."
+               help 
+                       Add name tags the lib files, to diferentiate each library version:
+                         "-mt" for multi-threading.
+                         "-d" for debugging.
+                         "-s" for runtime static link".
+                       Might break compatibility with libraries that expect boost libs with default names.
+               default n               
+
+           config boost-single-thread
+               depends on @boost-use-name-tags
+               bool "Single thread Support."
+               help 
+                       Compile Boost libraries in single-thread mode.
+               default n
+                           
+           config boost-build-type-complete
+               depends on @boost-use-name-tags
+               bool "Complete Boost Build."
+               help 
+                       Builds both release and debug libs. It will take much longer to compile.
+               default n               
+    endmenu
 
-    config boost-libs-all
-      bool "Include all Boost libraries"
-      select PACKAGE_boost-libs
-
-   config boost-test-pkg
-     bool "Boost test package"
-     select PACKAGE_boost-test
-
-    comment "Libraries"
-
-    $(foreach lib,$(BOOST_LIBS), \
-        config PACKAGE_boost-$(lib)
-           prompt "Boost $(lib) library"
-
-   )
-
-  endmenu
+    menu "Select Boost libraries"
+      depends on PACKAGE_boost
+               comment "Libraries"
+
+               config boost-libs-all
+               bool "Include all Boost libraries."
+               select PACKAGE_boost-libs               
+
+               config boost-test-pkg
+               bool "Boost test package."
+               select PACKAGE_boost-test
+           
+               config boost-coroutine2
+               depends on @GCC_VERSION_5
+               bool "Boost couroutine2 support."
+               select PACKAGE_boost-coroutine
+               default n
+
+               config boost-graph-parallel
+               bool "Boost parallel graph support."
+               select PACKAGE_boost-graph
+               default n
+
+               $(foreach lib,$(BOOST_LIBS), \
+                 config PACKAGE_boost-$(lib)
+                 prompt "Boost $(lib) library."
+               )
+       endmenu
 
 endef
 
@@ -139,6 +277,7 @@ define DefineBoostLibrary
   endef
 endef
 
+
 $(eval $(call DefineBoostLibrary,atomic,system,))
 $(eval $(call DefineBoostLibrary,chrono,system,))
 $(eval $(call DefineBoostLibrary,container,,))
@@ -148,19 +287,15 @@ $(eval $(call DefineBoostLibrary,date_time,,))
 #$(eval $(call DefineBoostLibrary,exception,,))
 $(eval $(call DefineBoostLibrary,filesystem,system,))
 $(eval $(call DefineBoostLibrary,graph,regex,))
-#$(eval $(call DefineBoostLibrary,graph_parallel,,))
-$(eval $(call DefineBoostLibrary,iostreams,,+zlib))
-$(eval $(call DefineBoostLibrary,locale,system,$(ICONV_DEPENDS) +@BUILD_NLS))
+$(eval $(call DefineBoostLibrary,iostreams,,+PACKAGE_boost-iostreams:zlib))
+$(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,,))
+#$(eval $(call DefineBoostLibrary,mpi,,)) # OpenMPI does no exist in OpenWRT at this time.
 $(eval $(call DefineBoostLibrary,program_options,,))
-$(eval $(call DefineBoostLibrary,random,system,))
-
-# We need a beter way to provide this package, information regarding the Python packages
-#  such as Python version and directories locations. 
-# Python 2.7 version is for now hard-coded. Python 3 is (until this date) broken in the trunk tree.
 $(eval $(call DefineBoostLibrary,python,,+PACKAGE_boost-python:python))
+$(eval $(call DefineBoostLibrary,python3,,+PACKAGE_boost-python3:python3))
+$(eval $(call DefineBoostLibrary,random,system,))
 $(eval $(call DefineBoostLibrary,regex,,))
 $(eval $(call DefineBoostLibrary,serialization,,))
 $(eval $(call DefineBoostLibrary,signals,,))
@@ -169,15 +304,19 @@ $(eval $(call DefineBoostLibrary,thread,system chrono atomic,))
 $(eval $(call DefineBoostLibrary,timer,chrono))
 $(eval $(call DefineBoostLibrary,wave,date_time thread filesystem,))
 
+
 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
 
 CONFIGURE_PREFIX:=$(PKG_INSTALL_DIR)
 TARGET_LDFLAGS += -pthread -lrt
 
-TARGET_CFLAGS += $(if $(CONFIG_SOFT_FLOAT),-DBOOST_NO_FENV_H)
+TARGET_CFLAGS += \
+       $(if $(CONFIG_PACKAGE_boost-python), -I$(STAGING_DIR)/usr/include/python2.7/) \
+       $(if $(CONFIG_PACKAGE_boost-python3), -I$(STAGING_DIR)/usr/include/python3.5/) \
+       $(if $(CONFIG_SOFT_FLOAT),-DBOOST_NO_FENV_H) -fPIC
 
 ifneq ($(findstring mips,$(ARCH)),)
     BOOST_ABI = o32
@@ -192,27 +331,48 @@ else
     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 ; \
+               $(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; \
+               ) \
                $(if $(CONFIG_PACKAGE_boost-python), \
-                       echo "using python : : $(STAGING_DIR_ROOT)/usr/bin/python :     $(STAGING_DIR)/usr/include/python2.7/ ;" >> \
+                       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) --build-type=minimal --layout=system abi=$(BOOST_ABI) \
+                       --toolset=gcc-$(ARCH) abi=$(BOOST_ABI) \
                        --disable-long-double \
-                       $(CONFIGURE_ARGS) \
+                       $(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-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 \
                        --without-mpi \
+                       $(if $(CONFIG_boost-coroutine2),,--without-coroutine2) \
+                       $(if $(CONFIG_boost-graph-parallel),,--without-graph_parallel) \
                        $(if $(CONFIG_PACKAGE_boost-test),,--without-test) \
                        $(foreach lib,$(BOOST_LIBS), \
-                               $(if $(CONFIG_PACKAGE_boost-$(lib)),,--without-$(lib)) \
+                               $(if $(findstring python,$(lib)), \
+                                 $(if $(or $(CONFIG_PACKAGE_boost-python),$(CONFIG_PACKAGE_boost-python3)),,--without-python), \
+                                 $(if $(CONFIG_PACKAGE_boost-$(lib)),,--without-$(lib))) \
                        ) \
-                       $(if $(CONFIG_PACKAGE_boost-locale),boost.locale.iconv=on -sICONV_PATH=$(ICONV_PREFIX) boost.locale.posix=$(if $(USE_UCLIBC),on,off), \
+                       $(if $(CONFIG_PACKAGE_boost-locale),boost.locale.iconv=on -sICONV_PATH=$(ICONV_PREFIX) boost.locale.posix=$(if $(USE_MUSL),on,off), \
                                boost.locale.iconv=off) \
                        \
                        $(if $(CONFIG_PACKAGE_boost-iostreams),-sNO_BZIP2=1 -sZLIB_INCLUDE=$(STAGING_DIR)/usr/include \
@@ -231,39 +391,36 @@ define Build/InstallDev
                # copies _all_ header files - independent of <--with-library>-argument above
 
        $(INSTALL_DIR) $(1)/usr/lib
-       -$(CP) $(PKG_INSTALL_DIR)/lib/*.a $(1)/usr/lib/
-       -$(CP) $(PKG_INSTALL_DIR)/lib/*.so* $(1)/usr/lib/
+       $(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
        $(INSTALL_DIR) \
                $(1)/usr/lib
 
-       $(CP) \
-               $(PKG_INSTALL_DIR)/lib/libboost_$(2)*.so* \
-               $(1)/usr/lib/
+       $(FIND) \
+               $(PKG_INSTALL_DIR)/lib/ -name 'libboost_$(2)*.so*' -exec $(CP) {} $(1)/usr/lib/ \;
 endef
 
-define Package/boost-test/install
-       $(INSTALL_DIR) \
-               $(1)/usr/lib
+define Package/boost-test/install      
+               $(INSTALL_DIR) \
+                       $(1)/usr/lib
 
-       $(CP) \
-               $(PKG_INSTALL_DIR)/lib/libboost_unit_test_framework*.so* \
-               $(1)/usr/lib/
-
-       $(CP) \
-               $(PKG_INSTALL_DIR)/lib/libboost_prg_exec_monitor*.so* \
-               $(1)/usr/lib/
+               $(FIND) \
+                       $(PKG_INSTALL_DIR)/lib/ -name 'libboost_unit_test_framework*.so*' -exec $(CP) {} $(1)/usr/lib/ \;
+               
+               $(FIND) \
+                       $(PKG_INSTALL_DIR)/lib/ -name 'libboost_prg_exec_monitor*.so*' -exec $(CP) {} $(1)/usr/lib/ \;  
 endef
 
 define BuildBoostLibrary
@@ -278,6 +435,5 @@ $(eval $(call HostBuild))
 
 $(foreach lib,$(BOOST_LIBS),$(eval $(call BuildBoostLibrary,$(lib))))
 $(eval $(call BuildPackage,boost-test))
-
 $(eval $(call BuildPackage,boost-libs))
 $(eval $(call BuildPackage,boost))
index 90ab6f4cc60b319aa9c62440dd799fd19aae14b2..a0117b57b0d10c03d8a0f50fb80c6e3456875c75 100644 (file)
@@ -31,7 +31,7 @@ define Package/file/Default
 endef
 
 define Package/file
-$(call package/file/Default)
+$(call Package/file/Default)
   SECTION:=utils
   CATEGORY:=Utilities
   TITLE+= utility
@@ -39,7 +39,7 @@ $(call package/file/Default)
 endef
 
 define Package/libmagic
-$(call package/file/Default)
+$(call Package/file/Default)
   SECTION:=libs
   CATEGORY:=Libraries
   TITLE+= library
index 21ecfb2dd3f02d53a59e7c00fbafb639d14661fa..a8d1926c55331b078680a75a33f06479d404fe7e 100644 (file)
@@ -23,6 +23,8 @@ PKG_FIXUP:=autoreconf gettext-version
 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
index d8500e6382d2a63ef27b5be47b5b48ef53879b8d..b1ad841488f427a0bfc2a532180755d4a6547921 100644 (file)
@@ -19,7 +19,7 @@ PKG_MD5SUM:=83efba4722a9674b97437d1d99af79db
 PKG_BUILD_PARALLEL:=1
 HOST_BUILD_PARALLEL:=1
 PKG_BUILD_DEPENDS:=glib2/host libpthread zlib libintl libffi
-HOST_BUILD_DEPENDS:=libintl/host libiconv/host libffi/host
+HOST_BUILD_DEPENDS:=gettext-full/host libiconv/host libffi/host
 PKG_INSTALL:=1
 PKG_USE_MIPS16:=0
 
@@ -45,7 +45,8 @@ define Package/glib2/description
 endef
 
 HOST_CONFIGURE_ARGS += \
-       --disable-selinux
+       --disable-selinux \
+       --with-libiconv=gnu
 
 CONFIGURE_ARGS += \
        --enable-shared \
@@ -53,12 +54,12 @@ CONFIGURE_ARGS += \
        --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
index e8ef5394443d25bd23fa7d2bd78c7a5b3fa8fdfc..9d3cfd39162e32aff54bc097f19c4de6a4666f3d 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=glpk
-PKG_VERSION:=4.55
+PKG_VERSION:=4.57
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
-PKG_MD5SUM:=c632a7a631b8aed02e28eafcd99477f
+PKG_MD5SUM:=237531a54f73155842f8defe51aedb0f
 
 PKG_LICENSE:=GPL-3.0
 PKG_LICENSE_FILES:=COPYING
index 8dbf7217c0c5ed333ad901b9c83b0a62a5d23e78..362a90e081441b13cc1c15277cae772944aada6d 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gnutls
-PKG_VERSION:=3.4.6
+PKG_VERSION:=3.4.9
 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:=4f2c4b4483da65de7edfeb050911fafb
+PKG_MD5SUM:=1b3b6d55d0e2b6d01a54f53129f1da9b
 #PKG_FIXUP:=autoreconf gettext-version
 PKG_MAINTAINER:=Nikos Mavrogiannopoulos <nmav@gnutls.org>
 PKG_LICENSE:=LGPLv2.1+
index 579ded3c604ec55b9681386b6b4b4597fa30221e..a37ddf5ec77ff218ce64b50cbe13fdc0635337e8 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 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
diff --git a/libs/ibrcommon/patches/001-fix-build-with-musl.patch b/libs/ibrcommon/patches/001-fix-build-with-musl.patch
new file mode 100644 (file)
index 0000000..0d3f9c2
--- /dev/null
@@ -0,0 +1,23 @@
+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);
diff --git a/libs/icu/Makefile b/libs/icu/Makefile
new file mode 100644 (file)
index 0000000..c70ac16
--- /dev/null
@@ -0,0 +1,93 @@
+#
+# Copyright (C) 2006-2010 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:=icu4c
+PKG_VERSION:=55.1
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-55_1-src.tgz
+PKG_SOURCE_URL:=http://download.icu-project.org/files/icu4c/55.1
+PKG_MD5SUM:=e2d523df79d6cb7855c2fbe284f4db29
+
+PKG_LICENSE:=ICU-1.8.1+
+PKG_LICENSE_FILES:=license.html
+
+PKG_MAINTAINER:=Mirko Vogt <mirko@openwrt.org>
+
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
+
+PKG_BUILD_DEPENDS:=icu/host
+
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
+
+TAR_OPTIONS+= icu/source --strip-components 2
+TAR_CMD=$(HOST_TAR) -C $(1) $(TAR_OPTIONS)
+
+define Package/icu
+  SECTION:=libs
+  CATEGORY:=Libraries
+  TITLE:=International Components for Unicode
+  URL:=http://icu-project.org
+  DEPENDS:=+libstdcpp +libpthread
+endef
+
+define Build/Configure
+       $(call Build/Configure/Default, \
+               --disable-debug \
+               --enable-release \
+               --enable-shared \
+               --enable-static \
+               --enable-draft \
+               --enable-renaming \
+               --disable-tracing \
+               --disable-extras \
+               --enable-dyload \
+               --enable-layout \
+               --enable-layoutex \
+               --disable-tools \
+               --disable-tests \
+               --disable-samples \
+               --with-cross-build="$(HOST_BUILD_DIR)" \
+       )
+endef
+
+define Build/InstallDev
+       $(INSTALL_DIR) \
+               $(1)/usr/include
+
+       $(CP) \
+               $(PKG_INSTALL_DIR)/usr/include/* \
+               $(1)/usr/include/
+
+       $(INSTALL_DIR) \
+               $(1)/usr/lib
+
+       $(CP) \
+               $(PKG_INSTALL_DIR)/usr/lib/* \
+               $(1)/usr/lib/
+endef
+
+define Host/install
+endef
+
+define Package/icu/install
+       $(INSTALL_DIR) \
+               $(1)/usr/lib
+
+       $(CP) \
+               $(PKG_INSTALL_DIR)/usr/lib/*.so.* \
+               $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,icu))
+$(eval $(call HostBuild))
diff --git a/libs/icu/patches/000-dont-cpy-files-from-topdirs.patch b/libs/icu/patches/000-dont-cpy-files-from-topdirs.patch
new file mode 100644 (file)
index 0000000..cc7d938
--- /dev/null
@@ -0,0 +1,12 @@
+diff --git a/Makefile.in b/Makefile.in
+index 9db6c52..6aa2273 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -180,7 +180,6 @@ install-icu: $(INSTALLED_BUILT_FILES)
+       $(INSTALL_SCRIPT) $(top_srcdir)/install-sh $(DESTDIR)$(pkgdatadir)/install-sh
+       @$(MKINSTALLDIRS) $(DESTDIR)$(libdir)/pkgconfig
+       $(INSTALL_DATA) $(ALL_PKGCONFIG_FILES) $(DESTDIR)$(libdir)/pkgconfig/
+-      $(INSTALL_DATA) $(top_srcdir)/../license.html $(DESTDIR)$(pkgdatadir)/license.html
+       $(INSTALL_SCRIPT) $(top_builddir)/config/icu-config $(DESTDIR)$(bindir)/icu-config
+       $(INSTALL_DATA) $(top_builddir)/config/Makefile.inc $(DESTDIR)$(pkglibdir)/Makefile.inc
+       $(INSTALL_DATA) $(top_builddir)/config/pkgdata.inc $(DESTDIR)$(pkglibdir)/pkgdata.inc
index 9f0dc5c89b9312fb1ded65ca5535a3faaa9d09a4..1cd08e49c06642a5d1f79a0f312c8020ca688759 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libev
 PKG_VERSION:=4.20
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://dist.schmorp.de/libev/Attic/
@@ -44,7 +44,9 @@ CONFIGURE_ARGS += \
 
 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
index f43749482958f3e277336579d96bfc00cfcc1318..dd8cef51422f405c700f1121ef2e2f161e72c4f9 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libevdev
-PKG_VERSION:=1.4.4
+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:=b66443bb664cfaf2ba7b3f8c238ea951
+PKG_MD5SUM:=9b3f25bd8fb0f8efa4944d34668dddc0
 
 PKG_LICENSE:=MIT
 PKG_LICENSE_FILES:=COPYING
index 1eea6f760321e4939d108945d3daef81fda0ad60..cd16a85ff9dc6f7966d93dbf8d8986de05829947 100644 (file)
@@ -66,7 +66,7 @@ define Build/InstallDev
 
        $(INSTALL_DIR) $(1)/usr/include
        $(CP) \
-               $(PKG_INSTALL_DIR)/usr/lib/libffi-$(PKG_VERSION)/include/*.h \
+               $(PKG_INSTALL_DIR)/usr/include/*.h \
                $(1)/usr/include/
 endef
 
diff --git a/libs/libffi/patches/001-fix-includedir-pkg.patch b/libs/libffi/patches/001-fix-includedir-pkg.patch
new file mode 100644 (file)
index 0000000..812d7a4
--- /dev/null
@@ -0,0 +1,36 @@
+--- a/libffi.pc.in
++++ b/libffi.pc.in
+@@ -1,10 +1,10 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+ libdir=@libdir@
+-includedir=${libdir}/@PACKAGE_NAME@-@PACKAGE_VERSION@/include
++includedir=@includedir@
+ Name: @PACKAGE_NAME@
+ Description: Library supporting Foreign Function Interfaces
+ Version: @PACKAGE_VERSION@
+-Libs: -L${libdir} -lffi
+-Cflags: -I${includedir}
++Libs: -lffi
++Cflags:
+--- a/include/Makefile.am
++++ b/include/Makefile.am
+@@ -5,5 +5,5 @@ AUTOMAKE_OPTIONS=foreign
+ DISTCLEANFILES=ffitarget.h
+ EXTRA_DIST=ffi.h.in ffi_common.h
+-includesdir = $(libdir)/@PACKAGE_NAME@-@PACKAGE_VERSION@/include
++includesdir = $(includedir)
+ nodist_includes_HEADERS = ffi.h ffitarget.h
+--- a/include/Makefile.in
++++ b/include/Makefile.in
+@@ -250,7 +250,7 @@ top_srcdir = @top_srcdir@
+ AUTOMAKE_OPTIONS = foreign
+ DISTCLEANFILES = ffitarget.h
+ EXTRA_DIST = ffi.h.in ffi_common.h
+-includesdir = $(libdir)/@PACKAGE_NAME@-@PACKAGE_VERSION@/include
++includesdir = $(includedir)
+ nodist_includes_HEADERS = ffi.h ffitarget.h
+ all: all-am
diff --git a/libs/libffi/patches/100-fix_mips_softfloat.patch b/libs/libffi/patches/100-fix_mips_softfloat.patch
new file mode 100644 (file)
index 0000000..bdd5a9a
--- /dev/null
@@ -0,0 +1,79 @@
+--- 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)
index 87705e3df4b41623a62e31932eb08cef4813e931..9be56482d03747334790fa069ba7010892117c59 100644 (file)
@@ -17,7 +17,7 @@ PKG_LICENSE:=LGPL-2.1
 PKG_LICENSE_FILES:=COPYING
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=https://download.gnome.org/sources/libgee/0.18/
+PKG_SOURCE_URL:=@GNOME/libgee/0.18/
 PKG_MD5SUM:=29ea6125e653d7e60b49a9a9544abc96
 
 PKG_FIXUP:=autoreconf
@@ -57,6 +57,10 @@ define Build/InstallDev
        $(INSTALL_DATA) \
                $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc \
                $(1)/usr/lib/pkgconfig/
+       $(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
 endef
 
 define Package/libgee/install
diff --git a/libs/libgpg-error/patches/001-gcc5.patch b/libs/libgpg-error/patches/001-gcc5.patch
new file mode 100644 (file)
index 0000000..1d886ff
--- /dev/null
@@ -0,0 +1,54 @@
+From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
+Date: Mon, 16 Mar 2015 17:40:12 +0000 (-0400)
+Subject: Avoid breakage with gcc 5
+X-Git-Tag: libgpg-error-1.19~7
+X-Git-Url: http://git.gnupg.org/cgi-bin/gitweb.cgi?p=libgpg-error.git;a=commitdiff_plain;h=c01c8f0c4f55d76b037c7f6aa44ad25ede18d38a
+
+Avoid breakage with gcc 5
+
+* src/Makefile.am: Add -P to the C preprocessor when building
+mkerrcodes.h, to avoid a noisy intermediate pipeline.
+
+--
+
+With gcc 5 without this patch, we see many errors like the following:
+
+gcc -I. -I. -o mkerrcodes ./mkerrcodes.c
+In file included from ./mkerrcodes.c:26:0:
+./mkerrcodes.h:9:5: error: expected expression before ‘,’ token
+   { , "GPG_ERR_E2BIG" },
+     ^
+./mkerrcodes.h:10:5: error: expected expression before ‘,’ token
+   { , "GPG_ERR_EACCES" },
+     ^
+
+This patch cleans up the generated mkerrcodes.h by making the
+intermediate stage clean for all the versions of gcc i tested (4.x and
+5).
+
+Debian-Bug-Id: 777374
+Signed-Off-By: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
+---
+
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -140,7 +140,7 @@ code-to-errno.h: Makefile mkerrnos.awk e
+ # It is correct to use $(CPP).  We want the host's idea of the error codes.
+ mkerrcodes.h: Makefile mkerrcodes.awk $(gpg_extra_headers)
+       $(AWK) -f $(srcdir)/mkerrcodes1.awk $(srcdir)/errnos.in >_$@
+-      $(CPP) $(CPPFLAGS) $(extra_cppflags) _$@ | grep GPG_ERR_ | \
++      $(CPP) $(CPPFLAGS) $(extra_cppflags) -P _$@ | grep GPG_ERR_ | \
+                $(AWK) -f $(srcdir)/mkerrcodes.awk >$@
+       -rm _$@
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -979,7 +979,7 @@ code-to-errno.h: Makefile mkerrnos.awk e
+ # It is correct to use $(CPP).  We want the host's idea of the error codes.
+ mkerrcodes.h: Makefile mkerrcodes.awk $(gpg_extra_headers)
+       $(AWK) -f $(srcdir)/mkerrcodes1.awk $(srcdir)/errnos.in >_$@
+-      $(CPP) $(CPPFLAGS) $(extra_cppflags) _$@ | grep GPG_ERR_ | \
++      $(CPP) $(CPPFLAGS) $(extra_cppflags) -P _$@ | grep GPG_ERR_ | \
+                $(AWK) -f $(srcdir)/mkerrcodes.awk >$@
+       -rm _$@
index 6d9adec24e46569aa379f1197f61dfd4933aab53..9f58dc76fd650f6fe125bedd940c73e6051eb2db 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libinput
-PKG_VERSION:=1.0.1
+PKG_VERSION:=1.1.4
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=http://www.freedesktop.org/software/libinput/
-PKG_MD5SUM:=f390e592aa09f77dabceabeb2ddd4419
+PKG_MD5SUM:=0945318141c1a9f52857bbf65d175f32
 
 PKG_LICENSE:=MIT
 PKG_LICENSE_FILES:=COPYING
@@ -52,9 +52,10 @@ define Build/InstallDev
 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))
index 9c9dcbae59926afe03a28b3e4dd43dc29a2e57ea..9f9436467a9f19baa9733b2ea203e15f7a008de9 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libmicrohttpd
-PKG_VERSION:=0.9.42
-PKG_RELEASE:=3
+PKG_VERSION:=0.9.44
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@GNU/libmicrohttpd
-PKG_MD5SUM:=3b9cf0b67fc8ebc9e69f53c6bc84a88d
+PKG_MD5SUM:=9101b5ebf8f71792938ae672da314da2
 
 PKG_MAINTAINER:=Martijn Zilverschoon <martijn@friedzombie.com>
 
diff --git a/libs/libmicrohttpd/patches/001-bump-to-r35864.patch b/libs/libmicrohttpd/patches/001-bump-to-r35864.patch
deleted file mode 100644 (file)
index 6558a96..0000000
+++ /dev/null
@@ -1,754 +0,0 @@
---- a/ChangeLog
-+++ b/ChangeLog
-@@ -1,3 +1,14 @@
-+Thu Jun  4 13:37:05 CEST 2015
-+      Fixing memory leak in digest authentication. -AW
-+
-+Wed Jun 03 21:23:47 CEST 2015
-+      Add deprecation compiler messages for deprecated functions 
-+      and macros. -EG
-+
-+Fri May 29 12:23:01 CEST 2015
-+      Fixing digest authentication when used in combination
-+      with escaped characters in URLs. -CG/AW
-+
- Wed May 13 11:49:09 CEST 2015
-       Releasing libmicrohttpd 0.9.42. -CG
---- a/src/microhttpd/response.c
-+++ b/src/microhttpd/response.c
-@@ -24,6 +24,8 @@
-  * @author Christian Grothoff
-  */
-+#define MHD_NO_DEPRECATION 1
-+
- #include "internal.h"
- #include "response.h"
---- a/src/microhttpd/digestauth.c
-+++ b/src/microhttpd/digestauth.c
-@@ -1,6 +1,6 @@
- /*
-      This file is part of libmicrohttpd
--     Copyright (C) 2010, 2011, 2012 Daniel Pittman and Christian Grothoff
-+     Copyright (C) 2010, 2011, 2012, 2015 Daniel Pittman and Christian Grothoff
-      This library is free software; you can redistribute it and/or
-      modify it under the terms of the GNU Lesser General Public
-@@ -472,8 +472,8 @@ test_header (struct MHD_Connection *conn
-  *
-  * @param connection connections with headers to compare against
-  * @param args argument URI string (after "?" in URI)
-- * @return MHD_YES if the arguments match,
-- *         MHD_NO if not
-+ * @return #MHD_YES if the arguments match,
-+ *         #MHD_NO if not
-  */
- static int
- check_argument_match (struct MHD_Connection *connection,
-@@ -508,7 +508,10 @@ check_argument_match (struct MHD_Connect
-                                                connection,
-                                                argp);
-         if (MHD_YES != test_header (connection, argp, NULL))
--          return MHD_NO;
-+      {
-+        free(argb);
-+        return MHD_NO;
-+      }
-         num_headers++;
-         break;
-       }
-@@ -527,10 +530,16 @@ check_argument_match (struct MHD_Connect
-                                            connection,
-                                            equals);
-       if (! test_header (connection, argp, equals))
--      return MHD_NO;
-+      {
-+          free(argb);
-+          return MHD_NO;
-+      }
-+      
-       num_headers++;
-       argp = amper;
-     }
-+    
-+  free(argb);
-   /* also check that the number of headers matches */
-   for (pos = connection->headers_received; NULL != pos; pos = pos->next)
-@@ -632,10 +641,83 @@ MHD_digest_auth_check (struct MHD_Connec
-        header value. */
-     return MHD_NO;
-   }
-+  /* 8 = 4 hexadecimal numbers for the timestamp */
-+  nonce_time = strtoul (nonce + len - 8, (char **)NULL, 16);
-+  t = (uint32_t) MHD_monotonic_time();
-+  /*
-+   * First level vetting for the nonce validity: if the timestamp
-+   * attached to the nonce exceeds `nonce_timeout', then the nonce is
-+   * invalid.
-+   */
-+  if ( (t > nonce_time + nonce_timeout) ||
-+       (nonce_time + nonce_timeout < nonce_time) )
-+    {
-+      /* too old */
-+      return MHD_INVALID_NONCE;
-+    }
-+
-+  calculate_nonce (nonce_time,
-+                   connection->method,
-+                   connection->daemon->digest_auth_random,
-+                   connection->daemon->digest_auth_rand_size,
-+                   connection->url,
-+                   realm,
-+                   noncehashexp);
-+  /*
-+   * Second level vetting for the nonce validity
-+   * if the timestamp attached to the nonce is valid
-+   * and possibly fabricated (in case of an attack)
-+   * the attacker must also know the random seed to be
-+   * able to generate a "sane" nonce, which if he does
-+   * not, the nonce fabrication process going to be
-+   * very hard to achieve.
-+   */
-+
-+  if (0 != strcmp (nonce, noncehashexp))
-+    {
-+      return MHD_INVALID_NONCE;
-+    }
-+  if ( (0 == lookup_sub_value (cnonce,
-+                               sizeof (cnonce),
-+                               header, "cnonce")) ||
-+       (0 == lookup_sub_value (qop, sizeof (qop), header, "qop")) ||
-+       ( (0 != strcmp (qop, "auth")) &&
-+         (0 != strcmp (qop, "")) ) ||
-+       (0 == lookup_sub_value (nc, sizeof (nc), header, "nc"))  ||
-+       (0 == lookup_sub_value (response, sizeof (response), header, "response")) )
-+    {
-+#if HAVE_MESSAGES
-+      MHD_DLOG (connection->daemon,
-+              "Authentication failed, invalid format.\n");
-+#endif
-+      return MHD_NO;
-+    }
-+  nci = strtoul (nc, &end, 16);
-+  if ( ('\0' != *end) ||
-+       ( (LONG_MAX == nci) &&
-+         (ERANGE == errno) ) )
-+    {
-+#if HAVE_MESSAGES
-+      MHD_DLOG (connection->daemon,
-+              "Authentication failed, invalid format.\n");
-+#endif
-+      return MHD_NO; /* invalid nonce format */
-+    }
-+  /*
-+   * Checking if that combination of nonce and nc is sound
-+   * and not a replay attack attempt. Also adds the nonce
-+   * to the nonce-nc map if it does not exist there.
-+   */
-+
-+  if (MHD_YES != check_nonce_nc (connection, nonce, nci))
-+    {
-+      return MHD_NO;
-+    }
-+
-   {
-     char *uri;
--    
--    uri = malloc(left + 1);
-+
-+    uri = malloc (left + 1);
-     if (NULL == uri)
-     {
- #if HAVE_MESSAGES
-@@ -648,24 +730,31 @@ MHD_digest_auth_check (struct MHD_Connec
-                                left + 1,
-                                header, "uri"))
-     {
--      free(uri);
-+      free (uri);
-       return MHD_NO;
-     }
--    /* 8 = 4 hexadecimal numbers for the timestamp */
--    nonce_time = strtoul (nonce + len - 8, (char **)NULL, 16);
--    t = (uint32_t) MHD_monotonic_time();
--    /*
--     * First level vetting for the nonce validity: if the timestamp
--     * attached to the nonce exceeds `nonce_timeout', then the nonce is
--     * invalid.
--     */
--    if ( (t > nonce_time + nonce_timeout) ||
--       (nonce_time + nonce_timeout < nonce_time) )
--    { 
--      free(uri);
--      return MHD_INVALID_NONCE;
--    }
-+    digest_calc_ha1("md5",
-+                  username,
-+                  realm,
-+                  password,
-+                  nonce,
-+                  cnonce,
-+                  ha1);
-+    digest_calc_response (ha1,
-+                        nonce,
-+                        nc,
-+                        cnonce,
-+                        qop,
-+                        connection->method,
-+                        uri,
-+                        hentity,
-+                        respexp);
-+
-+    /* Need to unescape URI before comparing with connection->url */
-+    connection->daemon->unescape_callback (connection->daemon->unescape_callback_cls,
-+                                           connection,
-+                                           uri);
-     if (0 != strncmp (uri,
-                     connection->url,
-                     strlen (connection->url)))
-@@ -674,9 +763,10 @@ MHD_digest_auth_check (struct MHD_Connec
-       MHD_DLOG (connection->daemon,
-               "Authentication failed, URI does not match.\n");
- #endif
--      free(uri);
-+      free (uri);
-       return MHD_NO;
-     }
-+
-     {
-       const char *args = strchr (uri, '?');
-@@ -692,89 +782,11 @@ MHD_digest_auth_check (struct MHD_Connec
-       MHD_DLOG (connection->daemon,
-                 "Authentication failed, arguments do not match.\n");
- #endif
--       free(uri);
-+       free (uri);
-        return MHD_NO;
-       }
-     }
--    calculate_nonce (nonce_time,
--                   connection->method,
--                   connection->daemon->digest_auth_random,
--                   connection->daemon->digest_auth_rand_size,
--                   connection->url,
--                   realm,
--                   noncehashexp);
--    /*
--     * Second level vetting for the nonce validity
--     * if the timestamp attached to the nonce is valid
--     * and possibly fabricated (in case of an attack)
--     * the attacker must also know the random seed to be
--     * able to generate a "sane" nonce, which if he does
--     * not, the nonce fabrication process going to be
--     * very hard to achieve.
--     */
--
--    if (0 != strcmp (nonce, noncehashexp))
--    {
--      free(uri);
--      return MHD_INVALID_NONCE;
--    }
--    if ( (0 == lookup_sub_value (cnonce,
--                               sizeof (cnonce),
--                               header, "cnonce")) ||
--       (0 == lookup_sub_value (qop, sizeof (qop), header, "qop")) ||
--       ( (0 != strcmp (qop, "auth")) &&
--         (0 != strcmp (qop, "")) ) ||
--       (0 == lookup_sub_value (nc, sizeof (nc), header, "nc"))  ||
--       (0 == lookup_sub_value (response, sizeof (response), header, "response")) )
--    {
--#if HAVE_MESSAGES
--      MHD_DLOG (connection->daemon,
--              "Authentication failed, invalid format.\n");
--#endif
--      free(uri);
--      return MHD_NO;
--    }
--    nci = strtoul (nc, &end, 16);
--    if ( ('\0' != *end) ||
--       ( (LONG_MAX == nci) &&
--         (ERANGE == errno) ) )
--    {
--#if HAVE_MESSAGES
--      MHD_DLOG (connection->daemon,
--              "Authentication failed, invalid format.\n");
--#endif
--      free(uri);
--      return MHD_NO; /* invalid nonce format */
--    }
--    /*
--     * Checking if that combination of nonce and nc is sound
--     * and not a replay attack attempt. Also adds the nonce
--     * to the nonce-nc map if it does not exist there.
--     */
--
--    if (MHD_YES != check_nonce_nc (connection, nonce, nci))
--    {
--      free(uri);
--      return MHD_NO;
--    }
--
--    digest_calc_ha1("md5",
--                  username,
--                  realm,
--                  password,
--                  nonce,
--                  cnonce,
--                  ha1);
--    digest_calc_response (ha1,
--                        nonce,
--                        nc,
--                        cnonce,
--                        qop,
--                        connection->method,
--                        uri,
--                        hentity,
--                        respexp);
--    free(uri);
-+    free (uri);
-     return (0 == strcmp(response, respexp))
-       ? MHD_YES
-       : MHD_NO;
-@@ -835,7 +847,7 @@ MHD_queue_auth_fail_response (struct MHD
-                  : "");
-   {
-     char *header;
--    
-+
-     header = malloc(hlen + 1);
-     if (NULL == header)
-     {
---- a/src/microhttpd/daemon.c
-+++ b/src/microhttpd/daemon.c
-@@ -73,7 +73,7 @@
- /**
-  * Default connection limit.
-  */
--#ifndef WINDOWS
-+#ifndef MHD_WINSOCK_SOCKETS
- #define MHD_MAX_CONNECTIONS_DEFAULT FD_SETSIZE - 4
- #else
- #define MHD_MAX_CONNECTIONS_DEFAULT FD_SETSIZE
-@@ -1271,7 +1271,7 @@ internal_add_connection (struct MHD_Daem
-       return MHD_NO;
-     }
--#ifndef WINDOWS
-+#ifndef MHD_WINSOCK_SOCKETS
-   if ( (client_socket >= FD_SETSIZE) &&
-        (0 == (daemon->options & (MHD_USE_POLL | MHD_USE_EPOLL_LINUX_ONLY))) )
-     {
-@@ -1418,7 +1418,7 @@ internal_add_connection (struct MHD_Daem
- #endif
-       {
-         /* make socket non-blocking */
--#if !defined(WINDOWS) || defined(CYGWIN)
-+#if !defined(MHD_WINSOCK_SOCKETS)
-         int flags = fcntl (connection->socket_fd, F_GETFL);
-         if ( (-1 == flags) ||
-              (0 != fcntl (connection->socket_fd, F_SETFL, flags | O_NONBLOCK)) )
-@@ -1797,7 +1797,7 @@ static void
- make_nonblocking_noninheritable (struct MHD_Daemon *daemon,
-                                MHD_socket sock)
- {
--#ifdef WINDOWS
-+#ifdef MHD_WINSOCK_SOCKETS
-   DWORD dwFlags;
-   unsigned long flags = 1;
-@@ -3611,7 +3611,7 @@ MHD_start_daemon_va (unsigned int flags,
-   daemon->socket_fd = MHD_INVALID_SOCKET;
-   daemon->listening_address_reuse = 0;
-   daemon->options = flags;
--#if WINDOWS
-+#if defined(MHD_WINSOCK_SOCKETS) || defined(CYGWIN)
-   /* Winsock is broken with respect to 'shutdown';
-      this disables us calling 'shutdown' on W32. */
-   daemon->options |= MHD_USE_EPOLL_TURBO;
-@@ -3650,7 +3650,7 @@ MHD_start_daemon_va (unsigned int flags,
-       free (daemon);
-       return NULL;
-     }
--#ifndef WINDOWS
-+#ifndef MHD_WINSOCK_SOCKETS
-   if ( (0 == (flags & (MHD_USE_POLL | MHD_USE_EPOLL_LINUX_ONLY))) &&
-        (1 == use_pipe) &&
-        (daemon->wpipe[0] >= FD_SETSIZE) )
-@@ -3934,7 +3934,7 @@ MHD_start_daemon_va (unsigned int flags,
-            (http://msdn.microsoft.com/en-us/library/ms738574%28v=VS.85%29.aspx);
-            and may also be missing on older POSIX systems; good luck if you have any of those,
-            your IPv6 socket may then also bind against IPv4 anyway... */
--#ifndef WINDOWS
-+#ifndef MHD_WINSOCK_SOCKETS
-         const int
- #else
-         const char
-@@ -4016,7 +4016,7 @@ MHD_start_daemon_va (unsigned int flags,
-     {
-       socket_fd = daemon->socket_fd;
-     }
--#ifndef WINDOWS
-+#ifndef MHD_WINSOCK_SOCKETS
-   if ( (socket_fd >= FD_SETSIZE) &&
-        (0 == (flags & (MHD_USE_POLL | MHD_USE_EPOLL_LINUX_ONLY)) ) )
-     {
-@@ -4121,7 +4121,7 @@ MHD_start_daemon_va (unsigned int flags,
-   if ( (daemon->worker_pool_size > 0) &&
-        (0 == (daemon->options & MHD_USE_NO_LISTEN_SOCKET)) )
-     {
--#if !defined(WINDOWS) || defined(CYGWIN)
-+#if !defined(MHD_WINSOCK_SOCKETS)
-       int sk_flags;
- #else
-       unsigned long sk_flags;
-@@ -4140,7 +4140,7 @@ MHD_start_daemon_va (unsigned int flags,
-       /* Accept must be non-blocking. Multiple children may wake up
-        * to handle a new connection, but only one will win the race.
-        * The others must immediately return. */
--#if !defined(WINDOWS) || defined(CYGWIN)
-+#if !defined(MHD_WINSOCK_SOCKETS)
-       sk_flags = fcntl (socket_fd, F_GETFL);
-       if (sk_flags < 0)
-         goto thread_failed;
-@@ -4150,7 +4150,7 @@ MHD_start_daemon_va (unsigned int flags,
-       sk_flags = 1;
-       if (SOCKET_ERROR == ioctlsocket (socket_fd, FIONBIO, &sk_flags))
-         goto thread_failed;
--#endif /* WINDOWS && !CYGWIN */
-+#endif /* MHD_WINSOCK_SOCKETS */
-       /* Allocate memory for pooled objects */
-       daemon->worker_pool = malloc (sizeof (struct MHD_Daemon)
-@@ -4182,7 +4182,7 @@ MHD_start_daemon_va (unsigned int flags,
- #endif
-               goto thread_failed;
-             }
--#ifndef WINDOWS
-+#ifndef MHD_WINSOCK_SOCKETS
-           if ( (0 == (flags & (MHD_USE_POLL | MHD_USE_EPOLL_LINUX_ONLY))) &&
-                (MHD_USE_SUSPEND_RESUME == (flags & MHD_USE_SUSPEND_RESUME)) &&
-                (d->wpipe[0] >= FD_SETSIZE) )
-@@ -4343,7 +4343,7 @@ close_all_connections (struct MHD_Daemon
-     {
-       shutdown (pos->socket_fd,
-                 (pos->read_closed == MHD_YES) ? SHUT_WR : SHUT_RDWR);
--#if WINDOWS
-+#if MHD_WINSOCK_SOCKETS
-       if ( (0 != (daemon->options & MHD_USE_THREAD_PER_CONNECTION)) &&
-            (MHD_INVALID_PIPE_ != daemon->wpipe[1]) &&
-            (1 != MHD_pipe_write_ (daemon->wpipe[1], "e", 1)) )
---- a/src/include/microhttpd.h
-+++ b/src/include/microhttpd.h
-@@ -130,7 +130,7 @@ typedef intptr_t ssize_t;
-  * Current version of the library.
-  * 0x01093001 = 1.9.30-1.
-  */
--#define MHD_VERSION 0x00094200
-+#define MHD_VERSION 0x00094202
- /**
-  * MHD-internal return code for "YES".
-@@ -194,6 +194,53 @@ typedef SOCKET MHD_socket;
- #endif /* MHD_SOCKET_DEFINED */
- /**
-+ * Define MHD_NO_DEPRECATION before including "microhttpd.h" to disable deprecation messages
-+ */
-+#ifdef MHD_NO_DEPRECATION
-+#define _MHD_DEPR_MACRO(msg)
-+#define _MHD_DEPR_FUNC(msg)
-+#endif /* MHD_NO_DEPRECATION */
-+
-+#ifndef _MHD_DEPR_MACRO
-+#if defined(_MSC_FULL_VER) && _MSC_VER+0 >= 1500
-+/* Stringify macros */
-+#define _MHD_INSTRMACRO(a) #a
-+#define _MHD_STRMACRO(a) _MHD_INSTRMACRO(a)
-+#define _MHD_DEPR_MACRO(msg) __pragma(message(__FILE__ "(" _MHD_STRMACRO(__LINE__)"): warning: " msg))
-+#elif defined(__clang__) || defined (__GNUC_PATCHLEVEL__)
-+#define _MHD_GCC_PRAG(x) _Pragma (#x)
-+#if __clang_major__+0 >= 5 || \
-+  (!defined(__apple_build_version__) && (__clang_major__+0  > 3 || (__clang_major__+0 == 3 && __clang_minor__ >= 3))) || \
-+  __GNUC__+0 > 4 || (__GNUC__+0 == 4 && __GNUC_MINOR__+0 >= 8)
-+#define _MHD_DEPR_MACRO(msg) _MHD_GCC_PRAG(GCC warning msg)
-+#else /* older clang or GCC */
-+#define _MHD_DEPR_MACRO(msg) _MHD_GCC_PRAG(message msg)
-+#endif 
-+/* #elif defined(SOMEMACRO) */ /* add compiler-specific macros here if required */
-+#else /* other compilers */
-+#define _MHD_DEPR_MACRO(msg)
-+#endif
-+#endif /* _MHD_DEPR_MACRO */
-+
-+#ifndef _MHD_DEPR_FUNC
-+#if defined(_MSC_FULL_VER) && _MSC_VER+0 >= 1400
-+#define _MHD_DEPR_FUNC(msg) __declspec(deprecated(msg))
-+#elif defined(_MSC_FULL_VER) && _MSC_VER+0 >= 1310
-+/* VS .NET 2003 deprecation do not support custom messages */
-+#define _MHD_DEPR_FUNC(msg) __declspec(deprecated)
-+#elif defined (__clang__) && \
-+  (__clang_major__+0 >= 4 || (!defined(__apple_build_version__) && __clang_major__+0 >= 3))
-+#define _MHD_DEPR_FUNC(msg) __attribute__((deprecated(msg)))
-+#elif defined (__clang__) || __GNUC__+0 > 3 || (__GNUC__+0 == 3 && __GNUC_MINOR__+0 >= 1)
-+/* GCC-style deprecation do not support custom messages */
-+#define _MHD_DEPR_FUNC(msg) __attribute__((__deprecated__))
-+/* #elif defined(SOMEMACRO) */ /* add compiler-specific macros here if required */
-+#else /* other compilers */
-+#define _MHD_DEPR_FUNC(msg)
-+#endif
-+#endif /* _MHD_DEPR_FUNC */
-+
-+/**
-  * Not all architectures and `printf()`'s support the `long long` type.
-  * This gives the ability to replace `long long` with just a `long`,
-  * standard `int` or a `short`.
-@@ -204,6 +251,8 @@ typedef SOCKET MHD_socket;
-  */
- #define MHD_LONG_LONG long long
- #define MHD_UNSIGNED_LONG_LONG unsigned long long
-+#else /* MHD_LONG_LONG */
-+_MHD_DEPR_MACRO("Macro MHD_LONG_LONG is deprecated, use MHD_UNSIGNED_LONG_LONG")
- #endif
- /**
-  * Format string for printing a variable of type #MHD_LONG_LONG.
-@@ -215,6 +264,8 @@ typedef SOCKET MHD_socket;
-  */
- #define MHD_LONG_LONG_PRINTF "ll"
- #define MHD_UNSIGNED_LONG_LONG_PRINTF "%llu"
-+#else /* MHD_LONG_LONG_PRINTF */
-+_MHD_DEPR_MACRO("Macro MHD_LONG_LONG_PRINTF is deprecated, use MHD_UNSIGNED_LONG_LONG_PRINTF")
- #endif
-@@ -253,7 +304,8 @@ typedef SOCKET MHD_socket;
- #define MHD_HTTP_METHOD_NOT_ALLOWED 405
- #define MHD_HTTP_NOT_ACCEPTABLE 406
- /** @deprecated */
--#define MHD_HTTP_METHOD_NOT_ACCEPTABLE 406
-+#define MHD_HTTP_METHOD_NOT_ACCEPTABLE \
-+  _MHD_DEPR_MACRO("Value MHD_HTTP_METHOD_NOT_ACCEPTABLE is deprecated, use MHD_HTTP_NOT_ACCEPTABLE") 406
- #define MHD_HTTP_PROXY_AUTHENTICATION_REQUIRED 407
- #define MHD_HTTP_REQUEST_TIMEOUT 408
- #define MHD_HTTP_CONFLICT 409
-@@ -1953,6 +2005,7 @@ MHD_create_response_from_callback (uint6
-  * @deprecated use #MHD_create_response_from_buffer instead
-  * @ingroup response
-  */
-+_MHD_DEPR_FUNC("MHD_create_response_from_data() is deprecated, use MHD_create_response_from_buffer()") \
- _MHD_EXTERN struct MHD_Response *
- MHD_create_response_from_data (size_t size,
-                              void *data,
-@@ -2023,6 +2076,8 @@ MHD_create_response_from_buffer (size_t
-  * @return NULL on error (i.e. invalid arguments, out of memory)
-  * @ingroup response
-  */
-+/* NOTE: this should be 'uint64_t' instead of 'size_t', but changing
-+   this would break API compatibility. */
- _MHD_EXTERN struct MHD_Response *
- MHD_create_response_from_fd (size_t size,
-                            int fd);
-@@ -2044,6 +2099,8 @@ MHD_create_response_from_fd (size_t size
-  * @return NULL on error (i.e. invalid arguments, out of memory)
-  * @ingroup response
-  */
-+/* NOTE: this should be 'uint64_t' instead of 'size_t', but changing
-+   this would break API compatibility. */
- _MHD_EXTERN struct MHD_Response *
- MHD_create_response_from_fd_at_offset (size_t size,
-                                      int fd,
---- a/src/include/platform_interface.h
-+++ b/src/include/platform_interface.h
-@@ -82,14 +82,14 @@
- /* MHD_socket_close_(fd) close any FDs (non-W32) / close only socket FDs (W32) */
--#if !defined(_WIN32) || defined(__CYGWIN__)
-+#if !defined(MHD_WINSOCK_SOCKETS)
- #define MHD_socket_close_(fd) close((fd))
- #else
- #define MHD_socket_close_(fd) closesocket((fd))
- #endif
- /* MHD_socket_errno_ is errno of last function (non-W32) / errno of last socket function (W32) */
--#if !defined(_WIN32) || defined(__CYGWIN__)
-+#if !defined(MHD_WINSOCK_SOCKETS)
- #define MHD_socket_errno_ errno
- #else
- #define MHD_socket_errno_ MHD_W32_errno_from_winsock_()
-@@ -97,21 +97,21 @@
- /* MHD_socket_last_strerr_ is description string of last errno (non-W32) /
-  *                            description string of last socket error (W32) */
--#if !defined(_WIN32) || defined(__CYGWIN__)
-+#if !defined(MHD_WINSOCK_SOCKETS)
- #define MHD_socket_last_strerr_() strerror(errno)
- #else
- #define MHD_socket_last_strerr_() MHD_W32_strerror_last_winsock_()
- #endif
- /* MHD_strerror_ is strerror (both non-W32/W32) */
--#if !defined(_WIN32) || defined(__CYGWIN__)
-+#if !defined(MHD_WINSOCK_SOCKETS)
- #define MHD_strerror_(errnum) strerror((errnum))
- #else
- #define MHD_strerror_(errnum) MHD_W32_strerror_((errnum))
- #endif
- /* MHD_set_socket_errno_ set errno to errnum (non-W32) / set socket last error to errnum (W32) */
--#if !defined(_WIN32) || defined(__CYGWIN__)
-+#if !defined(MHD_WINSOCK_SOCKETS)
- #define MHD_set_socket_errno_(errnum) errno=(errnum)
- #else
- #define MHD_set_socket_errno_(errnum) MHD_W32_set_last_winsock_error_((errnum))
---- a/src/testcurl/test_digestauth.c
-+++ b/src/testcurl/test_digestauth.c
-@@ -73,7 +73,8 @@ ahc_echo (void *cls,
-           const char *url,
-           const char *method,
-           const char *version,
--          const char *upload_data, size_t *upload_data_size,
-+          const char *upload_data,
-+          size_t *upload_data_size,
-           void **unused)
- {
-   struct MHD_Response *response;
-@@ -82,44 +83,47 @@ ahc_echo (void *cls,
-   const char *realm = "test@example.com";
-   int ret;
--  username = MHD_digest_auth_get_username(connection);
-+  username = MHD_digest_auth_get_username (connection);
-   if ( (username == NULL) ||
-        (0 != strcmp (username, "testuser")) )
-     {
--      response = MHD_create_response_from_buffer(strlen (DENIED), 
--                                               DENIED,
--                                               MHD_RESPMEM_PERSISTENT);  
-+      response = MHD_create_response_from_buffer (strlen (DENIED),
-+                                                  DENIED,
-+                                                  MHD_RESPMEM_PERSISTENT);
-       ret = MHD_queue_auth_fail_response(connection, realm,
-                                        MY_OPAQUE,
-                                        response,
--                                       MHD_NO);    
--      MHD_destroy_response(response);  
-+                                       MHD_NO);
-+      MHD_destroy_response(response);
-       return ret;
-     }
-   ret = MHD_digest_auth_check(connection, realm,
--                            username, 
--                            password, 
-+                            username,
-+                            password,
-                             300);
-   free(username);
-   if ( (ret == MHD_INVALID_NONCE) ||
-        (ret == MHD_NO) )
-     {
--      response = MHD_create_response_from_buffer(strlen (DENIED), 
-+      response = MHD_create_response_from_buffer(strlen (DENIED),
-                                                DENIED,
--                                               MHD_RESPMEM_PERSISTENT);  
--      if (NULL == response) 
-+                                               MHD_RESPMEM_PERSISTENT);
-+      if (NULL == response)
-       return MHD_NO;
-       ret = MHD_queue_auth_fail_response(connection, realm,
-                                        MY_OPAQUE,
-                                        response,
--                                       (ret == MHD_INVALID_NONCE) ? MHD_YES : MHD_NO);  
--      MHD_destroy_response(response);  
-+                                       (ret == MHD_INVALID_NONCE) ? MHD_YES : MHD_NO);
-+      MHD_destroy_response(response);
-       return ret;
-     }
--  response = MHD_create_response_from_buffer(strlen(PAGE), PAGE,
--                                           MHD_RESPMEM_PERSISTENT);
--  ret = MHD_queue_response(connection, MHD_HTTP_OK, response);  
--  MHD_destroy_response(response);
-+  response = MHD_create_response_from_buffer (strlen(PAGE),
-+                                              PAGE,
-+                                              MHD_RESPMEM_PERSISTENT);
-+  ret = MHD_queue_response (connection,
-+                            MHD_HTTP_OK,
-+                            response);
-+  MHD_destroy_response (response);
-   return ret;
- }
-@@ -144,24 +148,24 @@ testDigestAuth ()
-   fd = open("/dev/urandom", O_RDONLY);
-   if (-1 == fd)
-     {
--        fprintf(stderr, "Failed to open `%s': %s\n",
--             "/dev/urandom",
--                 strerror(errno));
--        return 1;
--      }
-+      fprintf(stderr, "Failed to open `%s': %s\n",
-+              "/dev/urandom",
-+              strerror(errno));
-+      return 1;
-+    }
-   while (off < 8)
--      {
--        len = read(fd, rnd, 8);
--        if (len == -1)
--          {
--                fprintf(stderr, "Failed to read `%s': %s\n",
--                     "/dev/urandom",
--                         strerror(errno));
--                (void) close(fd);
--                return 1;
--              }
--        off += len;
--      }
-+    {
-+      len = read(fd, rnd, 8);
-+      if (len == -1)
-+        {
-+          fprintf(stderr, "Failed to read `%s': %s\n",
-+                  "/dev/urandom",
-+                  strerror(errno));
-+          (void) close(fd);
-+          return 1;
-+        }
-+      off += len;
-+    }
-   (void) close(fd);
- #else
-   {
-@@ -193,7 +197,7 @@ testDigestAuth ()
-   if (d == NULL)
-     return 1;
-   c = curl_easy_init ();
--  curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1337/");
-+  curl_easy_setopt (c, CURLOPT_URL, "http://127.0.0.1:1337/bar%20 foo?a=bü%20");
-   curl_easy_setopt (c, CURLOPT_WRITEFUNCTION, &copyBuffer);
-   curl_easy_setopt (c, CURLOPT_WRITEDATA, &cbc);
-   curl_easy_setopt (c, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
-@@ -225,7 +229,6 @@ testDigestAuth ()
- }
--
- int
- main (int argc, char *const *argv)
- {
---- a/src/testcurl/https/test_https_time_out.c
-+++ b/src/testcurl/https/test_https_time_out.c
-@@ -64,7 +64,7 @@ test_tls_session_time_out (gnutls_sessio
-   gnutls_transport_set_ptr (session, (gnutls_transport_ptr_t) (intptr_t) sd);
--  ret = connect (sd, &sa, sizeof (struct sockaddr_in));
-+  ret = connect (sd, (struct sockaddr *) &sa, sizeof (struct sockaddr_in));
-   if (ret < 0)
-     {
index 3e3202ad2c41a37dc2d3e85f101c7fcbdfa28075..1bff5ff9949795e3ee91746974fd0b40ce2ae5a1 100644 (file)
@@ -28,8 +28,8 @@ include $(INCLUDE_DIR)/cmake.mk
 
 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
 
index 404045886ab39b717cf8134bae84453d70395c09..c634061ec6b46b241506952c931fe158b1acf89c 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2006-2014 OpenWrt.org
+# Copyright (C) 2006-2015 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libpng
-PKG_VERSION:=1.2.52
+PKG_VERSION:=1.2.56
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@SF/libpng
-PKG_MD5SUM:=49d5c71929bf69a172147c47b9309fbe
+PKG_MD5SUM:=868562bd1c58b76ed8703f135a2e439a
 PKG_MAINTAINER:=Jo-Philipp Wich <jow@openwrt.org>
 
 PKG_LICENSE:=Libpng GPL-2.0+ BSD-3-Clause
index e124bf80f5dde59e0269ede657513286e6d6d43b..e420a8e2c0ca1653d70be8400c56e66ac28d855f 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libradcli
-PKG_VERSION:=1.2.3
+PKG_VERSION:=1.2.5
 PKG_RELEASE:=1
 
 PKG_SOURCE:=radcli-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://github.com/radcli/radcli/releases/download/radcli_1_2_3/
-PKG_MD5SUM:=e283db7db2248cd6499aff69813cb1ed
+PKG_SOURCE_URL:=https://github.com/radcli/radcli/releases/download/$(PKG_VERSION)/
+PKG_MD5SUM:=b94e46e37668cc562ea5420d095a836b
 PKG_BUILD_DIR:=$(BUILD_DIR)/radcli-$(PKG_VERSION)
 
 PKG_INSTALL:=1
index 4ec9e93a0f225cb11d2c0fb5b2db0701aa36d78c..15c0e8ba352279d03f00c49f81f2fa0e01f05b44 100644 (file)
@@ -52,8 +52,8 @@ define Host/Compile
 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))
index ee96b17f3661b6418e27385d33b87d7448f20e52..aeff8531d1a2d9c1614677663d271e25efca5b1c 100644 (file)
@@ -9,8 +9,9 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libshout
 PKG_VERSION:=2.3.1
-PKG_RELEASE:=1
+PKG_RELEASE:=3
 
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://downloads.us.xiph.org/releases/libshout/
 PKG_MD5SUM:=11765b2592e7ea623ccd93d3f8df172c
@@ -24,12 +25,25 @@ PKG_INSTALL:=1
 
 include $(INCLUDE_DIR)/package.mk
 
-define Package/libshout
+define Package/libshout/default
   SECTION:=libs
   CATEGORY:=Libraries
-  TITLE:=Library which can be used to write a source client like ices
+  TITLE:=Shoutcast client library
   URL:=http://www.icecast.org/download.php
-  DEPENDS:= +libspeex +libtheora +libvorbis +libvorbisidec +libpthread
+  DEPENDS:= +libvorbis +libvorbisidec +libpthread
+endef
+
+define Package/libshout
+  $(call Package/libshout/default)
+  TITLE+= (no speex & theora)
+  VARIANT:=nospeex
+endef
+
+define Package/libshout-full
+  $(call Package/libshout/default)
+  TITLE+= (all codecs)
+  DEPENDS+= +libspeex +libtheora
+  VARIANT:=full
 endef
 
 define Package/libshout/description
@@ -40,9 +54,15 @@ define Package/libshout/description
  details.
 endef
 
+Package/libshout-full/description=Package/libshout/description
+
 CONFIGURE_ARGS += \
        --enable-shared \
-       --enable-static \
+       --enable-static
+
+ifeq ($(BUILD_VARIANT),nospeex)
+  CONFIGURE_ARGS += --disable-theora --disable-speex
+endif
 
 CONFIGURE_VARS += \
        VORBIS_CFLAGS="-I$(STAGING_DIR)/usr/include/tremor/" \
@@ -50,19 +70,23 @@ CONFIGURE_VARS += \
 
 TARGET_CFLAGS += $(FPIC) -Wl,-rpath-link="$(STAGING_DIR)/usr/lib"
 
+PACKAGE_CONFIG_FILE=shout$(if $(findstring $(BUILD_VARIANT),full),-full).pc
+
 define Build/InstallDev
        $(INSTALL_DIR) $(1)/usr/include
        $(CP) $(PKG_INSTALL_DIR)/usr/include/shout $(1)/usr/include/
        $(INSTALL_DIR) $(1)/usr/lib
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/libshout.{a,so*} $(1)/usr/lib/
        $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
-       $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/shout.pc $(1)/usr/lib/pkgconfig/
-       $(SED) 's| -I/usr/include||' $(1)/usr/lib/pkgconfig/shout.pc
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/shout.pc $(1)/usr/lib/pkgconfig/$(PACKAGE_CONFIG_FILE)
+       $(SED) 's| -I/usr/include||' $(1)/usr/lib/pkgconfig/$(PACKAGE_CONFIG_FILE)
 endef
 
 define Package/libshout/install
        $(INSTALL_DIR) $(1)/usr/lib
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/libshout.so.* $(1)/usr/lib/
 endef
+Package/libshout-full/install=$(Package/libshout/install)
 
 $(eval $(call BuildPackage,libshout))
+$(eval $(call BuildPackage,libshout-full))
index 9e9809de8a944d0f7a44e0e0e1ef2265aab8e33a..fa92f14057916ec45bff51e9d7cefec3c90182f2 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libsndfile
-PKG_VERSION:=1.0.25
+PKG_VERSION:=1.0.26
 PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.mega-nerd.com/libsndfile/files/
-PKG_MD5SUM:=e2b7bb637e01022c7d20f95f9c3990a2
+PKG_MD5SUM:=ec810a0c60c08772a8a5552704b63393
 
 PKG_LICENSE:=LGPLv2.1
 PKG_LICENSE_FILES:=COPYING
diff --git a/libs/libsndfile/patches/001-automake-compat.patch b/libs/libsndfile/patches/001-automake-compat.patch
deleted file mode 100644 (file)
index 2df32ae..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -1,5 +1,7 @@
- ## Process this file with automake to produce Makefile.in
-+ACLOCAL_AMFLAGS = -I M4
-+
- DISTCHECK_CONFIGURE_FLAGS = --enable-gcc-werror
- if BUILD_OCTAVE_MOD
index 24892ad3f7e39a39880b19e3d30b8f4d24c9097d..ae0c199261ec214531c1878aeff0c4fd99f14997 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libsodium
-PKG_VERSION:=1.0.6
+PKG_VERSION:=1.0.8
 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:=0a66b86fd3aab3fe4c858edcd2772760
 
 PKG_FIXUP:=libtool autoreconf
 PKG_USE_MIPS16:=0
index a482b5ed4e99d669a48492a830961dfd907961e1..873632a8d7ba49458fde7c88069e167760fd694c 100644 (file)
@@ -8,12 +8,12 @@
 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
@@ -42,6 +42,7 @@ define Build/Configure
                --disable-glibtest \
                --without-apache-httpd \
                --without-gnome \
+               --enable-vala=no \
        )
 endef
 
index 93287c52de2b9057c8f7949b8f05a19af199f13e..c1eaad16e6d4bfdbf9b76bb5efc0fe193196abca 100644 (file)
@@ -36,8 +36,8 @@ UPM_MODULES:= \
        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
index 3e5f00462c1c8db1a6b59cc683daa95ce881240a..71acda3618d1685518aa060d2358db8d6dae0b93 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libwebsockets
-PKG_VERSION:=1.5-chrome47-firefox41
+PKG_VERSION:=1.6.2
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
@@ -27,8 +27,7 @@ CMAKE_INSTALL:=1
 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
@@ -74,7 +73,7 @@ ifeq ($(BUILD_VARIANT),cyassl)
 # 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
 
index 8680e9cef226536b23f371e275c1ddda5a6bb4c6..8e09530e384dfe2a21f18c95639fc3b4c20acfcc 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2006-2014 OpenWrt.org
+# Copyright (C) 2006-2015 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libxml2
-PKG_VERSION:=2.9.2
-PKG_RELEASE:=3
+PKG_VERSION:=2.9.3
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://gd.tuwien.ac.at/languages/libxml/ \
        http://xmlsoft.org/sources/ \
        ftp://fr.rpmfind.net/pub/libxml/
-PKG_MD5SUM:=9e6a9aca9d155737868b3dc5fd82f788
+PKG_MD5SUM:=daece17e045f1c107610e137ab50c179
 
 PKG_LICENSE:=MIT
 PKG_LICENSE_FILES:=COPYING
diff --git a/libs/libxml2/patches/0001-threads-use-forward-declarations-only-for-glibc-fixe.patch b/libs/libxml2/patches/0001-threads-use-forward-declarations-only-for-glibc-fixe.patch
deleted file mode 100644 (file)
index e6c3fbe..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-From e3e04d254fb6bac49a285775b729e28b0500476c Mon Sep 17 00:00:00 2001
-From: Michael Heimpold <mhei@heimpold.de>
-Date: Sun, 21 Dec 2014 01:03:49 +0100
-Subject: [PATCH] threads: use forward declarations only for glibc (fixes
- #704908)
-
-The declarations of pthread functions, used to generate weak references
-to them, fail to suppress macros. Thus, if any pthread function has
-been provided as a macro, compiling threads.c will fail.
-This breaks on musl libc, which defines pthread_equal as a macro (in
-addition to providing the function, as required).
-
-Prevent the declarations for e.g. musl libc by refining the condition.
-
-The idea for this solution was borrowed from the alpine linux guys, see
-http://git.alpinelinux.org/cgit/aports/tree/main/libxml2/libxml2-pthread.patch
-
-Signed-off-by: Michael Heimpold <mhei@heimpold.de>
----
- threads.c |    4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/threads.c
-+++ b/threads.c
-@@ -47,7 +47,7 @@
- #ifdef HAVE_PTHREAD_H
- static int libxml_is_threaded = -1;
--#ifdef __GNUC__
-+#if defined(__GNUC__) && defined(__GLIBC__)
- #ifdef linux
- #if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || (__GNUC__ > 3)
- extern int pthread_once (pthread_once_t *__once_control,
-@@ -89,7 +89,7 @@ extern int pthread_cond_signal ()
-          __attribute((weak));
- #endif
- #endif /* linux */
--#endif /* __GNUC__ */
-+#endif /* defined(__GNUC__) && defined(__GLIBC__) */
- #endif /* HAVE_PTHREAD_H */
- /*
index f3fc66eed39a14f016b92c074256aef30ce2c751..cf17a2cffecde5be75db01e63d3e7049512eed27 100644 (file)
@@ -67,8 +67,8 @@ define Host/Compile
 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))
index 74c166a6cc48340b2fe0d44fe59230e5f3345729..1edfd77b3a7b0cdcbc5d9c7478b4af60641f0c27 100644 (file)
@@ -14,7 +14,7 @@ diff -rupN libzdb-3.0.orig/Makefile.am libzdb-3.0/Makefile.am
  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
index a2423d297889c59f4f03a3bccd4d07cb16116af5..f9a83477208a25087e5f0c4c0877249385fcadc3 100644 (file)
@@ -8,7 +8,7 @@
 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
@@ -16,7 +16,7 @@ PKG_SOURCE_URL:=ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/ \
        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
 
index 853287aac2ec7cc9e8f160222fcf6fee1798bd41..a9facc13fd5a55946d480f5d898a6a12dbaf227d 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=p11-kit
-PKG_VERSION:=0.20.7
+PKG_VERSION:=0.23.1
 PKG_RELEASE:=1
 PKG_MAINTAINER:=Nikos Mavrogiannopoulos <n.mavrogiannopoulos@gmail.com>
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_MD5SUM:=6648cad01a3080b685b8b3bf7372c91a
+PKG_MD5SUM:=96f073270c489c9a594e1c9413f42db8
 PKG_SOURCE_URL:=http://p11-glue.freedesktop.org/releases/
 
 PKG_INSTALL:=1
index 6a9c4144c361a1749a2c6375335749d7c217ce7f..75fa99299cfcd60381d37a352ca7ec596a474cd0 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=pcre
-PKG_VERSION:=8.37
-PKG_RELEASE:=2
+PKG_VERSION:=8.38
+PKG_RELEASE:=1
 
 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
diff --git a/libs/pcre/patches/100-pcre-cve-2015-3210.patch b/libs/pcre/patches/100-pcre-cve-2015-3210.patch
deleted file mode 100644 (file)
index 276d09e..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-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. */
index 5ab9a582e5d626a30fad0912be210b46b45d8f20..72b99b62730cb018ffe8b0574602edaa7eb54ac4 100644 (file)
@@ -42,7 +42,7 @@ endef
 define Package/pgsql-cli
   SECTION:=utils
   CATEGORY:=Utilities
-  DEPENDS:=+libpq @USE_UCLIBC:+librt
+  DEPENDS:=+libpq +USE_UCLIBC:librt
   TITLE:=Command Line Interface (CLI) to PostgreSQL databases
   URL:=http://www.postgresql.org/
   SUBMENU:=database
@@ -55,7 +55,7 @@ endef
 define Package/pgsql-server
   SECTION:=utils
   CATEGORY:=Utilities
-  DEPENDS:=+libpq @USE_UCLIBC:+librt
+  DEPENDS:=+libpq +USE_UCLIBC:librt
   TITLE:=PostgreSQL databases Server
   URL:=http://www.postgresql.org/
   SUBMENU:=database
index 72133be8676535d72dd4e09a96f2bf89899cac62..1e70a12fce9be730f52805b3a805bc6857825f23 100644 (file)
@@ -41,7 +41,7 @@ define Package/protobuf/description
  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) \
index 4a94a8986bd68b7fd6354b7af27f05f6e46440c0..d962371baa3470f8bfc1d6453bc5beac8e6d9241 100644 (file)
@@ -9,9 +9,9 @@ include $(TOPDIR)/rules.mk
 
 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)
index ab07dc1e1478d5b6653d79c0b7a28fafb60179d5..86f2a2d7eb092e9c45238eb27e3be44a81f46b66 100644 (file)
@@ -10,7 +10,7 @@
 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+
@@ -18,7 +18,7 @@ PKG_LICENSE_FILES:=LICENCE.txt
 
 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
index 74e673c1acdbddae9670c3966777bc917b86ff14..f7ecc489ef6becfe0cf9629222fb0dea0f2d4b95 100644 (file)
@@ -1,6 +1,6 @@
 --- 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
index 121f7070140991dc512422de417a8870caf3f26e..3e13e272f233642e8f3549b5aaee6940794cc2fa 100644 (file)
@@ -1,6 +1,6 @@
 --- a/src/metadata.hpp
 +++ b/src/metadata.hpp
-@@ -31,7 +31,7 @@ namespace zmq
+@@ -41,7 +41,7 @@ namespace zmq
      {
          public:
  
@@ -11,7 +11,7 @@
              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>
@@ -21,7 +21,7 @@
  
 --- 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;
@@ -30,7 +30,7 @@
              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()) {
index 6abd647ae376ddf64322e5b5b9499bdffa595582..8c137c8c541dd62b01dd886f4fbb4141bf70a62c 100644 (file)
@@ -1,6 +1,6 @@
 --- a/src/blob.hpp
 +++ b/src/blob.hpp
-@@ -21,6 +21,7 @@
+@@ -31,6 +31,7 @@
  #define __ZMQ_BLOB_HPP_INCLUDED__
  
  #include <string>
diff --git a/libs/zmq/patches/040-fix_GNUC_conditional_for_GCC5.patch b/libs/zmq/patches/040-fix_GNUC_conditional_for_GCC5.patch
new file mode 100644 (file)
index 0000000..dea9b48
--- /dev/null
@@ -0,0 +1,11 @@
+--- 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<>
index 63a21ba1f67a269e1382756c11b511521906bd5b..120e96595827829b63fe3b8d2c5c2fced0f19386 100644 (file)
@@ -1,6 +1,6 @@
 --- 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/>.
  */
  
@@ -16,7 +16,7 @@
  #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/>.
  */
  
@@ -30,7 +30,7 @@
  #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/>.
  */
  
@@ -46,7 +46,7 @@
  #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>
@@ -56,7 +56,7 @@
  #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/>.
  */
  
@@ -70,7 +70,7 @@
  #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/>.
  */
  
diff --git a/mail/mutt/Makefile b/mail/mutt/Makefile
new file mode 100644 (file)
index 0000000..dca6cb5
--- /dev/null
@@ -0,0 +1,53 @@
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=mutt
+PKG_VERSION:=1.5.24
+PKG_RELEASE:=1
+
+PKG_SOURCE_URL:=ftp://ftp.mutt.org/pub/mutt/
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_MD5SUM:=7f25d27f3c7c82285ac07aac35f5f0f2
+
+PKG_LICENSE:=GPL-2.0+
+PKG_LICENSE_FILES:=GPL
+PKG_MAINTAINER=Phil Eichinger <phil@zankapfel.net>
+
+
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/mutt
+  SECTION:=mail
+  CATEGORY:=Mail
+  DEPENDS:=+libopenssl +libncursesw
+  TITLE:=Console mail client
+  URL:=http://www.mutt.org/
+endef
+
+define Package/mutt/description
+       Mutt is a small but very powerful text-based mail client for Unix
+       operating systems.
+endef
+
+CONFIGURE_ARGS += \
+       --includedir=$(PKG_BUILD_DIR)/. \
+       --oldincludedir=$(PKG_BUILD_DIR)/. \
+       --enable-pop \
+       --enable-imap \
+       --with-ssl \
+       --without-idn
+
+define Package/mutt/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/mutt $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,mutt))
diff --git a/mail/mutt/patches/0001-no-po-and-docs.patch b/mail/mutt/patches/0001-no-po-and-docs.patch
new file mode 100644 (file)
index 0000000..607e441
--- /dev/null
@@ -0,0 +1,27 @@
+From b0e285a8c7faaec8807fdd677da6750f341f0109 Mon Sep 17 00:00:00 2001
+From: Phil Eichinger <phil@zankapfel.net>
+Date: Thu, 19 Nov 2015 13:18:53 +0100
+Subject: [PATCH] no po and docs
+
+[adapted old patch and converted to git patch]
+Signed-off-by: Phil Eichinger <phil@zankapfel.net>
+---
+ Makefile.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 1909835..cfa7ca0 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -458,7 +458,7 @@ get_cs_cmdline = $(call get_cs_compile,$(1)) $(call get_cs_all_flags,$(1),check_
+ AUTOMAKE_OPTIONS = 1.6 foreign
+ @BUILD_IMAP_TRUE@IMAP_SUBDIR = imap
+ @BUILD_IMAP_TRUE@IMAP_INCLUDES = -I$(top_srcdir)/imap
+-SUBDIRS = m4 po intl doc contrib $(IMAP_SUBDIR)
++SUBDIRS = m4 intl contrib $(IMAP_SUBDIR)
+ bin_SCRIPTS = muttbug flea $(SMIMEAUX_TARGET)
+ @BUILD_HCACHE_TRUE@HCVERSION = hcversion.h
+ BUILT_SOURCES = keymap_defs.h patchlist.c reldate.h conststrings.c $(HCVERSION)
+-- 
+2.1.4
+
index 3d243947773c9d82b415f9459de725c72bc2afa5..4e8104c4ca894a04ecba40ecd11aecef437a41c1 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2014 OpenWrt.org
+# Copyright (C) 2007-2015 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -9,8 +9,8 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ssmtp
 PKG_VERSION:=2.64
-PKG_RELEASE:=1.1
-PKG_MAINTAINER:=Dirk Brenken <dibdot@gmail.com>
+PKG_RELEASE:=1
+PKG_MAINTAINER:=Dirk Brenken <dirk@brenken.org>
 PKG_LICENSE:=GPL-2.0+
 
 PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.bz2
@@ -21,23 +21,24 @@ include $(INCLUDE_DIR)/package.mk
 
 TARGET_CFLAGS += $(TARGET_CPPFLAGS)
 
-define Package/ssmtp
-  SECTION:=mail
-  CATEGORY:=Mail
-  DEPENDS:=+libopenssl
-  TITLE:=A minimal and secure mail sender with ssl support
-  URL:=http://packages.debian.org/ssmtp
+define Package/$(PKG_NAME)
+       SECTION:=mail
+       CATEGORY:=Mail
+       DEPENDS:=+libopenssl
+       TITLE:=A minimal and secure mail sender with ssl support
+       URL:=http://packages.debian.org/ssmtp
 endef
 
-define Package/ssmtp/description
- A secure, effective and simple way of getting mail off a system to your
- mail hub. It contains no suid-binaries or other dangerous things - no
- mail spool to poke around in, and no daemons running in the background.
- Mail is simply forwarded to the configured mailhost. Extremely easy
- configuration.
+define Package/$(PKG_NAME)/description
+A secure, effective and simple way of getting mail off a system to your
+mail hub. It contains no suid-binaries or other dangerous things - no
+mail spool to poke around in, and no daemons running in the background.
+Mail is simply forwarded to the configured mailhost. Extremely easy
+configuration.
+
 endef
 
-define Package/ssmtp/conffiles
+define Package/$(PKG_NAME)/conffiles
 /etc/ssmtp/ssmtp.conf
 /etc/ssmtp/revaliases
 endef
@@ -48,7 +49,7 @@ CONFIGURE_VARS += \
 CONFIGURE_ARGS += \
        --enable-ssl
 
-define Package/ssmtp/install
+define Package/$(PKG_NAME)/install
        $(INSTALL_DIR) $(1)/etc/ssmtp
        $(INSTALL_CONF) $(PKG_BUILD_DIR)/ssmtp.conf $(1)/etc/ssmtp/
        $(INSTALL_DATA) $(PKG_BUILD_DIR)/revaliases $(1)/etc/ssmtp/
@@ -56,9 +57,9 @@ define Package/ssmtp/install
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/ssmtp $(1)/usr/sbin/
 endef
 
-define Package/ssmtp/postinst
+define Package/$(PKG_NAME)/postinst
 #!/bin/sh
 ln -sf ssmtp $${IPKG_INSTROOT}/usr/sbin/sendmail
 endef
 
-$(eval $(call BuildPackage,ssmtp))
+$(eval $(call BuildPackage,$(PKG_NAME)))
diff --git a/mail/ssmtp/patches/004-remove_dead-letter.patch b/mail/ssmtp/patches/004-remove_dead-letter.patch
new file mode 100644 (file)
index 0000000..5e8b2d9
--- /dev/null
@@ -0,0 +1,94 @@
+--- a/ssmtp.c
++++ b/ssmtp.c
+@@ -138,71 +138,7 @@ int smtp_read_all(int fd, char *response
+ int smtp_okay(int fd, char *response);
+ /*
+-dead_letter() -- Save stdin to ~/dead.letter if possible
+-*/
+-void dead_letter(void)
+-{
+-      char *path;
+-      char buf[(BUF_SZ + 1)];
+-      struct passwd *pw;
+-      uid_t uid;
+-      FILE *fp;
+-
+-      uid = getuid();
+-      pw = getpwuid(uid);
+-
+-      if(isatty(fileno(stdin))) {
+-              if(log_level > 0) {
+-                      log_event(LOG_ERR,
+-                              "stdin is a TTY - not saving to %s/dead.letter", pw->pw_dir);
+-              }
+-              return;
+-      }
+-
+-      if(pw == (struct passwd *)NULL) {
+-              /* Far to early to save things */
+-              if(log_level > 0) {
+-                      log_event(LOG_ERR, "No sender failing horribly!");
+-              }
+-              return;
+-      }
+-
+-#define DEAD_LETTER "/dead.letter"
+-      path = malloc (strlen (pw->pw_dir) + sizeof (DEAD_LETTER));
+-      if (!path) {
+-              /* Can't use die() here since dead_letter() is called from die() */
+-              exit(1);
+-      }
+-      memcpy (path, pw->pw_dir, strlen (pw->pw_dir));
+-      memcpy (path + strlen (pw->pw_dir), DEAD_LETTER, sizeof (DEAD_LETTER));
+-      
+-      if((fp = fopen(path, "a")) == (FILE *)NULL) {
+-              /* Perhaps the person doesn't have a homedir... */
+-              if(log_level > 0) {
+-                      log_event(LOG_ERR, "Can't open %s failing horribly!", path);
+-              }
+-              free(path);
+-              return;
+-      }
+-
+-      /* We start on a new line with a blank line separating messages */
+-      (void)fprintf(fp, "\n\n");
+-
+-      while(fgets(buf, sizeof(buf), stdin)) {
+-              (void)fputs(buf, fp);
+-      }
+-
+-      if(fclose(fp) == -1) {
+-              if(log_level > 0) {
+-                      log_event(LOG_ERR,
+-                              "Can't close %s/dead.letter, possibly truncated", pw->pw_dir);
+-              }
+-      }
+-      free(path);
+-}
+-
+-/*
+-die() -- Write error message, dead.letter and exit
++die() -- Write error message and exit
+ */
+ void die(char *format, ...)
+ {
+@@ -216,9 +152,6 @@ void die(char *format, ...)
+       (void)fprintf(stderr, "%s: %s\n", prog, buf);
+       log_event(LOG_ERR, "%s", buf);
+-      /* Send message to dead.letter */
+-      (void)dead_letter();
+-
+       exit(1);
+ }
+@@ -1640,7 +1573,7 @@ int ssmtp(char *argv[])
+                       sleep(1);
+                       /* don't hang forever when reading from stdin */
+                       if (++timeout >= MEDWAIT) {
+-                              log_event(LOG_ERR, "killed: timeout on stdin while reading body -- message saved to dead.letter.");
++                              log_event(LOG_ERR, "killed: timeout on stdin while reading body.");
+                               die("Timeout on stdin while reading body");
+                       }
+                       continue;
diff --git a/mail/ssmtp/patches/006-add_ip-header.patch b/mail/ssmtp/patches/006-add_ip-header.patch
new file mode 100644 (file)
index 0000000..e142e40
--- /dev/null
@@ -0,0 +1,21 @@
+--- a/ssmtp.c
++++ b/ssmtp.c
+@@ -1338,6 +1338,7 @@ ssmtp() -- send the message (exactly one
+ int ssmtp(char *argv[])
+ {
+       char b[(BUF_SZ + 2)], *buf = b+1, *p, *q;
++      char *remote_addr;
+ #ifdef MD5AUTH
+       char challenge[(BUF_SZ + 1)];
+ #endif
+@@ -1541,6 +1542,10 @@ int ssmtp(char *argv[])
+               outbytes += smtp_write(sock, "From: %s", from);
+       }
++      if(remote_addr=getenv("REMOTE_ADDR")) {
++              outbytes += smtp_write(sock, "X-Originating-IP: %s", remote_addr);
++      }
++
+       if(have_date == False) {
+               outbytes += smtp_write(sock, "Date: %s", arpadate);
+       }
diff --git a/mail/ssmtp/patches/008-remove_garbage.patch b/mail/ssmtp/patches/008-remove_garbage.patch
new file mode 100644 (file)
index 0000000..d72f635
--- /dev/null
@@ -0,0 +1,18 @@
+--- a/ssmtp.c
++++ b/ssmtp.c
+@@ -1591,12 +1591,12 @@ int ssmtp(char *argv[])
+                       outbytes += smtp_write(sock, "%s", leadingdot ? b : buf);
+               } else {
+                       if (log_level > 0) {
+-                              log_event(LOG_INFO, "Sent a very long line in chunks");
++                              log_event(LOG_INFO, "Sending a partial line");
+                       }
+                       if (leadingdot) {
+-                              outbytes += fd_puts(sock, b, sizeof(b));
++                              outbytes += fd_puts(sock, b, strlen(b));
+                       } else {
+-                              outbytes += fd_puts(sock, buf, bufsize);
++                              outbytes += fd_puts(sock, buf, strlen(buf));
+                       }
+               }
+               (void)alarm((unsigned) MEDWAIT);
diff --git a/mail/ssmtp/patches/010-fix_message-header.patch b/mail/ssmtp/patches/010-fix_message-header.patch
new file mode 100644 (file)
index 0000000..3fc9fad
--- /dev/null
@@ -0,0 +1,92 @@
+--- a/ssmtp.c
++++ b/ssmtp.c
+@@ -282,6 +282,7 @@ standardise() -- Trim off '\n's and doub
+ */
+ bool_t standardise(char *str, bool_t *linestart)
+ {
++      size_t sl;
+       char *p;
+       bool_t leadingdot = False;
+@@ -297,6 +298,12 @@ bool_t standardise(char *str, bool_t *li
+       if((p = strchr(str, '\n'))) {
+               *p = '\0';
+               *linestart = True;
++
++              /* If the line ended in "\r\n", then drop the '\r' too */
++              sl = strlen(str);
++              if(sl >= 1 && str[sl - 1] == '\r') {
++                      str[sl - 1] = '\0';
++              }
+       }
+       return(leadingdot);
+ }
+@@ -690,6 +697,14 @@ void header_parse(FILE *stream)
+               }
+               len++;
++              if(l == '\r' && c == '\n') {
++                      /* Properly handle input that already has "\r\n"
++                         line endings; see https://bugs.debian.org/584162 */
++                      l = (len >= 2 ? *(q - 2) : '\n');
++                      q--;
++                      len--;
++              }
++
+               if(l == '\n') {
+                       switch(c) {
+                               case ' ':
+@@ -712,8 +727,9 @@ void header_parse(FILE *stream)
+                                               if((q = strrchr(p, '\n'))) {
+                                                       *q = '\0';
+                                               }
+-                                              header_save(p);
+-
++                                              if(len > 0) {
++                                                      header_save(p);
++                                              }
+                                               q = p;
+                                               len = 0;
+                       }
+@@ -722,35 +738,12 @@ void header_parse(FILE *stream)
+               l = c;
+       }
+-      if(in_header) {
+-              if(l == '\n') {
+-                      switch(c) {
+-                              case ' ':
+-                              case '\t':
+-                                              /* Must insert '\r' before '\n's embedded in header
+-                                                 fields otherwise qmail won't accept our mail
+-                                                 because a bare '\n' violates some RFC */
+-                                              
+-                                              *(q - 1) = '\r';        /* Replace previous \n with \r */
+-                                              *q++ = '\n';            /* Insert \n */
+-                                              len++;
+-                                              
+-                                              break;
+-
+-                              case '\n':
+-                                              in_header = False;
+-
+-                              default:
+-                                              *q = '\0';
+-                                              if((q = strrchr(p, '\n'))) {
+-                                                      *q = '\0';
+-                                              }
+-                                              header_save(p);
+-
+-                                              q = p;
+-                                              len = 0;
+-                      }
+-              }
++      if(in_header && l == '\n') {
++              /* Got EOF while reading the header */
++              if((q = strrchr(p, '\n'))) {
++                      *q = '\0';
++              }
++              header_save(p);
+       }
+       (void)free(p);
+ }
index ed677cf3ec893af942c94309518b7ad828623cf8..d24eeb964ea0f3d00285a31889cb93f5ef5e9ec9 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ffmpeg
-PKG_VERSION:=2.7.2
+PKG_VERSION:=2.7.4
 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:=dea35a30de724e1851a94680fc209a0d
 PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
 
 PKG_LICENSE:=LGPL-2.1+ GPL-2+ LGPL-3
index 59800e1150b4b149b9d65a8f1487e0cbea071b8a..153cd1a9f98a06d1e7256a500eb5e0c248a2a13d 100644 (file)
@@ -8,7 +8,7 @@
 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>
@@ -17,8 +17,8 @@ PKG_LICENSE:=LGPLv2.1
 PKG_LICENSE_FILES:=COPYING
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=https://download.gnome.org/sources/grilo-plugins/0.2/
-PKG_MD5SUM:=62ecaad877b485a950259eef1ef38c18
+PKG_SOURCE_URL:=@GNOME/grilo-plugins/0.3/
+PKG_MD5SUM:=670f0302a4b91c043a7c9f9222545fbe
 
 PKG_BUILD_DEPENDS:=glib2 grilo
 
@@ -54,7 +54,7 @@ CONFIGURE_ARGS += \
         --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
@@ -68,10 +68,10 @@ 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
 
index 473344af7ea530fb7f7f218ba177058106c5762a..7e78e3dbecb25ee4b25742664d11b9ed9335a346 100644 (file)
@@ -8,7 +8,7 @@
 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>
@@ -17,8 +17,8 @@ PKG_LICENSE:=LGPLv2.1
 PKG_LICENSE_FILES:=COPYING
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=https://download.gnome.org/sources/grilo/0.2/
-PKG_MD5SUM:=7eba405ada20fefcb877d534d9d4f
+PKG_SOURCE_URL:=@GNOME/grilo/0.3/
+PKG_MD5SUM:=f8a51aacc604dcc308e71f8bca4c57ae
 
 PKG_BUILD_DEPENDS:=glib2 libsoup libxml2
 
@@ -46,7 +46,7 @@ endef
 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) \
@@ -56,6 +56,13 @@ define Build/InstallDev
        $(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
diff --git a/multimedia/grilo/files/grilo-0.3.vapi b/multimedia/grilo/files/grilo-0.3.vapi
new file mode 100644 (file)
index 0000000..6bcd1bd
--- /dev/null
@@ -0,0 +1,1033 @@
+/* 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);
+}
diff --git a/multimedia/grilo/files/grilo-net-0.3.vapi b/multimedia/grilo/files/grilo-net-0.3.vapi
new file mode 100644 (file)
index 0000000..b5f6cef
--- /dev/null
@@ -0,0 +1,43 @@
+/* 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
+       }
+}
index 36a25293a970351983c70a4559e0f88e53e2f3b0..4bbd23c23e800ff55fd0ecdca438995b97f8a6b5 100644 (file)
@@ -8,14 +8,14 @@
 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
index bfeb1c593f3cbc41dcb242321013e9532b346ecb..d6e1fb600b3b046fcd0bb6aae85a5b6b72b6ca66 100644 (file)
@@ -8,8 +8,8 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gst1-plugins-bad
-PKG_VERSION:=1.4.5
-PKG_RELEASE:=2
+PKG_VERSION:=1.6.2
+PKG_RELEASE:=1
 
 PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
 
@@ -19,7 +19,7 @@ PKG_LICENSE_FILES:=COPYING.LIB COPYING
 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
 
@@ -115,7 +115,6 @@ CONFIGURE_ARGS += \
        --disable-resindvd \
        --disable-faac \
        --disable-faad \
-       --disable-fbdev \
        --disable-flite \
        --disable-gsm \
        --disable-kate \
@@ -247,6 +246,7 @@ $(eval $(call GstBuildPlugin,camerabin2,camerabin support,basecamerabinsrc photo
 $(eval $(call GstBuildPlugin,dataurisrc,dataurisrc support,,,))
 $(eval $(call GstBuildPlugin,debugutilsbad,debugutils support,video,,))
 $(eval $(call GstBuildPlugin,dvdspu,dvdspu support,video,,))
+$(eval $(call GstBuildPlugin,fbdevsink,fbdev support,video,,))
 $(eval $(call GstBuildPlugin,festival,festival support,audio,,))
 $(eval $(call GstBuildPlugin,frei0r,frei0r support,controller video,,))
 $(eval $(call GstBuildPlugin,id3tag,id3tag support,tag,,))
diff --git a/multimedia/gst1-plugins-bad/patches/000-gettext.patch b/multimedia/gst1-plugins-bad/patches/000-gettext.patch
deleted file mode 100644 (file)
index 1c0d88e..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
---- 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
diff --git a/multimedia/gst1-plugins-bad/patches/001-no-translations.patch b/multimedia/gst1-plugins-bad/patches/001-no-translations.patch
new file mode 100644 (file)
index 0000000..8ea31a7
--- /dev/null
@@ -0,0 +1,28 @@
+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
diff --git a/multimedia/gst1-plugins-bad/patches/002-no-tests.patch b/multimedia/gst1-plugins-bad/patches/002-no-tests.patch
new file mode 100644 (file)
index 0000000..5d69bb1
--- /dev/null
@@ -0,0 +1,58 @@
+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
index 6f7cda5d8823069ac6fb7c3399684777b5498bfc..34ae6056739a9710d5902df42d1e9407cdd740d4 100644 (file)
@@ -8,7 +8,7 @@
 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>
@@ -19,7 +19,7 @@ PKG_LICENSE_FILES:=COPYING.LIB COPYING
 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:= \
@@ -275,7 +275,7 @@ $(eval $(call GstBuildPlugin,audiotestsrc,audio test,audio tag controller,,))
 $(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,,))
diff --git a/multimedia/gst1-plugins-base/patches/001-no-translations.patch b/multimedia/gst1-plugins-base/patches/001-no-translations.patch
new file mode 100644 (file)
index 0000000..9a9ec77
--- /dev/null
@@ -0,0 +1,30 @@
+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
diff --git a/multimedia/gst1-plugins-base/patches/001-no_docs.patch b/multimedia/gst1-plugins-base/patches/001-no_docs.patch
deleted file mode 100644 (file)
index 0044cec..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
---- 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                   \
diff --git a/multimedia/gst1-plugins-base/patches/002-no-tests.patch b/multimedia/gst1-plugins-base/patches/002-no-tests.patch
new file mode 100644 (file)
index 0000000..7754a2c
--- /dev/null
@@ -0,0 +1,46 @@
+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
diff --git a/multimedia/gst1-plugins-base/patches/002-no_tests.patch b/multimedia/gst1-plugins-base/patches/002-no_tests.patch
deleted file mode 100644 (file)
index 3e8c93d..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
---- 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
diff --git a/multimedia/gst1-plugins-base/patches/003-no-docs.patch b/multimedia/gst1-plugins-base/patches/003-no-docs.patch
new file mode 100644 (file)
index 0000000..6fa663d
--- /dev/null
@@ -0,0 +1,32 @@
+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                   \
diff --git a/multimedia/gst1-plugins-base/patches/003-no_translations.patch b/multimedia/gst1-plugins-base/patches/003-no_translations.patch
deleted file mode 100644 (file)
index 894c8da..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
---- 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
index f52d82fc3f1447568e3d05143d3c461ee5fde99b..8e7fcbe9038c6b3fdeef4bb09608cd7af2b67350 100644 (file)
@@ -8,8 +8,8 @@
 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>
 
@@ -19,7 +19,7 @@ PKG_LICENSE_FILES:=COPYING
 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
 
@@ -189,8 +189,8 @@ $(eval $(call GstBuildPlugin,flac,FLAC codec,audio pbutils tag,,+libflac))
 $(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,,,))
diff --git a/multimedia/gst1-plugins-good/patches/001-no-translations.patch b/multimedia/gst1-plugins-good/patches/001-no-translations.patch
new file mode 100644 (file)
index 0000000..6d3ace8
--- /dev/null
@@ -0,0 +1,22 @@
+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
diff --git a/multimedia/gst1-plugins-good/patches/001-no_docs.patch b/multimedia/gst1-plugins-good/patches/001-no_docs.patch
deleted file mode 100644 (file)
index 21c10c3..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
---- 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                      \
diff --git a/multimedia/gst1-plugins-good/patches/002-no-tests.patch b/multimedia/gst1-plugins-good/patches/002-no-tests.patch
new file mode 100644 (file)
index 0000000..58ad738
--- /dev/null
@@ -0,0 +1,36 @@
+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                      \
diff --git a/multimedia/gst1-plugins-good/patches/002-no_tests.patch b/multimedia/gst1-plugins-good/patches/002-no_tests.patch
deleted file mode 100644 (file)
index ed922c5..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
---- 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                      \
diff --git a/multimedia/gst1-plugins-good/patches/003-no-docs.patch b/multimedia/gst1-plugins-good/patches/003-no-docs.patch
new file mode 100644 (file)
index 0000000..c844d1a
--- /dev/null
@@ -0,0 +1,24 @@
+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
diff --git a/multimedia/gst1-plugins-good/patches/003-no_translations.patch b/multimedia/gst1-plugins-good/patches/003-no_translations.patch
deleted file mode 100644 (file)
index 16d1b7e..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
---- 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
index 26c7995aad22402dca03c1b276d988690a36ad52..78dfaf791c744a335925ab464f2e4e951b179111 100644 (file)
@@ -8,7 +8,7 @@
 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>
@@ -19,7 +19,7 @@ PKG_LICENSE_FILES:=COPYING
 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:= \
@@ -167,7 +167,7 @@ define GstBuildPlugin
   $$(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))
diff --git a/multimedia/gst1-plugins-ugly/patches/001-no-translations.patch b/multimedia/gst1-plugins-ugly/patches/001-no-translations.patch
new file mode 100644 (file)
index 0000000..ea02ec8
--- /dev/null
@@ -0,0 +1,23 @@
+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
diff --git a/multimedia/gst1-plugins-ugly/patches/001-no_docs.patch b/multimedia/gst1-plugins-ugly/patches/001-no_docs.patch
deleted file mode 100644 (file)
index 72c880a..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
---- 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
diff --git a/multimedia/gst1-plugins-ugly/patches/002-no-tests.patch b/multimedia/gst1-plugins-ugly/patches/002-no-tests.patch
new file mode 100644 (file)
index 0000000..993d4f3
--- /dev/null
@@ -0,0 +1,24 @@
+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
diff --git a/multimedia/gst1-plugins-ugly/patches/002-no_tests.patch b/multimedia/gst1-plugins-ugly/patches/002-no_tests.patch
deleted file mode 100644 (file)
index 1611671..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
---- 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
diff --git a/multimedia/gst1-plugins-ugly/patches/003-no-docs.patch b/multimedia/gst1-plugins-ugly/patches/003-no-docs.patch
new file mode 100644 (file)
index 0000000..21093f7
--- /dev/null
@@ -0,0 +1,25 @@
+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
diff --git a/multimedia/gst1-plugins-ugly/patches/003-no_translations.patch b/multimedia/gst1-plugins-ugly/patches/003-no_translations.patch
deleted file mode 100644 (file)
index bd61771..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
---- 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
index 0ab4629fb051e7cf762dcca99c34560c56b9ca3b..cf11d9dbea239a03fd918a5e9abba69deae263fe 100644 (file)
@@ -8,7 +8,7 @@
 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>
@@ -19,7 +19,7 @@ PKG_LICENSE_FILES:=COPYING
 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
@@ -134,6 +134,11 @@ define Build/InstallDev
                ./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*} \
diff --git a/multimedia/gstreamer1/patches/001-no-translations.patch b/multimedia/gstreamer1/patches/001-no-translations.patch
new file mode 100644 (file)
index 0000000..f933ee0
--- /dev/null
@@ -0,0 +1,30 @@
+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
diff --git a/multimedia/gstreamer1/patches/001-no_docs.patch b/multimedia/gstreamer1/patches/001-no_docs.patch
deleted file mode 100644 (file)
index fb0e034..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
---- 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
diff --git a/multimedia/gstreamer1/patches/002-no-tests.patch b/multimedia/gstreamer1/patches/002-no-tests.patch
new file mode 100644 (file)
index 0000000..d2bf13d
--- /dev/null
@@ -0,0 +1,46 @@
+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 \
diff --git a/multimedia/gstreamer1/patches/002-no_tests.patch b/multimedia/gstreamer1/patches/002-no_tests.patch
deleted file mode 100644 (file)
index 384dd0a..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
---- 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
diff --git a/multimedia/gstreamer1/patches/003-no-docs.patch b/multimedia/gstreamer1/patches/003-no-docs.patch
new file mode 100644 (file)
index 0000000..cd96d4c
--- /dev/null
@@ -0,0 +1,41 @@
+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
diff --git a/multimedia/gstreamer1/patches/003-no_translations.patch b/multimedia/gstreamer1/patches/003-no_translations.patch
deleted file mode 100644 (file)
index 7e918dd..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
---- 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
diff --git a/multimedia/gstreamer1/patches/010-gstplugin-use-lazy-symbol-binding.patch b/multimedia/gstreamer1/patches/010-gstplugin-use-lazy-symbol-binding.patch
new file mode 100644 (file)
index 0000000..d5b317e
--- /dev/null
@@ -0,0 +1,21 @@
+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) {
diff --git a/multimedia/gstreamer1/patches/010-gstplugin_use_lazy_symbol_binding.patch b/multimedia/gstreamer1/patches/010-gstplugin_use_lazy_symbol_binding.patch
deleted file mode 100644 (file)
index 603e57c..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
---- 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) {
index 1b0766e7e4655d5937de263a7e3114f7d49b3410..fa0f7d24db9dd461b693bb6ff6bb2181bf2a7923 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=icecast
 PKG_VERSION:=2.4.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 PKG_LICENSE:=GPL-2.0
 PKG_MAINTAINER:=André Gaul <andre@gaul.io>
 
@@ -29,6 +29,7 @@ define Package/icecast
   CATEGORY:=Multimedia
   DEPENDS:=+libcurl +libxml2 +libxslt +libogg +libopenssl
   TITLE:=A streaming media server for Ogg/Vorbis and MP3 audio streams
+  USERID:=icecast=87:icecast=87
   URL:=http://www.icecast.org/
 endef
 
index 355e4b7169c35764534ad09ac9ebbed9c67e2778..96b36e1886074923cf23943bc42d1d97eb2ee5c9 100755 (executable)
@@ -1,12 +1,21 @@
 #!/bin/sh /etc/rc.common
-# Example script
-# Copyright (C) 2014 OpenWrt.org
+
+# Startup script
+# Copyright (C) 2015 OpenWrt.org
  
 USE_PROCD=1
-START=99
+START=90
 STOP=15
 
 start_service() {
+       user_exists icecast 87 || user_add icecast 87
+       group_exists icecast 87 || group_add icecast 87
+       
+       [ -d /var/log/icecast ] || {
+               mkdir -m 0755 -p /var/log/icecast
+               chown icecast:icecast /var/log/icecast
+       }
+
        procd_open_instance
        procd_set_param command /usr/bin/icecast -c /etc/icecast.xml
        procd_set_param respawn
diff --git a/multimedia/icecast/patches/020-icecast_config_for_openwrt.patch b/multimedia/icecast/patches/020-icecast_config_for_openwrt.patch
new file mode 100644 (file)
index 0000000..d3282f2
--- /dev/null
@@ -0,0 +1,25 @@
+--- a/conf/icecast.xml.in
++++ b/conf/icecast.xml.in
+@@ -61,7 +61,7 @@
+          It affects mainly the urls generated by Icecast for playlists and yp
+          listings. You MUST configure it properly for YP listings to work!
+     -->
+-    <hostname>localhost</hostname>
++    <hostname>OpenWrt</hostname>
+     <!-- You may have multiple <listener> elements -->
+     <listen-socket>
+@@ -234,11 +234,9 @@
+     <security>
+         <chroot>0</chroot>
+-        <!--
+         <changeowner>
+-            <user>nobody</user>
+-            <group>nogroup</group>
++            <user>icecast</user>
++            <group>icecast</group>
+         </changeowner>
+-        -->
+     </security>
+ </icecast>
index 75fa39804f5d02d4ee174d5ff60288cfe588bef7..144da201fa345d103185d0d25c03e0ad0ea2f8ac 100644 (file)
@@ -8,12 +8,12 @@
 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
 
index cae661aaf990602400901bc8f92615abf4dac2ae..69e05f499b56e64396b78e37e5b64b05b5e25f1f 100644 (file)
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=mjpg-streamer
 PKG_REV:=182
 PKG_VERSION:=r$(PKG_REV)
-PKG_RELEASE:=7
+PKG_RELEASE:=8
 PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).1.tar.bz2
diff --git a/multimedia/mjpg-streamer/patches/060-fix-sigtrap-in-v4l2uvc.patch b/multimedia/mjpg-streamer/patches/060-fix-sigtrap-in-v4l2uvc.patch
new file mode 100644 (file)
index 0000000..e0b5837
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/plugins/input_uvc/v4l2uvc.c
++++ b/plugins/input_uvc/v4l2uvc.c
+@@ -130,7 +130,7 @@ int init_videoIn(struct vdIn *vd, char *
+             return -1;
+         }
+-        memcpy(&pglobal->in[id].in_formats[pglobal->in[id].formatCount], &fmtdesc, sizeof(input_format));
++        memcpy(&pglobal->in[id].in_formats[pglobal->in[id].formatCount], &fmtdesc, sizeof(struct v4l2_fmtdesc));
+         if(fmtdesc.pixelformat == format)
+             pglobal->in[id].currentFormat = pglobal->in[id].formatCount;
index 8caf7f1acb0222de7a098b6642cb9da007706295..4560da1f8a02345cbad38abca7f5bdeddd7cabd5 100644 (file)
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=oggfwd
 PKG_REV:=506088e5066abd086efc951670906187c120e9a3
 PKG_VERSION:=20150412
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=git://r-w-x.org/oggfwd.git
@@ -30,7 +30,7 @@ define Package/oggfwd
   SUBMENU:=Streaming
   TITLE:=Pipe media into icecast
   URL:=http://www.v2v.cc/~j/oggfwd
-  DEPENDS:=+libpthread +libshout
+  DEPENDS:=+libpthread +libshout-full
 endef
 
 define Package/oggfwd/description
index f5de16377ecb97331207924373fcfe8853990a33..f65be874e171e506a8a95295c0613af7cd1d94d8 100644 (file)
@@ -15,8 +15,7 @@ PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
 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)
index f538ba2a90f1c0d0a5ec04e38f6e996f24936641..9b2404b8fd94b063c594888ce33d7dbad0f01bb7 100644 (file)
@@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=atftp
 PKG_VERSION:=0.7.1
-PKG_RELEASE:=4
+PKG_RELEASE:=5
 PKG_MAINTAINER:=Daniel Danzberger <daniel@dd-wrt.com>
 PKG_LICENSE:=GPL-2.0
 
diff --git a/net/atftp/patches/03-Fix-undefined-reference-linker-errors.patch b/net/atftp/patches/03-Fix-undefined-reference-linker-errors.patch
new file mode 100644 (file)
index 0000000..c828e1a
--- /dev/null
@@ -0,0 +1,55 @@
+diff --git a/tftp_def.c b/tftp_def.c
+index 96abdc5..16240f7 100644
+--- a/tftp_def.c
++++ b/tftp_def.c
+@@ -141,7 +141,7 @@ int print_eng(double value, char *string, int size, char *format)
+ /*
+  * This is a strncpy function that take care of string NULL termination
+  */
+-inline char *Strncpy(char *to, const char *from, size_t size)
++char *Strncpy(char *to, const char *from, size_t size)
+ {
+      strncpy(to, from, size);
+      if (size>0) 
+diff --git a/tftp_def.h b/tftp_def.h
+index e4b338d..4418ee7 100644
+--- a/tftp_def.h
++++ b/tftp_def.h
+@@ -50,7 +50,7 @@ extern char *tftp_errmsg[9];
+ int timeval_diff(struct timeval *res, struct timeval *t1, struct timeval *t0);
+ int print_eng(double value, char *string, int size, char *format);
+-inline char *Strncpy(char *to, const char *from, size_t size);
++char *Strncpy(char *to, const char *from, size_t size);
+ int Gethostbyname(char *addr, struct hostent *host);
+ char *sockaddr_print_addr(const struct sockaddr_storage *, char *, size_t);
+diff --git a/tftpd.h b/tftpd.h
+index 945065e..4bd3f17 100644
+--- a/tftpd.h
++++ b/tftpd.h
+@@ -93,7 +93,7 @@ int tftpd_list_find_multicast_server_and_add(struct thread_data **thread,
+ /*
+  * Defined in tftpd_list.c, operation on client structure list.
+  */
+-inline void tftpd_clientlist_ready(struct thread_data *thread);
++void tftpd_clientlist_ready(struct thread_data *thread);
+ void tftpd_clientlist_remove(struct thread_data *thread,
+                              struct client_info *client);
+ void tftpd_clientlist_free(struct thread_data *thread);
+diff --git a/tftpd_list.c b/tftpd_list.c
+index f376159..159ffca 100644
+--- a/tftpd_list.c
++++ b/tftpd_list.c
+@@ -201,7 +201,7 @@ int tftpd_list_find_multicast_server_and_add(struct thread_data **thread,
+      return 0;
+ }
+-inline void tftpd_clientlist_ready(struct thread_data *thread)
++void tftpd_clientlist_ready(struct thread_data *thread)
+ {
+      pthread_mutex_lock(&thread->client_mutex);
+      thread->client_ready = 1;
+-- 
+2.1.4
+
diff --git a/net/bind/Config.in b/net/bind/Config.in
new file mode 100644 (file)
index 0000000..f0d4847
--- /dev/null
@@ -0,0 +1,17 @@
+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
index be4fc836c0624aa8f6824d9ef4ee76cf35af5a6d..6b3601e0b734bc5d5ff6989b38106ea45f0ecc6f 100644 (file)
@@ -9,8 +9,8 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=bind
-PKG_VERSION:=9.9.7-P3
-PKG_RELEASE:=1
+PKG_VERSION:=9.9.8-P3
+PKG_RELEASE:=2
 USERID:=bind=57:bind=57
 
 PKG_MAINTAINER := Noah Meyerhans <frodo@morgul.net>
@@ -20,14 +20,16 @@ PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 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:=30b9bf88a78eee783d3fef5257445788
 
 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
 
@@ -53,6 +55,10 @@ define Package/bind-server
   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
@@ -105,6 +111,11 @@ CONFIGURE_ARGS += \
        --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)" \
 
index d0bf9ba59ab42347c189da4c0840f6e52c53fdf2..9a2b2df388a46789ecc27e9677a9394582fa6929 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=chrony
-PKG_VERSION:=2.2
-PKG_RELEASE:=2
+PKG_VERSION:=2.2.1
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://download.tuxfamily.org/chrony/
-PKG_MD5SUM:=17bc77d3d2ce942675f9600b60452717
+PKG_MD5SUM:=ce46990540aab3670d093311ee43fe17
 
 PKG_MAINTAINER:=Miroslav Lichvar <mlichvar0@gmail.com>
 PKG_LICENSE:=GPL-2.0
diff --git a/net/cifs-utils/Makefile b/net/cifs-utils/Makefile
new file mode 100644 (file)
index 0000000..87b8a30
--- /dev/null
@@ -0,0 +1,44 @@
+#
+# 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))
diff --git a/net/cifs-utils/patches/001-fix-musl-build.patch b/net/cifs-utils/patches/001-fix-musl-build.patch
new file mode 100644 (file)
index 0000000..e34d4f1
--- /dev/null
@@ -0,0 +1,30 @@
+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
diff --git a/net/coova-chilli/patches/400-fix-compile-with-musl.patch b/net/coova-chilli/patches/400-fix-compile-with-musl.patch
new file mode 100644 (file)
index 0000000..a810a73
--- /dev/null
@@ -0,0 +1,61 @@
+--- a/src/system.h
++++ b/src/system.h
+@@ -78,11 +78,6 @@
+ #include <sys/stat.h>
+ #endif
+-#ifdef HAVE_LINUX_SYSINFO_H
+-#define _LINUX_KERNEL_H
+-#include <linux/sysinfo.h>
+-#endif
+-
+ #ifdef HAVE_TIME_H
+ #include <time.h>
+ #endif
+@@ -123,6 +118,11 @@
+ #include <signal.h>
+ #endif
++#ifdef HAVE_SYS_SYSINFO_H
++#define _LINUX_SYSINFO_H
++#include <sys/sysinfo.h>
++#endif
++
+ #if defined(__linux__)
+ #include <asm/types.h>
+ #include <linux/if.h>
+@@ -135,10 +135,6 @@
+ #include <linux/un.h>
+ #endif
+-#ifdef HAVE_SYS_SYSINFO_H
+-#include <sys/sysinfo.h>
+-#endif
+-
+ #elif defined (__FreeBSD__)  || defined (__APPLE__) || defined (__OpenBSD__) || defined (__NetBSD__) 
+ #include <net/if.h>
+ #include <net/bpf.h>
+@@ -170,10 +166,6 @@
+ #include <net/if_tun.h>
+ #endif
+-#ifdef HAVE_NET_ETHERNET_H
+-#include <net/ethernet.h>
+-#endif
+-
+ #ifdef HAVE_ASM_TYPES_H
+ #include <asm/types.h>
+ #endif
+--- a/src/chilli_limits.h
++++ b/src/chilli_limits.h
+@@ -18,8 +18,8 @@
+  * 
+  */
+-#ifndef _LIMITS_H
+-#define _LIMITS_H
++#ifndef _CHILLI_LIMITS_H
++#define _CHILLI_LIMITS_H
+ /*
+  * extracted from various .h files, needs some cleanup.
index cbfbed5fa7bc56e4018c481dda2052cc0b3dd648..88fd17dad48e0451283a91cbb94b1ca726c214cb 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=cshark
-PKG_VERSION:=2015-03-13
+PKG_VERSION:=2015-11-24
 PKG_RELEASE=$(PKG_SOURCE_VERSION)
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/cloudshark/cshark.git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=ab2ae2fbd72b6cbd57c95e3192edc3c1f475412b
+PKG_SOURCE_VERSION:=e575ab3d35d75a6f70488001fcba45690ebe9b3e
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
 
 PKG_BUILD_PARALLEL:=1
diff --git a/net/daemonlogger/Makefile b/net/daemonlogger/Makefile
new file mode 100644 (file)
index 0000000..41853f2
--- /dev/null
@@ -0,0 +1,47 @@
+#
+# Copyright (C) 2007-2011 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:=daemonlogger
+PKG_VERSION:=1.2.1
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=@SF/daemonlogger
+PKG_MD5SUM:=acb64aa6cd5777e297569f100b5c39ee
+
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=COPYING
+
+PKG_MAINTAINER:=Mirko Vogt <mirko@openwrt.org>
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/daemonlogger
+  SECTION:=net
+  CATEGORY:=Network
+  DEPENDS:=+libpcap +libdnet
+  TITLE:=Software Network Tap
+  URL:=http://www.snort.org/snort-downloads/additional-downloads
+endef
+
+CONFIGURE_VARS += \
+       BUILD_CC="$(TARGET_CC)" \
+       HOSTCC="$(HOSTCC)"
+
+MAKE_FLAGS := CCOPT="$(TARGET_CFLAGS)" INCLS="-I. $(TARGET_CPPFLAGS)"
+
+define Package/daemonlogger/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/daemonlogger $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,daemonlogger))
index f11d26a234772e9fb50976a51b894b8d3daf58ec..a8b3fd13864cdabd24bfb211a52f69183ab7382b 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=davfs2
 PKG_VERSION:=1.5.2
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://download.savannah.gnu.org/releases/davfs2/
@@ -23,7 +23,7 @@ define Package/davfs2
   SECTION:=net
   CATEGORY:=Network
   SUBMENU:=Filesystem
-  DEPENDS=+libopenssl +libneon +libiconv +libintl +libexpat +kmod-fuse +libfuse
+  DEPENDS=+libneon +kmod-fuse +libfuse
   TITLE:=Mount a WebDAV resource as a regular file system.
   URL:=http://savannah.nongnu.org/projects/davfs2/
   MAINTAINER:=Federico Di Marco <fededim@gmail.com>
@@ -52,6 +52,8 @@ endef
 
 TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include
 
+TARGET_CPPFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
+
 CONFIGURE_VARS += \
        LDFLAGS="$(TARGET_LDFLAGS) -L$(TOOLCHAIN_DIR)/usr/lib -L$(TOOLCHAIN_DIR)/lib"
 
index 3cc98ad14573bc5c507bae34280fde955282c036..03700f4d97ca6bae7c8b6143f03294999577522f 100755 (executable)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2008-2015 OpenWrt.org
+# Copyright (C) 2008-2016 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 #
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 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.0
 # Release == build
 # increase on changes of services files or tld_names.dat
 PKG_RELEASE:=1
@@ -88,10 +88,10 @@ define Package/$(PKG_NAME)_nsupdate/description
 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
index 05eda79c4dc7707126db0c945ffd6a209e64cae8..8ba3da58641c02a7c2cc0d0c3f795c6b10a9d5ed 100644 (file)
@@ -10,7 +10,7 @@ config ddns "global"
 
 
 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"
index 951b41b49b620f952833b101d6b081422860a556..85eca0db7ac4eb90b1094b511c7e428ad50ef372 100755 (executable)
@@ -1,20 +1,12 @@
 #!/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
@@ -29,7 +21,7 @@
 . /lib/functions/network.sh
 
 # GLOBAL VARIABLES #
-VERSION="2.5.0-1"
+VERSION="2.6.0-1"
 SECTION_ID=""          # hold config's section name
 VERBOSE_MODE=1         # default mode is log to console, but easily changed with parameter
 
@@ -467,12 +459,12 @@ verify_host_port() {
        __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
@@ -643,9 +635,8 @@ do_transfer() {
        [ $# -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
@@ -668,7 +659,7 @@ do_transfer() {
                                __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
@@ -679,9 +670,13 @@ do_transfer() {
                __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
@@ -702,7 +697,7 @@ do_transfer() {
                                __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
@@ -720,9 +715,36 @@ do_transfer() {
                __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 not supported
+               [ $force_ipversion -eq 1 ] && \
+                       write_log 14 "uclient-fetch: Force connecting to IPv4 or IPv6 addresses not supported"
+               # 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"
@@ -739,7 +761,7 @@ do_transfer() {
                __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
@@ -851,7 +873,7 @@ get_local_ip () {
                                                )
                                        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
@@ -927,7 +949,8 @@ get_registered_ip() {
        # $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=$(/usr/bin/nslookup 127.0.0.1 0 >/dev/null 2>&1; echo $?) # 0 == busybox compiled with musl
        # return codes
        # 1     no IP detected
 
@@ -937,8 +960,8 @@ get_registered_ip() {
        # 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"
@@ -947,11 +970,37 @@ get_registered_ip() {
 
                __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"
@@ -967,6 +1016,8 @@ get_registered_ip() {
                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
index e58f978551205d0dc0c87acb25fe58d4d16bed6f..3bf661bb36bfaf584bfb90e01aa0061a45a7d8d0 100755 (executable)
@@ -2,13 +2,8 @@
 # /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
index 9acb9c4e418909997ae82a3dcdd08831f175e6da..d0bd5f05e8c41e38a30d37d82967ee0d1b0c7d55 100755 (executable)
@@ -1,21 +1,12 @@
 #!/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
index 28797f3ee95c44b631a817cd5f799b8c5dcfaa0c..97076e59ea140b26a4947d742b1b4283eb8d046d 100644 (file)
 # !!! 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]"
@@ -37,7 +46,7 @@
 "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]"
@@ -69,7 +76,7 @@
 "mythic-beasts.com"    "http://dnsapi4.mythic-beasts.com/?domain=[USERNAME]&password=[PASSWORD]&command=REPLACE%20[DOMAIN]%2060%20A%20DYNAMIC_IP"
 
 # 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]"
@@ -84,7 +91,7 @@
 "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"
index df3c897bf5f06ae0ae77969f92062ea171ba9451..941f0c08c7f9f24413470dd5224d879a093331e4 100644 (file)
 # !!! 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]"
 
+# zzzz.io Free Dynamic DNS
+"zzzz.io"      "https://zzzz.io/api/v1/update/[DOMAIN]/?token=[PASSWORD]&type=aaaa&ip=[IP]"    "Updated|No change"
index 08b05fcb2fefe09ddd0d26a6142277e43adb7e8d..b711bc46a5efb15c333ae396174ed7373524d759 100644 (file)
@@ -89,7 +89,6 @@ leasing.aero
 logistics.aero
 magazine.aero
 maintenance.aero
-marketplace.aero
 media.aero
 microlight.aero
 modelling.aero
@@ -112,7 +111,6 @@ show.aero
 skydiving.aero
 software.aero
 student.aero
-taxi.aero
 trader.aero
 trading.aero
 trainer.aero
@@ -155,13 +153,6 @@ org.al
 // 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
@@ -1016,7 +1007,10 @@ gw
 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
@@ -1176,7 +1170,7 @@ tv.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
@@ -4510,8 +4504,21 @@ 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/
@@ -6030,7 +6037,6 @@ kms.ru
 k-uralsk.ru
 kustanai.ru
 kuzbass.ru
-magnitka.ru
 mytis.ru
 nakhodka.ru
 nkz.ru
@@ -6380,10 +6386,6 @@ org.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
@@ -6822,8 +6824,8 @@ lib.wi.us
 // 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
@@ -7214,7 +7216,7 @@ xxx
 
 // za : http://www.zadna.org.za/content/page/domain-information
 ac.za
-agrica.za
+agric.za
 alt.za
 co.za
 edu.za
@@ -7238,7 +7240,7 @@ web.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
@@ -7411,6 +7413,9 @@ apple
 // aquarelle : 2014-07-24 Aquarelle.com
 aquarelle
 
+// arab : 2015-11-12 League of Arab States
+arab
+
 // aramco : 2014-11-20 Aramco Services Company
 aramco
 
@@ -7507,6 +7512,9 @@ barefoot
 // 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
 
@@ -7534,6 +7542,9 @@ bcn
 // 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
 
@@ -7639,12 +7650,18 @@ bosch
 // 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
 
@@ -7765,6 +7782,9 @@ casino
 // 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
 
@@ -7972,6 +7992,9 @@ crown
 // 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
 
@@ -8083,6 +8106,9 @@ discover
 // 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
 
@@ -8365,6 +8391,9 @@ foundation
 // 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
 
@@ -8554,6 +8583,9 @@ guitars
 // 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
 
@@ -8602,7 +8634,7 @@ hisamitsu
 // 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
@@ -9349,6 +9381,9 @@ ninja
 // 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
 
@@ -9604,7 +9639,7 @@ prof
 // 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
@@ -9625,6 +9660,9 @@ prudential
 // pub : 2013-12-12 United TLD Holdco Ltd.
 pub
 
+// pwc : 2015-10-29 PricewaterhouseCoopers LLP
+pwc
+
 // qpon : 2013-11-14 dotCOOL, Inc.
 qpon
 
@@ -9736,6 +9774,9 @@ rio
 // 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
 
@@ -10288,6 +10329,9 @@ ubs
 // 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
 
@@ -10375,6 +10419,9 @@ vodka
 // 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
 
@@ -10583,6 +10630,10 @@ xn--6qq986b3xl
 москва
 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
@@ -10763,6 +10814,10 @@ xn--mgbb9fbpob
 ابوظبي
 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
@@ -10783,6 +10838,10 @@ xn--ngbc5azd
 بيتك
 xn--ngbe9e0a
 
+// xn--ngbrx : 2015-11-12 League of Arab States
+عرب
+xn--ngbrx
+
 // xn--nqv7f : 2013-11-14 Public Interest Registry
 机构
 xn--nqv7f
@@ -10835,6 +10894,10 @@ xn--t60b56a
 コム
 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
@@ -11072,6 +11135,10 @@ cupcake.is
 // Submitted by Andrew Farmer <andrew.farmer@dreamhost.com> 2012-10-02
 dreamhosters.com
 
+// Drobo : http://www.drobo.com/
+// Submitted by Ricardo Padilha <rpadilha@drobo.com> 2015-12-17
+mydrobo.com
+
 // DuckDNS : http://www.duckdns.org/
 // Submitted by Richard Harper <richard@duckdns.org> 2015-05-17
 duckdns.org
@@ -11523,6 +11590,7 @@ blogspot.td
 blogspot.tw
 blogspot.ug
 blogspot.vn
+cloudfunctions.net
 codespot.com
 googleapis.com
 googlecode.com
@@ -11530,6 +11598,9 @@ pagespeedmobilizer.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
 herokuapp.com
@@ -11560,6 +11631,10 @@ bmoattachments.org
 // Submitted by Trung Tran <Trung.Tran@neustar.biz> 2015-04-23
 4u.com
 
+// ngrok : https://ngrok.com/
+// Submitted by Alan Shreve <alan@ngrok.com> 2015-11-10
+ngrok.io
+
 // NFSN, Inc. : https://www.NearlyFreeSpeech.NET/
 // Submitted by Jeff Wheelhouse <support@nearlyfreespeech.net> 2014-02-02
 nfshost.com
@@ -11580,6 +11655,10 @@ operaunite.com
 // Submitted by Duarte Santos <domain-admin@outsystemscloud.com> 2014-03-11
 outsystemscloud.com
 
+// Pagefront : https://www.pagefronthq.com/
+// Submitted by Jason Kriss <jason@pagefronthq.com> 2015-12-02
+pagefrontapp.com
+
 // .pl domains (grandfathered)
 art.pl
 gliwice.pl
@@ -11601,6 +11680,11 @@ priv.at
 // Submitted by Daniel Dent (https://www.danieldent.com/) 2015-07-16
 qa2.com
 
+// Rackmaze LLC : https://www.rackmaze.com
+// Submitted by Kirill Pertsev <kika@rackmaze.com> 2015-12-02
+rackmaze.com
+rackmaze.net
+
 // Red Hat, Inc. OpenShift : https://openshift.redhat.com/
 // Submitted by Tim Kramer <tkramer@rhcloud.com> 2012-10-24
 rhcloud.com
@@ -11621,6 +11705,22 @@ sinaapp.com
 vipsinaapp.com
 1kapp.com
 
+// Synology, Inc. : https://www.synology.com/
+// Submitted by Rony Weng <ronyweng@synology.com> 2015-12-02
+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
index 22817404af00d4c88a5ac1e6ea48d5f45e20e22c..15f3afd3218fab342bbc9553bdafc4a19c71de6a 100644 (file)
@@ -57,55 +57,57 @@ cleanup() {
        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!"
+[ -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'"
 }
-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
index 4d05e3dab0ec49d6ad297e546fc2be7bd5f5e232..ae3eff15f4d325589459a5d2e173b531a43b022e 100644 (file)
@@ -36,7 +36,7 @@ define Package/etherwake/description
 endef
 
 define Build/Compile
-       $(TARGET_CC) $(TARGET_CFLAGS) -D__UCLIBC__ $(PKG_BUILD_DIR)/ether-wake.c -o $(PKG_BUILD_DIR)/etherwake
+       $(TARGET_CC) $(TARGET_CFLAGS) -D__UCLIBC__ $(TARGET_LDFLAGS) $(PKG_BUILD_DIR)/ether-wake.c -o $(PKG_BUILD_DIR)/etherwake
 endef
 
 define Package/etherwake/install
index d116dba492cd7ef687f6534d9e3d5dd346b176bd..0cce17f313c46b01dff61046734eacf828756a40 100644 (file)
@@ -1,5 +1,5 @@
 #
-# 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.
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=freeradius2
 PKG_VERSION:=2.2.8
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=freeradius-server-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=\
@@ -350,6 +350,7 @@ CONFIGURE_ARGS+= \
        $(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 \
index 2114cc9aa6192b7efc975a71954b335ac6441db4..a1f994521e841e2064ad9dae14edde8733e55268 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=fwknop
-PKG_VERSION:=2.6.6
-PKG_RELEASE:=3
+PKG_VERSION:=2.6.8
+PKG_RELEASE:=1
 
 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
index 97763121ac2577d355a893eaf48aeca33ca82083..94c426c4780ae78587f51c290c1237a802e79a5e 100644 (file)
@@ -36,7 +36,7 @@ reload()
 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
diff --git a/net/fwknop/patches/001-add-keygen.patch b/net/fwknop/patches/001-add-keygen.patch
deleted file mode 100644 (file)
index bbc3d99..0000000
+++ /dev/null
@@ -1,427 +0,0 @@
-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',
index 1a304fca929ac27ccecc04a14c5b6a56ae8caaaa..cfb1949c3288c6bb1dbfe8e48dfaa6ad258ed0c0 100644 (file)
@@ -8,9 +8,9 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gnunet
-PKG_SOURCE_VERSION:=36366
+PKG_SOURCE_VERSION:=36713
 PKG_VERSION:=0.10.1-svn$(PKG_SOURCE_VERSION)
-PKG_RELEASE:=1
+PKG_RELEASE:=3
 
 # ToDo:
 #  - break-out {peer,name,data}store for each backend
@@ -39,6 +39,7 @@ CONFIGURE_ARGS+= \
        $(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) \
        --with-extractor=$(STAGING_DIR)/usr \
        --with-gnutls=$(STAGING_DIR)/usr \
        --with-libgnurl=$(STAGING_DIR)/usr \
@@ -131,7 +132,7 @@ define Package/gnunet/install
        $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/gnunet/libexec
        $(INSTALL_DIR) $(1)/usr/share/gnunet/config.d $(1)/usr/share/gnunet/hellos
 
-       ( for bin in arm ats core config ecc identity nat-server nse \
+       ( for bin in arm ats cadet core config ecc identity nat nat-server nse \
            peerinfo peerstore revocation scalarproduct statistics transport uri; do \
                $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gnunet-$$$$bin $(1)/usr/bin/ ; \
        done )
@@ -153,7 +154,8 @@ define Package/gnunet/install
            service-core service-dht service-identity service-nse \
            service-peerinfo service-peerstore service-regex \
            service-revocation service-scalarproduct-alice \
-           service-scalarproduct-bob service-set service-statistics \
+           service-scalarproduct-bob service-scalarproduct-ecc-alice \
+           service-scalarproduct-ecc-bob service-set service-statistics \
            service-transport; do \
                $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/gnunet/libexec/gnunet-$$$$lex $(1)/usr/lib/gnunet/libexec ; \
        done )
@@ -184,7 +186,7 @@ DEPENDS_conversation:=+gnunet-gns +libgst1app +libgst1audio +libgstreamer1 +glib
 BIN_conversation:=conversation conversation-test
 LIB_conversation:=conversation microphone speaker
 PLUGIN_conversation:=gnsrecord_conversation
-LIBEXEC_conversation:=helper-audio-playback helper-audio-record
+LIBEXEC_conversation:=helper-audio-playback helper-audio-record service-conversation
 CONF_conversation:=conversation
 
 DEPENDS_transport-http_client:=+libgnurl
@@ -196,8 +198,12 @@ PLUGIN_transport-http_server:=transport_http_server transport_https_server
 PLUGIN_transport-wlan:=transport_wlan
 LIBEXEC_transport-wlan:=helper-transport-wlan
 
-DEPENDS_experiments:=+libglpk
-PLUGIN_experiments:=ats_mlp ats_ril
+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_fs:=+gnunet-datastore +libextractor
 BIN_fs:=auto-share directory download download-manager.scm fs publish unindex search
@@ -237,7 +243,7 @@ PLUGIN_transport-bluetooth:=transport_bluetooth
 LIBEXEC_transport-bluetooth:=helper-transport-bluetooth
 
 DEPENDS_utils:=+certtool +openssl-util
-BIN_utils:=gns-proxy-setup-ca transport-certificate-creation
+BIN_utils:=gns-proxy-setup-ca transport-certificate-creation scrypt
 
 DEPENDS_vpn:=+kmod-tun +iptables
 BIN_vpn:=vpn
index aa8742295f6be6e6cc5795f4b8bc864167eb7833..379d0d69e40e7401682ca70abf37e78c0023d265 100644 (file)
@@ -73,7 +73,7 @@ prepare_config() {
                # $1    "Type"
                # $2    "Name"
                local __TYPE="$1"
-               local __NAME="$2"
+               local __NAME="${2/_/-}"
                [ "${__TYPE}" = "gnunet-config" ] && _gnunet_section="${__NAME}"
                [ "${__TYPE}" = "gnunet-exit-service" ] && _gnunet_section="${__NAME}.gnunet."
        }
index 141bb9b31fbab91775c8c3ddf68ec4c21d1e553f..f600b8b565b7b9f948913bf63d011c5b15a46df2 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gnurl
-PKG_VERSION:=7.43.0
+PKG_VERSION:=7.45.0
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=https://gnunet.org/sites/default/files
 
-PKG_MD5SUM:=67c6667d8843cc514b230f2ce8d80f0e
+PKG_MD5SUM:=32b18f37d3a594dba9192e7e4254ce70
 
 PKG_LICENSE:=MIT
 PKG_LICENSE_FILES:=COPYING
index c5e1948df3efcfcca97d2bd1d78893889a2f5e94..949cac7b9d841dac21a6bade0292e5f93b28c18a 100644 (file)
@@ -9,12 +9,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=haproxy
-PKG_VERSION:=1.5.14
-PKG_RELEASE:=16
+PKG_VERSION:=1.5.15
+PKG_RELEASE:=13
 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:=ad9d7262b96ba85a0f8c6acc6cb9edde
+PKG_MD5SUM:=eeaa35744f84c92184cd735ee56dd0a3
 PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
 PKG_LICENSE:=GPL-2.0
 
diff --git a/net/haproxy/patches/0001-BUG-BUILD-replace-haproxy-systemd-wrapper-with-EXTRA.patch b/net/haproxy/patches/0001-BUG-BUILD-replace-haproxy-systemd-wrapper-with-EXTRA.patch
new file mode 100644 (file)
index 0000000..0a29467
--- /dev/null
@@ -0,0 +1,34 @@
+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
+
diff --git a/net/haproxy/patches/0001-BUG-MINOR-log-missing-some-ARGC_-entries-in-fmt_dire.patch b/net/haproxy/patches/0001-BUG-MINOR-log-missing-some-ARGC_-entries-in-fmt_dire.patch
deleted file mode 100644 (file)
index 72db452..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-From df0a5960987b3cb663dcfa93d29c21acc13cd3e3 Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Thu, 9 Jul 2015 11:20:00 +0200
-Subject: [PATCH 1/4] BUG/MINOR: log: missing some ARGC_* entries in
- fmt_directives()
-
-ARGC_CAP was not added to fmt_directives() which is used to format
-error messages when failing to parse log format expressions. The
-whole switch/case has been reorganized to match the declaration
-order making it easier to spot missing values. The default is not
-the "log" directive anymore but "undefined" asking to report the
-bug.
-
-Backport to 1.5 is not strictly needed but is desirable at least
-for code sanity.
-(cherry picked from commit 53e1a6d31743b1bef6063ff30b812521391ae3c3)
----
- src/log.c | 24 ++++++++++++++----------
- 1 file changed, 14 insertions(+), 10 deletions(-)
-
-diff --git a/src/log.c b/src/log.c
-index 1a5ad25..f0a3072 100644
---- a/src/log.c
-+++ b/src/log.c
-@@ -167,22 +167,26 @@ struct logformat_var_args var_args_list[] = {
- static inline const char *fmt_directive(const struct proxy *curproxy)
- {
-       switch (curproxy->conf.args.ctx) {
--      case ARGC_UIF:
--              return "unique-id-format";
-+      case ARGC_ACL:
-+              return "acl";
-+      case ARGC_STK:
-+              return "stick";
-+      case ARGC_TRK:
-+              return "track-sc";
-+      case ARGC_LOG:
-+              return "log-format";
-       case ARGC_HRQ:
-               return "http-request";
-       case ARGC_HRS:
-               return "http-response";
--      case ARGC_STK:
--              return "stick";
--      case ARGC_TRK:
--              return "track-sc"; break;
-+      case ARGC_UIF:
-+              return "unique-id-format";
-       case ARGC_RDR:
--              return "redirect"; break;
--      case ARGC_ACL:
--              return "acl"; break;
-+              return "redirect";
-+      case ARGC_CAP:
-+              return "capture";
-       default:
--              return "log-format";
-+              return "undefined(please report this bug)"; /* must never happen */
-       }
- }
--- 
-2.3.6
-
diff --git a/net/haproxy/patches/0002-BUG-MINOR-acl-don-t-use-record-layer-in-req_ssl_ver.patch b/net/haproxy/patches/0002-BUG-MINOR-acl-don-t-use-record-layer-in-req_ssl_ver.patch
new file mode 100644 (file)
index 0000000..daac5d4
--- /dev/null
@@ -0,0 +1,69 @@
+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
+
diff --git a/net/haproxy/patches/0002-DOC-usesrc-root-privileges-requirements.patch b/net/haproxy/patches/0002-DOC-usesrc-root-privileges-requirements.patch
deleted file mode 100644 (file)
index 0af6565..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-From ea31f225c2c93a25b8bef7a9241a89cecfd9d350 Mon Sep 17 00:00:00 2001
-From: Baptiste Assmann <bedis9@gmail.com>
-Date: Fri, 17 Jul 2015 21:59:42 +0200
-Subject: [PATCH 2/4] DOC: usesrc root privileges requirements
-
-The "usesrc" parameter of the source statement requires root privileges.
-(cherry picked from commit 91bd337d90cb347feda34b01402f3471c8a4833c)
----
- doc/configuration.txt | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/doc/configuration.txt b/doc/configuration.txt
-index 6714afb..64697a4 100644
---- a/doc/configuration.txt
-+++ b/doc/configuration.txt
-@@ -6117,6 +6117,8 @@ source <addr>[:<port>] [interface <name>]
-   is possible at the server level using the "source" server option. Refer to
-   section 5 for more information.
-+  In order to work, "usesrc" requires root privileges.
-+
-   Examples :
-         backend private
-             # Connect to the servers using our 192.168.1.200 source address
--- 
-2.3.6
-
diff --git a/net/haproxy/patches/0003-BUG-http-do-not-abort-keep-alive-connections-on-serv.patch b/net/haproxy/patches/0003-BUG-http-do-not-abort-keep-alive-connections-on-serv.patch
new file mode 100644 (file)
index 0000000..10fcc86
--- /dev/null
@@ -0,0 +1,37 @@
+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
+
diff --git a/net/haproxy/patches/0003-BUILD-ssl-Allow-building-against-libssl-without-SSLv.patch b/net/haproxy/patches/0003-BUILD-ssl-Allow-building-against-libssl-without-SSLv.patch
deleted file mode 100644 (file)
index 074cedc..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-From eee374c28ea8ea22834ff14515b5584bc3e0c7b5 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Courr=C3=A8ges-Anglas?= <jca@wxcvbn.org>
-Date: Sat, 25 Jul 2015 16:50:52 -0600
-Subject: [PATCH 3/4] BUILD: ssl: Allow building against libssl without SSLv3.
-
-If SSLv3 is explicitely requested but not available, warn the user and
-bail out.
-(cherry picked from commit 17c3f6284cf605e47f6525c077bc644c45272849)
----
- src/ssl_sock.c | 16 ++++++++++++++--
- 1 file changed, 14 insertions(+), 2 deletions(-)
-
-diff --git a/src/ssl_sock.c b/src/ssl_sock.c
-index 7d77d36..2ae45ec 100644
---- a/src/ssl_sock.c
-+++ b/src/ssl_sock.c
-@@ -1405,8 +1405,14 @@ int ssl_sock_prepare_ctx(struct bind_conf *bind_conf, SSL_CTX *ctx, struct proxy
-               ssloptions |= SSL_OP_NO_TLSv1_2;
-       if (bind_conf->ssl_options & BC_SSL_O_NO_TLS_TICKETS)
-               ssloptions |= SSL_OP_NO_TICKET;
--      if (bind_conf->ssl_options & BC_SSL_O_USE_SSLV3)
-+      if (bind_conf->ssl_options & BC_SSL_O_USE_SSLV3) {
-+#ifndef OPENSSL_NO_SSL3
-               SSL_CTX_set_ssl_version(ctx, SSLv3_server_method());
-+#else
-+              Alert("SSLv3 support requested but unavailable.\n");
-+              cfgerr++;
-+#endif
-+      }
-       if (bind_conf->ssl_options & BC_SSL_O_USE_TLSV10)
-               SSL_CTX_set_ssl_version(ctx, TLSv1_server_method());
- #if SSL_OP_NO_TLSv1_1
-@@ -1750,8 +1756,14 @@ int ssl_sock_prepare_srv_ctx(struct server *srv, struct proxy *curproxy)
-               options |= SSL_OP_NO_TLSv1_2;
-       if (srv->ssl_ctx.options & SRV_SSL_O_NO_TLS_TICKETS)
-               options |= SSL_OP_NO_TICKET;
--      if (srv->ssl_ctx.options & SRV_SSL_O_USE_SSLV3)
-+      if (srv->ssl_ctx.options & SRV_SSL_O_USE_SSLV3) {
-+#ifndef OPENSSL_NO_SSL3
-               SSL_CTX_set_ssl_version(srv->ssl_ctx.ctx, SSLv3_client_method());
-+#else
-+              Alert("SSLv3 support requested but unavailable.");
-+              cfgerr++;
-+#endif
-+      }
-       if (srv->ssl_ctx.options & SRV_SSL_O_USE_TLSV10)
-               SSL_CTX_set_ssl_version(srv->ssl_ctx.ctx, TLSv1_client_method());
- #if SSL_OP_NO_TLSv1_1
--- 
-2.3.6
-
diff --git a/net/haproxy/patches/0004-BUG-MEDIUM-http-switch-the-request-channel-to-no-del.patch b/net/haproxy/patches/0004-BUG-MEDIUM-http-switch-the-request-channel-to-no-del.patch
new file mode 100644 (file)
index 0000000..9f74e1f
--- /dev/null
@@ -0,0 +1,112 @@
+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
+
diff --git a/net/haproxy/patches/0004-DOC-MINOR-fix-OpenBSD-versions-where-haproxy-works.patch b/net/haproxy/patches/0004-DOC-MINOR-fix-OpenBSD-versions-where-haproxy-works.patch
deleted file mode 100644 (file)
index c769228..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-From e4766ba031e1fea8f2ca139316dc4e8209e960c2 Mon Sep 17 00:00:00 2001
-From: Daniel Jakots <vigdis@chown.me>
-Date: Wed, 29 Jul 2015 08:03:08 +0200
-Subject: [PATCH 4/4] DOC/MINOR: fix OpenBSD versions where haproxy works
-
-(cherry picked from commit 17d228be14762b282e5262262c45ecee4c265552)
----
- README | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/README b/README
-index add7f06..e267730 100644
---- a/README
-+++ b/README
-@@ -39,7 +39,7 @@ and assign it to the TARGET variable :
-   - solaris     for Solaris 8 or 10 (others untested)
-   - freebsd     for FreeBSD 5 to 10 (others untested)
-   - osx         for Mac OS/X
--  - openbsd     for OpenBSD 3.1 to 5.2 (others untested)
-+  - openbsd     for OpenBSD 3.1 and above
-   - aix51       for AIX 5.1
-   - aix52       for AIX 5.2
-   - cygwin      for Cygwin
--- 
-2.3.6
-
diff --git a/net/haproxy/patches/0005-BUG-MINOR-http-sample-gmtime-localtime-can-fail.patch b/net/haproxy/patches/0005-BUG-MINOR-http-sample-gmtime-localtime-can-fail.patch
deleted file mode 100644 (file)
index 23012ba..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-From 955587271031d66e9b7a768e3bb18dae00b60cc6 Mon Sep 17 00:00:00 2001
-From: Thierry FOURNIER <tfournier@arpalert.org>
-Date: Wed, 8 Jul 2015 00:15:20 +0200
-Subject: [PATCH 05/13] BUG/MINOR: http/sample: gmtime/localtime can fail
-
-The man said that gmtime() and localtime() can return a NULL value.
-This is not tested. It appears that all the values of a 32 bit integer
-are valid, but it is better to check the return of these functions.
-
-However, if the integer move from 32 bits to 64 bits, some 64 values
-can be unsupported.
-(cherry picked from commit fac9ccfb705702f211f99e67d5f5d5129002086a)
-[wt: we only have sample_conv_date() in 1.5]
----
- src/proto_http.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/proto_http.c b/src/proto_http.c
-index 5db64b5..02dc42b 100644
---- a/src/proto_http.c
-+++ b/src/proto_http.c
-@@ -11249,6 +11249,8 @@ static int sample_conv_http_date(const struct arg *args, struct sample *smp)
-               curr_date += args[0].data.sint;
-       tm = gmtime(&curr_date);
-+      if (!tm)
-+              return 0;
-       temp = get_trash_chunk();
-       temp->len = snprintf(temp->str, temp->size - temp->len,
--- 
-2.4.6
-
diff --git a/net/haproxy/patches/0005-MINOR-config-extend-the-default-max-hostname-length-.patch b/net/haproxy/patches/0005-MINOR-config-extend-the-default-max-hostname-length-.patch
new file mode 100644 (file)
index 0000000..69e8f4f
--- /dev/null
@@ -0,0 +1,52 @@
+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
+
diff --git a/net/haproxy/patches/0006-BUG-MEDIUM-http-don-t-enable-auto-close-on-the-respo.patch b/net/haproxy/patches/0006-BUG-MEDIUM-http-don-t-enable-auto-close-on-the-respo.patch
new file mode 100644 (file)
index 0000000..58d44f0
--- /dev/null
@@ -0,0 +1,49 @@
+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
+
diff --git a/net/haproxy/patches/0006-DOC-typo-in-redirect-302-code-meaning.patch b/net/haproxy/patches/0006-DOC-typo-in-redirect-302-code-meaning.patch
deleted file mode 100644 (file)
index 9b96280..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-From 6c7351bdd0778bc171a2b54faed058eadc8c9d0d Mon Sep 17 00:00:00 2001
-From: Baptiste Assmann <bedis9@gmail.com>
-Date: Mon, 3 Aug 2015 11:42:50 +0200
-Subject: [PATCH 06/13] DOC: typo in 'redirect', 302 code meaning
-
-302 means a temprary move, not a permanent one
-(cherry picked from commit ea849c0cca63b1b56c9c36f9c3504caa5e826816)
----
- doc/configuration.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/doc/configuration.txt b/doc/configuration.txt
-index 64697a4..e8d8b2a 100644
---- a/doc/configuration.txt
-+++ b/doc/configuration.txt
-@@ -5443,7 +5443,7 @@ redirect scheme   <sch> [code <code>] <option> [{if | unless} <condition>]
-               is desired. Only codes 301, 302, 303, 307 and 308 are supported,
-               with 302 used by default if no code is specified. 301 means
-               "Moved permanently", and a browser may cache the Location. 302
--              means "Moved permanently" and means that the browser should not
-+              means "Moved temporarily" and means that the browser should not
-               cache the redirection. 303 is equivalent to 302 except that the
-               browser will fetch the location with a GET method. 307 is just
-               like 302 but makes it clear that the same method must be reused.
--- 
-2.4.6
-
diff --git a/net/haproxy/patches/0007-BUG-MEDIUM-stream-fix-half-closed-timeout-handling.patch b/net/haproxy/patches/0007-BUG-MEDIUM-stream-fix-half-closed-timeout-handling.patch
new file mode 100644 (file)
index 0000000..f80f1b5
--- /dev/null
@@ -0,0 +1,88 @@
+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
+
diff --git a/net/haproxy/patches/0007-DOC-mention-that-ms-is-left-padded-with-zeroes.patch b/net/haproxy/patches/0007-DOC-mention-that-ms-is-left-padded-with-zeroes.patch
deleted file mode 100644 (file)
index 1cad791..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-From c3453d53f2862b22d8c8e7d2399dfc38ec966aa4 Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Sun, 9 Aug 2015 10:56:35 +0200
-Subject: [PATCH 07/13] DOC: mention that %ms is left-padded with zeroes.
-
-That's important to emit logs.
-(cherry picked from commit 812c88ec126e8fc4fc0f7853f265594d03c63956)
----
- doc/configuration.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/doc/configuration.txt b/doc/configuration.txt
-index e8d8b2a..1d95b5b 100644
---- a/doc/configuration.txt
-+++ b/doc/configuration.txt
-@@ -12381,7 +12381,7 @@ Please refer to the table below for currently defined variables :
-   |   | %hrl | captured_request_headers CLF style            | string list |
-   |   | %hs  | captured_response_headers default style       | string      |
-   |   | %hsl | captured_response_headers CLF style           | string list |
--  |   | %ms  | accept date milliseconds                      | numeric     |
-+  |   | %ms  | accept date milliseconds (left-padded with 0) | numeric     |
-   |   | %pid | PID                                           | numeric     |
-   | H | %r   | http_request                                  | string      |
-   |   | %rc  | retries                                       | numeric     |
--- 
-2.4.6
-
diff --git a/net/haproxy/patches/0008-BUG-MEDIUM-cli-changing-compression-rate-limiting-mu.patch b/net/haproxy/patches/0008-BUG-MEDIUM-cli-changing-compression-rate-limiting-mu.patch
new file mode 100644 (file)
index 0000000..c42e656
--- /dev/null
@@ -0,0 +1,36 @@
+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
+
diff --git a/net/haproxy/patches/0008-CLEANUP-.gitignore-ignore-more-test-files.patch b/net/haproxy/patches/0008-CLEANUP-.gitignore-ignore-more-test-files.patch
deleted file mode 100644 (file)
index d8d51bc..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-From 1104336c0ba5f474fce8fe7c0125511b59f4dd3d Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Tue, 11 Aug 2015 11:20:45 +0200
-Subject: [PATCH 08/13] CLEANUP: .gitignore: ignore more test files
-
-Exclude from "git status" many of the files that often result from
-development tests and bug reports reproducers.
-(cherry picked from commit de365a320ead43168e78facfa337130759783515)
----
- .gitignore | 27 +++++++++++++++++++++++++++
- 1 file changed, 27 insertions(+)
-
-diff --git a/.gitignore b/.gitignore
-index 762f5ad..f6ccd0e 100644
---- a/.gitignore
-+++ b/.gitignore
-@@ -18,3 +18,30 @@ make-*
- dlmalloc.c
- 00*.patch
- *.service
-+*.bak
-+contrib/base64/base64rev
-+contrib/halog/halog
-+contrib/ip6range/ip6range
-+contrib/iprange/iprange
-+tests/test_hashes
-+/*.cfg
-+/*.conf
-+/*.diff
-+/*.patch
-+/*.c
-+/*.o
-+/*.so
-+/*.txt
-+/*.TXT
-+/*.txt.*
-+/*.prof
-+/*.gprof
-+/*.prof.*
-+/*.gprof.*
-+/*.tar
-+/*.tar.gz
-+/*.tgz
-+/*.mbox
-+/*.sh
-+/bug*
-+/TAGS
--- 
-2.4.6
-
diff --git a/net/haproxy/patches/0009-BUILD-freebsd-double-declaration.patch b/net/haproxy/patches/0009-BUILD-freebsd-double-declaration.patch
new file mode 100644 (file)
index 0000000..bc2072c
--- /dev/null
@@ -0,0 +1,31 @@
+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
+
diff --git a/net/haproxy/patches/0009-CLEANUP-.gitignore-finally-ignore-everything-but-wha.patch b/net/haproxy/patches/0009-CLEANUP-.gitignore-finally-ignore-everything-but-wha.patch
deleted file mode 100644 (file)
index fe43df9..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-From 5e077624951a65e6aae381c7213fc54984768dd4 Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Tue, 11 Aug 2015 11:21:47 +0200
-Subject: [PATCH 09/13] CLEANUP: .gitignore: finally ignore everything but what
- is known.
-
-Still too many files remain, it's easier to block everything but
-what we know.
-(cherry picked from commit d71f1766bdbb041f80394662b0d293f033f93005)
----
- .gitignore | 20 ++++++++++++++++++++
- 1 file changed, 20 insertions(+)
-
-diff --git a/.gitignore b/.gitignore
-index f6ccd0e..1953ba3 100644
---- a/.gitignore
-+++ b/.gitignore
-@@ -45,3 +45,23 @@ tests/test_hashes
- /*.sh
- /bug*
- /TAGS
-+# Below we forbid everything and only allow what we know, that's much easier
-+# than blocking about 500 different test files and bug report outputs.
-+/.*
-+/*
-+!/.gitignore
-+!/CHANGELOG
-+!/LICENSE
-+!/Makefile
-+!/README
-+!/ROADMAP
-+!/SUBVERS
-+!/VERDATE
-+!/VERSION
-+!/contrib
-+!/doc
-+!/ebtree
-+!/examples
-+!/include
-+!/src
-+!/tests
--- 
-2.4.6
-
diff --git a/net/haproxy/patches/0010-BUG-MEDIUM-sample-urlp-can-t-match-an-empty-value.patch b/net/haproxy/patches/0010-BUG-MEDIUM-sample-urlp-can-t-match-an-empty-value.patch
new file mode 100644 (file)
index 0000000..6dbab2b
--- /dev/null
@@ -0,0 +1,53 @@
+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
+
diff --git a/net/haproxy/patches/0010-MEDIUM-config-emit-a-warning-on-a-frontend-without-l.patch b/net/haproxy/patches/0010-MEDIUM-config-emit-a-warning-on-a-frontend-without-l.patch
deleted file mode 100644 (file)
index 2a622f5..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-From c7c1e55f09839727ba7defd37347fc500dabb202 Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Tue, 11 Aug 2015 11:36:45 +0200
-Subject: [PATCH 10/13] MEDIUM: config: emit a warning on a frontend without
- listener
-
-Commit c6678e2 ("MEDIUM: config: authorize frontend and listen without bind")
-completely removed the test for bind lines in frontends in order to make it
-easier for automated tools to generate configs (eg: replacing a bind with
-another one passing via a temporary config without any bind line). The
-problem is that some common mistakes are totally hidden now. For example,
-this apparently valid entry is silently ignored :
-
-       listen 1.2.3.4:8000
-           server s1 127.0.0.1:8000
-
-Hint: 1.2.3.4:8000 is mistakenly the proxy name here.
-
-Thus instead we now emit a warning to indicate that a frontend was found
-with no listener. This should be backported to 1.5 to help spot abnormal
-configurations.
-(cherry picked from commit f82d1ca2d7ec83804d6b54e61a35747ad2f85188)
----
- src/cfgparse.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/src/cfgparse.c b/src/cfgparse.c
-index 2a5f178..d67edc5 100644
---- a/src/cfgparse.c
-+++ b/src/cfgparse.c
-@@ -6193,6 +6193,12 @@ int check_config_validity()
-                       break;
-               }
-+              if ((curproxy->cap & PR_CAP_FE) && LIST_ISEMPTY(&curproxy->conf.listeners)) {
-+                      Warning("config : %s '%s' has no 'bind' directive. Please declare it as a backend if this was intended.\n",
-+                              proxy_type_str(curproxy), curproxy->id);
-+                      err_code |= ERR_WARN;
-+              }
-+
-               if ((curproxy->cap & PR_CAP_BE) && (curproxy->mode != PR_MODE_HEALTH)) {
-                       if (curproxy->lbprm.algo & BE_LB_KIND) {
-                               if (curproxy->options & PR_O_TRANSP) {
--- 
-2.4.6
-
diff --git a/net/haproxy/patches/0011-BUG-MEDIUM-counters-ensure-that-src_-inc-clr-_gpc0-c.patch b/net/haproxy/patches/0011-BUG-MEDIUM-counters-ensure-that-src_-inc-clr-_gpc0-c.patch
deleted file mode 100644 (file)
index 25734dc..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-From ee12145d38a7dee81a20cf232c724ccb7a46ad8b Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Tue, 18 Aug 2015 17:15:20 +0200
-Subject: [PATCH 11/13] BUG/MEDIUM: counters: ensure that src_{inc,clr}_gpc0
- creates a missing entry
-
-During 1.5-dev20 there was some code refactoring to make the src_* fetch
-function use the same code as sc_*. Unfortunately this introduced a
-regression where src_* doesn't create an entry anymore if it does not
-exist in the table. The reason is that smp_fetch_sc_stkctr() only calls
-stktable_lookup_key() while src_inc_*/src_clr_* used to make use of
-stktable_update_key() which additionally create the entry if it does
-not exist.
-
-There's no point modifying the common function for these two exceptions,
-so instead we now have a function dedicated to the creation of this entry
-for src_* only. It is called when the entry didn't exist, so that requires
-minimal modifications to existing code.
-
-Thanks to Thierry Fournier for helping diagnose the issue.
-
-This fix must be backported to 1.5.
-(cherry picked from commit 0f4eadd4830279f5ee83aa545728fb750f5c8185)
-
-[Note: the backport to 1.5 significantly differs from the version in 1.6
- since we need to use the table's type and to retrieve the source address
- directly from the connection. At least it matches the way other src_*
- fetch functions work, and it's been verified to work fine]
----
- src/session.c | 33 +++++++++++++++++++++++++++++++++
- 1 file changed, 33 insertions(+)
-
-diff --git a/src/session.c b/src/session.c
-index 5b9e407..6d62e36 100644
---- a/src/session.c
-+++ b/src/session.c
-@@ -2806,6 +2806,33 @@ smp_fetch_sc_stkctr(struct session *l4, const struct arg *args, const char *kw)
-       return &l4->stkctr[num];
- }
-+/* same as smp_fetch_sc_stkctr() but dedicated to src_* and can create
-+ * the entry if it doesn't exist yet. This is needed for a few fetch
-+ * functions which need to create an entry, such as src_inc_gpc* and
-+ * src_clr_gpc*.
-+ */
-+struct stkctr *
-+smp_create_src_stkctr(struct session *sess, const struct arg *args, const char *kw)
-+{
-+      static struct stkctr stkctr;
-+      struct stktable_key *key;
-+      struct connection *conn = objt_conn(sess->si[0].end);
-+
-+      if (strncmp(kw, "src_", 4) != 0)
-+              return NULL;
-+
-+      if (!conn)
-+              return NULL;
-+
-+      key = addr_to_stktable_key(&conn->addr.from, args->data.prx->table.type);
-+      if (!key)
-+              return NULL;
-+
-+      stkctr.table = &args->data.prx->table;
-+      stkctr_set_entry(&stkctr, stktable_update_key(stkctr.table, key));
-+      return &stkctr;
-+}
-+
- /* set return a boolean indicating if the requested session counter is
-  * currently being tracked or not.
-  * Supports being called as "sc[0-9]_tracked" only.
-@@ -2887,6 +2914,9 @@ smp_fetch_sc_inc_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned i
-       if (!stkctr)
-               return 0;
-+      if (stkctr_entry(stkctr) == NULL)
-+              stkctr = smp_create_src_stkctr(l4, args, kw);
-+
-       smp->flags = SMP_F_VOL_TEST;
-       smp->type = SMP_T_UINT;
-       smp->data.uint = 0;
-@@ -2924,6 +2954,9 @@ smp_fetch_sc_clr_gpc0(struct proxy *px, struct session *l4, void *l7, unsigned i
-       if (!stkctr)
-               return 0;
-+      if (stkctr_entry(stkctr) == NULL)
-+              stkctr = smp_create_src_stkctr(l4, args, kw);
-+
-       smp->flags = SMP_F_VOL_TEST;
-       smp->type = SMP_T_UINT;
-       smp->data.uint = 0;
--- 
-2.4.6
-
diff --git a/net/haproxy/patches/0011-BUG-MEDIUM-peers-table-entries-learned-from-a-remote.patch b/net/haproxy/patches/0011-BUG-MEDIUM-peers-table-entries-learned-from-a-remote.patch
new file mode 100644 (file)
index 0000000..ae23e26
--- /dev/null
@@ -0,0 +1,31 @@
+From 96a1b4a969a5f3c9224d786c79e90d15a47094b0 Mon Sep 17 00:00:00 2001
+From: Emeric Brun <ebrun@haproxy.com>
+Date: Wed, 16 Dec 2015 15:16:46 +0100
+Subject: [PATCH 11/13] BUG/MEDIUM: peers: table entries learned from a remote
+ are pushed to others after a random delay.
+
+New sticktable entries learned from a remote peer can be pushed to others after
+a random delay because they are not inserted at the right position in the updates
+tree.
+(cherry picked from commit 234fc3c31e751f8191b9b78fa5fd16663c2627fe)
+(cherry picked from commit 8b1a697362977b8392caca3efaf97a5a8a8c782b)
+---
+ src/peers.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/peers.c b/src/peers.c
+index 0564d3d..92b4df0 100644
+--- a/src/peers.c
++++ b/src/peers.c
+@@ -720,7 +720,7 @@ switchstate:
+                                                       ts = stktable_store(ps->table->table, newts, 0);
+                                                       newts = NULL; /* don't reuse it */
+-                                                      ts->upd.key= (++ps->table->table->update)+(2^31);
++                                                      ts->upd.key= (++ps->table->table->update)+(2147483648U);
+                                                       eb = eb32_insert(&ps->table->table->updates, &ts->upd);
+                                                       if (eb != &ts->upd) {
+                                                               eb32_delete(eb);
+-- 
+2.4.10
+
diff --git a/net/haproxy/patches/0012-BUG-MEDIUM-peers-old-stick-table-updates-could-be-re.patch b/net/haproxy/patches/0012-BUG-MEDIUM-peers-old-stick-table-updates-could-be-re.patch
new file mode 100644 (file)
index 0000000..1bd4653
--- /dev/null
@@ -0,0 +1,28 @@
+From a320fd146f802a851a396b2cde491711a4fb87cf Mon Sep 17 00:00:00 2001
+From: Emeric Brun <ebrun@haproxy.com>
+Date: Wed, 16 Dec 2015 15:28:12 +0100
+Subject: [PATCH 12/13] BUG/MEDIUM: peers: old stick table updates could be
+ repushed.
+
+Because the stick table updates tree was not properly initialized to EB_ROOT_UNIQUE.
+(cherry picked from commit 1c6235dbba0a67bad1d5e57ada88f28e1270a5cb)
+(cherry picked from commit 6e80935a77c8c2c67a982780a0f14c241f02f2aa)
+---
+ src/stick_table.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/stick_table.c b/src/stick_table.c
+index 48d5710..6310690 100644
+--- a/src/stick_table.c
++++ b/src/stick_table.c
+@@ -385,6 +385,7 @@ int stktable_init(struct stktable *t)
+       if (t->size) {
+               memset(&t->keys, 0, sizeof(t->keys));
+               memset(&t->exps, 0, sizeof(t->exps));
++              t->updates = EB_ROOT_UNIQUE;
+               t->pool = create_pool("sticktables", sizeof(struct stksess) + t->data_size + t->key_size, MEM_F_SHARED);
+-- 
+2.4.10
+
diff --git a/net/haproxy/patches/0012-DOC-ssl-missing-LF.patch b/net/haproxy/patches/0012-DOC-ssl-missing-LF.patch
deleted file mode 100644 (file)
index bfa2207..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-From 2272b4ffde38c836adfd9a9b43ff5c019ef4190a Mon Sep 17 00:00:00 2001
-From: Thierry FOURNIER <tfournier@arpalert.org>
-Date: Wed, 26 Aug 2015 08:21:26 +0200
-Subject: [PATCH 12/13] DOC: ssl: missing LF
-
-An error message miss LF
-(cherry picked from commit bc965348d7ccc0a306504232ab85dc240fd31fbf)
----
- src/ssl_sock.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/ssl_sock.c b/src/ssl_sock.c
-index 2ae45ec..8f698c0 100644
---- a/src/ssl_sock.c
-+++ b/src/ssl_sock.c
-@@ -1760,7 +1760,7 @@ int ssl_sock_prepare_srv_ctx(struct server *srv, struct proxy *curproxy)
- #ifndef OPENSSL_NO_SSL3
-               SSL_CTX_set_ssl_version(srv->ssl_ctx.ctx, SSLv3_client_method());
- #else
--              Alert("SSLv3 support requested but unavailable.");
-+              Alert("SSLv3 support requested but unavailable.\n");
-               cfgerr++;
- #endif
-       }
--- 
-2.4.6
-
diff --git a/net/haproxy/patches/0013-CLEANUP-haproxy-using-_GNU_SOURCE-instead-of-__USE_G.patch b/net/haproxy/patches/0013-CLEANUP-haproxy-using-_GNU_SOURCE-instead-of-__USE_G.patch
new file mode 100644 (file)
index 0000000..88a1157
--- /dev/null
@@ -0,0 +1,43 @@
+From 21fab69d332bfafd0a214ee29d8ad0779a055988 Mon Sep 17 00:00:00 2001
+From: David Carlier <devnexen@gmail.com>
+Date: Tue, 8 Dec 2015 21:43:09 +0000
+Subject: [PATCH 13/13] CLEANUP: haproxy: using _GNU_SOURCE instead of
+ __USE_GNU macro.
+
+In order to properly enable sched_setaffinity, in some versions of Linux,
+it is rather _GNU_SOURCE than __USE_GNU (spotted on Alpine Linux for instance),
+also for the sake of consistency as __USE_GNU seems not used across the code and
+for last, it seems on Linux it is the best way to enable non portable code.
+On Linux glibc's based versions, it seems _GNU_SOURCE defines __USE_GNU
+it should be safe enough.
+(cherry picked from commit 7ece096767d329d0ea04b70a1fb2c8b8a96b47e0)
+(cherry picked from commit 5a0ac35503f88a7bc8ee2c4f865354fa6cc25901)
+---
+ src/haproxy.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/haproxy.c b/src/haproxy.c
+index b94252d..20480a1 100644
+--- a/src/haproxy.c
++++ b/src/haproxy.c
+@@ -25,6 +25,7 @@
+  *
+  */
++#define _GNU_SOURCE
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+@@ -47,9 +48,7 @@
+ #include <syslog.h>
+ #include <grp.h>
+ #ifdef USE_CPU_AFFINITY
+-#define __USE_GNU
+ #include <sched.h>
+-#undef __USE_GNU
+ #endif
+ #ifdef DEBUG_FULL
+-- 
+2.4.10
+
diff --git a/net/haproxy/patches/0013-DOC-fix-example-of-http-request-using-ssl_fc_session.patch b/net/haproxy/patches/0013-DOC-fix-example-of-http-request-using-ssl_fc_session.patch
deleted file mode 100644 (file)
index f63de13..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-From d3a93a932430bc1a4cd5d1350820c2bec706e26d Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Thu, 27 Aug 2015 17:15:05 +0200
-Subject: [PATCH 13/13] DOC: fix example of http-request using
- ssl_fc_session_id
-
-It was missing the ",hex" resulting in raw binary data being dumped in
-the header or the logs. Now we know where these crazy logs originated
-from!
-(cherry picked from commit fca4261dacab51db960d30120f4bb4201f7e4a51)
----
- doc/configuration.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/doc/configuration.txt b/doc/configuration.txt
-index 1d95b5b..67d273b 100644
---- a/doc/configuration.txt
-+++ b/doc/configuration.txt
-@@ -3135,7 +3135,7 @@ http-request { allow | deny | tarpit | auth [realm <realm>] | redirect <rule> |
-   Example:
-         http-request set-header X-Haproxy-Current-Date %T
-         http-request set-header X-SSL                  %[ssl_fc]
--        http-request set-header X-SSL-Session_ID       %[ssl_fc_session_id]
-+        http-request set-header X-SSL-Session_ID       %[ssl_fc_session_id,hex]
-         http-request set-header X-SSL-Client-Verify    %[ssl_c_verify]
-         http-request set-header X-SSL-Client-DN        %{+Q}[ssl_c_s_dn]
-         http-request set-header X-SSL-Client-CN        %{+Q}[ssl_c_s_dn(cn)]
--- 
-2.4.6
-
diff --git a/net/haproxy/patches/0014-BUG-MINOR-http-remove-stupid-HTTP_METH_NONE-entry.patch b/net/haproxy/patches/0014-BUG-MINOR-http-remove-stupid-HTTP_METH_NONE-entry.patch
deleted file mode 100644 (file)
index 6b51543..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-From bcd033699c5a4904967652de4980e4f35f17ee34 Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Thu, 3 Sep 2015 17:15:21 +0200
-Subject: [PATCH 14/16] BUG/MINOR: http: remove stupid HTTP_METH_NONE entry
-
-When converting the "method" fetch to a string, we used to get an empty
-string if the first character was not an upper case. This was caused by
-the lookup function which returns HTTP_METH_NONE when a lookup is not
-possible, and this method being mapped to an empty string in the array.
-
-This is a totally stupid mechanism, there's no reason for having the
-result depend on the first char. In fact the message parser already
-checks that the syntax matches an HTTP token so we can only land there
-with a valid token, hence only HTTP_METH_OTHER should be returned.
-
-This fix should be backported to all actively supported branches.
-(cherry picked from commit b7ce424be2bc9df73a3b971fa9dd6daea0332bf1)
----
- include/types/proto_http.h |  1 -
- src/proto_http.c           | 11 ++++-------
- 2 files changed, 4 insertions(+), 8 deletions(-)
-
-diff --git a/include/types/proto_http.h b/include/types/proto_http.h
-index a5a5d31..dbce972 100644
---- a/include/types/proto_http.h
-+++ b/include/types/proto_http.h
-@@ -219,7 +219,6 @@ enum {
- /* Known HTTP methods */
- enum http_meth_t {
--      HTTP_METH_NONE = 0,
-       HTTP_METH_OPTIONS,
-       HTTP_METH_GET,
-       HTTP_METH_HEAD,
-diff --git a/src/proto_http.c b/src/proto_http.c
-index 02dc42b..46694cb 100644
---- a/src/proto_http.c
-+++ b/src/proto_http.c
-@@ -361,12 +361,11 @@ const struct http_method_desc http_methods[26][3] = {
-               [0] = { .meth = HTTP_METH_TRACE   , .len=5, .text="TRACE"   },
-       },
-       /* rest is empty like this :
--       *      [1] = { .meth = HTTP_METH_NONE    , .len=0, .text=""        },
-+       *      [0] = { .meth = HTTP_METH_OTHER   , .len=0, .text=""        },
-        */
- };
- const struct http_method_name http_known_methods[HTTP_METH_OTHER] = {
--      [HTTP_METH_NONE]    = { "",         0 },
-       [HTTP_METH_OPTIONS] = { "OPTIONS",  7 },
-       [HTTP_METH_GET]     = { "GET",      3 },
-       [HTTP_METH_HEAD]    = { "HEAD",     4 },
-@@ -793,8 +792,8 @@ struct chunk *http_error_message(struct session *s, int msgnum)
- }
- /*
-- * returns HTTP_METH_NONE if there is nothing valid to read (empty or non-text
-- * string), HTTP_METH_OTHER for unknown methods, or the identified method.
-+ * returns a known method among HTTP_METH_* or HTTP_METH_OTHER for all unknown
-+ * ones.
-  */
- enum http_meth_t find_http_meth(const char *str, const int len)
- {
-@@ -810,10 +809,8 @@ enum http_meth_t find_http_meth(const char *str, const int len)
-                       if (likely(memcmp(str, h->text, h->len) == 0))
-                               return h->meth;
-               };
--              return HTTP_METH_OTHER;
-       }
--      return HTTP_METH_NONE;
--
-+      return HTTP_METH_OTHER;
- }
- /* Parse the URI from the given transaction (which is assumed to be in request
--- 
-2.4.6
-
diff --git a/net/haproxy/patches/0015-BUG-MAJOR-http-don-t-call-http_send_name_header-afte.patch b/net/haproxy/patches/0015-BUG-MAJOR-http-don-t-call-http_send_name_header-afte.patch
deleted file mode 100644 (file)
index 97ac07b..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-From 3f34b5539e7ba31e44055d853b9ba496e73e0bae Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Mon, 7 Sep 2015 19:32:33 +0200
-Subject: [PATCH 15/16] BUG/MAJOR: http: don't call http_send_name_header()
- after an error
-
-A crash was reported when using the "famous" http-send-name-header
-directive. This time it's a bit tricky, it requires a certain number of
-conditions to be met including maxconn on a server, queuing, timeout in
-the queue and cookie-based persistence.
-
-The problem is that in stream.c, before calling http_send_name_header(),
-we check a number of conditions to know if we have to replace the header
-name. But prior to reaching this place, it's possible for
-sess_update_stream_int() to fail and change the stream-int's state to
-SI_ST_CLO, send an error 503 to the client, and flush all buffers. But
-http_send_name_header() can only be called with valid buffer contents
-matching the http_msg's description. So when it rewinds the stream to
-modify the header, buf->o becomes negative by the size of the incoming
-request and is used as the argument to memmove() which basically
-displaces 4GB of memory off a few bytes to write the new name, resulting
-in a core and a core file that's really not fun to play with.
-
-The solution obviously consists in refraining from calling this nasty
-function when the stream interface is already closed.
-
-This bug also affects 1.5 and possibly 1.4, so the fix must be backported
-there.
-(cherry picked from commit 9c03b33329cb4924716edc1c851913a18b0670dc)
----
- src/session.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/session.c b/src/session.c
-index 6d62e36..7520a85 100644
---- a/src/session.c
-+++ b/src/session.c
-@@ -2293,7 +2293,7 @@ struct task *process_session(struct task *t)
-                       /* Now we can add the server name to a header (if requested) */
-                       /* check for HTTP mode and proxy server_name_hdr_name != NULL */
--                      if ((s->si[1].state >= SI_ST_CON) &&
-+                      if ((s->si[1].state >= SI_ST_CON) && (s->si[1].state < SI_ST_CLO) &&
-                           (s->be->server_id_hdr_name != NULL) &&
-                           (s->be->mode == PR_MODE_HTTP) &&
-                           objt_server(s->target)) {
--- 
-2.4.6
-
diff --git a/net/haproxy/patches/0016-BUG-MINOR-tools-make-str2sa_range-report-unresolvabl.patch b/net/haproxy/patches/0016-BUG-MINOR-tools-make-str2sa_range-report-unresolvabl.patch
deleted file mode 100644 (file)
index c2b6a0f..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-From 36456071ea34546d98d3b66a696cd4c4c4643de5 Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Tue, 8 Sep 2015 16:01:25 +0200
-Subject: [PATCH 16/16] BUG/MINOR: tools: make str2sa_range() report
- unresolvable addresses
-
-If an environment variable is used in an address, and is not set, it's
-silently considered as ":" or "0.0.0.0:0" which is not correct as it
-can hide environment issues and lead to unexpected behaviours. Let's
-report this case when it happens.
-
-This fix should be backported to 1.5.
-(cherry picked from commit 9f69f46d1f1b1d116c00b4b0483c519747f977b7)
----
- src/standard.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/standard.c b/src/standard.c
-index f57724c..9299882 100644
---- a/src/standard.c
-+++ b/src/standard.c
-@@ -709,6 +709,11 @@ struct sockaddr_storage *str2sa_range(const char *str, int *low, int *high, char
-               goto out;
-       }
-+      if (!*str2) {
-+              memprintf(err, "'%s' resolves to an empty address (environment variable missing?)\n", str);
-+              goto out;
-+      }
-+
-       memset(&ss, 0, sizeof(ss));
-       if (strncmp(str2, "unix@", 5) == 0) {
--- 
-2.4.6
-
diff --git a/net/iptraf-ng/Makefile b/net/iptraf-ng/Makefile
new file mode 100644 (file)
index 0000000..9084867
--- /dev/null
@@ -0,0 +1,64 @@
+#
+# 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))
index e0a6cd583d0e1d52cfb82024a1b2c69cd13bb18b..da6148e09170f774e87e2703e6f2875c63bd627c 100644 (file)
@@ -1,5 +1,5 @@
 #
-# 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_RELEASE:=1
+PKG_VERSION=2016-01-01-$(PKG_SOURCE_VERSION)
+PKG_RELEASE:=3
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/knxd/knxd.git
-PKG_SOURCE_VERSION:=be1fcfe85cc1dfcc41f791cd9a45c57fe18da6a0
+PKG_SOURCE_VERSION:=0cca354494310c8700e95692d5e09c80f6b57085
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
 
index cd86a62afab185ffd6381c7ad04841a161126339..8a42854e646ffafded9ef681dacc1a147796438a 100644 (file)
@@ -1,12 +1,43 @@
 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:'
index 026e4cf6aba529a7f49f64b88594c4136956ff00..df3c7c87c84e113e1dec3bda531085cc082ded21 100644 (file)
@@ -1,19 +1,73 @@
 #!/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_parm args listen_local "listen-local" "/var/run/knxd"
+       append_bool args Server "Server" 1
+       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
 }
index c9c84de910399881cae9747a20323bf2d54c5260..2ae831beb6943d10f33769fc9bd4fa2108bd6f26 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=krb5
-PKG_VERSION:=1.13.2
+PKG_VERSION:=1.14
 PKG_RELEASE:=1
 
 PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
@@ -16,9 +16,9 @@ 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:=0727968764d0208388b85ad31aafde24
 
 PKG_BUILD_PARALLEL:=1
 PKG_INSTALL:=1
@@ -60,14 +60,6 @@ define Package/krb5/description
        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 += \
diff --git a/net/krb5/patches/001-fix-build.patch b/net/krb5/patches/001-fix-build.patch
deleted file mode 100644 (file)
index 2801fd3..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-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;
diff --git a/net/krb5/patches/001-fix-uninitialized-warning-errors.patch b/net/krb5/patches/001-fix-uninitialized-warning-errors.patch
new file mode 100644 (file)
index 0000000..e416209
--- /dev/null
@@ -0,0 +1,48 @@
+diff -u --recursive krb5-1.14-vanilla/src/kadmin/ktutil/ktutil_funcs.c krb5-1.14/src/kadmin/ktutil/ktutil_funcs.c
+--- krb5-1.14-vanilla/src/kadmin/ktutil/ktutil_funcs.c 2015-12-31 21:50:20.572824136 -0500
++++ krb5-1.14/src/kadmin/ktutil/ktutil_funcs.c 2015-12-31 22:11:26.603926597 -0500
+@@ -64,7 +64,7 @@
+     krb5_kt_list *list;
+     int idx;
+ {
+-    krb5_kt_list lp, prev;
++    krb5_kt_list lp, prev = NULL;
+     int i;
+     for (lp = *list, i = 1; lp; prev = lp, lp = lp->next, i++) {
+diff -u --recursive krb5-1.14-vanilla/src/lib/krad/packet.c krb5-1.14/src/lib/krad/packet.c
+--- krb5-1.14-vanilla/src/lib/krad/packet.c    2015-12-31 21:50:20.476819205 -0500
++++ krb5-1.14/src/lib/krad/packet.c    2015-12-31 22:05:32.041257903 -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.14-vanilla/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c krb5-1.14/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c
+--- krb5-1.14-vanilla/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c       2015-12-31 21:50:20.531822031 -0500
++++ krb5-1.14/src/plugins/preauth/pkinit/pkinit_crypto_openssl.c       2015-12-31 22:08:32.871650805 -0500
+@@ -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;
+diff -u --recursive krb5-1.14-vanilla/src/util/profile/prof_file.c krb5-1.14/src/util/profile/prof_file.c
+--- krb5-1.14-vanilla/src/util/profile/prof_file.c     2015-12-31 21:50:20.474819103 -0500
++++ krb5-1.14/src/util/profile/prof_file.c     2015-12-31 21:59:08.551797171 -0500
+@@ -359,6 +359,8 @@
+         if (f == NULL)
+             return (errno != 0) ? errno : ENOENT;
+         set_cloexec_file(f);
++    } else {
++        f = NULL;
+     }
+     data->upd_serial++;
index 72eb7b66d04a6c2295f8b284251c9e535487493f..6769287cc43720ac22db7aec2c588fd23b819bd6 100644 (file)
@@ -8,12 +8,12 @@
 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
index cfc552701bdc6d6afe42592127425edb01516d9b..4b2f5be68bb39c75c67db8b609b6f4e36bc342b0 100644 (file)
@@ -8,12 +8,12 @@
 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
 
@@ -85,6 +85,7 @@ endef
 # 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= \
diff --git a/net/mdnsresponder/patches/114-fix_posix_build.patch b/net/mdnsresponder/patches/114-fix_posix_build.patch
new file mode 100644 (file)
index 0000000..d3fbae5
--- /dev/null
@@ -0,0 +1,11 @@
+--- 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;
index 9fe48ce3b50eda967617ac18894e807db3d3ab32..9b169c58e765224dcdf3928123d93181a2475bdc 100644 (file)
@@ -4,3 +4,10 @@ config MOSQUITTO_LWS
     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.
index 87ff529e8e11663cc746d72d23928f9115ab611d..ec588d184e3df32c2bedcd8b0f15b95e7097129d 100644 (file)
@@ -9,14 +9,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mosquitto
-PKG_VERSION:=1.4.4
+PKG_VERSION:=1.4.7
 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:=4cb978502312bff2dcdaab6a433b1bf2
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
 
 include $(INCLUDE_DIR)/package.mk
@@ -145,7 +145,7 @@ endef
 
 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
@@ -155,8 +155,18 @@ define Package/$(PKG_NAME)/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) ./files/mosquitto.uci.convert $(1)/usr/bin
 endef
-Package/$(PKG_NAME)-nossl/install = $(Package/$(PKG_NAME)/install)
 
+define Package/mosquitto-nossl/install
+       $(call Package/mosquitto/install/default,$(1))
+endef
+
+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
@@ -185,7 +195,7 @@ Package/libmosquitto-nossl/install = $(Package/libmosquitto/install)
 # 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
index bcf56f05ef4c6c58872c9ef9fd7e6bcd86765c33..25ad2bab49d1914222c119eee80b7cd52b9d7996 100644 (file)
@@ -8,8 +8,8 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mwan3
-PKG_VERSION:=1.6
-PKG_RELEASE:=3
+PKG_VERSION:=2.0
+PKG_RELEASE:=2
 PKG_MAINTAINER:=Jeroen Louwes <jeroen.louwes@gmail.com>
 PKG_LICENSE:=GPLv2
 
index f66c024c0b3560ff0b8480acf43ff607d84c998c..0ebe38d2d4b5be962fb5b3dd3604bb3518906fbb 100644 (file)
@@ -61,13 +61,6 @@ config policy 'wan2_wan'
        list use_member 'wan_m2_w3'
        list use_member 'wan2_m1_w2'
 
-config rule 'youtube'
-       option sticky '1'
-       option ipset 'youtube'
-       option dest_port '80,443'
-       option proto 'tcp'
-       option use_policy 'balanced'
-
 config rule 'https'
        option sticky '1'
        option dest_port '443'
index 12423c794f867ca60011dc4df8bbbcacb7133868..64aaae7e7b7764222b1c3267f4759fecc5b6445e 100644 (file)
 #!/bin/sh
 
-local IP IPS IPT LOG
+. /lib/functions.sh
+. /lib/functions/network.sh
+. /lib/mwan3/mwan3.sh
 
-[ -n "$ACTION" ] || exit 0
-[ -n "$INTERFACE" ] || exit 0
+config_load mwan3
 
-if [ $ACTION == "ifup" ]; then
-        [ -n "$DEVICE" ] || exit 0
-fi
-
-if [ -x /usr/sbin/ip ]; then
-        IP="/usr/sbin/ip -4"
-elif [ -x /usr/bin/ip ]; then
-        IP="/usr/bin/ip -4"
-else
-        exit 1
-fi
+config_get enabled $INTERFACE enabled 0
+[ "$enabled" == "1" ] || exit 0
 
-if [ -x /usr/sbin/ipset ]; then
-        IPS="/usr/sbin/ipset"
-else
-        exit 1
-fi
-
-if [ -x /usr/sbin/iptables ]; then
-        IPT="/usr/sbin/iptables -t mangle -w"
-else
-        exit 1
-fi
+[ "$ACTION" == "ifup" -o "$ACTION" == "ifdown" ] || exit 1
+[ -n "$INTERFACE" ] || exit 2
 
-if [ -x /usr/bin/logger ]; then
-        LOG="/usr/bin/logger -t mwan3 -p"
-else
-        exit 1
+if [ "$ACTION" == "ifup" ]; then
+        [ -n "$DEVICE" ] || exit 3
 fi
 
+[ -x /usr/bin/ip ] || exit 4
+[ -x /usr/sbin/ipset ] || exit 5
+[ -x /usr/sbin/iptables ] || exit 6
+[ -x /usr/sbin/ip6tables ] || exit 7
+[ -x /usr/bin/logger ] || exit 8
 
-mwan3_get_iface_id()
-{
-       let iface_count++
-       [ "$1" == "$INTERFACE" ] && iface_id=$iface_count
-}
-
-mwan3_set_general_iptables()
-{
-       if ! $IPT -S mwan3_ifaces &> /dev/null; then
-               $IPT -N mwan3_ifaces
-       fi
-
-       if ! $IPT -S mwan3_connected &> /dev/null; then
-               $IPT -N mwan3_connected
-               $IPS create mwan3_connected hash:net
-               $IPT -A mwan3_connected -m set --match-set mwan3_connected dst -j MARK --set-xmark 0xff00/0xff00
-       fi
-
-       if ! $IPT -S mwan3_track &> /dev/null; then
-               $IPT -N mwan3_track
-       fi
-
-       if ! $IPT -S mwan3_rules &> /dev/null; then
-               $IPT -N mwan3_rules
-       fi
-
-       if ! $IPT -S mwan3_hook &> /dev/null; then
-               $IPT -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
-               $IPT -A mwan3_hook -m mark --mark 0x0/0xff00 -j mwan3_connected
-               $IPT -A mwan3_hook -m mark --mark 0x0/0xff00 -j mwan3_track
-               $IPT -A mwan3_hook -m mark --mark 0x0/0xff00 -j mwan3_rules
-               $IPT -A mwan3_hook -j CONNMARK --save-mark --nfmask 0xff00 --ctmask 0xff00
-               $IPT -A mwan3_hook -m mark ! --mark 0xff00/0xff00 -j mwan3_connected
-       fi
-
-       if ! $IPT -S PREROUTING | grep mwan3_hook &> /dev/null; then
-               $IPT -A PREROUTING -j mwan3_hook
-       fi
-
-       if ! $IPT -S OUTPUT | grep mwan3_hook &> /dev/null; then
-               $IPT -A OUTPUT -j mwan3_hook
-       fi
-
-       $IPT -F mwan3_rules
-}
-
-mwan3_set_general_rules()
-{
-       if [ -z "$($IP rule list | awk '$1 == "2253:"')" ]; then
-               $IP rule add pref 2253 fwmark 0xfd00/0xff00 blackhole
-       fi
-
-       if [ -z "$($IP rule list | awk '$1 == "2254:"')" ]; then
-               $IP rule add pref 2254 fwmark 0xfe00/0xff00 unreachable
-       fi
-}
-
-mwan3_set_connected_iptables()
-{
-       local connected_network
-
-       if $IPT -S mwan3_connected &> /dev/null; then
-
-               $IPS create mwan3_connected_temp hash:net
-
-               for connected_network in $($IP route | awk '{print $1}' | egrep '[0-9]{1,3}(\.[0-9]{1,3}){3}'); do
-                       $IPS -! add mwan3_connected_temp $connected_network
-               done
-
-               for connected_network in $($IP route list table 0 | awk '{print $2}' | egrep '[0-9]{1,3}(\.[0-9]{1,3}){3}'); do
-                       $IPS -! add mwan3_connected_temp $connected_network
-               done
-
-               $IPS add mwan3_connected_temp 224.0.0.0/3
-               $IPS swap mwan3_connected_temp mwan3_connected
-               $IPS destroy mwan3_connected_temp
-
-       fi
-}
-
-mwan3_set_iface_iptables()
-{
-       if ! $IPT -S mwan3_iface_$INTERFACE &> /dev/null; then
-               $IPT -N mwan3_iface_$INTERFACE
-       fi
-
-       $IPT -F mwan3_iface_$INTERFACE
-       $IPT -D mwan3_ifaces -m mark --mark 0x0/0xff00 -j mwan3_iface_$INTERFACE &> /dev/null
-
-       if [ $ACTION == "ifup" ]; then
-               $IPT -I mwan3_iface_$INTERFACE -i $DEVICE -m set --match-set mwan3_connected src -m mark --mark 0x0/0xff00 -m comment --comment "default" -j MARK --set-xmark 0xff00/0xff00
-               $IPT -A mwan3_iface_$INTERFACE -i $DEVICE -m mark --mark 0x0/0xff00 -m comment --comment "$INTERFACE" -j MARK --set-xmark $(($iface_id*256))/0xff00
-               $IPT -A mwan3_ifaces -m mark --mark 0x0/0xff00 -j mwan3_iface_$INTERFACE
-       fi
-
-       if [ $ACTION == "ifdown" ]; then
-               $IPT -X mwan3_iface_$INTERFACE
-       fi
-}
-
-mwan3_set_iface_route()
-{
-       $IP route flush table $iface_id
-       [ $ACTION == "ifup" ] && $IP route add table $iface_id default $route_args
-}
-
-mwan3_set_iface_rules()
-{
-       while [ -n "$($IP rule list | awk '$1 == "'$(($iface_id+1000)):'"')" ]; do
-               $IP rule del pref $(($iface_id+1000))
-       done
-
-       while [ -n "$($IP rule list | awk '$1 == "'$(($iface_id+2000)):'"')" ]; do
-               $IP rule del pref $(($iface_id+2000))
-       done
-
-       [ $ACTION == "ifup" ] && $IP rule add pref $(($iface_id+1000)) iif $DEVICE lookup main
-       [ $ACTION == "ifup" ] && $IP rule add pref $(($iface_id+2000)) fwmark $(($iface_id*256))/0xff00 lookup $iface_id
-}
-
-mwan3_set_iface_ipset()
-{
-       local setname entry
-
-       for setname in $(ipset -n list | grep ^mwan3_sticky_); do
-               for entry in $(ipset list $setname | grep "$(echo $(($iface_id*256)) | awk '{ printf "0x%08x", $1; }')" | cut -d ' ' -f 1); do
-                       $IPS del $setname $entry
-               done
-       done
-}
-
-mwan3_track()
-{
-       local track_ip track_ips reliability count timeout interval down up
-
-       mwan3_list_track_ips()
-       {
-               track_ips="$1 $track_ips"
-       }
-       config_list_foreach $INTERFACE track_ip mwan3_list_track_ips
-
-       if [ -e /var/run/mwan3track-$INTERFACE.pid ] ; then
-               kill $(cat /var/run/mwan3track-$INTERFACE.pid) &> /dev/null
-               rm /var/run/mwan3track-$INTERFACE.pid &> /dev/null
-       fi
-
-       if [ -n "$track_ips" ]; then
-               config_get reliability $INTERFACE reliability 1
-               config_get count $INTERFACE count 1
-               config_get timeout $INTERFACE timeout 4
-               config_get interval $INTERFACE interval 10
-               config_get down $INTERFACE down 5
-               config_get up $INTERFACE up 5
-
-               $IPS -! create mwan3_track_$INTERFACE hash:ip
-               $IPS create mwan3_track_temp_$INTERFACE hash:ip
-
-               for track_ip in $track_ips; do
-                       $IPS -! add mwan3_track_temp_$INTERFACE $track_ip
-               done
-
-               $IPS swap mwan3_track_temp_$INTERFACE mwan3_track_$INTERFACE
-               $IPS destroy mwan3_track_temp_$INTERFACE
-
-               $IPT -D mwan3_track -p icmp -m set --match-set mwan3_track_$INTERFACE dst -m icmp --icmp-type 8 -m length --length 32 -j MARK --set-xmark 0xff00/0xff00 &> /dev/null
-               $IPT -A mwan3_track -p icmp -m set --match-set mwan3_track_$INTERFACE dst -m icmp --icmp-type 8 -m length --length 32 -j MARK --set-xmark 0xff00/0xff00
-
-               [ -x /usr/sbin/mwan3track ] && /usr/sbin/mwan3track $INTERFACE $DEVICE $reliability $count $timeout $interval $down $up $track_ips &
-       else
-               $IPT -D mwan3_track -p icmp -m set --match-set mwan3_track_$INTERFACE dst -m icmp --icmp-type 8 -m length --length 32 -j MARK --set-xmark 0xff00/0xff00 &> /dev/null
-               $IPS destroy mwan3_track_$INTERFACE
-       fi
-}
-
-mwan3_set_policy()
-{
-       local iface_count iface_id INTERFACE metric probability weight
-
-       config_get INTERFACE $1 interface
-       config_get metric $1 metric 1
-       config_get weight $1 weight 1
-
-       [ -n "$INTERFACE" ] || return 0
-
-       config_foreach mwan3_get_iface_id interface
-
-       [ -n "$iface_id" ] || return 0
+local family gateway
 
-       if $IPT -S mwan3_iface_$INTERFACE &> /dev/null; then
-               if [ "$metric" -lt "$lowest_metric" ]; then
+config_get family $INTERFACE family ipv4
 
-                       total_weight=$weight
-                       $IPT -F mwan3_policy_$policy
-                       $IPT -A mwan3_policy_$policy -m mark --mark 0x0/0xff00 -m comment --comment "$INTERFACE $weight $weight" -j MARK --set-xmark $(($iface_id*256))/0xff00
-
-                       lowest_metric=$metric
-
-               elif [ "$metric" -eq "$lowest_metric" ]; then
-
-                       total_weight=$(($total_weight+$weight))
-                       probability=$(($weight*1000/$total_weight))
-
-                       if [ "$probability" -lt 10 ]; then
-                               probability="0.00$probability"
-                       elif [ $probability -lt 100 ]; then
-                               probability="0.0$probability"
-                       elif [ $probability -lt 1000 ]; then
-                               probability="0.$probability"
-                       else
-                               probability="1"
-                       fi
-
-                       probability="-m statistic --mode random --probability $probability"
-
-                       $IPT -I mwan3_policy_$policy -m mark --mark 0x0/0xff00 $probability -m comment --comment "$INTERFACE $weight $total_weight" -j MARK --set-xmark $(($iface_id*256))/0xff00
-               fi
-       fi
-}
-
-mwan3_set_policies_iptables()
-{
-       local last_resort lowest_metric policy total_weight
-
-       policy=$1
-
-       config_get last_resort $1 last_resort unreachable
-
-       if [ "$policy" != $(echo "$policy" | cut -c1-15) ]; then
-               $LOG warn "Policy $policy exceeds max of 15 chars. Not setting policy" && return 0
-       fi
-
-       if ! $IPT -S mwan3_policy_$policy &> /dev/null; then
-               $IPT -N mwan3_policy_$policy
-       fi
-
-       $IPT -F mwan3_policy_$policy
-
-       case "$last_resort" in
-               blackhole)
-                       $IPT -A mwan3_policy_$policy -m mark --mark 0x0/0xff00 -m comment --comment "blackhole" -j MARK --set-xmark 0xfd00/0xff00
-               ;;
-               default)
-                       $IPT -A mwan3_policy_$policy -m mark --mark 0x0/0xff00 -m comment --comment "default" -j MARK --set-xmark 0xff00/0xff00
-               ;;
-               *)
-                       $IPT -A mwan3_policy_$policy -m mark --mark 0x0/0xff00 -m comment --comment "unreachable" -j MARK --set-xmark 0xfe00/0xff00
-               ;;
-       esac
-
-       lowest_metric=256
-       total_weight=0
-
-       config_list_foreach $policy use_member mwan3_set_policy
-}
-
-mwan3_set_sticky_iptables()
-{
-       local INTERFACE iface_count iface_id
-
-       INTERFACE="$1"
-
-       config_foreach mwan3_get_iface_id interface
-       unset iface_count
-
-       $IPS -! create mwan3_sticky_$rule hash:ip,mark markmask 0xff00 timeout $timeout
-
-       if [ -n "$iface_id" ]; then
-               if [ -n "$($IPT -S mwan3_iface_$1 2> /dev/null)" ]; then
-                       $IPT -I mwan3_rule_$rule -m set ! --match-set mwan3_sticky_$rule src,src -j MARK --set-xmark 0x0/0xff00
-                       $IPT -I mwan3_rule_$rule -m mark --mark 0/0xff00 -j MARK --set-xmark $(($iface_id*256))/0xff00
-               fi
-       fi
-
-       unset iface_id
-}
-
-mwan3_set_user_rules_iptables()
-{
-       local ipset proto src_ip src_port sticky dest_ip dest_port use_policy rule timeout
-
-       config_get sticky $1 sticky 0
-       config_get timeout $1 timeout 600
-       config_get ipset $1 ipset
-       config_get proto $1 proto all
-       config_get src_ip $1 src_ip 0.0.0.0/0
-       config_get src_port $1 src_port 0:65535
-       config_get dest_ip $1 dest_ip 0.0.0.0/0
-       config_get dest_port $1 dest_port 0:65535
-       config_get use_policy $1 use_policy
-
-       rule="$1"
-
-       if [ "$rule" != $(echo "$rule" | cut -c1-15) ]; then
-               $LOG warn "Rule $rule exceeds max of 15 chars. Not setting rule" && return 0
-       fi
-
-       if [ -n "$ipset" ]; then
-               if [ -z "$($IPS -n list $ipset)" ]; then
-                       $IPS create $ipset hash:ip timeout 3600
-               fi
-
-               ipset="-m set --match-set $ipset dst"
-       fi
-
-       if [ -n "$use_policy" ]; then
-               if [ "$use_policy" == "default" ]; then
-                       use_policy="MARK --set-xmark 0xff00/0xff00"
-               elif [ "$use_policy" == "unreachable" ]; then
-                       use_policy="MARK --set-xmark 0xfe00/0xff00"
-               elif [ "$use_policy" == "blackhole" ]; then
-                       use_policy="MARK --set-xmark 0xfd00/0xff00"
-               else
-                       if [ "$sticky" -eq 1 ]; then
-
-                               if ! $IPT -S mwan3_rule_$rule &> /dev/null; then
-                                       $IPT -N mwan3_rule_$rule
-                               fi
-
-                               $IPT -F mwan3_rule_$rule
-
-                               config_foreach mwan3_set_sticky_iptables interface
-
-                               $IPT -A mwan3_rule_$rule -m mark --mark 0/0xff00 -j mwan3_policy_$use_policy
-                               $IPT -A mwan3_rule_$rule -m mark ! --mark 0xfc00/0xfc00 -j SET --del-set mwan3_sticky_$rule src,src
-                               $IPT -A mwan3_rule_$rule -m mark ! --mark 0xfc00/0xfc00 -j SET --add-set mwan3_sticky_$rule src,src
-
-                               use_policy="mwan3_rule_$rule"
-                       else
-                               use_policy="mwan3_policy_$use_policy"
-                       fi
-               fi
-
-               case $proto in
-                       tcp|udp)
-                       $IPT -A mwan3_rules -p $proto -s $src_ip -d $dest_ip $ipset -m multiport --sports $src_port -m multiport --dports $dest_port -m mark --mark 0/0xff00 -m comment --comment "$1" -j $use_policy &> /dev/null
-                       ;;
-                       *)
-                       $IPT -A mwan3_rules -p $proto -s $src_ip -d $dest_ip $ipset -m mark --mark 0/0xff00 -m comment --comment "$1" -j $use_policy &> /dev/null
-                       ;;
-               esac
-       fi
-}
-
-mwan3_ifupdown()
-{
-       local counter enabled iface_count iface_id route_args wan_metric
-
-       config_load mwan3
-       config_foreach mwan3_get_iface_id interface
-
-       [ -n "$iface_id" ] || return 0
-       [ "$iface_count" -le 250 ] || return 0
-       unset iface_count
-
-       config_get enabled $INTERFACE enabled 0
-
-       counter=0
-
-       if [ $ACTION == "ifup" ]; then
-               [ "$enabled" -eq 1 ] || return 0
-
-               while [ -z "$($IP route list dev $DEVICE default | head -1)" -a "$counter" -lt 10 ]; do
-                       sleep 1
-                       let counter++
-                       if [ "$counter" -ge 10 ]; then
-                               $LOG warn "Could not find gateway for interface $INTERFACE ($DEVICE)" && return 0
-                       fi
-               done
-
-               route_args=$($IP route list dev $DEVICE default | head -1 | sed '/.*via \([^ ]*\) .*$/!d;s//via \1/;q' | egrep '[0-9]{1,3}(\.[0-9]{1,3}){3}')
-               route_args="$route_args dev $DEVICE"
-       fi
-
-       while [ "$(pgrep -f -o hotplug-call)" -ne $$ -a "$counter" -lt 60 ]; do
-               sleep 1
-               let counter++
-               if [ "$counter" -ge 60 ]; then
-                       $LOG warn "Timeout waiting for older hotplug processes to finish. $ACTION interface $INTERFACE (${DEVICE:-unknown}) aborted" && return 0
-               fi
-       done
-
-       $LOG notice "$ACTION interface $INTERFACE (${DEVICE:-unknown})"
+if [ "$family" == "ipv4" ]; then
+       network_get_gateway gateway $INTERFACE
+elif [ "$family" == "ipv6" ]; then
+       network_get_gateway6 gateway $INTERFACE
+fi
 
-       mwan3_set_general_iptables
-       mwan3_set_general_rules
-       mwan3_set_iface_iptables
-       mwan3_set_iface_route
-       mwan3_set_iface_rules
+[ -n "$gateway" ] || exit 9
 
-       [ $ACTION == "ifdown" ] && mwan3_set_iface_ipset
-       [ $ACTION == "ifup" ] && mwan3_track
+$LOG notice "$ACTION interface $INTERFACE (${DEVICE:-unknown})"
 
-       config_foreach mwan3_set_policies_iptables policy
-       config_foreach mwan3_set_user_rules_iptables rule
-}
+mwan3_set_connected_iptables
 
 case "$ACTION" in
-       ifup|ifdown)
-               mwan3_ifupdown
-               mwan3_set_connected_iptables
+       ifup)
+               mwan3_set_general_rules
+               mwan3_set_general_iptables
+               mwan3_create_iface_rules $INTERFACE $DEVICE
+               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_rules $INTERFACE
+               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
 
diff --git a/net/mwan3/files/lib/mwan3/mwan3.sh b/net/mwan3/files/lib/mwan3/mwan3.sh
new file mode 100644 (file)
index 0000000..3afc72d
--- /dev/null
@@ -0,0 +1,808 @@
+#!/bin/sh
+
+local IP4 IP6 IPS IPT4 IPT6 LOG
+
+IP4="/usr/bin/ip -4"
+IP6="/usr/bin/ip -6"
+IPS="/usr/sbin/ipset"
+IPT4="/usr/sbin/iptables -t mangle -w"
+IPT6="/usr/sbin/ip6tables -t mangle -w"
+LOG="/usr/bin/logger -t mwan3 -p"
+
+mwan3_get_iface_id()
+{
+       local _tmp _iface _iface_count
+
+       _iface="$2"
+
+       mwan3_get_id()
+       {
+               let _iface_count++
+               [ "$1" == "$_iface" ] && _tmp=$_iface_count
+       }
+       config_foreach mwan3_get_id interface
+       export "$1=$_tmp"
+}
+
+mwan3_set_connected_iptables()
+{
+       local connected_network_v4 connected_network_v6
+
+       $IPS -! create mwan3_connected_v4 hash:net
+       $IPS create mwan3_connected_v4_temp hash:net
+
+       for connected_network_v4 in $($IP4 route | awk '{print $1}' | egrep '[0-9]{1,3}(\.[0-9]{1,3}){3}'); do
+               $IPS -! add mwan3_connected_v4_temp $connected_network_v4
+       done
+
+       for connected_network_v4 in $($IP4 route list table 0 | awk '{print $2}' | egrep '[0-9]{1,3}(\.[0-9]{1,3}){3}'); do
+               $IPS -! add mwan3_connected_v4_temp $connected_network_v4
+       done
+
+       $IPS add mwan3_connected_v4_temp 224.0.0.0/3
+
+       $IPS swap mwan3_connected_v4_temp mwan3_connected_v4
+       $IPS destroy mwan3_connected_v4_temp
+
+       $IPS -! create mwan3_connected_v6 hash:net family inet6
+       $IPS create mwan3_connected_v6_temp hash:net family inet6
+
+       for connected_network_v6 in $($IP6 route | awk '{print $1}' | egrep '([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])'); do
+               $IPS -! add mwan3_connected_v6_temp $connected_network_v6
+       done
+
+       $IPS swap mwan3_connected_v6_temp mwan3_connected_v6
+       $IPS destroy mwan3_connected_v6_temp
+
+       $IPS -! create mwan3_connected list:set
+       $IPS -! add mwan3_connected mwan3_connected_v4
+       $IPS -! add mwan3_connected mwan3_connected_v6
+}
+
+mwan3_set_general_rules()
+{
+       local IP
+
+       for IP in "$IP4" "$IP6"; do
+
+               if [ -z "$($IP rule list | awk '$1 == "2253:"')" ]; then
+                       $IP rule add pref 2253 fwmark 0xfd00/0xff00 blackhole
+               fi
+
+               if [ -z "$($IP rule list | awk '$1 == "2254:"')" ]; then
+                       $IP rule add pref 2254 fwmark 0xfe00/0xff00 unreachable
+               fi
+       done
+}
+
+mwan3_set_general_iptables()
+{
+       local IPT
+
+       for IPT in "$IPT4" "$IPT6"; do
+
+               if ! $IPT -S mwan3_ifaces_in &> /dev/null; then
+                       $IPT -N mwan3_ifaces_in
+               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
+
+               if ! $IPT -S mwan3_hook &> /dev/null; then
+                       $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_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
+               fi
+
+               if ! $IPT -S PREROUTING | grep mwan3_hook &> /dev/null; then
+                       $IPT -A PREROUTING -j mwan3_hook
+               fi
+
+               if ! $IPT -S OUTPUT | grep mwan3_hook &> /dev/null; then
+                       $IPT -A OUTPUT -j mwan3_hook
+               fi
+       done
+}
+
+mwan3_create_iface_iptables()
+{
+       local id family src_ip src_ipv6
+
+       config_get family $1 family ipv4
+       mwan3_get_iface_id id $1
+
+       [ -n "$id" ] || return 0
+
+       if [ "$family" == "ipv4" ]; then
+
+               network_get_ipaddr src_ip $1
+
+               $IPS -! create mwan3_connected list:set
+
+               if ! $IPT4 -S mwan3_ifaces_in &> /dev/null; then
+                       $IPT4 -N mwan3_ifaces_in
+               fi
+
+               if ! $IPT4 -S mwan3_ifaces_out &> /dev/null; then
+                       $IPT4 -N mwan3_ifaces_out
+               fi
+
+               if ! $IPT4 -S mwan3_iface_in_$1 &> /dev/null; then
+                       $IPT4 -N mwan3_iface_in_$1
+               fi
+
+               if ! $IPT4 -S mwan3_iface_out_$1 &> /dev/null; then
+                       $IPT4 -N mwan3_iface_out_$1
+               fi
+
+               $IPT4 -F mwan3_iface_in_$1
+               $IPT4 -A mwan3_iface_in_$1 -i $2 -m set --match-set mwan3_connected src -m mark --mark 0x0/0xff00 -m comment --comment "default" -j MARK --set-xmark 0xff00/0xff00
+               $IPT4 -A mwan3_iface_in_$1 -i $2 -m mark --mark 0x0/0xff00 -m comment --comment "$1" -j MARK --set-xmark $(($id*256))/0xff00
+
+               $IPT4 -D mwan3_ifaces_in -m mark --mark 0x0/0xff00 -j mwan3_iface_in_$1 &> /dev/null
+               $IPT4 -A mwan3_ifaces_in -m mark --mark 0x0/0xff00 -j mwan3_iface_in_$1
+
+               $IPT4 -F mwan3_iface_out_$1
+               $IPT4 -A mwan3_iface_out_$1 -s $src_ip -m mark --mark 0x0/0xff00 -m comment --comment "$1" -j MARK --set-xmark $(($id*256))/0xff00
+
+               $IPT4 -D mwan3_ifaces_out -m mark --mark 0x0/0xff00 -j mwan3_iface_out_$1 &> /dev/null
+               $IPT4 -A mwan3_ifaces_out -m mark --mark 0x0/0xff00 -j mwan3_iface_out_$1
+       fi
+
+       if [ "$family" == "ipv6" ]; then
+
+               network_get_ipaddr6 src_ipv6 $1
+
+               $IPS -! create mwan3_connected_v6 hash:net family inet6
+
+               if ! $IPT6 -S mwan3_ifaces_in &> /dev/null; then
+                       $IPT6 -N mwan3_ifaces_in
+               fi
+
+               if ! $IPT6 -S mwan3_ifaces_out &> /dev/null; then
+                       $IPT6 -N mwan3_ifaces_out
+               fi
+
+               if ! $IPT6 -S mwan3_iface_in_$1 &> /dev/null; then
+                       $IPT6 -N mwan3_iface_in_$1
+               fi
+
+               if ! $IPT6 -S mwan3_iface_out_$1 &> /dev/null; then
+                       $IPT6 -N mwan3_iface_out_$1
+               fi
+
+               $IPT6 -F mwan3_iface_in_$1
+               $IPT6 -A mwan3_iface_in_$1 -i $2 -m set --match-set mwan3_connected_v6 src -m mark --mark 0x0/0xff00 -m comment --comment "default" -j MARK --set-xmark 0xff00/0xff00
+               $IPT6 -A mwan3_iface_in_$1 -i $2 -m mark --mark 0x0/0xff00 -m comment --comment "$1" -j MARK --set-xmark $(($id*256))/0xff00
+
+               $IPT6 -D mwan3_ifaces_in -m mark --mark 0x0/0xff00 -j mwan3_iface_in_$1 &> /dev/null
+               $IPT6 -A mwan3_ifaces_in -m mark --mark 0x0/0xff00 -j mwan3_iface_in_$1
+
+               $IPT6 -F mwan3_iface_out_$1
+               $IPT6 -A mwan3_iface_out_$1 -s $src_ipv6 -m mark --mark 0x0/0xff00 -m comment --comment "$1" -j MARK --set-xmark $(($id*256))/0xff00
+
+               $IPT6 -D mwan3_ifaces_out -m mark --mark 0x0/0xff00 -j mwan3_iface_out_$1 &> /dev/null
+               $IPT6 -A mwan3_ifaces_out -m mark --mark 0x0/0xff00 -j mwan3_iface_out_$1
+       fi
+}
+
+mwan3_delete_iface_iptables()
+{
+       config_get family $1 family ipv4
+
+       if [ "$family" == "ipv4" ]; then
+
+               $IPT4 -D mwan3_ifaces_in -m mark --mark 0x0/0xff00 -j mwan3_iface_in_$1 &> /dev/null
+               $IPT4 -F mwan3_iface_in_$1 &> /dev/null
+               $IPT4 -X mwan3_iface_in_$1 &> /dev/null
+
+               $IPT4 -D mwan3_ifaces_out -m mark --mark 0x0/0xff00 -j mwan3_iface_out_$1 &> /dev/null
+               $IPT4 -F mwan3_iface_out_$1 &> /dev/null
+               $IPT4 -X mwan3_iface_out_$1 &> /dev/null
+       fi
+
+       if [ "$family" == "ipv6" ]; then
+
+               $IPT6 -D mwan3_ifaces_in -m mark --mark 0x0/0xff00 -j mwan3_iface_in_$1 &> /dev/null
+               $IPT6 -F mwan3_iface_in_$1 &> /dev/null
+               $IPT6 -X mwan3_iface_in_$1 &> /dev/null
+
+               $IPT6 -D mwan3_ifaces_out -m mark --mark 0x0/0xff00 -j mwan3_iface_out_$1 &> /dev/null
+               $IPT6 -F mwan3_iface_out_$1 &> /dev/null
+               $IPT6 -X mwan3_iface_out_$1 &> /dev/null
+       fi
+}
+
+mwan3_create_iface_route()
+{
+       local id route_args
+
+       config_get family $1 family ipv4
+       mwan3_get_iface_id id $1
+
+       [ -n "$id" ] || return 0
+
+       if [ "$family" == "ipv4" ]; then
+
+               network_get_gateway route_args $1
+               route_args="via $route_args dev $2"
+
+               $IP4 route flush table $id
+               $IP4 route add table $id default $route_args
+       fi
+
+       if [ "$family" == "ipv6" ]; then
+
+               network_get_gateway6 route_args $1
+               route_args="via $route_args dev $2"
+
+               $IP6 route flush table $id
+               $IP6 route add table $id default $route_args
+       fi
+}
+
+mwan3_delete_iface_route()
+{
+       local id
+
+       config_get family $1 family ipv4
+       mwan3_get_iface_id id $1
+
+       [ -n "$id" ] || return 0
+
+       if [ "$family" == "ipv4" ]; then
+               $IP4 route flush table $id
+       fi
+
+       if [ "$family" == "ipv6" ]; then
+               $IP6 route flush table $id
+       fi
+}
+
+mwan3_create_iface_rules()
+{
+       local id family
+
+       config_get family $1 family ipv4
+       mwan3_get_iface_id id $1
+
+       [ -n "$id" ] || return 0
+
+       if [ "$family" == "ipv4" ]; then
+
+               while [ -n "$($IP4 rule list | awk '$1 == "'$(($id+1000)):'"')" ]; do
+                       $IP4 rule del pref $(($id+1000))
+               done
+
+               while [ -n "$($IP4 rule list | awk '$1 == "'$(($id+2000)):'"')" ]; do
+                       $IP4 rule del pref $(($id+2000))
+               done
+
+               $IP4 rule add pref $(($id+1000)) iif $2 lookup main
+               $IP4 rule add pref $(($id+2000)) fwmark $(($id*256))/0xff00 lookup $id
+       fi
+
+       if [ "$family" == "ipv6" ]; then
+
+               while [ -n "$($IP6 rule list | awk '$1 == "'$(($id+1000)):'"')" ]; do
+                       $IP6 rule del pref $(($id+1000))
+               done
+
+               while [ -n "$($IP6 rule list | awk '$1 == "'$(($id+2000)):'"')" ]; do
+                       $IP6 rule del pref $(($id+2000))
+               done
+
+               $IP6 rule add pref $(($id+1000)) iif $2 lookup main
+               $IP6 rule add pref $(($id+2000)) fwmark $(($id*256))/0xff00 lookup $id
+       fi
+}
+
+mwan3_delete_iface_rules()
+{
+       local id family
+
+       config_get family $1 family ipv4
+       mwan3_get_iface_id id $1
+
+       [ -n "$id" ] || return 0
+
+       if [ "$family" == "ipv4" ]; then
+
+               while [ -n "$($IP4 rule list | awk '$1 == "'$(($id+1000)):'"')" ]; do
+                       $IP4 rule del pref $(($id+1000))
+               done
+
+               while [ -n "$($IP4 rule list | awk '$1 == "'$(($id+2000)):'"')" ]; do
+                       $IP4 rule del pref $(($id+2000))
+               done
+       fi
+
+       if [ "$family" == "ipv6" ]; then
+
+               while [ -n "$($IP6 rule list | awk '$1 == "'$(($id+1000)):'"')" ]; do
+                       $IP6 rule del pref $(($id+1000))
+               done
+
+               while [ -n "$($IP6 rule list | awk '$1 == "'$(($id+2000)):'"')" ]; do
+                       $IP6 rule del pref $(($id+2000))
+               done
+       fi
+}
+
+mwan3_delete_iface_ipset_entries()
+{
+       local id setname entry
+
+       mwan3_get_iface_id id $1
+
+       [ -n "$id" ] || return 0
+
+       for setname in $(ipset -n list | grep ^mwan3_sticky_); do
+               for entry in $(ipset list $setname | grep "$(echo $(($id*256)) | awk '{ printf "0x%08x", $1; }')" | cut -d ' ' -f 1); do
+                       $IPS del $setname $entry
+               done
+       done
+}
+
+mwan3_track()
+{
+       local track_ip track_ips reliability count timeout interval down up
+
+       mwan3_list_track_ips()
+       {
+               track_ips="$1 $track_ips"
+       }
+       config_list_foreach $1 track_ip mwan3_list_track_ips
+
+       if [ -e /var/run/mwan3track-$1.pid ] ; then
+               kill $(cat /var/run/mwan3track-$1.pid) &> /dev/null
+               rm /var/run/mwan3track-$1.pid &> /dev/null
+       fi
+
+       if [ -n "$track_ips" ]; then
+               config_get reliability $1 reliability 1
+               config_get count $1 count 1
+               config_get timeout $1 timeout 4
+               config_get interval $1 interval 10
+               config_get down $1 down 5
+               config_get up $1 up 5
+
+               [ -x /usr/sbin/mwan3track ] && /usr/sbin/mwan3track $1 $2 $reliability $count $timeout $interval $down $up $track_ips &
+       fi
+}
+
+mwan3_set_policy()
+{
+       local iface_count id iface family metric probability weight
+
+       config_get iface $1 interface
+       config_get metric $1 metric 1
+       config_get weight $1 weight 1
+
+       [ -n "$iface" ] || return 0
+
+       mwan3_get_iface_id id $iface
+
+       [ -n "$id" ] || return 0
+
+       config_get family $iface family ipv4
+
+       if [ "$family" == "ipv4" ]; then
+
+               if [ -n "$($IP4 route list table $id)" ]; then
+                       if [ "$metric" -lt "$lowest_metric_v4" ]; then
+
+                               total_weight_v4=$weight
+                               $IPT4 -F mwan3_policy_$policy
+                               $IPT4 -A mwan3_policy_$policy -m mark --mark 0x0/0xff00 -m comment --comment "$iface $weight $weight" -j MARK --set-xmark $(($id*256))/0xff00
+
+                               lowest_metric_v4=$metric
+
+                       elif [ "$metric" -eq "$lowest_metric_v4" ]; then
+
+                               total_weight_v4=$(($total_weight_v4+$weight))
+                               probability=$(($weight*1000/$total_weight_v4))
+
+                               if [ "$probability" -lt 10 ]; then
+                                       probability="0.00$probability"
+                               elif [ $probability -lt 100 ]; then
+                                       probability="0.0$probability"
+                               elif [ $probability -lt 1000 ]; then
+                                       probability="0.$probability"
+                               else
+                                       probability="1"
+                               fi
+
+                               probability="-m statistic --mode random --probability $probability"
+
+                               $IPT4 -I mwan3_policy_$policy -m mark --mark 0x0/0xff00 $probability -m comment --comment "$iface $weight $total_weight_v4" -j MARK --set-xmark $(($id*256))/0xff00
+                       fi
+               fi
+       fi
+
+       if [ "$family" == "ipv6" ]; then
+
+               if [ -n "$($IP6 route list table $id)" ]; then
+                       if [ "$metric" -lt "$lowest_metric_v6" ]; then
+
+                               total_weight_v6=$weight
+                               $IPT6 -F mwan3_policy_$policy
+                               $IPT6 -A mwan3_policy_$policy -m mark --mark 0x0/0xff00 -m comment --comment "$iface $weight $weight" -j MARK --set-xmark $(($id*256))/0xff00
+
+                               lowest_metric_v6=$metric
+
+                       elif [ "$metric" -eq "$lowest_metric_v6" ]; then
+
+                               total_weight_v6=$(($total_weight_v6+$weight))
+                               probability=$(($weight*1000/$total_weight_v6))
+
+                               if [ "$probability" -lt 10 ]; then
+                                       probability="0.00$probability"
+                               elif [ $probability -lt 100 ]; then
+                                       probability="0.0$probability"
+                               elif [ $probability -lt 1000 ]; then
+                                       probability="0.$probability"
+                               else
+                                       probability="1"
+                               fi
+
+                               probability="-m statistic --mode random --probability $probability"
+
+                               $IPT6 -I mwan3_policy_$policy -m mark --mark 0x0/0xff00 $probability -m comment --comment "$iface $weight $total_weight_v6" -j MARK --set-xmark $(($id*256))/0xff00
+                       fi
+               fi
+       fi
+}
+
+mwan3_create_policies_iptables()
+{
+       local last_resort lowest_metric_v4 lowest_metric_v6 total_weight_v4 total_weight_v6 policy IPT
+
+       policy="$1"
+
+       config_get last_resort $1 last_resort unreachable
+
+       if [ "$1" != $(echo "$1" | cut -c1-15) ]; then
+               $LOG warn "Policy $1 exceeds max of 15 chars. Not setting policy" && return 0
+       fi
+
+       for IPT in "$IPT4" "$IPT6"; do
+
+               if ! $IPT -S mwan3_policy_$1 &> /dev/null; then
+                       $IPT -N mwan3_policy_$1
+               fi
+
+               $IPT -F mwan3_policy_$1
+
+               case "$last_resort" in
+                       blackhole)
+                               $IPT -A mwan3_policy_$1 -m mark --mark 0x0/0xff00 -m comment --comment "blackhole" -j MARK --set-xmark 0xfd00/0xff00
+                       ;;
+                       default)
+                               $IPT -A mwan3_policy_$1 -m mark --mark 0x0/0xff00 -m comment --comment "default" -j MARK --set-xmark 0xff00/0xff00
+                       ;;
+                       *)
+                               $IPT -A mwan3_policy_$1 -m mark --mark 0x0/0xff00 -m comment --comment "unreachable" -j MARK --set-xmark 0xfe00/0xff00
+                       ;;
+               esac
+       done
+
+       lowest_metric_v4=256
+       total_weight_v4=0
+
+       lowest_metric_v6=256
+       total_weight_v6=0
+
+       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 iface
+
+       for iface in $($IPT4 -S $policy | cut -s -d'"' -f2 | awk '{print $1}'); do
+
+               if [ "$iface" == "$1" ]; then
+
+                       mwan3_get_iface_id id $1
+
+                       [ -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
+}
+
+mwan3_set_user_iptables_rule()
+{
+       local ipset family proto policy src_ip src_port sticky dest_ip dest_port use_policy timeout rule policy IPT
+
+       rule="$1"
+
+       config_get sticky $1 sticky 0
+       config_get timeout $1 timeout 600
+       config_get ipset $1 ipset
+       config_get proto $1 proto all
+       config_get src_ip $1 src_ip 0.0.0.0/0
+       config_get src_port $1 src_port 0:65535
+       config_get dest_ip $1 dest_ip 0.0.0.0/0
+       config_get dest_port $1 dest_port 0:65535
+       config_get use_policy $1 use_policy
+       config_get family $1 family any
+
+       if [ "$1" != $(echo "$1" | cut -c1-15) ]; then
+               $LOG warn "Rule $1 exceeds max of 15 chars. Not setting rule" && return 0
+       fi
+
+       if [ -n "$ipset" ]; then
+               ipset="-m set --match-set $ipset dst"
+       fi
+
+       if [ -n "$use_policy" ]; then
+               if [ "$use_policy" == "default" ]; then
+                       policy="MARK --set-xmark 0xff00/0xff00"
+               elif [ "$use_policy" == "unreachable" ]; then
+                       policy="MARK --set-xmark 0xfe00/0xff00"
+               elif [ "$use_policy" == "blackhole" ]; then
+                       policy="MARK --set-xmark 0xfd00/0xff00"
+               else
+                       if [ "$sticky" -eq 1 ]; then
+
+                               policy="mwan3_policy_$use_policy"
+
+                               for IPT in "$IPT4" "$IPT6"; do
+                                       if ! $IPT -S $policy &> /dev/null; then
+                                               $IPT -N $policy
+                                       fi
+
+                                       if ! $IPT -S mwan3_rule_$1 &> /dev/null; then
+                                               $IPT -N mwan3_rule_$1
+                                       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
+                               done
+
+                               policy="mwan3_rule_$1"
+                       else
+                               policy="mwan3_policy_$use_policy"
+
+                               for IPT in "$IPT4" "$IPT6"; do
+                                       if ! $IPT -S $policy &> /dev/null; then
+                                               $IPT -N $policy
+                                       fi
+                               done
+
+                       fi
+               fi
+
+               if [ "$family" == "any" ]; then
+
+                       for IPT in "$IPT4" "$IPT6"; do
+                               case $proto in
+                                       tcp|udp)
+                                       $IPT -A mwan3_rules -p $proto -s $src_ip -d $dest_ip $ipset -m multiport --sports $src_port -m multiport --dports $dest_port -m mark --mark 0/0xff00 -m comment --comment "$1" -j $policy &> /dev/null
+                                       ;;
+                                       *)
+                                       $IPT -A mwan3_rules -p $proto -s $src_ip -d $dest_ip $ipset -m mark --mark 0/0xff00 -m comment --comment "$1" -j $policy &> /dev/null
+                                       ;;
+                               esac
+                       done
+
+               elif [ "$family" == "ipv4" ]; then
+
+                       case $proto in
+                               tcp|udp)
+                               $IPT4 -A mwan3_rules -p $proto -s $src_ip -d $dest_ip $ipset -m multiport --sports $src_port -m multiport --dports $dest_port -m mark --mark 0/0xff00 -m comment --comment "$1" -j $policy &> /dev/null
+                               ;;
+                               *)
+                               $IPT4 -A mwan3_rules -p $proto -s $src_ip -d $dest_ip $ipset -m mark --mark 0/0xff00 -m comment --comment "$1" -j $policy &> /dev/null
+                               ;;
+                       esac
+
+               elif [ "$family" == "ipv6" ]; then
+
+                       case $proto in
+                               tcp|udp)
+                               $IPT6 -A mwan3_rules -p $proto -s $src_ip -d $dest_ip $ipset -m multiport --sports $src_port -m multiport --dports $dest_port -m mark --mark 0/0xff00 -m comment --comment "$1" -j $policy &> /dev/null
+                               ;;
+                               *)
+                               $IPT6 -A mwan3_rules -p $proto -s $src_ip -d $dest_ip $ipset -m mark --mark 0/0xff00 -m comment --comment "$1" -j $policy &> /dev/null
+                               ;;
+                       esac
+               fi
+       fi
+}
+
+mwan3_set_user_rules()
+{
+       local IPT
+
+       for IPT in "$IPT4" "$IPT6"; do
+
+               if ! $IPT -S mwan3_rules &> /dev/null; then
+                       $IPT -N mwan3_rules
+               fi
+
+               $IPT -F mwan3_rules
+       done
+
+       config_foreach mwan3_set_user_iptables_rule rule
+}
+
+mwan3_report_iface_status()
+{
+       local device result track_ips tracking IP IPT
+
+       mwan3_get_iface_id id $1
+       network_get_device device $1
+       config_get enabled "$1" enabled 0
+       config_get family "$1" family ipv4
+
+       if [ "$family" == "ipv4" ]; then
+               IP="$IP4"
+               IPT="$IPT4"
+       fi
+
+       if [ "$family" == "ipv6" ]; then
+               IP="$IP6"
+               IPT="$IPT6"
+       fi
+
+       if [ -z "$id" -o -z "$device" ]; then
+               result="unknown"
+       elif [ -n "$($IP rule | awk '$1 == "'$(($id+1000)):'"')"i -a -n "$($IP rule | awk '$1 == "'$(($id+2000)):'"')" -a -n "$($IPT -S mwan3_iface_in_$1 2> /dev/null)" -a -n "$($IPT -S mwan3_iface_out_$1 2> /dev/null)" -a -n "$($IP route list table $id default dev $device 2> /dev/null)" ]; then
+               result="online"
+       elif [ -n "$($IP rule | awk '$1 == "'$(($id+1000)):'"')" -o -n "$($IP rule | awk '$1 == "'$(($id+2000)):'"')" -o -n "$($IPT -S mwan3_iface_in_$1 2> /dev/null)" -o -n "$($IPT -S mwan3_iface_out_$1 2> /dev/null)" -o -n "$($IP route list table $id default dev $device 2> /dev/null)" ]; then
+               result="error"
+       else
+               if [ "$enabled" == "1" ]; then
+                       result="offline"
+               else
+                       result="disabled"
+               fi
+       fi
+
+       mwan3_list_track_ips()
+       {
+               track_ips="$1 $track_ips"
+       }
+       config_list_foreach $1 track_ip mwan3_list_track_ips
+
+       if [ -n "$track_ips" ]; then
+               if [ -n "$(ps -w | grep mwan3track | grep -v grep | sed '/.*\/usr\/sbin\/mwan3track \([^ ]*\) .*$/!d;s//\1/' | awk '$1 == "'$1'"')" ]; then
+                       tracking="active"
+               else
+                       tracking="down"
+               fi
+       else
+               tracking="not enabled"
+       fi
+
+       echo " interface $1 is $result and tracking is $tracking"
+}
+
+mwan3_report_policies_v4()
+{
+       local percent policy share total_weight weight iface
+
+       for policy in $($IPT4 -S | awk '{print $2}' | grep mwan3_policy_ | sort -u); do
+               echo "$policy:" | sed 's/mwan3_policy_//'
+
+               [ -n "$total_weight" ] || total_weight=$($IPT4 -S $policy | cut -s -d'"' -f2 | head -1 | awk '{print $3}')
+
+               if [ ! -z "${total_weight##*[!0-9]*}" ]; then
+                       for iface in $($IPT4 -S $policy | cut -s -d'"' -f2 | awk '{print $1}'); do
+                               weight=$($IPT4 -S $policy | cut -s -d'"' -f2 | awk '$1 == "'$iface'"' | awk '{print $2}')
+                               percent=$(($weight*100/$total_weight))
+                               echo " $iface ($percent%)"
+                       done
+               else
+                       echo " $($IPT4 -S $policy | sed '/.*--comment \([^ ]*\) .*$/!d;s//\1/;q')"
+               fi
+
+               unset total_weight
+
+               echo -e
+       done
+}
+
+mwan3_report_policies_v6()
+{
+       local percent policy share total_weight weight iface
+
+       for policy in $($IPT6 -S | awk '{print $2}' | grep mwan3_policy_ | sort -u); do
+               echo "$policy:" | sed 's/mwan3_policy_//'
+
+               [ -n "$total_weight" ] || total_weight=$($IPT6 -S $policy | cut -s -d'"' -f2 | head -1 | awk '{print $3}')
+
+               if [ ! -z "${total_weight##*[!0-9]*}" ]; then
+                       for iface in $($IPT6 -S $policy | cut -s -d'"' -f2 | awk '{print $1}'); do
+                               weight=$($IPT6 -S $policy | cut -s -d'"' -f2 | awk '$1 == "'$iface'"' | awk '{print $2}')
+                               percent=$(($weight*100/$total_weight))
+                               echo " $iface ($percent%)"
+                       done
+               else
+                       echo " $($IPT6 -S $policy | sed '/.*--comment \([^ ]*\) .*$/!d;s//\1/;q')"
+               fi
+
+               unset total_weight
+
+               echo -e
+       done
+}
+
+mwan3_report_connected_v4()
+{
+       local address
+
+       if [ -n "$($IPT4 -S mwan3_connected 2> /dev/null)" ]; then
+               for address in $($IPS list mwan3_connected_v4 | egrep '[0-9]{1,3}(\.[0-9]{1,3}){3}'); do
+                       echo " $address"
+               done
+       fi
+}
+
+mwan3_report_connected_v6()
+{
+       local address
+
+       if [ -n "$($IPT6 -S mwan3_connected 2> /dev/null)" ]; then
+               for address in $($IPS list mwan3_connected_v6 | egrep '([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])'); do
+                       echo " $address"
+               done
+       fi
+}
+
+mwan3_report_rules_v4()
+{
+       if [ -n "$($IPT4 -S mwan3_rules 2> /dev/null)" ]; then
+               $IPT4 -L mwan3_rules -n -v 2> /dev/null | tail -n+3 | sed 's/mark.*//' | sed 's/mwan3_policy_/- /' | sed 's/mwan3_rule_/S /'
+       fi
+}
+
+mwan3_report_rules_v6()
+{
+       if [ -n "$($IPT6 -S mwan3_rules 2> /dev/null)" ]; then
+               $IPT6 -L mwan3_rules -n -v 2> /dev/null | tail -n+3 | sed 's/mark.*//' | sed 's/mwan3_policy_/- /' | sed 's/mwan3_rule_/S /'
+       fi
+}
index a5da22ac9ffcff4a36472b56f0cc53fd92db276e..824e17af81f0f8bcc0e0a6bce06c7b29c8c82f7c 100755 (executable)
@@ -1,26 +1,14 @@
 #!/bin/sh
 
-if [ -x /usr/sbin/ip ]; then
-        IP="/usr/sbin/ip -4"
-elif [ -x /usr/bin/ip ]; then
-        IP="/usr/bin/ip -4"
-else
-        exit 1
-fi
-
-if [ -x /usr/sbin/ipset ]; then
-        IPS="/usr/sbin/ipset"
-else
-        exit 1
-fi
-
-if [ -x /usr/sbin/iptables ]; then
-        IPT="/usr/sbin/iptables -t mangle -w"
-else
-        exit 1
-fi
+[ -x /usr/bin/ip ] || exit 4
+[ -x /usr/sbin/ipset ] || exit 5
+[ -x /usr/sbin/iptables ] || exit 6
+[ -x /usr/sbin/ip6tables ] || exit 7
+[ -x /usr/bin/logger ] || exit 8
 
 . /lib/functions.sh
+. /lib/functions/network.sh
+. /lib/mwan3/mwan3.sh
 
 help()
 {
@@ -34,8 +22,9 @@ Available commands:
         ifup <iface>    Load rules and routes for specific interface
         ifdown <iface>  Unload rules and routes for specific interface
         interfaces      Show interfaces status
-        policies        Show policies status
-        rules           Show rules status
+        policies        Show currently active policy
+       connected       Show directly connected networks
+        rules           Show active rules
         status          Show all status
 
 EOF
@@ -51,12 +40,12 @@ ifdown()
                echo "Error: Too many arguments. Usage: mwan3 ifdown <interface>" && exit 0
        fi
 
+       ACTION=ifdown INTERFACE=$1 /sbin/hotplug-call iface
+
        if [ -e /var/run/mwan3track-$1.pid ] ; then
                kill $(cat /var/run/mwan3track-$1.pid)
                rm /var/run/mwan3track-$1.pid
        fi
-
-       ACTION=ifdown INTERFACE=$1 /sbin/hotplug-call iface
 }
 
 ifup()
@@ -84,102 +73,48 @@ ifup()
 
 interfaces()
 {
-       local device enabled iface_id tracking
-
        config_load mwan3
 
        echo "Interface status:"
-
-       check_iface_status()
-       {
-               let iface_id++
-               device=$(uci -p /var/state get network.$1.ifname) &> /dev/null
-
-               if [ -z "$device" ]; then
-                       echo " interface $1 is unknown"
-                       return 0
-               fi
-
-               config_get enabled "$1" enabled 0
-
-               if [ -n "$(ps -w | grep mwan3track | grep -v grep | sed '/.*\/usr\/sbin\/mwan3track \([^ ]*\) .*$/!d;s//\1/' | awk '$1 == "'$1'"')" ]; then
-                       tracking="active"
-               else
-                       tracking="down"
-               fi
-
-               if [ -n "$($IP rule | awk '$5 == "'$device'"')" -a -n "$($IPT -S mwan3_iface_$1 2> /dev/null)" -a -n "$($IP route list table $iface_id default dev $device 2> /dev/null)" ]; then
-                       if [ -n "$(uci -p /var/state get mwan3.$1.track_ip 2> /dev/null)" ]; then
-                               echo " interface $1 is online (tracking $tracking)"
-                       else
-                               echo " interface $1 is online"
-                       fi
-               elif [ -n "$($IP rule | awk '$5 == "'$device'"')" -o -n "$($IPT -S mwan3_iface_$1 2> /dev/null)" -o -n "$($IP route list table $iface_id default dev $device 2> /dev/null)" ]; then
-                       echo " interface $1 error"
-               else
-                       if [ "$enabled" -eq 1 ]; then
-                               if [ -n "$(uci -p /var/state get mwan3.$1.track_ip 2> /dev/null)" ]; then
-                                       echo " interface $1 is offline (tracking $tracking)"
-                               else
-                                       echo " interface $1 is offline"
-                               fi
-                       else
-                               echo " interface $1 is disabled"
-                       fi
-               fi
-       }
-       config_foreach check_iface_status interface
+       config_foreach mwan3_report_iface_status interface
        echo -e
 }
 
 policies()
 {
-       local percent policy share total_weight weight iface
-
-       for policy in $($IPT -S | awk '{print $2}' | grep mwan3_policy_ | sort -u); do
-               echo "Policy $policy:" | sed 's/mwan3_policy_//'
-
-               [ -n "$total_weight" ] || total_weight=$($IPT -S $policy | cut -s -d'"' -f2 | head -1 | awk '{print $3}')
-
-               if [ ! -z "${total_weight##*[!0-9]*}" ]; then
-                       for iface in $($IPT -S $policy | cut -s -d'"' -f2 | awk '{print $1}'); do
-                               weight=$($IPT -S $policy | cut -s -d'"' -f2 | awk '$1 == "'$iface'"' | awk '{print $2}')
-                               percent=$(($weight*100/$total_weight))
-                               echo " $iface ($percent%)"
-                       done
-               else
-                       echo " $($IPT -S $policy | sed '/.*--comment \([^ ]*\) .*$/!d;s//\1/;q')"
-               fi
-
-               echo -e
+       echo "Current ipv4 policies:"
+       mwan3_report_policies_v4
+       echo -e
+       echo "Current ipv6 policies:"
+       mwan3_report_policies_v6
+       echo -e
+}
 
-               unset iface
-               unset total_weight
-       done
+connected()
+{
+       echo "Directly connected ipv4 networks:"
+       mwan3_report_connected_v4
+       echo -e
+       echo "Directly connected ipv6 networks:"
+       mwan3_report_connected_v6
+       echo -e
 }
+
 rules()
 {
-       local address
-
-       if [ -n "$($IPT -S mwan3_connected 2> /dev/null)" ]; then
-               echo "Known networks:"
-               for address in $($IPS list mwan3_connected | egrep '[0-9]{1,3}(\.[0-9]{1,3}){3}'); do
-                       echo " $address"
-               done
-               echo -e
-       fi
-
-       if [ -n "$($IPT -S mwan3_rules 2> /dev/null)" ]; then
-               echo "Active rules:"
-               $IPT -L mwan3_rules -n -v 2> /dev/null | tail -n+3 | sed 's/mark.*//' | sed 's/mwan3_policy_/- /' | sed 's/mwan3_rule_/S /'
-               echo -e
-       fi
+       echo "Active ipv4 user rules:"
+       mwan3_report_rules_v4
+       echo -e
+       echo "Active ipv6 user rules:"
+       mwan3_report_rules_v6
+       echo -e
 }
 
 status()
 {
        interfaces
        policies
+       connected
        rules
 }
 
@@ -191,32 +126,42 @@ start()
 
 stop()
 {
-       local ipset route rule table
+       local ipset route rule table IP IPT
 
        killall mwan3track &> /dev/null
        rm /var/run/mwan3track-* &> /dev/null
 
-       for route in $($IP route list table all | sed 's/.*table \([^ ]*\) .*/\1/' |  awk '{print $1}' | awk '{for(i=1;i<=NF;i++) if($i+0>0) if($i+0<255) {print;break}}'); do
-               $IP route flush table $route &> /dev/null
-       done
+       for IP in "$IP4" "$IP6"; do
+
+               for route in $($IP route list table all | sed 's/.*table \([^ ]*\) .*/\1/' |  awk '{print $1}' | awk '{for(i=1;i<=NF;i++) if($i+0>0) if($i+0<255) {print;break}}'); do
+                       $IP route flush table $route &> /dev/null
+               done
 
-       for rule in $($IP rule list | egrep '^[1-2][0-9]{3}\:' | cut -d ':' -f 1); do
-               $IP rule del pref $rule &> /dev/null
+               for rule in $($IP rule list | egrep '^[1-2][0-9]{3}\:' | cut -d ':' -f 1); do
+                       $IP rule del pref $rule &> /dev/null
+               done
        done
 
-       $IPT -D PREROUTING -j mwan3_hook &> /dev/null
-       $IPT -D OUTPUT -j mwan3_hook &> /dev/null
+       for IPT in "$IPT4" "$IPT6"; do
 
-       for table in $($IPT -S | awk '{print $2}' | grep mwan3 | sort -u); do
-               $IPT -F $table &> /dev/null
+               $IPT -D PREROUTING -j mwan3_hook &> /dev/null
+               $IPT -D OUTPUT -j mwan3_hook &> /dev/null
+
+               for table in $($IPT -S | awk '{print $2}' | grep mwan3 | sort -u); do
+                       $IPT -F $table &> /dev/null
+               done
+
+               for table in $($IPT -S | awk '{print $2}' | grep mwan3 | sort -u); do
+                       $IPT -X $table &> /dev/null
+               done
        done
 
-       for table in $($IPT -S | awk '{print $2}' | grep mwan3 | sort -u); do
-               $IPT -X $table &> /dev/null
+       for ipset in $($IPS -n list | grep mwan3_); do
+               $IPS -q destroy $ipset
        done
 
-       for ipset in $(ipset -n list | grep mwan3); do
-               $IPS destroy $ipset
+       for ipset in $($IPS -n list | grep mwan3 | grep -E '_v4|_v6'); do
+               $IPS -q destroy $ipset
        done
 }
 
@@ -226,7 +171,7 @@ restart() {
 }
 
 case "$1" in
-       ifup|ifdown|interfaces|policies|rules|status|start|stop|restart)
+       ifup|ifdown|interfaces|policies|connected|rules|status|start|stop|restart)
                $*
        ;;
        *)
index c4d25e99d26d33baf7c580efe61d6da50495ebb4..6ea84bda46fca1fea29f59b5cbf3ea40ba46978d 100755 (executable)
@@ -17,7 +17,7 @@ lost=0
 while true; do
 
        for track_ip in $track_ips; do
-               ping -I $2 -c $4 -W $5 -s 4 -q $track_ip &> /dev/null
+               ping -I $2 -c $4 -W $5 -q $track_ip &> /dev/null
                if [ $? -eq 0 ]; then
                        let host_up_count++
                else
index 3dd8c41dc2f836a7312c8f3de09077c6c3386c76..000a992d48f5263097a2c3777d512bf028e0b49f 100644 (file)
@@ -99,6 +99,60 @@ snmpd_access_add() {
        echo "access $group $context $version $level $prefix $read $write $notify" >> $CONFIGFILE
 }
 
+snmpd_trap_hostname_add() {
+       local cfg="$1"
+       config_get hostname "$cfg" HostName
+       config_get port "$cfg" Port
+       config_get community "$cfg" Community
+       config_get type "$cfg" Type
+       echo "$type $hostname $community $port" >> $CONFIGFILE
+}
+
+snmpd_trap_ip_add() {
+       local cfg="$1"
+       config_get host_ip "$cfg" HostIP
+       config_get port "$cfg" Port
+       config_get community "$cfg" Community
+       config_get type "$cfg" Type
+       echo "$type $host_ip $community $port" >> $CONFIGFILE
+}
+
+snmpd_access_default_add() {
+       local cfg="$1"
+       config_get mode "$cfg" Mode
+       config_get community "$cfg" CommunityName
+       config_get oidrestrict "$cfg" RestrictOID
+       config_get oid "$cfg" RestrictedOID
+       echo -n "$mode $community default" >> $CONFIGFILE
+       [ "$oidrestrict" == "yes" ] && echo " $oid" >> $CONFIGFILE
+       [ "$oidrestrict" == "no" ] && echo "" >> $CONFIGFILE
+}
+
+snmpd_access_HostName_add() {
+       local cfg="$1"
+       config_get hostname "$cfg" HostName
+       config_get mode "$cfg" Mode
+       config_get community "$cfg" CommunityName
+       config_get oidrestrict "$cfg" RestrictOID
+       config_get oid "$cfg" RestrictedOID
+       echo -n "$mode $community $hostname" >> $CONFIGFILE
+       [ "$oidrestrict" == "yes" ] && echo " $oid" >> $CONFIGFILE
+       [ "$oidrestrict" == "no" ] && echo "" >> $CONFIGFILE
+}
+
+snmpd_access_HostIP_add() {
+       local cfg="$1"
+       config_get host_ip "$cfg" HostIP
+       config_get ip_mask "$cfg" IPMask
+       config_get mode "$cfg" Mode
+       config_get community "$cfg" CommunityName
+       config_get oidrestrict "$cfg" RestrictOID
+       config_get oid "$cfg" RestrictedOID
+       echo -n "$mode $community $host_ip/$ip_mask" >> $CONFIGFILE
+       [ "$oidrestrict" == "yes" ] && echo " $oid" >> $CONFIGFILE
+       [ "$oidrestrict" == "no" ] && echo "" >> $CONFIGFILE
+}
+
 snmpd_pass_add() {
        local cfg="$1"
        local pass='pass'
@@ -151,6 +205,11 @@ start_service() {
        config_foreach snmpd_group_add group
        config_foreach snmpd_view_add view
        config_foreach snmpd_access_add access
+       config_foreach snmpd_trap_hostname_add trap_HostName
+       config_foreach snmpd_trap_ip_add trap_HostIP
+       config_foreach snmpd_access_default_add access_default
+       config_foreach snmpd_access_HostName_add access_HostName
+       config_foreach snmpd_access_HostIP_add access_HostIP
        config_foreach snmpd_pass_add pass
        config_foreach snmpd_exec_add exec
        config_foreach snmpd_disk_add disk
@@ -169,3 +228,7 @@ start_service() {
 stop_service() {
        [ -f "$CONFIGFILE" ] && rm -f "$CONFIGFILE"
 }
+
+service_triggers(){
+       procd_add_reload_trigger 'snmpd'
+}
index 8c2d26daa5cc43f73c3819b3a8b70ad014fc4d16..86a356bb1b23f43c9bb3ae3ddc770e2b5b2ec4d5 100644 (file)
@@ -1,4 +1,4 @@
-# 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.
@@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=nfs-kernel-server
 PKG_VERSION:=1.3.3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 PKG_MD5SUM:=9b87d890669eaaec8e97a2b0a35b2665
 
 PKG_SOURCE_URL:=@SF/nfs
@@ -60,7 +60,7 @@ define Package/nfs-utils
   $(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
 
@@ -93,8 +93,8 @@ MAKE_FLAGS += \
        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
 
@@ -125,7 +125,8 @@ define Host/Compile
 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
index a4cc4c8c8e7af40ebdbbc7544f5ead43f52c7611..6482d9d2846ee14339df9621a6719c0528992c59 100644 (file)
@@ -172,4 +172,9 @@ config NGINX_PCRE
        prompt "Enable PCRE library usage"
        default y
 
+config NGINX_NAXSI
+       bool
+       prompt "Enable NAXSI module"
+       default y
+
 endmenu
index cc597157744cd528e6a049c19cf49afaa7faaf2b..6bce6a2a1d8e58bd4ec90eafd244d911a3a914ce 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=nginx
-PKG_VERSION:=1.9.6
-PKG_RELEASE:=1
+PKG_VERSION:=1.9.9
+PKG_RELEASE:=2
 
 PKG_SOURCE:=nginx-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://nginx.org/download/
-PKG_MD5SUM:=f6899825e7a8deadba4948ff84515ad6
+PKG_MD5SUM:=50fdfa08e93ead7a111cba5a5f5735af
 PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
 PKG_LICENSE:=2-clause BSD-like license
 
@@ -83,6 +83,11 @@ define Package/nginx/conffiles
 /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
@@ -209,6 +214,31 @@ define Package/nginx/install
        $(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))
index 251b91e2dbe512b13127ae25a259f0fd749da4f1..84aab69df6db34d1059ff3b4d46664ebb97553f7 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2006-2014 OpenWrt.org
+# Copyright (C) 2006-2015 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=nmap
-PKG_VERSION:=6.47
-PKG_RELEASE:=2
+PKG_VERSION:=7.01
+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:=edfe81f6763223c0a29bfa15a8526e2a
+PKG_MD5SUM:=7fa4edc592184c7addc14f5acb3fe6f7
 PKG_LICENSE:=GPL-2.0
 PKG_LICENSE_FILES:=COPYING
 
index 787e77955b5330572654dd89e0aed697e6f24cc3..3b1b6c0fd411bb237a355dc7b272ff67011fb771 100644 (file)
@@ -1,5 +1,5 @@
 #
-# 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.
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ntp
-PKG_VERSION:=4.2.8p2
-PKG_RELEASE:=3
+PKG_VERSION:=4.2.8p6
+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:=fa37049383316322d060ec9061ac23a9
+PKG_MD5SUM:=60049f51e9c8305afe30eb22b711c5c6
 
 PKG_LICENSE:=Unique
 PKG_LICENSE_FILES:=COPYRIGHT html/copyright.html
@@ -31,7 +31,7 @@ define Package/ntpd/Default
   TITLE:=ISC ntp
   MAINTAINER:=Peter Wagner <tripolar@gmx.at>
   URL:=http://www.ntp.org/
-  DEPENDS:=+libopenssl +libpthread
+  DEPENDS:=+libopenssl +libpthread +libcap
 endef
 
 define Package/ntpd/Default/description
@@ -43,7 +43,6 @@ endef
 define Package/ntpd
 $(call Package/ntpd/Default)
   TITLE+= server
-  DEPENDS+= +libcap
   USERID:=ntp=123:ntp=123
 endef
 
@@ -78,6 +77,7 @@ endef
 define Package/ntp-keygen
 $(call Package/ntpd/Default)
   TITLE+=keygen
+  DEPENDS+= +libevent2-core
 endef
 
 define Package/ntp-keygen/description
index 5cf3265d311c16a7381414f53a5d105f25ce7b87..de80228d71b4eba59f0d5440e9586cb9d6116f5c 100644 (file)
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ocserv
-PKG_VERSION:=0.10.9
-PKG_RELEASE:=2
+PKG_VERSION:=0.10.11
+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:=74834c59aa96beaa222c21ee6521adb2
+PKG_MD5SUM:=7daf9f105b115cd6611a2ac016a29d24
 
 PKG_LICENSE:=GPLv2
 PKG_LICENSE_FILES:=COPYING
@@ -56,6 +56,7 @@ EXTRA_CPPFLAGS+=-I$(STAGING_DIR)/usr/include/readline/
 EXTRA_LDFLAGS+=-lncurses
 
 CONFIGURE_ARGS+= \
+       --with-pager="" \
        --enable-local-libopts \
        --with-libreadline-prefix="$(STAGING_DIR)/" \
        --without-libnl \
@@ -90,6 +91,7 @@ define Package/ocserv/install
        $(INSTALL_DIR) $(1)/usr/sbin
        $(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_DIR) $(1)/etc/init.d
index ed1ff4287f0ae65bb75c3f5f967559225b1c3f66..a883a07667755d2772f41f3557f23d52ecff093e 100644 (file)
@@ -5,7 +5,7 @@ The openconnect server expects to be configured using the uci interface.
 
 It is recommended to setup a dynamic DNS address with openwrt prior
 to starting the server. That is because during the first startup
-a certificate file which contain the setup dynamic DNS name will be
+a certificate file which will contain the dynamic DNS name will be
 created. You can always regenerate the certificate by deleting
 /etc/ocserv/server-key.pem.
 
@@ -16,6 +16,9 @@ network. The former is suitable when you have "roadwarrior" type of clients
 connecting to the LAN, and the latter when you may need to connect
 multiple networks with the LAN.
 
+If for the client side you use OpenWRT it is recommended to check you
+have the latest vpnc-scripts and openconnect packages.
+
 
 1. Proxy-ARP Approach
 =====================
@@ -105,6 +108,22 @@ config ocservusers
 -----------------------------------------------------------------
 ```
 
+Setting up split-dns
+====================
+
+To allow the clients to resolv with the local domain add the following
+to the ocserv configuration file.
+
+```
+----/etc/config/ocserv-------------------------------------------
+config ocserv 'config'
+       option split_dns '1'
+       option default_domain 'mydomain'
+```
+
+The ```default_domain``` is optional and if not set, it will be autodetected
+from dnsmasq's configuration.
+
 
 Setting up the firewall
 =======================
index 9a5f195c618fc8171c8bade58f6f7802dea79d90..41dec99faaaca62f9c43cb6f13ede35067e71f8b 100644 (file)
@@ -271,7 +271,7 @@ ipv4-netmask = |NETMASK|
 
 # The domains over which the provided DNS should be used. Use
 # multiple lines for multiple domains.
-#split-dns = example.com
+|ENABLE_SPLIT_DNS|split-dns = |DEFAULT_DOMAIN|
 
 # Prior to leasing any IP from the pool ping it to verify that
 # it is not in use by another (unrelated to this server) host.
@@ -343,8 +343,11 @@ config-per-group = /etc/ocserv/config-per-group/
 # The following example is from linux systems. %{R} should be something
 # like 192.168.2.0/24
 
-route-add-cmd = "/sbin/route add -net %{R} dev %{D}"
-route-del-cmd = "/sbin/route del -net %{R} dev %{D}"
+#route-add-cmd = "/usr/sbin/ip route add %{R} dev %{D}"
+#route-del-cmd = "/usr/sbin/ip route delete %{R} dev %{D}"
+
+route-add-cmd = "/sbin/route add -net %{RI} dev %{D}"
+route-del-cmd = "/sbin/route del -net %{RI} dev %{D}"
 
 # This option allows to forward a proxy. The special strings '%{U}'
 # and '%{G}', if present will be replaced by the username and group name.
@@ -376,3 +379,5 @@ cisco-client-compat = |CISCO_COMPAT|
 # Option to allow sending arbitrary custom headers to the client after
 # authentication and prior to VPN tunnel establishment.
 #custom-header = "X-My-Header: hi there"
+
+expose-iroutes = true
index 61eb67cd32efcd30b619ba0c288f5fb93ce50c90..bce9339e02f618a21bd20c6e31688c9e8d9de34b 100644 (file)
@@ -18,6 +18,7 @@ setup_config() {
        config_get ip6addr      $1 ip6addr ""
        config_get proxy_arp    $1 proxy_arp "0"
        config_get ping_leases  $1 ping_leases "0"
+       config_get split_dns    $1 split_dns "0"
        config_get default_domain  $1 default_domain ""
 
        # Enable proxy arp, and make sure that ping leases is set to true in that case,
@@ -57,6 +58,7 @@ setup_config() {
        enable_default_domain="#"
        enable_udp="#"
        enable_compression="#"
+       enable_split_dns="#"
        test $predictable_ips = "0" && predictable_ips="false"
        test $predictable_ips = "1" && predictable_ips="true"
        test $cisco_compat = "0" && cisco_compat="false"
@@ -64,8 +66,11 @@ setup_config() {
        test $ping_leases = "0" && ping_leases="false"
        test $ping_leases = "1" && ping_leases="true"
        test $udp = "1" && enable_udp=""
+       test $split_dns = "1" && enable_split_dns=""
        test $compression = "1" && enable_compression=""
-       test -z $default_domain && enable_default_domain=""
+
+       test -z $default_domain && default_domain=$(uci get dhcp.@dnsmasq[0].domain)
+       test -n $default_domain && enable_default_domain=""
        test -z $ip6addr && enable_ipv6="#"
 
        test $auth = "plain" && authsuffix="\[passwd=/var/etc/ocpasswd\]"
@@ -84,6 +89,7 @@ setup_config() {
            -e "s/|PREDICTABLE_IPS|/$predictable_ips/g" \
            -e "s/|DEFAULT_DOMAIN|/$default_domain/g" \
            -e "s/|ENABLE_DEFAULT_DOMAIN|/$enable_default_domain/g" \
+           -e "s/|ENABLE_SPLIT_DNS|/$enable_split_dns/g" \
            -e "s/|CISCO_COMPAT|/$cisco_compat/g" \
            -e "s/|PING_LEASES|/$ping_leases/g" \
            -e "s/|UDP|/$enable_udp/g" \
diff --git a/net/ola/patches/002-remove-visibility-inlines-hidden-flag.patch b/net/ola/patches/002-remove-visibility-inlines-hidden-flag.patch
new file mode 100644 (file)
index 0000000..fe1acdf
--- /dev/null
@@ -0,0 +1,13 @@
+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)
index 3a1e400c2f8662fe220b7c8f9a0b0c78998dddcd..7b0502903801f5e78f0934aa02ef8405998c29b3 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=openssh
-PKG_VERSION:=7.1p1
+PKG_VERSION:=7.1p2
 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:=4d8547670e2a220d5ef805ad9e47acf2
 
 PKG_LICENSE:=BSD ISC
 PKG_LICENSE_FILES:=LICENCE
index c5a54e0079a6926056d29575ac917af2fbe631a1..c4354bb2aa55c1dab5314dfc9e6c7396c49a8bb0 100644 (file)
@@ -8,7 +8,7 @@ USE_PROCD=1
 PROG=/usr/sbin/sshd
 
 start_service() {
-       for type in rsa dsa; do {
+       for type in rsa ecdsa ed25519; do {
                # check for keys
                key=/etc/ssh/ssh_host_${type}_key
                [ ! -f $key ] && {
index f6d7e01923f04002a4c26a335f24b49d9450b353..fbefbdc25a7566b8fb341b2d2d88be38b29170b3 100644 (file)
@@ -8,11 +8,12 @@
 # $Id: Makefile $
 
 include $(TOPDIR)/rules.mk
+include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=openvswitch
 
-PKG_RELEASE:=2
-PKG_VERSION:=2.4.0
+PKG_RELEASE:=4
+PKG_VERSION:=2.5.0
 PKG_RELEASE=$(PKG_SOURCE_VERSION)
 PKG_LICENSE:=Apache-2.0
 PKG_LICENSE_FILES:=COPYING
@@ -21,21 +22,24 @@ PKG_USE_MIPS16:=0
 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:=98b94d1e7002063ce2ea3c3221fe9234cac4e124
 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
+SUPPORTED_KERNELS:=LINUX_3_18||LINUX_4_1||LINUX_4_3
 
 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>
@@ -51,20 +55,22 @@ define Package/openvswitch/Default/description
   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
@@ -73,8 +79,8 @@ endef
 
 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
@@ -84,21 +90,33 @@ endef
 
 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)
@@ -119,38 +137,49 @@ TARGET_CFLAGS += -flto -std=gnu99
 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
@@ -160,17 +189,25 @@ endef
 
 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))
 
diff --git a/net/openvswitch/patches/0003-datapath-do-not-add-vlan_hwaccel_push_inside-for-ker.patch b/net/openvswitch/patches/0003-datapath-do-not-add-vlan_hwaccel_push_inside-for-ker.patch
deleted file mode 100644 (file)
index 673b8d6..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-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
index 25aa45d8ad255515c8238c5e62633b9233f6f8fe..ddcc5fc61f76cf031b74d828bf9a921bc3ca4d08 100644 (file)
@@ -1,8 +1,8 @@
 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
@@ -11,7 +11,7 @@ index 8d47eb9..69eeed8 100644
  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 @@
@@ -25,15 +25,15 @@ index 9b2e74f..70126bb 100644
  #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)
diff --git a/net/openvswitch/patches/0005-datapath-Add-net-ip6_checksum.h-to-stt.c.patch b/net/openvswitch/patches/0005-datapath-Add-net-ip6_checksum.h-to-stt.c.patch
deleted file mode 100644 (file)
index 61504d2..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-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
-
diff --git a/net/openvswitch/patches/0006-force-kernel-4-1.patch b/net/openvswitch/patches/0006-force-kernel-4-1.patch
deleted file mode 100644 (file)
index d87fd90..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-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
diff --git a/net/openvswitch/patches/0007-add-netns-compat.patch b/net/openvswitch/patches/0007-add-netns-compat.patch
deleted file mode 100644 (file)
index b6592c8..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-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 */
diff --git a/net/openvswitch/patches/0009-fix-test-ovn.patch b/net/openvswitch/patches/0009-fix-test-ovn.patch
new file mode 100644 (file)
index 0000000..10bd37a
--- /dev/null
@@ -0,0 +1,11 @@
+--- 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)) {
diff --git a/net/openvswitch/patches/0010-patch-nf_ip_hook-4.1.patch b/net/openvswitch/patches/0010-patch-nf_ip_hook-4.1.patch
deleted file mode 100644 (file)
index 46c3432..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-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;
diff --git a/net/openvswitch/patches/0011-fix-vxlan-xmit-skb-4.1.patch b/net/openvswitch/patches/0011-fix-vxlan-xmit-skb-4.1.patch
deleted file mode 100644 (file)
index 1aecdab..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-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
diff --git a/net/openvswitch/patches/0012-fix-vport-lisp-4.1.patch b/net/openvswitch/patches/0012-fix-vport-lisp-4.1.patch
deleted file mode 100644 (file)
index 47bbfb4..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-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);
diff --git a/net/pingcheck/Makefile b/net/pingcheck/Makefile
new file mode 100644 (file)
index 0000000..f6e152d
--- /dev/null
@@ -0,0 +1,55 @@
+#
+# Copyright (C) 2015 Bruno Randolf (br1@einfach.org)
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=pingcheck
+PKG_VERSION:=0.1
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_URL:=https://github.com/br101/pingcheck.git
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_VERSION:=0f099998782f550e2abebdc65bcc3e969b798769
+
+PKG_MAINTAINER:=Bruno Randolf <br1@einfach.org>
+PKG_LICENSE:=GPL-2.0+
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/pingcheck
+       SECTION:=net
+       CATEGORY:=Network
+       DEPENDS:=+libubus +libuci
+       MAINTAINER:=Bruno Randolf <br1@einfach.org>
+       TITLE:=Check Internet and interface connectivity
+endef
+
+define Package/pingcheck/description
+Checks by using "ping" (ICMP echo) wether a configured host (normally on the
+internet) can be reached via a specific interface. Then makes this information
+available via ubus and triggers "online" and "offline" scripts.
+endef
+
+define Package/pingcheck/conffiles
+/etc/config/pingcheck
+endef
+
+define Package/pingcheck/install
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/pingcheck $(1)/usr/sbin/
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./pingcheck.init $(1)/etc/init.d/pingcheck
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_DATA) $(PKG_BUILD_DIR)/pingcheck.config $(1)/etc/config/pingcheck
+endef
+
+$(eval $(call BuildPackage,pingcheck))
diff --git a/net/pingcheck/pingcheck.init b/net/pingcheck/pingcheck.init
new file mode 100755 (executable)
index 0000000..edb04b1
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh /etc/rc.common
+
+START=99
+
+USE_PROCD=1
+PROG=/usr/sbin/pingcheck
+CONFFILE=/etc/config/pingcheck
+
+start_service() {
+       procd_open_instance
+       procd_set_param command $PROG
+       procd_set_param file $CONFFILE
+       procd_set_param respawn
+       procd_close_instance
+}
index 76f56156fa63d17ed020f35b461a50d8ae31aebd..8c5ca2c87ef30c72bbac5ca005e07c4785058ac4 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=privoxy
 PKG_VERSION:=3.0.23
-PKG_RELEASE:=3
+PKG_RELEASE:=4
 
 PKG_SOURCE:=privoxy-$(PKG_VERSION)-stable-src.tar.gz
 PKG_SOURCE_URL:=@SF/ijbswa
index b8d978fc34a2cc9acb5ab03ee9f0a78ffbeb484c..96660dd5d7a2c99e0ea73ddbf8d91311f643c561 100644 (file)
@@ -28,7 +28,7 @@ _uci2conf() {
                                # 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
index 4ff6d38adfd7a07f26882e8e24ad72208c8e3d3c..eff3e2efb8c7aadd15c8ab8c701899cac2663cec 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=prosody
-PKG_VERSION:=0.9.8
+PKG_VERSION:=0.9.9
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://prosody.im/downloads/source
-PKG_MD5SUM:=5144cd832a1860443e21e336dc560ee7
+PKG_MD5SUM:=8f7c529b072e78ab9e82ecbedfee7145
 PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
 PKG_LICENSE:=MIT/X11
 
diff --git a/net/prosody/patches/010-fix-randomseed.patch b/net/prosody/patches/010-fix-randomseed.patch
deleted file mode 100644 (file)
index 05bdffa..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-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
index f604a9fdf541c7a4488fe3f276686ee5893143f2..7e292d644bd52e9aeabd3ca4ee79d1cbf20738b0 100644 (file)
@@ -7,8 +7,8 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=radicale
-PKG_VERSION:=0.10
-PKG_RELEASE:=2
+PKG_VERSION:=1.1
+PKG_RELEASE:=1
 PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com>
 
 PKG_LICENSE:=GPL-3.0
@@ -16,7 +16,7 @@ PKG_LICENSE_FILES:=COPYING
 
 PKG_SOURCE:=Radicale-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://pypi.python.org/packages/source/R/Radicale/
-PKG_MD5SUM:=32655d8893962956ead0ad690cca6044
+PKG_MD5SUM:=2e3f11d05d7a21ee412dfd7bd5c38961
 
 # needed for "r"adicale <-> "R"adicale
 PKG_BUILD_DIR:=$(BUILD_DIR)/Radicale-$(PKG_VERSION)
index 58148f8233f25f235b6d4ca7218bcf7912c862e7..149ce2b6f6306a0f654471f2fbaa4cae92c332ad 100644 (file)
 # 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
 #
@@ -65,7 +75,7 @@ config        setting 'encoding'
 ####################################################
 # Authentication options
 #
-config setting 'auth'
+config setting 'auth'
 
        # Authentication method
        # Value: None | htpasswd | IMAP | LDAP | PAM | courier | http | remote_user | custom
index 3b91419864f7a5a02fbcffbb9441bf18b9b0335d..aeb7c41e2fd4d356df264f1971e97af63bab251b 100644 (file)
@@ -2,6 +2,8 @@
 
 # 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
index 991ca5051296c390e14d599d728ee7dd96ba1dbc..8b3bb49936218450ec0ba63ba0cce33f7a70b92f 100755 (executable)
@@ -163,7 +163,22 @@ _set_permission() {
 }
 
 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() {
@@ -184,6 +199,7 @@ start() {
        _set_permission
 
        radicale --daemon --config=$SYSCFG
+       touch /tmp/radicale.hotplug
 
        _running &      # check if running and syslog
 
index caf541e1bae7a7ad52648c833664b3138266ae51..4f5f563cae81c4a07151c57b1e8345ee2c29c7dd 100644 (file)
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=redsocks
-PKG_VERSION:=0.4
+PKG_VERSION:=0.4-20150907
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
 PKG_SOURCE_URL:=https://github.com/darkk/redsocks.git
-PKG_SOURCE_VERSION:=release-0.4
+PKG_SOURCE_VERSION:=2118c616b4970a0436eceaa57a6e3451ec98ad2b
 
 PKG_MAINTAINER:=Johannes Morgenroth <jm@m-network.de>
 PKG_LICENSE:=Apache-2.0
diff --git a/net/redsocks/patches/0001-Fix-bug-in-DNS-resolution-results-were-ignored-since.patch b/net/redsocks/patches/0001-Fix-bug-in-DNS-resolution-results-were-ignored-since.patch
deleted file mode 100644 (file)
index 595be19..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-From 290f19972e9f7b74f818ae211cb535e32f1f314f Mon Sep 17 00:00:00 2001
-From: Leonid Evdokimov <leon@darkk.net.ru>
-Date: Tue, 10 Apr 2012 00:57:26 +0400
-Subject: [PATCH 01/12] Fix bug in DNS resolution - results were ignored (since
- 8179a1ff).
-
----
- parser.c | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/parser.c b/parser.c
-index 85d3533..6198828 100644
---- a/parser.c
-+++ b/parser.c
-@@ -295,22 +295,22 @@ static int vp_in_addr(parser_context *context, void *addr, const char *token)
-               memcpy(addr, &ia, sizeof(ia));
-       }
-       else {
--              struct addrinfo *addr, hints;
-+              struct addrinfo *ainfo, hints;
-               int err;
-               memset(&hints, 0, sizeof(hints));
-               hints.ai_family = AF_INET; /* IPv4-only */
-               hints.ai_socktype = SOCK_STREAM; /* I want to have one address once and ONLY once, that's why I specify socktype and protocol */
-               hints.ai_protocol = IPPROTO_TCP;
-               hints.ai_flags = AI_ADDRCONFIG; /* I don't need IPv4 addrs without IPv4 connectivity */
--              err = getaddrinfo(token, NULL, &hints, &addr);
-+              err = getaddrinfo(token, NULL, &hints, &ainfo);
-               if (err == 0) {
-                       int count, taken;
-                       struct addrinfo *iter;
-                       struct sockaddr_in *resolved_addr;
--                      for (iter = addr, count = 0; iter; iter = iter->ai_next, ++count)
-+                      for (iter = ainfo, count = 0; iter; iter = iter->ai_next, ++count)
-                               ;
-                       taken = rand() % count;
--                      for (iter = addr; taken > 0; iter = iter->ai_next, --taken)
-+                      for (iter = ainfo; taken > 0; iter = iter->ai_next, --taken)
-                               ;
-                       resolved_addr = (struct sockaddr_in*)iter->ai_addr;
-                       assert(resolved_addr->sin_family == iter->ai_family && iter->ai_family == AF_INET);
-@@ -318,7 +318,7 @@ static int vp_in_addr(parser_context *context, void *addr, const char *token)
-                               log_error(LOG_WARNING, "%s resolves to %d addresses, using %s",
-                                         token, count, inet_ntoa(resolved_addr->sin_addr));
-                       memcpy(addr, &resolved_addr->sin_addr, sizeof(ia));
--                      freeaddrinfo(addr);
-+                      freeaddrinfo(ainfo);
-               }
-               else {
-                       if (err == EAI_SYSTEM)
--- 
-1.9.1
-
diff --git a/net/redsocks/patches/0002-inet_ntop-red_inet_ntop.patch b/net/redsocks/patches/0002-inet_ntop-red_inet_ntop.patch
deleted file mode 100644 (file)
index 058556e..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-From 6015b3a6f26e04dd5d78cd6c1320886fc9035612 Mon Sep 17 00:00:00 2001
-From: Leonid Evdokimov <leon@darkk.net.ru>
-Date: Tue, 10 Apr 2012 01:37:34 +0400
-Subject: [PATCH 02/12] inet_ntop -> red_inet_ntop
-
----
- redsocks.c | 13 ++++---------
- redudp.c   | 19 +++++++++++--------
- utils.c    | 37 +++++++++++++++++++++++++++++++++----
- utils.h    |  7 +++++++
- 4 files changed, 55 insertions(+), 21 deletions(-)
-
-diff --git a/redsocks.c b/redsocks.c
-index d085e10..ba5eab2 100644
---- a/redsocks.c
-+++ b/redsocks.c
-@@ -207,22 +207,17 @@ void redsocks_log_write_plain(
-       int saved_errno = errno;
-       struct evbuffer *fmt = evbuffer_new();
-       va_list ap;
--      char clientaddr_str[INET6_ADDRSTRLEN], destaddr_str[INET6_ADDRSTRLEN];
-+      char clientaddr_str[RED_INET_ADDRSTRLEN], destaddr_str[RED_INET_ADDRSTRLEN];
-       if (!fmt) {
-               log_errno(LOG_ERR, "evbuffer_new()");
-               // no return, as I have to call va_start/va_end
-       }
--      if (!inet_ntop(clientaddr->sin_family, &clientaddr->sin_addr, clientaddr_str, sizeof(clientaddr_str)))
--              strncpy(clientaddr_str, "???", sizeof(clientaddr_str));
--      if (!inet_ntop(destaddr->sin_family, &destaddr->sin_addr, destaddr_str, sizeof(destaddr_str)))
--              strncpy(destaddr_str, "???", sizeof(destaddr_str));
--
-       if (fmt) {
--              evbuffer_add_printf(fmt, "[%s:%i->%s:%i]: %s",
--                              clientaddr_str, ntohs(clientaddr->sin_port),
--                              destaddr_str, ntohs(destaddr->sin_port),
-+              evbuffer_add_printf(fmt, "[%s->%s]: %s",
-+                              red_inet_ntop(clientaddr, clientaddr_str, sizeof(clientaddr_str)),
-+                              red_inet_ntop(destaddr, destaddr_str, sizeof(destaddr_str)),
-                               orig_fmt);
-       }
-diff --git a/redudp.c b/redudp.c
-index 0a97852..9516a50 100644
---- a/redudp.c
-+++ b/redudp.c
-@@ -436,10 +436,9 @@ static void redudp_pkt_from_socks(int fd, short what, void *_arg)
-               return;
-       if (memcmp(&udprelayaddr, &client->udprelayaddr, sizeof(udprelayaddr)) != 0) {
--              char buf[INET6_ADDRSTRLEN];
--              const char *addr = inet_ntop(udprelayaddr.sin_family, &udprelayaddr.sin_addr, buf, sizeof(buf));
--              redudp_log_error(client, LOG_NOTICE, "Got packet from unexpected address %s:%u.",
--                               addr ? addr : "?", ntohs(udprelayaddr.sin_port));
-+              char buf[RED_INET_ADDRSTRLEN];
-+              redudp_log_error(client, LOG_NOTICE, "Got packet from unexpected address %s.",
-+                               red_inet_ntop(&udprelayaddr, buf, sizeof(buf)));
-               return;
-       }
-@@ -459,10 +458,14 @@ static void redudp_pkt_from_socks(int fd, short what, void *_arg)
-       if (pkt.header.ip.port != client->instance->config.destaddr.sin_port ||
-           pkt.header.ip.addr != client->instance->config.destaddr.sin_addr.s_addr)
-       {
--              char buf[INET6_ADDRSTRLEN];
--              const char *addr = inet_ntop(AF_INET, &pkt.header.ip.addr, buf, sizeof(buf));
--              redudp_log_error(client, LOG_NOTICE, "Socks5 server relayed packet from unexpected address %s:%u.",
--                               addr ? addr : "?", ntohs(pkt.header.ip.port));
-+              char buf[RED_INET_ADDRSTRLEN];
-+              struct sockaddr_in pktaddr = {
-+                      .sin_family = AF_INET,
-+                      .sin_addr   = { pkt.header.ip.addr },
-+                      .sin_port   = pkt.header.ip.port,
-+              };
-+              redudp_log_error(client, LOG_NOTICE, "Socks5 server relayed packet from unexpected address %s.",
-+                               red_inet_ntop(&pktaddr, buf, sizeof(buf)));
-               return;
-       }
-diff --git a/utils.c b/utils.c
-index c6ced51..6e1f3af 100644
---- a/utils.c
-+++ b/utils.c
-@@ -18,6 +18,7 @@
- #include <errno.h>
- #include <assert.h>
- #include <fcntl.h>
-+#include <string.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
-@@ -42,10 +43,9 @@ int red_recv_udp_pkt(int fd, char *buf, size_t buflen, struct sockaddr_in *inadd
-       }
-       if (pktlen >= buflen) {
--              char buf[INET6_ADDRSTRLEN];
--              const char *addr = inet_ntop(inaddr->sin_family, &inaddr->sin_addr, buf, sizeof(buf));
--              log_error(LOG_WARNING, "wow! Truncated udp packet of size %zd from %s:%u! impossible! dropping it...",
--                        pktlen, addr ? addr : "?", ntohs(inaddr->sin_port));
-+              char buf[RED_INET_ADDRSTRLEN];
-+              log_error(LOG_WARNING, "wow! Truncated udp packet of size %zd from %s! impossible! dropping it...",
-+                        pktlen, red_inet_ntop(inaddr, buf, sizeof(buf)));
-               return -1;
-       }
-@@ -176,4 +176,33 @@ int red_is_socket_connected_ok(struct bufferevent *buffev)
-       }
- }
-+char *red_inet_ntop(const struct sockaddr_in* sa, char* buffer, size_t buffer_size)
-+{
-+      const char *retval = 0;
-+      size_t len = 0;
-+      uint16_t port;
-+      const char placeholder[] = "???:???";
-+
-+      assert(buffer_size >= sizeof(placeholder));
-+
-+      memset(buffer, buffer_size, 0);
-+      if (sa->sin_family == AF_INET) {
-+              retval = inet_ntop(AF_INET, &sa->sin_addr, buffer, buffer_size);
-+              port = ((struct sockaddr_in*)sa)->sin_port;
-+      }
-+      else if (sa->sin_family == AF_INET6) {
-+              retval = inet_ntop(AF_INET6, &((const struct sockaddr_in6*)sa)->sin6_addr, buffer, buffer_size);
-+              port = ((struct sockaddr_in6*)sa)->sin6_port;
-+      }
-+      if (retval) {
-+              assert(retval == buffer);
-+              len = strlen(retval);
-+              snprintf(buffer + len, buffer_size - len, ":%d", ntohs(port));
-+      }
-+      else {
-+              strcpy(buffer, placeholder);
-+      }
-+      return buffer;
-+}
-+
- /* vim:set tabstop=4 softtabstop=4 shiftwidth=4: */
-diff --git a/utils.h b/utils.h
-index f691b77..d3af00f 100644
---- a/utils.h
-+++ b/utils.h
-@@ -57,6 +57,13 @@ int fcntl_nonblock(int fd);
-                               (what) & EVBUFFER_TIMEOUT ? "EVBUFFER_TIMEOUT" : "0", \
-                               (what) & ~(EVBUFFER_READ|EVBUFFER_WRITE|EVBUFFER_EOF|EVBUFFER_ERROR|EVBUFFER_TIMEOUT)
-+#if INET6_ADDRSTRLEN < INET_ADDRSTRLEN
-+#     error Impossible happens: INET6_ADDRSTRLEN < INET_ADDRSTRLEN
-+#else
-+#     define RED_INET_ADDRSTRLEN (INET6_ADDRSTRLEN + 1 + 5 + 1) // addr + : + port + \0
-+#endif
-+char *red_inet_ntop(const struct sockaddr_in* sa, char* buffer, size_t buffer_size);
-+
- /* vim:set tabstop=4 softtabstop=4 shiftwidth=4: */
- /* vim:set foldmethod=marker foldlevel=32 foldmarker={,}: */
- #endif /* UTILS_H_SAT_FEB__2_02_24_05_2008 */
--- 
-1.9.1
-
diff --git a/net/redsocks/patches/0003-Initial-support-for-UDP-TPROXY-redirection.-No-more-.patch b/net/redsocks/patches/0003-Initial-support-for-UDP-TPROXY-redirection.-No-more-.patch
deleted file mode 100644 (file)
index b89f4be..0000000
+++ /dev/null
@@ -1,449 +0,0 @@
-From 709646d59d96cb73a7e70347f37de9823e4e5f14 Mon Sep 17 00:00:00 2001
-From: Leonid Evdokimov <leon@darkk.net.ru>
-Date: Fri, 13 Apr 2012 01:57:23 +0400
-Subject: [PATCH 03/12] Initial support for UDP + TPROXY redirection. No more
- dest_ip in redudp.
-
- * TPROXY requires Linux 2.6.29+ (see man 7 ip[1]).
- * all redsocks code is running as root to bind to arbitrary port.
- * Non-Linux and old-Linux builds are broken at the moment.
-
-[1] http://www.kernel.org/doc/man-pages/online/pages/man7/ip.7.html
----
- dnstc.c  |   2 +-
- redudp.c | 197 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
- redudp.h |   2 +
- utils.c  |  43 +++++++++++++-
- utils.h  |   2 +-
- 5 files changed, 227 insertions(+), 19 deletions(-)
-
-diff --git a/dnstc.c b/dnstc.c
-index 43881d8..5f9fedd 100644
---- a/dnstc.c
-+++ b/dnstc.c
-@@ -68,7 +68,7 @@ static void dnstc_pkt_from_client(int fd, short what, void *_arg)
-       ssize_t pktlen, outgoing;
-       assert(fd == EVENT_FD(&self->listener));
--      pktlen = red_recv_udp_pkt(fd, buf.raw, sizeof(buf), &clientaddr);
-+      pktlen = red_recv_udp_pkt(fd, buf.raw, sizeof(buf), &clientaddr, NULL);
-       if (pktlen == -1)
-               return;
-diff --git a/redudp.c b/redudp.c
-index 9516a50..262af3e 100644
---- a/redudp.c
-+++ b/redudp.c
-@@ -15,6 +15,7 @@
-  */
- #include <stdlib.h>
-+#include <search.h>
- #include <string.h>
- #include <sys/types.h>
- #include <sys/uio.h>
-@@ -33,30 +34,157 @@
- #include "redudp.h"
- #define redudp_log_error(client, prio, msg...) \
--      redsocks_log_write_plain(__FILE__, __LINE__, __func__, 0, &(client)->clientaddr, &(client)->instance->config.destaddr, prio, ## msg)
-+      redsocks_log_write_plain(__FILE__, __LINE__, __func__, 0, &(client)->clientaddr, get_destaddr(client), prio, ## msg)
- #define redudp_log_errno(client, prio, msg...) \
--      redsocks_log_write_plain(__FILE__, __LINE__, __func__, 1, &(client)->clientaddr, &(client)->instance->config.destaddr, prio, ## msg)
-+      redsocks_log_write_plain(__FILE__, __LINE__, __func__, 1, &(client)->clientaddr, get_destaddr(client), prio, ## msg)
- static void redudp_pkt_from_socks(int fd, short what, void *_arg);
- static void redudp_drop_client(redudp_client *client);
- static void redudp_fini_instance(redudp_instance *instance);
- static int redudp_fini();
-+static int redudp_transparent(int fd);
- typedef struct redudp_expected_assoc_reply_t {
-       socks5_reply h;
-       socks5_addr_ipv4 ip;
- } PACKED redudp_expected_assoc_reply;
-+struct bound_udp4_key {
-+      struct in_addr sin_addr;
-+      uint16_t       sin_port;
-+};
-+
-+struct bound_udp4 {
-+      struct bound_udp4_key key;
-+      int ref;
-+      int fd;
-+};
-+
- /***********************************************************************
-  * Helpers
-  */
-+// TODO: separate binding to privileged process (this operation requires uid-0)
-+static void* root_bound_udp4 = NULL; // to avoid two binds to same IP:port
-+
-+static int bound_udp4_cmp(const void *a, const void *b)
-+{
-+      return memcmp(a, b, sizeof(struct bound_udp4_key));
-+}
-+
-+static void bound_udp4_mkkey(struct bound_udp4_key *key, const struct sockaddr_in *addr)
-+{
-+      memset(key, 0, sizeof(*key));
-+      key->sin_addr = addr->sin_addr;
-+      key->sin_port = addr->sin_port;
-+}
-+
-+static int bound_udp4_get(const struct sockaddr_in *addr)
-+{
-+      struct bound_udp4_key key;
-+      struct bound_udp4 *node, **pnode;
-+
-+      bound_udp4_mkkey(&key, addr);
-+      // I assume, that memory allocation for lookup is awful, so I use
-+      // tfind/tsearch pair instead of tsearch/check-result.
-+      pnode = tfind(&key, &root_bound_udp4, bound_udp4_cmp);
-+      if (pnode) {
-+              assert((*pnode)->ref > 0);
-+              (*pnode)->ref++;
-+              return (*pnode)->fd;
-+      }
-+
-+      node = calloc(1, sizeof(*node));
-+      if (!node) {
-+              log_errno(LOG_ERR, "calloc");
-+              goto fail;
-+      }
-+
-+      node->key = key;
-+      node->ref = 1;
-+      node->fd = socket(AF_INET, SOCK_DGRAM, 0);
-+      if (node->fd == -1) {
-+              log_errno(LOG_ERR, "socket");
-+              goto fail;
-+      }
-+
-+      if (0 != redudp_transparent(node->fd))
-+              goto fail;
-+
-+      if (0 != bind(node->fd, (struct sockaddr*)addr, sizeof(*addr))) {
-+              log_errno(LOG_ERR, "bind");
-+              goto fail;
-+      }
-+
-+      pnode = tsearch(node, &root_bound_udp4, bound_udp4_cmp);
-+      if (!pnode) {
-+              log_errno(LOG_ERR, "tsearch(%p) == %p", node, pnode);
-+              goto fail;
-+      }
-+      assert(node == *pnode);
-+
-+      return node->fd;
-+
-+fail:
-+      if (node) {
-+              if (node->fd != -1)
-+                      redsocks_close(node->fd);
-+              free(node);
-+      }
-+      return -1;
-+}
-+
-+static void bound_udp4_put(const struct sockaddr_in *addr)
-+{
-+      struct bound_udp4_key key;
-+      struct bound_udp4 **pnode, *node;
-+      void *parent;
-+
-+      bound_udp4_mkkey(&key, addr);
-+      pnode = tfind(&key, &root_bound_udp4, bound_udp4_cmp);
-+      assert(pnode && (*pnode)->ref > 0);
-+
-+      node = *pnode;
-+
-+      node->ref--;
-+      if (node->ref)
-+              return;
-+
-+      parent = tdelete(node, &root_bound_udp4, bound_udp4_cmp);
-+      assert(parent);
-+
-+      redsocks_close(node->fd); // expanding `pnode` to avoid use after free
-+      free(node);
-+}
-+
-+static int redudp_transparent(int fd)
-+{
-+      int on = 1;
-+      int error = setsockopt(fd, SOL_IP, IP_TRANSPARENT, &on, sizeof(on));
-+      if (error)
-+              log_errno(LOG_ERR, "setsockopt(..., SOL_IP, IP_TRANSPARENT)");
-+      return error;
-+}
-+
-+static int do_tproxy(redudp_instance* instance)
-+{
-+      return instance->config.destaddr.sin_addr.s_addr == 0;
-+}
-+
-+static struct sockaddr_in* get_destaddr(redudp_client *client)
-+{
-+      if (do_tproxy(client->instance))
-+              return &client->destaddr;
-+      else
-+              return &client->instance->config.destaddr;
-+}
-+
- static void redudp_fill_preamble(socks5_udp_preabmle *preamble, redudp_client *client)
- {
-       preamble->reserved = 0;
-       preamble->frag_no = 0; /* fragmentation is not supported */
-       preamble->addrtype = socks5_addrtype_ipv4;
--      preamble->ip.addr = client->instance->config.destaddr.sin_addr.s_addr;
--      preamble->ip.port = client->instance->config.destaddr.sin_port;
-+      preamble->ip.addr = get_destaddr(client)->sin_addr.s_addr;
-+      preamble->ip.port = get_destaddr(client)->sin_port;
- }
- static struct evbuffer* socks5_mkmethods_plain_wrapper(void *p)
-@@ -104,6 +232,8 @@ static void redudp_drop_client(redudp_client *client)
-                       redudp_log_errno(client, LOG_ERR, "event_del");
-               redsocks_close(fd);
-       }
-+      if (client->sender_fd != -1)
-+              bound_udp4_put(&client->destaddr);
-       list_for_each_entry_safe(q, tmp, &client->queue, list) {
-               list_del(&q->list);
-               free(q);
-@@ -344,7 +474,8 @@ static void redudp_relay_connected(struct bufferevent *buffev, void *_arg)
-       redudp_client *client = _arg;
-       int do_password = socks5_is_valid_cred(client->instance->config.login, client->instance->config.password);
-       int error;
--      redudp_log_error(client, LOG_DEBUG, "<trace>");
-+      char relayaddr_str[RED_INET_ADDRSTRLEN];
-+      redudp_log_error(client, LOG_DEBUG, "via %s", red_inet_ntop(&client->instance->config.relayaddr, relayaddr_str, sizeof(relayaddr_str)));
-       if (!red_is_socket_connected_ok(buffev)) {
-               redudp_log_errno(client, LOG_NOTICE, "red_is_socket_connected_ok");
-@@ -382,7 +513,7 @@ static void redudp_timeout(int fd, short what, void *_arg)
-       redudp_drop_client(client);
- }
--static void redudp_first_pkt_from_client(redudp_instance *self, struct sockaddr_in *clientaddr, char *buf, size_t pktlen)
-+static void redudp_first_pkt_from_client(redudp_instance *self, struct sockaddr_in *clientaddr, struct sockaddr_in *destaddr, char *buf, size_t pktlen)
- {
-       redudp_client *client = calloc(1, sizeof(*client));
-@@ -395,9 +526,13 @@ static void redudp_first_pkt_from_client(redudp_instance *self, struct sockaddr_
-       INIT_LIST_HEAD(&client->queue);
-       client->instance = self;
-       memcpy(&client->clientaddr, clientaddr, sizeof(*clientaddr));
-+      if (destaddr)
-+              memcpy(&client->destaddr, destaddr, sizeof(client->destaddr));
-       evtimer_set(&client->timeout, redudp_timeout, client);
-       // XXX: self->relay_ss->init(client);
-+      client->sender_fd = -1; // it's postponed until socks-server replies to avoid trivial DoS
-+
-       client->relay = red_connect_relay(&client->instance->config.relayaddr,
-                                         redudp_relay_connected, redudp_relay_error, client);
-       if (!client->relay)
-@@ -431,7 +566,7 @@ static void redudp_pkt_from_socks(int fd, short what, void *_arg)
-       assert(fd == EVENT_FD(&client->udprelay));
--      pktlen = red_recv_udp_pkt(fd, pkt.buf, sizeof(pkt.buf), &udprelayaddr);
-+      pktlen = red_recv_udp_pkt(fd, pkt.buf, sizeof(pkt.buf), &udprelayaddr, NULL);
-       if (pktlen == -1)
-               return;
-@@ -455,8 +590,8 @@ static void redudp_pkt_from_socks(int fd, short what, void *_arg)
-               return;
-       }
--      if (pkt.header.ip.port != client->instance->config.destaddr.sin_port ||
--          pkt.header.ip.addr != client->instance->config.destaddr.sin_addr.s_addr)
-+      if (pkt.header.ip.port != get_destaddr(client)->sin_port ||
-+          pkt.header.ip.addr != get_destaddr(client)->sin_addr.s_addr)
-       {
-               char buf[RED_INET_ADDRSTRLEN];
-               struct sockaddr_in pktaddr = {
-@@ -472,8 +607,18 @@ static void redudp_pkt_from_socks(int fd, short what, void *_arg)
-       redsocks_time(&client->last_relay_event);
-       redudp_bump_timeout(client);
-+      if (do_tproxy(client->instance) && client->sender_fd == -1) {
-+              client->sender_fd = bound_udp4_get(&client->destaddr);
-+              if (client->sender_fd == -1) {
-+                      redudp_log_error(client, LOG_WARNING, "bound_udp4_get failure");
-+                      return;
-+              }
-+      }
-+
-       fwdlen = pktlen - sizeof(pkt.header);
--      outgoing = sendto(EVENT_FD(&client->instance->listener),
-+      outgoing = sendto(do_tproxy(client->instance)
-+                            ? client->sender_fd
-+                            : EVENT_FD(&client->instance->listener),
-                         pkt.buf + sizeof(pkt.header), fwdlen, 0,
-                         (struct sockaddr*)&client->clientaddr, sizeof(client->clientaddr));
-       if (outgoing != fwdlen) {
-@@ -486,18 +631,21 @@ static void redudp_pkt_from_socks(int fd, short what, void *_arg)
- static void redudp_pkt_from_client(int fd, short what, void *_arg)
- {
-       redudp_instance *self = _arg;
--      struct sockaddr_in clientaddr;
-+      struct sockaddr_in clientaddr, destaddr, *pdestaddr;
-       char buf[0xFFFF]; // UDP packet can't be larger then that
-       ssize_t pktlen;
-       redudp_client *tmp, *client = NULL;
-+      pdestaddr = do_tproxy(self) ? &destaddr : NULL;
-+
-       assert(fd == EVENT_FD(&self->listener));
--      pktlen = red_recv_udp_pkt(fd, buf, sizeof(buf), &clientaddr);
-+      pktlen = red_recv_udp_pkt(fd, buf, sizeof(buf), &clientaddr, pdestaddr);
-       if (pktlen == -1)
-               return;
-       // TODO: this lookup may be SLOOOOOW.
-       list_for_each_entry(tmp, &self->clients, list) {
-+              // TODO: check destaddr
-               if (0 == memcmp(&clientaddr, &tmp->clientaddr, sizeof(clientaddr))) {
-                       client = tmp;
-                       break;
-@@ -515,7 +663,7 @@ static void redudp_pkt_from_client(int fd, short what, void *_arg)
-               }
-       }
-       else {
--              redudp_first_pkt_from_client(self, &clientaddr, buf, pktlen);
-+              redudp_first_pkt_from_client(self, &clientaddr, pdestaddr, buf, pktlen);
-       }
- }
-@@ -554,7 +702,6 @@ static int redudp_onenter(parser_section *section)
-       instance->config.relayaddr.sin_family = AF_INET;
-       instance->config.relayaddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
-       instance->config.destaddr.sin_family = AF_INET;
--      instance->config.destaddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
-       instance->config.max_pktqueue = 5;
-       instance->config.udp_timeout = 30;
-       instance->config.udp_timeout_stream = 180;
-@@ -614,6 +761,28 @@ static int redudp_init_instance(redudp_instance *instance)
-               goto fail;
-       }
-+      if (do_tproxy(instance)) {
-+              int on = 1;
-+              char buf[RED_INET_ADDRSTRLEN];
-+              // iptables TPROXY target does not send packets to non-transparent sockets
-+              if (0 != redudp_transparent(fd))
-+                      goto fail;
-+
-+              error = setsockopt(fd, SOL_IP, IP_RECVORIGDSTADDR, &on, sizeof(on));
-+              if (error) {
-+                      log_errno(LOG_ERR, "setsockopt(listener, SOL_IP, IP_RECVORIGDSTADDR)");
-+                      goto fail;
-+              }
-+
-+              log_error(LOG_DEBUG, "redudp @ %s: TPROXY", red_inet_ntop(&instance->config.bindaddr, buf, sizeof(buf)));
-+      }
-+      else {
-+              char buf1[RED_INET_ADDRSTRLEN], buf2[RED_INET_ADDRSTRLEN];
-+              log_error(LOG_DEBUG, "redudp @ %s: destaddr=%s",
-+                      red_inet_ntop(&instance->config.bindaddr, buf1, sizeof(buf1)),
-+                      red_inet_ntop(&instance->config.destaddr, buf2, sizeof(buf2)));
-+      }
-+
-       error = bind(fd, (struct sockaddr*)&instance->config.bindaddr, sizeof(instance->config.bindaddr));
-       if (error) {
-               log_errno(LOG_ERR, "bind");
-diff --git a/redudp.h b/redudp.h
-index 308bd33..3f1d9d1 100644
---- a/redudp.h
-+++ b/redudp.h
-@@ -24,6 +24,8 @@ typedef struct redudp_client_t {
-       list_head           list;
-       redudp_instance    *instance;
-       struct sockaddr_in  clientaddr;
-+      struct sockaddr_in  destaddr;
-+      int                 sender_fd; // shared between several clients socket (bound to `destaddr`)
-       struct event        timeout;
-       struct bufferevent *relay;
-       struct event        udprelay;
-diff --git a/utils.c b/utils.c
-index 6e1f3af..afdeea8 100644
---- a/utils.c
-+++ b/utils.c
-@@ -26,17 +26,54 @@
- #include "utils.h"
- #include "redsocks.h" // for redsocks_close
--int red_recv_udp_pkt(int fd, char *buf, size_t buflen, struct sockaddr_in *inaddr)
-+int red_recv_udp_pkt(int fd, char *buf, size_t buflen, struct sockaddr_in *inaddr, struct sockaddr_in *toaddr)
- {
-       socklen_t addrlen = sizeof(*inaddr);
-       ssize_t pktlen;
--
--      pktlen = recvfrom(fd, buf, buflen, 0, (struct sockaddr*)inaddr, &addrlen);
-+      struct msghdr msg;
-+      struct iovec io;
-+      char control[1024];
-+
-+      memset(&msg, 0, sizeof(msg));
-+      msg.msg_name = inaddr;
-+      msg.msg_namelen = sizeof(*inaddr);
-+      msg.msg_iov = &io;
-+      msg.msg_iovlen = 1;
-+      msg.msg_control = control;
-+      msg.msg_controllen = sizeof(control);
-+      io.iov_base = buf;
-+      io.iov_len = buflen;
-+
-+      pktlen = recvmsg(fd, &msg, 0);
-       if (pktlen == -1) {
-               log_errno(LOG_WARNING, "recvfrom");
-               return -1;
-       }
-+      if (toaddr) {
-+              memset(toaddr, 0, sizeof(*toaddr));
-+              for (struct cmsghdr* cmsg = CMSG_FIRSTHDR(&msg); cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg)) {
-+                      if (
-+                              cmsg->cmsg_level == SOL_IP &&
-+                              cmsg->cmsg_type == IP_ORIGDSTADDR &&
-+                              cmsg->cmsg_len >= CMSG_LEN(sizeof(*toaddr))
-+                      ) {
-+                              struct sockaddr_in* cmsgaddr = (struct sockaddr_in*)CMSG_DATA(cmsg);
-+                              char buf[RED_INET_ADDRSTRLEN];
-+                              log_error(LOG_DEBUG, "IP_ORIGDSTADDR: %s", red_inet_ntop(cmsgaddr, buf, sizeof(buf)));
-+                              memcpy(toaddr, cmsgaddr, sizeof(*toaddr));
-+                      }
-+                      else {
-+                              log_error(LOG_WARNING, "unexepcted cmsg (level,type) = (%d,%d)",
-+                                      cmsg->cmsg_level, cmsg->cmsg_type);
-+                      }
-+              }
-+              if (toaddr->sin_family != AF_INET) {
-+                      log_error(LOG_WARNING, "(SOL_IP, IP_ORIGDSTADDR) not found");
-+                      return -1;
-+              }
-+      }
-+
-       if (addrlen != sizeof(*inaddr)) {
-               log_error(LOG_WARNING, "unexpected address length %u instead of %zu", addrlen, sizeof(*inaddr));
-               return -1;
-diff --git a/utils.h b/utils.h
-index d3af00f..c2277e9 100644
---- a/utils.h
-+++ b/utils.h
-@@ -44,7 +44,7 @@ char *redsocks_evbuffer_readline(struct evbuffer *buf);
- struct bufferevent* red_connect_relay(struct sockaddr_in *addr, evbuffercb writecb, everrorcb errorcb, void *cbarg);
- int red_socket_geterrno(struct bufferevent *buffev);
- int red_is_socket_connected_ok(struct bufferevent *buffev);
--int red_recv_udp_pkt(int fd, char *buf, size_t buflen, struct sockaddr_in *inaddr);
-+int red_recv_udp_pkt(int fd, char *buf, size_t buflen, struct sockaddr_in *fromaddr, struct sockaddr_in *toaddr);
- int fcntl_nonblock(int fd);
--- 
-1.9.1
-
diff --git a/net/redsocks/patches/0004-Fix-transposition-of-memset-parameters.patch b/net/redsocks/patches/0004-Fix-transposition-of-memset-parameters.patch
deleted file mode 100644 (file)
index cb6fa1e..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-From b60b492602448b59aea194afd4991910d3613e5c Mon Sep 17 00:00:00 2001
-From: Cody Schafer <jmesmon@gmail.com>
-Date: Tue, 24 Apr 2012 04:33:13 -0500
-Subject: [PATCH 04/12] Fix transposition of memset parameters.
-
----
- utils.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/utils.c b/utils.c
-index afdeea8..31c6894 100644
---- a/utils.c
-+++ b/utils.c
-@@ -222,7 +222,7 @@ char *red_inet_ntop(const struct sockaddr_in* sa, char* buffer, size_t buffer_si
-       assert(buffer_size >= sizeof(placeholder));
--      memset(buffer, buffer_size, 0);
-+      memset(buffer, 0, buffer_size);
-       if (sa->sin_family == AF_INET) {
-               retval = inet_ntop(AF_INET, &sa->sin_addr, buffer, buffer_size);
-               port = ((struct sockaddr_in*)sa)->sin_port;
--- 
-1.9.1
-
diff --git a/net/redsocks/patches/0005-Fix-compilation-on-Ubuntu-10.04-LTS-and-hopefully-De.patch b/net/redsocks/patches/0005-Fix-compilation-on-Ubuntu-10.04-LTS-and-hopefully-De.patch
deleted file mode 100644 (file)
index f0f09aa..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-From 18e2b5ed1ffb3e7c5dfec8ff41b3027163f680ed Mon Sep 17 00:00:00 2001
-From: Leonid Evdokimov <leon@darkk.net.ru>
-Date: Wed, 12 Sep 2012 02:05:39 +0400
-Subject: [PATCH 09/12] Fix compilation on Ubuntu 10.04 LTS and (hopefully)
- Debian squeeze[1]
-
-fixes #28, fixes #22, fixes #24
-[1] current "stable" release
----
- libc-compat.h     | 25 +++++++++++++++++++++++++
- libevent-compat.h | 11 +++++++++++
- redsocks.c        |  1 +
- redudp.c          |  1 +
- utils.c           |  1 +
- 5 files changed, 39 insertions(+)
- create mode 100644 libc-compat.h
- create mode 100644 libevent-compat.h
-
-diff --git a/libc-compat.h b/libc-compat.h
-new file mode 100644
-index 0000000..adcf63b
---- /dev/null
-+++ b/libc-compat.h
-@@ -0,0 +1,25 @@
-+#ifndef UUID_67C91670_FCCB_4855_BDF7_609F1EECB8B4
-+#define UUID_67C91670_FCCB_4855_BDF7_609F1EECB8B4
-+
-+/* all these definitions, are included into bits/in.h from libc6-dev 2.15-0ubuntu10
-+ * from Ubuntu 12.04 and is not included into libc6-dev 2.11.1-0ubuntu7.10 from
-+ * Ubuntu 10.04.
-+ * linux/in.h is not included directly because of lots of redefinitions,
-+ * extracting single value from linux/in.h is not done because it looks like
-+ * autotools reinvention */
-+#ifndef IP_ORIGDSTADDR
-+#   warning Using hardcoded value for IP_ORIGDSTADDR as libc headers do not define it.
-+#   define IP_ORIGDSTADDR 20
-+#endif
-+
-+#ifndef IP_RECVORIGDSTADDR
-+#   warning Using hardcoded value for IP_RECVORIGDSTADDR as libc headers do not define it.
-+#   define IP_RECVORIGDSTADDR IP_ORIGDSTADDR
-+#endif
-+
-+#ifndef IP_TRANSPARENT
-+#   warning Using hardcoded value for IP_TRANSPARENT as libc headers do not define it.
-+#   define IP_TRANSPARENT 19
-+#endif
-+
-+#endif // 67C91670_FCCB_4855_BDF7_609F1EECB8B4
-diff --git a/libevent-compat.h b/libevent-compat.h
-new file mode 100644
-index 0000000..a7f1ca1
---- /dev/null
-+++ b/libevent-compat.h
-@@ -0,0 +1,11 @@
-+#ifndef UUID_FC148CFA_5ECC_488E_8A62_CD39406C9F1E
-+#define UUID_FC148CFA_5ECC_488E_8A62_CD39406C9F1E
-+
-+/* evutil_socket_t is macros in libevent-2.0, not typedef, libevent-1.4 is
-+ * still supported because of Ubuntu 10.04 LTS */
-+#ifndef evutil_socket_t
-+#   warning Using hardcoded value for evutil_socket_t as libevent headers do not define it.
-+#   define evutil_socket_t int
-+#endif
-+
-+#endif // FC148CFA_5ECC_488E_8A62_CD39406C9F1E
-diff --git a/redsocks.c b/redsocks.c
-index ba5eab2..878576f 100644
---- a/redsocks.c
-+++ b/redsocks.c
-@@ -33,6 +33,7 @@
- #include "base.h"
- #include "redsocks.h"
- #include "utils.h"
-+#include "libevent-compat.h"
- #define REDSOCKS_RELAY_HALFBUFF  4096
-diff --git a/redudp.c b/redudp.c
-index 262af3e..05460dc 100644
---- a/redudp.c
-+++ b/redudp.c
-@@ -32,6 +32,7 @@
- #include "main.h"
- #include "redsocks.h"
- #include "redudp.h"
-+#include "libc-compat.h"
- #define redudp_log_error(client, prio, msg...) \
-       redsocks_log_write_plain(__FILE__, __LINE__, __func__, 0, &(client)->clientaddr, get_destaddr(client), prio, ## msg)
-diff --git a/utils.c b/utils.c
-index 31c6894..7de3969 100644
---- a/utils.c
-+++ b/utils.c
-@@ -25,6 +25,7 @@
- #include "log.h"
- #include "utils.h"
- #include "redsocks.h" // for redsocks_close
-+#include "libc-compat.h"
- int red_recv_udp_pkt(int fd, char *buf, size_t buflen, struct sockaddr_in *inaddr, struct sockaddr_in *toaddr)
- {
--- 
-1.9.1
-
index 1994befa6caac12cb1adafe6a286709a54083263..987085f0ddaaaa407a2988a5bb2c7680d25c57d0 100644 (file)
@@ -6,7 +6,7 @@ Forwared: no
 Last-Update: 2013-04-23
 --- a/main.c
 +++ b/main.c
-@@ -39,7 +39,7 @@
+@@ -39,7 +39,7 @@ app_subsys *subsystems[] = {
        &dnstc_subsys,
  };
  
index f4419d3dbb26309065df9a766eabc27ad30daa70..f9fa04758c39c1f74cca5385ebe75b2d0be7277d 100644 (file)
@@ -8,12 +8,12 @@
 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
diff --git a/net/rsync/patches/000-CVE-2014-9512.patch b/net/rsync/patches/000-CVE-2014-9512.patch
deleted file mode 100644 (file)
index aaefbad..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-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();
-       }
index 3b708271e9a340fa78d50f3e8549461d12bccd04..6add57c42da3376d56808e44a2956a464d39dff3 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=rsyslog
-PKG_VERSION:=8.14.0
+PKG_VERSION:=8.16.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:=52916045c07ebbd3ee77c39e8465bc4d
 
 PKG_MAINTAINER:=Dov Murik <dmurik@us.ibm.com>
 PKG_LICENSE:=GPL-3.0
index e8af27a9ef57cbb2ce5d9a559a2e1880d3f84bb5..4771e8d1492999baa4c75804cdff24527abee94d 100644 (file)
@@ -8,14 +8,14 @@
 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
 
index a71a6a96a3a9553f973c287b804be6dad40e8886..ee11783b6c4bf03b370e8cc28f81f75f22f44fd2 100644 (file)
@@ -8,8 +8,8 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=sqm-scripts
-PKG_SOURCE_VERSION:=b761c3d39fadd6b868e9417595ba4260c047bcd2
-PKG_VERSION:=1.0.4
+PKG_SOURCE_VERSION:=f2be2cc07c9902c3031f799ed4e133964e8c608f
+PKG_VERSION:=1.0.6
 PKG_RELEASE:=1
 PKG_LICENSE:=GPLv2
 
@@ -24,7 +24,7 @@ include $(INCLUDE_DIR)/package.mk
 define Package/sqm-scripts
   SECTION:=net
   CATEGORY:=Base system
-  DEPENDS:=+tc +kmod-sched +kmod-ifb iptables +ip \
+  DEPENDS:=+tc +kmod-sched +kmod-ifb +iptables \
        +iptables-mod-ipopt +iptables-mod-conntrack-extra
   TITLE:=SQM Scripts (QoS)
   PKGARCH:=all
index 38c1cd703284d49944519c0063b71ac1a458d645..9796b46e7c5cd41e9359e6a6d2a5b6fce2526e31 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=squid
-PKG_VERSION:=3.5.9
+PKG_VERSION:=3.5.12
 PKG_RELEASE:=1
 
 PKG_LICENSE:=GPL-2.0
@@ -16,11 +16,14 @@ PKG_MAINTAINER:=Luka Perkov <luka@openwrt.org>
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=http://www.squid-cache.org/Versions/v3/3.5/
-PKG_MD5SUM:=fe7306a90a0ba2fc906e9a8c741cc8ea
+PKG_MD5SUM:=50016bf6e2d3a3a186a6c7236d251f63
 
 PKG_BUILD_PARALLEL:=1
 PKG_INSTALL:=1
 
+# uses libcom_err.la
+PKG_BUILD_DEP:=libext2fs
+
 include $(INCLUDE_DIR)/package.mk
 
 define Package/squid/Default
index 48cdb79df0c5b8a431fc747a0a76cb59b6c551b4..b277e22c5cc1127f1e51020b4e80ebb65007502e 100644 (file)
@@ -1,16 +1,15 @@
 #
-# Copyright (C) 2010-2014 OpenWrt.org
+# Copyright (C) 2010-2015 OpenWrt.org
 # Copyright (C) 2010 segal.di.ubi.pt
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
-#
 
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=sshtunnel
-PKG_VERSION:=3
-PKG_RELEASE:=3
+PKG_VERSION:=4
+PKG_RELEASE:=1
 PKG_LICENSE:=GPL-2.0+
 
 PKG_MAINTAINER:=Nuno Goncalves <nunojpg@gmail.com>
@@ -39,8 +38,6 @@ endef
 define Package/sshtunnel/install
        $(INSTALL_DIR) $(1)/etc/init.d
        $(INSTALL_BIN) ./files/sshtunnel.init $(1)/etc/init.d/sshtunnel
-       $(INSTALL_DIR) $(1)/usr/bin
-       $(INSTALL_BIN) ./files/sshtunnel.sh $(1)/usr/bin/
        $(INSTALL_DIR) $(1)/etc/config
        $(INSTALL_DATA) ./files/uci_sshtunnel $(1)/etc/config/sshtunnel
 endef
index 482ec6778416fb2cafb7da9f72e74c7e3af52b4e..a6d9aa78cac7bae8aeb460de5c356e54d8cf2032 100644 (file)
@@ -1,18 +1,30 @@
 #!/bin/sh /etc/rc.common
+#
+# Copyright (C) 2010-2015 OpenWrt.org
+# Copyright (C) 2010 segal.di.ubi.pt
+#
 
 START=99
 STOP=01
+USE_PROCD=1
 
-PIDFILE="/tmp/run/sshtunnel"
+PROG=/usr/bin/ssh
 
+_log() {
+       logger -p daemon.info -t sshtunnel "$@"
+}
+
+_err() {
+       logger -p daemon.err -t sshtunnel "$@"
+}
 
 append_params() {
-       local p; local v; local args;
+       local p v args
        for p in $*; do
                eval "v=\$$p"
                [ -n "$v" ] && args="$args -o $p=$v"
        done
-       
+
        ARGS_options="${args# *}"
 }
 
@@ -24,179 +36,178 @@ append_string() {
        eval "$varname=\$new"
 }
 
+validate_server_section() {
+       uci_validate_section sshtunnel server "$1" \
+               'user:string(1)' \
+               'hostname:host' \
+               'port:port' \
+               'retrydelay:min(1):60' \
+               'PKCS11Provider:file' \
+               'CheckHostIP:or("yes", "no")' \
+               'Compression:or("yes", "no")' \
+               'CompressionLevel:range(1,9)' \
+               'IdentityFile:file' \
+               'LogLevel:or("QUIET", "FATAL", "ERROR", "INFO", "VERBOSE", "DEBUG", "DEBUG1", "DEBUG2", "DEBUG3"):INFO' \
+               'ServerAliveCountMax:min(1)' \
+               'ServerAliveInterval:min(1)' \
+               'StrictHostKeyChecking:or("yes", "no")' \
+               'TCPKeepAlive:or("yes", "no")' \
+               'VerifyHostKeyDNS:or("yes", "no")'
+}
+
+validate_tunnelR_section() {
+       uci_validate_section sshtunnel tunnelR "$1" \
+               'remoteaddress:or(host, "*"):*' \
+               'remoteport:port' \
+               'localaddress:host' \
+               'localport:port'
+}
+
+validate_tunnelL_section() {
+       uci_validate_section sshtunnel tunnelL "$1" \
+               'remoteaddress:host' \
+               'remoteport:port' \
+               'localaddress:or(host, "*"):*' \
+               'localport:port'
+}
+
+validate_tunnelD_section() {
+       uci_validate_section sshtunnel tunnelD "$1" \
+               'localaddress:or(host, "*"):*' \
+               'localport:port'
+}
+
+validate_tunnelW_section() {
+       uci_validate_section sshtunnel tunnelW "$1" \
+               'vpntype:or("ethernet", "point-to-point"):point-to-point' \
+               'localdev:or("any", min(1))' \
+               'remotedev:or("any", min(1))'
+}
+
 load_tunnelR() {
-       config_get section_server $1 server
-       [ "$server" = "$section_server" ] || return 0 # continue to read next section if this is not for the current server
-       let count++ # count nr of valid sections to make sure there are at least one
-
-       config_get remoteaddress $1 remoteaddress "*"
-       config_get remoteport   $1 remoteport
-       config_get localaddress $1 localaddress
-       config_get localport    $1 localport
-       
-        [ "$remoteport" -gt 0 ] || append_string "error" "[tunnelR: $1]remoteport must be a positive integer" "; "
-        [ "$localport" -gt 0 ]         || append_string "error" "[tunnelR: $1]localport must be a positive integer" "; "
-       [ -n "$error" ] && return 1
+       config_get section_server "$1" "server"
+
+       # continue to read next section if this is not for the current server
+       [ "$server" = "$section_server" ] || return 0
+
+       # validate and load this remote tunnel config
+       local remoteaddress remoteport localaddress localport
+       validate_tunnelR_section "$1" || { _err "tunnelR ${1}: validation failed"; return 1; }
+
+       [ -n "$remoteport" -a -n "$localport" -a -n "$remoteaddress" ] || { _err "tunnelR ${1}: missing required options"; return 1; }
 
+       # count nr of valid sections to make sure there are at least one
+       let count++
+
+       _log "tunnelR at ${server}: -R $remoteaddress:$remoteport:$localaddress:$localport"
        append_string "ARGS_tunnels" "-R $remoteaddress:$remoteport:$localaddress:$localport"
 }
 
 load_tunnelL() {
-       config_get section_server $1 server
-       [ "$server" = "$section_server" ] || return 0 # continue to read next section if this is not for the current server
-       let count++ # count nr of valid sections to make sure there are at least one
+       config_get section_server "$1" "server"
+
+       # continue to read next section if this is not for the current server
+       [ "$server" = "$section_server" ] || return 0
 
-       config_get localaddress $1 localaddress "*"     
-       config_get localport    $1 localport
-       config_get remoteaddress $1 remoteaddress
-       config_get remoteport   $1 remoteport
+       # validate and load this remote tunnel config
+       local remoteaddress remoteport localaddress localport
+       validate_tunnelL_section "$1" || { _err "tunnelL ${1}: validation failed"; return 1; }
 
-        [ "$remoteport" -gt 0 ] || append_string "error" "[tunnelL: $1]remoteport must be a positive integer" "; "
-        [ "$localport" -gt 0 ]         || append_string "error" "[tunnelL: $1]localport must be a positive integer" "; "
-       [ -n "$error" ] && return 1
+       [ -n "$remoteport" -a -n "$localport" -a -n "$remoteaddress" ] || { _err "tunnelL ${1}: missing required options"; return 1; }
 
+       # count nr of valid sections to make sure there are at least one
+       let count++
+
+       _log "tunnelL at ${server}: -L $localaddress:$localport:$remoteaddress:$remoteport"
        append_string "ARGS_tunnels" "-L $localaddress:$localport:$remoteaddress:$remoteport"
 }
 
 load_tunnelD() {
-       config_get section_server $1 server
-       [ "$server" = "$section_server" ] || return 0 # continue to read next section if this is not for the current server
-       let count++ # count nr of valid sections to make sure there are at least one
+       config_get section_server "$1" "server"
+
+       # continue to read next section if this is not for the current server
+       [ "$server" = "$section_server" ] || return 0
 
-       config_get localaddress $1 localaddress "*"
-       config_get localport    $1 localport
+       # validate and load this remote tunnel config
+       local localaddress localport
+       validate_tunnelD_section "$1" || { _err "tunnelD ${1}: validation failed"; return 1; }
 
-        [ "$localport" -gt 0 ]         || append_string "error" "[tunnelD: $1]localport must be a positive integer" "; "
-       [ -n "$error" ] && return 1
+       [ -n "$localport" ] || { _err "tunnelD ${1}: missing localport"; return 1; }
 
+       # count nr of valid sections to make sure there are at least one
+       let count++
+
+       _log "proxy via ${server}: -D $localaddress:$localport"
        append_string "ARGS_tunnels" "-D $localaddress:$localport"
 }
 
 load_tunnelW() {
-        config_get section_server $1 server
-        [ "$server" = "$section_server" ] || return 0 # continue to read next section if this is not for the current server
-        let count++ # count nr of valid sections to make sure there are at least one
+       config_get section_server "$1" "server"
+
+       # continue to read next section if this is not for the current server
+       [ "$server" = "$section_server" ] || return 0
+
+       # validate and load this remote tunnel config
+       local localdev remotedev vpntype
+       validate_tunnelW_section "$1" || { _err "tunnelW ${1}: validation failed"; return 1; }
+
+       [ -n "$vpntype" -a -n "$localdev" -a -n "$remotedev" ] || { _err "tunnelW $1: missing or bad options"; return 1; }
 
-        config_get localdev     $1 localdev "*"
-        config_get remotedev    $1 remotedev "*"
-        config_get vpntype      $1 vpntype "*"
+       [ "$user" == "root" ] || { _err "tunnelW ${1}: root is required for tun"; return 1; }
 
-        [ "$vpntype" == "ethernet" ] || [ "$vpntype" == "point-to-point" ] || append_string "error" "[tunnelW: $1] vpntype must be \"ethernet\" (tap) or \"pointopoint\" (tun)" "; "
-        [ "$localdev" == "any" ] || [ "$localdev" -ge 0 ] || append_string "error" "[tunnelW: $1] localdev must be an integer or \"any\"" "; "
-        [ "$remotedev" == "any" ] || [ "$remotedev" -ge 0 ] || append_string "error" "[tunnelW: $1] remotedev must be an integer or \"any\"" "; "
-        [ "$user" == "root" ] || logger -p user.warn -t "sshtunnel" "warning: root is required unless the tunnel device has been created manually"
-        [ -n "$error" ] && return 1
+       # count nr of valid sections to make sure there are at least one
+       let count++
 
-        append_string "ARGS_tunnels" "-w $localdev:$remotedev -o Tunnel=$vpntype"
+       _log "tunnelW to ${server}: -w $localdev:$remotedev -o Tunnel=$vpntype"
+       append_string "ARGS_tunnels" "-w $localdev:$remotedev -o Tunnel=$vpntype"
 }
 
 load_server() {
        server="$1"
+       local user hostname port retrydelay PKCS11Provider CheckHostIP Compression \
+               CompressionLevel IdentityFile LogLevel ServerAliveCountMax \
+               ServerAliveInterval StrictHostKeyChecking TCPKeepAlive VerifyHostKeyDNS
 
-       config_get user         $1 user
-       config_get hostname     $1 hostname
-       config_get port         $1 port         "22"
-       config_get retrydelay   $1 retrydelay   "60"
-       config_get PKCS11Provider       $1 PKCS11Provider
-       config_get CheckHostIP          $1 CheckHostIP
-       config_get Compression          $1 Compression
-       config_get CompressionLevel     $1 CompressionLevel
-       config_get IdentityFile         $1 IdentityFile
-       config_get LogLevel             $1 LogLevel
-       config_get ServerAliveCountMax  $1 ServerAliveCountMax
-       config_get ServerAliveInterval  $1 ServerAliveInterval
-       config_get StrictHostKeyChecking $1 StrictHostKeyChecking
-       config_get TCPKeepAlive         $1 TCPKeepAlive
-       config_get VerifyHostKeyDNS     $1 VerifyHostKeyDNS
-               
-       error=""
-        [ -n "$user" ] \
-               || append_string "error" "user is not set" "; "
-        [ -n "$hostname" ] \
-               || append_string "error" "hostname is not set" "; "
-        [ "$retrydelay" -ge 1 ] \
-               || append_string "error" "retrydelay must be a positive integer" "; "
-       [ -z "$PKCS11Provider" -o -f "$PKCS11Provider" ] \
-               || append_string "error" "PKCS11Provider must be a pkcs11 shared library accessible" "; "
-       [ -z "$CheckHostIP" -o "$CheckHostIP"="yes" -o "$CheckHostIP"="no" ] \
-               || append_string "error" "CheckHostIP must be 'yes' or 'no'" "; "
-       [ -z "$Compression" -o "$Compression"="yes" -o "$Compression"="no" ] \
-               || append_string "error" "Compression must be 'yes' or 'no'" "; "
-       [ -z "$CompressionLevel" ] || [ "$CompressionLevel" -ge 1 -a "$CompressionLevel" -le 9 ] \
-               || append_string "error" "CompressionLevel must be between 1 and 9" "; "
-       [ -z "$IdentityFile" -o -f "$IdentityFile" ] \
-               || append_string "error" "IdentityFile $IdentityFile not accessible" "; "       
-       [ -z "$LogLevel" -o "$LogLevel" = "QUIET" -o "$LogLevel" = "FATAL" -o "$LogLevel" = "ERROR" -o \
-               "$LogLevel" = "INFO" -o "$LogLevel" = "VERBOSE" -o "$LogLevel" = "DEBUG" -o \
-               "$LogLevel" = "DEBUG1" -o "$LogLevel" = "DEBUG2" -o "$LogLevel" = "DEBUG3" ] \
-               || append_string "error" "LogLevel is invalid" "; "
-       [ -z "$ServerAliveCountMax" ] || [ "$ServerAliveCountMax" -ge 1 ] \
-               || append_string "error" "ServerAliveCountMax must be greater or equal than 1" "; "
-       [ -z "$ServerAliveInterval" ] || [ "$ServerAliveInterval" -ge 0 ] \
-               || append_string "error" "ServerAliveInterval must be greater or equal than 0" "; "
-       [ -z "$StrictHostKeyChecking" -o "$StrictHostKeyChecking" = "yes" -o "$StrictHostKeyChecking" = "ask" -o "$StrictHostKeyChecking" = "no" ] \
-               || append_string "error" "StrictHostKeyChecking must be 'yes', 'ask' or 'no'" "; "
-       [ -z "$TCPKeepAlive" -o "$TCPKeepAlive" = "yes" -o "$TCPKeepAlive" = "no" ] \
-               || append_string "error" "TCPKeepAlive must be 'yes' or 'no'" "; "
-       [ -z "$VerifyHostKeyDNS" -o "$VerifyHostKeyDNS" = "yes" -o "$VerifyHostKeyDNS" = "no" ] \
-               || append_string "error" "VerifyHostKeyDNS must be 'yes' or 'no'" "; "
-
-       [ -n "$error" ] && { logger -p user.err -t "sshtunnel" "tunnels to $server not started - $error"; return; }
-        
+       validate_server_section "$server" || { _err "server ${server}: validation failed"; return 1; }
 
        ARGS=""
        ARGS_options=""
-        ARGS_tunnels=""
-
+       ARGS_tunnels=""
        count=0
-        config_foreach load_tunnelR tunnelR && config_foreach load_tunnelL tunnelL && config_foreach load_tunnelD tunnelD
-       [ -n "$error" ]         && { logger -p user.err -t "sshtunnel" "tunnels to $server not started - $error"; return; }
-       [ "$count" -eq 0 ]      && { logger -p user.err -t "sshtunnel" "tunnels to $server not started - no tunnels defined"; return; }
 
-       append_params CheckHostIP Compression CompressionLevel IdentityFile LogLevel PKCS11Provider ServerAliveCountMax ServerAliveInterval StrictHostKeyChecking TCPKeepAlive VerifyHostKeyDNS
+       config_foreach load_tunnelR "tunnelR"
+       config_foreach load_tunnelL "tunnelL"
+       config_foreach load_tunnelD "tunnelD"
+       config_foreach load_tunnelW "tunnelW"
+       [ "$count" -eq 0 ] && { _err "tunnels to ${server} not started - no tunnels defined"; return 1; }
+
+       append_params CheckHostIP Compression CompressionLevel IdentityFile \
+               LogLevel PKCS11Provider ServerAliveCountMax ServerAliveInterval \
+               StrictHostKeyChecking TCPKeepAlive VerifyHostKeyDNS
+
        ARGS="$ARGS_options -o ExitOnForwardFailure=yes -o BatchMode=yes -nN $ARGS_tunnels -p $port $user@$hostname"
 
-       /usr/bin/sshtunnel.sh "$ARGS" "$retrydelay" "$server" &
-       echo $! >> "${PIDFILE}.pids"
-       logger -p user.info -t "sshtunnel" "started tunnels to $server (pid=$!;retrydelay=$retrydelay)" 
-}
-
-stop() {
-        if [ -f "$PIDFILE".pids ]
-        then
-                logger -p user.info -t "sshtunnel" "stopping all tunnels"
-                
-                while read pid
-                do
-                       kill "$pid"     # kill mother process first
-
-                       [ -f "${PIDFILE}_${pid}.pid" ] && { # if ssh was running, kill it also (mother process could be in retry wait)
-                               start-stop-daemon -K -p "${PIDFILE}_${pid}.pid"
-                               rm "${PIDFILE}_${pid}.pid"
-                       }
-                       
-                       logger -p daemon.info -t "sshtunnel[$pid]" "tunnel stopped"
-                       
-               done < "${PIDFILE}.pids"
-
-               rm "${PIDFILE}.pids"
-
-                logger -p user.info -t "sshtunnel" "all tunnels stopped"
-        else
-                logger -p user.info -t "sshtunnel" "no tunnels running"
-        fi
-}
-
-start() {
-        [ -f "${PIDFILE}.pids" ] && stop
-        
-       config_load sshtunnel
-       if [ -n "$(uci show sshtunnel.@server[0])" ] # at least one server section exists
-       then        
-               logger -p user.info -t "sshtunnel" "starting all tunnels"
-               config_foreach load_server server       
-               logger -p user.info -t "sshtunnel" "all tunnels started"        
-       else
-               logger -p user.info -t "sshtunnel" "no servers defined"
-       fi
+       procd_open_instance "$server"
+       procd_set_param command "$PROG" $ARGS
+       procd_set_param stdout 1
+       procd_set_param stderr 1
+       procd_set_param respawn 0 "$retrydelay" 1
+       procd_close_instance
+}
+
+start_service() {
+       config_load "sshtunnel"
+       config_foreach load_server "server"
+}
+
+service_triggers() {
+       procd_add_reload_trigger "sshtunnel"
+
+       procd_open_validate
+       validate_server_section
+       validate_tunnelR_section
+       validate_tunnelL_section
+       validate_tunnelD_section
+       validate_tunnelW_section
+       procd_close_validate
 }
diff --git a/net/sshtunnel/files/sshtunnel.sh b/net/sshtunnel/files/sshtunnel.sh
deleted file mode 100644 (file)
index 0ff18a6..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh 
-
-PIDFILE="/tmp/run/sshtunnel"
-
-args="$1"
-retrydelay="$2"
-server="$3"
-
-while true
-do
-       logger -p daemon.info -t "sshtunnel[$$][$server]" "connection started"
-       
-       start-stop-daemon -S -p "${PIDFILE}_${$}.pid" -mx ssh -- $args &>/tmp/log/sshtunnel_$$ 
-       
-       logger -p daemon.err -t "sshtunnel[$$][$server]" < /tmp/log/sshtunnel_$$
-       rm /tmp/log/sshtunnel_$$
-       logger -p daemon.info -t "sshtunnel[$$][$server]" "ssh exited with code $?, retrying in $retrydelay seconds"
-       rm "${PIDFILE}_${$}.pid"
-
-       sleep "$retrydelay" & wait
-done
index 738b36b7500e316d7ae72597cf271ca866a81b32..d7edfeecbc838ff4f539c338ab08a5b6715c418d 100644 (file)
@@ -36,6 +36,7 @@ define Build/Compile
        $(MAKE) -C $(PKG_BUILD_DIR) \
                CC="$(TARGET_CC)" \
                CFLAGS="$(TARGET_CFLAGS)" \
+               LDFLAGS="$(TARGET_LDFLAGS)" \
                USELIBCONFIG= \
                USELIBWRAP= \
                USELIBPCRE= \
index 7c68f729a10e6280b0a86d287e877fba2d017834..6865499f008cdc3ea35a4763e2621ec6e587ba89 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=strongswan
-PKG_VERSION:=5.3.3
+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:=5a25f3d1c31a77ef44d14a2e7b3eaad0
+PKG_MD5SUM:=a2f9ea185f27e7f8413d4cd2ee61efe4
 PKG_LICENSE:=GPL-2.0+
 PKG_MAINTAINER:=Steven Barth <cyrus@openwrt.org>
 
@@ -28,6 +28,7 @@ PKG_MOD_AVAILABLE:= \
        ccm \
        cmac \
        constraints \
+       connmark \
        coupling \
        ctr \
        curl \
@@ -45,6 +46,7 @@ PKG_MOD_AVAILABLE:= \
        gcm \
        gcrypt \
        gmp \
+       gmpdh \
        ha \
        hmac \
        kernel-libipsec \
@@ -143,6 +145,7 @@ $(call Package/strongswan/Default)
        +strongswan-mod-ccm \
        +strongswan-mod-cmac \
        +strongswan-mod-constraints \
+       +strongswan-mod-connmark \
        +strongswan-mod-coupling \
        +strongswan-mod-ctr \
        +strongswan-mod-curl \
@@ -220,6 +223,7 @@ $(call Package/strongswan/Default)
        +strongswan-charon \
        +strongswan-mod-aes \
        +strongswan-mod-attr \
+       +strongswan-mod-connmark \
        +strongswan-mod-constraints \
        +strongswan-mod-des \
        +strongswan-mod-dnskey \
@@ -254,6 +258,37 @@ $(call Package/strongswan/description/Default)
  This meta-package contains only dependencies to match upstream defaults.
 endef
 
+
+define Package/strongswan-isakmp
+$(call Package/strongswan/Default)
+  TITLE+= (isakmp)
+  DEPENDS:= +strongswan \
+       +strongswan-charon \
+       +strongswan-mod-aes \
+       +strongswan-mod-des \
+       +strongswan-mod-gmpdh \
+       +strongswan-mod-hmac \
+       +strongswan-mod-kernel-netlink \
+       +strongswan-mod-md5 \
+       +strongswan-mod-nonce \
+       +strongswan-mod-pubkey \
+       +strongswan-mod-random \
+       +strongswan-mod-sha1 \
+       +strongswan-mod-socket-default \
+       +strongswan-mod-stroke \
+       +strongswan-mod-uci \
+       +strongswan-mod-updown \
+       +strongswan-utils
+endef
+
+define Package/strongswan-isakmp/description
+$(call Package/strongswan/description/Default)
+ This meta-package contains only dependencies to establish  ISAKMP /
+ IKE PSK connections, dropping other capabilities in favor of small size 
+ Can fit most routers even with 4Mb flash (after removing IPv6 support).
+endef
+
+
 define Package/strongswan-minimal
 $(call Package/strongswan/Default)
   TITLE+= (minimal)
@@ -350,6 +385,7 @@ CONFIGURE_ARGS+= \
 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
@@ -376,6 +412,10 @@ define Package/strongswan-full/install
        true
 endef
 
+define Package/strongswan-isakmp/install
+       true
+endef
+
 define Package/strongswan-minimal/install
        true
 endef
@@ -454,6 +494,7 @@ $(eval $(call BuildPackage,strongswan))
 $(eval $(call BuildPackage,strongswan-default))
 $(eval $(call BuildPackage,strongswan-full))
 $(eval $(call BuildPackage,strongswan-minimal))
+$(eval $(call BuildPackage,strongswan-isakmp))
 $(eval $(call BuildPackage,strongswan-charon))
 $(eval $(call BuildPackage,strongswan-utils))
 $(eval $(call BuildPackage,strongswan-libtls))
@@ -466,6 +507,7 @@ $(eval $(call BuildPlugin,attr-sql,SQL based config,+strongswan-charon))
 $(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,))
@@ -484,6 +526,7 @@ $(eval $(call BuildPlugin,fips-prf,FIPS PRF crypto,+strongswan-mod-sha1))
 $(eval $(call BuildPlugin,gcm,GCM AEAD wrapper crypto,))
 $(eval $(call BuildPlugin,gcrypt,libgcrypt,+PACKAGE_strongswan-mod-gcrypt:libgcrypt))
 $(eval $(call BuildPlugin,gmp,libgmp,+PACKAGE_strongswan-mod-gmp:libgmp))
+$(eval $(call BuildPlugin,gmpdh,DH-Groups; no libgmp dep,))
 $(eval $(call BuildPlugin,ha,high availability cluster,))
 $(eval $(call BuildPlugin,hmac,HMAC crypto,))
 $(eval $(call BuildPlugin,kernel-libipsec,libipsec kernel interface,))
diff --git a/net/strongswan/patches/305-minimal_dh_plugin.patch b/net/strongswan/patches/305-minimal_dh_plugin.patch
new file mode 100644 (file)
index 0000000..e060ec3
--- /dev/null
@@ -0,0 +1,221 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -135,6 +135,7 @@ ARG_DISBL_SET([fips-prf],       [disable
+ ARG_ENABL_SET([gcm],            [enables the GCM AEAD wrapper crypto plugin.])
+ ARG_ENABL_SET([gcrypt],         [enables the libgcrypt plugin.])
+ ARG_DISBL_SET([gmp],            [disable GNU MP (libgmp) based crypto implementation plugin.])
++ARG_DISBL_SET([gmpdh],          [disable GNU MP (libgmp) based static-linked crypto DH minimal implementation plugin.])
+ 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.])
+@@ -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([gmpdh],                [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])
+@@ -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)
+@@ -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/rdrand/Makefile
+       src/libstrongswan/plugins/aesni/Makefile
+       src/libstrongswan/plugins/random/Makefile
+--- a/src/libstrongswan/Makefile.am
++++ b/src/libstrongswan/Makefile.am
+@@ -303,6 +303,13 @@ if MONOLITHIC
+ endif
+ endif
++if USE_GMPDH
++  SUBDIRS += plugins/gmpdh
++if MONOLITHIC
++  libstrongswan_la_LIBADD += plugins/gmpdh/libstrongswan-gmpdh.la
++endif
++endif
++
+ if USE_RDRAND
+   SUBDIRS += plugins/rdrand
+ if MONOLITHIC
+--- /dev/null
++++ b/src/libstrongswan/plugins/gmpdh/Makefile.am
+@@ -0,0 +1,19 @@
++AM_CPPFLAGS = \
++      -I$(top_srcdir)/src/libstrongswan
++
++AM_CFLAGS = \
++      $(PLUGIN_CFLAGS)
++
++if MONOLITHIC
++noinst_LTLIBRARIES = libstrongswan-gmpdh.la
++else
++plugin_LTLIBRARIES = libstrongswan-gmpdh.la
++endif
++
++libstrongswan_gmpdh_la_SOURCES = \
++      gmpdh_plugin.h gmpdh_plugin.c \
++      ../gmp/gmp_diffie_hellman.c ../gmp/gmp_diffie_hellman.h 
++
++      
++libstrongswan_gmpdh_la_LDFLAGS = -module -avoid-version -Wl,-Bstatic -Wl,-lgmp -Wl,-Bdynamic -Wl,--as-needed
++libstrongswan_gmpdh_la_LIBADD  =
+--- /dev/null
++++ b/src/libstrongswan/plugins/gmpdh/gmpdh_plugin.c
+@@ -0,0 +1,101 @@
++/*
++ * Copyright (C) 2008-2009 Martin Willi
++ * Hochschule fuer Technik Rapperswil
++ *
++ * 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 of the License, or (at your
++ * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
++ *
++ * 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.
++ */
++
++#include "gmpdh_plugin.h"
++
++#include <library.h>
++#include "../gmp/gmp_diffie_hellman.h"
++
++typedef struct private_gmpdh_plugin_t private_gmpdh_plugin_t;
++
++/**
++ * private data of gmp_plugin
++ */
++struct private_gmpdh_plugin_t {
++
++      /**
++       * public functions
++       */
++      gmpdh_plugin_t public;
++};
++
++METHOD(plugin_t, get_name, char*,
++      private_gmpdh_plugin_t *this)
++{
++      return "gmpdh";
++}
++
++METHOD(plugin_t, get_features, int,
++      private_gmpdh_plugin_t *this, plugin_feature_t *features[])
++{
++      static plugin_feature_t f[] = {
++              /* DH groups */
++              PLUGIN_REGISTER(DH, gmp_diffie_hellman_create),
++                      PLUGIN_PROVIDE(DH, MODP_2048_BIT),
++                              PLUGIN_DEPENDS(RNG, RNG_STRONG),
++                      PLUGIN_PROVIDE(DH, MODP_2048_224),
++                              PLUGIN_DEPENDS(RNG, RNG_STRONG),
++                      PLUGIN_PROVIDE(DH, MODP_2048_256),
++                              PLUGIN_DEPENDS(RNG, RNG_STRONG),
++                      PLUGIN_PROVIDE(DH, MODP_1536_BIT),
++                              PLUGIN_DEPENDS(RNG, RNG_STRONG),
++                      PLUGIN_PROVIDE(DH, MODP_3072_BIT),
++                              PLUGIN_DEPENDS(RNG, RNG_STRONG),
++                      PLUGIN_PROVIDE(DH, MODP_4096_BIT),
++                              PLUGIN_DEPENDS(RNG, RNG_STRONG),
++                      PLUGIN_PROVIDE(DH, MODP_6144_BIT),
++                              PLUGIN_DEPENDS(RNG, RNG_STRONG),
++                      PLUGIN_PROVIDE(DH, MODP_8192_BIT),
++                              PLUGIN_DEPENDS(RNG, RNG_STRONG),
++                      PLUGIN_PROVIDE(DH, MODP_1024_BIT),
++                              PLUGIN_DEPENDS(RNG, RNG_STRONG),
++                      PLUGIN_PROVIDE(DH, MODP_1024_160),
++                              PLUGIN_DEPENDS(RNG, RNG_STRONG),
++                      PLUGIN_PROVIDE(DH, MODP_768_BIT),
++                              PLUGIN_DEPENDS(RNG, RNG_STRONG),
++              PLUGIN_REGISTER(DH, gmp_diffie_hellman_create_custom),
++                      PLUGIN_PROVIDE(DH, MODP_CUSTOM),
++                              PLUGIN_DEPENDS(RNG, RNG_STRONG),
++      };
++      *features = f;
++      return countof(f);
++}
++
++METHOD(plugin_t, destroy, void,
++      private_gmpdh_plugin_t *this)
++{
++      free(this);
++}
++
++/*
++ * see header file
++ */
++plugin_t *gmpdh_plugin_create()
++{
++      private_gmpdh_plugin_t *this;
++
++      INIT(this,
++              .public = {
++                      .plugin = {
++                              .get_name = _get_name,
++                              .get_features = _get_features,
++                              .destroy = _destroy,
++                      },
++              },
++      );
++
++      return &this->public.plugin;
++}
++
+--- /dev/null
++++ b/src/libstrongswan/plugins/gmpdh/gmpdh_plugin.h
+@@ -0,0 +1,42 @@
++/*
++ * Copyright (C) 2008 Martin Willi
++ * Hochschule fuer Technik Rapperswil
++ *
++ * 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 of the License, or (at your
++ * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
++ *
++ * 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.
++ */
++
++/**
++ * @defgroup gmpdh_p gmpdh
++ * @ingroup plugins
++ *
++ * @defgroup gmpdh_plugin gmpdh_plugin
++ * @{ @ingroup gmpdh_p
++ */
++
++#ifndef GMPDH_PLUGIN_H_
++#define GMPDH_PLUGIN_H_
++
++#include <plugins/plugin.h>
++
++typedef struct gmpdh_plugin_t gmpdh_plugin_t;
++
++/**
++ * Plugin implementing asymmetric crypto algorithms using the GNU MP library.
++ */
++struct gmpdh_plugin_t {
++
++      /**
++       * implements plugin interface
++       */
++      plugin_t plugin;
++};
++
++#endif /** GMPDH_PLUGIN_H_ @}*/
index 0ec19c3fa3229b7c4e9ce984eea4ab4c1fa656ec..93c1a88dee23972e4d9f2e20676924a5ab56f4bd 100644 (file)
@@ -30,7 +30,7 @@ define Package/tgt
   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
index 79f61af32f4404469d32bed343f00717f69ecf56..ce2135ec8d3d9721bb53ad81a43113861fbd30c7 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=tor
-PKG_VERSION:=0.2.6.10
+PKG_VERSION:=0.2.7.6
 PKG_RELEASE:=1
 
 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
 
index f859d3b031a9377e4ff7db7579a8e8b161f0fa4c..3f77ba33966e9b11ca104319e0cc39a4c0854cd6 100644 (file)
@@ -1,5 +1,5 @@
 #
-# 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.
@@ -8,12 +8,12 @@
 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
index ae346b1bdd01a6438265fb7e6bb40d5c12ac6770..baf1c574041bb74103bf8c66b0bfc658b6e8c958 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=unbound
-PKG_VERSION:=1.5.6
+PKG_VERSION:=1.5.7
 PKG_RELEASE:=1
 
 PKG_LICENSE:=BSD-3-Clause
@@ -17,7 +17,7 @@ PKG_MAINTAINER:=Michael Hanselmann <public@hansmi.ch>
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.unbound.net/downloads
-PKG_MD5SUM:=691a34abd8e9257dd65b70f28326c1f0
+PKG_MD5SUM:=a1253cbbb339dbca03404dcc58365d71
 
 PKG_BUILD_DEPENDS:=libexpat
 PKG_BUILD_PARALLEL:=1
index a795532c0f227da6665b78b8bcc8321b3be0e065..eab0df3757ca59f10178ef8d345cf5ab9d07bb05 100644 (file)
@@ -1,5 +1,5 @@
 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:
@@ -10,7 +10,7 @@ index 60ed5c8..abd85f9 100644
 +      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.
@@ -31,14 +31,14 @@ index 60ed5c8..abd85f9 100644
  
        # 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
  
@@ -54,9 +54,9 @@ index 60ed5c8..abd85f9 100644
  
        # 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
  
@@ -68,7 +68,7 @@ index 60ed5c8..abd85f9 100644
  
        # 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
@@ -80,7 +80,7 @@ index 60ed5c8..abd85f9 100644
  
        # 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
@@ -89,34 +89,34 @@ index 60ed5c8..abd85f9 100644
  
        # 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
  
@@ -124,9 +124,9 @@ index 60ed5c8..abd85f9 100644
        # 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).
@@ -135,9 +135,9 @@ index 60ed5c8..abd85f9 100644
  
        # 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
  
@@ -148,7 +148,7 @@ index 60ed5c8..abd85f9 100644
 +      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
  
index cae144e42e876fc942ceffbfb313c8bc34e3ba96..31edf91166a024ecbec903a6af414c5af93d28a0 100644 (file)
@@ -63,7 +63,8 @@ endef
 define Build/Compile/vnstat
        +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
                $(TARGET_CONFIGURE_OPTS) \
-               CFLAGS="$(TARGET_CFLAGS)"
+               CFLAGS="$(TARGET_CFLAGS)" \
+               LDFLAGS="$(TARGET_LDFLAGS)"
 endef
 
 define Build/Compile/vnstati
index 3af3695ae83fb97af8bbf133e8c767a5821489a7..910aac1a76417ae7fe8a114b92dcddf36f7ae307 100644 (file)
@@ -8,8 +8,8 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=vpnc-scripts
-PKG_VERSION:=20150116
-PKG_RELEASE:=2
+PKG_VERSION:=20151220
+PKG_RELEASE:=1
 
 include $(INCLUDE_DIR)/package.mk
 
index 48c8ed04bb9a9314c37567d8c46754f9a96b736d..5575c3cdab74128321b10c798285cff96141ab05 100755 (executable)
@@ -81,18 +81,22 @@ do_connect() {
                [[ "$addr" != "$mask" ]] && proto_add_ipv6_address "$addr" "$mask"
        fi
 
+       DNSMASQ_FILE="/tmp/dnsmasq.d/openconnect.$TUNDEV"
+       LOCAL_DOMAIN=$(uci get dhcp.@dnsmasq[0].domain)
+       rm -f $DNSMASQ_FILE
        if [ -n "$CISCO_SPLIT_DNS" ] && [ -d "/tmp/dnsmasq.d/" ];then
                SDNS=`echo $CISCO_SPLIT_DNS|sed 's/,/\n/g'`
-               DNSMASQ_FILE="/tmp/dnsmasq.d/openconnect.$TUNDEV"
-               rm -f $DNSMASQ_FILE
                echo "$SDNS" | while read i; do
+                       if [ "$i" = "$LOCAL_DOMAIN" ];then
+                               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
@@ -101,16 +105,28 @@ do_connect() {
                /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
-               [ -n "$CISCO_DEF_DOMAIN" ] && proto_add_dns_search "$CISCO_DEF_DOMAIN"
+               if [ -n "$CISCO_DEF_DOMAIN" ] && [ "$CISCO_DEF_DOMAIN" != "$LOCAL_DOMAIN" ];then
+                       if [ -n "$INTERNAL_IP4_DNS" ];then
+                               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
+                                       echo "server=/$CISCO_DEF_DOMAIN/$dns" >> $DNSMASQ_FILE
+                               done
+                       fi
+                       proto_add_dns_search "$CISCO_DEF_DOMAIN"
+               fi
        fi
 
        if [ -n "$CISCO_SPLIT_INC" ]; then
index a146a01ef737a53613c5eac591d39d63747ba529..c220877eb996cad4e1dfc118165344eb9e90af90 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=wget
-PKG_VERSION:=1.16.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:=d2e4455781a70140ae83b54ca594ce21
+PKG_MD5SUM:=b0d58ef4963690e71effba24c105ed52
 PKG_MAINTAINER:=Maxim Storchak <m.storchak@gmail.com>
 PKG_LICENSE:=GPL-3.0+
 PKG_LICENSE_FILES:=COPYING
index 91dcbfb037228b41e9e0c03334fe1c1f488d6065..5cf83c5f27641918063a56ab29648790d4ec94ce 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=xl2tpd
-PKG_VERSION:=devel-20150930
+PKG_VERSION:=devel-20151125
 PKG_RELEASE:=1
 PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
 PKG_LICENSE:=GPL-2.0
@@ -17,7 +17,7 @@ PKG_LICENSE_FILES:=LICENSE
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/xelerance/xl2tpd.git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=5faece38704ae32063abe1d25e199c03e6f44669
+PKG_SOURCE_VERSION:=e2065bf0fc22ba33001ad503c01bba01648024a8
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 
 PKG_INSTALL:=1
index 8a931adf99ce1ac394c56ee1e75e12ebe11b1eff..16660747c327a0b5812b91b0de1ba2d4d799da05 100644 (file)
@@ -25,14 +25,14 @@ proto_l2tp_init_config() {
 proto_l2tp_setup() {
        local interface="$1"
        local optfile="/tmp/l2tp/options.${interface}"
+       local ip serv_addr server host
 
-       local ip serv_addr server
-       json_get_var server server && {
-               for ip in $(resolveip -t 5 "$server"); do
-                       ( proto_add_host_dependency "$interface" "$ip" )
-                       serv_addr=1
-               done
-       }
+       json_get_var server server
+       host="${server%:*}"
+       for ip in $(resolveip -t 5 "$host"); do
+               ( proto_add_host_dependency "$interface" "$ip" )
+               serv_addr=1
+       done
        [ -n "$serv_addr" ] || {
                echo "Could not resolve server address" >&2
                sleep 5
index 1af416f96fd6817ed4f33391f13563a910845c75..f945d945a086a46f2b280e574ded65c7b85d0f0c 100644 (file)
@@ -4,8 +4,8 @@
  
  IPFLAGS?= -DIP_ALLOCATION
  
--CFLAGS+= $(DFLAGS) -O2 -fno-builtin -Wall -DSANITY $(OSFLAGS) $(IPFLAGS)
-+OFLAGS=-O2
+-CFLAGS+= $(DFLAGS) -Os -fno-builtin -Wall -DSANITY $(OSFLAGS) $(IPFLAGS)
++OFLAGS=-Os
 +CFLAGS+= $(DFLAGS) $(OFLAGS) -fno-builtin -Wall -DSANITY $(OSFLAGS) $(IPFLAGS)
  HDRS=l2tp.h avp.h misc.h control.h call.h scheduler.h file.h aaa.h md5.h
  OBJS=xl2tpd.o pty.o misc.o control.o avp.o call.o network.o avpsend.o scheduler.o file.o aaa.o md5.o
index 64a7a4f86e63e42d1ab1e963e1a8d0371906319e..00d42ccc96965aca66af7222998bf846cea37208 100644 (file)
@@ -8,13 +8,13 @@
 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
@@ -34,7 +34,7 @@ endef
 
 define Package/znc
   $(Package/znc/default)
-  DEPENDS:=+libopenssl +libpthread +libstdcpp @GCC_VERSION_4_8||GCC_VERSION_4_9
+  DEPENDS:=+libopenssl +libpthread +libstdcpp
   MENU:=1
 endef
 
@@ -277,8 +277,18 @@ CONFIGURE_VARS += \
        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,)
index 51f459f0f4703f0429acfe7604ec8e41604c5ba1..9388c6e460693c5c84a4c81e04fef1dc59de74b6 100644 (file)
@@ -8,9 +8,9 @@
 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)
@@ -28,6 +28,7 @@ PKG_LICENSE:=GPL-2.0
 PKG_LICENSE_FILES:=COPYING
 
 include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
 
 define Package/forked-daapd
 SECTION:=sound
@@ -36,7 +37,7 @@ TITLE:=iTunes (DAAP) server for Apple Remote and AirPlay
 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
index 6236acecb0f617a34cee396357dc04bb478b7066..762f62509fcaf87c65bb89ed16532b762b3edb64 100644 (file)
@@ -13,7 +13,7 @@ index 0000000..3de527b
 \ 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 @@
@@ -21,7 +21,7 @@ index 0000000..f13209c
 + *  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. 
 + *
@@ -994,7 +994,7 @@ index 0000000..f13209c
 + */
 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 @@
@@ -1002,7 +1002,7 @@ index 0000000..2b1e806
 + *  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. 
 + *
@@ -1207,7 +1207,7 @@ index 0000000..385d80b
 \ 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 @@
@@ -1215,7 +1215,7 @@ index 0000000..b72f28a
 + *  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. 
 + *
@@ -2314,7 +2314,7 @@ index 0000000..b72f28a
 + */
 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 @@
@@ -2322,7 +2322,7 @@ index 0000000..401b214
 + *  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. 
 + *
@@ -2508,7 +2508,7 @@ index 0000000..401b214
 +/* 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 @@
@@ -2516,7 +2516,7 @@ index 0000000..7a9aae9
 + *  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. 
 + *
@@ -3528,7 +3528,7 @@ index 0000000..7a9aae9
 + */
 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 @@
@@ -3536,7 +3536,7 @@ index 0000000..82ce85e
 + *  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. 
 + *
@@ -3773,7 +3773,7 @@ index 0000000..89256ff
 \ 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 @@
@@ -3781,7 +3781,7 @@ index 0000000..05b54d3
 + *  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. 
 + *
@@ -6325,7 +6325,7 @@ index 0000000..05b54d3
 + */
 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 @@
@@ -6333,7 +6333,7 @@ index 0000000..a94e317
 + *  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. 
 + *
@@ -6634,7 +6634,7 @@ index 0000000..53d8cda
 \ 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 @@
@@ -6642,7 +6642,7 @@ index 0000000..bc4245a
 + *  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. 
 + *
@@ -11507,7 +11507,7 @@ index 0000000..bc4245a
 + */
 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 @@
@@ -11515,7 +11515,7 @@ index 0000000..d93f93e
 + *  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. 
 + *
@@ -11767,15 +11767,15 @@ index 0000000..d93f93e
 +/* 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. 
 + *
@@ -12214,66 +12214,102 @@ index 0000000..c0f3e2a
 +/** 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        };
 +     
 +
 + 
@@ -12819,13 +12855,6 @@ index 0000000..c0f3e2a
 +
 +                                              }
 +                                          break;
-+                                      case INCLUDES:
-+                                      case STARTSW:
-+                                      case ENDSW:
-+                                              {
-+                                                      alt4=2;
-+                                              }
-+                                          break;
 +                                      case LESS:
 +                                      case GREATER:
 +                                      case LTE:
@@ -12834,6 +12863,13 @@ index 0000000..c0f3e2a
 +                                                      alt4=3;
 +                                              }
 +                                          break;
++                                      case INCLUDES:
++                                      case STARTSW:
++                                      case ENDSW:
++                                              {
++                                                      alt4=2;
++                                              }
++                                          break;
 +
 +                                      default:
 +                                          CONSTRUCTEX();
@@ -12848,6 +12884,12 @@ index 0000000..c0f3e2a
 +
 +                              }
 +                          break;
++                      case BEFORE:
++                      case AFTER:
++                              {
++                                      alt4=4;
++                              }
++                          break;
 +                      case EQUAL:
 +                              {
 +                                      switch ( LA(3) ) 
@@ -12868,7 +12910,7 @@ index 0000000..c0f3e2a
 +                                          EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
 +                                          EXCEPTION->message      = (void *)"";
 +                                          EXCEPTION->decisionNum  = 4;
-+                                          EXCEPTION->state        = 4;
++                                          EXCEPTION->state        = 5;
 +
 +
 +                                          goto rulecritEx;
@@ -12876,12 +12918,6 @@ index 0000000..c0f3e2a
 +
 +                              }
 +                          break;
-+                      case BEFORE:
-+                      case AFTER:
-+                              {
-+                                      alt4=4;
-+                              }
-+                          break;
 +                      case LESS:
 +                      case GREATER:
 +                      case LTE:
@@ -13221,7 +13257,7 @@ index 0000000..c0f3e2a
 +
 +                       
 +                      /* AST REWRITE
-+                       * elements          : strop, STR, FIELD
++                       * elements          : FIELD, STR, strop
 +                       * token labels      : 
 +                       * rule labels       : retval
 +                       * token list labels : 
@@ -13296,7 +13332,7 @@ index 0000000..c0f3e2a
 +
 +                       
 +                      /* AST REWRITE
-+                       * elements          : NOT, strop, STR, FIELD
++                       * elements          : STR, FIELD, strop, NOT
 +                       * token labels      : 
 +                       * rule labels       : retval
 +                       * token list labels : 
@@ -13373,7 +13409,7 @@ index 0000000..c0f3e2a
 +
 +/** 
 + * $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)
@@ -13382,9 +13418,15 @@ index 0000000..c0f3e2a
 +
 +    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
 +     */
@@ -13392,38 +13434,134 @@ index 0000000..c0f3e2a
 +
 +    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;
++
++            }
++        }
 +    }
 +    
 +
@@ -13460,24 +13598,24 @@ index 0000000..c0f3e2a
 +
 +    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;
@@ -13488,22 +13626,22 @@ index 0000000..c0f3e2a
 +
 +    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"); } 
@@ -13519,9 +13657,9 @@ index 0000000..c0f3e2a
 +        {
 +            //  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) ) 
 +            {
@@ -13531,7 +13669,7 @@ index 0000000..c0f3e2a
 +                      {
 +                      case NOT:
 +                              {
-+                                      alt6=2;
++                                      alt7=2;
 +                              }
 +                          break;
 +                      case EQUAL:
@@ -13540,7 +13678,7 @@ index 0000000..c0f3e2a
 +                      case LTE:
 +                      case GTE:
 +                              {
-+                                      alt6=1;
++                                      alt7=1;
 +                              }
 +                          break;
 +
@@ -13548,7 +13686,7 @@ index 0000000..c0f3e2a
 +                          CONSTRUCTEX();
 +                          EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
 +                          EXCEPTION->message      = (void *)"";
-+                          EXCEPTION->decisionNum  = 6;
++                          EXCEPTION->decisionNum  = 7;
 +                          EXCEPTION->state        = 1;
 +
 +
@@ -13562,28 +13700,28 @@ index 0000000..c0f3e2a
 +                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())
@@ -13591,19 +13729,19 @@ index 0000000..c0f3e2a
 +                          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 : 
@@ -13641,24 +13779,24 @@ index 0000000..c0f3e2a
 +              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())
@@ -13666,19 +13804,19 @@ index 0000000..c0f3e2a
 +                          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 : 
@@ -13755,7 +13893,7 @@ index 0000000..c0f3e2a
 +
 +/** 
 + * $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)
@@ -13764,9 +13902,17 @@ index 0000000..c0f3e2a
 +
 +    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
 +     */
@@ -13774,38 +13920,158 @@ index 0000000..c0f3e2a
 +
 +    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;
++
++            }
++        }
 +    }
 +    
 +
@@ -13842,16 +14108,16 @@ index 0000000..c0f3e2a
 +
 +    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;
@@ -13861,14 +14127,14 @@ index 0000000..c0f3e2a
 +
 +    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"); } 
@@ -13882,16 +14148,16 @@ index 0000000..c0f3e2a
 +        // 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())
@@ -13899,9 +14165,9 @@ index 0000000..c0f3e2a
 +                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())
@@ -13909,11 +14175,11 @@ index 0000000..c0f3e2a
 +                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 : 
@@ -13978,7 +14244,7 @@ index 0000000..c0f3e2a
 +
 +/** 
 + * $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)
@@ -13987,9 +14253,11 @@ index 0000000..c0f3e2a
 +
 +    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
 +     */
@@ -13997,38 +14265,86 @@ index 0000000..c0f3e2a
 +
 +    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;
 +
++            }
++        }
 +    }
 +    
 +
@@ -14065,24 +14381,24 @@ index 0000000..c0f3e2a
 +
 +    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;
@@ -14093,18 +14409,18 @@ index 0000000..c0f3e2a
 +
 +    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"); } 
@@ -14120,21 +14436,21 @@ index 0000000..c0f3e2a
 +        {
 +            //  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;
 +
@@ -14142,22 +14458,22 @@ index 0000000..c0f3e2a
 +                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())
@@ -14165,23 +14481,23 @@ index 0000000..c0f3e2a
 +                          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())
@@ -14189,9 +14505,9 @@ index 0000000..c0f3e2a
 +                          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())
@@ -14199,9 +14515,9 @@ index 0000000..c0f3e2a
 +                          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())
@@ -14209,11 +14525,11 @@ index 0000000..c0f3e2a
 +                          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 : 
@@ -14283,7 +14599,7 @@ index 0000000..c0f3e2a
 +
 +/** 
 + * $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)
@@ -14292,9 +14608,11 @@ index 0000000..c0f3e2a
 +
 +    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
 +     */
@@ -14302,38 +14620,86 @@ index 0000000..c0f3e2a
 +
 +    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;
++
++            }
++        }
 +    }
 +    
 +
@@ -14361,7 +14727,7 @@ index 0000000..c0f3e2a
 +
 +/** 
 + * $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)
@@ -14370,9 +14736,15 @@ index 0000000..c0f3e2a
 +
 +    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
 +     */
@@ -14380,38 +14752,134 @@ index 0000000..c0f3e2a
 +
 +    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;
++
++            }
++        }
 +    }
 +    
 +
@@ -14457,7 +14925,7 @@ index 0000000..c0f3e2a
 + */
 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 @@
@@ -14465,7 +14933,7 @@ index 0000000..4b3bbfe
 + *  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. 
 + *
@@ -14841,7 +15309,7 @@ index 0000000..2a66bf3
 \ 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 @@
@@ -14849,7 +15317,7 @@ index 0000000..c435f37
 + *  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. 
 + *
@@ -16008,7 +16476,7 @@ index 0000000..c435f37
 +                                                      }
 +                                                      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)
 +                                                      {
@@ -16496,7 +16964,7 @@ index 0000000..c435f37
 + */
 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 @@
@@ -16504,7 +16972,7 @@ index 0000000..322e8fd
 + *  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. 
 + *
@@ -16734,7 +17202,7 @@ index 0000000..85567d1
 \ 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 @@
@@ -16742,7 +17210,7 @@ index 0000000..9ea1a83
 + *  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. 
 + *
@@ -20908,7 +21376,7 @@ index 0000000..9ea1a83
 + */
 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 @@
@@ -20916,7 +21384,7 @@ index 0000000..9d73721
 + *  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. 
 + *
@@ -21162,7 +21630,7 @@ index 0000000..9d73721
 +/* 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 @@
@@ -21170,7 +21638,7 @@ index 0000000..afe9f99
 + *  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. 
 + *
@@ -22980,7 +23448,7 @@ index 0000000..afe9f99
 + */
 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 @@
@@ -22988,7 +23456,7 @@ index 0000000..5360136
 + *  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. 
 + *
index f0a1ef01e0bd47569b6b0028aee1cbf6c71dca34..00a1b490de7e438a5a268f1e207e44b7191c2cd6 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 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 \
@@ -73,7 +73,7 @@ endif
 
 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
index 52e2228671156ef6b20505b2b25680187201b270..3c7e5a2248a68557d61f4e1aa8d7e05a9528404a 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mpd
-PKG_VERSION:=0.19.10
-PKG_RELEASE:=2
+PKG_VERSION:=0.19.11
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=http://www.musicpd.org/download/mpd/0.19/
-PKG_MD5SUM:=da4bc3e47afd0faf9e7a67168e012102
+PKG_MD5SUM:=78935f6c464b67e19b4dc65bdb80319e
 PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
 
 PKG_LICENSE:=GPL-2.0
diff --git a/sound/mpd/patches/100-musl_gcc5_fixes.patch b/sound/mpd/patches/100-musl_gcc5_fixes.patch
new file mode 100644 (file)
index 0000000..8795cc6
--- /dev/null
@@ -0,0 +1,50 @@
+Add a patch from the Alpine Linux project to fix a musl build issue with gcc 5: 
+
+Problem has been reported upstream and closed with WONTFIX:
+http://bugs.musicpd.org/view.php?id=4387
+http://bugs.musicpd.org/view.php?id=4110
+
+however...
+
+POSIX does not permit using PTHREAD_COND_INITIALIZER except for static
+initialization, and certainly does not permit using it as a value
+
+POSIX does not specify the type of the object (it's opaque) so if
+there are any types for which their code would be invalid C++, then their
+code is invalid
+
+Volatile in the type is necessary. without that, LTO can break the code.
+
+--- a/src/notify.hxx
++++ b/src/notify.hxx
+@@ -28,7 +28,7 @@ struct notify {
+       Cond cond;
+       bool pending;
+-#if !defined(WIN32) && !defined(__NetBSD__) && !defined(__BIONIC__)
++#if defined(__GLIBC__)
+       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() {
index 2c94c262c86ac6da486a68549a1082328f230e2f..69dac9f3da46abd11d84683a56b7765fc1d04093 100644 (file)
@@ -1,6 +1,6 @@
 --- a/src/decoder/plugins/FfmpegDecoderPlugin.cxx
 +++ b/src/decoder/plugins/FfmpegDecoderPlugin.cxx
-@@ -765,6 +765,7 @@ static const char *const ffmpeg_mime_typ
+@@ -774,6 +774,7 @@ static const char *const ffmpeg_mime_typ
        "audio/qcelp",
        "audio/vorbis",
        "audio/vorbis+ogg",
index 15c51f898d3442c674f6e21dfdf1c39213b06ed0..62a4e59f73ea8d9eeab09b5c9ec0d2d3864a33c9 100644 (file)
@@ -1,6 +1,6 @@
 --- a/src/decoder/plugins/FfmpegDecoderPlugin.cxx
 +++ b/src/decoder/plugins/FfmpegDecoderPlugin.cxx
-@@ -458,6 +458,13 @@ ffmpeg_probe(Decoder *decoder, InputStre
+@@ -467,6 +467,13 @@ ffmpeg_probe(Decoder *decoder, InputStre
  
        unsigned char buffer[BUFFER_SIZE];
        size_t nbytes = decoder_read(decoder, is, buffer, BUFFER_SIZE);
index 60697c0ff85faffbdcc02f9b009843de3e97f106..8495ed2579297924c5cef018a65f20160f388171 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 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/
@@ -51,6 +51,7 @@ define Build/Configure
                --enable-shared \
                --enable-static \
                --with-cpu=generic_nofpu \
+               --with-audio=alsa \
                --with-default-audio=alsa \
        )
 endef
@@ -88,7 +89,7 @@ define Package/mpg123/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) \
                $(PKG_INSTALL_DIR)/usr/bin/mpg123{,-id3dump,-strip} \
-               $(PKG_INSTALL_DIR)/usr/bin/out123
+               $(PKG_INSTALL_DIR)/usr/bin/out123 \
                $(1)/usr/bin
 
        $(INSTALL_DIR) $(1)/usr/lib/mpg123
index d14f05620675824d054b767e9371572b8f83d91a..62836b3a09f31049e328952765dc00761163d967 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=pulseaudio
-PKG_VERSION:=7.0
+PKG_VERSION:=7.1
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=http://freedesktop.org/software/pulseaudio/releases/
-PKG_MD5SUM:=09668b660ffb32f2639cfd6fdc9d3b37
+PKG_MD5SUM:=9d0a9817b632cac8e3f3834d7eb1c99d
 PKG_LICENSE:=LGPL-2.1+
 PKG_LICENSE_FILES:=GPL LICENSE
 
index 1262b941e62f29cc8cc49d2d90a283e9e491f6cf..005d21fcaf7dcdb0f4154451795327a1f58f70ee 100644 (file)
@@ -1,7 +1,7 @@
 #!/bin/sh /etc/rc.common
 # Copyright (C) 2011 OpenWrt.org
 
-START=65
+START=99
 STOP=65
 
 USE_PROCD=1
diff --git a/utils/at/Makefile b/utils/at/Makefile
new file mode 100644 (file)
index 0000000..b9a4ef8
--- /dev/null
@@ -0,0 +1,59 @@
+#
+# 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:=at
+PKG_VERSION:=3.1.16
+PKG_RELEASE:=2
+
+PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.gz
+PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/a/at
+PKG_MD5SUM:=d05da75d9b75d93917ffb16ab48b1e19
+
+PKG_LICENSE:=GPL-2.0+ GPL-3.0+ ISC
+PKG_LICENSE_FILES:=COPYING Copyright
+PKG_MAINTAINER:=Phil Eichinger <phil@zankapfel.net>
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/at
+  SECTION:=utils
+  CATEGORY:=Utilities
+  DEPENDS:=+libelf1
+  TITLE:=Delayed job execution and batch processing
+  URL:=http://packages.debian.org/stable/at
+endef
+
+define Package/at/description
+ At and batch read shell commands from standard input storing them as a job to
+ be scheduled for execution in the future.
+endef
+
+export SENDMAIL=/bin/true
+EXTRA_CFLAGS:=-DNEED_YYWRAP -I$(PKG_BUILD_DIR) \
+       $(TARGET_LDFLAGS)
+
+CONFIGURE_ARGS+=--prefix=/usr \
+               --with-daemon_username=nobody \
+               --with-daemon_groupname=nogroup \
+               --with-jobdir=/var/spool/cron/atjobs \
+               --with-atspool=/var/spool/cron/atspool
+
+CONFIGURE_VARS += \
+       ac_cv_header_security_pam_appl_h=no
+
+define Package/at/install
+       $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/sbin $(1)/etc/init.d/
+       $(INSTALL_BIN) ./files/atd.init $(1)/etc/init.d/atd
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/at $(1)/usr/bin
+       ln -sf at $(1)/usr/bin/atq
+       ln -sf at $(1)/usr/bin/atrm
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/atd $(1)/usr/sbin
+endef
+
+$(eval $(call BuildPackage,at))
diff --git a/utils/at/files/atd.init b/utils/at/files/atd.init
new file mode 100755 (executable)
index 0000000..f293b1c
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2015 OpenWrt.org
+
+START=50
+
+USE_PROCD=1
+
+start_service() {
+       [ -d /var/spool/cron/atjobs ] || {
+               mkdir -m 0755 -p /var/spool/cron/atjobs
+               touch /var/spool/cron/atjobs/.SEQ
+               chown -R nobody:nogroup /var/spool/cron/atjobs
+       }
+       [ -d /var/spool/cron/atspool ] || {
+               mkdir -m 0755 -p /var/spool/cron/atspool
+               chown -R nobody:nogroup /var/spool/cron/atspool
+       }
+       procd_open_instance
+
+       procd_set_param command /usr/sbin/atd -f
+       procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5}
+       procd_set_param stdout 1 # forward stdout of the command to logd
+       procd_set_param stderr 1 # same for stderr
+
+       procd_close_instance
+}
diff --git a/utils/at/patches/100-remove-glibc-assumption.patch b/utils/at/patches/100-remove-glibc-assumption.patch
new file mode 100644 (file)
index 0000000..a18a007
--- /dev/null
@@ -0,0 +1,59 @@
+From 7f811d9c4ebc9444e613e251c31d6bf537a24dc1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 13 Apr 2015 16:35:30 -0700
+Subject: [PATCH] remove glibc assumption
+
+glibc time.h header has an undocumented __isleap macro
+that we are using anf musl is missing it.
+Since it is undocumented & does not appear
+on any other libc, stop using it and just define the macro in
+locally  instead.
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+[patch from: http://patchwork.openembedded.org/patch/91893/ ]
+Signed-off-by: Phil Eichinger <phil@zankapfel.net>
+---
+ parsetime.y | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/parsetime.y b/parsetime.y
+index 7005e88..324e6d3 100644
+--- a/parsetime.y
++++ b/parsetime.y
+@@ -8,6 +8,9 @@
+ #define YYDEBUG 1
++#define is_leap_year(y) \
++    ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0))
++
+ struct tm exectm;
+ static int isgmt;
+ static int yearspec;
+@@ -217,8 +220,8 @@ date            : month_name day_number
+                                mnum == 12) && dnum > 31)
+                           || ((mnum ==  4 || mnum ==  6 || mnum ==  9 ||
+                                mnum == 11) && dnum > 30)
+-                          || (mnum ==  2 && dnum > 29 &&  __isleap(ynum+1900))
+-                          || (mnum ==  2 && dnum > 28 && !__isleap(ynum+1900))
++                          || (mnum ==  2 && dnum > 29 &&  is_leap_year(ynum+1900))
++                          || (mnum ==  2 && dnum > 28 && !is_leap_year(ynum+1900))
+                          )
+                       {
+                           yyerror("Error in day of month");
+@@ -261,8 +264,8 @@ date            : month_name day_number
+                                mnum == 12) && dnum > 31)
+                           || ((mnum ==  4 || mnum ==  6 || mnum ==  9 ||
+                                mnum == 11) && dnum > 30)
+-                          || (mnum ==  2 && dnum > 29 &&  __isleap(ynum+1900))
+-                          || (mnum ==  2 && dnum > 28 && !__isleap(ynum+1900))
++                          || (mnum ==  2 && dnum > 29 &&  is_leap_year(ynum+1900))
++                          || (mnum ==  2 && dnum > 28 && !is_leap_year(ynum+1900))
+                          )
+                       {
+                           yyerror("Error in day of month");
+-- 
+2.1.4
+
diff --git a/utils/at/patches/110-getloadavg.patch b/utils/at/patches/110-getloadavg.patch
new file mode 100644 (file)
index 0000000..0faef97
--- /dev/null
@@ -0,0 +1,14 @@
+--- a/getloadavg.c
++++ b/getloadavg.c
+@@ -69,8 +69,9 @@ Boston, MA  02110-1301  USA */
+ #include <config.h>
+ #endif
+-#include "lisp.h"
+-#include "sysfile.h" /* for encapsulated open, close, read, write */
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <fcntl.h>
+ #ifndef HAVE_GETLOADAVG
index 08f37c0957fddfbe4192612091bd12f39fc7e6be..5ea0e5542c9c6326b122358c79cae315d8837fa2 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=avrdude
 PKG_VERSION:=6.1
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://download.savannah.gnu.org/releases/avrdude
@@ -23,6 +23,7 @@ PKG_FIXUP:=autoreconf
 PKG_INSTALL:=1
 
 include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
 
 define Package/avrdude
   SECTION:=utils
index 6cbace921c468520d7035bf86a05c510852a1ecf..ad5fde4daa0de144730893ad13dc57d6aa80cce9 100644 (file)
@@ -82,7 +82,7 @@ CONFIGURE_ARGS += \
         ac_cv_file__usr_local_pgsql_include=no
 endif
 
-EXTRA_CFLAGS+= $(TARGET_CPPFLAGS)
+EXTRA_CFLAGS+= $(TARGET_CPPFLAGS) -std=gnu89
 EXTRA_LDFLAGS+= $(TARGET_LDFLAGS) -Wl,-rpath-link,$(STAGING_DIR)/usr/lib
 
 define Package/bandwidthd/install
index 6483daa2c00b97f7ca7927cea5d6ec88768229a6..38d9cb165cea9a04bc751c692945e10d1c52e2c6 100644 (file)
@@ -1,5 +1,5 @@
 #!/bin/sh /etc/rc.common
-# Copyright (C) 2008-2011 OpenWrt.org
+# Copyright (C) 2008-2015 OpenWrt.org
 
 START=99
 
diff --git a/utils/bonnie++/Makefile b/utils/bonnie++/Makefile
new file mode 100644 (file)
index 0000000..0008cc2
--- /dev/null
@@ -0,0 +1,53 @@
+#
+# 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))
diff --git a/utils/bonnie++/patches/001-cross_compile_fix.patch b/utils/bonnie++/patches/001-cross_compile_fix.patch
new file mode 100644 (file)
index 0000000..0379fec
--- /dev/null
@@ -0,0 +1,38 @@
+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
diff --git a/utils/bonnie++/patches/002-add-verbose-error-messages.patch b/utils/bonnie++/patches/002-add-verbose-error-messages.patch
new file mode 100644 (file)
index 0000000..ccec8e8
--- /dev/null
@@ -0,0 +1,47 @@
+--- 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());
index 12513e15dce5dc86b8df91673a49ed9135c914d1..49ad351168f52b5f190bb69c1da3cfa0c06d5e04 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=btrfs-progs
 PKG_VERSION:=3.19.1
-PKG_RELEASE:=3
+PKG_RELEASE:=4
 
 PKG_SOURCE:=$(PKG_NAME)-v$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@KERNEL/linux/kernel/people/kdave/btrfs-progs/
diff --git a/utils/btrfs-progs/patches/001-fix-xattr-h-include-location.patch b/utils/btrfs-progs/patches/001-fix-xattr-h-include-location.patch
deleted file mode 100644 (file)
index aff5585..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-Index: btrfs-progs-v3.19.1/mkfs.c
-===================================================================
---- btrfs-progs-v3.19.1.orig/mkfs.c
-+++ btrfs-progs-v3.19.1/mkfs.c
-@@ -31,7 +31,7 @@
- #include <getopt.h>
- #include <uuid/uuid.h>
- #include <ctype.h>
--#include <sys/xattr.h>
-+#include <attr/xattr.h>
- #include <limits.h>
- #include <linux/limits.h>
- #include <blkid/blkid.h>
-Index: btrfs-progs-v3.19.1/props.c
-===================================================================
---- btrfs-progs-v3.19.1.orig/props.c
-+++ btrfs-progs-v3.19.1/props.c
-@@ -17,7 +17,7 @@
- #include <sys/stat.h>
- #include <sys/ioctl.h>
- #include <sys/types.h>
--#include <sys/xattr.h>
-+#include <attr/xattr.h>
- #include <fcntl.h>
- #include <unistd.h>
-Index: btrfs-progs-v3.19.1/cmds-receive.c
-===================================================================
---- btrfs-progs-v3.19.1.orig/cmds-receive.c
-+++ btrfs-progs-v3.19.1/cmds-receive.c
-@@ -34,7 +34,7 @@
- #include <sys/ioctl.h>
- #include <sys/time.h>
- #include <sys/types.h>
--#include <sys/xattr.h>
-+#include <attr/xattr.h>
- #include <uuid/uuid.h>
- #include "ctree.h"
-Index: btrfs-progs-v3.19.1/cmds-restore.c
-===================================================================
---- btrfs-progs-v3.19.1.orig/cmds-restore.c
-+++ btrfs-progs-v3.19.1/cmds-restore.c
-@@ -32,7 +32,7 @@
- #include <regex.h>
- #include <getopt.h>
- #include <sys/types.h>
--#include <sys/xattr.h>
-+#include <attr/xattr.h>
- #include "ctree.h"
- #include "disk-io.h"
-Index: btrfs-progs-v3.19.1/Makefile.in
-===================================================================
---- btrfs-progs-v3.19.1.orig/Makefile.in
-+++ btrfs-progs-v3.19.1/Makefile.in
-@@ -21,7 +21,7 @@ CFLAGS = @CFLAGS@ \
- LDFLAGS = @LDFLAGS@ \
-         -rdynamic
--LIBS = @UUID_LIBS@ @BLKID_LIBS@ @ZLIB_LIBS@ @LZO2_LIBS@ -L. -pthread
-+LIBS = @ATTR_LIBS@ @UUID_LIBS@ @BLKID_LIBS@ @ZLIB_LIBS@ @LZO2_LIBS@ -L. -pthread
- LIBBTRFS_LIBS = $(LIBS)
- # Static compilation flags
-Index: btrfs-progs-v3.19.1/configure.ac
-===================================================================
---- btrfs-progs-v3.19.1.orig/configure.ac
-+++ btrfs-progs-v3.19.1/configure.ac
-@@ -115,6 +115,9 @@ dnl
- dnl The default PKG_CHECK_MODULES() action-if-not-found is end the
- dnl execution with error. The static libs are optional.
-+PKG_CHECK_MODULES(ATTR, [libattr])
-+PKG_STATIC(BLKID_LIBS_STATIC, [libattr])
-+
- PKG_CHECK_MODULES(BLKID, [blkid])
- PKG_STATIC(BLKID_LIBS_STATIC, [blkid])
index 67d670372cdb5d5cb4b5191e43f1a958533d5f79..9b6368f755789aac904539a67a72eee007827592 100644 (file)
@@ -8,12 +8,12 @@
 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
index 280c868b94a4e0b06301d6147bf8d4c8c6d0edd6..f92e17a4a7078f13acae8cad1c8becbbe1884c3e 100644 (file)
@@ -60,7 +60,6 @@ COLLECTD_PLUGINS_DISABLED:= \
        notify_desktop \
        notify_email \
        numa \
-       nut \
        openldap \
        openvz \
        oracle \
@@ -126,6 +125,7 @@ COLLECTD_PLUGINS_SELECTED:= \
        network \
        nginx \
        ntpd \
+       nut \
        olsrd \
        onewire \
        openvpn \
@@ -185,7 +185,7 @@ CONFIGURE_ARGS+= \
        --disable-debug \
        --enable-daemon \
        --with-nan-emulation \
-       --with-perl-bindings= \
+       --without-perl-bindings \
        --without-libgcrypt
 
 CONFIGURE_VARS+= \
@@ -320,7 +320,7 @@ $(eval $(call BuildPlugin,netlink,netlink input,netlink,+PACKAGE_collectd-mod-ne
 $(eval $(call BuildPlugin,network,network input/output,network))
 $(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))
+$(eval $(call BuildPlugin,nut,UPS monitoring input,nut,+PACKAGE_collectd-mod-nut:nut))
 $(eval $(call BuildPlugin,olsrd,OLSRd status input,olsrd,))
 $(eval $(call BuildPlugin,onewire,onewire sensor input,onewire,+PACKAGE_collectd-mod-onewire:libow-capi @BROKEN))
 $(eval $(call BuildPlugin,openvpn,OpenVPN traffic/compression input,openvpn,))
index 507cf4f5f9ef74fd22cda552997e9ebf059dc317..a304472d20be8ecddf776786f66f6d4afaf10075 100644 (file)
@@ -10,12 +10,12 @@ include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=cryptodev-linux
-PKG_VERSION:=1.7
-PKG_RELEASE:=2
+PKG_VERSION:=1.8
+PKG_RELEASE:=1
 
 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)
 
diff --git a/utils/cryptodev-linux/patches/001-no-get-unused-fd.patch b/utils/cryptodev-linux/patches/001-no-get-unused-fd.patch
deleted file mode 100644 (file)
index e3308bb..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-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);
index fb7fc1211ba6b1a63432be886e3bc2e34af1a948..459d53da87ffbbae8682a193dd4aabac7e26b246 100644 (file)
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=cryptsetup
-PKG_VERSION:=1.6.7
+PKG_VERSION:=1.7.0
 PKG_RELEASE:=1
 PKG_LICENSE:=GPL-2.0+ LGPL-2.1+
 PKG_LICENSE_FILES:=COPYING COPYING.LGPL
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=@KERNEL/linux/utils/cryptsetup/v1.6
-PKG_MD5SUM:=918406eb5d2e2f5a7348c432ea9b1473
+PKG_SOURCE_URL:=@KERNEL/linux/utils/cryptsetup/v1.7
+PKG_MD5SUM:=56c385fe87fc2b6873df4b7f89202d0f
 PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
index 15e34362ef439d9d173408988c776802460d25c0..16ed227e2e87087c8d9c320923f9c36954ce10d3 100644 (file)
@@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk
 
 # Make sure to also update the dbus-x package
 PKG_NAME:=dbus
-PKG_VERSION:=1.10.0
+PKG_VERSION:=1.10.4
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://dbus.freedesktop.org/releases/dbus/
-PKG_MD5SUM:=5af6297348107a906c8449817a728b3b
+PKG_MD5SUM:=27b8e99ffad603b8acfa25201c6e3d5c
 PKG_MAINTAINER:=Steven Barth <cyrus@openwrt.org>
 PKG_LICENSE:=AFL-2.1
 
@@ -122,11 +122,11 @@ HOST_CONFIGURE_ARGS+= \
        --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" \
index 41483f2ef7370f812f8ac7e545c4b26788f1ae56..f286bc87073ae2b63e45ba589550c8facae0d77c 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=dosfstools
-PKG_VERSION:=3.0.27
+PKG_VERSION:=3.0.28
 PKG_RELEASE:=1
 
 PKG_LICENSE:=GPL-3.0+
@@ -17,9 +17,9 @@ PKG_LICENSE_FILES:=COPYING
 PKG_MAINTAINER:=David Bonnes <david.bonnes@gmail.com>
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://daniel-baumann.ch/files/software/dosfstools \
+PKG_SOURCE_URL:=https://github.com/dosfstools/dosfstools/releases/download/v$(PKG_VERSION)/ \
                http://fossies.org/linux/misc
-PKG_MD5SUM:=2e31e7bdf92998e41ed17de505a4a552
+PKG_MD5SUM:=64e3b3a59b51d2a97d7ac38b23a124bb
 
 include $(INCLUDE_DIR)/package.mk
 include $(INCLUDE_DIR)/nls.mk
@@ -27,7 +27,7 @@ include $(INCLUDE_DIR)/nls.mk
 define Package/dosfstools/Default
   SECTION:=utils
   CATEGORY:=Utilities
-  URL:=http://www.daniel-baumann.ch/software/dosfstools/
+  URL:=https://github.com/dosfstools
   SUBMENU:=Filesystem
   DEPENDS:=$(ICONV_DEPENDS)
 endef
diff --git a/utils/dosfstools/patches/010-consistent_use_of_uint32.patch b/utils/dosfstools/patches/010-consistent_use_of_uint32.patch
new file mode 100644 (file)
index 0000000..73529c8
--- /dev/null
@@ -0,0 +1,13 @@
+Index: dosfstools-3.0.28/src/mkfs.fat.c
+===================================================================
+--- dosfstools-3.0.28.orig/src/mkfs.fat.c
++++ dosfstools-3.0.28/src/mkfs.fat.c
+@@ -1412,7 +1412,7 @@ int main(int argc, char **argv)
+     gettimeofday(&create_timeval, NULL);
+     create_time = create_timeval.tv_sec;
+-    volume_id = (u_int32_t) ((create_timeval.tv_sec << 20) | create_timeval.tv_usec); /* Default volume ID = creation time, fudged for more uniqueness */
++    volume_id = (uint32_t) ((create_timeval.tv_sec << 20) | create_timeval.tv_usec);  /* Default volume ID = creation time, fudged for more uniqueness */
+     check_atari();
+     printf("mkfs.fat " VERSION " (" VERSION_DATE ")\n");
index 74acd12a1c5aae92c9bafaaf2a97ed2182b3989d..adf8d19ea1cf8ceaf6d645f1e7b9c44ef137fc64 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=dump1090
-PKG_VERSION:=2015-10-08
+PKG_VERSION:=2015-11-22
 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:=c55c71b57cf34e90d95afd52449a05a4b6dbda03
+PKG_SOURCE_VERSION:=497f88fe1c597652aca23c1035ddb55a9f6c274d
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
 PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
 
index 8fd6d42955398bfed2e883ef8c38cfb62f7e85a3..b9c433eea0995a9532789fc26d04e87a7e64e8e2 100644 (file)
@@ -34,7 +34,7 @@ config dump1090 main
        option no_fix '0'
        option no_crc_check '0'
        option phase_enhance '0'
-       option agressive '0'
+       option aggressive '0'
        option mlat '0'
        option stats '0'
        option stats_range '0'
index 8a3e2b2330446e73613c9ea52f3643dd343e204f..23519dbc2f8f46bb32dd0f0689824fc6e1b306ea 100644 (file)
@@ -72,7 +72,7 @@ start_instance() {
        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" agressive "--agressive"
+       append_bool "$cfg" aggressive "--aggressive"
        append_bool "$cfg" mlat "--mlat"
        append_bool "$cfg" stats "--stats"
        append_bool "$cfg" stats_range "--stats-range"
diff --git a/utils/dvtm/Makefile b/utils/dvtm/Makefile
new file mode 100644 (file)
index 0000000..8d2ae39
--- /dev/null
@@ -0,0 +1,41 @@
+#
+# 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))
diff --git a/utils/evtest/Makefile b/utils/evtest/Makefile
new file mode 100644 (file)
index 0000000..7990b30
--- /dev/null
@@ -0,0 +1,45 @@
+#
+# 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))
index e6e38b43192e98344b53a5e704a627926f9d7579..7c66682abb3b80df2a19b1fe2e7f8fc1bfa1e43c 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=flashrom
 PKG_VERSION:=0.9.8
-PKG_RELEASE:=5
+PKG_RELEASE:=6
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=http://download.flashrom.org/releases
diff --git a/utils/flashrom/patches/0003-fix-io-h-include.patch b/utils/flashrom/patches/0003-fix-io-h-include.patch
new file mode 100644 (file)
index 0000000..50aa2a8
--- /dev/null
@@ -0,0 +1,12 @@
+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>
+
index e31d39005e5ca2ca27bbe367545e1b0f27bf57f4..7e878e0c07e3fc151ec12aaddceb2fae7ae8e335 100644 (file)
@@ -9,12 +9,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gammu
-PKG_VERSION:=1.36.6
+PKG_VERSION:=1.36.8
 PKG_RELEASE:=1
 
 PKG_SOURCE_URL:=http://dl.cihar.com/gammu/releases/
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_MD5SUM:=9047f0598602144a99153f5e61104529
+PKG_MD5SUM:=462d45f9fb359bd7931c288785028e2d
 PKG_MAINTAINER:=Vitaly Protsko <villy@sft.ru>
 PKG_LICENCE:=GPL-2.0
 
index c96fbc3a621d4c34eb65aa0d97397c1a2c7147fc..65209bb986312883c6f33563a05026952d85ef6e 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gnupg
-PKG_VERSION:=1.4.19
+PKG_VERSION:=1.4.20
 PKG_RELEASE:=1
 
 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
@@ -24,7 +24,7 @@ PKG_INSTALL:=1
 
 include $(INCLUDE_DIR)/package.mk
 
-define Package/gnupg
+define Package/gnupg/Default
   SECTION:=utils
   CATEGORY:=Utilities
   DEPENDS:=+zlib +libncurses +libreadline
@@ -32,6 +32,17 @@ define Package/gnupg
   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
+  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.
@@ -42,6 +53,11 @@ define Package/gnupg/description
  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 \
@@ -49,9 +65,7 @@ CONFIGURE_ARGS += \
        --disable-card-support \
        --disable-agent-support \
        --disable-bzip2 \
-       --disable-exec \
        --disable-ldap \
-       --disable-hkp \
        --disable-finger \
        --disable-ftp \
        --disable-dns-srv \
@@ -66,4 +80,13 @@ define Package/gnupg/install
        $(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))
index df67cf896f5cba656231f48e3af66fcfeb10f997..2351f71ec70b7efef253da84d68baa02e820d1f6 100644 (file)
@@ -97,7 +97,7 @@ SCONS_OPTIONS += \
        libgpsmm=no \
        libQgpsmm=no \
        bluez=no \
-       strip=no \
+       nostrip=yes \
        python=no \
        implicit_link=no \
        chrpath=no
index d77dbd5640a311bc3eb38dfe64b8593cd8052859..c66c80ea8d40b67cb7f4abb24b83d182be85b9e2 100644 (file)
@@ -11,7 +11,9 @@ PKG_NAME:=i2c-tools
 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
 
index 2c42beebd880987baee0b29037ed4588e65aef34..db1429793f48e7717f76298c0b14beb1326815c4 100644 (file)
@@ -246,7 +246,6 @@ mode,"spaces",rtn   % % No tabs %Zspaces%
 }
 
 :windows               Bindings common to all windows
-type           ^@ TO ÿ
 abort          ^C
 abort          ^K Q
 abort          ^K ^Q
@@ -614,12 +613,6 @@ defm2down  M2DOWN
 :query                 Single-key query window
 :inherit windows
 
-:querya                        Single-key query window for quoting
-type           ^@ TO ÿ
-
-:querysr               Search & replace query window
-type           ^@ TO ÿ
-
 :shell                 Input to shell windows
 :inherit main
 "\ 3"            ^C              Abort
index 04be41405897b38a39452dacfb5beb24d7fd2fbf..308dc8341bf6a754c21792c9c480a75450a76c89 100644 (file)
@@ -9,13 +9,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=LVM2
-PKG_VERSION:=2.02.132
+PKG_VERSION:=2.02.139
 PKG_RELEASE:=1
 PKG_LICENSE:=GPL-2.0 LGPL-2.1
 
 PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).tgz
-PKG_SOURCE_URL:=ftp://sources.redhat.com/pub/lvm2
-PKG_MD5SUM:=80af5af726949bbbb2aceb15b24b7d20
+PKG_SOURCE_URL:=ftp://sources.redhat.com/pub/lvm2/releases
+PKG_MD5SUM:=c3aef77a108eab18323fa8f48bf5220a
 PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME).$(PKG_VERSION)
 
index c26232d440ab90c8dd0c12db58f837f018af6f30..13da6b63f978388923a7947297ba2032817f4004 100644 (file)
@@ -1,6 +1,6 @@
 --- a/lib/commands/toolcontext.c
 +++ b/lib/commands/toolcontext.c
-@@ -1740,8 +1740,10 @@ struct cmd_context *create_toolcontext(u
+@@ -1741,8 +1741,10 @@ struct cmd_context *create_toolcontext(u
                                       unsigned set_filters)
  {
        struct cmd_context *cmd;
@@ -11,7 +11,7 @@
  
  #ifdef M_MMAP_MAX
        mallopt(M_MMAP_MAX, 0);
-@@ -1777,7 +1779,7 @@ struct cmd_context *create_toolcontext(u
+@@ -1778,7 +1780,7 @@ struct cmd_context *create_toolcontext(u
        /* FIXME Make this configurable? */
        reset_lvm_errno(1);
  
@@ -20,7 +20,7 @@
        /* Set in/out stream buffering before glibc */
        if (set_buffering) {
                /* Allocate 2 buffers */
-@@ -2160,7 +2162,7 @@ void destroy_toolcontext(struct cmd_cont
+@@ -2161,7 +2163,7 @@ void destroy_toolcontext(struct cmd_cont
        if (cmd->libmem)
                dm_pool_destroy(cmd->libmem);
  
index be9a6625d5a3521461c7cae1ad4dddc840759ec1..48e36388c893be57ad64649da13c9eafc8a644dc 100644 (file)
@@ -1,6 +1,6 @@
 --- 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) {
@@ -16,7 +16,7 @@
                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 {
@@ -29,7 +29,7 @@
  
                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
         */
index 1445aa1a77ada279924b732be1a40fc5d34ce66d..b2c57941b187f2a9c20714ae98b45c2901c6c75e 100644 (file)
@@ -10,17 +10,17 @@ config MC_DIFFVIEWER
 
 config MC_EDITOR
        bool "Enable internal editor"
-       default n
+       default y
        help
            This option enables the built-in file editor.
-           Disabled by default.
+           Enabled by default.
 
 config MC_SUBSHELL
        bool "Enable concurrent subshell"
-       default n
+       default y
        help
            This option enables concurrent subshell support.
-           Disabled by default.
+           Enabled by default.
 
 config MC_LARGEFILE
        bool "Enable largefile support"
@@ -41,12 +41,11 @@ config MC_BACKGROUND
 
 config MC_CHARSET
        bool "Enable charset support"
-       default n
+       default y
        help
            This option adds support for selecting character set of the text in
            the internal viewer and editor and converting it on the fly.
-           The implementation is currently incomplete.
-           Disabled by default.
+           Enabled by default.
 
 config MC_VFS
        bool "Enable virtual filesystem support"
index ab8cd1b0300713049207ccea3a1bc71281557c58..7c0b3dbef4c2f7d857c173756045613493f68694 100644 (file)
@@ -8,15 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mc
-PKG_VERSION:=4.8.14
-PKG_RELEASE:=1.3
-PKG_MAINTAINER:=Dirk Brenken <dibdot@gmail.com>
+PKG_VERSION:=4.8.15
+PKG_RELEASE:=2
+PKG_MAINTAINER:=Dirk Brenken <dirk@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:=fbdaddb9edcf8925dcf3231331a8720b
-
+PKG_MD5SUM:=7c1935433866fdf59a3c2d9b7dae81ad
 PKG_BUILD_PARALLEL:=1
 PKG_FIXUP:=autoreconf
 
@@ -33,29 +32,32 @@ PKG_CONFIG_DEPENDS := \
 include $(INCLUDE_DIR)/package.mk
 include $(INCLUDE_DIR)/nls.mk
 
-define Package/mc
-  SECTION:=utils
-  CATEGORY:=Utilities
-  DEPENDS:=+glib2 +libncurses +libmount +MC_VFS:libssh2 $(LIBRPC_DEPENDS) $(ICONV_DEPENDS)
-  TITLE:=Midnight Commander - a powerful visual file manager
-  URL:=http://www.midnight-commander.org/
-  MENU:=1
+define Package/$(PKG_NAME)
+       SECTION:=utils
+       CATEGORY:=Utilities
+       DEPENDS:=+glib2 +libncurses +libmount +MC_VFS:libssh2 $(LIBRPC_DEPENDS) $(ICONV_DEPENDS)
+       TITLE:=Midnight Commander - a powerful visual file manager
+       URL:=http://www.midnight-commander.org/
+       MENU:=1
 endef
 
-define Package/mc/config
+define Package/$(PKG_NAME)/config
        source "$(SOURCE)/Config.in"
 endef
 
-define Package/mc/description
- GNU Midnight Commander is a visual file manager,
- licensed under GNU General Public License and therefore qualifies as Free Software.
- It's a feature rich full-screen text mode application that allows you to copy,
- move and delete files and whole directory trees, search for files
- and run commands in the subshell. Internal viewer and editor are included.
+define Package/$(PKG_NAME)/description
+GNU Midnight Commander is a visual file manager,
+licensed under GNU General Public License and therefore qualifies as Free Software.
+It's a feature rich full-screen text mode application that allows you to copy,
+move and delete files and whole directory trees, search for files
+and run commands in the subshell. Internal viewer and editor are included.
+
 endef
 
 CONFIGURE_ARGS += \
        --disable-doxygen-doc \
+       --with-homedir=/etc/mc \
+       --with-included-gettext \
        --with-screen=ncurses \
        --without-gpm-mouse \
        --without-x \
@@ -98,10 +100,13 @@ CONFIGURE_ARGS += \
        --disable-vfs
 endif
 
-define Package/mc/install
+define Package/$(PKG_NAME)/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/mc $(1)/usr/bin
        $(INSTALL_DIR) $(1)/etc/mc
+       $(INSTALL_DATA) $(PKG_BUILD_DIR)/misc/mc.charsets $(1)/etc/mc
+       $(INSTALL_DATA) $(PKG_BUILD_DIR)/misc/mc.keymap $(1)/etc/mc     
+       $(INSTALL_DATA) $(PKG_BUILD_DIR)/misc/mc.ext $(1)/etc/mc        
 ifeq ($(CONFIG_MC_DIFFVIEWER),y)
        ln -sf mc $(1)/usr/bin/mcdiff
 endif
@@ -111,12 +116,12 @@ endif
        $(INSTALL_DATA) $(PKG_BUILD_DIR)/misc/mc.menu $(1)/etc/mc
        $(INSTALL_DIR) $(1)/etc/mc/skins
        $(INSTALL_DATA) $(PKG_BUILD_DIR)/misc/skins/default.ini $(1)/etc/mc/skins
-       $(INSTALL_DIR) $(1)/root/.mc/cedit/Syntax
+       $(INSTALL_DIR) $(1)/etc/mc/mcedit/Syntax
 endef
 
-define Package/mc/conffiles
+define Package/$(PKG_NAME)/conffiles
 /etc/mc/mc.menu
 /etc/mc/skins/default.ini
 endef
 
-$(eval $(call BuildPackage,mc))
+$(eval $(call BuildPackage,$(PKG_NAME)))
diff --git a/utils/mc/patches/010-subshell.patch b/utils/mc/patches/010-subshell.patch
new file mode 100644 (file)
index 0000000..12067f1
--- /dev/null
@@ -0,0 +1,579 @@
+--- 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\" '";
diff --git a/utils/mt-st/Makefile b/utils/mt-st/Makefile
new file mode 100644 (file)
index 0000000..69009f9
--- /dev/null
@@ -0,0 +1,51 @@
+#
+# 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:=mt-st
+PKG_VERSION:=1.1
+PKG_RELEASE:=1
+
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)
+PKG_SOURCE_VERSION:=$(PKG_VERSION)
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
+PKG_SOURCE_URL:=http://ftp.ibiblio.org/pub/Linux/system/backup/
+PKG_MD5SUM:=fdd5f5ec673c9f630a102ceff7612774
+
+PKG_LICENSE:=GPL-2.0
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/mt-st
+  SECTION:=utils
+  CATEGORY:=Utilities
+  TITLE:=Magnetic tape control tools for Linux SCSI tapes
+  URL:=http://ftp.ibiblio.org/pub/Linux/system/backup/
+  MAINTAINER:=Giuseppe Magnotta <giuseppe.magnotta@gmail.com>
+endef
+
+define Package/mt-st/description
+       Includes a mt-like program supporting additional commands using ioctls
+       specific to  the Linux SCSI tape driver (up to kernel 2.6.26), and the program
+       stinit to define the SCSI tape devices in system startup scripts.
+endef
+
+define Build/Compile
+       $(MAKE) -C $(PKG_BUILD_DIR) \
+               LDFLAGS="$(TARGET_LDFLAGS)" \
+               CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \
+               CC="$(TARGET_CC)"
+endef
+
+define Package/mt-st/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/mt $(1)/usr/bin/
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/stinit $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,mt-st))
index ce63c88a1c61edfdf7343f9670577c3aa728004c..8ae5c3cb6a5f1f59a8aa40638a1a7d8d43101e5a 100644 (file)
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=nano
-PKG_VERSION:=2.4.2
+PKG_VERSION:=2.5.0
 PKG_RELEASE:=1
 PKG_LICENSE:=GPL-3.0+
 PKG_LICENSE_FILES:=COPYING
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://www.nano-editor.org/dist/v2.4
-PKG_MD5SUM:=ce6968992fec4283c17984b53554168b
+PKG_SOURCE_URL:=http://www.nano-editor.org/dist/v2.5
+PKG_MD5SUM:=751ed96457017572bab15be18cb873ba
 
 PKG_INSTALL:=1
 PKG_BUILD_PARALLEL:=1
diff --git a/utils/owfs/Config.in b/utils/owfs/Config.in
new file mode 100644 (file)
index 0000000..a6508e8
--- /dev/null
@@ -0,0 +1,49 @@
+  menu "Customize libow"
+    depends on PACKAGE_libow
+
+    menu "Bus master and adapter support"
+      config LIBOW_MASTER_USB
+      bool "USB bus master support (requires libusb)"
+      help
+        Include support for USB adapters (NOT usb-serial adapters, which use
+        kernel driver and are supported anyway).
+        Turning this off will save ~13kB (and ~50kB weighting libusb dependency).
+      default y
+
+      config LIBOW_MASTER_I2C
+      bool "I2C bus master (DS2482) support"
+      default y
+      help
+        Include support for I2C adapters.
+        Turning this feature off will save ~6kB.
+
+      config LIBOW_MASTER_W1
+      bool "Kernel W1 bus master support (requires kmod-w1)"
+      help
+        Support kernel 1-Wire bus masters (requires KConfig CONFIG_CONNECTOR=y
+        and CONFIG_W1_CON=y).
+        Turning this on will increase libow size by about 10kB.
+      default n
+    endmenu
+
+    config LIBOW_ZEROCONF
+    bool "Zeroconf/bonjour support"
+    default y
+    help
+      Enable server process announcement using Zeroconf (Bonjour) protocol.
+      Turning this feature on will increase owlib size by about 12kB.
+
+    config LIBOW_DEBUG
+    bool "Enable debug output (100+ kB)"
+    default y
+    help
+      If you don't need to debug your 1-wire network, you can save as much as
+      137kB disabling debug output.
+
+    config LIBOW_OWTRAFFIC
+    bool "Enable bus traffic reports"
+    default n
+    help
+      Enable owfs traffic monitor. It's here purely for debugging purposes.
+      Turning this on will increase libow size by about 3kB.
+  endmenu
index bec087f894ec6be4bbf62ff6b574378d6682c180..d4cc4cb2401d9319a08028375f4fd145ce5745db 100644 (file)
@@ -20,6 +20,14 @@ PKG_LICENSE:=GPL-2.0
 PKG_FIXUP:=autoreconf
 PKG_INSTALL:=1
 
+PKG_CONFIG_DEPENDS:= \
+  CONFIG_LIBOW_MASTER_USB \
+  CONFIG_LIBOW_MASTER_I2C \
+  CONFIG_LIBOW_MASTER_W1 \
+  CONFIG_LIBOW_ZEROCONF \
+  CONFIG_LIBOW_DEBUG \
+  CONFIG_LIBOW_OWTRAFFIC
+
 include $(INCLUDE_DIR)/package.mk
 
 #
@@ -74,10 +82,17 @@ endef
 
 define Package/libow
   $(call Package/owfs/Library)
-  DEPENDS:=+libusb-compat +libpthread
+  DEPENDS:= \
+    +libpthread \
+    +LIBOW_MASTER_USB:libusb-compat \
+    +LIBOW_MASTER_W1:kmod-w1
   TITLE:=OWFS - common shared library
 endef
 
+define Package/libow/config
+  source "$(SOURCE)/Config.in"
+endef
+
 define Package/libow/description
   $(call Package/$(PKG_NAME)/Default/description)
 
@@ -170,13 +185,18 @@ CONFIGURE_ARGS += \
        --with-fuseinclude="$(STAGING_DIR)/usr/include" \
        --with-fuselib="$(STAGING_DIR)/usr/lib" \
        --enable-shared \
-       --enable-zero \
        --disable-parport \
        --disable-ownet \
        --disable-owpython \
        --disable-owphp \
        --disable-owtcl \
        --disable-swig \
+       $(if $(CONFIG_LIBOW_MASTER_USB),--enable-usb,--disable-usb) \
+       $(if $(CONFIG_LIBOW_MASTER_W1),--enable-w1,--disable-w1) \
+       $(if $(CONFIG_LIBOW_MASTER_I2C),--enable-i2c,--disable-i2c) \
+       $(if $(CONFIG_LIBOW_ZEROCONF),--enable-zero,--disable-zero) \
+       $(if $(CONFIG_LIBOW_DEBUG),--enable-debug,--disable-debug) \
+       $(if $(CONFIG_LIBOW_OWTRAFFIC),--enable-owtraffic,--disable-owtraffic)
 
 CONFIGURE_VARS += \
        LDFLAGS="$(TARGET_LDFLAGS) -Wl,-rpath-link=$(STAGING_DIR)/usr/lib -Wl,-rpath-link=$(TOOLCHAIN_DIR)/usr/lib" \
@@ -198,6 +218,15 @@ endef
 define Package/owfs/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/owfs $(1)/usr/bin/
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_DATA) ./files/owfs.conf $(1)/etc/config/owfs
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/owfs.init $(1)/etc/init.d/owfs
+       mkdir -p $(1)/mnt/owfs
+endef
+
+define Package/owfs/conffiles
+/etc/config/owfs
 endef
 
 define Package/owshell/install
@@ -213,18 +242,41 @@ endef
 define Package/owserver/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/owserver $(1)/usr/bin/
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_DATA) ./files/owserver.conf $(1)/etc/config/owserver
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/owserver.init $(1)/etc/init.d/owserver
+endef
+
+define Package/owserver/conffiles
+/etc/config/owserver
 endef
 
 define Package/owhttpd/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/owhttpd $(1)/usr/bin/
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_DATA) ./files/owhttpd.conf $(1)/etc/config/owhttpd
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/owhttpd.init $(1)/etc/init.d/owhttpd
+endef
+
+define Package/owhttpd/conffiles
+/etc/config/owhttpd
 endef
 
 define Package/owftpd/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/owftpd $(1)/usr/bin/
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_DATA) ./files/owftpd.conf $(1)/etc/config/owftpd
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/owftpd.init $(1)/etc/init.d/owftpd
 endef
 
+define Package/owftpd/conffiles
+/etc/config/owftpd
+endef
 
 define Package/libow/install
        $(INSTALL_DIR) $(1)/usr/lib
diff --git a/utils/owfs/files/owfs.conf b/utils/owfs/files/owfs.conf
new file mode 100644 (file)
index 0000000..b485989
--- /dev/null
@@ -0,0 +1,10 @@
+config owfs 'owfs'
+       option enabled 0
+       option user root
+       option readonly 0
+       option mountpoint '/mnt/owfs'
+       option fuse_allow_other 0
+       option fuse_open_opt ''
+       option error_level 0
+       list devices '-s'
+       list devices 'localhost:4304'
diff --git a/utils/owfs/files/owfs.init b/utils/owfs/files/owfs.init
new file mode 100644 (file)
index 0000000..83c8913
--- /dev/null
@@ -0,0 +1,82 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2009-2015 OpenWrt.org
+
+START=95
+USE_PROCD=1
+
+PROG=/usr/bin/owfs
+
+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"
+}
+
+append_plain() {
+       procd_append_param command "$1"
+}
+
+append_param() {
+       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 "$opt" "${val:-$def}"
+}
+
+start_instance() {
+       local cfg="$1"
+       local enabled
+
+       config_get_bool enabled "$cfg" 'enabled' '0'
+       [ "$enabled" = 0 ] && return 1
+
+       procd_open_instance
+
+       procd_set_param command "$PROG" --foreground --error_print=1
+
+       # common parameters
+       append_bool "$cfg" readonly "--readonly"
+       append_arg "$cfg" error_level "--error_level"
+       config_list_foreach "$cfg" options append_plain
+       config_list_foreach "$cfg" devices append_plain
+       append_param "$cfg" user user
+
+       # owfs-specific
+       append_arg "$cfg" mountpoint "--mountpoint" /mnt/owfs
+       append_bool "$cfg" fuse_allow_other "--allow_other"
+       append_arg "$cfg" fuse_open_opt "--fuse_open_opt"
+
+       # don't respawn fuse
+
+       procd_close_instance
+
+}
+
+service_triggers() {
+       procd_add_reload_trigger owfs
+}
+
+start_service() {
+       config_load owfs
+       config_foreach start_instance owfs
+}
diff --git a/utils/owfs/files/owftpd.conf b/utils/owfs/files/owftpd.conf
new file mode 100644 (file)
index 0000000..100162e
--- /dev/null
@@ -0,0 +1,8 @@
+config owftpd 'owftpd'
+       option enabled 0
+       option user root
+       option readonly 0
+       option port 21
+       option error_level 0
+       list devices '-s'
+       list devices 'localhost:4304'
diff --git a/utils/owfs/files/owftpd.init b/utils/owfs/files/owftpd.init
new file mode 100644 (file)
index 0000000..a7e17c9
--- /dev/null
@@ -0,0 +1,81 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2009-2015 OpenWrt.org
+
+START=95
+USE_PROCD=1
+
+PROG=/usr/bin/owftpd
+
+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"
+}
+
+append_plain() {
+       procd_append_param command "$1"
+}
+
+append_param() {
+       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 "$opt" "${val:-$def}"
+}
+
+start_instance() {
+       local cfg="$1"
+       local enabled
+
+       config_get_bool enabled "$cfg" 'enabled' '0'
+       [ "$enabled" = 0 ] && return 1
+
+       procd_open_instance
+
+       procd_set_param command "$PROG" --foreground --error_print=1
+
+       # common parameters
+       append_bool "$cfg" readonly "--readonly"
+       append_arg "$cfg" error_level "--error_level"
+       config_list_foreach "$cfg" options append_plain
+       config_list_foreach "$cfg" devices append_plain
+       append_param "$cfg" user user
+
+       # owftpd-specific
+       append_arg "$cfg" port "--port"
+       append_arg "$cfg" max_connections "--max_connections"
+
+       procd_set_param respawn
+
+       procd_close_instance
+
+}
+
+service_triggers() {
+       procd_add_reload_trigger owftpd
+}
+
+start_service() {
+       config_load owftpd
+       config_foreach start_instance owftpd
+}
diff --git a/utils/owfs/files/owhttpd.conf b/utils/owfs/files/owhttpd.conf
new file mode 100644 (file)
index 0000000..a314cd1
--- /dev/null
@@ -0,0 +1,8 @@
+config owhttpd 'owhttpd'
+       option enabled 0
+       option user root
+       option readonly 0
+       option port 3001
+       option error_level 0
+       list devices '-s'
+       list devices 'localhost:4304'
diff --git a/utils/owfs/files/owhttpd.init b/utils/owfs/files/owhttpd.init
new file mode 100644 (file)
index 0000000..868c9b4
--- /dev/null
@@ -0,0 +1,81 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2009-2015 OpenWrt.org
+
+START=95
+USE_PROCD=1
+
+PROG=/usr/bin/owhttpd
+
+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"
+}
+
+append_plain() {
+       procd_append_param command "$1"
+}
+
+append_param() {
+       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 "$opt" "${val:-$def}"
+}
+
+start_instance() {
+       local cfg="$1"
+       local enabled
+
+       config_get_bool enabled "$cfg" 'enabled' '0'
+       [ "$enabled" = 0 ] && return 1
+
+       procd_open_instance
+
+       procd_set_param command "$PROG" --foreground --error_print=1
+
+       # common parameters
+       append_bool "$cfg" readonly "--readonly"
+       append_arg "$cfg" error_level "--error_level"
+       config_list_foreach "$cfg" options append_plain
+       config_list_foreach "$cfg" devices append_plain
+       append_param "$cfg" user user
+
+       # owhttpd-specific
+       append_arg "$cfg" port "--port"
+       append_arg "$cfg" max_connections "--max_connections"
+
+       procd_set_param respawn
+
+       procd_close_instance
+
+}
+
+service_triggers() {
+       procd_add_reload_trigger owhttpd
+}
+
+start_service() {
+       config_load owhttpd
+       config_foreach start_instance owhttpd
+}
diff --git a/utils/owfs/files/owserver.conf b/utils/owfs/files/owserver.conf
new file mode 100644 (file)
index 0000000..ceb8a61
--- /dev/null
@@ -0,0 +1,8 @@
+config owserver 'owserver'
+       option enabled 0
+       option user root
+       option readonly 0
+       option port 4304
+       option error_level 0
+       list devices '-d'
+       list devices '/dev/ttyUSB0'
diff --git a/utils/owfs/files/owserver.init b/utils/owfs/files/owserver.init
new file mode 100644 (file)
index 0000000..7f91aee
--- /dev/null
@@ -0,0 +1,81 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2009-2015 OpenWrt.org
+
+START=90
+USE_PROCD=1
+
+PROG=/usr/bin/owserver
+
+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"
+}
+
+append_plain() {
+       procd_append_param command "$1"
+}
+
+append_param() {
+       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 "$opt" "${val:-$def}"
+}
+
+start_instance() {
+       local cfg="$1"
+       local enabled
+
+       config_get_bool enabled "$cfg" 'enabled' '0'
+       [ "$enabled" = 0 ] && return 1
+
+       procd_open_instance
+
+       procd_set_param command "$PROG" --foreground --error_print=1
+
+       # common parameters
+       append_bool "$cfg" readonly "--readonly"
+       append_arg "$cfg" error_level "--error_level"
+       config_list_foreach "$cfg" options append_plain
+       config_list_foreach "$cfg" devices append_plain
+       append_param "$cfg" user user
+
+       # owserver-specific
+       append_arg "$cfg" port "--port"
+       append_arg "$cfg" max_connections "--max_connections"
+
+       procd_set_param respawn
+
+       procd_close_instance
+
+}
+
+service_triggers() {
+       procd_add_reload_trigger owserver
+}
+
+start_service() {
+       config_load owserver
+       config_foreach start_instance owserver
+}
diff --git a/utils/owfs/patches/100-fix-netlink-w1-status-message-detection.patch b/utils/owfs/patches/100-fix-netlink-w1-status-message-detection.patch
new file mode 100644 (file)
index 0000000..251065f
--- /dev/null
@@ -0,0 +1,30 @@
+AaAA
+--- a/module/owlib/src/c/ow_w1_parse.c
++++ b/module/owlib/src/c/ow_w1_parse.c
+@@ -237,7 +237,7 @@ enum Netlink_Read_Status W1_Process_Resp
+                       owfree(nlp.nlm) ;
+                       return nrs_nodev ;
+               }
+-              if ( nrs_callback == NULL ) { // status message
++              if ( nrs_callback == NULL ) { // bus reset
+                       owfree(nlp.nlm) ;
+                       return nrs_complete ;
+               }
+@@ -246,7 +246,7 @@ enum Netlink_Read_Status W1_Process_Resp
+               nrs_callback( &nlp, v, pn ) ;
+               LEVEL_DEBUG("Called nrs_callback");
+               owfree(nlp.nlm) ;
+-              if ( nlp.cn->ack != 0 ) {
++              if ( nlp.cn->seq != nlp.cn->ack ) {
+                       if ( nlp.w1m->type == W1_LIST_MASTERS ) {
+                               continue ; // look for more data
+                       }
+@@ -254,7 +254,7 @@ enum Netlink_Read_Status W1_Process_Resp
+                               continue ; // look for more data
+                       }
+               }
+-              nrs_callback = NULL ; // now look for status message
++              return nrs_complete ; // status message
+       }
+       return nrs_timeout ;
+ }
diff --git a/utils/owfs/patches/101-fix-no-reset-routine-segfault.patch b/utils/owfs/patches/101-fix-no-reset-routine-segfault.patch
new file mode 100644 (file)
index 0000000..731c4a0
--- /dev/null
@@ -0,0 +1,13 @@
+--- a/module/owlib/src/c/ow_reset.c
++++ b/module/owlib/src/c/ow_reset.c
+@@ -21,6 +21,10 @@ RESET_TYPE BUS_reset(const struct parsed
+       struct connection_in * in = pn->selected_connection ;
+       STAT_ADD1_BUS(e_bus_resets, in);
++      if ( in->iroutines.reset == NO_RESET_ROUTINE ) {
++              return BUS_RESET_OK;
++      }
++
+       switch ( (in->iroutines.reset) (pn) ) {
+       case BUS_RESET_OK:
+               in->reconnect_state = reconnect_ok;     // Flag as good!
index 6f473511b950543c3704fb0facc0bc1e78fe48e5..41dfd93ed9a2b042a051c2a6e2b12d911fcc8f2e 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=pcsc-lite
-PKG_VERSION:=1.8.14
+PKG_VERSION:=1.8.15
 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/4157
+PKG_MD5SUM:=ded5cf2f78d26293934cefd0dbc58a43
 PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
 PKG_LICENSE:=BSD-3-Clause
 PKG_LICENSE_FILES:=COPYING
index ed8ddd4c2dd7a798014afbeea8b050cfa1883f22..ba455571b53cfe79da0a622cae84ca24272076f9 100644 (file)
@@ -7,7 +7,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=rtl-ais
-PKG_VERSION:=20150722
+PKG_VERSION:=20151213
 
 PKG_RELEASE=$(PKG_SOURCE_VERSION)
 
index 15269b0a5f5a3aebbe7138d3b1b364754b66cd73..4900c34de3976dfae43ff071ec98414c172e6e27 100644 (file)
@@ -1,19 +1,38 @@
 #!/bin/sh /etc/rc.common
-# Copyright (C) 2015 OpenWrt.org
 
 START=99
-
 USE_PROCD=1
+
 PROG=/usr/bin/rtl_ais
 
-start_service() {
-       enabled="$(uci_get rtl_ais @rtl_ais[0] enabled 0)"
-       ppm="$(uci_get rtl_ais @rtl_ais[0] ppm 0)"
+validate_rtl_ais_section() {
+       uci_validate_section "rtl_ais" "rtl_ais" "$1" \
+               'enabled:bool' \
+               'ppm:range(-100,100):0'
+}
+
+load_rtl_ais() {
+       local cfg="$1"
+
+       local enabled ppm
+       validate_rtl_ais_section "$cfg" || { echo "validation failed"; return 1; }
 
-        [ "$enabled" != "1" ] && return
+       [ "$enabled" = "1" ] || return 1
 
         procd_open_instance
         procd_set_param command "$PROG" -p "$ppm"
+       procd_set_param stdout 1
+       procd_set_param stderr 1
         procd_set_param respawn
         procd_close_instance
 }
+
+start_service() {
+       config_load "rtl_ais"
+       config_foreach load_rtl_ais "rtl_ais"
+}
+
+service_triggers() {
+       procd_add_reload_trigger "rtl_ais"
+       procd_add_validation validate_rtl_ais_section
+}
index ffed673b027ca0ea1a93695cd3f827b4a813e95b..5a18d1ad9b99d63d2ff76ad149a3ccde3f710dc9 100644 (file)
@@ -1,5 +1,5 @@
 #
-# 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.
@@ -59,7 +59,7 @@ define Package/sane-backends/config
       depends on PACKAGE_sane-backends
       prompt "Include all SANE backends (sane-backends-all)"
 
-    comment "Modules"
+    comment "Backends"
 
 $(foreach backend,$(SANE_BACKENDS), \
     $(eval \
@@ -115,7 +115,7 @@ $(call Package/sane-backends/Default)
   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
index d2499a756370cf061a0cc5aef59f68d7dfefb409..06208714651cc0cf46961688e75baabae711457a 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=smstools3
 PKG_VERSION:=3.1.15
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_MAINTAINER:=Gérald Kerma <dreagle@doukki.net>
 PKG_LICENSE:=GPL-2.0
@@ -22,15 +22,15 @@ PKG_SOURCE_URL:=http://smstools3.kekekasvi.com/packages/
 PKG_MD5SUM:=0241ef60e646fac1a06254a848e61ed7
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
-PKG_BUILD_DEPENDS:=libiconv-full iconv
 
 include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
 
 define Package/smstools3
   SECTION:=utils
   CATEGORY:=Utilities
   TITLE:=SMS Server Tools 3
-  DEPENDS:=+libiconv-full +iconv
+  DEPENDS:=$(ICONV_DEPENDS)
   URL:=http://smstools3.kekekasvi.com/
 endef
 
@@ -39,23 +39,17 @@ define Package/smstools3/description
  short messages through GSM modems and mobile phones.
 endef
 
-TARGET_CFLAGS = -D NUMBER_OF_MODEMS=1
+TARGET_CFLAGS += -D NUMBER_OF_MODEMS=1
 TARGET_CFLAGS += -D USE_ICONV
 TARGET_CFLAGS += -D DISABLE_INET_SOCKET
 TARGET_CFLAGS += -W -Wall
 TARGET_CFLAGS += -D_FILE_OFFSET_BITS=64
 
-TARGET_LDFLAGS += -liconv
+MAKE_VARS += LFLAGS="$(TARGET_LDFLAGS) $(if $(ICONV_FULL),-liconv)"
 
 BINDIR=/usr/local/bin
 
-define Build/Compile
-       $(MAKE) -C "$(PKG_BUILD_DIR)/src" \
-               CC="$(TARGET_CC)" \
-               CFLAGS='$(TARGET_CFLAGS) $(EXTRA_CFLAGS) $(TARGET_CPPFLAGS) $(EXTRA_CPPFLAGS) \
-               -I"$(STAGING_DIR)/usr/lib/libiconv-full/include"' \
-               LFLAGS='$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS) -L"$(STAGING_DIR)/usr/lib/libiconv-full/lib"' \
-               all
+define Package/smstools3/configure
 endef
 
 define Package/smstools3/install
index a8445ef3c3769b1e0860b0a293af71fc6ffff5dc..1e5630f3963570a3a2ef8d3038ba48abc754473b 100644 (file)
@@ -1,6 +1,15 @@
---- a/src/Makefile     2014-12-20 18:33:55.654252867 +0100
-+++ b/src/Makefile     2014-12-20 18:31:10.241359741 +0100
-@@ -43,7 +43,7 @@
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -1,7 +1,7 @@
+ # In case of windows, use os_cygwin=yes setting in the configuration file (smsd.conf).
+ # Select your setup size:
+-CFLAGS = -D NUMBER_OF_MODEMS=64
++CFLAGS ?= -D NUMBER_OF_MODEMS=64
+ # Uncomment for Solaris
+ # CFLAGS += -D SOLARIS
+@@ -43,7 +43,7 @@ smsd: smsd.c extras.o locking.o cfgfile.
  
  ifneq (,$(findstring SOLARIS,$(CFLAGS)))
  ifeq (,$(findstring DISABLE_INET_SOCKET,$(CFLAGS)))
@@ -9,4 +18,3 @@
  endif
  endif
  
-
diff --git a/utils/stress/Makefile b/utils/stress/Makefile
new file mode 100644 (file)
index 0000000..c1fbce3
--- /dev/null
@@ -0,0 +1,49 @@
+#
+# Copyright (C) 2006-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=stress
+PKG_VERSION:=1.0.4
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://people.seas.harvard.edu/~apw/stress/
+PKG_MD5SUM:=a607afa695a511765b40993a64c6e2f4
+
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=COPYING
+
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/stress
+  SECTION:=utils
+  CATEGORY:=Utilities
+  TITLE:=stress is a simple stress utility
+  URL:=http://people.seas.harvard.edu/~apw/stress/
+  MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
+endef
+
+define Package/stress/description
+stress is a simple tool that imposes certain types of compute \ stress on
+UNIX-like operating systems.
+endef
+
+CONFIGURE_ARGS += \
+       --prefix="/usr"
+
+MAKE_FLAGS += \
+       CFLAGS="$(TARGET_CFLAGS)"
+
+define Package/stress/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/stress $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,stress))
index eb1360c469d8927611247ab4de1fdb94f6273a24..0d98ea69cc77a13ff80fcdfed3cb8a53c019d5e4 100644 (file)
@@ -8,12 +8,12 @@
 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
index 8d95a9cb1c8ca235e1c66590a3cfc1a6a4d8fdee..f7b29a6db3b81df9e51511c5b54a05b14ad3e4ba 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=tracertools
-PKG_VERSION:=20150916
+PKG_VERSION:=20160118
 PKG_RELEASE=$(PKG_SOURCE_VERSION)
 PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
 
@@ -16,7 +16,7 @@ PKG_LICENSE:=GPL-3.0
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/dangowrt/tracertools.git
-PKG_SOURCE_VERSION:=7dba3342fedfd04eb7b0d9941971726fde948ec0
+PKG_SOURCE_VERSION:=0428aa8585c915e64ce7cdb7c6f88cf2f5987b5f
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
 
index 5b365cdd992997714436e1545aae065695033bce..97c6e90315d87c29d7eb55d427fe2a9d7ea960ed 100644 (file)
@@ -1,5 +1,5 @@
 #
-# 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.
@@ -8,9 +8,9 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=triggerhappy
-PKG_VERSION:=0.3.4
-PKG_REV:=649bf670a012558393d7c41f3660d0a017edd982
-PKG_RELEASE:=2
+PKG_VERSION:=0.3.4-151001
+PKG_REV:=7e5abc69f215678e93a6b999524981c8b40bdcd9
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=git://github.com/wertarbyte/triggerhappy
diff --git a/utils/triggerhappy/patches/100-fix-LINUX_INPUT_H.patch b/utils/triggerhappy/patches/100-fix-LINUX_INPUT_H.patch
deleted file mode 100644 (file)
index 13ecd8c..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/Makefile
-+++ b/Makefile
-@@ -10,7 +10,7 @@ THCMD_COMPS := th-cmd cmdsocket
- MAKEDEPEND = $(CC) -M -MG $(CPPFLAGS) -o $*.d $<
--LINUX_INPUT_H := $(shell echo '\#include <linux/input.h>' | $(CC) $(CPPFLAGS) -M -E - | awk 'NR==1 {print $$2}')
-+LINUX_INPUT_H := $(shell for i in `echo | $(CC) $(CPPFLAGS) -M -E -include 'linux/input.h' -`; do test -f "$$i" && echo "$$i" && break; done)
- all: thd th-cmd man
index 156abd2e72c4cdd6f12d6d0823191e1894dcdd19..713ca8ead109f471a28416211d65cea484d5f86b 100644 (file)
@@ -8,18 +8,18 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=unrar
-PKG_VERSION:=5.3.7
+PKG_VERSION:=5.3.8
 PKG_RELEASE:=1
 
 PKG_SOURCE:=unrarsrc-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.rarlab.com/rar
-PKG_MD5SUM:=668f8de87b74d9fa7037d3d487200149
+PKG_MD5SUM:=9aa9643e817187519e358be292185f6f
 PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
 
 PKG_LICENSE:=UnRAR
 PKG_LICENSE_FILES:=license.txt
 
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)/unrar
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)-$(BUILD_VARIANT)/unrar
 PKG_INSTALL:=1
 
 include $(INCLUDE_DIR)/uclibc++.mk
@@ -37,6 +37,7 @@ $(call Package/unrar/Default)
   SECTION:=utils
   CATEGORY:=Utilities
   TITLE+= (application)
+  VARIANT:=bin
 endef
 
 define Package/libunrar
@@ -44,6 +45,7 @@ $(call Package/unrar/Default)
   SECTION:=libs
   CATEGORY:=Libraries
   TITLE+= (library)
+  VARIANT:=lib
 endef
 
 define Package/unrar/description
@@ -56,11 +58,31 @@ define Package/libunrar/description
   archives
 endef
 
+ifeq ($(BUILD_VARIANT),lib)
 define Build/Compile
-       $(call Build/Compile/Default,unrar)
        $(call Build/Compile/Default,lib)
 endef
 
+define Build/Install
+       $(call Build/Install/Default,install-lib)
+endef
+
+define Build/InstallDev
+       $(INSTALL_DIR) $(1)/usr/include/unrar
+       $(CP) $(PKG_BUILD_DIR)/*.hpp $(1)/usr/include/unrar/
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/lib/libunrar.so $(1)/usr/lib/
+endef
+else
+define Build/Compile
+       $(call Build/Compile/Default,unrar)
+endef
+
+define Build/Install
+       $(call Build/Install/Default,install-unrar)
+endef
+endif
+
 define Package/unrar/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/bin/unrar $(1)/usr/bin/
@@ -68,7 +90,7 @@ endef
 
 define Package/libunrar/install
        $(INSTALL_DIR) $(1)/usr/lib
-       $(CP) $(PKG_BUILD_DIR)/libunrar.so $(1)/usr/lib/
+       $(CP) $(PKG_INSTALL_DIR)/lib/libunrar.so $(1)/usr/lib/
 endef
 
 $(eval $(call BuildPackage,unrar))
index ca82e13535c5bebd6d2264bcb491cb605d1d7d63..3423b56f33645744d63ce9e5137a9cdd9410cbfe 100644 (file)
  DESTDIR=/usr
  
  # Linux using LCC
+@@ -142,7 +142,7 @@ uninstall-unrar:
+                       rm -f $(DESTDIR)/bin/unrar
+ install-lib:
+-              install libunrar.so $(DESTDIR)/lib
++              install -D libunrar.so $(DESTDIR)/lib/libunrar.so
+ uninstall-lib:
+               rm -f $(DESTDIR)/lib/libunrar.so
index 112b3f4e85ba2e1fd89be8563821ce32538d3d77..a0d0d14ab5c71159d82b33b1969e067fe6c77a50 100644 (file)
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 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
@@ -44,7 +44,13 @@ endef
 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 \
@@ -59,7 +65,10 @@ endef
 
 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))
index 512057c2a5dd5d2d1764a496c6224ce7a0d25078..c9ab03af79ddba1c5e913cad6f9ea811d5d9b27f 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=zile
 PKG_VERSION:=2.3.24
-PKG_RELEASE:=1
+PKG_RELEASE:=3
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@GNU/zile
@@ -19,6 +19,7 @@ PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
 PKG_LICENSE:=GPL-3.0+
 PKG_LICENSE_FILES:=COPYING
 
+PKG_FIXUP:=autoreconf
 PKG_INSTALL:=1
 
 include $(INCLUDE_DIR)/package.mk
@@ -39,7 +40,13 @@ define Package/zile/description
 endef
 
 CONFIGURE_VARS += \
-       gl_cv_func_getopt_gnu=yes
+       gl_cv_func_getopt_gnu=yes \
+       gl_cv_warn__Wmudflap=no \
+       gl_cv_warn__fmudflap=no
+
+CONFIGURE_ARGS += \
+       --with-ncursesw \
+
 
 define Package/zile/install
        $(INSTALL_DIR) $(1)/usr/bin
diff --git a/utils/zile/patches/005-fix_configure_checking_for_ncursesw.patch b/utils/zile/patches/005-fix_configure_checking_for_ncursesw.patch
new file mode 100644 (file)
index 0000000..26ef0ab
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/m4/ax_with_curses.m4
++++ b/m4/ax_with_curses.m4
+@@ -72,7 +72,7 @@ AC_DEFUN([AX_WITH_CURSES],
+        AC_CACHE_CHECK([for working ncursesw], ax_cv_ncursesw,
+          [LIBS="$ax_save_LIBS -lncursesw"
+           AC_TRY_LINK(
+-            [#include <ncurses.h>],
++            [#include <ncursesw/ncurses.h>],
+             [chtype a; int b=A_STANDOUT, c=KEY_LEFT; initscr(); ],
+             ax_cv_ncursesw=yes, ax_cv_ncursesw=no)])
+        if test "$ax_cv_ncursesw" = yes
diff --git a/utils/zile/patches/010-remove_gets_definition_warning.patch b/utils/zile/patches/010-remove_gets_definition_warning.patch
new file mode 100644 (file)
index 0000000..55ad2c4
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/lib/stdio.in.h
++++ b/lib/stdio.in.h
+@@ -733,7 +733,7 @@ _GL_CXXALIASWARN (gets);
+ /* It is very rare that the developer ever has full control of stdin,
+    so any use of gets warrants an unconditional warning.  Assume it is
+    always declared, since it is required by C89.  */
+-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
++#define gets(a) fgets( a, sizeof(*(a)), stdin)
+ #endif
diff --git a/utils/zile/patches/020-build_with_ncursesw.patch b/utils/zile/patches/020-build_with_ncursesw.patch
new file mode 100644 (file)
index 0000000..9a4cffb
--- /dev/null
@@ -0,0 +1,15 @@
+--- a/src/term_curses.c
++++ b/src/term_curses.c
+@@ -23,7 +23,11 @@
+ #include <stdlib.h>
+ #ifdef HAVE_NCURSES_H
+-#include <ncurses.h>
++# ifdef HAVE_NCURSESW
++# include <ncursesw/ncurses.h>
++# else
++# include <ncurses.h>
++# endif
+ #else
+ #include <curses.h>
+ #endif
index 09b4f581c6eb3c45bf2a1d81a3dcf8fdc8e263de..82c4bd36e4a1a3ec2d735d305c3e8d43924754c7 100644 (file)
@@ -1,5 +1,5 @@
 #
-# 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.
@@ -9,8 +9,8 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=zoneinfo
-PKG_VERSION:=2015g
-PKG_VERSION_CODE:=2015g
+PKG_VERSION:=2016a
+PKG_VERSION_CODE:=2016a
 PKG_RELEASE:=1
 
 #As i couldn't find real license used "Public Domain"
@@ -20,14 +20,14 @@ PKG_LICENSE:=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:=0d3123eb1b453ec0620822bd65be4c42
 
 include $(INCLUDE_DIR)/package.mk
 
 define Download/tzcode
    FILE=$(PKG_SOURCE_CODE)
    URL=$(PKG_SOURCE_URL)
-   MD5SUM:=a2c47d908a6426f530efb1393cf1cd06
+   MD5SUM:=f5e0299925631da7cf82d8ce1205111d
 endef
 
 $(eval $(call Download,tzcode))