Merge pull request #4486 from wvdakker/master
authorchamptar <champetier.etienne@gmail.com>
Thu, 7 Dec 2017 22:08:04 +0000 (14:08 -0800)
committerGitHub <noreply@github.com>
Thu, 7 Dec 2017 22:08:04 +0000 (14:08 -0800)
Shorewall(6): add full packages.

461 files changed:
.travis/626471F1.asc [new file with mode: 0644]
.travis/D52BBB6B.asc [new file with mode: 0644]
.travis_do.sh
admin/debootstrap/Makefile
admin/debootstrap/patches/100-busybox_fix.patch [deleted file]
admin/monit/Makefile
admin/sudo/Makefile
admin/zabbix/Makefile
admin/zabbix/patches/110-reproducible-builds.patch [new file with mode: 0644]
devel/lpc21isp/Makefile
devel/lpc21isp/patches/100-fix-reproducible-builds.patch [new file with mode: 0644]
lang/lua-mosquitto/Makefile
lang/perl-cgi/Makefile
lang/perl-inline-c/Makefile
lang/perl-inline-c/patches/010-makefile_pl-dont-eval-undef.patch [new file with mode: 0644]
lang/perl-text-csv_xs/Makefile [new file with mode: 0644]
lang/perl-uri/Makefile
lang/perl/Makefile
lang/perl/files/arm.config
lang/perl/files/armeb.config
lang/perl/files/base.config
lang/perl/files/i486.config
lang/perl/files/mips.config
lang/perl/files/mips64.config
lang/perl/files/mipsel.config
lang/perl/files/powerpc.config
lang/perl/files/version.config
lang/perl/files/x86_64.config
lang/perl/patches/020-host-libc-dir-moved-debian+derivatives.patch [deleted file]
lang/perl/patches/110-always_use_miniperl.patch
lang/perl/patches/900-use-rm-force.patch [new file with mode: 0644]
lang/perl/patches/910-miniperl-needs-inc-dot.patch [new file with mode: 0644]
lang/perl/perlmod.mk
lang/php7-pecl-http/Makefile
lang/php7/Makefile
lang/php7/patches/1007-ext-imap-config.m4-fix-ac_cv_u8t_decompose-check.patch [new file with mode: 0644]
lang/python/chardet/Makefile
lang/python/django-compressor/Makefile
lang/python/django-constance/Makefile
lang/python/django-picklefield/Makefile
lang/python/django-postoffice/Makefile
lang/python/django-restframework/Makefile
lang/python/django-statici18n/Makefile
lang/python/django/Makefile
lang/python/gunicorn/Makefile
lang/python/jdcal/Makefile
lang/python/micropython-lib/Makefile
lang/python/micropython/Makefile
lang/python/micropython/patches/001-all-unix [new file with mode: 0644]
lang/python/openpyxl/Makefile
lang/python/pyodbc/Makefile
lang/python/python-asn1crypto/Makefile
lang/python/python-cffi/Makefile
lang/python/python-cryptography/Makefile
lang/python/python-dateutil/Makefile
lang/python/python-idna/Makefile
lang/python/python-lxml/Makefile
lang/python/python-pyasn1-modules/Makefile
lang/python/python-pyasn1/Makefile
lang/python/python-urllib3/Makefile
lang/python/python/Makefile
lang/python/python/patches/005-fix-bluetooth-support.patch [new file with mode: 0644]
lang/python/python3/Makefile
lang/python/python3/files/python3-package-cgi.mk [new file with mode: 0644]
lang/python/python3/files/python3-version.mk
lang/python/python3/patches/008-fix-distutils-path-creation.patch [deleted file]
lang/python/python3/patches/012-disable-wcsftime-detection.patch [deleted file]
lang/python/pytz/Makefile
lang/python/simplejson/Makefile
lang/vala/Makefile
libs/alsa-lib/Makefile
libs/alsa-lib/patches/200-fix_include_file_redirect_warnings.patch [deleted file]
libs/avahi/Makefile
libs/boost/Makefile
libs/check/Makefile
libs/expat/Makefile
libs/faad2/Makefile
libs/fftw3/Makefile
libs/freetype/Makefile
libs/glib2/Makefile
libs/glpk/Makefile
libs/gnutls/Makefile
libs/icu/Makefile
libs/icu/patches/000-dont-cpy-files-from-topdirs.patch
libs/icu/patches/001-disable-strtod_l.patch [deleted file]
libs/libcap/Makefile
libs/libextractor/Makefile
libs/libgcrypt/Makefile
libs/libgd/Makefile
libs/libgpg-error/Makefile
libs/libgphoto2/Makefile
libs/libgphoto2/patches/001-automake-compat.patch
libs/libgphoto2/patches/002-no-docs-examples-test-translations.patch
libs/libiio/Makefile
libs/libiio/files/iiod.init [new file with mode: 0644]
libs/libiio/patches/001-quote-strequal.patch [new file with mode: 0644]
libs/libnetconf2/Makefile
libs/libp11/Makefile
libs/libpng/Makefile
libs/libsearpc/Makefile
libs/libudev-fbsd/patches/005-extern-c.patch [new file with mode: 0644]
libs/libuv/Makefile
libs/libwebsockets/Makefile
libs/libxml2/Makefile
libs/libxslt/Makefile
libs/libyaml-cpp/Makefile [new file with mode: 0644]
libs/libyang/Makefile
libs/openldap/Makefile
libs/postgresql/Makefile
libs/qrencode/Makefile
libs/qrencode/patches/001-add-inline-svg.patch [new file with mode: 0644]
libs/qrencode/patches/001-disable-png.patch [deleted file]
libs/sqlite3/Makefile
libs/uw-imap/Makefile [new file with mode: 0644]
libs/uw-imap/patches/001-fix_Makefiles_and_shlib.patch [new file with mode: 0644]
libs/uw-imap/patches/002-imap-2004a-doc.patch [new file with mode: 0644]
libs/uw-imap/patches/003-imap-2007e-overflow.patch [new file with mode: 0644]
libs/uw-imap/patches/005-imap-2007e-authmd5.patch [new file with mode: 0644]
libs/uw-imap/patches/006-imap-2007f-format-security.patch [new file with mode: 0644]
libs/uw-imap/patches/007-imap-2007e-poll.patch [new file with mode: 0644]
mail/dovecot/Makefile
mail/emailrelay/Makefile
mail/emailrelay/files/emailrelay.auth
mail/emailrelay/files/emailrelay.config [new file with mode: 0644]
mail/emailrelay/files/emailrelay.init
mail/mutt/Makefile
mail/mutt/patches/0001-no-po-and-docs.patch [deleted file]
mail/mutt/patches/0001-no-po.patch [new file with mode: 0644]
mail/mutt/patches/100-CVE-2014-9116.patch [deleted file]
mail/pigeonhole/Makefile
mail/postfix/Makefile
mail/postfix/files/main.cf.default [deleted file]
mail/postfix/files/postfix.init
mail/postfix/patches/110-glibc-defs.patch [new file with mode: 0644]
multimedia/ffmpeg/Makefile
multimedia/gphoto2/Makefile
multimedia/gphoto2/patches/001-automake-compat.patch
multimedia/gphoto2/patches/002-no-docs-test.patch
multimedia/gst1-libav/Makefile
multimedia/gst1-plugins-bad/Makefile
multimedia/gst1-plugins-bad/patches/001-no-translations.patch
multimedia/gst1-plugins-bad/patches/002-no-tests.patch
multimedia/gst1-plugins-base/Makefile
multimedia/gst1-plugins-base/patches/001-no-translations.patch
multimedia/gst1-plugins-base/patches/002-no-tests.patch
multimedia/gst1-plugins-base/patches/003-no-docs.patch
multimedia/gst1-plugins-good/Makefile
multimedia/gst1-plugins-good/patches/001-no-translations.patch
multimedia/gst1-plugins-good/patches/002-no-tests.patch
multimedia/gst1-plugins-good/patches/003-no-docs.patch
multimedia/gst1-plugins-ugly/Makefile
multimedia/gst1-plugins-ugly/patches/001-no-translations.patch
multimedia/gstreamer1/Makefile
multimedia/gstreamer1/patches/001-no-translations.patch
multimedia/gstreamer1/patches/002-no-tests.patch
multimedia/gstreamer1/patches/003-no-docs.patch
multimedia/gstreamer1/patches/004-no-unwind.patch [new file with mode: 0644]
multimedia/minidlna/Makefile
multimedia/minidlna/files/minidlna.config
multimedia/minidlna/files/minidlna.init
multimedia/mjpg-streamer/Makefile
multimedia/mjpg-streamer/files/mjpg-streamer.init
net/adblock/Makefile
net/adblock/files/README.md
net/adblock/files/adblock.conf
net/adblock/files/adblock.sh
net/apache/Config.in [new file with mode: 0644]
net/apache/Makefile
net/apache/patches/010-reproducible-builds.patch [new file with mode: 0644]
net/aria2/Config.in
net/aria2/Makefile
net/bind/Config.in
net/bind/Makefile
net/clamav/Makefile
net/dansguardian/Makefile [deleted file]
net/dansguardian/files/dansguardian.config [deleted file]
net/dansguardian/files/dansguardian.init [deleted file]
net/dansguardian/files/dansguardianf1.conf [deleted file]
net/dansguardian/patches/001-compile.patch [deleted file]
net/dansguardian/patches/002-cstdlib.patch [deleted file]
net/ddns-scripts/Makefile
net/ddns-scripts/files/services
net/ddns-scripts/files/services_ipv6
net/dhcpcd/Makefile
net/dhcpcd/patches/001-fix-musl.patch [deleted file]
net/fwknop/Makefile
net/fwknop/files/fwknopd
net/fwknop/files/fwknopd.init
net/git/Makefile
net/gnunet/Makefile
net/gnurl/Makefile
net/haproxy/Makefile
net/haproxy/patches/0001-BUG-MEDIUM-connection-remove-useless-flag-CO_FL_DATA.patch [new file with mode: 0644]
net/haproxy/patches/0001-BUG-MINOR-peers-peer-synchronization-issue-with-seve.patch [deleted file]
net/haproxy/patches/0002-BUG-MINOR-lua-In-error-case-the-safe-mode-is-not-rem.patch [deleted file]
net/haproxy/patches/0003-BUG-MINOR-lua-executes-the-function-destroying-the-L.patch [deleted file]
net/haproxy/patches/0004-BUG-MAJOR-lua-socket-resources-not-detroyed-when-the.patch [deleted file]
net/haproxy/patches/0005-BUG-MEDIUM-lua-bad-memory-access.patch [deleted file]
net/haproxy/patches/0006-DOC-update-CONTRIBUTING-regarding-optional-parts-and.patch [deleted file]
net/haproxy/patches/0007-DOC-update-the-list-of-OpenSSL-versions-in-the-READM.patch [deleted file]
net/haproxy/patches/0008-MINOR-tools-add-a-portable-timegm-alternative.patch [deleted file]
net/haproxy/patches/0009-BUILD-lua-replace-timegm-with-my_timegm-to-fix-build.patch [deleted file]
net/haproxy/patches/0010-DOC-Updated-51Degrees-git-URL-to-point-to-a-stable-v.patch [deleted file]
net/haproxy/patches/0011-BUG-MINOR-http-Set-the-response-error-state-in-http_.patch [deleted file]
net/haproxy/patches/0012-MINOR-http-Reorder-rewrite-checks-in-http_resync_sta.patch [deleted file]
net/haproxy/patches/0013-MINOR-http-Switch-requests-responses-in-TUNNEL-mode-.patch [deleted file]
net/haproxy/patches/0014-BUG-MEDIUM-http-Switch-HTTP-responses-in-TUNNEL-mode.patch [deleted file]
net/haproxy/patches/0015-BUG-MAJOR-http-Fix-possible-infinity-loop-in-http_sy.patch [deleted file]
net/haproxy/patches/0016-BUG-MINOR-lua-Fix-Server.get_addr-port-values.patch [deleted file]
net/haproxy/patches/0017-BUG-MINOR-lua-Correctly-use-INET6_ADDRSTRLEN-in-Serv.patch [deleted file]
net/haproxy/patches/0018-BUG-MINOR-lua-always-detach-the-tcp-http-tasks-befor.patch [deleted file]
net/horst/Makefile
net/horst/patches/0001-reproducible-builds.patch [new file with mode: 0644]
net/i2pd/Makefile [new file with mode: 0644]
net/i2pd/files/i2pd.init [new file with mode: 0755]
net/i2pd/patches/010-cross-compile.patch [new file with mode: 0644]
net/irssi/Makefile
net/jool/Makefile
net/keepalived/Makefile
net/keepalived/files/hotplug-user [new file with mode: 0644]
net/keepalived/files/keepalived.config
net/keepalived/files/keepalived.init
net/keepalived/files/keepalived.user [new file with mode: 0644]
net/keepalived/patches/101-0001-vrrp-update-struct-msghdr.patch [deleted file]
net/keepalived/patches/101-0002-Reinstate-initialisation-of-msghdr-fields.patch [deleted file]
net/knot/Makefile
net/knot/files/runtests.sh
net/knot/patches/02_knot.conf.patch
net/knot/patches/03_contrib_files.patch [deleted file]
net/linknx/Makefile
net/mdnsresponder/Makefile
net/mdnsresponder/patches/100-linux_fixes.patch
net/mdnsresponder/patches/120-reproducible-builds.patch [new file with mode: 0644]
net/memcached/Makefile
net/mii-tool/Makefile
net/mii-tool/patches/001-mii-tool-4.9-compatibility.patch [new file with mode: 0644]
net/mikrotik-btest/Makefile [new file with mode: 0644]
net/mwan3/Makefile
net/mwan3/files/etc/hotplug.d/iface/14-mwan3
net/mwan3/files/etc/hotplug.d/iface/15-mwan3
net/mwan3/files/lib/mwan3/common.sh [new file with mode: 0644]
net/mwan3/files/lib/mwan3/mwan3.sh
net/mwan3/files/usr/libexec/rpcd/mwan3
net/mwan3/files/usr/sbin/mwan3track
net/nbd/Makefile
net/nbd/patches/100-make-gnutls-test-optional.patch [new file with mode: 0644]
net/nbd/patches/101-fix-build-without-gnutls.patch [new file with mode: 0644]
net/netopeer2/Makefile
net/netopeer2/patches/002-server-BUGFIX-replace-sr_get_iter-with-sr_get_items [deleted file]
net/netopeer2/patches/003-BUGFIX-for-missing-eaccess-in-uClibc [deleted file]
net/netopeer2/patches/004-BUGFIX-for-missing-mkstemps-in-uClibc [deleted file]
net/nfs-kernel-server/Makefile
net/nfs-kernel-server/patches/101-musl-getservbyport.patch
net/nfs-kernel-server/patches/102-limits.patch [new file with mode: 0644]
net/noddos/Makefile
net/ocserv/Makefile
net/openconnect/Makefile
net/openconnect/README
net/openconnect/files/openconnect.sh
net/openvswitch/Makefile
net/openvswitch/files/etc/init.d/openvswitch.init
net/openvswitch/patches/0006-adapt-ovs-scripts.patch [new file with mode: 0644]
net/openvswitch/patches/0009-fix-test-ovn.patch [deleted file]
net/pixiewps/Makefile [new file with mode: 0644]
net/polipo/Makefile
net/reaver/Makefile
net/reaver/patches/0001-wpscrack-big-endian-fixes.patch [deleted file]
net/reaver/patches/0002-Use-the-current-directory-for-storing-and-loading-se.patch [deleted file]
net/reaver/patches/0003-wash-wpsmon-use-less-useless-spaces-in-output-to-fit.patch [deleted file]
net/reaver/patches/0004-Fixed-probe-request-bug-in-wash.patch [deleted file]
net/reaver/patches/0100-Include-sys-types.h-for-definition-of-u_char.patch [deleted file]
net/reaver/patches/0101-pcap-use-65536-as-snaplen.patch [deleted file]
net/reaver/patches/0102-wps-cflags.patch [deleted file]
net/seafile-ccnet/Makefile
net/seafile-seahub/Makefile
net/seafile-seahub/patches/020-Makefile-fixes.patch
net/seafile-server/Makefile
net/ser2net/Makefile
net/ser2net/patches/0001-dataxfer.c-fix-possible-buffer-overruns-caused-by-ga.patch [deleted file]
net/ser2net/patches/0002-dataxfer.c-truncate-error-message-to-fit-the-column-.patch [deleted file]
net/ser2net/patches/0003-dataxfer.c-adjust-Remote-address-column-width.patch [deleted file]
net/ser2net/patches/0004-dataxfer.c-in-case-port-is-not-connected-display-thi.patch [deleted file]
net/shadowsocks-libev/Makefile
net/socat/Makefile
net/squid/Makefile
net/squid/patches/001-cross_compile.patch
net/squid/patches/100-mime.patch [deleted file]
net/sshfs/Makefile
net/sslh/Makefile
net/strongswan/Makefile
net/sysrepo/Makefile
net/sysrepo/files/sysrepo.init
net/tcpproxy/Makefile
net/tcpproxy/patches/100-remove-build-timestamps-build-hostname.patch [new file with mode: 0644]
net/tcpreplay/Makefile
net/tinc/Makefile
net/tor/Makefile
net/tor/patches/001-torrc.patch
net/transmission/Makefile
net/transmission/files/transmission.sysctl [new file with mode: 0644]
net/transmission/patches/030-fix-musl-build.patch [deleted file]
net/transmission/patches/060-fix-foreground-syslog.patch [new file with mode: 0644]
net/uanytun/Makefile
net/uanytun/patches/100-reproducible-builds.patch [new file with mode: 0644]
net/wget/Makefile
net/wireguard/Makefile [deleted file]
net/wireguard/files/wireguard.sh [deleted file]
net/xl2tpd/Makefile
net/xl2tpd/files/options.xl2tpd
net/xl2tpd/patches/100-makefile_opt_flags.patch [deleted file]
net/xl2tpd/patches/110-makefile_dont_build_pfc.patch [deleted file]
net/xl2tpd/patches/120-no-bsd-signal-in-musl.patch [deleted file]
net/xl2tpd/patches/200-xl2tpd-control-fix-xl2tpd-hanged-up-in-fopen.patch [deleted file]
sound/fdk-aac/Config.in [new file with mode: 0644]
sound/fdk-aac/Makefile
sound/lame/Config.in [new file with mode: 0644]
sound/lame/Makefile
sound/lame/patches/001-automake-compat.patch [deleted file]
sound/mpg123/Makefile
sound/opus-tools/Makefile [new file with mode: 0644]
sound/pulseaudio/Makefile
sound/sox/Makefile
sound/sox/patches/020-reproducible-builds.patch [new file with mode: 0644]
utils/acpid/Makefile
utils/at/Makefile
utils/attendedsysupgrade-common/Makefile [new file with mode: 0644]
utils/attendedsysupgrade-common/files/attendedsysupgrade.defaults [new file with mode: 0644]
utils/auc/Makefile [new file with mode: 0644]
utils/auc/src/CMakeLists.txt [new file with mode: 0644]
utils/auc/src/auc.c [new file with mode: 0644]
utils/avrdude/Makefile
utils/avrdude/patches/020-no-cpp-timestamps.patch [new file with mode: 0644]
utils/bash/Makefile
utils/bash/patches/001-compile-fix.patch
utils/bash/patches/002-force-internal-readline.patch
utils/bash/patches/101-upstream-bash43-001.patch [deleted file]
utils/bash/patches/101-upstream-bash44-001.patch [new file with mode: 0644]
utils/bash/patches/102-upstream-bash43-002.patch [deleted file]
utils/bash/patches/102-upstream-bash44-002.patch [new file with mode: 0644]
utils/bash/patches/103-upstream-bash43-003.patch [deleted file]
utils/bash/patches/103-upstream-bash44-003.patch [new file with mode: 0644]
utils/bash/patches/104-upstream-bash43-004.patch [deleted file]
utils/bash/patches/104-upstream-bash44-004.patch [new file with mode: 0644]
utils/bash/patches/105-upstream-bash43-005.patch [deleted file]
utils/bash/patches/105-upstream-bash44-005.patch [new file with mode: 0644]
utils/bash/patches/106-upstream-bash43-006.patch [deleted file]
utils/bash/patches/106-upstream-bash44-006.patch [new file with mode: 0644]
utils/bash/patches/107-upstream-bash43-007.patch [deleted file]
utils/bash/patches/107-upstream-bash44-007.patch [new file with mode: 0644]
utils/bash/patches/108-upstream-bash43-008.patch [deleted file]
utils/bash/patches/108-upstream-bash44-008.patch [new file with mode: 0644]
utils/bash/patches/109-upstream-bash43-009.patch [deleted file]
utils/bash/patches/109-upstream-bash44-009.patch [new file with mode: 0644]
utils/bash/patches/110-upstream-bash43-010.patch [deleted file]
utils/bash/patches/110-upstream-bash44-010.patch [new file with mode: 0644]
utils/bash/patches/111-upstream-bash43-011.patch [deleted file]
utils/bash/patches/111-upstream-bash44-011.patch [new file with mode: 0644]
utils/bash/patches/112-upstream-bash43-012.patch [deleted file]
utils/bash/patches/112-upstream-bash44-012.patch [new file with mode: 0644]
utils/bash/patches/113-upstream-bash43-013.patch [deleted file]
utils/bash/patches/114-upstream-bash43-014.patch [deleted file]
utils/bash/patches/115-upstream-bash43-015.patch [deleted file]
utils/bash/patches/116-upstream-bash43-016.patch [deleted file]
utils/bash/patches/117-upstream-bash43-017.patch [deleted file]
utils/bash/patches/118-upstream-bash43-018.patch [deleted file]
utils/bash/patches/119-upstream-bash43-019.patch [deleted file]
utils/bash/patches/120-upstream-bash43-020.patch [deleted file]
utils/bash/patches/121-upstream-bash43-021.patch [deleted file]
utils/bash/patches/122-upstream-bash43-022.patch [deleted file]
utils/bash/patches/123-upstream-bash43-023.patch [deleted file]
utils/bash/patches/124-upstream-bash43-024.patch [deleted file]
utils/bash/patches/125-upstream-bash43-025.patch [deleted file]
utils/bash/patches/126-upstream-bash43-026.patch [deleted file]
utils/bash/patches/127-upstream-bash43-027.patch [deleted file]
utils/bash/patches/128-upstream-bash43-028.patch [deleted file]
utils/bash/patches/129-upstream-bash43-029.patch [deleted file]
utils/bash/patches/130-upstream-bash43-030.patch [deleted file]
utils/bash/patches/131-upstream-bash43-031.patch [deleted file]
utils/bash/patches/132-upstream-bash43-032.patch [deleted file]
utils/bash/patches/133-upstream-bash43-033.patch [deleted file]
utils/bash/patches/134-upstream-bash43-034.patch [deleted file]
utils/bash/patches/135-upstream-bash43-035.patch [deleted file]
utils/bash/patches/136-upstream-bash43-036.patch [deleted file]
utils/bash/patches/137-upstream-bash43-037.patch [deleted file]
utils/bash/patches/138-upstream-bash43-038.patch [deleted file]
utils/bash/patches/139-upstream-bash43-039.patch [deleted file]
utils/bash/patches/140-upstream-bash43-040.patch [deleted file]
utils/bash/patches/141-upstream-bash43-041.patch [deleted file]
utils/bash/patches/142-upstream-bash43-042.patch [deleted file]
utils/btrfs-progs/Makefile
utils/btrfs-progs/patches/0001-use-pthread_join-instead-of-pthread_tryjoin_np.patch [deleted file]
utils/ccid/Makefile
utils/collectd/Makefile
utils/collectd/patches/100-rrdtool-add-rrasingle-option.patch
utils/collectd/patches/300-delay-first-read-cycle.patch
utils/collectd/patches/400-fix-olsrd-get-all.patch
utils/collectd/patches/500-fix-uptime-reading.patch [deleted file]
utils/collectd/patches/600-fix-libmodbus-detection.patch
utils/collectd/patches/700-disable-sys-capability-check.patch
utils/collectd/patches/900-add-iwinfo-plugin.patch
utils/crconf/Makefile [new file with mode: 0644]
utils/cryptodev-linux/Makefile
utils/cryptodev-linux/files/cryptodev.modules [deleted file]
utils/gawk/Makefile
utils/haveged/Makefile
utils/hd-idle/Makefile
utils/hdparm/Makefile
utils/lvm2/Makefile
utils/lvm2/patches/000-compile.patch
utils/lvm2/patches/002-const-stdio.patch
utils/lxc/Config.in
utils/lxc/Makefile
utils/lxc/patches/002-compile.patch [new file with mode: 0644]
utils/lxc/patches/003-compile.patch [new file with mode: 0644]
utils/lxc/patches/010-compile.patch
utils/lxc/patches/015-getline.patch
utils/lxc/patches/020-lxc-checkconfig.patch
utils/lxc/patches/025-remove-unsupported-option.patch
utils/lxc/patches/030-lxc-download.patch [deleted file]
utils/lxc/patches/035-fix-undefined-lfd.patch [deleted file]
utils/mc/Makefile
utils/minicom/Makefile
utils/minicom/patches/110-reproducible-builds.patch [new file with mode: 0644]
utils/openocd/Makefile
utils/opensc/Makefile
utils/opus-tools/Makefile [deleted file]
utils/rpcd-mod-attendedsysupgrade/Makefile [deleted file]
utils/rpcd-mod-attendedsysupgrade/files/attendedsysupgrade.acl [deleted file]
utils/rpcd-mod-attendedsysupgrade/files/attendedsysupgrade.defaults [deleted file]
utils/rpcd-mod-attendedsysupgrade/files/attendedsysupgrade.rpcd [deleted file]
utils/rpcd-mod-lxc/Makefile
utils/rpcd-mod-lxc/files/lxc.c
utils/rpcd-mod-packagelist/Makefile [deleted file]
utils/rpcd-mod-packagelist/files/packagelist.acl [deleted file]
utils/rpcd-mod-packagelist/files/packagelist.rpcd [deleted file]
utils/screen/Makefile
utils/shadow/Makefile
utils/shadow/patches/003-Check-size-of-uid_t-and-gid_t-using-AC_CHECK_SIZEOF.patch [new file with mode: 0644]
utils/shadow/patches/003-fix-disabling-subids.patch [deleted file]
utils/shadow/patches/004-fix-su-controoling-term.patch
utils/squashfs-tools/Makefile
utils/squashfs-tools/patches/0001-squashfs-tools-fix-fnmatch.h-compatibility-with-musl.patch [deleted file]
utils/squashfs-tools/patches/0002-pseudo.c-add-explicit-stat.h-include.patch [deleted file]
utils/sysstat/Makefile
utils/sysstat/patches/110-remove-sccsid.patch [new file with mode: 0644]
utils/tcsh/Makefile
utils/tcsh/patches/001-sysmalloc.patch [new file with mode: 0644]
utils/tio/Makefile [new file with mode: 0644]
utils/tmux/Makefile
utils/uledd/Makefile [new file with mode: 0644]
utils/uledd/files/uledd.init [new file with mode: 0644]
utils/unzip/Makefile
utils/unzip/patches/010-remove-build-date.patch [new file with mode: 0644]
utils/vim/Makefile
utils/vim/patches/001-support-defining-compilation-date-in-SOURCE_DATE_EPOCH.patch [new file with mode: 0644]
utils/watchcat/files/initd_watchcat
utils/yara/Makefile
utils/zip/Makefile
utils/zip/patches/010-remove-build-date.patch [new file with mode: 0644]
utils/zoneinfo/Makefile
utils/zsh/Makefile

diff --git a/.travis/626471F1.asc b/.travis/626471F1.asc
new file mode 100644 (file)
index 0000000..3a96895
--- /dev/null
@@ -0,0 +1,64 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Comment: LEDE GnuPG key for unattended build jobs
+
+mQINBFeXZ7wBEAC3QZ+jhWrdj2XW9AdZpZrgHETZCW7lXxI3pJ2kS4UXNq+40KR2
+GJOdsXDnLb7ZiHNn6yio6qKLXFD/bimxK+22HSJlc3LSF2kKzNrgKoFR2rIKbL3c
+Us7GpWY8VqGTrfwR6OQNcoWqa1n5/tK9xuqKhfpoA2Eci8K+w5YCzCmnOz2vzbgS
+ptuFshTKYI2Z/DLQZyP+OQkEYPfCdani2KsISn4DTx8xFjmW/sb/zf0isemTwWyK
+Oh76FTa0tYdjTtAv3JHqyr2XkddM/oUSc09baCOfhUdo7Ep5rUqKw7BQsjreBYoZ
+WcL/hmlIksUrFlqo/HRpoBgCZpSjsF/Z9otZpSugMHVVlRCnAKQiWxWAd+V+y2FG
+q79myPgiMkbkaIrCelrUhDFRQ5wTnfAppFolw+xtT9bwdkwxZDNBe6PCYuLqD8wg
+jtDtt3q5UaUOMGJrMDKZ0Wi6ycdl/sM59kLfyBV4ybmYkwOLTlMvOATiyUZeJJZO
+2bTKBvD+izsx3Ea4VLPWYSFmk6QwaOMtj6tcXwBgtljzqMJ0S9Gubmopy3WAkP/m
+/6ETJpuIupqEtvbRTX4O/+qnBgY40aQX7B4NgJi2SypP/WML5v2B2amLlhTcN+we
+ULWyH9KvfKny5mrtG5C9xq1eAgKtB2QEDEbRyz34DWVWGpqIY1mscaNv8wARAQAB
+tFtMRURFIEJ1aWxkIFN5c3RlbSAoTEVERSBHbnVQRyBrZXkgZm9yIHVuYXR0ZW5k
+ZWQgYnVpbGQgam9icykgPGxlZGUtYWRtQGxpc3RzLmluZnJhZGVhZC5vcmc+iQI4
+BBMBAgAiBQJXl2e8AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRDNhLzt
+YmRx8aJ2D/9eRQWekaeX8eAcAgzguFS12ODlg23lJx00d0zLhZcA6LycYJRmFN+M
+0tsVDZ6y7bLy1/h0YFYvYlJk4ZE+6sb4I/GSkMyqeZAy8whELYfEphXVYx0/wgyn
+d57wE0lDo8/zmt3rK1eD0zJioN7cL3A/t3L++al4gwmqtTfUIl96AXc3YBe/rwXS
+i7ShENVKYjTaMugP5BJ9kUZuaIjmXZWvREbURgBMWR7uR56XKJBwDBQMtHq2AoZs
+2iNR3dG8r70Sb/cMSgAqhwDZfeV71r7+Pd+asvxYb0JeNNgZ2ss/BA5yapUKZLgu
+hV6y7JSfHdb7q1t1j/wfqgYtQJB5K31JGxj+yaRxcF8LbvGZBNhaIJV+s4HmTeq4
+yI20pCRNd8lLY80XAISTk8DPwgTLOvMPKbDYW4+/FC8J6qoD9DByQxDduUWn5uD4
+LbVZ96v9+Ltf9LJzaxFVSE/dSsvgFNjo6u29ueG6aTxUIOc4Wi3mC0qNhqoyAbg6
+Xg922EF/sd6hf3aQU9rpcPbcsNognGgrKfyREvMlBsQ9U3pRcKPlG05bfUcayXkh
+59qIVU4kKCaW6LBy1fkBYyY3Nj5eoCAe9fm9ivi58FdI+7sKc2A1fMuVS83B370s
+qAsu6v2rvqYz6nS5VFIWYJmL8kbUmf5FWwbucH7/jr9s3bB0wUHcI7kCDQRXl2h/
+ARAAztMdT5ig5MKM02TFsmGvdc0SQVHPJymPTh6i/XwAbSeaTErvGLP3ke+2cdCj
+MOes4steII5MU6aD57i1zU/6xhZ2Zr8sZ4fCOzfqoI4AOIeeuiO+I5by2P+M+vj2
+v/U7KMWeixFjTkotWcvGGriP1jcRY1FHMrTfq/5lZYNHHzz/2zvszq02/WP+b/Gh
+1Rf1yfr5DlXKw6Q+7fkCg8BWfLichTtHiR0OcO0mtD6ECxz+iqDElbSAeE9Q02fO
+FTF4snHwCJvykHQ4EKudEoXcIEOR8TyH2tKorD821E/DSV9OA9XIBpDHavFQ3GCs
+29GQcqci46nOLn/LWqgTB86sgH4mnQrGsceVYzf8avM8c8TyxkufBd/k01lPn1sK
+/573AWdFRXVmOCMmlxPcI8k1+iGH1C7z0aX43NvhEI3xfbgTK8E/7Klrn/5xXUu2
+UBYov0gKaZRy3LpGF/ySR1pvnHZmUP58my2LDfWDHdHrGmkjLaqyk/+qC9NKwUQB
+S7jV7Mm15B0bkR7grLx+vN5lXVeGwyDL2dbRT0+cH8loHb+lBOR8AbDm4SJXdaRd
+DtPyq85KN+jm+9NToRz+oydL9rmguU5zRcIDtaFiYr7ZtkLJU3U02rp0uf/DdytF
+tzS/YEbpgg2Ui37q55ml707zJL2DvBffy/F2kiNpVfZ4u5cAEQEAAYkEPgQYAQIA
+CQUCV5dofwIbAgIpCRDNhLztYmRx8cFdIAQZAQIABgUCV5dofwAKCRD5NSWoi2mQ
+KQ/PD/9c/snQ2iok9H9PFinYmuOA6tf4Nbn0yX9oOTslDJ8ot6SB4OXGXGeT0lvq
+ytbYVeAlifBElYRVFYZt76dbjhqmsmDMZsYHbaXIYLZSPuTETVE3pZrpWhm9Qkhb
+eEyihAofgWleBmJcd8VXnrzsNkJGNokA6gqZ/ldqJtzMwkeHM58DHo/gFNNNlxe8
+M83PHA0rN48F6DU4tZeEvz+/QGrnn4DWcBhmWo+2ZLvTLI4cB9389j8ks7FFFXLi
+1gnWigWr29uGv8iZpAneY6414cZW3G79wTIwAATRvIvrI9pcvriUrMdOycTcwXOa
+d9eXq/mJdg8dEpKiIA8Vc9UNdT93aZt8r610LbORmdq+wFjEhWvh7xKu9hFm/3UM
+QUaVl3jsIlqZT4G8es+RLHnKVOzLMRovqRKRbsCsXxIxsVqxzhKQ5+wLCpisVNfH
+51WCTSLoAz7s0jKLCSzueUIbhV2vNBM5lFLNCl35UgN1aYuRusI7GyqkPT/A8VWj
+xVxn7o2SBIwyu4hZ4jFsq3qHOygIuRtdOHRX1vREmp7FA3+fVnx0CJUilfnGjhf/
+oydfEC6GuWUn9kTEf2eJsONwQ9gPQ9QC9cFGRFRrVwQcejr7V+DBZSdzY8YLvn7R
+qR3MmlXdpWijqj7noi2C+kbVqbLiX/LWe2axgKE+UTB7lGdl7v25D/99uFIzJmqA
+dhEAEQgb17L7kOV0MOBwFtZ6fElJaQEQV49JiQmgTzALDgXD0ACpT5qoQYCBTwuz
+m2D93ekfMnzxF8PmwW6a2czrG1KoRir2EayhgEoOJuWHLneb5nUc7X3krGNSJ3my
++lMw2QA3wIX7EAS6JJUnZFp7wawecdCekRF9ZE1Z/ZBiUZR17DkbAoYjEYZFxiXA
+cG6sFEM9uTG+y91RcQPq8tY+jw2d76ZjHSnoKjnP2VxsmtiWQ7yLj/5tjrVzQftI
+bbQQTK4V4O4aV2Y1wgkDbNPNJ6t0biQkHQv+4vaLMonOfMgGdWdYJ4hE9nlt61Aq
+GidOnyMxOb+2XpVypOoOPcTyTqe8BUjCcvHQwukZLk3XE7OQoR0wZBFhOr4JCYzT
+xIz9XYrSykZgkZMp8O4zbP+j1ZTXtJEvvPHjOS1HkL1O1H+W98dnl+oQMNQhHvvE
+6UfWEolfuWvBpfP12pUnRQAAyCBql4JAFeoCJEdJGkz8oFOFxv0kCpd7JM1gWEs2
+u0w61+5MelmliHImWiyhgV4XyKW6jeKWIpe9E5L7b8SPI5HHdT7opy3G7aD1XI3k
+jdaIiMnJbq0nSvc5VqRE7Uv0EEcepvFeiuYHYydluxRyNf/ts2JskfEnsOc1JiS+
+GPeIoGmFL85qtFOzc4sqYQGhLj9iMRfmNw==
+=W2Tk
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/.travis/D52BBB6B.asc b/.travis/D52BBB6B.asc
new file mode 100644 (file)
index 0000000..7a001d8
--- /dev/null
@@ -0,0 +1,30 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Comment: LEDE 17.01 "Reboot" public key
+
+mQINBFh9DQ8BEACmjR9z4mEXjTWBTcqHI8U38III55qStU4zX4mtYEm8KjaNyBu0
+F8ghe22IAPQcHuvQh0lzr2AoTYi+ZAUlHrLb3s+YdJJD2KoSD1nXW8PgtoT92tai
+utJjSKsB2ZWJc4nskAYXTkDmhTuuHBEg9hvljhXkrPxmcEDN/v1f5fv82U8JLYwt
+g1mGJmW7SsdKtkJbAmEMCi/MFFA2fxLNV33qGhzm4UeAsUrLIGBjbCtU/BK8Im28
+eAF9VP08OUK/QX7te6K6qumvuEIIc/GG4yatdbxltS1SjWYMS0vpqXm4v50CoMaB
+/XCcdq1zlIyIxQW9UF6xJDLhsHv/3iOginR/vRDbdRWk/YPwlx/d9h9GK309YhXu
+GUK/lrBHIZwZ4VEowYjK76isXmRuU9ZeTK9SeKdIyLzYg5NIXW9cvGR+4NKIqfmE
+xxbVupm7Vc+3n4KUdS2t9SLXdkG+YYmyDabftyuACU2+xeHyKcUBn4yxbrcBp5Rs
+5RgOIn/2BtiEQNSc8AagU1ie57VGErrwrpdW/Cmxrs+KG7Io8Pwv+nG9M53DqPwb
+Zuun75iuni9wAR5IVUsUWdIoalb/I4ht58FDOt2iS/KdVwi8yyCHS8gH1J3MzZWP
+Yy9k0pgup54CTXGv/KzDOAsPZzkwNiziWIVE0N49bZFkO0CXgAufOAEtewARAQAB
+tFNMRURFIFJlbGVhc2UgQnVpbGRlciAoMTcuMDEgIlJlYm9vdCIgU2lnbmluZyBL
+ZXkpIDxsZWRlLWRldkBsaXN0cy5sZWRlLXByb2plY3Qub3JnPokCPgQTAQIAKAUC
+WH0NDwIbAwUJA8JnAAYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQgzxgENUr
+u2tMaA//aRvfrOoMTVtjw+Pru+hBC7IhkusJ70x8gUxSPmHZX0+KvIvILyAeVEho
+TW5lMwwo6b66GcBmP53qu/rech8HyunyyDUYFEvdE/ym3uO6NpE/3N/Z69TJiC+k
+1imElx5njTZkH/qZSClqN8j6ehspywnSKWNfSOM/9K1G7qtWgiqIaDYa+sdtRHjx
+oh4dtKiauUced0C1i7V1vT1ko8iZKWFiwj9GJSaoVxyUwI2fG3iV2qdcinPCL0nU
+BfVIhU5cXMZ6VtVg5Ly6NqUbrhZzVVl8DMnu5z4MOLZWseob4LhK5W0v+DUTezJS
+Cvei+woJ3SIy0CLXe6eDKwbCS5kCaoNbExeTnSz7/Mg14NjREhtWkq79rnHrH9MV
+QAXyjmd3q0D5sDLzk8nQ3fGaH1Zg+o+VECkwEwz4ypctXqRAcHyIkYHmv8rFYlQY
+dJlfs1NgZzk9EWfZ0/RLUdqNx6beKm27r2W1j+gcaM01sk5q9TPZeuNHh8psFlCD
+b5mq6XBstA9NwN9pg5zS+UkfjjMU5FiBIEVv4Lt/dblNkjID/+XUBkHpSAz13GDW
+k0ElkSBgBvz8TSm68EUGTfTVhK21x+1x15/8AUoV8V+4txncMhnJNmrEcKolnMeF
+96xgcoHpPszlHxjiwS6hrFPDyhfYwU9plDI7ojcIleqK98XjRHY=
+=aN5O
+-----END PGP PUBLIC KEY BLOCK-----
index 2dd1c1c8d771129f9934a24c22c02aba44fbf1e6..e66e23fba6f0443e3591410b89c20940c8fc2e17 100755 (executable)
@@ -6,7 +6,7 @@ set -e
 
 SDK_HOME="$HOME/sdk"
 SDK_PATH=https://downloads.lede-project.org/snapshots/targets/ar71xx/generic/
-SDK=lede-sdk-ar71xx-generic_gcc-5.4.0_musl.Linux-x86_64
+SDK=lede-sdk-ar71xx-generic_gcc-5.5.0_musl.Linux-x86_64
 PACKAGES_DIR="$PWD"
 
 echo_red()   { printf "\033[1;31m$*\033[m\n"; }
@@ -45,9 +45,12 @@ download_sdk() {
        wget "$SDK_PATH/sha256sums.gpg" -O sha256sums.asc
 
        # LEDE Build System (LEDE GnuPG key for unattended build jobs)
-       gpg --recv 0xCD84BCED626471F1
+       gpg --import $PACKAGES_DIR/.travis/626471F1.asc
+       echo '54CC74307A2C6DC9CE618269CD84BCED626471F1:6:' | gpg --import-ownertrust
        # LEDE Release Builder (17.01 "Reboot" Signing Key)
-       gpg --recv 0x833C6010D52BBB6B
+       gpg --import $PACKAGES_DIR/.travis/D52BBB6B.asc
+       echo 'B09BE781AE8A0CD4702FDCD3833C6010D52BBB6B:6:' | gpg --import-ownertrust
+
        gpg --verify sha256sums.asc
        grep "$SDK" sha256sums > sha256sums.small
 
@@ -64,8 +67,14 @@ download_sdk() {
 # test_package will run on the `script` step.
 # test_package call make download check for very new/modified package
 test_packages2() {
+       local commit_range=$TRAVIS_COMMIT_RANGE
+       if [ -z "$TRAVIS_PULL_REQUEST_SHA" ]; then
+               echo_blue "Using only the latest commit, since we're not in a Pull Request"
+               commit_range=HEAD~1
+       fi
+
        # search for new or modified packages. PKGS will hold a list of package like 'admin/muninlite admin/monit ...'
-       PKGS=$(git diff --diff-filter=d --name-only "$TRAVIS_COMMIT_RANGE" | grep 'Makefile$' | grep -v '/files/' | awk -F'/Makefile' '{ print $1 }')
+       PKGS=$(git diff --diff-filter=d --name-only "$commit_range" | grep 'Makefile$' | grep -v '/files/' | awk -F'/Makefile' '{ print $1 }')
 
        if [ -z "$PKGS" ] ; then
                echo_blue "No new or modified packages found!"
@@ -139,6 +148,10 @@ EOF
 
 test_commits() {
        RET=0
+       if [ -z "$TRAVIS_PULL_REQUEST_SHA" ]; then
+               echo_blue "Skipping commits tests (not in a Pull Request)"
+               return 0
+       fi
        for commit in $(git rev-list ${TRAVIS_COMMIT_RANGE/.../..}); do
                echo_blue "=== Checking commit '$commit'"
                if git show --format='%P' -s $commit | grep -qF ' '; then
@@ -155,7 +168,7 @@ test_commits() {
                fi
 
                subject="$(git show -s --format=%s $commit)"
-               if echo "$subject" | grep -q -e '^[0-9A-Za-z,/-]\+: ' -e '^Revert '; then
+               if echo "$subject" | grep -q -e '^[0-9A-Za-z,/_-]\+: ' -e '^Revert '; then
                        echo_green "Commit subject line seems ok ($subject)"
                else
                        echo_red "Commit subject line MUST start with '<package name>: ' ($subject)"
@@ -183,20 +196,16 @@ echo_blue "=== Travis ENV"
 env
 echo_blue "=== Travis ENV"
 
-while true; do
-       # if clone depth is too small, git rev-list / diff return incorrect or empty results
-       C="$(git rev-list ${TRAVIS_COMMIT_RANGE/.../..} | tail -n1)" 2>/dev/null
-       [ -n "$C" -a "$C" != "a22de9b74cf9579d1ce7e6cf1845b4afa4277b00" ] && break
-       echo_blue "Fetching 50 commits more"
-       git fetch origin --deepen=50
-done
-
-if [ "$TRAVIS_PULL_REQUEST" = false ] ; then
-       echo "Only Pull Requests are supported at the moment." >&2
-       exit 0
+if [ -n "$TRAVIS_PULL_REQUEST_SHA" ]; then
+       while true; do
+               # if clone depth is too small, git rev-list / diff return incorrect or empty results
+               C="$(git rev-list ${TRAVIS_COMMIT_RANGE/.../..} | tail -n1)" 2>/dev/null
+               [ -n "$C" -a "$C" != "a22de9b74cf9579d1ce7e6cf1845b4afa4277b00" ] && break
+               echo_blue "Fetching 50 commits more"
+               git fetch origin --deepen=50
+       done
 fi
 
-
 if [ $# -ne 1 ] ; then
        cat <<EOF
 Usage: $0 (download_sdk|test_packages)
index fe60796064be98d5016a7c2cfbebbff23d1370f2..f16cab3fda46b3a5ae67bf8babeca0e90994bbcc 100644 (file)
@@ -9,13 +9,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=debootstrap
-PKG_VERSION:=1.0.87
+PKG_VERSION:=1.0.92
 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_HASH:=784f5754f3287ae80715d9100a4ed04e7895be5f7b81b7b2295d335dd69d79fb
+PKG_HASH:=fa58c00529912d2cc187aa5434962376bd5ec00d3e7e9693f505a27b8848fdcf
 PKG_LICENSE:=Unique
 PKG_LICENSE_FILES:=debian/copyright
 
diff --git a/admin/debootstrap/patches/100-busybox_fix.patch b/admin/debootstrap/patches/100-busybox_fix.patch
deleted file mode 100644 (file)
index 5e8db05..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/usr/share/debootstrap/functions
-+++ b/usr/share/debootstrap/functions
-@@ -859,8 +859,6 @@ choose_extractor () {
-       if [ -n "$EXTRACTOR_OVERRIDE" ]; then
-               extractor="$EXTRACTOR_OVERRIDE"
--      elif type dpkg-deb >/dev/null 2>&1; then
--              extractor="dpkg-deb"
-       else
-               extractor="ar"
-       fi
index 4246512c407c5de5634ac3c82c06f2773fd5666e..3c6bf6352f31a94a53e2adf14b06fc07963cddc4 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=monit
-PKG_VERSION:=5.23.0
+PKG_VERSION:=5.24.0
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=dd39fe3a379c02402ba9c44c201b3ba925ebdc8f04225918820607b6c5d56713
-PKG_SOURCE_URL:=http://mmonit.com/monit/dist
+PKG_HASH:=754d1f0e165e5a26d4639a6a83f44ccf839e381f2622e0946d5302fa1f2d2414
+PKG_SOURCE_URL:=https://mmonit.com/monit/dist
 
 PKG_LICENSE:=AGPL-3.0
 PKG_LICENSE_FILES:=COPYING
@@ -28,7 +28,7 @@ define Package/monit/Default
   CATEGORY:=Administration
   DEPENDS:= +libpthread +zlib
   TITLE:=System services monitoring utility
-  URL:=http://mmonit.com/monit/
+  URL:=https://mmonit.com/monit/
   MAINTAINER:=Etienne CHAMPETIER <champetier.etienne@gmail.com>
 endef
 
index 93154e9838c528b0a8a034180e5e4e62ac614ddc..16779a7b1b5f42128560c7c68f093e861a755035 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2017 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:=sudo
-PKG_VERSION:=1.8.14p3
+PKG_VERSION:=1.8.21p2
 PKG_RELEASE:=1
 PKG_LICENSE:=ISC
 PKG_LICENSE_FILES:=doc/LICENSE
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.sudo.ws/dist
-PKG_HASH:=a8a697cbb113859058944850d098464618254804cf97961dee926429f00a1237
+PKG_HASH:=74c5746cd33a814e2431c39faf0d76f7f8a697379bd073862e3b156cf0d76368
 
 PKG_INSTALL:=1
 
index e5e61d1f3f7bfd3a1d7512523513b16f16dd7a13..af5044e0818b1ee1fc90ee68129dd61bbcadc810 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=zabbix
 PKG_VERSION:=3.2.7
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_HASH:=3ea0c299bd69bc728177128740f0476bc1a2c1de438330df5bbd8f5fc6090712
diff --git a/admin/zabbix/patches/110-reproducible-builds.patch b/admin/zabbix/patches/110-reproducible-builds.patch
new file mode 100644 (file)
index 0000000..f7d03fa
--- /dev/null
@@ -0,0 +1,13 @@
+Index: zabbix-3.2.7/src/libs/zbxcommon/str.c
+===================================================================
+--- zabbix-3.2.7.orig/src/libs/zbxcommon/str.c
++++ zabbix-3.2.7/src/libs/zbxcommon/str.c
+@@ -51,7 +51,7 @@ static const char    help_message_footer[]
+ void  version(void)
+ {
+       printf("%s (Zabbix) %s\n", title_message, ZABBIX_VERSION);
+-      printf("Revision %s %s, compilation time: %s %s\n\n", ZABBIX_REVISION, ZABBIX_REVDATE, __DATE__, __TIME__);
++      printf("Revision %s %s\n\n", ZABBIX_REVISION, ZABBIX_REVDATE);
+       puts(copyright_message);
+ }
index bab3130ed824c2327d22ca272f800a501965c287..daaf05ff4b59f28b12fdc82c677bfdb599bfe910 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=lpc21isp
 PKG_VERSION:=197
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 PKG_LICENSE:=LGPL-3.0+
 PKG_LICENSE_FILES:=README gpl.txt lgpl-3.0.txt
 
diff --git a/devel/lpc21isp/patches/100-fix-reproducible-builds.patch b/devel/lpc21isp/patches/100-fix-reproducible-builds.patch
new file mode 100644 (file)
index 0000000..ad07995
--- /dev/null
@@ -0,0 +1,13 @@
+Index: lpc21isp_197/lpc21isp.c
+===================================================================
+--- lpc21isp_197.orig/lpc21isp.c       2017-12-03 06:01:05.854070061 +0100
++++ lpc21isp_197/lpc21isp.c    2017-12-03 06:01:23.326431659 +0100
+@@ -1549,7 +1549,7 @@
+         DebugPrintf(2, "\n"
+                        "Portable command line ISP\n"
+                        "for NXP LPC family and Analog Devices ADUC 70xx\n"
+-                       "Version " VERSION_STR " compiled for " COMPILED_FOR ": " __DATE__ ", " __TIME__ "\n"
++                       "Version " VERSION_STR " compiled for " COMPILED_FOR "\n"
+                        "Copyright (c) by Martin Maurer, 2003-2013, Email: Martin.Maurer@clibb.de\n"
+                        "Portions Copyright (c) by Aeolus Development 2004, www.aeolusdevelopment.com\n"
+                        "\n");
index 55e2d5eb1adf46ed04870cf5295df1934edad439..4fbb9dc933440864fd4a6395bfda32a1cfcfe1e2 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=lua-mosquitto
-PKG_VERSION:=0.2
+PKG_VERSION:=0.3
 PKG_RELEASE:=1
 PKG_LICENSE:=MIT
 PKG_LICENSE_FILES:=LICENSE
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_MIRROR_HASH:=c93aaf17c228917db2cc9ab1d9124971eecd818ec4da9d8f8609ca4a4e372beb
+PKG_MIRROR_HASH:=104a143131812a507e74f9debde45614d006b6ea6c3b0265b83060b14b9d3a34
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
 PKG_SOURCE_URL:=https://github.com/flukso/lua-mosquitto.git
@@ -28,7 +28,7 @@ define Package/lua-mosquitto
     CATEGORY:=Languages
     TITLE:=Lua-mosquitto
     DEPENDS:=+libmosquitto +lua
-    MAINTAINER:=Karl Palsson <karlp@remake.is>
+    MAINTAINER:=Karl Palsson <karlp@etactica.com>
 endef
 
 define Package/lua-mosquitto/description
index 0128428ef3c9e2e254e2ea80ec16e38543867e17..54dee23ea857216422a48a83a2a399b80b284e99 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=perl-cgi
-PKG_VERSION:=4.36
+PKG_VERSION:=4.38
 PKG_RELEASE:=1
 
 PKG_SOURCE_URL:=http://www.cpan.org/authors/id/L/LE/LEEJO
 PKG_SOURCE:=CGI-$(PKG_VERSION).tar.gz
-PKG_HASH:=fefe84d4f2461e867f9be80f3f988e17bcbbcb4e306952cf2fd1dea7e4515490
+PKG_HASH:=8c58f4a529bb92a914b22b7e64c5e31185c9854a4070a6dfad44fe5cc248e7d4
 
 PKG_LICENSE:=GPL Artistic-2.0
 PKG_MAINTAINER:=Marcel Denia <naoir@gmx.net>, \
index 22f781423ac6ab49190854306b2e1f1b23e3820d..bc5913da718d7ed2d0dc1f2944eef3dc8437533a 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=perl-inline-c
-PKG_VERSION:=0.76
+PKG_VERSION:=0.78
 PKG_RELEASE:=1
 
-PKG_SOURCE_URL:=http://www.cpan.org/authors/id/I/IN/INGY
+PKG_SOURCE_URL:=http://www.cpan.org/authors/id/T/TI/TINITA
 PKG_SOURCE:=Inline-C-$(PKG_VERSION).tar.gz
-PKG_HASH:=22e9713b4d331d3c49e4a9a9f012dbf84cec25a01e5da4f57091be287f1a9a35
+PKG_HASH:=9a7804d85c01a386073d2176582b0262b6374c5c0341049da3ef84c6f53efbc7
 
 PKG_LICENSE:=GPL-1.0+ Artistic-1.0-Perl
 PKG_MAINTAINER:=Marcel Denia <naoir@gmx.net>
@@ -33,7 +33,7 @@ define Package/perl-inline-c
   CATEGORY:=Languages
   TITLE:=C Language Support for Inline
   URL:=http://search.cpan.org/dist/Inline-C/
-  DEPENDS:=perl +perl-inline +perl-parse-recdescent +perlbase-config +perlbase-cwd +perlbase-data +perlbase-essential +perlbase-extutils +perlbase-file +perlbase-if
+  DEPENDS:=perl +perl-inline +perl-parse-recdescent +perlbase-config +perlbase-cwd +perlbase-data +perlbase-essential +perlbase-file +perlbase-if
 endef
 
 define Host/Configure
diff --git a/lang/perl-inline-c/patches/010-makefile_pl-dont-eval-undef.patch b/lang/perl-inline-c/patches/010-makefile_pl-dont-eval-undef.patch
new file mode 100644 (file)
index 0000000..50b764b
--- /dev/null
@@ -0,0 +1,8 @@
+--- a/Makefile.PL      2017-05-30 14:58:53.000000000 -0600
++++ b/Makefile.PL      2017-11-07 13:40:05.172119764 -0700
+@@ -82,3 +82,5 @@ package
+ MY;
+ use File::ShareDir::Install qw(postamble);
+ }
++
++1;
diff --git a/lang/perl-text-csv_xs/Makefile b/lang/perl-text-csv_xs/Makefile
new file mode 100644 (file)
index 0000000..1fb54d1
--- /dev/null
@@ -0,0 +1,48 @@
+#
+# Copyright (C) 2017 Philip Prindeville, Redfish Solutions, LLC
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=perl-text-csv_xs
+PKG_VERSION:=1.34
+PKG_RELEASE:=1
+
+PKG_SOURCE_URL:=http://www.cpan.org/authors/id/H/HM/HMBRAND/
+PKG_SOURCE:=Text-CSV_XS-$(PKG_VERSION).tgz
+PKG_HASH:=ea3aa6fe50e8ef9c07f4304ace98fca413c9c6cf60d84efc32c314b902e8a134
+
+PKG_LICENSE:=GPL-1.0+ Artistic-1.0-Perl
+PKG_MAINTAINER:=Philip Prindeville <philipp@redfish-solutions.com>
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/perl/Text-CSV_XS-$(PKG_VERSION)
+
+include $(INCLUDE_DIR)/package.mk
+include ../perl/perlmod.mk
+
+define Package/perl-text-csv_xs
+  SUBMENU:=Perl
+  SECTION:=lang
+  CATEGORY:=Languages
+  TITLE:=Text comma-separated values manipulation routines
+  URL:=http://search.cpan.org/dist/Text-CSV_XS/
+  DEPENDS:=perl +perlbase-essential +perlbase-config +perlbase-io +perlbase-dynaloader
+endef
+
+define Build/Configure
+        $(call perlmod/Configure,,)
+endef
+
+define Build/Compile
+        $(call perlmod/Compile,,)
+endef
+
+define Package/perl-text-csv_xs/install
+        $(call perlmod/Install,$(1),Text Text/CSV_XS.pm auto/Text/CSV_XS)
+endef
+
+
+$(eval $(call BuildPackage,perl-text-csv_xs))
index aa182b24455061f709993adbdd36d43caaceab6b..3f043e4ffbe596c0a4c991dc16048441d721d412 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=perl-uri
-PKG_VERSION:=1.71
+PKG_VERSION:=1.72
 PKG_RELEASE:=1
 
 PKG_SOURCE_URL:=http://www.cpan.org/authors/id/E/ET/ETHER/
 PKG_SOURCE:=URI-$(PKG_VERSION).tar.gz
-PKG_HASH:=9c8eca0d7f39e74bbc14706293e653b699238eeb1a7690cc9c136fb8c2644115
+PKG_HASH:=35f14431d4b300de4be1163b0b5332de2d7fbda4f05ff1ed198a8e9330d40a32
 
 PKG_LICENSE:=GPL-1.0+ Artistic-1.0-Perl
 PKG_MAINTAINER:=Marcel Denia <naoir@gmx.net>
index 6f07b49faea24aab2be3a25f224c4b044f76917b..d265525a7f4b99fa3c041abc95423b50e18b69ef 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=perl
-PKG_VERSION:=5.24.1
+PKG_VERSION:=5.26.1
 PKG_RELEASE:=1
 
 PKG_SOURCE_URL:=\
@@ -19,7 +19,7 @@ PKG_SOURCE_URL:=\
                https://mirrors.sonic.net/cpan/src/5.0 \
                https://www.cpan.org/src/5.0
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_HASH:=03a77bac4505c270f1890ece75afc7d4b555090b41aa41ea478747e23b2afb3f
+PKG_HASH:=fe8208133e73e47afc3251c08d2c21c5a60160165a8ab8b669c43a420e4ec680
 
 PKG_LICENSE:=GPL-1.0+ Artistic-1.0-Perl
 PKG_LICENSE_FILES:=Copying Artistic README
@@ -96,7 +96,7 @@ define Build/Configure
                                        -Dowrt:gccversion=$(CONFIG_GCC_VERSION) \
                                        -Dowrt:target_cross='$(TARGET_CROSS)' \
                                        -Dowrt:cflags='$(TARGET_CFLAGS_PERL) $(TARGET_CPPFLAGS_PERL)' \
-                                       -Dowrt:ldflags='-rdynamic $(TARGET_LDFLAGS)' \
+                                       -Dowrt:ldflags='$(TARGET_LDFLAGS)' \
                                        -Dowrt:libc=$(subst uClibc,uclibc,$(CONFIG_LIBC)) \
                                        -Dowrt:ipv6=$(if $($(CONFIG_IPV6)),define,undef) \
                                        -Dowrt:threads=$(if $(CONFIG_PERL_THREADS),yes,no) \
index 75fe25460c7e2f971775ea6241d3cc718fade86c..0f94d4ee2565635165c76f4fe17536dc8b10e06b 100644 (file)
@@ -6,6 +6,7 @@ ccsymbols='__ARM_ARCH_3__=1'
 cppccsymbols=''
 cppsymbols='__ELF__=1 _FILE_OFFSET_BITS=64 __GLIBC__=2 __GLIBC_MINOR__=2 __GNUC__=3 __GNUC_MINOR__=4 __GNU_LIBRARY__=6 _LARGEFILE_SOURCE=1 _POSIX_C_SOURCE=199506L _POSIX_SOURCE=1 __STDC__=1 __USE_BSD=1 __USE_FILE_OFFSET64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_SVID=1 linux=1 __linux=1 __linux__=1 unix=1 __unix=1 __unix__=1'
 d_casti32='define'
+d_double_style_ieee='define'
 d_modflproto='undef'
 doublekind='3'
 fpossize='20'
index 081300c9429a88befc8bc684535f420dff01d10c..d23a7d010b2fd89d4f29def3a5f5832ea6e8f810 100644 (file)
@@ -6,6 +6,7 @@ ccsymbols='__ARM_ARCH_3__=1'
 cppccsymbols=''
 cppsymbols='__ELF__=1 _FILE_OFFSET_BITS=64 __GLIBC__=2 __GLIBC_MINOR__=2 __GNUC__=3 __GNUC_MINOR__=4 __GNU_LIBRARY__=6 _LARGEFILE_SOURCE=1 _POSIX_C_SOURCE=199506L _POSIX_SOURCE=1 __STDC__=1 __USE_BSD=1 __USE_FILE_OFFSET64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_SVID=1 linux=1 __linux=1 __linux__=1 unix=1 __unix=1 __unix__=1'
 d_casti32='define'
+d_double_style_ieee='define'
 d_modflproto='undef'
 doublekind='4'
 fpossize='20'
index 5059afd368c38825e8a522070dd3c9165e220f9e..7bcfc859c44ed543991e863d605768f73da5b6eb 100644 (file)
@@ -133,6 +133,14 @@ d_dlerror='define'
 d_dlopen='define'
 d_dlsymun='undef'
 d_dosuid='undef'
+d_double_has_inf='define'
+d_double_has_nan='define'
+d_double_has_negative_zero='define'
+d_double_has_subnormals='define'
+d_double_style_cray='undef'
+d_double_style_ibm='undef'
+d_double_style_ieee='define'
+d_double_style_vax='undef'
 d_drand48proto='define'
 d_dup2='define'
 d_duplocale='define'
@@ -195,6 +203,7 @@ d_fsync='define'
 d_ftello='define'
 d_ftime='undef'
 d_futimes='undef'
+d_gai_strerror='define'
 d_gdbm_ndbm_h_uses_prototypes='undef'
 d_gdbmndbm_h_uses_prototypes='undef'
 d_getaddrinfo='define'
@@ -283,6 +292,11 @@ d_lockf='define'
 d_log1p='define'
 d_log2='define'
 d_logb='define'
+d_long_double_style_ieee='undef'
+d_long_double_style_ieee_doubledouble='undef'
+d_long_double_style_ieee_extended='undef'
+d_long_double_style_ieee_std='undef'
+d_long_double_style_vax='undef'
 d_longdbl='define'
 d_longlong='define'
 d_lrint='define'
@@ -365,6 +379,7 @@ d_pwpasswd='define'
 d_pwquota='undef'
 d_qgcvt='undef'
 d_quad='define'
+d_querylocale='undef'
 d_re_comp='undef'
 d_readdir='define'
 d_readlink='define'
@@ -478,6 +493,7 @@ d_strcoll='define'
 d_strctcpy='define'
 d_strerrm='strerror(e)'
 d_strerror='define'
+d_strerror_l='define'
 d_strftime='define'
 d_strlcat='define'
 d_strlcpy='define'
@@ -547,6 +563,7 @@ db_prefixtype='size_t'
 db_version_major=''
 db_version_minor=''
 db_version_patch=''
+default_inc_excludes_dot='define'
 defvoidused='15'
 direntrytype='struct dirent'
 dlext='so'
@@ -699,6 +716,7 @@ i_values='define'
 i_varargs='undef'
 i_varhdr='stdarg.h'
 i_vfork='undef'
+i_xlocale='undef'
 ignore_versioned_solibs='y'
 inc_version_list=' '
 inc_version_list_init='0'
@@ -1006,9 +1024,9 @@ full_ar="${owrt:target_cross}ar"
 cppflags="$owrt:cflags"
 ccflags="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $owrt:cflags"
 ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
-ccdlflags="-fPIC -Wl,-rpath,$owrt:perllibpath/CORE"
+ccdlflags="-fPIC -rdynamic -Wl,-rpath,$owrt:perllibpath/CORE"
 cccdlflags='-fPIC'
-ldflags=''
+ldflags="$owrt:ldflags"
 ldflags_uselargefiles=''
 lddlflags="-shared $owrt:ldflags"
 
index b44c64e2c70c2a0e21fae4d3175f7f240d794c90..1ed70395663cd512ce0b3879621366d95b912aa4 100644 (file)
@@ -6,6 +6,9 @@ ccsymbols=''
 cppccsymbols=''
 cppsymbols='__ELF__=1 _FILE_OFFSET_BITS=64 __GLIBC__=2 __GLIBC_MINOR__=2 __GNUC__=3 __GNUC_MINOR__=4 __GNU_LIBRARY__=6 _LARGEFILE_SOURCE=1 _POSIX_C_SOURCE=199506L _POSIX_SOURCE=1 __STDC__=1 __USE_BSD=1 __USE_FILE_OFFSET64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_SVID=1 i386=1 __i386=1 __i386__=1 linux=1 __linux=1 __linux__=1 unix=1 __unix=1 __unix__=1'
 d_casti32='undef'
+d_double_style_ieee='define'
+d_long_double_style_ieee='define'
+d_long_double_style_ieee_extended='define'
 d_modflproto='define'
 doublekind='3'
 fpossize='20'
index 05e807b30fc44f2a908ffed2a799194205ddd051..0ed9eb1c45aa1dc5a6be2d10adc009776156bac0 100644 (file)
@@ -6,6 +6,7 @@ ccsymbols=''
 cppccsymbols=''
 cppsymbols='__ELF__=1 _FILE_OFFSET_BITS=64 __GLIBC__=2 __GLIBC_MINOR__=2 __GNUC__=3 __GNUC_MINOR__=4 __GNU_LIBRARY__=6 LANGUAGE_C=1 _LANGUAGE_C=1 __LANGUAGE_C=1 __LANGUAGE_C__=1 _LARGEFILE_SOURCE=1 MIPSEL=1 _MIPSEL=1 __MIPSEL=1 __MIPSEL__=1 _MIPS_FPSET=16 _MIPS_ISA=_MIPS_ISA_MIPS1 _MIPS_SIM=1 _MIPS_SZINT=32 _MIPS_SZLONG=32 _MIPS_SZPTR=32 __PIC__=1 _POSIX_C_SOURCE=199506L _POSIX_SOURCE=1 R3000=1 _R3000=1 __R3000=1 __R3000__=1 __STDC__=1 __USE_BSD=1 __USE_FILE_OFFSET64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_SVID=1 linux=1 __linux=1 __linux__=1 mips=1 _mips=1 __mips=1 __mips__=1 __pic__=1 unix=1 __unix=1 __unix__=1'
 d_casti32='define'
+d_double_style_ieee='define'
 d_modflproto='undef'
 doublekind='4'
 fpossize='24'
index 89875f7d2358604feb0d994dc5c310d045456484..470cb4e37494480ef2654a58d68e16be353c7735 100644 (file)
@@ -6,6 +6,8 @@ ccsymbols=''
 cppccsymbols=''
 cppsymbols=''
 d_casti32='define'
+d_double_style_ieee='define'
+d_long_double_style_ieee_doubledouble='define'
 d_modflproto='undef'
 doublekind='4'
 fpossize='24'
index d209a0de28a71ffb4575c8bef08ac4f39e6d34dd..3c5dada77b063eae8951b65a0b8f48b504b5aba9 100644 (file)
@@ -6,6 +6,7 @@ ccsymbols=''
 cppccsymbols=''
 cppsymbols='__ELF__=1 _FILE_OFFSET_BITS=64 __GLIBC__=2 __GLIBC_MINOR__=2 __GNUC__=3 __GNUC_MINOR__=4 __GNU_LIBRARY__=6 LANGUAGE_C=1 _LANGUAGE_C=1 __LANGUAGE_C=1 __LANGUAGE_C__=1 _LARGEFILE_SOURCE=1 MIPSEL=1 _MIPSEL=1 __MIPSEL=1 __MIPSEL__=1 _MIPS_FPSET=16 _MIPS_ISA=_MIPS_ISA_MIPS1 _MIPS_SIM=1 _MIPS_SZINT=32 _MIPS_SZLONG=32 _MIPS_SZPTR=32 __PIC__=1 _POSIX_C_SOURCE=199506L _POSIX_SOURCE=1 R3000=1 _R3000=1 __R3000=1 __R3000__=1 __STDC__=1 __USE_BSD=1 __USE_FILE_OFFSET64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_SVID=1 linux=1 __linux=1 __linux__=1 mips=1 _mips=1 __mips=1 __mips__=1 __pic__=1 unix=1 __unix=1 __unix__=1'
 d_casti32='define'
+d_double_style_ieee='define'
 d_modflproto='undef'
 doublekind='3'
 fpossize='24'
index 33af767fc5512c49000a77c9c6d8f1a1ad39fec2..287ce6c6364d0fb02f89d579e0794e0009f77f20 100644 (file)
@@ -6,6 +6,7 @@ ccsymbols='__gnu_linux__=1 __linux=1 __linux__=1 __unix=1 __unix__=1 system=linu
 cppccsymbols='linux=1 unix=1'
 cppsymbols='_BIG_ENDIAN=1 __BIG_ENDIAN__=1 __ELF__=1 _FILE_OFFSET_BITS=64 __GLIBC__=2 __GLIBC_MINOR__=2 __GNUC__=3 __GNUC_MINOR__=4 __GNU_LIBRARY__=6 _LARGEFILE_SOURCE=1 _POSIX_C_SOURCE=199506L _POSIX_SOURCE=1 __STDC__=1 __USE_BSD=1 __USE_FILE_OFFSET64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_SVID=1 __linux=1 __linux__=1 __unix=1 __unix__=1'
 d_casti32='undef'
+d_double_style_ieee='define'
 d_modflproto='undef'
 doublekind='4'
 fpossize='24'
index 377ceec9c4268b464ba41425538282e96bec2ae2..c8ebd4c649ea1a928b06288b255fd5cd05ce6d50 100644 (file)
@@ -1,11 +1,11 @@
 # Set the version here
 PERL_REVISION=5
-PERL_VERSION=24
+PERL_VERSION=26
 PERL_SUBVERSION=1
 
 # (api_revison, api_version, api_subversion) = (revision, version, 0) usually
 PERL_API_REVISION=5
-PERL_API_VERSION=24
+PERL_API_VERSION=26
 PERL_API_SUBVERSION=0
 
 known_extensions='B Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/Glob Filter/Util/Call GDBM_File Hash/Util I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Text/Soundex Time/HiRes Time/Piece Unicode/Normalize Win32 Win32API/File Win32CORE XS/APItest XS/Typemap attrs re threads threads/shared Hash/Util/FieldHash'
index a9cb58157370609c1fc0f5071f2d009a262b9825..ac16efc466e8f034e528494dd4705bfcad5be62f 100644 (file)
@@ -6,6 +6,9 @@ ccsymbols=''
 cppccsymbols=''
 cppsymbols='__ELF__=1 _LP64=1 __FLT_EVAL_METHOD__=0 __FXSR__=1 __GCC_ATOMIC_LLONG_LOCK_FREE=2 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8=1 __INT64_MAX__=9223372036854775807L __INT64_TYPE__=long\ int __INTMAX_MAX__=9223372036854775807L __INTMAX_TYPE__=long\ int __INTPTR_MAX__=9223372036854775807L __INTPTR_TYPE__=long\ int __INT_FAST16_MAX__=9223372036854775807L __INT_FAST16_TYPE__=long\ int __INT_FAST32_MAX__=9223372036854775807L __INT_FAST32_TYPE__=long\ int __INT_FAST64_MAX__=9223372036854775807L __INT_FAST64_TYPE__=long\ int __INT_LEAST64_MAX__=9223372036854775807L __INT_LEAST64_TYPE__=long\ int __LONG_MAX__=9223372036854775807L __LP64__=1 __MMX__=1 __PTRDIFF_MAX__=9223372036854775807L __PTRDIFF_TYPE__=long\ int __SIZEOF_INT128__=16 __SIZEOF_LONG_DOUBLE__=16 __SIZEOF_LONG__=8 __SIZEOF_POINTER__=8 __SIZEOF_PTRDIFF_T__=8 __SIZEOF_SIZE_T__=8 __SIZE_MAX__=18446744073709551615UL __SIZE_TYPE__=long\ unsigned\ int __SSE2_MATH__=1 __SSE2__=1 __SSE_MATH__=1 __SSE__=1 __UINT64_MAX__=18446744073709551615UL __UINT64_TYPE__=long\ unsigned\ int __UINTMAX_MAX__=18446744073709551615UL __UINTMAX_TYPE__=long\ unsigned\ int __UINTPTR_MAX__=18446744073709551615UL __UINTPTR_TYPE__=long\ unsigned\ int __UINT_FAST16_MAX__=18446744073709551615UL __UINT_FAST16_TYPE__=long\ unsigned\ int __UINT_FAST32_MAX__=18446744073709551615UL __UINT_FAST32_TYPE__=long\ unsigned\ int __UINT_FAST64_MAX__=18446744073709551615UL __UINT_FAST64_TYPE__=long\ unsigned\ int __UINT_LEAST64_MAX__=18446744073709551615UL __UINT_LEAST64_TYPE__=long\ unsigned\ int __WCHAR_MAX__=2147483647 __WCHAR_MIN__=(-2147483647\ -\ 1) __WCHAR_TYPE__=int __amd64=1 __amd64__=1 __code_model_small__=1 __k8=1 __k8__=1 __x86_64=1 __x86_64__=1 _FILE_OFFSET_BITS=64 __GLIBC__=2 __GLIBC_MINOR__=2 __GNUC__=3 __GNUC_MINOR__=4 __GNU_LIBRARY__=6 _LARGEFILE_SOURCE=1 _POSIX_C_SOURCE=199506L _POSIX_SOURCE=1 __STDC__=1 __USE_BSD=1 __USE_FILE_OFFSET64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_SVID=1 linux=1 __linux=1 __linux__=1 unix=1 __unix=1 __unix__=1'
 d_casti32='undef'
+d_double_style_ieee='define'
+d_long_double_style_ieee='define'
+d_long_double_style_ieee_extended='define'
 d_modflproto='define'
 doublekind='3'
 fpossize='16'
diff --git a/lang/perl/patches/020-host-libc-dir-moved-debian+derivatives.patch b/lang/perl/patches/020-host-libc-dir-moved-debian+derivatives.patch
deleted file mode 100644 (file)
index 956466d..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
---- a/hints/linux.sh
-+++ b/hints/linux.sh
-@@ -221,6 +221,24 @@ case "$libc" in
-     ;;
- esac
-+# Ubuntu 11.04 (and later, presumably) doesn't keep most libraries
-+# (such as -lm) in /lib or /usr/lib.  So we have to ask gcc to tell us
-+# where to look.  We don't want gcc's own libraries, however, so we
-+# filter those out.
-+# This could be conditional on Unbuntu, but other distributions may
-+# follow suit, and this scheme seems to work even on rather old gcc's.
-+# This unconditionally uses gcc because even if the user is using another
-+# compiler, we still need to find the math library and friends, and I don't
-+# know how other compilers will cope with that situation.
-+# Still, as an escape hatch, allow Configure command line overrides to
-+# plibpth to bypass this check.
-+case "$plibpth" in
-+'') plibpth=`gcc -print-search-dirs | grep libraries |
-+      cut -f2- -d= | tr ':' $trnl | grep -v 'gcc'`
-+    plibpth="$plibpth"  # Collapse all entries on one line
-+    ;;
-+esac
-+
- # Are we using ELF?  Thanks to Kenneth Albanowski <kjahds@kjahds.com>
- # for this test.
- cat >try.c <<'EOM'
index b1d9994b5e91ee303f4c23db0b4766f1f1a865f2..147c2d38faa5d471266332760f63154fbe0d1328 100644 (file)
@@ -1,6 +1,6 @@
 --- a/Makefile.SH
 +++ b/Makefile.SH
-@@ -333,22 +333,11 @@ MANIFEST_SRT = MANIFEST.srt
+@@ -334,22 +334,11 @@ MANIFEST_SRT = MANIFEST.srt
  
  !GROK!THIS!
  
@@ -17,8 +17,8 @@
 +$spitshell >>$Makefile <<!GROK!THIS!
  # Macros to invoke a copy of our fully operational perl during the build.
  PERL_EXE = perl\$(EXE_EXT)
--RUN_PERL = \$(LDLIBPTH) \$(RUN) ./perl\$(EXE_EXT) -Ilib
-+RUN_PERL = \$(LDLIBPTH) \$(RUN) ./miniperl\$(EXE_EXT) -Ilib
+-RUN_PERL = \$(LDLIBPTH) \$(RUN) ./perl\$(EXE_EXT) -Ilib -I.
++RUN_PERL = \$(LDLIBPTH) \$(RUN) ./miniperl\$(EXE_EXT) -Ilib -I.
  !GROK!THIS!
 -      ;;
 -esac
diff --git a/lang/perl/patches/900-use-rm-force.patch b/lang/perl/patches/900-use-rm-force.patch
new file mode 100644 (file)
index 0000000..da79f7a
--- /dev/null
@@ -0,0 +1,285 @@
+--- a/Makefile.SH      2017-10-17 11:59:52.938763142 -0600
++++ b/Makefile.SH      2017-10-17 12:13:46.202555604 -0600
+@@ -270,6 +270,7 @@ LNS = $lns
+ # NOTE: some systems don't grok "cp -f". XXX Configure test needed?
+ CPS = $cp
+ RMS = rm -f
++RMS_R = rm -rf
+ ranlib = $ranlib
+ # The following are mentioned only to make metaconfig include the
+@@ -731,7 +731,7 @@ bitcount.h: generate_uudmap$(HOST_EXE_EX
+       ./generate_uudmap$(HOST_EXE_EXT) $(generated_headers)
+ generate_uudmap$(HOST_EXE_EXT): generate_uudmap$(OBJ_EXT)
+-      -@rm generate_uudmap$(HOST_EXE_EXT)
++      @$(RMS) generate_uudmap$(HOST_EXE_EXT)
+       $(LNS) $(HOST_GENERATE) generate_uudmap$(HOST_EXE_EXT)
+ !NO!SUBS!
+@@ -871,26 +872,26 @@ mydtrace.h: $(DTRACE_H)
+       define)
+               $spitshell >>$Makefile <<'!NO!SUBS!'
+ $(DTRACE_MINI_O): perldtrace.d $(miniperl_objs_nodt)
+-      -rm -rf mpdtrace
++      $(RMS_R) mpdtrace
+       mkdir mpdtrace
+       cp $(miniperl_objs_nodt) mpdtrace/
+       $(DTRACE) -G -s perldtrace.d -o $(DTRACE_MINI_O) $(miniperl_dtrace_objs)
+ $(DTRACE_PERLLIB_O): perldtrace.d $(perllib_objs_nodt)
+-      -rm -rf libpdtrace
++      $(RMS_R) libpdtrace
+       mkdir libpdtrace
+       cp $(perllib_objs_nodt) libpdtrace/
+       $(DTRACE) -G -s perldtrace.d -o $(DTRACE_PERLLIB_O) $(perllib_dtrace_objs)
+ $(DTRACE_MAIN_O): perldtrace.d perlmain$(OBJ_EXT)
+-      -rm -rf maindtrace
++      $(RMS_R) maindtrace
+       mkdir maindtrace
+       cp perlmain$(OBJ_EXT) maindtrace/
+       $(DTRACE) -G -s perldtrace.d -o $(DTRACE_MAIN_O) $(perlmain_dtrace_objs) ||           \
+         ( $(ECHO) "No probes in perlmain$(OBJ_EXT), generating a dummy $(DTRACE_MAIN_O)" && \
+           $(ECHO) >dtrace_main.c &&                                                         \
+           `$(CCCMD)` $(PLDLFLAGS) dtrace_main.c &&                                          \
+-           rm -f dtrace_main.c )
++           $(RMS) dtrace_main.c )
+ !NO!SUBS!
+               ;;
+@@ -901,13 +902,13 @@ $(LIBPERL): $& $(perllib_dep) $(DYNALOAD
+       case "$useshrplib" in
+       true)
+               $spitshell >>$Makefile <<'!NO!SUBS!'
+-      rm -f $@
++      $(RMS) $@
+       $(LD) -o $@ $(SHRPLDFLAGS) $(perllib_objs) $(DYNALOADER) $(libs)
+ !NO!SUBS!
+               case "$osname" in
+               aix)
+                       $spitshell >>$Makefile <<'!NO!SUBS!'
+-      rm -f libperl$(OBJ_EXT)
++      $(RMS) libperl$(OBJ_EXT)
+       mv $@ libperl$(OBJ_EXT)
+       $(AR) qv $(LIBPERL) libperl$(OBJ_EXT)
+ !NO!SUBS!
+@@ -916,7 +917,7 @@ $(LIBPERL): $& $(perllib_dep) $(DYNALOAD
+               ;;
+       *)
+               $spitshell >>$Makefile <<'!NO!SUBS!'
+-      rm -f $(LIBPERL)
++      $(RMS) $(LIBPERL)
+       $(AR) rc $(LIBPERL) $(perllib_objs) $(DYNALOADER)
+       @$(ranlib) $(LIBPERL)
+ !NO!SUBS!
+@@ -949,7 +950,7 @@ $(MINIPERL_EXE): lib/buildcustomize.pl
+       amigaos*)
+               $spitshell >>$Makefile <<'!NO!SUBS!'
+ lib/buildcustomize.pl: $& $(miniperl_objs) write_buildcustomize.pl
+-      -@rm -f miniperl.xok
++      @$(RMS) miniperl.xok
+       $(CC) $(CLDFLAGS) -o $(MINIPERL_EXE) \
+           $(miniperl_objs) $(libs)
+ #     $(LDLIBPTH) ./miniperl$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
+@@ -987,7 +988,7 @@ NAMESPACEFLAGS = -force_flat_namespace
+               esac
+               $spitshell >>$Makefile <<'!NO!SUBS!'
+ lib/buildcustomize.pl: $& $(miniperl_objs) write_buildcustomize.pl
+-      -@rm -f miniperl.xok
++      @$(RMS) miniperl.xok
+       $(CC) $(CLDFLAGS) $(NAMESPACEFLAGS) -o $(MINIPERL_EXE) \
+           $(miniperl_objs) $(libs)
+       $(LDLIBPTH) ./miniperl$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
+@@ -998,8 +999,8 @@ lib/buildcustomize.pl: $& $(miniperl_obj
+               if test "X$hostperl" != X; then
+                       $spitshell >>$Makefile <<!GROK!THIS!
+ lib/buildcustomize.pl: \$& \$(miniperl_dep) write_buildcustomize.pl
+-      -@rm -f miniperl.xok
+-      -@rm \$(MINIPERL_EXE)
++      @\$(RMS) miniperl.xok
++      @\$(RMS) \$(MINIPERL_EXE)
+       \$(LNS) \$(HOST_PERL) \$(MINIPERL_EXE)
+       \$(LDLIBPTH) ./miniperl\$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
+       \$(MINIPERL) -f write_buildcustomize.pl 'osname' "$osname"
+@@ -1007,7 +1008,7 @@ lib/buildcustomize.pl: \$& \$(miniperl_d
+               else
+                       $spitshell >>$Makefile <<'!NO!SUBS!'
+ lib/buildcustomize.pl: $& $(miniperl_dep) write_buildcustomize.pl
+-      -@rm -f miniperl.xok
++      @$(RMS) miniperl.xok
+       $(CC) $(CLDFLAGS) -o $(MINIPERL_EXE) \
+           $(miniperl_objs) $(libs)
+       $(LDLIBPTH) ./miniperl$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
+@@ -1020,7 +1021,7 @@ lib/buildcustomize.pl: $& $(miniperl_dep
+       $spitshell >>$Makefile <<'!NO!SUBS!'
+ $(PERL_EXE): $& $(perlmain_dep) $(LIBPERL) $(static_ext) ext.libs $(PERLEXPORT) write_buildcustomize.pl
+-      -@rm -f miniperl.xok
++      @$(RMS) miniperl.xok
+ !NO!SUBS!
+         case $osname in
+@@ -1114,8 +1115,8 @@ pod/perl5261delta.pod: pod/perldelta.pod
+       $(LNS) perldelta.pod pod/perl5261delta.pod
+ extra.pods: $(MINIPERL_EXE)
+-      -@test ! -f extra.pods || rm -f `cat extra.pods`
+-      -@rm -f extra.pods
++      -@test ! -f extra.pods || $(RMS) `cat extra.pods`
++      @$(RMS) extra.pods
+       -@for x in `grep -l '^=[a-z]' README.* | grep -v README.vms` ; do \
+           nx=`echo $$x | sed -e "s/README\.//"`; \
+           $(LNS) ../$$x "pod/perl"$$nx".pod" ; \
+@@ -1332,11 +1333,11 @@ realclean:     _realcleaner _mopup
+       @echo "Note that '$(MAKE) realclean' does not delete config.sh or Policy.sh"
+ _clobber:
+-      -@rm -f Cross/run-* Cross/to-* Cross/from-* Cross/mkdir
+-      -rm -rf host
+-      rm -f t/test_state
+-      rm -f config.sh cppstdin Policy.sh extras.lst
+-      rm -f $(MANIFEST_SRT)
++      @$(RMS) Cross/run-* Cross/to-* Cross/from-* Cross/mkdir
++      $(RMS_R) host
++      $(RMS) t/test_state
++      $(RMS) config.sh cppstdin Policy.sh extras.lst
++      $(RMS) $(MANIFEST_SRT)
+ clobber:      _realcleaner _mopup _clobber
+@@ -1344,23 +1345,23 @@ distclean:     clobber
+ # Like distclean but also removes emacs backups and *.orig.
+ veryclean:    _verycleaner _mopup _clobber
+-      -@rm -f Obsolete Wanted
++      $(RMS) Obsolete Wanted
+ # Do not 'make _mopup' directly.
+ _mopup:
+-      rm -f *$(OBJ_EXT) *$(LIB_EXT) all perlmain.c opmini.c perlmini.c generate_uudmap$(EXE_EXT) $(generated_headers)
++      $(RMS) *$(OBJ_EXT) *$(LIB_EXT) all perlmain.c opmini.c perlmini.c generate_uudmap$(EXE_EXT) $(generated_headers)
+       -rmdir .depending
+-      -@test -f extra.pods && rm -f `cat extra.pods`
+-      -@test -f vms/README_vms.pod && rm -f vms/README_vms.pod
+-      -rm -f perl.exp ext.libs $(generated_pods) uni.data opmini.o perlmini.o pod/roffitall
+-      -rm -f perl.export perl.dll perl.libexp perl.map perl.def
+-      -rm -f *perl.xok
+-      -rm -f cygwin.c libperl*.def libperl*.dll cygperl*.dll *.exe.stackdump
+-      -rm -f $(PERL_EXE) $(MINIPERL_EXE) $(LIBPERL) libperl.* microperl
+-      -rm -f config.arch config.over $(DTRACE_H)
++      -@test -f extra.pods && $(RMS) `cat extra.pods`
++      -@test -f vms/README_vms.pod && $(RMS) vms/README_vms.pod
++      $(RMS) perl.exp ext.libs $(generated_pods) uni.data opmini.o perlmini.o pod/roffitall
++      $(RMS) perl.export perl.dll perl.libexp perl.map perl.def
++      $(RMS) *perl.xok
++      $(RMS) cygwin.c libperl*.def libperl*.dll cygperl*.dll *.exe.stackdump
++      $(RMS) $(PERL_EXE) $(MINIPERL_EXE) $(LIBPERL) libperl.* microperl
++      $(RMS) config.arch config.over $(DTRACE_H)
+ _cleaner1:
+-      -cd os2; rm -f Makefile
++      -cd os2; $(RMS) Makefile
+       -cd pod; $(LDLIBPTH) $(MAKE) $(CLEAN)
+       -cd utils; $(LDLIBPTH) $(MAKE) $(CLEAN)
+       -@if test -f $(MINIPERL_EXE) ; then \
+@@ -1370,31 +1371,31 @@ _cleaner1:
+       else \
+       sh $(CLEAN).sh ; \
+       fi
+-      rm -f realclean.sh veryclean.sh
+-      -rm -f `grep -v ^# mkppport.lst | grep . | sed -e 's/$$/\/ppport.h/'`
++      $(RMS) realclean.sh veryclean.sh
++      $(RMS) `grep -v ^# mkppport.lst | grep . | sed -e 's/$$/\/ppport.h/'`
+ # Dear POSIX, thanks for making the default to xargs to be
+ # run once if nothhing is passed in. It is such a great help.
+ # Some systems do not support "?", so keep these files separate.
+ _cleaner2:
+-      -rm -f core.*perl.*.? t/core.perl.*.? .?*.c
+-      rm -f core *perl.core t/core t/*perl.core core.* t/core.*
+-      rm -f t/$(PERL_EXE) t/rantests
+-      rm -rf t/tmp*
+-      rm -rf $(addedbyconf)
+-      rm -f $(FIRSTMAKEFILE) $(FIRSTMAKEFILE).old makefile.old utils/Makefile
+-      rm -f $(private)
+-      rm -rf $(unidatafiles) $(unidatadirs)
+-      rm -rf lib/auto
+-      rm -f lib/.exists lib/*/.exists lib/*/*/.exists
+-      rm -f h2ph.man
+-      rm -rf .config
+-      rm -f preload
+-      rm -f pod2htmd.tmp
+-      rm -rf pod/perlfunc pod/perlipc
++      $(RMS) core.*perl.*.? t/core.perl.*.? .?*.c
++      $(RMS) core *perl.core t/core t/*perl.core core.* t/core.*
++      $(RMS) t/$(PERL_EXE) t/rantests
++      $(RMS_R) t/tmp*
++      $(RMS_R) $(addedbyconf)
++      $(RMS) $(FIRSTMAKEFILE) $(FIRSTMAKEFILE).old makefile.old utils/Makefile
++      $(RMS) $(private)
++      $(RMS_R) $(unidatafiles) $(unidatadirs)
++      $(RMS_R) lib/auto
++      $(RMS) lib/.exists lib/*/.exists lib/*/*/.exists
++      $(RMS) h2ph.man
++      $(RMS_R) .config
++      $(RMS) preload
++      $(RMS) pod2htmd.tmp
++      $(RMS_R) pod/perlfunc pod/perlipc
+       -rmdir ext/B/lib
+-      rm -f so_locations $(LIBPERL_NONSHR) $(MINIPERL_NONSHR)
++      $(RMS) so_locations $(LIBPERL_NONSHR) $(MINIPERL_NONSHR)
+       -rmdir lib/version lib/threads lib/inc/ExtUtils lib/inc lib/encoding
+       -rmdir lib/autodie/exception lib/autodie/Scope lib/autodie lib/XS
+       -rmdir lib/Win32API lib/VMS lib/Unicode/Collate/Locale
+@@ -1443,11 +1444,11 @@ _realcleaner:
+ _verycleaner:
+       @$(LDLIBPTH) $(MAKE) _cleaner1 CLEAN=veryclean
+       @$(LDLIBPTH) $(MAKE) _cleaner2
+-      -rm -f *~ *.orig */*~ */*.orig */*/*~ */*/*.orig
++      $(RMS) *~ *.orig */*~ */*.orig */*/*~ */*/*.orig
+ .PHONY: lint
+ lint: $(c)
+-      rm -f *.ln
++      $(RMS) *.ln
+       lint $(lintflags) -DPERL_CORE -D_REENTRANT -DDEBUGGING -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(c)
+ cscopeflags = -Rb  # Recursive, build-only.
+@@ -1505,7 +1506,7 @@ case "$targethost" in
+ '') $spitshell >>$Makefile <<'!NO!SUBS!'
+ test_prep test-prep: test_prep_pre $(MINIPERL_EXE) $(unidatafiles) $(PERL_EXE) \
+       $(dynamic_ext) $(TEST_PERL_DLL) runtests $(generated_pods)
+-      cd t && (rm -f $(PERL_EXE); $(LNS) ../$(PERL_EXE) $(PERL_EXE))
++      cd t && ($(RMS) $(PERL_EXE); $(LNS) ../$(PERL_EXE) $(PERL_EXE))
+ !NO!SUBS!
+ ;;
+@@ -1555,7 +1556,7 @@ test_prep test-prep: test_prep_pre \$(MI
+       $to config.sh
+ # --- For lib/diagnostics.t with -Duseshrplib
+       $to \$(PERL_EXE)
+-      cd t && (rm -f \$(PERL_EXE); \$(LNS) ../\$(PERL_EXE) \$(PERL_EXE)) && cd ..
++      cd t && (\$(RMS) \$(PERL_EXE); \$(LNS) ../\$(PERL_EXE) \$(PERL_EXE)) && cd ..
+       $to t/\$(PERL_EXE)
+ !GROK!THIS!
+@@ -1565,7 +1566,7 @@ esac
+ $spitshell >>$Makefile <<'!NO!SUBS!'
+ test_prep_reonly: $(MINIPERL_EXE) $(PERL_EXE) $(dynamic_ext_re) $(TEST_PERL_DLL)
+       $(MINIPERL) make_ext.pl $(dynamic_ext_re) MAKE="$(MAKE)" LIBPERL_A=$(LIBPERL) LINKTYPE=dynamic
+-      cd t && (rm -f $(PERL_EXE); $(LNS) ../$(PERL_EXE) $(PERL_EXE))
++      cd t && ($(RMS) $(PERL_EXE); $(LNS) ../$(PERL_EXE) $(PERL_EXE))
+ !NO!SUBS!
+ case "$targethost" in
+@@ -1620,7 +1621,7 @@ minitest_prep:
+       @echo "You may see some irrelevant test failures if you have been unable"
+       @echo "to build lib/Config.pm, or the Unicode data files."
+       @echo " "
+-      - cd t && (rm -f $(PERL_EXE); $(LNS) ../$(MINIPERL_EXE) $(PERL_EXE))
++      - cd t && ($(RMS) $(PERL_EXE); $(LNS) ../$(MINIPERL_EXE) $(PERL_EXE))
+ MINITEST_TESTS = base/*.t comp/*.t cmd/*.t run/*.t io/*.t re/*.t opbasic/*.t op/*.t uni/*.t perf/*.t
diff --git a/lang/perl/patches/910-miniperl-needs-inc-dot.patch b/lang/perl/patches/910-miniperl-needs-inc-dot.patch
new file mode 100644 (file)
index 0000000..02e447a
--- /dev/null
@@ -0,0 +1,80 @@
+--- a/Makefile.SH      2017-10-15 18:57:08.436234652 -0600
++++ b/Makefile.SH      2017-10-15 19:02:47.587658819 -0600
+@@ -327,7 +327,7 @@ PATH_SEP = $p_
+ # Macros to invoke a copy of miniperl during the build.  Targets which
+ # are built using these macros should depend on \$(MINIPERL_EXE)
+ MINIPERL_EXE = miniperl\$(EXE_EXT)
+-MINIPERL = \$(LDLIBPTH) ./miniperl\$(EXE_EXT) -Ilib
++MINIPERL = \$(LDLIBPTH) ./miniperl\$(EXE_EXT) -Ilib -I.
+ # Macros to invoke sort the MANIFEST during build
+ MANIFEST_SRT = MANIFEST.srt
+@@ -990,7 +990,7 @@ NAMESPACEFLAGS = -force_flat_namespace
+       @$(RMS) miniperl.xok
+       $(CC) $(CLDFLAGS) $(NAMESPACEFLAGS) -o $(MINIPERL_EXE) \
+           $(miniperl_objs) $(libs)
+-      $(LDLIBPTH) ./miniperl$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
++      $(LDLIBPTH) ./miniperl$(HOST_EXE_EXT) -w -Ilib -I. -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
+       $(MINIPERL) -f write_buildcustomize.pl
+ !NO!SUBS!
+               ;;
+@@ -1001,16 +1001,16 @@ lib/buildcustomize.pl: $& $(miniperl_obj
+       @\$(RMS) miniperl.xok
+       @\$(RMS) \$(MINIPERL_EXE)
+       \$(LNS) \$(HOST_PERL) \$(MINIPERL_EXE)
+-      \$(LDLIBPTH) ./miniperl\$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
++      \$(LDLIBPTH) ./miniperl\$(HOST_EXE_EXT) -w -Ilib -I. -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
+       \$(MINIPERL) -f write_buildcustomize.pl 'osname' "$osname"
+ !GROK!THIS!
+               else
+                       $spitshell >>$Makefile <<'!NO!SUBS!'
+ lib/buildcustomize.pl: $& $(miniperl_dep) write_buildcustomize.pl
+       @$(RMS) miniperl.xok
+       $(CC) $(CLDFLAGS) -o $(MINIPERL_EXE) \
+           $(miniperl_objs) $(libs)
+-      $(LDLIBPTH) ./miniperl$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
++      $(LDLIBPTH) ./miniperl$(HOST_EXE_EXT) -w -Ilib -I. -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
+       $(MINIPERL) -f write_buildcustomize.pl
+ !NO!SUBS!
+               fi
+--- a/cpan/Devel-PPPort/PPPort_pm.PL   2017-07-18 16:59:59.000000000 -0600
++++ b/cpan/Devel-PPPort/PPPort_pm.PL   2017-10-15 19:19:27.341543182 -0600
+@@ -15,6 +15,7 @@
+ use strict;
+ $^W = 1;
++push(@INC, '.');
+ require "parts/ppptools.pl";
+ my $INCLUDE = 'parts/inc';
+--- a/cpan/Devel-PPPort/ppport_h.PL    2017-07-18 16:59:59.000000000 -0600
++++ b/cpan/Devel-PPPort/ppport_h.PL    2017-10-15 19:27:16.594178623 -0600
+@@ -14,6 +14,7 @@
+ ################################################################################
+ package Devel::PPPort;
++push(@INC, '.');
+ require "PPPort.pm";
+ rename 'ppport.h', 'ppport.old' if -f 'ppport.h';
+ unlink "ppport.old" if WriteFile("ppport.h") && -f 'ppport.h';
+--- a/cpan/Devel-PPPort/PPPort_xs.PL   2017-07-18 16:59:59.000000000 -0600
++++ b/cpan/Devel-PPPort/PPPort_xs.PL   2017-10-15 19:38:09.296679968 -0600
+@@ -15,6 +15,7 @@
+ use strict;
+ $^W = 1;
++push(@INC, '.');
+ require "parts/ppptools.pl";
+ my %SECTION = (
+--- a/cpan/Unicode-Collate/Makefile.PL 2017-07-18 16:49:51.000000000 -0600
++++ b/cpan/Unicode-Collate/Makefile.PL 2017-10-15 20:19:31.890439791 -0600
+@@ -6,7 +6,7 @@ my $clean = {};
+ if (-f "Collate.xs") {
+     print "Making header files for XS...\n";
+-    do 'mkheader' or die $@ || "mkheader: $!";
++    do './mkheader' or die $@ || "mkheader: $!";
+     $clean = { FILES => 'ucatbl.h' };
+ }
index f65c8427d340428ea85de84617ff94bf0ea70958..04ae49053ba6ce12d7804fa4a08ca29184abf0b8 100644 (file)
@@ -1,7 +1,7 @@
 # This makefile simplifies perl module builds.
 #
 
-PERL_VERSION:=5.24
+PERL_VERSION:=5.26
 
 # Build environment
 HOST_PERL_PREFIX:=$(STAGING_DIR_HOSTPKG)/usr
@@ -57,7 +57,7 @@ define perlmod/Configure
        (cd $(if $(3),$(3),$(PKG_BUILD_DIR)); \
        PERL_MM_USE_DEFAULT=1 \
        $(2) \
-       $(PERL_CMD) -MConfig -e '$$$${tied %Config::Config}{cpprun}="$(GNU_TARGET_NAME)-cpp -E"; do "Makefile.PL"' \
+       $(PERL_CMD) -MConfig -e '$$$${tied %Config::Config}{cpprun}="$(GNU_TARGET_NAME)-cpp -E"; unshift(@INC, "."); unless (defined (do "./Makefile.PL")) { if ($$$$@) { die "couldn\047t parse Makefile.PL: $$$$@"; } elsif ($$$$!) { die "Could\047t run Makefile.PL: $$$$!"; } }; die "No Makefile generated!" unless -f "Makefile";' \
                $(1) \
                AR=ar \
                CC=$(GNU_TARGET_NAME)-gcc \
index 65874fcda030a81bac737e36dc607fc544482d4e..15d47a891c129fe7f5d054e11704759b3413d726 100644 (file)
@@ -9,7 +9,7 @@ PECL_NAME:=pecl_http
 PECL_LONGNAME:=Extended HTTP Support
 
 PKG_VERSION:=3.1.0
-PKG_RELEASE:=3
+PKG_RELEASE:=4
 PKG_HASH:=e3de67b156e7d5f6c2e5eb1e2b5f0acceb7004f1260d68c9f8b2c0f9629aabf0
 
 PKG_NAME:=php7-pecl-http
@@ -53,5 +53,5 @@ CONFIGURE_ARGS+= \
        --with-http-libevent-dir="$(STAGING_DIR)/usr" \
        --with-http-libidn-dir="$(STAGING_DIR)/usr"
 
-$(eval $(call PECLPackage,http,$(PECL_LONGNAME),+icu +libcurl +librt +libevent2 +libidn +php7-mod-iconv +php7-mod-session +php7-pecl-raphf +php7-pecl-propro,30))
+$(eval $(call PECLPackage,http,$(PECL_LONGNAME),+icu +libcurl +librt +libevent2 +libidn +php7-mod-hash +php7-mod-iconv +php7-mod-session +php7-pecl-raphf +php7-pecl-propro,30))
 $(eval $(call BuildPackage,$(PKG_NAME)))
index d9965f1525c24a4f8002bbe2afa322bdf78511b3..fe259628d466e766e8c0d382166ed43e0bdb2b62 100644 (file)
@@ -6,8 +6,8 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=php
-PKG_VERSION:=7.1.10
-PKG_RELEASE:=1
+PKG_VERSION:=7.1.12
+PKG_RELEASE:=2
 
 PKG_MAINTAINER:=Michael Heimpold <mhei@heimpold.de>
 
@@ -16,7 +16,7 @@ PKG_LICENSE_FILES:=LICENSE
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=http://www.php.net/distributions/
-PKG_HASH:=2b8efa771a2ead0bb3ae67b530ca505b5b286adc873cca9ce97a6e1d6815c50b
+PKG_HASH:=a0118850774571b1f2d4e30b4fe7a4b958ca66f07d07d65ebdc789c54ba6eeb3
 
 PKG_FIXUP:=libtool autoreconf
 PKG_BUILD_PARALLEL:=1
@@ -30,7 +30,7 @@ PHP7_MODULES = \
        ftp \
        gettext gd gmp \
        hash \
-       iconv intl \
+       iconv imap intl \
        json \
        ldap \
        mbstring mcrypt mysqli \
@@ -42,7 +42,7 @@ PHP7_MODULES = \
 
 PKG_CONFIG_DEPENDS:= \
        $(patsubst %,CONFIG_PACKAGE_php7-mod-%,$(PHP7_MODULES)) \
-       CONFIG_PHP7_FILTER CONFIG_PHP7_LIBXML CONFIG_PHP7_SYSTEMTZDATA
+       CONFIG_PHP7_FILTER CONFIG_PHP7_LIBXML CONFIG_PHP7_SYSTEMTZDATA CONFIG_PHP7_LIBFREETYPE
 
 include $(INCLUDE_DIR)/package.mk
 include $(INCLUDE_DIR)/nls.mk
@@ -142,6 +142,13 @@ define Package/php7-fpm/description
   This package contains the FastCGI Process Manager of the PHP7 interpreter.
 endef
 
+define Package/php7-mod-gd/config
+  config PHP7_LIBFREETYPE
+       bool "Enable Freetype 2 support in php7-mod-gd"
+       depends on PACKAGE_php7-mod-gd
+       default y
+endef
+
 # not everything groks --disable-nls
 DISABLE_NLS:=
 
@@ -214,7 +221,6 @@ endif
 ifneq ($(SDK)$(CONFIG_PACKAGE_php7-mod-gd),)
   CONFIGURE_ARGS+= \
        --with-gd=shared \
-       --without-freetype-dir \
        --with-jpeg-dir="$(STAGING_DIR)/usr" \
        --with-png-dir="$(STAGING_DIR)/usr" \
        --without-xpm-dir \
@@ -223,6 +229,11 @@ ifneq ($(SDK)$(CONFIG_PACKAGE_php7-mod-gd),)
 else
   CONFIGURE_ARGS+= --without-gd
 endif
+ifneq ($(CONFIG_PHP7_LIBFREETYPE),)
+  CONFIGURE_ARGS+= --with-freetype-dir="$(STAGING_DIR)"
+else
+  CONFIGURE_ARGS+= --without-freetype-dir
+endif
 
 ifneq ($(SDK)$(CONFIG_PACKAGE_php7-mod-gmp),)
   CONFIGURE_ARGS+= --with-gmp=shared,"$(STAGING_DIR)/usr"
@@ -242,6 +253,15 @@ else
   CONFIGURE_ARGS+= --without-iconv
 endif
 
+ifneq ($(SDK)$(CONFIG_PACKAGE_php7-mod-imap),)
+  CONFIGURE_ARGS+= \
+               --with-imap=shared,"$(STAGING_DIR)/usr" \
+               --with-imap-kerberos=no \
+               --with-imap-ssl="$(STAGING_DIR)/usr"
+else
+  CONFIGURE_ARGS+= --without-imap
+endif
+
 ifneq ($(SDK)$(CONFIG_PACKAGE_php7-mod-intl),)
   CONFIGURE_ARGS+= --enable-intl=shared
   TARGET_CXXFLAGS+= -std=c++0x
@@ -443,20 +463,22 @@ else
   CONFIGURE_ARGS+= --disable-libxml
 endif
 
-#ifneq ($(CONFIG_PHP7_SYSTEMTZDATA),)
-#  CONFIGURE_ARGS+= --with-system-tzdata
-#else
-#  CONFIGURE_ARGS+= --without-system-tzdata
-#endif
+ifneq ($(CONFIG_PHP7_SYSTEMTZDATA),)
+  CONFIGURE_ARGS+= --with-system-tzdata
+else
+  CONFIGURE_ARGS+= --without-system-tzdata
+endif
 
 CONFIGURE_VARS+= \
        ac_cv_c_bigendian_php=$(if $(CONFIG_BIG_ENDIAN),yes,no) \
        php_cv_cc_rpath="no" \
        iconv_impl_name="gnu_libiconv" \
        ac_cv_php_xml2_config_path="$(STAGING_DIR)/host/bin/xml2-config" \
+       ac_cv_u8t_decompose=yes \
 
 define Package/php7/conffiles
 /etc/php.ini
+/etc/php7/
 endef
 
 define Package/php7/install
@@ -500,6 +522,12 @@ define Package/php7-fpm/install
        $(INSTALL_BIN) ./files/php7-fpm.init $(1)/etc/init.d/php7-fpm
 endef
 
+define Package/php7-fpm/conffiles
+/etc/php7-fpm.conf
+/etc/php7-fpm.d/
+/etc/config/php7-fpm
+endef
+
 define Build/Prepare
        $(call Build/Prepare/Default)
        ( cd $(PKG_BUILD_DIR); touch configure.in; ./buildconf --force )
@@ -567,11 +595,12 @@ $(eval $(call BuildModule,dom,DOM,+@PHP7_LIBXML +PACKAGE_php7-mod-dom:libxml2))
 $(eval $(call BuildModule,exif,EXIF))
 $(eval $(call BuildModule,fileinfo,Fileinfo))
 $(eval $(call BuildModule,ftp,FTP,+PACKAGE_php7-mod-ftp:libopenssl))
-$(eval $(call BuildModule,gd,GD graphics,+PACKAGE_php7-mod-gd:libjpeg +PACKAGE_php7-mod-gd:libpng))
+$(eval $(call BuildModule,gd,GD graphics,+PACKAGE_php7-mod-gd:libjpeg +PACKAGE_php7-mod-gd:libpng +PHP7_LIBFREETYPE:libfreetype))
 $(eval $(call BuildModule,gettext,Gettext,+PACKAGE_php7-mod-gettext:libintl-full))
 $(eval $(call BuildModule,gmp,GMP,+PACKAGE_php7-mod-gmp:libgmp))
 $(eval $(call BuildModule,hash,Hash))
 $(eval $(call BuildModule,iconv,iConv,$(ICONV_DEPENDS)))
+$(eval $(call BuildModule,imap,IMAP,+PACKAGE_php7-mod-imap:libopenssl +PACKAGE_libpam:libpam +PACKAGE_php7-mod-imap:uw-imap))
 $(eval $(call BuildModule,intl,Internationalization Functions,+PACKAGE_php7-mod-intl:icu))
 $(eval $(call BuildModule,json,JSON))
 $(eval $(call BuildModule,ldap,LDAP,+PACKAGE_php7-mod-ldap:libopenldap +PACKAGE_php7-mod-ldap:libsasl2))
diff --git a/lang/php7/patches/1007-ext-imap-config.m4-fix-ac_cv_u8t_decompose-check.patch b/lang/php7/patches/1007-ext-imap-config.m4-fix-ac_cv_u8t_decompose-check.patch
new file mode 100644 (file)
index 0000000..88b2db4
--- /dev/null
@@ -0,0 +1,35 @@
+From 96465be0f4ac225cfe6f52b809c91b9496807eac Mon Sep 17 00:00:00 2001
+From: Michael Heimpold <mhei@heimpold.de>
+Date: Sun, 26 Nov 2017 18:29:42 +0100
+Subject: [PATCH] ext/imap/config.m4: fix ac_cv_u8t_decompose check
+
+Once upon the time, commit c58f63a38ae19caaab339c61486fc3bd7e5894f9
+changed the check from U8T_CANONICAL to U8T_DECOMPOSE. However,
+the autoconf cache id was not renamed.
+
+Sometimes it is desirable to preseed the autoconf variables, e.g. when
+cross-compiling to avoid the tests running on the host system. In this
+case it's confusing when the cache id does not match the variable to
+set, so let's adjust it.
+
+Signed-off-by: Michael Heimpold <mhei@heimpold.de>
+---
+ ext/imap/config.m4 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ext/imap/config.m4 b/ext/imap/config.m4
+index d0b86cb..badb6e2 100644
+--- a/ext/imap/config.m4
++++ b/ext/imap/config.m4
+@@ -147,7 +147,7 @@ if test "$PHP_IMAP" != "no"; then
+     old_CFLAGS=$CFLAGS
+     CFLAGS="-I$IMAP_INC_DIR"
+-    AC_CACHE_CHECK(for U8T_DECOMPOSE, ac_cv_u8t_canonical,
++    AC_CACHE_CHECK(for U8T_DECOMPOSE, ac_cv_u8t_decompose,
+       AC_TRY_COMPILE([
+ #include <c-client.h>
+       ],[
+-- 
+2.7.4
+
index 4aa4d1694d735877dd591e7fae2a8b288f43c4d9..1bad60fa3279bfdb41cf8cb6e9f2465a2ddbfadb 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2016 OpenWrt.org
+# Copyright (C) 2007-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=chardet
-PKG_VERSION:=2.3.0
+PKG_VERSION:=3.0.4
 PKG_RELEASE:=1
 PKG_LICENSE:=LGPL-2.1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://pypi.python.org/packages/source/c/chardet/
-PKG_HASH:=e53e38b3a4afe6d1132de62b7400a4ac363452dc5dfcf8d88e8e0cce663c68aa
+PKG_SOURCE_URL:=https://pypi.python.org/packages/fc/bb/a5768c230f9ddb03acc9ef3f0d4a3cf93462473795d18e9535498c8f929d/
+PKG_HASH:=84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index 4925f43325ebdc9ce9c65b744cb34808e691d38c..c45eb07845dfdc9153a531c84340ae47cdc29f03 100644 (file)
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=django-compressor
-PKG_VERSION:=2.1.1
+PKG_VERSION:=2.2
 PKG_RELEASE:=1
 PKG_LICENSE:=MIT
 
 PKG_SOURCE:=django_compressor-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/38/58/03098a826062b856956c7169a8f778ec2b8e2767ddc63da0629062df5621/
+PKG_SOURCE_URL:=https://pypi.python.org/packages/82/76/1355459f90714517c52f264aa7245b52e59a273ec16e8f8d505fa6c342f8/
 PKG_BUILD_DIR:=$(BUILD_DIR)/django_compressor-$(PKG_VERSION)/
-PKG_HASH:=9200400046ee00a5c1b4e2fbab97704fd2514f9b59d5649c8a365c3cf06c82e8
+PKG_HASH:=9616570e5b08e92fa9eadc7a1b1b49639cce07ef392fc27c74230ab08075b30f
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index de092033e29b84dcaf23267ae1b9faae9ae5140c..6174af40a047596bb4644ca9989cbdbb1ff5b844 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=django-constance
-PKG_VERSION:=1.3.4
+PKG_VERSION:=2.0.0
 PKG_RELEASE:=1
 PKG_LICENSE:=BSD-3-Clause
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/0c/19/74c6bbf29a7882bab377db7a4ca30b43e09173dc1e6cabe163dc8d6a3931/
-PKG_HASH:=212eba25cc7d4690abd802ec81fb2a511f68bc3eab1dd45ea805296449377b48
+PKG_SOURCE_URL:=https://pypi.python.org/packages/8a/37/4fa87dd0e43aa0a66fc419d58e67a9b6da70e1853d646c4b501c1ee7208b/
+PKG_HASH:=6eec9f3ac4e5657b93e64f3379181d1e727088df10dd34f0398cd12119b9f0b0
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index 14add6d0ad80ea04fbfc02e859d2833a6c2aa92f..2861685bc1ddeca09222a7e71c6d043cd53d7156 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2016 OpenWrt.org
+# Copyright (C) 2007-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=django-picklefield
-PKG_VERSION:=0.3.2
+PKG_VERSION:=1.0.0
 PKG_RELEASE:=1
 PKG_LICENSE:=MIT
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://pypi.python.org/packages/source/d/django-picklefield/
-PKG_HASH:=fab48a427c6310740755b242128f9300283bef159ffee42d3231a274c65d9ae2
+PKG_SOURCE_URL:=https://pypi.python.org/packages/e8/69/232d78ef16cad8dd4c2f871b0f44d87bcde36ed6a90597416e903034600b/
+PKG_HASH:=61e3ba7f6df82d8df9e6be3a8c55ef589eb3bf926c3d25d2b7949b07eae78354
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index 8fd393b14e6943a5376cf75ef3182d6dd9190d8d..315dbb260b9c03c8b6294b9795917603c4f2efcf 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2016 OpenWrt.org
+# Copyright (C) 2007-2017 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:=django-postoffice
-PKG_VERSION:=2.0.8
+PKG_VERSION:=3.0.3
 PKG_RELEASE:=1
 PKG_LICENSE:=MIT
 
 PKG_SOURCE:=django-post_office-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/52/25/cc0cfe923f183d7c19b162cac3bf8430ddaed7bad28202b8f93a97d248a4/
+PKG_SOURCE_URL:=https://pypi.python.org/packages/0f/8c/8c7e1d8998741fd195f7df947c509bc31a03d505aca03488c39e59da11f0/
 PKG_BUILD_DIR:=$(BUILD_DIR)/django-post_office-$(PKG_VERSION)/
-PKG_HASH:=bfb3ff26de5b668c91453ee8d930ff0bfe397849fd5508ff3e1216c3b46d6449
+PKG_HASH:=8d691b2e53ba8121d770ce448f05568874cf78a3cf63215918ad49536db5e76a
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index ed2c88940b4bff9ca12f06e135fd6f41a04698d6..862caf57ff869ebb46f8e4d0feb8007029d99b75 100644 (file)
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=django-restframework
-PKG_VERSION:=3.5.4
+PKG_VERSION:=3.7.1
 PKG_RELEASE:=1
 PKG_LICENSE:=BSD-3-Clause
 
 PKG_SOURCE:=djangorestframework-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/e9/24/86dfe19fb82a40a3d7a4c50371a8bd85b9277d3506698bf332a6d41d08f6/
+PKG_SOURCE_URL:=https://pypi.python.org/packages/d0/ab/8b991e7d3e26af7cf6327c84b341e60004fc56325d8a4d4019e1474f7456/
 PKG_BUILD_DIR:=$(BUILD_DIR)/djangorestframework-$(PKG_VERSION)
-PKG_HASH:=f995a35ae22f354d2a9a42ee6d2c059c101f826b1485ed46781677895ad25ee5
+PKG_HASH:=305b2c6564ca46d3b558ba21110ed717135c467adf1a6dfd192bd85f4bb04d50
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index 62e05bebedbf7e2285c969e604dfc82609be50df..41b844dd41cc36851fdde0cad0d73a9ae0a33baf 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=django-statici18n
-PKG_VERSION:=1.3.0
+PKG_VERSION:=1.4.0
 PKG_RELEASE:=1
 PKG_LICENSE:=BSD-3-Clause
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/86/6b/2c2e86a7e144ba7b064119eaafb2c8c67665c2a0e722f0819daa9657e551/
-PKG_HASH:=f37cff511dd7d6f0c0b465c685026b660aea2ae178cc82a1b4c96c1b1e718c2a
+PKG_SOURCE_URL:=https://pypi.python.org/packages/29/4d/fd9ba0e9b86c05714d9bc945d26376b331899d38c9b0666c7b38f3f26686/
+PKG_HASH:=3cb5334d42cfabda49c9c0efb1c24f5663e318ed34b3a34fada5195232f75f65
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index d0a7673118e5429790e03a966fe53260f61b42f4..efcca96629a97291c9a0d3d213952599f8c4fc32 100644 (file)
@@ -8,16 +8,16 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=django
-PKG_VERSION:=1.8.17
+PKG_VERSION:=1.8.18
 PKG_RELEASE=1
 PKG_LICENSE:=BSD-3-Clause
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/django/django.git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=d3d12fc11da56e4ea8af37a22a9a0aa6579ab2d5
+PKG_SOURCE_VERSION:=2d4bc5a60aa8a076689667c550ded96b87bc463e
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_MIRROR_HASH:=7d8c4e58486c3a539f17437b3a802b67d53401971eceac2be50c47bcc756c27b
+PKG_MIRROR_HASH:=c82c2cc338ae46ba8572d9960fc98dca932edc43a00f011fed102810a86185ae
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index a6be8ea2bb0ff6dc9e3e679f1d671e6478751ad3..b1c187d4774dc1181728a90739510f741f833740 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2016 OpenWrt.org
+# Copyright (C) 2007-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gunicorn
-PKG_VERSION:=19.6.0
+PKG_VERSION:=19.7.1
 PKG_RELEASE=1
 PKG_LICENSE:=MIT
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/84/ce/7ea5396efad1cef682bbc4068e72a0276341d9d9d0f501da609fab9fcb80/
-PKG_HASH:=813f6916d18a4c8e90efde72f419308b357692f81333cb1125f80013d22fb618
+PKG_SOURCE_URL:=https://pypi.python.org/packages/30/3a/10bb213cede0cc4d13ac2263316c872a64bf4c819000c8ccd801f1d5f822/
+PKG_HASH:=eee1169f0ca667be05db3351a0960765620dad53f53434262ff8901b68a1b622
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index 4bba5ce1f5cf83422288b2e471e72263bc738457..432f9292ea75648f98b0b6cd63fc510ddce6450a 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2016 OpenWrt.org
+# Copyright (C) 2007-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=jdcal
-PKG_VERSION:=1.2
+PKG_VERSION:=1.3
 PKG_RELEASE:=1
 PKG_LICENSE:=BSD-3-Clause
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://pypi.python.org/packages/source/j/jdcal/
-PKG_HASH:=5ebedb58b95ebabd30f56abef65139c6f69ec1687cf1d2f3a7c503f9a2cdfa4d
+PKG_SOURCE_URL:=https://pypi.python.org/packages/9b/fa/40beb2aa43a13f740dd5be367a10a03270043787833409c61b79e69f1dfd/
+PKG_HASH:=b760160f8dc8cc51d17875c6b663fafe64be699e10ce34b6a95184b5aa0fdc9e
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index 60bc331541d1f3f10dad5ee34c8b161ecb7d4c4c..3f337c91567c4816fed3585f0811d24ca4ff4dad 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=micropython-lib
-PKG_VERSION=1.8.6-$(PKG_SOURCE_VERSION)
+PKG_VERSION=1.9-$(PKG_SOURCE_VERSION)
 PKG_RELEASE:=1
 
 PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>
@@ -17,11 +17,11 @@ PKG_LICENSE_FILES:=LICENSE
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/micropython/micropython-lib.git
-PKG_SOURCE_VERSION:=f81e979c56dddb771ad36ec381b7f2c6cd12111f
+PKG_SOURCE_VERSION:=f5fe55aaef1a39d3d56f07040c0ff9f7e841fdf7
 
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION)
-PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
-PKG_MIRROR_HASH:=b9642fb3d01a7423d64ecc6ea81b4fac81a9112494727c8ca7744bd8e3ac120b
+PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.xz
+PKG_MIRROR_HASH:=76565b5d44d47ccf61562f98dcf166d8103760eed7f3d84f5f7f31610140d780
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
 PKG_BUILD_PARALLEL:=1
 
index a12df8a2ccacde599462f148772e110bb3ba87b0..f6e3f715ec40dccce5ffd00f2689ea61c803a09b 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=micropython
-PKG_VERSION=1.8.6-$(PKG_SOURCE_VERSION)
+PKG_VERSION=1.9.2-$(PKG_SOURCE_VERSION)
 PKG_RELEASE:=1
 
 PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>
@@ -17,11 +17,11 @@ PKG_LICENSE_FILES:=LICENSE
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/micropython/micropython.git
-PKG_SOURCE_VERSION:=5a1d63fc14dae788f705403a43c2d8639b7dd9cd
+PKG_SOURCE_VERSION:=1f78e7a43130acfa4bedf16c1007a1b0f37c75c3
 
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
-PKG_MIRROR_HASH:=cd431a94664277ac3f80a25b3f6ebc415b281c9265faad154bd0b3fbe638167e
+PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.xz
+PKG_MIRROR_HASH:=18234ffd1e91ac461080b4213399a6a18d4163fe314782b2e6ffbd1bfe48537b
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
 PKG_BUILD_PARALLEL:=1
 
@@ -42,7 +42,7 @@ define Package/micropython/description
 endef
 
 
-MAKE_FLAGS += -C $(PKG_BUILD_DIR)/unix 
+MAKE_FLAGS += -C $(PKG_BUILD_DIR)/unix FROZEN_MPY_DIR= 
 
 define Build/Compile
        $(call Build/Compile/Default,axtls) 
diff --git a/lang/python/micropython/patches/001-all-unix b/lang/python/micropython/patches/001-all-unix
new file mode 100644 (file)
index 0000000..3497aff
--- /dev/null
@@ -0,0 +1,12 @@
+--- a/py/persistentcode.c      2017-09-22 13:26:04.914339465 +0000
++++ b/py/persistentcode.c      2017-09-22 13:26:22.618319621 +0000
+@@ -373,7 +373,7 @@
+
+ // here we define mp_raw_code_save_file depending on the port
+ // TODO abstract this away properly
+
+-#if defined(__i386__) || defined(__x86_64__) || (defined(__arm__) && (defined(__unix__)))
++#if defined(__i386__) || defined(__x86_64__) || defined(__unix__)
+
+ #include <unistd.h>
+
index 5385f918dd1a808bbca2b832bdef02fcbc696e6a..8e3634a8e8420d1ca52be24ef9488e3b3d068149 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=openpyxl
-PKG_VERSION:=2.4.2
+PKG_VERSION:=2.5.0b1
 PKG_RELEASE:=1
 PKG_LICENSE:=MIT
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/56/c6/a2a7c36196e4732acceca093ce5961db907f5a855b557d6a727a7f59b8b4/
-PKG_HASH:=2fe9ba182b687acf7e4660b39bd91d703c0bf934f8295c182d04ecd2345c6e26
+PKG_SOURCE_URL:=https://pypi.python.org/packages/88/3c/34fbe561fc92e6a75f297478b123c2590ca986d9f2d2dbf340d879aa24dd/
+PKG_HASH:=3b42ece7933b46b2128f8d4111c57c80fb5aa46f4d16e7f83281f169e7398ba7
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index 3865167cf9214205d4420233db0b8621ef88f8f1..01371ad95c8022ebc29cccb5386889742925d64e 100644 (file)
@@ -5,12 +5,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=pyodbc
-PKG_VERSION:=4.0.17
-PKG_RELEASE:=5
+PKG_VERSION:=4.0.21
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/ce/57/6b92aa5b3497dde6be55fd6fcb76c7db215ed1d56fde45c613add4a43095/
-PKG_HASH:=a82892ba8d74318524efaaccaf8351d3a3b4079a07e1a758902a2b9e84529c9d
+PKG_SOURCE_URL:=https://pypi.python.org/packages/0f/04/c5638a4636fb8117fdc45685f489864459d193b1d892b61dce785ddf58f9
+PKG_HASH:=9655f84ca9e5cb2dfffff705601017420c840d55271ba62dd44f05383eff0329
 PKG_BUILD_DEPENDS:=python python3 unixodbc
 PKG_LICENSE:=MIT
 PKG_LICENSE_FILES:=LICENSE.txt
index a952317e7a352894e65efd343efeaa3124629313..7998a5a42ff274a85df7255dedbcb5160ea63f95 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-asn1crypto
-PKG_VERSION:=0.22.0
+PKG_VERSION:=0.23.0
 PKG_RELEASE:=1
 
 PKG_SOURCE:=asn1crypto-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/67/14/5d66588868c4304f804ebaff9397255f6ec5559e46724c2496e0f26e68d6
-PKG_HASH:=cbbadd640d3165ab24b06ef25d1dca09a3441611ac15f6a6b452474fdf0aed1a
+PKG_SOURCE_URL:=https://pypi.python.org/packages/31/53/8bca924b30cb79d6d70dbab6a99e8731d1e4dd3b090b7f3d8412a8d8ffbc
+PKG_HASH:=0874981329cfebb366d6584c3d16e913f2a0eb026c9463efcc4aaf42a9d94d70
 
 PKG_LICENSE:=MIT
 PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
index 7e1b2fdabaeb42709c951eef8de8a27fce1f1fd5..222c0492ee77abcb22efa24beb2addbfa1191702 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-cffi
-PKG_VERSION:=1.11.0
+PKG_VERSION:=1.11.2
 PKG_RELEASE:=1
 
 PKG_SOURCE:=cffi-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/4e/32/4070bdf32812c89eb635c80880a5caa2e0189aa7999994c265577e5154f3
-PKG_HASH:=5f4ff33371c6969b39b293d9771ee91e81d26f9129be093ca1b7be357fcefd15
+PKG_SOURCE_URL:=https://pypi.python.org/packages/c9/70/89b68b6600d479034276fed316e14b9107d50a62f5627da37fafe083fde3
+PKG_HASH:=ab87dd91c0c4073758d07334c1e5f712ce8fe48f007b86f8238773963ee700a6
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-cffi-$(PKG_VERSION)
 
index 47c7c1cfc4740be41c3ebcbd20f218abf25b8aea..fdabd483e7c77e88b640b3b270606a4c2b76d331 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-cryptography
-PKG_VERSION:=2.0.3
+PKG_VERSION:=2.1.3
 PKG_RELEASE:=1
 
 PKG_SOURCE:=cryptography-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/9c/1a/0fc8cffb04582f9ffca61b15b0681cf2e8588438e55f61403eb9880bd8e0
-PKG_HASH:=d04bb2425086c3fe86f7bc48915290b13e798497839fbb18ab7f6dffcf98cc3a
+PKG_SOURCE_URL:=https://pypi.python.org/packages/f3/7c/ec4f94489719803cb14d35e9625d1f5a613b9c4b8d01ee52a4c77485e681
+PKG_HASH:=68a26c353627163d74ee769d4749f2ee243866e9dac43c93bb33ebd8fbed1199
 
 PKG_LICENSE:=Apache-2.0 BSD-3-Clause
 PKG_LICENSE_FILES:=LICENSE.APACHE LICENSE.BSD
index b8dc6019f99a8fa7c76d27abee614fa0db077d81..d687240e554e8a4411bf6048ffdecfd7d6c9582c 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2016 OpenWrt.org
+# Copyright (C) 2007-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-dateutil
-PKG_VERSION:=2.6.0
+PKG_VERSION:=2.6.1
 PKG_RELEASE:=1
 PKG_LICENSE:=BSD-2-Clause
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/51/fc/39a3fbde6864942e8bb24c93663734b74e281b984d1b8c4f95d64b0c21f6/
-PKG_HASH:=62a2f8df3d66f878373fd0072eacf4ee52194ba302e00082828e0d263b0418d2
+PKG_SOURCE_URL:=https://pypi.python.org/packages/54/bb/f1db86504f7a49e1d9b9301531181b00a1c7325dc85a29160ee3eaa73a54/
+PKG_HASH:=891c38b2a02f5bb1be3e4793866c8df49c7d19baabf9c1bad62547e0b4866aca
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index c2d324282b9974ebae8bb1f806e2d108e6a62543..3d17183a5a5e9a8ba7945690bed6831840d5d19e 100644 (file)
@@ -56,7 +56,7 @@ from the earlier standard from 2003.
 endef
 
 define Package/python3-idna/description
-$(call define Package/python-idna/description)
+$(call Package/python-idna/description)
 .
 (Variant for Python3)
 endef
index 65d43599ab82cefa6b192ee3fdb6be3b4207f1c8..3e228bb607289a83ed39fe1632f360a215e62abe 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-lxml
-PKG_VERSION:=4.0.0
+PKG_VERSION:=4.1.1
 PKG_RELEASE:=1
 
 PKG_SOURCE:=lxml-$(PKG_VERSION).tgz
 PKG_SOURCE_URL:=http://lxml.de/files/
-PKG_HASH:=f7bc9f702500e205b1560d620f14015fec76dcd6f9e889a946a2ddcc3c344fd0
+PKG_HASH:=940caef1ec7c78e0c34b0f6b94fe42d0f2022915ffc78643d28538a5cfd0f40e
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-lxml-$(PKG_VERSION)
 PKG_UNPACK=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE)
index 68713e8777567d2f5a67524a97d61fec41843dad..78072a594921370c374210f7779263e382c479d6 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-pyasn1-modules
-PKG_VERSION:=0.1.4
+PKG_VERSION:=0.1.5
 PKG_RELEASE:=1
 
 PKG_SOURCE:=pyasn1-modules-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/66/6b/f5582cbf3b920896ce1b97bde3894599b3dec31301ef79ae7ea0022f5577
-PKG_HASH:=b07c17bdb34d6f64aafea6269f2e8fb306a57473f0f38d9a6ca389d6ab30ac4a
+PKG_SOURCE_URL:=https://pypi.python.org/packages/7e/2c/351c0c0ef88b904de50d8144eb4c365c13660c297c051b72255b4e1ad34a
+PKG_HASH:=1d303eed5aa54cafeca209d16b8c7ea2c6064735fb61f1bee2e0ed63a0816988
 
 PKG_LICENSE:=BSD-2-Clause
 PKG_LICENSE_FILES:=LICENSE.txt
index eb9ac790328710e65ecc58aa4828141d94b731a5..6c48fe2dbd26e5c309c28097e3014e86e3d7d06a 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-pyasn1
-PKG_VERSION:=0.3.5
+PKG_VERSION:=0.3.7
 PKG_RELEASE:=1
 
 PKG_SOURCE:=pyasn1-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/bc/85/029f5f4d4fa8a487538ce597932cf3601bba3392c85d74eae148fe6ac5d3
-PKG_HASH:=c7a1186416bcdaf19b56f5b2506200306d7d4cf222d3d7c2d4cb600ccacdaf1b
+PKG_SOURCE_URL:=https://pypi.python.org/packages/3c/a6/4d6c88aa1694a06f6671362cb3d0350f0d856edea4685c300785200d1cd9/
+PKG_HASH:=187f2a66d617683f8e82d5c00033b7c8a0287e1da88a9d577aebec321cad4965
 
 PKG_LICENSE:=BSD-2-Clause
 PKG_LICENSE_FILES:=LICENSE.txt
index cad688b15c0b849f908a9329e1b16ccf5542214b..68886797b6a72cc49b2c499257da2497a4e331d8 100644 (file)
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-urllib3
-PKG_VERSION:=1.20
+PKG_VERSION:=1.22
 PKG_RELEASE:=1
 PKG_LICENSE:=MIT
 
 PKG_SOURCE:=urllib3-$(PKG_VERSION).tar.gz
 PKG_BUILD_DIR:=$(BUILD_DIR)/urllib3-$(PKG_VERSION)/
-PKG_SOURCE_URL:=https://pypi.python.org/packages/20/56/a6aa403b0998f857b474a538343ee483f5c02491bd1aebf61d42a3f60f77/
-PKG_HASH:=97ef2b6e2878d84c0126b9f4e608e37a951ca7848e4855a7f7f4437d5c34a72f
+PKG_SOURCE_URL:=https://pypi.python.org/packages/ee/11/7c59620aceedcc1ef65e156cc5ce5a24ef87be4107c2b74458464e437a5d/
+PKG_HASH:=cc44da8e1145637334317feebd728bd869a35285b93cbb4cca2577da7e62db4f
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index 03cda5ce984c0343a5d03aa73d668d3073ac372a..13a16a37f8363534e12d7eeb3376ef34e9cb9ac9 100644 (file)
@@ -14,7 +14,7 @@ PKG_NAME:=python
 PKG_VERSION:=$(PYTHON_VERSION).$(PYTHON_VERSION_MICRO)
 # XXX: reset PKG_RELEASE to 1 only if Python's pip & setuptools versions have also bumped;
 #      otherwise, keep bumping PKG_RELEASE
-PKG_RELEASE:=2
+PKG_RELEASE:=4
 
 PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=https://www.python.org/ftp/python/$(PKG_VERSION)
@@ -29,6 +29,7 @@ include ./files/python-host.mk
 # For PyPackage
 include ./files/python-package.mk
 
+PKG_FIXUP:=autoreconf
 PKG_INSTALL:=1
 PKG_BUILD_PARALLEL:=1
 HOST_BUILD_PARALLEL:=1
@@ -36,9 +37,11 @@ HOST_BUILD_PARALLEL:=1
 PKG_BUILD_DIR:=$(BUILD_DIR)/Python-$(PKG_VERSION)
 HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/Python-$(PKG_VERSION)
 
-PKG_CONFIG_DEPENDS:=CONFIG_PACKAGE_python-setuptools CONFIG_PACKAGE_python-pip
+PKG_CONFIG_DEPENDS:= \
+       CONFIG_PACKAGE_python-setuptools CONFIG_PACKAGE_python-pip \
+       CONFIG_PACKAGE_bluez-libs
 
-PKG_BUILD_DEPENDS:=python/host
+PKG_BUILD_DEPENDS:=python/host PACKAGE_bluez-libs:bluez-libs
 HOST_BUILD_DEPENDS:=bzip2/host expat/host
 
 include $(INCLUDE_DIR)/host-build.mk
@@ -86,7 +89,7 @@ endef
 define Package/python-light
 $(call Package/python/Default)
   TITLE:=Python $(PYTHON_VERSION) light installation
-  DEPENDS:=+python-base +libffi +libbz2
+  DEPENDS:=+python-base +libffi +libbz2 +PACKAGE_bluez-libs:bluez-libs
 endef
 
 define Package/python-light/description
diff --git a/lang/python/python/patches/005-fix-bluetooth-support.patch b/lang/python/python/patches/005-fix-bluetooth-support.patch
new file mode 100644 (file)
index 0000000..ccc2936
--- /dev/null
@@ -0,0 +1,61 @@
+diff --git a/configure b/configure
+index 4c0435e..0068a9d 100755
+--- a/configure
++++ b/configure
+@@ -7045,7 +7045,7 @@ sys/param.h sys/poll.h sys/random.h sys/select.h sys/socket.h sys/statvfs.h sys/
+ sys/termio.h sys/time.h \
+ sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
+ sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
+-bluetooth/bluetooth.h linux/tipc.h spawn.h util.h alloca.h
++linux/tipc.h spawn.h util.h alloca.h
+ do :
+   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+@@ -7267,6 +7267,24 @@ fi
+ fi
++# bluetooth/bluetooth.h has been known to not compile with -std=c99.
++# http://permalink.gmane.org/gmane.linux.bluez.kernel/22294
++SAVE_CFLAGS=$CFLAGS
++CFLAGS="-std=c99 $CFLAGS"
++for ac_header in bluetooth/bluetooth.h
++do :
++  ac_fn_c_check_header_mongrel "$LINENO" "bluetooth/bluetooth.h" "ac_cv_header_bluetooth_bluetooth_h" "$ac_includes_default"
++if test "x$ac_cv_header_bluetooth_bluetooth_h" = xyes; then :
++  cat >>confdefs.h <<_ACEOF
++#define HAVE_BLUETOOTH_BLUETOOTH_H 1
++_ACEOF
++
++fi
++
++done
++
++CFLAGS=$SAVE_CFLAGS
++
+ # On Linux, netlink.h requires asm/types.h
+ for ac_header in linux/netlink.h
+ do :
+diff --git a/configure.ac b/configure.ac
+index 780f275..dceca1c 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1702,10 +1702,17 @@ sys/param.h sys/poll.h sys/random.h sys/select.h sys/socket.h sys/statvfs.h sys/
+ sys/termio.h sys/time.h \
+ sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
+ sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
+-bluetooth/bluetooth.h linux/tipc.h spawn.h util.h alloca.h)
++linux/tipc.h spawn.h util.h alloca.h)
+ AC_HEADER_DIRENT
+ AC_HEADER_MAJOR
++# bluetooth/bluetooth.h has been known to not compile with -std=c99.
++# http://permalink.gmane.org/gmane.linux.bluez.kernel/22294
++SAVE_CFLAGS=$CFLAGS
++CFLAGS="-std=c99 $CFLAGS"
++AC_CHECK_HEADERS(bluetooth/bluetooth.h)
++CFLAGS=$SAVE_CFLAGS
++
+ # On Linux, netlink.h requires asm/types.h
+ AC_CHECK_HEADERS(linux/netlink.h,,,[
+ #ifdef HAVE_ASM_TYPES_H
index 4b5311ecce048c31f91fdf0784f21922c18c7965..38e55ba542f3cc3ca9eab72a5cd45306c4f6abc1 100644 (file)
@@ -16,12 +16,12 @@ PYTHON_VERSION_MICRO:=$(PYTHON3_VERSION_MICRO)
 PKG_NAME:=python3
 # XXX: reset PKG_RELEASE to 1 only if Python's pip & setuptools versions have also bumped;
 #      otherwise, keep bumping PKG_RELEASE
-PKG_RELEASE:=7
+PKG_RELEASE:=10
 PKG_VERSION:=$(PYTHON_VERSION).$(PYTHON_VERSION_MICRO)
 
 PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=https://www.python.org/ftp/python/$(PKG_VERSION)
-PKG_HASH:=9229773be41ed144370f47f0f626a1579931f5a390f1e8e3853174d52edd64a9
+PKG_HASH:=cda7d967c9a4bfa52337cdf551bcc5cff026b6ac50a8834e568ce4a794ca81da
 
 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
@@ -32,6 +32,7 @@ include ./files/python3-host.mk
 # For Py3Package
 include ./files/python3-package.mk
 
+PKG_FIXUP:=autoreconf
 PKG_INSTALL:=1
 PKG_BUILD_PARALLEL:=1
 HOST_BUILD_PARALLEL:=1
@@ -39,9 +40,12 @@ HOST_BUILD_PARALLEL:=1
 PKG_BUILD_DIR:=$(BUILD_DIR)/Python-$(PKG_VERSION)
 HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/Python-$(PKG_VERSION)
 
-PKG_CONFIG_DEPENDS:=CONFIG_PACKAGE_python3-setuptools CONFIG_PACKAGE_python3-pip
+PKG_CONFIG_DEPENDS:= \
+       CONFIG_PACKAGE_python3-setuptools CONFIG_PACKAGE_python3-pip \
+       CONFIG_PACKAGE_bluez-libs
 
-PKG_BUILD_DEPENDS:=python3/host
+
+PKG_BUILD_DEPENDS:=python3/host PACKAGE_bluez-libs:bluez-libs
 HOST_BUILD_DEPENDS:=bzip2/host expat/host libffi/host
 
 include $(INCLUDE_DIR)/host-build.mk
@@ -79,7 +83,7 @@ endef
 define Package/python3-light
 $(call Package/python3/Default)
   TITLE:=Python $(PYTHON_VERSION) light installation
-  DEPENDS:=+python3-base +libffi +libbz2
+  DEPENDS:=+python3-base +libffi +libbz2 +PACKAGE_bluez-libs:bluez-libs
 endef
 
 define Package/python3-light/description
diff --git a/lang/python/python3/files/python3-package-cgi.mk b/lang/python/python3/files/python3-package-cgi.mk
new file mode 100644 (file)
index 0000000..165800a
--- /dev/null
@@ -0,0 +1,27 @@
+#
+# Copyright (C) 2006-2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-cgi
+$(call Package/python3/Default)
+  TITLE:=Python $(PYTHON3_VERSION) cgi module
+  DEPENDS:=+python3-light +python3-email
+endef
+
+define Package/python3-cgitb
+$(call Package/python3/Default)
+  TITLE:=Python $(PYTHON3_VERSION) cgitb module
+  DEPENDS:=+python3-light +python3-cgi +python3-pydoc
+endef
+
+
+$(eval $(call Py3BasePackage,python3-cgi, \
+       /usr/lib/python$(PYTHON3_VERSION)/cgi.py \
+))
+
+$(eval $(call Py3BasePackage,python3-cgitb, \
+       /usr/lib/python$(PYTHON3_VERSION)/cgitb.py \
+))
index e1129215b2bb45669089079fb132e66c8886feff..2990892e98513c9ea690ee62baffd3345779741c 100644 (file)
@@ -8,7 +8,7 @@
 # Note: keep in sync with setuptools & pip
 PYTHON3_VERSION_MAJOR:=3
 PYTHON3_VERSION_MINOR:=6
-PYTHON3_VERSION_MICRO:=2
+PYTHON3_VERSION_MICRO:=3
 
 PYTHON3_VERSION:=$(PYTHON3_VERSION_MAJOR).$(PYTHON3_VERSION_MINOR)
 
diff --git a/lang/python/python3/patches/008-fix-distutils-path-creation.patch b/lang/python/python3/patches/008-fix-distutils-path-creation.patch
deleted file mode 100644 (file)
index 796c1a2..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
---- a/Lib/imp.py
-+++ b/Lib/imp.py
-@@ -203,8 +203,9 @@ def load_package(name, path):
-         extensions = (machinery.SOURCE_SUFFIXES[:] +
-                       machinery.BYTECODE_SUFFIXES[:])
-         for extension in extensions:
--            path = os.path.join(path, '__init__'+extension)
--            if os.path.exists(path):
-+            init_path = os.path.join(path, '__init__'+extension)
-+            if os.path.exists(init_path):
-+                path = init_path
-                 break
-         else:
-             raise ValueError('{!r} is not a package'.format(path))
diff --git a/lang/python/python3/patches/012-disable-wcsftime-detection.patch b/lang/python/python3/patches/012-disable-wcsftime-detection.patch
deleted file mode 100644 (file)
index 8432ac2..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/configure
-+++ b/configure
-@@ -11271,7 +11271,7 @@ for ac_func in alarm accept4 setitimer g
-  sigtimedwait sigwait sigwaitinfo snprintf strftime strlcpy symlinkat sync \
-  sysconf tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
-  truncate uname unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4 \
-- wcscoll wcsftime wcsxfrm wmemcmp writev _getpty
-+ wcscoll wcsxfrm wmemcmp writev _getpty
- do :
-   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
- ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
index b3c3067695ea4d2f01e063282b967c43fd0a7d6d..7a4a4a7fed2c57aca5c754a34263901626e681ae 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2016 OpenWrt.org
+# Copyright (C) 2007-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=pytz
-PKG_VERSION:=2016.6.1
+PKG_VERSION:=2017.2
 PKG_RELEASE:=1
 PKG_LICENSE:=MIT
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/5d/8e/6635d8f3f9f48c03bb925fab543383089858271f9cfd1216b83247e8df94/
-PKG_HASH:=6f57732f0f8849817e9853eb9d50d85d1ebb1404f702dbc44ee627c642a486ca
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).zip
+PKG_SOURCE_URL:=https://pypi.python.org/packages/a4/09/c47e57fc9c7062b4e83b075d418800d322caa87ec0ac21e6308bd3a2d519/
+PKG_HASH:=f5c056e8f62d45ba8215e5cb8f50dfccb198b4b9fbea8500674f3443e4689589
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index 21d80fa1b18803fc1f0033f5a6eb4ef583d0a387..2d993d360d6e6aa5e8d4f33db984fa07db2682fb 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2016 OpenWrt.org
+# Copyright (C) 2007-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=simplejson
-PKG_VERSION:=3.10.0
+PKG_VERSION:=3.11.1
 PKG_RELEASE:=1
 PKG_LICENSE:=MIT
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/40/ad/52c1f3a562df3b210e8f165e1aa243a178c454ead65476a39fa3ce1847b6/
-PKG_HASH:=953be622e88323c6f43fad61ffd05bebe73b9fd9863a46d68b052d2aa7d71ce2
+PKG_SOURCE_URL:=https://pypi.python.org/packages/08/48/c97b668d6da7d7bebe7ea1817a6f76394b0ec959cb04214ca833c34359df/
+PKG_HASH:=01a22d49ddd9a168b136f26cac87d9a335660ce07aa5c630b8e3607d6f4325e7
 PKG_BUILD_DEPENDS:=python python-setuptools
 
 include $(INCLUDE_DIR)/package.mk
index 2296f5fa497f76b01ca76983f1fa2a651470bae0..6337b40722eb8a292bde6da8e886876f6ebd3ef5 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2006-2016 OpenWrt.org
+# Copyright (C) 2006-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=vala
-PKG_VERSION:=0.34.2
+PKG_VERSION:=0.34.5
 PKG_RELEASE:=1
 PKG_LICENSE:=LGPL-2.1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@GNOME/vala/0.34/
-PKG_HASH:=765e9c2b429a66db93247940f8588319b43f35c173d057bcae5717a97d765c41
+PKG_HASH:=3fd4ba371778bc87da42827b8d23f1f42b0629759a9a1c40c9683dfb7e73fae5
 
 PKG_BUILD_DEPENDS:=glib2 glib2/host vala/host
 HOST_BUILD_DEPENDS:=glib2/host
index caf513389fa7d279fe9d76fc37d647c3679f5c97..8bdb99c1814171cfb8dee3933942a7dadc989486 100644 (file)
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=alsa-lib
-PKG_VERSION:=1.1.4.1
+PKG_VERSION:=1.1.5
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=ftp://ftp.alsa-project.org/pub/lib/ \
                http://distfiles.gentoo.org/distfiles/
 
-PKG_HASH:=91bb870c14d1c7c269213285eeed874fa3d28112077db061a3af8010d0885b76
+PKG_HASH:=f4f68ad3c6da36b0b5241ac3c798a7a71e0e97d51f972e9f723b3f20a9650ae6
 PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>, \
                Peter Wagner <tripolar@gmx.at>
 
diff --git a/libs/alsa-lib/patches/200-fix_include_file_redirect_warnings.patch b/libs/alsa-lib/patches/200-fix_include_file_redirect_warnings.patch
deleted file mode 100644 (file)
index a0976bd..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
---- a/aserver/aserver.c
-+++ b/aserver/aserver.c
-@@ -20,7 +20,7 @@
- #include <sys/shm.h>
- #include <sys/socket.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <sys/un.h>
- #include <sys/uio.h>
- #include <stdio.h>
---- a/include/asoundlib-head.h
-+++ b/include/asoundlib-head.h
-@@ -35,6 +35,6 @@
- #include <string.h>
- #include <fcntl.h>
- #include <assert.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <errno.h>
- #include <stdarg.h>
---- a/include/asoundlib.h
-+++ b/include/asoundlib.h
-@@ -35,7 +35,7 @@
- #include <string.h>
- #include <fcntl.h>
- #include <assert.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <errno.h>
- #include <stdarg.h>
- #include <endian.h>
---- a/include/local.h
-+++ b/include/local.h
-@@ -47,7 +47,7 @@
- #error Header defining endianness not defined
- #endif
- #include <stdarg.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <sys/types.h>
- #include <errno.h>
- #if defined(__linux__)
---- a/src/control/control.c
-+++ b/src/control/control.c
-@@ -90,7 +90,7 @@ against the original design.
- #include <string.h>
- #include <fcntl.h>
- #include <signal.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <stdbool.h>
- #include "control_local.h"
---- a/src/control/control_shm.c
-+++ b/src/control/control_shm.c
-@@ -27,7 +27,7 @@
- #include <fcntl.h>
- #include <sys/shm.h>
- #include <sys/socket.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <sys/un.h>
- #include <sys/uio.h>
- #include <sys/mman.h>
---- a/src/pcm/pcm.c
-+++ b/src/pcm/pcm.c
-@@ -651,7 +651,7 @@ playback devices.
- #include <stdarg.h>
- #include <signal.h>
- #include <ctype.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <sys/mman.h>
- #include <limits.h>
- #include "pcm_local.h"
---- a/src/pcm/pcm_direct.c
-+++ b/src/pcm/pcm_direct.c
-@@ -30,7 +30,7 @@
- #include <grp.h>
- #include <sys/ioctl.h>
- #include <sys/mman.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <sys/shm.h>
- #include <sys/sem.h>
- #include <sys/wait.h>
---- a/src/pcm/pcm_mmap.c
-+++ b/src/pcm/pcm_mmap.c
-@@ -22,7 +22,7 @@
- #include <stdio.h>
- #include <malloc.h>
- #include <string.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <sys/mman.h>
- #ifdef HAVE_SYS_SHM_H
- #include <sys/shm.h>
---- a/src/pcm/pcm_share.c
-+++ b/src/pcm/pcm_share.c
-@@ -34,7 +34,7 @@
- #include <signal.h>
- #include <math.h>
- #include <sys/socket.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <pthread.h>
- #include "pcm_local.h"
---- a/src/pcm/pcm_shm.c
-+++ b/src/pcm/pcm_shm.c
-@@ -36,7 +36,7 @@
- #include <sys/ioctl.h>
- #include <sys/shm.h>
- #include <sys/socket.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <sys/un.h>
- #include <sys/mman.h>
- #include <netinet/in.h>
---- a/src/seq/seq.c
-+++ b/src/seq/seq.c
-@@ -777,7 +777,7 @@ void event_filter(snd_seq_t *seq, snd_se
- */
--#include <sys/poll.h>
-+#include <poll.h>
- #include "seq_local.h"
- /****************************************************************************
---- a/src/shmarea.c
-+++ b/src/shmarea.c
-@@ -27,7 +27,7 @@
- #include <malloc.h>
- #include <string.h>
- #include <errno.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <sys/mman.h>
- #include <sys/shm.h>
- #include "list.h"
index c42440d25fe468fc693ef7307169736d00c13c31..d5c9facb8ed069c2bdf4a3f9942a74941f03a86b 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=avahi
 PKG_VERSION:=0.6.32
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://github.com/lathiat/avahi/releases/download/v$(PKG_VERSION)
@@ -317,8 +317,10 @@ define Build/InstallDev
        $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/
        $(INSTALL_DIR) $(1)/usr/lib
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/libavahi-* $(1)/usr/lib/
-ifeq ($(CONFIG_PACKAGE_libavahi-compat-libdnssd)-$(BUILD_VARIANT),y-dbus)
+ifneq ($(CONFIG_PACKAGE_libavahi-compat-libdnssd),)
+ifeq ($(BUILD_VARIANT),dbus)
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/libdns_sd* $(1)/usr/lib/
+endif
 endif
        $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/* $(1)/usr/lib/pkgconfig/
index b449dee45b7969a6b19186ad4d21c2f2f70953e8..351d36a373f5cc0272c8648790eee32c6f105674 100644 (file)
@@ -18,7 +18,7 @@ include $(INCLUDE_DIR)/target.mk
 PKG_NAME:=boost
 PKG_VERSION:=1.65.1
 PKG_SOURCE_VERSION:=1_65_1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)_$(PKG_SOURCE_VERSION).tar.bz2
 PKG_SOURCE_URL:=https://sourceforge.net/projects/boost/files/boost/$(PKG_VERSION)
@@ -54,8 +54,8 @@ Boost is a set of free, peer-reviewed, portable C++ source libraries.
 | compile the kernel with Full Language Support.                            |
 | Without these requirerements, the following libs will not be available:   |
 | - Boost.Locale                                                            |
-| - Boost.Coroutine2                                                        |
-| - Boost.Fiber                                                             |
+| - Boost.Coroutine2 (header-only library - requires C++11)                 |
+| - Boost.Fiber (requires C++14)                                            |
 -----------------------------------------------------------------------------
 
 This package provides the following run-time libraries:
@@ -307,7 +307,7 @@ $(eval $(call DefineBoostLibrary,date_time,,))
 $(eval $(call DefineBoostLibrary,fiber,coroutine filesystem,,))
 $(eval $(call DefineBoostLibrary,filesystem,system,))
 $(eval $(call DefineBoostLibrary,graph,regex,))
-$(eval $(call DefineBoostLibrary,iostreams,,+zlib +liblzma))
+$(eval $(call DefineBoostLibrary,iostreams,,+zlib +liblzma +libbz2))
 $(eval $(call DefineBoostLibrary,locale,system,$(ICONV_DEPENDS),BUILD_NLS))
 $(eval $(call DefineBoostLibrary,log,system chrono date_time thread filesystem regex,))
 $(eval $(call DefineBoostLibrary,math,,))
@@ -389,13 +389,15 @@ define Build/Compile
                        $(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 $(findstring python,$(lib)), \
                                        $(if $(CONFIG_PACKAGE_boost-python),python=2.7,--without-python), \
-                                       $(if $(CONFIG_PACKAGE_boost-$(lib)),,--without-$(lib))) \
+                                               $(if $(CONFIG_PACKAGE_boost-$(lib)),, \
+                                                       $(if $(findstring $(lib),wserialization),,--without-$(lib)) \
+                                               ) \
+                                       ) \
                        ) \
                        $(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) \
@@ -403,26 +405,32 @@ define Build/Compile
                        $(if $(CONFIG_PACKAGE_boost-iostreams),-sNO_BZIP2=1 -sZLIB_INCLUDE=$(STAGING_DIR)/usr/include \
                                -sZLIB_LIBPATH=$(STAGING_DIR)/usr/lib) \
                        install ;\
-               b2 \
-                       $(CONFIGURE_ARGS) \
-                       --ignore-site-config \
-                       --toolset=gcc-$(ARCH) abi=$(BOOST_ABI) \
-                       --disable-long-double \
-                       $(if $(CONFIG_boost-variant-release), variant=release,) \
-                       $(if $(CONFIG_boost-variant-debug), variant=debug,) \
-                       $(if $(CONFIG_boost-variant-profile), variant=profile,) \
-                       $(if $(CONFIG_boost-use-name-tags),--layout=tagged,--layout=system) \
-                       $(if $(CONFIG_boost-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 \
-                       $(if $(CONFIG_PACKAGE_boost-python3),--with-python python=3.6,) \
-                       install ;\
+                       $(if $(CONFIG_PACKAGE_boost-python3), \
+                               b2 \
+                                       $(CONFIGURE_ARGS) \
+                                       --ignore-site-config \
+                                       --toolset=gcc-$(ARCH) abi=$(BOOST_ABI) \
+                                       --disable-long-double \
+                                       $(if $(CONFIG_boost-variant-release), variant=release,) \
+                                       $(if $(CONFIG_boost-variant-debug), variant=debug,) \
+                                       $(if $(CONFIG_boost-variant-profile), variant=profile,) \
+                                       $(if $(CONFIG_boost-use-name-tags),--layout=tagged,--layout=system) \
+                                       $(if $(CONFIG_boost-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 \
+                                       $(foreach lib,$(BOOST_LIBS), \
+                                               $(if $(findstring python,$(lib)), \
+                                                       $(if $(CONFIG_PACKAGE_boost-python3),python=3.6,), \
+                                               ) \
+                                       ) \
+                               install ;\
+                       ,) \
        )
 endef
 
index 79341e9b60f6a86fb3154ebd582a0e13b213d66a..2e0429686aeb6d609c46dc50cc1869e089b969e4 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=check
-PKG_VERSION:=0.11.0
+PKG_VERSION:=0.12.0
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://github.com/libcheck/check/releases/download/$(PKG_VERSION)
-PKG_HASH:=24f7a48aae6b74755bcbe964ce8bc7240f6ced2141f8d9cf480bc3b3de0d5616
+PKG_HASH:=464201098bee00e90f5c4bdfa94a5d3ead8d641f9025b560a27755a83b824234
 
 PKG_LICENSE:=LGPL-2.1+
 PKG_LICENSE_FILES:=COPYING.LESSER
index f57c5a429616c84c4d804a7eadd34d16495644dc..9ac94b26230de9659e2bc6c53bb06b2d3cc329be 100644 (file)
@@ -6,12 +6,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=expat
-PKG_VERSION:=2.2.4
+PKG_VERSION:=2.2.5
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=@SF/expat
-PKG_HASH:=03ad85db965f8ab2d27328abcf0bc5571af6ec0a414874b2066ee3fdd372019e
+PKG_HASH:=d9dc32efba7e74f788fcc4f212a43216fc37cf5f23f4c2339664d473353aedf6
 PKG_MAINTAINER:=Steven Barth <cyrus@openwrt.org>, \
                Ted Hess <thess@kitschensync.net>
 
index f315b5382d0d1cf9ab7a3436c6b5e5ec5d8fd569..cd3128180c89ad024cadaace4fdd192216ca902b 100644 (file)
@@ -6,12 +6,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=faad2
-PKG_VERSION:=2.8.1
+PKG_VERSION:=2.8.6
 PKG_RELEASE:=1
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@SF/faac/faad2-src/$(PKG_NAME)-2.8.0
-PKG_HASH:=f4042496f6b0a60f5ded6acd11093230044ef8a2fd965360c1bbd5b58780933d
+PKG_HASH:=654977adbf62eb81f4fca00152aca58ce3b6dd157181b9edd7bed687a7c73f21
 PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
 
 PKG_FIXUP:=autoreconf
index 7eba0916f715e50eb776d05f66f85fe43b108ab3..492b1165ab5faa1d10ae416bd526f9c7eb9b6ae0 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=fftw3
-PKG_VERSION:=3.3.6-pl2
+PKG_VERSION:=3.3.7
 PKG_RELEASE:=1
 PKG_LICENSE:=GPL-2.0+
 
 PKG_SOURCE:=fftw-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.fftw.org
-PKG_HASH:=a5de35c5c824a78a058ca54278c706cdf3d4abba1c56b63531c2cb05f5d57da2
+PKG_HASH:=3b609b7feba5230e8f6dd8d245ddbefac324c5a6ae4186947670d9ac2cd25573
 
 PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/fftw-$(PKG_VERSION)
 PKG_FIXUP:=autoreconf
@@ -73,10 +73,12 @@ CONFIGURE_ARGS += \
        --enable-threads \
        --enable-type-prefix \
        --disable-debug \
-       --disable-fortran
+       --disable-fortran \
+       --disable-doc
 
 ifeq ($(BUILD_VARIANT), single)
 CONFIGURE_ARGS += \
+       $(if $(findstring neon,$(CONFIG_TARGET_OPTIMIZATION)),--enable-neon) \
        --enable-single
 endif
 
index e7f70f836ad2d94b41949571c9bb8d2843b39c1e..36a540261d326edfcdcabda8b41ce51733caaa86 100644 (file)
@@ -8,16 +8,16 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=freetype
-PKG_VERSION:=2.7.1
-PKG_RELEASE:=1
+PKG_VERSION:=2.8.1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=@SF/freetype
-PKG_HASH:=3a3bb2c4e15ffb433f2032f50a5b5a92558206822e22bfe8cbe339af4aa82f88
+PKG_HASH:=e5435f02e02d2b87bb8e4efdcaa14b1f78c9cf3ab1ed80f94b6382fb6acc7d78
 
 PKG_LICENSE:=FTL GPL-2.0 MIT ZLIB
 PKG_LICENSE_FILES:=docs/LICENSE.TXT docs/FTL.TXT docs/GPLv2.TXT src/bdf/README src/pcf/README src/gzip/zlib.h
-PKG_MAINTAINER:=Nicolas Thill <nico@openwrt.org>
+PKG_MAINTAINER:=Val Kulkov <val.kulkov@gmail.com>
 
 PKG_FIXUP:=autoreconf
 PKG_LIBTOOL_PATHS:=builds/unix
@@ -30,7 +30,7 @@ define Package/libfreetype
   CATEGORY:=Libraries
   TITLE:=A free, high-quality and portable font engine
   URL:=http://www.freetype.org/
-  DEPENDS:=+zlib +libbz2
+  DEPENDS:=+zlib +libbz2 +libpng
 endef
 
 define Package/libfreetype/description
@@ -47,13 +47,15 @@ CONFIGURE_ARGS += \
        --enable-static \
        --with-bzip2=yes \
        --with-zlib=yes \
-       --with-png=no \
+       --with-png=yes
 
 define Build/Compile
        $(MAKE) -C $(PKG_BUILD_DIR) DESTDIR="$(PKG_INSTALL_DIR)" all install
 endef
 
 define Build/InstallDev
+       $(INSTALL_DIR) $(1)/bin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/freetype-config $(1)/bin/
        $(INSTALL_DIR) $(2)/bin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/freetype-config $(2)/bin/
        $(INSTALL_DIR) $(1)/usr/include
@@ -63,11 +65,6 @@ define Build/InstallDev
        $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/freetype2.pc $(1)/usr/lib/pkgconfig/
 
-       $(SED) \
-               's,^\(prefix\|exec_prefix\)=.*,\1="$(STAGING_DIR)/usr",; \
-                s,^\(includedir\)=.*,\1="$(STAGING_DIR)/usr/include",; \
-                s,^\(libdir\)=.*,\1="$(STAGING_DIR)/usr/lib",' \
-                $(2)/bin/freetype-config
        $(SED) \
                's,/usr/include,$$$${prefix}/include,g; \
                 s,/usr/lib,$$$${exec_prefix}/lib,g' \
index 1e37ee21976097d1c129a313f3a5db7c66d23d4f..c203fd316b1696d36e6ea937ebfb717f814285ff 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=glib2
-PKG_VERSION:=2.53.7
+PKG_VERSION:=2.55.0
 PKG_RELEASE:=1
 
 PKG_SOURCE:=glib-$(PKG_VERSION).tar.xz
 PKG_BUILD_DIR:=$(BUILD_DIR)/glib-$(PKG_VERSION)
-PKG_SOURCE_URL:=@GNOME/glib/2.53
-PKG_HASH:=028efbf6df4d88d7725314456524b923169f4d4f8503347194b2baf2222f3e33
+PKG_SOURCE_URL:=@GNOME/glib/2.55
+PKG_HASH:=13fc009e68ca490f986f21a7d5d3a429486fb28a1f4e06298c9ac976067518f5
 
 PKG_BUILD_PARALLEL:=1
 HOST_BUILD_PARALLEL:=1
index 3f85a14bda2b112a8533da1dda8a79ef930dbc39..d4531357c1d29366eb98f06de3ce3d2248611aec 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=glpk
-PKG_VERSION:=4.62
+PKG_VERSION:=4.63
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
-PKG_HASH:=096e4be3f83878ccf70e1fdb62ad1c178715ef8c0d244254c29e2f9f0c1afa70
+PKG_HASH:=914d27f1a51c2bf4a51f1bd4a507f875fcca99db7b219380b836a25b29b3e7f6
 
 PKG_LICENSE:=GPL-3.0
 PKG_LICENSE_FILES:=COPYING
index 3223a63db62b208af2c3df573cb9f9cd90f4e86c..e060e33facabc5cdc739f8cf4ae14fefa70aa5fd 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gnutls
-PKG_VERSION:=3.5.13
+PKG_VERSION:=3.5.16
 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.5
-PKG_HASH:=79f5480ad198dad5bc78e075f4a40c4a315a1b2072666919d2d05a08aec13096
+PKG_HASH:=0924dec90c37c05f49fec966eba3672dab4d336d879e5c06e06e13325cbfec25
 #PKG_FIXUP:=autoreconf gettext-version
 PKG_MAINTAINER:=Nikos Mavrogiannopoulos <nmav@gnutls.org>
 PKG_LICENSE:=LGPLv2.1+
index aa86869db1ad44e8f908e9ab489d81d928b54104..9d25f3a0eb6f321e685eabd3e99a6f5b94aea884 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=icu4c
-PKG_VERSION:=59.1
-PKG_RELEASE:=2
+PKG_VERSION:=60.1
+PKG_RELEASE:=1
 
-PKG_SOURCE:=$(PKG_NAME)-59_1-src.tgz
+PKG_SOURCE:=$(PKG_NAME)-60_1-src.tgz
 PKG_SOURCE_URL:=http://download.icu-project.org/files/$(PKG_NAME)/$(PKG_VERSION)
-PKG_HASH:=7132fdaf9379429d004005217f10e00b7d2319d0fea22bdfddef8991c45b75fe
+PKG_HASH:=f8f5a6c8fbf32c015a467972bdb1477dc5f5d5dfea908b6ed218715eeb5ee225
 
 PKG_LICENSE:=ICU-1.8.1+
 PKG_LICENSE_FILES:=LICENSE
index 291530a530e6c2e8a28201f47db642de76f27c7f..cada77ff23eb5c9506f746af82e836926c370d41 100644 (file)
@@ -2,7 +2,7 @@ diff --git a/Makefile.in b/Makefile.in
 index 9db6c52..6aa2273 100644
 --- a/Makefile.in
 +++ b/Makefile.in
-@@ -184,7 +184,6 @@ install-icu: $(INSTALLED_BUILT_FILES)
+@@ -186,7 +186,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/
diff --git a/libs/icu/patches/001-disable-strtod_l.patch b/libs/icu/patches/001-disable-strtod_l.patch
deleted file mode 100644 (file)
index 7ee9732..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
---- a/configure.ac
-+++ b/configure.ac
-@@ -883,8 +883,8 @@
- AC_CHECK_FUNC(strtod_l)
- if test x$ac_cv_func_strtod_l = xyes
- then
--     CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_STRTOD_L=1"
--     U_HAVE_STRTOD_L=1
-+     CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_STRTOD_L=0"
-+     U_HAVE_STRTOD_L=0
- else
-      CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_STRTOD_L=0"
-      U_HAVE_STRTOD_L=0
---- a/configure
-+++ b/configure
-@@ -7093,8 +7093,8 @@
- if test x$ac_cv_func_strtod_l = xyes
- then
--     CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_STRTOD_L=1"
--     U_HAVE_STRTOD_L=1
-+     CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_STRTOD_L=0"
-+     U_HAVE_STRTOD_L=0
- else
-      CONFIG_CPPFLAGS="${CONFIG_CPPFLAGS} -DU_HAVE_STRTOD_L=0"
-      U_HAVE_STRTOD_L=0
index e27ad95767ba19b4efdde87b1bcc8518f0414b58..e60b8978c5829d0a2b31c5e5fcb1d5c70bbb0563 100644 (file)
@@ -14,6 +14,8 @@ PKG_RELEASE:=1
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@KERNEL/linux/libs/security/linux-privs/libcap2
 PKG_HASH:=693c8ac51e983ee678205571ef272439d83afe62dd8e424ea14ad9790bc35162
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=License
 PKG_MAINTAINER:=Paul Wassi <p.wassi@gmx.at>
 
 PKG_INSTALL:=1
index 0af8f0750d85e6275ffef496f1c4c5d8c10baf5e..5bb2baac5c3528833647cbeae448aa3abf9108d6 100644 (file)
@@ -6,7 +6,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libextractor
-PKG_VERSION:=1.4
+PKG_VERSION:=1.6
 PKG_RELEASE:=1
 
 # ToDo:
@@ -14,7 +14,7 @@ PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
-PKG_HASH:=84128170a4a9aa3a19942dd53fdf30ed17b56d7fae79b5f6e7e17a0d65d1f66c
+PKG_HASH:=26d4adca2e381d2a0c8b3037ec85e094ac5d40485623794466cfc176f5bbf69d
 
 PKG_LICENSE:=GPL-3.0
 PKG_LICENSE_FILES:=COPYING
index f606fbf1100726aa706237bb38a4ed107f90771b..d1894a17a9edfaf2253125a8832bc778873cbf46 100644 (file)
@@ -14,6 +14,8 @@ PKG_RELEASE:=1
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=ftp://ftp.gnupg.org/gcrypt/libgcrypt
 PKG_HASH:=f9461b4619bb78b273a88d468915750d418e89a3ea3b641bab0563a9af4b04d0
+PKG_LICENSE:=LGPL-2.1+ GPL-2.0+
+PKG_LICENSE_FILES:=COPYING
 
 PKG_FIXUP:=patch-libtool
 PKG_INSTALL:=1
index ec4ac1c215a1c6066fc5354ecc57827b5d66b128..8d4fc08a594ed99e72c0b3b66891e0dbeb2c5c2b 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libgd
-PKG_VERSION:=2.2.4
-PKG_RELEASE:=2
+PKG_VERSION:=2.2.5
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=https://github.com/$(PKG_NAME)/$(PKG_NAME)/releases/download/gd-$(PKG_VERSION)/
-PKG_HASH:=137f13a7eb93ce72e32ccd7cebdab6874f8cf7ddf31d3a455a68e016ecd9e4e6
+PKG_HASH:=8c302ccbf467faec732f0741a859eef4ecae22fea2d2ab87467be940842bde51
 PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
 PKG_LICENSE:=MIT
 
index 2f1d53e1874f268eb6eadb3ac95053d442e1d033..6e93effeb5953b697546faec371c94b0ad7c8c93 100644 (file)
@@ -14,6 +14,8 @@ PKG_RELEASE:=1
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=ftp://ftp.gnupg.org/gcrypt/libgpg-error
 PKG_HASH:=cafc9ed6a87c53a35175d5a1220a96ca386696eef2fa059cc0306211f246e55f
+PKG_LICENSE:=LGPL-2.1+
+PKG_LICENSE_FILES:=COPYING
 
 PKG_BUILD_PARALLEL:=1
 PKG_INSTALL:=1
index 20a5585b132a01e74dcce1bd8ae2197bfd1098e4..b5af7f100835aa84f3be9dbcb65ab0b91a1db386 100644 (file)
@@ -9,14 +9,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libgphoto2
-PKG_VERSION:=2.5.14
-PKG_RELEASE:=2
+PKG_VERSION:=2.5.16
+PKG_RELEASE:=1
 PORT_VERSION:=0.12.0
 PKG_MAINTAINER:=Leonardo Medici <leonardo_medici@me.com>
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=@SF/gphoto
-PKG_HASH:=d3ce70686fb87d6791b9adcbb6e5693bfbe1cfef9661c23c75eb8a699ec4e274
+PKG_HASH:=e757416d1623e01a9d0d294b2e790162e434c0964f50d3b7ff1a3424b62a2906
 PKG_LICENSE:=LGPL-2.1
 PKG_LICENSE_FILES:=COPYING
 
index e1b9977b6d838607221237c780bd81e052abc94f..fa70b543f288a6aa12142b213c303c8e7d2e17e2 100644 (file)
@@ -1,7 +1,7 @@
-Index: libgphoto2-2.5.14/configure.ac
+Index: libgphoto2-2.5.16/configure.ac
 ===================================================================
---- libgphoto2-2.5.14.orig/configure.ac
-+++ libgphoto2-2.5.14/configure.ac
+--- libgphoto2-2.5.16.orig/configure.ac
++++ libgphoto2-2.5.16/configure.ac
 @@ -209,7 +209,6 @@ ALL_LINGUAS="cs da de es eu fr hu it ja
  GP_GETTEXT_HACK([${PACKAGE}-${LIBGPHOTO2_CURRENT_MIN}],[The gPhoto Team],[${MAIL_GPHOTO_TRANSLATION}])
  AM_GNU_GETTEXT_VERSION([0.14.1])
@@ -10,10 +10,10 @@ Index: libgphoto2-2.5.14/configure.ac
  AM_ICONV()
  GP_GETTEXT_FLAGS()
 
-Index: libgphoto2-2.5.14/libgphoto2_port/configure.ac
+Index: libgphoto2-2.5.16/libgphoto2_port/configure.ac
 ===================================================================
---- libgphoto2-2.5.14.orig/libgphoto2_port/configure.ac
-+++ libgphoto2-2.5.14/libgphoto2_port/configure.ac
+--- libgphoto2-2.5.16.orig/libgphoto2_port/configure.ac
++++ libgphoto2-2.5.16/libgphoto2_port/configure.ac
 @@ -124,7 +124,6 @@ GP_GETTEXT_HACK([${PACKAGE}-${LIBGPHOTO2
  ALL_LINGUAS="cs da de es eu fi fr it ja nl pl pt_BR ru sk sr sv uk vi zh_CN zh_TW"
  AM_GNU_GETTEXT_VERSION([0.14.1])
index 9914201dc088ece51b6feef52c45dacce2bde1c7..2bb0e0c43a9a89e78125a4799f4f52fa2d7ad9f7 100644 (file)
@@ -1,7 +1,7 @@
-Index: libgphoto2-2.5.14/Makefile.am
+Index: libgphoto2-2.5.16/Makefile.am
 ===================================================================
---- libgphoto2-2.5.14.orig/Makefile.am
-+++ libgphoto2-2.5.14/Makefile.am
+--- libgphoto2-2.5.16.orig/Makefile.am
++++ libgphoto2-2.5.16/Makefile.am
 @@ -8,7 +8,7 @@ bin_SCRIPTS = gphoto2-config
  EXTRA_DIST = HACKING MAINTAINERS TESTERS installcheck.mk
 
@@ -11,10 +11,10 @@ Index: libgphoto2-2.5.14/Makefile.am
 
  EXTRA_DIST    += libgphoto2.pc.in
  pkgconfig_DATA = libgphoto2.pc
-Index: libgphoto2-2.5.14/Makefile.in
+Index: libgphoto2-2.5.16/Makefile.in
 ===================================================================
---- libgphoto2-2.5.14.orig/Makefile.in
-+++ libgphoto2-2.5.14/Makefile.in
+--- libgphoto2-2.5.16.orig/Makefile.in
++++ libgphoto2-2.5.16/Makefile.in
 @@ -482,7 +482,7 @@ EXTRA_DIST = HACKING MAINTAINERS TESTERS
        INSTALL README.in README README.packaging
 
@@ -24,10 +24,10 @@ Index: libgphoto2-2.5.14/Makefile.in
  pkgconfig_DATA = libgphoto2.pc
  noinst_DATA = libgphoto2-uninstalled.pc
  doc_DATA = AUTHORS COPYING NEWS ABOUT-NLS ChangeLog README \
-Index: libgphoto2-2.5.14/configure.ac
+Index: libgphoto2-2.5.16/configure.ac
 ===================================================================
---- libgphoto2-2.5.14.orig/configure.ac
-+++ libgphoto2-2.5.14/configure.ac
+--- libgphoto2-2.5.16.orig/configure.ac
++++ libgphoto2-2.5.16/configure.ac
 @@ -635,20 +635,11 @@ gphoto-m4/Makefile
  libgphoto2/Makefile
  libgphoto2.pc
@@ -49,10 +49,10 @@ Index: libgphoto2-2.5.14/configure.ac
  ],[
  dnl This relies on this code being called for each of the above files
  dnl with ac_file set to the filename.
-Index: libgphoto2-2.5.14/libgphoto2_port/Makefile.am
+Index: libgphoto2-2.5.16/libgphoto2_port/Makefile.am
 ===================================================================
---- libgphoto2-2.5.14.orig/libgphoto2_port/Makefile.am
-+++ libgphoto2-2.5.14/libgphoto2_port/Makefile.am
+--- libgphoto2-2.5.16.orig/libgphoto2_port/Makefile.am
++++ libgphoto2-2.5.16/libgphoto2_port/Makefile.am
 @@ -25,7 +25,7 @@ udevscript_PROGRAMS =
  bin_SCRIPTS = gphoto2-port-config
 
@@ -62,10 +62,10 @@ Index: libgphoto2-2.5.14/libgphoto2_port/Makefile.am
 
 
  ########################################################################
-Index: libgphoto2-2.5.14/libgphoto2_port/Makefile.in
+Index: libgphoto2-2.5.16/libgphoto2_port/Makefile.in
 ===================================================================
---- libgphoto2-2.5.14.orig/libgphoto2_port/Makefile.in
-+++ libgphoto2-2.5.14/libgphoto2_port/Makefile.in
+--- libgphoto2-2.5.16.orig/libgphoto2_port/Makefile.in
++++ libgphoto2-2.5.16/libgphoto2_port/Makefile.in
 @@ -574,7 +574,7 @@ EXTRA_LTLIBRARIES = disk.la ptpip.la ser
  bin_SCRIPTS = gphoto2-port-config
 
@@ -75,10 +75,10 @@ Index: libgphoto2-2.5.14/libgphoto2_port/Makefile.in
 
  ########################################################################
  # All iolibs are defined as EXTRA_LTLIBRARIES. This requires that
-Index: libgphoto2-2.5.14/libgphoto2_port/configure.ac
+Index: libgphoto2-2.5.16/libgphoto2_port/configure.ac
 ===================================================================
---- libgphoto2-2.5.14.orig/libgphoto2_port/configure.ac
-+++ libgphoto2-2.5.14/libgphoto2_port/configure.ac
+--- libgphoto2-2.5.16.orig/libgphoto2_port/configure.ac
++++ libgphoto2-2.5.16/libgphoto2_port/configure.ac
 @@ -512,13 +512,10 @@ AC_SUBST([AM_LDFLAGS])
  # ---------------------------------------------------------------------------
  AC_CONFIG_FILES([
index 4a9b4406d8dc313f0ac4fe7dca91ed38c211e0cf..4ed08e398e44b926e1a26d73c655184b071d3219 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libiio
-PKG_VERSION:=0.10
-PKG_RELEASE:=4
+PKG_VERSION:=0.11
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://codeload.github.com/analogdevicesinc/libiio/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=002d57f35715821efae66479859bc5357b4d8d33bfff1446b4e17b02ae2c10d2
+PKG_HASH:=0174111b028d84f18fb3716b22834a372a1f2575938f87e20e5cbd76747d0fdb
 
 PKG_LICENSE:=LGPL-2.1
 PKG_LICENSE_FILES:=COPYING.txt
@@ -58,7 +58,7 @@ define Package/iiod
   DEPENDS:=+libiio
 endef
 
-define Package/libiio/description
+define Package/iiod/description
   Daemon to access IIO devices via network.
 endef
 
@@ -71,7 +71,7 @@ define Package/iio-utils
 endef
 
 define Package/iio-utils/description
-  Command tools for IIO devices.
+  Command line tools for IIO devices.
 endef
 
 define Build/InstallDev
@@ -91,6 +91,8 @@ define Package/libiio/install
 endef
 
 define Package/iiod/install
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/iiod.init $(1)/etc/init.d/iiod
        $(INSTALL_DIR) $(1)/usr/sbin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/iiod $(1)/usr/sbin/
 endef
diff --git a/libs/libiio/files/iiod.init b/libs/libiio/files/iiod.init
new file mode 100644 (file)
index 0000000..1ac62f3
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh /etc/rc.common
+
+START=90
+USE_PROCD=1
+PROG=/usr/sbin/iiod
+
+start_service() {
+       procd_open_instance
+       procd_set_param command $PROG
+       procd_set_param respawn
+       procd_close_instance
+}
diff --git a/libs/libiio/patches/001-quote-strequal.patch b/libs/libiio/patches/001-quote-strequal.patch
new file mode 100644 (file)
index 0000000..d8b91f8
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/CMakeLists.txt   2017-10-23 22:24:46.000000000 +0200
++++ b/CMakeLists.txt   2017-11-18 20:31:27.943838662 +0100
+@@ -111,7 +111,7 @@
+               OUTPUT_STRIP_TRAILING_WHITESPACE
+       )
+-      if (${LIBIIO_GIT_REPO} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
++      if ("${LIBIIO_GIT_REPO}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
+               execute_process(
+                       COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
+                       WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
index 12e4bf11f3c38d0c873239f6f786f6e402ea7aef..4bff516417ba0b5b313926c56c4dccec38735e92 100644 (file)
@@ -12,11 +12,11 @@ PKG_NAME:=libnetconf2
 PKG_LICENSE:=BSD-3-Clause
 PKG_MAINTAINER:=Mislav Novakovic <mislav.novakovic@sartura.hr>
 
-PKG_VERSION:=0.9.15
+PKG_VERSION:=0.9.22
 
 PKG_SOURCE_PROTO:=git
-PKG_SOURCE_VERSION:=cea46db1edb72231c9e009d7e6d6799256676eb8
-PKG_MIRROR_HASH:=a686754cef2ef29a511b8ea06d121f0ce562b570d6cea6c6a7562ff47b91d2a2
+PKG_SOURCE_VERSION:=8aafe1286cb4036b87054e6e1ca5edc34a31595c
+PKG_MIRROR_HASH:=ac6fca84ba903825958afe313ff0795c34eb0865ed7b5003b7112afcb24b9d94
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
 PKG_SOURCE_URL:=https://github.com/cesnet/libnetconf2/
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION)
index 67ab15452dcfb8ba24729a23fa6fe8af2110600f..6d86cd1a7483f9add2736b1e90b745b1f8fe2c26 100644 (file)
@@ -8,9 +8,9 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libp11
-PKG_VERSION:=0.4.6
+PKG_VERSION:=0.4.7
 PKG_RELEASE:=1
-PKG_HASH:=03d4990c17c8dc1ba18a442a944acca6c03f4a3972be9aea6e727882f2be6d7c
+PKG_HASH:=32e486d4279e09174b63eb263bc840016ebfa80b0b154390c0539b211aec0452
 
 PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
 PKG_LICENSE:=LGPL-2.1+
index ac782c8a31cb68d9773319b3f419b9484dc8ad6c..fc48925c2775d3b76b25ec048bccfbae59b61277 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libpng
-PKG_VERSION:=1.6.29
-PKG_RELEASE:=2
+PKG_VERSION:=1.6.34
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@SF/libpng
-PKG_HASH:=4245b684e8fe829ebb76186327bb37ce5a639938b219882b53d64bd3cfc5f239
+PKG_HASH:=2f1e960d92ce3b3abd03d06dfec9637dfbd22febf107a536b44f7a47c60659f6
 PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
 
 PKG_LICENSE:=Libpng GPL-2.0+ BSD-3-Clause
@@ -39,6 +39,7 @@ TARGET_CFLAGS += $(FPIC)
 CONFIGURE_ARGS += \
        --enable-shared \
        --enable-static \
+       $(if $(findstring neon,$(CONFIG_TARGET_OPTIMIZATION)),--enable-hardware-optimizations=yes --enable-arm-neon=yes)
 
 define Build/InstallDev
        $(INSTALL_DIR) $(1)/usr/bin
index 4d641f44ed41f81ae7bd613509c4664fec7606ab..bf05c6d92454d5e08212f81d3411f00303f577d6 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libsearpc
-PKG_VERSION:=6.0.7
+PKG_VERSION:=6.2.2
 PKG_RELEASE=$(PKG_SOURCE_VERSION)-1
 PKG_LICENSE:=GPL-3.0
 
@@ -17,7 +17,7 @@ PKG_SOURCE_URL:=https://github.com/haiwen/libsearpc.git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
 PKG_SOURCE_VERSION:=8998e7b2c5587f0b94c48db24e2952d08def5add
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_MIRROR_HASH:=125f40beb7d310e65571cb0d93f157b196e83423fde69bebf9880ca1cfac6c46
+PKG_MIRROR_HASH:=207baa1fc63a60c117cf4985b60a18212b151fa070f208621633c3b53ab679bf
 PKG_FIXUP:=autoreconf
 PKG_INSTALL:=1
 
diff --git a/libs/libudev-fbsd/patches/005-extern-c.patch b/libs/libudev-fbsd/patches/005-extern-c.patch
new file mode 100644 (file)
index 0000000..de3ae35
--- /dev/null
@@ -0,0 +1,24 @@
+diff -ruN libudev-fbsd-20160820/src/libudev.h libudev-fbsd-20160820.mod/src/libudev.h
+--- libudev-fbsd-20160820/src/libudev.h        2017-11-17 16:46:56.705435146 +0100
++++ libudev-fbsd-20160820.mod/src/libudev.h    2017-11-17 16:48:07.276021522 +0100
+@@ -11,6 +11,11 @@
+ #include <fcntl.h>
+ #include <unistd.h>
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ struct udev;
+ struct udev_device;
+ struct udev_list_entry;
+@@ -83,4 +88,8 @@
+     struct udev_monitor *udev_monitor);
+ void udev_monitor_unref(struct udev_monitor *udev_monitor);
++#ifdef __cplusplus
++} /* extern "C" */
++#endif
++
+ #endif
index b78e52faf9f7e029c580168c29483a7a8922a5d1..d0951611dca47709951280ed2b4ddf31ffdfce69 100644 (file)
@@ -8,16 +8,16 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libuv
-PKG_VERSION:=1.14.0
+PKG_VERSION:=1.17.0
 PKG_RELEASE:=1
 
 PKG_LICENSE_FILES:=LICENSE
 
-PKG_MAINTAINER:=Luka Perkov <luka.perkov@sartura.hr>
+PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
 
 PKG_SOURCE:=$(PKG_NAME)-v$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://dist.libuv.org/dist/v$(PKG_VERSION)/
-PKG_HASH:=7267f1564fc6bd84e1721ad7e3cdd7b5da06faab9fa09522f33589dc08d3edf9
+PKG_HASH:=ab9eb5355eb868e970a02022e0371d819251df6bbb88aada630cfcf8ac7b1c9b
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-v$(PKG_VERSION)
 PKG_BUILD_PARALLEL:=1
index 0fcae55988baba05eb41f173ed9bbbbf29735a4d..be1945d6fd84789c58699f7752dc5dcdfdf6146e 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libwebsockets
-PKG_VERSION:=2.2.1
-PKG_RELEASE:=3
+PKG_VERSION:=2.4.0
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
 PKG_SOURCE_URL:=https://codeload.github.com/warmcat/libwebsockets/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=e7f9eaef258e003c9ada0803a9a5636757a5bc0a58927858834fb38a87d18ad2
+PKG_HASH:=0dc355c1f9a660b98667cc616fa4c4fe08dacdaeff2d5cc9f74e49e9d4af2d95
 
 
 PKG_SOURCE_VERSION:=v$(PKG_VERSION)
@@ -43,9 +43,10 @@ define Package/libwebsockets/Default
        SECTION:=libs
        CATEGORY:=Libraries
        TITLE:=libwebsockets
-       DEPENDS:=+zlib
+       DEPENDS:=+zlib +libcap
        URL:=https://libwebsockets.org
        MAINTAINER:=Karl Palsson <karlp@etactica.com>
+       PROVIDES:= libwebsockets
 endef
 
 define Package/libwebsockets-openssl
@@ -55,11 +56,11 @@ define Package/libwebsockets-openssl
        VARIANT:=openssl
 endef
 
-define Package/libwebsockets-wolfssl
-       $(call Package/libwebsockets/Default)
-       TITLE += (WolfSSL)
-       DEPENDS += +libcyassl
-       VARIANT:=wolfssl
+define Package/libwebsockets-mbedtls
+       $(call Package/$(PKG_NAME)/Default)
+       TITLE += (mbedTLS)
+       DEPENDS += +libmbedtls
+       VARIANT:=mbedtls
 endef
 
 define Package/libwebsockets-full
@@ -75,15 +76,8 @@ ifeq ($(BUILD_VARIANT),openssl)
     CMAKE_OPTIONS += -DLWS_WITH_SSL=ON
 endif
 
-ifeq ($(BUILD_VARIANT),wolfssl)
-    CMAKE_OPTIONS += -DLWS_OPENSSL_CLIENT_CERTS=/etc/ssl/certs
-    CMAKE_OPTIONS += -DLWS_OPENSSL_SUPPORT=ON
-    CMAKE_OPTIONS += -DLWS_WITH_SSL=ON
-# for wolfssl, edit package/libs/wolfssl/Makefile to include --enable-opensslextra
-# NOTE: it will compile without it, untested whether it it's needed?!
-    CMAKE_OPTIONS += -DLWS_USE_WOLFSSL=ON
-    CMAKE_OPTIONS += -DLWS_WOLFSSL_LIBRARIES=$(STAGING_DIR)/usr/lib/libwolfssl.so
-    CMAKE_OPTIONS += -DLWS_WOLFSSL_INCLUDE_DIRS=$(STAGING_DIR)/usr/include
+ifeq ($(BUILD_VARIANT),mbedtls)
+    CMAKE_OPTIONS += -DLWS_WITH_MBEDTLS=1
 endif
 
 ifeq ($(BUILD_VARIANT),full)
@@ -102,10 +96,10 @@ define Package/libwebsockets/install
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/libwebsockets.so* $(1)/usr/lib/
 endef
 
-Package/libwebsockets-wolfssl/install = $(Package/libwebsockets/install)
+Package/libwebsockets-mbedtls/install = $(Package/libwebsockets/install)
 Package/libwebsockets-openssl/install = $(Package/libwebsockets/install)
 Package/libwebsockets-full/install = $(Package/libwebsockets/install)
 
 $(eval $(call BuildPackage,libwebsockets-openssl))
-$(eval $(call BuildPackage,libwebsockets-wolfssl))
+$(eval $(call BuildPackage,libwebsockets-mbedtls))
 $(eval $(call BuildPackage,libwebsockets-full))
index f33309643f739a3d5a8cd669a5e50d8bdd104524..4ca49ac1fb93a5fe403da1a81be1ac24d4626d0f 100644 (file)
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libxml2
-PKG_VERSION:=2.9.6
+PKG_VERSION:=2.9.7
 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_HASH:=8b9038cca7240e881d462ea391882092dfdc6d4f483f72683e817be08df5ebbc
+PKG_HASH:=f63c5e7d30362ed28b38bfa1ac6313f9a80230720b7fb6c80575eeab3ff5900c
 
 PKG_LICENSE:=MIT
 PKG_LICENSE_FILES:=COPYING
@@ -118,6 +118,10 @@ define Build/InstallDev
        $(INSTALL_DIR) $(1)/usr/lib
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/libxml2.{la,a,so*} $(1)/usr/lib/
 
+       $(INSTALL_DIR) $(1)/usr/lib/cmake/libxml2
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/cmake/libxml2/libxml2-config.cmake \
+               $(1)/usr/lib/cmake/libxml2
+
        $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
        $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libxml-2.0.pc $(1)/usr/lib/pkgconfig/
 
index 2e08348622a52fa71c991f34ef93e1cee674d4c2..77e99735ef2d41338d457cbf9f222ecc454f3d06 100644 (file)
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libxslt
-PKG_VERSION:=1.1.28
-PKG_RELEASE:=2
+PKG_VERSION:=1.1.31
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:= \
        http://xmlsoft.org/sources/ \
        ftp://fr.rpmfind.net/pub/libxml/
-PKG_HASH:=5fc7151a57b89c03d7b825df5a0fae0a8d5f05674c0e7cf2937ecec4d54a028c
+PKG_HASH:=db25e96b6b801144277e67c05b10560ac09dfff82ccd53a154ce86e43622f3ab
 
 PKG_LICENSE:=MIT
 PKG_LICENSE_FILES:=COPYING
diff --git a/libs/libyaml-cpp/Makefile b/libs/libyaml-cpp/Makefile
new file mode 100644 (file)
index 0000000..984e142
--- /dev/null
@@ -0,0 +1,54 @@
+#
+# Copyright (C) 2017 Steven Hessing
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libyaml-cpp
+PKG_RELEASE:=1
+
+PKG_MAINTAINER:= Steven Hessing <steven.hessing@gmail.com>
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/jbeder/yaml-cpp/
+PKG_SOURCE_DATA:=2017-11-01
+PKG_SOURCE_VERSION:=beb44b872c07c74556314e730c6f20a00b32e8e5
+PKG_MIRROR_HASH:=3ddb1f5a6c564f33fd164c0300df8048c689c319964a08386d869637a0f5c8e2
+
+PKG_SOURCE_SUBDIR:=yaml-cpp
+
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
+PKG_BUILD_PARALLEL:=1
+
+CMAKE_INSTALL:=1
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+CMAKE_OPTIONS += -DBUILD_SHARED_LIBS=ON
+#CMAKE_OPTIONS += -DBUILD_SHARED_LIBS=OFF
+
+define Package/libyaml-cpp
+       SECTION:=development
+       CATEGORY:=Libraries
+       TITLE:=libyaml-cpp 
+       URL:=https://github.com/jbeder/yaml-cpp
+       DEPENDS:=+libstdcpp
+endef
+
+define Package/libyaml-cpp/description
+yaml-cpp is a YAML parser and emitter in C++ matching the YAML 1.2 spec.
+endef
+
+define Package/libyaml-cpp/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       #$(INSTALL_DATA) $(PKG_BUILD_DIR)/libyaml-cpp.so.0.5.3 $(1)/usr/lib/
+       #$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libyaml-cpp.so.0.5.3 $(1)/usr/lib/
+       $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libyaml-cpp.so.0.5 $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,libyaml-cpp))
index 29c416b0a16c7e941191f4ac91f00dc339ef2488..cb198c04988696a7dbd87c3a316610f1d36ad667 100644 (file)
@@ -8,15 +8,15 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libyang
-PKG_VERSION:=0.13.46
+PKG_VERSION:=0.13.75
 PKG_RELEASE=$(PKG_SOURCE_VERSION)
 
 PKG_LICENSE:=GPL-2.0+
 PKG_MAINTAINER:=Mislav Novakovic <mislav.novakovic@sartura.hr>
 
 PKG_SOURCE_PROTO:=git
-PKG_SOURCE_VERSION:=d1556e0ae3872d676dfd63bd6073fe7e72d0130f
-PKG_MIRROR_HASH:=4a23a3854ceca147e113ab65ecdce3371e30b59436680e7d981b0bab6dbe751d
+PKG_SOURCE_VERSION:=e11255e32a63fdafe31764f5d594bed46d08f6a9
+PKG_MIRROR_HASH:=916cbfd52a04c6b306afa5fb684299f202c1c235689d8b57546a6b4eb4cc5a39
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
 PKG_SOURCE_URL:=https://github.com/CESNET/libyang.git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION)
index 12bbab35724134fdfee29e194df8eb4c5231e39f..8f978a793c7a20fb753cf5e90f653671d1f03262 100644 (file)
@@ -17,6 +17,8 @@ PKG_SOURCE_URL:=ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/ \
        ftp://ftp.nl.uu.net/pub/unix/db/openldap/openldap-release/ \
        ftp://ftp.plig.org/pub/OpenLDAP/openldap-release/
 PKG_HASH:=cdd6cffdebcd95161a73305ec13fc7a78e9707b46ca9f84fb897cd5626df3824
+PKG_LICENSE:=OLDAP-2.8
+PKG_LICENSE_FILES:=LICENSE
 
 PKG_FIXUP:=autoreconf
 
index 82c7ce871082af770cf0821a309954c61a1adcb9..39ccca698dd0781a57362d11739d445f9e75b962 100644 (file)
@@ -5,7 +5,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=postgresql
-PKG_VERSION:=9.6.4
+PKG_VERSION:=9.6.5
 PKG_RELEASE:=1
 PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
 PKG_LICENSE:=PostgreSQL
@@ -16,7 +16,7 @@ PKG_SOURCE_URL:=\
        http://ftp.postgresql.org/pub/source/v$(PKG_VERSION) \
        ftp://ftp.postgresql.org/pub/source/v$(PKG_VERSION)
 
-PKG_HASH:=2b3ab16d82e21cead54c08b95ce3ac480696944a68603b6c11b3205b7376ce13
+PKG_HASH:=06da12a7e3dddeb803962af8309fa06da9d6989f49e22865335f0a14bad0744c
 
 PKG_USE_MIPS16:=0
 PKG_FIXUP:=autoreconf
index 95a353cd426157f29a86ce45c9ca28e083e165b7..a6a4e2f256ae30449823379bfd5c889ce46cc145 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2006-2012 OpenWrt.org
+# Copyright (C) 2006-2017 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:=qrencode
-PKG_VERSION:=3.4.4
-PKG_RELEASE:=2
+PKG_VERSION:=4.0.0
+PKG_RELEASE:=1
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=http://fukuchi.org/works/qrencode/
-PKG_HASH:=e794e26a96019013c0e3665cb06b18992668f352c5553d0a553f5d144f7f2a72
+PKG_HASH:=c90035e16921117d4086a7fdee65aab85be32beb4a376f6b664b8a425d327d0b
 PKG_MAINTAINER:=Jonathan Bennett <JBennett@incomsystems.biz>
 PKG_LICENSE:=LGPL-2.1+
 PKG_INSTALL:=1
@@ -56,7 +56,8 @@ CONFIGURE_ARGS+= \
        --enable-static \
        --disable-rpath \
        --disable-sdltest \
-       --without-tests 
+       --without-tests \
+       --without-png
 
 TARGET_LDFLAGS+= -s
 
diff --git a/libs/qrencode/patches/001-add-inline-svg.patch b/libs/qrencode/patches/001-add-inline-svg.patch
new file mode 100644 (file)
index 0000000..02f7d2a
--- /dev/null
@@ -0,0 +1,67 @@
+From 7dd8a1b6f4efab84025c735195ad9d84f6477359 Mon Sep 17 00:00:00 2001
+From: Jonathan Bennett <JBennett@incomsystems.biz>
+Date: Mon, 16 Oct 2017 11:59:23 -0500
+Subject: [PATCH] Adds the --inline option, which omits the xml tag for SVG
+ output.
+
+---
+ qrenc.c | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/qrenc.c b/qrenc.c
+index ed83d8a..373352e 100644
+--- a/qrenc.c
++++ b/qrenc.c
+@@ -45,6 +45,7 @@ static int structured = 0;
+ static int rle = 0;
+ static int svg_path = 0;
+ static int micro = 0;
++static int inline_svg = 0;
+ static QRecLevel level = QR_ECLEVEL_L;
+ static QRencodeMode hint = QR_MODE_8;
+ static unsigned char fg_color[4] = {0, 0, 0, 255};
+@@ -80,6 +81,7 @@ static const struct option options[] = {
+       {"margin"       , required_argument, NULL, 'm'},
+       {"dpi"          , required_argument, NULL, 'd'},
+       {"type"         , required_argument, NULL, 't'},
++      {"inline"       , no_argument      , NULL, 'I'},
+       {"structured"   , no_argument      , NULL, 'S'},
+       {"kanji"        , no_argument      , NULL, 'k'},
+       {"casesensitive", no_argument      , NULL, 'c'},
+@@ -95,7 +97,7 @@ static const struct option options[] = {
+       {NULL, 0, NULL, 0}
+ };
+-static char *optstring = "ho:r:l:s:v:m:d:t:Skci8MV";
++static char *optstring = "ho:r:l:s:v:m:d:t:ISkci8MV";
+ static void usage(int help, int longopt, int status)
+ {
+@@ -132,6 +134,7 @@ static void usage(int help, int longopt, int status)
+ "  -t {PNG,PNG32,EPS,SVG,XPM,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8},\n"
+ "  --type={PNG,PNG32,EPS,SVG,XPM,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8}\n"
+ "               specify the type of the generated image. (default=PNG)\n\n"
++"  -I, --inline Only useful for SVG output, generates an svg without the XML tag\n"
+ "  -S, --structured\n"
+ "               make structured symbols. Version must be specified.\n\n"
+ "  -k, --kanji  assume that the input text contains kanji (shift-jis).\n\n"
+@@ -551,7 +554,8 @@ static int writeSVG(const QRcode *qrcode, const char *outfile)
+       bg_opacity = (float)bg_color[3] / 255;
+       /* XML declaration */
+-      fputs( "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n", fp );
++      if (!inline_svg)
++              fputs( "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n", fp );
+       /* DTD
+          No document type specified because "while a DTD is provided in [the SVG]
+@@ -1324,6 +1328,9 @@ int main(int argc, char **argv)
+                                       exit(EXIT_FAILURE);
+                               }
+                               break;
++                      case 'I':
++                              inline_svg = 1;
++                              break;
+                       case 'S':
+                               structured = 1;
+                               break;
diff --git a/libs/qrencode/patches/001-disable-png.patch b/libs/qrencode/patches/001-disable-png.patch
deleted file mode 100644 (file)
index 345bb60..0000000
+++ /dev/null
@@ -1,306 +0,0 @@
---- a/qrenc.c
-+++ b/qrenc.c
-@@ -25,7 +25,6 @@
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
--#include <png.h>
- #include <getopt.h>
- #include "qrencode.h"
-@@ -49,7 +48,6 @@
- static int verbose = 0;
- enum imageType {
--      PNG_TYPE,
-       EPS_TYPE,
-       SVG_TYPE,
-       ANSI_TYPE,
-@@ -60,7 +58,7 @@
-       ANSIUTF8_TYPE
- };
--static enum imageType image_type = PNG_TYPE;
-+static enum imageType image_type = SVG_TYPE;
- static const struct option options[] = {
-       {"help"         , no_argument      , NULL, 'h'},
-@@ -96,13 +94,13 @@
-               if(longopt) {
-                       fprintf(stderr,
- "Usage: qrencode [OPTION]... [STRING]\n"
--"Encode input data in a QR Code and save as a PNG or EPS image.\n\n"
-+"Encode input data in a QR Code and save as a SVG or EPS image.\n\n"
- "  -h, --help   display the help message. -h displays only the help of short\n"
- "               options.\n\n"
- "  -o FILENAME, --output=FILENAME\n"
- "               write image to FILENAME. If '-' is specified, the result\n"
- "               will be output to standard output. If -S is given, structured\n"
--"               symbols are written to FILENAME-01.png, FILENAME-02.png, ...\n"
-+"               symbols are written to FILENAME-01.svg, FILENAME-02.svg, ...\n"
- "               (suffix is removed from FILENAME, if specified)\n"
- "  -s NUMBER, --size=NUMBER\n"
- "               specify module size in dots (pixels). (default=3)\n\n"
-@@ -116,9 +114,9 @@
- "               specify the width of the margins. (default=4 (2 for Micro QR)))\n\n"
- "  -d NUMBER, --dpi=NUMBER\n"
- "               specify the DPI of the generated PNG. (default=72)\n\n"
--"  -t {PNG,EPS,SVG,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8}, --type={PNG,EPS,\n"
-+"  -t {EPS,SVG,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8}, --type={EPS,\n"
- "               SVG,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8}\n"
--"               specify the type of the generated image. (default=PNG)\n\n"
-+"               specify the type of the generated image. (default=SVG)\n\n"
- "  -S, --structured\n"
- "               make structured symbols. Version must be specified.\n\n"
- "  -k, --kanji  assume that the input text contains kanji (shift-jis).\n\n"
-@@ -133,7 +131,7 @@
- "      --background=RRGGBB[AA]\n"
- "               specify foreground/background color in hexadecimal notation.\n"
- "               6-digit (RGB) or 8-digit (RGBA) form are supported.\n"
--"               Color output support available only in PNG and SVG.\n"
-+"               Color output support available only in SVG.\n"
- "  -V, --version\n"
- "               display the version number and copyrights of the qrencode.\n\n"
- "      --verbose\n"
-@@ -153,12 +151,12 @@
-               } else {
-                       fprintf(stderr,
- "Usage: qrencode [OPTION]... [STRING]\n"
--"Encode input data in a QR Code and save as a PNG or EPS image.\n\n"
-+"Encode input data in a QR Code and save as a SVG or EPS image.\n\n"
- "  -h           display this message.\n"
- "  --help       display the usage of long options.\n"
- "  -o FILENAME  write image to FILENAME. If '-' is specified, the result\n"
- "               will be output to standard output. If -S is given, structured\n"
--"               symbols are written to FILENAME-01.png, FILENAME-02.png, ...\n"
-+"               symbols are written to FILENAME-01.svg, FILENAME-02.svg, ...\n"
- "               (suffix is removed from FILENAME, if specified)\n"
- "  -s NUMBER    specify module size in dots (pixels). (default=3)\n"
- "  -l {LMQH}    specify error correction level from L (lowest) to H (highest).\n"
-@@ -166,8 +164,8 @@
- "  -v NUMBER    specify the version of the symbol. (default=auto)\n"
- "  -m NUMBER    specify the width of the margins. (default=4 (2 for Micro))\n"
- "  -d NUMBER    specify the DPI of the generated PNG. (default=72)\n"
--"  -t {PNG,EPS,SVG,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8}\n"
--"               specify the type of the generated image. (default=PNG)\n"
-+"  -t {EPS,SVG,ANSI,ANSI256,ASCII,ASCIIi,UTF8,ANSIUTF8}\n"
-+"               specify the type of the generated image. (default=SVG)\n"
- "  -S           make structured symbols. Version must be specified.\n"
- "  -k           assume that the input text contains kanji (shift-jis).\n"
- "  -c           encode lower-case alphabet characters in 8-bit mode. (default)\n"
-@@ -178,7 +176,7 @@
- "  --background=RRGGBB[AA]\n"
- "               specify foreground/background color in hexadecimal notation.\n"
- "               6-digit (RGB) or 8-digit (RGBA) form are supported.\n"
--"               Color output support available only in PNG and SVG.\n"
-+"               Color output support available only in SVG.\n"
- "  -V           display the version number and copyrights of the qrencode.\n"
- "  [STRING]     input data. If it is not specified, data will be taken from\n"
- "               standard input.\n"
-@@ -253,128 +251,6 @@
-       return fp;
- }
--static int writePNG(QRcode *qrcode, const char *outfile)
--{
--      static FILE *fp; // avoid clobbering by setjmp.
--      png_structp png_ptr;
--      png_infop info_ptr;
--      png_colorp palette;
--      png_byte alpha_values[2];
--      unsigned char *row, *p, *q;
--      int x, y, xx, yy, bit;
--      int realwidth;
--
--      realwidth = (qrcode->width + margin * 2) * size;
--      row = (unsigned char *)malloc((realwidth + 7) / 8);
--      if(row == NULL) {
--              fprintf(stderr, "Failed to allocate memory.\n");
--              exit(EXIT_FAILURE);
--      }
--
--      if(outfile[0] == '-' && outfile[1] == '\0') {
--              fp = stdout;
--      } else {
--              fp = fopen(outfile, "wb");
--              if(fp == NULL) {
--                      fprintf(stderr, "Failed to create file: %s\n", outfile);
--                      perror(NULL);
--                      exit(EXIT_FAILURE);
--              }
--      }
--
--      png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
--      if(png_ptr == NULL) {
--              fprintf(stderr, "Failed to initialize PNG writer.\n");
--              exit(EXIT_FAILURE);
--      }
--
--      info_ptr = png_create_info_struct(png_ptr);
--      if(info_ptr == NULL) {
--              fprintf(stderr, "Failed to initialize PNG write.\n");
--              exit(EXIT_FAILURE);
--      }
--
--      if(setjmp(png_jmpbuf(png_ptr))) {
--              png_destroy_write_struct(&png_ptr, &info_ptr);
--              fprintf(stderr, "Failed to write PNG image.\n");
--              exit(EXIT_FAILURE);
--      }
--
--      palette = (png_colorp) malloc(sizeof(png_color) * 2);
--      if(palette == NULL) {
--              fprintf(stderr, "Failed to allocate memory.\n");
--              exit(EXIT_FAILURE);
--      }
--      palette[0].red   = fg_color[0];
--      palette[0].green = fg_color[1];
--      palette[0].blue  = fg_color[2];
--      palette[1].red   = bg_color[0];
--      palette[1].green = bg_color[1];
--      palette[1].blue  = bg_color[2];
--      alpha_values[0] = fg_color[3];
--      alpha_values[1] = bg_color[3];
--      png_set_PLTE(png_ptr, info_ptr, palette, 2);
--      png_set_tRNS(png_ptr, info_ptr, alpha_values, 2, NULL);
--
--      png_init_io(png_ptr, fp);
--      png_set_IHDR(png_ptr, info_ptr,
--                      realwidth, realwidth,
--                      1,
--                      PNG_COLOR_TYPE_PALETTE,
--                      PNG_INTERLACE_NONE,
--                      PNG_COMPRESSION_TYPE_DEFAULT,
--                      PNG_FILTER_TYPE_DEFAULT);
--      png_set_pHYs(png_ptr, info_ptr,
--                      dpi * INCHES_PER_METER,
--                      dpi * INCHES_PER_METER,
--                      PNG_RESOLUTION_METER);
--      png_write_info(png_ptr, info_ptr);
--
--      /* top margin */
--      memset(row, 0xff, (realwidth + 7) / 8);
--      for(y=0; y<margin * size; y++) {
--              png_write_row(png_ptr, row);
--      }
--
--      /* data */
--      p = qrcode->data;
--      for(y=0; y<qrcode->width; y++) {
--              bit = 7;
--              memset(row, 0xff, (realwidth + 7) / 8);
--              q = row;
--              q += margin * size / 8;
--              bit = 7 - (margin * size % 8);
--              for(x=0; x<qrcode->width; x++) {
--                      for(xx=0; xx<size; xx++) {
--                              *q ^= (*p & 1) << bit;
--                              bit--;
--                              if(bit < 0) {
--                                      q++;
--                                      bit = 7;
--                              }
--                      }
--                      p++;
--              }
--              for(yy=0; yy<size; yy++) {
--                      png_write_row(png_ptr, row);
--              }
--      }
--      /* bottom margin */
--      memset(row, 0xff, (realwidth + 7) / 8);
--      for(y=0; y<margin * size; y++) {
--              png_write_row(png_ptr, row);
--      }
--
--      png_write_end(png_ptr, info_ptr);
--      png_destroy_write_struct(&png_ptr, &info_ptr);
--
--      fclose(fp);
--      free(row);
--      free(palette);
--
--      return 0;
--}
--
- static int writeEPS(QRcode *qrcode, const char *outfile)
- {
-       FILE *fp;
-@@ -831,9 +707,6 @@
-       }
-       switch(image_type) {
--              case PNG_TYPE:
--                      writePNG(qrcode, outfile);
--                      break;
-               case EPS_TYPE:
-                       writeEPS(qrcode, outfile);
-                       break;
-@@ -887,9 +760,6 @@
-       size_t suffix_size;
-       switch(image_type) {
--              case PNG_TYPE:
--                      type_suffix = ".png";
--                      break;
-               case EPS_TYPE:
-                       type_suffix = ".eps";
-                       break;
-@@ -948,9 +818,6 @@
-               }
-               switch(image_type) {
--                      case PNG_TYPE: 
--                              writePNG(p->code, filename);
--                              break;
-                       case EPS_TYPE: 
-                               writeEPS(p->code, filename);
-                               break;
-@@ -1062,9 +929,7 @@
-                               }
-                               break;
-                       case 't':
--                              if(strcasecmp(optarg, "png") == 0) {
--                                      image_type = PNG_TYPE;
--                              } else if(strcasecmp(optarg, "eps") == 0) {
-+                              if(strcasecmp(optarg, "eps") == 0) {
-                                       image_type = EPS_TYPE;
-                               } else if(strcasecmp(optarg, "svg") == 0) {
-                                       image_type = SVG_TYPE;
-@@ -1133,11 +998,6 @@
-               exit(EXIT_SUCCESS);
-       }
--      if(outfile == NULL && image_type == PNG_TYPE) {
--              fprintf(stderr, "No output filename is given.\n");
--              exit(EXIT_FAILURE);
--      }
--
-       if(optind < argc) {
-               intext = (unsigned char *)argv[optind];
-               length = strlen((char *)intext);
---- a/configure.ac
-+++ b/configure.ac
-@@ -58,9 +58,6 @@
-  [build_tools=$withval], [build_tools=yes])
- AM_CONDITIONAL(BUILD_TOOLS, [test "x$build_tools" = "xyes" ])
--if test x$build_tools = xyes ; then
--      PKG_CHECK_MODULES(png, "libpng")
--fi
- dnl --with-tests
- AC_ARG_WITH([tests], [AS_HELP_STRING([--with-tests], [build tests [default=no]])],
-@@ -80,12 +77,6 @@
- echo "/* #undef WITH_TESTS */" >>confdefs.h
- fi
--if test x$build_tests = xyes ; then
--      SDL_REQUIRED_VERSION=1.2.0
--      AM_PATH_SDL($SDL_REQUIRED_VERSION,,AC_MSG_WARN([*** SDL $SDL_REQUIRED_VERSION or better is required.]))
--      AC_MSG_NOTICE([SDL check done.])
--      AM_ICONV_LINK
--fi
- AM_CONDITIONAL(HAVE_SDL, [test "x$SDL_CFLAGS" != "x" ])
index f67f658ff6b9b3fd84b45a96700172ab429c7d3f..815c3a12836f5a554698df0830526081a8e16c73 100644 (file)
@@ -8,11 +8,11 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=sqlite
-PKG_VERSION:=3200100
+PKG_VERSION:=3210000
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-autoconf-$(PKG_VERSION).tar.gz
-PKG_HASH:=ec66595b29bc0798b023a5122021ea646ab4fa9e2f735937c5426feeba950742
+PKG_HASH:=d7dd516775005ad87a57f428b6f86afd206cb341722927f104d3f0cf65fbbbe3
 PKG_SOURCE_URL:=http://www.sqlite.org/2017/
 
 PKG_LICENSE:=PUBLICDOMAIN
diff --git a/libs/uw-imap/Makefile b/libs/uw-imap/Makefile
new file mode 100644 (file)
index 0000000..9fe5509
--- /dev/null
@@ -0,0 +1,73 @@
+#
+# Copyright (C) 2017 Lucian Cristian <lucian.cristian@gmail.com>
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=uw-imap
+PKG_VERSION:=2007f
+PKG_RELEASE:=1
+
+PKG_SOURCE:=imap-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:= \
+       https://www.mirrorservice.org/sites/ftp.cac.washington.edu/imap \
+       http://ftp.ntua.gr/pub/net/mail/imap \
+       http://gd.tuwien.ac.at/infosys/mail/imap
+
+PKG_HASH:=53e15a2b5c1bc80161d42e9f69792a3fa18332b7b771910131004eb520004a28
+PKG_BUILD_DIR:=$(BUILD_DIR)/imap-$(PKG_VERSION)
+
+PKG_MAINTAINER:=Lucian Cristian <lucian.cristian@gmail.com>
+
+PKG_LICENSE:=Apache-2.0
+PKG_LICENSE_FILES:=LICENSE.txt
+
+PKG_FIXUP:=autoreconf
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/uw-imap
+  SECTION:=libs
+  CATEGORY:=Libraries
+  TITLE:=University of Washington IMAP toolkit
+  URL:=https://www.washington.edu/imap/
+  DEPENDS:=+libpthread +libopenssl
+endef
+
+define Package/uw-imap/description
+    The UW IMAP tookit includes the following:
+    c-lient library : an API (application programming interface) used to build email clients and servers,
+    including support for IMAP,POP3, SMTP and NNTP protocols and for local mailbox file access on Unix and Windows
+endef
+
+TARGET_CFLAGS += \
+       -fPIC -DPIC -D_REENTRANT -DDISABLE_POP_PROXY -fno-strict-aliasing -Wno-pointer-sign \
+       -Wno-implicit-function-declaration -Wno-incompatible-pointer-types
+
+MAKE_FLAGS += \
+       SSLINCLUDE=$(STAGING_DIR)/usr/include SSLCERTS=/etc/ssl/certs GCCOPTLEVEL=" -Os" \
+       SSLDIR=$(STAGING_DIR)/usr SHLIBNAME=libc-client.so.$(PKG_VERSION) $(if $(CONFIG_IPV6),IP=6,IP=4)
+
+define Build/Compile
+    $(MAKE) -C $(PKG_BUILD_DIR) slx EXTRACFLAGS='$(TARGET_CFLAGS)' CC='$(TARGET_CC)' $(MAKE_FLAGS)
+endef
+
+define Build/InstallDev
+       $(INSTALL_DIR)  $(1)/usr/lib \
+                       $(1)/usr/include/c-client
+       $(CP) $(PKG_BUILD_DIR)/c-client/libc-client.so.$(PKG_VERSION) $(1)/usr/lib/
+       $(LN) libc-client.so.$(PKG_VERSION) $(1)/usr/lib/libc-client.so
+       $(CP) $(PKG_BUILD_DIR)/c-client/linkage.h $(1)/usr/include/c-client/
+       $(CP) $(PKG_BUILD_DIR)/src/c-client/*.h $(1)/usr/include/c-client/
+       $(CP) $(PKG_BUILD_DIR)/src/osdep/unix/*.h $(1)/usr/include/c-client/
+       $(LN) os_slx.h $(1)/usr/include/c-client/osdep.h
+endef
+
+define Package/uw-imap/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_BUILD_DIR)/c-client/libc-client.so.$(PKG_VERSION) $(1)/usr/lib/
+       $(LN) libc-client.so.$(PKG_VERSION) $(1)/usr/lib/libc-client.so
+endef
+
+
+$(eval $(call BuildPackage,uw-imap))
diff --git a/libs/uw-imap/patches/001-fix_Makefiles_and_shlib.patch b/libs/uw-imap/patches/001-fix_Makefiles_and_shlib.patch
new file mode 100644 (file)
index 0000000..cf0cc7f
--- /dev/null
@@ -0,0 +1,167 @@
+--- a/Makefile 2017-11-13 01:13:36.340236114 +0200
++++ b/Makefile 2017-11-13 01:34:56.869682313 +0200
+@@ -638,10 +638,6 @@
+       @echo + yourself, try adding IP6=4 to the make command line.
+       @echo +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+       @echo
+-      @echo Do you want to build with IPv6 anyway?  Type y or n please:
+-      @$(SH) -c 'read x; case "$$x" in y) exit 0;; *) (make noip6;exit 1);; esac'
+-      @echo OK, I will remember that you really want to build with IPv6.
+-      @echo You will not see this message again.
+       @$(TOUCH) ip6
+ noip6:
+@@ -678,20 +674,18 @@
+       $(TOOLS)/$@ "$(LN)" src/tmail tmail
+       $(LN) $(TOOLS)/$@ .
+-build:        OSTYPE rebuild rebuildclean bundled
++build:        OSTYPE rebuild rebuildclean
+ OSTYPE:
+       @$(MAKE) ip$(IP)
+       @echo Building c-client for $(BUILDTYPE)...
+       @$(TOUCH) SPECIALS
+-      echo `$(CAT) SPECIALS` $(EXTRASPECIALS) > c-client/SPECIALS
+       $(CD) c-client;$(MAKE) $(BUILDTYPE) EXTRACFLAGS='$(EXTRACFLAGS)'\
+        EXTRALDFLAGS='$(EXTRALDFLAGS)'\
+        EXTRADRIVERS='$(EXTRADRIVERS)'\
+        EXTRAAUTHENTICATORS='$(EXTRAAUTHENTICATORS)'\
+        PASSWDTYPE=$(PASSWDTYPE) SSLTYPE=$(SSLTYPE) IP=$(IP)\
+-       $(SPECIALS) $(EXTRASPECIALS)
+-      echo $(BUILDTYPE) > OSTYPE
++       $(SPECIALS) $(EXTRASPECIALS) OSTYPE=$(BUILDTYPE)
+       $(TOUCH) rebuild
+ rebuild:
+--- a/src/osdep/unix/Makefile  2017-11-13 01:37:58.674011768 +0200
++++ b/src/osdep/unix/Makefile  2017-11-13 03:30:18.204908962 +0200
+@@ -96,11 +96,11 @@
+ LOGINPW=std
+ SIGTYPE=bsd
+ CRXTYPE=std
+-ACTIVEFILE=/usr/lib/news/active
+-SPOOLDIR=/usr/spool
++ACTIVEFILE=/var/lib/news/active
++SPOOLDIR=/var/spool
+ MAILSPOOL=$(SPOOLDIR)/mail
+ NEWSSPOOL=$(SPOOLDIR)/news
+-RSHPATH=/usr/ucb/rsh
++RSHPATH=/usr/bin/rsh
+ MD5PWD=/etc/cram-md5.pwd
+ # Tries one of the test alternatives below if not specified.
+ LOCKPGM=
+@@ -154,7 +154,7 @@
+  dummy.o pseudo.o netmsg.o flstring.o fdstring.o \
+  rfc822.o nntp.o smtp.o imap4r1.o pop3.o \
+  unix.o mbx.o mmdf.o tenex.o mtx.o news.o phile.o mh.o mx.o mix.o
+-CFLAGS=-g
++CFLAGS=$(BASECFLAGS) $(EXTRACFLAGS) -DCHUNKSIZE=$(CHUNKSIZE)
+ CAT=cat
+ MAKE=make
+@@ -162,6 +162,16 @@
+ RM=rm -rf
+ SH=sh
++OSCFLAGS= $(SSLCFLAGS) \
++       -DCREATEPROTO=$(CREATEPROTO) -DEMPTYPROTO=$(EMPTYPROTO) \
++       -DMD5ENABLE=\"$(MD5PWD)\" -DMAILSPOOL=\"$(MAILSPOOL)\" \
++       -DANONYMOUSHOME=\"$(MAILSPOOL)/anonymous\" \
++       -DACTIVEFILE=\"$(ACTIVEFILE)\" -DNEWSSPOOL=\"$(NEWSSPOOL)\" \
++       -DRSHPATH=\"$(RSHPATH)\" -DLOCKPGM=\"$(LOCKPGM)\" \
++       -DLOCKPGM1=\"$(LOCKPGM1)\" -DLOCKPGM2=\"$(LOCKPGM2)\" \
++       -DLOCKPGM3=\"$(LOCKPGM3)\"
++
++LDFLAGS= $(BASELDFLAGS) $(EXTRALDFLAGS) $(SSLLDFLAGS)
+ # Primary build command
+@@ -174,7 +184,7 @@
+ # Here if no make argument established
+ missing: osdep.h
+-      $(MAKE) all `$(CAT) SPECIALS`
++      $(MAKE) all $(SPECIALS)
+ osdep.h:
+       @echo You must specify what type of system
+@@ -674,7 +684,7 @@
+       @echo You are building for libc6/glibc versions of Secure Linux
+       @echo If you want libc5 versions you must use sl5 instead!
+       @echo If you want libc4 versions you must use sl4 instead!
+-      $(BUILD) `$(CAT) SPECIALS` OS=$@ \
++      $(BUILD) $(SPECIALS) OS=$@ \
+        SIGTYPE=psx CHECKPW=psx CRXTYPE=nfs \
+        SPOOLDIR=/var/spool \
+        ACTIVEFILE=/var/lib/news/active \
+@@ -863,7 +873,7 @@
+       @$(SH) ARCHIVE
+ .c.o:
+-      `$(CAT) CCTYPE` -c `$(CAT) CFLAGS` $*.c
++      $(CC) -c $(CFLAGS) $*.c
+ # Cleanup
+@@ -922,8 +932,8 @@
+       @echo If you get No such file error messages for files x509.h, ssl.h,
+       @echo pem.h, buffer.h, bio.h, and crypto.h, that means that OpenSSL
+       @echo is not installed on your system.  Either install OpenSSL first
+-      @echo or build with command: make `$(CAT) OSTYPE` SSLTYPE=none
+-      `$(CAT) CCTYPE` -c `$(CAT) CFLAGS` `$(CAT) OSCFLAGS` -c osdep.c
++      @echo or build with command: make $(OSTYPE) SSLTYPE=none
++      $(CC) -c $(CFLAGS) $(OSCFLAGS) -c osdep.c
+ osdep.c: osdepbas.c osdepckp.c osdeplog.c osdepssl.c
+       $(CAT) osdepbas.c osdepckp.c osdeplog.c osdepssl.c > osdep.c
+@@ -962,21 +972,14 @@
+ # Once-only environment setup
+-once: onceenv ckp$(PASSWDTYPE) ssl$(SSLTYPE) osdep.c
++once: ssl$(SSLTYPE) onceenv ckp$(PASSWDTYPE) osdep.c
+ onceenv:
+       @echo Once-only environment setup...
+-      echo $(CC) > CCTYPE
+-      echo $(BASECFLAGS) '$(EXTRACFLAGS)' -DCHUNKSIZE=$(CHUNKSIZE) > CFLAGS
+-      echo -DCREATEPROTO=$(CREATEPROTO) -DEMPTYPROTO=$(EMPTYPROTO) \
+-       -DMD5ENABLE=\"$(MD5PWD)\" -DMAILSPOOL=\"$(MAILSPOOL)\" \
+-       -DANONYMOUSHOME=\"$(MAILSPOOL)/anonymous\" \
+-       -DACTIVEFILE=\"$(ACTIVEFILE)\" -DNEWSSPOOL=\"$(NEWSSPOOL)\" \
+-       -DRSHPATH=\"$(RSHPATH)\" -DLOCKPGM=\"$(LOCKPGM)\" \
+-       -DLOCKPGM1=\"$(LOCKPGM1)\" -DLOCKPGM2=\"$(LOCKPGM2)\" \
+-       -DLOCKPGM3=\"$(LOCKPGM3)\" > OSCFLAGS
+-      echo $(BASELDFLAGS) $(EXTRALDFLAGS) > LDFLAGS
+       echo "$(ARRC) $(ARCHIVE) $(BINARIES);$(RANLIB) $(ARCHIVE)" > ARCHIVE
++      echo "$(OSCFLAGS)" > OSCFLAGS
++      echo "$(CC) $(CFLAGS) $(OSCFLAGS) -shared  -Wl,-soname,libc-client.so \
++      -o $(SHLIBNAME) $(BINARIES) $(LDFLAGS)" >> ARCHIVE
+       echo $(OS) > OSTYPE
+       ./drivers $(EXTRADRIVERS) $(DEFAULTDRIVERS) dummy
+       ./mkauths $(EXTRAAUTHENTICATORS) $(DEFAULTAUTHENTICATORS)
+@@ -1055,7 +1058,6 @@
+ sbasic:       # UNIX OpenSSL
+       @echo Building with SSL
+       $(LN) ssl_unix.c osdepssl.c
+-      echo $(SSLCFLAGS) >> OSCFLAGS
+       echo "  ssl_onceonlyinit ();" >> linkage.c
+ snopwd:       # Plaintext disable
+@@ -1063,13 +1065,12 @@
+       echo "  mail_parameters (NIL,SET_DISABLEPLAINTEXT,(void *) 2);" >> linkage.c
+ sldunix:# Normal UNIX SSL load flags
+-      echo $(SSLLDFLAGS) >> LDFLAGS
++      @echo Normal UNIX SSL load flags
+ sldsco:       # SCO SSL load flags
+ # Note: Tim Rice says that SSL has to be lunk before other libraries on SCO.
+-      echo $(SSLLDFLAGS) `cat LDFLAGS` > LDFLAGS.tmp
+-      mv LDFLAGS.tmp LDFLAGS
++      @echo SCO SSL load flags
+ # A monument to a hack of long ago and far away...
diff --git a/libs/uw-imap/patches/002-imap-2004a-doc.patch b/libs/uw-imap/patches/002-imap-2004a-doc.patch
new file mode 100644 (file)
index 0000000..dcae4ab
--- /dev/null
@@ -0,0 +1,30 @@
+Patch by Robert Scheck <redhat@linuxnetz.de> for uw-imap >= 2004a, which corrects
+paths to imapd, ipop2d and ipop3d in the man pages. 
+
+This patch is based on Red Hat Bugzilla ID #127271 and solves ID #229781.
+
+--- imap-2004a/src/imapd/imapd.8               2004-05-18 19:46:54.000000000 +0200
++++ imap-2004a/src/imapd/imapd.8.doc           2004-07-23 15:24:17.000000000 +0200
+@@ -3,7 +3,7 @@
+ .SH NAME
+ IMAPd \- Internet Message Access Protocol server
+ .SH SYNOPSIS
+-.B /usr/etc/imapd
++.B /usr/sbin/imapd
+ .SH DESCRIPTION
+ .I imapd
+ is a server which supports the
+--- imap-2004a/src/ipopd/ipopd.8               2004-05-18 19:50:05.000000000 +0200
++++ imap-2004a/src/ipopd/ipopd.8.doc           2004-07-23 15:23:38.000000000 +0200
+@@ -3,9 +3,9 @@
+ .SH NAME
+ IPOPd \- Post Office Protocol server
+ .SH SYNOPSIS
+-.B /usr/etc/ipop2d
++.B /usr/sbin/ipop2d
+ .PP
+-.B /usr/etc/ipop3d
++.B /usr/sbin/ipop3d
+ .SH DESCRIPTION
+ .I ipop2d
+ and
diff --git a/libs/uw-imap/patches/003-imap-2007e-overflow.patch b/libs/uw-imap/patches/003-imap-2007e-overflow.patch
new file mode 100644 (file)
index 0000000..86512b2
--- /dev/null
@@ -0,0 +1,13 @@
+diff -up imap-2007e/src/c-client/rfc822.c.overflow imap-2007e/src/c-client/rfc822.c
+--- imap-2007e/src/c-client/rfc822.c.overflow  2008-12-12 11:08:26.000000000 -0600
++++ imap-2007e/src/c-client/rfc822.c   2009-07-07 19:27:20.057772757 -0500
+@@ -384,6 +384,9 @@ void rfc822_parse_content (BODY *body,ST
+       if (CHR (bs) == '\012'){/* following LF? */
+         c = SNX (bs); i--;    /* yes, slurp it */
+       }
++      if (!i)                 /* Make sure we don't get an overflow for */
++        break;                /* messages ending on \015 (or the following */
++                              /* i-- will cause i to be MAXINT. Not good.) */
+       case '\012':            /* at start of a line, start with -- ? */
+       if (!(i && i-- && ((c = SNX (bs)) == '-') && i-- &&
+             ((c = SNX (bs)) == '-'))) break;
diff --git a/libs/uw-imap/patches/005-imap-2007e-authmd5.patch b/libs/uw-imap/patches/005-imap-2007e-authmd5.patch
new file mode 100644 (file)
index 0000000..66883a1
--- /dev/null
@@ -0,0 +1,29 @@
+diff -up imap-2007e/src/c-client/auth_md5.c.authmd5 imap-2007e/src/c-client/auth_md5.c
+--- imap-2007e/src/c-client/auth_md5.c.authmd5 2008-06-04 13:18:34.000000000 -0500
++++ imap-2007e/src/c-client/auth_md5.c 2009-07-07 19:24:12.348005485 -0500
+@@ -42,17 +42,17 @@ typedef struct {
+ /* Prototypes */
+-long auth_md5_valid (void);
+-long auth_md5_client (authchallenge_t challenger,authrespond_t responder,
++static long auth_md5_valid (void);
++static long auth_md5_client (authchallenge_t challenger,authrespond_t responder,
+                     char *service,NETMBX *mb,void *stream,
+                     unsigned long *trial,char *user);
+-char *auth_md5_server (authresponse_t responder,int argc,char *argv[]);
+-char *auth_md5_pwd (char *user);
++static char *auth_md5_server (authresponse_t responder,int argc,char *argv[]);
++static char *auth_md5_pwd (char *user);
+ char *apop_login (char *chal,char *user,char *md5,int argc,char *argv[]);
+-char *hmac_md5 (char *text,unsigned long tl,char *key,unsigned long kl);
+-void md5_init (MD5CONTEXT *ctx);
+-void md5_update (MD5CONTEXT *ctx,unsigned char *data,unsigned long len);
+-void md5_final (unsigned char *digest,MD5CONTEXT *ctx);
++static char *hmac_md5 (char *text,unsigned long tl,char *key,unsigned long kl);
++static void md5_init (MD5CONTEXT *ctx);
++static void md5_update (MD5CONTEXT *ctx,unsigned char *data,unsigned long len);
++static void md5_final (unsigned char *digest,MD5CONTEXT *ctx);
+ static void md5_transform (unsigned long *state,unsigned char *block);
+ static void md5_encode (unsigned char *dst,unsigned long *src,int len);
+ static void md5_decode (unsigned long *dst,unsigned char *src,int len);
diff --git a/libs/uw-imap/patches/006-imap-2007f-format-security.patch b/libs/uw-imap/patches/006-imap-2007f-format-security.patch
new file mode 100644 (file)
index 0000000..244153e
--- /dev/null
@@ -0,0 +1,12 @@
+diff -Naur imap-2007f.orig/src/osdep/unix/flocklnx.c imap-2007f/src/osdep/unix/flocklnx.c
+--- imap-2007f.orig/src/osdep/unix/flocklnx.c  2011-07-23 02:20:11.000000000 +0200
++++ imap-2007f/src/osdep/unix/flocklnx.c       2014-04-14 19:17:46.429000000 +0200
+@@ -57,7 +57,7 @@
+     case ENOLCK:              /* lock table is full */
+       sprintf (tmp,"File locking failure: %s",strerror (errno));
+       mm_log (tmp,WARN);      /* give the user a warning of what happened */
+-      if (!logged++) syslog (LOG_ERR,tmp);
++      if (!logged++) syslog (LOG_ERR, "%s", tmp);
+                               /* return failure if non-blocking lock */
+       if (op & LOCK_NB) return -1;
+       sleep (5);              /* slow down in case it loops */
diff --git a/libs/uw-imap/patches/007-imap-2007e-poll.patch b/libs/uw-imap/patches/007-imap-2007e-poll.patch
new file mode 100644 (file)
index 0000000..e25f1b6
--- /dev/null
@@ -0,0 +1,192 @@
+http://anonscm.debian.org/cgit/collab-maint/uw-imap.git/plain/debian/patches/1005_poll.patch
+
+Description: Use poll(2) instead of select(2) to support more than 1024 file descriptors
+Author: Ben Smithurst <ben.smithurst@gradwell.com>
+Bug-Debian: https://bugs.debian.org/478193
+
+diff --git a/src/osdep/unix/os_lnx.c b/src/osdep/unix/os_lnx.c
+index 03fd17d..671bbd6 100644
+--- a/src/osdep/unix/os_lnx.c
++++ b/src/osdep/unix/os_lnx.c
+@@ -41,6 +41,7 @@
+ extern int errno;             /* just in case */
+ #include <pwd.h>
+ #include "misc.h"
++#include <poll.h>
+ #include "fs_unix.c"
+diff --git a/src/osdep/unix/os_slx.c b/src/osdep/unix/os_slx.c
+index c94d632..f6bf27d 100644
+--- a/src/osdep/unix/os_slx.c
++++ b/src/osdep/unix/os_slx.c
+@@ -42,6 +42,7 @@ extern int errno;            /* just in case */
+ #include <pwd.h>
+ #include <shadow.h>
+ #include "misc.h"
++#include <poll.h>
+ #include "fs_unix.c"
+diff --git a/src/osdep/unix/tcp_unix.c b/src/osdep/unix/tcp_unix.c
+index 795fb4f..c69eaec 100644
+--- a/src/osdep/unix/tcp_unix.c
++++ b/src/osdep/unix/tcp_unix.c
+@@ -235,12 +235,11 @@ TCPSTREAM *tcp_open (char *host,char *service,unsigned long port)
+ int tcp_socket_open (int family,void *adr,size_t adrlen,unsigned short port,
+                    char *tmp,int *ctr,char *hst)
+ {
+-  int i,ti,sock,flgs;
++  int i,ti,sock,flgs,tmo;
++  struct pollfd pfd;
+   size_t len;
+   time_t now;
+   struct protoent *pt = getprotobyname ("tcp");
+-  fd_set rfds,wfds,efds;
+-  struct timeval tmo;
+   struct sockaddr *sadr = ip_sockaddr (family,adr,adrlen,port,&len);
+   blocknotify_t bn = (blocknotify_t) mail_parameters (NIL,GET_BLOCKNOTIFY,NIL);
+                               /* fetid Solaris */
+@@ -252,14 +251,6 @@ int tcp_socket_open (int family,void *adr,size_t adrlen,unsigned short port,
+     sprintf (tmp,"Unable to create TCP socket: %s",strerror (errno));
+     (*bn) (BLOCK_NONSENSITIVE,data);
+   }
+-  else if (sock >= FD_SETSIZE) {/* unselectable sockets are useless */
+-    sprintf (tmp,"Unable to create selectable TCP socket (%d >= %d)",
+-           sock,FD_SETSIZE);
+-    (*bn) (BLOCK_NONSENSITIVE,data);
+-    close (sock);
+-    sock = -1;
+-    errno = EMFILE;
+-  }
\f
+   else {                      /* get current socket flags */
+     flgs = fcntl (sock,F_GETFL,0);
+@@ -284,16 +275,11 @@ int tcp_socket_open (int family,void *adr,size_t adrlen,unsigned short port,
+     if ((sock >= 0) && ctr) { /* want open timeout? */
+       now = time (0);         /* open timeout */
+       ti = ttmo_open ? now + ttmo_open : 0;
+-      tmo.tv_usec = 0;
+-      FD_ZERO (&rfds);                /* initialize selection vector */
+-      FD_ZERO (&wfds);                /* initialize selection vector */
+-      FD_ZERO (&efds);                /* handle errors too */
+-      FD_SET (sock,&rfds);    /* block for error or readable or writable */
+-      FD_SET (sock,&wfds);
+-      FD_SET (sock,&efds);
++      pfd.fd = sock;
++      pfd.events = POLLIN | POLLOUT;
+       do {                    /* block under timeout */
+-      tmo.tv_sec = ti ? ti - now : 0;
+-      i = select (sock+1,&rfds,&wfds,&efds,ti ? &tmo : NIL);
++      tmo = ti ? ti - now : 0;
++      i = poll (&pfd, 1, ti ? tmo * 1000 : -1);
+       now = time (0);         /* fake timeout if interrupt & time expired */
+       if ((i < 0) && (errno == EINTR) && ti && (ti <= now)) i = 0;
+       } while ((i < 0) && (errno == EINTR));
+@@ -302,7 +288,7 @@ int tcp_socket_open (int family,void *adr,size_t adrlen,unsigned short port,
+       fcntl (sock,F_SETFL,flgs);
+       /* This used to be a zero-byte read(), but that crashes Solaris */
+                               /* get socket status */
+-      if(FD_ISSET(sock, &rfds)) while (((i = *ctr = read (sock,tmp,1)) < 0) && (errno == EINTR));
++      if(pfd.revents & POLLIN) while (((i = *ctr = read (sock,tmp,1)) < 0) && (errno == EINTR));
+       }       
+       if (i <= 0) {           /* timeout or error? */
+       i = i ? errno : ETIMEDOUT;/* determine error code */
+@@ -545,9 +531,8 @@ long tcp_getbuffer (TCPSTREAM *stream,unsigned long size,char *s)
+     stream->ictr -=n;
+   }
+   if (size) {
+-    int i;
+-    fd_set fds,efds;
+-    struct timeval tmo;
++    int i, tmo;
++    struct pollfd pfd;
+     time_t t = time (0);
+     blocknotify_t bn=(blocknotify_t) mail_parameters (NIL,GET_BLOCKNOTIFY,NIL);
+     (*bn) (BLOCK_TCPREAD,NIL);
+@@ -556,16 +541,13 @@ long tcp_getbuffer (TCPSTREAM *stream,unsigned long size,char *s)
+       time_t now = tl;
+       time_t ti = ttmo_read ? now + ttmo_read : 0;
+       if (tcpdebug) mm_log ("Reading TCP buffer",TCPDEBUG);
+-      tmo.tv_usec = 0;
+-      FD_ZERO (&fds);         /* initialize selection vector */
+-      FD_ZERO (&efds);                /* handle errors too */
+-                              /* set bit in selection vectors */
+-      FD_SET (stream->tcpsi,&fds);
+-      FD_SET (stream->tcpsi,&efds);
++
++      pfd.events = POLLIN;
++      pfd.fd = stream->tcpsi;
+       errno = NIL;            /* initially no error */
+       do {                    /* block under timeout */
+-      tmo.tv_sec = ti ? ti - now : 0;
+-      i = select (stream->tcpsi+1,&fds,NIL,&efds,ti ? &tmo : NIL);
++      tmo = ti ? ti - now : 0;
++      i = poll (&pfd, 1, ti ? tmo * 1000 : -1);
+       now = time (0);         /* fake timeout if interrupt & time expired */
+       if ((i < 0) && (errno == EINTR) && ti && (ti <= now)) i = 0;
+       } while ((i < 0) && (errno == EINTR));
+@@ -605,9 +587,8 @@ long tcp_getbuffer (TCPSTREAM *stream,unsigned long size,char *s)
+ long tcp_getdata (TCPSTREAM *stream)
+ {
+-  int i;
+-  fd_set fds,efds;
+-  struct timeval tmo;
++  int i, tmo;
++  struct pollfd pfd;
+   time_t t = time (0);
+   blocknotify_t bn = (blocknotify_t) mail_parameters (NIL,GET_BLOCKNOTIFY,NIL);
+   if (stream->tcpsi < 0) return NIL;
+@@ -617,15 +598,12 @@ long tcp_getdata (TCPSTREAM *stream)
+     time_t now = tl;
+     time_t ti = ttmo_read ? now + ttmo_read : 0;
+     if (tcpdebug) mm_log ("Reading TCP data",TCPDEBUG);
+-    tmo.tv_usec = 0;
+-    FD_ZERO (&fds);           /* initialize selection vector */
+-    FD_ZERO (&efds);          /* handle errors too */
+-    FD_SET (stream->tcpsi,&fds);/* set bit in selection vectors */
+-    FD_SET (stream->tcpsi,&efds);
++    pfd.fd = stream->tcpsi;
++    pfd.events = POLLIN;
+     errno = NIL;              /* initially no error */
+     do {                      /* block under timeout */
+-      tmo.tv_sec = ti ? ti - now : 0;
+-      i = select (stream->tcpsi+1,&fds,NIL,&efds,ti ? &tmo : NIL);
++      tmo = ti ? ti - now : 0;
++      i = poll (&pfd, 1, ti ? tmo * 1000 : -1);
+       now = time (0);         /* fake timeout if interrupt & time expired */
+       if ((i < 0) && (errno == EINTR) && ti && (ti <= now)) i = 0;
+     } while ((i < 0) && (errno == EINTR));
+@@ -677,9 +655,8 @@ long tcp_soutr (TCPSTREAM *stream,char *string)
+ long tcp_sout (TCPSTREAM *stream,char *string,unsigned long size)
+ {
+-  int i;
+-  fd_set fds,efds;
+-  struct timeval tmo;
++  int i, tmo;
++  struct pollfd pfd;
+   time_t t = time (0);
+   blocknotify_t bn = (blocknotify_t) mail_parameters (NIL,GET_BLOCKNOTIFY,NIL);
+   if (stream->tcpso < 0) return NIL;
+@@ -689,15 +666,12 @@ long tcp_sout (TCPSTREAM *stream,char *string,unsigned long size)
+     time_t now = tl;
+     time_t ti = ttmo_write ? now + ttmo_write : 0;
+     if (tcpdebug) mm_log ("Writing to TCP",TCPDEBUG);
+-    tmo.tv_usec = 0;
+-    FD_ZERO (&fds);           /* initialize selection vector */
+-    FD_ZERO (&efds);          /* handle errors too */
+-    FD_SET (stream->tcpso,&fds);/* set bit in selection vector */
+-    FD_SET(stream->tcpso,&efds);/* set bit in error selection vector */
++    pfd.fd = stream->tcpso;
++    pfd.events = POLLOUT;
+     errno = NIL;              /* block and write */
+     do {                      /* block under timeout */
+-      tmo.tv_sec = ti ? ti - now : 0;
+-      i = select (stream->tcpso+1,NIL,&fds,&efds,ti ? &tmo : NIL);
++      tmo = ti ? ti - now : 0;
++      i = poll (&pfd, 1, ti ? tmo * 1000 : -1);
+       now = time (0);         /* fake timeout if interrupt & time expired */
+       if ((i < 0) && (errno == EINTR) && ti && (ti <= now)) i = 0;
+     } while ((i < 0) && (errno == EINTR));
index 254db36e2e70ce77a9be747b479e1c189a29f00a..5fc3f8218e5ee268336b5f7fe2bcb20a7ffd40cf 100644 (file)
@@ -8,16 +8,23 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=dovecot
-PKG_VERSION:=2.2.32
+PKG_VERSION:=2.2.33.2
 PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.dovecot.org/releases/2.2
-PKG_HASH:=160b2151e2af359877f69cb2dcdfe1a3f4138ad3766e3b8562b96616e2f6bc2e
+PKG_HASH:=fe1e3b78609a56ee22fc209077e4b75348fa1bbd54c46f52bde2472a4c4cee84
 PKG_LICENSE:=LGPL-2.1 MIT BSD-3-Clause Unique
 PKG_LICENSE_FILES:=COPYING COPYING.LGPL COPYING.MIT
+PKG_MAINTAINER:=Lucian Cristian <lucian.cristian@gmail.com>
 
 PKG_BUILD_DEPENDS:=libiconv
+PKG_CONFIG_DEPENDS:= \
+       CONFIG_DOVECOT_LDAP \
+       CONFIG_DOVECOT_MYSQL \
+       CONFIG_DOVECOT_PGSQL \
+       CONFIG_DOVECOT_SQLITE \
+       CONFIG_DOVECOT_ICU
 
 PKG_FIXUP:=autoreconf
 PKG_INSTALL:=1
@@ -27,11 +34,11 @@ include $(INCLUDE_DIR)/package.mk
 define Package/dovecot
   SECTION:=mail
   CATEGORY:=Mail
-  DEPENDS:=+DOVECOT_LDAP:libopenldap +DOVECOT_MYSQL:libmysqlclient +DOVECOT_PGSQL:libpq +DOVECOT_SQLITE:libsqlite3 +libopenssl +librt +zlib +libbz2 +libcap
+  DEPENDS:=+DOVECOT_LDAP:libopenldap +DOVECOT_MYSQL:libmysqlclient +DOVECOT_PGSQL:libpq +DOVECOT_SQLITE:libsqlite3 +libopenssl +librt +zlib +libbz2 +libcap +DOVECOT_ICU:icu
   TITLE:=An IMAP and POP3 daemon
-  MAINTAINER:=Lucian Cristian <lucian.cristian@gmail.com>
   URL:=http://www.dovecot.org/
   USERID:=dovecot=59:dovecot=59
+  ABI_VERSION:=$(PKG_VERSION)
 endef
 
 define Package/dovecot/description
@@ -61,9 +68,26 @@ define Package/dovecot/config
                         default n
                         help
                           Implements SQLite DB support in dovecot.
+                config DOVECOT_ICU
+                        bool "Enable i18n features"
+                        default n
+                        help
+                          Enable ICU (International Components for Unicode) support.
         endmenu
 endef
 
+define Package/dovecot/conffiles
+/etc/init.d/dovecot
+/etc/dovecot/
+endef
+
+define Package/dovecot-utils
+  SECTION:=mail
+  CATEGORY:=Mail
+  DEPENDS:=+dovecot
+  TITLE:=doveadm and dsync utilities for Dovecot
+endef
+
 CONFIGURE_ARGS += \
        --without-gssapi \
        --without-pam \
@@ -71,11 +95,11 @@ CONFIGURE_ARGS += \
        --with-notify=dnotify \
        --without-lzma \
        --without-lz4 \
-       --with-icu=no \
        $(if $(CONFIG_DOVECOT_LDAP),--with-ldap=yes,--with-ldap=no) \
        $(if $(CONFIG_DOVECOT_MYSQL),--with-mysql=yes,--with-mysql=no) \
        $(if $(CONFIG_DOVECOT_PGSQL),--with-pgsql=yes,--with-pgsql=no) \
-       $(if $(CONFIG_DOVECOT_SQLITE),--with-sqlite=yes,--with-sqlite=no)
+       $(if $(CONFIG_DOVECOT_SQLITE),--with-sqlite=yes,--with-sqlite=no) \
+       $(if $(CONFIG_DOVECOT_ICU),--with-icu=yes,--with-icu=no)
 
 CONFIGURE_VARS += \
        RPCGEN= \
@@ -101,13 +125,13 @@ endef
 define Package/dovecot/install
        $(INSTALL_DIR)  $(1)/etc/init.d \
                        $(1)/etc/dovecot \
-                       $(1)/usr/share/doc/dovecot/example-config \
+                       $(1)/usr/share/doc/dovecot \
                        $(1)/usr/lib/dovecot \
                        $(1)/usr/bin \
                        $(1)/usr/sbin
        $(CP) $(PKG_INSTALL_DIR)/etc/dovecot/* $(1)/etc/dovecot/
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/dovecot/* $(1)/usr/lib/dovecot/
-       $(CP) $(PKG_INSTALL_DIR)/usr/share/doc/dovecot/example-config $(1)/usr/share/doc/dovecot/example-config
+       $(CP) $(PKG_INSTALL_DIR)/usr/share/doc/dovecot/example-config $(1)/usr/share/doc/dovecot/
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/doveconf $(1)/usr/bin/
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/* $(1)/usr/sbin/
        $(INSTALL_BIN) ./files/dovecot.init $(1)/etc/init.d/dovecot
@@ -115,4 +139,11 @@ define Package/dovecot/install
        find $(1)/usr/lib/dovecot/ -name "*.a" -o -name "*.la" | xargs rm
 endef
 
+define Package/dovecot-utils/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/doveadm $(1)/usr/bin/
+       $(CP) $(PKG_INSTALL_DIR)/usr/bin/dsync $(1)/usr/bin/
+endef
+
 $(eval $(call BuildPackage,dovecot))
+$(eval $(call BuildPackage,dovecot-utils))
index 592cb42e9ce28e4670117fb7715af7994a2c438d..b9b595fe48a8c013b6516f8f97e1d0c15c184651 100644 (file)
@@ -9,16 +9,19 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=emailrelay
 PKG_VERSION:=1.9
-PKG_RELEASE:=4
+PKG_RELEASE:=5
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-src.tar.gz
 PKG_SOURCE_URL:=@SF/emailrelay/$(PKG_VERSION)
 PKG_HASH:=869a3e2d053237d7f63784acc25e748af2dbf2d9b9c5c48e4a5269d4e4b5bda0
+PKG_MAINTAINER:=Federico Di Marco <fededim@gmail.com>
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
 
-PKG_CONFIG_DEPENDS:=CONFIG_EMAILRELAY_SUPPORT_VERBOSE_DBG CONFIG_EMAILRELAY_SSL 
+PKG_CONFIG_DEPENDS:=CONFIG_EMAILRELAY_SUPPORT_VERBOSE_DBG CONFIG_EMAILRELAY_SSL
 
+PKG_LICENSE:=GPL-3.0
+PKG_LICENSE_FILES:=COPYING
 
 #include $(INCLUDE_DIR)/uclibc++.mk   # $(CXX_DEPENDS)
 include $(INCLUDE_DIR)/package.mk
@@ -26,10 +29,9 @@ include $(INCLUDE_DIR)/package.mk
 define Package/emailrelay
   SECTION:=mail
   CATEGORY:=Mail
-  DEPENDS:=+EMAILRELAY_SSL:libopenssl +libstdcpp 
+  DEPENDS:=+EMAILRELAY_SSL:libopenssl +libstdcpp
   TITLE:=A simple SMTP proxy and MTA
   URL:=http://emailrelay.sourceforge.net/
-  MAINTAINER:=Federico Di Marco <fededim@gmail.com>
   MENU:=1
 endef
 
@@ -42,7 +44,7 @@ config EMAILRELAY_SUPPORT_VERBOSE_DBG
        help
          Enables support for extended logging (must also be explicitely enabled by using command line switch --debug when starting emailrelay)
 
-config EMAILRELAY_SSL 
+config EMAILRELAY_SSL
        bool "Enable support for OpenSSL"
        depends on PACKAGE_emailrelay
        default y
@@ -54,18 +56,19 @@ endef
 
 
 define Package/emailrelay/description
- Emailrelay is a simple SMTP proxy and store-and-forward message transfer agent (MTA). 
- When running as a proxy all e-mail messages can be passed through 
-  a user-defined program, such as a spam filter, which can drop, 
-  re-address or edit messages as they pass through. When running 
-  as a store-and-forward MTA incoming messages are stored in a 
-  local spool directory, and then forwarded to the next SMTP 
 server on request.
+ Emailrelay is a simple SMTP proxy and store-and-forward message transfer agent (MTA).
+
+ When running as a proxy all e-mail messages can be passed through
+ a user-defined program, such as a spam filter, which can drop,
+ re-address or edit messages as they pass through. When running
+ as a store-and-forward MTA incoming messages are stored in a
+ local spool directory, and then forwarded to the next SMTP
+ server on request.
 endef
 
 
 define Package/emailrelay/conffiles
+/etc/config/emailrelay
 /etc/emailrelay.auth
 endef
 
@@ -75,7 +78,7 @@ CONFIGURE_ARGS += \
        --enable-testing=no
 
 CONFIGURE_VARS += \
-       CXXFLAGS="$$$$CXXFLAGS -fno-rtti"       
+       CXXFLAGS="$$$$CXXFLAGS -fno-rtti"
 
 
 ifeq ($(CONFIG_EMAILRELAY_SSL),y)
@@ -94,7 +97,7 @@ endif
 
 ifeq ($(CONFIG_OPENSSL_WITH_SSL3),y)
        CONFIGURE_VARS += \
-               CXXFLAGS="$$$$CXXFLAGS -DSSL3_SUPPORT"  
+               CXXFLAGS="$$$$CXXFLAGS -DSSL3_SUPPORT"
 endif
 
 define Package/emailrelay/install
@@ -104,10 +107,10 @@ define Package/emailrelay/install
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/main/emailrelay-passwd $(1)/usr/bin/
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/main/emailrelay-poke $(1)/usr/bin/
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/main/emailrelay-submit $(1)/usr/bin/
-       $(INSTALL_DIR) $(1)/tmp/spool
-       $(INSTALL_DIR) $(1)/tmp/spool/emailrelay
        $(INSTALL_DIR) $(1)/etc
        $(INSTALL_DATA) files/$(PKG_NAME).auth $(1)/etc/
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_CONF) files/$(PKG_NAME).config $(1)/etc/config/$(PKG_NAME)
        $(INSTALL_DIR) $(1)/etc/init.d
        $(INSTALL_BIN) files/$(PKG_NAME).init $(1)/etc/init.d/$(PKG_NAME)
 endef
index 3d11bf0f2b010f60292e47d71b0ea780392dc0ae..8bc9594592783c172f842852c99ed08b88673ca8 100644 (file)
@@ -13,4 +13,4 @@
 #
 #NONE server 192.168.1.* keyword
 #LOGIN client smtpuser@smtpserver smtppassword
-#LOGIN server user1 secret
\ No newline at end of file
+#LOGIN server user1 secret
diff --git a/mail/emailrelay/files/emailrelay.config b/mail/emailrelay/files/emailrelay.config
new file mode 100644 (file)
index 0000000..1a4eb67
--- /dev/null
@@ -0,0 +1,28 @@
+config emailrelay 'server'
+       option enabled '0'
+       option mode 'server'
+       option port '25'
+       option remote_clients '0'
+#      option server_tls '/etc/path/to/certificate'
+#      option server_auth '/etc/emailrelay.auth'
+#      option extra_cmdline ''
+
+config emailrelay 'proxy'
+       option enabled '0'
+       option mode 'proxy'
+       option smarthost '192.0.2.1:25'
+       option port '25'
+       option remote_clients '0'
+#      option server_tls '/etc/path/to/certificate'
+#      option server_auth '/etc/emailrelay.auth'
+#      option client_tls '1'
+#      option client_auth '/etc/emailrelay.auth'
+#      option extra_cmdline ''
+
+config emailrelay 'cmdline'
+       option enabled '0'
+       option mode 'cmdline'
+       # specify all arguments that should be passed to emailrelay here
+       # see http://emailrelay.sourceforge.net/reference.html for command line reference
+       option extra_cmdline '--some-other --cmdline-options'
+
index 9fc33996ece2ee4388656bddef649a978a126d69..5b78f2170a60869bc9723234d5e8560ca5a11444 100644 (file)
@@ -1,15 +1,66 @@
 #!/bin/sh /etc/rc.common
-#see http://emailrelay.sourceforge.net/reference.html for command line reference
 
 START=90
 
+USE_PROCD=1
+PROG=/usr/bin/emailrelay
+NAME=emailrelay
 
-start() {
-        logger -t 'emailrelay' "Starting emailrelay service."
-        service_start /usr/bin/emailrelay --as-server --poll 60 --forward-to smtpserver:smtpport --spool-dir /tmp --client-tls --client-auth /etc/emailrelay.auth --server-auth /etc/emailrelay.auth --log
+
+emailrelay_instance()
+{
+       local enabled mode port remote_clients server_tls server_auth extra_cmdline smarthost client_tls client_auth
+
+       config_get_bool enabled "$1" enabled
+       config_get mode "$1" mode
+       config_get port "$1" port
+       config_get_bool remote_clients "$1" remote_clients
+       config_get server_tls "$1" server_tls
+       config_get server_auth "$1" server_auth
+       config_get extra_cmdline "$1" extra_cmdline
+       config_get smarthost "$1" smarthost
+       config_get_bool client_tls "$1" client_tls
+       config_get client_auth "$1" client_auth
+
+
+       [ "$enabled" = 0 ] && return 1
+
+       procd_open_instance
+       procd_set_param command "$PROG" --no-daemon
+
+       case "$mode" in
+               "server"|\
+               "proxy")
+                       procd_append_param command "--as-${mode}"
+                       [ -n "$smarthost" ] && procd_append_param command "$smarthost"
+                       [ -n "$port" ] && procd_append_param command --port "$port"
+                       [ "$remote_clients" = 1 ] && procd_append_param command --remote-clients
+                       [ -n "$server_tls" ] && procd_append_param command --server-tls "$server_tls"
+                       [ -n "$server_auth" ] && procd_append_param command --server-auth "$server_auth"
+                       [ "$client_tls" = 1 ] && procd_append_param command --client-tls
+                       [ -n "$client_auth" ] && procd_append_param command --client-auth "$client_auth"
+                       ;;
+               "cmdline")
+                       # empty by intention (just append extra_cmdline)
+                       ;;
+               *)
+                       echo "no mode specified"
+                       return 1
+                       ;;
+       esac
+
+       [ -n "$extra_cmdline" ] && procd_append_param command $extra_cmdline
+
+       procd_set_param respawn
+
+       procd_close_instance
 }
 
-stop() {
-        logger -t 'emailrelay' "Stopping emailrelay service."
-        service_stop /usr/bin/emailrelay
+
+start_service()
+{
+       [ ! -d /var/spool/emailrelay ] && mkdir -p /var/spool/emailrelay
+
+       config_load "${NAME}"
+       config_foreach emailrelay_instance emailrelay
 }
index 8da33ecb68c890f242bde3c234afd75820a2b630..2621c768d731c7d13c722619529311ef41c815d6 100644 (file)
@@ -8,18 +8,19 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mutt
-PKG_VERSION:=1.7.2
+PKG_VERSION:=1.9.1
 PKG_RELEASE:=1
 
 PKG_SOURCE_URL:=ftp://ftp.mutt.org/pub/mutt/ \
                https://bitbucket.org/mutt/mutt/downloads/
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=1553501687cd22d5b8aaee4dc5a7d9dcf6cc61d7956f6aabaadd252d10cd5ff9
+PKG_HASH:=749b83a96373c6e2101ebe8c4b9a651735e02c478edb750750a5146a15d91bb1
 
 PKG_LICENSE:=GPL-2.0+
 PKG_LICENSE_FILES:=GPL
 PKG_MAINTAINER:=Phil Eichinger <phil@zankapfel.net>
 
+PKG_FIXUP:=autoreconf
 
 PKG_INSTALL:=1
 
@@ -44,7 +45,8 @@ CONFIGURE_ARGS += \
        --enable-pop \
        --enable-imap \
        --with-ssl \
-       --without-idn
+       --without-idn \
+       --disable-doc
 
 define Package/mutt/install
        $(INSTALL_DIR) $(1)/usr/bin
diff --git a/mail/mutt/patches/0001-no-po-and-docs.patch b/mail/mutt/patches/0001-no-po-and-docs.patch
deleted file mode 100644 (file)
index 08d6e65..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-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
-@@ -470,7 +470,7 @@ get_cs_cmdline = $(call get_cs_compile,$
- 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
-
diff --git a/mail/mutt/patches/0001-no-po.patch b/mail/mutt/patches/0001-no-po.patch
new file mode 100644 (file)
index 0000000..51ea760
--- /dev/null
@@ -0,0 +1,26 @@
+From 6dbfafd4b8bfc9f5e53db90c5279784c506a3253 Mon Sep 17 00:00:00 2001
+From: Phil Eichinger <phil@zankapfel.net>
+Date: Tue, 17 Oct 2017 06:44:04 +0200
+Subject: [PATCH] no po
+
+docs are disabled via ./configure --disable-doc now
+---
+ Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 4bc2db4..bb00927 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -14,7 +14,7 @@ IMAP_SUBDIR = imap
+ IMAP_INCLUDES = -I$(top_srcdir)/imap
+ endif
+-SUBDIRS = m4 po intl $(DOC_SUBDIR) contrib $(IMAP_SUBDIR)
++SUBDIRS = m4 intl $(DOC_SUBDIR) contrib $(IMAP_SUBDIR)
+ bin_SCRIPTS = muttbug flea $(SMIMEAUX_TARGET)
+-- 
+2.11.0
+
diff --git a/mail/mutt/patches/100-CVE-2014-9116.patch b/mail/mutt/patches/100-CVE-2014-9116.patch
deleted file mode 100644 (file)
index b1cf0f9..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-From: Antonio Radici <antonio@debian.org>
-Date: Fri, 18 Sep 2015 11:48:47 +0200
-Subject: 771125-CVE-2014-9116-jessie
-
-This patch solves the issue raised by CVE-2014-9116 in bug 771125.
-
-We correctly redefine what are the whitespace characters as per RFC5322; by
-doing so we prevent mutt_substrdup from being used in a way that could lead to
-a segfault.
-
-The lib.c part was written by Antonio Radici <antonio@debian.org> to prevent
-crashes due to this kind of bugs from happening again.
-
-Signed-off-by: Matteo F. Vescovi <mfv@debian.org>
----
- lib.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff -rupN a/lib.c b/lib.c
---- a/lib.c
-+++ b/lib.c
-@@ -815,6 +815,9 @@ char *mutt_substrdup (const char *begin,
-   size_t len;
-   char *p;
-+  if (end != NULL && end < begin)
-+    return NULL;
-+
-   if (end)
-     len = end - begin;
-   else
index d136b2a89db523759fdfa472a03d174fc278d124..6e52f142ad4c9652233932d719cbf02cf26db3e5 100644 (file)
@@ -7,50 +7,52 @@
 
 include $(TOPDIR)/rules.mk
 
-PKG_NAME:=pigeonhole
-PKG_VERSION:=0.4.20
-PKG_RELEASE:=1
+PKG_NAME:=dovecot-pigeonhole
+PKG_VERSION_PLUGIN:=0.4.20
+PKG_VERSION_DOVECOT:=$(shell make --no-print-directory -C ../dovecot/ val.PKG_VERSION V=s)
+PKG_VERSION:=$(PKG_VERSION_DOVECOT)-$(PKG_VERSION_PLUGIN)
+PKG_RELEASE:=2
 
 DOVECOT_VERSION:=2.2
 
-PKG_SOURCE:=dovecot-$(DOVECOT_VERSION)-$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE:=dovecot-$(DOVECOT_VERSION)-pigeonhole-$(PKG_VERSION_PLUGIN).tar.gz
 PKG_SOURCE_URL:=https://pigeonhole.dovecot.org/releases/$(DOVECOT_VERSION)
 PKG_HASH:=6fe17d0b8f25f2ad580e01ad81ce47a9e965255e383a1f80e455f9ca0f00be5b
 PKG_LICENSE:=LGPL-2.1
 PKG_LICENSE_FILES:=COPYING COPYING.LGPL
 
-PKG_BUILD_DIR:=$(BUILD_DIR)/dovecot-$(DOVECOT_VERSION)-$(PKG_NAME)-$(PKG_VERSION)
+PKG_BUILD_DIR:=$(BUILD_DIR)/dovecot-$(DOVECOT_VERSION)-pigeonhole-$(PKG_VERSION_PLUGIN)
 PKG_INSTALL:=1
 
 include $(INCLUDE_DIR)/package.mk
 
-define Package/pigeonhole
+define Package/dovecot-pigeonhole
   SECTION:=mail
   CATEGORY:=Mail
   DEPENDS:=+dovecot
+  EXTRA_DEPENDS:=dovecot (>= $(PKG_VERSION_DOVECOT))
   TITLE:=Mail filtering facilities for Dovecot
   MAINTAINER:=W. Michael Petullo <mike@flyn.org>
   URL:=https://wiki2.dovecot.org/Pigeonhole
 endef
 
-define Package/pigeonhole/description
+define Package/dovecot-pigeonhole/description
   Pigeonhole provides mail filtering facilities for Dovecot using the Sieve
   (RFC 5228) language.
 endef
 
 CONFIGURE_ARGS += \
-  --with-dovecot=$(STAGING_DIR)/usr/lib/dovecot/ \
-  --without-managesieve
+  --with-dovecot=$(STAGING_DIR)/usr/lib/dovecot/
 
 CONFIGURE_VARS += \
   LDFLAGS="$(TARGET_LDFLAGS) -L$(STAGING_DIR)/usr/lib/dovecot/" \
   CPPFLAGS="$(TARGET_CPPFLAGS) -I$(STAGING_DIR)/usr/include/dovecot/"
 
-define Package/pigeonhole/install
+define Package/dovecot-pigeonhole/install
        $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/dovecot/
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/dovecot/* $(1)/usr/lib/dovecot/
        find $(1)/usr/lib/dovecot/ -name "*.a" -o -name "*.la" | xargs rm
 endef
 
-$(eval $(call BuildPackage,pigeonhole))
+$(eval $(call BuildPackage,dovecot-pigeonhole))
index 0039802c404a654165a6f1826ad877e02e6930f5..530950788ec77f114130b652637f5836fa3fb0a7 100644 (file)
@@ -1,4 +1,4 @@
-# 
+#
 # Copyright (C) 2014-2015 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
@@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=postfix
 PKG_RELEASE:=1
-PKG_VERSION:=3.2.3
+PKG_VERSION:=3.2.4
 PKG_SOURCE_URL:= \
        https://cdn.postfix.johnriley.me/mirrors/postfix-release/official/ \
        ftp://ftp.porcupine.org/mirrors/postfix-release/official/
 
-PKG_HASH:=5b0b975d075ea7561028d4109c581549b794aa92d733429ea6d9fa57751140bf
+PKG_HASH:=ec55ebaa2aa464792af8d5ee103eb68b27a42dc2b36a02fee42dafbf9740c7f6
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_MAINTAINER:=Denis Shulyaka <Shulyaka@gmail.com>
 PKG_LICENSE:=IPL-1.0
@@ -37,6 +37,9 @@ define Package/postfix
   SECTION:=mail
   CATEGORY:=Mail
   TITLE:=Postfix Mail Transmit Agent
+  USERID:= \
+       postfix=25:postfix=25 \
+       postdrop=26:postdrop=26
   URL:=http://www.postfix.org/
   DEPENDS:=+POSTFIX_TLS:libopenssl +POSTFIX_SASL:libsasl2 +POSTFIX_LDAP:libopenldap +POSTFIX_DB:libdb47 +POSTFIX_SQLITE:libsqlite3 +POSTFIX_PGSQL:libpq +POSTFIX_EAI:icu +POSTFIX_PCRE:libpcre
 endef
@@ -66,7 +69,7 @@ define Package/postfix/config
                        bool "BerkeleyDB support"
                        default n
                        help
-                         Implements support for btree files using Berkeley DB. Note that hash files support is not compiled into Berkeley DB OpenWRT distribution
+                         Implements support for btree and hash files using Berkeley DB.
                config POSTFIX_CDB
                        bool "CDB support"
                        default y
@@ -84,7 +87,7 @@ define Package/postfix/config
                          Implement support for PostgreSQL
                config POSTFIX_PCRE
                        bool "PCRE support"
-                       default n
+                       default y
                        help
                          Implement support for Perl Compatible Regular Expressions
                config POSTFIX_EAI
@@ -102,7 +105,6 @@ endef
 
 CCARGS=-DNO_NIS
 AUXLIBS=-L$(STAGING_DIR)/usr/lib
-default_database_type=cdb
 
 ifdef CONFIG_POSTFIX_TLS
   CCARGS+=-DUSE_TLS
@@ -122,12 +124,15 @@ endif
 ifdef CONFIG_POSTFIX_CDB
   CCARGS+=-DHAS_CDB
   AUXLIBS+=-lcdb
+  ifndef default_database_type
+    default_database_type=cdb
+  endif
 endif
 
 ifdef CONFIG_POSTFIX_DB
   AUXLIBS+=-ldb
   CCARGS+=-DHAS_DB
-  ifndef CONFIG_POSTFIX_CDB
+  ifndef default_database_type
     default_database_type=btree
   endif
 else
@@ -162,13 +167,12 @@ endif
 
 CCARGS+=-DDEF_DB_TYPE=\"$(default_database_type)\"
 
-config_directory=/etc/postfix# also add this to postfix init file
+# prevent postfix-install from executing postconf at build time
+# by explicitly providing the default values to postfix-install
+config_directory=/etc/postfix
 sample_directory=/etc/postfix
 command_directory=/usr/sbin
 daemon_directory=/usr/libexec/postfix
-data_directory=/usr/var/lib/postfix
-queue_directory=/usr/var/spool/postfix
-mail_spool_directory=/usr/var/mail
 html_directory=no
 manpage_directory=no
 readme_directory=no
@@ -177,66 +181,38 @@ newaliases_path=/usr/bin/newaliases
 mailq_path=/usr/bin/mailq
 shlib_directory=/usr/lib/postfix
 meta_directory=/etc/postfix
+data_directory=/usr/var/lib/postfix
+queue_directory=/usr/var/spool/postfix
+mail_spool_directory=/usr/var/mail
 
 ln_suffix=.postfix
-ln_old_suffix=.old
+ln_suffix_pre_pf=.pre-postfix
+ln_suffix_legacy=.old
 
 define Package/postfix/conffiles
-$(config_directory)/main.cf
-$(config_directory)/master.cf
-$(config_directory)/aliases
-$(config_directory)/virtual
+$(config_directory)
 endef
 
 define Build/Configure
-       if [ "$(CONFIG_POSTFIX_DB)" = "" -a "$(CONFIG_POSTFIX_CDB)" = "" ]; then\
-         echo "Build error: You must select at least one of the DB types";\
-          exit 1;\
+       if [ "$(default_database_type)" = "" ]; then \
+               echo "Build error: CDB or BerkeleyDB support must be enabled."; \
+               exit 1; \
        fi
-
        cd $(PKG_BUILD_DIR); $(MAKE) makefiles CCARGS='$(CCARGS)' $(TARGET_CONFIGURE_OPTS) AUXLIBS="$(AUXLIBS)"
 endef
 
-# Steps to regenerate files/main.cf.default:
-#
-# 1. Compile the package with current file
-# 2. Execute the following command on target device:
-#      postconf -d > /tmp/main.cf.new
-# 3. Transfer /tmp/main.cf.new file to the build system
-# 4. Execute the following command:
-#      cat /tmp/main.cf.new | ( echo '# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE'; echo '# TEXT HERE JUST SHOWS DEFAULT SETTINGS BUILT INTO POSTFIX.'; echo '#'; grep -v ^alias_maps\ = |grep -v ^alias_database\ = |grep -v ^command_directory\ = |grep -v ^config_directory\ = |grep -v ^daemon_directory\ = |grep -v ^data_directory\ = |grep -v ^default_database_type\ = |grep -v ^html_directory\ = |grep -v ^mail_spool_directory\ = |grep -v ^mailq_path\ = |grep -v ^manpage_directory\ = |grep -v ^meta_directory\ = |grep -v ^mydomain\ = |grep -v ^myhostname\ = |grep -v ^mynetworks\ = |grep -v ^mynetworks_style\ = |grep -v ^newaliases_path\ = |grep -v ^queue_directory\ = |grep -v ^readme_directory\ = |grep -v ^sample_directory\ = |grep -v ^sendmail_path\ = |grep -v ^shlib_directory\ = |grep -v ^smtputf8_enable\ = |grep -v ^virtual_maps\ = |grep -v ^process_id\ = ) > files/main.cf.default
-# 5. Done. Now you can rebuild the package with new main.cf.default.
-#
-
 define Build/Compile
        # Currently postfix has a bug with Makefiles that CCARGS are not passed to the compiler, so we are copying them to CC as a workaround
        cd $(PKG_BUILD_DIR); $(MAKE) $(TARGET_CONFIGURE_OPTS) CC='$(TARGET_CC) $(CCARGS)'
-       cp ./files/main.cf.default $(PKG_BUILD_DIR)/conf/main.cf.default
-       echo "default_database_type = $(default_database_type)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
-       echo "alias_database = $(default_database_type):$(config_directory)/aliases" >> $(PKG_BUILD_DIR)/conf/main.cf.default
-       echo "alias_maps = $(default_database_type):$(config_directory)/aliases" >> $(PKG_BUILD_DIR)/conf/main.cf.default
-       echo "virtual_maps = $(default_database_type):$(config_directory)/virtual" >> $(PKG_BUILD_DIR)/conf/main.cf.default
-       echo "sendmail_path = $(sendmail_path)$(ln_suffix)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
-       echo "newaliases_path = $(newaliases_path)$(ln_suffix)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
-       echo "mailq_path = $(mailq_path)$(ln_suffix)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
-       echo "html_directory = $(html_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
-       echo "manpage_directory = $(manpage_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
-       echo "sample_directory = $(sample_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
-       echo "readme_directory = $(readme_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
-       echo "command_directory = $(command_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
-       echo "daemon_directory = $(daemon_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
-       echo "data_directory = $(data_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
-       echo "queue_directory = $(queue_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
-       echo "config_directory = $(config_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
-       echo "mail_spool_directory = $(mail_spool_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
-       echo "shlib_directory = $(shlib_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
-       echo "meta_directory = $(meta_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
-       echo "smtputf8_enable = $(smtputf8_conf)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
+       $(foreach p, \
+               default_database_type config_directory command_directory daemon_directory \
+               shlib_directory manpage_directory data_directory queue_directory \
+               mail_spool_directory, \
+       echo "$(p) = $($(p))" >> $(PKG_BUILD_DIR)/conf/main.cf;)
 endef
 
 define Package/postfix/install
        cd $(PKG_BUILD_DIR); $(MAKE) install_root=$(1) command_directory=$(command_directory) daemon_directory=$(daemon_directory) data_directory=$(data_directory) html_directory=$(html_directory) mail_owner=postfix mailq_path=$(mailq_path)$(ln_suffix) manpage_directory=$(manpage_directory) newaliases_path=$(newaliases_path)$(ln_suffix) queue_directory=$(queue_directory) readme_directory=$(readme_directory) sendmail_path=$(sendmail_path)$(ln_suffix) setgid_group=postdrop sample_directory=$(sample_directory) config_directory=$(config_directory) shlib_directory=$(shlib_directory) meta_directory=$(meta_directory) mail_version=$(PKG_VERSION) non-interactive-package
-       $(INSTALL_DIR) $(1)$(mail_spool_directory)
        $(INSTALL_DIR) $(1)/etc/init.d/
        $(INSTALL_BIN) ./files/postfix.init $(1)/etc/init.d/postfix
 endef
@@ -244,69 +220,46 @@ endef
 define Package/postfix/postinst
 #!/bin/sh
 
- if [ -f "$${IPKG_INSTROOT}$(sendmail_path)" -a "$$(readlink "$${IPKG_INSTROOT}$(sendmail_path)")" != "$(sendmail_path)$(ln_suffix)" ]; then
-  mv "$${IPKG_INSTROOT}$(sendmail_path)" "$${IPKG_INSTROOT}$(sendmail_path)$(ln_old_suffix)"
-  echo "Warning: $${IPKG_INSTROOT}$(sendmail_path) saved as $${IPKG_INSTROOT}$(sendmail_path)$(ln_old_suffix)"
- fi
- if [ ! -f "$${IPKG_INSTROOT}$(sendmail_path)" ]; then
-  ln -s "$(sendmail_path)$(ln_suffix)" "$${IPKG_INSTROOT}$(sendmail_path)"
- fi
-
- if [ -f "$${IPKG_INSTROOT}$(newaliases_path)" -a "$$(readlink "$${IPKG_INSTROOT}$(newaliases_path)")" != "$(newaliases_path)$(ln_suffix)" ]; then
-  mv "$${IPKG_INSTROOT}$(newaliases_path)" "$${IPKG_INSTROOT}$(newaliases_path)$(ln_old_suffix)"
-  echo "Warning: $${IPKG_INSTROOT}$(newaliases_path) saved as $${IPKG_INSTROOT}$(newaliases_path)$(ln_old_suffix)"
- fi
- if [ ! -f "$${IPKG_INSTROOT}$(newaliases_path)" ]; then
-  ln -s "$(newaliases_path)$(ln_suffix)" "$${IPKG_INSTROOT}$(newaliases_path)"
- fi
-
- if [ -f "$${IPKG_INSTROOT}$(mailq_path)" -a "$$(readlink "$${IPKG_INSTROOT}$(mailq_path)")" != "$(mailq_path)$(ln_suffix)" ]; then
-  mv "$${IPKG_INSTROOT}$(mailq_path)" "$${IPKG_INSTROOT}$(mailq_path)$(ln_old_suffix)"
-  echo "Warning: $${IPKG_INSTROOT}$(mailq_path) saved as $${IPKG_INSTROOT}$(mailq_path)$(ln_old_suffix)"
- fi
- if [ ! -f "$(mailq_path)" ]; then
-  ln -s "$(mailq_path)$(ln_suffix)" "$${IPKG_INSTROOT}$(mailq_path)"
- fi
-
- grep -qc main\.cf "$${IPKG_INSTROOT}"/etc/sysupgrade.conf >/dev/null || echo "$(config_directory)/main.cf" >> "$${IPKG_INSTROOT}"/etc/sysupgrade.conf
- grep -qc master\.cf "$${IPKG_INSTROOT}"/etc/sysupgrade.conf >/dev/null || echo "$(config_directory)/master.cf" >> "$${IPKG_INSTROOT}"/etc/sysupgrade.conf
- grep -qc aliases "$${IPKG_INSTROOT}"/etc/sysupgrade.conf >/dev/null || echo "$(config_directory)/aliases" >> "$${IPKG_INSTROOT}"/etc/sysupgrade.conf
- grep -qc virtual "$${IPKG_INSTROOT}"/etc/sysupgrade.conf >/dev/null || echo "$(config_directory)/virtual" >> "$${IPKG_INSTROOT}"/etc/sysupgrade.conf
-
- touch "$${IPKG_INSTROOT}$(config_directory)"/opkg_postinst
-
- if [ -z "$${IPKG_INSTROOT}" ]; then
-  ps | grep "postfix/master" | grep -cvq grep >/dev/null && /etc/init.d/postfix restart
- fi
+for syml in $(sendmail_path) $(newaliases_path) $(mailq_path); do
+  file=$${IPKG_INSTROOT}$${syml}
+  if [ -f "$${file}$(ln_suffix_legacy)" ]; then
+    # update files saved by legacy versions of Postfix postinst script
+    mv "$${file}$(ln_suffix_legacy)" "$${file}$(ln_suffix_pre_pf)"
+  fi
+  if [ -f "$${file}" ]; then
+    linktarget=$$(basename $$(readlink "$${file}"))
+    postfixf=$$(basename "$${syml}")$(ln_suffix)
+    if [ $${linktarget} != $${postfixf} ]; then
+      mv "$${file}" "$${file}$(ln_suffix_pre_pf)"
+      echo "Info: $${file} saved as $${file}$(ln_suffix_pre_pf)"
+    fi
+  fi
+  if [ ! -f "$${file}" ]; then
+    ln -s "$${syml}$(ln_suffix)" "$${file}"
+  fi
+done
+# fix file/dir ownership in data_directory and queue_directory
+if [ -z "$${IPKG_INSTROOT}" ]; then
+  postfix set-permissions
+fi
 
 endef
 
-define Package/postfix/prerm
-#!/bin/sh
- ps | grep "postfix/master" | grep -cvq grep >/dev/null && postfix stop
- /etc/init.d/postfix disable
-endef
-
 define Package/postfix/postrm
 #!/bin/sh
- rm -f $${IPKG_INSTROOT}$(config_directory)/aliases.cdb $${IPKG_INSTROOT}$(config_directory)/aliases.db $${IPKG_INSTROOT}$(data_directory)/master.lock
-
- rm -f $${IPKG_INSTROOT}$(config_directory)/virtual.cdb $${IPKG_INSTROOT}$(config_directory)/virtual.db
-
- rm -f "$${IPKG_INSTROOT}$(sendmail_path)" "$${IPKG_INSTROOT}$(newaliases_path)" "$${IPKG_INSTROOT}$(mailq_path)"
-
- if [ -f "$${IPKG_INSTROOT}$(sendmail_path)$(ln_old_suffix)" ]; then
-  mv "$${IPKG_INSTROOT}$(sendmail_path)$(ln_old_suffix)" "$${IPKG_INSTROOT}$(sendmail_path)"
-  echo "Warning: $${IPKG_INSTROOT}$(sendmail_path) restored from $${IPKG_INSTROOT}$(sendmail_path)$(ln_old_suffix)"
- fi
- if [ -f "$${IPKG_INSTROOT}$(newaliases_path)$(ln_old_suffix)" ]; then
-  mv "$${IPKG_INSTROOT}$(newaliases_path)$(ln_old_suffix)" "$${IPKG_INSTROOT}$(newaliases_path)"
-  echo "Warning: $${IPKG_INSTROOT}$(newaliases_path) restored from $${IPKG_INSTROOT}$(newaliases_path)$(ln_old_suffix)"
- fi
- if [ -f "$${IPKG_INSTROOT}$(mailq_path)$(ln_old_suffix)" ]; then
-  mv "$${IPKG_INSTROOT}$(mailq_path)$(ln_old_suffix)" "$${IPKG_INSTROOT}$(mailq_path)"
-  echo "Warning: $${IPKG_INSTROOT}$(mailq_path) restored from $${IPKG_INSTROOT}$(mailq_path)$(ln_old_suffix)"
- fi
+rm -f "$(sendmail_path)" "$(newaliases_path)" "$(mailq_path)"
+
+for syml in "$(sendmail_path)" "$(newaliases_path)" "$(mailq_path)"; do
+  file=$${IPKG_INSTROOT}$${syml}
+  if [ -f "$${file}$(ln_suffix_legacy)" ]; then
+    # update files saved by legacy versions of Postfix postinst script
+    mv "$${file}$(ln_suffix_legacy)" "$${file}$(ln_suffix_pre_pf)"
+  fi
+  if [ -f "$${syml}$(ln_suffix_pre_pf)" ]; then
+    mv "$${syml}$(ln_suffix_pre_pf)" "$${syml}"
+    echo "Info: $${syml}$(ln_suffix_pre_pf) restored as $${syml}"
+  fi
+done
 endef
 
 $(eval $(call BuildPackage,postfix))
diff --git a/mail/postfix/files/main.cf.default b/mail/postfix/files/main.cf.default
deleted file mode 100644 (file)
index 5024579..0000000
+++ /dev/null
@@ -1,856 +0,0 @@
-# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE
-# TEXT HERE JUST SHOWS DEFAULT SETTINGS BUILT INTO POSTFIX.
-#
-2bounce_notice_recipient = postmaster
-access_map_defer_code = 450
-access_map_reject_code = 554
-address_verify_cache_cleanup_interval = 12h
-address_verify_default_transport = $default_transport
-address_verify_local_transport = $local_transport
-address_verify_map = btree:$data_directory/verify_cache
-address_verify_negative_cache = yes
-address_verify_negative_expire_time = 3d
-address_verify_negative_refresh_time = 3h
-address_verify_pending_request_limit = 5000
-address_verify_poll_count = ${stress?{1}:{3}}
-address_verify_poll_delay = 3s
-address_verify_positive_expire_time = 31d
-address_verify_positive_refresh_time = 7d
-address_verify_relay_transport = $relay_transport
-address_verify_relayhost = $relayhost
-address_verify_sender = $double_bounce_sender
-address_verify_sender_dependent_default_transport_maps = $sender_dependent_default_transport_maps
-address_verify_sender_dependent_relayhost_maps = $sender_dependent_relayhost_maps
-address_verify_sender_ttl = 0s
-address_verify_service_name = verify
-address_verify_transport_maps = $transport_maps
-address_verify_virtual_transport = $virtual_transport
-allow_mail_to_commands = alias, forward
-allow_mail_to_files = alias, forward
-allow_min_user = no
-allow_percent_hack = yes
-allow_untrusted_routing = no
-alternate_config_directories =
-always_add_missing_headers = no
-always_bcc =
-anvil_rate_time_unit = 60s
-anvil_status_update_time = 600s
-append_at_myorigin = yes
-append_dot_mydomain = ${{$compatibility_level} < {1} ? {yes} : {no}}
-application_event_drain_time = 100s
-authorized_flush_users = static:anyone
-authorized_mailq_users = static:anyone
-authorized_submit_users = static:anyone
-backwards_bounce_logfile_compatibility = yes
-berkeley_db_create_buffer_size = 16777216
-berkeley_db_read_buffer_size = 131072
-best_mx_transport =
-biff = yes
-body_checks =
-body_checks_size_limit = 51200
-bounce_notice_recipient = postmaster
-bounce_queue_lifetime = 5d
-bounce_service_name = bounce
-bounce_size_limit = 50000
-bounce_template_file =
-broken_sasl_auth_clients = no
-canonical_classes = envelope_sender, envelope_recipient, header_sender, header_recipient
-canonical_maps =
-cleanup_service_name = cleanup
-command_execution_directory =
-command_expansion_filter = 1234567890!@%-_=+:,./abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
-command_time_limit = 1000s
-compatibility_level = 0
-confirm_delay_cleared = no
-connection_cache_protocol_timeout = 5s
-connection_cache_service_name = scache
-connection_cache_status_update_time = 600s
-connection_cache_ttl_limit = 2s
-content_filter =
-cyrus_sasl_config_path =
-daemon_table_open_error_is_fatal = no
-daemon_timeout = 18000s
-debug_peer_level = 2
-debug_peer_list =
-debugger_command =
-default_delivery_slot_cost = 5
-default_delivery_slot_discount = 50
-default_delivery_slot_loan = 3
-default_delivery_status_filter =
-default_destination_concurrency_failed_cohort_limit = 1
-default_destination_concurrency_limit = 20
-default_destination_concurrency_negative_feedback = 1
-default_destination_concurrency_positive_feedback = 1
-default_destination_rate_delay = 0s
-default_destination_recipient_limit = 50
-default_extra_recipient_limit = 1000
-default_filter_nexthop =
-default_minimum_delivery_slots = 3
-default_privs = nobody
-default_process_limit = 100
-default_rbl_reply = $rbl_code Service unavailable; $rbl_class [$rbl_what] blocked using $rbl_domain${rbl_reason?; $rbl_reason}
-default_recipient_limit = 20000
-default_recipient_refill_delay = 5s
-default_recipient_refill_limit = 100
-default_transport = smtp
-default_transport_rate_delay = 0s
-default_verp_delimiters = +=
-defer_code = 450
-defer_service_name = defer
-defer_transports =
-delay_logging_resolution_limit = 2
-delay_notice_recipient = postmaster
-delay_warning_time = 0h
-deliver_lock_attempts = 20
-deliver_lock_delay = 1s
-destination_concurrency_feedback_debug = no
-detect_8bit_encoding_header = yes
-disable_dns_lookups = no
-disable_mime_input_processing = no
-disable_mime_output_conversion = no
-disable_verp_bounces = no
-disable_vrfy_command = no
-dns_ncache_ttl_fix_enable = no
-dnsblog_reply_delay = 0s
-dnsblog_service_name = dnsblog
-dont_remove = 0
-double_bounce_sender = double-bounce
-duplicate_filter_limit = 1000
-empty_address_default_transport_maps_lookup_key = <>
-empty_address_recipient = MAILER-DAEMON
-empty_address_relayhost_maps_lookup_key = <>
-enable_long_queue_ids = no
-enable_original_recipient = yes
-error_delivery_slot_cost = $default_delivery_slot_cost
-error_delivery_slot_discount = $default_delivery_slot_discount
-error_delivery_slot_loan = $default_delivery_slot_loan
-error_destination_concurrency_failed_cohort_limit = $default_destination_concurrency_failed_cohort_limit
-error_destination_concurrency_limit = $default_destination_concurrency_limit
-error_destination_concurrency_negative_feedback = $default_destination_concurrency_negative_feedback
-error_destination_concurrency_positive_feedback = $default_destination_concurrency_positive_feedback
-error_destination_rate_delay = $default_destination_rate_delay
-error_destination_recipient_limit = $default_destination_recipient_limit
-error_extra_recipient_limit = $default_extra_recipient_limit
-error_initial_destination_concurrency = $initial_destination_concurrency
-error_minimum_delivery_slots = $default_minimum_delivery_slots
-error_notice_recipient = postmaster
-error_recipient_limit = $default_recipient_limit
-error_recipient_refill_delay = $default_recipient_refill_delay
-error_recipient_refill_limit = $default_recipient_refill_limit
-error_service_name = error
-error_transport_rate_delay = $default_transport_rate_delay
-execution_directory_expansion_filter = 1234567890!@%-_=+:,./abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
-expand_owner_alias = no
-export_environment = TZ MAIL_CONFIG LANG
-fallback_transport =
-fallback_transport_maps =
-fast_flush_domains = $relay_domains
-fast_flush_purge_time = 7d
-fast_flush_refresh_time = 12h
-fault_injection_code = 0
-flush_service_name = flush
-fork_attempts = 5
-fork_delay = 1s
-forward_expansion_filter = 1234567890!@%-_=+:,./abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
-forward_path = $home/.forward${recipient_delimiter}${extension}, $home/.forward
-frozen_delivered_to = yes
-hash_queue_depth = 1
-hash_queue_names = deferred, defer
-header_address_token_limit = 10240
-header_checks =
-header_size_limit = 102400
-helpful_warnings = yes
-home_mailbox =
-hopcount_limit = 50
-ignore_mx_lookup_error = no
-import_environment = MAIL_CONFIG MAIL_DEBUG MAIL_LOGTAG TZ XAUTHORITY DISPLAY LANG=C
-in_flow_delay = 1s
-inet_interfaces = all
-inet_protocols = all
-initial_destination_concurrency = 5
-internal_mail_filter_classes =
-invalid_hostname_reject_code = 501
-ipc_idle = 5s
-ipc_timeout = 3600s
-ipc_ttl = 1000s
-line_length_limit = 2048
-lmdb_map_size = 16777216
-lmtp_address_preference = any
-lmtp_address_verify_target = rcpt
-lmtp_assume_final = no
-lmtp_bind_address =
-lmtp_bind_address6 =
-lmtp_body_checks =
-lmtp_cname_overrides_servername = no
-lmtp_connect_timeout = 0s
-lmtp_connection_cache_destinations =
-lmtp_connection_cache_on_demand = yes
-lmtp_connection_cache_time_limit = 2s
-lmtp_connection_reuse_count_limit = 0
-lmtp_connection_reuse_time_limit = 300s
-lmtp_data_done_timeout = 600s
-lmtp_data_init_timeout = 120s
-lmtp_data_xfer_timeout = 180s
-lmtp_defer_if_no_mx_address_found = no
-lmtp_delivery_slot_cost = $default_delivery_slot_cost
-lmtp_delivery_slot_discount = $default_delivery_slot_discount
-lmtp_delivery_slot_loan = $default_delivery_slot_loan
-lmtp_delivery_status_filter = $default_delivery_status_filter
-lmtp_destination_concurrency_failed_cohort_limit = $default_destination_concurrency_failed_cohort_limit
-lmtp_destination_concurrency_limit = $default_destination_concurrency_limit
-lmtp_destination_concurrency_negative_feedback = $default_destination_concurrency_negative_feedback
-lmtp_destination_concurrency_positive_feedback = $default_destination_concurrency_positive_feedback
-lmtp_destination_rate_delay = $default_destination_rate_delay
-lmtp_destination_recipient_limit = $default_destination_recipient_limit
-lmtp_discard_lhlo_keyword_address_maps =
-lmtp_discard_lhlo_keywords =
-lmtp_dns_reply_filter =
-lmtp_dns_resolver_options =
-lmtp_dns_support_level =
-lmtp_enforce_tls = no
-lmtp_extra_recipient_limit = $default_extra_recipient_limit
-lmtp_fallback_relay =
-lmtp_generic_maps =
-lmtp_header_checks =
-lmtp_host_lookup = dns
-lmtp_initial_destination_concurrency = $initial_destination_concurrency
-lmtp_lhlo_name = $myhostname
-lmtp_lhlo_timeout = 300s
-lmtp_line_length_limit = 998
-lmtp_mail_timeout = 300s
-lmtp_mime_header_checks =
-lmtp_minimum_delivery_slots = $default_minimum_delivery_slots
-lmtp_mx_address_limit = 5
-lmtp_mx_session_limit = 2
-lmtp_nested_header_checks =
-lmtp_per_record_deadline = no
-lmtp_pix_workaround_delay_time = 10s
-lmtp_pix_workaround_maps =
-lmtp_pix_workaround_threshold_time = 500s
-lmtp_pix_workarounds = disable_esmtp,delay_dotcrlf
-lmtp_quit_timeout = 300s
-lmtp_quote_rfc821_envelope = yes
-lmtp_randomize_addresses = yes
-lmtp_rcpt_timeout = 300s
-lmtp_recipient_limit = $default_recipient_limit
-lmtp_recipient_refill_delay = $default_recipient_refill_delay
-lmtp_recipient_refill_limit = $default_recipient_refill_limit
-lmtp_reply_filter =
-lmtp_rset_timeout = 20s
-lmtp_sasl_auth_cache_name =
-lmtp_sasl_auth_cache_time = 90d
-lmtp_sasl_auth_enable = no
-lmtp_sasl_auth_soft_bounce = yes
-lmtp_sasl_mechanism_filter =
-lmtp_sasl_password_maps =
-lmtp_sasl_path =
-lmtp_sasl_security_options = noplaintext, noanonymous
-lmtp_sasl_tls_security_options = $lmtp_sasl_security_options
-lmtp_sasl_tls_verified_security_options = $lmtp_sasl_tls_security_options
-lmtp_sasl_type = cyrus
-lmtp_send_dummy_mail_auth = no
-lmtp_send_xforward_command = no
-lmtp_sender_dependent_authentication = no
-lmtp_skip_5xx_greeting = yes
-lmtp_skip_quit_response = no
-lmtp_starttls_timeout = 300s
-lmtp_tcp_port = 24
-lmtp_tls_CAfile =
-lmtp_tls_CApath =
-lmtp_tls_block_early_mail_reply = no
-lmtp_tls_cert_file =
-lmtp_tls_ciphers = medium
-lmtp_tls_dcert_file =
-lmtp_tls_dkey_file = $lmtp_tls_dcert_file
-lmtp_tls_eccert_file =
-lmtp_tls_eckey_file = $lmtp_tls_eccert_file
-lmtp_tls_enforce_peername = yes
-lmtp_tls_exclude_ciphers =
-lmtp_tls_fingerprint_cert_match =
-lmtp_tls_fingerprint_digest = md5
-lmtp_tls_force_insecure_host_tlsa_lookup = no
-lmtp_tls_key_file = $lmtp_tls_cert_file
-lmtp_tls_loglevel = 0
-lmtp_tls_mandatory_ciphers = medium
-lmtp_tls_mandatory_exclude_ciphers =
-lmtp_tls_mandatory_protocols = !SSLv2, !SSLv3
-lmtp_tls_note_starttls_offer = no
-lmtp_tls_per_site =
-lmtp_tls_policy_maps =
-lmtp_tls_protocols = !SSLv2, !SSLv3
-lmtp_tls_scert_verifydepth = 9
-lmtp_tls_secure_cert_match = nexthop
-lmtp_tls_security_level =
-lmtp_tls_session_cache_database =
-lmtp_tls_session_cache_timeout = 3600s
-lmtp_tls_trust_anchor_file =
-lmtp_tls_verify_cert_match = hostname
-lmtp_tls_wrappermode = no
-lmtp_transport_rate_delay = $default_transport_rate_delay
-lmtp_use_tls = no
-lmtp_xforward_timeout = 300s
-local_command_shell =
-local_delivery_slot_cost = $default_delivery_slot_cost
-local_delivery_slot_discount = $default_delivery_slot_discount
-local_delivery_slot_loan = $default_delivery_slot_loan
-local_delivery_status_filter = $default_delivery_status_filter
-local_destination_concurrency_failed_cohort_limit = $default_destination_concurrency_failed_cohort_limit
-local_destination_concurrency_limit = 2
-local_destination_concurrency_negative_feedback = $default_destination_concurrency_negative_feedback
-local_destination_concurrency_positive_feedback = $default_destination_concurrency_positive_feedback
-local_destination_rate_delay = $default_destination_rate_delay
-local_destination_recipient_limit = 1
-local_extra_recipient_limit = $default_extra_recipient_limit
-local_header_rewrite_clients = permit_inet_interfaces
-local_initial_destination_concurrency = $initial_destination_concurrency
-local_minimum_delivery_slots = $default_minimum_delivery_slots
-local_recipient_limit = $default_recipient_limit
-local_recipient_maps = proxy:unix:passwd.byname $alias_maps
-local_recipient_refill_delay = $default_recipient_refill_delay
-local_recipient_refill_limit = $default_recipient_refill_limit
-local_transport = local:$myhostname
-local_transport_rate_delay = $default_transport_rate_delay
-luser_relay =
-mail_name = Postfix
-mail_owner = postfix
-mail_release_date = 20161001
-mail_version = 3.1.3
-mailbox_command =
-mailbox_command_maps =
-mailbox_delivery_lock = fcntl, dotlock
-mailbox_size_limit = 51200000
-mailbox_transport =
-mailbox_transport_maps =
-maps_rbl_domains =
-maps_rbl_reject_code = 554
-masquerade_classes = envelope_sender, header_sender, header_recipient
-masquerade_domains =
-masquerade_exceptions =
-master_service_disable =
-max_idle = 100s
-max_use = 100
-maximal_backoff_time = 4000s
-maximal_queue_lifetime = 5d
-message_drop_headers = bcc, content-length, resent-bcc, return-path
-message_reject_characters =
-message_size_limit = 10240000
-message_strip_characters =
-milter_command_timeout = 30s
-milter_connect_macros = j {daemon_name} v
-milter_connect_timeout = 30s
-milter_content_timeout = 300s
-milter_data_macros = i
-milter_default_action = tempfail
-milter_end_of_data_macros = i
-milter_end_of_header_macros = i
-milter_header_checks =
-milter_helo_macros = {tls_version} {cipher} {cipher_bits} {cert_subject} {cert_issuer}
-milter_macro_daemon_name = $myhostname
-milter_macro_defaults =
-milter_macro_v = $mail_name $mail_version
-milter_mail_macros = i {auth_type} {auth_authen} {auth_author} {mail_addr} {mail_host} {mail_mailer}
-milter_protocol = 6
-milter_rcpt_macros = i {rcpt_addr} {rcpt_host} {rcpt_mailer}
-milter_unknown_command_macros =
-mime_boundary_length_limit = 2048
-mime_header_checks = $header_checks
-mime_nesting_limit = 100
-minimal_backoff_time = 300s
-multi_instance_directories =
-multi_instance_enable = no
-multi_instance_group =
-multi_instance_name =
-multi_instance_wrapper =
-multi_recipient_bounce_reject_code = 550
-mydestination = $myhostname, localhost.$mydomain, localhost
-myorigin = $myhostname
-nested_header_checks = $header_checks
-non_fqdn_reject_code = 504
-non_smtpd_milters =
-notify_classes = resource, software
-openssl_path = openssl
-owner_request_special = yes
-parent_domain_matches_subdomains = debug_peer_list,fast_flush_domains,mynetworks,permit_mx_backup_networks,qmqpd_authorized_clients,relay_domains,smtpd_access_maps
-permit_mx_backup_networks =
-pickup_service_name = pickup
-pipe_delivery_status_filter = $default_delivery_status_filter
-plaintext_reject_code = 450
-postmulti_control_commands = reload flush
-postmulti_start_commands = start
-postmulti_stop_commands = stop abort drain quick-stop
-postscreen_access_list = permit_mynetworks
-postscreen_bare_newline_action = ignore
-postscreen_bare_newline_enable = no
-postscreen_bare_newline_ttl = 30d
-postscreen_blacklist_action = ignore
-postscreen_cache_cleanup_interval = 12h
-postscreen_cache_map = btree:$data_directory/postscreen_cache
-postscreen_cache_retention_time = 7d
-postscreen_client_connection_count_limit = $smtpd_client_connection_count_limit
-postscreen_command_count_limit = 20
-postscreen_command_filter =
-postscreen_command_time_limit = ${stress?{10}:{300}}s
-postscreen_disable_vrfy_command = $disable_vrfy_command
-postscreen_discard_ehlo_keyword_address_maps = $smtpd_discard_ehlo_keyword_address_maps
-postscreen_discard_ehlo_keywords = $smtpd_discard_ehlo_keywords
-postscreen_dnsbl_action = ignore
-postscreen_dnsbl_max_ttl = ${postscreen_dnsbl_ttl?{$postscreen_dnsbl_ttl}:{1}}h
-postscreen_dnsbl_min_ttl = 60s
-postscreen_dnsbl_reply_map =
-postscreen_dnsbl_sites =
-postscreen_dnsbl_threshold = 1
-postscreen_dnsbl_timeout = 10s
-postscreen_dnsbl_whitelist_threshold = 0
-postscreen_enforce_tls = $smtpd_enforce_tls
-postscreen_expansion_filter = $smtpd_expansion_filter
-postscreen_forbidden_commands = $smtpd_forbidden_commands
-postscreen_greet_action = ignore
-postscreen_greet_banner = $smtpd_banner
-postscreen_greet_ttl = 1d
-postscreen_greet_wait = ${stress?{2}:{6}}s
-postscreen_helo_required = $smtpd_helo_required
-postscreen_non_smtp_command_action = drop
-postscreen_non_smtp_command_enable = no
-postscreen_non_smtp_command_ttl = 30d
-postscreen_pipelining_action = enforce
-postscreen_pipelining_enable = no
-postscreen_pipelining_ttl = 30d
-postscreen_post_queue_limit = $default_process_limit
-postscreen_pre_queue_limit = $default_process_limit
-postscreen_reject_footer = $smtpd_reject_footer
-postscreen_tls_security_level = $smtpd_tls_security_level
-postscreen_upstream_proxy_protocol =
-postscreen_upstream_proxy_timeout = 5s
-postscreen_use_tls = $smtpd_use_tls
-postscreen_watchdog_timeout = 10s
-postscreen_whitelist_interfaces = static:all
-prepend_delivered_header = command, file, forward
-process_id_directory = pid
-process_name = postconf
-propagate_unmatched_extensions = canonical, virtual
-proxy_interfaces =
-proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps $sender_bcc_maps $recipient_bcc_maps $smtp_generic_maps $lmtp_generic_maps $alias_maps $smtpd_client_restrictions $smtpd_helo_restrictions $smtpd_sender_restrictions $smtpd_relay_restrictions $smtpd_recipient_restrictions
-proxy_write_maps = $smtp_sasl_auth_cache_name $lmtp_sasl_auth_cache_name $address_verify_map $postscreen_cache_map
-proxymap_service_name = proxymap
-proxywrite_service_name = proxywrite
-qmgr_clog_warn_time = 300s
-qmgr_daemon_timeout = 1000s
-qmgr_fudge_factor = 100
-qmgr_ipc_timeout = 60s
-qmgr_message_active_limit = 20000
-qmgr_message_recipient_limit = 20000
-qmgr_message_recipient_minimum = 10
-qmqpd_authorized_clients =
-qmqpd_client_port_logging = no
-qmqpd_error_delay = 1s
-qmqpd_timeout = 300s
-queue_file_attribute_count_limit = 100
-queue_minfree = 0
-queue_run_delay = 300s
-queue_service_name = qmgr
-rbl_reply_maps =
-receive_override_options =
-recipient_bcc_maps =
-recipient_canonical_classes = envelope_recipient, header_recipient
-recipient_canonical_maps =
-recipient_delimiter =
-reject_code = 554
-reject_tempfail_action = defer_if_permit
-relay_clientcerts =
-relay_delivery_slot_cost = $default_delivery_slot_cost
-relay_delivery_slot_discount = $default_delivery_slot_discount
-relay_delivery_slot_loan = $default_delivery_slot_loan
-relay_destination_concurrency_failed_cohort_limit = $default_destination_concurrency_failed_cohort_limit
-relay_destination_concurrency_limit = $default_destination_concurrency_limit
-relay_destination_concurrency_negative_feedback = $default_destination_concurrency_negative_feedback
-relay_destination_concurrency_positive_feedback = $default_destination_concurrency_positive_feedback
-relay_destination_rate_delay = $default_destination_rate_delay
-relay_destination_recipient_limit = $default_destination_recipient_limit
-relay_domains = ${{$compatibility_level} < {2} ? {$mydestination} : {}}
-relay_domains_reject_code = 554
-relay_extra_recipient_limit = $default_extra_recipient_limit
-relay_initial_destination_concurrency = $initial_destination_concurrency
-relay_minimum_delivery_slots = $default_minimum_delivery_slots
-relay_recipient_limit = $default_recipient_limit
-relay_recipient_maps =
-relay_recipient_refill_delay = $default_recipient_refill_delay
-relay_recipient_refill_limit = $default_recipient_refill_limit
-relay_transport = relay
-relay_transport_rate_delay = $default_transport_rate_delay
-relayhost =
-relocated_maps =
-remote_header_rewrite_domain =
-require_home_directory = no
-reset_owner_alias = no
-resolve_dequoted_address = yes
-resolve_null_domain = no
-resolve_numeric_domain = no
-retry_delivery_slot_cost = $default_delivery_slot_cost
-retry_delivery_slot_discount = $default_delivery_slot_discount
-retry_delivery_slot_loan = $default_delivery_slot_loan
-retry_destination_concurrency_failed_cohort_limit = $default_destination_concurrency_failed_cohort_limit
-retry_destination_concurrency_limit = $default_destination_concurrency_limit
-retry_destination_concurrency_negative_feedback = $default_destination_concurrency_negative_feedback
-retry_destination_concurrency_positive_feedback = $default_destination_concurrency_positive_feedback
-retry_destination_rate_delay = $default_destination_rate_delay
-retry_destination_recipient_limit = $default_destination_recipient_limit
-retry_extra_recipient_limit = $default_extra_recipient_limit
-retry_initial_destination_concurrency = $initial_destination_concurrency
-retry_minimum_delivery_slots = $default_minimum_delivery_slots
-retry_recipient_limit = $default_recipient_limit
-retry_recipient_refill_delay = $default_recipient_refill_delay
-retry_recipient_refill_limit = $default_recipient_refill_limit
-retry_transport_rate_delay = $default_transport_rate_delay
-rewrite_service_name = rewrite
-send_cyrus_sasl_authzid = no
-sender_bcc_maps =
-sender_canonical_classes = envelope_sender, header_sender
-sender_canonical_maps =
-sender_dependent_default_transport_maps =
-sender_dependent_relayhost_maps =
-sendmail_fix_line_endings = always
-service_throttle_time = 60s
-setgid_group = postdrop
-show_user_unknown_table_name = yes
-showq_service_name = showq
-smtp_address_preference = any
-smtp_address_verify_target = rcpt
-smtp_always_send_ehlo = yes
-smtp_bind_address =
-smtp_bind_address6 =
-smtp_body_checks =
-smtp_cname_overrides_servername = no
-smtp_connect_timeout = 30s
-smtp_connection_cache_destinations =
-smtp_connection_cache_on_demand = no
-smtp_connection_cache_time_limit = 2s
-smtp_connection_reuse_count_limit = 0
-smtp_connection_reuse_time_limit = 300s
-smtp_data_done_timeout = 600s
-smtp_data_init_timeout = 120s
-smtp_data_xfer_timeout = 180s
-smtp_defer_if_no_mx_address_found = no
-smtp_delivery_slot_cost = $default_delivery_slot_cost
-smtp_delivery_slot_discount = $default_delivery_slot_discount
-smtp_delivery_slot_loan = $default_delivery_slot_loan
-smtp_delivery_status_filter = $default_delivery_status_filter
-smtp_destination_concurrency_failed_cohort_limit = $default_destination_concurrency_failed_cohort_limit
-smtp_destination_concurrency_limit = $default_destination_concurrency_limit
-smtp_destination_concurrency_negative_feedback = $default_destination_concurrency_negative_feedback
-smtp_destination_concurrency_positive_feedback = $default_destination_concurrency_positive_feedback
-smtp_destination_rate_delay = $default_destination_rate_delay
-smtp_destination_recipient_limit = $default_destination_recipient_limit
-smtp_discard_ehlo_keyword_address_maps =
-smtp_discard_ehlo_keywords =
-smtp_dns_reply_filter =
-smtp_dns_resolver_options =
-smtp_dns_support_level =
-smtp_enforce_tls = no
-smtp_extra_recipient_limit = $default_extra_recipient_limit
-smtp_fallback_relay = $fallback_relay
-smtp_generic_maps =
-smtp_header_checks =
-smtp_helo_name = $myhostname
-smtp_helo_timeout = 300s
-smtp_host_lookup = dns
-smtp_initial_destination_concurrency = $initial_destination_concurrency
-smtp_line_length_limit = 998
-smtp_mail_timeout = 300s
-smtp_mime_header_checks =
-smtp_minimum_delivery_slots = $default_minimum_delivery_slots
-smtp_mx_address_limit = 5
-smtp_mx_session_limit = 2
-smtp_nested_header_checks =
-smtp_never_send_ehlo = no
-smtp_per_record_deadline = no
-smtp_pix_workaround_delay_time = 10s
-smtp_pix_workaround_maps =
-smtp_pix_workaround_threshold_time = 500s
-smtp_pix_workarounds = disable_esmtp,delay_dotcrlf
-smtp_quit_timeout = 300s
-smtp_quote_rfc821_envelope = yes
-smtp_randomize_addresses = yes
-smtp_rcpt_timeout = 300s
-smtp_recipient_limit = $default_recipient_limit
-smtp_recipient_refill_delay = $default_recipient_refill_delay
-smtp_recipient_refill_limit = $default_recipient_refill_limit
-smtp_reply_filter =
-smtp_rset_timeout = 20s
-smtp_sasl_auth_cache_name =
-smtp_sasl_auth_cache_time = 90d
-smtp_sasl_auth_enable = no
-smtp_sasl_auth_soft_bounce = yes
-smtp_sasl_mechanism_filter =
-smtp_sasl_password_maps =
-smtp_sasl_path =
-smtp_sasl_security_options = noplaintext, noanonymous
-smtp_sasl_tls_security_options = $smtp_sasl_security_options
-smtp_sasl_tls_verified_security_options = $smtp_sasl_tls_security_options
-smtp_sasl_type = cyrus
-smtp_send_dummy_mail_auth = no
-smtp_send_xforward_command = no
-smtp_sender_dependent_authentication = no
-smtp_skip_5xx_greeting = yes
-smtp_skip_quit_response = yes
-smtp_starttls_timeout = 300s
-smtp_tls_CAfile =
-smtp_tls_CApath =
-smtp_tls_block_early_mail_reply = no
-smtp_tls_cert_file =
-smtp_tls_ciphers = medium
-smtp_tls_dane_insecure_mx_policy = dane
-smtp_tls_dcert_file =
-smtp_tls_dkey_file = $smtp_tls_dcert_file
-smtp_tls_eccert_file =
-smtp_tls_eckey_file = $smtp_tls_eccert_file
-smtp_tls_enforce_peername = yes
-smtp_tls_exclude_ciphers =
-smtp_tls_fingerprint_cert_match =
-smtp_tls_fingerprint_digest = md5
-smtp_tls_force_insecure_host_tlsa_lookup = no
-smtp_tls_key_file = $smtp_tls_cert_file
-smtp_tls_loglevel = 0
-smtp_tls_mandatory_ciphers = medium
-smtp_tls_mandatory_exclude_ciphers =
-smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
-smtp_tls_note_starttls_offer = no
-smtp_tls_per_site =
-smtp_tls_policy_maps =
-smtp_tls_protocols = !SSLv2, !SSLv3
-smtp_tls_scert_verifydepth = 9
-smtp_tls_secure_cert_match = nexthop, dot-nexthop
-smtp_tls_security_level =
-smtp_tls_session_cache_database =
-smtp_tls_session_cache_timeout = 3600s
-smtp_tls_trust_anchor_file =
-smtp_tls_verify_cert_match = hostname
-smtp_tls_wrappermode = no
-smtp_transport_rate_delay = $default_transport_rate_delay
-smtp_use_tls = no
-smtp_xforward_timeout = 300s
-smtpd_authorized_verp_clients = $authorized_verp_clients
-smtpd_authorized_xclient_hosts =
-smtpd_authorized_xforward_hosts =
-smtpd_banner = $myhostname ESMTP $mail_name
-smtpd_client_auth_rate_limit = 0
-smtpd_client_connection_count_limit = 50
-smtpd_client_connection_rate_limit = 0
-smtpd_client_event_limit_exceptions = ${smtpd_client_connection_limit_exceptions:$mynetworks}
-smtpd_client_message_rate_limit = 0
-smtpd_client_new_tls_session_rate_limit = 0
-smtpd_client_port_logging = no
-smtpd_client_recipient_rate_limit = 0
-smtpd_client_restrictions =
-smtpd_command_filter =
-smtpd_data_restrictions =
-smtpd_delay_open_until_valid_rcpt = yes
-smtpd_delay_reject = yes
-smtpd_discard_ehlo_keyword_address_maps =
-smtpd_discard_ehlo_keywords =
-smtpd_dns_reply_filter =
-smtpd_end_of_data_restrictions =
-smtpd_enforce_tls = no
-smtpd_error_sleep_time = 1s
-smtpd_etrn_restrictions =
-smtpd_expansion_filter = \t\40!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~
-smtpd_forbidden_commands = CONNECT GET POST
-smtpd_hard_error_limit = ${stress?{1}:{20}}
-smtpd_helo_required = no
-smtpd_helo_restrictions =
-smtpd_history_flush_threshold = 100
-smtpd_junk_command_limit = ${stress?{1}:{100}}
-smtpd_log_access_permit_actions =
-smtpd_milters =
-smtpd_noop_commands =
-smtpd_null_access_lookup_key = <>
-smtpd_peername_lookup = yes
-smtpd_per_record_deadline = ${stress?{yes}:{no}}
-smtpd_policy_service_default_action = 451 4.3.5 Server configuration problem
-smtpd_policy_service_max_idle = 300s
-smtpd_policy_service_max_ttl = 1000s
-smtpd_policy_service_policy_context =
-smtpd_policy_service_request_limit = 0
-smtpd_policy_service_retry_delay = 1s
-smtpd_policy_service_timeout = 100s
-smtpd_policy_service_try_limit = 2
-smtpd_proxy_ehlo = $myhostname
-smtpd_proxy_filter =
-smtpd_proxy_options =
-smtpd_proxy_timeout = 100s
-smtpd_recipient_limit = 1000
-smtpd_recipient_overshoot_limit = 1000
-smtpd_recipient_restrictions =
-smtpd_reject_footer =
-smtpd_reject_unlisted_recipient = yes
-smtpd_reject_unlisted_sender = no
-smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination
-smtpd_restriction_classes =
-smtpd_sasl_auth_enable = no
-smtpd_sasl_authenticated_header = no
-smtpd_sasl_exceptions_networks =
-smtpd_sasl_local_domain =
-smtpd_sasl_path = smtpd
-smtpd_sasl_security_options = noanonymous
-smtpd_sasl_service = smtp
-smtpd_sasl_tls_security_options = $smtpd_sasl_security_options
-smtpd_sasl_type = cyrus
-smtpd_sender_login_maps =
-smtpd_sender_restrictions =
-smtpd_service_name = smtpd
-smtpd_soft_error_limit = 10
-smtpd_starttls_timeout = ${stress?{10}:{300}}s
-smtpd_timeout = ${stress?{10}:{300}}s
-smtpd_tls_CAfile =
-smtpd_tls_CApath =
-smtpd_tls_always_issue_session_ids = yes
-smtpd_tls_ask_ccert = no
-smtpd_tls_auth_only = no
-smtpd_tls_ccert_verifydepth = 9
-smtpd_tls_cert_file =
-smtpd_tls_ciphers = medium
-smtpd_tls_dcert_file =
-smtpd_tls_dh1024_param_file =
-smtpd_tls_dh512_param_file =
-smtpd_tls_dkey_file = $smtpd_tls_dcert_file
-smtpd_tls_eccert_file =
-smtpd_tls_eckey_file = $smtpd_tls_eccert_file
-smtpd_tls_eecdh_grade = strong
-smtpd_tls_exclude_ciphers =
-smtpd_tls_fingerprint_digest = md5
-smtpd_tls_key_file = $smtpd_tls_cert_file
-smtpd_tls_loglevel = 0
-smtpd_tls_mandatory_ciphers = medium
-smtpd_tls_mandatory_exclude_ciphers =
-smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
-smtpd_tls_protocols = !SSLv2, !SSLv3
-smtpd_tls_received_header = no
-smtpd_tls_req_ccert = no
-smtpd_tls_security_level =
-smtpd_tls_session_cache_database =
-smtpd_tls_session_cache_timeout = 3600s
-smtpd_tls_wrappermode = no
-smtpd_upstream_proxy_protocol =
-smtpd_upstream_proxy_timeout = 5s
-smtpd_use_tls = no
-smtputf8_autodetect_classes = sendmail, verify
-soft_bounce = no
-stale_lock_time = 500s
-stress =
-strict_7bit_headers = no
-strict_8bitmime = no
-strict_8bitmime_body = no
-strict_mailbox_ownership = yes
-strict_mime_encoding_domain = no
-strict_rfc821_envelopes = no
-strict_smtputf8 = no
-sun_mailtool_compatibility = no
-swap_bangpath = yes
-syslog_facility = mail
-syslog_name = ${multi_instance_name?{$multi_instance_name}:{postfix}}
-tcp_windowsize = 0
-tls_append_default_CA = no
-tls_daemon_random_bytes = 32
-tls_dane_digest_agility = on
-tls_dane_digests = sha512 sha256
-tls_dane_trust_anchor_digest_enable = yes
-tls_disable_workarounds =
-tls_eecdh_strong_curve = prime256v1
-tls_eecdh_ultra_curve = secp384r1
-tls_export_cipherlist = aNULL:-aNULL:HIGH:MEDIUM:LOW:EXPORT:+RC4:@STRENGTH
-tls_high_cipherlist = aNULL:-aNULL:HIGH:@STRENGTH
-tls_legacy_public_key_fingerprints = no
-tls_low_cipherlist = aNULL:-aNULL:HIGH:MEDIUM:LOW:+RC4:@STRENGTH
-tls_medium_cipherlist = aNULL:-aNULL:HIGH:MEDIUM:+RC4:@STRENGTH
-tls_null_cipherlist = eNULL:!aNULL
-tls_preempt_cipherlist = no
-tls_random_bytes = 32
-tls_random_exchange_name = ${data_directory}/prng_exch
-tls_random_prng_update_period = 3600s
-tls_random_reseed_period = 3600s
-tls_random_source = dev:/dev/urandom
-tls_session_ticket_cipher = aes-256-cbc
-tls_ssl_options =
-tls_wildcard_matches_multiple_labels = yes
-tlsmgr_service_name = tlsmgr
-tlsproxy_enforce_tls = $smtpd_enforce_tls
-tlsproxy_service_name = tlsproxy
-tlsproxy_tls_CAfile = $smtpd_tls_CAfile
-tlsproxy_tls_CApath = $smtpd_tls_CApath
-tlsproxy_tls_always_issue_session_ids = $smtpd_tls_always_issue_session_ids
-tlsproxy_tls_ask_ccert = $smtpd_tls_ask_ccert
-tlsproxy_tls_ccert_verifydepth = $smtpd_tls_ccert_verifydepth
-tlsproxy_tls_cert_file = $smtpd_tls_cert_file
-tlsproxy_tls_ciphers = $smtpd_tls_ciphers
-tlsproxy_tls_dcert_file = $smtpd_tls_dcert_file
-tlsproxy_tls_dh1024_param_file = $smtpd_tls_dh1024_param_file
-tlsproxy_tls_dh512_param_file = $smtpd_tls_dh512_param_file
-tlsproxy_tls_dkey_file = $smtpd_tls_dkey_file
-tlsproxy_tls_eccert_file = $smtpd_tls_eccert_file
-tlsproxy_tls_eckey_file = $smtpd_tls_eckey_file
-tlsproxy_tls_eecdh_grade = $smtpd_tls_eecdh_grade
-tlsproxy_tls_exclude_ciphers = $smtpd_tls_exclude_ciphers
-tlsproxy_tls_fingerprint_digest = $smtpd_tls_fingerprint_digest
-tlsproxy_tls_key_file = $smtpd_tls_key_file
-tlsproxy_tls_loglevel = $smtpd_tls_loglevel
-tlsproxy_tls_mandatory_ciphers = $smtpd_tls_mandatory_ciphers
-tlsproxy_tls_mandatory_exclude_ciphers = $smtpd_tls_mandatory_exclude_ciphers
-tlsproxy_tls_mandatory_protocols = $smtpd_tls_mandatory_protocols
-tlsproxy_tls_protocols = $smtpd_tls_protocols
-tlsproxy_tls_req_ccert = $smtpd_tls_req_ccert
-tlsproxy_tls_security_level = $smtpd_tls_security_level
-tlsproxy_use_tls = $smtpd_use_tls
-tlsproxy_watchdog_timeout = 10s
-trace_service_name = trace
-transport_maps =
-transport_retry_time = 60s
-trigger_timeout = 10s
-undisclosed_recipients_header =
-unknown_address_reject_code = 450
-unknown_address_tempfail_action = $reject_tempfail_action
-unknown_client_reject_code = 450
-unknown_helo_hostname_tempfail_action = $reject_tempfail_action
-unknown_hostname_reject_code = 450
-unknown_local_recipient_reject_code = 550
-unknown_relay_recipient_reject_code = 550
-unknown_virtual_alias_reject_code = 550
-unknown_virtual_mailbox_reject_code = 550
-unverified_recipient_defer_code = 450
-unverified_recipient_reject_code = 450
-unverified_recipient_reject_reason =
-unverified_recipient_tempfail_action = $reject_tempfail_action
-unverified_sender_defer_code = 450
-unverified_sender_reject_code = 450
-unverified_sender_reject_reason =
-unverified_sender_tempfail_action = $reject_tempfail_action
-verp_delimiter_filter = -=+
-virtual_alias_address_length_limit = 1000
-virtual_alias_domains = $virtual_alias_maps
-virtual_alias_expansion_limit = 1000
-virtual_alias_maps = $virtual_maps
-virtual_alias_recursion_limit = 1000
-virtual_delivery_slot_cost = $default_delivery_slot_cost
-virtual_delivery_slot_discount = $default_delivery_slot_discount
-virtual_delivery_slot_loan = $default_delivery_slot_loan
-virtual_delivery_status_filter = $default_delivery_status_filter
-virtual_destination_concurrency_failed_cohort_limit = $default_destination_concurrency_failed_cohort_limit
-virtual_destination_concurrency_limit = $default_destination_concurrency_limit
-virtual_destination_concurrency_negative_feedback = $default_destination_concurrency_negative_feedback
-virtual_destination_concurrency_positive_feedback = $default_destination_concurrency_positive_feedback
-virtual_destination_rate_delay = $default_destination_rate_delay
-virtual_destination_recipient_limit = $default_destination_recipient_limit
-virtual_extra_recipient_limit = $default_extra_recipient_limit
-virtual_gid_maps =
-virtual_initial_destination_concurrency = $initial_destination_concurrency
-virtual_mailbox_base =
-virtual_mailbox_domains = $virtual_mailbox_maps
-virtual_mailbox_limit = 51200000
-virtual_mailbox_lock = fcntl, dotlock
-virtual_mailbox_maps =
-virtual_minimum_delivery_slots = $default_minimum_delivery_slots
-virtual_minimum_uid = 100
-virtual_recipient_limit = $default_recipient_limit
-virtual_recipient_refill_delay = $default_recipient_refill_delay
-virtual_recipient_refill_limit = $default_recipient_refill_limit
-virtual_transport = virtual
-virtual_transport_rate_delay = $default_transport_rate_delay
-virtual_uid_maps =
index 912f8fcf2a7eae91092a971582527a3f39d25cd0..e33c3cfab8cbf52cc3d64a39968da8939b5e6a3a 100644 (file)
@@ -9,53 +9,35 @@ EXTRA_HELP="  status  Display the service status
        flush   Force delivery: attempt to deliver every message in the deferred mail queue
        postinst Force running a script that checks for users, group, configuration, permissions, etc"
 
-config_directory="$IPKG_INSTROOT"/etc/postfix
 
 postinst() {
-       rm -f "$config_directory"/opkg_postinst
-
-       group_exists postfix || group_add postfix 87
-       user_exists postfix || user_add postfix 87
-       group_exists postdrop || group_add postdrop 88
-
-       echo "myhostname = $(uci get system.@system[0].hostname)" >> "$config_directory"/main.cf.default
-       echo "mydomain = $(uci get system.@system[0].hostname|sed -e "s/[^\.]*\.\(.*\)/\1/")" >> "$config_directory"/main.cf.default
-       (eval $(ipcalc.sh $(uci get network.lan.ipaddr) $(uci get network.lan.netmask)); echo mynetworks = 127.0.0.0/8 $NETWORK/$PREFIX) >> "$config_directory"/main.cf.default
-       echo "mynetworks_style = subnet" >> "$config_directory"/main.cf.default
-
-       grep -qc "^sendmail_path[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^sendmail_path =" "$config_directory"/main.cf.default)"
-       grep -qc "^newaliases_path[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^newaliases_path =" "$config_directory"/main.cf.default)"
-       grep -qc "^mailq_path[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^mailq_path =" "$config_directory"/main.cf.default)"
-       grep -qc "^html_directory[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^html_directory =" "$config_directory"/main.cf.default)"
-       grep -qc "^manpage_directory[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^manpage_directory =" "$config_directory"/main.cf.default)"
-       grep -qc "^sample_directory[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^sample_directory =" "$config_directory"/main.cf.default)"
-       grep -qc "^readme_directory[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^readme_directory =" "$config_directory"/main.cf.default)"
-       grep -qc "^command_directory[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^command_directory =" "$config_directory"/main.cf.default)"
-       grep -qc "^daemon_directory[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^daemon_directory =" "$config_directory"/main.cf.default)"
-       grep -qc "^data_directory[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^data_directory =" "$config_directory"/main.cf.default)"
-       grep -qc "^queue_directory[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^queue_directory =" "$config_directory"/main.cf.default)"
-       grep -qc "^config_directory[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^config_directory =" "$config_directory"/main.cf.default)"
-       grep -qc "^mail_spool_directory[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^mail_spool_directory =" "$config_directory"/main.cf.default)"
-       grep -qc "^mail_owner[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^mail_owner =" "$config_directory"/main.cf.default)"
-       grep -qc "^setgid_group[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^setgid_group =" "$config_directory"/main.cf.default)"
-       grep -qc "^myhostname[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^myhostname =" "$config_directory"/main.cf.default)"
-       grep -qc "^mydomain[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^mydomain =" "$config_directory"/main.cf.default)"
-       #grep -qc "^mynetworks[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^mynetworks =" "$config_directory"/main.cf.default)" #Setting mynetworks_style is enough
-       grep -qc "^mynetworks_style[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^mynetworks_style =" "$config_directory"/main.cf.default)"
-       grep -qc "^shlib_directory[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^shlib_directory =" "$config_directory"/main.cf.default)"
-       grep -qc "^meta_directory[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^meta_directory =" "$config_directory"/main.cf.default)"
-       grep -qc "^smtputf8_enable[^_]" "$config_directory"/main.cf >/dev/null || postconf -e "$(grep "^smtputf8_enable =" "$config_directory"/main.cf.default)"
+       if [ -z "$(postconf -nh myhostname)" ]; then
+               postconf -e "myhostname = $(uci get system.@system[0].hostname)"
+       fi
+       if [ -z "$(postconf -nh mydomain)" ]; then
+               postconf -e "mydomain = $(uci get dhcp.@dnsmasq[0].domain)"
+       fi
+       if [ -z "$(postconf -nh mynetworks_style)" ]; then
+               postconf -e "mynetworks_style = subnet"
+       fi
+       mail_spool_directory=$(postconf -h mail_spool_directory)
+       if [ ! -d $mail_spool_directory ]; then
+               mkdir -p -m 0755 $mail_spool_directory
+               chown -R postfix $mail_spool_directory
+       fi
 
        postfix set-permissions
        postfix post-install upgrade-source
        postfix upgrade-configuration
        newaliases
-       postmap "$config_directory"/virtual
+       postmap $(postconf -h config_directory)/virtual
        postfix check
 }
 
 start() {
-       test -f "$config_directory"/opkg_postinst && postinst
+       if [ -z "$(postconf -nh myhostname)" ]; then
+               postinst
+       fi
        postfix start
 }
 
@@ -64,7 +46,6 @@ stop() {
 }
 
 reload() {
-       test -f "$config_directory"/opkg_postinst && postinst
        postfix reload
 }
 
diff --git a/mail/postfix/patches/110-glibc-defs.patch b/mail/postfix/patches/110-glibc-defs.patch
new file mode 100644 (file)
index 0000000..b2d7c17
--- /dev/null
@@ -0,0 +1,19 @@
+This patch fixes the runtime error when libmilter is used with Postfix:
+"unix_send_fd: your system has no support for file descriptor passing"
+
+The issue has been fixed upstream in 20170618 update to Postfix v.3.3:
+http://postfix.1071664.n5.nabble.com/Fix-check-for-file-descriptor-passing-td90983.html
+
+This patch must be removed before compiling Postfix v.3.3.*
+
+--- a/src/util/sys_defs.h
++++ b/src/util/sys_defs.h
+@@ -804,7 +804,7 @@ extern int initgroups(const char *, int)
+ #define KERNEL_VERSION(a,b,c) (LINUX_VERSION_CODE + 1)
+ #endif
+ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,2,0)) \
+-      || (__GLIBC__ < 2)
++      || (defined(__GLIBC__) && __GLIBC__ < 2)
+ #define CANT_USE_SEND_RECV_MSG
+ #define DEF_SMTP_CACHE_DEMAND 0
+ #else
index f260642a8814ac4cfce32e336fc4f765b41fc2c0..0ab9c3991873e8ff18db321cfb0eb41136854290 100644 (file)
@@ -9,12 +9,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ffmpeg
-PKG_VERSION:=3.2.8
+PKG_VERSION:=3.2.9
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=https://ffmpeg.org/releases/
-PKG_HASH:=42e7362692318afc666f14378dd445effa9a1b09787504a6ab5811fe442674cd
+PKG_HASH:=1131d37890ed3dcbc3970452b200a56ceb36b73eaa51d1c23c770c90f928537f
 PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>, \
                Ian Leonard <antonlacon@gmail.com>
 
@@ -215,6 +215,12 @@ PKG_CONFIG_DEPENDS:= \
        $(patsubst %,CONFIG_FFMPEG_CUSTOM_PARSER_%,$(FFMPEG_CUSTOM_PARSERS)) \
        $(patsubst %,CONFIG_FFMPEG_CUSTOM_PROTOCOL_%,$(FFMPEG_CUSTOM_PROTOCOLS))
 
+PKG_BUILD_DEPENDS:= \
+       PACKAGE_shine:shine \
+       PACKAGE_libx264:libx264 \
+       PACKAGE_lame-lib:lame-lib \
+       PACKAGE_libopus:libopus
+
 include $(INCLUDE_DIR)/package.mk
 
 define Package/ffmpeg/Default
@@ -286,10 +292,12 @@ $(call Package/ffmpeg/Default)
 endef
 
 
+# Package build suppressed when CONFIG_ALL=y
 define Package/libffmpeg-custom
 $(call Package/libffmpeg/Default)
  TITLE+= (custom)
- DEPENDS+= +FFMPEG_CUSTOM_SELECT_libopus:libopus \
+ DEPENDS+= @!ALL \
+           +FFMPEG_CUSTOM_SELECT_libopus:libopus \
            +PACKAGE_libx264:libx264 +PACKAGE_lame-lib:lame-lib \
            +FFMPEG_CUSTOM_SELECT_libshine:shine \
            +PACKAGE_fdk-aac:fdk-aac
@@ -689,6 +697,4 @@ $(eval $(call BuildPackage,ffserver))
 $(eval $(call BuildPackage,libffmpeg-audio-dec))
 $(eval $(call BuildPackage,libffmpeg-full))
 $(eval $(call BuildPackage,libffmpeg-mini))
-ifneq ($(CONFIG_ALL),y)
-   $(eval $(call BuildPackage,libffmpeg-custom))
-endif
+$(eval $(call BuildPackage,libffmpeg-custom))
index caf89cfebf2aaedbfc2e245da479ec3e1584b073..fd63354a068a3f7d7aed0aca17797778a1f8841a 100644 (file)
@@ -9,14 +9,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gphoto2
-PKG_VERSION:=2.5.14
+PKG_VERSION:=2.5.15
 PKG_RELEASE:=1
 PKG_MAINTAINER:=Leonardo Medici <leonardo_medici@me.com>
 
-
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=@SF/gphoto
-PKG_HASH:=9302d02fb472d4936988382b7277ccdc4edaf7ede56c490278912ffd0627699c
+PKG_HASH:=ae571a227983dc9997876702a73af5431d41f287ea0f483cda897c57a6084a77
 PKG_LICENSE:=GPL-2.0
 PKG_LICENSE_FILES:=COPYING
 
index 8b3bc01eb1496616f67cdaff8b2f77f8131c2dd5..47c21f55be75ca04dae4dba26bf653e28cc048ed 100644 (file)
@@ -1,18 +1,18 @@
-Index: gphoto2-2.5.14/Makefile.am
+Index: gphoto2-2.5.15/Makefile.am
 ===================================================================
---- gphoto2-2.5.14.orig/Makefile.am
-+++ gphoto2-2.5.14/Makefile.am
+--- gphoto2-2.5.15.orig/Makefile.am
++++ gphoto2-2.5.15/Makefile.am
 @@ -1,4 +1,4 @@
 -SUBDIRS = gphoto-m4 contrib doc gphoto2 packaging po tests
 +SUBDIRS = gphoto-m4 contrib doc gphoto2 packaging tests
  
  ACLOCAL_AMFLAGS = -I auto-m4 -I gphoto-m4
  EXTRA_DIST = README.md
-Index: gphoto2-2.5.14/Makefile.in
+Index: gphoto2-2.5.15/Makefile.in
 ===================================================================
---- gphoto2-2.5.14.orig/Makefile.in
-+++ gphoto2-2.5.14/Makefile.in
-@@ -390,7 +390,7 @@ target_alias = @target_alias@
+--- gphoto2-2.5.15.orig/Makefile.in
++++ gphoto2-2.5.15/Makefile.in
+@@ -389,7 +389,7 @@ target_alias = @target_alias@
  top_build_prefix = @top_build_prefix@
  top_builddir = @top_builddir@
  top_srcdir = @top_srcdir@
@@ -21,11 +21,11 @@ Index: gphoto2-2.5.14/Makefile.in
  ACLOCAL_AMFLAGS = -I auto-m4 -I gphoto-m4
  EXTRA_DIST = README.md
  all: config.h
-Index: gphoto2-2.5.14/configure.ac
+Index: gphoto2-2.5.15/configure.ac
 ===================================================================
---- gphoto2-2.5.14.orig/configure.ac
-+++ gphoto2-2.5.14/configure.ac
-@@ -59,10 +59,7 @@ dnl ------------------------------------
+--- gphoto2-2.5.15.orig/configure.ac
++++ gphoto2-2.5.15/configure.ac
+@@ -58,10 +58,7 @@ dnl ------------------------------------
  GP_GETTEXT_HACK([],[Lutz Müller and others],[${MAIL_GPHOTO_TRANSLATION}])
  ALL_LINGUAS="az cs da de en_GB es eu fi fr hu id is it ja nl pa pl pt_BR ro ru rw sk sr sv uk vi zh_CN zh_TW"
  AM_GNU_GETTEXT_VERSION([0.14.1])
@@ -36,7 +36,7 @@ Index: gphoto2-2.5.14/configure.ac
  
  dnl We cannot use AC_DEFINE_UNQUOTED() for these definitions, as
  dnl we require make to do insert the proper $(datadir) value
-@@ -408,7 +405,6 @@ AC_SUBST([AM_LDFLAGS])
+@@ -407,7 +404,6 @@ AC_SUBST([AM_LDFLAGS])
  # Create output files
  # ---------------------------------------------------------------------------
  AC_CONFIG_FILES([
index 8275657ee877ce852573493661238c51d12f1b84..d64a3c6d05076f1f706513949643586028e4a335 100644 (file)
@@ -1,18 +1,18 @@
-Index: gphoto2-2.5.14/Makefile.am
+Index: gphoto2-2.5.15/Makefile.am
 ===================================================================
---- gphoto2-2.5.14.orig/Makefile.am
-+++ gphoto2-2.5.14/Makefile.am
+--- gphoto2-2.5.15.orig/Makefile.am
++++ gphoto2-2.5.15/Makefile.am
 @@ -1,4 +1,4 @@
 -SUBDIRS = gphoto-m4 contrib doc gphoto2 packaging tests
 +SUBDIRS = gphoto-m4 contrib gphoto2 packaging
  
  ACLOCAL_AMFLAGS = -I auto-m4 -I gphoto-m4
  EXTRA_DIST = README.md
-Index: gphoto2-2.5.14/Makefile.in
+Index: gphoto2-2.5.15/Makefile.in
 ===================================================================
---- gphoto2-2.5.14.orig/Makefile.in
-+++ gphoto2-2.5.14/Makefile.in
-@@ -390,7 +390,7 @@ target_alias = @target_alias@
+--- gphoto2-2.5.15.orig/Makefile.in
++++ gphoto2-2.5.15/Makefile.in
+@@ -389,7 +389,7 @@ target_alias = @target_alias@
  top_build_prefix = @top_build_prefix@
  top_builddir = @top_builddir@
  top_srcdir = @top_srcdir@
@@ -21,11 +21,11 @@ Index: gphoto2-2.5.14/Makefile.in
  ACLOCAL_AMFLAGS = -I auto-m4 -I gphoto-m4
  EXTRA_DIST = README.md
  all: config.h
-Index: gphoto2-2.5.14/configure.ac
+Index: gphoto2-2.5.15/configure.ac
 ===================================================================
---- gphoto2-2.5.14.orig/configure.ac
-+++ gphoto2-2.5.14/configure.ac
-@@ -408,16 +408,10 @@ AC_CONFIG_FILES([
+--- gphoto2-2.5.15.orig/configure.ac
++++ gphoto2-2.5.15/configure.ac
+@@ -407,16 +407,10 @@ AC_CONFIG_FILES([
  Makefile
  gphoto2/Makefile
  gphoto-m4/Makefile
index d9da20bc88dd6db01dbcca92f5295a3ca1288b83..b0b00df00ca45aae7380be8540e3aac17aefedd6 100644 (file)
@@ -8,15 +8,15 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gst1-libav
-PKG_VERSION:=1.8.2
-PKG_RELEASE:=2
+PKG_VERSION:=1.10.5
+PKG_RELEASE:=1
 
 PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org> \
                Ted Hess <thess@kitschensync.net>
 
 PKG_SOURCE:=gst-libav-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=http://gstreamer.freedesktop.org/src/gst-libav
-PKG_HASH:=b5f3c7a27b39b5f5c2f0bfd546b0c655020faf6b38d27b64b346c43e5ebf687a
+PKG_HASH:=e4d2f315f478d47281fbfdfbd590a63d23704ca37911d7142d5992616f4b28d3
 
 PKG_LICENSE:=GPL-2.0 LGPL-2.0
 PKG_LICENSE_FILES:=COPYING COPYING.LIB
@@ -144,10 +144,13 @@ LIBAV_CONFIGURE_DEMUXERS:=$(call FILTER_CONFIG,DEMUXER,demuxer,$(LIBAV_DEMUXERS)
 LIBAV_CONFIGURE_PARSERS:=$(call FILTER_CONFIG,PARSER,parser,$(LIBAV_PARSERS))
 LIBAV_CONFIGURE_PROTOCOLS:=$(call FILTER_CONFIG,PROTOCOL,protocol,$(LIBAV_PROTOCOLS))
 
+# Strip off FPU notation
+REAL_CPU_TYPE:=$(firstword $(subst +, ,$(CONFIG_CPU_TYPE)))
+
 CONFIGURE_ARGS += \
        --without-system-libav \
-       --with-libav-extra-configure="--target-os=linux \
-       $(if $(findstring " ",$(CONFIG_CPU_TYPE)),,--cpu=$(CONFIG_CPU_TYPE)) \
+       --with-libav-extra-configure=" \
+       $(if $(REAL_CPU_TYPE),--cpu=$(call qstrip,$(REAL_CPU_TYPE)),) \
        --disable-bsfs \
        --disable-programs \
        --disable-devices \
index eec418c37d31be96825f4e8b1d6d46f294b02641..ab9f61ef8c51caf03bf80d81246ebb5935726fd8 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gst1-plugins-bad
-PKG_VERSION:=1.8.2
+PKG_VERSION:=1.10.5
 PKG_RELEASE:=1
 
 PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org> \
@@ -20,9 +20,9 @@ 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_HASH:=d7995317530c8773ec088f94d9320909d41da61996b801ebacce9a56af493f97
+PKG_HASH:=c5806040bb83b43be86ce592e6a19c5d83d7776f7d9f434eb4b911c4efff3573
 
-PKG_BUILD_DEPENDS:= libgstreamer1 gstreamer1-plugins-base
+PKG_BUILD_DEPENDS:= libgstreamer1 gst1-plugins-base libgst1basecamerabinsrc libgst1photography libgst1adaptivedemux libgst1uridownloader libgst1badbase
 
 PKG_FIXUP:=autoreconf
 PKG_INSTALL:=1
@@ -38,7 +38,7 @@ define Package/gstreamer1-bad/Default
   SECTION:=multimedia
   TITLE:=GStreamer
   URL:=http://gstreamer.freedesktop.org/
-  DEPENDS:= +libgstreamer1 $(ICONV_DEPENDS)
+  DEPENDS:= +gst1-plugins-base +libgstreamer1 +libgst1pbutils $(ICONV_DEPENDS)
 endef
 
 define Package/gstreamer1-bad/description/Default
index ee5d05b3f046cdcda6d15ee70ce898b5cae2e4fa..ac1aedd2980f71fa100cd06950ab4831a22e1915 100644 (file)
@@ -1,9 +1,9 @@
 --- a/configure.ac
 +++ b/configure.ac
-@@ -3717,7 +3717,6 @@ ext/x265/Makefile
- ext/xvid/Makefile
+@@ -3841,7 +3841,6 @@ ext/xvid/Makefile
  ext/zbar/Makefile
  ext/dtls/Makefile
+ ext/webrtcdsp/Makefile
 -po/Makefile.in
  docs/Makefile
  docs/plugins/Makefile
index 3bef421c3d662a6714055020a02e6fe556de8aad..19aebe5c9076c8db9d03b0f8b59c6f427ffe5d12 100644 (file)
@@ -1,6 +1,6 @@
 --- a/configure.ac
 +++ b/configure.ac
-@@ -3617,38 +3617,6 @@ sys/wasapi/Makefile
+@@ -3739,37 +3739,6 @@ sys/wasapi/Makefile
  sys/wininet/Makefile
  sys/winks/Makefile
  sys/winscreencap/Makefile
@@ -21,7 +21,6 @@
 -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
index 32bf8c95a1d1ae8b689049a10927784d120ee1a7..cf52c7b1e1b4864dc20913a01f0cc8ee09f18aed 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gst1-plugins-base
-PKG_VERSION:=1.8.2
+PKG_VERSION:=1.10.5
 PKG_RELEASE:=1
 
 PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org> \
@@ -20,7 +20,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_HASH:=9d7109c8fb0a5dec8edb17b0053c59a46aba7ddf48dc48ea822ebbbd4339d38d
+PKG_HASH:=1c401a79bd1e4521c6ef1b66579bddedd9136e164e54792aab4bfcf3485bf9a7
 
 PKG_BUILD_DEPENDS:= libgstreamer1
 PKG_CONFIG_DEPENDS:= \
index d4956062474dc496f2816ca54b30abb042d3221b..34dfeff71291ba4d1d44bad368ff7a2a05c6a23f 100644 (file)
@@ -1,6 +1,6 @@
 --- a/configure.ac
 +++ b/configure.ac
-@@ -929,7 +929,6 @@ docs/design/Makefile
+@@ -963,7 +963,6 @@ docs/design/Makefile
  docs/libs/Makefile
  docs/plugins/Makefile
  docs/version.entities
index f177d1832234366a23e50fedc370fa7e28841313..e650c2057fd2f81ba8ac1695d653912407760ca0 100644 (file)
@@ -1,6 +1,6 @@
 --- a/configure.ac
 +++ b/configure.ac
-@@ -907,23 +907,6 @@ pkgconfig/gstreamer-video.pc
+@@ -940,24 +940,6 @@ pkgconfig/gstreamer-video.pc
  pkgconfig/gstreamer-video-uninstalled.pc
  pkgconfig/gstreamer-plugins-base.pc
  pkgconfig/gstreamer-plugins-base-uninstalled.pc
@@ -9,6 +9,7 @@
 -tests/examples/Makefile
 -tests/examples/app/Makefile
 -tests/examples/audio/Makefile
+-tests/examples/decodebin_next/Makefile
 -tests/examples/dynamic/Makefile
 -tests/examples/encoding/Makefile
 -tests/examples/fft/Makefile
index a12c7e75ef638ef6654728f7ce963d0ceb443b9f..33bf4a1785523b739855ede9396ab4f8b0823a36 100644 (file)
@@ -1,6 +1,6 @@
 --- a/configure.ac
 +++ b/configure.ac
-@@ -907,11 +907,6 @@ pkgconfig/gstreamer-video.pc
+@@ -940,11 +940,6 @@ pkgconfig/gstreamer-video.pc
  pkgconfig/gstreamer-video-uninstalled.pc
  pkgconfig/gstreamer-plugins-base.pc
  pkgconfig/gstreamer-plugins-base-uninstalled.pc
index 1e2da92f8106762d29f00ec35d772484873a1ce7..514e759e083fef56e859a315dc3cf1543d46ab75 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gst1-plugins-good
-PKG_VERSION:=1.8.2
+PKG_VERSION:=1.10.5
 PKG_RELEASE:=1
 
 PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org> \
@@ -20,9 +20,9 @@ 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_HASH:=8d7549118a3b7a009ece6bb38a05b66709c551d32d2adfd89eded4d1d7a23944
+PKG_HASH:=be053f6ed716eeb517cec148cec637cdce571c6e04d5c21409e2876fb76c7639
 
-PKG_BUILD_DEPENDS:= libgstreamer1 gstreamer1-plugins-base
+PKG_BUILD_DEPENDS:= libgstreamer1 gst1-plugins-base
 
 PKG_FIXUP:=autoreconf
 PKG_INSTALL:=1
@@ -37,7 +37,7 @@ define Package/gstreamer1-good/Default
   SECTION:=multimedia
   TITLE:=GStreamer
   URL:=http://gstreamer.freedesktop.org/
-  DEPENDS:= +libgstreamer1 $(ICONV_DEPENDS)
+  DEPENDS:= +libgstreamer1 +libgst1pbutils $(ICONV_DEPENDS)
 endef
 
 define Package/gstreamer1-good/description/Default
index 141187500510510839aeb4ec3eaadfe25426e351..c6aa7fb57b14fb5c09250f7ea76054b001873672 100644 (file)
@@ -1,6 +1,6 @@
 --- a/configure.ac
 +++ b/configure.ac
-@@ -1049,7 +1049,6 @@ sys/sunaudio/Makefile
+@@ -1061,7 +1061,6 @@ sys/sunaudio/Makefile
  sys/v4l2/Makefile
  sys/waveform/Makefile
  sys/ximage/Makefile
index b7a7dc761051b26ce99e3c5f56507359e3bc7d1c..5dd513254790718b510fec59c6fddde7c406a449 100644 (file)
@@ -1,6 +1,6 @@
 --- a/configure.ac
 +++ b/configure.ac
-@@ -1049,21 +1049,6 @@ sys/sunaudio/Makefile
+@@ -1061,21 +1061,6 @@ sys/sunaudio/Makefile
  sys/v4l2/Makefile
  sys/waveform/Makefile
  sys/ximage/Makefile
index 38a876f216fb5cae048bc06c68e7e0cc7a017dd4..17fa97c3e2003cb82fc686348dc133e7f4f74b8b 100644 (file)
@@ -1,6 +1,6 @@
 --- a/configure.ac
 +++ b/configure.ac
-@@ -1052,9 +1052,6 @@ sys/ximage/Makefile
+@@ -1064,9 +1064,6 @@ sys/ximage/Makefile
  common/Makefile
  common/m4/Makefile
  m4/Makefile
index 3381e86640916d5c3c35017171350dee47867c04..a85230663b3a903d2217682c2e35568d345c453a 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gst1-plugins-ugly
-PKG_VERSION:=1.8.2
+PKG_VERSION:=1.10.5
 PKG_RELEASE:=1
 
 PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org> \
@@ -20,7 +20,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_HASH:=9c5b33a2a98fc1d6d6c99a1b536b1fb2de45f53cc8bf8ab85a8b8141fed1a8ac
+PKG_HASH:=d6edc046350809c967f5b058c5c2e534d99d1d69fe1b26acd849e87781a7d7fc
 
 PKG_BUILD_DEPENDS:= libgstreamer1 gstreamer1-plugins-base
 PKG_CONFIG_DEPENDS:= \
index ea02ec82155e2573e16991b047541f3cd3974314..012546d5a88308b58e67df1da0f2ab456ff35f77 100644 (file)
@@ -1,17 +1,15 @@
-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
+--- a/configure.ac
++++ b/configure.ac
+@@ -482,7 +482,6 @@ tests/Makefile
  tests/check/Makefile
+ tests/files/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
+--- a/Makefile.am
++++ b/Makefile.am
 @@ -1,7 +1,7 @@
  DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc
  
index f8b51c079ca688899690b2f6b22b69e92a9beaf9..433139b1acdba1e89f41cf9cb18c013adf27b264 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gstreamer1
-PKG_VERSION:=1.8.2
+PKG_VERSION:=1.10.5
 PKG_RELEASE:=1
 
 PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org> \
@@ -20,7 +20,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_HASH:=9dbebe079c2ab2004ef7f2649fa317cabea1feb4fb5605c24d40744b90918341
+PKG_HASH:=bc06243600817f637029da29d089d5908d1d266542f68bf6626a10c5f05f1f1d
 
 PKG_FIXUP:=autoreconf
 PKG_REMOVE_FILES:=autogen.sh aclocal.m4
@@ -121,6 +121,7 @@ CONFIGURE_ARGS += \
        --disable-examples \
        --disable-tests \
        --disable-valgrind \
+       --disable-gst-tracer-hooks \
        --without-libiconv-prefix \
        --without-libintl-prefix \
        --without-x \
@@ -135,11 +136,6 @@ 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*} \
index 9c5b590fdb2943b9d140522de33cbe5db3799a48..750fa0c33e5aeb20302d45a40d8e816f2bcf973b 100644 (file)
@@ -1,6 +1,6 @@
 --- a/configure.ac
 +++ b/configure.ac
-@@ -998,7 +998,6 @@ libs/gst/net/Makefile
+@@ -1047,7 +1047,6 @@ libs/gst/net/Makefile
  plugins/Makefile
  plugins/elements/Makefile
  plugins/tracers/Makefile
index 42874100b861ad6d49d03f344f2c3895d120fe8e..f1d62a0298dc89ccd3e462665650536076dfb677 100644 (file)
@@ -1,6 +1,6 @@
 --- a/configure.ac
 +++ b/configure.ac
-@@ -998,21 +998,6 @@ libs/gst/net/Makefile
+@@ -1047,21 +1047,6 @@ libs/gst/net/Makefile
  plugins/Makefile
  plugins/elements/Makefile
  plugins/tracers/Makefile
index 3d1187ae64e7ed271b5b968836a51714c532b2af..86143e4d650696d33cc54615e5e8ab998124ef3c 100644 (file)
@@ -1,6 +1,6 @@
 --- a/configure.ac
 +++ b/configure.ac
-@@ -1001,18 +1001,6 @@ plugins/tracers/Makefile
+@@ -1050,18 +1050,6 @@ plugins/tracers/Makefile
  tools/Makefile
  common/Makefile
  common/m4/Makefile
diff --git a/multimedia/gstreamer1/patches/004-no-unwind.patch b/multimedia/gstreamer1/patches/004-no-unwind.patch
new file mode 100644 (file)
index 0000000..a9729f7
--- /dev/null
@@ -0,0 +1,23 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -826,20 +826,6 @@ if test "x$BUILD_EXAMPLES" = "xyes"; the
+ fi
+ AM_CONDITIONAL(HAVE_GTK, test "x$HAVE_GTK" = "xyes")
+-dnl libunwind is optionally used by the leaks tracer
+-PKG_CHECK_MODULES(UNWIND, libunwind, HAVE_UNWIND=yes, HAVE_UNWIND=no)
+-
+-dnl Check for backtrace() from libc
+-AC_CHECK_FUNC(backtrace, [
+-  AC_CHECK_HEADERS([execinfo.h], [
+-    AC_DEFINE(HAVE_BACKTRACE,1,[Have backtrace])
+-  ], [], [])
+-])
+-
+-if test "x$HAVE_UNWIND" = "xyes"; then
+-  AC_DEFINE(HAVE_UNWIND, 1, [libunwind available])
+-fi
+-
+ dnl building of unit test libraries
+ AC_ARG_ENABLE(check,
+   AS_HELP_STRING([--disable-check],[disable building unit test libraries]),
index e2c79e8458be40fb3839e207b5e3e5d6121cb29e..5b84a8cbb5e047319561d3fd999826d8fcc4cb31 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=minidlna
-PKG_VERSION:=1.2.0
-PKG_RELEASE:=1
+PKG_VERSION:=1.2.1
+PKG_RELEASE:=2
 
 PKG_SOURCE_URL:=@SF/minidlna
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=8d34436580c4c44be25976d5e46bc5b71af69bf441c4492774eac001164c4433
+PKG_HASH:=67388ba23ab0c7033557a32084804f796aa2a796db7bb2b770fb76ac2a742eec
 
 PKG_LICENSE:=GPL-2.0 BSD-3-Clause
 PKG_LICENSE_FILES:=COPYING LICENCE.miniupnpd
index 91a5cc3305bd31c0666abffda9b9f2398087b25c..924a99ea9da59c1f5f248e4efd8300123f296ba1 100644 (file)
@@ -7,6 +7,7 @@ config minidlna config
        option log_dir '/var/log'
        option inotify '1'
        option enable_tivo '0'
+       option wide_links '0'
        option strict_dlna '0'
        option presentation_url ''
        option notify_interval '900'
index a92a064d3c04118ae4633cedabf68c49f9c1ab39..79be8f625a05490de2192306282eee387c90c121 100644 (file)
@@ -59,6 +59,7 @@ minidlna_create_config() {
        minidlna_cfg_addstr $cfg log_dir
        minidlna_cfg_addbool $cfg inotify '1'
        minidlna_cfg_addbool $cfg enable_tivo '0'
+       minidlna_cfg_addbool $cfg wide_links '0'
        minidlna_cfg_addbool $cfg strict_dlna '0'
        minidlna_cfg_addstr $cfg album_art_names
        minidlna_cfg_addstr $cfg presentation_url
index 6617e8967d3a43b8c2258958570f6703eb91f074..1c18e5d92312f0dd38f226b34dde8a7a660e6280 100644 (file)
@@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=mjpg-streamer
 PKG_REV:=182
 PKG_VERSION:=r$(PKG_REV)
-PKG_RELEASE:=8
+PKG_RELEASE:=9
 PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>, \
                Ted Hess <thess@kitschensync.net>
 
index 06630d42331e103ae847ca47527305d06287b1e7..b7c7ec38f0c13afcee0fe6542cce9bfae8f4fed4 100644 (file)
@@ -84,6 +84,7 @@ start_instance() {
 
        procd_open_instance
        procd_set_param command "$PROG" --input "$input_arg" --output "$output_arg"
+       [ "x$output" = 'xhttp' ] && procd_add_mdns "http" "tcp" "$port" "daemon=mjpg-streamer"
        procd_close_instance
 }
 
index 2efc54af88a874b9851b12a2336c78ab7c032e6b..28a7feeffe0c0184b8aac27becca19838dc50ebc 100644 (file)
@@ -6,7 +6,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=adblock
-PKG_VERSION:=3.0.2
+PKG_VERSION:=3.1.1
 PKG_RELEASE:=1
 PKG_LICENSE:=GPL-3.0+
 PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
index 610bad77389399630da850ca02dba12bae88d5e4..6b373da52f54eea83e542f418c8d3a91813303b6 100644 (file)
@@ -4,11 +4,13 @@
 A lot of people already use adblocker plugins within their desktop browsers, but what if you are using your (smart) phone, tablet, watch or any other wlan gadget...getting rid of annoying ads, trackers and other abuse sites (like facebook ;-) is simple: block them with your router. When the dns server on your router receives dns requests, you will sort out queries that ask for the resource records of ad servers and return a simple 'NXDOMAIN'. This is nothing but **N**on-e**X**istent Internet or Intranet domain name, if domain name is unable to resolved using the dns server, a condition called the 'NXDOMAIN' occurred.  
 
 ## Main Features
-* support of the following domain block list sources (free for private usage, for commercial use please check their individual licenses):
+* support of the following domain blocklist sources (free for private usage, for commercial use please check their individual licenses):
     * [adaway](https://adaway.org)
     * => infrequent updates, approx. 400 entries (enabled by default)
     * [adguard](https://adguard.com)
     * => numerous updates on the same day, approx. 12.000 entries
+    * [bitcoin](https://github.com/hoshsadiq/adblock-nocoin-list)
+    * => infrequent updates, approx. 15 entries
     * [blacklist]()
     * => static local blacklist, located by default in '/etc/adblock/adblock.blacklist'
     * [disconnect](https://disconnect.me)
@@ -29,6 +31,8 @@ A lot of people already use adblocker plugins within their desktop browsers, but
     * => daily updates, approx. 150 entries
     * [reg_cn](https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt)
     * => regional blocklist for China, daily updates, approx. 1.600 entries
+    * [reg_de](https://easylist-downloads.adblockplus.org/easylistgermany+easylist.txt)
+    * => regional blocklist for Germany, daily updates, approx. 9.200 entries
     * [reg_id](https://easylist-downloads.adblockplus.org/abpindo+easylist.txt)
     * => regional blocklist for Indonesia, daily updates, approx. 800 entries
     * [reg_nl](https://easylist-downloads.adblockplus.org/easylistdutch+easylist.txt)
@@ -59,28 +63,29 @@ A lot of people already use adblocker plugins within their desktop browsers, but
     * => daily updates, approx. 440 entries
 * zero-conf like automatic installation & setup, usually no manual changes needed
 * simple but yet powerful adblock engine: adblock does not use error prone external iptables rulesets, http pixel server instances and things like that
-* supports five different dns backends / block list formats: dnsmasq, unbound, named (bind), kresd and dnscrypt-proxy
+* supports five different dns backends / blocklist formats: dnsmasq, unbound, named (bind), kresd and dnscrypt-proxy
 * automatically selects uclient-fetch or wget as download utility (other tools like curl or aria2c are supported as well)
-* provides 'http only' mode without installed ssl library for all non-SSL block list sources
+* provides 'http only' mode without installed ssl library for all non-SSL blocklist sources
 * supports a wide range of router modes, even AP modes are supported
 * full IPv4 and IPv6 support
-* provides top level domain compression ('tld compression'), this feature removes thousands of needless host entries from the block list and lowers the memory footprint for the dns backends
-* each block list source will be updated and processed separately
-* block list source parsing by fast & flexible regex rulesets
-* overall duplicate removal in central block list (adb_list.overall)
+* provides top level domain compression ('tld compression'), this feature removes thousands of needless host entries from the blocklist and lowers the memory footprint for the dns backends
+* blocklist source parsing by fast & flexible regex rulesets
+* overall duplicate removal in central blocklist 'adb_list.overall'
 * additional whitelist for manual overrides, located by default in /etc/adblock/adblock.whitelist
-* quality checks during block list update to ensure a reliable dns backend service
+* quality checks during blocklist update to ensure a reliable dns backend service
 * minimal status & error logging to syslog, enable debug logging to receive more output
 * procd based init system support (start/stop/restart/reload/suspend/resume/query/status)
 * procd network interface trigger support or classic time based startup
-* suspend & resume adblock actions temporarily without block list reloading
+* conditional dns backend restarts by old/new blocklist comparison with sha256sum (default) or md5sum
+* suspend & resume adblock actions temporarily without blocklist reloading
 * output comprehensive runtime information via LuCI or via 'status' init command
 * query function to quickly identify blocked (sub-)domains, e.g. for whitelisting
 * strong LuCI support
 * optional: force dns requests to local resolver
 * optional: force overall sort / duplicate removal for low memory devices (handle with care!)
-* optional: 'manual mode' to re-use blocklist backups during startup, get fresh lists only via manual reload or restart action
-* optional: automatic block list backup & restore, they will be used in case of download errors or during startup in manual mode
+* optional: automatic blocklist backup & restore, they will be used in case of download errors or during startup in backup mode
+* optional: 'backup mode' to re-use blocklist backups during startup, get fresh lists only via reload or restart action
+* optional: 'whitelist mode' to block access to all domains except those explicitly listed in the whitelist file
 * optional: add new adblock sources on your own via uci config
 
 ## Prerequisites
@@ -97,21 +102,21 @@ A lot of people already use adblocker plugins within their desktop browsers, but
 * control the adblock service manually with _/etc/init.d/adblock_ start/stop/restart/reload/suspend/resume/status or use the LuCI frontend
 
 ## LuCI adblock companion package
-* for easy management of the various block list sources and all other adblock options you should use the provided LuCI frontend
+* for easy management of the various blocklist sources and all other adblock options you should use the provided LuCI frontend
 * install 'luci-app-adblock' (_opkg install luci-app-adblock_)
 * the application is located in LuCI under 'Services' menu
 
 ## Tweaks
 * **runtime information:** the adblock status is available via _/etc/init.d/adblock status_ (see example below)
 * **debug logging:** for script debugging please set the config option 'adb\_debug' to '1' and check the runtime output with _logread -e "adblock"_
-* **storage expansion:** to process and store all block list sources at once it might helpful to enlarge your temp directory with a swap partition => see [openwrt wiki](https://wiki.openwrt.org/doc/uci/fstab) for further details
+* **storage expansion:** to process and store all blocklist sources at once it might helpful to enlarge your temp directory with a swap partition => see [openwrt wiki](https://wiki.openwrt.org/doc/uci/fstab) for further details
 * **add white- / blacklist entries:** add domain white- or blacklist entries to always-allow or -deny certain (sub) domains, by default both lists are empty and located in _/etc/adblock_. Please add one domain per line - ip addresses, wildcards & regex are _not_ allowed (see example below)
-* **backup & restore block lists:** enable this feature, to restore automatically the latest compressed backup of your block lists in case of any processing error (e.g. a single block list source is not available during update). Please use an (external) solid partition and _not_ your volatile router temp directory for this
+* **backup & restore blocklists:** enable this feature, to restore automatically the latest compressed backup of your blocklists in case of any processing error (e.g. a single blocklist source is not available during update). Please use an (external) solid partition and _not_ your volatile router temp directory for this
 * **scheduled list updates:** for a scheduled call of the adblock service add an appropriate crontab entry (see example below)
 * **change startup behaviour:** by default the startup will be triggered by the 'wan' procd interface trigger. Choose 'none' to disable automatic startups, 'timed' to use a classic timeout (default 30 sec.) or select another trigger interface.
 * **suspend & resume adblocking:** to quickly switch the adblock service 'on' or 'off', simply use _/etc/init.d/adblock [suspend|resume]_
-* **domain query:** to query the active block list for a specific domain, please run _/etc/init.d/adblock query `<DOMAIN>`_ (see example below)
-* **add new list sources:** you could add new block list sources on your own via uci config, all you need is a source url and an awk one-liner (see example below)
+* **domain query:** to query the active blocklist for a specific domain, please run _/etc/init.d/adblock query `<DOMAIN>`_ (see example below)
+* **add new list sources:** you could add new blocklist sources on your own via uci config, all you need is a source url and an awk one-liner (see example below)
 * **disable active dns probing in windows 10:** to prevent a yellow exclamation mark on your internet connection icon (which wrongly means connected, but no internet), please change the following registry key/value from "1" to "0" _HKLM\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet\EnableActiveProbing_
 
 ## Further adblock config options
@@ -126,70 +131,44 @@ A lot of people already use adblocker plugins within their desktop browsers, but
     * adb\_fetchparm => options for the download utility, see example below (default: not set, use wget default options)
     * adb\_forcedns => force dns requests to local resolver (default: '0', disabled)
     * adb\_forcesrt => force overall sort on low memory devices with less than 64 MB RAM (default: '0', disabled)
-    * adb\_manmode => do not automatically update block lists during startup, use backups instead (default: '0', disabled)
+    * adb\_backup_mode => do not automatically update blocklists during startup, use backups instead (default: '0', disabled)
+    * adb\_whitelist_mode => block access to all domains except those explicitly listed in the whitelist file (default: '0', disabled)
 
 ## Examples
 **change default dns backend to 'unbound':**  
 
-Adblock deposits the sorted and filtered block list (adb_list.overall) in '/var/lib/unbound' where unbound can find them in its jail.
-If you use manual configuration for unbound, then just include the following line in your 'server' clause:
+Adblock deposits the final blocklist 'adb_list.overall' in '/var/lib/unbound' where unbound can find them in its jail. If you use manual configuration for unbound, then just include the following line in your 'server' clause:
 <pre><code>
   include: "/var/lib/unbound/adb_list.overall"
 </code></pre>
   
 **change default dns backend to 'named' (bind):**  
 
-Adblock deposits the sorted and filtered block list (adb_list.overall) in '/var/lib/bind' where bind can find them.
-To use the block list please modify the following bind configuration files:
+Adblock deposits the final blocklist 'adb_list.overall' in '/var/lib/bind'. To use the blocklist please modify '/etc/bind/named.conf':
 <pre><code>
-change '/etc/bind/named.conf', in the 'options' namespace add:
+in the 'options' namespace add:
   response-policy { zone "rpz"; };
 
 and at the end of the file add:
   zone "rpz" {
     type master;
-    file "/etc/bind/db.rpz";
+    file "/var/lib/bind/adb_list.overall";
     allow-query { none; };
     allow-transfer { none; };
   };
-
-create the new file '/etc/bind/db.rpz' and add:
-  $TTL 2h
-  $ORIGIN rpz.
-  @ SOA localhost. root.localhost. (1 6h 1h 1w 2h)
-  NS localhost.
-
-  $INCLUDE /var/lib/bind/adb_list.overall
 </code></pre>
   
 **change default dns backend to 'kresd':**  
 
-The knot-resolver (kresd) is only available on turris omnia devices. Currently there's no package for kresd in the official LEDE / OpenWrt package repository.
-Adblock deposits the sorted and filtered block list (adb_list.overall) in '/etc/kresd' where kresd can find them.
-To use the block list please create/modify the following kresd configuration files:
+The knot-resolver (kresd) is only available on turris omnia devices. Adblock deposits the final blocklist 'adb_list.overall' in '/etc/kresd'. To use the blocklist please modify '/etc/config/resolver':
 <pre><code>
-TurrisOS > 3.6:
-  edit '/etc/config/resolver' and change / uncomment the following options:
-    forward_upstream '0'
     list rpz_file '/etc/kresd/adb_list.overall'
-
-TurrisOS < 3.6:
-  edit '/etc/config/resolver' and change / uncomment the following options:
-   forward_upstream '0'
-   option include_config '/etc/kresd/custom.conf'
-
-  create '/etc/kresd/custom.conf' and add:
-    policy.add(policy.rpz(policy.DENY, '/etc/kresd/adb_list.overall'))
-    policy.add(policy.all(policy.FORWARD({'8.8.8.8', '8.8.4.4'})))
 </code></pre>
   
 **change default dns backend to 'dnscrypt-proxy':**  
 
-Adblock deposits the sorted and filtered block list (adb_list.overall) by default in '/tmp' where DNSCrypt-Proxy can find them.
-The blacklist option is not supported by default, because DNSCrypt-Proxy is compiled without plugins support.
-Take a custom LEDE build with plugins support to use this feature:
+The required 'blacklist' option of dnscrypt-proxy is not enabled by default, because the package will be compiled without plugins support. Take a custom LEDE build with plugins support to use this feature. Adblock deposits the final blocklist 'adb_list.overall' in '/tmp'. To use the blocklist please modify '/etc/config/dnscrypt-proxy' per instance:
 <pre><code>
-edit '/etc/config/dnscrypt-proxy' and add the following option per dnscrypt-proxy instance:
   list blacklist 'domains:/tmp/adb_list.overall'
 </code></pre>
   
@@ -217,12 +196,12 @@ curl:
 /etc/init.d/adblock status
 ::: adblock runtime information
   + adblock_status  : enabled
-  + adblock_version : 3.0.0
-  + blocked_domains : 37406
+  + adblock_version : 3.1.0
+  + overall_domains : 5117
   + fetch_utility   : wget (built-in)
   + dns_backend     : kresd (/etc/kresd)
-  + last_rundate    : 08.09.2017 21:21:21
-  + system_release  : OpenWrt omnia 15.05
+  + last_rundate    : 03.11.2017 22:57:41
+  + system_release  : Turris Omnia, OpenWrt omnia 15.05/3.8.4
 </code></pre>
   
 **cronjob for a regular block list update (/etc/crontabs/root):**
@@ -248,7 +227,7 @@ This entry does not block:
 <pre><code>
 here.com
 
-This entry removes the following (sub)domains from the block list:
+This entry removes the following (sub)domains from the blocklist:
   maps.here.com
   here.com
 
@@ -257,51 +236,42 @@ This entry does not remove:
   www.adwhere.com
 </code></pre>
   
-**query active block list for a certain (sub-)domain, e.g. for whitelisting:**
+**query the active blocklist for a certain (sub-)domain, e.g. for whitelisting:**  
+
+The query function checks against the submitted (sub-)domain and recurses automatically to the upper top level domain. For every (sub-)domain it returns the first ten relevant results.
 <pre><code>
-/etc/init.d/adblock query example.www.doubleclick.net
-root@turris:~# /etc/init.d/adblock query example.www.doubleclick.net
-::: max. ten results for domain 'example.www.doubleclick.net'
+/etc/init.d/adblock query www.example.google.com
+::: max. ten results for domain 'www.example.google.com'
   - no match
-::: max. ten results for domain 'www.doubleclick.net'
+::: max. ten results for domain 'example.google.com'
   - no match
-::: max. ten results for domain 'doubleclick.net'
-  + doubleclick.net
-
-The query function checks against the submitted (sub-)domain and recurses automatically to the upper top level domain.
-For every (sub-)domain it returns the first ten relevant results.
-In the example above whitelist "doubleclick.net" to free the submitted domain.
+::: max. ten results for domain 'google.com'
+  + analytics.google.com
+  + googleadapis.l.google.com
+  + pagead.l.google.com
+  + partnerad.l.google.com
+  + ssl-google-analytics.l.google.com
+  + video-stats.video.google.com
+  + www-google-analytics.l.google.com
 </code></pre>
   
-**add a new block list source:**
-<pre><code>
-1. the easy way ...
-example: https://easylist-downloads.adblockplus.org/rolist+easylist.txt
-adblock already supports an easylist source, called 'ruadlist'. To add the additional local easylist
-as a new source, copy the existing config source 'ruadlist' section and change only
-the source name, the url and the description - that's all!
+**add a new blocklist source:**  
 
-config source 'rolist'
+1. the easy way ...  
+example: https://easylist-downloads.adblockplus.org/rolist+easylist.txt  
+Adblock already supports an easylist source, called 'reg_ru'. To add the additional local easylist as a new source, copy the existing config source section and change only
+the source name, the url and the description - that's all!
+<pre><code>
+config source 'reg_ro'
   option enabled '0'
   option adb_src 'https://easylist-downloads.adblockplus.org/rolist+easylist.txt'
-  option adb_src_rset '{FS=\"[|^]\"} \$0 ~/^\|\|([A-Za-z0-9_-]+\.){1,}[A-Za-z]+\^$/{print tolower(\$3)}'
-  option adb_src_desc 'focus on romanian ad related domains plus generic easylist additions, weekly updates, approx. 600 entries'
+  option adb_src_rset 'BEGIN{FS=\"[|^]\"}\$0~/^\|\|([[:alnum:]_-]+\.){1,}[[:alpha:]]+\^("\\\$third-party")?$/{print tolower(\$3)}'
+  option adb_src_desc 'focus on romanian ads plus generic easylist additions, weekly updates, approx. 9.400 entries'
+</code></pre>
 
-2. a bit harder ...
-to add a really new source with different domain/host format you have to write a suitable
-awk one-liner on your own, so basic awk skills are needed. As a starting point check the already
-existing awk strings (adb_src_rset) in adblock config, maybe you need only small changes for your individual list.
-Download the desired list and test your new awk string locally with:
-  cat new.list | awk 'fs__individual search__search core__result'
-  'fs' => field separator (optional)
-  'individual search' => individual search part to filter out needless list information
-  'search core' => always '([A-Za-z0-9_-]+\.){1,}[A-Za-z]+', this is part of all list sources and should be unchanged
-  'result' => always '{print tolower(\$n)}', only the output column 'n' may vary
-the output result should be a sequential list with one domain/host per line - nothing more.
+2. a bit harder ...  
+To add a really new source with different domain/host format you have to write a suitable awk one-liner on your own, so basic awk skills are needed. As a starting point check the already existing awk rulesets 'adb_src_rset' in the config file, probably you need only small changes for your individual list. Download the desired list and test your new awk string locally. The output result should be a sequential list with one domain/host per line - nothing more. If your awk one-liner works quite well, add a new source section to the adblock config file and test the new source.  
 
-If your awk one-liner works quite well, add a new source section in adblock config and test your new source
-</code></pre>
-  
 ## Support
 Please join the adblock discussion in this [forum thread](https://forum.lede-project.org/t/adblock-2-x-support-thread/507) or contact me by mail <dev@brenken.org>  
 
index f6ea48b6559c536fcc7c8ef0f34ef837d9d4c8df..da2f6fe3b8c572c9ca4daa0064355c9335ec97b4 100644 (file)
 
 config adblock 'global'
        option adb_enabled '0'
+       option adb_dns 'dnsmasq'
+       option adb_trigger 'wan'
+
+config adblock 'extra'
        option adb_debug '0'
        option adb_forcesrt '0'
        option adb_forcedns '0'
-       option adb_dns 'dnsmasq'
-       option adb_trigger 'wan'
-       option adb_whitelist '/etc/adblock/adblock.whitelist'
-       option adb_whitelist_rset '\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\"^\"\$1\"\\\|[.]\"\$1)}'
        option adb_backup '0'
-       option adb_backupdir '/mnt'
-       option adb_rtfile '/tmp/adb_runtime.json'
 
 config source 'adaway'
        option enabled '1'
        option adb_src 'https://adaway.org/hosts.txt'
-       option adb_src_rset '\$0 ~/^127\.0\.0\.1[ \t]+([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$2)}'
+       option adb_src_rset '\$0~/^127\.0\.0\.1[[:space:]]+([[:alnum:]_-]+\.){1,}[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
        option adb_src_desc 'focus on mobile ads, infrequent updates, approx. 400 entries'
 
 config source 'adguard'
        option enabled '0'
-       option adb_src 'https://raw.githubusercontent.com/AdguardTeam/AdguardDNS/master/Filters/filter.txt'
-       option adb_src_rset '{FS=\"[|^]\"} \$0 ~/^\|\|([A-Za-z0-9_-]+\.){1,}[A-Za-z]+\^$/{print tolower(\$3)}'
-       option adb_src_desc 'combined adguard dns filter list, approx. 12.000 entries'
+       option adb_src 'https://filters.adtidy.org/windows/filters/15.txt'
+       option adb_src_rset 'BEGIN{FS=\"[/|^|\r]\"}\$0~/^\|\|([[:alnum:]_-]+\.){1,}[[:alpha:]]+([\/\^\r]|$)/{print tolower(\$3)}'
+       option adb_src_desc 'combined adguard dns filter list, frequent updates, approx. 15.700 entries'
+
+config source 'bitcoin'
+       option enabled '0'
+       option adb_src 'https://raw.githubusercontent.com/hoshsadiq/adblock-nocoin-list/master/hosts.txt'
+       option adb_src_rset '\$0~/^0\.0\.0\.0[[:space:]]+([[:alnum:]_-]+\.){1,}[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
+       option adb_src_desc 'focus on malicious bitcoin mining sites, infrequent updates, approx. 20 entries'
 
 config source 'blacklist'
        option enabled '0'
        option adb_src '/etc/adblock/adblock.blacklist'
-       option adb_src_rset '\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
-       option adb_src_desc 'static local domain blacklist (always deny these domains)'
+       option adb_src_rset '\$0~/^([[:alnum:]_-]+\.){1,}[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
+       option adb_src_desc 'static local domain blacklist, always deny these domains'
 
 config source 'disconnect'
        option enabled '1'
        option adb_src 'https://s3.amazonaws.com/lists.disconnect.me/simple_malvertising.txt'
-       option adb_src_rset '\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
-       option adb_src_desc 'mozilla driven blocklist, numerous updates on the same day, approx. 6.500 entries'
+       option adb_src_rset '\$0~/^([[:alnum:]_-]+\.){1,}[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
+       option adb_src_desc 'mozilla driven blocklist, numerous updates on the same day, approx. 4.600 entries'
 
 config source 'dshield'
        option enabled '0'
        option adb_src 'https://www.dshield.org/feeds/suspiciousdomains_Low.txt'
-       option adb_src_rset '\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
-       option adb_src_desc 'generic blocklist, daily updates, approx. 4.500 entries'
+       option adb_src_rset '\$0~/^([[:alnum:]_-]+\.){1,}[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
+       option adb_src_desc 'generic blocklist, daily updates, approx. 3.500 entries'
 
 config source 'feodo'
        option enabled '0'
        option adb_src 'https://feodotracker.abuse.ch/blocklist/?download=domainblocklist'
-       option adb_src_rset '\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
+       option adb_src_rset '\$0~/^([[:alnum:]_-]+\.){1,}[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
        option adb_src_desc 'focus on feodo botnet, daily updates, approx. 0-10 entries'
 
 config source 'hphosts'
        option enabled '0'
        option adb_src 'https://hosts-file.net/ad_servers.txt'
-       option adb_src_rset '\$0 ~/^127\.0\.0\.1[ \t]+([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$2)}'
-       option adb_src_desc 'broad blocklist, monthly updates, approx. 50.000 entries'
+       option adb_src_rset '\$0~/^127\.0\.0\.1[[:space:]]+([[:alnum:]_-]+\.){1,}[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
+       option adb_src_desc 'broad blocklist, monthly updates, approx. 19.200 entries'
 
 config source 'malware'
        option enabled '0'
        option adb_src 'https://mirror.cedia.org.ec/malwaredomains/justdomains'
-       option adb_src_rset '\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
-       option adb_src_desc 'broad blocklist, daily updates, approx. 16.000 entries'
+       option adb_src_rset '\$0~/^([[:alnum:]_-]+\.){1,}[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
+       option adb_src_desc 'broad blocklist, daily updates, approx. 18.300 entries'
 
 config source 'malwarelist'
        option enabled '0'
        option adb_src 'http://www.malwaredomainlist.com/hostslist/hosts.txt'
-       option adb_src_rset '\$0 ~/^127\.0\.0\.1[ \t]+([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$2)}'
-       option adb_src_desc 'focus on malware, daily updates, approx. 1.500 entries'
+       option adb_src_rset '\$0~/^127\.0\.0\.1[[:space:]]+([[:alnum:]_-]+\.){1,}[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
+       option adb_src_desc 'focus on malware, daily updates, approx. 1.200 entries'
 
 config source 'openphish'
        option enabled '0'
        option adb_src 'https://openphish.com/feed.txt'
-       option adb_src_rset '{FS=\"/\"} \$3 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$3)}'
-       option adb_src_desc 'focus on phishing, numerous updates on the same day, approx. 1.800 entries'
+       option adb_src_rset 'BEGIN{FS=\"/\"}\$0~/^http[s]?:\/\/([[:alnum:]_-]+\.){1,}[[:alpha:]]+(\/|$)/{print tolower(\$3)}'
+       option adb_src_desc 'focus on phishing, numerous updates on the same day, approx. 2.400 entries'
 
 config source 'ransomware'
        option enabled '0'
        option adb_src 'https://ransomwaretracker.abuse.ch/downloads/RW_DOMBL.txt'
-       option adb_src_rset '\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
-       option adb_src_desc 'focus on ransomware, numerous updates on the same day, approx. 130 entries'
+       option adb_src_rset '\$0~/^([[:alnum:]_-]+\.){1,}[[:alpha:]]+([[:space:]]|\r|$)/{print tolower(\$1)}'
+       option adb_src_desc 'focus on ransomware, numerous updates on the same day, approx. 1900 entries'
 
 config source 'reg_cn'
        option enabled '0'
        option adb_src 'https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt'
-       option adb_src_rset '{FS=\"[|^]\"} \$0 ~/^\|\|([A-Za-z0-9_-]+\.){1,}[A-Za-z]+\^$/{print tolower(\$3)}'
-       option adb_src_desc 'focus on chinese ads, daily updates, approx. 1.600 entries'
+       option adb_src_rset 'BEGIN{FS=\"[|^]\"}\$0~/^\|\|([[:alnum:]_-]+\.){1,}[[:alpha:]]+\^("\\\$third-party")?$/{print tolower(\$3)}'
+       option adb_src_desc 'focus on chinese ads plus generic easylist additions, daily updates, approx. 11.700 entries'
+
+config source 'reg_de'
+       option enabled '0'
+       option adb_src 'https://easylist-downloads.adblockplus.org/easylistgermany+easylist.txt'
+       option adb_src_rset 'BEGIN{FS=\"[|^]\"}\$0~/^\|\|([[:alnum:]_-]+\.){1,}[[:alpha:]]+\^("\\\$third-party")?$/{print tolower(\$3)}'
+       option adb_src_desc 'focus on german ads plus generic easylist additions, daily updates, approx. 9.200 entries'
 
 config source 'reg_id'
        option enabled '0'
        option adb_src 'https://easylist-downloads.adblockplus.org/abpindo+easylist.txt'
-       option adb_src_rset '{FS=\"[|^]\"} \$0 ~/^\|\|([A-Za-z0-9_-]+\.){1,}[A-Za-z]+\^$/{print tolower(\$3)}'
-       option adb_src_desc 'focus on indonesian ads plus generic easylist additions, weekly updates, approx. 800 entries'
+       option adb_src_rset 'BEGIN{FS=\"[|^]\"}\$0~/^\|\|([[:alnum:]_-]+\.){1,}[[:alpha:]]+\^("\\\$third-party")?$/{print tolower(\$3)}'
+       option adb_src_desc 'focus on indonesian ads plus generic easylist additions, weekly updates, approx. 9.600 entries'
 
 config source 'reg_nl'
        option enabled '0'
        option adb_src 'https://easylist-downloads.adblockplus.org/easylistdutch+easylist.txt'
-       option adb_src_rset '{FS=\"[|^]\"} \$0 ~/^\|\|([A-Za-z0-9_-]+\.){1,}[A-Za-z]+\^$/{print tolower(\$3)}'
-       option adb_src_desc 'focus on dutch ads plus generic easylist additions, weekly updates, approx. 1300 entries'
+       option adb_src_rset 'BEGIN{FS=\"[|^]\"}\$0~/^\|\|([[:alnum:]_-]+\.){1,}[[:alpha:]]+\^("\\\$third-party")?$/{print tolower(\$3)}'
+       option adb_src_desc 'focus on dutch ads plus generic easylist additions, weekly updates, approx. 9.400 entries'
 
 config source 'reg_pl'
        option enabled '0'
        option adb_src 'http://adblocklist.org/adblock-pxf-polish.txt'
-       option adb_src_rset '{FS=\"[|^]\"} \$0 ~/^\|\|([A-Za-z0-9_-]+\.){1,}[A-Za-z]+\^$/{print tolower(\$3)}'
-       option adb_src_desc 'focus on polish ads, daily updates, approx. 50 entries'
+       option adb_src_rset 'BEGIN{FS=\"[|^]\"}\$0~/^\|\|([[:alnum:]_-]+\.){1,}[[:alpha:]]+\^("\\\$third-party")?$/{print tolower(\$3)}'
+       option adb_src_desc 'focus on polish ads, daily updates, approx. 90 entries'
 
 config source 'reg_ro'
        option enabled '0'
        option adb_src 'https://easylist-downloads.adblockplus.org/rolist+easylist.txt'
-       option adb_src_rset '{FS=\"[|^]\"} \$0 ~/^\|\|([A-Za-z0-9_-]+\.){1,}[A-Za-z]+\^$/{print tolower(\$3)}'
-       option adb_src_desc 'focus on romanian ads plus generic easylist additions, weekly updates, approx. 600 entries'
+       option adb_src_rset 'BEGIN{FS=\"[|^]\"}\$0~/^\|\|([[:alnum:]_-]+\.){1,}[[:alpha:]]+\^("\\\$third-party")?$/{print tolower(\$3)}'
+       option adb_src_desc 'focus on romanian ads plus generic easylist additions, weekly updates, approx. 9.400 entries'
 
 config source 'reg_ru'
        option enabled '0'
        option adb_src 'https://easylist-downloads.adblockplus.org/ruadlist+easylist.txt'
-       option adb_src_rset '{FS=\"[|^]\"} \$0 ~/^\|\|([A-Za-z0-9_-]+\.){1,}[A-Za-z]+\^$/{print tolower(\$3)}'
-       option adb_src_desc 'focus on russian ads plus generic easylist additions, weekly updates, approx. 2.000 entries'
+       option adb_src_rset 'BEGIN{FS=\"[|^]\"}\$0~/^\|\|([[:alnum:]_-]+\.){1,}[[:alpha:]]+\^("\\\$third-party")?$/{print tolower(\$3)}'
+       option adb_src_desc 'focus on russian ads plus generic easylist additions, weekly updates, approx. 14.500 entries'
 
 config source 'securemecca'
        option enabled '0'
        option adb_src 'http://securemecca.com/Downloads/hosts.txt'
-       option adb_src_rset '\$0 ~/^127\.0\.0\.1[ \t]+([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$2)}'
-       option adb_src_desc 'broad blocklist, infrequent updates, approx. 25.000 entries'
+       option adb_src_rset '\$0~/^127\.0\.0\.1[[:space:]]+([[:alnum:]_-]+\.){1,}[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
+       option adb_src_desc 'broad blocklist, infrequent updates, approx. 13.700 entries'
 
 config source 'shalla'
        option enabled '0'
        option adb_src 'http://www.shallalist.de/Downloads/shallalist.tar.gz'
-       option adb_src_rset '{FS=\"/\"} \$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
-       option adb_src_desc 'broad blocklist subdivided in different categories, daily updates, approx. 32.000 entries'
+       option adb_src_rset '\$0~/^([[:alnum:]_-]+\.){1,}[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
+       option adb_src_desc 'broad blocklist subdivided in different categories, daily updates, approx. 31.700 entries'
        list adb_src_cat 'adv'
        list adb_src_cat 'costtraps'
        list adb_src_cat 'spyware'
@@ -136,41 +146,41 @@ config source 'shalla'
 config source 'spam404'
        option enabled '0'
        option adb_src 'https://raw.githubusercontent.com/Dawsey21/Lists/master/main-blacklist.txt'
-       option adb_src_rset '\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
-       option adb_src_desc 'generic blocklist, infrequent updates, approx. 5.000 entries'
+       option adb_src_rset '\$0~/^([[:alnum:]_-]+\.){1,}[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
+       option adb_src_desc 'generic blocklist, infrequent updates, approx. 6.000 entries'
 
 config source 'sysctl' 
        option enabled '0'
        option adb_src 'http://sysctl.org/cameleon/hosts'
-       option adb_src_rset '\$0 ~/^127\.0\.0\.1[ \t]+([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$2)}'
-       option adb_src_desc 'broad blocklist, weekly updates, approx. 21.000 entries'
+       option adb_src_rset '\$0~/^127\.0\.0\.1[[:space:]]+([[:alnum:]_-]+\.){1,}[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
+       option adb_src_desc 'broad blocklist, weekly updates, approx. 16.500 entries'
 
 config source 'whocares'
        option enabled '0'
        option adb_src 'http://someonewhocares.org/hosts/hosts'
-       option adb_src_rset '\$0 ~/^127\.0\.0\.1[ \t]+([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$2)}'
-       option adb_src_desc 'broad blocklist, weekly updates, approx. 12.000 entries'
+       option adb_src_rset '\$0~/^127\.0\.0\.1[[:space:]]+([[:alnum:]_-]+\.){1,}[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
+       option adb_src_desc 'broad blocklist, weekly updates, approx. 10.000 entries'
 
 config source 'winspy'
        option enabled '0'
        option adb_src 'https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/win10/spy.txt'
-       option adb_src_rset '\$0 ~/^0\.0\.0\.0[ \t]+([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$2)}'
-       option adb_src_desc 'focus on windows spy & telemetry, infrequent updates, approx. 140 entries'
+       option adb_src_rset '\$0~/^0\.0\.0\.0[[:space:]]+([[:alnum:]_-]+\.){1,}[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
+       option adb_src_desc 'focus on windows spy & telemetry domains, infrequent updates, approx. 300 entries'
 
 config source 'winhelp'
        option enabled '0'
        option adb_src 'http://winhelp2002.mvps.org/hosts.txt'
-       option adb_src_rset '\$0 ~/^0\.0\.0\.0[ \t]+([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$2)}'
-       option adb_src_desc 'broad blocklist, infrequent updates, approx. 15.000 entries'
+       option adb_src_rset '\$0~/^0\.0\.0\.0[[:space:]]+([[:alnum:]_-]+\.){1,}[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
+       option adb_src_desc 'broad blocklist, infrequent updates, approx. 13.000 entries'
 
 config source 'yoyo'
        option enabled '1'
        option adb_src 'https://pgl.yoyo.org/adservers/serverlist.php?hostformat=nohtml&showintro=0&mimetype=plaintext'
-       option adb_src_rset '\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
-       option adb_src_desc 'focus on ad related domains, weekly updates, approx. 2.500 entries'
+       option adb_src_rset '\$0~/^([[:alnum:]_-]+\.){1,}[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
+       option adb_src_desc 'focus on ad related domains, weekly updates, approx. 2.400 entries'
 
 config source 'zeus'
        option enabled '0'
        option adb_src 'https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist'
-       option adb_src_rset '\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\$1)}'
-       option adb_src_desc 'focus on zeus botnet, daily updates, approx. 440 entries'
+       option adb_src_rset '\$0~/^([[:alnum:]_-]+\.){1,}[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
+       option adb_src_desc 'focus on zeus botnet, daily updates, approx. 400 entries'
index 6eb36fa58cec7a59a505e7304e5341148a0f097d..209fc00fece3037827c9786c85e190a28d8a49fc 100755 (executable)
 #
 LC_ALL=C
 PATH="/usr/sbin:/usr/bin:/sbin:/bin"
-adb_ver="3.0.2"
+adb_ver="3.1.1"
 adb_sysver="unknown"
 adb_enabled=0
 adb_debug=0
-adb_manmode=0
+adb_backup_mode=0
+adb_whitelist_mode=0
 adb_forcesrt=0
 adb_forcedns=0
 adb_triggerdelay=0
@@ -25,7 +26,9 @@ adb_fetchparm="--quiet --no-cache --no-cookies --max-redirect=0 --timeout=10 --n
 adb_dns="dnsmasq"
 adb_dnsprefix="adb_list"
 adb_dnsfile="${adb_dnsprefix}.overall"
+adb_whitelist="/etc/adblock/adblock.whitelist"
 adb_rtfile="/tmp/adb_runtime.json"
+adb_hashsum="$(command -v sha256sum)"
 adb_action="${1:-"start"}"
 adb_cnt=0
 adb_rc=0
@@ -61,7 +64,7 @@ f_envload()
         f_log "error" "system libraries not found"
     fi
 
-    # parse global section by callback
+    # parse 'global' and 'extra' section by callback
     #
     config_cb()
     {
@@ -79,7 +82,7 @@ f_envload()
         fi
     }
 
-    # parse 'source' sections
+    # parse 'source' typed sections
     #
     parse_config()
     {
@@ -104,33 +107,69 @@ f_envload()
     #
     case "${adb_dns}" in
         dnsmasq)
-            adb_dnsuser="${adb_dns}"
+            adb_dnsuser="${adb_dnsuser:-"dnsmasq"}"
             adb_dnsdir="${adb_dnsdir:-"/tmp/dnsmasq.d"}"
             adb_dnsformat="awk '{print \"local=/\"\$0\"/\"}'"
+            if [ ${adb_whitelist_mode} -eq 1 ]
+            then
+                adb_dnsformat="awk '{print \"local=/\"\$0\"/#\"}'"
+                adb_dnsblock="local=/#/"
+            fi
             ;;
         unbound)
-            adb_dnsuser="${adb_dns}"
+            adb_dnsuser="${adb_dnsuser:-"unbound"}"
             adb_dnsdir="${adb_dnsdir:-"/var/lib/unbound"}"
             adb_dnsformat="awk '{print \"local-zone: \042\"\$0\"\042 static\"}'"
+            if [ ${adb_whitelist_mode} -eq 1 ]
+            then
+                adb_dnsformat="awk '{print \"local-zone: \042\"\$0\"\042 transparent\"}'"
+                adb_dnsblock="local-zone: \".\" static"
+            fi
             ;;
         named)
-            adb_dnsuser="bind"
+            adb_dnsuser="${adb_dnsuser:-"bind"}"
             adb_dnsdir="${adb_dnsdir:-"/var/lib/bind"}"
-            adb_dnsformat="awk '{print \"\"\$0\" IN CNAME .\n*.\"\$0\" IN CNAME .\"}'"
+            adb_dnsheader="\$TTL 2h"$'\n'"@ IN SOA localhost. root.localhost. (1 6h 1h 1w 2h)"$'\n'"  IN NS localhost."
+            adb_dnsformat="awk '{print \"\"\$0\" CNAME .\n*.\"\$0\" CNAME .\"}'"
+            if [ ${adb_whitelist_mode} -eq 1 ]
+            then
+                adb_dnsformat="awk '{print \"\"\$0\" CNAME rpz-passthru.\n*.\"\$0\" CNAME rpz-passthru.\"}'"
+                adb_dnsblock="* CNAME ."
+            fi
             ;;
         kresd)
-            adb_dnsuser="root"
+            adb_dnsuser="${adb_dnsuser:-"root"}"
             adb_dnsdir="${adb_dnsdir:-"/etc/kresd"}"
+            adb_dnsheader="\$TTL 2h"$'\n'"@ IN SOA localhost. root.localhost. (1 6h 1h 1w 2h)"$'\n'"  IN NS  localhost."
             adb_dnsformat="awk '{print \"\"\$0\" CNAME .\n*.\"\$0\" CNAME .\"}'"
-            adb_dnsheader="\$TTL 2h"$'\n'"@ IN SOA localhost. root.localhost. (2 6h 1h 1w 2h)"$'\n'"  IN NS  localhost."
+            if [ ${adb_whitelist_mode} -eq 1 ]
+            then
+                adb_dnsformat="awk '{print \"\"\$0\" CNAME rpz-passthru.\n*.\"\$0\" CNAME rpz-passthru.\"}'"
+                adb_dnsblock="* CNAME ."
+            fi
             ;;
         dnscrypt-proxy)
-            adb_dnsuser="nobody"
+            adb_dnsuser="${adb_dnsuser:-"nobody"}"
             adb_dnsdir="${adb_dnsdir:-"/tmp"}"
             adb_dnsformat="awk '{print \$0}'"
             ;;
     esac
 
+    # check adblock status
+    #
+    if [ ${adb_enabled} -eq 0 ]
+    then
+        if [ -s "${adb_dnsdir}/${adb_dnsfile}" ]
+        then
+            f_rmdns
+            f_dnsrestart
+        fi
+        f_extconf
+        f_jsnupdate
+        f_log "info " "adblock is currently disabled, please set adb_enabled to '1' to use this service"
+        exit 0
+    fi
+
     if [ -d "${adb_dnsdir}" ] && [ ! -f "${adb_dnsdir}/${adb_dnsfile}" ]
     then
         > "${adb_dnsdir}/${adb_dnsfile}"
@@ -161,30 +200,6 @@ f_envload()
     then
         f_log "error" "'${adb_dns}' not running, DNS backend not found"
     fi
-
-    # force dns to local resolver
-    #
-    if [ ${adb_forcedns} -eq 1 ] && [ -z "$(uci -q get firewall.adblock_dns)" ]
-    then
-        uci -q set firewall.adblock_dns="redirect"
-        uci -q set firewall.adblock_dns.name="Adblock DNS"
-        uci -q set firewall.adblock_dns.src="lan"
-        uci -q set firewall.adblock_dns.proto="tcp udp"
-        uci -q set firewall.adblock_dns.src_dport="53"
-        uci -q set firewall.adblock_dns.dest_port="53"
-        uci -q set firewall.adblock_dns.target="DNAT"
-    elif [ ${adb_forcedns} -eq 0 ] && [ -n "$(uci -q get firewall.adblock_dns)" ]
-    then
-        uci -q delete firewall.adblock_dns
-    fi
-    if [ -n "$(uci -q changes firewall)" ]
-    then
-        uci -q commit firewall
-        if [ $(/etc/init.d/firewall enabled; printf "%u" ${?}) -eq 0 ]
-        then
-            /etc/init.d/firewall reload >/dev/null 2>&1
-        fi
-    fi
 }
 
 # f_envcheck: check/set environment prerequisites
@@ -193,19 +208,9 @@ f_envcheck()
 {
     local ssl_lib
 
-    # check 'enabled' option
+    # check external uci config files
     #
-    if [ ${adb_enabled} -ne 1 ]
-    then
-        if [ -s "${adb_dnsdir}/${adb_dnsfile}" ]
-        then
-            f_rmdns
-            f_dnsrestart
-        fi
-        f_jsnupdate
-        f_log "info " "adblock is currently disabled, please set adb_enabled to '1' to use this service"
-        exit 0
-    fi
+    f_extconf
 
     # check fetch utility
     #
@@ -241,17 +246,64 @@ f_envcheck()
     fi
     adb_fetchinfo="${adb_fetch##*/} (${ssl_lib})"
 
-    # create adblock temp file/directory
+    # check hashsum utility
+    #
+    if [ ! -x "${adb_hashsum}" ]
+    then
+        adb_hashsum="$(command -v md5sum)"
+    fi
+
+    # initialize temp files and directories
     #
     adb_tmpload="$(mktemp -tu)"
     adb_tmpfile="$(mktemp -tu)"
     adb_tmpdir="$(mktemp -p /tmp -d)"
+    > "${adb_tmpdir}/tmp.whitelist"
+}
 
-    # prepare whitelist entries
+# f_extconf: set external config options
+#
+f_extconf()
+{
+    # kresd related options
     #
-    if [ -s "${adb_whitelist}" ] && [ -n "${adb_whitelist_rset}" ]
+    if [ "${adb_dns}" = "kresd" ]
     then
-        awk "${adb_whitelist_rset}" "${adb_whitelist}" > "${adb_tmpdir}/tmp.whitelist"
+        if [ ${adb_enabled} -eq 1 ] && [ -z "$(uci -q get resolver.kresd.rpz_file | grep -Fo "${adb_dnsdir}/${adb_dnsfile}")" ]
+        then
+            uci -q add_list resolver.kresd.rpz_file="${adb_dnsdir}/${adb_dnsfile}"
+        elif [ ${adb_enabled} -eq 0 ] && [ -n "$(uci -q get resolver.kresd.rpz_file | grep -Fo "${adb_dnsdir}/${adb_dnsfile}")" ]
+        then
+            uci -q del_list resolver.kresd.rpz_file="${adb_dnsdir}/${adb_dnsfile}"
+        fi
+        if [ -n "$(uci -q changes resolver)" ]
+        then
+            uci -q commit resolver
+        fi
+    fi
+
+    # firewall related options
+    #
+    if [ ${adb_enabled} -eq 1 ] && [ ${adb_forcedns} -eq 1 ] && [ -z "$(uci -q get firewall.adblock_dns)" ]
+    then
+        uci -q set firewall.adblock_dns="redirect"
+        uci -q set firewall.adblock_dns.name="Adblock DNS"
+        uci -q set firewall.adblock_dns.src="lan"
+        uci -q set firewall.adblock_dns.proto="tcp udp"
+        uci -q set firewall.adblock_dns.src_dport="53"
+        uci -q set firewall.adblock_dns.dest_port="53"
+        uci -q set firewall.adblock_dns.target="DNAT"
+    elif [ -n "$(uci -q get firewall.adblock_dns)" ] && ([ ${adb_enabled} -eq 0 ] || [ ${adb_forcedns} -eq 0 ])
+    then
+        uci -q delete firewall.adblock_dns
+    fi
+    if [ -n "$(uci -q changes firewall)" ]
+    then
+        uci -q commit firewall
+        if [ $(/etc/init.d/firewall enabled; printf "%u" ${?}) -eq 0 ]
+        then
+            /etc/init.d/firewall reload >/dev/null 2>&1
+        fi
     fi
 }
 
@@ -300,7 +352,7 @@ f_dnsrestart()
     return 1
 }
 
-# f_list: backup/restore/remove block lists
+# f_list: backup/restore/remove blocklists
 #
 f_list()
 {
@@ -388,13 +440,14 @@ f_switch()
     then
         cat "${source}" > "${target}"
         > "${source}"
+        chown "${adb_dnsuser}" "${target}" 2>/dev/null
         f_dnsrestart
         f_jsnupdate
         f_log "info " "adblock processing ${status}"
     fi
 }
 
-# f_query: query block list for certain (sub-)domains
+# f_query: query blocklist for certain (sub-)domains
 #
 f_query()
 {
@@ -404,7 +457,7 @@ f_query()
 
     if [ ! -s "${adb_dnsdir}/${adb_dnsfile}" ]
     then
-         printf "%s\n" "::: no active block list found, please start / resume adblock first"
+         printf "%s\n" "::: no active blocklist found, please start / resume adblock first"
     elif [ -z "${domain}" ] || [ "${domain}" = "${tld}" ]
     then
         printf "%s\n" "::: invalid domain input, please submit a single domain, e.g. 'doubleclick.net'"
@@ -417,7 +470,7 @@ f_query()
             then
                 result="$(awk -F '/|\"' "/[\/\"\.]${search}/{i++;{printf(\"  + %s\n\",\$2)};if(i>9){exit}}" "${adb_dnsfile}")"
             else
-                result="$(awk "/(^[^\*][a-z]*[\.]+${search}|^${search})/{i++;{printf(\"  + %s\n\",\$1)};if(i>9){exit}}" "${adb_dnsfile}")"
+                result="$(awk "/(^[^\*][[:alpha:]]*[\.]+${search}|^${search})/{i++;{printf(\"  + %s\n\",\$1)};if(i>9){exit}}" "${adb_dnsfile}")"
             fi
             printf "%s\n" "::: max. ten results for domain '${domain}'"
             printf "%s\n" "${result:-"  - no match"}"
@@ -436,7 +489,7 @@ f_jsnupdate()
     if [ ${adb_rc} -gt 0 ]
     then
         status="error"
-    elif [ ${adb_enabled} -ne 1 ]
+    elif [ ${adb_enabled} -eq 0 ]
     then
         status="disabled"
     elif [ -s "${adb_dnsdir}/.${adb_dnsfile}" ]
@@ -450,7 +503,7 @@ f_jsnupdate()
             then
                 adb_cnt="$(( ( $(wc -l < "${adb_dnsdir}/${adb_dnsfile}") - $(printf "%s" "${adb_dnsheader}" | grep -c "^") ) / 2 ))"
             else
-                adb_cnt="$(( $(wc -l < "${adb_dnsdir}/${adb_dnsfile}") - $(printf "%s" "${adb_dnsheader}" | grep -c "^") ))"
+                adb_cnt="$(wc -l < "${adb_dnsdir}/${adb_dnsfile}")"
             fi
         fi
     fi
@@ -466,7 +519,7 @@ f_jsnupdate()
     json_add_object "data"
     json_add_string "adblock_status" "${status}"
     json_add_string "adblock_version" "${adb_ver}"
-    json_add_string "blocked_domains" "${adb_cnt}"
+    json_add_string "overall_domains" "${adb_cnt}"
     json_add_string "fetch_utility" "${adb_fetchinfo}"
     json_add_string "dns_backend" "${adb_dns} (${adb_dnsdir})"
     json_add_string "last_rundate" "${rundate}"
@@ -520,7 +573,7 @@ f_log()
     fi
 }
 
-# main function for block list processing
+# main function for blocklist processing
 #
 f_main()
 {
@@ -528,8 +581,48 @@ f_main()
     local mem_total="$(awk '/^MemTotal/ {print int($2/1000)}' "/proc/meminfo")"
 
     f_log "info " "start adblock processing ..."
-    f_log "debug" "action: ${adb_action}, manual_mode:${adb_manmode}, backup: ${adb_backup}, dns: ${adb_dns}, fetch: ${adb_fetchinfo}, mem_total: ${mem_total}, force_srt/_dns: ${adb_forcesrt}/${adb_forcedns}"
+    f_log "debug" "action: ${adb_action}, dns: ${adb_dns}, fetch: ${adb_fetchinfo}, hashsum: ${adb_hashsum}, backup: ${adb_backup}, backup_mode: ${adb_backup_mode}, whitelist_mode: ${adb_whitelist_mode}, force_srt/_dns: ${adb_forcesrt}/${adb_forcedns}, mem_total: ${mem_total}"
     > "${adb_rtfile}"
+    > "${adb_dnsdir}/.${adb_dnsfile}"
+
+    # prepare whitelist entries
+    #
+    if [ -s "${adb_whitelist}" ]
+    then
+        if [ ${adb_whitelist_mode} -eq 1 ] && [ "${adb_dns}" != "dnscrypt-proxy" ]
+        then
+            adb_whitelist_rset="\$0~/^([[:alnum:]_-]+\.){1,}[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}"
+        else
+            adb_whitelist_rset="\$0~/^([[:alnum:]_-]+\.){1,}[[:alpha:]]+([[:space:]]|$)/{gsub(\"\\\.\",\"\\\.\",\$1);print tolower(\"^\"\$1\"\\\|\\\.\"\$1)}"
+        fi
+        awk "${adb_whitelist_rset}" "${adb_whitelist}" > "${adb_tmpdir}/tmp.whitelist"
+    fi
+
+    # whitelist mode
+    #
+    if [ ${adb_whitelist_mode} -eq 1 ] && [ "${adb_dns}" != "dnscrypt-proxy" ]
+    then
+        f_tldcompression "${adb_tmpdir}/tmp.whitelist"
+        eval "${adb_dnsformat}" "${adb_tmpdir}/tmp.whitelist" > "${adb_dnsdir}/${adb_dnsfile}"
+        printf '%s\n' "${adb_dnsblock}" >> "${adb_dnsdir}/${adb_dnsfile}"
+        if [ -n "${adb_dnsheader}" ]
+        then
+            printf '%s\n' "${adb_dnsheader}" | cat - "${adb_dnsdir}/${adb_dnsfile}" > "${adb_tmpdir}/${adb_dnsfile}"
+            cat "${adb_tmpdir}/${adb_dnsfile}" > "${adb_dnsdir}/${adb_dnsfile}"
+        fi
+        f_dnsrestart
+        if [ ${?} -eq 0 ]
+        then
+            f_jsnupdate "${adb_cnt}"
+            f_log "info " "whitelist with overall ${adb_cnt} domains loaded successfully (${adb_sysver})"
+        else
+            f_log "error" "dns backend restart with active whitelist failed"
+        fi
+        return
+    fi
+
+    # normal & backup mode
+    #
     for src_name in ${adb_sources}
     do
         eval "enabled=\"\${enabled_${src_name}}\""
@@ -548,9 +641,9 @@ f_main()
             continue
         fi
 
-        # manual / backup mode
+        # backup mode
         #
-        if [ ${adb_manmode} -eq 1 ] && [ "${adb_action}" = "start" ] && [ "${src_name}" != "blacklist" ]
+        if [ ${adb_backup_mode} -eq 1 ] && [ "${adb_action}" = "start" ] && [ "${src_name}" != "blacklist" ]
         then
             f_list restore
             if [ ${adb_rc} -eq 0 ] && [ -s "${adb_tmpfile}" ]
@@ -560,7 +653,7 @@ f_main()
             fi
         fi
 
-        # download block list
+        # download blocklist
         #
         if [ "${src_name}" = "blacklist" ] && [ -s "${url}" ]
         then
@@ -625,9 +718,9 @@ f_main()
 
     # hash preparation, whitelist removal and overall sort
     #
-    if [ -f "${adb_dnsdir}/${adb_dnsfile}" ]
+    if [ -x "${adb_hashsum}" ] && [ -f "${adb_dnsdir}/${adb_dnsfile}" ]
     then
-        hash_old="$(sha256sum "${adb_dnsdir}/${adb_dnsfile}" 2>/dev/null | awk '{print $1}')"
+        hash_old="$(${adb_hashsum} "${adb_dnsdir}/${adb_dnsfile}" 2>/dev/null | awk '{print $1}')"
     fi
     if [ -s "${adb_tmpdir}/${adb_dnsfile}" ]
     then
@@ -644,7 +737,10 @@ f_main()
 
     # conditional restart of the dns backend and runtime information export
     #
-    hash_new="$(sha256sum "${adb_dnsdir}/${adb_dnsfile}" 2>/dev/null | awk '{print $1}')"
+    if [ -x "${adb_hashsum}" ] && [ -f "${adb_dnsdir}/${adb_dnsfile}" ]
+    then
+        hash_new="$(${adb_hashsum} "${adb_dnsdir}/${adb_dnsfile}" 2>/dev/null | awk '{print $1}')"
+    fi
     if [ -z "${hash_old}" ] || [ -z "${hash_new}" ] || [ "${hash_old}" != "${hash_new}" ]
     then
         f_dnsrestart
@@ -652,9 +748,9 @@ f_main()
     if [ ${?} -eq 0 ]
     then
         f_jsnupdate "${adb_cnt}"
-        f_log "info " "block list with overall ${adb_cnt} domains loaded successfully (${adb_sysver})"
+        f_log "info " "blocklist with overall ${adb_cnt} domains loaded successfully (${adb_sysver})"
     else
-        f_log "error" "dns backend restart with active block list failed"
+        f_log "error" "dns backend restart with active blocklist failed"
     fi
 }
 
diff --git a/net/apache/Config.in b/net/apache/Config.in
new file mode 100644 (file)
index 0000000..5eb42b3
--- /dev/null
@@ -0,0 +1,11 @@
+menu "Configuration"
+        depends on PACKAGE_apache
+
+config APACHE_HTTP2
+        bool
+        prompt "Enable HTTP2"
+        help
+                Enable HTTPS2 support.
+        default n
+
+endmenu
index 098e2befbf6eba6eeac89ae1bf1b4b1a6c496f89..9b13383469eef097c07a2b3276e9b99be2a16ae8 100644 (file)
@@ -8,20 +8,31 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=apache
-PKG_VERSION:=2.4.27
-PKG_RELEASE:=1
+PKG_VERSION:=2.4.28
+PKG_RELEASE:=2
 PKG_SOURCE_NAME:=httpd
 PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
 PKG_LICENSE:=Apache License
 
 PKG_SOURCE:=$(PKG_SOURCE_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=@APACHE/httpd/
-PKG_HASH:=71fcc128238a690515bd8174d5330a5309161ef314a326ae45c7c15ed139c13a
+PKG_HASH:=c1197a3a62a4ab5c584ab89b249af38cf28b4adee9c0106b62999fd29f920666
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_NAME)-$(PKG_VERSION)
 
 PKG_INSTALL:=1
 
+PKG_CONFIG_DEPENDS := \
+       CONFIG_APACHE_HTTP2
+
+ADDITIONAL_MODULES:=
+ifeq ($(CONFIG_APACHE_HTTP2),y)
+  ADDITIONAL_MODULES += --enable-http2
+endif
+ifneq ($(CONFIG_APACHE_HTTP2),y)
+  ADDITIONAL_MODULES += --enable-http2=no
+endif
+
 include $(INCLUDE_DIR)/package.mk
 
 define Package/apache/Default
@@ -38,9 +49,13 @@ define Package/apache/Default/description
  Server, it has grown to be the most popular web server on the Internet.
 endef
 
+define Package/apache/config
+  source "$(SOURCE)/Config.in"
+endef
+
 define Package/apache
 $(call Package/apache/Default)
-  DEPENDS:=+libapr +libaprutil +libpcre +libopenssl +unixodbc +zlib
+  DEPENDS:=+libapr +libaprutil +libpcre +libopenssl +unixodbc +zlib +APACHE_HTTP2:libnghttp2
 endef
 
 define Package/apache/description
@@ -90,13 +105,14 @@ endef
 
 TARGET_CFLAGS += $(FPIC)
 TARGET_CPPFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
-TARGET_LDFLAGS += -lpthread 
+TARGET_LDFLAGS += -lpthread
 
 define Build/Configure
        $(call Build/Configure/Default, \
                --with-apr="$(STAGING_DIR)/usr/bin/apr-1-config" \
                --with-apr-util="$(STAGING_DIR)/usr/bin/apu-1-config" \
                --with-pcre="$(STAGING_DIR)/usr/bin/pcre-config" \
+               $(ADDITIONAL_MODULES) \
                --enable-http \
                --with-crypto \
                --with-sqlit3="$(STAGING_DIR)/usr" \
diff --git a/net/apache/patches/010-reproducible-builds.patch b/net/apache/patches/010-reproducible-builds.patch
new file mode 100644 (file)
index 0000000..7a5324b
--- /dev/null
@@ -0,0 +1,44 @@
+Description: Make builds reproducible
+ Don't use __DATE__ __TIME__. Use changelog date instead.
+ Sort exported symbols.
+Author: Jean-Michel Vourgère <nirgal@debian.org>
+Forwarded: no
+Last-Update: 2015-08-11
+
+Index: apache2/server/buildmark.c
+===================================================================
+--- apache2.orig/server/buildmark.c
++++ apache2/server/buildmark.c
+@@ -17,11 +17,7 @@
+ #include "ap_config.h"
+ #include "httpd.h"
+-#if defined(__DATE__) && defined(__TIME__)
+-static const char server_built[] = __DATE__ " " __TIME__;
+-#else
+-static const char server_built[] = "unknown";
+-#endif
++static const char server_built[] = "";
+ AP_DECLARE(const char *) ap_get_server_built()
+ {
+Index: apache2/server/Makefile.in
+===================================================================
+--- apache2.orig/server/Makefile.in
++++ apache2/server/Makefile.in
+@@ -1,3 +1,4 @@
++export LC_ALL = C
+ CLEAN_TARGETS = gen_test_char test_char.h \
+       ApacheCoreOS2.def httpd.exp export_files \
+@@ -80,8 +81,8 @@ httpd.exp: exports.c export_vars.h
+       @echo "#! ." > $@
+       @echo "* This file was AUTOGENERATED at build time." >> $@
+       @echo "* Please do not edit by hand." >> $@
+-      $(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) exports.c | grep "ap_hack_" | grep -v apr_ | sed -e 's/^.*[)]\(.*\);$$/\1/' >> $@
+-      $(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) export_vars.h | grep -v apr_ | sed -e 's/^\#[^!]*//' | sed -e '/^$$/d' >> $@
++      $(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) exports.c | grep "ap_hack_" | grep -v apr_ | sed -e 's/^.*[)]\(.*\);$$/\1/' | sort >> $@
++      $(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) export_vars.h | grep -v apr_ | sed -e 's/^\#[^!]*//' | sed -e '/^$$/d' | sort >> $@
+ #   developer stuff
index d7d63f8f105c69d2d729152e0e24a30c551c2e4c..c5b0ac898f13a33957afc80e37bc493639acb22d 100644 (file)
@@ -19,7 +19,7 @@ endchoice
 choice
        prompt "Crypto Library"
        depends on !ARIA2_OPENSSL
-       default ARIA2_NOCRYPOTLIB
+       default ARIA2_NOCRYPTO
 
 config ARIA2_NETTLE
        bool "Nettle"
index f11d02438cab1babefaa6529e954b361d2ef2fab..751fee45fd0c3a77d291d7ae694b144a0eb404f9 100644 (file)
@@ -7,12 +7,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=aria2
-PKG_VERSION:=1.32.0
-PKG_RELEASE:=3
+PKG_VERSION:=1.33.0
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=https://github.com/aria2/aria2/releases/download/release-$(PKG_VERSION)/
-PKG_HASH:=546e9194a9135d665fce572cb93c88f30fb5601d113bfa19951107ced682dc50
+PKG_HASH:=996e3fc2fd07ce2dd517e20a1f79b8b3dbaa5c7e27953b5fc19dae38f3874b8c
 PKG_INSTALL:=1
 
 PKG_MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>, \
index 04d6bdc1b15d055a08c84a2a9f475a6b8374093e..ed3734642d7a8bf2ff77064154f70f4e53382183 100644 (file)
@@ -14,4 +14,24 @@ config BIND_ENABLE_FILTER_AAAA
                Additional details are available at
                https://kb.isc.org/article/AA-00576/0/Filter-AAAA-option-in-BIND-9-.html
 
+config BIND_LIBJSON
+       bool
+       default n
+       prompt "Include libjson support in bind-server"
+       help
+               BIND 9 supports reporting statistics about usage. libjson
+               is required to report server statistics in JSON format. 
+               Building with libjson support will require the libjson-c
+               package to be installed as well.
+
+config BIND_LIBXML2
+       bool
+       default n
+       prompt "Include libxml2 support in bind-server"
+       help
+               BIND 9 supports reporting statistics about usage. 
+               libxml2 is required to report server statistics in XML
+               format. Building with libjson support will require the
+               libxml2 package to be installed as well.
+
 endif
index bd33aa2ff977dfd5e9537f06fa6345a2988d6759..229e1006ec1b40316a5c661b7696fbc095d0b46e 100644 (file)
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=bind
 PKG_VERSION:=9.11.2
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 USERID:=bind=57:bind=57
 
 PKG_MAINTAINER:=Noah Meyerhans <frodo@morgul.net>
@@ -29,7 +29,16 @@ PKG_INSTALL:=1
 PKG_USE_MIPS16:=0
 
 PKG_CONFIG_DEPENDS := \
-       CONFIG_BIND_ENABLE_FILTER_AAAA
+       CONFIG_BIND_ENABLE_FILTER_AAAA \
+       CONFIG_BIND_LIBJSON \
+       CONFIG_BIND_LIBXML2
+
+ifdef CONFIG_BIND_LIBXML2
+  PKG_BUILD_DEPENDS += libxml2
+endif
+ifdef CONFIG_BIND_LIBJSON
+  PKG_BUILD_DEPENDS += libjson-c
+endif
 
 include $(INCLUDE_DIR)/package.mk
 
@@ -48,6 +57,12 @@ define Package/bind-libs
   DEPENDS:=+libopenssl +zlib
   TITLE:=bind shared libraries
   URL:=https://www.isc.org/software/bind
+ifdef CONFIG_BIND_LIBJSON
+  DEPENDS+= +libjson-c
+endif
+ifdef CONFIG_BIND_LIBXML2
+  DEPENDS+= +libxml2
+endif
 endef
 
 define Package/bind-server
@@ -104,9 +119,7 @@ CONFIGURE_ARGS += \
        --disable-threads \
        --disable-linux-caps \
        --with-openssl="$(STAGING_DIR)/usr" \
-       --with-libjson=no \
        --with-libtool \
-       --with-libxml2=no \
        --without-lmdb \
        --enable-epoll=yes \
        --with-gost=no \
@@ -120,6 +133,22 @@ ifdef CONFIG_BIND_ENABLE_FILTER_AAAA
                --enable-filter-aaaa
 endif
 
+ifdef CONFIG_BIND_LIBJSON
+       CONFIGURE_ARGS += \
+               --with-libjson="$(STAGING_DIR)/usr"
+else
+       CONFIGURE_ARGS += \
+               --with-libjson=no
+endif
+
+ifdef CONFIG_BIND_LIBXML2
+       CONFIGURE_ARGS += \
+               --with-libxml2="$(STAGING_DIR)/usr"
+else
+       CONFIGURE_ARGS += \
+               --with-libxml2=no
+endif
+
 CONFIGURE_VARS += \
        BUILD_CC="$(TARGET_CC)" \
 
index 3cc1dfcf79d77928013feeb73900d038f5bc4a75..b4a9abc885baa1aefe59508e05500a47868440a7 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=clamav
 PKG_VERSION:=0.99.2
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_LICENSE:=GPL-2.0
 PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr> \
@@ -72,6 +72,9 @@ define Build/Configure
                --with-group nogroup \
                --with-pcre="$(STAGING_DIR)/usr/" \
                --with-openssl="$(STAGING_DIR)/usr/" \
+               --with-zlib="$(STAGING_DIR)/usr/" \
+               --disable-zlib-vcheck \
+               --disable-clamdtop \
        )
 endef
 
diff --git a/net/dansguardian/Makefile b/net/dansguardian/Makefile
deleted file mode 100644 (file)
index 9fe96fb..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-#
-# 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:=dansguardian
-PKG_VERSION:=2.12.0.3
-PKG_RELEASE:=1
-
-PKG_LICENSE:=GPL-2.0
-PKG_MAINTAINER:=Luka Perkov <luka@openwrt.org>
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=@SF/dansguardian
-PKG_HASH:=c74e9a32b97f9a9a056fced3da23fe48fca2bc6aa9af670afe9a53dc819414f5
-
-PKG_BUILD_PARALLEL:=1
-PKG_INSTALL:=1
-
-include $(INCLUDE_DIR)/uclibc++.mk
-include $(INCLUDE_DIR)/package.mk
-
-define Package/dansguardian
-  SECTION:=net
-  DEPENDS:=+libpthread $(CXX_DEPENDS) +zlib
-  CATEGORY:=Network
-  SUBMENU:=Web Servers/Proxies
-  TITLE:=DansGuardian
-  URL:=http://dansguardian.org
-endef
-
-define Package/dansguardian/conffiles
-/etc/dansguardian/dansguardianf1.conf
-/etc/config/dansguardian
-endef
-
-CONFIGURE_VARS += \
-       INCLUDES="" \
-       CXXFLAGS="$$$$CXXFLAGS -fno-rtti" \
-       LIBS="-lpthread" \
-
-define Build/Configure
-       $(call Build/Configure/Default,\
-               --disable-clamav \
-               --with-sysconfsubdir=dansguardian \
-               --with-proxyuser=root \
-               --with-proxygroup=root \
-               --disable-pcre \
-       )
-endef
-
-define Package/dansguardian/install
-       $(INSTALL_DIR) $(1)/usr/sbin
-       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/dansguardian $(1)/usr/sbin/
-
-       $(INSTALL_DIR) $(1)/etc
-       $(CP) $(PKG_INSTALL_DIR)/etc/dansguardian $(1)/etc/
-       $(INSTALL_CONF) ./files/dansguardianf1.conf $(1)/etc/dansguardian/dansguardianf1.conf
-
-       $(INSTALL_DIR) $(1)/etc/config
-       $(INSTALL_CONF) ./files/dansguardian.config $(1)/etc/config/dansguardian
-
-       $(INSTALL_DIR) $(1)/usr/share/dansguardian
-       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/dansguardian/transparent1x1.gif $(1)/usr/share/dansguardian/
-       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/share/dansguardian/blockedflash.swf $(1)/usr/share/dansguardian/
-
-       $(INSTALL_DIR) $(1)/usr/share/dansguardian/languages/ukenglish
-       $(CP) $(PKG_INSTALL_DIR)/usr/share/dansguardian/languages/ukenglish/* $(1)/usr/share/dansguardian/languages/ukenglish/
-
-       $(INSTALL_DIR) $(1)/etc/init.d/
-       $(INSTALL_BIN) ./files/dansguardian.init $(1)/etc/init.d/dansguardian
-endef
-
-$(eval $(call BuildPackage,dansguardian))
diff --git a/net/dansguardian/files/dansguardian.config b/net/dansguardian/files/dansguardian.config
deleted file mode 100644 (file)
index 86640af..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-config dansguardian 'dansguardian'
-       option config_file '/etc/dansguardian/dansguardianf1.conf'
-       option accessdeniedaddress 'http://YOURSERVER.YOURDOMAIN/cgi-bin/dansguardian.pl'
-       option bannediplist '/etc/dansguardian/lists/bannediplist'
-       option contentscanexceptions 'off'
-       option contentscannertimeout '60'
-       option createlistcachefiles 'on'
-       option custombannedflashfile '/usr/share/dansguardian/blockedflash.swf'
-       option custombannedimagefile '/usr/share/dansguardian/transparent1x1.gif'
-       option deletedownloadedtempfiles 'on'
-       option downloadmanager '/etc/dansguardian/downloadmanagers/default.conf'
-       option exceptioniplist '/etc/dansguardian/lists/exceptioniplist'
-       option filecachedir '/tmp'
-       option filtergroups '1'
-       option filtergroupslist '/etc/dansguardian/lists/filtergroupslist'
-       option filterip ''
-       option filterports '8080'
-       option forcequicksearch 'off'
-       option forwardedfor 'off'
-       option hexdecodecontent 'off'
-       option initialtrickledelay '20'
-       option ipcfilename '/tmp/.dguardianipc'
-       option ipipcfilename '/tmp/.dguardianipipc'
-       option languagedir '/usr/share/dansguardian/languages'
-       option language 'ukenglish'
-       option logadblocks 'off'
-       option logchildprocesshandling 'off'
-       option logclienthostnames 'off'
-       option logconnectionhandlingerrors 'on'
-       option logexceptionhits '2'
-       option logfileformat '1'
-       option loglevel '2'
-       option loglocation '/dev/null'
-       option logsyslog 'on'
-       option loguseragent 'off'
-       option maxagechildren '500'
-       option maxchildren '120'
-       option maxcontentfilecachescansize '20000'
-       option maxcontentfiltersize '256'
-       option maxcontentramcachescansize '2000'
-       option maxips '0'
-       option maxsparechildren '32'
-       option maxuploadsize '-1'
-       option minchildren '8'
-       option minsparechildren '4'
-       option nodaemon 'off'
-       option nologger 'off'
-       option nonstandarddelimiter 'on'
-       option perroomblockingdirectory '/etc/dansguardian/lists/bannedrooms/'
-       option phrasefiltermode '2'
-       option prefercachedlists 'off'
-       option preforkchildren '6'
-       option preservecase '0'
-       option proxyip '127.0.0.1'
-       option proxyport '3128'
-       option proxytimeout '20'
-       option recheckreplacedurls 'off'
-       option reportinglevel '3'
-       option reverseaddresslookups 'off'
-       option reverseclientiplookups 'off'
-       option scancleancache 'on'
-       option showweightedfound 'on'
-       option softrestart 'off'
-       option trickledelay '10'
-       option urlcacheage '900'
-       option urlcachenumber '1000'
-       option urlipcfilename '/tmp/.dguardianurlipc'
-       option usecustombannedflash 'on'
-       option usecustombannedimage 'on'
-       option usexforwardedfor 'off'
-       option weightedphrasemode '2'
diff --git a/net/dansguardian/files/dansguardian.init b/net/dansguardian/files/dansguardian.init
deleted file mode 100644 (file)
index 67ec6bd..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-#!/bin/sh /etc/rc.common
-# Copyright (C) 2015 OpenWrt.org
-
-START=90
-STOP=10
-
-USE_PROCD=1
-PROG=/usr/sbin/dansguardian
-CONFIGFILE="/tmp/dansguardian/dansguardian.conf"
-
-validate_dansguardian_section() {
-       uci_validate_section dansguardian dansguardian "${1}" \
-               'config_file:string' \
-               'accessdeniedaddress:string' \
-               'bannediplist:string' \
-               'contentscanexceptions:string' \
-               'contentscannertimeout:uinteger' \
-               'createlistcachefiles:string' \
-               'custombannedflashfile:string' \
-               'custombannedimagefile:string' \
-               'deletedownloadedtempfiles:string' \
-               'downloadmanager:string' \
-               'exceptioniplist:string' \
-               'filecachedir:string' \
-               'filtergroups:uinteger' \
-               'filtergroupslist:string' \
-               'filterip:ipaddr' \
-               'filterports:port:8080' \
-               'forcequicksearch:string' \
-               'forwardedfor:string' \
-               'hexdecodecontent:string' \
-               'initialtrickledelay:uinteger' \
-               'ipcfilename:string' \
-               'ipipcfilename:string' \
-               'languagedir:string' \
-               'language:string' \
-               'logadblocks:string' \
-               'logchildprocesshandling:string' \
-               'logclienthostnames:string' \
-               'logconnectionhandlingerrors:string' \
-               'logexceptionhits:range(0,2)' \
-               'logfileformat:range(1,4)' \
-               'loglevel:range(0,3)' \
-               'loglocation:string' \
-               'loguseragent:string' \
-               'maxagechildren:uinteger' \
-               'maxchildren:uinteger' \
-               'maxcontentfilecachescansize:uinteger' \
-               'maxcontentfiltersize:uinteger' \
-               'maxcontentramcachescansize:uinteger' \
-               'maxips:uinteger' \
-               'maxsparechildren:uinteger' \
-               'maxuploadsize:integer' \
-               'minchildren:uinteger' \
-               'minsparechildren:uinteger' \
-               'nodaemon:string' \
-               'nologger:string' \
-               'nonstandarddelimiter:string' \
-               'perroomblockingdirectory:string' \
-               'phrasefiltermode:range(0,3)' \
-               'prefercachedlists:string' \
-               'preforkchildren:uinteger' \
-               'preservecase:range(0,2)' \
-               'proxyip:ipaddr' \
-               'proxyport:port:3128' \
-               'proxytimeout:range(20,30)' \
-               'recheckreplacedurls:string' \
-               'reportinglevel:range(-1,3)' \
-               'reverseaddresslookups:string' \
-               'reverseclientiplookups:string' \
-               'scancleancache:string' \
-               'showweightedfound:string' \
-               'softrestart:string' \
-               'trickledelay:uinteger' \
-               'urlcacheage:uinteger' \
-               'urlcachenumber:uinteger' \
-               'urlipcfilename:string' \
-               'usecustombannedflash:string' \
-               'usecustombannedimage:string' \
-               'usexforwardedfor:string' \
-               'weightedphrasemode:range(0,2)'
-}
-
-start_service() {
-       local config_file accessdeniedaddress bannediplist contentscanexceptions contentscannertimeout \
-               createlistcachefiles custombannedflashfile custombannedimagefile deletedownloadedtempfiles \
-               downloadmanager exceptioniplist filecachedir filtergroups filtergroupslist filterip filterports \
-               forcequicksearch forwardedfor hexdecodecontent initialtrickledelay ipcfilename ipipcfilename \
-               language languagedir logadblocks logchildprocesshandling logclienthostnames logconnectionhandlingerrors \
-               logexceptionhits logfileformat loglevel loguseragent maxagechildren maxchildren maxcontentfilecachescansize \
-               maxcontentfiltersize maxcontentramcachescansize maxips maxsparechildren maxuploadsize minchildren minsparechildren \
-               nodaemon nologger nonstandarddelimiter perroomblockingdirectory phrasefiltermode prefercachedlists preforkchildren \
-               preservecase proxyip proxyport proxytimeout recheckreplacedurls reportinglevel reverseaddresslookups \
-               reverseclientiplookups scancleancache showweightedfound softrestart trickledelay urlcacheage urlcachenumber \
-               urlipcfilename usecustombannedflash usecustombannedimage usexforwardedfor weightedphrasemode
-
-       validate_dansguardian_section dansguardian || {
-               echo "validation failed"
-               return 1
-       }
-
-       mkdir -p $(dirname $CONFIGFILE)
-       ln -sf $config_file $(dirname $CONFIGFILE)
-
-       echo "accessdeniedaddress = " $accessdeniedaddress > $CONFIGFILE
-       echo "bannediplist = " $bannediplist >> $CONFIGFILE
-       echo "contentscanexceptions = " $contentscanexceptions >> $CONFIGFILE
-       echo "contentscannertimeout = " $contentscannertimeout >> $CONFIGFILE
-       echo "createlistcachefiles = " $createlistcachefiles >> $CONFIGFILE
-       echo "custombannedflashfile = " $custombannedflashfile >> $CONFIGFILE
-       echo "custombannedimagefile = " $custombannedimagefile >> $CONFIGFILE
-       echo "deletedownloadedtempfiles = " $deletedownloadedtempfiles >> $CONFIGFILE
-       echo "downloadmanager = " $downloadmanager >> $CONFIGFILE
-       echo "exceptioniplist = " $exceptioniplist >> $CONFIGFILE
-       echo "filecachedir = " $filecachedir >> $CONFIGFILE
-       echo "filtergroups = " $filtergroups >> $CONFIGFILE
-       echo "filtergroupslist = " $filtergroupslist >> $CONFIGFILE
-       echo "filterip = " $filterip >> $CONFIGFILE
-       echo "filterports = " $filterports >> $CONFIGFILE
-       echo "forcequicksearch = " $forcequicksearch >> $CONFIGFILE
-       echo "forwardedfor = " $forwardedfor >> $CONFIGFILE
-       echo "hexdecodecontent = " $hexdecodecontent >> $CONFIGFILE
-       echo "initialtrickledelay = " $initialtrickledelay >> $CONFIGFILE
-       echo "ipcfilename = " $ipcfilename >> $CONFIGFILE
-       echo "ipipcfilename = " $ipipcfilename >> $CONFIGFILE
-       echo "language = " $language >> $CONFIGFILE
-       echo "languagedir = " $languagedir >> $CONFIGFILE
-       echo "logadblocks = " $logadblocks >> $CONFIGFILE
-       echo "logchildprocesshandling = " $logchildprocesshandling >> $CONFIGFILE
-       echo "logclienthostnames = " $logclienthostnames >> $CONFIGFILE
-       echo "logconnectionhandlingerrors = " $logconnectionhandlingerrors >> $CONFIGFILE
-       echo "logexceptionhits = " $logexceptionhits >> $CONFIGFILE
-       echo "logfileformat = " $logfileformat >> $CONFIGFILE
-       echo "loglevel = " $loglevel >> $CONFIGFILE
-       echo "loglocation = " $loglocation >> $CONFIGFILE
-       echo "loguseragent = " $loguseragent >> $CONFIGFILE
-       echo "maxagechildren = " $maxagechildren >> $CONFIGFILE
-       echo "maxchildren = " $maxchildren >> $CONFIGFILE
-       echo "maxcontentfilecachescansize = " $maxcontentfilecachescansize >> $CONFIGFILE
-       echo "maxcontentfiltersize = " $maxcontentfiltersize >> $CONFIGFILE
-       echo "maxcontentramcachescansize = " $maxcontentramcachescansize >> $CONFIGFILE
-       echo "maxips = " $maxips >> $CONFIGFILE
-       echo "maxsparechildren = " $maxsparechildren >> $CONFIGFILE
-       echo "maxuploadsize = " $maxuploadsize >> $CONFIGFILE
-       echo "minchildren = " $minchildren >> $CONFIGFILE
-       echo "minsparechildren = " $minsparechildren >> $CONFIGFILE
-       echo "nodaemon = " $nodaemon >> $CONFIGFILE
-       echo "nologger = " $nologger >> $CONFIGFILE
-       echo "nonstandarddelimiter = " $nonstandarddelimiter >> $CONFIGFILE
-       echo "perroomblockingdirectory = " $perroomblockingdirectory >> $CONFIGFILE
-       echo "phrasefiltermode = " $phrasefiltermode >> $CONFIGFILE
-       echo "prefercachedlists = " $prefercachedlists >> $CONFIGFILE
-       echo "preforkchildren = " $preforkchildren >> $CONFIGFILE
-       echo "preservecase = " $preservecase >> $CONFIGFILE
-       echo "proxyip = " $proxyip >> $CONFIGFILE
-       echo "proxyport = " $proxyport >> $CONFIGFILE
-       echo "proxytimeout = " $proxytimeout >> $CONFIGFILE
-       echo "recheckreplacedurls = " $recheckreplacedurls >> $CONFIGFILE
-       echo "reportinglevel = " $reportinglevel >> $CONFIGFILE
-       echo "reverseaddresslookups = " $reverseaddresslookups >> $CONFIGFILE
-       echo "reverseclientiplookups = " $reverseclientiplookups >> $CONFIGFILE
-       echo "scancleancache = " $scancleancache >> $CONFIGFILE
-       echo "showweightedfound = " $showweightedfound >> $CONFIGFILE
-       echo "softrestart = " $softrestart >> $CONFIGFILE
-       echo "trickledelay = " $trickledelay >> $CONFIGFILE
-       echo "urlcacheage = " $urlcacheage >> $CONFIGFILE
-       echo "urlcachenumber = " $urlcachenumber >> $CONFIGFILE
-       echo "urlipcfilename = " $urlipcfilename >> $CONFIGFILE
-       echo "usecustombannedflash = " $usecustombannedflash >> $CONFIGFILE
-       echo "usecustombannedimage = " $usecustombannedimage >> $CONFIGFILE
-       echo "usexforwardedfor = " $usexforwardedfor >> $CONFIGFILE
-       echo "weightedphrasemode = " $weightedphrasemode >> $CONFIGFILE
-
-       procd_open_instance
-       procd_set_param command $PROG -N -c "$CONFIGFILE"
-       procd_set_param file $CONFIGFILE
-       procd_set_param respawn
-       procd_close_instance
-}
-
-stop_service()
-{
-       dansguardian -s | awk -F':' '{ print $2}' | xargs kill -9
-}
-
-service_triggers()
-{
-       procd_add_reload_trigger "dansguardian"
-       procd_add_validation validate_dansguardian_section
-}
diff --git a/net/dansguardian/files/dansguardianf1.conf b/net/dansguardian/files/dansguardianf1.conf
deleted file mode 100644 (file)
index 01e09ae..0000000
+++ /dev/null
@@ -1,348 +0,0 @@
-# DansGuardian filter group config file for version 2.12.0.0
-
-
-# Filter group mode
-# This option determines whether members of this group have their web access
-# unfiltered, filtered, or banned. This mechanism replaces the "banneduserlist"
-# and "exceptionuserlist" files from previous versions.
-#
-# 0 = banned
-# 1 = filtered
-# 2 = unfiltered (exception)
-#
-# Only filter groups with a mode of 1 need to define phrase, URL, site, extension,
-# mimetype and PICS lists; in other modes, these options are ignored to conserve
-# memory.
-#
-# Defaults to 0 if unspecified.
-# Unauthenticated users are treated as being in the first filter group.
-groupmode = 1
-
-# Filter group name
-# Used to fill in the -FILTERGROUP- placeholder in the HTML template file, and to
-# name the group in the access logs
-# Defaults to empty string
-#groupname = ''
-
-# Content filtering files location
-bannedphraselist = '/etc/dansguardian/lists/bannedphraselist'
-weightedphraselist = '/etc/dansguardian/lists/weightedphraselist'
-exceptionphraselist = '/etc/dansguardian/lists/exceptionphraselist'
-bannedsitelist = '/etc/dansguardian/lists/bannedsitelist'
-greysitelist = '/etc/dansguardian/lists/greysitelist'
-exceptionsitelist = '/etc/dansguardian/lists/exceptionsitelist'
-bannedurllist = '/etc/dansguardian/lists/bannedurllist'
-greyurllist = '/etc/dansguardian/lists/greyurllist'
-exceptionurllist = '/etc/dansguardian/lists/exceptionurllist'
-exceptionregexpurllist = '/etc/dansguardian/lists/exceptionregexpurllist'
-bannedregexpurllist = '/etc/dansguardian/lists/bannedregexpurllist'
-picsfile = '/etc/dansguardian/lists/pics'
-contentregexplist = '/etc/dansguardian/lists/contentregexplist'
-urlregexplist = '/etc/dansguardian/lists/urlregexplist'
-
-# Filetype filtering
-#
-# Blanket download blocking
-# If enabled, all files will be blocked, unless they match the
-# exceptionextensionlist or exceptionmimetypelist.
-# These lists do not override virus scanning.
-# Exception lists defined above override all types of filtering, including
-# the blanket download block.
-# Defaults to disabled.
-# (on | off)
-#
-blockdownloads = off
-exceptionextensionlist = '/etc/dansguardian/lists/exceptionextensionlist'
-exceptionmimetypelist = '/etc/dansguardian/lists/exceptionmimetypelist'
-#
-# Use the following lists to block specific kinds of file downloads.
-# The two exception lists above can be used to override these.
-#
-bannedextensionlist = '/etc/dansguardian/lists/bannedextensionlist'
-bannedmimetypelist = '/etc/dansguardian/lists/bannedmimetypelist'
-#
-# In either file filtering mode, the following list can be used to override
-# MIME type & extension blocks for particular domains & URLs (trusted download sites).
-#
-exceptionfilesitelist = '/etc/dansguardian/lists/exceptionfilesitelist'
-exceptionfileurllist = '/etc/dansguardian/lists/exceptionfileurllist'
-
-# Categorise without blocking:
-# Supply categorised lists here and the category string shall be logged against
-# matching requests, but matching these lists does not perform any filtering
-# action.
-#logsitelist = '/etc/dansguardian/lists/logsitelist'
-#logurllist = '/etc/dansguardian/lists/logurllist'
-#logregexpurllist = '/etc/dansguardian/lists/logregexpurllist'
-
-# Outgoing HTTP header rules:
-# Optional lists for blocking based on, and modification of, outgoing HTTP
-# request headers.  Format for headerregexplist is one modification rule per
-# line, similar to content/URL modifications.  Format for
-# bannedregexpheaderlist is one regular expression per line, with matching
-# headers causing a request to be blocked.
-# Headers are matched/replaced on a line-by-line basis, not as a contiguous
-# block.
-# Use for example, to remove cookies or prevent certain user-agents.
-headerregexplist = '/etc/dansguardian/lists/headerregexplist'
-bannedregexpheaderlist = '/etc/dansguardian/lists/bannedregexpheaderlist'
-
-# Weighted phrase mode
-# Optional; overrides the weightedphrasemode option in dansguardian.conf
-# for this particular group.  See documentation for supported values in
-# that file.
-#weightedphrasemode = 0
-
-# Naughtiness limit
-# This the limit over which the page will be blocked.  Each weighted phrase is given
-# a value either positive or negative and the values added up.  Phrases to do with
-# good subjects will have negative values, and bad subjects will have positive
-# values.  See the weightedphraselist file for examples.
-# As a guide:
-# 50 is for young children,  100 for old children,  160 for young adults.
-naughtynesslimit = 50
-
-# Search term blocking
-# Search terms can be extracted from search URLs and filtered using the
-# bannedphraselist, weightedphraselist and exceptionphraselist, with a separate
-# threshold for blocking than that used for normal page content.
-# To do this, the first two options below must be enabled.
-#
-# Search engine regular expression list
-# List of regular expressions for matching search engine URLs.  It is assumed
-# that the search terms themselves will be contained within the first submatch
-# of each expression.
-#searchengineregexplist = '/etc/dansguardian/lists/searchengineregexplist'
-#
-# Search term limit
-# The limit over which requests will be blocked for containing search terms
-# which match the weightedphraselist.  This should usually be lower than the
-# 'naughtynesslimit' value above, because the amount of text being filtered
-# is only a few words, rather than a whole page.
-# This option must be uncommented if searchengineregexplist is uncommented.
-# A value of 0 here indicates that search terms should be extracted,
-# for logging/reporting purposes, but no filtering should be performed
-# on the resulting text.
-#searchtermlimit = 30
-#
-# Search term lists
-# If the three lines below are uncommented, search term blocking will use
-# the banned, weighted & exception phrases from these lists, instead of using
-# the same phrase lists as for page content.  This is optional but recommended,
-# as weights for individual phrases in the "normal" lists may not be
-# appropriate for blocking when those phrases appear in a much smaller block
-# of text.
-# Please note that all or none of the below should be uncommented, not a
-# mixture.
-#bannedsearchtermlist = '/etc/dansguardian/lists/bannedsearchtermlist'
-#weightedsearchtermlist = '/etc/dansguardian/lists/weightedsearchtermlist'
-#exceptionsearchtermlist = '/etc/dansguardian/lists/exceptionsearchtermlist'
-
-# Category display threshold
-# This option only applies to pages blocked by weighted phrase filtering.
-# Defines the minimum score that must be accumulated within a particular
-# category in order for it to show up on the block pages' category list.
-# All categories under which the page scores positively will be logged; those
-# that were not displayed to the user appear in brackets.
-#
-# -1 = display only the highest scoring category
-# 0 = display all categories (default)
-# > 0 = minimum score for a category to be displayed
-categorydisplaythreshold = 0
-
-# Embedded URL weighting
-# When set to something greater than zero, this option causes URLs embedded within a
-# page's HTML (from links, image tags, etc.) to be extracted and checked against the
-# bannedsitelist and bannedurllist. Each link to a banned page causes the amount set
-# here to be added to the page's weighting.
-# The behaviour of this option with regards to multiple occurrences of a site/URL is
-# affected by the weightedphrasemode setting.
-#
-# NB: Currently, this feature uses regular expressions that require the PCRE library.
-# As such, it is only available if you compiled DansGuardian with '--enable-pcre=yes'.
-# You can check compile-time options by running 'dansguardian -v'.
-#
-# Set to 0 to disable.
-# Defaults to 0.
-# WARNING: This option is highly CPU intensive!
-embeddedurlweight = 0
-
-# Enable PICS rating support
-#
-# Defaults to disabled
-# (on | off)
-enablepics = off
-
-# Temporary Denied Page Bypass
-# This provides a link on the denied page to bypass the ban for a few minutes.  To be
-# secure it uses a random hashed secret generated at daemon startup.  You define the
-# number of seconds the bypass will function for before the deny will appear again.
-# To allow the link on the denied page to appear you will need to edit the template.html
-# or dansguardian.pl file for your language.
-# 300 = enable for 5 minutes
-# 0 = disable ( defaults to 0 )
-# -1 = enable but you require a separate program/CGI to generate a valid link
-bypass = 0
-
-# Temporary Denied Page Bypass Secret Key
-# Rather than generating a random key you can specify one.  It must be more than 8 chars.
-# '' = generate a random one (recommended and default)
-# 'Mary had a little lamb.' = an example
-# '76b42abc1cd0fdcaf6e943dcbc93b826' = an example
-bypasskey = ''
-
-# Infection/Scan Error Bypass
-# Similar to the 'bypass' setting, but specifically for bypassing files scanned and found
-# to be infected, or files that trigger scanner errors - for example, archive types with
-# recognised but unsupported compression schemes, or corrupt archives.
-# The option specifies the number of seconds for which the bypass link will be valid.
-# 300 = enable for 5 minutes
-# 0 = disable (default)
-# -1 = enable, but require a separate program/CGI to generate a valid link
-infectionbypass = 0
-
-# Infection/Scan Error Bypass Secret Key
-# Same as the 'bypasskey' option, but used for infection bypass mode.
-infectionbypasskey = ''
-
-# Infection/Scan Error Bypass on Scan Errors Only
-# Enable this option to allow infectionbypass links only when virus scanning fails,
-# not when a file is found to contain a virus.
-# on = enable (default and highly recommended)
-# off = disable
-infectionbypasserrorsonly = on
-
-# Disable content scanning
-# If you enable this option you will disable content scanning for this group.
-# Content scanning primarily is AV scanning (if enabled) but could include
-# other types.
-# (on|off) default = off.
-disablecontentscan = off
-
-# Enable Deep URL Analysis
-# When enabled, DG looks for URLs within URLs, checking against the bannedsitelist and
-# bannedurllist. This can be used, for example, to block images originating from banned
-# sites from appearing in Google Images search results, as the original URLs are
-# embedded in the thumbnail GET requests.
-# (on|off) default = off
-deepurlanalysis = off
-
-# reportinglevel
-#
-# -1 = log, but do not block - Stealth mode
-#  0 = just say 'Access Denied'
-#  1 = report why but not what denied phrase
-#  2 = report fully
-#  3 = use HTML template file (accessdeniedaddress ignored) - recommended
-#
-# If defined, this overrides the global setting in dansguardian.conf for
-# members of this filter group.
-#
-#reportinglevel = 3
-
-# accessdeniedaddress is the address of your web server to which the cgi
-# dansguardian reporting script was copied. Only used in reporting levels
-# 1 and 2.
-#
-# This webserver must be either:
-#  1. Non-proxied. Either a machine on the local network, or listed as an
-#     exception in your browser's proxy configuration.
-#  2. Added to the exceptionsitelist. Option 1 is preferable; this option is
-#     only for users using both transparent proxying and a non-local server
-#     to host this script.
-#
-# If defined, this overrides the global setting in dansguardian.conf for
-# members of this filter group.
-#
-#accessdeniedaddress = 'http://YOURSERVER.YOURDOMAIN/cgi-bin/dansguardian.pl'
-
-# HTML Template override
-# If defined, this specifies a custom HTML template file for members of this
-# filter group, overriding the global setting in dansguardian.conf. This is
-# only used in reporting level 3.
-#
-# The default template file path is <languagedir>/<language>/template.html
-# e.g. /usr/share/dansguardian/languages/ukenglish/template.html when using 'ukenglish'
-# language.
-#
-# This option generates a file path of the form:
-# <languagedir>/<language>/<htmltemplate>
-# e.g. /usr/share/dansguardian/languages/ukenglish/custom.html
-#
-#htmltemplate = 'custom.html'
-
-# Email reporting - original patch by J. Gauthier
-
-# Use SMTP
-# If on, will enable system wide events to be reported by email.
-# need to configure mail program (see 'mailer' in global config)
-# and email recipients
-# default usesmtp = off
-#!! Not compiled !!usesmtp = off
-
-# mailfrom
-# who the email would come from
-# example: mailfrom = 'dansguardian@mycompany.com'
-#!! Not compiled !!mailfrom = ''
-
-# avadmin
-# who the virus emails go to (if notify av is on)
-# example: avadmin = 'admin@mycompany.com'
-#!! Not compiled !!avadmin = ''
-
-# contentdmin
-# who the content emails go to (when thresholds are exceeded)
-# and contentnotify is on
-# example: contentadmin = 'admin@mycompany.com'
-#!! Not compiled !!contentadmin = ''
-
-# avsubject
-# Subject of the email sent when a virus is caught.
-# only applicable if notifyav is on
-# default avsubject = 'dansguardian virus block'
-#!! Not compiled !!avsubject = 'dansguardian virus block'
-
-# content
-# Subject of the email sent when violation thresholds are exceeded
-# default contentsubject = 'dansguardian violation'
-#!! Not compiled !!contentsubject = 'dansguardian violation'
-
-# notifyAV
-# This will send a notification, if usesmtp/notifyav is on, any time an
-# infection is found.
-# Important: If this option is off, viruses will still be recorded like a
-# content infraction.
-#!! Not compiled !!notifyav = off
-
-# notifycontent
-# This will send a notification, if usesmtp is on, based on thresholds
-# below
-#!! Not compiled !!notifycontent = off
-
-# thresholdbyuser
-# results are only predictable with user authenticated configs
-# if enabled the violation/threshold count is kept track of by the user
-#!! Not compiled !!thresholdbyuser = off
-
-#violations
-# number of violations before notification
-# setting to 0 will never trigger a notification
-#!! Not compiled !!violations = 0
-
-#threshold
-# this is in seconds. If 'violations' occur in 'threshold' seconds, then
-# a notification is made.
-# if this is set to 0, then whenever the set number of violations are made a
-# notifaction will be sent.
-#!! Not compiled !!threshold = 0
-
-#SSL certificate checking
-# Check that ssl certificates for servers on https connections are valid
-# and signed by a ca in the configured path
-sslcertcheck = off
-
-#SSL man in the middle
-# Forge ssl certificates for all sites, decrypt the data then re encrypt it
-# using a different private key. Used to filter ssl sites
-sslmitm = off
-
diff --git a/net/dansguardian/patches/001-compile.patch b/net/dansguardian/patches/001-compile.patch
deleted file mode 100644 (file)
index db8efa4..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
---- a/configure
-+++ b/configure
-@@ -827,7 +827,7 @@ sysconfdir='${prefix}/etc'
- sharedstatedir='${prefix}/com'
- localstatedir='${prefix}/var'
- includedir='${prefix}/include'
--oldincludedir='/usr/include'
-+oldincludedir='${prefix}/usr/include'
- docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
- infodir='${datarootdir}/info'
- htmldir='${docdir}'
-@@ -5265,7 +5265,7 @@ $as_echo_n "checking for zlib... " >&6;
- # Check whether --with-zlib was given.
- if test "${with_zlib+set}" = set; then :
-   withval=$with_zlib;  # check for header & func (in library) in given prefix
--      CPPFLAGS="${CPPFLAGS} -I${withval}/include"
-+      CPPFLAGS="${CPPFLAGS}"
-       if test "x$staticzlib" = "xtrue"; then
-               LIBS="-Bstatic -L${withval} -lz -Bdynamic ${LIBS}"
-       else
-@@ -7095,7 +7095,7 @@ $as_echo "#define ENABLE_NTLM /**/" >>co
- if test "${with_libiconv+set}" = set; then :
-   withval=$with_libiconv;  # check for header & func (in library) in given prefix
-                       if test "x$withval" != "x"; then
--                              CPPFLAGS="${CPPFLAGS} -I${withval}/include"
-+                              CPPFLAGS="${CPPFLAGS}"
-                               LIBS="-L${withval}/lib -liconv ${LIBS}"
-                       else
-                               LIBS="-liconv ${LIBS}"
diff --git a/net/dansguardian/patches/002-cstdlib.patch b/net/dansguardian/patches/002-cstdlib.patch
deleted file mode 100644 (file)
index d1f4200..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-Index: dansguardian-2.12.0.3/src/OptionContainer.cpp
-===================================================================
---- dansguardian-2.12.0.3.orig/src/OptionContainer.cpp
-+++ dansguardian-2.12.0.3/src/OptionContainer.cpp
-@@ -17,6 +17,7 @@
- #include <sstream>
- #include <syslog.h>
- #include <dirent.h>
-+#include <cstdlib>
- #include <unistd.h>           // checkme: remove?
index 2d544e94722a1a6935b9de75e103fc1dc975936d..d20956a3e7623ed805423284e1dceb45fb066057 100755 (executable)
@@ -12,7 +12,7 @@ PKG_NAME:=ddns-scripts
 PKG_VERSION:=2.7.6
 # Release == build
 # increase on changes of services files or tld_names.dat
-PKG_RELEASE:=18
+PKG_RELEASE:=20
 
 PKG_LICENSE:=GPL-2.0
 PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com>
index 1140261fef0fffe7aa13a3c383c7cf5a556556c9..c66c34b46c681ab0a193f3f6d4abd2b0bc54a247 100644 (file)
@@ -84,7 +84,7 @@
 
 "dtdns.com"            "http://www.dtdns.com/api/autodns.cfm?id=[DOMAIN]&pw=[PASSWORD]&ip=[IP]"
 
-"duckdns.org"          "http://www.duckdns.org/update?domains=[USERNAME]&token=[PASSWORD]&ip=[IP]"     "OK"
+"duckdns.org"          "http://www.duckdns.org/update?domains=[DOMAIN]&token=[PASSWORD]&ip=[IP]"       "OK"
 
 "duiadns.net"          "http://ip.duiadns.net/dynamic.duia?host=[DOMAIN]&password=[PASSWORD]&ip4=[IP]"
 
 
 "dynu.com"             "http://api.dynu.com/nic/update?hostname=[DOMAIN]&myip=[IP]&username=[USERNAME]&password=[PASSWORD]"
 
-"dynv6.com"            "http://dynv6.com/api/update?hostname=[DOMAIN]&token=[PASSWORD]&ipv4=[IP]"      "updated"
+"dynv6.com"            "http://dynv6.com/api/update?hostname=[DOMAIN]&token=[PASSWORD]&ipv4=[IP]"      "updated|unchanged"
 
 "easydns.com"          "http://[USERNAME]:[PASSWORD]@api.cp.easydns.com/dyn/generic.php?hostname=[DOMAIN]&myip=[IP]"   "NOERROR"
 
index c593aef6487a3999f803a98574234b89598a0d2f..3ea2974b166eac243c1d8f8cc50bddd56b046f26 100644 (file)
@@ -67,7 +67,7 @@
 
 "dynu.com"    "http://api.dynu.com/nic/update?hostname=[DOMAIN]&myipv6=[IP]&username=[USERNAME]&password=[PASSWORD]"
 
-"dynv6.com"            "http://dynv6.com/api/update?hostname=[DOMAIN]&token=[PASSWORD]&ipv6=[IP]"      "updated"
+"dynv6.com"            "http://dynv6.com/api/update?hostname=[DOMAIN]&token=[PASSWORD]&ipv6=[IP]"      "updated|unchanged"
 
 "goip.de"              "http://www.goip.de/setip?username=[USERNAME]&password=[PASSWORD]&subdomain=[DOMAIN]&ip6=[IP]"
 
index e11083d739258408752e228a8d5e520c1a79bf97..a5119c6da0bb72950091ca651ef0edd7844a9734 100644 (file)
@@ -8,18 +8,18 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=dhcpcd
-PKG_VERSION:=6.4.3
+PKG_VERSION:=6.11.5
 PKG_RELEASE:=1
 
 PKG_SOURCE_URL:=ftp://roy.marples.name/pub/dhcpcd \
     http://roy.marples.name/downloads/dhcpcd
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=36ad01619ee81ac3815467d0157c38a14f5db464371326e97f719be362d5ab9c
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_HASH:=6f9674dc7e27e936cc787175404a6171618675ecfb6903ab9887b1b66a87d69e
 
 PKG_LICENSE:=BSD-2c
 PKG_LICENSE_FILES:=
 
-PKG_MAINTAINER:=Roy Marples <roy@marples.name>
+PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
 
 PKG_BUILD_PARALLEL:=1
 PKG_INSTALL:=1
@@ -45,8 +45,11 @@ define Package/dhcpcd/description
     * ARP ping profiles
 endef
 
-CONFIGURE_ARGS+=       --prefix=/ --sbindir=/sbin \
-                       --libexecdir=/lib/dhcpcd --dbdir=/var/dhcpcd
+CONFIGURE_ARGS+= \
+       --prefix=/ \
+       --sbindir=/sbin \
+       --libexecdir=/lib/dhcpcd \
+       --dbdir=/var/dhcpcd
 
 define Package/dhcpcd/install
        $(INSTALL_DIR) $(1)/sbin $(1)/etc $(1)/lib/dhcpcd/dhcpcd-hooks
diff --git a/net/dhcpcd/patches/001-fix-musl.patch b/net/dhcpcd/patches/001-fix-musl.patch
deleted file mode 100644 (file)
index 5751a4c..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
---- a/dhcp6.c
-+++ b/dhcp6.c
-@@ -1047,8 +1047,8 @@ logsend:
-       ctx = ifp->ctx->ipv6;
-       dst.sin6_scope_id = ifp->index;
--      ctx->sndhdr.msg_name = (caddr_t)&dst;
--      ctx->sndhdr.msg_iov[0].iov_base = (caddr_t)state->send;
-+      ctx->sndhdr.msg_name = (void *)&dst;
-+      ctx->sndhdr.msg_iov[0].iov_base = (void *)state->send;
-       ctx->sndhdr.msg_iov[0].iov_len = state->send_len;
-       /* Set the outbound interface */
index 07f67dbd0f01d4b3d8cb1838152b4a0052662cbb..65a1c941645adfe7438dca3c970153e3ace4e5e6 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=fwknop
 PKG_VERSION:=2.6.9
-PKG_RELEASE:=3
+PKG_RELEASE:=4
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=http://www.cipherdyne.org/fwknop/download
index 0874ee4076979ade13a20d684adb8c471c3e687e..8a2b7599edca9faa2d7cf7dffe95a0712dde7e09 100644 (file)
@@ -1,6 +1,9 @@
 config global
 #      option uci_enabled '1'
 
+config network
+#      option network 'wan'    # takes precedence over config.PCAP_INTF
+
 config access
        option SOURCE 'ANY'
        option HMAC_KEY 'CHANGEME'
index baf81b8da63935c60dfc6adaf4db35385d643bb1..f59691151623569c8d295eb002405969cc9b095e 100644 (file)
@@ -4,50 +4,59 @@
 # Copyright (C) 2009-2014 fwknop developers and contributors. For a full
 # list of contributors, see the file 'CREDITS'.
 #
-. /lib/functions.sh
+
+USE_PROCD=1
 START=95
 
 FWKNOPD_BIN=/usr/sbin/fwknopd
 
-start()
+start_service()
 {
-       gen_confs
-       if [ $UCI_ENABLED ]; then
-               $FWKNOPD_BIN -c /var/etc/fwknopd.conf -a /var/etc/access.conf 
-       else
-               $FWKNOPD_BIN 
+       generate_configuration
+
+       procd_open_instance
+       procd_set_param command "$FWKNOPD_BIN" --foreground --syslog-enable
+       procd_set_param respawn
+
+       if [ $UCI_ENABLED -eq 1 ]; then
+               procd_append_param command -c /var/etc/fwknopd.conf
+               procd_append_param command -a /var/etc/access.conf
        fi
 
-}
+       procd_append_param command -i "$DEPEND_IFNAME"
+       procd_set_param netdev "$DEPEND_IFNAME"
 
-stop()
-{
-        $FWKNOPD_BIN -K
+       procd_close_instance
 }
 
-restart()
+service_triggers()
 {
-    stop;
-    sleep 1;
-    start;
+       procd_add_reload_trigger "fwknopd"
 }
 
-reload()
+get_bool()
 {
-       gen_confs
-        $FWKNOPD_BIN -R
+       local _tmp="$1"
+       case "$_tmp" in
+               1|on|true|yes|enabled) _tmp=1;;
+               0|off|false|no|disabled) _tmp=0;;
+               *) _tmp="$2";;
+       esac
+       echo -n "$_tmp"
 }
 
-gen_confs()
+generate_configuration()
 {
        [ -f /tmp/access.conf.tmp ] && rm /tmp/access.conf.tmp
-       if [ -z "$( uci get fwknopd.@config[0].PCAP_INTF )" ]
-       then
-               . /lib/functions/network.sh
-               network_get_physdev device wan
-               uci set fwknopd.@config[0].PCAP_INTF="$device"
-               uci commit
-       fi
+
+       UCI_ENABLED=0
+       DEPEND_IFNAME=
+       local NETWORK=
+       local PCAP_INTF=
+       local USER_CONFIG_PATH=/etc/fwknop/fwknopd.conf
+       local DEFAULT_UCI_NETWORK=wan
+       local DEFAULT_FWKNOPD_IFNAME=eth0
+
        config_cb() {
                local type="$1"
                local name="$2"
@@ -55,7 +64,7 @@ gen_confs()
                        option_cb() {
                                local option="$1"
                                local value="$2"
-                               if [ "$option" = "uci_enabled" ] && [ "$value" -eq 1 ] ; then
+                               if [ "$option" = "uci_enabled" ] && [ "$(get_bool "$value" 0)" -eq 1 ] ; then
                                        > /var/etc/fwknopd.conf
                                        > /var/etc/access.conf
                                         chmod 600 /var/etc/fwknopd.conf
@@ -63,11 +72,22 @@ gen_confs()
                                        UCI_ENABLED=1
                                fi
                        }
+               elif [ "$type" = "network" ]; then
+                       option_cb() {
+                               local option="$1"
+                               local value="$2"
+                               if [ $UCI_ENABLED -eq 1 ] && [ $option = "network" ]; then
+                                       NETWORK="$value"
+                               fi
+                       }
                elif [ "$type" = "config" ]; then
                        option_cb() {
                                local option="$1"
                                local value="$2"
-                               if [ $UCI_ENABLED ]; then
+                               if [ $UCI_ENABLED -eq 1 ] && [ $option = "PCAP_INTF" ]; then
+                                       PCAP_INTF="$value"
+                                       echo "$option $value" >> /var/etc/fwknopd.conf  #writing each option to fwknopd.conf
+                               elif [ $UCI_ENABLED -eq 1 ]; then
                                        echo "$option $value" >> /var/etc/fwknopd.conf  #writing each option to fwknopd.conf
                                fi
                        }
@@ -80,22 +100,64 @@ gen_confs()
                        option_cb() {
                                local option="$1"
                                local value="$2"
-                               if [ $UCI_ENABLED ] && [ $option = "SOURCE" ]; then
+                               if [ $UCI_ENABLED -eq 1 ] && [ $option = "SOURCE" ]; then
                                        echo "$option $value" >> /var/etc/access.conf  #writing each option to access.conf
                                fi
-                               if [ $UCI_ENABLED ] && [ $option != "SOURCE" ]; then
+                               if [ $UCI_ENABLED -eq 1 ] && [ $option != "SOURCE" ]; then
                                        echo "$option $value" >> /tmp/access.conf.tmp  #writing each option to access.conf
                                fi
                        }
+               else
+                       option_cb() { return; }
+                       if [ -z "$type" ]; then
+                               # Finalize reading
+                               if [ -f /tmp/access.conf.tmp ] ; then
+                                       cat /tmp/access.conf.tmp >> /var/etc/access.conf
+                                       rm /tmp/access.conf.tmp
+                               fi
+                       fi
                fi
        }
 
        if [ -f /etc/config/fwknopd ]; then
                config_load fwknopd
-               if [ -f /tmp/access.conf.tmp ] ; then
-                       cat /tmp/access.conf.tmp >> /var/etc/access.conf
-                       rm /tmp/access.conf.tmp
-               fi
        fi
 
+       if [ $UCI_ENABLED -eq 0 ]; then
+               if [ -f $USER_CONFIG_PATH ] ; then
+                       # Scan user configuration for PCAP_INTF settings
+                       DEPEND_IFNAME="$( sed -ne '/^\s*PCAP_INTF\s\+/ { s/^\s*PCAP_INTF\s\+//; s/\s\+$//; p; q; }' /etc/fwknop/fwknopd.conf )"
+                       if [ -n "$DEPEND_IFNAME" ]; then
+                               logger -p daemon.debug -t "fwknopd[----]" "Found fwknopd.conf configuration, using PCAP_INTF interface $DEPEND_IFNAME"
+                       else
+                               logger -p daemon.info -t "fwknopd[----]" "No PCAP_INTF interface specified in fwknopd.conf, fwknopd's default $DEFAULT_FWKNOPD_IFNAME will be used"
+                               DEPEND_IFNAME="$DEFAULT_FWKNOPD_IFNAME"
+                       fi
+               else
+                       logger -p daemon.error -t "fwknopd[----]" "No $USER_CONFIG_PATH found, not starting"
+                       exit 1
+               fi
+       elif [ $UCI_ENABLED -eq 1 ]; then
+               if [ -n "$NETWORK" ] && [ -n "$PCAP_INTF" ]; then
+                       logger -p daemon.warn -t "fwknopd[----]" "Specified both network and PCAP_INTF. Ignoring PCAP_INTF"
+               elif [ -z "$NETWORK" ] && [ -z "$PCAP_INTF" ]; then
+                       # Fallback - compatibility with old script, which used wan interface by default
+                       logger -p daemon.info -t "fwknopd[----]" "Neither network, nor PCAP_INTF interface specified, trying network $DEFAULT_UCI_NETWORK"
+                       NETWORK="$DEFAULT_UCI_NETWORK"
+               fi
+
+               if [ -n "$NETWORK" ]; then
+                       . /lib/functions/network.sh
+                       network_get_physdev DEPEND_IFNAME "$NETWORK"
+                       if [ -n "$DEPEND_IFNAME" ]; then
+                               logger -p daemon.debug -t "fwknopd[----]" "Resolved network $NETWORK as interface $DEPEND_IFNAME"
+                       else
+                               logger -p daemon.warn -t "fwknopd[----]" "Cannot find interface for network $NETWORK, fwknopd's default $DEFAULT_FWKNOPD_IFNAME will be used"
+                               DEPEND_IFNAME="$DEFAULT_FWKNOPD_IFNAME"
+                       fi
+               elif [ -n "$PCAP_INTF" ]; then
+                       DEPEND_IFNAME="$PCAP_INTF"
+                       logger -p daemon.debug -t "fwknopd[----]" "Using configured PCAP_INTF interface $DEPEND_IFNAME"
+               fi
+       fi
 }
index ec7c66a230b157227a6912c9441907884d28b638..cc6b58b4484b47fca2e7d156ea165415a8f7a38a 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=git
-PKG_VERSION:=2.14.2
+PKG_VERSION:=2.15.1
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@KERNEL/software/scm/git/
-PKG_HASH:=50e9723996114ad1eec4dda89960d9fe34461749ae42031008a261fedd03c7a1
+PKG_HASH:=999c90fd7d45066992cdb87dda35bdff6dfc1d01496118ea718dfb866da4045c
 
 PKG_INSTALL:=1
 PKG_BUILD_PARALLEL:=1
@@ -43,7 +43,7 @@ endef
 
 define Package/git-http
 $(call Package/git/Default)
-  DEPENDS+=git +libcurl +ca-certificates
+  DEPENDS+= +git +libcurl +ca-certificates
   TITLE:=Git HTTP commands
 endef
 
@@ -56,7 +56,7 @@ endef
 define Package/git-gitweb
 $(call Package/git/Default)
   TITLE:=Git repository web interface
-  DEPENDS:=git +perlbase-essential +perlbase-file +perlbase-fcntl +perlbase-encode +perlbase-digest +perlbase-time +perl-cgi
+  DEPENDS+= +git +perlbase-essential +perlbase-file +perlbase-fcntl +perlbase-encode +perlbase-digest +perlbase-time +perl-cgi
 endef
 
 define Package/git-gitweb/description
index 56f694c2af21a1c4073ef570b59ad1ee14e4d807..405118dc840f2fc5174cea7677c393a5d1a3a9a5 100644 (file)
@@ -1,10 +1,10 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gnunet
-PKG_SOURCE_VERSION:=664aca2d29b15dd75967d2bb0298caf750993b6f
-PKG_MIRROR_HASH:=d3fd9f9275e3173b392ea3d151130fae9fb507986c5bd6a369303e0e1e0ab6d6
+PKG_SOURCE_VERSION:=a3dace8401c482f18bddbad37da108433c1b08c7
+PKG_MIRROR_HASH:=00ab1eaed040e8479a38b9bfa2a59f029d6273cb2e275b637d1c501200bbbfd9
 
-PKG_VERSION:=0.10.2-git-20171004-$(PKG_SOURCE_VERSION)
+PKG_VERSION:=0.10.2-git-20171108-$(PKG_SOURCE_VERSION)
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
index a1b44f4a5b764d629a1d5373764b9db56430c6de..daa61dd97820a658f785f6bd7acb233aca968e31 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gnurl
-PKG_VERSION:=7.55.1-4
+PKG_VERSION:=7.56.1
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=https://gnunet.org/sites/default/files
 
-PKG_HASH:=d4758822f84fe961d9253d3d7ff742c9cd0d39d5340d441b8014771eb95b8125
+PKG_HASH:=c8069972327e47fa7e4f36754cbaa5d27e75ebb3de11a9b10ba628c0e9d00b5e
 
 PKG_LICENSE:=MIT
 PKG_LICENSE_FILES:=COPYING
index 74334cc5da877d67b02fd94baf12f5b722a7f684..9618fdc3ce2f9e69b79251ddfd4dc910bd9aa18a 100644 (file)
@@ -9,12 +9,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=haproxy
-PKG_VERSION:=1.7.8
-PKG_RELEASE:=18
+PKG_VERSION:=1.7.9
+PKG_RELEASE:=02
 
 PKG_SOURCE:=haproxy-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.haproxy.org/download/1.7/src/
-PKG_HASH:=ec90153ccedd20ad4015d3eaf76b502ff1f61b431d54c22b8457b5784a9ae142
+PKG_HASH:=1072337e54fa188dc6e0cfe3ba4c2200b07082e321cbfe5a0882d85d54db068e
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
 PKG_LICENSE:=GPL-2.0
@@ -30,16 +30,18 @@ define Package/haproxy/Default
   URL:=http://haproxy.1wt.eu/
 endef
 
-define Download/lua533
-       FILE:=lua-5.3.3.tar.gz
+define Download/lua534
+       FILE:=lua-5.3.4.tar.gz
        URL:=http://www.lua.org/ftp/
-       HASH:=5113c06884f7de453ce57702abaac1d618307f33f6789fa870e87a59d772aca2
+       HASH:=f681aa518233bc407e23acf0f5887c884f17436f000d453b2491a9f11a52400c
 endef
 
 define Build/Prepare
        $(call Build/Prepare/Default)
-       tar -zxvf $(DL_DIR)/lua-5.3.3.tar.gz -C $(PKG_BUILD_DIR)
-       ln -s $(PKG_BUILD_DIR)/lua-5.3.3 $(PKG_BUILD_DIR)/lua
+ifeq ($(ENABLE_LUA),y)
+       tar -zxvf $(DL_DIR)/lua-5.3.4.tar.gz -C $(PKG_BUILD_DIR)
+       ln -s $(PKG_BUILD_DIR)/lua-5.3.4 $(PKG_BUILD_DIR)/lua
+endif
 endef
 
 define Package/haproxy/Default/conffiles
@@ -89,6 +91,11 @@ $(call Package/haproxy/Default/description)
  This package is built without SSL support.
 endef
 
+ENABLE_LUA:=y
+ifeq ($(CONFIG_mips),y)
+  ENABLE_LUA:=n
+endif
+
 ifeq ($(CONFIG_avr32),y)
   LINUX_TARGET:=linux26
 else
@@ -97,27 +104,32 @@ endif
 
 ifeq ($(BUILD_VARIANT),ssl)
        ADDON+=USE_OPENSSL=1
+       ADDON+=ADDLIB="-lcrypto -lm "
+else ifeq ($(CONFIG_mips),n)
        ADDON+=USE_LUA=1
-       ADDON+=LUA_LIB_NAME="lua533"
-       ADDON+=LUA_INC="$(STAGING_DIR)/lua-5.3.3/include"
-       ADDON+=LUA_LIB="$(STAGING_DIR)/lua-5.3.3/lib"
-       ADDON+=ADDLIB="-lcrypto -lm "   
+       ADDON+=LUA_LIB_NAME="lua534"
+       ADDON+=LUA_INC="$(STAGING_DIR)/lua-5.3.4/include"
+       ADDON+=LUA_LIB="$(STAGING_DIR)/lua-5.3.4/lib"
 else
        ADDON+=ADDLIB="-lm"
 endif
 
-
-define Build/Compile
+ifeq ($(ENABLE_LUA),y)
+define Build/Compile/lua
        $(MAKE) TARGET=$(LINUX_TARGET) -C $(PKG_BUILD_DIR)/lua \
-               INSTALL_TOP="$(STAGING_DIR)/lua-5.3.3/" \
+               INSTALL_TOP="$(STAGING_DIR)/lua-5.3.4/" \
                CC="$(TARGET_CC)" \
                CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \
                LDFLAGS="$(TARGET_LDFLAGS) -lncurses -lreadline" \
                LD="$(TARGET_LD)" \
                linux install
 
-       mv $(STAGING_DIR)/lua-5.3.3/lib/liblua.a $(STAGING_DIR)/lua-5.3.3/lib/liblua533.a
+       mv $(STAGING_DIR)/lua-5.3.4/lib/liblua.a $(STAGING_DIR)/lua-5.3.4/lib/liblua534.a
+endef
+endif
 
+define Build/Compile
+       $(call Build/Compile/lua)
        $(MAKE) TARGET=$(LINUX_TARGET) -C $(PKG_BUILD_DIR) \
                DESTDIR="$(PKG_INSTALL_DIR)" \
                CC="$(TARGET_CC)" \
@@ -160,7 +172,6 @@ endef
 
 Package/haproxy-nossl/install = $(Package/haproxy/install)
 
-
 define Package/halog
        MENU:=1
        $(call Package/haproxy)
@@ -177,8 +188,7 @@ define Package/halog/install
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/halog/halog $(1)/usr/bin/
 endef
 
-$(eval $(call Download,lua533))
+$(eval $(call Download,lua534))
 $(eval $(call BuildPackage,haproxy))
 $(eval $(call BuildPackage,halog))
 $(eval $(call BuildPackage,haproxy-nossl))
-
diff --git a/net/haproxy/patches/0001-BUG-MEDIUM-connection-remove-useless-flag-CO_FL_DATA.patch b/net/haproxy/patches/0001-BUG-MEDIUM-connection-remove-useless-flag-CO_FL_DATA.patch
new file mode 100644 (file)
index 0000000..dcbef61
--- /dev/null
@@ -0,0 +1,158 @@
+From 912e8f18ef274fdda0a522b2aa8255bddd00fb7b Mon Sep 17 00:00:00 2001
+From: Willy Tarreau <w@1wt.eu>
+Date: Wed, 30 Aug 2017 07:35:35 +0200
+Subject: [PATCH] BUG/MEDIUM: connection: remove useless flag CO_FL_DATA_RD_SH
+
+This flag is both confusing and wrong. It is supposed to report the
+fact that the data layer has received a shutdown, but in fact this is
+reported by CO_FL_SOCK_RD_SH which is set by the transport layer after
+this condition is detected. The only case where the flag above is set
+is in the stream interface where CF_SHUTR is also set on the receiving
+channel.
+
+In addition, it was checked in the health checks code (while never set)
+and was always test jointly with CO_FL_SOCK_RD_SH everywhere, except in
+conn_data_read0_pending() which incorrectly doesn't match the second
+time it's called and is fortunately protected by an extra check on
+(ic->flags & CF_SHUTR).
+
+This patch gets rid of the flag completely. Now conn_data_read0_pending()
+accurately reports the fact that the transport layer has detected the end
+of the stream, regardless of the fact that this state was already consumed,
+and the stream interface watches ic->flags&CF_SHUTR to know if the channel
+was already closed by the upper layer (which it already used to do).
+
+The now unused conn_data_read0() function was removed.
+(cherry picked from commit 54e917cfa1e7b0539550ae32c48c76da2f169041)
+
+[wt: this happens to fix a real bug which occasionally strikes when
+     using http-reuse in the rare case where a server shuts down after
+     providing its response but before the connection is put back into
+     the idle pool, and it gets immediately recycled for another request,
+     without first passing through the idle handler, and the already
+     reported shutdown is never reported to the second transaction,
+     causing a loop to last for as long as the server timeout]
+---
+ contrib/debug/flags.c      |  1 -
+ include/proto/connection.h |  8 +-------
+ include/types/connection.h |  2 +-
+ src/checks.c               |  4 ++--
+ src/stream_interface.c     | 11 +++++------
+ 5 files changed, 9 insertions(+), 17 deletions(-)
+
+diff --git a/contrib/debug/flags.c b/contrib/debug/flags.c
+index bc71bde9..19327f34 100644
+--- a/contrib/debug/flags.c
++++ b/contrib/debug/flags.c
+@@ -117,7 +117,6 @@ void show_conn_flags(unsigned int f)
+       SHOW_FLAG(f, CO_FL_SOCK_WR_SH);
+       SHOW_FLAG(f, CO_FL_SOCK_RD_SH);
+       SHOW_FLAG(f, CO_FL_DATA_WR_SH);
+-      SHOW_FLAG(f, CO_FL_DATA_RD_SH);
+       SHOW_FLAG(f, CO_FL_WAKE_DATA);
+       SHOW_FLAG(f, CO_FL_INIT_DATA);
+       SHOW_FLAG(f, CO_FL_ADDR_TO_SET);
+diff --git a/include/proto/connection.h b/include/proto/connection.h
+index fce60259..eb68322a 100644
+--- a/include/proto/connection.h
++++ b/include/proto/connection.h
+@@ -413,12 +413,6 @@ static inline void conn_sock_read0(struct connection *c)
+               fdtab[c->t.sock.fd].linger_risk = 0;
+ }
+-static inline void conn_data_read0(struct connection *c)
+-{
+-      c->flags |= CO_FL_DATA_RD_SH;
+-      __conn_data_stop_recv(c);
+-}
+-
+ static inline void conn_sock_shutw(struct connection *c)
+ {
+       c->flags |= CO_FL_SOCK_WR_SH;
+@@ -450,7 +444,7 @@ static inline void conn_data_shutw_hard(struct connection *c)
+ /* detect sock->data read0 transition */
+ static inline int conn_data_read0_pending(struct connection *c)
+ {
+-      return (c->flags & (CO_FL_DATA_RD_SH | CO_FL_SOCK_RD_SH)) == CO_FL_SOCK_RD_SH;
++      return (c->flags & CO_FL_SOCK_RD_SH) != 0;
+ }
+ /* detect data->sock shutw transition */
+diff --git a/include/types/connection.h b/include/types/connection.h
+index 02eac932..90e8e073 100644
+--- a/include/types/connection.h
++++ b/include/types/connection.h
+@@ -90,7 +90,7 @@ enum {
+       CO_FL_WAKE_DATA     = 0x00008000,  /* wake-up data layer upon activity at the transport layer */
+       /* flags used to remember what shutdown have been performed/reported */
+-      CO_FL_DATA_RD_SH    = 0x00010000,  /* DATA layer was notified about shutr/read0 */
++      /* unused : 0x00010000 */
+       CO_FL_DATA_WR_SH    = 0x00020000,  /* DATA layer asked for shutw */
+       CO_FL_SOCK_RD_SH    = 0x00040000,  /* SOCK layer was notified about shutr/read0 */
+       CO_FL_SOCK_WR_SH    = 0x00080000,  /* SOCK layer asked for shutw */
+diff --git a/src/checks.c b/src/checks.c
+index ca3881a5..6c5e3cbc 100644
+--- a/src/checks.c
++++ b/src/checks.c
+@@ -839,7 +839,7 @@ static void event_srv_chk_r(struct connection *conn)
+       done = 0;
+       conn->xprt->rcv_buf(conn, check->bi, check->bi->size);
+-      if (conn->flags & (CO_FL_ERROR | CO_FL_SOCK_RD_SH | CO_FL_DATA_RD_SH)) {
++      if (conn->flags & (CO_FL_ERROR | CO_FL_SOCK_RD_SH)) {
+               done = 1;
+               if ((conn->flags & CO_FL_ERROR) && !check->bi->i) {
+                       /* Report network errors only if we got no other data. Otherwise
+@@ -2892,7 +2892,7 @@ static void tcpcheck_main(struct connection *conn)
+                               goto out_end_tcpcheck;
+                       if (conn->xprt->rcv_buf(conn, check->bi, check->bi->size) <= 0) {
+-                              if (conn->flags & (CO_FL_ERROR | CO_FL_SOCK_RD_SH | CO_FL_DATA_RD_SH)) {
++                              if (conn->flags & (CO_FL_ERROR | CO_FL_SOCK_RD_SH)) {
+                                       done = 1;
+                                       if ((conn->flags & CO_FL_ERROR) && !check->bi->i) {
+                                               /* Report network errors only if we got no other data. Otherwise
+diff --git a/src/stream_interface.c b/src/stream_interface.c
+index 836487bd..aba49c94 100644
+--- a/src/stream_interface.c
++++ b/src/stream_interface.c
+@@ -1060,14 +1060,14 @@ static void si_conn_recv_cb(struct connection *conn)
+       if (conn->flags & CO_FL_ERROR)
+               return;
+-      /* stop here if we reached the end of data */
+-      if (conn_data_read0_pending(conn))
+-              goto out_shutdown_r;
+-
+       /* maybe we were called immediately after an asynchronous shutr */
+       if (ic->flags & CF_SHUTR)
+               return;
++      /* stop here if we reached the end of data */
++      if (conn_data_read0_pending(conn))
++              goto out_shutdown_r;
++
+       cur_read = 0;
+       if ((ic->flags & (CF_STREAMER | CF_STREAMER_FAST)) && !ic->buf->o &&
+@@ -1153,7 +1153,7 @@ static void si_conn_recv_cb(struct connection *conn)
+        * that if such an event is not handled above in splice, it will be handled here by
+        * recv().
+        */
+-      while (!(conn->flags & (CO_FL_ERROR | CO_FL_SOCK_RD_SH | CO_FL_DATA_RD_SH | CO_FL_WAIT_ROOM | CO_FL_HANDSHAKE))) {
++      while (!(conn->flags & (CO_FL_ERROR | CO_FL_SOCK_RD_SH | CO_FL_WAIT_ROOM | CO_FL_HANDSHAKE)) && !(ic->flags & CF_SHUTR)) {
+               max = channel_recv_max(ic);
+               if (!max) {
+@@ -1267,7 +1267,6 @@ static void si_conn_recv_cb(struct connection *conn)
+       if (ic->flags & CF_AUTO_CLOSE)
+               channel_shutw_now(ic);
+       stream_sock_read0(si);
+-      conn_data_read0(conn);
+       return;
+ }
+-- 
+2.13.5
+
diff --git a/net/haproxy/patches/0001-BUG-MINOR-peers-peer-synchronization-issue-with-seve.patch b/net/haproxy/patches/0001-BUG-MINOR-peers-peer-synchronization-issue-with-seve.patch
deleted file mode 100644 (file)
index a24c967..0000000
+++ /dev/null
@@ -1,299 +0,0 @@
-From fa73e6b0d5f64eb8a6fd8a1706d7ec03293a943e Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20L=C3=A9caille?= <flecaille@haproxy.com>
-Date: Thu, 13 Jul 2017 09:07:09 +0200
-Subject: [PATCH 01/18] BUG/MINOR: peers: peer synchronization issue (with
- several peers sections).
-
-When several stick-tables were configured with several peers sections,
-only a part of them could be synchronized: the ones attached to the last
-parsed 'peers' section. This was due to the fact that, at least, the peer I/O handler
-refered to the wrong peer section list, in fact always the same: the last one parsed.
-
-The fact that the global peer section list was named "struct peers *peers"
-lead to this issue. This variable name is dangerous ;).
-
-So this patch renames global 'peers' variable to 'cfg_peers' to ensure that
-no such wrong references are still in use, then all the functions wich used
-old 'peers' variable have been modified to refer to the correct peer list.
-
-Must be backported to 1.6 and 1.7.
-(cherry picked from commit ed2b4a6b793d062000518e51ed71e014c649c313)
-
-Signed-off-by: Willy Tarreau <w@1wt.eu>
----
- include/types/peers.h |  2 +-
- src/cfgparse.c        | 18 +++++++++---------
- src/haproxy.c         | 10 +++++-----
- src/peers.c           | 40 ++++++++++++++++++++--------------------
- src/proxy.c           |  6 +++---
- 5 files changed, 38 insertions(+), 38 deletions(-)
-
-diff --git a/include/types/peers.h b/include/types/peers.h
-index 105dffb0..a77a0942 100644
---- a/include/types/peers.h
-+++ b/include/types/peers.h
-@@ -91,7 +91,7 @@ struct peers {
- };
--extern struct peers *peers;
-+extern struct peers *cfg_peers;
- #endif /* _TYPES_PEERS_H */
-diff --git a/src/cfgparse.c b/src/cfgparse.c
-index 8c0906bf..1b53006b 100644
---- a/src/cfgparse.c
-+++ b/src/cfgparse.c
-@@ -2124,7 +2124,7 @@ int cfg_parse_peers(const char *file, int linenum, char **args, int kwm)
-                       goto out;
-               }
--              for (curpeers = peers; curpeers != NULL; curpeers = curpeers->next) {
-+              for (curpeers = cfg_peers; curpeers != NULL; curpeers = curpeers->next) {
-                       /*
-                        * If there are two proxies with the same name only following
-                        * combinations are allowed:
-@@ -2142,8 +2142,8 @@ int cfg_parse_peers(const char *file, int linenum, char **args, int kwm)
-                       goto out;
-               }
--              curpeers->next = peers;
--              peers = curpeers;
-+              curpeers->next = cfg_peers;
-+              cfg_peers = curpeers;
-               curpeers->conf.file = strdup(file);
-               curpeers->conf.line = linenum;
-               curpeers->last_change = now.tv_sec;
-@@ -2223,7 +2223,7 @@ int cfg_parse_peers(const char *file, int linenum, char **args, int kwm)
-               if (strcmp(newpeer->id, localpeer) == 0) {
-                       /* Current is local peer, it define a frontend */
-                       newpeer->local = 1;
--                      peers->local = newpeer;
-+                      cfg_peers->local = newpeer;
-                       if (!curpeers->peers_fe) {
-                               if ((curpeers->peers_fe  = calloc(1, sizeof(struct proxy))) == NULL) {
-@@ -8189,9 +8189,9 @@ int check_config_validity()
-               }
-               if (curproxy->table.peers.name) {
--                      struct peers *curpeers = peers;
-+                      struct peers *curpeers;
--                      for (curpeers = peers; curpeers; curpeers = curpeers->next) {
-+                      for (curpeers = cfg_peers; curpeers; curpeers = curpeers->next) {
-                               if (strcmp(curpeers->id, curproxy->table.peers.name) == 0) {
-                                       free((void *)curproxy->table.peers.name);
-                                       curproxy->table.peers.p = curpeers;
-@@ -9279,15 +9279,15 @@ out_uri_auth_compat:
-               if (curproxy->table.peers.p)
-                       curproxy->table.peers.p->peers_fe->bind_proc |= curproxy->bind_proc;
--      if (peers) {
--              struct peers *curpeers = peers, **last;
-+      if (cfg_peers) {
-+              struct peers *curpeers = cfg_peers, **last;
-               struct peer *p, *pb;
-               /* Remove all peers sections which don't have a valid listener,
-                * which are not used by any table, or which are bound to more
-                * than one process.
-                */
--              last = &peers;
-+              last = &cfg_peers;
-               while (*last) {
-                       curpeers = *last;
-diff --git a/src/haproxy.c b/src/haproxy.c
-index 6d09aed4..25cea0cd 100644
---- a/src/haproxy.c
-+++ b/src/haproxy.c
-@@ -988,7 +988,7 @@ void init(int argc, char **argv)
-               struct peers *pr;
-               struct proxy *px;
--              for (pr = peers; pr; pr = pr->next)
-+              for (pr = cfg_peers; pr; pr = pr->next)
-                       if (pr->peers_fe)
-                               break;
-@@ -1217,11 +1217,11 @@ void init(int argc, char **argv)
-       if (global.stats_fe)
-               global.maxsock += global.stats_fe->maxconn;
--      if (peers) {
-+      if (cfg_peers) {
-               /* peers also need to bypass global maxconn */
--              struct peers *p = peers;
-+              struct peers *p = cfg_peers;
--              for (p = peers; p; p = p->next)
-+              for (p = cfg_peers; p; p = p->next)
-                       if (p->peers_fe)
-                               global.maxsock += p->peers_fe->maxconn;
-       }
-@@ -2067,7 +2067,7 @@ int main(int argc, char **argv)
-               }
-               /* we might have to unbind some peers sections from some processes */
--              for (curpeers = peers; curpeers; curpeers = curpeers->next) {
-+              for (curpeers = cfg_peers; curpeers; curpeers = curpeers->next) {
-                       if (!curpeers->peers_fe)
-                               continue;
-diff --git a/src/peers.c b/src/peers.c
-index 543c84c1..5b8a287a 100644
---- a/src/peers.c
-+++ b/src/peers.c
-@@ -171,7 +171,7 @@ enum {
- #define PEER_MINOR_VER        1
- #define PEER_DWNGRD_MINOR_VER 0
--struct peers *peers = NULL;
-+struct peers *cfg_peers = NULL;
- static void peer_session_forceshutdown(struct appctx *appctx);
- /* This function encode an uint64 to 'dynamic' length format.
-@@ -727,19 +727,19 @@ switchstate:
-                               /* if current peer is local */
-                                 if (curpeer->local) {
-                                         /* if current host need resyncfrom local and no process assined  */
--                                        if ((peers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FROMLOCAL &&
--                                            !(peers->flags & PEERS_F_RESYNC_ASSIGN)) {
-+                                        if ((curpeers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FROMLOCAL &&
-+                                            !(curpeers->flags & PEERS_F_RESYNC_ASSIGN)) {
-                                                 /* assign local peer for a lesson, consider lesson already requested */
-                                                 curpeer->flags |= PEER_F_LEARN_ASSIGN;
--                                                peers->flags |= (PEERS_F_RESYNC_ASSIGN|PEERS_F_RESYNC_PROCESS);
-+                                                curpeers->flags |= (PEERS_F_RESYNC_ASSIGN|PEERS_F_RESYNC_PROCESS);
-                                         }
-                                 }
--                                else if ((peers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FROMREMOTE &&
--                                         !(peers->flags & PEERS_F_RESYNC_ASSIGN)) {
-+                                else if ((curpeers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FROMREMOTE &&
-+                                         !(curpeers->flags & PEERS_F_RESYNC_ASSIGN)) {
-                                         /* assign peer for a lesson  */
-                                         curpeer->flags |= PEER_F_LEARN_ASSIGN;
--                                        peers->flags |= PEERS_F_RESYNC_ASSIGN;
-+                                        curpeers->flags |= PEERS_F_RESYNC_ASSIGN;
-                                 }
-@@ -807,7 +807,7 @@ switchstate:
-                               curpeer->statuscode = atoi(trash.str);
-                               /* Awake main task */
--                              task_wakeup(peers->sync_task, TASK_WOKEN_MSG);
-+                              task_wakeup(curpeers->sync_task, TASK_WOKEN_MSG);
-                               /* If status code is success */
-                               if (curpeer->statuscode == PEER_SESS_SC_SUCCESSCODE) {
-@@ -830,14 +830,14 @@ switchstate:
-                                                 curpeer->flags |= PEER_F_TEACH_PROCESS;
-                                         }
--                                        else if ((peers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FROMREMOTE &&
--                                                    !(peers->flags & PEERS_F_RESYNC_ASSIGN)) {
-+                                        else if ((curpeers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FROMREMOTE &&
-+                                                    !(curpeers->flags & PEERS_F_RESYNC_ASSIGN)) {
-                                                 /* If peer is remote and resync from remote is needed,
-                                                    and no peer currently assigned */
-                                                 /* assign peer for a lesson */
-                                                 curpeer->flags |= PEER_F_LEARN_ASSIGN;
--                                              peers->flags |= PEERS_F_RESYNC_ASSIGN;
-+                                              curpeers->flags |= PEERS_F_RESYNC_ASSIGN;
-                                       }
-                               }
-@@ -950,8 +950,8 @@ switchstate:
-                                               if (curpeer->flags & PEER_F_LEARN_ASSIGN) {
-                                                       curpeer->flags &= ~PEER_F_LEARN_ASSIGN;
--                                                      peers->flags &= ~(PEERS_F_RESYNC_ASSIGN|PEERS_F_RESYNC_PROCESS);
--                                                      peers->flags |= (PEERS_F_RESYNC_LOCAL|PEERS_F_RESYNC_REMOTE);
-+                                                      curpeers->flags &= ~(PEERS_F_RESYNC_ASSIGN|PEERS_F_RESYNC_PROCESS);
-+                                                      curpeers->flags |= (PEERS_F_RESYNC_LOCAL|PEERS_F_RESYNC_REMOTE);
-                                               }
-                                               curpeer->confirm++;
-                                       }
-@@ -959,11 +959,11 @@ switchstate:
-                                               if (curpeer->flags & PEER_F_LEARN_ASSIGN) {
-                                                       curpeer->flags &= ~PEER_F_LEARN_ASSIGN;
--                                                      peers->flags &= ~(PEERS_F_RESYNC_ASSIGN|PEERS_F_RESYNC_PROCESS);
-+                                                      curpeers->flags &= ~(PEERS_F_RESYNC_ASSIGN|PEERS_F_RESYNC_PROCESS);
-                                                       curpeer->flags |= PEER_F_LEARN_NOTUP2DATE;
--                                                      peers->resync_timeout = tick_add(now_ms, MS_TO_TICKS(5000));
--                                                      task_wakeup(peers->sync_task, TASK_WOKEN_MSG);
-+                                                      curpeers->resync_timeout = tick_add(now_ms, MS_TO_TICKS(5000));
-+                                                      task_wakeup(curpeers->sync_task, TASK_WOKEN_MSG);
-                                               }
-                                               curpeer->confirm++;
-                                       }
-@@ -1334,8 +1334,8 @@ incomplete:
-                               /* Need to request a resync */
-                                 if ((curpeer->flags & PEER_F_LEARN_ASSIGN) &&
--                                        (peers->flags & PEERS_F_RESYNC_ASSIGN) &&
--                                        !(peers->flags & PEERS_F_RESYNC_PROCESS)) {
-+                                        (curpeers->flags & PEERS_F_RESYNC_ASSIGN) &&
-+                                        !(curpeers->flags & PEERS_F_RESYNC_PROCESS)) {
-                                       unsigned char msg[2];
-                                         /* Current peer was elected to request a resync */
-@@ -1351,7 +1351,7 @@ incomplete:
-                                                 appctx->st0 = PEER_SESS_ST_END;
-                                                 goto switchstate;
-                                         }
--                                        peers->flags |= PEERS_F_RESYNC_PROCESS;
-+                                        curpeers->flags |= PEERS_F_RESYNC_PROCESS;
-                                 }
-                               /* Nothing to read, now we start to write */
-@@ -1624,7 +1624,7 @@ incomplete:
-                                         /* Current peer was elected to request a resync */
-                                       msg[0] = PEER_MSG_CLASS_CONTROL;
--                                      msg[1] = ((peers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FINISHED) ? PEER_MSG_CTRL_RESYNCFINISHED : PEER_MSG_CTRL_RESYNCPARTIAL;
-+                                      msg[1] = ((curpeers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FINISHED) ? PEER_MSG_CTRL_RESYNCFINISHED : PEER_MSG_CTRL_RESYNCPARTIAL;
-                                       /* process final lesson message */
-                                       repl = bi_putblk(si_ic(si), (char *)msg, sizeof(msg));
-                                       if (repl <= 0) {
-diff --git a/src/proxy.c b/src/proxy.c
-index 78120d9b..bedc7ae0 100644
---- a/src/proxy.c
-+++ b/src/proxy.c
-@@ -1007,7 +1007,7 @@ void soft_stop(void)
-               p = p->next;
-       }
--      prs = peers;
-+      prs = cfg_peers;
-       while (prs) {
-               if (prs->peers_fe)
-                       stop_proxy(prs->peers_fe);
-@@ -1142,7 +1142,7 @@ void pause_proxies(void)
-               p = p->next;
-       }
--      prs = peers;
-+      prs = cfg_peers;
-       while (prs) {
-               if (prs->peers_fe)
-                       err |= !pause_proxy(prs->peers_fe);
-@@ -1176,7 +1176,7 @@ void resume_proxies(void)
-               p = p->next;
-       }
--      prs = peers;
-+      prs = cfg_peers;
-       while (prs) {
-               if (prs->peers_fe)
-                       err |= !resume_proxy(prs->peers_fe);
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0002-BUG-MINOR-lua-In-error-case-the-safe-mode-is-not-rem.patch b/net/haproxy/patches/0002-BUG-MINOR-lua-In-error-case-the-safe-mode-is-not-rem.patch
deleted file mode 100644 (file)
index ea4651d..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-From bcc483a9edfeb8ab69d1af83886d9e1323cffd06 Mon Sep 17 00:00:00 2001
-From: Thierry FOURNIER <thierry.fournier@ozon.io>
-Date: Wed, 12 Jul 2017 11:18:00 +0200
-Subject: [PATCH 02/18] BUG/MINOR: lua: In error case, the safe mode is not
- removed
-
-Just forgot of reset the safe mode. This have not consequences
-the safe mode just set a pointer on fucntion which is called only
-and initialises a longjmp.
-
-Out of lua execution, this longjmp is never executed and the
-function is never called.
-
-This patch should be backported in 1.6 and 1.7
-(cherry picked from commit 0a97620c080232a21ad7fce2c859a2edc9d7147e)
-
-Signed-off-by: Willy Tarreau <w@1wt.eu>
----
- src/hlua.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/hlua.c b/src/hlua.c
-index c862102d..4c1c2d21 100644
---- a/src/hlua.c
-+++ b/src/hlua.c
-@@ -854,6 +854,7 @@ int hlua_ctx_init(struct hlua *lua, struct task *task)
-       lua->T = lua_newthread(gL.T);
-       if (!lua->T) {
-               lua->Tref = LUA_REFNIL;
-+              RESET_SAFE_LJMP(gL.T);
-               return 0;
-       }
-       hlua_sethlua(lua);
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0003-BUG-MINOR-lua-executes-the-function-destroying-the-L.patch b/net/haproxy/patches/0003-BUG-MINOR-lua-executes-the-function-destroying-the-L.patch
deleted file mode 100644 (file)
index 2b200ee..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-From 49d319a677432b69c6a69ef5331ae2ed592075c9 Mon Sep 17 00:00:00 2001
-From: Thierry FOURNIER <thierry.fournier@ozon.io>
-Date: Wed, 12 Jul 2017 13:41:33 +0200
-Subject: [PATCH 03/18] BUG/MINOR: lua: executes the function destroying the
- Lua session in safe mode
-
-When we destroy the Lua session, we manipulates Lua stack,
-so errors can raises. It will be better to catch these errors.
-
-This patch should be backported in 1.6 and 1.7
-(cherry picked from commit 75d0208009c3189b5d10793e08f27dd62a76c3ae)
-
-Signed-off-by: Willy Tarreau <w@1wt.eu>
----
- src/hlua.c | 17 +++++++++++++++--
- 1 file changed, 15 insertions(+), 2 deletions(-)
-
-diff --git a/src/hlua.c b/src/hlua.c
-index 4c1c2d21..2d312804 100644
---- a/src/hlua.c
-+++ b/src/hlua.c
-@@ -876,9 +876,15 @@ void hlua_ctx_destroy(struct hlua *lua)
-       /* Purge all the pending signals. */
-       hlua_com_purge(lua);
-+      if (!SET_SAFE_LJMP(lua->T))
-+              return;
-       luaL_unref(lua->T, LUA_REGISTRYINDEX, lua->Mref);
--      luaL_unref(gL.T, LUA_REGISTRYINDEX, lua->Tref);
-+      RESET_SAFE_LJMP(lua->T);
-+      if (!SET_SAFE_LJMP(gL.T))
-+              return;
-+      luaL_unref(gL.T, LUA_REGISTRYINDEX, lua->Tref);
-+      RESET_SAFE_LJMP(gL.T);
-       /* Forces a garbage collecting process. If the Lua program is finished
-        * without error, we run the GC on the thread pointer. Its freed all
-        * the unused memory.
-@@ -889,9 +895,16 @@ void hlua_ctx_destroy(struct hlua *lua)
-        * the garbage collection.
-        */
-       if (lua->flags & HLUA_MUST_GC) {
-+              if (!SET_SAFE_LJMP(lua->T))
-+                      return;
-               lua_gc(lua->T, LUA_GCCOLLECT, 0);
--              if (lua_status(lua->T) != LUA_OK)
-+              RESET_SAFE_LJMP(lua->T);
-+              if (lua_status(lua->T) != LUA_OK) {
-+                      if (!SET_SAFE_LJMP(gL.T))
-+                              return;
-                       lua_gc(gL.T, LUA_GCCOLLECT, 0);
-+                      RESET_SAFE_LJMP(gL.T);
-+              }
-       }
-       lua->T = NULL;
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0004-BUG-MAJOR-lua-socket-resources-not-detroyed-when-the.patch b/net/haproxy/patches/0004-BUG-MAJOR-lua-socket-resources-not-detroyed-when-the.patch
deleted file mode 100644 (file)
index ced02f5..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-From 2823f54f706f56304970313cb14a98a4ce20d5ab Mon Sep 17 00:00:00 2001
-From: Thierry FOURNIER <thierry.fournier@ozon.io>
-Date: Sun, 16 Jul 2017 20:48:54 +0200
-Subject: [PATCH 04/18] BUG/MAJOR: lua/socket: resources not detroyed when the
- socket is aborted
-
-In some cases, the socket is misused. The user can open socket and never
-close it, or open the socket and close it without sending data. This
-causes resources leak on all resources associated to the stream (buffer,
-spoe, ...)
-
-This is caused by the stream_shutdown function which is called outside
-of the stream execution process. Sometimes, the shtudown is required
-while the stream is not started, so the cleanup is ignored.
-
-This patch change the shutdown mode of the session. Now if the session is
-no longer used and the Lua want to destroy it, it just set a destroy flag
-and the session kill itself.
-
-This patch should be backported in 1.6 and 1.7
-
-(cherry picked from cmomit b13b20a19aacb039a33f886e38a181b00c9a6d41)
-
-Signed-off-by: Willy Tarreau <w@1wt.eu>
----
- include/types/applet.h |  1 +
- src/hlua.c             | 16 ++++++++++++++--
- 2 files changed, 15 insertions(+), 2 deletions(-)
-
-diff --git a/include/types/applet.h b/include/types/applet.h
-index 46b2bc10..aee9167e 100644
---- a/include/types/applet.h
-+++ b/include/types/applet.h
-@@ -122,6 +122,7 @@ struct appctx {
-                       struct hlua_socket *socket;
-                       struct list wake_on_read;
-                       struct list wake_on_write;
-+                      int die;
-               } hlua;
-               struct {
-                       struct hlua hlua;
-diff --git a/src/hlua.c b/src/hlua.c
-index 2d312804..eb003558 100644
---- a/src/hlua.c
-+++ b/src/hlua.c
-@@ -1544,6 +1544,15 @@ static void hlua_socket_handler(struct appctx *appctx)
-       struct stream_interface *si = appctx->owner;
-       struct connection *c = objt_conn(si_opposite(si)->end);
-+      if (appctx->ctx.hlua.die) {
-+              si_shutw(si);
-+              si_shutr(si);
-+              si_ic(si)->flags |= CF_READ_NULL;
-+              hlua_com_wake(&appctx->ctx.hlua.wake_on_read);
-+              hlua_com_wake(&appctx->ctx.hlua.wake_on_write);
-+              stream_shutdown(si_strm(si), SF_ERR_KILLED);
-+      }
-+
-       /* If the connection object is not avalaible, close all the
-        * streams and wakeup everithing waiting for.
-        */
-@@ -1619,9 +1628,10 @@ __LJMP static int hlua_socket_gc(lua_State *L)
-       /* Remove all reference between the Lua stack and the coroutine stream. */
-       appctx = objt_appctx(socket->s->si[0].end);
--      stream_shutdown(socket->s, SF_ERR_KILLED);
-       socket->s = NULL;
-       appctx->ctx.hlua.socket = NULL;
-+      appctx->ctx.hlua.die = 1;
-+      appctx_wakeup(appctx);
-       return 0;
- }
-@@ -1641,10 +1651,11 @@ __LJMP static int hlua_socket_close(lua_State *L)
-               return 0;
-       /* Close the stream and remove the associated stop task. */
--      stream_shutdown(socket->s, SF_ERR_KILLED);
-       appctx = objt_appctx(socket->s->si[0].end);
-       appctx->ctx.hlua.socket = NULL;
-       socket->s = NULL;
-+      appctx->ctx.hlua.die = 1;
-+      appctx_wakeup(appctx);
-       return 0;
- }
-@@ -2316,6 +2327,7 @@ __LJMP static int hlua_socket_new(lua_State *L)
-       appctx->ctx.hlua.socket = socket;
-       appctx->ctx.hlua.connected = 0;
-+      appctx->ctx.hlua.die = 0;
-       LIST_INIT(&appctx->ctx.hlua.wake_on_write);
-       LIST_INIT(&appctx->ctx.hlua.wake_on_read);
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0005-BUG-MEDIUM-lua-bad-memory-access.patch b/net/haproxy/patches/0005-BUG-MEDIUM-lua-bad-memory-access.patch
deleted file mode 100644 (file)
index 97e4d9e..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-From ea3b479be6cacb399a6541a00b1bdce17b0179d0 Mon Sep 17 00:00:00 2001
-From: Thierry FOURNIER <thierry.fournier@ozon.io>
-Date: Mon, 17 Jul 2017 00:44:40 +0200
-Subject: [PATCH 05/18] BUG/MEDIUM: lua: bad memory access
-
-We cannot perform garbage collection on unreferenced thread.
-This memory is now free and another Lua process can use it for
-other things.
-
-HAProxy is monothread, so this bug doesn't cause crash.
-
-This patch must be backported in 1.6 and 1.7
-(cherry picked from commit 7bd10d58d3aecf7cf1e5ee7df01193e07128a52d)
-
-Signed-off-by: Willy Tarreau <w@1wt.eu>
----
- src/hlua.c | 12 +++---------
- 1 file changed, 3 insertions(+), 9 deletions(-)
-
-diff --git a/src/hlua.c b/src/hlua.c
-index eb003558..a998860e 100644
---- a/src/hlua.c
-+++ b/src/hlua.c
-@@ -895,16 +895,10 @@ void hlua_ctx_destroy(struct hlua *lua)
-        * the garbage collection.
-        */
-       if (lua->flags & HLUA_MUST_GC) {
--              if (!SET_SAFE_LJMP(lua->T))
-+              if (!SET_SAFE_LJMP(gL.T))
-                       return;
--              lua_gc(lua->T, LUA_GCCOLLECT, 0);
--              RESET_SAFE_LJMP(lua->T);
--              if (lua_status(lua->T) != LUA_OK) {
--                      if (!SET_SAFE_LJMP(gL.T))
--                              return;
--                      lua_gc(gL.T, LUA_GCCOLLECT, 0);
--                      RESET_SAFE_LJMP(gL.T);
--              }
-+              lua_gc(gL.T, LUA_GCCOLLECT, 0);
-+              RESET_SAFE_LJMP(gL.T);
-       }
-       lua->T = NULL;
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0006-DOC-update-CONTRIBUTING-regarding-optional-parts-and.patch b/net/haproxy/patches/0006-DOC-update-CONTRIBUTING-regarding-optional-parts-and.patch
deleted file mode 100644 (file)
index 7fb83b1..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-From 20850d19250eb530cab889bb9059a630b3f805a3 Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Tue, 18 Jul 2017 06:56:40 +0200
-Subject: [PATCH 06/18] DOC: update CONTRIBUTING regarding optional parts and
- message format
-
-Make it clear that optional components must not break when disabled,
-that openssl is the only officially supported library and its support
-must not be broken, and that bug fixes must always be detailed.
-(cherry picked from commit 9d84cd602f4adb3954209eb14c94eea9254d1b5b)
-
-Signed-off-by: Willy Tarreau <w@1wt.eu>
----
- CONTRIBUTING | 21 ++++++++++++++++++++-
- 1 file changed, 20 insertions(+), 1 deletion(-)
-
-diff --git a/CONTRIBUTING b/CONTRIBUTING
-index 74a099bc..b2c2b493 100644
---- a/CONTRIBUTING
-+++ b/CONTRIBUTING
-@@ -69,6 +69,16 @@ code :
- Since most of these restrictions are just a matter of coding style, it is
- normally not a problem to comply.
-+When modifying some optional subsystem (SSL, Lua, compression, device detection
-+engines), please make sure the code continues to build (and to work) when these
-+features are disabled. Similarly, when modifying the SSL stack, please always
-+ensure that supported OpenSSL versions continue to build and to work, especially
-+if you modify support for alternate libraries. Clean support for the legacy
-+OpenSSL libraries is mandatory, support for its derivatives is a bonus and may
-+occasionally break eventhough a great care is taken. In other words, if you
-+provide a patch for OpenSSL you don't need to test its derivatives, but if you
-+provide a patch for a derivative you also need to test with OpenSSL.
-+
- If your work is very confidential and you can't publicly discuss it, you can
- also mail willy@haproxy.org directly about it, but your mail may be waiting
- several days in the queue before you get a response, if you get a response at
-@@ -441,13 +451,22 @@ do not think about them anymore after a few patches.
-    way the subject is built. Please see the section below for more information
-    regarding this formatting.
--   As a rule of thumb, your patch must never be made only of a subject line,
-+   As a rule of thumb, your patch MUST NEVER be made only of a subject line,
-    it *must* contain a description. Even one or two lines, or indicating
-    whether a backport is desired or not. It turns out that single-line commits
-    are so rare in the Git world that they require special manual (hence
-    painful) handling when they are backported, and at least for this reason
-    it's important to keep this in mind.
-+   Each patch fixing a bug MUST be tagged with "BUG", a severity level, an
-+   indication of the affected subsystem and a brief description of the nature
-+   of the issue in the subject line, and a detailed analysis in the message
-+   body. The explanation of the user-visible impact and the need for
-+   backporting to stable branches or not are MANDATORY. Bug fixes with no
-+   indication will simply be rejected as they are very likely to cause more
-+   harm when nobody is able to tell whether or not the patch needs to be
-+   backported or can be reverted in case of regression.
-+
- 12) Discuss on the mailing list
-    When submitting changes, please always CC the mailing list address so that
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0007-DOC-update-the-list-of-OpenSSL-versions-in-the-READM.patch b/net/haproxy/patches/0007-DOC-update-the-list-of-OpenSSL-versions-in-the-READM.patch
deleted file mode 100644 (file)
index 7be8bc0..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-From 8d99949c4c51d95c14fb2b09d18e1cff058f0c17 Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Tue, 18 Jul 2017 06:58:16 +0200
-Subject: [PATCH 07/18] DOC: update the list of OpenSSL versions in the README
-
-1.1.0 is also supported nowadays. Also mention the best effort support
-for derivatives.
-(cherry picked from commit 7ab16868bc6e9d5ef879e1046effa035789835cc)
-
-Signed-off-by: Willy Tarreau <w@1wt.eu>
----
- README | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/README b/README
-index 839d06ec..8ad70e66 100644
---- a/README
-+++ b/README
-@@ -113,8 +113,12 @@ build fails due to missing symbols such as deflateInit(), then try again with
- Your are strongly encouraged to always use an up-to-date version of OpenSSL, as
- found on https://www.openssl.org/ as vulnerabilities are occasionally found and
- you don't want them on your systems. HAProxy is known to build correctly on all
--currently supported branches (0.9.8, 1.0.0, 1.0.1 and 1.0.2 at the time of
--writing). Branch 1.0.2 is recommended for the richest features.
-+currently supported branches (0.9.8, 1.0.0, 1.0.1, 1.0.2 and 1.1.0 at the time
-+of writing). Branch 1.0.2 is currently recommended for the best combination of
-+features and stability. Asynchronous engines require OpenSSL 1.1.0 though. It's
-+worth mentionning that some OpenSSL derivatives are also reported to work but
-+may occasionally break. Patches to fix them are welcome but please read the
-+CONTRIBUTING file first.
- To link OpenSSL statically against haproxy, build OpenSSL with the no-shared
- keyword and install it to a local directory, so your system is not affected :
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0008-MINOR-tools-add-a-portable-timegm-alternative.patch b/net/haproxy/patches/0008-MINOR-tools-add-a-portable-timegm-alternative.patch
deleted file mode 100644 (file)
index 4546258..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-From 3e21b8d25ad148ef4e6544f28a8b2305f9484a7b Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Wed, 19 Jul 2017 19:05:29 +0200
-Subject: [PATCH 08/18] MINOR: tools: add a portable timegm() alternative
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-timegm() is not provided everywhere and the documentation on how to
-replace it is bogus as it proposes an inefficient and non-thread safe
-alternative.
-
-Here we reimplement everything needed to compute the number of seconds
-since Epoch based on the broken down fields in struct tm. It is only
-guaranteed to return correct values for correct inputs. It was successfully
-tested with all possible 32-bit values of time_t converted to struct tm
-using gmtime() and back to time_t using the legacy timegm() and this
-function, and both functions always produced the same result.
-
-Thanks to Benoît Garnier for an instructive discussion and detailed
-explanations of the various time functions, leading to this solution.
-(cherry picked from commit cb1949b8b30b8db7e05546da2939eff2b5973321)
-
-Signed-off-by: Willy Tarreau <w@1wt.eu>
----
- include/common/standard.h | 21 ++++++++++++++++++
- src/standard.c            | 54 +++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 75 insertions(+)
-
-diff --git a/include/common/standard.h b/include/common/standard.h
-index 87f90a65..c19c368b 100644
---- a/include/common/standard.h
-+++ b/include/common/standard.h
-@@ -624,6 +624,27 @@ static inline void get_gmtime(const time_t now, struct tm *tm)
-       gmtime_r(&now, tm);
- }
-+/* Counts a number of elapsed days since 01/01/0000 based solely on elapsed
-+ * years and assuming the regular rule for leap years applies. It's fake but
-+ * serves as a temporary origin. It's worth remembering that it's the first
-+ * year of each period that is leap and not the last one, so for instance year
-+ * 1 sees 366 days since year 0 was leap. For this reason we have to apply
-+ * modular arithmetics which is why we offset the year by 399 before
-+ * subtracting the excess at the end. No overflow here before ~11.7 million
-+ * years.
-+ */
-+static inline unsigned int days_since_zero(unsigned int y)
-+{
-+      return y * 365 + (y + 399) / 4 - (y + 399) / 100 + (y + 399) / 400
-+             - 399 / 4 + 399 / 100;
-+}
-+
-+/* Returns the number of seconds since 01/01/1970 0:0:0 GMT for GMT date <tm>.
-+ * It is meant as a portable replacement for timegm() for use with valid inputs.
-+ * Returns undefined results for invalid dates (eg: months out of range 0..11).
-+ */
-+extern time_t my_timegm(const struct tm *tm);
-+
- /* This function parses a time value optionally followed by a unit suffix among
-  * "d", "h", "m", "s", "ms" or "us". It converts the value into the unit
-  * expected by the caller. The computation does its best to avoid overflows.
-diff --git a/src/standard.c b/src/standard.c
-index 8df1da6c..e1d414f3 100644
---- a/src/standard.c
-+++ b/src/standard.c
-@@ -2841,6 +2841,60 @@ char *localdate2str_log(char *dst, time_t t, struct tm *tm, size_t size)
-       return dst;
- }
-+/* Returns the number of seconds since 01/01/1970 0:0:0 GMT for GMT date <tm>.
-+ * It is meant as a portable replacement for timegm() for use with valid inputs.
-+ * Returns undefined results for invalid dates (eg: months out of range 0..11).
-+ */
-+time_t my_timegm(const struct tm *tm)
-+{
-+      /* Each month has 28, 29, 30 or 31 days, or 28+N. The date in the year
-+       * is thus (current month - 1)*28 + cumulated_N[month] to count the
-+       * sum of the extra N days for elapsed months. The sum of all these N
-+       * days doesn't exceed 30 for a complete year (366-12*28) so it fits
-+       * in a 5-bit word. This means that with 60 bits we can represent a
-+       * matrix of all these values at once, which is fast and efficient to
-+       * access. The extra February day for leap years is not counted here.
-+       *
-+       * Jan : none      =  0 (0)
-+       * Feb : Jan       =  3 (3)
-+       * Mar : Jan..Feb  =  3 (3 + 0)
-+       * Apr : Jan..Mar  =  6 (3 + 0 + 3)
-+       * May : Jan..Apr  =  8 (3 + 0 + 3 + 2)
-+       * Jun : Jan..May  = 11 (3 + 0 + 3 + 2 + 3)
-+       * Jul : Jan..Jun  = 13 (3 + 0 + 3 + 2 + 3 + 2)
-+       * Aug : Jan..Jul  = 16 (3 + 0 + 3 + 2 + 3 + 2 + 3)
-+       * Sep : Jan..Aug  = 19 (3 + 0 + 3 + 2 + 3 + 2 + 3 + 3)
-+       * Oct : Jan..Sep  = 21 (3 + 0 + 3 + 2 + 3 + 2 + 3 + 3 + 2)
-+       * Nov : Jan..Oct  = 24 (3 + 0 + 3 + 2 + 3 + 2 + 3 + 3 + 2 + 3)
-+       * Dec : Jan..Nov  = 26 (3 + 0 + 3 + 2 + 3 + 2 + 3 + 3 + 2 + 3 + 2)
-+       */
-+      uint64_t extra =
-+              ( 0ULL <<  0*5) + ( 3ULL <<  1*5) + ( 3ULL <<  2*5) + /* Jan, Feb, Mar, */
-+              ( 6ULL <<  3*5) + ( 8ULL <<  4*5) + (11ULL <<  5*5) + /* Apr, May, Jun, */
-+              (13ULL <<  6*5) + (16ULL <<  7*5) + (19ULL <<  8*5) + /* Jul, Aug, Sep, */
-+              (21ULL <<  9*5) + (24ULL << 10*5) + (26ULL << 11*5);  /* Oct, Nov, Dec, */
-+
-+      unsigned int y = tm->tm_year + 1900;
-+      unsigned int m = tm->tm_mon;
-+      unsigned long days = 0;
-+
-+      /* days since 1/1/1970 for full years */
-+      days += days_since_zero(y) - days_since_zero(1970);
-+
-+      /* days for full months in the current year */
-+      days += 28 * m + ((extra >> (m * 5)) & 0x1f);
-+
-+      /* count + 1 after March for leap years. A leap year is a year multiple
-+       * of 4, unless it's multiple of 100 without being multiple of 400. 2000
-+       * is leap, 1900 isn't, 1904 is.
-+       */
-+      if ((m > 1) && !(y & 3) && ((y % 100) || !(y % 400)))
-+              days++;
-+
-+      days += tm->tm_mday - 1;
-+      return days * 86400ULL + tm->tm_hour * 3600 + tm->tm_min * 60 + tm->tm_sec;
-+}
-+
- /* This function check a char. It returns true and updates
-  * <date> and <len> pointer to the new position if the
-  * character is found.
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0009-BUILD-lua-replace-timegm-with-my_timegm-to-fix-build.patch b/net/haproxy/patches/0009-BUILD-lua-replace-timegm-with-my_timegm-to-fix-build.patch
deleted file mode 100644 (file)
index 623ce95..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-From df1655a6c0e4431317cc66c67693281092a952b0 Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Wed, 19 Jul 2017 19:08:48 +0200
-Subject: [PATCH 09/18] BUILD: lua: replace timegm() with my_timegm() to fix
- build on Solaris 10
-
-Akhnin Nikita reported that Lua doesn't build on Solaris 10 because
-the code uses timegm() to parse a date, which is not provided there.
-The recommended way to implement timegm() is broken in the man page,
-as it is based on a change of the TZ environment variable at run time
-before calling the function (which is obviously not thread safe, and
-terribly inefficient).
-
-Here instead we rely on the new my_timegm() function, it should be
-sufficient for all known use cases.
-(cherry picked from commit abd9bb20b76818c9f461a82b72b10818736ff8b3)
-
-Signed-off-by: Willy Tarreau <w@1wt.eu>
----
- src/hlua_fcn.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/hlua_fcn.c b/src/hlua_fcn.c
-index 58905d7d..fe899a4a 100644
---- a/src/hlua_fcn.c
-+++ b/src/hlua_fcn.c
-@@ -287,7 +287,7 @@ static int hlua_parse_date(lua_State *L, int (*fcn)(const char *, int, struct tm
-        * the timezone from the broken-down time, it must be fixed
-        * after the conversion.
-        */
--      time = timegm(&tm);
-+      time = my_timegm(&tm);
-       if (time == -1) {
-               lua_pushnil(L);
-               return 1;
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0010-DOC-Updated-51Degrees-git-URL-to-point-to-a-stable-v.patch b/net/haproxy/patches/0010-DOC-Updated-51Degrees-git-URL-to-point-to-a-stable-v.patch
deleted file mode 100644 (file)
index 2deb9a3..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-From e14ec1d816de60b648dd7cb6c55b665f5163156b Mon Sep 17 00:00:00 2001
-From: ben51degrees <ben@51degrees.com>
-Date: Wed, 19 Jul 2017 16:22:04 +0100
-Subject: [PATCH 10/18] DOC: Updated 51Degrees git URL to point to a stable
- version.
-
-The previously documented location doesn't work anymore and must not be
-used. Warning for backports, different branches are in use depending on
-the version (v3.2.10 for 1.7, v3.2.5 for 1.6).
-(cherry picked from commit ac752ff68cd3ac88a7a27ce17daa5c3f0c839694)
-
-Signed-off-by: Willy Tarreau <w@1wt.eu>
----
- doc/51Degrees-device-detection.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/doc/51Degrees-device-detection.txt b/doc/51Degrees-device-detection.txt
-index 1ee912d9..71b2eb76 100644
---- a/doc/51Degrees-device-detection.txt
-+++ b/doc/51Degrees-device-detection.txt
-@@ -14,7 +14,7 @@ headers as configurable parameters.
- In order to enable 51Degrees download the 51Degrees source code from the
- official github repository :
--    git clone https://github.com/51Degrees/Device-Detection
-+    git clone https://git.51Degrees.com/Device-Detection.git -b v3.2.10
- then run 'make' with USE_51DEGREES and 51DEGREES_SRC set. Both 51DEGREES_INC
- and 51DEGREES_LIB may additionally be used to force specific different paths
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0011-BUG-MINOR-http-Set-the-response-error-state-in-http_.patch b/net/haproxy/patches/0011-BUG-MINOR-http-Set-the-response-error-state-in-http_.patch
deleted file mode 100644 (file)
index 435a457..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-From 9304b76fb37a36f6249ec963093d74210bd237f6 Mon Sep 17 00:00:00 2001
-From: Christopher Faulet <cfaulet@haproxy.com>
-Date: Tue, 18 Jul 2017 10:35:55 +0200
-Subject: [PATCH 11/18] BUG/MINOR: http: Set the response error state in
- http_sync_res_state
-
-This is just typo. It may only report a wrong response message state in
-"show errors" on the CLI.
-
-This patch must be backported in 1.7.
-
-(cherry picked from commit a3992e06a6e74142d9784d18d8cb3527fadb64d6)
-Signed-off-by: William Lallemand <wlallemand@haproxy.org>
----
- src/proto_http.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/proto_http.c b/src/proto_http.c
-index 94c8d639..796955f5 100644
---- a/src/proto_http.c
-+++ b/src/proto_http.c
-@@ -5530,7 +5530,7 @@ int http_sync_res_state(struct stream *s)
-                       goto http_msg_closed;
-               }
-               else if (chn->flags & CF_SHUTW) {
--                      txn->req.err_state = txn->req.msg_state;
-+                      txn->rsp.err_state = txn->rsp.msg_state;
-                       txn->rsp.msg_state = HTTP_MSG_ERROR;
-                       s->be->be_counters.cli_aborts++;
-                       if (objt_server(s->target))
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0012-MINOR-http-Reorder-rewrite-checks-in-http_resync_sta.patch b/net/haproxy/patches/0012-MINOR-http-Reorder-rewrite-checks-in-http_resync_sta.patch
deleted file mode 100644 (file)
index c26e080..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-From a49007a187ab7fddfcec58e1d9fc8a707e4531c9 Mon Sep 17 00:00:00 2001
-From: Christopher Faulet <cfaulet@haproxy.com>
-Date: Tue, 18 Jul 2017 11:18:46 +0200
-Subject: [PATCH 12/18] MINOR: http: Reorder/rewrite checks in
- http_resync_states
-
-The previous patch removed the forced symmetry of the TUNNEL mode during the
-state synchronization. Here, we take care to remove body analyzer only on the
-channel in TUNNEL mode. In fact, today, this change has no effect because both
-sides are switched in same time. But this way, with some changes, it will be
-possible to keep body analyzer on a side (to finish the states synchronization)
-with the other one in TUNNEL mode.
-
-WARNING: This patch will be used to fix a bug. The fix will be commited in a
-very next commit. So if the fix is backported, this one must be backported too.
-
-(cherry picked from commit f77bb539d4846ab278269b99a3165a5608ca0cf4)
-Signed-off-by: William Lallemand <wlallemand@haproxy.org>
----
- src/proto_http.c | 48 +++++++++++++++++++++++++++++-------------------
- 1 file changed, 29 insertions(+), 19 deletions(-)
-
-diff --git a/src/proto_http.c b/src/proto_http.c
-index 796955f5..aaf9f648 100644
---- a/src/proto_http.c
-+++ b/src/proto_http.c
-@@ -5577,34 +5577,27 @@ int http_resync_states(struct stream *s)
-       /* OK, both state machines agree on a compatible state.
-        * There are a few cases we're interested in :
--       *  - HTTP_MSG_TUNNEL on either means we have to disable both analysers
-        *  - HTTP_MSG_CLOSED on both sides means we've reached the end in both
-        *    directions, so let's simply disable both analysers.
--       *  - HTTP_MSG_CLOSED on the response only means we must abort the
--       *    request.
--       *  - HTTP_MSG_CLOSED on the request and HTTP_MSG_DONE on the response
--       *    with server-close mode means we've completed one request and we
--       *    must re-initialize the server connection.
-+       *  - HTTP_MSG_CLOSED on the response only or HTTP_MSG_ERROR on either
-+       *    means we must abort the request.
-+       *  - HTTP_MSG_TUNNEL on either means we have to disable analyser on
-+       *    corresponding channel.
-+       *  - HTTP_MSG_DONE or HTTP_MSG_CLOSED on the request and HTTP_MSG_DONE
-+       *    on the response with server-close mode means we've completed one
-+       *    request and we must re-initialize the server connection.
-        */
--
--      if (txn->req.msg_state == HTTP_MSG_TUNNEL ||
--          txn->rsp.msg_state == HTTP_MSG_TUNNEL ||
--          (txn->req.msg_state == HTTP_MSG_CLOSED &&
--           txn->rsp.msg_state == HTTP_MSG_CLOSED)) {
-+      if (txn->req.msg_state == HTTP_MSG_CLOSED &&
-+          txn->rsp.msg_state == HTTP_MSG_CLOSED) {
-               s->req.analysers &= AN_REQ_FLT_END;
-               channel_auto_close(&s->req);
-               channel_auto_read(&s->req);
-               s->res.analysers &= AN_RES_FLT_END;
-               channel_auto_close(&s->res);
-               channel_auto_read(&s->res);
--              if (txn->req.msg_state == HTTP_MSG_TUNNEL && HAS_REQ_DATA_FILTERS(s))
--                      s->req.analysers |= AN_REQ_FLT_XFER_DATA;
--              if (txn->rsp.msg_state == HTTP_MSG_TUNNEL && HAS_RSP_DATA_FILTERS(s))
--                      s->res.analysers |= AN_RES_FLT_XFER_DATA;
--      }
--      else if ((txn->req.msg_state >= HTTP_MSG_DONE &&
--                (txn->rsp.msg_state == HTTP_MSG_CLOSED || (s->res.flags & CF_SHUTW))) ||
--               txn->rsp.msg_state == HTTP_MSG_ERROR ||
-+      }
-+      else if (txn->rsp.msg_state == HTTP_MSG_CLOSED ||
-+               txn->rsp.msg_state == HTTP_MSG_ERROR  ||
-                txn->req.msg_state == HTTP_MSG_ERROR) {
-               s->res.analysers &= AN_RES_FLT_END;
-               channel_auto_close(&s->res);
-@@ -5615,6 +5608,23 @@ int http_resync_states(struct stream *s)
-               channel_auto_read(&s->req);
-               channel_truncate(&s->req);
-       }
-+      else if (txn->req.msg_state == HTTP_MSG_TUNNEL ||
-+               txn->rsp.msg_state == HTTP_MSG_TUNNEL) {
-+              if (txn->req.msg_state == HTTP_MSG_TUNNEL) {
-+                      s->req.analysers &= AN_REQ_FLT_END;
-+                      if (HAS_REQ_DATA_FILTERS(s))
-+                              s->req.analysers |= AN_REQ_FLT_XFER_DATA;
-+              }
-+              if (txn->rsp.msg_state == HTTP_MSG_TUNNEL) {
-+                      s->res.analysers &= AN_RES_FLT_END;
-+                      if (HAS_RSP_DATA_FILTERS(s))
-+                              s->res.analysers |= AN_RES_FLT_XFER_DATA;
-+              }
-+              channel_auto_close(&s->req);
-+              channel_auto_read(&s->req);
-+              channel_auto_close(&s->res);
-+              channel_auto_read(&s->res);
-+      }
-       else if ((txn->req.msg_state == HTTP_MSG_DONE ||
-                 txn->req.msg_state == HTTP_MSG_CLOSED) &&
-                txn->rsp.msg_state == HTTP_MSG_DONE &&
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0013-MINOR-http-Switch-requests-responses-in-TUNNEL-mode-.patch b/net/haproxy/patches/0013-MINOR-http-Switch-requests-responses-in-TUNNEL-mode-.patch
deleted file mode 100644 (file)
index ea2923d..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-From 1430a0c0f62fcff4303706f5baf2b544e00fcda3 Mon Sep 17 00:00:00 2001
-From: Christopher Faulet <cfaulet@haproxy.com>
-Date: Tue, 18 Jul 2017 10:48:24 +0200
-Subject: [PATCH 13/18] MINOR: http: Switch requests/responses in TUNNEL mode
- only by checking txn flags
-
-Today, the only way to have a request or a response in HTTP_MSG_TUNNEL state is
-to have the flag TX_CON_WANT_TUN set on the transaction. So this is a symmetric
-state. Both the request and the response are switch in same time in this
-state. This can be done only by checking transaction flags instead of relying on
-the other side state. This is the purpose of this patch.
-
-This way, if for any reason we need to switch only one side in TUNNEL mode, it
-will be possible. And to prepare asymmetric cases, we check channel flags in
-DONE _AND_ TUNNEL states.
-
-WARNING: This patch will be used to fix a bug. The fix will be commited in a
-very next commit. So if the fix is backported, this one must be backported too.
-
-(cherry picked from commit 4be9803914ae7156109c915659aad216e4a3c6c1)
-Signed-off-by: William Lallemand <wlallemand@haproxy.org>
----
- src/proto_http.c | 65 +++++++++++++++++++-------------------------------------
- 1 file changed, 22 insertions(+), 43 deletions(-)
-
-diff --git a/src/proto_http.c b/src/proto_http.c
-index aaf9f648..00a92cdb 100644
---- a/src/proto_http.c
-+++ b/src/proto_http.c
-@@ -5294,7 +5294,7 @@ int http_sync_req_state(struct stream *s)
-       unsigned int old_flags = chn->flags;
-       unsigned int old_state = txn->req.msg_state;
--      if (unlikely(txn->req.msg_state < HTTP_MSG_BODY))
-+      if (unlikely(txn->req.msg_state < HTTP_MSG_DONE))
-               return 0;
-       if (txn->req.msg_state == HTTP_MSG_DONE) {
-@@ -5338,13 +5338,6 @@ int http_sync_req_state(struct stream *s)
-                       goto wait_other_side;
-               }
--              if (txn->rsp.msg_state == HTTP_MSG_TUNNEL) {
--                      /* if any side switches to tunnel mode, the other one does too */
--                      channel_auto_read(chn);
--                      txn->req.msg_state = HTTP_MSG_TUNNEL;
--                      goto wait_other_side;
--              }
--
-               /* When we get here, it means that both the request and the
-                * response have finished receiving. Depending on the connection
-                * mode, we'll have to wait for the last bytes to leave in either
-@@ -5377,20 +5370,7 @@ int http_sync_req_state(struct stream *s)
-                       }
-               }
--              if (chn->flags & (CF_SHUTW|CF_SHUTW_NOW)) {
--                      /* if we've just closed an output, let's switch */
--                      s->si[1].flags |= SI_FL_NOLINGER;  /* we want to close ASAP */
--
--                      if (!channel_is_empty(chn)) {
--                              txn->req.msg_state = HTTP_MSG_CLOSING;
--                              goto http_msg_closing;
--                      }
--                      else {
--                              txn->req.msg_state = HTTP_MSG_CLOSED;
--                              goto http_msg_closed;
--                      }
--              }
--              goto wait_other_side;
-+              goto check_channel_flags;
-       }
-       if (txn->req.msg_state == HTTP_MSG_CLOSING) {
-@@ -5419,6 +5399,16 @@ int http_sync_req_state(struct stream *s)
-               goto wait_other_side;
-       }
-+ check_channel_flags:
-+      /* Here, we are in HTTP_MSG_DONE or HTTP_MSG_TUNNEL */
-+      if (chn->flags & (CF_SHUTW|CF_SHUTW_NOW)) {
-+              /* if we've just closed an output, let's switch */
-+              s->si[1].flags |= SI_FL_NOLINGER;  /* we want to close ASAP */
-+              txn->req.msg_state = HTTP_MSG_CLOSING;
-+              goto http_msg_closing;
-+      }
-+
-+
-  wait_other_side:
-       return txn->req.msg_state != old_state || chn->flags != old_flags;
- }
-@@ -5438,7 +5428,7 @@ int http_sync_res_state(struct stream *s)
-       unsigned int old_flags = chn->flags;
-       unsigned int old_state = txn->rsp.msg_state;
--      if (unlikely(txn->rsp.msg_state < HTTP_MSG_BODY))
-+      if (unlikely(txn->rsp.msg_state < HTTP_MSG_DONE))
-               return 0;
-       if (txn->rsp.msg_state == HTTP_MSG_DONE) {
-@@ -5461,14 +5451,6 @@ int http_sync_res_state(struct stream *s)
-                       goto wait_other_side;
-               }
--              if (txn->req.msg_state == HTTP_MSG_TUNNEL) {
--                      /* if any side switches to tunnel mode, the other one does too */
--                      channel_auto_read(chn);
--                      txn->rsp.msg_state = HTTP_MSG_TUNNEL;
--                      chn->flags |= CF_NEVER_WAIT;
--                      goto wait_other_side;
--              }
--
-               /* When we get here, it means that both the request and the
-                * response have finished receiving. Depending on the connection
-                * mode, we'll have to wait for the last bytes to leave in either
-@@ -5506,18 +5488,7 @@ int http_sync_res_state(struct stream *s)
-                               txn->rsp.msg_state = HTTP_MSG_TUNNEL;
-               }
--              if (chn->flags & (CF_SHUTW|CF_SHUTW_NOW)) {
--                      /* if we've just closed an output, let's switch */
--                      if (!channel_is_empty(chn)) {
--                              txn->rsp.msg_state = HTTP_MSG_CLOSING;
--                              goto http_msg_closing;
--                      }
--                      else {
--                              txn->rsp.msg_state = HTTP_MSG_CLOSED;
--                              goto http_msg_closed;
--                      }
--              }
--              goto wait_other_side;
-+              goto check_channel_flags;
-       }
-       if (txn->rsp.msg_state == HTTP_MSG_CLOSING) {
-@@ -5548,6 +5519,14 @@ int http_sync_res_state(struct stream *s)
-               goto wait_other_side;
-       }
-+ check_channel_flags:
-+      /* Here, we are in HTTP_MSG_DONE or HTTP_MSG_TUNNEL */
-+      if (chn->flags & (CF_SHUTW|CF_SHUTW_NOW)) {
-+              /* if we've just closed an output, let's switch */
-+              txn->rsp.msg_state = HTTP_MSG_CLOSING;
-+              goto http_msg_closing;
-+      }
-+
-  wait_other_side:
-       /* We force the response to leave immediately if we're waiting for the
-        * other side, since there is no pending shutdown to push it out.
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0014-BUG-MEDIUM-http-Switch-HTTP-responses-in-TUNNEL-mode.patch b/net/haproxy/patches/0014-BUG-MEDIUM-http-Switch-HTTP-responses-in-TUNNEL-mode.patch
deleted file mode 100644 (file)
index aca24c1..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-From f82344c1cf20afcf77e8c3df8f9d341d659da93b Mon Sep 17 00:00:00 2001
-From: Christopher Faulet <cfaulet@haproxy.com>
-Date: Tue, 18 Jul 2017 11:42:08 +0200
-Subject: [PATCH 14/18] BUG/MEDIUM: http: Switch HTTP responses in TUNNEL mode
- when body length is undefined
-
-When the body length of a HTTP response is undefined, the HTTP parser is blocked
-in the body parsing. Before HAProxy 1.7, in this case, because
-AN_RES_HTTP_XFER_BODY is never set, there is no visible effect. When the server
-closes its connection to terminate the response, HAProxy catches it as a normal
-closure. Since 1.7, we always set this analyzer to enter at least once in
-http_response_forward_body. But, in the present case, when the server connection
-is closed, http_response_forward_body is called one time too many. The response
-is correctly sent to the client, but an error is catched and logged with "SD--"
-flags.
-
-To reproduce the bug, you can use the configuration "tests/test-fsm.cfg". The
-tests 3 and 21 hit the bug.
-
-Idea to fix the bug is to switch the response in TUNNEL mode without switching
-the request. This is possible because of previous patches.
-
-First, we need to detect responses with undefined body length during states
-synchronization. Excluding tunnelled transactions, when the response length is
-undefined, TX_CON_WANT_CLO is always set on the transaction. So, when states are
-synchronized, if TX_CON_WANT_CLO is set, the response is switched in TUNNEL mode
-and the request remains unchanged.
-
-Then, in http_msg_forward_body, we add a specific check to switch the response
-in DONE mode if the body length is undefined and if there is no data filter.
-
-This patch depends on following previous commits:
-
-  * MINOR: http: Switch requests/responses in TUNNEL mode only by checking txn flags
-  * MINOR: http: Reorder/rewrite checks in http_resync_states
-
-This patch must be backported in 1.7 with 2 previous ones.
-
-(cherry picked from commit 1486b0ab6de744e14ae684af105951345534f9ec)
-Signed-off-by: William Lallemand <wlallemand@haproxy.org>
----
- src/proto_http.c | 37 +++++++++++++++++++++++++------------
- 1 file changed, 25 insertions(+), 12 deletions(-)
-
-diff --git a/src/proto_http.c b/src/proto_http.c
-index 00a92cdb..e776e4d5 100644
---- a/src/proto_http.c
-+++ b/src/proto_http.c
-@@ -5354,7 +5354,16 @@ int http_sync_req_state(struct stream *s)
-                        * let's enforce it now that we're not expecting any new
-                        * data to come. The caller knows the stream is complete
-                        * once both states are CLOSED.
-+                       *
-+                       *  However, there is an exception if the response
-+                       *  length is undefined. In this case, we need to wait
-+                       *  the close from the server. The response will be
-+                       *  switched in TUNNEL mode until the end.
-                        */
-+                      if (!(txn->rsp.flags & HTTP_MSGF_XFER_LEN) &&
-+                          txn->rsp.msg_state != HTTP_MSG_CLOSED)
-+                              goto check_channel_flags;
-+
-                       if (!(chn->flags & (CF_SHUTW|CF_SHUTW_NOW))) {
-                               channel_shutr_now(chn);
-                               channel_shutw_now(chn);
-@@ -5471,8 +5480,16 @@ int http_sync_res_state(struct stream *s)
-                        * let's enforce it now that we're not expecting any new
-                        * data to come. The caller knows the stream is complete
-                        * once both states are CLOSED.
-+                       *
-+                       * However, there is an exception if the response length
-+                       * is undefined. In this case, we switch in TUNNEL mode.
-                        */
--                      if (!(chn->flags & (CF_SHUTW|CF_SHUTW_NOW))) {
-+                      if (!(txn->rsp.flags & HTTP_MSGF_XFER_LEN)) {
-+                              channel_auto_read(chn);
-+                              txn->rsp.msg_state = HTTP_MSG_TUNNEL;
-+                              chn->flags |= CF_NEVER_WAIT;
-+                      }
-+                      else if (!(chn->flags & (CF_SHUTW|CF_SHUTW_NOW))) {
-                               channel_shutr_now(chn);
-                               channel_shutw_now(chn);
-                       }
-@@ -6952,14 +6969,6 @@ int http_response_forward_body(struct stream *s, struct channel *res, int an_bit
-       if ((msg->flags & HTTP_MSGF_TE_CHNK) || (msg->flags & HTTP_MSGF_COMPRESSING))
-               res->flags |= CF_EXPECT_MORE;
--      /* If there is neither content-length, nor transfer-encoding header
--       * _AND_ there is no data filtering, we can safely forward all data
--       * indefinitely. */
--      if (!(msg->flags & HTTP_MSGF_XFER_LEN) && !HAS_DATA_FILTERS(s, res)) {
--              buffer_flush(res->buf);
--              channel_forward_forever(res);
--      }
--
-       /* the stream handler will take care of timeouts and errors */
-       return 0;
-@@ -7036,9 +7045,13 @@ http_msg_forward_body(struct stream *s, struct http_msg *msg)
-               goto missing_data_or_waiting;
-       }
--      /* The server still sending data that should be filtered */
--      if (!(msg->flags & HTTP_MSGF_XFER_LEN) && !(chn->flags & CF_SHUTR))
--              goto missing_data_or_waiting;
-+      /* This check can only be true for a response. HTTP_MSGF_XFER_LEN is
-+       * always set for a request. */
-+      if (!(msg->flags & HTTP_MSGF_XFER_LEN)) {
-+              /* The server still sending data that should be filtered */
-+              if (!(chn->flags & CF_SHUTR) && HAS_DATA_FILTERS(s, chn))
-+                      goto missing_data_or_waiting;
-+      }
-       msg->msg_state = HTTP_MSG_ENDING;
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0015-BUG-MAJOR-http-Fix-possible-infinity-loop-in-http_sy.patch b/net/haproxy/patches/0015-BUG-MAJOR-http-Fix-possible-infinity-loop-in-http_sy.patch
deleted file mode 100644 (file)
index 1552dfc..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-From af9b52e92be8ca6a07f9156dcb0b08dd2ad8db75 Mon Sep 17 00:00:00 2001
-From: Christopher Faulet <cfaulet@haproxy.com>
-Date: Thu, 20 Jul 2017 11:05:10 +0200
-Subject: [PATCH 15/18] BUG/MAJOR: http: Fix possible infinity loop in
- http_sync_(req|res)_state
-
-In commit "MINOR: http: Switch requests/responses in TUNNEL mode only by
-checking txn flags", it is possible to have an infinite loop on HTTP_MSG_CLOSING
-state.
-
-(cherry picked from commit 56d260916f61e48c8b2f1fd2f9431afac776d160)
-Signed-off-by: William Lallemand <wlallemand@haproxy.org>
----
- src/proto_http.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/proto_http.c b/src/proto_http.c
-index e776e4d5..4a030013 100644
---- a/src/proto_http.c
-+++ b/src/proto_http.c
-@@ -5394,8 +5394,8 @@ int http_sync_req_state(struct stream *s)
-               else if (chn->flags & CF_SHUTW) {
-                       txn->req.err_state = txn->req.msg_state;
-                       txn->req.msg_state = HTTP_MSG_ERROR;
--                      goto wait_other_side;
-               }
-+              goto wait_other_side;
-       }
-       if (txn->req.msg_state == HTTP_MSG_CLOSED) {
-@@ -5523,8 +5523,8 @@ int http_sync_res_state(struct stream *s)
-                       s->be->be_counters.cli_aborts++;
-                       if (objt_server(s->target))
-                               objt_server(s->target)->counters.cli_aborts++;
--                      goto wait_other_side;
-               }
-+              goto wait_other_side;
-       }
-       if (txn->rsp.msg_state == HTTP_MSG_CLOSED) {
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0016-BUG-MINOR-lua-Fix-Server.get_addr-port-values.patch b/net/haproxy/patches/0016-BUG-MINOR-lua-Fix-Server.get_addr-port-values.patch
deleted file mode 100644 (file)
index 0e1d9ab..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-From c00347899e9f0c3420f98c53eab1469644e28e06 Mon Sep 17 00:00:00 2001
-From: Nenad Merdanovic <nmerdan@haproxy.com>
-Date: Sun, 23 Jul 2017 22:04:58 -0400
-Subject: [PATCH 16/18] BUG/MINOR: lua: Fix Server.get_addr() port values
-
-The get_addr() method of the Lua Server class was using the
-'sockaddr_storage addr' member to get the port value. HAProxy does not
-store ports in this member as it uses a separate member, called
-'svc_port'.
-
-This fix should be backported to 1.7.
-
-(cherry picked from commit 3849473828f319829aff422d2fbbce0823e65d64)
-Signed-off-by: William Lallemand <wlallemand@haproxy.org>
----
- src/hlua_fcn.c | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/src/hlua_fcn.c b/src/hlua_fcn.c
-index fe899a4a..0752220e 100644
---- a/src/hlua_fcn.c
-+++ b/src/hlua_fcn.c
-@@ -545,8 +545,7 @@ int hlua_server_get_addr(lua_State *L)
-                         addr, INET_ADDRSTRLEN);
-               luaL_addstring(&b, addr);
-               luaL_addstring(&b, ":");
--              snprintf(addr, INET_ADDRSTRLEN, "%d",
--                       ntohs(((struct sockaddr_in *)&srv->addr)->sin_port));
-+              snprintf(addr, INET_ADDRSTRLEN, "%d", srv->svc_port);
-               luaL_addstring(&b, addr);
-               break;
-       case AF_INET6:
-@@ -554,8 +553,7 @@ int hlua_server_get_addr(lua_State *L)
-                         addr, INET_ADDRSTRLEN);
-               luaL_addstring(&b, addr);
-               luaL_addstring(&b, ":");
--              snprintf(addr, INET_ADDRSTRLEN, "%d",
--                       ntohs(((struct sockaddr_in6 *)&srv->addr)->sin6_port));
-+              snprintf(addr, INET_ADDRSTRLEN, "%d", srv->svc_port);
-               luaL_addstring(&b, addr);
-               break;
-       case AF_UNIX:
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0017-BUG-MINOR-lua-Correctly-use-INET6_ADDRSTRLEN-in-Serv.patch b/net/haproxy/patches/0017-BUG-MINOR-lua-Correctly-use-INET6_ADDRSTRLEN-in-Serv.patch
deleted file mode 100644 (file)
index 408b42d..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-From e79fe9bc0ae363e91555f1ba64889e2ddf475b8e Mon Sep 17 00:00:00 2001
-From: Nenad Merdanovic <nmerdan@haproxy.com>
-Date: Sun, 23 Jul 2017 22:04:59 -0400
-Subject: [PATCH 17/18] BUG/MINOR: lua: Correctly use INET6_ADDRSTRLEN in
- Server.get_addr()
-
-The get_addr() method of the Lua Server class incorrectly used
-INET_ADDRSTRLEN for IPv6 addresses resulting in failing to convert
-longer IPv6 addresses to strings.
-
-This fix should be backported to 1.7.
-
-(cherry picked from commit a9f040453acc09e888c3f2dc983f15dcf3fa66e3)
-Signed-off-by: William Lallemand <wlallemand@haproxy.org>
----
- src/hlua_fcn.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/hlua_fcn.c b/src/hlua_fcn.c
-index 0752220e..f8b9b5ec 100644
---- a/src/hlua_fcn.c
-+++ b/src/hlua_fcn.c
-@@ -550,7 +550,7 @@ int hlua_server_get_addr(lua_State *L)
-               break;
-       case AF_INET6:
-               inet_ntop(AF_INET6, &((struct sockaddr_in6 *)&srv->addr)->sin6_addr,
--                        addr, INET_ADDRSTRLEN);
-+                        addr, INET6_ADDRSTRLEN);
-               luaL_addstring(&b, addr);
-               luaL_addstring(&b, ":");
-               snprintf(addr, INET_ADDRSTRLEN, "%d", srv->svc_port);
--- 
-2.13.0
-
diff --git a/net/haproxy/patches/0018-BUG-MINOR-lua-always-detach-the-tcp-http-tasks-befor.patch b/net/haproxy/patches/0018-BUG-MINOR-lua-always-detach-the-tcp-http-tasks-befor.patch
deleted file mode 100644 (file)
index c1f2310..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-From dd18f945c26fc30872a52c66b06b5a0a86b10060 Mon Sep 17 00:00:00 2001
-From: Willy Tarreau <w@1wt.eu>
-Date: Mon, 24 Jul 2017 17:35:27 +0200
-Subject: [PATCH 18/18] BUG/MINOR: lua: always detach the tcp/http tasks before
- freeing them
-
-In hlua_{http,tcp}_applet_release(), a call to task_free() is performed
-to release the task, but no task_delete() is made on these tasks. Till
-now it wasn't much of a problem because this was normally not done with
-the task in the run queue, and the task was never put into the wait queue
-since it doesn't have any timer. But with threading it will become an
-issue. And not having this already prevents another bug from being fixed.
-
-Thanks to Christopher for spotting this one. A backport to 1.7 and 1.6 is
-preferred for safety.
-
-(cherry picked from commit bd7fc95edbce821f1d7b745a7b75deef4d6b1e27)
-Signed-off-by: William Lallemand <wlallemand@haproxy.org>
----
- src/hlua.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/hlua.c b/src/hlua.c
-index a998860e..67b9458c 100644
---- a/src/hlua.c
-+++ b/src/hlua.c
-@@ -5948,6 +5948,7 @@ error:
- static void hlua_applet_tcp_release(struct appctx *ctx)
- {
-+      task_delete(ctx->ctx.hlua_apptcp.task);
-       task_free(ctx->ctx.hlua_apptcp.task);
-       ctx->ctx.hlua_apptcp.task = NULL;
-       hlua_ctx_destroy(&ctx->ctx.hlua_apptcp.hlua);
-@@ -6226,6 +6227,7 @@ error:
- static void hlua_applet_http_release(struct appctx *ctx)
- {
-+      task_delete(ctx->ctx.hlua_apphttp.task);
-       task_free(ctx->ctx.hlua_apphttp.task);
-       ctx->ctx.hlua_apphttp.task = NULL;
-       hlua_ctx_destroy(&ctx->ctx.hlua_apphttp.hlua);
--- 
-2.13.0
-
index c18e7454e2b45d5a39c90a200977f67f14717d6d..6805199e51ab61030a0817cd17cfbc96ddad7f55 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=horst
 PKG_VERSION:=5.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://github.com/br101/horst/archive/v$(PKG_VERSION)/
diff --git a/net/horst/patches/0001-reproducible-builds.patch b/net/horst/patches/0001-reproducible-builds.patch
new file mode 100644 (file)
index 0000000..541d16f
--- /dev/null
@@ -0,0 +1,26 @@
+Index: horst-5.1/conf_options.c
+===================================================================
+--- horst-5.1.orig/conf_options.c
++++ horst-5.1/conf_options.c
+@@ -519,7 +519,7 @@ void config_parse_file_and_cmdline(int a
+                       conf_filename = optarg;
+                       break;
+               case 'v':
+-                      printf("%s (build date: %s %s)\n", VERSION, __DATE__, __TIME__);
++                      printf("%s\n", VERSION);
+                       exit(0);
+               case 'h':
+               case '?':
+Index: horst-5.1/display-help.c
+===================================================================
+--- horst-5.1.orig/display-help.c
++++ horst-5.1/display-help.c
+@@ -36,7 +36,7 @@ void update_help_win(WINDOW *win)
+       print_centered(win, 2, COLS, "HORST - Horsts OLSR Radio Scanning Tool (or)");
+       print_centered(win, 3, COLS, "HORST - Highly Optimized Radio Scanning Tool");
+-      print_centered(win, 5, COLS, "Version " VERSION " (build date " __DATE__ " " __TIME__ ")");
++      print_centered(win, 5, COLS, "Version " VERSION);
+       print_centered(win, 6, COLS, "(C) 2005-2016 Bruno Randolf, Licensed under the GPLv2");
+       mvwprintw(win, 8, 2, "Known IEEE802.11 Packet Types:");
diff --git a/net/i2pd/Makefile b/net/i2pd/Makefile
new file mode 100644 (file)
index 0000000..aba88e6
--- /dev/null
@@ -0,0 +1,61 @@
+#
+# Copyright (C) 2015, 2016 gxcreator
+# Copyright (C) 2017 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:=i2pd
+PKG_VERSION:=2.16.0
+PKG_RELEASE:=1
+PKG_BUILD_PARALLEL:=1
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_URL:=https://github.com/PurpleI2P/i2pd.git
+PKG_SOURCE_VERSION:=$(PKG_VERSION)
+PKG_MIRROR_HASH:=e9dee670dc53d258919e1fb9444fcaeab0d380c438e71cd5323f08332b937918
+PKG_LICENSE:=BSD-3-clause
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/i2pd
+       SECTION:=net
+       CATEGORY:=Network
+       DEPENDS:=+libopenssl +boost +boost-system +boost-filesystem +boost-regex \
+                +boost-program_options +boost-date_time +libatomic +zlib
+       TITLE:=full-featured C++ implementation of I2P client
+       URL:=https://github.com/PurpleI2P/i2pd
+       MAINTAINER:=David Yang <mmyangfl@gmail.com>
+endef
+
+define Package/i2pd/description
+       I2P (Invisible Internet Protocol) is a universal anonymous network layer. All
+       communications over I2P are anonymous and end-to-end encrypted, participants
+       don't reveal their real IP addresses.
+endef
+
+define Package/i2pd/conffiles
+       /etc/i2pd/i2pd.conf
+       /etc/i2pd/subscriptions.txt
+       /etc/i2pd/tunnels.conf
+endef
+
+MAKE_FLAGS+=USE_AESNI=no USE_AVX=no
+
+define Package/i2pd/install
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/i2pd $(1)/usr/sbin
+       $(INSTALL_DIR) $(1)/etc/i2pd
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/i2pd.conf $(1)/etc/i2pd
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/subscriptions.txt $(1)/etc/i2pd
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/tunnels.conf $(1)/etc/i2pd
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/i2pd.init $(1)/etc/init.d/i2pd
+endef
+
+$(eval $(call BuildPackage,i2pd))
diff --git a/net/i2pd/files/i2pd.init b/net/i2pd/files/i2pd.init
new file mode 100755 (executable)
index 0000000..36a1990
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2017 OpenWrt.org
+
+START=70
+STOP=70
+
+USE_PROCD=1
+PROG=/usr/sbin/i2pd
+
+
+start_service() {
+       procd_open_instance
+       procd_set_param command $PROG --conf=/etc/i2pd/i2pd.conf
+       procd_close_instance
+}
diff --git a/net/i2pd/patches/010-cross-compile.patch b/net/i2pd/patches/010-cross-compile.patch
new file mode 100644 (file)
index 0000000..614de4a
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/Makefile.linux   2017-11-14 03:20:41.000000000 +0800
++++ b/Makefile.linux   2017-11-29 23:55:38.919136211 +0800
+@@ -44,7 +44,7 @@
+       LDLIBS += -lpthread -static-libstdc++ -static-libgcc -lrt -ldl
+       USE_AESNI := no
+ else
+-      LDLIBS = -lcrypto -lssl -lz -lboost_system -lboost_date_time -lboost_filesystem -lboost_program_options -lpthread
++      LDLIBS = -latomic -lcrypto -lssl -lz -lboost_system -lboost_date_time -lboost_filesystem -lboost_program_options -lpthread
+ endif
+ # UPNP Support (miniupnpc 1.5 and higher)
index e526265a6b4e890a889d6a8d2a387525c34d52aa..b64ffd79d1277ff279ff6b010720fa1bddbda3cb 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=irssi
-PKG_VERSION:=1.0.4
+PKG_VERSION:=1.0.5
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=https://github.com/irssi/irssi/releases/download/1.0.4/
-PKG_HASH:=b85c07dbafe178213eccdc69f5f8f0ac024dea01c67244668f91ec1c06b986ca
+PKG_SOURCE_URL:=https://github.com/irssi/irssi/releases/download/1.0.5/
+PKG_HASH:=c2556427e12eb06cabfed40839ac6f57eb8b1aa6365fab6dfcd331b7a04bb914
 
 PKG_FIXUP:=autoreconf
 PKG_INSTALL:=1
index 96da55ca19ed49087ae78c81441a6315aaefeb14..2656835eb69e7bb033be3e4d04bb64037db0e345 100644 (file)
@@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=jool
 PKG_VERSION:=2017.03.09
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_LICENSE:=GPL-3.0
 PKG_LICENSE_FILES:=COPYING
@@ -20,7 +20,7 @@ PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_SOURCE_VERSION)
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.xz
 PKG_MIRROR_HASH:=a2c41119be251d4d962234fc78d7122568a5e62484969cc4e80229a0c7422fd4
 
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
+PKG_BUILD_DIR=$(KERNEL_BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
 PKG_BUILD_PARALLEL:=1
 PKG_BUILD_DEPENDS:=USE_UCLIBC:argp-standalone USE_MUSL:argp-standalone
 
index 751e0262af4930d8a497526cfb709104d382d891..b584a3280fb7c5d563917fad0d1065d5ed95ae8a 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=keepalived
-PKG_VERSION:=1.2.19
-PKG_RELEASE:=2
+PKG_VERSION:=1.3.9
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:= http://www.keepalived.org/software
-PKG_HASH:=32fbae732c1cd854cacd7a930d4a26f5bad6372cdecb5e3139f0c17e87493853
+PKG_HASH:=d5bdd25530acf60989222fd92fbfd596e06ecc356a820f4c1015708b76a8d4f3
 
 PKG_LICENSE:=GPL-2.0+
 PKG_LICENSE_FILES:=COPYING
@@ -29,7 +29,7 @@ define Package/keepalived
   CATEGORY:=Network
   TITLE:=Failover and monitoring daemon for LVS clusters
   URL:=http://www.keepalived.org/
-  DEPENDS:=+PACKAGE_libnl-genl:libnl-genl +libopenssl
+  DEPENDS:=+PACKAGE_libnl-genl:libnl-genl +libopenssl +libip4tc +IPV6:libip6tc +libxtables
 endef
 
 define Package/keepalived/description
@@ -38,17 +38,15 @@ endef
 
 define Package/keepalived/conffiles
 /etc/keepalived/keepalived.conf
+/etc/config/keepalived
+/etc/keepalived.user
 endef
 
 CONFIGURE_ARGS+= \
-       --enable-vrrp \
-       --enable-fwmark \
        --enable-sha1 \
        --disable-lvs \
        --disable-lvs-syncd \
        --disable-snmp \
-       --disable-debug \
-       --disable-profile \
        --with-kernel-dir="$(LINUX_DIR)/$(LINUX_UAPI_DIR)"
 
 MAKE_FLAGS += \
@@ -65,6 +63,10 @@ define Package/keepalived/install
        $(INSTALL_BIN) ./files/keepalived.init $(1)/etc/init.d/keepalived
        $(INSTALL_DIR) $(1)/etc/config
        $(INSTALL_CONF) ./files/keepalived.config $(1)/etc/config/keepalived
+       $(INSTALL_DIR) $(1)/etc
+       $(INSTALL_CONF) ./files/keepalived.user $(1)/etc/keepalived.user
+       $(INSTALL_DIR) $(1)/etc/hotplug.d/keepalived
+       $(INSTALL_DATA) ./files/hotplug-user $(1)/etc/hotplug.d/keepalived/01-user
 endef
 
 $(eval $(call BuildPackage,keepalived))
diff --git a/net/keepalived/files/hotplug-user b/net/keepalived/files/hotplug-user
new file mode 100644 (file)
index 0000000..329a8d5
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+[ -f "/etc/keepalived.user" ] && {
+       /bin/sh /etc/keepalived.user "$@"
+}
+
+exit 0
index b2ad5f9fbd1e2baa6885cadb8d8795b42d98283b..7279381a81f7f74089bd29462135fe87a1d8acd1 100644 (file)
@@ -1,5 +1,5 @@
 config global_defs
-       option alt_config_file          "/etc/keepalived/keepalived.conf"
+#      option alt_config_file          "/etc/keepalived/keepalived.conf"
 #      list notification_email         "acassen@firewall.loc"
 #      list notification_email         "failover@firewall.loc"
 #      list notification_email         "sysadmin@firewall.loc"
index 6e850f02d8f5c80f3b39ae7e742dd1e2877ab363..778777b671a166546c74425091cb0eb6820f7633 100644 (file)
@@ -49,7 +49,14 @@ print_elems_indent() {
                eval optval=\$$opt
                [ -z "$optval" ] && continue
                printf "$indent$opt" >> $KEEPALIVED_CONF
-               [ "$no_val" == "0" ] && printf " $optval" >> $KEEPALIVED_CONF
+               [ "$no_val" == "0" ] && {
+                       local words=$(echo "$optval" | wc -w)
+                       if [ $words -gt 1 ]; then
+                               printf " \"$optval\"" >> $KEEPALIVED_CONF
+                       else
+                               printf " $optval" >> $KEEPALIVED_CONF
+                       fi
+               }
                printf "\n" >> $KEEPALIVED_CONF
        done
        unset optval
@@ -72,6 +79,18 @@ print_list_indent() {
        printf "$indent}\n" >> $KEEPALIVED_CONF
 }
 
+print_notify() {
+       local type=$1
+       shift
+       local name=$1
+       shift
+       for notify in $*; do
+               printf "$INDENT_1$notify" >> $KEEPALIVED_CONF
+               notify=$(echo $notify | tr 'a-z' 'A-Z')
+               printf " \"/bin/busybox env -i ACTION=$notify TYPE=$type NAME=$name /sbin/hotplug-call keepalived\"\n" >> $KEEPALIVED_CONF
+       done
+}
+
 global_defs() {
        local linkbeat_use_polling notification_email
 
@@ -235,8 +254,11 @@ vrrp_sync_group() {
        group="$valid_group"
        print_list_indent group
 
-       print_elems_indent $1 $INDENT_1 notify_backup notify_master notify_fault \
-               notify no_val_smtp_alert no_val_global_tracking
+       print_elems_indent $1 $INDENT_1 no_val_smtp_alert no_val_global_tracking
+
+       print_notify "GROUP" "$name" notify_backup notify_master \
+               notify_fault notify
+
        config_section_close
 }
 
@@ -259,13 +281,15 @@ vrrp_instance() {
 
        print_elems_indent $1 $INDENT_1 use_vmac state interface \
                mcast_src_ip unicast_src_ip virtual_router_id version priority \
-               advert_int preempt_delay debug notify_backup \
-               notify_master notify_fault notify_stop notify \
+               advert_int preempt_delay debug \
                lvs_sync_daemon_interface garp_master_delay garp_master_refresh \
                garp_master_repeat garp_master_refresh_repeat \
                no_val_vmac_xmit_base no_val_native_ipv6 no_val_accept \
                no_val_dont_track_primary no_val_smtp_alert no_val_nopreempt
 
+       print_notify "INSTANCE" "$name" notify_backup notify_master \
+               notify_fault notify_stop notify
+
        # Handle virtual_ipaddress & virtual_ipaddress_excluded lists
        for opt in virtual_ipaddress virtual_ipaddress_excluded; do
                config_get $opt $1 $opt
@@ -290,8 +314,8 @@ vrrp_instance() {
                printf "$INDENT_1}\n" >> $KEEPALIVED_CONF
        done
 
-       # Handle track_interface & track_script lists
-       for opt in track_interface track_script; do
+       # Handle track_script lists
+       for opt in track_script; do
                config_get $opt $1 $opt
                eval optval=\$$opt
                [ -z "$optval" ] && continue
@@ -302,6 +326,18 @@ vrrp_instance() {
                printf "$INDENT_1}\n" >> $KEEPALIVED_CONF
        done
 
+       # Handle track_interface lists
+       for opt in track_interface; do
+               config_get $opt $1 $opt
+               eval optval=\$$opt
+               [ -z "$optval" ] && continue
+               printf "$INDENT_1$opt {\n" >> $KEEPALIVED_CONF
+               for t in $optval; do
+                       config_foreach print_track_elem_indent track_interface $t $INDENT_2
+               done
+               printf "$INDENT_1}\n" >> $KEEPALIVED_CONF
+       done
+
        # Handle simple lists of strings (with no spaces in between)
        for opt in unicast_peer; do
                config_get $opt $1 $opt
diff --git a/net/keepalived/files/keepalived.user b/net/keepalived/files/keepalived.user
new file mode 100644 (file)
index 0000000..283f53a
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+#
+# This file is interpreted as a shell script.
+# The first line of the script must be "#!/bin/sh" without quotes.
+# Lines beginning with # are comments and are not executed.
+#
+# There are three environment arguments that are passed to this script.
+#
+# $TYPE Set to INSTANCE or GROUP, depending on whether keepalived invoked the program from vrrp_instance or vrrp_sync_group.
+# $NAME Set to the name of the vrrp_instance or vrrp_sync_group.
+# $ACTION Set to the end state of the transition.
+# Valid values are:
+#     $TYPE==INSTANCE: [ NOTIFY_BACKUP | NOTIFY_MASTER | NOTIFY_FAULT | NOTIFY_STOP | NOTIFY ]
+#     $TYPE==GROUP: [ NOTIFY_BACKUP | NOTIFY_MASTER | NOTIFY_FAULT | NOTIFY ]
diff --git a/net/keepalived/patches/101-0001-vrrp-update-struct-msghdr.patch b/net/keepalived/patches/101-0001-vrrp-update-struct-msghdr.patch
deleted file mode 100644 (file)
index a18507c..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-From dbb2cac9139954bd18813e88bfcb622ad3e93c54 Mon Sep 17 00:00:00 2001
-From: Stijn Tintel <stijn@linux-ipv6.be>
-Date: Tue, 10 May 2016 04:26:31 +0300
-Subject: [PATCH] vrrp: update struct msghdr
-
-The vrrp netlink code assumes an order for the members of struct msghdr.
-This breaks recvmsg and sendmsg with musl libc on mips64. Fix this by
-using designated initializers instead.
-
-Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
----
- keepalived/vrrp/vrrp_netlink.c | 15 ++++++++++++---
- 1 file changed, 12 insertions(+), 3 deletions(-)
-
-diff --git a/keepalived/vrrp/vrrp_netlink.c b/keepalived/vrrp/vrrp_netlink.c
-index b19e2e7..2c2fd59 100644
---- a/keepalived/vrrp/vrrp_netlink.c
-+++ b/keepalived/vrrp/vrrp_netlink.c
-@@ -416,8 +416,12 @@ netlink_parse_info(int (*filter) (struct sockaddr_nl *, struct nlmsghdr *),
-               char buf[4096];
-               struct iovec iov = { buf, sizeof buf };
-               struct sockaddr_nl snl;
--              struct msghdr msg =
--                  { (void *) &snl, sizeof snl, &iov, 1, NULL, 0, 0 };
-+              struct msghdr msg = {
-+                      .msg_name = &snl,
-+                      .msg_namelen = sizeof(snl),
-+                      .msg_iov = &iov,
-+                      .msg_iovlen = 1,
-+              };
-               struct nlmsghdr *h;
-               status = recvmsg(nl->fd, &msg, 0);
-@@ -538,7 +542,12 @@ netlink_talk(nl_handle_t *nl, struct nlmsghdr *n)
-       int ret, flags;
-       struct sockaddr_nl snl;
-       struct iovec iov = { (void *) n, n->nlmsg_len };
--      struct msghdr msg = { (void *) &snl, sizeof snl, &iov, 1, NULL, 0, 0 };
-+      struct msghdr msg = {
-+              .msg_name = &snl,
-+              .msg_namelen = sizeof(snl),
-+              .msg_iov = &iov,
-+              .msg_iovlen = 1,
-+      };
-       memset(&snl, 0, sizeof snl);
-       snl.nl_family = AF_NETLINK;
--- 
-2.10.2
-
diff --git a/net/keepalived/patches/101-0002-Reinstate-initialisation-of-msghdr-fields.patch b/net/keepalived/patches/101-0002-Reinstate-initialisation-of-msghdr-fields.patch
deleted file mode 100644 (file)
index cf97513..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-From eaabcc1b09cccff2f8815d03da4d5778ab6bbd17 Mon Sep 17 00:00:00 2001
-From: Quentin Armitage <quentin@armitage.org.uk>
-Date: Mon, 16 May 2016 23:09:13 +0100
-Subject: [PATCH] Reinstate initialisation of msghdr fields
-
-Commit dbb2cac removed initialisation of the struct msghdr msg_control,
-msg_controllen and msg_flags fields. This commit reinstates initialisation
-of those fields.
-
-Signed-off-by: Quentin Armitage <quentin@armitage.org.uk>
----
- keepalived/vrrp/vrrp_netlink.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/keepalived/vrrp/vrrp_netlink.c b/keepalived/vrrp/vrrp_netlink.c
-index 2c2fd59..62c37d6 100644
---- a/keepalived/vrrp/vrrp_netlink.c
-+++ b/keepalived/vrrp/vrrp_netlink.c
-@@ -421,6 +421,9 @@ netlink_parse_info(int (*filter) (struct sockaddr_nl *, struct nlmsghdr *),
-                       .msg_namelen = sizeof(snl),
-                       .msg_iov = &iov,
-                       .msg_iovlen = 1,
-+                      .msg_control = NULL,
-+                      .msg_controllen = 0,
-+                      .msg_flags = 0
-               };
-               struct nlmsghdr *h;
-@@ -547,6 +550,9 @@ netlink_talk(nl_handle_t *nl, struct nlmsghdr *n)
-               .msg_namelen = sizeof(snl),
-               .msg_iov = &iov,
-               .msg_iovlen = 1,
-+              .msg_control = NULL,
-+              .msg_controllen = 0,
-+              .msg_flags = 0
-       };
-       memset(&snl, 0, sizeof snl);
--- 
-2.10.2
-
index b537585d00b6b793f4f6c0473d443456366a278f..648183a724113f2d0ea20d29720158cdb2e148b4 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=knot
-PKG_VERSION:=2.3.3
+PKG_VERSION:=2.5.6
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=https://secure.nic.cz/files/knot-dns/
-PKG_HASH:=a929bce3b957a81776b1db7b43b0e4473339bf16be8dbba5abb4b0593bf43c94
+PKG_HASH:=37d1625c2aaefe2394c85f6742a6ae9421e8348318c13119a6c451796c387cfc
 
 PKG_MAINTAINER:=Daniel Salzman <daniel.salzman@nic.cz>
 PKG_LICENSE:=GPL-3.0 LGPL-2.0 0BSD MIT OLDAP-2.8
@@ -28,6 +28,7 @@ define Package/knot-lib/Default
        SECTION:=libs
        CATEGORY:=Libraries
        TITLE:=Knot DNS
+       DEPENDS=+libpthread
        URL:=https://www.knot-dns.cz
 endef
 
@@ -36,85 +37,81 @@ define Package/knot/Default
        CATEGORY:=Network
        SUBMENU:=IP Addresses and Names
        TITLE:=Knot DNS
+       DEPENDS=+libatomic
        URL:=https://www.knot-dns.cz
-       USERID:=knot=5353:knot=5353
-endef
-
-define Package/knot-libdnssec
-       $(call Package/knot-lib/Default)
-       TITLE+= DNSSEC library
-       DEPENDS=+libpthread +libgnutls +jansson
 endef
 
-define Package/knot-libknot
+define Package/knot-libs
        $(call Package/knot-lib/Default)
-       TITLE+= library
-       DEPENDS=+libpthread +knot-libdnssec
+       TITLE+= common DNS and DNSSEC libraries
+       DEPENDS+=+libgnutls
 endef
 
 define Package/knot-libzscanner
        $(call Package/knot-lib/Default)
        TITLE+= zone parser library
-       DEPENDS=+libpthread
 endef
 
 define Package/knot
        $(call Package/knot/Default)
-       TITLE+= server
-       DEPENDS=+liburcu +libedit +knot-libdnssec +knot-libknot +knot-libzscanner
+       TITLE+= server with control utility
+       DEPENDS+=+libedit +liburcu +knot-libs +knot-libzscanner
+       EXTRA_DEPENDS:=knot-libs (=$(PKG_VERSION)-$(PKG_RELEASE)), \
+                      knot-libzscanner (=$(PKG_VERSION)-$(PKG_RELEASE))
+       USERID:=knot=5353:knot=5353
 endef
 
 define Package/knot-dig
        $(call Package/knot/Default)
        TITLE+= advanced DNS lookup utility
-       DEPENDS=+knot-libdnssec +knot-libknot
+       DEPENDS+=+libedit +knot-libs
+       EXTRA_DEPENDS:=knot-libs (=$(PKG_VERSION)-$(PKG_RELEASE))
 endef
 
 define Package/knot-host
        $(call Package/knot/Default)
        TITLE+= simple DNS lookup utility
-       DEPENDS=+knot-libdnssec +knot-libknot
+       DEPENDS+=+libedit +knot-libs
+       EXTRA_DEPENDS:=knot-libs (=$(PKG_VERSION)-$(PKG_RELEASE))
 endef
 
 define Package/knot-nsupdate
        $(call Package/knot/Default)
        TITLE+= dynamic DNS update utility
-       DEPENDS=+knot-libdnssec +knot-libknot +knot-libzscanner
-endef
-
-define Package/knot-nsec3hash
-       $(call Package/knot/Default)
-       TITLE+= simple NSEC3 hash utility
-       DEPENDS=+knot-libdnssec
+       DEPENDS+=+libedit +knot-libs +knot-libzscanner
+       EXTRA_DEPENDS:=knot-libs (=$(PKG_VERSION)-$(PKG_RELEASE)), \
+                      knot-libzscanner (=$(PKG_VERSION)-$(PKG_RELEASE))
 endef
 
 define Package/knot-zonecheck
        $(call Package/knot/Default)
        TITLE+= zonefile check utility
-       DEPENDS=+liburcu +knot-libdnssec +knot-libknot +knot-libzscanner
+       DEPENDS+=+libedit +liburcu +knot-libs +knot-libzscanner
+       EXTRA_DEPENDS:=knot-libs (=$(PKG_VERSION)-$(PKG_RELEASE)), \
+                      knot-libzscanner (=$(PKG_VERSION)-$(PKG_RELEASE))
 endef
 
 define Package/knot-keymgr
        $(call Package/knot/Default)
        TITLE+= DNSSEC key management utility
-       DEPENDS=+liburcu +knot-libdnssec +knot-libknot +knot-libzscanner
+       DEPENDS+=+libedit +liburcu +knot-libs +knot-libzscanner
+       EXTRA_DEPENDS:=knot-libs (=$(PKG_VERSION)-$(PKG_RELEASE)), \
+                      knot-libzscanner (=$(PKG_VERSION)-$(PKG_RELEASE))
 endef
 
 define Package/knot-tests
        $(call Package/knot/Default)
        TITLE+= tests
-       DEPENDS=+liburcu +libedit +knot-libdnssec +knot-libknot +knot-libzscanner
+       DEPENDS+=+libedit +liburcu +knot-libs +knot-libzscanner
+       EXTRA_DEPENDS:=knot-libs (=$(PKG_VERSION)-$(PKG_RELEASE)), \
+                      knot-libzscanner (=$(PKG_VERSION)-$(PKG_RELEASE))
 endef
 
-define Package/knot-libdnssec/description
-       Knot DNS DNSSEC library.
+define Package/knot-libs/description
+       Knot DNS common DNS and DNSSEC libraries.
 endef
 
-define Package/knot-libknot/description
-       Knot DNS library.
-endef
-
-define Package/knot-libdnssec/description
+define Package/knot-libzscanner/description
        Knot DNS zone parser library.
 endef
 
@@ -134,10 +131,6 @@ define Package/knot-nsupdate/description
        Knot DNS dynamic DNS update utility.
 endef
 
-define Package/knot-nsec3hash/description
-       Knot DNS simple NSEC3 hash utility.
-endef
-
 define Package/knot-zonecheck/description
        Knot DNS zonefile check utility.
 endef
@@ -158,8 +151,7 @@ CONFIGURE_ARGS +=                   \
        --with-rundir=/var/run/knot     \
        --with-storage=/var/lib/knot    \
        --with-configdir=/etc/knot      \
-       --with-timer-mapsize=50         \
-       --with-conf-mapsize=50
+       --with-conf-mapsize=20
 
 TARGET_CFLAGS += -DPSELECT_COMPAT -DNDEBUG
 
@@ -192,13 +184,9 @@ define Build/InstallDev
        $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc       $(1)/usr/lib/pkgconfig/
 endef
 
-define Package/knot-libdnssec/install
+define Package/knot-libs/install
        $(INSTALL_DIR)                                          $(1)/usr/lib
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/libdnssec.so.*         $(1)/usr/lib/
-endef
-
-define Package/knot-libknot/install
-       $(INSTALL_DIR)                                          $(1)/usr/lib
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/libknot.so.*           $(1)/usr/lib/
 endef
 
@@ -235,11 +223,6 @@ define Package/knot-nsupdate/install
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/knsupdate     $(1)/usr/bin/
 endef
 
-define Package/knot-nsec3hash/install
-       $(INSTALL_DIR)                                          $(1)/usr/bin
-       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/knsec3hash    $(1)/usr/bin/
-endef
-
 define Package/knot-zonecheck/install
        $(INSTALL_DIR)                                          $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/kzonecheck    $(1)/usr/bin/
@@ -258,50 +241,35 @@ define Package/knot-tests/install
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/libtap/runtests         $(1)/usr/share/knot/tap/
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/libtap/tap/libtap.sh    $(1)/usr/share/knot/tap/
 
-       $(INSTALL_DIR)                                                                  $(1)/usr/share/knot/tests
-       find $(PKG_BUILD_DIR)/tests/.libs -maxdepth 1 -executable -type f | \
-               xargs -I{} basename {} | \
-               xargs -I{} $(INSTALL_BIN) -T $(PKG_BUILD_DIR)/tests/.libs/{}            $(1)/usr/share/knot/tests/test_{}
-
-       $(INSTALL_DIR)                                                                  $(1)/usr/share/knot/tests/dnssec
-       find $(PKG_BUILD_DIR)/src/dnssec/tests -maxdepth 1 -executable -type f | \
-               xargs -I{} basename {} | \
-               xargs -I{} $(INSTALL_BIN) -T $(PKG_BUILD_DIR)/src/dnssec/tests/{}       $(1)/usr/share/knot/tests/dnssec/test_{}
-
-       $(INSTALL_DIR)                                                                  $(1)/usr/share/knot/tests/contrib
-       find $(PKG_BUILD_DIR)/tests/contrib/.libs -maxdepth 1 -executable -type f | \
-               xargs -I{} basename {} | \
-               xargs -I{} $(INSTALL_BIN) -T $(PKG_BUILD_DIR)/tests/contrib/.libs/{}    $(1)/usr/share/knot/tests/contrib/{}
+       $(INSTALL_DIR)                                                          $(1)/usr/share/knot/tests
 
-       $(INSTALL_DIR)                                                                  $(1)/usr/share/knot/tests/libknot
-       find $(PKG_BUILD_DIR)/tests/libknot/.libs -maxdepth 1 -executable -type f | \
-               xargs -I{} basename {} | \
-               xargs -I{} $(INSTALL_BIN) -T $(PKG_BUILD_DIR)/tests/libknot/.libs/{}    $(1)/usr/share/knot/tests/libknot/{}
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/zscanner/tests/.libs/zscanner-tool  $(1)/usr/share/knot/tests/
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/zscanner/tests/unittests            $(1)/usr/share/knot/tests/test_zscanner
+       $(INSTALL_DATA) $(PKG_BUILD_DIR)/src/zscanner/tests/TESTS               $(1)/usr/share/knot/tests/
+       cp -a $(PKG_BUILD_DIR)/src/zscanner/tests/data                          $(1)/usr/share/knot/tests/
 
-       $(INSTALL_DIR)                                                                  $(1)/usr/share/knot/tests/modules
-       find $(PKG_BUILD_DIR)/tests/modules/.libs -maxdepth 1 -executable -type f | \
+       find $(PKG_BUILD_DIR)/src/dnssec/tests -maxdepth 1 -executable -type f | \
                xargs -I{} basename {} | \
-               xargs -I{} $(INSTALL_BIN) -T $(PKG_BUILD_DIR)/tests/modules/.libs/{}    $(1)/usr/share/knot/tests/modules/test_{}
+               xargs -I{} $(INSTALL_BIN) -T $(PKG_BUILD_DIR)/src/dnssec/tests/{}       $(1)/usr/share/knot/tests/dnssec_test_{}
 
-       $(INSTALL_DIR)                                                                  $(1)/usr/share/knot/tests/utils
-       find $(PKG_BUILD_DIR)/tests/utils/.libs -maxdepth 1 -executable -type f | \
+       find $(PKG_BUILD_DIR)/tests/.libs -maxdepth 1 -executable -type f | \
                xargs -I{} basename {} | \
-               xargs -I{} $(INSTALL_BIN) -T $(PKG_BUILD_DIR)/tests/utils/.libs/{}      $(1)/usr/share/knot/tests/utils/{}
+               xargs -I{} $(INSTALL_BIN) -T $(PKG_BUILD_DIR)/tests/.libs/{}            $(1)/usr/share/knot/tests/{}
 
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/zscanner/tests/.libs/zscanner-tool  $(1)/usr/share/knot/tests/
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/zscanner/tests/unittests            $(1)/usr/share/knot/tests/test_zscanner
-       $(INSTALL_DATA) $(PKG_BUILD_DIR)/src/zscanner/tests/TESTS               $(1)/usr/share/knot/tests/
-       cp -a $(PKG_BUILD_DIR)/src/zscanner/tests/data                          $(1)/usr/share/knot/tests/
+       for module in contrib libknot modules utils; do \
+               find $(PKG_BUILD_DIR)/tests/$$$${module}/.libs -maxdepth 1 -executable -type f | \
+                       xargs -I{} basename {} | \
+                       xargs -I{} $(INSTALL_BIN) -T $(PKG_BUILD_DIR)/tests/$$$${module}/.libs/{} \
+                                                                                       $(1)/usr/share/knot/tests/$$$${module}_{}; \
+       done
 endef
 
-$(eval $(call BuildPackage,knot-libdnssec))
-$(eval $(call BuildPackage,knot-libknot))
+$(eval $(call BuildPackage,knot-libs))
 $(eval $(call BuildPackage,knot-libzscanner))
 $(eval $(call BuildPackage,knot))
 $(eval $(call BuildPackage,knot-dig))
 $(eval $(call BuildPackage,knot-host))
 $(eval $(call BuildPackage,knot-nsupdate))
-$(eval $(call BuildPackage,knot-nsec3hash))
 $(eval $(call BuildPackage,knot-zonecheck))
 $(eval $(call BuildPackage,knot-keymgr))
 $(eval $(call BuildPackage,knot-tests))
index e70c76b32a0f065551555502698ecb25c1ba5fde..b0b772eebe8a056553b2740778a911b78cf19850 100644 (file)
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 cd `dirname "$0"`/tests
-../tap/runtests -b /tmp ./contrib/test_* ./dnssec/test_* ./libknot/test_* ./modules/test_* ./utils/test_* ./test_*
+../tap/runtests -b /tmp ./*test_*
 ret=$?
 cd -
 
index 215b09fbed153bb0930845a87f29395e2ac2858d..54ad80b75f04205d7ba96fde66fef98e85b08020 100644 (file)
@@ -1,5 +1,5 @@
 diff --git a/samples/knot.sample.conf.in b/samples/knot.sample.conf.in
-index e07c8a7..ecc13ad 100644
+index e07c8a7..8e057b0 100644
 --- a/samples/knot.sample.conf.in
 +++ b/samples/knot.sample.conf.in
 @@ -9,7 +9,7 @@ server:
@@ -11,3 +11,14 @@ index e07c8a7..ecc13ad 100644
  
  log:
      # Log info and more serious events to syslog.
+@@ -33,7 +33,9 @@ acl:
+ #    action: notify
+ template:
+-#  - id: default
++   - id: default
++     max-journal-db-size: 20M
++     max-timer-db-size: 5M
+ #    storage: "@storage_dir@"
+ zone:
diff --git a/net/knot/patches/03_contrib_files.patch b/net/knot/patches/03_contrib_files.patch
deleted file mode 100644 (file)
index 02f5198..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-diff --git a/src/contrib/files.c b/src/contrib/files.c
-index 8aee482..12f36ca 100644
---- a/src/contrib/files.c
-+++ b/src/contrib/files.c
-@@ -24,6 +24,10 @@
- #include <sys/stat.h>
- #include <unistd.h>
-+#ifndef O_NOFOLLOW
-+#define O_NOFOLLOW 0
-+#endif
-+
- static bool special_name(const char *name)
- {
-       return strcmp(name, ".") == 0 || strcmp(name, "..") == 0;
index eddf65885cf2c4b4315d44090f1896b54d53782b..6c97d7b3e1cda40e95d34cf8fd829da0aadd83ce 100644 (file)
@@ -8,18 +8,18 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=linknx
-PKG_VERSION:=0.0.1.33
-PKG_RELEASE:=2
+PKG_VERSION:=0.0.1.34
+PKG_RELEASE:=1
 
 PKG_MAINTAINER:=Othmar Truniger <github@truniger.ch>
 PKG_LICENSE:=GPL-2.0+
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/linknx/linknx.git
-PKG_SOURCE_VERSION:=6166831eff645f21a7fd22ec3f7855f36005b8d9
+PKG_SOURCE_VERSION:=831ed395e232ead88e92cdf19f12e227e80e22cf
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)
 PKG_SOURCE:=$(PKG_NAME)-${PKG_VERSION}.tar.xz
-PKG_MIRROR_HASH:=9d38d3a5b4bd935f841fbacf0ee00a9bb9e75ac7a7e7609864254ebb5bbdb960
+PKG_MIRROR_HASH:=1c53d181b5577d759b4d0faa5a267dd0a040d9fee1bfc6ad9545374b9002900f
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
 PKG_BUILD_DEPENDS:=argp-standalone
index 164819b99d5363e3be7af13b5d03a64f506ca0a6..72d01aa3f381c6d9db760e003d13d02202e34eeb 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mDNSResponder
 PKG_VERSION:=576.30.4
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=mDNSResponder-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://opensource.apple.com/tarballs/mDNSResponder/
index df56608d5bc93a094144661af3e9e7ee184811a8..974588d200a62efbff514e904a5767c8db579ee2 100644 (file)
@@ -1,6 +1,3 @@
-diff --git a/.gitignore b/.gitignore
-new file mode 100644
-index 0000000..920cdfc
 --- /dev/null
 +++ b/.gitignore
 @@ -0,0 +1,4 @@
@@ -8,11 +5,9 @@ index 0000000..920cdfc
 +mDNSPosix/build
 +mDNSPosix/objects
 +
-diff --git a/Clients/Makefile b/Clients/Makefile
-index 383af31..925c20e 100755
 --- a/Clients/Makefile
 +++ b/Clients/Makefile
-@@ -34,7 +34,7 @@ TARGETS = build/dns-sd build/dns-sd64
+@@ -36,7 +36,7 @@ TARGETS = build/dns-sd build/dns-sd64
  LIBS =
  else
  TARGETS = build/dns-sd
@@ -21,8 +16,6 @@ index 383af31..925c20e 100755
  endif
  
  all: $(TARGETS)
-diff --git a/mDNSPosix/PosixDaemon.c b/mDNSPosix/PosixDaemon.c
-index 88b3292..e86a6c7 100644
 --- a/mDNSPosix/PosixDaemon.c
 +++ b/mDNSPosix/PosixDaemon.c
 @@ -37,6 +37,11 @@
@@ -88,11 +81,9 @@ index 88b3292..e86a6c7 100644
      if (mStatus_NoError == err)
          err = MainLoop(&mDNSStorage);
  
-diff --git a/mDNSPosix/Responder.c b/mDNSPosix/Responder.c
-index 3996b7b..e58d8eb 100755
 --- a/mDNSPosix/Responder.c
 +++ b/mDNSPosix/Responder.c
-@@ -603,7 +603,8 @@ static mStatus RegisterServicesInFile(const char *filePath)
+@@ -603,7 +603,8 @@ static mStatus RegisterServicesInFile(co
          status = mStatus_UnknownErr;
      }
  
@@ -102,11 +93,9 @@ index 3996b7b..e58d8eb 100755
  
      return status;
  }
-diff --git a/mDNSPosix/mDNSPosix.c b/mDNSPosix/mDNSPosix.c
-index 6effa12..7c1d6eb 100755
 --- a/mDNSPosix/mDNSPosix.c
 +++ b/mDNSPosix/mDNSPosix.c
-@@ -138,7 +138,7 @@ mDNSlocal void SockAddrTomDNSAddr(const struct sockaddr *const sa, mDNSAddr *ipA
+@@ -138,7 +138,7 @@ mDNSlocal void SockAddrTomDNSAddr(const
  
  // mDNS core calls this routine when it needs to send a packet.
  mDNSexport mStatus mDNSPlatformSendUDP(const mDNS *const m, const void *const msg, const mDNSu8 *const end,
@@ -115,7 +104,7 @@ index 6effa12..7c1d6eb 100755
                                         mDNSIPPort dstPort, mDNSBool useBackgroundTrafficClass)
  {
      int err = 0;
-@@ -583,9 +583,17 @@ mDNSlocal void FreePosixNetworkInterface(PosixNetworkInterface *intf)
+@@ -583,9 +583,17 @@ mDNSlocal void FreePosixNetworkInterface
  {
      assert(intf != NULL);
      if (intf->intfName != NULL) free((void *)intf->intfName);
@@ -135,7 +124,7 @@ index 6effa12..7c1d6eb 100755
  #endif
  
      // Move interface to the RecentInterfaces list for a minute
-@@ -724,6 +732,29 @@ mDNSlocal int SetupSocket(struct sockaddr *intfAddr, mDNSIPPort port, int interf
+@@ -724,6 +732,29 @@ mDNSlocal int SetupSocket(struct sockadd
              if (err < 0) { err = errno; perror("setsockopt - IP_MULTICAST_TTL"); }
          }
  
@@ -165,7 +154,7 @@ index 6effa12..7c1d6eb 100755
          // And start listening for packets
          if (err == 0)
          {
-@@ -805,6 +836,29 @@ mDNSlocal int SetupSocket(struct sockaddr *intfAddr, mDNSIPPort port, int interf
+@@ -805,6 +836,29 @@ mDNSlocal int SetupSocket(struct sockadd
              if (err < 0) { err = errno; perror("setsockopt - IPV6_MULTICAST_HOPS"); }
          }
  
@@ -195,7 +184,7 @@ index 6effa12..7c1d6eb 100755
          // And start listening for packets
          if (err == 0)
          {
-@@ -836,7 +890,12 @@ mDNSlocal int SetupSocket(struct sockaddr *intfAddr, mDNSIPPort port, int interf
+@@ -836,7 +890,12 @@ mDNSlocal int SetupSocket(struct sockadd
      }
  
      // Clean up
@@ -209,7 +198,7 @@ index 6effa12..7c1d6eb 100755
      assert((err == 0) == (*sktPtr != -1));
      return err;
  }
-@@ -938,19 +997,14 @@ mDNSlocal int SetupInterfaceList(mDNS *const m)
+@@ -942,19 +1001,14 @@ mDNSlocal int SetupInterfaceList(mDNS *c
      int err            = 0;
      struct ifi_info *intfList      = get_ifi_info(AF_INET, mDNStrue);
      struct ifi_info *firstLoopback = NULL;
@@ -232,7 +221,7 @@ index 6effa12..7c1d6eb 100755
  #endif
  
      if (err == 0)
-@@ -1026,7 +1080,7 @@ mDNSlocal mStatus OpenIfNotifySocket(int *pFD)
+@@ -1030,7 +1084,7 @@ mDNSlocal mStatus OpenIfNotifySocket(int
      /* Subscribe the socket to Link & IP addr notifications. */
      mDNSPlatformMemZero(&snl, sizeof snl);
      snl.nl_family = AF_NETLINK;
@@ -241,7 +230,7 @@ index 6effa12..7c1d6eb 100755
      ret = bind(sock, (struct sockaddr *) &snl, sizeof snl);
      if (0 == ret)
          *pFD = sock;
-@@ -1104,11 +1158,18 @@ mDNSlocal mDNSu32       ProcessRoutingNotification(int sd)
+@@ -1108,11 +1162,18 @@ mDNSlocal mDNSu32       ProcessRoutingNo
          PrintNetLinkMsg(pNLMsg);
  #endif
  
@@ -262,7 +251,7 @@ index 6effa12..7c1d6eb 100755
  
          // Advance pNLMsg to the next message in the buffer
          if ((pNLMsg->nlmsg_flags & NLM_F_MULTI) != 0 && pNLMsg->nlmsg_type != NLMSG_DONE)
-@@ -1279,8 +1340,12 @@ mDNSexport mStatus mDNSPlatformInit(mDNS *const m)
+@@ -1283,8 +1344,12 @@ mDNSexport mStatus mDNSPlatformInit(mDNS
      if (err == mStatus_NoError) err = SetupSocket(&sa, zeroIPPort, 0, &m->p->unicastSocket6);
  #endif
  
@@ -275,7 +264,7 @@ index 6effa12..7c1d6eb 100755
  
      // Tell mDNS core about DNS Servers
      mDNS_Lock(m);
-@@ -1313,9 +1378,17 @@ mDNSexport void mDNSPlatformClose(mDNS *const m)
+@@ -1317,9 +1382,17 @@ mDNSexport void mDNSPlatformClose(mDNS *
  {
      assert(m != NULL);
      ClearInterfaceList(m);
@@ -295,7 +284,7 @@ index 6effa12..7c1d6eb 100755
  #endif
  }
  
-@@ -1571,14 +1644,14 @@ mDNSexport mStatus    mDNSPlatformClearSPSMACAddr(void)
+@@ -1575,14 +1648,14 @@ mDNSexport mStatus    mDNSPlatformClearS
  mDNSexport mDNSu16 mDNSPlatformGetUDPPort(UDPSocket *sock)
  {
      (void) sock; // unused
@@ -312,8 +301,6 @@ index 6effa12..7c1d6eb 100755
      return mDNSfalse;
  }
  
-diff --git a/mDNSPosix/mDNSUNP.c b/mDNSPosix/mDNSUNP.c
-index b392fc7..f551ad5 100755
 --- a/mDNSPosix/mDNSUNP.c
 +++ b/mDNSPosix/mDNSUNP.c
 @@ -63,6 +63,7 @@
@@ -324,7 +311,7 @@ index b392fc7..f551ad5 100755
  
  /* Converts a prefix length to IPv6 network mask */
  void plen_to_mask(int plen, char *addr) {
-@@ -86,7 +87,7 @@ struct ifi_info *get_ifi_info_linuxv6(int family, int doaliases)
+@@ -86,7 +87,7 @@ struct ifi_info *get_ifi_info_linuxv6(in
      FILE *fp;
      char addr[8][5];
      int flags, myflags, index, plen, scope;
@@ -333,7 +320,7 @@ index b392fc7..f551ad5 100755
      char addr6[32+7+1]; /* don't forget the seven ':' */
      struct addrinfo hints, *res0;
      struct sockaddr_in6 *sin6;
-@@ -94,7 +95,8 @@ struct ifi_info *get_ifi_info_linuxv6(int family, int doaliases)
+@@ -94,7 +95,8 @@ struct ifi_info *get_ifi_info_linuxv6(in
      int err;
      int sockfd = -1;
      struct ifreq ifr;
@@ -343,7 +330,7 @@ index b392fc7..f551ad5 100755
      res0=NULL;
      ifihead = NULL;
      ifipnext = &ifihead;
-@@ -106,11 +108,12 @@ struct ifi_info *get_ifi_info_linuxv6(int family, int doaliases)
+@@ -106,11 +108,12 @@ struct ifi_info *get_ifi_info_linuxv6(in
              goto gotError;
          }
          while (fscanf(fp,
@@ -370,8 +357,6 @@ index b392fc7..f551ad5 100755
      }
      return(ifihead);    /* pointer to first structure in linked list */
  }
-diff --git a/mDNSShared/dnsextd_parser.y b/mDNSShared/dnsextd_parser.y
-index 18c5990..d4b63ce 100644
 --- a/mDNSShared/dnsextd_parser.y
 +++ b/mDNSShared/dnsextd_parser.y
 @@ -15,6 +15,8 @@
diff --git a/net/mdnsresponder/patches/120-reproducible-builds.patch b/net/mdnsresponder/patches/120-reproducible-builds.patch
new file mode 100644 (file)
index 0000000..b1e7caa
--- /dev/null
@@ -0,0 +1,52 @@
+--- a/Clients/dns-sd.c
++++ b/Clients/dns-sd.c
+@@ -1811,7 +1811,7 @@ Fail:
+ // NOT static -- otherwise the compiler may optimize it out
+ // The "@(#) " pattern is a special prefix the "what" command looks for
+-const char VersionString_SCCS[] = "@(#) dns-sd " STRINGIFY(mDNSResponderVersion) " (" __DATE__ " " __TIME__ ")";
++const char VersionString_SCCS[] = "@(#) dns-sd " STRINGIFY(mDNSResponderVersion);
+ #if _BUILDING_XCODE_PROJECT_
+ // If the process crashes, then this string will be magically included in the automatically-generated crash log
+--- a/mDNSPosix/PosixDaemon.c
++++ b/mDNSPosix/PosixDaemon.c
+@@ -289,9 +289,9 @@ asm (".desc ___crashreporter_info__, 0x1
+ // For convenience when using the "strings" command, this is the last thing in the file
+ #if mDNSResponderVersion > 1
+-mDNSexport const char mDNSResponderVersionString_SCCS[] = "@(#) mDNSResponder-" STRINGIFY(mDNSResponderVersion) " (" __DATE__ " " __TIME__ ")";
++mDNSexport const char mDNSResponderVersionString_SCCS[] = "@(#) mDNSResponder-" STRINGIFY(mDNSResponderVersion);
+ #elif MDNS_VERSIONSTR_NODTS
+ mDNSexport const char mDNSResponderVersionString_SCCS[] = "@(#) mDNSResponder (Engineering Build)";
+ #else
+-mDNSexport const char mDNSResponderVersionString_SCCS[] = "@(#) mDNSResponder (Engineering Build) (" __DATE__ " " __TIME__ ")";
++mDNSexport const char mDNSResponderVersionString_SCCS[] = "@(#) mDNSResponder (Engineering Build)";
+ #endif
+--- a/mDNSShared/Java/JNISupport.c
++++ b/mDNSShared/Java/JNISupport.c
+@@ -1069,4 +1069,4 @@ exit:
+ // NOT static -- otherwise the compiler may optimize it out
+ // The "@(#) " pattern is a special prefix the "what" command looks for
+-const char VersionString_SCCS[] = "@(#) libjdns_sd " STRINGIFY(mDNSResponderVersion) " (" __DATE__ " " __TIME__ ")";
++const char VersionString_SCCS[] = "@(#) libjdns_sd " STRINGIFY(mDNSResponderVersion);
+--- a/mDNSShared/dnsextd.c
++++ b/mDNSShared/dnsextd.c
+@@ -3141,7 +3141,7 @@ mDNS mDNSStorage;
+ // For convenience when using the "strings" command, this is the last thing in the file
+ // The "@(#) " pattern is a special prefix the "what" command looks for
+-const char mDNSResponderVersionString_SCCS[] = "@(#) dnsextd " STRINGIFY(mDNSResponderVersion) " (" __DATE__ " " __TIME__ ")";
++const char mDNSResponderVersionString_SCCS[] = "@(#) dnsextd " STRINGIFY(mDNSResponderVersion);
+ #if _BUILDING_XCODE_PROJECT_
+ // If the process crashes, then this string will be magically included in the automatically-generated crash log
+--- a/mDNSShared/dnssd_clientlib.c
++++ b/mDNSShared/dnssd_clientlib.c
+@@ -363,4 +363,4 @@ DNSServiceErrorType DNSSD_API TXTRecordG
+ // NOT static -- otherwise the compiler may optimize it out
+ // The "@(#) " pattern is a special prefix the "what" command looks for
+-const char VersionString_SCCS_libdnssd[] = "@(#) libdns_sd " STRINGIFY(mDNSResponderVersion) " (" __DATE__ " " __TIME__ ")";
++const char VersionString_SCCS_libdnssd[] = "@(#) libdns_sd " STRINGIFY(mDNSResponderVersion);
index 59c7554a3e77b53bf3dd23919326a7d242f1530d..ec8869442c1d6f8a66000f7742f5d0e56555aa18 100644 (file)
@@ -9,12 +9,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=memcached
-PKG_VERSION:=1.5.1
+PKG_VERSION:=1.5.2
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://memcached.org/files
-PKG_HASH:=a87908936b51d1bd3ef10a2347eef5647f003b63407a5d8161fa7928b1cd6b5c
+PKG_HASH:=9ac93113bdb5d037e79c61277386564ac2e5e31d49e594f11e554e4c149b7245
 
 PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
 
index b14e8273b152c3c8faf4aa62d259ae63dbcb8af0..f67f1022d3c3d7a197ae8286f53cede2b33f2f60 100644 (file)
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mii-tool
 PKG_VERSION=2016-10-06-$(PKG_SOURCE_VERSION)
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=git://git.code.sf.net/p/net-tools/code
diff --git a/net/mii-tool/patches/001-mii-tool-4.9-compatibility.patch b/net/mii-tool/patches/001-mii-tool-4.9-compatibility.patch
new file mode 100644 (file)
index 0000000..2472b1c
--- /dev/null
@@ -0,0 +1,10 @@
+--- a/iptunnel.c       2016-07-10 20:15:29.000000000 +0200
++++ b/iptunnel.c       2017-10-19 19:51:09.172782821 +0200
+@@ -26,7 +26,6 @@
+ #include <sys/socket.h>
+ #include <sys/ioctl.h>
+ #include <netinet/in.h>
+-#include <netinet/ip.h>
+ #include <arpa/inet.h>
+ #include <net/if.h>
+ #include <net/if_arp.h>
diff --git a/net/mikrotik-btest/Makefile b/net/mikrotik-btest/Makefile
new file mode 100644 (file)
index 0000000..4b994e8
--- /dev/null
@@ -0,0 +1,44 @@
+#
+# Copyright (C) 2017 Roger Pueyo Centelles <roger.pueyo@guifi.net>
+#
+# This is free software, licensed under the GNU General Public License v3
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=mikrotik_btest
+PKG_VERSION:=0.5.1
+PKG_RELEASE:=1
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/kadosch/mikrotik_btest.git
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_VERSION:=02a0e7df411b5e7775fe2795709996a30afb7f47
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_MIRROR_HASH:=f72e1c8e2d98ca9e1c6a7fba35838a4a3c25b2dcd4bd8b10b67662003b3a14d1
+
+PKG_LICENSE:=GPLv3
+PKG_LICENSE_FILES:=COPYING
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/mikrotik-btest
+  SECTION:=net
+  CATEGORY:=Network
+  TITLE:=Bandwidth test client for Mikrotik BTest server
+  DEPENDS:=+libpthread +librt
+  URL:=https://github.com/kadosch/mikrotik_btest.git
+  MAINTAINER:=Roger Pueyo Centelles <roger.pueyo@guifi.net>
+endef
+
+define Package/mikrotik-btest/description
+       A bandwidth test client compatible with Mikrotik's RouterOS BTest server.
+endef
+
+define Package/mikrotik-btest/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/mikrotik_btest $(1)/usr/bin/mikrotik_btest
+endef
+
+$(eval $(call BuildPackage,mikrotik-btest))
index 34e38f07c5edba300399b58b1ed1e49922b525f2..4cdaed9ee350e6cbab996299a8c117eeabdeecf1 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mwan3
-PKG_VERSION:=2.6.6
+PKG_VERSION:=2.6.9
 PKG_RELEASE:=1
 PKG_MAINTAINER:=Florian Eckert <fe@dev.tdt.de>
 PKG_LICENSE:=GPLv2
index 2c25b4f4c6f11184ad891efdf7a15c0276a3de1e..f977b3d84c750fc2c18b7ddf72d7da2a4c2db061 100644 (file)
@@ -28,7 +28,7 @@ src_ip=$(uci_get_state mwan3 globals src_ip)
        ip addr del "${src_ip}/32" dev lo 1>/dev/null 2>&1
 }
 
-usleep 10000
+sleep 1
 
 [ "$ACTION" = "ifup" ] && {
        network_get_ipaddr src_ip "${local_source}"
index 27033d582df09afba7014f3d1ed7aae5db4e85ae..71d6393b434ab25e56a359cf1e39cd3caf04a4c8 100644 (file)
@@ -26,24 +26,20 @@ if [ "$ACTION" == "ifup" ]; then
        if [ "$family" = "ipv4" ]; then
                ubus call network.interface.${INTERFACE}_4 status &>/dev/null
                if [ "$?" -eq "0" ]; then
-                       network_get_gateway gateway ${INTERFACE}_4
                        network_get_ipaddr src_ip ${INTERFACE}_4
                else
-                       network_get_gateway gateway $INTERFACE
                        network_get_ipaddr src_ip ${INTERFACE}
                fi
+               [ -n "$src_ip" ] || src_ip="0.0.0.0"
        elif [ "$family" = "ipv6" ]; then
                ubus call network.interface.${INTERFACE}_6 status &>/dev/null
                if [ "$?" -eq "0" ]; then
-                       network_get_gateway6 gateway ${INTERFACE}_6
                        network_get_ipaddr6 src_ip ${INTERFACE}_6
                else
-                       network_get_gateway6 gateway ${INTERFACE}
                        network_get_ipaddr6 src_ip ${INTERFACE}
                fi
+               [ -n "$src_ip" ] || src_ip="::"
        fi
-
-       [ -n "$gateway" ] || exit 9
 fi
 
 if [ "$initial_state" = "offline" ]; then
diff --git a/net/mwan3/files/lib/mwan3/common.sh b/net/mwan3/files/lib/mwan3/common.sh
new file mode 100644 (file)
index 0000000..1af1299
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+get_uptime() {
+       local uptime=$(cat /proc/uptime)
+       echo "${uptime%%.*}"
+}
index a92cb46870c272e3329974cdbf23390ff7cebfa6..05ee9eedfee46dddddaabbcaa0dcbb19aff8f98e 100644 (file)
@@ -10,6 +10,7 @@ CONNTRACK_FILE="/proc/net/nf_conntrack"
 
 MWAN3_STATUS_DIR="/var/run/mwan3"
 MWAN3TRACK_STATUS_DIR="/var/run/mwan3track"
+DEFAULT_LOWEST_METRIC=256
 
 [ -d $MWAN3_STATUS_DIR ] || mkdir -p $MWAN3_STATUS_DIR/iface_state
 # mwan3's MARKing mask (at least 3 bits should be set)
@@ -195,7 +196,7 @@ mwan3_set_general_iptables()
 
 mwan3_create_iface_iptables()
 {
-       local id family src_ip src_ipv6
+       local id family
 
        config_get family $1 family ipv4
        mwan3_get_iface_id id $1
@@ -203,14 +204,6 @@ mwan3_create_iface_iptables()
        [ -n "$id" ] || return 0
 
        if [ "$family" == "ipv4" ]; then
-
-               ubus call network.interface.${1}_4 status &>/dev/null
-               if [ "$?" -eq "0" ]; then
-                       network_get_ipaddr src_ip ${1}_4
-               else
-                       network_get_ipaddr src_ip $1
-               fi
-
                $IPS -! create mwan3_connected list:set
 
                if ! $IPT4 -S mwan3_ifaces_in &> /dev/null; then
@@ -237,21 +230,13 @@ mwan3_create_iface_iptables()
                $IPT4 -A mwan3_ifaces_in -m mark --mark 0x0/$MMX_MASK -j mwan3_iface_in_$1
 
                $IPT4 -F mwan3_iface_out_$1
-               $IPT4 -A mwan3_iface_out_$1 -s $src_ip -m mark --mark 0x0/$MMX_MASK -m comment --comment "$1" -j MARK --set-xmark $(mwan3_id2mask id MMX_MASK)/$MMX_MASK
+               $IPT4 -A mwan3_iface_out_$1 -o $2 -m mark --mark 0x0/$MMX_MASK -m comment --comment "$1" -j MARK --set-xmark $(mwan3_id2mask id MMX_MASK)/$MMX_MASK
 
                $IPT4 -D mwan3_ifaces_out -m mark --mark 0x0/$MMX_MASK -j mwan3_iface_out_$1 &> /dev/null
                $IPT4 -A mwan3_ifaces_out -m mark --mark 0x0/$MMX_MASK -j mwan3_iface_out_$1
        fi
 
        if [ "$family" == "ipv6" ]; then
-
-               ubus call network.interface.${1}_6 status &>/dev/null
-               if [ "$?" -eq "0" ]; then
-                       network_get_ipaddr6 src_ipv6 ${1}_6
-               else
-                       network_get_ipaddr6 src_ipv6 $1
-               fi
-
                $IPS -! create mwan3_connected_v6 hash:net family inet6
 
                if ! $IPT6 -S mwan3_ifaces_in &> /dev/null; then
@@ -278,7 +263,7 @@ mwan3_create_iface_iptables()
                $IPT6 -A mwan3_ifaces_in -m mark --mark 0x0/$MMX_MASK -j mwan3_iface_in_$1
 
                $IPT6 -F mwan3_iface_out_$1
-               $IPT6 -A mwan3_iface_out_$1 -s $src_ipv6 -m mark --mark 0x0/$MMX_MASK -m comment --comment "$1" -j MARK --set-xmark $(mwan3_id2mask id MMX_MASK)/$MMX_MASK
+               $IPT6 -A mwan3_iface_out_$1 -o $2 -m mark --mark 0x0/$MMX_MASK -m comment --comment "$1" -j MARK --set-xmark $(mwan3_id2mask id MMX_MASK)/$MMX_MASK
 
                $IPT6 -D mwan3_ifaces_out -m mark --mark 0x0/$MMX_MASK -j mwan3_iface_out_$1 &> /dev/null
                $IPT6 -A mwan3_ifaces_out -m mark --mark 0x0/$MMX_MASK -j mwan3_iface_out_$1
@@ -322,32 +307,37 @@ mwan3_create_iface_route()
        [ -n "$id" ] || return 0
 
        if [ "$family" == "ipv4" ]; then
-               ubus call network.interface.${1}_4 status &>/dev/null
-               if [ "$?" -eq "0" ]; then
+               if ubus call network.interface.${1}_4 status &>/dev/null; then
                        network_get_gateway route_args ${1}_4
                else
                        network_get_gateway route_args $1
                fi
 
-               route_args="via $route_args dev $2"
+               if [ -n "$route_args" -a "$route_args" != "0.0.0.0" ]; then
+                       route_args="via $route_args"
+               else
+                       route_args=""
+               fi
 
                $IP4 route flush table $id
-               $IP4 route add table $id default $route_args
+               $IP4 route add table $id default $route_args dev $2
        fi
 
        if [ "$family" == "ipv6" ]; then
-
-               ubus call network.interface.${1}_6 status &>/dev/null
-               if [ "$?" -eq "0" ]; then
+               if ubus call network.interface.${1}_6 status &>/dev/null; then
                        network_get_gateway6 route_args ${1}_6
                else
                        network_get_gateway6 route_args $1
                fi
 
-               route_args="via $route_args dev $2"
+               if [ -n "$route_args" -a "$route_args" != "::" ]; then
+                       route_args="via $route_args"
+               else
+                       route_args=""
+               fi
 
                $IP6 route flush table $id
-               $IP6 route add table $id default $route_args
+               $IP6 route add table $id default $route_args dev $2
        fi
 }
 
@@ -491,6 +481,7 @@ mwan3_set_policy()
        config_get weight $1 weight 1
 
        [ -n "$iface" ] || return 0
+       [ "$metric" -gt $DEFAULT_LOWEST_METRIC ] && $LOG warn "Member interface $iface has >$DEFAULT_LOWEST_METRIC metric. Not appending to policy" && return 0
 
        mwan3_get_iface_id id $iface
 
@@ -598,10 +589,10 @@ mwan3_create_policies_iptables()
                esac
        done
 
-       lowest_metric_v4=256
+       lowest_metric_v4=$DEFAULT_LOWEST_METRIC
        total_weight_v4=0
 
-       lowest_metric_v6=256
+       lowest_metric_v6=$DEFAULT_LOWEST_METRIC
        total_weight_v6=0
 
        config_list_foreach $1 use_member mwan3_set_policy
index 122426f660359fcbe50a428eb8c732aad15ee110..a772e133e8cb27421f913f848a90415cedca3a34 100755 (executable)
@@ -3,6 +3,7 @@
 . /lib/functions.sh
 . /lib/functions/network.sh
 . /usr/share/libubox/jshn.sh
+. /lib/mwan3/common.sh
 
 MWAN3TRACK_STATUS_DIR="/var/run/mwan3track"
 
@@ -47,7 +48,7 @@ get_mwan3_status() {
 
                time_p="$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/TIME")"
                [ -z "${time_p}" ] || {
-                       time_n="$(date +'%s')"
+                       time_n="$(get_uptime)"
                        let age=time_n-time_p
                }
 
index e94ada815753ceccf271b081e98a085885cc3629..588eb9bf4aae1ef7d3c442c1fd191fe3d485880e 100755 (executable)
@@ -1,6 +1,7 @@
 #!/bin/sh
 
 . /lib/functions.sh
+. /lib/mwan3/common.sh
 
 LOG="logger -t $(basename "$0")[$$] -p"
 INTERFACE=""
@@ -21,7 +22,10 @@ if_down() {
 validate_track_method() {
        case "$1" in
                ping)
-                       # Assume that ping is installed
+                       which ping 1>/dev/null 2>&1 || {
+                               $LOG warn "Missing ping. Please install iputils-ping package or enable ping util and recompile busybox."
+                               return 1
+                       }
                        ;;
                arping)
                        which arping 1>/dev/null 2>&1 || {
@@ -34,6 +38,10 @@ validate_track_method() {
                                $LOG warn "Missing httping. Please install httping package."
                                return 1
                        }
+                       [ -n "$2" -a "$2" != "0.0.0.0" -a "$2" != "::" ] || {
+                               $LOG warn "Cannot determine source IP for the interface which is required by httping."
+                               return 1
+                       }
                        ;;
                *)
                        $LOG warn "Unsupported tracking method: $track_method"
@@ -59,9 +67,14 @@ main() {
 
        config_load mwan3
        config_get track_method $1 track_method ping
-       validate_track_method $track_method || {
-               $LOG warn "Using ping to track interface $INTERFACE avaliability"
+       validate_track_method $track_method $SRC_IP || {
                track_method=ping
+               if validate_track_method $track_method; then
+                       $LOG warn "Using ping to track interface $INTERFACE avaliability"
+               else
+                       $LOG err "No track method avaliable"
+                       exit 1
+               fi
        }
        config_get reliability $1 reliability 1
        config_get count $1 count 1
@@ -159,7 +172,7 @@ main() {
                echo "${lost}" > /var/run/mwan3track/$1/LOST
                echo "${score}" > /var/run/mwan3track/$1/SCORE
                echo "${turn}" > /var/run/mwan3track/$1/TURN
-               echo "$(date +'%s')" > /var/run/mwan3track/$1/TIME
+               echo "$(get_uptime)" > /var/run/mwan3track/$1/TIME
 
                host_up_count=0
                sleep "${sleep_time}" &
index 369122f626974ddb92c12a826b9adae3c98c046a..8107891b5c4e4d3dc1d9ba3d9fa39fa2ba5938db 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=nbd
-PKG_VERSION:=3.11
+PKG_VERSION:=3.16.2
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@SF/nbd
-PKG_HASH:=14420f74cb16dc609a9302ed1efd653064bed7a8357e9d73daabc33608e3f2a0
+PKG_HASH:=422f62bdf6e6b973bd82083dc52b6577396fe00aa6607837ac464e476124155b
 PKG_LICENSE:=GPL-2.0+
 PKG_MAINTAINER:=Marcin Jurkowski <marcin1j@gmail.com>
 
@@ -51,7 +51,8 @@ define Package/nbd-server/description
 endef
 
 CONFIGURE_ARGS += \
-       --disable-glibtest
+       --disable-glibtest \
+       --without-gnutls
 
 TARGET_CFLAGS += --std=gnu99 -DNODAEMON
 
diff --git a/net/nbd/patches/100-make-gnutls-test-optional.patch b/net/nbd/patches/100-make-gnutls-test-optional.patch
new file mode 100644 (file)
index 0000000..29586ea
--- /dev/null
@@ -0,0 +1,15 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -210,7 +210,11 @@ dnl               ;;
+ dnl   esac
+ dnl fi
+-PKG_CHECK_MODULES(GnuTLS, [gnutls >= 2.12.0],[HAVE_GNUTLS=1],[HAVE_GNUTLS=0])
++AC_ARG_WITH([gnutls], AS_HELP_STRING([--with-gnutls], [Build with GnuTLS]))
++AS_IF([test "x$with_gnutls" = "xyes"], [
++      PKG_CHECK_MODULES(GnuTLS, [gnutls >= 2.12.0],[HAVE_GNUTLS=1],[HAVE_GNUTLS=0])
++])
++
+ if test x$HAVE_GNUTLS = x1; then
+       AC_DEFINE(HAVE_GNUTLS, 1, [Define to 1 if you have a GnuTLS version of 2.12 or above])
+ else
diff --git a/net/nbd/patches/101-fix-build-without-gnutls.patch b/net/nbd/patches/101-fix-build-without-gnutls.patch
new file mode 100644 (file)
index 0000000..44cbf4e
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -35,7 +35,7 @@ nbd_client_CFLAGS = $(client_flags) @Gnu
+ nbd_client_LDADD = $(client_libs) @GnuTLS_LIBS@
+ else
+ nbd_client_SOURCES = $(client_srcs)
+-nbd_client_CFLAGS = $(client_flags)
++nbd_client_CFLAGS = $(client_flags) -DNOTLS -DPROG_NAME='"nbd-client"'
+ nbd_client_LDADD = $(client_libs)
+ endif
+ endif
index fb136cb05009e7b38268186fdf19e76ffaf220c2..25da6cc1dad63a57c29fac5d73784de5bdd20e46 100644 (file)
@@ -14,11 +14,11 @@ PKG_NAME:=netopeer2
 PKG_LICENSE:=BSD-3-Clause
 PKG_MAINTAINER:=Mislav Novakovic <mislav.novakovic@sartura.hr>
 
-PKG_VERSION:=0.4.0
+PKG_VERSION:=0.4.3
 
 PKG_SOURCE_PROTO:=git
-PKG_SOURCE_VERSION:=d028c1f931819db4b3e3cb1fd2d349a4fd5c0459
-PKG_MIRROR_HASH:=7f5b3ad49aaf2a8ceea2c17a37e276f5694af570ef904cfc5a6f53d295809cef
+PKG_SOURCE_VERSION:=e7c821cde14df31a03d23293f84e0aed9cb1a457
+PKG_MIRROR_HASH:=88a4c06e9cdb81879de7311138acbfe9fe5207db14fbb93c5ba4d6947d616aec
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
 PKG_SOURCE_URL:=https://github.com/CESNET/Netopeer2.git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION)
diff --git a/net/netopeer2/patches/002-server-BUGFIX-replace-sr_get_iter-with-sr_get_items b/net/netopeer2/patches/002-server-BUGFIX-replace-sr_get_iter-with-sr_get_items
deleted file mode 100644 (file)
index 9cd4538..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-Index: netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/server/ietf_netconf_server.c
-===================================================================
---- netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459.orig/server/ietf_netconf_server.c
-+++ netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/server/ietf_netconf_server.c
-@@ -1161,8 +1161,8 @@ feature_change_ietf_netconf_server(const
- {
-     int rc, rc2 = 0;
-     const char *path = NULL;
--    sr_val_iter_t *sr_iter;
--    sr_val_t *sr_val;
-+    sr_val_t *values;
-+    size_t value_cnt;
-     assert(feature_name);
-@@ -1180,26 +1180,26 @@ feature_change_ietf_netconf_server(const
-             return EXIT_SUCCESS;
-         }
--        rc = sr_get_items_iter(np2srv.sr_sess.srs, path, &sr_iter);
-+        rc =sr_get_items(np2srv.sr_sess.srs, path, &values, &value_cnt);
-         if (rc != SR_ERR_OK) {
-             ERR("Failed to get \"%s\" values iterator from sysrepo (%s).", sr_strerror(rc));
-             return EXIT_FAILURE;
-         }
--        while ((rc = sr_get_item_next(np2srv.sr_sess.srs, sr_iter, &sr_val)) == SR_ERR_OK) {
--            if (sr_val->type == SR_LIST_T) {
-+        size_t i;
-+        for(i = 0; i < value_cnt; i++) {
-+            if (values[i].type == SR_LIST_T) {
-                 /* no semantic meaning */
-                 continue;
-             }
--            rc2 = module_change_resolve(np2srv.sr_sess.srs, SR_OP_CREATED, NULL, sr_val, NULL, NULL);
--            sr_free_val(sr_val);
-+            rc2 = module_change_resolve(np2srv.sr_sess.srs, SR_OP_CREATED, NULL, &values[i], NULL, NULL);
-             if (rc2) {
-                 ERR("Failed to enable nodes depending on the \"%s\" ietf-netconf-server feature.", feature_name);
-                 break;
-             }
-         }
--        sr_free_val_iter(sr_iter);
-+        sr_free_values(values, value_cnt);
-         if (rc2) {
-             return EXIT_FAILURE;
-         } else if ((rc != SR_ERR_OK) && (rc != SR_ERR_NOT_FOUND)) {
diff --git a/net/netopeer2/patches/003-BUGFIX-for-missing-eaccess-in-uClibc b/net/netopeer2/patches/003-BUGFIX-for-missing-eaccess-in-uClibc
deleted file mode 100644 (file)
index 5314cdb..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-Index: netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/CMakeLists.txt
-===================================================================
---- netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459.orig/cli/CMakeLists.txt
-+++ netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/CMakeLists.txt
-@@ -67,6 +67,9 @@ if(NOT MAN_INSTALL_DIR)
-     set(MAN_INSTALL_DIR share/man)
- endif()
-+include(CheckFunctionExists)
-+check_function_exists(eaccess HAVE_EACCESS)
-+
- # install binary
- install(TARGETS netopeer2-cli DESTINATION ${BIN_INSTALL_DIR})
-Index: netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/commands.c
-===================================================================
---- netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459.orig/cli/commands.c
-+++ netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/commands.c
-@@ -37,6 +37,10 @@
- #   include <openssl/x509v3.h>
- #endif
-+#ifndef HAVE_EACCESS
-+#define eaccess access
-+#endif
-+
- #include "commands.h"
- #include "configuration.h"
- #include "completion.h"
-Index: netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/completion.c
-===================================================================
---- netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459.orig/cli/completion.c
-+++ netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/completion.c
-@@ -27,6 +27,10 @@
- #include <nc_client.h>
-+#ifndef HAVE_EACCESS
-+#define eaccess access
-+#endif
-+
- #include "commands.h"
- #include "linenoise/linenoise.h"
-Index: netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/configuration.c
-===================================================================
---- netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459.orig/cli/configuration.c
-+++ netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/configuration.c
-@@ -28,6 +28,10 @@
- #include <libyang/libyang.h>
- #include <nc_client.h>
-+#ifndef HAVE_EACCESS
-+#define eaccess access
-+#endif
-+
- #include "configuration.h"
- #include "commands.h"
- #include "linenoise/linenoise.h"
diff --git a/net/netopeer2/patches/004-BUGFIX-for-missing-mkstemps-in-uClibc b/net/netopeer2/patches/004-BUGFIX-for-missing-mkstemps-in-uClibc
deleted file mode 100644 (file)
index 24460a1..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-Index: netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/CMakeLists.txt
-===================================================================
---- netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459.orig/cli/CMakeLists.txt
-+++ netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/CMakeLists.txt
-@@ -69,6 +69,10 @@ endif()
- include(CheckFunctionExists)
- check_function_exists(eaccess HAVE_EACCESS)
-+check_function_exists(mkstemps HAVE_MKSTEMPS)
-+if(HAVE_MKSTEMPS)
-+    set(CMAKE_C_FLAGS         "${CMAKE_C_FLAGS} -DHAVE_MKSTEMPS")
-+endif(HAVE_MKSTEMPS)
- # install binary
- install(TARGETS netopeer2-cli DESTINATION ${BIN_INSTALL_DIR})
-Index: netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/completion.c
-===================================================================
---- netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459.orig/cli/completion.c
-+++ netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/completion.c
-@@ -120,6 +120,7 @@ readinput(const char *instruction, const
-     char* tmpname = NULL, *input = NULL, *old_content = NULL, *ptr, *ptr2;
-     /* Create a unique temporary file */
-+#ifdef HAVE_MKSTEMPS
-     if (asprintf(&tmpname, "/tmp/tmpXXXXXX.xml") == -1) {
-         ERROR(__func__, "asprintf() failed (%s).", strerror(errno));
-         goto fail;
-@@ -129,6 +130,23 @@ readinput(const char *instruction, const
-         ERROR(__func__, "Failed to create a temporary file (%s).", strerror(errno));
-         goto fail;
-     }
-+#else
-+    if (asprintf(&tmpname, "/tmp/tmpXXXXXX") == -1) {
-+        ERROR(__func__, "asprintf() failed (%s).", strerror(errno));
-+        goto fail;
-+    }
-+    /* cannot fail */
-+    mktemp(tmpname);
-+    if (asprintf(&tmpname, ".xml") == -1) {
-+        ERROR(__func__, "asprintf() failed (%s).", strerror(errno));
-+        goto fail;
-+    }
-+    tmpfd = open(tmpname, O_RDWR | O_CREAT | O_EXCL, 0600);
-+    if (tmpfd == -1) {
-+        ERROR(__func__, "Failed to create a temporary file (%s).", strerror(errno));
-+        goto fail;
-+    }
-+#endif /* #ifdef HAVE_MKSTEMPS */
-     /* Read the old content, if any */
-     if (old_tmp != NULL) {
index bcb66360bc5641b6c508dabe4a578cdbf1c90d4d..d16e722caee33c5b565d8b9e3b51d00fdf958553 100644 (file)
@@ -7,9 +7,9 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=nfs-kernel-server
-PKG_VERSION:=2.1.1
+PKG_VERSION:=2.2.1
 PKG_RELEASE:=1
-PKG_HASH:=0a28416948516c26f3bfe90425b0de09b79364dc1f508bf1dda8de66e1edbb09
+PKG_HASH:=0d819d8da358bea6e005e1a6cf0f6fa0c5507a78747d36bc87a0182e6af14291
 
 PKG_SOURCE_URL:=@SF/nfs
 PKG_SOURCE:=nfs-utils-$(PKG_VERSION).tar.bz2
@@ -86,6 +86,7 @@ CONFIGURE_ARGS += \
 
 CONFIGURE_VARS += \
        libblkid_cv_is_recent=yes \
+       ac_cv_lib_resolv___res_querydomain=yes \
        CONFIG_SQLITE3_TRUE="\#" \
        CONFIG_NFSDCLD_TRUE="\#"
 
index efe565c5b4290775a8e7fc208dbfae2fe0e9c050..8e926e1eb1065031ca8c688614e9dcd55115a8e7 100644 (file)
@@ -1,11 +1,9 @@
 Musl will always return something with getservbyport so we cannot skip
 ports that returns non-null.
 
-diff --git a/utils/statd/rmtcall.c b/utils/statd/rmtcall.c
-index fd576d9..d72a0bf 100644
 --- a/utils/statd/rmtcall.c
 +++ b/utils/statd/rmtcall.c
-@@ -90,8 +90,10 @@ statd_get_socket(void)
+@@ -93,8 +93,10 @@ statd_get_socket(void)
                                        __func__);
                        break;
                }
@@ -14,5 +12,5 @@ index fd576d9..d72a0bf 100644
                if (se == NULL)
 +#endif
                        break;
-               /* rather not use that port, try again */
  
+               if (retries == MAX_BRP_RETRIES) {
diff --git a/net/nfs-kernel-server/patches/102-limits.patch b/net/nfs-kernel-server/patches/102-limits.patch
new file mode 100644 (file)
index 0000000..67701c3
--- /dev/null
@@ -0,0 +1,10 @@
+--- a/support/misc/file.c
++++ b/support/misc/file.c
+@@ -27,6 +27,7 @@
+ #include <dirent.h>
+ #include <stdlib.h>
+ #include <stdbool.h>
++#include <limits.h>
+ #include "xlog.h"
+ #include "misc.h"
index 7e05c3a4ef8d12e432e2c8294f54cc31cae4b2d4..a69c9fb2a202a96305d6350cd290344e8756ea4c 100644 (file)
@@ -13,10 +13,10 @@ PKG_RELEASE:=1
 PKG_LICENSE:=GPLv3
 PKG_MAINTAINER:=Steven Hessing <steven.hessing@gmail.com>
 
-PKG_SOURCE_VERSION:=0.5.2
+PKG_SOURCE_VERSION:=0.5.5
 PKG_SOURCE_URL:=https://github.com/noddos/noddos/releases/download/v$(PKG_SOURCE_VERSION)/
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.xz
-PKG_HASH:=63fe85fc4a588da2d71b7b7db68f1c80ba19520467a3800bdb43bc516a6cff72
+PKG_HASH:=1f5be0c1015b0407036eecc8449d60d2abcacec442bba55db85fc32e89f754db
 
 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)-$(PKG_SOURCE_VERSION)
 
@@ -29,15 +29,15 @@ define Package/noddos
        CATEGORY:=Network
        TITLE:=noddos -- device-aware cloud-powered firewall
        URL:=https://www.noddos.io/
-       DEPENDS:=+libstdcpp +libnetfilter-conntrack +libcurl +libopenssl +openssl-util +ca-bundle +ca-certificates +wget +bzip2 +libtins +ipset +libpthread
+       DEPENDS:=+libstdcpp +libnetfilter-conntrack +libcurl +libopenssl +openssl-util +ca-bundle +ca-certificates +wget +bzip2 +libtins +ipset +libpthread +libyaml-cpp
 endef
 
 define Package/noddos/description
-Noddos discovers what devices you have in your network and tailors the firewall rules based on whitelisted flows for that device. Noddos downloads the firewall rules periodically from the cloud. In order to support creating these firewall rules, noddos can optionally upload anonimized traffic statistics for each device to the cloud.
+Noddos discovers what devices you have in your network and tailors the firewall rules based on whitelisted flows for that device. Noddos downloads the firewall rules periodically from the cloud. In order to support creating these firewall rules, noddos can, after opt-in, upload anonimized traffic statistics for each device to the cloud. The Luci interface is available in the luci-apps-noddos package. For information, visit https://www.noddos.io/
 endef
 
 define Package/noddos/conffiles
-       /etc/config/noddos      
+       /etc/config/noddos
 endef
 
 define Package/noddos/install
@@ -51,9 +51,8 @@ define Package/noddos/install
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/tools/makenoddoscert.sh $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/noddos.init $(1)/etc/init.d/noddos
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/noddos.uciconfig $(1)/etc/config/noddos
-       $(INSTALL_DATA) $(PKG_BUILD_DIR)/files/noddos.conf-base $(1)/etc/noddos
+       $(INSTALL_DATA) $(PKG_BUILD_DIR)/files/noddos.yml-base $(1)/etc/noddos
        $(INSTALL_DATA) $(PKG_BUILD_DIR)/files/noddosconfig.pem $(1)/etc/noddos
-       $(INSTALL_DATA) $(PKG_BUILD_DIR)/files/noddos.conf-base $(1)/etc/noddos
 endef
 
 define Package/noddos/prerm
@@ -73,8 +72,8 @@ define Package/noddos/postrm
        if [ -z "$${IPKG_INSTROOT}" ]; then
                echo "Removing noddos data directory"
                rm -rf /var/lib/noddos
-               if [ -f /var/etc/noddos.conf ]; then
-                       rm /var/etc/noddos.conf
+               if [ -f /var/etc/noddos.yml ]; then
+                       rm /var/etc/noddos.yml
                fi
        fi
        exit 0
index c1e24f695da7ed2c42772f8f8eaf0d07b3d3e54c..793829de575629a0ab063d8e1beebe614976a778 100644 (file)
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ocserv
-PKG_VERSION:=0.11.8
+PKG_VERSION:=0.11.9
 PKG_RELEASE:=1
 PKG_USE_MIPS16:=0
 
 PKG_BUILD_DIR :=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=ftp://ftp.infradead.org/pub/ocserv/
-PKG_HASH:=735b9b88a004d5bc8a91d4093d07ea0e2c9fac370a35d84beccc394ed24420c7
+PKG_HASH:=23e274fd6a0e44df90eeb79276b1057f6508a2b4a842ce2f589a8353a51268eb
 
 PKG_LICENSE:=GPLv2+
 PKG_LICENSE_FILES:=COPYING
index ec2554c8354e7296daf06ed1b61987da1d8ee762..4e70f5a5e85664b50d8fb8550de418fcf58b09c7 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=openconnect
 PKG_VERSION:=7.08
-PKG_RELEASE:=4
+PKG_RELEASE:=7
 PKG_USE_MIPS16:=0
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
@@ -32,19 +32,20 @@ define Package/openconnect
   SECTION:=net
   CATEGORY:=Network
   DEPENDS:=+libxml2 +kmod-tun +resolveip +vpnc-scripts +OPENCONNECT_OPENSSL:libopenssl +OPENCONNECT_OPENSSL:p11-kit +OPENCONNECT_OPENSSL:libp11 +OPENCONNECT_GNUTLS:libgnutls +OPENCONNECT_STOKEN:libstoken
-  TITLE:=OpenConnect VPN client (Cisco AnyConnect compatible)
+  TITLE:=OpenConnect VPN client (Cisco AnyConnect and Juniper/Pulse compatible)
   MAINTAINER:=Nikos Mavrogiannopoulos <n.mavrogiannopoulos@gmail.com>
   URL:=http://www.infradead.org/openconnect/
   SUBMENU:=VPN
 endef
 
 define Package/openconnect/description
-       A VPN client compatible with Cisco's AnyConnect SSL VPN and ocserv.
+       A VPN client compatible with Cisco's AnyConnect SSL VPN, ocserv and Juniper (Pulse secure).
 
         OpenConnect is a client that follows the Cisco's AnyConnect SSL VPN protocol,
         which is supported by IOS 12.4(9)T or later on Cisco SR500, 870, 880, 1800,
         2800, 3800, 7200 Series and Cisco 7301 Routers, as well as the OpenConnect
-        VPN server.
+        VPN server. It has later been ported to support the Juniper SSL VPN which
+        is now known as Pulse Connect Secure.
 endef
 
 CONFIGURE_ARGS += \
index 772b0e3cc6bea6983703c3419663c45a9b228c89..019058ce505e3f304cd4d4399d9285eb1e474916 100644 (file)
@@ -3,15 +3,15 @@ The openconnect client expects to be configured using the uci interface.
 To setup a VPN connection, add the following to /etc/config/network:
 
 config interface 'MYVPN'
-        option proto 'openconnect'
-        option interface 'wan'
-        option server 'vpn.example.com'
-        option port '4443'
-        option username 'test'
-        option password 'secret'
-        option serverhash 'AE7FF6A0426F0A0CD0A02EB9EC3C5066FAEB0B25'
+       option proto 'openconnect'
+       option interface 'wan'
+       option server 'vpn.example.com'
+       option port '4443'
+       option username 'test'
+       option password 'secret'
+       option serverhash 'AE7FF6A0426F0A0CD0A02EB9EC3C5066FAEB0B25'
        option defaultroute '0'
-        option authgroup 'DEFAULT'
+       option authgroup 'DEFAULT'
 
        # For second factor auth:
 
@@ -19,12 +19,19 @@ config interface 'MYVPN'
        #option password2 'my-fixed-2fa-password'
 
        # RSA tokens, must be built with stoken support
-        #option token_mode 'rsa'
-        #option token_secret 'secret'
+       #option token_mode 'rsa'
+       #option token_secret 'secret'
 
        # HOTP/TOTP tokens
-        #option token_mode 'hotp'
-        #option token_secret '00'
+       #option token_mode 'hotp'
+       #option token_secret '00'
+
+       # tokens from script
+       #option token_mode 'script'
+       #option token_script '/lib/custom/getocpass.sh'
+
+       # Juniper vpn support
+       #option juniper '1'
 
 The additional files are also used:
 /etc/openconnect/user-cert-vpn-MYVPN.pem: The user certificate
@@ -38,6 +45,5 @@ deinitialize it using ifdown. You may also use the luci web interface
 Note that you need to configure the firewall to allow communication between
 the MYVPN interface and lan.
 
-
 There is a luci plugin to allow configuring an openconnect interface from
 the web environment; see the luci-proto-openconnect package.
index 0e3d90ab4436e5e5c37532ff1751164f76763f03..dc1d42b80fc0993713bc4024d0296cff60279c4f 100755 (executable)
@@ -7,6 +7,8 @@ proto_openconnect_init_config() {
        proto_config_add_string "server"
        proto_config_add_int "port"
        proto_config_add_int "mtu"
+       proto_config_add_int "juniper"
+       proto_config_add_string "interface"
        proto_config_add_string "username"
        proto_config_add_string "serverhash"
        proto_config_add_string "authgroup"
@@ -14,6 +16,7 @@ proto_openconnect_init_config() {
        proto_config_add_string "password2"
        proto_config_add_string "token_mode"
        proto_config_add_string "token_secret"
+       proto_config_add_string "token_script"
        proto_config_add_string "os"
        proto_config_add_string "csd_wrapper"
        no_device=1
@@ -23,7 +26,7 @@ proto_openconnect_init_config() {
 proto_openconnect_setup() {
        local config="$1"
 
-       json_get_vars server port username serverhash authgroup password password2 token_mode token_secret os csd_wrapper mtu
+       json_get_vars server port interface username serverhash authgroup password password2 token_mode token_secret token_script os csd_wrapper mtu juniper
 
        grep -q tun /proc/modules || insmod tun
        ifname="vpn-$config"
@@ -33,7 +36,7 @@ proto_openconnect_setup() {
        logger -t "openconnect" "adding host dependency for $server at $config"
        for ip in $(resolveip -t 10 "$server"); do
                logger -t "openconnect" "adding host dependency for $ip at $config"
-               proto_add_host_dependency "$config" "$ip"
+               proto_add_host_dependency "$config" "$ip" "$interface"
        done
 
        [ -n "$port" ] && port=":$port"
@@ -52,22 +55,35 @@ proto_openconnect_setup() {
                append cmdline "--cafile /etc/openconnect/ca-vpn-$config.pem"
                append cmdline "--no-system-trust"
        }
+
+       if [ "${juniper:-0}" -gt 0 ]; then
+               append cmdline "--juniper"
+       fi
+
        [ -n "$serverhash" ] && {
                append cmdline " --servercert=$serverhash"
                append cmdline "--no-system-trust"
        }
        [ -n "$authgroup" ] && append cmdline "--authgroup $authgroup"
        [ -n "$username" ] && append cmdline "-u $username"
-       [ -n "$password" ] && {
+       [ -n "$password" ] || [ "$token_mode" = "script" ] && {
                umask 077
                mkdir -p /var/etc
                pwfile="/var/etc/openconnect-$config.passwd"
-               echo "$password" > "$pwfile"
-               [ -n "$password2" ] && echo "$password2" >> "$pwfile"
+               [ -n "$password" ] && {
+                       echo "$password" > "$pwfile"
+                       [ -n "$password2" ] && echo "$password2" >> "$pwfile"
+               }
+               [ "$token_mode" = "script" ] && {
+                       $token_script > "$pwfile" 2> /dev/null || {
+                               logger -t openconenct "Cannot get password from script '$token_script'"
+                               proto_setup_failed "$config"
+                       }
+               }
                append cmdline "--passwd-on-stdin"
        }
 
-       [ -n "$token_mode" ] && append cmdline "--token-mode=$token_mode"
+       [ -n "$token_mode" -a "$token_mode" != "script" ] && append cmdline "--token-mode=$token_mode"
        [ -n "$token_secret" ] && append cmdline "--token-secret=$token_secret"
        [ -n "$os" ] && append cmdline "--os=$os"
        [ -n "$csd_wrapper" ] && [ -x "$csd_wrapper" ] && append cmdline "--csd-wrapper=$csd_wrapper"
index ddd5802dbffe06ce755de45274332bb1c7f60ed7..235f313581cf08308ef970a749add194942ba4f8 100644 (file)
@@ -1,6 +1,6 @@
 # 
 # Copyright (C) 2013 Julius Schulz-Zander <julius@net.t-labs.tu-berlin.de>
-# Copyright (C) 2014 OpenWrt.org
+# Copyright (C) 2014-2017 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -13,14 +13,14 @@ include $(INCLUDE_DIR)/kernel.mk
 PKG_NAME:=openvswitch
 
 PKG_RELEASE:=1
-PKG_VERSION:=2.7.2
+PKG_VERSION:=2.8.1
 PKG_LICENSE:=Apache-2.0
 PKG_LICENSE_FILES:=COPYING
 PKG_USE_MIPS16:=0
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://openvswitch.org/releases/
-PKG_HASH:=fe36c86ed52f6f7c17b01cdbb7ae37bf521cc5c2e50997b618f3f742485f655b
+PKG_HASH:=8d1c439e26d7044f0ec823c7fef1b00b7c6465da0b83a7d0cf3191ed1dc43893
 
 PKG_BUILD_DEPENDS:=python/host python-six/host
 PKG_CONFIG_DEPENDS:=CONFIG_PACKAGE_openvswitch-python
@@ -64,6 +64,43 @@ define Package/openvswitch-base/description
   to conserve some room and allow more configurability.
 endef
 
+define Package/openvswitch-ovn-base
+  $(call Package/openvswitch/Default)
+  TITLE:=Open Virtual Networking (base)
+  DEPENDS:=+openvswitch-base
+endef
+
+define Package/openvswitch-ovn-base/description
+  Provides the main userspace components required for Open Virtual Networking
+  over Open vSwitch.
+endef
+
+OVN_BIN_TOOLS:=ovn-controller ovn-controller-vtep ovn-detrace \
+       ovn-docker-overlay-driver ovn-docker-underlay-driver \
+       ovn-nbctl ovn-sbctl ovn-trace
+define Package/openvswitch-ovn
+  $(call Package/openvswitch/Default)
+  TITLE:=Open Virtual Networking (base)
+  DEPENDS:=+openvswitch-ovn-base $(foreach t,$(OVN_BIN_TOOLS),+openvswitch-$(t))
+endef
+
+define Package/openvswitch-ovn/description
+  Provides all the components required for Open Virtual Networking
+  (including the tools)
+endef
+
+define Package/openvswitch-vtep
+  $(call Package/openvswitch/Default)
+  TITLE:=Open vSwitch VXLAN Tunnel End Point
+  DEPENDS:=+openvswitch-base
+endef
+
+define Package/openvswitch-vtep/description
+  This schema specifies relations that a VTEP can use to integrate physi‐
+  cal ports into logical switches maintained by a network  virtualization
+  controller such as NSX.
+endef
+
 define Package/openvswitch-python
   $(call Package/openvswitch/Default)
   TITLE:=Open vSwitch Python Support
@@ -74,7 +111,9 @@ define Package/openvswitch-python/description
   Provides bindings and libraries for using Python to manipulate/work with Open vSwitch.
 endef
 
-OVS_BIN_TOOLS:=ovs-appctl ovs-ofctl ovs-dpctl ovs-vsctl ovsdb-client
+OVS_BIN_TOOLS:= \
+       ovsdb-client ovs-l3ping ovs-dpctl-top \
+       ovs-tcpdump ovs-tcpundump ovs-pcap ovs-parse-backtrace
 define Package/openvswitch
   $(call Package/openvswitch/Default)
   TITLE:=Open vSwitch Userspace Package
@@ -83,7 +122,7 @@ 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).
+  Includes also most of  OVS utilities.
 endef
 
 define KernelPackage/openvswitch
@@ -117,26 +156,30 @@ CONFIGURE_ARGS += --enable-shared
 
 TARGET_CFLAGS += -flto -std=gnu99
 
-CONFIGURE_VARS += KARCH=$(LINUX_KARCH)
+CONFIGURE_VARS += \
+       ovs_cv_flake8=no \
+       ovs_cv_python3=no \
+       KARCH=$(LINUX_KARCH)
+
 MAKE_FLAGS += \
        ARCH="$(LINUX_KARCH)" \
        PYTHONPATH="$(HOST_PYTHONPATH)" \
        PYTHON="$(HOST_PYTHON_BIN)"
 
 define OvsBinUtility
-  define Package/openvswitch-$(1)
+  define Package/openvswitch-$(2)
      $(call Package/openvswitch/Default)
-     TITLE:=$(2)
-     DEPENDS:=+openvswitch-base
+     TITLE:=$(3)
+     DEPENDS:=+$(1) $(4)
   endef
 
-  define Package/openvswitch-$(1)/description
-    $(2)
+  define Package/openvswitch-$(2)/description
+    $(3)
   endef
 
-  define Package/openvswitch-$(1)/install
+  define Package/openvswitch-$(2)/install
     $(INSTALL_DIR) $$(1)/usr/bin/ ;\
-    $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/$(1) $$(1)/usr/bin/
+    $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/$(2) $$(1)/usr/bin/
   endef
 endef
 
@@ -153,14 +196,40 @@ define Package/openvswitch-base/install
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsflow*.so*  $(1)/usr/lib/
 
        $(INSTALL_DIR) $(1)/usr/bin/
-       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ovsdb-tool $(1)/usr/bin/
+       $(foreach bin,ovsdb-tool ovs-appctl ovs-ofctl ovs-dpctl ovs-vsctl ovs-pki, \
+               $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/$(bin) $(1)/usr/bin/ ; )
 
        $(INSTALL_DIR) $(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_INSTALL_DIR)/usr/share/openvswitch/vswitch.ovsschema $(1)/usr/share/openvswitch/
+       $(INSTALL_DIR) $(1)/usr/share/openvswitch/scripts
+       $(INSTALL_CONF) \
+               $(PKG_INSTALL_DIR)/usr/share/openvswitch/vswitch.ovsschema \
+               $(1)/usr/share/openvswitch/
+       $(INSTALL_DATA) \
+               $(PKG_INSTALL_DIR)/usr/share/openvswitch/scripts/ovs-lib \
+               $(1)/usr/share/openvswitch/scripts
+       $(INSTALL_BIN) \
+               $(PKG_INSTALL_DIR)/usr/share/openvswitch/scripts/ovs-ctl \
+               $(1)/usr/share/openvswitch/scripts
+endef
+
+define Package/openvswitch-ovn-base/install
+       $(INSTALL_DIR) $(1)/usr/lib/ $(1)/usr/bin/ $(1)/usr/share/openvswitch/
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libovn*.so* $(1)/usr/lib/
+
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ovn-northd $(1)/usr/bin/
+
+       $(INSTALL_CONF) $(PKG_INSTALL_DIR)/usr/share/openvswitch/ovn-nb.ovsschema $(1)/usr/share/openvswitch/
+       $(INSTALL_CONF) $(PKG_INSTALL_DIR)/usr/share/openvswitch/ovn-sb.ovsschema $(1)/usr/share/openvswitch/
+endef
+
+define Package/openvswitch-vtep/install
+       $(INSTALL_DIR) $(1)/usr/lib/ $(1)/usr/bin/ $(1)/usr/share/openvswitch/
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/vtep-ctl $(1)/usr/bin/
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libvtep*.so* $(1)/usr/lib/
+       $(INSTALL_CONF) $(PKG_INSTALL_DIR)/usr/share/openvswitch/vtep.ovsschema $(1)/usr/share/openvswitch/
 endef
 
 define Package/openvswitch-python/install
@@ -168,19 +237,44 @@ define Package/openvswitch-python/install
        $(CP) $(PKG_INSTALL_DIR)/usr/share/openvswitch/python/ovs/* $(1)/usr/lib/python$(PYTHON_VERSION)/ovs
 endef
 
+define Package/openvswitch-ovn/install
+       :
+endef
+
 define Package/openvswitch/install
        :
 endef
 
-$(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))
+$(eval $(call OvsBinUtility,openvswitch-base,ovs-appctl,Open vSwitch app control utility))
+$(eval $(call OvsBinUtility,openvswitch-base,ovs-ofctl,Open vSwitch OpenFlow control utility))
+$(eval $(call OvsBinUtility,openvswitch-base,ovs-dpctl,Open vSwitch datapath management utility))
+$(eval $(call OvsBinUtility,openvswitch-base,ovs-vsctl,Open vSwitch ovs-vswitchd management utility))
+$(eval $(call OvsBinUtility,openvswitch-base,ovsdb-client,Open vSwitch database JSON-RPC client))
+$(eval $(call OvsBinUtility,openvswitch-base,ovs-l3ping,Check network deployment for L3 tunneling problems))
+$(eval $(call OvsBinUtility,openvswitch-base,ovs-docker,Open vSwitch docker tool))
+$(eval $(call OvsBinUtility,openvswitch-base,ovs-dpctl-top,Top like behavior for ovs-dpctl dump-flows))
+$(eval $(call OvsBinUtility,openvswitch-base,ovs-pki,OpenFlow public key infrastructure management utility))
+$(eval $(call OvsBinUtility,openvswitch-base,ovs-tcpdump,Dump traffic from an Open vSwitch port using tcpdump))
+$(eval $(call OvsBinUtility,openvswitch-base,ovs-tcpundump,Convert ``tcpdump -xx`` output to hex strings))
+$(eval $(call OvsBinUtility,openvswitch-base,ovs-pcap,Print packets from a pcap file as hex))
+$(eval $(call OvsBinUtility,openvswitch-base,ovs-parse-backtrace,parses ovs-appctl backtrace output))
+
+$(eval $(call OvsBinUtility,openvswitch-ovn-base,ovn-controller,Open Virtual Network local controller))
+$(eval $(call OvsBinUtility,openvswitch-ovn-base,ovn-controller-vtep,Open Virtual Network local controller for vtep enabled physical switches,+openvswitch-vtep))
+$(eval $(call OvsBinUtility,openvswitch-ovn-base,ovn-detrace,Convert ``ovs-appctl ofproto/trace`` output to combine OVN logical flow information))
+$(eval $(call OvsBinUtility,openvswitch-ovn-base,ovn-docker-overlay-driver,OVN Docker overlay driver utility))
+$(eval $(call OvsBinUtility,openvswitch-ovn-base,ovn-docker-underlay-driver,OVN Docker underlay driver utility))
+$(eval $(call OvsBinUtility,openvswitch-ovn-base,ovn-nbctl,Open Virtual Network northbound db management utility))
+$(eval $(call OvsBinUtility,openvswitch-ovn-base,ovn-sbctl,Utility for querying and configuring OVN_Southbound data‐base))
+$(eval $(call OvsBinUtility,openvswitch-ovn-base,ovn-trace,Open Virtual Network logical network tracing utility))
 
 $(foreach t,$(OVS_BIN_TOOLS),$(eval $(call BuildPackage,openvswitch-$(t))))
+$(foreach t,$(OVN_BIN_TOOLS),$(eval $(call BuildPackage,openvswitch-$(t))))
 
 $(eval $(call BuildPackage,openvswitch-base))
+$(eval $(call BuildPackage,openvswitch-ovn-base))
+$(eval $(call BuildPackage,openvswitch-ovn))
+$(eval $(call BuildPackage,openvswitch-vtep))
 $(eval $(call BuildPackage,openvswitch-python))
 $(eval $(call BuildPackage,openvswitch))
 $(eval $(call KernelPackage,openvswitch))
index ffe879a057d2a593911241cec3c9742d74c9f8fa..84655e74c3d2bb43537648790fc4c7e20763c577 100644 (file)
@@ -1,41 +1,22 @@
 #!/bin/sh /etc/rc.common
 # Copyright (C) 2013 Julius Schulz-Zander <julius@net.t-labs.tu-berlin.de>
-# Copyright (C) 2014 OpenWrt.org
+# Copyright (C) 2014-2017 OpenWrt.org
 
 START=15
-USE_PROCD=1
 
-start_service() {
-       [ -x /var/run/openvswitch ] || mkdir -p /var/run/openvswitch
-       [ -e /etc/openvswitch/conf.db ] || {
-               /usr/bin/ovsdb-tool create /etc/openvswitch/conf.db /usr/share/openvswitch/vswitch.ovsschema
-       }
+start() {
+       /usr/share/openvswitch/scripts/ovs-ctl start
+}
 
-       # ovsdb-server
-       procd_open_instance
-       procd_set_param command /usr/sbin/ovsdb-server
-       procd_append_param command --remote=punix:/var/run/db.sock
-       procd_append_param command --remote=db:Open_vSwitch,Open_vSwitch,manager_options
-       procd_append_param command --pidfile=/var/run/ovsdb-server.pid
-       procd_set_param respawn
-       procd_append_param respawn 3600
-       procd_append_param respawn 5
-       procd_append_param respawn -1
-       procd_set_param nice
-       procd_append_param nice -10
-       procd_close_instance
+stop() {
+       /usr/share/openvswitch/scripts/ovs-ctl stop
+}
 
-       # ovs-vswitchd
-       procd_open_instance
-       procd_set_param command /usr/sbin/ovs-vswitchd
-       procd_append_param command --pidfile=/var/run/ovs-vswitchd.pid
-       procd_set_param respawn
-       procd_append_param respawn 3600
-       procd_append_param respawn 5
-       procd_append_param respawn -1
-       procd_set_param nice
-       procd_append_param nice -10
-       procd_close_instance
+restart() {
+       /usr/share/openvswitch/scripts/ovs-ctl restart
+}
 
+status() {
+       /usr/share/openvswitch/scripts/ovs-ctl status
 }
 
diff --git a/net/openvswitch/patches/0006-adapt-ovs-scripts.patch b/net/openvswitch/patches/0006-adapt-ovs-scripts.patch
new file mode 100644 (file)
index 0000000..a0034c8
--- /dev/null
@@ -0,0 +1,30 @@
+diff --git a/utilities/ovs-ctl.in b/utilities/ovs-ctl.in
+index dc1d02c..61ecf2f 100755
+--- a/utilities/ovs-ctl.in
++++ b/utilities/ovs-ctl.in
+@@ -108,7 +108,7 @@ set_system_ids () {
+     esac
+     set "$@" external-ids:system-id="\"$SYSTEM_ID\""
+-    set "$@" external-ids:hostname="\"$(hostname -f)\""
++    set "$@" external-ids:hostname="\"$(cat /proc/sys/kernel/hostname)\""
+     set "$@" external-ids:rundir="\"$rundir\""
+diff --git a/utilities/ovs-lib.in b/utilities/ovs-lib.in
+index 8665698..7931bc6 100644
+--- a/utilities/ovs-lib.in
++++ b/utilities/ovs-lib.in
+@@ -157,7 +157,11 @@ install_dir () {
+     [ "${OVS_USER##*:}" != "" ] && INSTALL_GROUP="${OVS_USER##*:}"
+     if test ! -d "$DIR"; then
+-        install -d -m "$INSTALL_MODE" -o "$INSTALL_USER" -g "$INSTALL_GROUP" "$DIR"
++        mkdir -p "$DIR"
++        [ -n "$INSTALL_MODE" ] && chmod "$INSTALL_MODE" "$DIR"
++        local OWN="$INSTALL_USER"
++        [ -n "$OWN" ] && [ -n "$INSTALL_GROUP" ] &&  OWN="${OWN}:${INSTALL_GROUP}"
++        [ -n "$OWN" ] && chown "$OWN" "$DIR"
+         restorecon "$DIR" >/dev/null 2>&1
+     fi
+ }
diff --git a/net/openvswitch/patches/0009-fix-test-ovn.patch b/net/openvswitch/patches/0009-fix-test-ovn.patch
deleted file mode 100644 (file)
index 10bd37a..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- 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/pixiewps/Makefile b/net/pixiewps/Makefile
new file mode 100644 (file)
index 0000000..86cc942
--- /dev/null
@@ -0,0 +1,44 @@
+# Copyright (C) 2017 Yousong Zhou
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=pixiewps
+PKG_VERSION:=1.4.1
+PKG_RELEASE:=1
+PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=https://github.com/wiire-a/pixiewps/releases/download/v$(PKG_VERSION)
+PKG_HASH:=8b61b9d94e26c07ab08a01eacd200576375c08139f9d781b5fdbb587ddd33528
+
+PKG_LICENSE:=GPL-3.0
+PKG_LICENSE_FILES:=LICENSE.md
+
+include $(INCLUDE_DIR)/package.mk
+MAKE_PATH:=src
+
+define Package/pixiewps
+  SECTION:=net
+  CATEGORY:=Network
+  SUBMENU:=wireless
+  TITLE:=An offline WPS bruteforce utility
+  URL:=https://github.com/wiire-a/pixiewps
+  DEPENDS:=+libpthread
+endef
+
+define Package/pixiewps/description
+  Pixiewps is a tool written in C used to bruteforce offline the WPS PIN
+  exploiting the low or non-existing entropy of some Access Points, the so-called
+  "pixie-dust attack" discovered by Dominique Bongard in summer 2014.  It is
+  meant for educational purposes only.
+endef
+
+define Package/pixiewps/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/pixiewps $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,pixiewps))
index a853fb20f999e07eae8b4e13aaa0332b60f4bc3f..93aa18a26a28b5e6cfd98904d27268f67ba77a02 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=polipo
 PKG_VERSION:=1.1.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.pps.jussieu.fr/~jch/software/files/$(PKG_NAME)/
@@ -33,6 +33,8 @@ define Package/polipo/description
  by a larger group.
 endef
 
+TARGET_CFLAGS += -DHAVE_IPv6
+
 define Build/Compile
        $(MAKE) -C $(PKG_BUILD_DIR) \
                CC="$(TARGET_CC)" \
index a0b2b0c740e0901dd9ba551a027111d62a7b8b41..137aaeae3273f64bac4771d140c924b6bcf3ea4b 100644 (file)
@@ -1,5 +1,6 @@
 #
 # Copyright (C) 2012-2015 OpenWrt.org
+# Copyright (C) 2017 Yousong Zhou
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,47 +9,48 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=reaver
-PKG_VERSION:=1.4
-PKG_RELEASE:=3
+PKG_VERSION:=1.6.3
+PKG_RELEASE:=1
 PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/reaver-wps
-PKG_HASH:=add3050a4a05fe0ab6bfb291ee2de8e9b8a85f1e64ced93ee27a75744954b22d
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=https://github.com/t6x/reaver-wps-fork-t6x/releases/download/v$(PKG_VERSION)
+PKG_HASH:=191f785f53030e4803260ada1a29ca4b42c848d56f6f3982e320d03b6117aaf2
+
 PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=docs/LICENSE
 
 PKG_USE_MIPS16:=0
 PKG_AUTOMAKE_PATHS:=src
 PKG_FIXUP:=autoreconf
 
 include $(INCLUDE_DIR)/package.mk
-
 CONFIGURE_PATH:=src
 MAKE_PATH:=src
-EXTRA_CFLAGS=$(TARGET_CPPFLAGS)
 
 define Package/reaver
   SECTION:=net
   CATEGORY:=Network
   SUBMENU:=wireless
   TITLE:=Efficient brute force attack against Wifi Protected Setup
-  URL:=https://code.google.com/p/reaver-wps/
-  DEPENDS:=+libpcap +libsqlite3
+  URL:=https://github.com/t6x/reaver-wps-fork-t6x
+  DEPENDS:=+libpcap
 endef
 
 define Package/reaver/description
-  Reaver targets the external registrar functionality mandated by the WiFi
-  Protected Setup specification.
-  Access points will provide authenticated registrars with their current
-  wireless configuration (including the WPA PSK), and also accept a new
-  configuration from the registrar.
+  Reaver has been designed to be a robust and practical attack against Wi-Fi
+  Protected Setup (WPS) registrar PINs in order to recover WPA/WPA2
+  passphrases. It has been tested against a wide variety of access points and
+  WPS implementations.
+
+  This is reaver-wps-fork-t6x, a community forked version, which has included
+  various bug fixes and additional attack method (the offline Pixie Dust
+  attack).
 endef
 
 define Package/reaver/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/{reaver,wash} $(1)/usr/bin/
-       $(INSTALL_DIR) $(1)/etc/reaver
-       $(INSTALL_DATA) $(PKG_BUILD_DIR)/src/reaver.db $(1)/etc/reaver/
 endef
 
 $(eval $(call BuildPackage,reaver))
diff --git a/net/reaver/patches/0001-wpscrack-big-endian-fixes.patch b/net/reaver/patches/0001-wpscrack-big-endian-fixes.patch
deleted file mode 100644 (file)
index da76c2e..0000000
+++ /dev/null
@@ -1,565 +0,0 @@
-From 4e7af9f022996cb0a03b30f6af265b757807dfa2 Mon Sep 17 00:00:00 2001
-From: Paul Fertser <fercerpav@gmail.com>
-Date: Wed, 27 Jun 2012 17:44:55 +0400
-Subject: [PATCH 1/3] wpscrack: big-endian fixes
-
-This should fix access to the radiotap, 802.11, LLC/SNAP and WFA
-headers' fields. Run-time tested on an ar71xx BE system.
-
-Signed-off-by: Paul Fertser <fercerpav@gmail.com>
----
- src/80211.c    |   65 +++++++++++++++++++------------
- src/builder.c  |   23 +++++------
- src/defs.h     |  116 +++++++++++++++++++++++++++++++++++++++-----------------
- src/exchange.c |   23 ++++++-----
- src/wpsmon.c   |   13 ++++--
- 5 files changed, 151 insertions(+), 89 deletions(-)
-
-diff --git a/src/80211.c b/src/80211.c
-index c2aff59..19f1e92 100644
---- a/src/80211.c
-+++ b/src/80211.c
-@@ -90,17 +90,19 @@ void read_ap_beacon()
-                 if(header.len >= MIN_BEACON_SIZE)
-                 {
-                         rt_header = (struct radio_tap_header *) radio_header(packet, header.len);
--                        frame_header = (struct dot11_frame_header *) (packet + rt_header->len);
--
-+                      size_t rt_header_len = __le16_to_cpu(rt_header->len);
-+                      frame_header = (struct dot11_frame_header *) (packet + rt_header_len);
-+                      
-                       if(is_target(frame_header))
-                       {
--                                if(frame_header->fc.type == MANAGEMENT_FRAME && frame_header->fc.sub_type == SUBTYPE_BEACON)
-+                                if((frame_header->fc & __cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
-+                                 __cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_BEACON))
-                                 {
--                                              beacon = (struct beacon_management_frame *) (packet + rt_header->len + sizeof(struct dot11_frame_header));
-+                                              beacon = (struct beacon_management_frame *) (packet + rt_header_len + sizeof(struct dot11_frame_header));
-                                               set_ap_capability(beacon->capability);
-                                       /* Obtain the SSID and channel number from the beacon packet */
--                                      tag_offset = rt_header->len + sizeof(struct dot11_frame_header) + sizeof(struct beacon_management_frame);
-+                                      tag_offset = rt_header_len + sizeof(struct dot11_frame_header) + sizeof(struct beacon_management_frame);
-                                       channel = parse_beacon_tags(packet, header.len);
-                                       
-                                       /* If no channel was manually specified, switch to the AP's current channel */
-@@ -135,29 +137,31 @@ int8_t signal_strength(const u_char *packet, size_t len)
-       {
-               header = (struct radio_tap_header *) packet;
--              if((header->flags & SSI_FLAG) == SSI_FLAG)
-+              uint32_t flags = __le32_to_cpu(header->flags);
-+              
-+              if((flags & SSI_FLAG) == SSI_FLAG)
-               {
--                      if((header->flags & TSFT_FLAG) == TSFT_FLAG)
-+                      if((flags & TSFT_FLAG) == TSFT_FLAG)
-                       {
-                               offset += TSFT_SIZE;
-                       }
--                      if((header->flags & FLAGS_FLAG) == FLAGS_FLAG)
-+                      if((flags & FLAGS_FLAG) == FLAGS_FLAG)
-                       {
-                               offset += FLAGS_SIZE;
-                       }
-       
--                      if((header->flags & RATE_FLAG) == RATE_FLAG)
-+                      if((flags & RATE_FLAG) == RATE_FLAG)
-                       {
-                               offset += RATE_SIZE;
-                       }
--                      if((header->flags & CHANNEL_FLAG) == CHANNEL_FLAG)
-+                      if((flags & CHANNEL_FLAG) == CHANNEL_FLAG)
-                       {
-                               offset += CHANNEL_SIZE;
-                       }
--                      if((header->flags & FHSS_FLAG) == FHSS_FLAG)
-+                      if((flags & FHSS_FLAG) == FHSS_FLAG)
-                       {
-                               offset += FHSS_FLAG;
-                       }
-@@ -196,11 +200,13 @@ int is_wps_locked()
-               if(header.len >= MIN_BEACON_SIZE)
-               {
-                       rt_header = (struct radio_tap_header *) radio_header(packet, header.len);
--                      frame_header = (struct dot11_frame_header *) (packet + rt_header->len);
-+                      size_t rt_header_len = __le16_to_cpu(rt_header->len);
-+                      frame_header = (struct dot11_frame_header *) (packet + rt_header_len);
-                       if(memcmp(frame_header->addr3, get_bssid(), MAC_ADDR_LEN) == 0)
-                       {
--                              if(frame_header->fc.type == MANAGEMENT_FRAME && frame_header->fc.sub_type == SUBTYPE_BEACON)
-+                                if((frame_header->fc & __cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
-+                                 __cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_BEACON))
-                               {
-                                       if(parse_wps_parameters(packet, header.len, &wps))
-                                       {
-@@ -411,24 +417,30 @@ int associate_recv_loop()
-                 if(header.len >= MIN_AUTH_SIZE)
-                 {
-                       rt_header = (struct radio_tap_header *) radio_header(packet, header.len);
--                        dot11_frame = (struct dot11_frame_header *) (packet + rt_header->len);
-+                      size_t rt_header_len = __le16_to_cpu(rt_header->len);
-+                      dot11_frame = (struct dot11_frame_header *) (packet + rt_header_len);
-                         if((memcmp(dot11_frame->addr3, get_bssid(), MAC_ADDR_LEN) == 0) &&
-                            (memcmp(dot11_frame->addr1, get_mac(), MAC_ADDR_LEN) == 0))
-                         {
--                              if(dot11_frame->fc.type == MANAGEMENT_FRAME)
-+                                if((dot11_frame->fc & __cpu_to_le16(IEEE80211_FCTL_FTYPE)) ==
-+                                 __cpu_to_le16(IEEE80211_FTYPE_MGMT))
-                               {
--                                      auth_frame = (struct authentication_management_frame *) (packet + sizeof(struct dot11_frame_header) + rt_header->len);
--                                      assoc_frame = (struct association_response_management_frame *) (packet + sizeof(struct dot11_frame_header) + rt_header->len);
-+                                      auth_frame = (struct authentication_management_frame *) (packet + sizeof(struct dot11_frame_header) + rt_header_len);
-+                                      assoc_frame = (struct association_response_management_frame *) (packet + sizeof(struct dot11_frame_header) + rt_header_len);
-                                       /* Did we get an authentication packet with a successful status? */
--                                      if((dot11_frame->fc.sub_type == SUBTYPE_AUTHENTICATION) && (auth_frame->status == AUTHENTICATION_SUCCESS))
-+                                      if((dot11_frame->fc & __cpu_to_le16(IEEE80211_FCTL_STYPE)) ==
-+                                         __cpu_to_le16(IEEE80211_STYPE_AUTH)
-+                                         && (auth_frame->status == __cpu_to_le16(AUTHENTICATION_SUCCESS)))
-                                               {
-                                                       ret_val = AUTH_OK;
-                                                       break;
-                                               }
-                                       /* Did we get an association packet with a successful status? */
--                                              else if((dot11_frame->fc.sub_type == SUBTYPE_ASSOCIATION) && (assoc_frame->status == ASSOCIATION_SUCCESS))
-+                                              else if((dot11_frame->fc & __cpu_to_le16(IEEE80211_FCTL_STYPE)) ==
-+                                              __cpu_to_le16(IEEE80211_STYPE_ASSOC_RESP)
-+                                              && (assoc_frame->status == __cpu_to_le16(ASSOCIATION_SUCCESS)))
-                                       {
-                                               ret_val = ASSOCIATE_OK;
-                                               break;
-@@ -455,13 +467,14 @@ enum encryption_type supported_encryption(const u_char *packet, size_t len)
-       if(len > MIN_BEACON_SIZE)
-       {
-               rt_header = (struct radio_tap_header *) radio_header(packet, len);
--              beacon = (struct beacon_management_frame *) (packet + rt_header->len + sizeof(struct dot11_frame_header));
--              offset = tag_offset = rt_header->len + sizeof(struct dot11_frame_header) + sizeof(struct beacon_management_frame);
-+              size_t rt_header_len = __le16_to_cpu(rt_header->len);
-+              beacon = (struct beacon_management_frame *) (packet + rt_header_len + sizeof(struct dot11_frame_header));
-+              offset = tag_offset = rt_header_len + sizeof(struct dot11_frame_header) + sizeof(struct beacon_management_frame);
-               
-               tag_len = len - tag_offset;
-               tag_data = (const u_char *) (packet + tag_offset);
--              if((beacon->capability & CAPABILITY_WEP) == CAPABILITY_WEP)
-+              if((__le16_to_cpu(beacon->capability) & CAPABILITY_WEP) == CAPABILITY_WEP)
-               {
-                       enc = WEP;
-@@ -509,7 +522,7 @@ int parse_beacon_tags(const u_char *packet, size_t len)
-       struct radio_tap_header *rt_header = NULL;
-       rt_header = (struct radio_tap_header *) radio_header(packet, len);
--      tag_offset = rt_header->len + sizeof(struct dot11_frame_header) + sizeof(struct beacon_management_frame);
-+      tag_offset = __le16_to_cpu(rt_header->len) + sizeof(struct dot11_frame_header) + sizeof(struct beacon_management_frame);
-       if(tag_offset < len)
-       {
-@@ -548,7 +561,7 @@ int parse_beacon_tags(const u_char *packet, size_t len)
-               {
-                       if(ie_len  == 1)
-                       {
--                              memcpy((int *) &channel, channel_data, ie_len);
-+                              channel = *(uint8_t*)channel_data;
-                       }
-                       free(channel_data);
-               }
-@@ -603,13 +616,13 @@ int check_fcs(const u_char *packet, size_t len)
-       if(len > 4)
-       {
-               /* Get the packet's reported FCS (last 4 bytes of the packet) */
--              memcpy((uint32_t *) &fcs, (packet + (len-4)), 4);
-+              fcs = __le32_to_cpu(*(uint32_t*)(packet + (len-4)));
-               /* FCS is not calculated over the radio tap header */
-               if(has_rt_header())
-               {
-                       rt_header = (struct radio_tap_header *) packet;
--                      offset += rt_header->len;
-+                      offset += __le16_to_cpu(rt_header->len);
-               }
-               if(len > offset)
-diff --git a/src/builder.c b/src/builder.c
-index 37f2de7..6bf89e7 100644
---- a/src/builder.c
-+++ b/src/builder.c
-@@ -44,9 +44,8 @@ const void *build_radio_tap_header(size_t *len)
-               memset((void *) buf, 0, sizeof(struct radio_tap_header));
-               rt_header = (struct radio_tap_header *) buf;
--              rt_header->len = sizeof(struct radio_tap_header);
--      
--              *len = rt_header->len;
-+              *len = sizeof(struct radio_tap_header);
-+              rt_header->len = __cpu_to_le16(*len);
-       }
-       
-       return buf;
-@@ -67,9 +66,9 @@ const void *build_dot11_frame_header(uint16_t fc, size_t *len)
-       
-               frag_seq += SEQ_MASK;
--              header->duration = DEFAULT_DURATION;
--              memcpy((void *) &header->fc, (void *) &fc, sizeof(struct frame_control));
--              header->frag_seq = frag_seq;
-+              header->duration = __cpu_to_le16(DEFAULT_DURATION);
-+              header->fc = __cpu_to_le16(fc);
-+              header->frag_seq = __cpu_to_le16(frag_seq);
-               memcpy((void *) header->addr1, get_bssid(), MAC_ADDR_LEN);
-               memcpy((void *) header->addr2, get_mac(), MAC_ADDR_LEN);
-@@ -91,8 +90,8 @@ const void *build_authentication_management_frame(size_t *len)
-               memset((void *) buf, 0, *len);
-               frame = (struct authentication_management_frame *) buf;
--              frame->algorithm = OPEN_SYSTEM;
--              frame->sequence = 1;
-+              frame->algorithm = __cpu_to_le16(OPEN_SYSTEM);
-+              frame->sequence = __cpu_to_le16(1);
-               frame->status = 0;
-       }
-       
-@@ -111,8 +110,8 @@ const void *build_association_management_frame(size_t *len)
-               memset((void *) buf, 0, *len);
-               frame = (struct association_request_management_frame *) buf;
--              frame->capability = get_ap_capability();
--              frame->listen_interval = LISTEN_INTERVAL;
-+              frame->capability = __cpu_to_le16(get_ap_capability());
-+              frame->listen_interval = __cpu_to_le16(LISTEN_INTERVAL);
-       }
-       return buf;
-@@ -133,7 +132,7 @@ const void *build_llc_header(size_t *len)
-               header->dsap = LLC_SNAP;
-               header->ssap = LLC_SNAP;
-               header->control_field = UNNUMBERED_FRAME;
--              header->type = DOT1X_AUTHENTICATION;
-+              header->type = __cpu_to_be16(DOT1X_AUTHENTICATION);
-       }
-@@ -279,7 +278,7 @@ const void *build_wfa_header(uint8_t op_code, size_t *len)
-               header = (struct wfa_expanded_header *) buf;
-       
-               memcpy(header->id, WFA_VENDOR_ID, sizeof(header->id));
--              header->type = SIMPLE_CONFIG;
-+              header->type = __cpu_to_be32(SIMPLE_CONFIG);
-               header->opcode = op_code;
-       }
-       
-diff --git a/src/defs.h b/src/defs.h
-index b2f45ea..0c628e7 100644
---- a/src/defs.h
-+++ b/src/defs.h
-@@ -41,6 +41,7 @@
- #include <string.h>
- #include <time.h>
- #include <pcap.h>
-+#include <asm/byteorder.h>
- #include "wps.h"
-@@ -65,10 +66,10 @@
- #define MANAGEMENT_FRAME      0x00
- #define SUBTYPE_BEACON                0x08
--#define DOT1X_AUTHENTICATION  0x8E88
-+#define DOT1X_AUTHENTICATION  0x888E
- #define DOT1X_EAP_PACKET      0x00
--#define SIMPLE_CONFIG         0x01000000
-+#define SIMPLE_CONFIG         0x00000001
- #define P1_SIZE                       10000
- #define P2_SIZE                       1000
-@@ -282,66 +283,111 @@ enum wfa_elements
-       WEP_TRANSMIT_KEY = 0x10064
- };
-+#define IEEE80211_FCTL_VERS           0x0003
-+#define IEEE80211_FCTL_FTYPE          0x000c
-+#define IEEE80211_FCTL_STYPE          0x00f0
-+#define IEEE80211_FCTL_TODS           0x0100
-+#define IEEE80211_FCTL_FROMDS         0x0200
-+#define IEEE80211_FCTL_MOREFRAGS      0x0400
-+#define IEEE80211_FCTL_RETRY          0x0800
-+#define IEEE80211_FCTL_PM             0x1000
-+#define IEEE80211_FCTL_MOREDATA               0x2000
-+#define IEEE80211_FCTL_PROTECTED      0x4000
-+#define IEEE80211_FCTL_ORDER          0x8000
-+
-+#define IEEE80211_SCTL_FRAG           0x000F
-+#define IEEE80211_SCTL_SEQ            0xFFF0
-+
-+#define IEEE80211_FTYPE_MGMT          0x0000
-+#define IEEE80211_FTYPE_CTL           0x0004
-+#define IEEE80211_FTYPE_DATA          0x0008
-+
-+/* management */
-+#define IEEE80211_STYPE_ASSOC_REQ     0x0000
-+#define IEEE80211_STYPE_ASSOC_RESP    0x0010
-+#define IEEE80211_STYPE_REASSOC_REQ   0x0020
-+#define IEEE80211_STYPE_REASSOC_RESP  0x0030
-+#define IEEE80211_STYPE_PROBE_REQ     0x0040
-+#define IEEE80211_STYPE_PROBE_RESP    0x0050
-+#define IEEE80211_STYPE_BEACON                0x0080
-+#define IEEE80211_STYPE_ATIM          0x0090
-+#define IEEE80211_STYPE_DISASSOC      0x00A0
-+#define IEEE80211_STYPE_AUTH          0x00B0
-+#define IEEE80211_STYPE_DEAUTH                0x00C0
-+#define IEEE80211_STYPE_ACTION                0x00D0
-+
-+/* control */
-+#define IEEE80211_STYPE_BACK_REQ      0x0080
-+#define IEEE80211_STYPE_BACK          0x0090
-+#define IEEE80211_STYPE_PSPOLL                0x00A0
-+#define IEEE80211_STYPE_RTS           0x00B0
-+#define IEEE80211_STYPE_CTS           0x00C0
-+#define IEEE80211_STYPE_ACK           0x00D0
-+#define IEEE80211_STYPE_CFEND         0x00E0
-+#define IEEE80211_STYPE_CFENDACK      0x00F0
-+
-+/* data */
-+#define IEEE80211_STYPE_DATA                  0x0000
-+#define IEEE80211_STYPE_DATA_CFACK            0x0010
-+#define IEEE80211_STYPE_DATA_CFPOLL           0x0020
-+#define IEEE80211_STYPE_DATA_CFACKPOLL                0x0030
-+#define IEEE80211_STYPE_NULLFUNC              0x0040
-+#define IEEE80211_STYPE_CFACK                 0x0050
-+#define IEEE80211_STYPE_CFPOLL                        0x0060
-+#define IEEE80211_STYPE_CFACKPOLL             0x0070
-+#define IEEE80211_STYPE_QOS_DATA              0x0080
-+#define IEEE80211_STYPE_QOS_DATA_CFACK                0x0090
-+#define IEEE80211_STYPE_QOS_DATA_CFPOLL               0x00A0
-+#define IEEE80211_STYPE_QOS_DATA_CFACKPOLL    0x00B0
-+#define IEEE80211_STYPE_QOS_NULLFUNC          0x00C0
-+#define IEEE80211_STYPE_QOS_CFACK             0x00D0
-+#define IEEE80211_STYPE_QOS_CFPOLL            0x00E0
-+#define IEEE80211_STYPE_QOS_CFACKPOLL         0x00F0
-+
- #pragma pack(1)
- struct radio_tap_header
- {
-       uint8_t revision;       
-       uint8_t pad;
--      uint16_t len;
--      uint32_t flags;
--};
--
--struct frame_control
--{
--        unsigned version : 2;
--        unsigned type : 2;
--        unsigned sub_type : 4;
--
--        unsigned to_ds : 1;
--        unsigned from_ds : 1;
--        unsigned more_frag : 1;
--        unsigned retry : 1;
--        unsigned pwr_mgt : 1;
--        unsigned more_data : 1;
--        unsigned protected_frame : 1;
--        unsigned order : 1;
-+      __le16 len;
-+      __le32 flags;
- };
- struct dot11_frame_header
- {
--      struct frame_control fc;
--        uint16_t duration;
-+      __le16 fc;
-+      __le16 duration;
-       unsigned char addr1[MAC_ADDR_LEN];
-       unsigned char addr2[MAC_ADDR_LEN];
-       unsigned char addr3[MAC_ADDR_LEN];
--      uint16_t frag_seq;
-+      __le16 frag_seq;
- };
- struct authentication_management_frame
- {
--      uint16_t algorithm;
--      uint16_t sequence;
--      uint16_t status;
-+      __le16 algorithm;
-+      __le16 sequence;
-+      __le16 status;
- };
- struct association_request_management_frame
- {
--      uint16_t capability;
--      uint16_t listen_interval;
-+      __le16 capability;
-+      __le16 listen_interval;
- };
- struct association_response_management_frame
- {
--      uint16_t capability;
--      uint16_t status;
--      uint16_t id;
-+      __le16 capability;
-+      __le16 status;
-+      __le16 id;
- };
- struct beacon_management_frame
- {
-       unsigned char timestamp[TIMESTAMP_LEN];
--      uint16_t beacon_interval;
--      uint16_t capability;
-+      __le16 beacon_interval;
-+      __le16 capability;
- };
- struct llc_header
-@@ -350,7 +396,7 @@ struct llc_header
-       uint8_t ssap;
-       uint8_t control_field;
-       unsigned char org_code[3];
--      uint16_t type;
-+      __be16 type;
- };
- struct dot1X_header
-@@ -371,7 +417,7 @@ struct eap_header
- struct wfa_expanded_header
- {
-       unsigned char id[3];
--      uint32_t type;
-+      __be32 type;
-       uint8_t opcode;
-       uint8_t flags;
- };
-diff --git a/src/exchange.c b/src/exchange.c
-index 23c87e9..4f9a82b 100644
---- a/src/exchange.c
-+++ b/src/exchange.c
-@@ -306,26 +306,27 @@ enum wps_type process_packet(const u_char *packet, struct pcap_pkthdr *header)
-       /* Cast the radio tap and 802.11 frame headers and parse out the Frame Control field */
-       rt_header = (struct radio_tap_header *) packet;
--      frame_header = (struct dot11_frame_header *) (packet+rt_header->len);
-+      size_t rt_header_len = __le16_to_cpu(rt_header->len);
-+      frame_header = (struct dot11_frame_header *) (packet+rt_header_len);
-       /* Does the BSSID/source address match our target BSSID? */
-       if(memcmp(frame_header->addr3, get_bssid(), MAC_ADDR_LEN) == 0)
-       {
-               /* Is this a data packet sent to our MAC address? */
--              if(frame_header->fc.type == DATA_FRAME && 
--                      frame_header->fc.sub_type == SUBTYPE_DATA && 
--                      (memcmp(frame_header->addr1, get_mac(), MAC_ADDR_LEN) == 0)) 
-+              if (((frame_header->fc & __cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
-+                   __cpu_to_le16(IEEE80211_FTYPE_DATA | IEEE80211_STYPE_DATA)) &&
-+                  (memcmp(frame_header->addr1, get_mac(), MAC_ADDR_LEN) == 0)) 
-               {
-                       llc = (struct llc_header *) (packet +
--                                                      rt_header->len +
-+                                                      rt_header_len +
-                                                       sizeof(struct dot11_frame_header)
-                       );
-                       /* All packets in our exchanges will be 802.1x */
--                      if(llc->type == DOT1X_AUTHENTICATION)
-+                      if(llc->type == __cpu_to_be16(DOT1X_AUTHENTICATION))
-                       {
-                               dot1x = (struct dot1X_header *) (packet +
--                                                              rt_header->len +
-+                                                              rt_header_len +
-                                                               sizeof(struct dot11_frame_header) +
-                                                               sizeof(struct llc_header)
-                               );
-@@ -334,7 +335,7 @@ enum wps_type process_packet(const u_char *packet, struct pcap_pkthdr *header)
-                               if(dot1x->type == DOT1X_EAP_PACKET && (header->len >= EAP_PACKET_SIZE))
-                               {
-                                       eap = (struct eap_header *) (packet +
--                                                                      rt_header->len +
-+                                                                      rt_header_len +
-                                                                       sizeof(struct dot11_frame_header) +
-                                                                       sizeof(struct llc_header) +
-                                                                       sizeof(struct dot1X_header)
-@@ -366,7 +367,7 @@ enum wps_type process_packet(const u_char *packet, struct pcap_pkthdr *header)
-                                               else if((eap->type == EAP_EXPANDED) && (header->len > WFA_PACKET_SIZE))
-                                               {
-                                                       wfa = (struct wfa_expanded_header *) (packet +
--                                                                                      rt_header->len +
-+                                                                                      rt_header_len +
-                                                                                       sizeof(struct dot11_frame_header) +
-                                                                                       sizeof(struct llc_header) +
-                                                                                       sizeof(struct dot1X_header) +
-@@ -374,14 +375,14 @@ enum wps_type process_packet(const u_char *packet, struct pcap_pkthdr *header)
-                                                       );
-                                               
-                                                       /* Verify that this is a WPS message */
--                                                      if(wfa->type == SIMPLE_CONFIG)
-+                                                      if(wfa->type == __cpu_to_be32(SIMPLE_CONFIG))
-                                                       {
-                                                               wps_msg_len =   (size_t) ntohs(eap->len) - 
-                                                                               sizeof(struct eap_header) - 
-                                                                               sizeof(struct wfa_expanded_header);
-                                                               wps_msg = (const void *) (packet +
--                                                                                      rt_header->len +
-+                                                                                      rt_header_len +
-                                                                                               sizeof(struct dot11_frame_header) +
-                                                                                               sizeof(struct llc_header) +
-                                                                                               sizeof(struct dot1X_header) +
-diff --git a/src/wpsmon.c b/src/wpsmon.c
-index d976924..22a394f 100644
---- a/src/wpsmon.c
-+++ b/src/wpsmon.c
-@@ -295,7 +295,8 @@ void parse_wps_settings(const u_char *packet, struct pcap_pkthdr *header, char *
-         }
-       rt_header = (struct radio_tap_header *) radio_header(packet, header->len);
--      frame_header = (struct dot11_frame_header *) (packet + rt_header->len);
-+      size_t rt_header_len = __le16_to_cpu(rt_header->len);
-+      frame_header = (struct dot11_frame_header *) (packet + rt_header_len);
-       /* If a specific BSSID was specified, only parse packets from that BSSID */
-       if(!is_target(frame_header))
-@@ -323,15 +324,17 @@ void parse_wps_settings(const u_char *packet, struct pcap_pkthdr *header, char *
-                               channel_changed = 1;
-                       }
--                      if(frame_header->fc.sub_type == PROBE_RESPONSE ||
--                                   frame_header->fc.sub_type == SUBTYPE_BEACON)
-+                      unsigned fsub_type = frame_header->fc & __cpu_to_le16(IEEE80211_FCTL_STYPE);
-+
-+                      if(fsub_type == __cpu_to_le16(IEEE80211_STYPE_PROBE_RESP) ||
-+                         fsub_type == __cpu_to_le16(IEEE80211_STYPE_BEACON))
-                       {
-                               wps_parsed = parse_wps_parameters(packet, header->len, wps);
-                       }
-       
-                       if(!is_done(bssid) && (get_channel() == channel || source == PCAP_FILE))
-                       {
--                              if(frame_header->fc.sub_type == SUBTYPE_BEACON && 
-+                              if(fsub_type == __cpu_to_le16(IEEE80211_STYPE_BEACON) && 
-                                  mode == SCAN && 
-                                  !passive && 
-                                  should_probe(bssid))
-@@ -369,7 +372,7 @@ void parse_wps_settings(const u_char *packet, struct pcap_pkthdr *header, char *
-                                * If there was no WPS information, then the AP does not support WPS and we should ignore it from here on.
-                                * If this was a probe response, then we've gotten all WPS info we can get from this AP and should ignore it from here on.
-                                */
--                              if(!wps_parsed || frame_header->fc.sub_type == PROBE_RESPONSE)
-+                              if(!wps_parsed || fsub_type == __cpu_to_le16(IEEE80211_STYPE_PROBE_RESP))
-                               {
-                                       mark_ap_complete(bssid);
-                               }
--- 
-1.7.7
-
diff --git a/net/reaver/patches/0002-Use-the-current-directory-for-storing-and-loading-se.patch b/net/reaver/patches/0002-Use-the-current-directory-for-storing-and-loading-se.patch
deleted file mode 100644 (file)
index dd1bb42..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-From cd444949f3176790101b8bdc9656831a03d8c01d Mon Sep 17 00:00:00 2001
-From: Paul Fertser <fercerpav@gmail.com>
-Date: Tue, 10 Jul 2012 11:13:29 +0400
-Subject: [PATCH 2/3] Use the current directory for storing and loading
- sessions
-
-This allows the user to always explicitely choose (by changing the
-current directory before launching the program) where the session
-files should go. Useful e.g. to avoid hogging the precious space on
-embedded devices, just cd /tmp before starting the app.
-
-Signed-off-by: Paul Fertser <fercerpav@gmail.com>
----
- src/session.c |   16 +++-------------
- 1 files changed, 3 insertions(+), 13 deletions(-)
-
-diff --git a/src/session.c b/src/session.c
-index d3af0c3..308f213 100644
---- a/src/session.c
-+++ b/src/session.c
-@@ -62,7 +62,7 @@ int restore_session()
-               memset(file, 0, FILENAME_MAX);
-               bssid = mac2str(get_bssid(), '\0');
--              snprintf(file, FILENAME_MAX, "%s/%s.%s", CONF_DIR, bssid, CONF_EXT);
-+              snprintf(file, FILENAME_MAX, "%s.%s", bssid, CONF_EXT);
-               free(bssid);
-       }
-@@ -199,18 +199,8 @@ int save_session()
-               }
-               else
-               {       
--                      /* 
--                       * If the configuration directory exists, save the session file there; else, save it to the 
--                       * current working directory.
--                       */
--                      if(configuration_directory_exists())
--                      {
--                              snprintf((char *) &file_name, FILENAME_MAX, "%s/%s.%s", CONF_DIR, bssid, CONF_EXT);
--                      }
--                      else
--                      {
--                              snprintf((char *) &file_name, FILENAME_MAX, "%s.%s", bssid, CONF_EXT);
--                      }
-+                      /* save session to the current directory */
-+                      snprintf((char *) &file_name, FILENAME_MAX, "%s.%s", bssid, CONF_EXT);
-               }
-               /* Don't bother saving anything if nothing has been done */
--- 
-1.7.7
-
diff --git a/net/reaver/patches/0003-wash-wpsmon-use-less-useless-spaces-in-output-to-fit.patch b/net/reaver/patches/0003-wash-wpsmon-use-less-useless-spaces-in-output-to-fit.patch
deleted file mode 100644 (file)
index 64b290b..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-From 638bb8d70d6c7e5dc99975e0bf57d8ce0455e2cc Mon Sep 17 00:00:00 2001
-From: Paul Fertser <fercerpav@gmail.com>
-Date: Tue, 10 Jul 2012 11:25:00 +0400
-Subject: [PATCH 3/3] wash/wpsmon: use less useless spaces in output to fit
- narrow terminals
-
-Signed-off-by: Paul Fertser <fercerpav@gmail.com>
----
- src/wpsmon.c |    6 +++---
- 1 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/wpsmon.c b/src/wpsmon.c
-index 22a394f..e0948b3 100644
---- a/src/wpsmon.c
-+++ b/src/wpsmon.c
-@@ -262,8 +262,8 @@ void monitor(char *bssid, int passive, int source, int channel, int mode)
-       if(!header_printed)
-       {
--              cprintf(INFO, "BSSID                  Channel       RSSI       WPS Version       WPS Locked        ESSID\n");
--              cprintf(INFO, "---------------------------------------------------------------------------------------------------------------\n");
-+              cprintf(INFO, "BSSID              Channel  RSSI  WPS Version  WPS Locked  ESSID\n");
-+              cprintf(INFO, "--------------------------------------------------------------------------------------\n");
-               header_printed = 1;
-       }
-@@ -360,7 +360,7 @@ void parse_wps_settings(const u_char *packet, struct pcap_pkthdr *header, char *
-                                                       break;
-                                       }
--                                      cprintf(INFO, "%17s      %2d            %.2d        %d.%d               %s               %s\n", bssid, channel, rssi, (wps->version >> 4), (wps->version & 0x0F), lock_display, ssid);
-+                                      cprintf(INFO, "%17s    %2d       %.2d   %d.%d          %s         %s\n", bssid, channel, rssi, (wps->version >> 4), (wps->version & 0x0F), lock_display, ssid);
-                               }
-                               if(probe_sent)
--- 
-1.7.7
-
diff --git a/net/reaver/patches/0004-Fixed-probe-request-bug-in-wash.patch b/net/reaver/patches/0004-Fixed-probe-request-bug-in-wash.patch
deleted file mode 100644 (file)
index 9b51d06..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-From a8edcc1ce2a55e0e02ee13c46c6a5f22dd7920e9 Mon Sep 17 00:00:00 2001
-From: "cheffner@tacnetsol.com"
- <cheffner@tacnetsol.com@027a3e96-2d37-f1c0-85d6-5ce5a08386c2>
-Date: Tue, 27 Mar 2012 16:25:10 +0000
-Subject: [PATCH] Fixed probe request bug in wash.
-
-git-svn-id: http://reaver-wps.googlecode.com/svn/trunk@113 027a3e96-2d37-f1c0-85d6-5ce5a08386c2
----
- src/wpsmon.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/src/wpsmon.c b/src/wpsmon.c
-index da688b9..d976924 100644
---- a/src/wpsmon.c
-+++ b/src/wpsmon.c
-@@ -132,6 +132,11 @@ int main(int argc, char *argv[])
-               usage(argv[0]);
-               goto end;
-       }
-+      else if(get_iface())
-+      {
-+              /* Get the MAC address of the specified interface */
-+              read_iface_mac();
-+      }
-       if(get_iface() && source == PCAP_FILE)
-       {
-@@ -300,6 +305,7 @@ void parse_wps_settings(const u_char *packet, struct pcap_pkthdr *header, char *
-       set_ssid(NULL);
-       bssid = (char *) mac2str(frame_header->addr3, ':');
-+      set_bssid((unsigned char *) frame_header->addr3);
-       if(bssid)
-       {
-@@ -383,6 +389,7 @@ void parse_wps_settings(const u_char *packet, struct pcap_pkthdr *header, char *
- end:
-       if(wps) free(wps);
-+      set_bssid((unsigned char *) NULL_MAC);
-       return;
- }
--- 
-2.6.4
-
diff --git a/net/reaver/patches/0100-Include-sys-types.h-for-definition-of-u_char.patch b/net/reaver/patches/0100-Include-sys-types.h-for-definition-of-u_char.patch
deleted file mode 100644 (file)
index 541968a..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-From 811f5c0b0a226edfbf5aa2f316e083f30ec3cd8d Mon Sep 17 00:00:00 2001
-From: Yousong Zhou <yszhou4tech@gmail.com>
-Date: Tue, 18 Aug 2015 14:34:26 +0800
-Subject: [PATCH] Include <sys/types.h> for definition of u_char.
-
-Fixes build with musl-libc.
-
-Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
----
- src/libwps/libwps.h |    1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/libwps/libwps.h b/src/libwps/libwps.h
-index b04dd8b..bdd7b9a 100755
---- a/src/libwps/libwps.h
-+++ b/src/libwps/libwps.h
-@@ -17,6 +17,7 @@
- #include <stdio.h>
- #include <string.h>
- #include <arpa/inet.h>
-+#include <sys/types.h>
- #define LIBWPS_MAX_STR_LEN 256
--- 
-1.7.10.4
-
diff --git a/net/reaver/patches/0101-pcap-use-65536-as-snaplen.patch b/net/reaver/patches/0101-pcap-use-65536-as-snaplen.patch
deleted file mode 100644 (file)
index 03f4318..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/src/init.c.orig  2016-12-08 13:23:17.386891467 +0800
-+++ b/src/init.c       2016-12-08 13:23:20.850892551 +0800
-@@ -121,7 +121,7 @@ pcap_t *capture_init(char *capture_sourc
-       pcap_t *handle = NULL;
-       char errbuf[PCAP_ERRBUF_SIZE] = { 0 };
-       
--      handle = pcap_open_live(capture_source, BUFSIZ, 1, 0, errbuf);
-+      handle = pcap_open_live(capture_source, 65536, 1, 0, errbuf);
-       if(!handle)
-       {
-               handle = pcap_open_offline(capture_source, errbuf);
diff --git a/net/reaver/patches/0102-wps-cflags.patch b/net/reaver/patches/0102-wps-cflags.patch
deleted file mode 100644 (file)
index 9a98025..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-Index: reaver-1.4/src/wps/Makefile
-===================================================================
---- reaver-1.4.orig/src/wps/Makefile
-+++ reaver-1.4/src/wps/Makefile
-@@ -4,31 +4,31 @@ INC=-I../utils -I ../
- all: wps_attr_build.o wps_attr_parse.o wps_attr_process.o wps.o wps_common.o wps_dev_attr.o wps_enrollee.o wps_registrar.o wps_ufd.o
- wps_attr_build.o:
--      $(CC) $(INC) wps_attr_build.c -c
-+      $(CC) $(CFLAGS) $(INC) wps_attr_build.c -c
- wps_attr_parse.o:
--      $(CC) $(INC) wps_attr_parse.c -c
-+      $(CC) $(CFLAGS) $(INC) wps_attr_parse.c -c
- wps_attr_process.o:
--      $(CC) $(INC) wps_attr_process.c -c
-+      $(CC) $(CFLAGS) $(INC) wps_attr_process.c -c
- wps.o:
--      $(CC) $(INC) wps.c -c
-+      $(CC) $(CFLAGS) $(INC) wps.c -c
- wps_common.o:
--      $(CC) $(INC) wps_common.c -c
-+      $(CC) $(CFLAGS) $(INC) wps_common.c -c
- wps_dev_attr.o:
--      $(CC) $(INC) wps_dev_attr.c -c
-+      $(CC) $(CFLAGS) $(INC) wps_dev_attr.c -c
- wps_enrollee.o:
--      $(CC) $(INC) wps_enrollee.c -c
-+      $(CC) $(CFLAGS) $(INC) wps_enrollee.c -c
- wps_registrar.o:
--      $(CC) $(INC) wps_registrar.c -c
-+      $(CC) $(CFLAGS) $(INC) wps_registrar.c -c
- wps_ufd.o:
--      $(CC) $(INC) wps_ufd.c -c
-+      $(CC) $(CFLAGS) $(INC) wps_ufd.c -c
- clean:
-       rm -f *.o
index bffe6549247a80f483047eccbf2fedc4d6432891..30def93ea1158b07cabfc05cfd943661005675bb 100644 (file)
@@ -8,16 +8,16 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=seafile-ccnet
-PKG_VERSION:=6.0.7
+PKG_VERSION:=6.2.2
 PKG_RELEASE=$(PKG_SOURCE_VERSION)-1
 PKG_LICENSE:=GPL-3.0
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/haiwen/ccnet-server.git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=a0de32b9cfeca98ab93d84cacbe9d315d7ecca35
+PKG_SOURCE_VERSION:=6b9d7e2920aa9b807f9efe9038439b57ce949ecc
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_MIRROR_HASH:=b7ac0e5775aff91746e7bfc297b6cf788c9e7372084e28762467f8bd75cee2f8
+PKG_MIRROR_HASH:=8aed6d2283ac7b3148f9b5c82b1d992ed36dc5193000cf727bdcfae7446ce1fe
 PKG_FIXUP:=autoreconf
 PKG_INSTALL:=1
 
@@ -34,7 +34,7 @@ define Package/seafile-ccnet
     DEPENDS:=+libsearpc +libevent2 +libopenssl \
                +glib2 +python +libzdb +libuuid \
                +libpthread +libsqlite3 +jansson $(ICONV_DEPENDS)
-    EXTRA_DEPENDS:=libsearpc (=6.0.7-8998e7b2c5587f0b94c48db24e2952d08def5add-1)
+    EXTRA_DEPENDS:=libsearpc (=6.2.2-8998e7b2c5587f0b94c48db24e2952d08def5add-1)
 endef
 
 define Package/seafile-ccnet/description
index 32eebf5fa4d9e5e3a06e52fc4b9d8cff2c163965..332739caee8b2546149a73a4b3b5bb16b74fce9d 100644 (file)
@@ -8,16 +8,16 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=seafile-seahub
-PKG_VERSION:=6.0.7
-PKG_RELEASE=$(PKG_SOURCE_VERSION)-2
+PKG_VERSION:=6.2.2
+PKG_RELEASE=$(PKG_SOURCE_VERSION)-1
 PKG_LICENSE:=Apache-2.0
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/haiwen/seahub.git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=2cf75b17a372216a88842172f769d61f621416fd
+PKG_SOURCE_VERSION:=120e7a299e77968f1af48ea2dcf4bd9b909c426f
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_MIRROR_HASH:=69e90cff3bb63967bca1bd04c8e25ff6f89aa5dba595df29854115c3560d9804
+PKG_MIRROR_HASH:=511500c40dd7b1009f77109c6df810df1cf2c17a84a8f6841d592a9e05d22064
 
 include $(INCLUDE_DIR)/package.mk
 $(call include_mk, python-package.mk)
index 49b67f8f1dbe96788a7b6153d69e2bdac2fc88ee..c25f3d5552275c4495294e17f1ba2258605d6e38 100644 (file)
@@ -1,6 +1,6 @@
-diff -rupN seafile-seahub-5.1.1.orig/Makefile seafile-seahub-5.1.1/Makefile
---- seafile-seahub-5.1.1.orig/Makefile 2016-04-26 23:59:48.000000000 +0200
-+++ seafile-seahub-5.1.1/Makefile      2016-04-28 09:03:35.507105416 +0200
+diff -rupN seafile-seahub-6.2.2.orig/Makefile seafile-seahub-6.2.2/Makefile
+--- seafile-seahub-6.2.2.orig/Makefile 2017-10-22 22:28:22.000000000 +0200
++++ seafile-seahub-6.2.2/Makefile      2017-10-22 22:46:18.007470936 +0200
 @@ -1,3 +1,6 @@
 +include $(TOPDIR)/rules.mk
 +$(call include_mk, python-package.mk)
@@ -8,16 +8,18 @@ diff -rupN seafile-seahub-5.1.1.orig/Makefile seafile-seahub-5.1.1/Makefile
  PROJECT=seahub
  
  develop: setup-git
-@@ -9,7 +12,7 @@ dist: locale uglify statici18n collectst
+@@ -9,7 +12,9 @@ dist: locale uglify statici18n collectst
  
  locale:
        @echo "--> Compile locales"
--      django-admin.py compilemessages
+-      django-admin.py compilemessages && cd seahub/two_factor && django-admin.py compilemessages
++      $(call HostPython,,$(STAGING_DIR)/usr/bin/django-admin.py compilemessages)
++      cd seahub/two_factor
 +      $(call HostPython,,$(STAGING_DIR)/usr/bin/django-admin.py compilemessages)
        @echo ""
  
  uglify:
-@@ -19,7 +22,7 @@ uglify:
+@@ -19,17 +24,17 @@ uglify:
  
  statici18n:
        @echo "--> Generate JS locale files in static/scripts/i18n"
@@ -26,3 +28,15 @@ diff -rupN seafile-seahub-5.1.1.orig/Makefile seafile-seahub-5.1.1/Makefile
  
  collectstatic:
        @echo "--> Collect django static files to media/assets"
+       rm -rf media/assets 2> /dev/null
+-      python manage.py collectstatic --noinput
++      $(call HostPython,,manage.py collectstatic --noinput)
+ compressstatic:
+       @echo "--> Compress static files(css) to media/CACHE"
+       rm -rf media/CACHE 2> /dev/null
+-      python manage.py compress
++      $(call HostPython,,manage.py compress)
+ clean:
+       @echo '--> Cleaning media/static cache & dist'
index 2fe020ea00ed14a07cfc1628a0933126a252ce20..0a0506b38fa51d3ef36384ba83d85034ed7497ee 100644 (file)
@@ -8,16 +8,16 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=seafile-server
-PKG_VERSION:=6.0.7
-PKG_RELEASE=$(PKG_SOURCE_VERSION)-3
+PKG_VERSION:=6.2.2
+PKG_RELEASE=$(PKG_SOURCE_VERSION)-1
 PKG_LICENSE:=GPL-3.0
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/haiwen/seafile-server.git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=715f072c1bbc78eedddcaf7748e28c83c3f4dbc6
+PKG_SOURCE_VERSION:=6978d2cb2e05cc774370b4d06c9f0a864df71936
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_MIRROR_HASH:=eaba9296a1fbc4429bacc6234e3e643da7b8f7950ba42c9b9b5b1d58c38c4273
+PKG_MIRROR_HASH:=99aa9c41641d7c0ffe18bbab75418b1347dd9e156124472bbee5a6dda09a8057
 PKG_FIXUP:=autoreconf
 PKG_INSTALL:=1
 
@@ -34,7 +34,7 @@ define Package/seafile-server
     DEPENDS:=+libarchive +libopenssl +glib2 +libsearpc +seafile-ccnet +seafile-seahub +sqlite3-cli +python-mysql +python-urllib3 \
                +jansson +libevent2 +libevent2-openssl +zlib +libzdb +libsqlite3 +libmysqlclient \
                +libpthread +libuuid +bash +procps-ng +procps-ng-pkill +SEAFILE_FUSE_SUPPORT:libfuse $(ICONV_DEPENDS)
-    EXTRA_DEPENDS:=seafile-ccnet (=6.0.7-a0de32b9cfeca98ab93d84cacbe9d315d7ecca35-1), seafile-seahub (=6.0.7-2cf75b17a372216a88842172f769d61f621416fd-2)
+    EXTRA_DEPENDS:=seafile-ccnet (=6.2.2-6b9d7e2920aa9b807f9efe9038439b57ce949ecc-1), seafile-seahub (=6.2.2-120e7a299e77968f1af48ea2dcf4bd9b909c426f-1)
     MENU:=1
 endef
 
@@ -93,7 +93,6 @@ define Package/seafile-server/install
        $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
        $(CP) $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/seafile/ $(1)$(PYTHON_PKG_DIR)/
        $(CP) $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/seaserv/ $(1)$(PYTHON_PKG_DIR)/
-       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libseafile.so* $(1)/usr/lib/
        $(CP) $(PKG_BUILD_DIR)/scripts/seaf-gc.sh $(1)/usr/share/seafile/seafile-server/
        $(CP) $(PKG_BUILD_DIR)/scripts/seaf-fsck.sh $(1)/usr/share/seafile/seafile-server/
 ifeq ($(CONFIG_SEAFILE_FUSE_SUPPORT),y)
@@ -117,7 +116,6 @@ define Build/InstallDev
        $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
        $(CP) $(PKG_INSTALL_DIR)/usr/include/seafile/ $(1)/usr/include/
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libseafile.pc $(1)/usr/lib/pkgconfig/
-       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libseafile.so* $(1)/usr/lib/
        $(CP) $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/seafile/ $(1)$(PYTHON_PKG_DIR)/
        $(CP) $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/seaserv/ $(1)$(PYTHON_PKG_DIR)/
 endef
index 2640187676ca5f745fa8b4097a38e3b094a778a0..3b7c67775605d03ed3213ef8771ede81f46f0120 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ser2net
-PKG_VERSION:=3.4
-PKG_RELEASE:=2
+PKG_VERSION:=3.5
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@SF/ser2net
-PKG_HASH:=d846066e27c3072565990745d030357aa0c278f96b7d1d4f59023347c1db8824
+PKG_HASH:=ba9e1d60a89fd7ed075553b4a2074352902203f7fbd9b65b15048c05f0e3f3be
 
 PKG_LICENSE:=GPL-2.0+
 PKG_LICENSE_FILES:=COPYING
diff --git a/net/ser2net/patches/0001-dataxfer.c-fix-possible-buffer-overruns-caused-by-ga.patch b/net/ser2net/patches/0001-dataxfer.c-fix-possible-buffer-overruns-caused-by-ga.patch
deleted file mode 100644 (file)
index 83874eb..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-From 8614cf0ad4a017184285e814a704322f59a28869 Mon Sep 17 00:00:00 2001
-From: Michael Heimpold <mhei@heimpold.de>
-Date: Wed, 12 Apr 2017 23:36:17 +0200
-Subject: [PATCH] dataxfer.c: fix possible buffer overruns caused by
- gai_strerror
-
-This fixes a possible buffer overrun that could occur due to
-gai_strerror() returning a string which is longer than the portbuff
-array, i.e. longer than 32 byte.
-
-Reported-by: David Thornley <david.thornley@touchstargroup.com>
-Signed-off-by: Michael Heimpold <mhei@heimpold.de>
-Signed-off-by: Corey Minyard <cminyard@mvista.com>
-
-diff --git a/dataxfer.c b/dataxfer.c
-index 3d1e713..988f4e4 100644
---- a/dataxfer.c
-+++ b/dataxfer.c
-@@ -3702,18 +3702,20 @@ showshortport(struct controller_info *cntlr, port_info_t *port)
-                     portbuff, sizeof(portbuff),
-                     NI_NUMERICHOST | NI_NUMERICSERV);
-     if (err) {
--      strcpy(buffer, "*err*");
--      sprintf(portbuff, "%s", gai_strerror(err));
-+      snprintf(buffer, sizeof(buffer), "*err*,%s", gai_strerror(err));
-+      count = controller_outputf(cntlr, "%s", buffer);
-+    } else {
-+      count = controller_outputf(cntlr, "%s,%s", buffer, portbuff);
-     }
--    bytes_recv = netcon->bytes_received;
--    bytes_sent = netcon->bytes_sent;
--    count = controller_outputf(cntlr, "%s,%s", buffer, portbuff);
-     while (count < 23) {
-       controller_outs(cntlr, " ");
-       count++;
-     }
-+    bytes_recv = netcon->bytes_received;
-+    bytes_sent = netcon->bytes_sent;
-+
-     controller_outputf(cntlr, "%-22s ", port->io.devname);
-     controller_outputf(cntlr, "%-14s ", state_str[port->net_to_dev_state]);
-     controller_outputf(cntlr, "%-14s ", state_str[port->dev_to_net_state]);
-@@ -3758,11 +3760,12 @@ showport(struct controller_info *cntlr, port_info_t *port)
-                         portbuff, sizeof(portbuff),
-                         NI_NUMERICHOST | NI_NUMERICSERV);
-       if (err) {
--          strcpy(buffer, "*err*");
--          sprintf(portbuff, "%s", gai_strerror(err));
-+          snprintf(buffer, sizeof(buffer), "*err*,%s", gai_strerror(err));
-+          controller_outputf(cntlr, "  connected to: %s\r\n", buffer);
-+      } else {
-+          controller_outputf(cntlr, "  connected to: %s,%s\r\n",
-+                             buffer, portbuff);
-       }
--      controller_outputf(cntlr, "  connected to: %s,%s\r\n",
--                         buffer, portbuff);
-       controller_outputf(cntlr, "    bytes read from TCP: %d\r\n",
-                          netcon->bytes_received);
-       controller_outputf(cntlr, "    bytes written to TCP: %d\r\n",
--- 
-2.7.4
-
diff --git a/net/ser2net/patches/0002-dataxfer.c-truncate-error-message-to-fit-the-column-.patch b/net/ser2net/patches/0002-dataxfer.c-truncate-error-message-to-fit-the-column-.patch
deleted file mode 100644 (file)
index 215a357..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-From b303432f2dbd6a20afa99cb462aa0a1bb740b86d Mon Sep 17 00:00:00 2001
-From: Michael Heimpold <mhei@heimpold.de>
-Date: Wed, 12 Apr 2017 23:43:18 +0200
-Subject: [PATCH] dataxfer.c: truncate error message to fit the column width
-
-gai_strerror() could return a string which is longer than our current
-column width of "Remote address". To make the output nice again,
-truncate the error string in this case.
-
-Signed-off-by: Michael Heimpold <mhei@heimpold.de>
-Signed-off-by: Corey Minyard <cminyard@mvista.com>
-
-diff --git a/dataxfer.c b/dataxfer.c
-index 988f4e4..75c2777 100644
---- a/dataxfer.c
-+++ b/dataxfer.c
-@@ -3703,6 +3703,10 @@ showshortport(struct controller_info *cntlr, port_info_t *port)
-                     NI_NUMERICHOST | NI_NUMERICSERV);
-     if (err) {
-       snprintf(buffer, sizeof(buffer), "*err*,%s", gai_strerror(err));
-+      /* gai_strerror could return an elongated string which could break
-+         our pretty formatted output below, so truncate the string nicely */
-+      if (strlen(buffer) > 22)
-+          strcpy(&buffer[22 - 3], "...");
-       count = controller_outputf(cntlr, "%s", buffer);
-     } else {
-       count = controller_outputf(cntlr, "%s,%s", buffer, portbuff);
--- 
-2.7.4
-
diff --git a/net/ser2net/patches/0003-dataxfer.c-adjust-Remote-address-column-width.patch b/net/ser2net/patches/0003-dataxfer.c-adjust-Remote-address-column-width.patch
deleted file mode 100644 (file)
index fbc7aed..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-From 81f3991e232fd45b05ff52b5091393532e4305e5 Mon Sep 17 00:00:00 2001
-From: Michael Heimpold <mhei@heimpold.de>
-Date: Thu, 13 Apr 2017 20:29:10 +0200
-Subject: [PATCH] dataxfer.c: adjust "Remote address" column width
-
-In case we are connected to an IPv6 address the current column width
-is too small to take the complete address and port number so adjust it.
-
-Signed-off-by: Michael Heimpold <mhei@heimpold.de>
-Signed-off-by: Corey Minyard <cminyard@mvista.com>
-
-diff --git a/dataxfer.c b/dataxfer.c
-index 75c2777..9955403 100644
---- a/dataxfer.c
-+++ b/dataxfer.c
-@@ -3674,6 +3674,9 @@ clear_old_port_config(int curr_config)
-     UNLOCK(ports_lock);
- }
-+#define REMOTEADDR_COLUMN_WIDTH \
-+    (INET6_ADDRSTRLEN - 1 /* terminating NUL */ + 1 /* comma */ + 5 /* strlen("65535") */)
-+
- /* Print information about a port to the control port given in cntlr. */
- static void
- showshortport(struct controller_info *cntlr, port_info_t *port)
-@@ -3705,14 +3708,14 @@ showshortport(struct controller_info *cntlr, port_info_t *port)
-       snprintf(buffer, sizeof(buffer), "*err*,%s", gai_strerror(err));
-       /* gai_strerror could return an elongated string which could break
-          our pretty formatted output below, so truncate the string nicely */
--      if (strlen(buffer) > 22)
--          strcpy(&buffer[22 - 3], "...");
-+      if (strlen(buffer) > REMOTEADDR_COLUMN_WIDTH)
-+          strcpy(&buffer[REMOTEADDR_COLUMN_WIDTH - 3], "...");
-       count = controller_outputf(cntlr, "%s", buffer);
-     } else {
-       count = controller_outputf(cntlr, "%s,%s", buffer, portbuff);
-     }
--    while (count < 23) {
-+    while (count < REMOTEADDR_COLUMN_WIDTH + 1) {
-       controller_outs(cntlr, " ");
-       count++;
-     }
-@@ -3878,10 +3881,11 @@ showshortports(struct controller_info *cntlr, char *portspec)
-     port_info_t *port;
-     controller_outputf(cntlr,
--          "%-22s %-6s %7s %-22s %-22s %-14s %-14s %9s %9s %9s %9s %s\r\n",
-+          "%-22s %-6s %7s %-*s %-22s %-14s %-14s %9s %9s %9s %9s %s\r\n",
-           "Port name",
-           "Type",
-           "Timeout",
-+          REMOTEADDR_COLUMN_WIDTH,
-           "Remote address",
-           "Device",
-           "TCP to device",
--- 
-2.7.4
-
diff --git a/net/ser2net/patches/0004-dataxfer.c-in-case-port-is-not-connected-display-thi.patch b/net/ser2net/patches/0004-dataxfer.c-in-case-port-is-not-connected-display-thi.patch
deleted file mode 100644 (file)
index 04cbddc..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-From 1479d3acc7ffb77225ea294f83a8d3fbdadfece6 Mon Sep 17 00:00:00 2001
-From: Michael Heimpold <mhei@heimpold.de>
-Date: Thu, 13 Apr 2017 20:37:35 +0200
-Subject: [PATCH] dataxfer.c: in case port is not connected display this
- directly
-
-In this case we don't bother to call into getnameinfo but show
-directly "unconnected", this prevents showing an error message.
-
-Signed-off-by: Michael Heimpold <mhei@heimpold.de>
-Signed-off-by: Corey Minyard <cminyard@mvista.com>
-
-diff --git a/dataxfer.c b/dataxfer.c
-index 9955403..d6a59d9 100644
---- a/dataxfer.c
-+++ b/dataxfer.c
-@@ -3700,19 +3700,23 @@ showshortport(struct controller_info *cntlr, port_info_t *port)
-     if (!netcon)
-       netcon = &(port->netcons[0]);
--    err = getnameinfo(netcon->raddr, netcon->raddrlen,
--                    buffer, sizeof(buffer),
--                    portbuff, sizeof(portbuff),
--                    NI_NUMERICHOST | NI_NUMERICSERV);
--    if (err) {
--      snprintf(buffer, sizeof(buffer), "*err*,%s", gai_strerror(err));
--      /* gai_strerror could return an elongated string which could break
--         our pretty formatted output below, so truncate the string nicely */
--      if (strlen(buffer) > REMOTEADDR_COLUMN_WIDTH)
--          strcpy(&buffer[REMOTEADDR_COLUMN_WIDTH - 3], "...");
--      count = controller_outputf(cntlr, "%s", buffer);
-+    if (port->net_to_dev_state != PORT_UNCONNECTED) {
-+      err = getnameinfo(netcon->raddr, netcon->raddrlen,
-+                        buffer, sizeof(buffer),
-+                        portbuff, sizeof(portbuff),
-+                        NI_NUMERICHOST | NI_NUMERICSERV);
-+      if (err) {
-+          snprintf(buffer, sizeof(buffer), "*err*,%s", gai_strerror(err));
-+          /* gai_strerror could return an elongated string which could break
-+             our pretty formatted output below, so truncate the string nicely */
-+          if (strlen(buffer) > REMOTEADDR_COLUMN_WIDTH)
-+              strcpy(&buffer[REMOTEADDR_COLUMN_WIDTH - 3], "...");
-+          count = controller_outputf(cntlr, "%s", buffer);
-+      } else {
-+          count = controller_outputf(cntlr, "%s,%s", buffer, portbuff);
-+      }
-     } else {
--      count = controller_outputf(cntlr, "%s,%s", buffer, portbuff);
-+      count = controller_outputf(cntlr, "unconnected");
-     }
-     while (count < REMOTEADDR_COLUMN_WIDTH + 1) {
-@@ -3762,21 +3766,25 @@ showport(struct controller_info *cntlr, port_info_t *port)
-     controller_outputf(cntlr, "  timeout: %d\r\n", port->timeout);
-     for_each_connection(port, netcon) {
--      err = getnameinfo(netcon->raddr, netcon->raddrlen,
--                        buffer, sizeof(buffer),
--                        portbuff, sizeof(portbuff),
--                        NI_NUMERICHOST | NI_NUMERICSERV);
--      if (err) {
--          snprintf(buffer, sizeof(buffer), "*err*,%s", gai_strerror(err));
--          controller_outputf(cntlr, "  connected to: %s\r\n", buffer);
-+      if (port->net_to_dev_state != PORT_UNCONNECTED) {
-+          err = getnameinfo(netcon->raddr, netcon->raddrlen,
-+                            buffer, sizeof(buffer),
-+                            portbuff, sizeof(portbuff),
-+                            NI_NUMERICHOST | NI_NUMERICSERV);
-+          if (err) {
-+              snprintf(buffer, sizeof(buffer), "*err*,%s", gai_strerror(err));
-+              controller_outputf(cntlr, "  connected to: %s\r\n", buffer);
-+          } else {
-+              controller_outputf(cntlr, "  connected to: %s,%s\r\n",
-+                                 buffer, portbuff);
-+          }
-+          controller_outputf(cntlr, "    bytes read from TCP: %d\r\n",
-+                             netcon->bytes_received);
-+          controller_outputf(cntlr, "    bytes written to TCP: %d\r\n",
-+                             netcon->bytes_sent);
-       } else {
--          controller_outputf(cntlr, "  connected to: %s,%s\r\n",
--                             buffer, portbuff);
-+          controller_outputf(cntlr, "  unconnected\r\n");
-       }
--      controller_outputf(cntlr, "    bytes read from TCP: %d\r\n",
--                         netcon->bytes_received);
--      controller_outputf(cntlr, "    bytes written to TCP: %d\r\n",
--                         netcon->bytes_sent);
-     }
-     controller_outputf(cntlr, "  device: %s\r\n", port->io.devname);
--- 
-2.7.4
-
index 303475beb5fa4fc69760d0f9158c49011de320ec..47b17f7f9bb98ef0f20d6e6ca5450e4cc70b1ca0 100644 (file)
@@ -13,12 +13,12 @@ include $(TOPDIR)/rules.mk
 # - check if default mode has changed from being tcp_only
 #
 PKG_NAME:=shadowsocks-libev
-PKG_VERSION:=3.1.0
+PKG_VERSION:=3.1.1
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://github.com/shadowsocks/shadowsocks-libev/releases/download/v$(PKG_VERSION)
-PKG_HASH:=3b6493ebdcfff1eb31faf34d164d57049f7253ff5bffafa6ce2263c9ac123f31
+PKG_HASH:=24a002c100fbe9b4481e3134273cb1a2f25a4026eb030760e7e7eb57f8466ef6
 
 PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
 
index e27689929e22e01b1419cc706820f5de88121d5e..8a28c792f234d3367c4ce409110a3a134d5cdbf0 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=socat
 PKG_VERSION:=1.7.3.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=http://www.dest-unreach.org/socat/download
@@ -67,7 +67,8 @@ CONFIGURE_VARS += \
        sc_cv_termios_ispeed="no" \
        sc_cv_sys_crdly_shift=9 \
        sc_cv_sys_tabdly_shift=11 \
-       sc_cv_sys_csize_shift=4
+       sc_cv_sys_csize_shift=4 \
+       BUILD_DATE=$(SOURCE_DATE_EPOCH)
 
 define Package/socat/install
        $(INSTALL_DIR) $(1)/usr/bin
index f971abfc432e63143ef8a216b210651626d8dd7d..b9cedd7eaebb6d6d9fdf5cc2b3387c59cdc5e3fc 100644 (file)
@@ -8,15 +8,17 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=squid
-PKG_VERSION:=3.5.12
+PKG_VERSION:=3.5.27
 PKG_RELEASE:=1
 
 PKG_LICENSE:=GPL-2.0
-PKG_MAINTAINER:=Luka Perkov <luka@openwrt.org>
+PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=http://www.squid-cache.org/Versions/v3/3.5/
-PKG_HASH:=8bc83f3869f7404aefb10883109e28443255cf6dde50a13904c7954619707a42
+PKG_SOURCE_URL:=http://www3.us.squid-cache.org/Versions/v3/3.5/ \
+       http://www2.pl.squid-cache.org/Versions/v3/3.5/ \
+       http://www.squid-cache.org/Versions/v3/3.5/
+PKG_HASH:=5ddb4367f2dc635921f9ca7a59d8b87edb0412fa203d1543393ac3c7f9fef0ec
 
 PKG_BUILD_PARALLEL:=1
 PKG_INSTALL:=1
@@ -28,11 +30,11 @@ define Package/squid/Default
   CATEGORY:=Network
   SUBMENU:=Web Servers/Proxies
   URL:=http://www.squid-cache.org/
+  MENU:=1
 endef
 
 define Package/squid
   $(call Package/squid/Default)
-  MENU:=1
   DEPENDS:=+libopenssl +libpthread +librt +libltdl +libstdcpp
   TITLE:=full-featured Web proxy cache
 endef
index c7493bbceee54959fbe069d5323ad3f86513aaf5..be9fdcd25dc4283934654cd9abf5b2488b15a84f 100644 (file)
@@ -1,24 +1,40 @@
 --- a/src/Makefile.in
 +++ b/src/Makefile.in
-@@ -7761,3 +7761,3 @@ cache_cf.o: cf_parser.cci
+@@ -7984,7 +7984,7 @@ cache_cf.o: cf_parser.cci
+ # cf_gen builds the configuration files.
  cf_gen$(EXEEXT): $(cf_gen_SOURCES) $(cf_gen_DEPENDENCIES) cf_gen_defines.cci
 -      $(BUILDCXX) $(BUILDCXXFLAGS) -o $@ $(srcdir)/cf_gen.cc -I$(srcdir) -I$(top_builddir)/include/ -I$(top_builddir)/src
 +      g++ -o $@ $(srcdir)/cf_gen.cc -I$(srcdir) -I$(top_builddir)/include/ -I$(top_builddir)/src
  
+ # squid.conf.default is built by cf_gen when making cf_parser.cci
+ squid.conf.default squid.conf.documented: cf_parser.cci
 --- a/configure
 +++ b/configure
-@@ -20133,3 +20133,3 @@ if test "$cross_compiling" = yes; then :
+@@ -20842,7 +20842,7 @@ else
+ 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
 +_as_fn_error $? "cannot run test program while cross compiling
  See \`config.log' for more details" "$LINENO" 5; }
-@@ -28289,3 +28289,3 @@ else
+ else
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+@@ -29142,7 +29142,7 @@ else
+     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
 +_as_fn_error $? "cannot run test program while cross compiling
  See \`config.log' for more details" "$LINENO" 5; }
-@@ -28314,3 +28314,3 @@ else
+ else
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+@@ -29167,7 +29167,7 @@ else
+     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
 +_as_fn_error $? "cannot run test program while cross compiling
  See \`config.log' for more details" "$LINENO" 5; }
+ else
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
diff --git a/net/squid/patches/100-mime.patch b/net/squid/patches/100-mime.patch
deleted file mode 100644 (file)
index 1138a41..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
---- a/src/mime.conf.default
-+++ b/src/mime.conf.default
-@@ -1,20 +1,3 @@
--## Copyright (C) 1996-2015 The Squid Software Foundation and contributors
--##
--## Squid software is distributed under GPLv2+ license and includes
--## contributions from numerous individuals and organizations.
--## Please see the COPYING and CONTRIBUTORS files for details.
--##
--#
--# This file associates URL patterns for servers or services
--# that don't automatically include Content-Type (like ftp) with a mime type
--# and a graphical icon.
--#
--# Content-Encodings are taken from section 3.1 of RFC2068 (HTTP/1.1)
--#
--# This file has the format :
--#
--# regexp      content-type                    icon                            encoding mode   actions
--#--------------------------------------------------------------------------------------------------------
- \.gif$                        image/gif               silk/image.png                  -       image   +download
- \.mime$                       www/mime                silk/page_white_text.png        -       ascii   +download
- ^internal-dirup$      -                       silk/arrow_up.png               -       -
-@@ -191,6 +174,4 @@ README             text/plain                      silk/information.pn
- \.xml$                text/xml                        silk/page_world.png             -       ascii   +download
- \.xsl$                text/xml                        silk/layout.png                 -       ascii   +download
- \.xyz$                chemical/x-xyz                  silk/chart_line.png             -       image   +download
--#
--# the default
- .             text/plain                      silk/bullet_red.png             -       image   +download +view
index 3812846c97e4ed590ff3ed9f50e12efa8e7b9e78..d243bf2c17c375378af62bc0248b3f1dee295f81 100644 (file)
@@ -8,15 +8,15 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=sshfs
-PKG_VERSION:=2.8
+PKG_VERSION:=2.10
 PKG_RELEASE:=1
 
 PKG_LICENSE:=GPL-2.0
 PKG_MAINTAINER:=Zoltan HERPAI <wigyori@uid0.hu>
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://github.com/libfuse/sshfs/releases/download/$(PKG_NAME)_$(PKG_VERSION)
-PKG_HASH:=7f689174d02e6b7e2631306fda4fb8e6b4483102d1bce82b3cdafba33369ad22
+PKG_SOURCE_URL:=https://github.com/libfuse/sshfs/releases/download/$(PKG_NAME)-$(PKG_VERSION)
+PKG_HASH:=70845dde2d70606aa207db5edfe878e266f9c193f1956dd10ba1b7e9a3c8d101
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
 
index 695730d52f33821933b83c0d343ba4b1e123e042..1a4e25c926edadbf5a803bb0ab693bc22436cca8 100644 (file)
@@ -34,19 +34,8 @@ define Package/sslh/conffiles
 /etc/sslh.conf
 endef
 
-define Build/Compile
-       $(MAKE) -C $(PKG_BUILD_DIR) \
-               CC="$(TARGET_CC)" \
-               CFLAGS="$(TARGET_CFLAGS)" \
-               CPPFLAGS="$(TARGET_CPPFLAGS)" \
-               LDFLAGS="$(TARGET_LDFLAGS)" \
-               ENABLE_REGEX=1 \
-               USELIBCONFIG=1 \
-               USELIBWRAP= \
-               USELIBPCRE= \
-               $(if $(CONFIG_USE_GLIBC),USELIBPCRE=,USELIBPCRE=1)\
-               all
-endef
+MAKE_FLAGS += \
+  $(if $(CONFIG_USE_GLIBC),USELIBPCRE=,USELIBPCRE=1)
 
 define Package/sslh/install
        $(INSTALL_DIR) $(1)/usr/sbin
index e374dc55f5db403201961ee74f6ca5a7452c18e8..aff11fdef40b48a1b3f865b2ee972358e5ca011d 100644 (file)
@@ -8,11 +8,11 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=strongswan
-PKG_VERSION:=5.6.0
+PKG_VERSION:=5.6.1
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=a14dc0d92634ed52730bfc76a76db30943a28ed3c65a560066e1e9f785827b13
+PKG_HASH:=e0c282d8ad418609c5dfb5e8efa01b28b95ef3678070ed47bf2a229f55f4ab53
 PKG_SOURCE_URL:=http://download.strongswan.org/ http://download2.strongswan.org/
 PKG_LICENSE:=GPL-2.0+
 PKG_MAINTAINER:=Stijn Tintel <stijn@linux-ipv6.be>
index b832162db15b9213ea22a4a23ab2b2790f2ee3eb..3741dbc8a9de820883ab476456c24f32bed71f0e 100644 (file)
@@ -11,12 +11,12 @@ PKG_LICENSE:=ASL-2.0
 PKG_MAINTAINER:=Mislav Novakovic <mislav.novakovic@sartura.hr>
 
 PKG_NAME:=sysrepo
-PKG_VERSION:=0.7.0
+PKG_VERSION:=0.7.1
 PKG_RELEASE:=2
 
 PKG_SOURCE_PROTO:=git
-PKG_SOURCE_VERSION:=7aa2f18d234267403147df92c0005c871f0aa840
-PKG_MIRROR_HASH:=31125596ae1c4dbf8dd48c639bf78043060ab1b89678c860eb2b10606fe4b686
+PKG_SOURCE_VERSION:=0b36f308574a60d7ee36b1a3118b999618bb40d8
+PKG_MIRROR_HASH:=d28ff0356b6ac4b934bb45ff77973efe7964b86a54270d11e1fd06a2af9bdbc8
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
 PKG_SOURCE_URL:=https://github.com/sysrepo/sysrepo.git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION)
index 9a4320133e0c2cdaee642fba5a5cc25061e9f4db..abfcd66cdcb8fc5ba6691b47d5eaf271575dcee8 100644 (file)
@@ -23,6 +23,8 @@ start_service() {
 
 stop_service()
 {
+    kill -9 `ps | grep netopeer2-server | grep -v grep | awk '{print $1}'` >/dev/null 2>&1
     service_stop ${PROG_PLUGIN}
     service_stop ${PROG_DEAMON}
+    rm -rf /var/run/sysrepo-subscriptions/*
 }
index e4487fb692623855b8b3a030dcb1b5c77c7f2533..0e97965b8a8f4bfe1bc44d951b0b0093849a068d 100644 (file)
@@ -13,7 +13,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=tcpproxy
 PKG_VERSION:=1.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.spreadspace.org/tcpproxy/releases/
@@ -51,7 +51,6 @@ define Build/Configure
     echo '#define TCPPROXY_config_h_INCLUDED' >> config.h; \
     echo '' >> config.h; \
     echo '#define VERSION_STRING_0 "tcpproxy version '`cat $(PKG_BUILD_DIR)/version`'"' >> config.h; \
-    echo '#define VERSION_STRING_1 "built on '`hostname`', '`date +"%d.%m.%Y %H:%M:%S %Z"`'"' >> config.h; \
     echo '' >> config.h; \
     echo '#define TARGET "linux"' >> config.h; \
     echo '#define PREFIX "/usr"' >> config.h; \
diff --git a/net/tcpproxy/patches/100-remove-build-timestamps-build-hostname.patch b/net/tcpproxy/patches/100-remove-build-timestamps-build-hostname.patch
new file mode 100644 (file)
index 0000000..363ea27
--- /dev/null
@@ -0,0 +1,40 @@
+Index: tcpproxy-1.2/src/configure
+===================================================================
+--- tcpproxy-1.2.orig/src/configure    2017-12-03 13:12:34.483712208 +0100
++++ tcpproxy-1.2/src/configure 2017-12-03 13:13:56.677386919 +0100
+@@ -195,9 +195,6 @@
+     fi
+ fi
+-HOSTNAME=`hostname`
+-DATE=`date +"%d.%m.%Y %H:%M:%S %Z"`
+-
+ cat > config.h <<EOF
+ /*
+  * tcpproxy config header
+@@ -211,7 +208,6 @@
+ #define TCPPROXY_config_h_INCLUDED
+ #define VERSION_STRING_0 "tcpproxy version $VERSION"
+-#define VERSION_STRING_1 "built on $HOSTNAME, $DATE"
+ #define TARGET "$TARGET"
+ #define PREFIX "$PREFIX"
+Index: tcpproxy-1.2/src/options.c
+===================================================================
+--- tcpproxy-1.2.orig/src/options.c    2015-05-14 00:14:22.000000000 +0200
++++ tcpproxy-1.2/src/options.c 2017-12-03 13:14:37.442219952 +0100
+@@ -326,11 +326,9 @@
+ {
+   printf("%s\n", VERSION_STRING_0);
+ #if defined(__clang__)
+-  printf("%s, using CLANG %s\n", VERSION_STRING_1, __clang_version__);
++  printf("using CLANG %s\n", __clang_version__);
+ #elif defined(__GNUC__)
+-  printf("%s, using GCC %d.%d.%d\n", VERSION_STRING_1, __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__);
+-#else
+-  printf("%s\n", VERSION_STRING_1);
++  printf("using GCC %d.%d.%d\n", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__);
+ #endif
+ }
index a6b9cd850c3a5515985fb1dbf6cb7f97f0c2c8ec..d8857affa23a21660a21e3de25fe13aeb774d0a6 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=tcpreplay
-PKG_VERSION:=4.2.3
+PKG_VERSION:=4.2.5
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://github.com/appneta/tcpreplay/releases/download/v$(PKG_VERSION)
-PKG_HASH:=68d8d49dab5bf58b2e8d244eee1ee7f2379d967da19fe97dd9d59bcf40a22abc
+PKG_HASH:=941026be34e1db5101d3d22ebddd6fff76179a1ee81e273338f533ba4eca89d7
 
 PKG_LICENSE:=GPL-3.0
 PKG_LICENSE_FILES:=docs/LICENSE
index 5e02b8fdc488b05f28d49195a556bf735d903489..dcc3a073a3816da2e2c232cb9deadb31a4ff9673 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=tinc
-PKG_VERSION:=1.0.32
+PKG_VERSION:=1.0.33
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.tinc-vpn.org/packages
-PKG_HASH:=4db24feaff8db4bbb7edb7a4b8f5f8edc39b26eb5feccc99e8e67a6960c05587
+PKG_HASH:=7f6f5dc6444bc651ac635c81f4745bcce581bbd1d45ed60cbdc4ee11bebb10f4
 
 PKG_INSTALL:=1
 
index 9e5098a62bde9052d41bb474944fd17f71bcb6bc..9bfc247c8414c9677467fc76b6e5ebbac7582e6a 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=tor
-PKG_VERSION:=0.2.9.12
+PKG_VERSION:=0.3.1.9
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://dist.torproject.org/ \
        https://archive.torproject.org/tor-package-archive
-PKG_HASH:=6e7466625d53812f23c2ad60a873c5855f63f756fde0fc5cbeda8d32cee1086b
+PKG_HASH:=6e1b04f7890e782fd56014a0de5075e4ab29b52a35d8bca1f6b80c93f58f3d26
 PKG_MAINTAINER:=Hauke Mehrtens <hauke@hauke-m.de>
 PKG_LICENSE_FILES:=LICENSE
 
@@ -97,6 +97,7 @@ CONFIGURE_ARGS += \
        --disable-libscrypt \
        --disable-unittests \
        --disable-largefile \
+       --disable-lzma \
        --with-tor-user=tor \
        --with-tor-group=tor
 
index 1a784d2ffaee3080c50425643689533093156ccf..716528aa0e348371885a0b69eb109cd0af004f92 100644 (file)
@@ -18,8 +18,8 @@
  
  ## The port on which Tor will listen for local connections from Tor
  ## controller applications, as documented in control-spec.txt.
-@@ -204,3 +204,4 @@
- ## address manually to your friends, uncomment this line:
- #PublishServerDescriptor 0
+@@ -218,3 +218,4 @@
+ #%include /etc/torrc.d/
+ #%include /etc/torrc.custom
  
 +User tor
index f6cb8b99c1f6058ee9bb5e9acb5ab0c7762122ab..c762f05dfaf43cdf3267221bc5fd7fa5fb54200b 100644 (file)
@@ -9,14 +9,14 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=transmission
 PKG_VERSION:=2.92+git
-PKG_RELEASE:=4
+PKG_RELEASE:=5
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/transmission/transmission.git
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=35fea28d1a37875ef7480ac061754df617805b19
+PKG_SOURCE_VERSION:=5b29fe15561d40c40cbee635446df6b33e18d2c2
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
-PKG_MIRROR_HASH:=aeeb8dfd918bd2cf4fb6fbdf58bd822e9b509df1ba5ec408888edd161123ef8e
+PKG_MIRROR_HASH:=f99982ae68564da9bf6ad4407285aff2e29508e4fd801ff56f86a8b3dae01819
 
 PKG_FIXUP:=autoreconf
 PKG_INSTALL:=1
@@ -32,7 +32,7 @@ define Package/transmission/template
   CATEGORY:=Network
   TITLE:=BitTorrent client
   URL:=http://www.transmissionbt.com
-  MAINTAINER:=Cezary Jackiewicz <cezary@eko.one.pl>
+  MAINTAINER:=Rosen Penev <rosenp@gmail.com>
 endef
 
 define Package/transmission-daemon/Default
@@ -171,6 +171,8 @@ define Package/transmission-daemon-openssl/install
        $(INSTALL_BIN) files/transmission.init $(1)/etc/init.d/transmission
        $(INSTALL_DIR) $(1)/etc/config
        $(INSTALL_CONF) files/transmission.config $(1)/etc/config/transmission
+       $(INSTALL_DIR) $(1)/etc/sysctl.d/
+       $(INSTALL_CONF) files/transmission.sysctl $(1)/etc/sysctl.d/20-transmission.conf
 endef
 Package/transmission-daemon-mbedtls/install = $(Package/transmission-daemon-openssl/install)
 
diff --git a/net/transmission/files/transmission.sysctl b/net/transmission/files/transmission.sysctl
new file mode 100644 (file)
index 0000000..bdf0de2
--- /dev/null
@@ -0,0 +1,2 @@
+net.core.rmem_max = 4194304
+net.core.wmem_max = 1048576
diff --git a/net/transmission/patches/030-fix-musl-build.patch b/net/transmission/patches/030-fix-musl-build.patch
deleted file mode 100644 (file)
index f03aebc..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
---- a/libtransmission/bitfield.c
-+++ b/libtransmission/bitfield.c
-@@ -6,6 +6,8 @@
-  *
-  */
-+#define __NEED_ssize_t
-+
- #include <assert.h>
- #include <string.h> /* memset */
-@@ -13,6 +15,7 @@
- #include "bitfield.h"
- #include "utils.h" /* tr_new0 () */
-+
- const tr_bitfield TR_BITFIELD_INIT = { NULL, 0, 0, 0, false, false };
- /****
---- a/libtransmission/fdlimit.h
-+++ b/libtransmission/fdlimit.h
-@@ -10,6 +10,8 @@
-  #error only libtransmission should #include this header.
- #endif
-+#define __NEED_off_t
-+
- #include "transmission.h"
- #include "file.h"
- #include "net.h"
diff --git a/net/transmission/patches/060-fix-foreground-syslog.patch b/net/transmission/patches/060-fix-foreground-syslog.patch
new file mode 100644 (file)
index 0000000..0334ca5
--- /dev/null
@@ -0,0 +1,30 @@
+diff --git a/daemon/daemon.c b/daemon/daemon.c
+index 7b2a3b425..5b19d105a 100644
+--- a/daemon/daemon.c
++++ b/daemon/daemon.c
+@@ -715,12 +715,7 @@ static int daemon_start(void* raw_arg, bool foreground)
+     }
+ #ifdef HAVE_SYSLOG
+-
+-    if (!foreground)
+-    {
+-        openlog(MY_NAME, LOG_CONS | LOG_PID, LOG_DAEMON);
+-    }
+-
++    openlog(MY_NAME, LOG_CONS | LOG_PID, LOG_DAEMON);
+ #endif
+     /* Create new timer event to report daemon status */
+@@ -772,11 +767,8 @@ cleanup:
+     /* shutdown */
+ #ifdef HAVE_SYSLOG
+-    if (!foreground)
+-    {
+         syslog(LOG_INFO, "%s", "Closing session");
+         closelog();
+-    }
+ #endif
index ddce67cbfe55626a9217d4ddfed672f73b2da966..ef7b3914d6af1a74090521eb3444c321530013a9 100644 (file)
@@ -13,7 +13,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=uanytun
 PKG_VERSION:=0.3.5
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.anytun.org/download/
diff --git a/net/uanytun/patches/100-reproducible-builds.patch b/net/uanytun/patches/100-reproducible-builds.patch
new file mode 100644 (file)
index 0000000..a5aa864
--- /dev/null
@@ -0,0 +1,12 @@
+Index: uanytun-0.3.5/src/options.c
+===================================================================
+--- uanytun-0.3.5.orig/src/options.c
++++ uanytun-0.3.5/src/options.c
+@@ -481,7 +481,6 @@ void options_print_usage()
+ void options_print_version()
+ {
+   printf("%s\n", VERSION_STRING_0);
+-  printf("%s\n", VERSION_STRING_1);
+ }
+ void options_print(options_t* opt)
index d346a6863404809eaa46e5383af2c64ab935ef0b..3fcd321bbcd0ee36acc754f2192db8dcd78a7232 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=wget
-PKG_VERSION:=1.18
+PKG_VERSION:=1.19.2
 PKG_RELEASE:=2
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
-PKG_HASH:=b5b55b75726c04c06fe253daec9329a6f1a3c0c1878e3ea76ebfebc139ea9cc1
-PKG_MAINTAINER:=Maxim Storchak <m.storchak@gmail.com>
+PKG_HASH:=4f4a673b6d466efa50fbfba796bd84a46ae24e370fa562ede5b21ab53c11a920
+PKG_MAINTAINER:=Peter Wagner <tripolar@gmx.at>
 PKG_LICENSE:=GPL-3.0+
 PKG_LICENSE_FILES:=COPYING
 
@@ -66,6 +66,7 @@ endef
 CONFIGURE_ARGS+= \
        --disable-rpath \
        --disable-iri \
+       --with-included-libunistring \
        --without-libuuid
 
 CONFIGURE_VARS += \
diff --git a/net/wireguard/Makefile b/net/wireguard/Makefile
deleted file mode 100644 (file)
index 4679ff3..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-#
-# Copyright (C) 2016-2017 Jason A. Donenfeld <Jason@zx2c4.com>
-# Copyright (C) 2016 Baptiste Jonglez <openwrt@bitsofnetworks.org>
-# Copyright (C) 2016-2017 Dan Luedtke <mail@danrl.com>
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-
-include $(TOPDIR)/rules.mk
-include $(INCLUDE_DIR)/kernel.mk
-
-PKG_NAME:=wireguard
-
-PKG_VERSION:=0.0.20171005
-PKG_RELEASE:=1
-
-PKG_SOURCE:=WireGuard-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=https://git.zx2c4.com/WireGuard/snapshot/
-PKG_HASH:=832a3b7cbb510f6986fd0c3a6b2d86bc75fc9f23b6754d8f46bc58ea8e02d608
-
-PKG_LICENSE:=GPL-2.0
-PKG_LICENSE_FILES:=COPYING
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/WireGuard-$(PKG_VERSION)
-PKG_BUILD_PARALLEL:=1
-PKG_USE_MIPS16:=0
-
-# Wireguard's makefile needs this to know where to build the kernel module
-export KERNELDIR:=$(LINUX_DIR)
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/wireguard/Default
-  SECTION:=net
-  CATEGORY:=Network
-  SUBMENU:=VPN
-  URL:=https://www.wireguard.com
-  MAINTAINER:=Baptiste Jonglez <openwrt@bitsofnetworks.org>, \
-              Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>, \
-              Dan Luedtke <mail@danrl.com>, \
-              Jason A. Donenfeld <Jason@zx2c4.com>
-endef
-
-define Package/wireguard/Default/description
-  WireGuard is a novel VPN that runs inside the Linux Kernel and utilizes
-  state-of-the-art cryptography. It aims to be faster, simpler, leaner, and
-  more useful than IPSec, while avoiding the massive headache. It intends to
-  be considerably more performant than OpenVPN.  WireGuard is designed as a
-  general purpose VPN for running on embedded interfaces and super computers
-  alike, fit for many different circumstances. It uses UDP.
-endef
-
-define Package/wireguard
-  $(call Package/wireguard/Default)
-  TITLE:=Wireguard meta-package
-  DEPENDS:=+wireguard-tools +kmod-wireguard
-endef
-
-include $(INCLUDE_DIR)/kernel-defaults.mk
-include $(INCLUDE_DIR)/package-defaults.mk
-
-# Used by Build/Compile/Default
-MAKE_PATH:=src/tools
-
-define Build/Compile
-       $(MAKE) $(KERNEL_MAKEOPTS) M="$(PKG_BUILD_DIR)/src" modules
-       $(call Build/Compile/Default)
-endef
-
-define Package/wireguard/install
-  true
-endef
-
-define Package/wireguard/description
-  $(call Package/wireguard/Default/description)
-endef
-
-define Package/wireguard-tools
-  $(call Package/wireguard/Default)
-  TITLE:=Wireguard userspace control program (wg)
-  DEPENDS:=+libmnl
-endef
-
-define Package/wireguard-tools/description
-  $(call Package/wireguard/Default/description)
-
-  This package provides the userspace control program for wireguard, `wg`,
-  and a netifd protocol helper.
-endef
-
-define Package/wireguard-tools/install
-       $(INSTALL_DIR) $(1)/usr/bin/
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/tools/wg $(1)/usr/bin/
-       $(INSTALL_DIR) $(1)/lib/netifd/proto/
-       $(INSTALL_BIN) ./files/wireguard.sh $(1)/lib/netifd/proto/
-endef
-
-define KernelPackage/wireguard
-  SECTION:=kernel
-  CATEGORY:=Kernel modules
-  SUBMENU:=Network Support
-  TITLE:=Wireguard kernel module
-  DEPENDS:=+IPV6:kmod-udptunnel6 +kmod-udptunnel4
-  FILES:= $(PKG_BUILD_DIR)/src/wireguard.$(LINUX_KMOD_SUFFIX)
-  AUTOLOAD:=$(call AutoProbe,wireguard)
-endef
-
-define KernelPackage/wireguard/description
-  $(call Package/wireguard/Default/description)
-
-  This package provides the kernel module for wireguard.
-endef
-
-$(eval $(call BuildPackage,wireguard))
-$(eval $(call BuildPackage,wireguard-tools))
-$(eval $(call KernelPackage,wireguard))
diff --git a/net/wireguard/files/wireguard.sh b/net/wireguard/files/wireguard.sh
deleted file mode 100644 (file)
index 7b18a2e..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-#!/bin/sh
-# Copyright 2016-2017 Dan Luedtke <mail@danrl.com>
-# Licensed to the public under the Apache License 2.0.
-
-
-WG=/usr/bin/wg
-if [ ! -x $WG ]; then
-  logger -t "wireguard" "error: missing wireguard-tools (${WG})"
-  exit 0
-fi
-
-
-[ -n "$INCLUDE_ONLY" ] || {
-  . /lib/functions.sh
-  . ../netifd-proto.sh
-  init_proto "$@"
-}
-
-
-proto_wireguard_init_config() {
-  proto_config_add_string "private_key"
-  proto_config_add_int    "listen_port"
-  proto_config_add_int    "mtu"
-  proto_config_add_string "fwmark"
-  available=1
-  no_proto_task=1
-}
-
-
-proto_wireguard_setup_peer() {
-  local peer_config="$1"
-
-  local public_key
-  local preshared_key
-  local allowed_ips
-  local route_allowed_ips
-  local endpoint_host
-  local endpoint_port
-  local persistent_keepalive
-
-  config_get      public_key           "${peer_config}" "public_key"
-  config_get      preshared_key        "${peer_config}" "preshared_key"
-  config_get      allowed_ips          "${peer_config}" "allowed_ips"
-  config_get_bool route_allowed_ips    "${peer_config}" "route_allowed_ips" 0
-  config_get      endpoint_host        "${peer_config}" "endpoint_host"
-  config_get      endpoint_port        "${peer_config}" "endpoint_port"
-  config_get      persistent_keepalive "${peer_config}" "persistent_keepalive"
-
-  # peer configuration
-  echo "[Peer]"                                         >> "${wg_cfg}"
-  echo "PublicKey=${public_key}"                        >> "${wg_cfg}"
-  if [ "${preshared_key}" ]; then
-    echo "PresharedKey=${preshared_key}"                >> "${wg_cfg}"
-  fi
-  for allowed_ip in $allowed_ips; do
-    echo "AllowedIPs=${allowed_ip}"                     >> "${wg_cfg}"
-  done
-  if [ "${endpoint_host}" ]; then
-    case "${endpoint_host}" in
-      *:*)
-        endpoint="[${endpoint_host}]"
-      ;;
-      *)
-        endpoint="${endpoint_host}"
-      ;;
-    esac
-    if [ "${endpoint_port}" ]; then
-      endpoint="${endpoint}:${endpoint_port}"
-    else
-      endpoint="${endpoint}:51820"
-    fi
-    echo "Endpoint=${endpoint}"                         >> "${wg_cfg}"
-  fi
-  if [ "${persistent_keepalive}" ]; then
-    echo "PersistentKeepalive=${persistent_keepalive}"  >> "${wg_cfg}"
-  fi
-
-  # add routes for allowed ips
-  if [ ${route_allowed_ips} -ne 0 ]; then
-    for allowed_ip in ${allowed_ips}; do
-      case "${allowed_ip}" in
-        *:*/*)
-          proto_add_ipv6_route "${allowed_ip%%/*}" "${allowed_ip##*/}"
-        ;;
-        *.*/*)
-          proto_add_ipv4_route "${allowed_ip%%/*}" "${allowed_ip##*/}"
-        ;;
-        *:*)
-          proto_add_ipv6_route "${allowed_ip%%/*}" "128"
-        ;;
-        *.*)
-          proto_add_ipv4_route "${allowed_ip%%/*}" "32"
-        ;;
-      esac
-    done
-  fi
-}
-
-
-proto_wireguard_setup() {
-  local config="$1"
-  local wg_dir="/tmp/wireguard"
-  local wg_cfg="${wg_dir}/${config}"
-
-  local private_key
-  local listen_port
-  local mtu
-
-  # load configuration
-  config_load network
-  config_get private_key   "${config}" "private_key"
-  config_get listen_port   "${config}" "listen_port"
-  config_get addresses     "${config}" "addresses"
-  config_get mtu           "${config}" "mtu"
-  config_get fwmark        "${config}" "fwmark"
-
-  # create interface
-  ip link del dev "${config}" 2>/dev/null
-  ip link add dev "${config}" type wireguard
-
-  if [ "${mtu}" ]; then
-    ip link set mtu "${mtu}" dev "${config}"
-  fi
-
-  proto_init_update "${config}" 1
-
-  # generate configuration file
-  umask 077
-  mkdir -p "${wg_dir}"
-  echo "[Interface]"                     >  "${wg_cfg}"
-  echo "PrivateKey=${private_key}"       >> "${wg_cfg}"
-  if [ "${listen_port}" ]; then
-    echo "ListenPort=${listen_port}"     >> "${wg_cfg}"
-  fi
-  if [ "${fwmark}" ]; then
-    echo "FwMark=${fwmark}" >> "${wg_cfg}"
-  fi
-  config_foreach proto_wireguard_setup_peer "wireguard_${config}"
-
-  # apply configuration file
-  ${WG} setconf ${config} "${wg_cfg}"
-  WG_RETURN=$?
-
-  # delete configuration file
-  rm -f "${wg_cfg}"
-
-  # check status
-  if [ ${WG_RETURN} -ne 0 ]; then
-    sleep 5
-    proto_setup_failed "${config}"
-    exit 1
-  fi
-
-  # add ip addresses
-  for address in ${addresses}; do
-    case "${address}" in
-      *:*/*)
-        proto_add_ipv6_address "${address%%/*}" "${address##*/}"
-      ;;
-      *.*/*)
-        proto_add_ipv4_address "${address%%/*}" "${address##*/}"
-      ;;
-      *:*)
-        proto_add_ipv6_address "${address%%/*}" "128"
-      ;;
-      *.*)
-        proto_add_ipv4_address "${address%%/*}" "32"
-      ;;
-    esac
-  done
-
-  # endpoint dependency
-  wg show "${config}" endpoints | \
-    sed -E 's/\[?([0-9.:a-f]+)\]?:([0-9]+)/\1 \2/' | \
-    while IFS=$'\t ' read -r key address port; do
-    [ -n "${port}" ] || continue
-    proto_add_host_dependency "${config}" "${address}"
-  done
-
-  proto_send_update "${config}"
-}
-
-
-proto_wireguard_teardown() {
-  local config="$1"
-  ip link del dev "${config}" >/dev/null 2>&1
-}
-
-
-[ -n "$INCLUDE_ONLY" ] || {
-  add_protocol wireguard
-}
index c69dc4f6ae4859eb3c935346b9dd1c049880ddec..a8d9ef86fc4fbf6c1f40732ac473ed34191c2bbc 100644 (file)
@@ -8,8 +8,8 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=xl2tpd
-PKG_VERSION:=devel-20151125
-PKG_RELEASE:=3
+PKG_VERSION:=1.3.10
+PKG_RELEASE:=1
 PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
 PKG_LICENSE:=GPL-2.0
 PKG_LICENSE_FILES:=LICENSE
@@ -17,9 +17,11 @@ 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:=e2065bf0fc22ba33001ad503c01bba01648024a8
+PKG_SOURCE_VERSION:=090d1bef577cabdb3495d76acd814733fa66ef57
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_MIRROR_HASH:=8b15c0069cdab7080796f92f86c84b79e430679ce77fb6ea95749fe932bb87c4
+PKG_MIRROR_HASH:=bcddc10e28a74dec607e67cbbea97220f6bfd696b0378a7c30ec8a3e0ac86be1
+
+PKG_BUILD_DEPENDS:=libpcap
 
 PKG_INSTALL:=1
 
@@ -40,9 +42,6 @@ It does implement both LAC and LNS role in a L2TP networking architecture. The
 main goal of this protocol is to tunnel PPP frame trough an IP network.
 endef
 
-# Use optimization options from OpenWrt build system
-MAKE_FLAGS += OFLAGS=""
-
 ifneq (0,0)
   # debugging options from Makefile of xl2tpd package
   EXTRA_CFLAGS += \
index f0fc4f40eb63ffaf9a883830de2f5961cea85dea..5ef0d94414ecf5f38c21dc8184cb9348c4b21ad3 100644 (file)
@@ -1,6 +1,4 @@
 #
-
-lock
 noauth
 debug
 dump
@@ -11,3 +9,12 @@ novj
 novjccomp
 nopcomp
 noaccomp
+mtu 1400
+mru 1400
+require-mschap-v2
+lcp-echo-interval 20
+lcp-echo-failure 5
+connect-delay 5000
+nodefaultroute
+noipdefault
+proxyarp
diff --git a/net/xl2tpd/patches/100-makefile_opt_flags.patch b/net/xl2tpd/patches/100-makefile_opt_flags.patch
deleted file mode 100644 (file)
index f945d94..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
---- a/Makefile
-+++ b/Makefile
-@@ -97,7 +97,8 @@ OSFLAGS+= -DUSE_KERNEL
- IPFLAGS?= -DIP_ALLOCATION
--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
- SRCS=${OBJS:.o=.c} ${HDRS}
diff --git a/net/xl2tpd/patches/110-makefile_dont_build_pfc.patch b/net/xl2tpd/patches/110-makefile_dont_build_pfc.patch
deleted file mode 100644 (file)
index f76364f..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
---- a/Makefile
-+++ b/Makefile
-@@ -113,10 +113,10 @@ BINDIR?=$(DESTDIR)${PREFIX}/bin
- MANDIR?=$(DESTDIR)${PREFIX}/share/man
--all: $(EXEC) pfc $(CONTROL_EXEC)
-+all: $(EXEC) $(CONTROL_EXEC)
- clean:
--      rm -f $(OBJS) $(EXEC) pfc.o pfc $(CONTROL_EXEC)
-+      rm -f $(OBJS) $(EXEC) $(CONTROL_EXEC)
- $(EXEC): $(OBJS) $(HDRS)
-       $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
-@@ -124,14 +124,10 @@ $(EXEC): $(OBJS) $(HDRS)
- $(CONTROL_EXEC): $(CONTROL_SRCS)
-       $(CC) $(CFLAGS) $(LDFLAGS) $(CONTROL_SRCS) -o $@
--pfc:
--      $(CC) $(CFLAGS) -c contrib/pfc.c
--      $(CC) $(LDFLAGS) -o pfc pfc.o -lpcap $(LDLIBS)
--
- romfs:
-       $(ROMFSINST) /bin/$(EXEC)
--install: ${EXEC} pfc ${CONTROL_EXEC}
-+install: ${EXEC} ${CONTROL_EXEC}
-       install -d -m 0755 ${SBINDIR}
-       install -m 0755 $(EXEC) ${SBINDIR}/$(EXEC)
-       install -d -m 0755 ${MANDIR}/man5
-@@ -139,11 +135,6 @@ install: ${EXEC} pfc ${CONTROL_EXEC}
-       install -m 0644 doc/xl2tpd.8 ${MANDIR}/man8/
-       install -m 0644 doc/xl2tpd.conf.5 doc/l2tp-secrets.5 \
-                ${MANDIR}/man5/
--      # pfc
--      install -d -m 0755 ${BINDIR}
--      install -m 0755 pfc ${BINDIR}/pfc
--      install -d -m 0755 ${MANDIR}/man1
--      install -m 0644 contrib/pfc.1 ${MANDIR}/man1/
-       # control exec
-       install -d -m 0755 ${SBINDIR}
-       install -m 0755 $(CONTROL_EXEC) ${SBINDIR}/$(CONTROL_EXEC)
diff --git a/net/xl2tpd/patches/120-no-bsd-signal-in-musl.patch b/net/xl2tpd/patches/120-no-bsd-signal-in-musl.patch
deleted file mode 100644 (file)
index c8c4a7d..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/xl2tpd.c
-+++ b/xl2tpd.c
-@@ -30,7 +30,7 @@
- #include <errno.h>
- #include <unistd.h>
- #include <time.h>
--#if (__GLIBC__ < 2)
-+#if defined (__GLIBC__) && (__GLIBC__ < 2)
- # if defined(FREEBSD) || defined(OPENBSD)
- #  include <sys/signal.h>
- # elif defined(LINUX)
diff --git a/net/xl2tpd/patches/200-xl2tpd-control-fix-xl2tpd-hanged-up-in-fopen.patch b/net/xl2tpd/patches/200-xl2tpd-control-fix-xl2tpd-hanged-up-in-fopen.patch
deleted file mode 100644 (file)
index 8fa0fd3..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-From 97adf987cf230e47a4800c2f0a0940a1d0d98109 Mon Sep 17 00:00:00 2001
-From: wendy2001011 <wendy2001011@163.com>
-Date: Thu, 9 Feb 2017 17:32:14 +0800
-Subject: [PATCH] xl2tpd-control: fix xl2tpd hanged up in "fopen"
-
-This is a fix for xl2tpd hanged up in "fopen" result fifo while working
-on xl2tpd with OpenWrt.
-
-Root cause is as followings,
-1. xl2tpd-control open result fifo    ##fifo readers=1
-2. xl2tpd-control read result fifo
-3. xl2tpd-control close result fifo     ##fifo readers=0
-4. xl2tpd fopen result fifo                 ##xl2tpd is hanged up here to wait readers
-5.  xl2tpd-control unlink result fifo
-
-The fix replaces the order of "unlink" and "close" when cleaning up to
-avoid hang up issue in fopen, and add the retry waiting when reading
-result fifo.
-
-[Yousong Zhou: 2s as the timeout and 10ms as the check interval]
----
- xl2tpd-control.c | 23 +++++++++++++++++++++--
- 1 file changed, 21 insertions(+), 2 deletions(-)
-
-diff --git a/xl2tpd-control.c b/xl2tpd-control.c
-index 9fcab76..b8bf822 100644
---- a/xl2tpd-control.c
-+++ b/xl2tpd-control.c
-@@ -35,6 +35,7 @@
- #define TUNNEL_REQUIRED 1
- #define TUNNEL_NOT_REQUIRED 0
-+#define TIMEOUT 2000000  //timeout is 2s
- char result_filename[128];
- int result_fd = -1;
-@@ -149,9 +150,9 @@ void help()
- void cleanup(void)
- {
-     /* cleaning up */
--    if (result_fd >= 0)
--          close (result_fd);
-     unlink (result_filename);
-+    if (result_fd >= 0)
-+        close (result_fd);
- }
- int main (int argc, char *argv[])
-@@ -340,6 +341,7 @@ void print_error (int level, const char *fmt, ...)
-     va_end (args);
- }
-+
- int read_result(int result_fd, char* buf, ssize_t size)
- {
-     /* read result from result_fd */
-@@ -348,6 +350,11 @@ int read_result(int result_fd, char* buf, ssize_t size)
-      */
-     ssize_t readed = 0;
-     ssize_t len;
-+    int write_pipe = 0;
-+    struct timeval tvs;
-+    struct timeval tve;
-+    unsigned long diff;
-+    gettimeofday(&tvs, NULL);
-     do
-     {
-@@ -360,8 +367,20 @@ int read_result(int result_fd, char* buf, ssize_t size)
-                 "error: can't read command result: %s\n", strerror (errno));
-             break;
-         } else if (len == 0) {
-+            if(!write_pipe) {
-+                 gettimeofday(&tve, NULL);
-+                 diff = (tve.tv_sec - tvs.tv_sec) * 1000000 + (tve.tv_usec - tvs.tv_usec);
-+                 if (diff >= TIMEOUT) {
-+                     print_error (DEBUG_LEVEL, "error: read timout\n");
-+                     break;
-+                 } else {
-+                     usleep(10000);
-+                     continue;
-+                 }
-+            }
-             break;
-         } else {
-+            write_pipe = 1;
-             readed += len;
-             if ((size - readed) <= 0)
-                 break;
--- 
-2.6.4
-
diff --git a/sound/fdk-aac/Config.in b/sound/fdk-aac/Config.in
new file mode 100644 (file)
index 0000000..252b290
--- /dev/null
@@ -0,0 +1,12 @@
+menu "Configuration"
+       depends on PACKAGE_fdk-aac
+
+config FDK-AAC_OPTIMIZE_SPEED
+       bool "Optimize for speed"
+       default n
+       help
+               This enables additional optmization and 
+               increases performance considerably at 
+               the expense of binary size.
+
+endmenu
index e7918bda8036d35dc863fbde8f9d497d866595aa..9d1f381f9203fddf91c964e1d80b2ef5f8b4d262 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=fdk-aac
-PKG_VERSION:=0.1.5
+PKG_VERSION:=0.1.5-20171030
 PKG_RELEASE:=1
 PKG_MAINTAINER:=Daniel Engberg <daniel.engberg.lists@pyret.net>
 PKG_LICENSE:=Fraunhofer-FDK-AAC-for-Android
@@ -17,12 +17,22 @@ PKG_LICENSE_FILES:=NOTICE
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=https://github.com/mstorsjo/fdk-aac/
 PKG_SOURCE_SUBDIR=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=74c1a2a4f831285cbd93ec1427f1670d3c5c5e52
+PKG_SOURCE_VERSION:=1e3515e03e2dbdbd48dacc31ef75d25c201a4c51
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_MIRROR_HASH:=d2ff3ca03842e96f3f18619f8a27ea03fb5d1e2266e4010cbb4803bf6e1fe62b
+PKG_MIRROR_HASH:=80ac4644e07d5101f8e17e73df3dba4c69e143f5f9054ac3a201fb44a5fec8d0
 
 PKG_FIXUP:=autoreconf
 
+PKG_CONFIG_DEPENDS:= CONFIG_FDK-AAC_OPTIMIZE_SPEED
+
+ifeq ($(CONFIG_FDK-AAC_OPTIMIZE_SPEED),y)
+       TARGET_CFLAGS := $(filter-out -Os,$(TARGET_CFLAGS))
+       TARGET_CFLAGS += $(TARGET_CFLAGS) -O2 -flto
+       TARGET_CXXFLAGS := $(filter-out -Os,$(TARGET_CXXFLAGS))
+       TARGET_CXXFLAGS += $(TARGET_CXXFLAGS) -O2 -flto
+       TARGET_LDFLAGS += $(TARGET_LDFLAGS) -flto
+endif
+
 include $(INCLUDE_DIR)/package.mk
 
 define Package/fdk-aac
@@ -37,6 +47,10 @@ define Package/fdk-aac/description
   Port of the Fraunhofer FDK AAC Codec Library for Android
 endef
 
+define Package/fdk-aac/config
+       source "$(SOURCE)/Config.in"
+endef
+
 define Package/fdk-aac/install 
        $(INSTALL_DIR) $(1)/usr/lib/
        $(CP) $(PKG_BUILD_DIR)/.libs/*.so* $(1)/usr/lib/
diff --git a/sound/lame/Config.in b/sound/lame/Config.in
new file mode 100644 (file)
index 0000000..1e52519
--- /dev/null
@@ -0,0 +1,12 @@
+menu "Configuration"
+       depends on PACKAGE_lame-lib
+
+config LAME-LIB_OPTIMIZE_SPEED
+       bool "Optimize for speed"
+       default n
+       help
+               This enables additional experimental
+               optmization and increases performance 
+               considerably at the expense of binary size.
+
+endmenu
index f43b649018412a9c22d3ee057c45c61761377ae0..45cd14d4c3fc5dbf08158e0ebd7e6aead90c3223 100644 (file)
@@ -9,12 +9,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=lame
-PKG_VERSION:=3.99.5
-PKG_RELEASE:=2
+PKG_VERSION:=3.100
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@SF/lame
-PKG_HASH:=24346b4158e4af3bd9f2e194bb23eb473c75fb7377011523353196b19b9a23ff
+PKG_HASH:=ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e
 PKG_FIXUP:=autoreconf
 
 PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
@@ -22,6 +22,8 @@ PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
 PKG_LICENSE:=LGPL-2.0
 PKG_LICENSE_FILES:=COPYING LICENSE
 
+PKG_CONFIG_DEPENDS:= CONFIG_LAME-LIB_OPTIMIZE_SPEED
+
 include $(INCLUDE_DIR)/package.mk
 
 PKG_INSTALL=1
@@ -36,13 +38,17 @@ define Package/lame
 $(call Package/lame/Default)
   TITLE:=lame
   MENU:=1
-  DEPENDS += +libncurses
+  DEPENDS += +libncurses +lame-lib
 endef
 
 define Package/lame/description
 lame mp3 encoder
 endef
 
+define Package/lame-lib/config
+       source "$(SOURCE)/Config.in"
+endef
+
 define Package/lame-lib
 $(call Package/lame/Default)
   TITLE:=lame-lib
@@ -52,12 +58,17 @@ define Package/lame-lib/description
 lame mp3 encoder libs
 endef
 
-CONFIG_VARS+=NASM=no
-
 ifeq ($(ARCH),i386)
 TARGET_CFLAGS+=-msse
 endif
 
+ifeq ($(CONFIG_LAME-LIB_OPTIMIZE_SPEED),y)
+       TARGET_CFLAGS += $(TARGET_CFLAGS) -O3 -ffast-math
+       TARGET_CFLAGS := $(filter-out -Os,$(TARGET_CFLAGS))
+endif
+
+CONFIGURE_ARGS += --disable-gtktest --disable-static
+
 define Package/lame/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/lame $(1)/usr/bin/
diff --git a/sound/lame/patches/001-automake-compat.patch b/sound/lame/patches/001-automake-compat.patch
deleted file mode 100644 (file)
index 8857ad7..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
---- a/configure.in
-+++ b/configure.in
-@@ -393,7 +393,7 @@ CONFIG_MATH_LIB="${USE_LIBM}"
- dnl configure use of features
--AM_PATH_GTK(1.2.0, HAVE_GTK="yes", HAVE_GTK="no")
-+HAVE_GTK="no"
- dnl ElectricFence malloc debugging
- AC_MSG_CHECKING(use of ElectricFence malloc debugging)
---- a/frontend/Makefile.am
-+++ b/frontend/Makefile.am
-@@ -35,7 +35,7 @@ lame_SOURCES = lame_main.c $(common_sour
- mp3rtp_SOURCES = mp3rtp.c rtp.c $(common_sources)
- mp3x_SOURCES = mp3x.c gtkanal.c gpkplotting.c $(common_sources)
--CFLAGS = @CFLAGS@ @GTK_CFLAGS@ @FRONTEND_CFLAGS@ @SNDFILE_CFLAGS@
-+CFLAGS = @CFLAGS@ @FRONTEND_CFLAGS@ @SNDFILE_CFLAGS@
- LDFLAGS = @LDFLAGS@ @FRONTEND_LDFLAGS@ @SNDFILE_LIBS@
- INCLUDES = -I$(top_srcdir)/libmp3lame -I$(top_srcdir)/include -I$(top_builddir)
---- a/frontend/Makefile.in
-+++ b/frontend/Makefile.in
-@@ -99,7 +99,7 @@ AUTOMAKE = @AUTOMAKE@
- AWK = @AWK@
- CC = @CC@
- CCDEPMODE = @CCDEPMODE@
--CFLAGS = @CFLAGS@ @GTK_CFLAGS@ @FRONTEND_CFLAGS@ @SNDFILE_CFLAGS@
-+CFLAGS = @CFLAGS@ @FRONTEND_CFLAGS@ @SNDFILE_CFLAGS@
- CONFIG_DEFS = @CONFIG_DEFS@
- CONFIG_MATH_LIB = @CONFIG_MATH_LIB@
- CPP = @CPP@
index c518430e9f41c426f36e4adec66bf97cba48c348..1b7ca4a01782b19b9928af6998c90eb3f4037000 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mpg123
-PKG_VERSION:=1.25.6
+PKG_VERSION:=1.25.7
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=@SF/mpg123
-PKG_HASH:=0f0458c9b87799bc2c9bf9455279cc4d305e245db43b51a39ef27afe025c5a8e
+PKG_HASH:=31b15ebcf26111b874732e07c8e60de5053ee555eea15fb70c657a4f9f0344f3
 PKG_MAINTAINER:=Zoltan HERPAI <wigyori@uid0.hu>
 
 PKG_FIXUP:=libtool
diff --git a/sound/opus-tools/Makefile b/sound/opus-tools/Makefile
new file mode 100644 (file)
index 0000000..1b5b9a1
--- /dev/null
@@ -0,0 +1,46 @@
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=opus-tools
+PKG_VERSION:=0.1.10
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://downloads.xiph.org/releases/opus/
+PKG_HASH:=a2357532d19471b70666e0e0ec17d514246d8b3cb2eb168f68bb0f6fd372b28c
+
+PKG_LICENSE:=BSD-2-Clause
+PKG_LICENSE_FILES:=COPYING
+PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>, \
+               Nicolas Thill <nico@openwrt.org>
+
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/opus-tools
+  SECTION:=sound
+  CATEGORY:=Sound
+  DEPENDS:=+libogg +libopus
+  TITLE:=OPUS Codec tools
+  URL:=http://opus-codec.org/
+endef
+
+define Package/opus-tools/description
+ This package provides command-line utilities to encode, inspect,
+ and decode .opus files.
+endef
+
+CONFIGURE_ARGS += \
+       --without-flac \
+
+define Package/opus-tools/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(CP) $(PKG_INSTALL_DIR)/usr/bin/opus{dec,enc,info} $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,opus-tools))
index 0b79b9936c6a9afc15c230499dbd24dc62e6094e..4b3487faa0158b44b8a112f0570c277349202faa 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=pulseaudio
-PKG_VERSION:=11.0
-PKG_RELEASE:=2
+PKG_VERSION:=11.1
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=http://freedesktop.org/software/pulseaudio/releases/
-PKG_HASH:=072305d4018fc5e75bb1b45ee6b938fa52fc9fd27493bf327415ef89ed14c969
+PKG_SOURCE_URL:=https://freedesktop.org/software/pulseaudio/releases/
+PKG_HASH:=f2521c525a77166189e3cb9169f75c2ee2b82fa3fcf9476024fbc2c3a6c9cd9e
 PKG_LICENSE:=LGPL-2.1+
 PKG_LICENSE_FILES:=GPL LICENSE
 
index 934b55465976e52accdd9f872ced54015d3b3946..f2bad90ed94bdc5591dc4b14e0f35cb1c7bd320b 100644 (file)
@@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=sox
 PKG_VERSION:=14.4.2
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=@SF/sox
diff --git a/sound/sox/patches/020-reproducible-builds.patch b/sound/sox/patches/020-reproducible-builds.patch
new file mode 100644 (file)
index 0000000..f8d099a
--- /dev/null
@@ -0,0 +1,32 @@
+--- a/src/libsox.c
++++ b/src/libsox.c
+@@ -65,8 +65,6 @@ sox_version_info_t const * sox_version_i
+ #else
+         NULL,
+ #endif
+-        /* sox_time */
+-        __DATE__ " " __TIME__,
+         /* sox_distro */
+ #ifdef DISTRO
+         DISTRO,
+--- a/src/sox.h
++++ b/src/sox.h
+@@ -1321,7 +1321,6 @@ typedef struct sox_version_info_t {
+     sox_uint32_t version_code; /**< version number = 0x140400 */
+     char const * version;      /**< version string = sox_version(), for example, "14.4.0" */
+     char const * version_extra;/**< version extra info or null = "PACKAGE_EXTRA", for example, "beta" */
+-    char const * time;         /**< build time = "__DATE__ __TIME__", for example, "Jan  7 2010 03:31:50" */
+     char const * distro;       /**< distro or null = "DISTRO", for example, "Debian" */
+     char const * compiler;     /**< compiler info or null, for example, "msvc 160040219" */
+     char const * arch;         /**< arch, for example, "1248 48 44 L OMP" */
+--- a/src/sox.c
++++ b/src/sox.c
+@@ -1828,8 +1828,6 @@ static void display_SoX_version(FILE * f
+       info->version_extra ? info->version_extra : "");
+   if (sox_globals.verbosity > 3) {
+-    if (info->time)
+-      fprintf(file, "time:     %s\n", info->time);
+     if (info->distro)
+       fprintf(file, "issue:    %s\n", info->distro);
+ #if HAVE_SYS_UTSNAME_H
index 38e4f71832d1a11961bd4ba1bc295bbb26acd61d..8f4972a5f7d029dc9b7163c99c8ee05e1ff6d510 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=acpid
-PKG_VERSION:=2.0.27
+PKG_VERSION:=2.0.28
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@SF/acpid2 
-PKG_HASH:=820c223e53cc11d9d7229fb1ffc2c2205f1054082c80f83f5a4ec4df16d3a616
+PKG_HASH:=980c3a54b0d3f2fd49fd845a0584c5c2abeaab9e9ac09fcbb68686bbb57a7110
 PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
 PKG_LICENSE:=GPL-2.0
 PKG_LICENSE_FILES:=COPYING
index 415e058833df82be6ea7508d7a85bf4734b7077e..17a2d721b9744269b02664c4991880fe8f77da20 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=at
-PKG_VERSION:=3.1.16
-PKG_RELEASE:=2
+PKG_VERSION:=3.1.20
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.gz
 PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/a/at
-PKG_HASH:=cb9af59c6a54edce9536ba629841055409d1f89d8ae26494727a97141fb4d5c1
+PKG_HASH:=0871923cab73050b98ace020664eb2ddc1e669e4166b5abb64d864d02fcefab9
 
 PKG_LICENSE:=GPL-2.0+ GPL-3.0+ ISC
 PKG_LICENSE_FILES:=COPYING Copyright
diff --git a/utils/attendedsysupgrade-common/Makefile b/utils/attendedsysupgrade-common/Makefile
new file mode 100644 (file)
index 0000000..d1419ae
--- /dev/null
@@ -0,0 +1,56 @@
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=attendedsysupgrade-common
+PKG_VERSION:=0.1
+PKG_RELEASE:=2
+PKG_LICENSE:=GPL-2.0
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/attendedsysupgrade-common
+  SECTION:=utils
+  CATEGORY:=Base system
+  TITLE:=Common files neede by attendedsysupgrade packages
+  MAINTAINER:=Paul Spooren <paul@spooren.de>
+  DEPENDS:=+rpcd +rpcd-mod-rpcsys
+endef
+
+define Package/attendedsysupgrade-common/description
+       Common needed files for attendedsysupgrade tool
+
+       Manages dependencies and brings settings used by clients.
+
+       UCI options:
+
+       attendedsysupgrade.server.url
+       URL of compatible upgrade server [1]
+
+       attendedsysupgrade.client.upgrade_packages
+       Client should request image also if no new release but new packages upgrade are available.
+
+       attendedsysupgrade.client.advanced_mode
+       Offer advanced options like editing packages before request and show additional information.
+
+       attendedsysupgrade.client.auto_search
+       Tells the client to automattically search for upgrades
+       This can be done when opening luci or login in to console - depends on client.
+
+       [1]: https://github.com/aparcar/gsoc17-attended-sysupgrade
+endef
+
+define Build/Compile
+endef
+
+define Build/Configure
+endef
+
+define Package/attendedsysupgrade-common/install
+       $(INSTALL_DIR) $(1)/etc/uci-defaults/
+       $(INSTALL_BIN) ./files/attendedsysupgrade.defaults $(1)/etc/uci-defaults/attendedsysupgrade
+endef
+
+$(eval $(call BuildPackage,attendedsysupgrade-common))
diff --git a/utils/attendedsysupgrade-common/files/attendedsysupgrade.defaults b/utils/attendedsysupgrade-common/files/attendedsysupgrade.defaults
new file mode 100644 (file)
index 0000000..f7fb1eb
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+[ -e /etc/config/attendedsysupgrade ] && return 0
+
+touch /etc/config/attendedsysupgrade
+
+uci -q batch <<EOF
+set attendedsysupgrade.server=server
+set attendedsysupgrade.server.url='https://example.org'
+
+set attendedsysupgrade.client=client
+set attendedsysupgrade.client.upgrade_packages='1'
+set attendedsysupgrade.client.auto_search='0'
+set attendedsysupgrade.client.advanced_mode='0'
+
+commit attendedsysupgrade
+EOF
diff --git a/utils/auc/Makefile b/utils/auc/Makefile
new file mode 100644 (file)
index 0000000..fa8290d
--- /dev/null
@@ -0,0 +1,32 @@
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=auc
+PKG_VERSION:=0.0.8
+PKG_RELEASE=1
+PKG_LICENSE:=GPL-3.0
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/auc
+  SECTION:=base
+  CATEGORY:=Base system
+  TITLE:=Attended sysUpgrade CLI (EXPERIMENTAL)
+  DEPENDS:=+attendedsysupgrade-common +libblobmsg-json +libubox +libubus \
+           +libuci +libuclient +rpcd-mod-rpcsys
+endef
+
+define Package/auc/description
+   CLI client for attended-sysupgrade
+endef
+
+define Package/auc/install
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/auc $(1)/usr/sbin/
+endef
+
+$(eval $(call BuildPackage,auc))
diff --git a/utils/auc/src/CMakeLists.txt b/utils/auc/src/CMakeLists.txt
new file mode 100644 (file)
index 0000000..ce291a4
--- /dev/null
@@ -0,0 +1,12 @@
+cmake_minimum_required(VERSION 2.6)
+
+PROJECT(auc C)
+ADD_DEFINITIONS(-Os -ggdb -Wall --std=gnu99 -Wmissing-declarations)
+
+SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
+
+find_library(json NAMES json-c json)
+
+ADD_EXECUTABLE(auc auc.c)
+TARGET_LINK_LIBRARIES(auc uci ubox ubus uclient blobmsg_json ${json})
+INSTALL(TARGETS auc RUNTIME DESTINATION sbin)
diff --git a/utils/auc/src/auc.c b/utils/auc/src/auc.c
new file mode 100644 (file)
index 0000000..21c1346
--- /dev/null
@@ -0,0 +1,996 @@
+/*
+ * auc - attendedsysUpgrade CLI
+ * Copyright (C) 2017 Daniel Golle <daniel@makrotopia.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3
+ * as published by the Free Software Foundation
+ *
+ * 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.
+ */
+
+#define _GNU_SOURCE
+#define AUC_VERSION "0.0.8"
+
+#include <fcntl.h>
+#include <dlfcn.h>
+#include <glob.h>
+#include <stdio.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#include <unistd.h>
+
+#include <uci.h>
+#include <uci_blob.h>
+#include <json-c/json.h>
+#include <libubox/ulog.h>
+#include <libubox/list.h>
+#include <libubox/vlist.h>
+#include <libubox/blobmsg_json.h>
+#include <libubox/avl-cmp.h>
+#include <libubox/uclient.h>
+#include <libubox/uclient-utils.h>
+#include <libubus.h>
+
+#define REQ_TIMEOUT 15
+#define APIOBJ_CHECK "api/upgrade-check"
+#define APIOBJ_REQUEST "api/upgrade-request"
+
+static char user_agent[80];
+static char *serverurl;
+static int upgrade_packages;
+static struct ustream_ssl_ctx *ssl_ctx;
+static const struct ustream_ssl_ops *ssl_ops;
+static off_t out_bytes;
+static off_t out_len;
+static off_t out_offset;
+static bool cur_resume;
+static int output_fd = -1;
+static int retry, imagebuilder, building, ibready;
+static char *board_name = NULL;
+static char *target = NULL, *subtarget = NULL;
+static char *distribution = NULL, *version = NULL, *revision = NULL;
+static int uptodate;
+static char *filename = NULL;
+static int debug = 0;
+
+/*
+ * policy for ubus call system board
+ * see procd/system.c
+ */
+enum {
+       BOARD_KERNEL,
+       BOARD_HOSTNAME,
+       BOARD_SYSTEM,
+       BOARD_MODEL,
+       BOARD_BOARD_NAME,
+       BOARD_RELEASE,
+       __BOARD_MAX,
+};
+
+static const struct blobmsg_policy board_policy[__BOARD_MAX] = {
+       [BOARD_KERNEL] = { .name = "kernel", .type = BLOBMSG_TYPE_STRING },
+       [BOARD_HOSTNAME] = { .name = "hostname", .type = BLOBMSG_TYPE_STRING },
+       [BOARD_SYSTEM] = { .name = "system", .type = BLOBMSG_TYPE_STRING },
+       [BOARD_MODEL] = { .name = "model", .type = BLOBMSG_TYPE_STRING },
+       [BOARD_BOARD_NAME] = { .name = "board_name", .type = BLOBMSG_TYPE_STRING },
+       [BOARD_RELEASE] = { .name = "release", .type = BLOBMSG_TYPE_TABLE },
+};
+
+/*
+ * policy for release information in system board reply
+ * see procd/system.c
+ */
+enum {
+       RELEASE_DISTRIBUTION,
+       RELEASE_VERSION,
+       RELEASE_REVISION,
+       RELEASE_CODENAME,
+       RELEASE_TARGET,
+       RELEASE_DESCRIPTION,
+       __RELEASE_MAX,
+};
+
+static const struct blobmsg_policy release_policy[__RELEASE_MAX] = {
+       [RELEASE_DISTRIBUTION] = { .name = "distribution", .type = BLOBMSG_TYPE_STRING },
+       [RELEASE_VERSION] = { .name = "version", .type = BLOBMSG_TYPE_STRING },
+       [RELEASE_REVISION] = { .name = "revision", .type = BLOBMSG_TYPE_STRING },
+       [RELEASE_CODENAME] = { .name = "codename", .type = BLOBMSG_TYPE_STRING },
+       [RELEASE_TARGET] = { .name = "target", .type = BLOBMSG_TYPE_STRING },
+       [RELEASE_DESCRIPTION] = { .name = "description", .type = BLOBMSG_TYPE_STRING },
+};
+
+/*
+ * policy for packagelist
+ * see rpcd/sys.c
+ */
+enum {
+       PACKAGELIST_PACKAGES,
+       __PACKAGELIST_MAX,
+};
+
+static const struct blobmsg_policy packagelist_policy[__PACKAGELIST_MAX] = {
+       [PACKAGELIST_PACKAGES] = { .name = "packages", .type = BLOBMSG_TYPE_TABLE },
+};
+
+/*
+ * policy for upgrade_test
+ * see rpcd/sys.c
+ */
+enum {
+       UPGTEST_CODE,
+       UPGTEST_STDOUT,
+       __UPGTEST_MAX,
+};
+
+static const struct blobmsg_policy upgtest_policy[__UPGTEST_MAX] = {
+       [UPGTEST_CODE] = { .name = "code", .type = BLOBMSG_TYPE_INT32 },
+       [UPGTEST_STDOUT] = { .name = "stdout", .type = BLOBMSG_TYPE_STRING },
+};
+
+
+/*
+ * policy to extract version from upgrade-check response
+ */
+enum {
+       CHECK_VERSION,
+       CHECK_UPGRADES,
+       __CHECK_MAX,
+};
+
+static const struct blobmsg_policy check_policy[__CHECK_MAX] = {
+       [CHECK_VERSION] = { .name = "version", .type = BLOBMSG_TYPE_STRING },
+       [CHECK_UPGRADES] = { .name = "upgrades", .type = BLOBMSG_TYPE_TABLE },
+};
+
+/*
+ * policy for upgrade-request response
+ * parse download information for the ready image.
+ */
+enum {
+       IMAGE_REQHASH,
+       IMAGE_FILESIZE,
+       IMAGE_URL,
+       IMAGE_CHECKSUM,
+       IMAGE_FILES,
+       IMAGE_SYSUPGRADE,
+       __IMAGE_MAX,
+};
+
+static const struct blobmsg_policy image_policy[__IMAGE_MAX] = {
+       [IMAGE_REQHASH] = { .name = "request_hash", .type = BLOBMSG_TYPE_STRING },
+       [IMAGE_FILESIZE] = { .name = "filesize", .type = BLOBMSG_TYPE_INT32 },
+       [IMAGE_URL] = { .name = "url", .type = BLOBMSG_TYPE_STRING },
+       [IMAGE_CHECKSUM] = { .name = "checksum", .type = BLOBMSG_TYPE_STRING },
+       [IMAGE_FILES] = { .name = "files", .type = BLOBMSG_TYPE_STRING },
+       [IMAGE_SYSUPGRADE] = { .name = "sysupgrade", .type = BLOBMSG_TYPE_STRING },
+};
+
+/*
+ * load serverurl from UCI
+ */
+static int load_config() {
+       static struct uci_context *uci_ctx;
+       static struct uci_package *uci_attendedsysupgrade;
+       struct uci_section *uci_s;
+
+       uci_ctx = uci_alloc_context();
+       if (!uci_ctx)
+               return -1;
+
+       uci_ctx->flags &= ~UCI_FLAG_STRICT;
+
+       if (uci_load(uci_ctx, "attendedsysupgrade", &uci_attendedsysupgrade) ||
+           !uci_attendedsysupgrade) {
+               fprintf(stderr, "Failed to load attendedsysupgrade config\n");
+               return -1;
+       }
+
+       uci_s = uci_lookup_section(uci_ctx, uci_attendedsysupgrade, "server");
+       if (!uci_s) {
+               fprintf(stderr, "Failed to read server url from config\n");
+               return -1;
+       }
+       serverurl = strdup(uci_lookup_option_string(uci_ctx, uci_s, "url"));
+
+       uci_s = uci_lookup_section(uci_ctx, uci_attendedsysupgrade, "client");
+       if (!uci_s) {
+               fprintf(stderr, "Failed to read client config\n");
+               return -1;
+       }
+       upgrade_packages = atoi(uci_lookup_option_string(uci_ctx, uci_s, "upgrade_packages"));
+
+       uci_free_context(uci_ctx);
+
+       return 0;
+}
+
+
+/**
+ * UBUS response callbacks
+ */
+
+/*
+ * rpc-sys packagelist
+ * append packagelist response to blobbuf given in req->priv
+ */
+static void pkglist_cb(struct ubus_request *req, int type, struct blob_attr *msg) {
+       struct blob_buf *buf = (struct blob_buf *)req->priv;
+       struct blob_attr *tb[__PACKAGELIST_MAX];
+
+       blobmsg_parse(packagelist_policy, __PACKAGELIST_MAX, tb, blob_data(msg), blob_len(msg));
+
+       if (!tb[PACKAGELIST_PACKAGES]) {
+               fprintf(stderr, "No packagelist received\n");
+               return;
+       }
+
+       blobmsg_add_field(buf, BLOBMSG_TYPE_TABLE, "packages", blobmsg_data(tb[PACKAGELIST_PACKAGES]), blobmsg_data_len(tb[PACKAGELIST_PACKAGES]));
+};
+
+/*
+ * system board
+ * append append board information to blobbuf given in req->priv
+ * populate board and release global strings
+ */
+static void board_cb(struct ubus_request *req, int type, struct blob_attr *msg) {
+       struct blob_buf *buf = (struct blob_buf *)req->priv;
+       struct blob_attr *tb[__BOARD_MAX];
+       struct blob_attr *rel[__RELEASE_MAX];
+
+       blobmsg_parse(board_policy, __BOARD_MAX, tb, blob_data(msg), blob_len(msg));
+
+       if (!tb[BOARD_BOARD_NAME]) {
+               fprintf(stderr, "No board name received\n");
+               return;
+       }
+       board_name = strdup(blobmsg_get_string(tb[BOARD_BOARD_NAME]));
+
+       if (!tb[BOARD_RELEASE]) {
+               fprintf(stderr, "No release received\n");
+               return;
+       }
+
+       blobmsg_parse(release_policy, __RELEASE_MAX, rel,
+                       blobmsg_data(tb[BOARD_RELEASE]), blobmsg_data_len(tb[BOARD_RELEASE]));
+
+       if (!rel[RELEASE_TARGET]) {
+               fprintf(stderr, "No target received\n");
+               return;
+       }
+
+       target = strdup(blobmsg_get_string(rel[RELEASE_TARGET]));
+       subtarget = strchr(target, '/');
+       *subtarget++ = '\0';
+
+       distribution = strdup(blobmsg_get_string(rel[RELEASE_DISTRIBUTION]));
+       version = strdup(blobmsg_get_string(rel[RELEASE_VERSION]));
+       revision = strdup(blobmsg_get_string(rel[RELEASE_REVISION]));
+
+       blobmsg_add_string(buf, "distro", distribution);
+       blobmsg_add_string(buf, "target", target);
+       blobmsg_add_string(buf, "subtarget", subtarget);
+       blobmsg_add_string(buf, "version", version);
+}
+
+/*
+ * rpc-sys upgrade_test
+ * check if downloaded file is accepted by sysupgrade
+ */
+static void upgtest_cb(struct ubus_request *req, int type, struct blob_attr *msg) {
+       int *valid = (int *)req->priv;
+       struct blob_attr *tb[__UPGTEST_MAX];
+
+       blobmsg_parse(upgtest_policy, __UPGTEST_MAX, tb, blob_data(msg), blob_len(msg));
+
+       if (!tb[UPGTEST_CODE]) {
+               fprintf(stderr, "No sysupgrade test return code received\n");
+               return;
+       }
+
+       *valid = (blobmsg_get_u32(tb[UPGTEST_CODE]) == 0)?1:0;
+       if (*valid == 0)
+               fprintf(stderr, "%s", blobmsg_get_string(tb[UPGTEST_STDOUT]));
+};
+
+/**
+ * uclient stuff
+ */
+static int open_output_file(const char *path, uint64_t resume_offset)
+{
+       char *filename = NULL;
+       int flags;
+       int ret;
+
+       if (cur_resume)
+               flags = O_RDWR;
+       else
+               flags = O_WRONLY | O_EXCL;
+
+       flags |= O_CREAT;
+
+       filename = uclient_get_url_filename(path, "firmware.bin");
+
+       fprintf(stderr, "Writing to '%s'\n", filename);
+       ret = open(filename, flags, 0644);
+       if (ret < 0)
+               goto free;
+
+       if (resume_offset &&
+           lseek(ret, resume_offset, SEEK_SET) < 0) {
+               fprintf(stderr, "Failed to seek %"PRIu64" bytes in output file\n", resume_offset);
+               close(ret);
+               ret = -1;
+               goto free;
+       }
+
+       out_offset = resume_offset;
+       out_bytes += resume_offset;
+
+free:
+       free(filename);
+       return ret;
+}
+
+struct jsonblobber {
+       json_tokener *tok;
+       struct blob_buf *outbuf;
+};
+
+static void request_done(struct uclient *cl)
+{
+       struct jsonblobber *jsb = (struct jsonblobber *)cl->priv;
+       if (jsb) {
+               json_tokener_free(jsb->tok);
+               free(jsb);
+       };
+
+       uclient_disconnect(cl);
+       uloop_end();
+}
+
+static void header_done_cb(struct uclient *cl)
+{
+       enum {
+               H_RANGE,
+               H_LEN,
+               H_IBSTATUS,
+               H_IBQUEUEPOS,
+               __H_MAX
+       };
+       static const struct blobmsg_policy policy[__H_MAX] = {
+               [H_RANGE] = { .name = "content-range", .type = BLOBMSG_TYPE_STRING },
+               [H_LEN] = { .name = "content-length", .type = BLOBMSG_TYPE_STRING },
+               [H_IBSTATUS] = { .name = "x-imagebuilder-status", .type = BLOBMSG_TYPE_STRING },
+               [H_IBQUEUEPOS] = { .name = "x-build-queue-position", .type = BLOBMSG_TYPE_STRING },
+       };
+       struct blob_attr *tb[__H_MAX];
+       uint64_t resume_offset = 0, resume_end, resume_size;
+       char *ibstatus;
+       unsigned int queuepos = 0;
+
+       if (uclient_http_redirect(cl)) {
+               fprintf(stderr, "Redirected to %s on %s\n", cl->url->location, cl->url->host);
+
+               return;
+       }
+
+       if (cl->status_code == 204 && cur_resume) {
+               /* Resume attempt failed, try normal download */
+               cur_resume = false;
+               //init_request(cl);
+               return;
+       }
+
+       if (debug)
+               fprintf(stderr, "headers:\n%s\n", blobmsg_format_json_indent(cl->meta, true, 0));
+
+       blobmsg_parse(policy, __H_MAX, tb, blob_data(cl->meta), blob_len(cl->meta));
+
+       switch (cl->status_code) {
+       case 400:
+               request_done(cl);
+               break;
+       case 412:
+               fprintf(stderr, "target not found.\n");
+               request_done(cl);
+               break;
+       case 413:
+               fprintf(stderr, "image too big.\n");
+               request_done(cl);
+               break;
+       case 416:
+               fprintf(stderr, "File download already fully retrieved; nothing to do.\n");
+               request_done(cl);
+               break;
+       case 422:
+               fprintf(stderr, "unknown package requested.\n");
+               request_done(cl);
+               break;
+       case 501:
+               fprintf(stderr, "ImageBuilder didn't produce sysupgrade file.\n");
+               request_done(cl);
+               break;
+       case 204:
+               fprintf(stderr, "system is up to date.\n");
+               uptodate=1;
+               break;
+       case 206:
+               if (!cur_resume) {
+                       fprintf(stderr, "Error: Partial content received, full content requested\n");
+                       request_done(cl);
+                       break;
+               }
+
+               if (!tb[H_RANGE]) {
+                       fprintf(stderr, "Content-Range header is missing\n");
+                       break;
+               }
+
+               if (sscanf(blobmsg_get_string(tb[H_RANGE]),
+                          "bytes %"PRIu64"-%"PRIu64"/%"PRIu64,
+                          &resume_offset, &resume_end, &resume_size) != 3) {
+                       fprintf(stderr, "Content-Range header is invalid\n");
+                       break;
+               }
+       case 202:
+               if (!tb[H_IBSTATUS])
+                       break;
+
+               ibstatus = blobmsg_get_string(tb[H_IBSTATUS]);
+
+               if (!strncmp(ibstatus, "queue", 6)) {
+                       if (!imagebuilder) {
+                               fprintf(stderr, "server is dispatching build job\n");
+                               imagebuilder=1;
+                       } else {
+                               if (tb[H_IBQUEUEPOS]) {
+                                       queuepos = atoi(blobmsg_get_string(tb[H_IBQUEUEPOS]));
+                                       fprintf(stderr, "build is in queue position %u.\n", queuepos);
+                               }
+                       }
+                       retry=1;
+               } else if (!strncmp(ibstatus, "building", 9)) {
+                       if (!building) {
+                               fprintf(stderr, "server is now building image...\n");
+                               building=1;
+                       }
+                       retry=1;
+               } else if (!strncmp(ibstatus, "initialize", 11)) {
+                       if (!ibready) {
+                               fprintf(stderr, "server is setting up ImageBuilder...\n");
+                               ibready=1;
+                       }
+                       retry=1;
+               } else {
+                       fprintf(stderr, "unrecognized remote imagebuilder status '%s'\n", ibstatus);
+               }
+               // fall through
+       case 200:
+               if (cl->priv)
+                       break;
+
+               if (tb[H_LEN])
+                       out_len = strtoul(blobmsg_get_string(tb[H_LEN]), NULL, 10);
+
+               output_fd = open_output_file(cl->url->location, resume_offset);
+               if (output_fd < 0) {
+                       perror("Cannot open output file");
+                       request_done(cl);
+               }
+               break;
+
+       default:
+               fprintf(stderr, "HTTP error %d\n", cl->status_code);
+               request_done(cl);
+               break;
+       }
+}
+
+static void read_data_cb(struct uclient *cl)
+{
+       char buf[256];
+       int len;
+       json_object *jsobj;
+       struct blob_buf *outbuf = NULL;
+       json_tokener *tok = NULL;
+       struct jsonblobber *jsb = (struct jsonblobber *)cl->priv;
+
+       if (!jsb) {
+               while (1) {
+                       len = uclient_read(cl, buf, sizeof(buf));
+                       if (!len)
+                               return;
+
+                       out_bytes += len;
+                       write(output_fd, buf, len);
+               }
+               return;
+       }
+
+       outbuf = jsb->outbuf;
+       tok = jsb->tok;
+
+       while (1) {
+               len = uclient_read(cl, buf, sizeof(buf));
+               if (!len)
+                       break;
+
+               out_bytes += len;
+
+               jsobj = json_tokener_parse_ex(tok, buf, len);
+
+               if (json_tokener_get_error(tok) == json_tokener_continue)
+                       continue;
+
+               if (json_tokener_get_error(tok) != json_tokener_success)
+                       break;
+
+               if (jsobj)
+               {
+                       if (json_object_get_type(jsobj) == json_type_object)
+                               blobmsg_add_object(outbuf, jsobj);
+
+                       json_object_put(jsobj);
+                       break;
+               }
+       }
+}
+
+static void eof_cb(struct uclient *cl)
+{
+       if (!cl->data_eof && !uptodate) {
+               fprintf(stderr, "Connection reset prematurely\n");
+       }
+       request_done(cl);
+}
+
+static void handle_uclient_error(struct uclient *cl, int code)
+{
+       const char *type = "Unknown error";
+
+       switch(code) {
+       case UCLIENT_ERROR_CONNECT:
+               type = "Connection failed";
+               break;
+       case UCLIENT_ERROR_TIMEDOUT:
+               type = "Connection timed out";
+               break;
+       case UCLIENT_ERROR_SSL_INVALID_CERT:
+               type = "Invalid SSL certificate";
+               break;
+       case UCLIENT_ERROR_SSL_CN_MISMATCH:
+               type = "Server hostname does not match SSL certificate";
+               break;
+       default:
+               break;
+       }
+
+       fprintf(stderr, "Connection error: %s\n", type);
+
+       request_done(cl);
+}
+
+static const struct uclient_cb check_cb = {
+       .header_done = header_done_cb,
+       .data_read = read_data_cb,
+       .data_eof = eof_cb,
+       .error = handle_uclient_error,
+};
+
+static int server_request(const char *url, struct blob_buf *inbuf, struct blob_buf *outbuf) {
+       struct uclient *ucl;
+       struct jsonblobber *jsb = NULL;
+       int rc = -1;
+       char *post_data;
+       out_offset = 0;
+       out_bytes = 0;
+       out_len = 0;
+
+       uloop_init();
+
+       ucl = uclient_new(url, NULL, &check_cb);
+       if (outbuf) {
+               jsb = malloc(sizeof(struct jsonblobber));
+               jsb->outbuf = outbuf;
+               jsb->tok = json_tokener_new();
+       };
+
+       uclient_http_set_ssl_ctx(ucl, ssl_ops, ssl_ctx, 1);
+       ucl->timeout_msecs = REQ_TIMEOUT * 1000;
+       ucl->priv = jsb;
+       rc = uclient_connect(ucl);
+       if (rc)
+               return rc;
+
+       rc = uclient_http_set_request_type(ucl, inbuf?"POST":"GET");
+       if (rc)
+               return rc;
+
+       uclient_http_reset_headers(ucl);
+       uclient_http_set_header(ucl, "User-Agent", user_agent);
+       if (inbuf) {
+               uclient_http_set_header(ucl, "Content-Type", "text/json");
+               post_data = blobmsg_format_json(inbuf->head, true);
+               uclient_write(ucl, post_data, strlen(post_data));
+       }
+       rc = uclient_request(ucl);
+       if (rc)
+               return rc;
+
+       uloop_run();
+       uloop_done();
+       uclient_free(ucl);
+
+       return 0;
+}
+
+/**
+ * ustream-ssl
+ */
+static int init_ustream_ssl(void) {
+       void *dlh;
+       glob_t gl;
+       int i;
+
+       dlh = dlopen("libustream-ssl.so", RTLD_LAZY | RTLD_LOCAL);
+       if (!dlh)
+               return -1;
+
+       ssl_ops = dlsym(dlh, "ustream_ssl_ops");
+       if (!ssl_ops)
+               return -1;
+
+       ssl_ctx = ssl_ops->context_new(false);
+
+       glob("/etc/ssl/certs/*.crt", 0, NULL, &gl);
+       if (!gl.gl_pathc)
+               return -2;
+
+       for (i = 0; i < gl.gl_pathc; i++)
+               ssl_ops->context_add_ca_crt_file(ssl_ctx, gl.gl_pathv[i]);
+
+       return 0;
+}
+
+/**
+ * use busybox md5sum (from jow's luci-ng)
+ */
+static char *md5sum(const char *file) {
+       pid_t pid;
+       int fds[2];
+       static char md5[33];
+
+       if (pipe(fds))
+               return NULL;
+
+       switch ((pid = fork()))
+       {
+       case -1:
+               return NULL;
+
+       case 0:
+               uloop_done();
+
+               dup2(fds[1], 1);
+
+               close(0);
+               close(2);
+               close(fds[0]);
+               close(fds[1]);
+
+               if (execl("/bin/busybox", "/bin/busybox", "md5sum", file, NULL));
+                       return NULL;
+
+               break;
+
+       default:
+               memset(md5, 0, sizeof(md5));
+               read(fds[0], md5, 32);
+               waitpid(pid, NULL, 0);
+               close(fds[0]);
+               close(fds[1]);
+       }
+
+       return md5;
+}
+
+static int ask_user(void)
+{
+       fprintf(stderr, "Are you sure you want to continue the upgrade process? [N/y] ");
+       if (getchar() != 'y')
+               return -1;
+       return 0;
+}
+
+static void print_package_updates(struct blob_attr *upgrades) {
+       struct blob_attr *cur;
+       struct blob_attr *tb[2];
+       int rem;
+
+       static struct blobmsg_policy policy[2] = {
+               { .type = BLOBMSG_TYPE_STRING },
+               { .type = BLOBMSG_TYPE_STRING },
+       };
+
+       blobmsg_for_each_attr(cur, upgrades, rem) {
+               blobmsg_parse_array(policy, ARRAY_SIZE(policy), tb, blobmsg_data(cur), blobmsg_data_len(cur));
+               if (!tb[0] || !tb[1])
+                       continue;
+
+               fprintf(stdout, "\t%s (%s -> %s)\n", blobmsg_name(cur),
+                       blobmsg_get_string(tb[1]), blobmsg_get_string(tb[0]));
+       };
+}
+
+/* this main function is too big... todo: split */
+int main(int args, char *argv[]) {
+       unsigned char argc=1;
+       static struct blob_buf checkbuf, reqbuf, imgbuf, upgbuf;
+       struct ubus_context *ctx = ubus_connect(NULL);
+       uint32_t id;
+       int rc;
+       int queuepos, valid, use_get;
+       char url[256];
+       char *newversion = NULL;
+       struct blob_attr *tb[__IMAGE_MAX];
+       struct blob_attr *tbc[__CHECK_MAX];
+       unsigned int filesize;
+       char *checksum = NULL;
+       struct stat imgstat;
+
+       snprintf(user_agent, sizeof(user_agent), "%s (%s)", argv[0], AUC_VERSION);
+       fprintf(stdout, "%s\n", user_agent);
+
+       while (argc<args) {
+               if (!strncmp(argv[argc], "-h", 3) ||
+                   !strncmp(argv[argc], "--help", 7)) {
+                       fprintf(stdout, "%s: Attended sysUpgrade CLI client\n", argv[0]);
+                       fprintf(stdout, "Usage: auc [-d] [-h]\n");
+                       fprintf(stdout, " -d\tenable debugging output\n");
+                       fprintf(stdout, " -h\toutput help\n");
+                       return 0;
+               }
+               if (!strncmp(argv[argc], "-d", 3))
+                       debug = 1;
+               argc++;
+       };
+
+       if (!ctx) {
+               fprintf(stderr, "failed to connect to ubus.\n");
+               return -1;
+       }
+       if (load_config()) {
+               rc=-1;
+               goto freeubus;
+       }
+
+       if (chdir("/tmp")) {
+               rc=-1;
+               goto freeconfig;
+       }
+
+       rc = init_ustream_ssl();
+       if (rc == -2) {
+               fprintf(stderr, "No CA certificates loaded, please install ca-certificates\n");
+               rc=-1;
+               goto freessl;
+       }
+
+       if (rc || !ssl_ctx) {
+               fprintf(stderr, "SSL support not available, please install ustream-ssl\n");
+               rc=-1;
+               goto freessl;
+       }
+
+       blobmsg_buf_init(&checkbuf);
+       blobmsg_buf_init(&reqbuf);
+       blobmsg_buf_init(&imgbuf);
+       blobmsg_buf_init(&upgbuf);
+
+       if (ubus_lookup_id(ctx, "system", &id) ||
+           ubus_invoke(ctx, id, "board", NULL, board_cb, &checkbuf, 3000)) {
+               fprintf(stderr, "cannot request board info from procd\n");
+               rc=-1;
+               goto freebufs;
+       }
+
+       if (ubus_lookup_id(ctx, "rpc-sys", &id) ||
+           ubus_invoke(ctx, id, "packagelist", NULL, pkglist_cb, &checkbuf, 3000)) {
+               fprintf(stderr, "cannot request packagelist from rpcd\n");
+               rc=-1;
+               goto freeboard;
+       }
+
+       blobmsg_add_u32(&checkbuf, "upgrade_packages", upgrade_packages);
+
+       fprintf(stdout, "running %s %s %s on %s/%s (%s)\n", distribution,
+               version, revision, target, subtarget, board_name);
+
+       fprintf(stdout, "checking %s for release upgrade%s\n", serverurl,
+               upgrade_packages?" or updated packages":"");
+
+       blobmsg_add_string(&reqbuf, "distro", distribution);
+       blobmsg_add_string(&reqbuf, "target", target);
+       blobmsg_add_string(&reqbuf, "subtarget", subtarget);
+       blobmsg_add_string(&reqbuf, "board", board_name);
+
+       snprintf(url, sizeof(url), "%s/%s", serverurl, APIOBJ_CHECK);
+       uptodate=0;
+
+       do {
+               retry=0;
+               if (debug)
+                       fprintf(stderr, "requesting:\n%s\n", blobmsg_format_json_indent(checkbuf.head, true, 0));
+               if (server_request(url, &checkbuf, &reqbuf)) {
+                       fprintf(stderr, "failed to connect to server\n");
+                       rc=-1;
+                       goto freeboard;
+               };
+
+               if (retry)
+                       sleep(3);
+       } while(retry);
+
+       if (debug)
+               fprintf(stderr, "reply:\n%s\n", blobmsg_format_json_indent(reqbuf.head, true, 0));
+
+       blobmsg_parse(check_policy, __CHECK_MAX, tbc, blob_data(reqbuf.head), blob_len(reqbuf.head));
+
+       if (!tbc[CHECK_VERSION] && !tbc[CHECK_UPGRADES]) {
+               if (!uptodate) {
+                       fprintf(stderr, "server reply invalid.\n");
+                       rc=-1;
+                       goto freeboard;
+               }
+               rc=0;
+               goto freeboard;
+       }
+       if (tbc[CHECK_VERSION]) {
+               newversion = blobmsg_get_string(tbc[CHECK_VERSION]);
+               fprintf(stdout, "new %s release %s found.\n", distribution, newversion);
+       } else {
+               fprintf(stdout, "staying on %s release version %s\n", distribution, version);
+               blobmsg_add_string(&reqbuf, "version", version);
+       };
+
+       if (tbc[CHECK_UPGRADES]) {
+               fprintf(stdout, "package updates:\n");
+               print_package_updates(tbc[CHECK_UPGRADES]);
+       }
+
+       rc = ask_user();
+       if (rc)
+               goto freeboard;
+
+       snprintf(url, sizeof(url), "%s/%s", serverurl, APIOBJ_REQUEST);
+
+       imagebuilder = 0;
+       building = 0;
+       use_get = 0;
+
+       do {
+               retry = 0;
+
+               if (debug && !use_get)
+                       fprintf(stderr, "requesting:\n%s\n", blobmsg_format_json_indent(reqbuf.head, true, 0));
+
+               server_request(url, use_get?NULL:&reqbuf, &imgbuf);
+               blobmsg_parse(image_policy, __IMAGE_MAX, tb, blob_data(imgbuf.head), blob_len(imgbuf.head));
+
+               if (!use_get && tb[IMAGE_REQHASH]) {
+                       snprintf(url, sizeof(url), "%s/%s/%s", serverurl,
+                                APIOBJ_REQUEST,
+                                blobmsg_get_string(tb[IMAGE_REQHASH]));
+                       if (debug)
+                               fprintf(stderr, "polling via GET %s\n", url);
+
+                       retry=1;
+                       use_get=1;
+               }
+
+               if (retry) {
+                       blob_buf_free(&imgbuf);
+                       blobmsg_buf_init(&imgbuf);
+                       sleep(3);
+               }
+       } while(retry || queuepos);
+
+       if (debug)
+               fprintf(stderr, "reply:\n%s\n", blobmsg_format_json_indent(imgbuf.head, true, 0));
+
+       if (!tb[IMAGE_SYSUPGRADE]) {
+               fprintf(stderr, "no sysupgrade image returned\n");
+               rc=-1;
+               goto freeboard;
+       }
+       strncpy(url, blobmsg_get_string(tb[IMAGE_SYSUPGRADE]), sizeof(url));
+
+       if (!tb[IMAGE_FILESIZE]) {
+               fprintf(stderr, "no image size returned\n");
+               rc=-1;
+               goto freeboard;
+       }
+       filesize = blobmsg_get_u32(tb[IMAGE_FILESIZE]);
+
+       if (!tb[IMAGE_CHECKSUM]) {
+               fprintf(stderr, "no image checksum returned\n");
+               rc=-1;
+               goto freeboard;
+       }
+       checksum = blobmsg_get_string(tb[IMAGE_CHECKSUM]);
+       server_request(url, NULL, NULL);
+/* usign signature is not yet implemented! */
+//     strncat(url, ".sig", sizeof(url));
+//     server_request(url, NULL, NULL);
+       filename = uclient_get_url_filename(url, "firmware.bin");
+
+       if (stat(filename, &imgstat)) {
+               fprintf(stderr, "image download failed\n");
+               rc=-1;
+               goto freeboard;
+       }
+
+       if ((intmax_t)imgstat.st_size != filesize) {
+               fprintf(stderr, "file size mismatch\n");
+               unlink(filename);
+               rc=-1;
+               goto freeboard;
+       }
+
+       if (strncmp(checksum, md5sum(filename), 33)) {
+               fprintf(stderr, "image checksum mismatch\n");
+               unlink(filename);
+               rc=-1;
+               goto freeboard;
+       };
+
+       if (strcmp(filename, "firmware.bin")) {
+               if (rename(filename, "firmware.bin")) {
+                       fprintf(stderr, "can't rename to firmware.bin\n");
+                       unlink(filename);
+                       rc=-1;
+                       goto freeboard;
+               }
+       }
+
+       valid = 0;
+       ubus_invoke(ctx, id, "upgrade_test", NULL, upgtest_cb, &valid, 3000);
+       if (!valid) {
+               rc=-1;
+               goto freeboard;
+       }
+
+       blobmsg_add_u8(&upgbuf, "keep", 1);
+       fprintf(stdout, "invoking sysupgrade\n");
+       ubus_invoke(ctx, id, "upgrade_start", upgbuf.head, NULL, NULL, 3000);
+
+freeboard:
+       free(board_name);
+       free(target);
+       /* subtarget is a pointer within target, don't free */
+       free(distribution);
+       free(version);
+       free(revision);
+
+freebufs:
+       blob_buf_free(&checkbuf);
+       blob_buf_free(&reqbuf);
+       blob_buf_free(&imgbuf);
+       blob_buf_free(&upgbuf);
+
+freessl:
+       if (ssl_ctx)
+               ssl_ops->context_free(ssl_ctx);
+
+freeconfig:
+       free(serverurl);
+
+freeubus:
+       ubus_free(ctx);
+
+       return rc;
+}
index 9fa7660f78068979c85b835c39dcd6ef346cbbf5..c87027f1500ef45ce363694712936ce29a071a3a 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=avrdude
 PKG_VERSION:=6.3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@SAVANNAH/$(PKG_NAME)
diff --git a/utils/avrdude/patches/020-no-cpp-timestamps.patch b/utils/avrdude/patches/020-no-cpp-timestamps.patch
new file mode 100644 (file)
index 0000000..8427055
--- /dev/null
@@ -0,0 +1,21 @@
+Description: no CPP macro timestamps
+ Reporducible builds project support, see: 
+ http://wiki.debian.org/ReproducibleBuilds/TimestampsFromCPPMacros
+Author: Milan Kupcevic <milan@debian.org>
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/main.c
++++ b/main.c
+@@ -679,10 +679,10 @@
+    * Print out an identifying string so folks can tell what version
+    * they are running
+    */
+-  avrdude_message(MSG_NOTICE, "\n%s: Version %s, compiled on %s at %s\n"
++  avrdude_message(MSG_NOTICE, "\n%s: Version %s\n"
+                     "%sCopyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/\n"
+                     "%sCopyright (c) 2007-2014 Joerg Wunsch\n\n",
+-                    progname, version, __DATE__, __TIME__, progbuf, progbuf);
++                    progname, version, progbuf, progbuf);
+   avrdude_message(MSG_NOTICE, "%sSystem wide configuration file is \"%s\"\n",
+             progbuf, sys_config);
index 88b413afb3a1ac6af5a8829048f6124d6a3802d3..9978d4925ea4c0951c991db6b0dfa3c71b692efa 100644 (file)
@@ -7,15 +7,15 @@
 
 include $(TOPDIR)/rules.mk
 
-BASE_VERSION:=4.3
+BASE_VERSION:=4.4
 
 PKG_NAME:=bash
-PKG_VERSION:=$(BASE_VERSION).42
+PKG_VERSION:=$(BASE_VERSION).12
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(BASE_VERSION).tar.gz
 PKG_SOURCE_URL:=@GNU/bash
-PKG_HASH:=afc687a28e0e24dc21b988fa159ff9dbcf6b7caa92ade8645cc6d5605cd024d4
+PKG_HASH:=d86b3392c1202e8ff5a423b302e6284db7f8f435ea9f39b5b1b20fd3ac36dfcb
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BASE_VERSION)
 
 PKG_LICENSE:=GPL-3.0+
index 7efa97b363125e1ed47cbdd932d1936f2fc17c52..c3ab62364c4ed1425dc223b95e2a01330a65372d 100644 (file)
@@ -1,6 +1,8 @@
---- a/execute_cmd.c
-+++ b/execute_cmd.c
-@@ -2369,7 +2369,11 @@ execute_pipeline (command, asynchronous,
+Index: bash-4.4/execute_cmd.c
+===================================================================
+--- bash-4.4.orig/execute_cmd.c
++++ bash-4.4/execute_cmd.c
+@@ -2459,7 +2459,11 @@ execute_pipeline (command, asynchronous,
    /* If the `lastpipe' option is set with shopt, and job control is not
       enabled, execute the last element of non-async pipelines in the
       current shell environment. */
index 050e4763e1e3d13d26648682c8aaed87a4575513..fd0b6958f8ab1d9c662eb2180c29cce2ca9537a4 100644 (file)
@@ -1,6 +1,8 @@
---- a/configure
-+++ b/configure
-@@ -5430,8 +5430,7 @@ if test $opt_readline = yes; then
+Index: bash-4.4/configure
+===================================================================
+--- bash-4.4.orig/configure
++++ bash-4.4/configure
+@@ -5420,8 +5420,7 @@ if test $opt_readline = yes; then
                # static version specified as -llibname to override the
                # dynamic version
                case "${host_os}" in
                esac
        fi
  else
---- a/configure.ac
-+++ b/configure.ac
-@@ -578,8 +578,7 @@ if test $opt_readline = yes; then
+Index: bash-4.4/configure.ac
+===================================================================
+--- bash-4.4.orig/configure.ac
++++ bash-4.4/configure.ac
+@@ -573,8 +573,7 @@ if test $opt_readline = yes; then
                # static version specified as -llibname to override the
                # dynamic version
                case "${host_os}" in
diff --git a/utils/bash/patches/101-upstream-bash43-001.patch b/utils/bash/patches/101-upstream-bash43-001.patch
deleted file mode 100644 (file)
index 3231273..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-001
-
-Bug-Reported-by:       NBaH <nbah@sfr.fr>
-Bug-Reference-ID:      <ler0b5$iu9$1@speranza.aioe.org>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00092.html
-
-Bug-Description:
-
-A missing check for a valid option prevented `test -R' from working.  There
-is another problem that causes bash to look up the wrong variable name when
-processing the argument to `test -R'.
-
-Patch (apply with `patch -p0'):
-
---- a/test.c
-+++ b/test.c
-@@ -646,8 +646,8 @@ unary_test (op, arg)
-       return (v && invisible_p (v) == 0 && var_isset (v) ? TRUE : FALSE);
-     case 'R':
--      v = find_variable (arg);
--      return (v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v) ? TRUE : FALSE);
-+      v = find_variable_noref (arg);
-+      return ((v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v)) ? TRUE : FALSE);
-     }
-   /* We can't actually get here, but this shuts up gcc. */
-@@ -723,6 +723,7 @@ test_unop (op)
-     case 'o': case 'p': case 'r': case 's': case 't':
-     case 'u': case 'v': case 'w': case 'x': case 'z':
-     case 'G': case 'L': case 'O': case 'S': case 'N':
-+    case 'R':
-       return (1);
-     }
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 0
-+#define PATCHLEVEL 1
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/101-upstream-bash44-001.patch b/utils/bash/patches/101-upstream-bash44-001.patch
new file mode 100644 (file)
index 0000000..8481ed2
--- /dev/null
@@ -0,0 +1,36 @@
+Index: bash-4.4/lib/readline/history.c
+===================================================================
+--- bash-4.4.orig/lib/readline/history.c
++++ bash-4.4/lib/readline/history.c
+@@ -57,6 +57,8 @@ extern int errno;
+ /* How big to make the_history when we first allocate it. */
+ #define DEFAULT_HISTORY_INITIAL_SIZE  502
++#define MAX_HISTORY_INITIAL_SIZE      8192
++
+ /* The number of slots to increase the_history by. */
+ #define DEFAULT_HISTORY_GROW_SIZE 50
+@@ -307,7 +309,9 @@ add_history (string)
+       if (history_size == 0)
+       {
+         if (history_stifled && history_max_entries > 0)
+-          history_size = history_max_entries + 2;
++          history_size = (history_max_entries > MAX_HISTORY_INITIAL_SIZE)
++                              ? MAX_HISTORY_INITIAL_SIZE
++                              : history_max_entries + 2;
+         else
+           history_size = DEFAULT_HISTORY_INITIAL_SIZE;
+         the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENTRY *));
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 0
++#define PATCHLEVEL 1
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/102-upstream-bash43-002.patch b/utils/bash/patches/102-upstream-bash43-002.patch
deleted file mode 100644 (file)
index 35421e8..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-002
-
-Bug-Reported-by:       Moe Tunes <moetunes42@gmail.com>
-Bug-Reference-ID:      <53103F49.3070100@gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00086.html
-
-Bug-Description:
-
-A change to save state while running the DEBUG trap caused pipelines to hang
-on systems which need process group synchronization while building pipelines.
-
-Patch (apply with `patch -p0'):
-
---- a/trap.c
-+++ b/trap.c
-@@ -920,7 +920,8 @@ _run_trap_internal (sig, tag)
-       subst_assign_varlist = 0;
- #if defined (JOB_CONTROL)
--      save_pipeline (1);      /* XXX only provides one save level */
-+      if (sig != DEBUG_TRAP)  /* run_debug_trap does this */
-+      save_pipeline (1);      /* XXX only provides one save level */
- #endif
-       /* If we're in a function, make sure return longjmps come here, too. */
-@@ -940,7 +941,8 @@ _run_trap_internal (sig, tag)
-       trap_exit_value = last_command_exit_value;
- #if defined (JOB_CONTROL)
--      restore_pipeline (1);
-+      if (sig != DEBUG_TRAP)  /* run_debug_trap does this */
-+      restore_pipeline (1);
- #endif
-       subst_assign_varlist = save_subst_varlist;
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 1
-+#define PATCHLEVEL 2
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/102-upstream-bash44-002.patch b/utils/bash/patches/102-upstream-bash44-002.patch
new file mode 100644 (file)
index 0000000..c3da17a
--- /dev/null
@@ -0,0 +1,46 @@
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 1
++#define PATCHLEVEL 2
+ #endif /* _PATCHLEVEL_H_ */
+Index: bash-4.4/subst.c
+===================================================================
+--- bash-4.4.orig/subst.c
++++ bash-4.4/subst.c
+@@ -5931,6 +5931,7 @@ read_comsub (fd, quoted, rflag)
+   char *istring, buf[128], *bufp, *s;
+   int istring_index, istring_size, c, tflag, skip_ctlesc, skip_ctlnul;
+   ssize_t bufn;
++  int nullbyte;
+   istring = (char *)NULL;
+   istring_index = istring_size = bufn = tflag = 0;
+@@ -5938,6 +5939,8 @@ read_comsub (fd, quoted, rflag)
+   for (skip_ctlesc = skip_ctlnul = 0, s = ifs_value; s && *s; s++)
+     skip_ctlesc |= *s == CTLESC, skip_ctlnul |= *s == CTLNUL;
++  nullbyte = 0;
++
+   /* Read the output of the command through the pipe.  This may need to be
+      changed to understand multibyte characters in the future. */
+   while (1)
+@@ -5956,7 +5959,11 @@ read_comsub (fd, quoted, rflag)
+       if (c == 0)
+       {
+ #if 1
+-        internal_warning ("%s", _("command substitution: ignored null byte in input"));
++        if (nullbyte == 0)
++          {
++            internal_warning ("%s", _("command substitution: ignored null byte in input"));
++            nullbyte = 1;
++          }
+ #endif
+         continue;
+       }
diff --git a/utils/bash/patches/103-upstream-bash43-003.patch b/utils/bash/patches/103-upstream-bash43-003.patch
deleted file mode 100644 (file)
index 7c9e56b..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-003
-
-Bug-Reported-by:       Anatol Pomozov <anatol.pomozov@gmail.com>
-Bug-Reference-ID:      <CAOMFOmXy3mT2So5GQ5F-smCVArQuAeBwZ2QKzgCtMeXJoDeYOQ@mail.gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-readline/2014-03/msg00010.html
-
-Bug-Description:
-
-When in callback mode, some readline commands can cause readline to seg
-fault by passing invalid contexts to callback functions.
-
-Patch (apply with `patch -p0'):
-
---- a/lib/readline/readline.c
-+++ b/lib/readline/readline.c
-@@ -744,7 +744,8 @@ _rl_dispatch_callback (cxt)
-     r = _rl_subseq_result (r, cxt->oldmap, cxt->okey, (cxt->flags & KSEQ_SUBSEQ));
-   RL_CHECK_SIGNALS ();
--  if (r == 0)                 /* success! */
-+  /* We only treat values < 0 specially to simulate recursion. */
-+  if (r >= 0 || (r == -1 && (cxt->flags & KSEQ_SUBSEQ) == 0)) /* success! or failure! */
-     {
-       _rl_keyseq_chain_dispose ();
-       RL_UNSETSTATE (RL_STATE_MULTIKEY);
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 2
-+#define PATCHLEVEL 3
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/103-upstream-bash44-003.patch b/utils/bash/patches/103-upstream-bash44-003.patch
new file mode 100644 (file)
index 0000000..6d4dea3
--- /dev/null
@@ -0,0 +1,39 @@
+Index: bash-4.4/lib/glob/sm_loop.c
+===================================================================
+--- bash-4.4.orig/lib/glob/sm_loop.c
++++ bash-4.4/lib/glob/sm_loop.c
+@@ -330,6 +330,12 @@ PARSE_COLLSYM (p, vp)
+   for (pc = 0; p[pc]; pc++)
+     if (p[pc] == L('.') && p[pc+1] == L(']'))
+       break;
++   if (p[pc] == 0)
++    {
++      if (vp)
++      *vp = INVALID;
++      return (p + pc);
++    }
+    val = COLLSYM (p, pc);
+    if (vp)
+      *vp = val;
+@@ -483,6 +489,9 @@ BRACKMATCH (p, test, flags)
+       c = *p++;
+       c = FOLD (c);
++      if (c == L('\0'))
++      return ((test == L('[')) ? savep : (CHAR *)0);
++
+       if ((flags & FNM_PATHNAME) && c == L('/'))
+       /* [/] can never match when matching a pathname.  */
+       return (CHAR *)0;
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 2
++#define PATCHLEVEL 3
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/104-upstream-bash43-004.patch b/utils/bash/patches/104-upstream-bash43-004.patch
deleted file mode 100644 (file)
index 40ac35f..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-004
-
-Bug-Reported-by:       Daan van Rossum <daan@flash.uchicago.edu>
-Bug-Reference-ID:      <20140307072523.GA14250@flash.uchicago.edu>
-Bug-Reference-URL:     
-
-Bug-Description:
-
-The `.' command in vi mode cannot undo multi-key commands beginning with
-`c', `d', and `y' (command plus motion specifier).
-
-Patch (apply with `patch -p0'):
-
---- a/lib/readline/readline.c
-+++ b/lib/readline/readline.c
-@@ -965,7 +965,7 @@ _rl_dispatch_subseq (key, map, got_subse
- #if defined (VI_MODE)
-   if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap &&
-       key != ANYOTHERKEY &&
--      rl_key_sequence_length == 1 &&  /* XXX */
-+      _rl_dispatching_keymap == vi_movement_keymap &&
-       _rl_vi_textmod_command (key))
-     _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign);
- #endif
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 3
-+#define PATCHLEVEL 4
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/104-upstream-bash44-004.patch b/utils/bash/patches/104-upstream-bash44-004.patch
new file mode 100644 (file)
index 0000000..f1ebff6
--- /dev/null
@@ -0,0 +1,66 @@
+Index: bash-4.4/jobs.c
+===================================================================
+--- bash-4.4.orig/jobs.c
++++ bash-4.4/jobs.c
+@@ -453,6 +453,21 @@ cleanup_the_pipeline ()
+     discard_pipeline (disposer);
+ }
++void
++discard_last_procsub_child ()
++{
++  PROCESS *disposer;
++  sigset_t set, oset;
++
++  BLOCK_CHILD (set, oset);
++  disposer = last_procsub_child;
++  last_procsub_child = (PROCESS *)NULL;
++  UNBLOCK_CHILD (oset);
++
++  if (disposer)
++    discard_pipeline (disposer);
++}
++
+ struct pipeline_saver *
+ alloc_pipeline_saver ()
+ {
+Index: bash-4.4/jobs.h
+===================================================================
+--- bash-4.4.orig/jobs.h
++++ bash-4.4/jobs.h
+@@ -190,6 +190,7 @@ extern JOB **jobs;
+ extern void making_children __P((void));
+ extern void stop_making_children __P((void));
+ extern void cleanup_the_pipeline __P((void));
++extern void discard_last_procsub_child __P((void));
+ extern void save_pipeline __P((int));
+ extern PROCESS *restore_pipeline __P((int));
+ extern void start_pipeline __P((void));
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 3
++#define PATCHLEVEL 4
+ #endif /* _PATCHLEVEL_H_ */
+Index: bash-4.4/subst.c
+===================================================================
+--- bash-4.4.orig/subst.c
++++ bash-4.4/subst.c
+@@ -5808,10 +5808,7 @@ process_substitute (string, open_for_rea
+     {
+ #if defined (JOB_CONTROL)
+       if (last_procsub_child)
+-      {
+-        discard_pipeline (last_procsub_child);
+-        last_procsub_child = (PROCESS *)NULL;
+-      }
++      discard_last_procsub_child ();
+       last_procsub_child = restore_pipeline (0);
+ #endif
diff --git a/utils/bash/patches/105-upstream-bash43-005.patch b/utils/bash/patches/105-upstream-bash43-005.patch
deleted file mode 100644 (file)
index 1cc5473..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-005
-
-Bug-Reported-by:       David Sines <dave.gma@googlemail.com>
-Bug-Reference-ID:      <CAO3BAa_CK_Rgkhdfzs+NJ4KFYdB9qW3pvXQK0xLCi6GMmDU8bw@mail.gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00037.html
-
-Bug-Description:
-
-When in Posix mode, bash did not correctly interpret the ANSI-C-style
-$'...' quoting mechanism when performing pattern substitution word
-expansions within double quotes.
-
-Patch (apply with `patch -p0'):
-
---- a/parse.y
-+++ b/parse.y
-@@ -3398,7 +3398,7 @@ parse_matched_pair (qc, open, close, len
-          within a double-quoted ${...} construct "an even number of
-          unescaped double-quotes or single-quotes, if any, shall occur." */
-       /* This was changed in Austin Group Interp 221 */
--      if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'')
-+      if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'')
-       continue;
-       /* Could also check open == '`' if we want to parse grouping constructs
---- a/y.tab.c
-+++ b/y.tab.c
-@@ -5710,7 +5710,7 @@ parse_matched_pair (qc, open, close, len
-          within a double-quoted ${...} construct "an even number of
-          unescaped double-quotes or single-quotes, if any, shall occur." */
-       /* This was changed in Austin Group Interp 221 */
--      if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'')
-+      if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'')
-       continue;
-       /* Could also check open == '`' if we want to parse grouping constructs
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 4
-+#define PATCHLEVEL 5
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/105-upstream-bash44-005.patch b/utils/bash/patches/105-upstream-bash44-005.patch
new file mode 100644 (file)
index 0000000..f9fb018
--- /dev/null
@@ -0,0 +1,29 @@
+Index: bash-4.4/builtins/evalstring.c
+===================================================================
+--- bash-4.4.orig/builtins/evalstring.c
++++ bash-4.4/builtins/evalstring.c
+@@ -104,12 +104,9 @@ should_suppress_fork (command)
+         running_trap == 0 &&
+         *bash_input.location.string == '\0' &&
+         command->type == cm_simple &&
+-#if 0
+         signal_is_trapped (EXIT_TRAP) == 0 &&
+         signal_is_trapped (ERROR_TRAP) == 0 &&
+-#else
+         any_signals_trapped () < 0 &&
+-#endif
+         command->redirects == 0 && command->value.Simple->redirects == 0 &&
+         ((command->flags & CMD_TIME_PIPELINE) == 0) &&
+         ((command->flags & CMD_INVERT_RETURN) == 0));
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 4
++#define PATCHLEVEL 5
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/106-upstream-bash43-006.patch b/utils/bash/patches/106-upstream-bash43-006.patch
deleted file mode 100644 (file)
index c5f52b1..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-006
-
-Bug-Reported-by:       Eduardo A . Bustamante Lopez <dualbus@gmail.com>
-Bug-Reference-ID:      <20140228170013.GA16015@dualbus.me>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00091.html
-
-Bug-Description:
-
-A shell that started with job control active but was not interactive left
-the terminal in the wrong process group when exiting, causing its parent
-shell to get a stop signal when it attempted to read from the terminal.
-
-Patch (apply with `patch -p0'):
-
---- a/jobs.c
-+++ b/jobs.c
-@@ -4374,7 +4374,7 @@ without_job_control ()
- void
- end_job_control ()
- {
--  if (interactive_shell)              /* XXX - should it be interactive? */
-+  if (interactive_shell || job_control)               /* XXX - should it be just job_control? */
-     {
-       terminate_stopped_jobs ();
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 5
-+#define PATCHLEVEL 6
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/106-upstream-bash44-006.patch b/utils/bash/patches/106-upstream-bash44-006.patch
new file mode 100644 (file)
index 0000000..a232bff
--- /dev/null
@@ -0,0 +1,37 @@
+Index: bash-4.4/builtins/pushd.def
+===================================================================
+--- bash-4.4.orig/builtins/pushd.def
++++ bash-4.4/builtins/pushd.def
+@@ -365,7 +365,7 @@ popd_builtin (list)
+       break;
+     }
+-  if (which > directory_list_offset || (directory_list_offset == 0 && which == 0))
++  if (which > directory_list_offset || (which < -directory_list_offset) || (directory_list_offset == 0 && which == 0))
+     {
+       pushd_error (directory_list_offset, which_word ? which_word : "");
+       return (EXECUTION_FAILURE);
+@@ -387,6 +387,11 @@ popd_builtin (list)
+        remove that directory from the list and shift the remainder
+        of the list into place. */
+       i = (direction == '+') ? directory_list_offset - which : which;
++      if (i < 0 || i > directory_list_offset)
++      {
++        pushd_error (directory_list_offset, which_word ? which_word : "");
++        return (EXECUTION_FAILURE);
++      }
+       free (pushd_directory_list[i]);
+       directory_list_offset--;
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 5
++#define PATCHLEVEL 6
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/107-upstream-bash43-007.patch b/utils/bash/patches/107-upstream-bash43-007.patch
deleted file mode 100644 (file)
index 8578bd4..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-007
-
-Bug-Reported-by:       geir.hauge@gmail.com
-Bug-Reference-ID:      <20140318093650.B181C1C5B0B@gina.itea.ntnu.no>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00095.html
-
-Bug-Description:
-
-Using compound assignments for associative arrays like
-
-assoc=( [x]= [y]=bar )
-
-left the value corresponding to the key `x' NULL.  This caused subsequent
-lookups to interpret it as unset.
-
-Patch (apply with `patch -p0'):
-
---- a/arrayfunc.c
-+++ b/arrayfunc.c
-@@ -597,6 +597,11 @@ assign_compound_array_list (var, nlist,
-       if (assoc_p (var))
-       {
-         val = expand_assignment_string_to_string (val, 0);
-+        if (val == 0)
-+          {
-+            val = (char *)xmalloc (1);
-+            val[0] = '\0';    /* like do_assignment_internal */
-+          }
-         free_val = 1;
-       }
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 6
-+#define PATCHLEVEL 7
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/107-upstream-bash44-007.patch b/utils/bash/patches/107-upstream-bash44-007.patch
new file mode 100644 (file)
index 0000000..3e2973d
--- /dev/null
@@ -0,0 +1,100 @@
+Index: bash-4.4/bashline.c
+===================================================================
+--- bash-4.4.orig/bashline.c
++++ bash-4.4/bashline.c
+@@ -142,7 +142,7 @@ static int executable_completion __P((co
+ static rl_icppfunc_t *save_directory_hook __P((void));
+ static void restore_directory_hook __P((rl_icppfunc_t));
+-static int directory_exists __P((const char *));
++static int directory_exists __P((const char *, int));
+ static void cleanup_expansion_error __P((void));
+ static void maybe_make_readline_line __P((char *));
+@@ -3102,18 +3102,20 @@ restore_directory_hook (hookf)
+     rl_directory_rewrite_hook = hookf;
+ }
+-/* Check whether not the (dequoted) version of DIRNAME, with any trailing slash
+-   removed, exists. */
++/* Check whether not DIRNAME, with any trailing slash removed, exists.  If
++   SHOULD_DEQUOTE is non-zero, we dequote the directory name first. */
+ static int
+-directory_exists (dirname)
++directory_exists (dirname, should_dequote)
+      const char *dirname;
++     int should_dequote;
+ {
+   char *new_dirname;
+   int dirlen, r;
+   struct stat sb;
+-  /* First, dequote the directory name */
+-  new_dirname = bash_dequote_filename ((char *)dirname, rl_completion_quote_character);
++  /* We save the string and chop the trailing slash because stat/lstat behave
++     inconsistently if one is present. */
++  new_dirname = should_dequote ? bash_dequote_filename ((char *)dirname, rl_completion_quote_character) : savestring (dirname);
+   dirlen = STRLEN (new_dirname);
+   if (new_dirname[dirlen - 1] == '/')
+     new_dirname[dirlen - 1] = '\0';
+@@ -3145,7 +3147,7 @@ bash_filename_stat_hook (dirname)
+   else if (t = mbschr (local_dirname, '`'))   /* XXX */
+     should_expand_dirname = '`';
+-  if (should_expand_dirname && directory_exists (local_dirname))
++  if (should_expand_dirname && directory_exists (local_dirname, 0))
+     should_expand_dirname = 0;
+   
+   if (should_expand_dirname)  
+@@ -3155,7 +3157,7 @@ bash_filename_stat_hook (dirname)
+        have to worry about restoring this setting. */
+       global_nounset = unbound_vars_is_error;
+       unbound_vars_is_error = 0;
+-      wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_COMPLETE);      /* does the right thing */
++      wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_NOPROCSUB|W_COMPLETE);  /* does the right thing */
+       unbound_vars_is_error = global_nounset;
+       if (wl)
+       {
+@@ -3244,13 +3246,13 @@ bash_directory_completion_hook (dirname)
+       should_expand_dirname = '`';
+     }
+-  if (should_expand_dirname && directory_exists (local_dirname))
++  if (should_expand_dirname && directory_exists (local_dirname, 1))
+     should_expand_dirname = 0;
+   if (should_expand_dirname)  
+     {
+       new_dirname = savestring (local_dirname);
+-      wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_COMPLETE);      /* does the right thing */
++      wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_NOPROCSUB|W_COMPLETE);  /* does the right thing */
+       if (wl)
+       {
+         *dirname = string_list (wl);
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 6
++#define PATCHLEVEL 7
+ #endif /* _PATCHLEVEL_H_ */
+Index: bash-4.4/subst.c
+===================================================================
+--- bash-4.4.orig/subst.c
++++ bash-4.4/subst.c
+@@ -9458,6 +9458,10 @@ add_twochars:
+               tword->flags |= word->flags & (W_ASSIGNARG|W_ASSIGNRHS);        /* affects $@ */
+             if (word->flags & W_COMPLETE)
+               tword->flags |= W_COMPLETE;     /* for command substitutions */
++            if (word->flags & W_NOCOMSUB)
++              tword->flags |= W_NOCOMSUB;
++            if (word->flags & W_NOPROCSUB)
++              tword->flags |= W_NOPROCSUB;
+             temp = (char *)NULL;
diff --git a/utils/bash/patches/108-upstream-bash43-008.patch b/utils/bash/patches/108-upstream-bash43-008.patch
deleted file mode 100644 (file)
index 2402021..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-008
-
-Bug-Reported-by:       Stephane Chazelas <stephane.chazelas@gmail.com>
-Bug-Reference-ID:      <20140318135901.GB22158@chaz.gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00098.html
-
-Bug-Description:
-
-Some extended glob patterns incorrectly matched filenames with a leading
-dot, regardless of the setting of the `dotglob' option.
-
-Patch (apply with `patch -p0'):
-
---- a/lib/glob/gmisc.c
-+++ b/lib/glob/gmisc.c
-@@ -210,6 +210,7 @@ extglob_pattern_p (pat)
-     case '+':
-     case '!':
-     case '@':
-+    case '?':
-       return (pat[1] == LPAREN);
-     default:
-       return 0;
---- a/lib/glob/glob.c
-+++ b/lib/glob/glob.c
-@@ -179,42 +179,50 @@ extglob_skipname (pat, dname, flags)
-      char *pat, *dname;
-      int flags;
- {
--  char *pp, *pe, *t;
--  int n, r;
-+  char *pp, *pe, *t, *se;
-+  int n, r, negate;
-+  negate = *pat == '!';
-   pp = pat + 2;
--  pe = pp + strlen (pp) - 1;  /*(*/
--  if (*pe != ')')
--    return 0;
--  if ((t = strchr (pp, '|')) == 0)    /* easy case first */
-+  se = pp + strlen (pp) - 1;          /* end of string */
-+  pe = glob_patscan (pp, se, 0);      /* end of extglob pattern (( */
-+  /* we should check for invalid extglob pattern here */
-+  /* if pe != se we have more of the pattern at the end of the extglob
-+     pattern. Check the easy case first ( */
-+  if (pe == se && *pe == ')' && (t = strchr (pp, '|')) == 0)
-     {
-       *pe = '\0';
-+#if defined (HANDLE_MULTIBYTE)
-+      r = mbskipname (pp, dname, flags);
-+#else
-       r = skipname (pp, dname, flags);        /*(*/
-+#endif
-       *pe = ')';
-       return r;
-     }
-+
-+  /* check every subpattern */
-   while (t = glob_patscan (pp, pe, '|'))
-     {
-       n = t[-1];
-       t[-1] = '\0';
-+#if defined (HANDLE_MULTIBYTE)
-+      r = mbskipname (pp, dname, flags);
-+#else
-       r = skipname (pp, dname, flags);
-+#endif
-       t[-1] = n;
-       if (r == 0)     /* if any pattern says not skip, we don't skip */
-         return r;
-       pp = t;
-     } /*(*/
--  if (pp == pe)               /* glob_patscan might find end of pattern */
-+  /* glob_patscan might find end of pattern */
-+  if (pp == se)
-     return r;
--  *pe = '\0';
--#  if defined (HANDLE_MULTIBYTE)
--  r = mbskipname (pp, dname, flags);  /*(*/
--#  else
--  r = skipname (pp, dname, flags);    /*(*/
--#  endif
--  *pe = ')';
--  return r;
-+  /* but if it doesn't then we didn't match a leading dot */
-+  return 0;
- }
- #endif
-@@ -277,20 +285,23 @@ wextglob_skipname (pat, dname, flags)
-      int flags;
- {
- #if EXTENDED_GLOB
--  wchar_t *pp, *pe, *t, n;
--  int r;
-+  wchar_t *pp, *pe, *t, n, *se;
-+  int r, negate;
-+  negate = *pat == L'!';
-   pp = pat + 2;
--  pe = pp + wcslen (pp) - 1;  /*(*/
--  if (*pe != L')')
--    return 0;
--  if ((t = wcschr (pp, L'|')) == 0)
-+  se = pp + wcslen (pp) - 1;  /*(*/
-+  pe = glob_patscan_wc (pp, se, 0);
-+
-+  if (pe == se && *pe == ')' && (t = wcschr (pp, L'|')) == 0)
-     {
-       *pe = L'\0';
-       r = wchkname (pp, dname); /*(*/
-       *pe = L')';
-       return r;
-     }
-+
-+  /* check every subpattern */
-   while (t = glob_patscan_wc (pp, pe, '|'))
-     {
-       n = t[-1];
-@@ -305,10 +316,8 @@ wextglob_skipname (pat, dname, flags)
-   if (pp == pe)               /* glob_patscan_wc might find end of pattern */
-     return r;
--  *pe = L'\0';
--  r = wchkname (pp, dname);   /*(*/
--  *pe = L')';
--  return r;
-+  /* but if it doesn't then we didn't match a leading dot */
-+  return 0;
- #else
-   return (wchkname (pat, dname));
- #endif
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 7
-+#define PATCHLEVEL 8
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/108-upstream-bash44-008.patch b/utils/bash/patches/108-upstream-bash44-008.patch
new file mode 100644 (file)
index 0000000..9503b05
--- /dev/null
@@ -0,0 +1,58 @@
+Index: bash-4.4/expr.c
+===================================================================
+--- bash-4.4.orig/expr.c
++++ bash-4.4/expr.c
+@@ -578,24 +578,23 @@ expcond ()
+   rval = cval = explor ();
+   if (curtok == QUES)         /* found conditional expr */
+     {
+-      readtok ();
+-      if (curtok == 0 || curtok == COL)
+-      evalerror (_("expression expected"));
+       if (cval == 0)
+       {
+         set_noeval = 1;
+         noeval++;
+       }
++      readtok ();
++      if (curtok == 0 || curtok == COL)
++      evalerror (_("expression expected"));
++
+       val1 = EXP_HIGHEST ();
+       if (set_noeval)
+       noeval--;
+       if (curtok != COL)
+       evalerror (_("`:' expected for conditional expression"));
+-      readtok ();
+-      if (curtok == 0)
+-      evalerror (_("expression expected"));
++
+       set_noeval = 0;
+       if (cval)
+       {
+@@ -603,7 +602,11 @@ expcond ()
+         noeval++;
+       }
++      readtok ();
++      if (curtok == 0)
++      evalerror (_("expression expected"));
+       val2 = expcond ();
++
+       if (set_noeval)
+       noeval--;
+       rval = cval ? val1 : val2;
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 7
++#define PATCHLEVEL 8
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/109-upstream-bash43-009.patch b/utils/bash/patches/109-upstream-bash43-009.patch
deleted file mode 100644 (file)
index f222bd6..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-009
-
-Bug-Reported-by:       Matthias Klose <doko@debian.org>
-Bug-Reference-ID:      <53346FC8.6090005@debian.org>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00171.html
-
-Bug-Description:
-
-There is a problem with unsigned sign extension when attempting to reallocate
-the input line when it is fewer than 3 characters long and there has been a
-history expansion.  The sign extension causes the shell to not reallocate the
-line, which results in a segmentation fault when it writes past the end.
-
-Patch (apply with `patch -p0'):
-
---- a/parse.y
-+++ b/parse.y
-@@ -2424,7 +2424,7 @@ shell_getc (remove_quoted_newline)
-        not already end in an EOF character.  */
-       if (shell_input_line_terminator != EOF)
-       {
--        if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_input_line_size - 3)
-+        if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > shell_input_line_size))
-           shell_input_line = (char *)xrealloc (shell_input_line,
-                                       1 + (shell_input_line_size += 2));
---- a/y.tab.c
-+++ b/y.tab.c
-@@ -4736,7 +4736,7 @@ shell_getc (remove_quoted_newline)
-        not already end in an EOF character.  */
-       if (shell_input_line_terminator != EOF)
-       {
--        if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_input_line_size - 3)
-+        if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > shell_input_line_size))
-           shell_input_line = (char *)xrealloc (shell_input_line,
-                                       1 + (shell_input_line_size += 2));
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 8
-+#define PATCHLEVEL 9
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/109-upstream-bash44-009.patch b/utils/bash/patches/109-upstream-bash44-009.patch
new file mode 100644 (file)
index 0000000..580d9a2
--- /dev/null
@@ -0,0 +1,67 @@
+Index: bash-4.4/lib/readline/history.c
+===================================================================
+--- bash-4.4.orig/lib/readline/history.c
++++ bash-4.4/lib/readline/history.c
+@@ -279,6 +279,7 @@ add_history (string)
+      const char *string;
+ {
+   HIST_ENTRY *temp;
++  int new_length;
+   if (history_stifled && (history_length == history_max_entries))
+     {
+@@ -295,13 +296,9 @@ add_history (string)
+       /* Copy the rest of the entries, moving down one slot.  Copy includes
+        trailing NULL.  */
+-#if 0
+-      for (i = 0; i < history_length; i++)
+-      the_history[i] = the_history[i + 1];
+-#else
+       memmove (the_history, the_history + 1, history_length * sizeof (HIST_ENTRY *));
+-#endif
++      new_length = history_length;
+       history_base++;
+     }
+   else
+@@ -315,7 +312,7 @@ add_history (string)
+         else
+           history_size = DEFAULT_HISTORY_INITIAL_SIZE;
+         the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENTRY *));
+-        history_length = 1;
++        new_length = 1;
+       }
+       else
+       {
+@@ -325,14 +322,15 @@ add_history (string)
+             the_history = (HIST_ENTRY **)
+               xrealloc (the_history, history_size * sizeof (HIST_ENTRY *));
+           }
+-        history_length++;
++        new_length = history_length + 1;
+       }
+     }
+   temp = alloc_history_entry ((char *)string, hist_inittime ());
+-  the_history[history_length] = (HIST_ENTRY *)NULL;
+-  the_history[history_length - 1] = temp;
++  the_history[new_length] = (HIST_ENTRY *)NULL;
++  the_history[new_length - 1] = temp;
++  history_length = new_length;
+ }
+ /* Change the time stamp of the most recent history entry to STRING. */
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 8
++#define PATCHLEVEL 9
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/110-upstream-bash43-010.patch b/utils/bash/patches/110-upstream-bash43-010.patch
deleted file mode 100644 (file)
index 22d9f1b..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-010
-
-Bug-Reported-by:       Albert Shih <Albert.Shih@obspm.fr>
-Bug-Reference-ID:      Wed, 5 Mar 2014 23:01:40 +0100
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00028.html
-
-Bug-Description:
-
-Patch (apply with `patch -p0'):
-
-This patch changes the behavior of programmable completion to compensate
-for two assumptions made by the bash-completion package.  Bash-4.3 changed
-to dequote the argument to programmable completion only under certain
-circumstances, to make the behavior of compgen more consistent when run
-from the command line -- closer to the behavior when run by a shell function
-run as part of programmable completion.  Bash-completion can pass quoted
-arguments to compgen when the original word to be completed was not quoted,
-expecting programmable completion to dequote the word before attempting
-completion.
-
-This patch fixes two cases:
-
-1.  An empty string that bash-completion passes to compgen as a quoted null
-    string ('').
-
-2.  An unquoted word that bash-completion quotes using single quotes or
-    backslashes before passing it to compgen.
-
-In these cases, since readline did not detect a quote character in the original
-word to be completed, bash-4.3 
-
---- a/externs.h
-+++ b/externs.h
-@@ -324,6 +324,7 @@ extern char *sh_un_double_quote __P((cha
- extern char *sh_backslash_quote __P((char *, const char *, int));
- extern char *sh_backslash_quote_for_double_quotes __P((char *));
- extern int sh_contains_shell_metas __P((char *));
-+extern int sh_contains_quotes __P((char *));
- /* declarations for functions defined in lib/sh/spell.c */
- extern int spname __P((char *, char *));
---- a/lib/sh/shquote.c
-+++ b/lib/sh/shquote.c
-@@ -311,3 +311,17 @@ sh_contains_shell_metas (string)
-   return (0);
- }
-+
-+int
-+sh_contains_quotes (string)
-+     char *string;
-+{
-+  char *s;
-+
-+  for (s = string; s && *s; s++)
-+    {
-+      if (*s == '\'' || *s == '"' || *s == '\\')
-+      return 1;
-+    }
-+  return 0;
-+}
---- a/pcomplete.c
-+++ b/pcomplete.c
-@@ -183,6 +183,7 @@ ITEMLIST it_variables = { LIST_DYNAMIC,
- COMPSPEC *pcomp_curcs;
- const char *pcomp_curcmd;
-+const char *pcomp_curtxt;
- #ifdef DEBUG
- /* Debugging code */
-@@ -753,6 +754,32 @@ pcomp_filename_completion_function (text
-            quoted strings. */
-         dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character);
-       }
-+      /* Intended to solve a mismatched assumption by bash-completion.  If
-+       the text to be completed is empty, but bash-completion turns it into
-+       a quoted string ('') assuming that this code will dequote it before
-+       calling readline, do the dequoting. */
-+      else if (iscompgen && iscompleting &&
-+             pcomp_curtxt && *pcomp_curtxt == 0 &&
-+             text && (*text == '\'' || *text == '"') && text[1] == text[0] && text[2] == 0 && 
-+             rl_filename_dequoting_function)
-+      dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character);
-+      /* Another mismatched assumption by bash-completion.  If compgen is being
-+               run as part of bash-completion, and the argument to compgen is not
-+               the same as the word originally passed to the programmable completion
-+               code, dequote the argument if it has quote characters.  It's an
-+               attempt to detect when bash-completion is quoting its filename
-+               argument before calling compgen. */
-+      /* We could check whether gen_shell_function_matches is in the call
-+       stack by checking whether the gen-shell-function-matches tag is in
-+       the unwind-protect stack, but there's no function to do that yet.
-+       We could simply check whether we're executing in a function by
-+       checking variable_context, and may end up doing that. */
-+      else if (iscompgen && iscompleting && rl_filename_dequoting_function &&
-+             pcomp_curtxt && text &&
-+             STREQ (pcomp_curtxt, text) == 0 &&
-+             variable_context &&
-+             sh_contains_quotes (text))       /* guess */
-+      dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character);
-       else
-       dfn = savestring (text);
-     }
-@@ -1522,7 +1549,7 @@ gen_progcomp_completions (ocmd, cmd, wor
-      COMPSPEC **lastcs;
- {
-   COMPSPEC *cs, *oldcs;
--  const char *oldcmd;
-+  const char *oldcmd, *oldtxt;
-   STRINGLIST *ret;
-   cs = progcomp_search (ocmd);
-@@ -1545,14 +1572,17 @@ gen_progcomp_completions (ocmd, cmd, wor
-   oldcs = pcomp_curcs;
-   oldcmd = pcomp_curcmd;
-+  oldtxt = pcomp_curtxt;
-   pcomp_curcs = cs;
-   pcomp_curcmd = cmd;
-+  pcomp_curtxt = word;
-   ret = gen_compspec_completions (cs, cmd, word, start, end, foundp);
-   pcomp_curcs = oldcs;
-   pcomp_curcmd = oldcmd;
-+  pcomp_curtxt = oldtxt;
-   /* We need to conditionally handle setting *retryp here */
-   if (retryp)
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 9
-+#define PATCHLEVEL 10
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/110-upstream-bash44-010.patch b/utils/bash/patches/110-upstream-bash44-010.patch
new file mode 100644 (file)
index 0000000..1636b76
--- /dev/null
@@ -0,0 +1,26 @@
+Index: bash-4.4/builtins/read.def
+===================================================================
+--- bash-4.4.orig/builtins/read.def
++++ bash-4.4/builtins/read.def
+@@ -181,7 +181,8 @@ read_builtin (list)
+      WORD_LIST *list;
+ {
+   register char *varname;
+-  int size, i, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2;
++  int size, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2;
++  volatile int i;
+   int input_is_tty, input_is_pipe, unbuffered_read, skip_ctlesc, skip_ctlnul;
+   int raw, edit, nchars, silent, have_timeout, ignore_delim, fd, lastsig, t_errno;
+   unsigned int tmsec, tmusec;
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 9
++#define PATCHLEVEL 10
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/111-upstream-bash43-011.patch b/utils/bash/patches/111-upstream-bash43-011.patch
deleted file mode 100644 (file)
index b4c181a..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-011
-
-Bug-Reported-by:       Egmont Koblinger <egmont@gmail.com>
-Bug-Reference-ID:      <CAGWcZk+bU5Jo1M+tutGvL-250UBE9DXjpeJVofYJSFcqFEVfMg@mail.gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00153.html
-
-Bug-Description:
-
-The signal handling changes to bash and readline (to avoid running any code
-in a signal handler context) cause the cursor to be placed on the wrong
-line of a multi-line command after a ^C interrupts editing.
-
-Patch (apply with `patch -p0'):
-
---- a/lib/readline/display.c
-+++ b/lib/readline/display.c
-@@ -2677,7 +2677,8 @@ _rl_clean_up_for_exit ()
- {
-   if (_rl_echoing_p)
-     {
--      _rl_move_vert (_rl_vis_botlin);
-+      if (_rl_vis_botlin > 0) /* minor optimization plus bug fix */
-+      _rl_move_vert (_rl_vis_botlin);
-       _rl_vis_botlin = 0;
-       fflush (rl_outstream);
-       rl_restart_output (1, 0);
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 10
-+#define PATCHLEVEL 11
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/111-upstream-bash44-011.patch b/utils/bash/patches/111-upstream-bash44-011.patch
new file mode 100644 (file)
index 0000000..b6ea030
--- /dev/null
@@ -0,0 +1,26 @@
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 10
++#define PATCHLEVEL 11
+ #endif /* _PATCHLEVEL_H_ */
+Index: bash-4.4/sig.c
+===================================================================
+--- bash-4.4.orig/sig.c
++++ bash-4.4/sig.c
+@@ -585,7 +585,8 @@ termsig_handler (sig)
+ #if defined (JOB_CONTROL)
+   if (sig == SIGHUP && (interactive || (subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB))))
+     hangup_all_jobs ();
+-  end_job_control ();
++  if ((subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB)) == 0)
++    end_job_control ();
+ #endif /* JOB_CONTROL */
+ #if defined (PROCESS_SUBSTITUTION)
diff --git a/utils/bash/patches/112-upstream-bash43-012.patch b/utils/bash/patches/112-upstream-bash43-012.patch
deleted file mode 100644 (file)
index 8fd2ea6..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-012
-
-Bug-Reported-by:       Eduardo A. Bustamante López<dualbus@gmail.com>
-Bug-Reference-ID:      <5346B54C.4070205@case.edu>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00051.html
-
-Bug-Description:
-
-When a SIGCHLD trap runs a command containing a shell builtin while
-a script is running `wait' to wait for all running children to complete,
-the SIGCHLD trap will not be run once for each child that terminates.
-
-Patch (apply with `patch -p0'):
-
---- a/jobs.c
-+++ b/jobs.c
-@@ -3597,6 +3597,7 @@ run_sigchld_trap (nchild)
-   unwind_protect_int (jobs_list_frozen);
-   unwind_protect_pointer (the_pipeline);
-   unwind_protect_pointer (subst_assign_varlist);
-+  unwind_protect_pointer (this_shell_builtin);
-   /* We have to add the commands this way because they will be run
-      in reverse order of adding.  We don't want maybe_set_sigchld_trap ()
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 11
-+#define PATCHLEVEL 12
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/112-upstream-bash44-012.patch b/utils/bash/patches/112-upstream-bash44-012.patch
new file mode 100644 (file)
index 0000000..83d239e
--- /dev/null
@@ -0,0 +1,106 @@
+Index: bash-4.4/patchlevel.h
+===================================================================
+--- bash-4.4.orig/patchlevel.h
++++ bash-4.4/patchlevel.h
+@@ -25,6 +25,6 @@
+    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
+    looks for to find the patch level (for the sccs version string). */
+-#define PATCHLEVEL 11
++#define PATCHLEVEL 12
+ #endif /* _PATCHLEVEL_H_ */
+Index: bash-4.4/subst.c
+===================================================================
+--- bash-4.4.orig/subst.c
++++ bash-4.4/subst.c
+@@ -2825,11 +2825,15 @@ list_string (string, separators, quoted)
+ /* Parse a single word from STRING, using SEPARATORS to separate fields.
+    ENDPTR is set to the first character after the word.  This is used by
+-   the `read' builtin.  This is never called with SEPARATORS != $IFS;
+-   it should be simplified.
++   the `read' builtin.
++   
++   This is never called with SEPARATORS != $IFS, and takes advantage of that.
+    XXX - this function is very similar to list_string; they should be
+        combined - XXX */
++
++#define islocalsep(c) (local_cmap[(unsigned char)(c)] != 0)
++
+ char *
+ get_word_from_string (stringp, separators, endptr)
+      char **stringp, *separators, **endptr;
+@@ -2837,6 +2841,7 @@ get_word_from_string (stringp, separator
+   register char *s;
+   char *current_word;
+   int sindex, sh_style_split, whitesep, xflags;
++  unsigned char local_cmap[UCHAR_MAX+1];      /* really only need single-byte chars here */
+   size_t slen;
+   if (!stringp || !*stringp || !**stringp)
+@@ -2846,20 +2851,23 @@ get_word_from_string (stringp, separator
+                                separators[1] == '\t' &&
+                                separators[2] == '\n' &&
+                                separators[3] == '\0';
+-  for (xflags = 0, s = ifs_value; s && *s; s++)
++  memset (local_cmap, '\0', sizeof (local_cmap));
++  for (xflags = 0, s = separators; s && *s; s++)
+     {
+       if (*s == CTLESC) xflags |= SX_NOCTLESC;
+       if (*s == CTLNUL) xflags |= SX_NOESCCTLNUL;
++      local_cmap[(unsigned char)*s] = 1;      /* local charmap of separators */
+     }
+   s = *stringp;
+   slen = 0;
+   /* Remove sequences of whitespace at the beginning of STRING, as
+-     long as those characters appear in IFS. */
+-  if (sh_style_split || !separators || !*separators)
++     long as those characters appear in SEPARATORS.  This happens if
++     SEPARATORS == $' \t\n' or if IFS is unset. */
++  if (sh_style_split || separators == 0)
+     {
+-      for (; *s && spctabnl (*s) && isifs (*s); s++);
++      for (; *s && spctabnl (*s) && islocalsep (*s); s++);
+       /* If the string is nothing but whitespace, update it and return. */
+       if (!*s)
+@@ -2878,9 +2886,9 @@ get_word_from_string (stringp, separator
+      This obeys the field splitting rules in Posix.2. */
+   sindex = 0;
+-  /* Don't need string length in ADVANCE_CHAR or string_extract_verbatim
+-     unless multibyte chars are possible. */
+-  slen = (MB_CUR_MAX > 1) ? STRLEN (s) : 1;
++  /* Don't need string length in ADVANCE_CHAR unless multibyte chars are
++     possible, but need it in string_extract_verbatim for bounds checking */
++  slen = STRLEN (s);
+   current_word = string_extract_verbatim (s, slen, &sindex, separators, xflags);
+   /* Set ENDPTR to the first character after the end of the word. */
+@@ -2899,19 +2907,19 @@ get_word_from_string (stringp, separator
+   /* Now skip sequences of space, tab, or newline characters if they are
+      in the list of separators. */
+-  while (s[sindex] && spctabnl (s[sindex]) && isifs (s[sindex]))
++  while (s[sindex] && spctabnl (s[sindex]) && islocalsep (s[sindex]))
+     sindex++;
+   /* If the first separator was IFS whitespace and the current character is
+      a non-whitespace IFS character, it should be part of the current field
+      delimiter, not a separate delimiter that would result in an empty field.
+      Look at POSIX.2, 3.6.5, (3)(b). */
+-  if (s[sindex] && whitesep && isifs (s[sindex]) && !spctabnl (s[sindex]))
++  if (s[sindex] && whitesep && islocalsep (s[sindex]) && !spctabnl (s[sindex]))
+     {
+       sindex++;
+       /* An IFS character that is not IFS white space, along with any adjacent
+        IFS white space, shall delimit a field. */
+-      while (s[sindex] && spctabnl (s[sindex]) && isifs (s[sindex]))
++      while (s[sindex] && spctabnl (s[sindex]) && islocalsep(s[sindex]))
+       sindex++;
+     }
diff --git a/utils/bash/patches/113-upstream-bash43-013.patch b/utils/bash/patches/113-upstream-bash43-013.patch
deleted file mode 100644 (file)
index 63c6c1e..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-013
-
-Bug-Reported-by:       <Trond.Endrestol@ximalas.info>
-Bug-Reference-ID:      <alpine.BSF.2.03.1404192114310.1973@enterprise.ximalas.info>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00069.html
-
-Bug-Description:
-
-Using reverse-i-search when horizontal scrolling is enabled does not redisplay
-the entire line containing the successful search results.
-
-Patch (apply with `patch -p0'):
---- a/lib/readline/display.c
-+++ b/lib/readline/display.c
-@@ -1637,7 +1637,7 @@ update_line (old, new, current_line, oma
-   /* If we are changing the number of invisible characters in a line, and
-      the spot of first difference is before the end of the invisible chars,
-      lendiff needs to be adjusted. */
--  if (current_line == 0 && !_rl_horizontal_scroll_mode &&
-+  if (current_line == 0 && /* !_rl_horizontal_scroll_mode && */
-       current_invis_chars != visible_wrap_offset)
-     {
-       if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
-@@ -1825,8 +1825,13 @@ update_line (old, new, current_line, oma
-             else
-               _rl_last_c_pos += bytes_to_insert;
-+            /* XXX - we only want to do this if we are at the end of the line
-+               so we move there with _rl_move_cursor_relative */
-             if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new)))
--              goto clear_rest_of_line;
-+              {
-+                _rl_move_cursor_relative (ne-new, new);
-+                goto clear_rest_of_line;
-+              }
-           }
-       }
-       /* Otherwise, print over the existing material. */
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 12
-+#define PATCHLEVEL 13
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/114-upstream-bash43-014.patch b/utils/bash/patches/114-upstream-bash43-014.patch
deleted file mode 100644 (file)
index 99e16b9..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-014
-
-Bug-Reported-by:       Greg Wooledge <wooledg@eeg.ccf.org>
-Bug-Reference-ID:      <20140418202123.GB7660@eeg.ccf.org>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/help-bash/2014-04/msg00004.html
-
-Bug-Description:
-
-Under certain circumstances, $@ is expanded incorrectly in contexts where
-word splitting is not performed.
-
-Patch (apply with `patch -p0'):
---- a/subst.c
-+++ b/subst.c
-@@ -3248,8 +3248,10 @@ cond_expand_word (w, special)
-   if (w->word == 0 || w->word[0] == '\0')
-     return ((char *)NULL);
-+  expand_no_split_dollar_star = 1;
-   w->flags |= W_NOSPLIT2;
-   l = call_expand_word_internal (w, 0, 0, (int *)0, (int *)0);
-+  expand_no_split_dollar_star = 0;
-   if (l)
-     {
-       if (special == 0)                       /* LHS */
-@@ -7847,6 +7849,10 @@ param_expand (string, sindex, quoted, ex
-        We also want to make sure that splitting is done no matter what --
-        according to POSIX.2, this expands to a list of the positional
-        parameters no matter what IFS is set to. */
-+      /* XXX - what to do when in a context where word splitting is not
-+       performed? Even when IFS is not the default, posix seems to imply
-+       that we behave like unquoted $* ?  Maybe we should use PF_NOSPLIT2
-+       here. */
-       temp = string_list_dollar_at (list, (pflags & PF_ASSIGNRHS) ? (quoted|Q_DOUBLE_QUOTES) : quoted);
-       tflag |= W_DOLLARAT;
-@@ -8816,6 +8822,7 @@ finished_with_string:
-   else
-     {
-       char *ifs_chars;
-+      char *tstring;
-       ifs_chars = (quoted_dollar_at || has_dollar_at) ? ifs_value : (char *)NULL;
-@@ -8830,11 +8837,36 @@ finished_with_string:
-        regardless of what else has happened to IFS since the expansion. */
-       if (split_on_spaces)
-       list = list_string (istring, " ", 1);   /* XXX quoted == 1? */
-+      /* If we have $@ (has_dollar_at != 0) and we are in a context where we
-+       don't want to split the result (W_NOSPLIT2), and we are not quoted,
-+       we have already separated the arguments with the first character of
-+       $IFS.  In this case, we want to return a list with a single word
-+       with the separator possibly replaced with a space (it's what other
-+       shells seem to do).
-+       quoted_dollar_at is internal to this function and is set if we are
-+       passed an argument that is unquoted (quoted == 0) but we encounter a
-+       double-quoted $@ while expanding it. */
-+      else if (has_dollar_at && quoted_dollar_at == 0 && ifs_chars && quoted == 0 && (word->flags & W_NOSPLIT2))
-+      {
-+        /* Only split and rejoin if we have to */
-+        if (*ifs_chars && *ifs_chars != ' ')
-+          {
-+            list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1);
-+            tstring = string_list (list);
-+          }
-+        else
-+          tstring = istring;
-+        tword = make_bare_word (tstring);
-+        if (tstring != istring)
-+          free (tstring);
-+        goto set_word_flags;
-+      }
-       else if (has_dollar_at && ifs_chars)
-       list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1);
-       else
-       {
-         tword = make_bare_word (istring);
-+set_word_flags:
-         if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (quoted_state == WHOLLY_QUOTED))
-           tword->flags |= W_QUOTED;
-         if (word->flags & W_ASSIGNMENT)
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 13
-+#define PATCHLEVEL 14
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/115-upstream-bash43-015.patch b/utils/bash/patches/115-upstream-bash43-015.patch
deleted file mode 100644 (file)
index ae8be2d..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-015
-
-Bug-Reported-by:       Clark Wang <dearvoid@gmail.com>
-Bug-Reference-ID:      <CADv8-og2TOSoabXeNVXVGaXN3tEMHnYVq1rwOLe5meaRPSGRig@mail.gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00095.html
-
-Bug-Description:
-
-When completing directory names, the directory name is dequoted twice.
-This causes problems for directories with single and double quotes in
-their names.
-
-Patch (apply with `patch -p0'):
---- a/bashline.c
-+++ b/bashline.c
-@@ -4167,9 +4167,16 @@ bash_directory_completion_matches (text)
-   int qc;
-   qc = rl_dispatching ? rl_completion_quote_character : 0;  
--  dfn = bash_dequote_filename ((char *)text, qc);
-+  /* If rl_completion_found_quote != 0, rl_completion_matches will call the
-+     filename dequoting function, causing the directory name to be dequoted
-+     twice. */
-+  if (rl_dispatching && rl_completion_found_quote == 0)
-+    dfn = bash_dequote_filename ((char *)text, qc);
-+  else
-+    dfn = (char *)text;
-   m1 = rl_completion_matches (dfn, rl_filename_completion_function);
--  free (dfn);
-+  if (dfn != text)
-+    free (dfn);
-   if (m1 == 0 || m1[0] == 0)
-     return m1;
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 14
-+#define PATCHLEVEL 15
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/116-upstream-bash43-016.patch b/utils/bash/patches/116-upstream-bash43-016.patch
deleted file mode 100644 (file)
index 3ce37f6..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-016
-
-Bug-Reported-by:       Pierre Gaston <pierre.gaston@gmail.com>
-Bug-Reference-ID:      <CAPSX3sTCD61k1VQLJ5r-LWzEt+e7Xc-fxXmwn2u8EA5gJJej8Q@mail.gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00100.html
-
-Bug-Description:
-
-An extended glob pattern containing a slash (`/') causes the globbing code
-to misinterpret it as a directory separator.
-
-Patch (apply with `patch -p0'):
---- a/lib/glob/glob.c
-+++ b/lib/glob/glob.c
-@@ -123,6 +123,8 @@ static char **glob_dir_to_array __P((cha
- extern char *glob_patscan __P((char *, char *, int));
- extern wchar_t *glob_patscan_wc __P((wchar_t *, wchar_t *, int));
-+extern char *glob_dirscan __P((char *, int));
-+
- /* Compile `glob_loop.c' for single-byte characters. */
- #define CHAR  unsigned char
- #define INT   int
-@@ -187,6 +189,9 @@ extglob_skipname (pat, dname, flags)
-   se = pp + strlen (pp) - 1;          /* end of string */
-   pe = glob_patscan (pp, se, 0);      /* end of extglob pattern (( */
-   /* we should check for invalid extglob pattern here */
-+  if (pe == 0)
-+    return 0;
-+
-   /* if pe != se we have more of the pattern at the end of the extglob
-      pattern. Check the easy case first ( */
-   if (pe == se && *pe == ')' && (t = strchr (pp, '|')) == 0)
-@@ -1015,7 +1020,7 @@ glob_filename (pathname, flags)
- {
-   char **result;
-   unsigned int result_size;
--  char *directory_name, *filename, *dname;
-+  char *directory_name, *filename, *dname, *fn;
-   unsigned int directory_len;
-   int free_dirname;                   /* flag */
-   int dflags;
-@@ -1031,6 +1036,18 @@ glob_filename (pathname, flags)
-   /* Find the filename.  */
-   filename = strrchr (pathname, '/');
-+#if defined (EXTENDED_GLOB)
-+  if (filename && extended_glob)
-+    {
-+      fn = glob_dirscan (pathname, '/');
-+#if DEBUG_MATCHING
-+      if (fn != filename)
-+      fprintf (stderr, "glob_filename: glob_dirscan: fn (%s) != filename (%s)\n", fn ? fn : "(null)", filename);
-+#endif
-+      filename = fn;
-+    }
-+#endif
-+
-   if (filename == NULL)
-     {
-       filename = pathname;
---- a/lib/glob/gmisc.c
-+++ b/lib/glob/gmisc.c
-@@ -42,6 +42,8 @@
- #define WLPAREN         L'('
- #define WRPAREN         L')'
-+extern char *glob_patscan __P((char *, char *, int));
-+
- /* Return 1 of the first character of WSTRING could match the first
-    character of pattern WPAT.  Wide character version. */
- int
-@@ -375,3 +377,34 @@ bad_bracket:
-   return matlen;
- }
-+
-+/* Skip characters in PAT and return the final occurrence of DIRSEP.  This
-+   is only called when extended_glob is set, so we have to skip over extglob
-+   patterns x(...) */
-+char *
-+glob_dirscan (pat, dirsep)
-+     char *pat;
-+     int dirsep;
-+{
-+  char *p, *d, *pe, *se;
-+
-+  d = pe = se = 0;
-+  for (p = pat; p && *p; p++)
-+    {
-+      if (extglob_pattern_p (p))
-+      {
-+        if (se == 0)
-+          se = p + strlen (p) - 1;
-+        pe = glob_patscan (p + 2, se, 0);
-+        if (pe == 0)
-+          continue;
-+        else if (*pe == 0)
-+          break;
-+        p = pe - 1;   /* will do increment above */
-+        continue;
-+      }
-+      if (*p ==  dirsep)
-+      d = p;
-+    }
-+  return d;
-+}
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 15
-+#define PATCHLEVEL 16
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/117-upstream-bash43-017.patch b/utils/bash/patches/117-upstream-bash43-017.patch
deleted file mode 100644 (file)
index 9c7eecc..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-017
-
-Bug-Reported-by:       Dan Douglas <ormaaj@gmail.com>
-Bug-Reference-ID:      <7781746.RhfoTROLxF@smorgbox>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-05/msg00026.html
-
-Bug-Description:
-
-The code that creates local variables should not clear the `invisible'
-attribute when returning an existing local variable.  Let the code that
-actually assigns a value clear it.
-
-Patch (apply with `patch -p0'):
---- a/variables.c
-+++ b/variables.c
-@@ -2197,10 +2197,7 @@ make_local_variable (name)
-   /* local foo; local foo;  is a no-op. */
-   old_var = find_variable (name);
-   if (old_var && local_p (old_var) && old_var->context == variable_context)
--    {
--      VUNSETATTR (old_var, att_invisible);    /* XXX */
--      return (old_var);
--    }
-+    return (old_var);
-   was_tmpvar = old_var && tempvar_p (old_var);
-   /* If we're making a local variable in a shell function, the temporary env
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 16
-+#define PATCHLEVEL 17
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/118-upstream-bash43-018.patch b/utils/bash/patches/118-upstream-bash43-018.patch
deleted file mode 100644 (file)
index 095ca93..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-018
-
-Bug-Reported-by:       Geir Hauge <geir.hauge@gmail.com>
-Bug-Reference-ID:      <CAO-BiTLOvfPXDypg61jcBausADrxUKJejakV2WTWP26cW0=rgA@mail.gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-05/msg00040.html
-
-Bug-Description:
-
-When assigning an array variable using the compound assignment syntax,
-but using `declare' with the rhs of the compound assignment quoted, the
-shell did not mark the variable as visible after successfully performing
-the assignment.
-
-Patch (apply with `patch -p0'):
---- a/arrayfunc.c
-+++ b/arrayfunc.c
-@@ -179,6 +179,7 @@ bind_array_var_internal (entry, ind, key
-     array_insert (array_cell (entry), ind, newval);
-   FREE (newval);
-+  VUNSETATTR (entry, att_invisible);  /* no longer invisible */
-   return (entry);
- }
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 17
-+#define PATCHLEVEL 18
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/119-upstream-bash43-019.patch b/utils/bash/patches/119-upstream-bash43-019.patch
deleted file mode 100644 (file)
index 2d0fa44..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-019
-
-Bug-Reported-by:       John Lenton
-Bug-Reference-ID:
-Bug-Reference-URL:     https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1317476
-
-Bug-Description:
-
-The -t timeout option to `read' does not work when the -e option is used.
-
-Patch (apply with `patch -p0'):
-
---- a/lib/readline/input.c
-+++ b/lib/readline/input.c
-@@ -534,8 +534,16 @@ rl_getc (stream)
-       return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF);
-       else if (_rl_caught_signal == SIGHUP || _rl_caught_signal == SIGTERM)
-       return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF);
-+      /* keyboard-generated signals of interest */
-       else if (_rl_caught_signal == SIGINT || _rl_caught_signal == SIGQUIT)
-         RL_CHECK_SIGNALS ();
-+      /* non-keyboard-generated signals of interest */
-+      else if (_rl_caught_signal == SIGALRM
-+#if defined (SIGVTALRM)
-+              || _rl_caught_signal == SIGVTALRM
-+#endif
-+            )
-+        RL_CHECK_SIGNALS ();
-       if (rl_signal_event_hook)
-       (*rl_signal_event_hook) ();
---- a/builtins/read.def
-+++ b/builtins/read.def
-@@ -442,7 +442,10 @@ read_builtin (list)
-       add_unwind_protect (reset_alarm, (char *)NULL);
- #if defined (READLINE)
-       if (edit)
--      add_unwind_protect (reset_attempted_completion_function, (char *)NULL);
-+      {
-+        add_unwind_protect (reset_attempted_completion_function, (char *)NULL);
-+        add_unwind_protect (bashline_reset_event_hook, (char *)NULL);
-+      }
- #endif
-       falarm (tmsec, tmusec);
-     }
-@@ -1021,6 +1024,7 @@ edit_line (p, itext)
-   old_attempted_completion_function = rl_attempted_completion_function;
-   rl_attempted_completion_function = (rl_completion_func_t *)NULL;
-+  bashline_set_event_hook ();
-   if (itext)
-     {
-       old_startup_hook = rl_startup_hook;
-@@ -1032,6 +1036,7 @@ edit_line (p, itext)
-   rl_attempted_completion_function = old_attempted_completion_function;
-   old_attempted_completion_function = (rl_completion_func_t *)NULL;
-+  bashline_reset_event_hook ();
-   if (ret == 0)
-     return ret;
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 18
-+#define PATCHLEVEL 19
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/120-upstream-bash43-020.patch b/utils/bash/patches/120-upstream-bash43-020.patch
deleted file mode 100644 (file)
index abf0c30..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-020
-
-Bug-Reported-by:       Jared Yanovich <slovichon@gmail.com>
-Bug-Reference-ID:      <20140417073654.GB26875@nightderanger.psc.edu>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00065.html
-
-Bug-Description:
-
-When PS2 contains a command substitution, here-documents entered in an
-interactive shell can sometimes cause a segmentation fault.
-
-Patch (apply with `patch -p0'):
-
---- a/shell.h
-+++ b/shell.h
-@@ -168,7 +168,8 @@ typedef struct _sh_parser_state_t {
-   /* flags state affecting the parser */
-   int expand_aliases;
-   int echo_input_at_read;
--  
-+  int need_here_doc;
-+
- } sh_parser_state_t;
- typedef struct _sh_input_line_state_t {
---- a/parse.y
-+++ b/parse.y
-@@ -2642,7 +2642,7 @@ gather_here_documents ()
-   int r;
-   r = 0;
--  while (need_here_doc)
-+  while (need_here_doc > 0)
-     {
-       parser_state |= PST_HEREDOC;
-       make_here_document (redir_stack[r++], line_number);
-@@ -6075,6 +6075,7 @@ save_parser_state (ps)
-   ps->expand_aliases = expand_aliases;
-   ps->echo_input_at_read = echo_input_at_read;
-+  ps->need_here_doc = need_here_doc;
-   ps->token = token;
-   ps->token_buffer_size = token_buffer_size;
-@@ -6123,6 +6124,7 @@ restore_parser_state (ps)
-   expand_aliases = ps->expand_aliases;
-   echo_input_at_read = ps->echo_input_at_read;
-+  need_here_doc = ps->need_here_doc;
-   FREE (token);
-   token = ps->token;
---- a/y.tab.c
-+++ b/y.tab.c
-@@ -4954,7 +4954,7 @@ gather_here_documents ()
-   int r;
-   r = 0;
--  while (need_here_doc)
-+  while (need_here_doc > 0)
-     {
-       parser_state |= PST_HEREDOC;
-       make_here_document (redir_stack[r++], line_number);
-@@ -8387,6 +8387,7 @@ save_parser_state (ps)
-   ps->expand_aliases = expand_aliases;
-   ps->echo_input_at_read = echo_input_at_read;
-+  ps->need_here_doc = need_here_doc;
-   ps->token = token;
-   ps->token_buffer_size = token_buffer_size;
-@@ -8435,6 +8436,7 @@ restore_parser_state (ps)
-   expand_aliases = ps->expand_aliases;
-   echo_input_at_read = ps->echo_input_at_read;
-+  need_here_doc = ps->need_here_doc;
-   FREE (token);
-   token = ps->token;
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 19
-+#define PATCHLEVEL 20
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/121-upstream-bash43-021.patch b/utils/bash/patches/121-upstream-bash43-021.patch
deleted file mode 100644 (file)
index b7367a0..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-021
-
-Bug-Reported-by:       Jared Yanovich <slovichon@gmail.com>
-Bug-Reference-ID:      <20140625225019.GJ17044@nightderanger.psc.edu>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00070.html
-
-Bug-Description:
-
-When the readline `revert-all-at-newline' option is set, pressing newline
-when the current line is one retrieved from history results in a double free
-and a segmentation fault.
-
-Patch (apply with `patch -p0'):
-
---- a/lib/readline/misc.c
-+++ b/lib/readline/misc.c
-@@ -461,6 +461,7 @@ _rl_revert_all_lines ()
-           saved_undo_list = 0;
-         /* Set up rl_line_buffer and other variables from history entry */
-         rl_replace_from_history (entry, 0);   /* entry->line is now current */
-+        entry->data = 0;                      /* entry->data is now current undo list */
-         /* Undo all changes to this history entry */
-         while (rl_undo_list)
-           rl_do_undo ();
-@@ -468,7 +469,6 @@ _rl_revert_all_lines ()
-            the timestamp. */
-         FREE (entry->line);
-         entry->line = savestring (rl_line_buffer);
--        entry->data = 0;
-       }
-       entry = previous_history ();
-     }
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 20
-+#define PATCHLEVEL 21
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/122-upstream-bash43-022.patch b/utils/bash/patches/122-upstream-bash43-022.patch
deleted file mode 100644 (file)
index 1ee8f13..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-022
-
-Bug-Reported-by:       scorp.dev.null@gmail.com
-Bug-Reference-ID:      <E1WxXw8-0007iE-Bi@pcm14>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00061.html
-
-Bug-Description:
-
-Using nested pipelines within loops with the `lastpipe' option set can result
-in a segmentation fault.
-
-Patch (apply with `patch -p0'):
-
---- a/execute_cmd.c
-+++ b/execute_cmd.c
-@@ -2413,7 +2413,16 @@ execute_pipeline (command, asynchronous,
- #endif
-       lstdin = wait_for (lastpid);
- #if defined (JOB_CONTROL)
--      exec_result = job_exit_status (lastpipe_jid);
-+      /* If wait_for removes the job from the jobs table, use result of last
-+       command as pipeline's exit status as usual.  The jobs list can get
-+       frozen and unfrozen at inconvenient times if there are multiple pipelines
-+       running simultaneously. */
-+      if (INVALID_JOB (lastpipe_jid) == 0)
-+      exec_result = job_exit_status (lastpipe_jid);
-+      else if (pipefail_opt)
-+      exec_result = exec_result | lstdin;     /* XXX */
-+      /* otherwise we use exec_result */
-+        
- #endif
-       unfreeze_jobs_list ();
-     }
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 21
-+#define PATCHLEVEL 22
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/123-upstream-bash43-023.patch b/utils/bash/patches/123-upstream-bash43-023.patch
deleted file mode 100644 (file)
index 8684c13..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-023
-
-Bug-Reported-by:       Tim Friske <me@timfriske.com>
-Bug-Reference-ID:      <CAM1RzOcOR9zzC2i+aeES6LtbHNHoOV+0pZEYPrqxv_QAii-RXA@mail.gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00056.html
-
-Bug-Description:
-
-Bash does not correctly parse process substitution constructs that contain
-unbalanced parentheses as part of the contained command.
-
-Patch (apply with `patch -p0'):
-
---- a/subst.h
-+++ b/subst.h
-@@ -82,7 +82,7 @@ extern char *extract_arithmetic_subst __
- /* Extract the <( or >( construct in STRING, and return a new string.
-    Start extracting at (SINDEX) as if we had just seen "<(".
-    Make (SINDEX) get the position just after the matching ")". */
--extern char *extract_process_subst __P((char *, char *, int *));
-+extern char *extract_process_subst __P((char *, char *, int *, int));
- #endif /* PROCESS_SUBSTITUTION */
- /* Extract the name of the variable to bind to from the assignment string. */
---- a/subst.c
-+++ b/subst.c
-@@ -1192,12 +1192,18 @@ extract_arithmetic_subst (string, sindex
-    Start extracting at (SINDEX) as if we had just seen "<(".
-    Make (SINDEX) get the position of the matching ")". */ /*))*/
- char *
--extract_process_subst (string, starter, sindex)
-+extract_process_subst (string, starter, sindex, xflags)
-      char *string;
-      char *starter;
-      int *sindex;
-+     int xflags;
- {
-+#if 0
-   return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND));
-+#else
-+  xflags |= (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0);
-+  return (xparse_dolparen (string, string+*sindex, sindex, xflags));
-+#endif
- }
- #endif /* PROCESS_SUBSTITUTION */
-@@ -1785,7 +1791,7 @@ skip_to_delim (string, start, delims, fl
-         si = i + 2;
-         if (string[si] == '\0')
-           CQ_RETURN(si);
--        temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si);
-+        temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si, 0);
-         free (temp);          /* no SX_ALLOC here */
-         i = si;
-         if (string[i] == '\0')
-@@ -8249,7 +8255,7 @@ add_string:
-           else
-             t_index = sindex + 1; /* skip past both '<' and LPAREN */
--          temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index); /*))*/
-+          temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index, 0); /*))*/
-           sindex = t_index;
-           /* If the process substitution specification is `<()', we want to
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 22
-+#define PATCHLEVEL 23
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/124-upstream-bash43-024.patch b/utils/bash/patches/124-upstream-bash43-024.patch
deleted file mode 100644 (file)
index 7941455..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-024
-
-Bug-Reported-by:       Corentin Peuvrel <cpeuvrel@pom-monitoring.com>
-Bug-Reference-ID:      <53CE9E5D.6050203@pom-monitoring.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-07/msg00021.html
-
-Bug-Description:
-
-Indirect variable references do not work correctly if the reference
-variable expands to an array reference using a subscript other than 0
-(e.g., foo='bar[1]' ; echo ${!foo}).
-
-Patch (apply with `patch -p0'):
-
---- a/subst.c
-+++ b/subst.c
-@@ -7374,7 +7374,13 @@ parameter_brace_expand (string, indexp,
-     }
-   if (want_indir)
--    tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at);
-+    {
-+      tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at);
-+      /* Turn off the W_ARRAYIND flag because there is no way for this function
-+       to return the index we're supposed to be using. */
-+      if (tdesc && tdesc->flags)
-+      tdesc->flags &= ~W_ARRAYIND;
-+    }
-   else
-     tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind);
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 23
-+#define PATCHLEVEL 24
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/125-upstream-bash43-025.patch b/utils/bash/patches/125-upstream-bash43-025.patch
deleted file mode 100644 (file)
index 6b2ef4b..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-025
-
-Bug-Reported-by:       Stephane Chazelas <stephane.chazelas@gmail.com>
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-Under certain circumstances, bash will execute user code while processing the
-environment for exported function definitions.
-
-Patch (apply with `patch -p0'):
-
---- a/builtins/common.h
-+++ b/builtins/common.h
-@@ -33,6 +33,8 @@
- #define SEVAL_RESETLINE       0x010
- #define SEVAL_PARSEONLY       0x020
- #define SEVAL_NOLONGJMP 0x040
-+#define SEVAL_FUNCDEF 0x080           /* only allow function definitions */
-+#define SEVAL_ONECMD  0x100           /* only allow a single command */
- /* Flags for describe_command, shared between type.def and command.def */
- #define CDESC_ALL             0x001   /* type -a */
---- a/builtins/evalstring.c
-+++ b/builtins/evalstring.c
-@@ -308,6 +308,14 @@ parse_and_execute (string, from_file, fl
-           {
-             struct fd_bitmap *bitmap;
-+            if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def)
-+              {
-+                internal_warning ("%s: ignoring function definition attempt", from_file);
-+                should_jump_to_top_level = 0;
-+                last_result = last_command_exit_value = EX_BADUSAGE;
-+                break;
-+              }
-+
-             bitmap = new_fd_bitmap (FD_BITMAP_SIZE);
-             begin_unwind_frame ("pe_dispose");
-             add_unwind_protect (dispose_fd_bitmap, bitmap);
-@@ -368,6 +376,9 @@ parse_and_execute (string, from_file, fl
-             dispose_command (command);
-             dispose_fd_bitmap (bitmap);
-             discard_unwind_frame ("pe_dispose");
-+
-+            if (flags & SEVAL_ONECMD)
-+              break;
-           }
-       }
-       else
---- a/variables.c
-+++ b/variables.c
-@@ -358,13 +358,11 @@ initialize_shell_variables (env, privmod
-         temp_string[char_index] = ' ';
-         strcpy (temp_string + char_index + 1, string);
--        if (posixly_correct == 0 || legal_identifier (name))
--          parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST);
--
--        /* Ancient backwards compatibility.  Old versions of bash exported
--           functions like name()=() {...} */
--        if (name[char_index - 1] == ')' && name[char_index - 2] == '(')
--          name[char_index - 2] = '\0';
-+        /* Don't import function names that are invalid identifiers from the
-+           environment, though we still allow them to be defined as shell
-+           variables. */
-+        if (legal_identifier (name))
-+          parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
-         if (temp_var = find_function (name))
-           {
-@@ -381,10 +379,6 @@ initialize_shell_variables (env, privmod
-             last_command_exit_value = 1;
-             report_error (_("error importing function definition for `%s'"), name);
-           }
--
--        /* ( */
--        if (name[char_index - 1] == ')' && name[char_index - 2] == '\0')
--          name[char_index - 2] = '(';         /* ) */
-       }
- #if defined (ARRAY_VARS)
- #  if ARRAY_EXPORT
---- a/subst.c
-+++ b/subst.c
-@@ -8047,7 +8047,9 @@ comsub:
-         goto return0;
-       }
--      else if (var = find_variable_last_nameref (temp1))
-+      else if (var && (invisible_p (var) || var_isset (var) == 0))
-+      temp = (char *)NULL;
-+      else if ((var = find_variable_last_nameref (temp1)) && var_isset (var) && invisible_p (var) == 0)
-       {
-         temp = nameref_cell (var);
- #if defined (ARRAY_VARS)
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 24
-+#define PATCHLEVEL 25
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/126-upstream-bash43-026.patch b/utils/bash/patches/126-upstream-bash43-026.patch
deleted file mode 100644 (file)
index e9535be..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-026
-
-Bug-Reported-by:       Tavis Ormandy <taviso@cmpxchg8b.com>
-Bug-Reference-ID:
-Bug-Reference-URL:     http://twitter.com/taviso/statuses/514887394294652929
-
-Bug-Description:
-
-Under certain circumstances, bash can incorrectly save a lookahead character and
-return it on a subsequent call, even when reading a new line.
-
-Patch (apply with `patch -p0'):
-
---- a/parse.y
-+++ b/parse.y
-@@ -2953,6 +2953,8 @@ reset_parser ()
-   FREE (word_desc_to_read);
-   word_desc_to_read = (WORD_DESC *)NULL;
-+  eol_ungetc_lookahead = 0;
-+
-   current_token = '\n';               /* XXX */
-   last_read_token = '\n';
-   token_to_read = '\n';
---- a/y.tab.c
-+++ b/y.tab.c
-@@ -5265,6 +5265,8 @@ reset_parser ()
-   FREE (word_desc_to_read);
-   word_desc_to_read = (WORD_DESC *)NULL;
-+  eol_ungetc_lookahead = 0;
-+
-   current_token = '\n';               /* XXX */
-   last_read_token = '\n';
-   token_to_read = '\n';
-@@ -8539,4 +8541,3 @@ set_line_mbstate ()
-     }
- }
- #endif /* HANDLE_MULTIBYTE */
--
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 25
-+#define PATCHLEVEL 26
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/127-upstream-bash43-027.patch b/utils/bash/patches/127-upstream-bash43-027.patch
deleted file mode 100644 (file)
index 6e8a51a..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-027
-
-Bug-Reported-by:       Florian Weimer <fweimer@redhat.com>
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-This patch changes the encoding bash uses for exported functions to avoid
-clashes with shell variables and to avoid depending only on an environment
-variable's contents to determine whether or not to interpret it as a shell
-function.
-
-Patch (apply with `patch -p0'):
-
---- a/variables.c
-+++ b/variables.c
-@@ -83,6 +83,11 @@
- #define ifsname(s)    ((s)[0] == 'I' && (s)[1] == 'F' && (s)[2] == 'S' && (s)[3] == '\0')
-+#define BASHFUNC_PREFIX               "BASH_FUNC_"
-+#define BASHFUNC_PREFLEN      10      /* == strlen(BASHFUNC_PREFIX */
-+#define BASHFUNC_SUFFIX               "%%"
-+#define BASHFUNC_SUFFLEN      2       /* == strlen(BASHFUNC_SUFFIX) */
-+
- extern char **environ;
- /* Variables used here and defined in other files. */
-@@ -279,7 +284,7 @@ static void push_temp_var __P((PTR_T));
- static void propagate_temp_var __P((PTR_T));
- static void dispose_temporary_env __P((sh_free_func_t *));     
--static inline char *mk_env_string __P((const char *, const char *));
-+static inline char *mk_env_string __P((const char *, const char *, int));
- static char **make_env_array_from_var_list __P((SHELL_VAR **));
- static char **make_var_export_array __P((VAR_CONTEXT *));
- static char **make_func_export_array __P((void));
-@@ -349,22 +354,33 @@ initialize_shell_variables (env, privmod
-       /* If exported function, define it now.  Don't import functions from
-        the environment in privileged mode. */
--      if (privmode == 0 && read_but_dont_execute == 0 && STREQN ("() {", string, 4))
-+      if (privmode == 0 && read_but_dont_execute == 0 && 
-+          STREQN (BASHFUNC_PREFIX, name, BASHFUNC_PREFLEN) &&
-+          STREQ (BASHFUNC_SUFFIX, name + char_index - BASHFUNC_SUFFLEN) &&
-+        STREQN ("() {", string, 4))
-       {
-+        size_t namelen;
-+        char *tname;          /* desired imported function name */
-+
-+        namelen = char_index - BASHFUNC_PREFLEN - BASHFUNC_SUFFLEN;
-+
-+        tname = name + BASHFUNC_PREFLEN;      /* start of func name */
-+        tname[namelen] = '\0';                /* now tname == func name */
-+
-         string_length = strlen (string);
--        temp_string = (char *)xmalloc (3 + string_length + char_index);
-+        temp_string = (char *)xmalloc (namelen + string_length + 2);
--        strcpy (temp_string, name);
--        temp_string[char_index] = ' ';
--        strcpy (temp_string + char_index + 1, string);
-+        memcpy (temp_string, tname, namelen);
-+        temp_string[namelen] = ' ';
-+        memcpy (temp_string + namelen + 1, string, string_length + 1);
-         /* Don't import function names that are invalid identifiers from the
-            environment, though we still allow them to be defined as shell
-            variables. */
--        if (legal_identifier (name))
--          parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
-+        if (absolute_program (tname) == 0 && (posixly_correct == 0 || legal_identifier (tname)))
-+          parse_and_execute (temp_string, tname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD);
--        if (temp_var = find_function (name))
-+        if (temp_var = find_function (tname))
-           {
-             VSETATTR (temp_var, (att_exported|att_imported));
-             array_needs_making = 1;
-@@ -377,8 +393,11 @@ initialize_shell_variables (env, privmod
-                 array_needs_making = 1;
-               }
-             last_command_exit_value = 1;
--            report_error (_("error importing function definition for `%s'"), name);
-+            report_error (_("error importing function definition for `%s'"), tname);
-           }
-+
-+        /* Restore original suffix */
-+        tname[namelen] = BASHFUNC_SUFFIX[0];
-       }
- #if defined (ARRAY_VARS)
- #  if ARRAY_EXPORT
-@@ -2954,7 +2973,7 @@ assign_in_env (word, flags)
-   var->context = variable_context;    /* XXX */
-   INVALIDATE_EXPORTSTR (var);
--  var->exportstr = mk_env_string (name, value);
-+  var->exportstr = mk_env_string (name, value, 0);
-   array_needs_making = 1;
-@@ -3852,21 +3871,42 @@ merge_temporary_env ()
- /* **************************************************************** */
- static inline char *
--mk_env_string (name, value)
-+mk_env_string (name, value, isfunc)
-      const char *name, *value;
-+     int isfunc;
- {
--  int name_len, value_len;
--  char        *p;
-+  size_t name_len, value_len;
-+  char        *p, *q;
-   name_len = strlen (name);
-   value_len = STRLEN (value);
--  p = (char *)xmalloc (2 + name_len + value_len);
--  strcpy (p, name);
--  p[name_len] = '=';
-+
-+  /* If we are exporting a shell function, construct the encoded function
-+     name. */
-+  if (isfunc && value)
-+    {
-+      p = (char *)xmalloc (BASHFUNC_PREFLEN + name_len + BASHFUNC_SUFFLEN + value_len + 2);
-+      q = p;
-+      memcpy (q, BASHFUNC_PREFIX, BASHFUNC_PREFLEN);
-+      q += BASHFUNC_PREFLEN;
-+      memcpy (q, name, name_len);
-+      q += name_len;
-+      memcpy (q, BASHFUNC_SUFFIX, BASHFUNC_SUFFLEN);
-+      q += BASHFUNC_SUFFLEN;
-+    }
-+  else
-+    {
-+      p = (char *)xmalloc (2 + name_len + value_len);
-+      memcpy (p, name, name_len);
-+      q = p + name_len;
-+    }
-+
-+  q[0] = '=';
-   if (value && *value)
--    strcpy (p + name_len + 1, value);
-+    memcpy (q + 1, value, value_len + 1);
-   else
--    p[name_len + 1] = '\0';
-+    q[1] = '\0';
-+
-   return (p);
- }
-@@ -3952,7 +3992,7 @@ make_env_array_from_var_list (vars)
-         /* Gee, I'd like to get away with not using savestring() if we're
-            using the cached exportstr... */
-         list[list_index] = USE_EXPORTSTR ? savestring (value)
--                                         : mk_env_string (var->name, value);
-+                                         : mk_env_string (var->name, value, function_p (var));
-         if (USE_EXPORTSTR == 0)
-           SAVE_EXPORTSTR (var, list[list_index]);
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 26
-+#define PATCHLEVEL 27
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/128-upstream-bash43-028.patch b/utils/bash/patches/128-upstream-bash43-028.patch
deleted file mode 100644 (file)
index b4b1b6d..0000000
+++ /dev/null
@@ -1,1526 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-028
-
-Bug-Reported-by:       Florian Weimer <fweimer@redhat.com>
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-There are two local buffer overflows in parse.y that can cause the shell
-to dump core when given many here-documents attached to a single command
-or many nested loops.
-
-Patch (apply with `patch -p0'):
-
---- a/parse.y
-+++ b/parse.y
-@@ -168,6 +168,9 @@ static char *read_a_line __P((int));
- static int reserved_word_acceptable __P((int));
- static int yylex __P((void));
-+
-+static void push_heredoc __P((REDIRECT *));
-+static char *mk_alexpansion __P((char *));
- static int alias_expand_token __P((char *));
- static int time_command_acceptable __P((void));
- static int special_case_tokens __P((char *));
-@@ -265,7 +268,9 @@ int parser_state;
- /* Variables to manage the task of reading here documents, because we need to
-    defer the reading until after a complete command has been collected. */
--static REDIRECT *redir_stack[10];
-+#define HEREDOC_MAX 16
-+
-+static REDIRECT *redir_stack[HEREDOC_MAX];
- int need_here_doc;
- /* Where shell input comes from.  History expansion is performed on each
-@@ -307,7 +312,7 @@ static int global_extglob;
-    or `for WORD' begins.  This is a nested command maximum, since the array
-    index is decremented after a case, select, or for command is parsed. */
- #define MAX_CASE_NEST 128
--static int word_lineno[MAX_CASE_NEST];
-+static int word_lineno[MAX_CASE_NEST+1];
- static int word_top = -1;
- /* If non-zero, it is the token that we want read_token to return
-@@ -520,42 +525,42 @@ redirection:     '>' WORD
-                         source.dest = 0;
-                         redir.filename = $2;
-                         $$ = make_redirection (source, r_reading_until, redir, 0);
--                        redir_stack[need_here_doc++] = $$;
-+                        push_heredoc ($$);
-                       }
-       |       NUMBER LESS_LESS WORD
-                       {
-                         source.dest = $1;
-                         redir.filename = $3;
-                         $$ = make_redirection (source, r_reading_until, redir, 0);
--                        redir_stack[need_here_doc++] = $$;
-+                        push_heredoc ($$);
-                       }
-       |       REDIR_WORD LESS_LESS WORD
-                       {
-                         source.filename = $1;
-                         redir.filename = $3;
-                         $$ = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
--                        redir_stack[need_here_doc++] = $$;
-+                        push_heredoc ($$);
-                       }
-       |       LESS_LESS_MINUS WORD
-                       {
-                         source.dest = 0;
-                         redir.filename = $2;
-                         $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
--                        redir_stack[need_here_doc++] = $$;
-+                        push_heredoc ($$);
-                       }
-       |       NUMBER LESS_LESS_MINUS WORD
-                       {
-                         source.dest = $1;
-                         redir.filename = $3;
-                         $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
--                        redir_stack[need_here_doc++] = $$;
-+                        push_heredoc ($$);
-                       }
-       |       REDIR_WORD  LESS_LESS_MINUS WORD
-                       {
-                         source.filename = $1;
-                         redir.filename = $3;
-                         $$ = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
--                        redir_stack[need_here_doc++] = $$;
-+                        push_heredoc ($$);
-                       }
-       |       LESS_LESS_LESS WORD
-                       {
-@@ -2636,6 +2641,21 @@ yylex ()
-    which allow ESAC to be the next one read. */
- static int esacs_needed_count;
-+static void
-+push_heredoc (r)
-+     REDIRECT *r;
-+{
-+  if (need_here_doc >= HEREDOC_MAX)
-+    {
-+      last_command_exit_value = EX_BADUSAGE;
-+      need_here_doc = 0;
-+      report_syntax_error (_("maximum here-document count exceeded"));
-+      reset_parser ();
-+      exit_shell (last_command_exit_value);
-+    }
-+  redir_stack[need_here_doc++] = r;
-+}
-+
- void
- gather_here_documents ()
- {
---- a/y.tab.c
-+++ b/y.tab.c
-@@ -168,7 +168,7 @@
- /* Copy the first part of user declarations.  */
--#line 21 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 21 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
- #include "config.h"
-@@ -319,6 +319,9 @@ static char *read_a_line __P((int));
- static int reserved_word_acceptable __P((int));
- static int yylex __P((void));
-+
-+static void push_heredoc __P((REDIRECT *));
-+static char *mk_alexpansion __P((char *));
- static int alias_expand_token __P((char *));
- static int time_command_acceptable __P((void));
- static int special_case_tokens __P((char *));
-@@ -416,7 +419,9 @@ int parser_state;
- /* Variables to manage the task of reading here documents, because we need to
-    defer the reading until after a complete command has been collected. */
--static REDIRECT *redir_stack[10];
-+#define HEREDOC_MAX 16
-+
-+static REDIRECT *redir_stack[HEREDOC_MAX];
- int need_here_doc;
- /* Where shell input comes from.  History expansion is performed on each
-@@ -458,7 +463,7 @@ static int global_extglob;
-    or `for WORD' begins.  This is a nested command maximum, since the array
-    index is decremented after a case, select, or for command is parsed. */
- #define MAX_CASE_NEST 128
--static int word_lineno[MAX_CASE_NEST];
-+static int word_lineno[MAX_CASE_NEST+1];
- static int word_top = -1;
- /* If non-zero, it is the token that we want read_token to return
-@@ -492,7 +497,7 @@ static REDIRECTEE redir;
- #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
- typedef union YYSTYPE
--#line 324 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 329 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
- {
-   WORD_DESC *word;            /* the word that we read. */
-   int number;                 /* the number that we read. */
-@@ -503,7 +508,7 @@ typedef union YYSTYPE
-   PATTERN_LIST *pattern;
- }
- /* Line 193 of yacc.c.  */
--#line 507 "y.tab.c"
-+#line 512 "y.tab.c"
-       YYSTYPE;
- # define yystype YYSTYPE /* obsolescent; will be withdrawn */
- # define YYSTYPE_IS_DECLARED 1
-@@ -516,7 +521,7 @@ typedef union YYSTYPE
- /* Line 216 of yacc.c.  */
--#line 520 "y.tab.c"
-+#line 525 "y.tab.c"
- #ifdef short
- # undef short
-@@ -886,23 +891,23 @@ static const yytype_int8 yyrhs[] =
- /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
- static const yytype_uint16 yyrline[] =
- {
--       0,   377,   377,   388,   397,   412,   422,   424,   428,   434,
--     440,   446,   452,   458,   464,   470,   476,   482,   488,   494,
--     500,   506,   512,   518,   525,   532,   539,   546,   553,   560,
--     566,   572,   578,   584,   590,   596,   602,   608,   614,   620,
--     626,   632,   638,   644,   650,   656,   662,   668,   674,   680,
--     686,   692,   700,   702,   704,   708,   712,   723,   725,   729,
--     731,   733,   749,   751,   755,   757,   759,   761,   763,   765,
--     767,   769,   771,   773,   775,   779,   784,   789,   794,   799,
--     804,   809,   814,   821,   826,   831,   836,   843,   848,   853,
--     858,   863,   868,   875,   880,   885,   892,   895,   898,   902,
--     904,   935,   942,   947,   964,   969,   986,   993,   995,   997,
--    1002,  1006,  1010,  1014,  1016,  1018,  1022,  1023,  1027,  1029,
--    1031,  1033,  1037,  1039,  1041,  1043,  1045,  1047,  1051,  1053,
--    1062,  1070,  1071,  1077,  1078,  1085,  1089,  1091,  1093,  1100,
--    1102,  1104,  1108,  1109,  1112,  1114,  1116,  1120,  1121,  1130,
--    1143,  1159,  1174,  1176,  1178,  1185,  1188,  1192,  1194,  1200,
--    1206,  1223,  1243,  1245,  1268,  1272,  1274,  1276
-+       0,   382,   382,   393,   402,   417,   427,   429,   433,   439,
-+     445,   451,   457,   463,   469,   475,   481,   487,   493,   499,
-+     505,   511,   517,   523,   530,   537,   544,   551,   558,   565,
-+     571,   577,   583,   589,   595,   601,   607,   613,   619,   625,
-+     631,   637,   643,   649,   655,   661,   667,   673,   679,   685,
-+     691,   697,   705,   707,   709,   713,   717,   728,   730,   734,
-+     736,   738,   754,   756,   760,   762,   764,   766,   768,   770,
-+     772,   774,   776,   778,   780,   784,   789,   794,   799,   804,
-+     809,   814,   819,   826,   831,   836,   841,   848,   853,   858,
-+     863,   868,   873,   880,   885,   890,   897,   900,   903,   907,
-+     909,   940,   947,   952,   969,   974,   991,   998,  1000,  1002,
-+    1007,  1011,  1015,  1019,  1021,  1023,  1027,  1028,  1032,  1034,
-+    1036,  1038,  1042,  1044,  1046,  1048,  1050,  1052,  1056,  1058,
-+    1067,  1075,  1076,  1082,  1083,  1090,  1094,  1096,  1098,  1105,
-+    1107,  1109,  1113,  1114,  1117,  1119,  1121,  1125,  1126,  1135,
-+    1148,  1164,  1179,  1181,  1183,  1190,  1193,  1197,  1199,  1205,
-+    1211,  1228,  1248,  1250,  1273,  1277,  1279,  1281
- };
- #endif
-@@ -2093,7 +2098,7 @@ yyreduce:
-   switch (yyn)
-     {
-         case 2:
--#line 378 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 383 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         /* Case of regular command.  Discard the error
-                            safety net,and return the command just parsed. */
-@@ -2107,7 +2112,7 @@ yyreduce:
-     break;
-   case 3:
--#line 389 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 394 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         /* Case of regular command, but not a very
-                            interesting one.  Return a NULL command. */
-@@ -2119,7 +2124,7 @@ yyreduce:
-     break;
-   case 4:
--#line 398 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         /* Error during parsing.  Return NULL command. */
-                         global_command = (COMMAND *)NULL;
-@@ -2137,7 +2142,7 @@ yyreduce:
-     break;
-   case 5:
--#line 413 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 418 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         /* Case of EOF seen by itself.  Do ignoreeof or
-                            not. */
-@@ -2148,17 +2153,17 @@ yyreduce:
-     break;
-   case 6:
--#line 423 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 428 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
-     break;
-   case 7:
--#line 425 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 430 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); }
-     break;
-   case 8:
--#line 429 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 434 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2167,7 +2172,7 @@ yyreduce:
-     break;
-   case 9:
--#line 435 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2176,7 +2181,7 @@ yyreduce:
-     break;
-   case 10:
--#line 441 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2185,7 +2190,7 @@ yyreduce:
-     break;
-   case 11:
--#line 447 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 452 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2194,7 +2199,7 @@ yyreduce:
-     break;
-   case 12:
--#line 453 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2203,7 +2208,7 @@ yyreduce:
-     break;
-   case 13:
--#line 459 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 464 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2212,7 +2217,7 @@ yyreduce:
-     break;
-   case 14:
--#line 465 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2221,7 +2226,7 @@ yyreduce:
-     break;
-   case 15:
--#line 471 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2230,7 +2235,7 @@ yyreduce:
-     break;
-   case 16:
--#line 477 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2239,7 +2244,7 @@ yyreduce:
-     break;
-   case 17:
--#line 483 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2248,7 +2253,7 @@ yyreduce:
-     break;
-   case 18:
--#line 489 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2257,7 +2262,7 @@ yyreduce:
-     break;
-   case 19:
--#line 495 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2266,7 +2271,7 @@ yyreduce:
-     break;
-   case 20:
--#line 501 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2275,7 +2280,7 @@ yyreduce:
-     break;
-   case 21:
--#line 507 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2284,7 +2289,7 @@ yyreduce:
-     break;
-   case 22:
--#line 513 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2293,67 +2298,67 @@ yyreduce:
-     break;
-   case 23:
--#line 519 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-                         (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
--                        redir_stack[need_here_doc++] = (yyval.redirect);
-+                        push_heredoc ((yyval.redirect));
-                       }
-     break;
-   case 24:
--#line 526 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-                         (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
--                        redir_stack[need_here_doc++] = (yyval.redirect);
-+                        push_heredoc ((yyval.redirect));
-                       }
-     break;
-   case 25:
--#line 533 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-                         (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
--                        redir_stack[need_here_doc++] = (yyval.redirect);
-+                        push_heredoc ((yyval.redirect));
-                       }
-     break;
-   case 26:
--#line 540 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-                         (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
--                        redir_stack[need_here_doc++] = (yyval.redirect);
-+                        push_heredoc ((yyval.redirect));
-                       }
-     break;
-   case 27:
--#line 547 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-                         (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
--                        redir_stack[need_here_doc++] = (yyval.redirect);
-+                        push_heredoc ((yyval.redirect));
-                       }
-     break;
-   case 28:
--#line 554 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-                         (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
--                        redir_stack[need_here_doc++] = (yyval.redirect);
-+                        push_heredoc ((yyval.redirect));
-                       }
-     break;
-   case 29:
--#line 561 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2362,7 +2367,7 @@ yyreduce:
-     break;
-   case 30:
--#line 567 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2371,7 +2376,7 @@ yyreduce:
-     break;
-   case 31:
--#line 573 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2380,7 +2385,7 @@ yyreduce:
-     break;
-   case 32:
--#line 579 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 0;
-                         redir.dest = (yyvsp[(2) - (2)].number);
-@@ -2389,7 +2394,7 @@ yyreduce:
-     break;
-   case 33:
--#line 585 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.dest = (yyvsp[(3) - (3)].number);
-@@ -2398,7 +2403,7 @@ yyreduce:
-     break;
-   case 34:
--#line 591 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.dest = (yyvsp[(3) - (3)].number);
-@@ -2407,7 +2412,7 @@ yyreduce:
-     break;
-   case 35:
--#line 597 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 1;
-                         redir.dest = (yyvsp[(2) - (2)].number);
-@@ -2416,7 +2421,7 @@ yyreduce:
-     break;
-   case 36:
--#line 603 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.dest = (yyvsp[(3) - (3)].number);
-@@ -2425,7 +2430,7 @@ yyreduce:
-     break;
-   case 37:
--#line 609 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.dest = (yyvsp[(3) - (3)].number);
-@@ -2434,7 +2439,7 @@ yyreduce:
-     break;
-   case 38:
--#line 615 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2443,7 +2448,7 @@ yyreduce:
-     break;
-   case 39:
--#line 621 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2452,7 +2457,7 @@ yyreduce:
-     break;
-   case 40:
--#line 627 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2461,7 +2466,7 @@ yyreduce:
-     break;
-   case 41:
--#line 633 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2470,7 +2475,7 @@ yyreduce:
-     break;
-   case 42:
--#line 639 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2479,7 +2484,7 @@ yyreduce:
-     break;
-   case 43:
--#line 645 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2488,7 +2493,7 @@ yyreduce:
-     break;
-   case 44:
--#line 651 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 1;
-                         redir.dest = 0;
-@@ -2497,7 +2502,7 @@ yyreduce:
-     break;
-   case 45:
--#line 657 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.dest = 0;
-@@ -2506,7 +2511,7 @@ yyreduce:
-     break;
-   case 46:
--#line 663 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.dest = 0;
-@@ -2515,7 +2520,7 @@ yyreduce:
-     break;
-   case 47:
--#line 669 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 0;
-                         redir.dest = 0;
-@@ -2524,7 +2529,7 @@ yyreduce:
-     break;
-   case 48:
--#line 675 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.dest = 0;
-@@ -2533,7 +2538,7 @@ yyreduce:
-     break;
-   case 49:
--#line 681 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.dest = 0;
-@@ -2542,7 +2547,7 @@ yyreduce:
-     break;
-   case 50:
--#line 687 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2551,7 +2556,7 @@ yyreduce:
-     break;
-   case 51:
--#line 693 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 698 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2560,29 +2565,29 @@ yyreduce:
-     break;
-   case 52:
--#line 701 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 706 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
-     break;
-   case 53:
--#line 703 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 708 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
-     break;
-   case 54:
--#line 705 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 710 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; }
-     break;
-   case 55:
--#line 709 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 714 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.redirect) = (yyvsp[(1) - (1)].redirect);
-                       }
-     break;
-   case 56:
--#line 713 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         register REDIRECT *t;
-@@ -2594,27 +2599,27 @@ yyreduce:
-     break;
-   case 57:
--#line 724 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 729 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); }
-     break;
-   case 58:
--#line 726 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 731 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); }
-     break;
-   case 59:
--#line 730 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 735 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); }
-     break;
-   case 60:
--#line 732 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 737 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 61:
--#line 734 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 739 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         COMMAND *tc;
-@@ -2633,72 +2638,72 @@ yyreduce:
-     break;
-   case 62:
--#line 750 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 755 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 63:
--#line 752 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 757 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 64:
--#line 756 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 761 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 65:
--#line 758 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 763 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 66:
--#line 760 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 765 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
-     break;
-   case 67:
--#line 762 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 767 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
-     break;
-   case 68:
--#line 764 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 769 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 69:
--#line 766 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 771 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 70:
--#line 768 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 773 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 71:
--#line 770 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 775 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 72:
--#line 772 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 777 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 73:
--#line 774 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 779 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 74:
--#line 776 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 781 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 75:
--#line 780 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 785 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2706,7 +2711,7 @@ yyreduce:
-     break;
-   case 76:
--#line 785 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 790 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2714,7 +2719,7 @@ yyreduce:
-     break;
-   case 77:
--#line 790 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 795 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2722,7 +2727,7 @@ yyreduce:
-     break;
-   case 78:
--#line 795 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 800 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2730,7 +2735,7 @@ yyreduce:
-     break;
-   case 79:
--#line 800 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 805 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2738,7 +2743,7 @@ yyreduce:
-     break;
-   case 80:
--#line 805 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 810 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2746,7 +2751,7 @@ yyreduce:
-     break;
-   case 81:
--#line 810 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 815 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2754,7 +2759,7 @@ yyreduce:
-     break;
-   case 82:
--#line 815 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 820 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2762,7 +2767,7 @@ yyreduce:
-     break;
-   case 83:
--#line 822 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 827 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                                 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
-                                 if (word_top > 0) word_top--;
-@@ -2770,7 +2775,7 @@ yyreduce:
-     break;
-   case 84:
--#line 827 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 832 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                                 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
-                                 if (word_top > 0) word_top--;
-@@ -2778,7 +2783,7 @@ yyreduce:
-     break;
-   case 85:
--#line 832 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 837 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                                 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
-                                 if (word_top > 0) word_top--;
-@@ -2786,7 +2791,7 @@ yyreduce:
-     break;
-   case 86:
--#line 837 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 842 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                                 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
-                                 if (word_top > 0) word_top--;
-@@ -2794,7 +2799,7 @@ yyreduce:
-     break;
-   case 87:
--#line 844 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 849 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2802,7 +2807,7 @@ yyreduce:
-     break;
-   case 88:
--#line 849 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 854 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2810,7 +2815,7 @@ yyreduce:
-     break;
-   case 89:
--#line 854 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 859 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2818,7 +2823,7 @@ yyreduce:
-     break;
-   case 90:
--#line 859 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 864 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2826,7 +2831,7 @@ yyreduce:
-     break;
-   case 91:
--#line 864 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 869 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2834,7 +2839,7 @@ yyreduce:
-     break;
-   case 92:
--#line 869 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 874 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2842,7 +2847,7 @@ yyreduce:
-     break;
-   case 93:
--#line 876 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 881 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2850,7 +2855,7 @@ yyreduce:
-     break;
-   case 94:
--#line 881 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 886 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2858,7 +2863,7 @@ yyreduce:
-     break;
-   case 95:
--#line 886 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 891 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2866,27 +2871,27 @@ yyreduce:
-     break;
-   case 96:
--#line 893 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 898 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); }
-     break;
-   case 97:
--#line 896 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 901 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); }
-     break;
-   case 98:
--#line 899 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 904 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); }
-     break;
-   case 99:
--#line 903 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 908 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 100:
--#line 905 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 910 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         COMMAND *tc;
-@@ -2918,7 +2923,7 @@ yyreduce:
-     break;
-   case 101:
--#line 936 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 941 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command));
-                         (yyval.command)->flags |= CMD_WANT_SUBSHELL;
-@@ -2926,7 +2931,7 @@ yyreduce:
-     break;
-   case 102:
--#line 943 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 948 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command));
-                         (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
-@@ -2934,7 +2939,7 @@ yyreduce:
-     break;
-   case 103:
--#line 948 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         COMMAND *tc;
-@@ -2954,7 +2959,7 @@ yyreduce:
-     break;
-   case 104:
--#line 965 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 970 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command));
-                         (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
-@@ -2962,7 +2967,7 @@ yyreduce:
-     break;
-   case 105:
--#line 970 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         COMMAND *tc;
-@@ -2982,7 +2987,7 @@ yyreduce:
-     break;
-   case 106:
--#line 987 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 992 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command)));
-                         (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
-@@ -2990,117 +2995,117 @@ yyreduce:
-     break;
-   case 107:
--#line 994 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 999 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); }
-     break;
-   case 108:
--#line 996 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1001 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); }
-     break;
-   case 109:
--#line 998 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1003 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); }
-     break;
-   case 110:
--#line 1003 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1008 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); }
-     break;
-   case 111:
--#line 1007 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1012 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); }
-     break;
-   case 112:
--#line 1011 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1016 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(2) - (3)].command); }
-     break;
-   case 113:
--#line 1015 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1020 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); }
-     break;
-   case 114:
--#line 1017 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1022 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); }
-     break;
-   case 115:
--#line 1019 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1024 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); }
-     break;
-   case 117:
--#line 1024 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); }
-     break;
-   case 118:
--#line 1028 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); }
-     break;
-   case 119:
--#line 1030 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); }
-     break;
-   case 120:
--#line 1032 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); }
-     break;
-   case 121:
--#line 1034 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); }
-     break;
-   case 122:
--#line 1038 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
-     break;
-   case 123:
--#line 1040 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
-     break;
-   case 124:
--#line 1042 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
-     break;
-   case 125:
--#line 1044 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
-     break;
-   case 126:
--#line 1046 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
-     break;
-   case 127:
--#line 1048 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
-     break;
-   case 128:
--#line 1052 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1057 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
-     break;
-   case 129:
--#line 1054 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); }
-     break;
-   case 130:
--#line 1063 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = (yyvsp[(2) - (2)].command);
-                         if (need_here_doc)
-@@ -3109,14 +3114,14 @@ yyreduce:
-     break;
-   case 132:
--#line 1072 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = (yyvsp[(2) - (2)].command);
-                       }
-     break;
-   case 134:
--#line 1079 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         if ((yyvsp[(1) - (3)].command)->type == cm_connection)
-                           (yyval.command) = connect_async_list ((yyvsp[(1) - (3)].command), (COMMAND *)NULL, '&');
-@@ -3126,17 +3131,17 @@ yyreduce:
-     break;
-   case 136:
--#line 1090 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
-     break;
-   case 137:
--#line 1092 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
-     break;
-   case 138:
--#line 1094 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         if ((yyvsp[(1) - (4)].command)->type == cm_connection)
-                           (yyval.command) = connect_async_list ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '&');
-@@ -3146,37 +3151,37 @@ yyreduce:
-     break;
-   case 139:
--#line 1101 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
-     break;
-   case 140:
--#line 1103 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
-     break;
-   case 141:
--#line 1105 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 144:
--#line 1113 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.number) = '\n'; }
-     break;
-   case 145:
--#line 1115 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.number) = ';'; }
-     break;
-   case 146:
--#line 1117 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.number) = yacc_EOF; }
-     break;
-   case 149:
--#line 1131 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = (yyvsp[(1) - (1)].command);
-                         if (need_here_doc)
-@@ -3192,7 +3197,7 @@ yyreduce:
-     break;
-   case 150:
--#line 1144 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         if ((yyvsp[(1) - (2)].command)->type == cm_connection)
-                           (yyval.command) = connect_async_list ((yyvsp[(1) - (2)].command), (COMMAND *)NULL, '&');
-@@ -3211,7 +3216,7 @@ yyreduce:
-     break;
-   case 151:
--#line 1160 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         (yyval.command) = (yyvsp[(1) - (2)].command);
-                         if (need_here_doc)
-@@ -3227,17 +3232,17 @@ yyreduce:
-     break;
-   case 152:
--#line 1175 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
-     break;
-   case 153:
--#line 1177 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
-     break;
-   case 154:
--#line 1179 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         if ((yyvsp[(1) - (3)].command)->type == cm_connection)
-                           (yyval.command) = connect_async_list ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), '&');
-@@ -3247,22 +3252,22 @@ yyreduce:
-     break;
-   case 155:
--#line 1186 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); }
-     break;
-   case 156:
--#line 1189 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 157:
--#line 1193 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 158:
--#line 1195 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         if ((yyvsp[(2) - (2)].command))
-                           (yyvsp[(2) - (2)].command)->flags ^= CMD_INVERT_RETURN;     /* toggle */
-@@ -3271,7 +3276,7 @@ yyreduce:
-     break;
-   case 159:
--#line 1201 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         if ((yyvsp[(2) - (2)].command))
-                           (yyvsp[(2) - (2)].command)->flags |= (yyvsp[(1) - (2)].number);
-@@ -3280,7 +3285,7 @@ yyreduce:
-     break;
-   case 160:
--#line 1207 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         ELEMENT x;
-@@ -3300,7 +3305,7 @@ yyreduce:
-     break;
-   case 161:
--#line 1224 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         ELEMENT x;
-@@ -3321,12 +3326,12 @@ yyreduce:
-     break;
-   case 162:
--#line 1244 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); }
-     break;
-   case 163:
--#line 1246 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     {
-                         /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
-                         COMMAND *tc;
-@@ -3352,28 +3357,28 @@ yyreduce:
-     break;
-   case 164:
--#line 1269 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 165:
--#line 1273 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.number) = CMD_TIME_PIPELINE; }
-     break;
-   case 166:
--#line 1275 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-     break;
-   case 167:
--#line 1277 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-     { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-     break;
- /* Line 1267 of yacc.c.  */
--#line 3377 "y.tab.c"
-+#line 3382 "y.tab.c"
-       default: break;
-     }
-   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
-@@ -3587,7 +3592,7 @@ yyreturn:
- }
--#line 1279 "/usr/homes/chet/src/bash/src/parse.y"
-+#line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
- /* Initial size to allocate for tokens, and the
-@@ -4948,6 +4953,21 @@ yylex ()
-    which allow ESAC to be the next one read. */
- static int esacs_needed_count;
-+static void
-+push_heredoc (r)
-+     REDIRECT *r;
-+{
-+  if (need_here_doc >= HEREDOC_MAX)
-+    {
-+      last_command_exit_value = EX_BADUSAGE;
-+      need_here_doc = 0;
-+      report_syntax_error (_("maximum here-document count exceeded"));
-+      reset_parser ();
-+      exit_shell (last_command_exit_value);
-+    }
-+  redir_stack[need_here_doc++] = r;
-+}
-+
- void
- gather_here_documents ()
- {
-@@ -8541,3 +8561,4 @@ set_line_mbstate ()
-     }
- }
- #endif /* HANDLE_MULTIBYTE */
-+
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 27
-+#define PATCHLEVEL 28
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/129-upstream-bash43-029.patch b/utils/bash/patches/129-upstream-bash43-029.patch
deleted file mode 100644 (file)
index be82403..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-029
-
-Bug-Reported-by:       Michal Zalewski <lcamtuf@coredump.cx>
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-When bash is parsing a function definition that contains a here-document
-delimited by end-of-file (or end-of-string), it leaves the closing delimiter
-uninitialized.  This can result in an invalid memory access when the parsed
-function is later copied.
-
-Patch (apply with `patch -p0'):
-
---- a/make_cmd.c
-+++ b/make_cmd.c
-@@ -692,6 +692,7 @@ make_redirection (source, instruction, d
-   /* First do the common cases. */
-   temp->redirector = source;
-   temp->redirectee = dest_and_filename;
-+  temp->here_doc_eof = 0;
-   temp->instruction = instruction;
-   temp->flags = 0;
-   temp->rflags = flags;
---- a/copy_cmd.c
-+++ b/copy_cmd.c
-@@ -126,7 +126,7 @@ copy_redirect (redirect)
-     {
-     case r_reading_until:
-     case r_deblank_reading_until:
--      new_redirect->here_doc_eof = savestring (redirect->here_doc_eof);
-+      new_redirect->here_doc_eof = redirect->here_doc_eof ? savestring (redirect->here_doc_eof) : 0;
-       /*FALLTHROUGH*/
-     case r_reading_string:
-     case r_appending_to:
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 28
-+#define PATCHLEVEL 29
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/130-upstream-bash43-030.patch b/utils/bash/patches/130-upstream-bash43-030.patch
deleted file mode 100644 (file)
index 0eadc5c..0000000
+++ /dev/null
@@ -1,1396 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-030
-
-Bug-Reported-by:       Michal Zalewski <lcamtuf@coredump.cx>
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-A combination of nested command substitutions and function importing from
-the environment can cause bash to execute code appearing in the environment
-variable value following the function definition.
-
-Patch (apply with `patch -p0'):
-
---- a/builtins/evalstring.c
-+++ b/builtins/evalstring.c
-@@ -308,12 +308,25 @@ parse_and_execute (string, from_file, fl
-           {
-             struct fd_bitmap *bitmap;
--            if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def)
-+            if (flags & SEVAL_FUNCDEF)
-               {
--                internal_warning ("%s: ignoring function definition attempt", from_file);
--                should_jump_to_top_level = 0;
--                last_result = last_command_exit_value = EX_BADUSAGE;
--                break;
-+                char *x;
-+
-+                /* If the command parses to something other than a straight
-+                   function definition, or if we have not consumed the entire
-+                   string, or if the parser has transformed the function
-+                   name (as parsing will if it begins or ends with shell
-+                   whitespace, for example), reject the attempt */
-+                if (command->type != cm_function_def ||
-+                    ((x = parser_remaining_input ()) && *x) ||
-+                    (STREQ (from_file, command->value.Function_def->name->word) == 0))
-+                  {
-+                    internal_warning (_("%s: ignoring function definition attempt"), from_file);
-+                    should_jump_to_top_level = 0;
-+                    last_result = last_command_exit_value = EX_BADUSAGE;
-+                    reset_parser ();
-+                    break;
-+                  }
-               }
-             bitmap = new_fd_bitmap (FD_BITMAP_SIZE);
-@@ -378,7 +391,10 @@ parse_and_execute (string, from_file, fl
-             discard_unwind_frame ("pe_dispose");
-             if (flags & SEVAL_ONECMD)
--              break;
-+              {
-+                reset_parser ();
-+                break;
-+              }
-           }
-       }
-       else
---- a/parse.y
-+++ b/parse.y
-@@ -2538,6 +2538,16 @@ shell_ungetc (c)
-     eol_ungetc_lookahead = c;
- }
-+char *
-+parser_remaining_input ()
-+{
-+  if (shell_input_line == 0)
-+    return 0;
-+  if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len)
-+    return '\0';      /* XXX */
-+  return (shell_input_line + shell_input_line_index);
-+}
-+
- #ifdef INCLUDE_UNUSED
- /* Back the input pointer up by one, effectively `ungetting' a character. */
- static void
-@@ -4027,8 +4037,8 @@ xparse_dolparen (base, string, indp, fla
-   reset_parser ();
-   /* reset_parser clears shell_input_line and associated variables */
-   restore_input_line_state (&ls);
--  if (interactive)
--    token_to_read = 0;
-+
-+  token_to_read = 0;
-   /* Need to find how many characters parse_and_execute consumed, update
-      *indp, if flags != 0, copy the portion of the string parsed into RET
---- a/shell.h
-+++ b/shell.h
-@@ -180,6 +180,8 @@ typedef struct _sh_input_line_state_t {
- } sh_input_line_state_t;
- /* Let's try declaring these here. */
-+extern char *parser_remaining_input __P((void));
-+
- extern sh_parser_state_t *save_parser_state __P((sh_parser_state_t *));
- extern void restore_parser_state __P((sh_parser_state_t *));
---- a/y.tab.c
-+++ b/y.tab.c
-@@ -168,7 +168,7 @@
- /* Copy the first part of user declarations.  */
--#line 21 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 21 "/usr/src/local/bash/bash-4.3-patched/parse.y"
- #include "config.h"
-@@ -497,7 +497,7 @@ static REDIRECTEE redir;
- #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
- typedef union YYSTYPE
--#line 329 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 329 "/usr/src/local/bash/bash-4.3-patched/parse.y"
- {
-   WORD_DESC *word;            /* the word that we read. */
-   int number;                 /* the number that we read. */
-@@ -2098,7 +2098,7 @@ yyreduce:
-   switch (yyn)
-     {
-         case 2:
--#line 383 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 383 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         /* Case of regular command.  Discard the error
-                            safety net,and return the command just parsed. */
-@@ -2112,7 +2112,7 @@ yyreduce:
-     break;
-   case 3:
--#line 394 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 394 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         /* Case of regular command, but not a very
-                            interesting one.  Return a NULL command. */
-@@ -2124,7 +2124,7 @@ yyreduce:
-     break;
-   case 4:
--#line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 403 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         /* Error during parsing.  Return NULL command. */
-                         global_command = (COMMAND *)NULL;
-@@ -2142,7 +2142,7 @@ yyreduce:
-     break;
-   case 5:
--#line 418 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 418 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         /* Case of EOF seen by itself.  Do ignoreeof or
-                            not. */
-@@ -2153,17 +2153,17 @@ yyreduce:
-     break;
-   case 6:
--#line 428 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 428 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
-     break;
-   case 7:
--#line 430 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 430 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); }
-     break;
-   case 8:
--#line 434 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 434 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2172,7 +2172,7 @@ yyreduce:
-     break;
-   case 9:
--#line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 440 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2181,7 +2181,7 @@ yyreduce:
-     break;
-   case 10:
--#line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 446 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2190,7 +2190,7 @@ yyreduce:
-     break;
-   case 11:
--#line 452 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 452 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2199,7 +2199,7 @@ yyreduce:
-     break;
-   case 12:
--#line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 458 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2208,7 +2208,7 @@ yyreduce:
-     break;
-   case 13:
--#line 464 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 464 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2217,7 +2217,7 @@ yyreduce:
-     break;
-   case 14:
--#line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 470 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2226,7 +2226,7 @@ yyreduce:
-     break;
-   case 15:
--#line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 476 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2235,7 +2235,7 @@ yyreduce:
-     break;
-   case 16:
--#line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 482 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2244,7 +2244,7 @@ yyreduce:
-     break;
-   case 17:
--#line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 488 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2253,7 +2253,7 @@ yyreduce:
-     break;
-   case 18:
--#line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 494 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2262,7 +2262,7 @@ yyreduce:
-     break;
-   case 19:
--#line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 500 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2271,7 +2271,7 @@ yyreduce:
-     break;
-   case 20:
--#line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 506 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2280,7 +2280,7 @@ yyreduce:
-     break;
-   case 21:
--#line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 512 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2289,7 +2289,7 @@ yyreduce:
-     break;
-   case 22:
--#line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 518 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2298,7 +2298,7 @@ yyreduce:
-     break;
-   case 23:
--#line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 524 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2308,7 +2308,7 @@ yyreduce:
-     break;
-   case 24:
--#line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 531 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2318,7 +2318,7 @@ yyreduce:
-     break;
-   case 25:
--#line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 538 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2328,7 +2328,7 @@ yyreduce:
-     break;
-   case 26:
--#line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 545 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2338,7 +2338,7 @@ yyreduce:
-     break;
-   case 27:
--#line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 552 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2348,7 +2348,7 @@ yyreduce:
-     break;
-   case 28:
--#line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 559 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2358,7 +2358,7 @@ yyreduce:
-     break;
-   case 29:
--#line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 566 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2367,7 +2367,7 @@ yyreduce:
-     break;
-   case 30:
--#line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 572 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2376,7 +2376,7 @@ yyreduce:
-     break;
-   case 31:
--#line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 578 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2385,7 +2385,7 @@ yyreduce:
-     break;
-   case 32:
--#line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 584 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 0;
-                         redir.dest = (yyvsp[(2) - (2)].number);
-@@ -2394,7 +2394,7 @@ yyreduce:
-     break;
-   case 33:
--#line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 590 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.dest = (yyvsp[(3) - (3)].number);
-@@ -2403,7 +2403,7 @@ yyreduce:
-     break;
-   case 34:
--#line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 596 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.dest = (yyvsp[(3) - (3)].number);
-@@ -2412,7 +2412,7 @@ yyreduce:
-     break;
-   case 35:
--#line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 602 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 1;
-                         redir.dest = (yyvsp[(2) - (2)].number);
-@@ -2421,7 +2421,7 @@ yyreduce:
-     break;
-   case 36:
--#line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 608 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.dest = (yyvsp[(3) - (3)].number);
-@@ -2430,7 +2430,7 @@ yyreduce:
-     break;
-   case 37:
--#line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 614 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.dest = (yyvsp[(3) - (3)].number);
-@@ -2439,7 +2439,7 @@ yyreduce:
-     break;
-   case 38:
--#line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 620 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 0;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2448,7 +2448,7 @@ yyreduce:
-     break;
-   case 39:
--#line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 626 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2457,7 +2457,7 @@ yyreduce:
-     break;
-   case 40:
--#line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 632 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2466,7 +2466,7 @@ yyreduce:
-     break;
-   case 41:
--#line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 638 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2475,7 +2475,7 @@ yyreduce:
-     break;
-   case 42:
--#line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 644 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2484,7 +2484,7 @@ yyreduce:
-     break;
-   case 43:
--#line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 650 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.filename = (yyvsp[(3) - (3)].word);
-@@ -2493,7 +2493,7 @@ yyreduce:
-     break;
-   case 44:
--#line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 656 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 1;
-                         redir.dest = 0;
-@@ -2502,7 +2502,7 @@ yyreduce:
-     break;
-   case 45:
--#line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 662 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.dest = 0;
-@@ -2511,7 +2511,7 @@ yyreduce:
-     break;
-   case 46:
--#line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 668 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.dest = 0;
-@@ -2520,7 +2520,7 @@ yyreduce:
-     break;
-   case 47:
--#line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 674 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 0;
-                         redir.dest = 0;
-@@ -2529,7 +2529,7 @@ yyreduce:
-     break;
-   case 48:
--#line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 680 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = (yyvsp[(1) - (3)].number);
-                         redir.dest = 0;
-@@ -2538,7 +2538,7 @@ yyreduce:
-     break;
-   case 49:
--#line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 686 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.filename = (yyvsp[(1) - (3)].word);
-                         redir.dest = 0;
-@@ -2547,7 +2547,7 @@ yyreduce:
-     break;
-   case 50:
--#line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 692 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2556,7 +2556,7 @@ yyreduce:
-     break;
-   case 51:
--#line 698 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 698 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         source.dest = 1;
-                         redir.filename = (yyvsp[(2) - (2)].word);
-@@ -2565,29 +2565,29 @@ yyreduce:
-     break;
-   case 52:
--#line 706 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 706 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
-     break;
-   case 53:
--#line 708 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 708 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
-     break;
-   case 54:
--#line 710 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 710 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; }
-     break;
-   case 55:
--#line 714 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 714 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.redirect) = (yyvsp[(1) - (1)].redirect);
-                       }
-     break;
-   case 56:
--#line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 718 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         register REDIRECT *t;
-@@ -2599,27 +2599,27 @@ yyreduce:
-     break;
-   case 57:
--#line 729 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 729 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); }
-     break;
-   case 58:
--#line 731 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 731 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); }
-     break;
-   case 59:
--#line 735 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 735 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); }
-     break;
-   case 60:
--#line 737 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 737 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 61:
--#line 739 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 739 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         COMMAND *tc;
-@@ -2638,72 +2638,72 @@ yyreduce:
-     break;
-   case 62:
--#line 755 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 755 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 63:
--#line 757 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 757 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 64:
--#line 761 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 761 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 65:
--#line 763 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 763 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 66:
--#line 765 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 765 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
-     break;
-   case 67:
--#line 767 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 767 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
-     break;
-   case 68:
--#line 769 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 769 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 69:
--#line 771 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 771 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 70:
--#line 773 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 773 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 71:
--#line 775 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 775 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 72:
--#line 777 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 777 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 73:
--#line 779 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 779 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 74:
--#line 781 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 781 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 75:
--#line 785 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 785 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2711,7 +2711,7 @@ yyreduce:
-     break;
-   case 76:
--#line 790 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 790 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2719,7 +2719,7 @@ yyreduce:
-     break;
-   case 77:
--#line 795 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 795 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2727,7 +2727,7 @@ yyreduce:
-     break;
-   case 78:
--#line 800 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 800 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2735,7 +2735,7 @@ yyreduce:
-     break;
-   case 79:
--#line 805 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 805 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2743,7 +2743,7 @@ yyreduce:
-     break;
-   case 80:
--#line 810 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 810 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2751,7 +2751,7 @@ yyreduce:
-     break;
-   case 81:
--#line 815 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 815 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2759,7 +2759,7 @@ yyreduce:
-     break;
-   case 82:
--#line 820 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 820 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2767,7 +2767,7 @@ yyreduce:
-     break;
-   case 83:
--#line 827 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 827 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                                 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
-                                 if (word_top > 0) word_top--;
-@@ -2775,7 +2775,7 @@ yyreduce:
-     break;
-   case 84:
--#line 832 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 832 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                                 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
-                                 if (word_top > 0) word_top--;
-@@ -2783,7 +2783,7 @@ yyreduce:
-     break;
-   case 85:
--#line 837 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 837 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                                 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
-                                 if (word_top > 0) word_top--;
-@@ -2791,7 +2791,7 @@ yyreduce:
-     break;
-   case 86:
--#line 842 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 842 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                                 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
-                                 if (word_top > 0) word_top--;
-@@ -2799,7 +2799,7 @@ yyreduce:
-     break;
-   case 87:
--#line 849 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 849 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2807,7 +2807,7 @@ yyreduce:
-     break;
-   case 88:
--#line 854 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 854 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2815,7 +2815,7 @@ yyreduce:
-     break;
-   case 89:
--#line 859 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 859 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2823,7 +2823,7 @@ yyreduce:
-     break;
-   case 90:
--#line 864 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 864 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2831,7 +2831,7 @@ yyreduce:
-     break;
-   case 91:
--#line 869 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 869 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2839,7 +2839,7 @@ yyreduce:
-     break;
-   case 92:
--#line 874 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 874 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2847,7 +2847,7 @@ yyreduce:
-     break;
-   case 93:
--#line 881 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 881 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2855,7 +2855,7 @@ yyreduce:
-     break;
-   case 94:
--#line 886 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 886 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2863,7 +2863,7 @@ yyreduce:
-     break;
-   case 95:
--#line 891 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 891 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]);
-                         if (word_top > 0) word_top--;
-@@ -2871,27 +2871,27 @@ yyreduce:
-     break;
-   case 96:
--#line 898 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 898 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); }
-     break;
-   case 97:
--#line 901 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 901 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); }
-     break;
-   case 98:
--#line 904 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 904 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); }
-     break;
-   case 99:
--#line 908 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 908 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 100:
--#line 910 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 910 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         COMMAND *tc;
-@@ -2923,7 +2923,7 @@ yyreduce:
-     break;
-   case 101:
--#line 941 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 941 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command));
-                         (yyval.command)->flags |= CMD_WANT_SUBSHELL;
-@@ -2931,7 +2931,7 @@ yyreduce:
-     break;
-   case 102:
--#line 948 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 948 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command));
-                         (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
-@@ -2939,7 +2939,7 @@ yyreduce:
-     break;
-   case 103:
--#line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 953 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         COMMAND *tc;
-@@ -2959,7 +2959,7 @@ yyreduce:
-     break;
-   case 104:
--#line 970 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 970 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command));
-                         (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
-@@ -2967,7 +2967,7 @@ yyreduce:
-     break;
-   case 105:
--#line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 975 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         COMMAND *tc;
-@@ -2987,7 +2987,7 @@ yyreduce:
-     break;
-   case 106:
--#line 992 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 992 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command)));
-                         (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
-@@ -2995,117 +2995,117 @@ yyreduce:
-     break;
-   case 107:
--#line 999 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 999 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); }
-     break;
-   case 108:
--#line 1001 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1001 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); }
-     break;
-   case 109:
--#line 1003 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1003 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); }
-     break;
-   case 110:
--#line 1008 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1008 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); }
-     break;
-   case 111:
--#line 1012 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1012 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); }
-     break;
-   case 112:
--#line 1016 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1016 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(2) - (3)].command); }
-     break;
-   case 113:
--#line 1020 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1020 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); }
-     break;
-   case 114:
--#line 1022 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1022 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); }
-     break;
-   case 115:
--#line 1024 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1024 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); }
-     break;
-   case 117:
--#line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1029 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); }
-     break;
-   case 118:
--#line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1033 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); }
-     break;
-   case 119:
--#line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1035 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); }
-     break;
-   case 120:
--#line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1037 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); }
-     break;
-   case 121:
--#line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1039 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); }
-     break;
-   case 122:
--#line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1043 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
-     break;
-   case 123:
--#line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1045 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
-     break;
-   case 124:
--#line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1047 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
-     break;
-   case 125:
--#line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1049 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
-     break;
-   case 126:
--#line 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1051 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
-     break;
-   case 127:
--#line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1053 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
-     break;
-   case 128:
--#line 1057 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1057 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
-     break;
-   case 129:
--#line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1059 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); }
-     break;
-   case 130:
--#line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1068 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = (yyvsp[(2) - (2)].command);
-                         if (need_here_doc)
-@@ -3114,14 +3114,14 @@ yyreduce:
-     break;
-   case 132:
--#line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1077 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = (yyvsp[(2) - (2)].command);
-                       }
-     break;
-   case 134:
--#line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1084 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         if ((yyvsp[(1) - (3)].command)->type == cm_connection)
-                           (yyval.command) = connect_async_list ((yyvsp[(1) - (3)].command), (COMMAND *)NULL, '&');
-@@ -3131,17 +3131,17 @@ yyreduce:
-     break;
-   case 136:
--#line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1095 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
-     break;
-   case 137:
--#line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1097 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
-     break;
-   case 138:
--#line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1099 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         if ((yyvsp[(1) - (4)].command)->type == cm_connection)
-                           (yyval.command) = connect_async_list ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '&');
-@@ -3151,37 +3151,37 @@ yyreduce:
-     break;
-   case 139:
--#line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1106 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
-     break;
-   case 140:
--#line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1108 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
-     break;
-   case 141:
--#line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1110 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 144:
--#line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1118 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.number) = '\n'; }
-     break;
-   case 145:
--#line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1120 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.number) = ';'; }
-     break;
-   case 146:
--#line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1122 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.number) = yacc_EOF; }
-     break;
-   case 149:
--#line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1136 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = (yyvsp[(1) - (1)].command);
-                         if (need_here_doc)
-@@ -3197,7 +3197,7 @@ yyreduce:
-     break;
-   case 150:
--#line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1149 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         if ((yyvsp[(1) - (2)].command)->type == cm_connection)
-                           (yyval.command) = connect_async_list ((yyvsp[(1) - (2)].command), (COMMAND *)NULL, '&');
-@@ -3216,7 +3216,7 @@ yyreduce:
-     break;
-   case 151:
--#line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1165 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         (yyval.command) = (yyvsp[(1) - (2)].command);
-                         if (need_here_doc)
-@@ -3232,17 +3232,17 @@ yyreduce:
-     break;
-   case 152:
--#line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1180 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
-     break;
-   case 153:
--#line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1182 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
-     break;
-   case 154:
--#line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1184 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         if ((yyvsp[(1) - (3)].command)->type == cm_connection)
-                           (yyval.command) = connect_async_list ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), '&');
-@@ -3252,22 +3252,22 @@ yyreduce:
-     break;
-   case 155:
--#line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1191 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); }
-     break;
-   case 156:
--#line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1194 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 157:
--#line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1198 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 158:
--#line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1200 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         if ((yyvsp[(2) - (2)].command))
-                           (yyvsp[(2) - (2)].command)->flags ^= CMD_INVERT_RETURN;     /* toggle */
-@@ -3276,7 +3276,7 @@ yyreduce:
-     break;
-   case 159:
--#line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1206 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         if ((yyvsp[(2) - (2)].command))
-                           (yyvsp[(2) - (2)].command)->flags |= (yyvsp[(1) - (2)].number);
-@@ -3285,7 +3285,7 @@ yyreduce:
-     break;
-   case 160:
--#line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1212 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         ELEMENT x;
-@@ -3305,7 +3305,7 @@ yyreduce:
-     break;
-   case 161:
--#line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1229 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         ELEMENT x;
-@@ -3326,12 +3326,12 @@ yyreduce:
-     break;
-   case 162:
--#line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1249 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); }
-     break;
-   case 163:
--#line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1251 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     {
-                         /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
-                         COMMAND *tc;
-@@ -3357,22 +3357,22 @@ yyreduce:
-     break;
-   case 164:
--#line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1274 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.command) = (yyvsp[(1) - (1)].command); }
-     break;
-   case 165:
--#line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1278 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.number) = CMD_TIME_PIPELINE; }
-     break;
-   case 166:
--#line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1280 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-     break;
-   case 167:
--#line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1282 "/usr/src/local/bash/bash-4.3-patched/parse.y"
-     { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-     break;
-@@ -3592,7 +3592,7 @@ yyreturn:
- }
--#line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
-+#line 1284 "/usr/src/local/bash/bash-4.3-patched/parse.y"
- /* Initial size to allocate for tokens, and the
-@@ -4850,6 +4850,16 @@ shell_ungetc (c)
-     eol_ungetc_lookahead = c;
- }
-+char *
-+parser_remaining_input ()
-+{
-+  if (shell_input_line == 0)
-+    return 0;
-+  if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len)
-+    return '\0';      /* XXX */
-+  return (shell_input_line + shell_input_line_index);
-+}
-+
- #ifdef INCLUDE_UNUSED
- /* Back the input pointer up by one, effectively `ungetting' a character. */
- static void
-@@ -6339,8 +6349,8 @@ xparse_dolparen (base, string, indp, fla
-   reset_parser ();
-   /* reset_parser clears shell_input_line and associated variables */
-   restore_input_line_state (&ls);
--  if (interactive)
--    token_to_read = 0;
-+
-+  token_to_read = 0;
-   /* Need to find how many characters parse_and_execute consumed, update
-      *indp, if flags != 0, copy the portion of the string parsed into RET
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 29
-+#define PATCHLEVEL 30
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/131-upstream-bash43-031.patch b/utils/bash/patches/131-upstream-bash43-031.patch
deleted file mode 100644 (file)
index a22cb07..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-031
-
-Bug-Reported-by:       lolilolicon <lolilolicon@gmail.com>
-Bug-Reference-ID:      <CAMtVo_Nz=32Oq=zWTb6=+8gUNXOo2rRvud1W4oPnA-cgVk_ZqQ@mail.gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-08/msg00139.html
-
-Bug-Description:
-
-The new nameref assignment functionality introduced in bash-4.3 did not perform
-enough validation on the variable value and would create variables with
-invalid names.
-
-Patch (apply with `patch -p0'):
-
---- a/subst.h
-+++ b/subst.h
-@@ -47,6 +47,7 @@
- #define ASS_MKASSOC   0x0004
- #define ASS_MKGLOBAL  0x0008  /* force global assignment */
- #define ASS_NAMEREF   0x0010  /* assigning to nameref variable */
-+#define ASS_FROMREF   0x0020  /* assigning from value of nameref variable */
- /* Flags for the string extraction functions. */
- #define SX_NOALLOC    0x0001  /* just skip; don't return substring */
---- a/variables.c
-+++ b/variables.c
-@@ -2516,10 +2516,27 @@ bind_variable_internal (name, value, tab
-      HASH_TABLE *table;
-      int hflags, aflags;
- {
--  char *newval;
-+  char *newname, *newval;
-   SHELL_VAR *entry;
-+#if defined (ARRAY_VARS)
-+  arrayind_t ind;
-+  char *subp;
-+  int sublen;
-+#endif
-+  newname = 0;
-+#if defined (ARRAY_VARS)
-+  if ((aflags & ASS_FROMREF) && (hflags & HASH_NOSRCH) == 0 && valid_array_reference (name))
-+    {
-+      newname = array_variable_name (name, &subp, &sublen);
-+      if (newname == 0)
-+      return (SHELL_VAR *)NULL;       /* XXX */
-+      entry = hash_lookup (newname, table);
-+    }
-+  else
-+#endif
-   entry = (hflags & HASH_NOSRCH) ? (SHELL_VAR *)NULL : hash_lookup (name, table);
-+
-   /* Follow the nameref chain here if this is the global variables table */
-   if (entry && nameref_p (entry) && (invisible_p (entry) == 0) && table == global_variables->table)
-     {
-@@ -2550,6 +2567,16 @@ bind_variable_internal (name, value, tab
-       var_setvalue (entry, make_variable_value (entry, value, 0));
-       }
-     }
-+#if defined (ARRAY_VARS)
-+  else if (entry == 0 && newname)
-+    {
-+      entry = make_new_array_variable (newname);      /* indexed array by default */
-+      if (entry == 0)
-+      return entry;
-+      ind = array_expand_index (name, subp, sublen);
-+      bind_array_element (entry, ind, value, aflags);
-+    }
-+#endif
-   else if (entry == 0)
-     {
-       entry = make_new_variable (name, table);
-@@ -2670,7 +2697,8 @@ bind_variable (name, value, flags)
-                        normal. */
-                     if (nameref_cell (nv) == 0)
-                       return (bind_variable_internal (nv->name, value, nvc->table, 0, flags));
--                    return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags));
-+                    /* XXX - bug here with ref=array[index] */
-+                    return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags|ASS_FROMREF));
-                   }
-                 else
-                   v = nv;
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 30
-+#define PATCHLEVEL 31
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/132-upstream-bash43-032.patch b/utils/bash/patches/132-upstream-bash43-032.patch
deleted file mode 100644 (file)
index 96a86c9..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-032
-
-Bug-Reported-by:       crispusfairbairn@gmail.com
-Bug-Reference-ID:      <b5e499f7-3b98-408d-9f94-c0387580e73a@googlegroups.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00013.html
-
-Bug-Description:
-
-When bash is running in Posix mode, it allows signals -- including SIGCHLD --
-to interrupt the `wait' builtin, as Posix requires.  However, the interrupt
-causes bash to not run a SIGCHLD trap for all exited children.  This patch
-fixes the issue and restores the documented behavior in Posix mode.
-
-Patch (apply with `patch -p0'):
-
---- a/jobs.c
-+++ b/jobs.c
-@@ -3339,7 +3339,9 @@ itrace("waitchld: waitpid returns %d blo
-       if (posixly_correct && this_shell_builtin && this_shell_builtin == wait_builtin)
-       {
-         interrupt_immediately = 0;
--        trap_handler (SIGCHLD);       /* set pending_traps[SIGCHLD] */
-+        /* This was trap_handler (SIGCHLD) but that can lose traps if
-+           children_exited > 1 */
-+        queue_sigchld_trap (children_exited);
-         wait_signal_received = SIGCHLD;
-         /* If we're in a signal handler, let CHECK_WAIT_INTR pick it up;
-            run_pending_traps will call run_sigchld_trap later  */
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 31
-+#define PATCHLEVEL 32
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/133-upstream-bash43-033.patch b/utils/bash/patches/133-upstream-bash43-033.patch
deleted file mode 100644 (file)
index 6210b5e..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-033
-
-Bug-Reported-by:       mickael9@gmail.com, Jan Rome <jan.rome@gmail.com>
-Bug-Reference-ID:      <20140907224046.382ED3610CC@mickael-laptop.localdomain>,
-                       <540D661D.50908@gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00029.html
-                       http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00030.html
-
-Bug-Description:
-
-Bash does not clean up the terminal state in all cases where bash or
-readline  modifies it and bash is subsequently terminated by a fatal signal.
-This happens when the `read' builtin modifies the terminal settings, both
-when readline is active and when it is not.  It occurs most often when a script
-installs a trap that exits on a signal without re-sending the signal to itself.
-
-Patch (apply with `patch -p0'):
-
---- a/shell.c
-+++ b/shell.c
-@@ -73,6 +73,7 @@
- #endif
- #if defined (READLINE)
-+#  include <readline/readline.h>
- #  include "bashline.h"
- #endif
-@@ -909,6 +910,14 @@ exit_shell (s)
-   fflush (stdout);            /* XXX */
-   fflush (stderr);
-+  /* Clean up the terminal if we are in a state where it's been modified. */
-+#if defined (READLINE)
-+  if (RL_ISSTATE (RL_STATE_TERMPREPPED) && rl_deprep_term_function)
-+    (*rl_deprep_term_function) ();
-+#endif
-+  if (read_tty_modified ())
-+    read_tty_cleanup ();
-+
-   /* Do trap[0] if defined.  Allow it to override the exit status
-      passed to us. */
-   if (signal_is_trapped (0))
---- a/builtins/read.def
-+++ b/builtins/read.def
-@@ -140,10 +140,12 @@ static void reset_alarm __P((void));
- procenv_t alrmbuf;
- int sigalrm_seen;
--static int reading;
-+static int reading, tty_modified;
- static SigHandler *old_alrm;
- static unsigned char delim;
-+static struct ttsave termsave;
-+
- /* In all cases, SIGALRM just sets a flag that we check periodically.  This
-    avoids problems with the semi-tricky stuff we do with the xfree of
-    input_string at the top of the unwind-protect list (see below). */
-@@ -188,7 +190,6 @@ read_builtin (list)
-   struct stat tsb;
-   SHELL_VAR *var;
-   TTYSTRUCT ttattrs, ttset;
--  struct ttsave termsave;
- #if defined (ARRAY_VARS)
-   WORD_LIST *alist;
- #endif
-@@ -221,7 +222,7 @@ read_builtin (list)
-   USE_VAR(ps2);
-   USE_VAR(lastsig);
--  sigalrm_seen = reading = 0;
-+  sigalrm_seen = reading = tty_modified = 0;
-   i = 0;              /* Index into the string that we are reading. */
-   raw = edit = 0;     /* Not reading raw input by default. */
-@@ -438,6 +439,8 @@ read_builtin (list)
-         retval = 128+SIGALRM;
-         goto assign_vars;
-       }
-+      if (interactive_shell == 0)
-+      initialize_terminating_signals ();
-       old_alrm = set_signal_handler (SIGALRM, sigalrm);
-       add_unwind_protect (reset_alarm, (char *)NULL);
- #if defined (READLINE)
-@@ -482,7 +485,10 @@ read_builtin (list)
-         i = silent ? ttfd_cbreak (fd, &ttset) : ttfd_onechar (fd, &ttset);
-         if (i < 0)
-           sh_ttyerror (1);
-+        tty_modified = 1;
-         add_unwind_protect ((Function *)ttyrestore, (char *)&termsave);
-+        if (interactive_shell == 0)
-+          initialize_terminating_signals ();
-       }
-     }
-   else if (silent)    /* turn off echo but leave term in canonical mode */
-@@ -497,7 +503,10 @@ read_builtin (list)
-       if (i < 0)
-       sh_ttyerror (1);
-+      tty_modified = 1;
-       add_unwind_protect ((Function *)ttyrestore, (char *)&termsave);
-+      if (interactive_shell == 0)
-+      initialize_terminating_signals ();
-     }
-   /* This *must* be the top unwind-protect on the stack, so the manipulation
-@@ -588,6 +597,8 @@ read_builtin (list)
-           }
-         else
-           lastsig = 0;
-+        if (terminating_signal && tty_modified)
-+          ttyrestore (&termsave);     /* fix terminal before exiting */
-         CHECK_TERMSIG;
-         eof = 1;
-         break;
-@@ -978,6 +989,20 @@ ttyrestore (ttp)
-      struct ttsave *ttp;
- {
-   ttsetattr (ttp->fd, ttp->attrs);
-+  tty_modified = 0;
-+}
-+
-+void
-+read_tty_cleanup ()
-+{
-+  if (tty_modified)
-+    ttyrestore (&termsave);
-+}
-+
-+int
-+read_tty_modified ()
-+{
-+  return (tty_modified);
- }
- #if defined (READLINE)
---- a/builtins/common.h
-+++ b/builtins/common.h
-@@ -122,6 +122,10 @@ extern void bash_logout __P((void));
- /* Functions from getopts.def */
- extern void getopts_reset __P((int));
-+/* Functions from read.def */
-+extern void read_tty_cleanup __P((void));
-+extern int read_tty_modified __P((void));
-+
- /* Functions from set.def */
- extern int minus_o_option_value __P((char *));
- extern void list_minus_o_opts __P((int, int));
---- a/bashline.c
-+++ b/bashline.c
-@@ -202,6 +202,7 @@ extern int current_command_line_count, s
- extern int last_command_exit_value;
- extern int array_needs_making;
- extern int posixly_correct, no_symbolic_links;
-+extern int sigalrm_seen;
- extern char *current_prompt_string, *ps1_prompt;
- extern STRING_INT_ALIST word_token_alist[];
- extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin;
-@@ -4208,8 +4209,9 @@ bash_event_hook ()
- {
-   /* If we're going to longjmp to top_level, make sure we clean up readline.
-      check_signals will call QUIT, which will eventually longjmp to top_level,
--     calling run_interrupt_trap along the way. */
--  if (interrupt_state)
-+     calling run_interrupt_trap along the way.  The check for sigalrm_seen is
-+     to clean up the read builtin's state. */
-+  if (terminating_signal || interrupt_state || sigalrm_seen)
-     rl_cleanup_after_signal ();
-   bashline_reset_event_hook ();
-   check_signals_and_traps (); /* XXX */
---- a/sig.c
-+++ b/sig.c
-@@ -532,8 +532,10 @@ termsig_sighandler (sig)
- #if defined (READLINE)
-   /* Set the event hook so readline will call it after the signal handlers
-      finish executing, so if this interrupted character input we can get
--     quick response. */
--  if (interactive_shell && interactive && no_line_editing == 0)
-+     quick response.  If readline is active or has modified the terminal we
-+     need to set this no matter what the signal is, though the check for
-+     RL_STATE_TERMPREPPED is possibly redundant. */
-+  if (RL_ISSTATE (RL_STATE_SIGHANDLER) || RL_ISSTATE (RL_STATE_TERMPREPPED))
-     bashline_set_event_hook ();
- #endif
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 32
-+#define PATCHLEVEL 33
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/134-upstream-bash43-034.patch b/utils/bash/patches/134-upstream-bash43-034.patch
deleted file mode 100644 (file)
index d3c4f8f..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-034
-
-Bug-Reported-by:       Dreamcat4 <dreamcat4@gmail.com>
-Bug-Reference-ID:      <CAN39uTpAEs2GFu4ebC_SfSVMRTh-DJ9YanrY4BZZ3OO+CCHjng@mail.gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2015-05/msg00001.html
-
-Bug-Description:
-
-If neither the -f nor -v options is supplied to unset, and a name argument is
-found to be a function and unset, subsequent name arguments are not treated as
-variables before attempting to unset a function by that name.
-
-Patch (apply with `patch -p0'):
-
---- a/builtins/set.def
-+++ b/builtins/set.def
-@@ -751,9 +751,11 @@ unset_builtin (list)
-   WORD_LIST *list;
- {
-   int unset_function, unset_variable, unset_array, opt, nameref, any_failed;
-+  int global_unset_func, global_unset_var;
-   char *name;
-   unset_function = unset_variable = unset_array = nameref = any_failed = 0;
-+  global_unset_func = global_unset_var = 0;
-   reset_internal_getopt ();
-   while ((opt = internal_getopt (list, "fnv")) != -1)
-@@ -761,10 +763,10 @@ unset_builtin (list)
-       switch (opt)
-       {
-       case 'f':
--        unset_function = 1;
-+        global_unset_func = 1;
-         break;
-       case 'v':
--        unset_variable = 1;
-+        global_unset_var = 1;
-         break;
-       case 'n':
-         nameref = 1;
-@@ -777,7 +779,7 @@ unset_builtin (list)
-   list = loptend;
--  if (unset_function && unset_variable)
-+  if (global_unset_func && global_unset_var)
-     {
-       builtin_error (_("cannot simultaneously unset a function and a variable"));
-       return (EXECUTION_FAILURE);
-@@ -795,6 +797,9 @@ unset_builtin (list)
-       name = list->word->word;
-+      unset_function = global_unset_func;
-+      unset_variable = global_unset_var;
-+
- #if defined (ARRAY_VARS)
-       unset_array = 0;
-       if (!unset_function && valid_array_reference (name))
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 33
-+#define PATCHLEVEL 34
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/135-upstream-bash43-035.patch b/utils/bash/patches/135-upstream-bash43-035.patch
deleted file mode 100644 (file)
index 4e614ce..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-035
-
-Bug-Reported-by:       <romerox.adrian@gmail.com>
-Bug-Reference-ID:      <CABV5r3zhPXmSKUe9uedeGc5YFBM2njJ1iVmY2h5neWdQpDBQug@mail.gmail.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-08/msg00045.html
-
-Bug-Description:
-
-A locale with a long name can trigger a buffer overflow and core dump.  This
-applies on systems that do not have locale_charset in libc, are not using
-GNU libiconv, and are not using the libintl that ships with bash in lib/intl.
-
-Patch (apply with `patch -p0'):
-
---- a/lib/sh/unicode.c
-+++ b/lib/sh/unicode.c
-@@ -78,13 +78,15 @@ stub_charset ()
-   s = strrchr (locale, '.');
-   if (s)
-     {
--      strcpy (charsetbuf, s+1);
-+      strncpy (charsetbuf, s+1, sizeof (charsetbuf) - 1);
-+      charsetbuf[sizeof (charsetbuf) - 1] = '\0';
-       t = strchr (charsetbuf, '@');
-       if (t)
-       *t = 0;
-       return charsetbuf;
-     }
--  strcpy (charsetbuf, locale);
-+  strncpy (charsetbuf, locale, sizeof (charsetbuf) - 1);
-+  charsetbuf[sizeof (charsetbuf) - 1] = '\0';
-   return charsetbuf;
- }
- #endif
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 34
-+#define PATCHLEVEL 35
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/136-upstream-bash43-036.patch b/utils/bash/patches/136-upstream-bash43-036.patch
deleted file mode 100644 (file)
index 198b662..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-036
-
-Bug-Reported-by:       emanuelczirai@cryptolab.net
-Bug-Reference-ID:      <f962e4f556da5ebfadaf7afe9c78a8cb@cryptolab.net>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2015-02/msg00071.html
-
-Bug-Description:
-
-When evaluating and setting integer variables, and the assignment fails to
-create a variable (for example, when performing an operation on an array
-variable with an invalid subscript), bash attempts to dereference a null
-pointer, causing a segmentation violation.
-
-Patch (apply with `patch -p0'):
-
---- a/variables.c
-+++ b/variables.c
-@@ -2833,10 +2833,12 @@ bind_int_variable (lhs, rhs)
- #endif
-     v = bind_variable (lhs, rhs, 0);
--  if (v && isint)
--    VSETATTR (v, att_integer);
--
--  VUNSETATTR (v, att_invisible);
-+  if (v)
-+    {
-+      if (isint)
-+      VSETATTR (v, att_integer);
-+      VUNSETATTR (v, att_invisible);
-+    }
-   return (v);
- }
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 35
-+#define PATCHLEVEL 36
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/137-upstream-bash43-037.patch b/utils/bash/patches/137-upstream-bash43-037.patch
deleted file mode 100644 (file)
index 946e9fe..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-037
-
-Bug-Reported-by:       Greg Wooledge <wooledg@eeg.ccf.org>
-Bug-Reference-ID:      <20150204144240.GN13956@eeg.ccf.org>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2015-02/msg00007.html
-
-Bug-Description:
-
-If an associative array uses `@' or `*' as a subscript, `declare -p' produces
-output that cannot be reused as input.
-
-Patch (apply with `patch -p0'):
-
---- a/assoc.c
-+++ b/assoc.c
-@@ -436,6 +436,8 @@ assoc_to_assign (hash, quoted)
- #if 1
-       if (sh_contains_shell_metas (tlist->key))
-         istr = sh_double_quote (tlist->key);
-+      else if (ALL_ELEMENT_SUB (tlist->key[0]) && tlist->key[1] == '\0')
-+        istr = sh_double_quote (tlist->key);  
-       else
-         istr = tlist->key;    
- #else
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 36
-+#define PATCHLEVEL 37
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/138-upstream-bash43-038.patch b/utils/bash/patches/138-upstream-bash43-038.patch
deleted file mode 100644 (file)
index 9857847..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-038
-
-Bug-Reported-by:       worley@alum.mit.edu (Dale R. Worley)
-Bug-Reference-ID:      <201406100051.s5A0pCeB014978@hobgoblin.ariadne.com>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00028.html
-
-Bug-Description:
-
-There are a number of instances where `time' is not recognized as a reserved
-word when the shell grammar says it should be.
-
-Patch (apply with `patch -p0'):
-
---- a/parse.y
-+++ b/parse.y
-@@ -2818,11 +2818,16 @@ time_command_acceptable ()
-     case AND_AND:
-     case OR_OR:
-     case '&':
-+    case WHILE:
-     case DO:
-+    case UNTIL:
-+    case IF:
-     case THEN:
-+    case ELIF:
-     case ELSE:
-     case '{':         /* } */
--    case '(':         /* ) */
-+    case '(':         /* )( */
-+    case ')':         /* only valid in case statement */
-     case BANG:                /* ! time pipeline */
-     case TIME:                /* time time pipeline */
-     case TIMEOPT:     /* time -p time pipeline */
---- a/y.tab.c
-+++ b/y.tab.c
-@@ -5130,11 +5130,16 @@ time_command_acceptable ()
-     case AND_AND:
-     case OR_OR:
-     case '&':
-+    case WHILE:
-     case DO:
-+    case UNTIL:
-+    case IF:
-     case THEN:
-+    case ELIF:
-     case ELSE:
-     case '{':         /* } */
--    case '(':         /* ) */
-+    case '(':         /* )( */
-+    case ')':         /* only valid in case statement */
-     case BANG:                /* ! time pipeline */
-     case TIME:                /* time time pipeline */
-     case TIMEOPT:     /* time -p time pipeline */
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 37
-+#define PATCHLEVEL 38
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/139-upstream-bash43-039.patch b/utils/bash/patches/139-upstream-bash43-039.patch
deleted file mode 100644 (file)
index f8ad363..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-039
-
-Bug-Reported-by:       SN <poczta-sn@gazeta.pl>
-Bug-Reference-ID:      <54E2554C.205@gazeta.pl>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2015-02/msg00060.html
-
-Bug-Description:
-
-Using the output of `declare -p' when run in a function can result in variables
-that are invisible to `declare -p'.  This problem occurs when an assignment
-builtin such as `declare' receives a quoted compound array assignment as one of
-its arguments.
-
-Patch (apply with `patch -p0'):
-
---- a/arrayfunc.c
-+++ b/arrayfunc.c
-@@ -404,6 +404,9 @@ assign_array_var_from_word_list (var, li
-       (*var->assign_func) (var, l->word->word, i, 0);
-     else
-       array_insert (a, i, l->word->word);
-+
-+  VUNSETATTR (var, att_invisible);    /* no longer invisible */
-+
-   return var;
- }
-@@ -634,6 +637,10 @@ assign_array_var_from_string (var, value
-   if (nlist)
-     dispose_words (nlist);
-+
-+  if (var)
-+    VUNSETATTR (var, att_invisible);  /* no longer invisible */
-+
-   return (var);
- }
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 38
-+#define PATCHLEVEL 39
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/140-upstream-bash43-040.patch b/utils/bash/patches/140-upstream-bash43-040.patch
deleted file mode 100644 (file)
index a329d37..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-040
-
-Bug-Reported-by:       Jean Delvare <jdelvare@suse.de>
-Bug-Reference-ID:      <20150609180231.5f463695@endymion.delvare>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00033.html
-
-Bug-Description:
-
-There is a memory leak that occurs when bash expands an array reference on
-the rhs of an assignment statement.
-
-Patch (apply with `patch -p0'):
-
---- a/subst.c
-+++ b/subst.c
-@@ -5782,7 +5782,7 @@ expand_arrayref:
-       /* XXX - does this leak if name[@] or name[*]? */
-       if (pflags & PF_ASSIGNRHS)
-         {
--          temp = array_variable_name (name, &tt, (int *)0);
-+          var = array_variable_part (name, &tt, (int *)0);
-           if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == ']')
-           temp = array_value (name, quoted|Q_DOUBLE_QUOTES, 0, &atype, &ind);
-         else
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 39
-+#define PATCHLEVEL 40
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/141-upstream-bash43-041.patch b/utils/bash/patches/141-upstream-bash43-041.patch
deleted file mode 100644 (file)
index 75fdace..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-041
-
-Bug-Reported-by:       Hanno Böck <hanno@hboeck.de>
-Bug-Reference-ID:      <20150623131106.6f111da9@pc1>, <20150707004640.0e61d2f9@pc1>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00089.html,
-                       http://lists.gnu.org/archive/html/bug-bash/2015-07/msg00018.html
-
-Bug-Description:
-
-There are several out-of-bounds read errors that occur when completing command
-lines where assignment statements appear before the command name.  The first
-two appear only when programmable completion is enabled; the last one only
-happens when listing possible completions.
-
-Patch (apply with `patch -p0'):
-
---- a/bashline.c
-+++ b/bashline.c
-@@ -1468,10 +1468,23 @@ attempt_shell_completion (text, start, e
-       os = start;
-       n = 0;
-+      was_assignment = 0;
-       s = find_cmd_start (os);
-       e = find_cmd_end (end);
-       do
-       {
-+        /* Don't read past the end of rl_line_buffer */
-+        if (s > rl_end)
-+          {
-+            s1 = s = e1;
-+            break;
-+          }
-+        /* Or past point if point is within an assignment statement */
-+        else if (was_assignment && s > rl_point)
-+          {
-+            s1 = s = e1;
-+            break;
-+          }
-         /* Skip over assignment statements preceding a command name.  If we
-            don't find a command name at all, we can perform command name
-            completion.  If we find a partial command name, we should perform
---- a/lib/readline/complete.c
-+++ b/lib/readline/complete.c
-@@ -689,6 +689,8 @@ printable_part (pathname)
-   if (temp == 0 || *temp == '\0')
-     return (pathname);
-+  else if (temp[1] == 0 && temp == pathname)
-+    return (pathname);
-   /* If the basename is NULL, we might have a pathname like '/usr/src/'.
-      Look for a previous slash and, if one is found, return the portion
-      following that slash.  If there's no previous slash, just return the
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 40
-+#define PATCHLEVEL 41
- #endif /* _PATCHLEVEL_H_ */
diff --git a/utils/bash/patches/142-upstream-bash43-042.patch b/utils/bash/patches/142-upstream-bash43-042.patch
deleted file mode 100644 (file)
index bf1546b..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-                            BASH PATCH REPORT
-                            =================
-
-Bash-Release:  4.3
-Patch-ID:      bash43-042
-
-Bug-Reported-by:       Nathan Neulinger <nneul@neulinger.org>
-Bug-Reference-ID:      <558EFDF2.7060402@neulinger.org>
-Bug-Reference-URL:     http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00096.html
-
-Bug-Description:
-
-There is a problem when parsing command substitutions containing `case'
-commands within pipelines that causes the parser to not correctly identify
-the end of the command substitution.
-
-Patch (apply with `patch -p0'):
-
---- a/parse.y
-+++ b/parse.y
-@@ -3708,6 +3708,8 @@ eof_error:
- /*itrace("parse_comsub:%d: lex_inword -> 1 ch = `%c' (%d)", line_number, ch, __LINE__);*/
-             tflags |= LEX_INWORD;
-             lex_wlen = 0;
-+            if (tflags & LEX_RESWDOK)
-+              lex_rwlen = 0;
-           }
-       }
---- a/y.tab.c
-+++ b/y.tab.c
-@@ -6020,6 +6020,8 @@ eof_error:
- /*itrace("parse_comsub:%d: lex_inword -> 1 ch = `%c' (%d)", line_number, ch, __LINE__);*/
-             tflags |= LEX_INWORD;
-             lex_wlen = 0;
-+            if (tflags & LEX_RESWDOK)
-+              lex_rwlen = 0;
-           }
-       }
---- a/patchlevel.h
-+++ b/patchlevel.h
-@@ -25,6 +25,6 @@
-    regexp `^#define[  ]*PATCHLEVEL', since that's what support/mkversion.sh
-    looks for to find the patch level (for the sccs version string). */
--#define PATCHLEVEL 41
-+#define PATCHLEVEL 42
- #endif /* _PATCHLEVEL_H_ */
index ec3f88d6eed42cfcc95d307407d994f9e3d9e14e..7f9421aaa1887e2b9510747799b95da2122ff27e 100644 (file)
@@ -8,12 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=btrfs-progs
-PKG_VERSION:=4.13.2
+PKG_VERSION:=4.14
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-v$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@KERNEL/linux/kernel/people/kdave/btrfs-progs/
-PKG_HASH:=75c7331f1306495dfffabe542ef6c5539808f0cdaebdf14fa8b7ab09c59448bd
+PKG_HASH:=09095cbc3bc2b6aa9d09c93146fb4d7437c51d2572f6918b74fe990fcdcb91af
+PKG_MAINTAINER:=Rosen Penev <rosenp@gmail.com>
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-v$(PKG_VERSION)
 
 PKG_LICENSE:=GPL-2.0
@@ -49,7 +50,8 @@ progs = btrfs btrfs-debug-tree btrfs-find-root btrfs-image btrfs-map-logical \
 CONFIGURE_ARGS += \
        --disable-backtrace \
        --disable-convert \
-       --disable-documentation
+       --disable-documentation \
+       --disable-zstd
 
 EXTRA_CFLAGS=$(TARGET_CPPFLAGS)
 
diff --git a/utils/btrfs-progs/patches/0001-use-pthread_join-instead-of-pthread_tryjoin_np.patch b/utils/btrfs-progs/patches/0001-use-pthread_join-instead-of-pthread_tryjoin_np.patch
deleted file mode 100644 (file)
index 90b56b4..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/chunk-recover.c
-+++ b/chunk-recover.c
-@@ -887,7 +887,7 @@ static int scan_devices(struct recover_c
-               for (i = 0; i < devidx; i++) {
-                       if (dev_scans[i].bytenr == -1)
-                               continue;
--                      ret = pthread_tryjoin_np(t_scans[i],
-+                      ret = pthread_join(t_scans[i],
-                                                (void **)&t_rets[i]);
-                       if (ret == EBUSY) {
-                               all_done = 0;
index 25b4cf23f58d22d573ca7e77d81383f2a0240d0a..9b05f6efa4bdb19872ad49d9717b322c68ea35de 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ccid
-PKG_VERSION:=1.4.27
+PKG_VERSION:=1.4.28
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=https://alioth.debian.org/frs/download.php/file/4218
-PKG_HASH:=a660e269606986cb94840ad5ba802ffb0cd23dd12b98f69a35035e0deb9dd137
+PKG_SOURCE_URL:=https://alioth.debian.org/frs/download.php/file/4230
+PKG_HASH:=875836ac5d9d952b40dc1a253a726e74361671864d81337285a3260268f8ade0
 PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
 PKG_LICENSE:=LGPL-2.1+
 PKG_LICENSE_FILES:=COPYING
index 53f8909e095beefbf23c85aa3e67a999ad136578..20d5d5ea9c75917cef1b2cafd652ee041ef83c97 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=collectd
-PKG_VERSION:=5.7.2
-PKG_RELEASE:=2
+PKG_VERSION:=5.8.0
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=https://collectd.org/files/ \
        https://github.com/collectd/collectd/releases/download/collectd-$(PKG_VERSION)
-PKG_HASH:=9d20a0221569a8d6b80bbc52b86e5e84965f5bafdbf5dfc3790e0fed0763e592
+PKG_HASH:=b06ff476bbf05533cb97ae6749262cc3c76c9969f032bd8496690084ddeb15c9
 
 PKG_FIXUP:=autoreconf
 PKG_REMOVE_FILES:=aclocal.m4 libltdl/aclocal.m4
@@ -36,6 +36,7 @@ COLLECTD_PLUGINS_DISABLED:= \
        curl_json \
        curl_xml \
        dbi \
+       dpdkevents \
        dpdkstat \
        drbd \
        ethstat \
@@ -46,6 +47,7 @@ COLLECTD_PLUGINS_DISABLED:= \
        grpc \
        hddtemp \
        hugepages \
+       intel_pmu \
        intel_rdt \
        ipc \
        ipmi \
@@ -57,6 +59,7 @@ COLLECTD_PLUGINS_DISABLED:= \
        lpar \
        madwifi \
        mbmon \
+       mcelog \
        md \
        memcachec \
        memcached \
@@ -73,6 +76,8 @@ COLLECTD_PLUGINS_DISABLED:= \
        openldap \
        openvz \
        oracle \
+       ovs_events \
+       ovs_stats \
        perl \
        pf \
        pinba \
@@ -83,8 +88,10 @@ COLLECTD_PLUGINS_DISABLED:= \
        serial \
        sigrok \
        smart \
+       snmp_agent \
        statsd \
        swap \
+       synproxy \
        tape \
        tokyotyrant \
        turbostat \
index d7cf23de15e51cab8018d38de6d8864e3fb311c7..b0ef7c48477c64b5e9fc5f82b091cb859929312d 100644 (file)
@@ -1,6 +1,6 @@
 --- a/src/rrdtool.c
 +++ b/src/rrdtool.c
-@@ -61,6 +61,7 @@ typedef struct rrd_queue_s rrd_queue_t;
+@@ -60,6 +60,7 @@ typedef struct rrd_queue_s rrd_queue_t;
  static const char *config_keys[] = {
      "CacheTimeout", "CacheFlush",      "CreateFilesAsync", "DataDir",
      "StepSize",     "HeartBeat",       "RRARows",          "RRATimespan",
@@ -8,7 +8,7 @@
      "XFF",          "WritesPerSecond", "RandomTimeout"};
  static int config_keys_num = STATIC_ARRAY_SIZE(config_keys);
  
-@@ -78,6 +79,8 @@ static rrdcreate_config_t rrdcreate_conf
+@@ -77,6 +78,8 @@ static rrdcreate_config_t rrdcreate_conf
      /* timespans = */ NULL,
      /* timespans_num = */ 0,
  
@@ -17,7 +17,7 @@
      /* consolidation_functions = */ NULL,
      /* consolidation_functions_num = */ 0,
  
-@@ -971,6 +974,12 @@ static int rrd_config(const char *key, c
+@@ -950,6 +953,12 @@ static int rrd_config(const char *key, c
            /* compar = */ rrd_compare_numeric);
  
      free(value_copy);
index 347ede4868685a894c787f776afdae0bf3e6af7f..3d878d750d764f425634dff3a19abeb56a560ac3 100644 (file)
@@ -1,6 +1,6 @@
 --- a/src/daemon/plugin.c
 +++ b/src/daemon/plugin.c
-@@ -1108,7 +1108,7 @@ static int plugin_insert_read(read_func_
+@@ -1099,7 +1099,7 @@ static int plugin_insert_read(read_func_
    int status;
    llentry_t *le;
  
index 18e8751cd2bff844ad2b4c1fc0a74b67c4789d46..d12295ad4ddd492fdb0a901280032fbe0b32a714 100644 (file)
@@ -2,7 +2,7 @@
 +++ b/src/olsrd.c
 @@ -585,7 +585,7 @@ static int olsrd_read(void) /* {{{ */
    if (fh == NULL)
-     return (-1);
+     return -1;
  
 -  fputs("\r\n", fh);
 +  fputs("/all \r\n", fh);
diff --git a/utils/collectd/patches/500-fix-uptime-reading.patch b/utils/collectd/patches/500-fix-uptime-reading.patch
deleted file mode 100644 (file)
index 8c80d16..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-From af01dd6fa3eb458e2fbb272703b0cae37ea54a9b Mon Sep 17 00:00:00 2001
-From: Marcin Jurkowski <marcin1j@gmail.com>
-Date: Tue, 11 Jul 2017 15:00:25 +0200
-Subject: [PATCH] uptime plugin: don't cache boot time and simplify Linux code
-
-Caching boottime on startup yields incorrect uptime values if system
-date changes after the daemon is started.
-This is almost certain to happen on embedded systems without RTC, where
-clock is set from NTP server at some point after boot process.
-
-On Linux, we can retrieve uptime directly by either reading /proc/uptime
-(it's sufficient to read a few bytes) or calling sysinfo() function.
-Use the latter since it's the most efficient way in speed, memory
-requirements and code simplicity terms.
----
- src/uptime.c | 71 ++++++++++++++++--------------------------------------------
- 1 file changed, 19 insertions(+), 52 deletions(-)
-
---- a/src/uptime.c
-+++ b/src/uptime.c
-@@ -25,8 +25,7 @@
- #include "plugin.h"
- #if KERNEL_LINUX
--#define STAT_FILE "/proc/stat"
--/* Using /proc filesystem to retrieve the boot time, Linux only. */
-+#include <sys/sysinfo.h>
- /* #endif KERNEL_LINUX */
- #elif HAVE_LIBKSTAT
-@@ -53,8 +52,6 @@
- /*
-  * Global variables
-  */
--/* boottime always used, no OS distinction */
--static time_t boottime;
- #if HAVE_LIBKSTAT
- extern kstat_ctl_t *kc;
-@@ -72,8 +69,6 @@ static void uptime_submit(gauge_t value)
-   plugin_dispatch_values(&vl);
- }
--static int uptime_init(void) /* {{{ */
--{
- /*
-  * On most unix systems the uptime is calculated by looking at the boot
-  * time (stored in unix time, since epoch) and the current one. We are
-@@ -84,48 +79,21 @@ static int uptime_init(void) /* {{{ */
-  * the boot time, the plugin is unregistered and there is no chance to
-  * try again later. Nevertheless, this is very unlikely to happen.
-  */
--
-+static time_t uptime_get_sys(void) { /* {{{ */
-+  time_t result;
- #if KERNEL_LINUX
--  unsigned long starttime;
--  char buffer[1024];
--  int ret;
--  FILE *fh;
--
--  ret = 0;
--
--  fh = fopen(STAT_FILE, "r");
-+  struct sysinfo info;
-+  int status;
--  if (fh == NULL) {
-+  status = sysinfo(&info);
-+  if (status != 0) {
-     char errbuf[1024];
--    ERROR("uptime plugin: Cannot open " STAT_FILE ": %s",
-+    ERROR("uptime plugin: Error calling sysinfo: %s",
-           sstrerror(errno, errbuf, sizeof(errbuf)));
-     return (-1);
-   }
--  while (fgets(buffer, 1024, fh) != NULL) {
--    /* look for the btime string and read the value */
--    ret = sscanf(buffer, "btime %lu", &starttime);
--    /* avoid further loops if btime has been found and read
--     * correctly (hopefully) */
--    if (ret == 1)
--      break;
--  }
--
--  fclose(fh);
--
--  /* loop done, check if no value has been found/read */
--  if (ret != 1) {
--    ERROR("uptime plugin: No value read from " STAT_FILE "");
--    return (-1);
--  }
--
--  boottime = (time_t)starttime;
--
--  if (boottime == 0) {
--    ERROR("uptime plugin: btime read from " STAT_FILE ", "
--          "but `boottime' is zero!");
--    return (-1);
--  }
-+  result = (time_t)info.uptime;
- /* #endif KERNEL_LINUX */
- #elif HAVE_LIBKSTAT
-@@ -159,13 +127,13 @@ static int uptime_init(void) /* {{{ */
-     return (-1);
-   }
--  boottime = (time_t)knp->value.ui32;
--
--  if (boottime == 0) {
-+  if (knp->value.ui32 == 0) {
-     ERROR("uptime plugin: kstat_data_lookup returned success, "
-           "but `boottime' is zero!");
-     return (-1);
-   }
-+
-+  result = time(NULL) - (time_t)knp->value.ui32;
- /* #endif HAVE_LIBKSTAT */
- #elif HAVE_SYS_SYSCTL_H
-@@ -186,13 +154,13 @@ static int uptime_init(void) /* {{{ */
-     return (-1);
-   }
--  boottime = boottv.tv_sec;
--
--  if (boottime == 0) {
-+  if (boottv.tv_sec == 0) {
-     ERROR("uptime plugin: sysctl(3) returned success, "
-           "but `boottime' is zero!");
-     return (-1);
-   }
-+
-+  result = time(NULL) - boottv.tv_sec;
- /* #endif HAVE_SYS_SYSCTL_H */
- #elif HAVE_PERFSTAT
-@@ -212,18 +180,18 @@ static int uptime_init(void) /* {{{ */
-   if (hertz <= 0)
-     hertz = HZ;
--  boottime = time(NULL) - cputotal.lbolt / hertz;
-+  result = cputotal.lbolt / hertz;
- #endif /* HAVE_PERFSTAT */
--  return (0);
--} /* }}} int uptime_init */
-+  return result;
-+} /* }}} int uptime_get_sys */
- static int uptime_read(void) {
-   gauge_t uptime;
-   time_t elapsed;
-   /* calculate the amount of time elapsed since boot, AKA uptime */
--  elapsed = time(NULL) - boottime;
-+  elapsed = uptime_get_sys();
-   uptime = (gauge_t)elapsed;
-@@ -233,6 +201,5 @@ static int uptime_read(void) {
- }
- void module_register(void) {
--  plugin_register_init("uptime", uptime_init);
-   plugin_register_read("uptime", uptime_read);
- } /* void module_register */
index 1811034ea156264ce38d9e11af9d3f1bf6770298..80e4720ac84be98fbfd515b0dad79bb6d672bf4f 100644 (file)
@@ -18,15 +18,18 @@ Reversed patch to be applied:
 
 --- a/configure.ac
 +++ b/configure.ac
-@@ -3278,7 +3278,7 @@ then
-       SAVE_CPPFLAGS="$CPPFLAGS"
-       CPPFLAGS="$CPPFLAGS $with_libmodbus_cflags"
+@@ -3327,9 +3327,9 @@ if test "x$with_libmodbus" = "xyes"; the
+   SAVE_CPPFLAGS="$CPPFLAGS"
+   CPPFLAGS="$CPPFLAGS $with_libmodbus_cflags"
  
--      AC_CHECK_HEADERS(modbus.h, [], [with_libmodbus="no (modbus.h not found)"])
-+      AC_CHECK_HEADERS(modbus/modbus.h, [], [with_libmodbus="no (modbus/modbus.h not found)"])
+-  AC_CHECK_HEADERS([modbus.h],
++  AC_CHECK_HEADERS([modbus/modbus.h],
+     [with_libmodbus="yes"],
+-    [with_libmodbus="no (modbus.h not found)"]
++    [with_libmodbus="no (modbus/modbus.h not found)"]
+   )
  
-       CPPFLAGS="$SAVE_CPPFLAGS"
- fi
+   CPPFLAGS="$SAVE_CPPFLAGS"
 --- a/src/modbus.c
 +++ b/src/modbus.c
 @@ -26,7 +26,7 @@
index 348885062fbb7ba1ef87900aff775724508ac127..95920681a46b4557cd420e5c167649f4bdcde428 100644 (file)
@@ -1,14 +1,15 @@
 --- a/configure.ac
 +++ b/configure.ac
-@@ -830,10 +830,7 @@ fi
- have_cpuid_h="no"
AC_CHECK_HEADERS(cpuid.h, [have_cpuid_h="yes"])
+@@ -526,11 +526,7 @@ if test "x$ac_system" = "xLinux"; then
+     [have_cpuid_h="no (cpuid.h not found)"]
  )
  
--have_capability="yes"
--AC_CHECK_HEADERS(sys/capability.h,
--                 [have_capability="yes"],
--                 [have_capability="no (<sys/capability.h> not found)"])
-+have_capability="no"
- if test "x$have_capability" = "xyes"; then
- AC_CHECK_LIB(cap, cap_get_proc,
-                  [have_capability="yes"],
+-  AC_CHECK_HEADERS([sys/capability.h],
+-    [have_capability="yes"],
+-    [have_capability="no (<sys/capability.h> not found)"]
+-  )
+-
++  have_capability="no"
+   if test "x$have_capability" = "xyes"; then
+     AC_CHECK_LIB([cap], [cap_get_proc],
+       [have_capability="yes"],
index 287bda4b87a07be91f4db037a8c2ae240b81b8a1..69aaf791284e6f8665dddbc6f2c01db85575a7a2 100644 (file)
@@ -1,24 +1,26 @@
 --- a/configure.ac
 +++ b/configure.ac
-@@ -804,6 +804,9 @@ AC_CACHE_CHECK([whether clock_boottime a
-                      [c_cv_have_clock_boottime_monotonic="no"]))
+@@ -710,6 +710,11 @@ AC_CACHE_CHECK([whether clock_boottime a
+   ]
+ )
  
 +# For the iwinfo plugin
-+AC_CHECK_LIB(iwinfo, iwinfo_backend, [with_iwinfo="yes"], [with_iwinfo="no (libiwinfo not found)"], [])
-+
- # For the turbostat plugin
- have_asm_msrindex_h="no"
- AC_CHECK_HEADERS(asm/msr-index.h, [have_asm_msrindex_h="yes"])
-@@ -6035,6 +6038,7 @@ plugin_interface="no"
++AC_CHECK_LIB([iwinfo], [iwinfo_backend],
++    [with_iwinfo="yes"],
++    [with_iwinfo="no (libiwinfo not found)"]
++)
+ #
+ # Checks for typedefs, structures, and compiler characteristics.
+@@ -6127,6 +6132,7 @@ plugin_ipc="no"
  plugin_ipmi="no"
  plugin_ipvs="no"
  plugin_irq="no"
 +plugin_iwinfo="no"
  plugin_load="no"
  plugin_log_logstash="no"
- plugin_memory="no"
-@@ -6505,6 +6509,7 @@ AC_PLUGIN([ipmi],                [$plugi
+ plugin_mcelog="no"
+@@ -6538,6 +6544,7 @@ AC_PLUGIN([ipmi],                [$plugi
  AC_PLUGIN([iptables],            [$with_libiptc],           [IPTables rule counters])
  AC_PLUGIN([ipvs],                [$plugin_ipvs],            [IPVS connection statistics])
  AC_PLUGIN([irq],                 [$plugin_irq],             [IRQ statistics])
@@ -26,7 +28,7 @@
  AC_PLUGIN([java],                [$with_java],              [Embed the Java Virtual Machine])
  AC_PLUGIN([load],                [$plugin_load],            [System load])
  AC_PLUGIN([log_logstash],        [$plugin_log_logstash],    [Logstash json_event compatible logging])
-@@ -6886,6 +6891,7 @@ AC_MSG_RESULT([    libyajl . . . . . . .
+@@ -6899,6 +6906,7 @@ AC_MSG_RESULT([    libyajl . . . . . . .
  AC_MSG_RESULT([    oracle  . . . . . . . $with_oracle])
  AC_MSG_RESULT([    protobuf-c  . . . . . $have_protoc_c])
  AC_MSG_RESULT([    protoc 3  . . . . . . $have_protoc3])
@@ -34,7 +36,7 @@
  AC_MSG_RESULT()
  AC_MSG_RESULT([  Features:])
  AC_MSG_RESULT([    daemon mode . . . . . $enable_daemon])
-@@ -6942,6 +6948,7 @@ AC_MSG_RESULT([    ipmi  . . . . . . . .
+@@ -6957,6 +6965,7 @@ AC_MSG_RESULT([    ipmi  . . . . . . . .
  AC_MSG_RESULT([    iptables  . . . . . . $enable_iptables])
  AC_MSG_RESULT([    ipvs  . . . . . . . . $enable_ipvs])
  AC_MSG_RESULT([    irq . . . . . . . . . $enable_irq])
@@ -44,7 +46,7 @@
  AC_MSG_RESULT([    logfile . . . . . . . $enable_logfile])
 --- a/src/collectd.conf.in
 +++ b/src/collectd.conf.in
-@@ -135,6 +135,7 @@
+@@ -137,6 +137,7 @@
  #@BUILD_PLUGIN_IPTABLES_TRUE@LoadPlugin iptables
  #@BUILD_PLUGIN_IPVS_TRUE@LoadPlugin ipvs
  #@BUILD_PLUGIN_IRQ_TRUE@LoadPlugin irq
@@ -52,7 +54,7 @@
  #@BUILD_PLUGIN_JAVA_TRUE@LoadPlugin java
  @BUILD_PLUGIN_LOAD_TRUE@@BUILD_PLUGIN_LOAD_TRUE@LoadPlugin load
  #@BUILD_PLUGIN_LPAR_TRUE@LoadPlugin lpar
-@@ -649,6 +650,12 @@
+@@ -720,6 +721,12 @@
  #     IgnoreSelected true
  #</Plugin>
  
@@ -67,7 +69,7 @@
  #     JVMArg "-Djava.class.path=@prefix@/share/collectd/java/collectd-api.jar"
 --- a/src/collectd.conf.pod
 +++ b/src/collectd.conf.pod
-@@ -3143,6 +3143,27 @@ and all other interrupts are collected.
+@@ -3503,6 +3503,27 @@ and all other interrupts are collected.
  
  =back
  
 +      plugin_register_config("iwinfo", iwinfo_config, config_keys, config_keys_num);
 +      plugin_register_read("iwinfo", iwinfo_read);
 +}
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -568,6 +568,13 @@ irq_la_SOURCES = irq.c
- irq_la_LDFLAGS = $(PLUGIN_LDFLAGS)
- endif
-+if BUILD_PLUGIN_IWINFO
-+pkglib_LTLIBRARIES += iwinfo.la
-+iwinfo_la_SOURCES = iwinfo.c
-+iwinfo_la_LDFLAGS = -module -avoid-version
-+iwinfo_la_LIBADD = -liwinfo
-+endif
-+
- if BUILD_PLUGIN_JAVA
- pkglib_LTLIBRARIES += java.la
- java_la_SOURCES = java.c
 --- a/src/types.db
 +++ b/src/types.db
-@@ -260,6 +260,7 @@ voltage_threshold       value:GAUGE:U:U,
+@@ -269,6 +269,7 @@ voltage_threshold       value:GAUGE:U:U,
  vs_memory               value:GAUGE:0:9223372036854775807
  vs_processes            value:GAUGE:0:65535
  vs_threads              value:GAUGE:0:65535
  
  #
  # Legacy types
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -983,6 +983,14 @@ irq_la_LDFLAGS = $(PLUGIN_LDFLAGS)
+ irq_la_LIBADD = libignorelist.la
+ endif
++if BUILD_PLUGIN_IWINFO
++pkglib_LTLIBRARIES += iwinfo.la
++iwinfo_la_SOURCES = src/iwinfo.c
++#iwinfo_la_LDFLAGS = -module -avoid-version
++iwinfo_la_LDFLAGS = $(PLUGIN_LDFLAGS)
++iwinfo_la_LIBADD = -liwinfo libignorelist.la
++endif
++
+ if BUILD_PLUGIN_JAVA
+ pkglib_LTLIBRARIES += java.la
+ java_la_SOURCES = src/java.c
diff --git a/utils/crconf/Makefile b/utils/crconf/Makefile
new file mode 100644 (file)
index 0000000..6344d1a
--- /dev/null
@@ -0,0 +1,43 @@
+#
+# Copyright (C) 2017 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:=crconf
+PKG_VERSION:=pre2
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=@SF/crconf
+PKG_HASH:=15d39b599acda93a50f473190e702d593ba13613b6ed31711f3584b5726b81b8
+
+PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
+
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/crconf
+  SECTION:=utils
+  CATEGORY:=Utilities
+  TITLE:=Linux crypto layer configuraton tool
+  URL:=https://sourceforge.net/projects/crconf
+endef
+
+define Package/crconf/description
+  Linux crypto layer configuraton tool.
+  Use this to manipulate kernel Crypto API/framework stuff,
+  like drivers, templates, etc.
+  Example: https://wiki.strongswan.org/projects/strongswan/wiki/Pcrypt
+  Most interesting stuff you can find on https://wiki.strongswan.org
+endef
+
+define Package/crconf/install
+       $(INSTALL_DIR) $(1)/sbin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/sbin/crconf $(1)/sbin
+endef
+
+$(eval $(call BuildPackage,crconf))
index ddf481b970c005736536f203b02e92ba9e8665de..a6a741f18c9928bef0d5c9964cec8aea5190e7b2 100644 (file)
@@ -17,6 +17,8 @@ PKG_SOURCE_URL:=https://github.com/cryptodev-linux/cryptodev-linux
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_VERSION:=a705360197260d28535746ae98c461ba2cfb7a9e
 PKG_MIRROR_HASH:=334a8f4df18e36e97459b4c6669c9873c13c4f5dae25243cf41ff70c2ce661d8
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=COPYING
 
 PKG_MAINTAINER:=Ansuel Smith <ansuelsmth@gmail.com>
 
@@ -38,6 +40,7 @@ define KernelPackage/cryptodev
   FILES:= \
                $(PKG_BUILD_DIR)/cryptodev.$(LINUX_KMOD_SUFFIX)
   AUTOLOAD:=$(call AutoLoad,50,$(CRYPTODEV_AUTOLOAD))
+  MODPARAMS.cryptodev:= cryptodev_verbosity=-1
 endef
 
 define KernelPackage/cryptodev/description
@@ -68,11 +71,4 @@ define Build/InstallDev
        $(CP) $(PKG_BUILD_DIR)/crypto/cryptodev.h $(STAGING_DIR)/usr/include/crypto/
 endef
 
-define KernelPackage/cryptodev/install
-       $(INSTALL_DIR) $(1)/etc/modules.d
-       $(INSTALL_DATA) ./files/cryptodev.modules $(1)/etc/modules.d/50-cryptodev
-       $(INSTALL_DIR) $(1)/lib/modules/$(LINUX_VERSION)
-       $(INSTALL_DIR) $(1)/usr/sbin
-endef
-
 $(eval $(call KernelPackage,cryptodev))
diff --git a/utils/cryptodev-linux/files/cryptodev.modules b/utils/cryptodev-linux/files/cryptodev.modules
deleted file mode 100644 (file)
index 48194e2..0000000
+++ /dev/null
@@ -1 +0,0 @@
-cryptodev cryptodev_verbosity=-1
index ba4e3beb1e083923251deee8aa4cd99a713d90fd..f1d89d61c9c327716007a0460168419a263dbe40 100644 (file)
@@ -5,13 +5,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gawk
-PKG_VERSION:=4.1.4
+PKG_VERSION:=4.2.0
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@GNU/gawk
 
-PKG_HASH:=53e184e2d0f90def9207860531802456322be091c7b48f23fdc79cda65adc266
+PKG_HASH:=d4f3cd31c001fd0ed52832d4fbfbdfeaa38ad541c182f80ff8fdf87324a6a9f2
 
 PKG_LICENSE:=GPL
 PKG_LICENSE_FILES:=COPYING
index 367d175bd83b4f882aed964a61ae17a9cbab2e77..acc3989206909c8248af55824c256ef0d5591ec9 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=haveged
-PKG_VERSION:=1.9.1
-PKG_RELEASE:=5
+PKG_VERSION:=1.9.2
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@SF/haveged \
                http://www.issihosts.com/$(PKG_NAME)
-PKG_HASH:=9c2363ed9542a6784ff08e247182137e71f2ddb79e8e6c1ac4ad50d21ced3715
+PKG_HASH:=f77d9adbdf421b61601fa29faa9ce3b479d910f73c66b9e364ba8642ccbfbe70
 PKG_LICENSE:=GPLv3
 
 PKG_MAINTAINER:=Hannu Nyman <hannu.nyman@iki.fi>
index 5178f099367c91bb955b789af6db832a8e481361..f7f4645a20d2212f07b9275e1ba474e805157fb2 100644 (file)
@@ -8,8 +8,8 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=hd-idle
-PKG_VERSION:=1.04
-PKG_RELEASE:=2
+PKG_VERSION:=1.05
+PKG_RELEASE:=1
 
 PKG_MAINTAINER:=Lim Guo Wei <limguowei@gmail.com>
 PKG_LICENSE:=GPL-2.0
@@ -17,7 +17,7 @@ PKG_LICENSE_FILES:=
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
 PKG_SOURCE_URL:=@SF/$(PKG_NAME)
-PKG_HASH:=308e90104d7ee8124db50dc9b0d8c61c6afc65d524de2e75f76d84f80674fbdc
+PKG_HASH:=4efefe79d145b50e055582730d9d685e485da3df3dad90fef030036d52aa3a0c
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
 
index 65e04f51dd38ab2491aa4c83929b669492d4c78e..bc1d46228b9a14b2909d35bb0d2797110e27642d 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=hdparm
-PKG_VERSION:=9.50
+PKG_VERSION:=9.52
 PKG_RELEASE:=1
 PKG_USE_MIPS16:=0
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@SF/$(PKG_NAME)
-PKG_HASH:=0892b44bd817c251264a24f6ecbbb010958033e0395d2030f25f1c5608ac780e
+PKG_HASH:=c3429cd423e271fa565bf584598fd751dd2e773bb7199a592b06b5a61cec4fb6
 PKG_MAINTAINER:=Richard Kunze <richard.kunze@web.de>
 PKG_LICENSE:=BSD-Style Open Source License
 
index 1e477ef22946753a6fba36c1c7461627a3a93dd1..6e451ca84e3d9094b9e906d6425e45db3f849443 100644 (file)
@@ -9,14 +9,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=LVM2
-PKG_VERSION:=2.02.168
+PKG_VERSION:=2.02.176
 PKG_RELEASE:=1
 PKG_LICENSE:=GPL-2.0 LGPL-2.1
 
 PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).tgz
 PKG_SOURCE_URL:=ftp://sources.redhat.com/pub/lvm2/releases \
                http://ftp.gwdg.de/pub/linux/sources.redhat.com/lvm2/
-PKG_HASH:=23a3d1cddd41b3ef51812ebf83e9fa491f502fe74130d4263be327a91914660d
+PKG_HASH:=dece83628c2c78a267a126ce6046d506582185ae5d40fb8d59b56547fccea473
 PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME).$(PKG_VERSION)
 
index 9fa1c1d5688cffe66dd976d0e0c34496738f62f3..0ba1c9b764cb3acb6648a6280025793f55a01c68 100644 (file)
@@ -1,6 +1,6 @@
 --- a/make.tmpl.in
 +++ b/make.tmpl.in
-@@ -19,7 +19,7 @@ SHELL = /bin/sh
+@@ -19,7 +19,7 @@ SHELL = @SHELL@
  
  # Allow environment to override any built-in default value for CC.
  # If there is a built-in default, CC is NOT set to @CC@ here.
index 546a03cb2114ffcf85feffda17e4775bca3c7467..1db823477a7823a6ca52aa3e58ec433aeb36f617 100644 (file)
@@ -1,6 +1,6 @@
 --- a/lib/commands/toolcontext.c
 +++ b/lib/commands/toolcontext.c
-@@ -1843,7 +1843,7 @@ struct cmd_context *create_toolcontext(u
+@@ -1869,7 +1869,7 @@ struct cmd_context *create_toolcontext(u
        /* FIXME Make this configurable? */
        reset_lvm_errno(1);
  
@@ -9,7 +9,7 @@
        /* Set in/out stream buffering before glibc */
        if (set_buffering) {
                /* Allocate 2 buffers */
-@@ -2224,7 +2224,7 @@ void destroy_toolcontext(struct cmd_cont
+@@ -2249,7 +2249,7 @@ void destroy_toolcontext(struct cmd_cont
        if (cmd->libmem)
                dm_pool_destroy(cmd->libmem);
  
@@ -20,7 +20,7 @@
                if (is_valid_fd(STDIN_FILENO) &&
 --- a/tools/lvmcmdline.c
 +++ b/tools/lvmcmdline.c
-@@ -1815,6 +1815,7 @@ int lvm_split(char *str, int *argc, char
+@@ -3074,6 +3074,7 @@ int lvm_split(char *str, int *argc, char
  /* Make sure we have always valid filedescriptors 0,1,2 */
  static int _check_standard_fds(void)
  {
@@ -28,7 +28,7 @@
        int err = is_valid_fd(STDERR_FILENO);
  
        if (!is_valid_fd(STDIN_FILENO) &&
-@@ -1841,6 +1842,12 @@ static int _check_standard_fds(void)
+@@ -3100,6 +3101,12 @@ static int _check_standard_fds(void)
                       strerror(errno));
                return 0;
        }
index 618fde0a03e105162c09f503e6ffa0ebaea3645f..3340a3c2f1b109a761f4fbc995cb38cf0d77d9bd 100644 (file)
@@ -7,6 +7,14 @@ config LXC_KERNEL_OPTIONS
        select KERNEL_CGROUPS
        select KERNEL_NAMESPACES
        select KERNEL_LXC_MISC
+       select KERNEL_CGROUP_SCHED
+       select KERNEL_FAIR_GROUP_SCHED
+       select KERNEL_RT_GROUP_SCHED
+       select KERNEL_CGROUP_CPUACCT
+       select KERNEL_MEMCG
+       select KERNEL_MEMCG_KMEM
+       select KERNEL_CPUSETS
+       select PACKAGE_kmod-ikconfig
        help
          Select needed kernel options for LXC related utilities. Options
          include cgroups, namespaces and other miscellaneous options. These
@@ -34,4 +42,12 @@ config LXC_SECCOMP
          Build LXC with support for seccomp filters.
          Select libseccomp which also pulls-in the needed kernel features.
 
+config LXC_NETWORKING
+       bool "Enable networking support for LXC containers"
+       default n
+       select PACKAGE_kmod-veth
+       select PACKAGE_kmod-macvlan
+       help
+         Enable "veth pair device" and "macvlan"
+
 endmenu
index 0862cc30b1b6f5696eb32c5afa64cbf7e58b3834..4600e9c9ee74d9cef437cf2604e27307bf46ea4f 100644 (file)
@@ -8,15 +8,15 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=lxc
-PKG_VERSION:=1.1.5
-PKG_RELEASE:=3
+PKG_VERSION:=2.1.1
+PKG_RELEASE:=1
 
 PKG_LICENSE:=LGPL-2.1+ BSD-2-Clause GPL-2.0
-PKG_MAINTAINER:=Luka Perkov <luka@openwrt.org>
+PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://linuxcontainers.org/downloads/lxc/
-PKG_HASH:=9588ad1b04e114ee7370f690c65131e28098b28d2521d97c73557d11897ed0be
+PKG_SOURCE_URL:=https://linuxcontainers.org/downloads/lxc/
+PKG_HASH:=68663a67450a8d6734e137eac54cc7077209fb15c456eec401a2c26e6386eff6
 
 PKG_BUILD_DEPENDS:=lua
 PKG_BUILD_PARALLEL:=1
@@ -27,24 +27,20 @@ PKG_FIXUP:=autoreconf
 include $(INCLUDE_DIR)/package.mk
 
 LXC_APPLETS_BIN += \
-       attach autostart cgroup clone config console create destroy device \
+       attach autostart cgroup copy config console create destroy device \
        execute freeze info monitor snapshot start stop unfreeze unshare \
-       usernsexec wait
+       usernsexec wait top ls
 
 LXC_APPLETS_LIB += \
        monitord user-nic
 
 LXC_SCRIPTS += \
-       checkconfig ls top
+       checkconfig
 
 DEPENDS_APPLETS = +libpthread +libcap +liblxc
 
 DEPENDS_create = +lxc-configs +lxc-hooks +lxc-templates +flock
 
-DEPENDS_ls = +lxc-config
-DEPENDS_top = +lxc-lua +luafilesystem @BROKEN
-
-
 define Package/lxc/Default
   SECTION:=utils
   CATEGORY:=Utilities
@@ -118,7 +114,7 @@ endef
 define Package/lxc-lua
   $(call Package/lxc/Default)
   TITLE:=LXC Lua bindings
-  DEPENDS:= lxc +liblua +liblxc +luafilesystem
+  DEPENDS:= lxc +liblua +liblxc
 endef
 
 define Package/lxc-init
@@ -128,6 +124,7 @@ define Package/lxc-init
 endef
 
 CONFIGURE_ARGS += \
+       --disable-gnutls \
        --disable-apparmor \
        --disable-doc \
        --disable-examples \
diff --git a/utils/lxc/patches/002-compile.patch b/utils/lxc/patches/002-compile.patch
new file mode 100644 (file)
index 0000000..9a98777
--- /dev/null
@@ -0,0 +1,10 @@
+--- a/src/lxc/storage/aufs.h
++++ b/src/lxc/storage/aufs.h
+@@ -24,7 +24,6 @@
+ #ifndef __LXC_AUFS_H
+ #define __LXC_AUFS_H
+-#define _GNU_SOURCE
+ #include <stdbool.h>
+ #include <stdio.h>
+ #include <stdint.h>
diff --git a/utils/lxc/patches/003-compile.patch b/utils/lxc/patches/003-compile.patch
new file mode 100644 (file)
index 0000000..b26b78d
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/src/lxc/confile_utils.c
++++ b/src/lxc/confile_utils.c
+@@ -677,7 +677,7 @@
+       char *endptr = NULL;
+       if (strncmp(*value, "unlimited", sizeof("unlimited") - 1) == 0) {
+-              *res = RLIM_INFINITY;
++              *res = (unsigned long)RLIM_INFINITY;
+               *value += sizeof("unlimited") - 1;
+               return true;
+       }
index 6f12c382abc6a67ced413201aac50b6f4fedbea9..903e4cd7bd000396ee5369be969df699c629991a 100644 (file)
@@ -1,19 +1,20 @@
 --- a/configure.ac
 +++ b/configure.ac
-@@ -31,30 +31,6 @@ AC_CANONICAL_HOST
- AM_PROG_CC_C_O
- AC_GNU_SOURCE
+@@ -47,34 +47,6 @@ AC_GNU_SOURCE
+ LT_INIT
+ AC_SUBST([LIBTOOL_DEPS])
  
 -# Detect the distribution. This is used for the default configuration and
 -# for some distro-specific build options.
 -AC_MSG_CHECKING([host distribution])
--AC_ARG_WITH(distro, AS_HELP_STRING([--with-distro=DISTRO], [Specify the Linux distribution to target: One of redhat, oracle, centos, fedora, suse, gentoo, debian, arch, slackware, paldo, openmandriva or pardus.]))
+-AC_ARG_WITH(distro, AS_HELP_STRING([--with-distro=DISTRO], [Specify the Linux distribution to target: One of redhat, oracle, centos, fedora, suse, gentoo, debian, arch, slackware, plamo, paldo, openmandriva, pardus, sparclinux, altlinux.]))
 -if type lsb_release >/dev/null 2>&1 && test "z$with_distro" = "z"; then
 -      with_distro=`lsb_release -is`
 -fi
 -if test "z$with_distro" = "z"; then
 -      AC_CHECK_FILE(/etc/redhat-release,with_distro="redhat")
 -      AC_CHECK_FILE(/etc/oracle-release,with_distro="oracle")
+-      AC_CHECK_FILE(/etc/sparclinux-release,with_distro="sparclinux")
 -      AC_CHECK_FILE(/etc/centos-release,with_distro="centos")
 -      AC_CHECK_FILE(/etc/fedora-release,with_distro="fedora")
 -      AC_CHECK_FILE(/etc/SuSE-release,with_distro="suse")
 -      AC_CHECK_FILE(/etc/debian_version,with_distro="debian")
 -      AC_CHECK_FILE(/etc/arch-release,with_distro="arch")
 -      AC_CHECK_FILE(/etc/slackware-version,with_distro="slackware")
+-      AC_CHECK_FILE(/etc/plamo-version,with_distro="plamo")
 -      AC_CHECK_FILE(/etc/frugalware-release,with_distro="frugalware")
 -      AC_CHECK_FILE(/etc/mandrakelinux-release, with_distro="openmandriva")
 -      AC_CHECK_FILE(/etc/mandriva-release,with_distro="openmandriva")
 -      AC_CHECK_FILE(/etc/pardus-release,with_distro="pardus")
+-      AC_CHECK_FILE(/etc/altlinux-release,with_distro="altlinux")
+-      AC_CHECK_FILE(/etc/pld-release,with_distro="pld")
 -fi
 -with_distro=`echo ${with_distro} | tr '[[:upper:]]' '[[:lower:]]'`
 -
- if test "z$with_distro" = "z"; then
-       with_distro="unknown"
+ if test "z$with_distro" = "zforsparc"; then
+       with_distro="sparclinux"
  fi
index 2dfaa9bea5a652cc708604ce3658bbd66828ed50..c91e010c5c58559cb6a8289fcef3781c932270df 100644 (file)
@@ -1,6 +1,6 @@
 --- a/src/lxc/utils.h
 +++ b/src/lxc/utils.h
-@@ -41,11 +41,7 @@ extern int mkdir_p(const char *dir, mode
+@@ -59,11 +59,7 @@ extern int mkdir_p(const char *dir, mode_t mode);
  extern char *get_rundir(void);
  
  /* Define getline() if missing from the C library */
index 272f76b052a11a62ffb4f6fdc33c853118b9f427..0e644ea47653b899fa7c3f185d76aaec2e13a937 100644 (file)
@@ -1,8 +1,8 @@
---- a/src/lxc/lxc-checkconfig.in
-+++ b/src/lxc/lxc-checkconfig.in
-@@ -4,6 +4,17 @@
+--- a/src/lxc/tools/lxc-checkconfig.in
++++ b/src/lxc/tools/lxc-checkconfig.in
+@@ -3,6 +3,17 @@
+ # Allow environment variables to override config
  : ${CONFIG:=/proc/config.gz}
- : ${GREP:=zgrep}
  : ${MODNAME:=configs}
 +: ${ZGREP:=zgrep}
 +: ${GUNZIP:=gunzip}
@@ -16,5 +16,5 @@
 +      GREP=grep
 +fi
  
SETCOLOR_SUCCESS="printf \\033[1;32m"
- SETCOLOR_FAILURE="printf \\033[1;31m"
CAT="cat"
index cb0a9f0d2a3084e72f2fc04b83079315e5555cd3..b20870890bb1ddc81fa8eca327870890a0cade36 100644 (file)
@@ -1,19 +1,24 @@
 --- a/templates/lxc-download.in
 +++ b/templates/lxc-download.in
-@@ -494,15 +494,7 @@ fi
+@@ -505,20 +505,7 @@ fi
  # Unpack the rootfs
  echo "Unpacking the rootfs"
  
 -EXCLUDES=""
 -excludelist=$(relevant_file excludes)
 -if [ -f "${excludelist}" ]; then
--    while read line; do
--        EXCLUDES="$EXCLUDES --exclude=$line"
--    done < $excludelist
+-    while read -r line; do
+-        EXCLUDES="${EXCLUDES} --exclude=${line}"
+-    done < "${excludelist}"
 -fi
 -
+-# Do not surround ${EXCLUDES} by quotes. This does not work. The solution could
+-# use array but this is not POSIX compliant. The only POSIX compliant solution
+-# is to use a function wrapper, but the latter can't be used here as the args
+-# are dynamic. We thus need to ignore the warning brought by shellcheck.
+-# shellcheck disable=SC2086
 -tar  --anchored ${EXCLUDES} --numeric-owner -xpJf \
 +tar --numeric-owner -xpJf \
-     ${LXC_CACHE_PATH}/rootfs.tar.xz -C ${LXC_ROOTFS}
+     "${LXC_CACHE_PATH}/rootfs.tar.xz" -C "${LXC_ROOTFS}"
  
- mkdir -p ${LXC_ROOTFS}/dev/pts/
+ mkdir -p "${LXC_ROOTFS}/dev/pts/"
diff --git a/utils/lxc/patches/030-lxc-download.patch b/utils/lxc/patches/030-lxc-download.patch
deleted file mode 100644 (file)
index 295bae0..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
---- a/templates/lxc-download.in
-+++ b/templates/lxc-download.in
-@@ -39,7 +39,7 @@ DOWNLOAD_LIST_IMAGES="false"
- DOWNLOAD_MODE="system"
- DOWNLOAD_READY_GPG="false"
- DOWNLOAD_RELEASE=
--DOWNLOAD_SERVER="images.linuxcontainers.org"
-+DOWNLOAD_SERVER="virtualwrt.org/containers/"
- DOWNLOAD_SHOW_GPG_WARNING="true"
- DOWNLOAD_SHOW_HTTP_WARNING="true"
- DOWNLOAD_TARGET="system"
-@@ -257,14 +257,6 @@ for bin in tar xz wget; do
-     fi
- done
--# Check for GPG
--if [ "$DOWNLOAD_VALIDATE" = "true" ]; then
--    if ! type gpg >/dev/null 2>&1; then
--        echo "ERROR: Missing recommended tool: gpg" 1>&2
--        echo "You can workaround this by using --no-validate." 1>&2
--        exit 1
--    fi
--fi
- # Check that we have all variables we need
- if [ -z "$LXC_NAME" ] || [ -z "$LXC_PATH" ] || [ -z "$LXC_ROOTFS" ]; then
-@@ -456,16 +448,9 @@ if [ "$DOWNLOAD_USE_CACHE" = "false" ];
-         echo "Downloading the rootfs"
-         download_file $DOWNLOAD_URL/rootfs.tar.xz \
-             ${DOWNLOAD_TEMP}/rootfs.tar.xz normal
--        download_sig  $DOWNLOAD_URL/rootfs.tar.xz.asc \
--             ${DOWNLOAD_TEMP}/rootfs.tar.xz.asc normal
--        gpg_validate ${DOWNLOAD_TEMP}/rootfs.tar.xz.asc
--
-         echo "Downloading the metadata"
-         download_file $DOWNLOAD_URL/meta.tar.xz \
-             ${DOWNLOAD_TEMP}/meta.tar.xz normal
--        download_sig  $DOWNLOAD_URL/meta.tar.xz.asc \
--            ${DOWNLOAD_TEMP}/meta.tar.xz.asc normal
--        gpg_validate ${DOWNLOAD_TEMP}/meta.tar.xz.asc
-         if [ -d $LXC_CACHE_PATH ]; then
-             rm -Rf $LXC_CACHE_PATH
diff --git a/utils/lxc/patches/035-fix-undefined-lfd.patch b/utils/lxc/patches/035-fix-undefined-lfd.patch
deleted file mode 100644 (file)
index 42e194c..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
---- a/src/lxc/bdev.c
-+++ b/src/lxc/bdev.c
-@@ -1939,7 +1939,7 @@ static int find_free_loopdev(int *retfd,
- static int loop_mount(struct bdev *bdev)
- {
--      int lfd, ffd = -1, ret = -1;
-+      int lfd = -1, ffd = -1, ret = -1;
-       struct loop_info64 lo;
-       char loname[100];
-@@ -1977,7 +1977,7 @@ out:
-       if (ffd > -1)
-               close(ffd);
-       if (ret < 0) {
--              close(lfd);
-+              if (lfd > -1) close(lfd);
-               bdev->lofd = -1;
-       }
-       return ret;
index f1f4762826e1029f4afab27c4fe062c96b26948d..477f31f57ed8199f99da295905d42eda18ddd6b5 100644 (file)
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mc
-PKG_VERSION:=4.8.19
+PKG_VERSION:=4.8.20
 PKG_RELEASE:=1
 PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
 PKG_LICENSE:=GPL-3.0+
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=http://ftp.midnight-commander.org/
-PKG_HASH:=eb9e56bbb5b2893601d100d0e0293983049b302c5ab61bfb544ad0ee2cc1f2df
+PKG_HASH:=017ee7f4f8ae420a04f4d6fcebaabe5b494661075c75442c76e9c8b1923d501c
 PKG_BUILD_PARALLEL:=1
 PKG_FIXUP:=autoreconf gettext-version
 
index 6798d05e99d443facc312b85bdc521064d281a50..5d26fcdffb9b3d608ee843b3a6782db683f3d7bf 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=minicom
 PKG_VERSION:=2.7
-PKG_RELEASE:=3
+PKG_RELEASE:=4
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://alioth.debian.org/frs/download.php/file/3977/
diff --git a/utils/minicom/patches/110-reproducible-builds.patch b/utils/minicom/patches/110-reproducible-builds.patch
new file mode 100644 (file)
index 0000000..40870c3
--- /dev/null
@@ -0,0 +1,20 @@
+--- a/src/minicom.c
++++ b/src/minicom.c
+@@ -1159,7 +1159,7 @@ int main(int argc, char **argv)
+       switch(c) {
+       case 'v':
+         printf(_("%s version %s"), PACKAGE, VERSION);
+-#ifdef __DATE__
++#if 0 
+         printf(_(" (compiled %s)"), __DATE__);
+ #endif
+         printf("\n");
+@@ -1462,7 +1462,7 @@ int main(int argc, char **argv)
+   mc_wprintf(us, "\n%s %s\r\n", _("Welcome to minicom"), VERSION);
+   mc_wprintf(us, "\n%s: %s\r\n", _("OPTIONS"), option_string);
+-#if defined (__DATE__) && defined (__TIME__)
++#if 0
+   mc_wprintf(us, "%s %s, %s.\r\n",_("Compiled on"), __DATE__,__TIME__);
+ #endif
+   {
index 338c5d916ba19aec2745cf5944a380c2c103212e..e6d4c8f949d447e6c2863fd57b8bc87bee61b538 100644 (file)
@@ -8,15 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=openocd
-PKG_VERSION:=v0.10.0
+PKG_SOURCE_VERSION:=0.10.0
+PKG_VERSION:=v$(PKG_SOURCE_VERSION)
 PKG_RELEASE:=1
 
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=git://git.code.sf.net/p/openocd/code
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=$(PKG_VERSION)
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_MIRROR_HASH:=ef8a71daa581a3a2296fd3dafff21de2ca7b86319ec3a5c24ed6a216d1fdff45
+PKG_SOURCE_URL:=@SF/openocd
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.bz2
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_SOURCE_VERSION)
+PKG_HASH:=7312e7d680752ac088b8b8f2b5ba3ff0d30e0a78139531847be4b75c101316ae
 PKG_LICENSE:=GPL-2.0
 PKG_LICENSE_FILES:=COPYING
 
index b95c220aae9b5ba0350dcb43c40a7133e44eed15..e11119dbc6f32217b772ce28a2ca6f3976eadffa 100644 (file)
@@ -8,9 +8,9 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=opensc
-PKG_VERSION:=0.16.0
+PKG_VERSION:=0.17.0
 PKG_RELEASE:=1
-PKG_HASH:=3ac8c29542bb48179e7086d35a1b8907a4e86aca3de3323c2f48bd74eaaf5729
+PKG_HASH:=be73c6816867ab4721e6a9ae7dba8e890c5f169f0a2cbb4bf354e0f30a948300
 
 PKG_LICENSE:=LGPL-2.1+
 PKG_LICENSE_FILES:=COPYING
@@ -152,8 +152,8 @@ $(foreach file,$(PROFILES),$(eval $(call ProfileGen,$(file))))
 
 define Build/InstallDev
        $(INSTALL_DIR) $(1)/usr/lib
-       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libopensc.{a,so}* $(1)/usr/lib/
-       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsmm-local.{a,so}* $(1)/usr/lib/
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libopensc.{la,so}* $(1)/usr/lib/
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsmm-local.{la,so}* $(1)/usr/lib/
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/opensc-pkcs11.so $(1)/usr/lib/
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkcs11-spy.so $(1)/usr/lib/
        $(INSTALL_DIR) $(1)/usr/lib/pkcs11
diff --git a/utils/opus-tools/Makefile b/utils/opus-tools/Makefile
deleted file mode 100644 (file)
index 0e24552..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-#
-# Copyright (C) 2014 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=opus-tools
-PKG_VERSION:=0.1.9
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://downloads.xiph.org/releases/opus/
-PKG_HASH:=b1873dd78c7fbc98cf65d6e10cfddb5c2c03b3af93f922139a2104baedb4643a
-
-PKG_LICENSE:=BSD-2-Clause
-PKG_LICENSE_FILES:=COPYING
-PKG_MAINTAINER:=Nicolas Thill <nico@openwrt.org>
-
-PKG_INSTALL:=1
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/opus-tools
-  SECTION:=utils
-  CATEGORY:=Utilities
-  DEPENDS:=+libogg +libopus
-  TITLE:=OPUS Codec tools
-  URL:=http://opus-codec.org/
-endef
-
-define Package/opus-tools/description
- This package provides command-line utilities to encode, inspect, and decode 
- .opus files.
-endef
-
-CONFIGURE_ARGS += \
-       --without-flac \
-
-define Package/opus-tools/install
-       $(INSTALL_DIR) $(1)/usr/bin
-       $(CP) $(PKG_INSTALL_DIR)/usr/bin/opus{dec,enc,info} $(1)/usr/bin/
-endef
-
-$(eval $(call BuildPackage,opus-tools))
diff --git a/utils/rpcd-mod-attendedsysupgrade/Makefile b/utils/rpcd-mod-attendedsysupgrade/Makefile
deleted file mode 100644 (file)
index b85da93..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=rpcd-mod-attendedsysupgrade
-PKG_VERSION:=1
-PKG_RELEASE:=1
-PKG_LICENSE:=GPL-2.0
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/rpcd-mod-attendedsysupgrade
-  SECTION:=utils
-  CATEGORY:=Base system
-  TITLE:=OpenWrt ubus RPC backend server (attendedsysupgrade)
-  MAINTAINER:=Paul Spooren <paul@spooren.de>
-  DEPENDS:=rpcd +cgi-io +rpcd-mod-packagelist
-endef
-
-define Package/rpcd-mod-attendedsysupgrade/description
-       implements sysupgrade function with ubus
-       add uci settings and needed acls
-endef
-
-define Build/Compile
-endef
-
-define Build/Configure
-endef
-
-define Package/rpcd-mod-attendedsysupgrade/install
-       $(INSTALL_DIR) $(1)/usr/share/rpcd/acl.d/
-       $(INSTALL_BIN) ./files/attendedsysupgrade.acl $(1)/usr/share/rpcd/acl.d/attendedsysupgrade.json
-
-       $(INSTALL_DIR) $(1)/usr/libexec/rpcd/
-       $(INSTALL_BIN) ./files/attendedsysupgrade.rpcd $(1)/usr/libexec/rpcd/attendedsysupgrade
-
-       $(INSTALL_DIR) $(1)/etc/uci-defaults/
-       $(INSTALL_BIN) ./files/attendedsysupgrade.defaults $(1)/etc/uci-defaults/attendedsysupgrade
-endef
-
-$(eval $(call BuildPackage,rpcd-mod-attendedsysupgrade))
diff --git a/utils/rpcd-mod-attendedsysupgrade/files/attendedsysupgrade.acl b/utils/rpcd-mod-attendedsysupgrade/files/attendedsysupgrade.acl
deleted file mode 100644 (file)
index fdb05b7..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-       "attendedsysupgrade": {
-               "description": "attended sysupgrade via rpcd",
-               "read": {
-                       "ubus": {
-                               "attendedsysupgrade": [
-                                       "sysupgrade"
-                               ], 
-                               "system": [
-                                       "board"
-                               ],
-                               "uci": [ 
-                                       "get" 
-                               ]
-                       },
-                       "uci": [ 
-                               "*" 
-                       ]
-               },
-               "write": {
-                       "cgi-io": [
-                               "upload"
-                       ]
-               }
-       }
-}
diff --git a/utils/rpcd-mod-attendedsysupgrade/files/attendedsysupgrade.defaults b/utils/rpcd-mod-attendedsysupgrade/files/attendedsysupgrade.defaults
deleted file mode 100644 (file)
index 02bac61..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-
-[ -e /etc/config/attendedsysupgrade ] && exit 0
-
-touch /etc/config/attendedsysupgrade
-
-uci -q batch <<EOF
-set attendedsysupgrade.updateserver=updateserver
-set attendedsysupgrade.updateserver.url='https://betaupdate.libremesh.org'
-
-set attendedsysupgrade.updateclient=updateclient
-set attendedsysupgrade.updateclient.update_packages='1'
-
-commit attendedsysupgrade
-EOF
-
-exit 01
diff --git a/utils/rpcd-mod-attendedsysupgrade/files/attendedsysupgrade.rpcd b/utils/rpcd-mod-attendedsysupgrade/files/attendedsysupgrade.rpcd
deleted file mode 100755 (executable)
index b2f4c5c..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/sh
-
-. /usr/share/libubox/jshn.sh
-
-case "$1" in
-       list)
-               json_init
-               json_add_object "sysupgrade"
-               json_add_boolean "keep_settings" 1
-               json_close_object
-               json_dump
-               ;;
-       call)
-               case "$2" in
-                       sysupgrade)
-                               read input;
-                               json_load "$input"
-                               json_get_var keep_settings keep_settings
-
-                               if [ -f "/tmp/sysupgrade.bin" ]; then
-                                       /etc/init.d/uhttpd stop
-                                       /etc/init.d/dropbear stop
-                                       sleep 1;
-                                       if [ "$keep_settings" -eq "0" ]; then
-                                               keep_settings_param="-n"
-                                       fi
-                                       /sbin/sysupgrade $keep_settings_param /tmp/sysupgrade.bin
-                               fi
-                               json_init
-                               json_add_string "message" "could not find /tmp/sysupgrade.bin"
-                               json_dump
-               esac
-               ;;
-esac
-
index 154336b7b0e2c26c60f94962847f0931e8eb2bc2..fc333612c83060cd3cb72b17d7628d4482d968ae 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=rpcd-mod-lxc
-PKG_RELEASE=20141012
+PKG_RELEASE=20171206
 
 PKG_LICENSE:=ISC
 
index 0d52f167749f70588a108cab448a7f9d494a038e..a98fcfc54482aa64a44cd30a8aedcd37e11b8ef8 100644 (file)
@@ -316,6 +316,53 @@ out:
        return rc;
 }
 
+static int
+rpc_lxc_info(struct ubus_context *ctx, struct ubus_object *obj,
+            struct ubus_request_data *req, const char *method,
+            struct blob_attr *msg)
+{
+       struct blob_attr *tb[__RPC_LXC_RENAME_MAX];
+       struct rpc_lxc *l = NULL;
+       char **addresses;
+       void *k;
+       pid_t initpid;
+
+       blobmsg_parse(rpc_lxc_min_policy, __RPC_LXC_MAX, tb, blob_data(msg), blob_len(msg));
+
+       l = rpc_lxc_init(tb);
+       if (!l)
+               return UBUS_STATUS_INVALID_ARGUMENT;
+
+       if (!l->container->is_running(l->container) &&
+           !l->container->is_defined(l->container))
+               return UBUS_STATUS_NOT_FOUND;
+
+       blob_buf_init(&buf, 0);
+
+       blobmsg_add_string(&buf, "name", l->container->name);
+
+       blobmsg_add_string(&buf, "state", l->container->state(l->container));
+
+       initpid = l->container->init_pid(l->container);
+       if (initpid >= 0)
+               blobmsg_add_u32(&buf, "pid", initpid);
+
+       k = blobmsg_open_array(&buf, "ips");
+       addresses = l->container->get_ips(l->container, NULL, NULL, 0);
+       if (addresses) {
+               int i;
+
+               for (i = 0; addresses[i]; i++)
+                       blobmsg_add_string(&buf, "ip", addresses[i]);
+       }
+       blobmsg_close_array(&buf, k);
+
+       ubus_send_reply(ctx, req, buf.head);
+       rpc_lxc_done(l);
+
+       return UBUS_STATUS_OK;
+}
+
 static int
 rpc_lxc_rename(struct ubus_context *ctx, struct ubus_object *obj,
                struct ubus_request_data *req, const char *method,
@@ -480,6 +527,7 @@ rpc_lxc_api_init(const struct rpc_daemon_ops *o, struct ubus_context *ctx)
                UBUS_METHOD("stop", rpc_lxc_stop, rpc_lxc_min_policy),
                UBUS_METHOD("freeze", rpc_lxc_freeze, rpc_lxc_min_policy),
                UBUS_METHOD("unfreeze", rpc_lxc_unfreeze, rpc_lxc_min_policy),
+               UBUS_METHOD("info", rpc_lxc_info, rpc_lxc_min_policy),
                UBUS_METHOD("rename", rpc_lxc_rename, rpc_lxc_rename_policy),
                UBUS_METHOD("create", rpc_lxc_create, rpc_lxc_create_policy),
                UBUS_METHOD("destroy", rpc_lxc_destroy, rpc_lxc_min_policy),
diff --git a/utils/rpcd-mod-packagelist/Makefile b/utils/rpcd-mod-packagelist/Makefile
deleted file mode 100644 (file)
index 61a5b48..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=rpcd-mod-packagelist
-PKG_VERSION:=0.1
-PKG_RELEASE:=1
-PKG_LICENSE:=GPL-2.0
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/rpcd-mod-packagelist
-  SECTION:=utils
-  CATEGORY:=Base system
-  TITLE:=ubus packagelist
-  MAINTAINER:=Paul Spooren <paul@spooren.de>
-  DEPENDS:=rpcd @!CLEAN_IPKG
-endef
-
-define Package/rpcd-mod-packagelist/description
-       add ubus call to receive user installed packages without the need of opkg installed
-endef
-
-define Build/Compile
-endef
-
-define Build/Configure
-endef
-
-define Package/rpcd-mod-packagelist/install
-       $(INSTALL_DIR) $(1)/usr/share/rpcd/acl.d/
-       $(INSTALL_BIN) ./files/packagelist.acl $(1)/usr/share/rpcd/acl.d/packagelist.json
-
-       $(INSTALL_DIR) $(1)/usr/libexec/rpcd/
-       $(INSTALL_BIN) ./files/packagelist.rpcd $(1)/usr/libexec/rpcd/packagelist
-endef
-
-$(eval $(call BuildPackage,rpcd-mod-packagelist))
diff --git a/utils/rpcd-mod-packagelist/files/packagelist.acl b/utils/rpcd-mod-packagelist/files/packagelist.acl
deleted file mode 100644 (file)
index 41d95a6..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-       "packagelist": {
-               "description": "get list of installed software packages",
-               "read": {
-                       "ubus": {
-                               "packagelist": [
-                                       "list"
-                               ]
-                       }
-               }
-       }
-}
diff --git a/utils/rpcd-mod-packagelist/files/packagelist.rpcd b/utils/rpcd-mod-packagelist/files/packagelist.rpcd
deleted file mode 100755 (executable)
index b9b7342..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-
-. /usr/share/libubox/jshn.sh
-
-case "$1" in
-list)
-       json_init
-       json_add_object "list"
-       json_dump
-       ;;
-call)
-       case "$2" in
-       list)
-               json_init;
-               json_add_object "packagelist"
-
-               if [ -f /usr/lib/opkg/status ]; then
-                       while read var p1 p2 p3; do
-                               if [ "$var" = "Package:" ]; then
-                                       pkg="$p1"
-                               fi
-                               if [ "$var" = "Version:" ]; then
-                                       version="$p1"
-                               fi
-
-                               if [ "$var" = "Status:" \
-                                       -a "$p1" = "install" \
-                                       -a "$p2" = "user" \
-                                       -a "$p3" = "installed" ]; then
-                                               json_add_string "$pkg" "$version";
-                               fi
-                       done < /usr/lib/opkg/status
-               fi
-
-               json_close_object
-               json_dump
-               ;;
-       esac
-       ;;
-esac
index 7fcf435c01151ded6b116d228dd55d98eddacba5..8399f19bdf1ce38a4448effff892886eee4f581d 100644 (file)
@@ -8,11 +8,11 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=screen
-PKG_VERSION:=4.6.1
+PKG_VERSION:=4.6.2
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=aba9af66cb626155d6abce4703f45cce0e30a5114a368bd6387c966cbbbb7c64
+PKG_HASH:=1b6922520e6a0ce5e28768d620b0f640a6631397f95ccb043b70b91bb503fa3a
 PKG_SOURCE_URL:=@GNU/screen
 
 PKG_LICENSE:=GPL-3.0+
index db9f7fb6efbbc270984157733bfcc590c10d1ca4..3ab40d9a3c3462e915b7e336a18b983be0ffa13b 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=shadow
 PKG_VERSION:=4.2.1
-PKG_RELEASE:=6
+PKG_RELEASE:=8
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=http://pkg-shadow.alioth.debian.org/releases
@@ -27,7 +27,8 @@ include $(INCLUDE_DIR)/nls.mk
 SHADOW_APPLETS := \
        chage chpasswd chfn chsh expiry faillog gpasswd \
        groupadd groupdel groupmems groupmod groups \
-       lastlog login newgrp nologin passwd su \
+       lastlog login newgidmap newgrp newuidmap nologin \
+       passwd su \
        useradd userdel usermod vipw
 
 CONFIGURE_ARGS += \
@@ -37,8 +38,7 @@ CONFIGURE_ARGS += \
        --without-acl \
        --without-attr \
        --without-tcb \
-       --without-nscd \
-       --disable-subordinate-ids \
+       --without-nscd
 
 define Package/shadow/Default
   SECTION:=utils
diff --git a/utils/shadow/patches/003-Check-size-of-uid_t-and-gid_t-using-AC_CHECK_SIZEOF.patch b/utils/shadow/patches/003-Check-size-of-uid_t-and-gid_t-using-AC_CHECK_SIZEOF.patch
new file mode 100644 (file)
index 0000000..046523d
--- /dev/null
@@ -0,0 +1,35 @@
+From 2cb54158b80cdbd97ca3b36df83f9255e923ae3f Mon Sep 17 00:00:00 2001
+From: James Le Cuirot <chewi@aura-online.co.uk>
+Date: Sat, 23 Aug 2014 09:46:39 +0100
+Subject: [PATCH] Check size of uid_t and gid_t using AC_CHECK_SIZEOF
+
+This built-in check is simpler than the previous method and, most
+importantly, works when cross-compiling.
+
+Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
+---
+ configure.in | 14 ++++----------
+ 1 file changed, 4 insertions(+), 10 deletions(-)
+
+--- a/configure.in
++++ b/configure.in
+@@ -334,16 +334,10 @@ if test "$enable_subids" != "no"; then
+       dnl
+       dnl FIXME: check if 32 bit UIDs/GIDs are supported by libc
+       dnl
+-      AC_RUN_IFELSE([AC_LANG_SOURCE([
+-#include <sys/types.h>
+-int main(void) {
+-      uid_t u;
+-      gid_t g;
+-      return (sizeof u < 4) || (sizeof g < 4);
+-}
+-      ])], [id32bit="yes"], [id32bit="no"])
++      AC_CHECK_SIZEOF([uid_t],, [#include "sys/types.h"])
++      AC_CHECK_SIZEOF([gid_t],, [#include "sys/types.h"])
+-      if test "x$id32bit" = "xyes"; then
++      if test "$ac_cv_sizeof_uid_t" -ge 4 && test "$ac_cv_sizeof_gid_t" -ge 4; then
+               AC_DEFINE(ENABLE_SUBIDS, 1, [Define to support the subordinate IDs.])
+               enable_subids="yes"
+       else
diff --git a/utils/shadow/patches/003-fix-disabling-subids.patch b/utils/shadow/patches/003-fix-disabling-subids.patch
deleted file mode 100644 (file)
index bbc65c7..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
---- a/src/usermod.c
-+++ b/src/usermod.c
-@@ -1361,6 +1361,7 @@ static void process_flags (int argc, cha
-               exit (E_UID_IN_USE);
-       }
-+#ifdef ENABLE_SUBIDS
-       if (   (vflg || Vflg)
-           && !is_sub_uid) {
-               fprintf (stderr,
-@@ -1376,6 +1377,7 @@ static void process_flags (int argc, cha
-                        Prog, sub_gid_dbname (), "-w", "-W");
-               exit (E_USAGE);
-       }
-+#endif
- }
- /*
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -52,7 +52,10 @@ usbin_PROGRAMS = \
- noinst_PROGRAMS = id sulogin
- suidbins       = su
--suidubins      = chage chfn chsh expiry gpasswd newgrp passwd newuidmap newgidmap
-+suidubins      = chage chfn chsh expiry gpasswd newgrp passwd
-+if ENABLE_SUBIDS
-+      suidubins += newuidmap newgidmap
-+endif
- if ACCT_TOOLS_SETUID
-       suidubins += chage chgpasswd chpasswd groupadd groupdel groupmod newusers useradd userdel usermod
- endif
index 4c130c7367b95c413343877e1bc9c737124d2caf..2f7a670b36c9c58aea05fc98c1a9c195a006d619 100644 (file)
@@ -1,6 +1,6 @@
 --- a/src/su.c
 +++ b/src/su.c
-@@ -1090,8 +1090,12 @@
+@@ -1090,8 +1090,12 @@ int main (int argc, char **argv)
  
                if (fd >= 0) {
                        err = ioctl (fd, TIOCNOTTY, (char *) 0);
index 519c51754c9847c9495263b571c8dad7979deb6f..d856ce7c150e5f13628077a57c26941f9dec2742 100644 (file)
@@ -9,16 +9,16 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=squashfs-tools
 PKG_VERSION:=4.3
-PKG_RELEASE:=5
+PKG_RELEASE:=6
 PKG_LICENSE:=GPL-2.0
 PKG_LICENSE_FILES:=COPYING
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://github.com/plougher/squashfs-tools
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=9c1db6d13a51a2e009f0027ef336ce03624eac0d
+PKG_SOURCE_VERSION:=5be5d61e5e5a93911256b5f2106e50da0ca81e8d
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_MIRROR_HASH:=4e9a017561b6f9d7b9782c7c672d224726ffd069b0543f310e85ed8ab1c4589b
+PKG_MIRROR_HASH:=eac1bc559708dc8656fe7d099ffc9e9374ae0cfb9a12d180a9c0c28acb0adf11
 
 PKG_BUILD_PARALLEL:=1
 include $(INCLUDE_DIR)/package.mk
diff --git a/utils/squashfs-tools/patches/0001-squashfs-tools-fix-fnmatch.h-compatibility-with-musl.patch b/utils/squashfs-tools/patches/0001-squashfs-tools-fix-fnmatch.h-compatibility-with-musl.patch
deleted file mode 100644 (file)
index 5bfd28d..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-From a0c129760ca9bdc7e564ae2a508fac3799f9d39b Mon Sep 17 00:00:00 2001
-From: Alexandru Ardelean <aa@ocedo.com>
-Date: Wed, 6 Jan 2016 15:33:43 +0200
-Subject: [PATCH 1/2] squashfs-tools: with fnmatch.h compatibility with musl
-
-Signed-off-by: Alexandru Ardelean <aa@ocedo.com>
----
- squashfs-tools/action.c         |  2 +-
- squashfs-tools/fnmatch_compat.h | 32 ++++++++++++++++++++++++++++++++
- squashfs-tools/mksquashfs.c     |  2 +-
- squashfs-tools/unsquashfs.c     |  1 +
- squashfs-tools/unsquashfs.h     |  1 -
- 5 files changed, 35 insertions(+), 3 deletions(-)
- create mode 100644 squashfs-tools/fnmatch_compat.h
-
-diff --git a/squashfs-tools/action.c b/squashfs-tools/action.c
-index 35889a4..4b06ccb 100644
---- a/squashfs-tools/action.c
-+++ b/squashfs-tools/action.c
-@@ -31,7 +31,6 @@
- #include <sys/stat.h>
- #include <sys/types.h>
- #include <unistd.h>
--#include <fnmatch.h>
- #include <pwd.h>
- #include <grp.h>
- #include <sys/wait.h>
-@@ -43,6 +42,7 @@
- #include "mksquashfs.h"
- #include "action.h"
- #include "error.h"
-+#include "fnmatch_compat.h"
- /*
-  * code to parse actions
-diff --git a/squashfs-tools/fnmatch_compat.h b/squashfs-tools/fnmatch_compat.h
-new file mode 100644
-index 0000000..7b4afd8
---- /dev/null
-+++ b/squashfs-tools/fnmatch_compat.h
-@@ -0,0 +1,32 @@
-+#ifndef FNMATCH_COMPAT
-+#define FNMATCH_COMPAT
-+/*
-+ * Squashfs
-+ *
-+ * Copyright (c) 2015
-+ * Phillip Lougher <phillip@squashfs.org.uk>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2,
-+ * or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ * fnmatch_compat.h
-+ */
-+
-+#include <fnmatch.h>
-+
-+#ifndef FNM_EXTMATCH
-+#define FNM_EXTMATCH  0
-+#endif
-+
-+#endif
-diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c
-index d221c35..4e7cbdd 100644
---- a/squashfs-tools/mksquashfs.c
-+++ b/squashfs-tools/mksquashfs.c
-@@ -46,7 +46,6 @@
- #include <sys/mman.h>
- #include <pthread.h>
- #include <regex.h>
--#include <fnmatch.h>
- #include <sys/wait.h>
- #include <limits.h>
- #include <ctype.h>
-@@ -76,6 +75,7 @@
- #include "read_fs.h"
- #include "restore.h"
- #include "process_fragments.h"
-+#include "fnmatch_compat.h"
- int delete = FALSE;
- int fd;
-diff --git a/squashfs-tools/unsquashfs.c b/squashfs-tools/unsquashfs.c
-index 1323dd6..2428baa 100644
---- a/squashfs-tools/unsquashfs.c
-+++ b/squashfs-tools/unsquashfs.c
-@@ -30,6 +30,7 @@
- #include "xattr.h"
- #include "unsquashfs_info.h"
- #include "stdarg.h"
-+#include "fnmatch_compat.h"
- #include <sys/sysinfo.h>
- #include <sys/types.h>
-diff --git a/squashfs-tools/unsquashfs.h b/squashfs-tools/unsquashfs.h
-index ecd0bb4..0edbd25 100644
---- a/squashfs-tools/unsquashfs.h
-+++ b/squashfs-tools/unsquashfs.h
-@@ -40,7 +40,6 @@
- #include <grp.h>
- #include <time.h>
- #include <regex.h>
--#include <fnmatch.h>
- #include <signal.h>
- #include <pthread.h>
- #include <math.h>
--- 
-2.1.4
-
diff --git a/utils/squashfs-tools/patches/0002-pseudo.c-add-explicit-stat.h-include.patch b/utils/squashfs-tools/patches/0002-pseudo.c-add-explicit-stat.h-include.patch
deleted file mode 100644 (file)
index 8f10211..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-From 0ea07a1b5ddb2f2fa1358b2c1b42bcf34bbf5ee2 Mon Sep 17 00:00:00 2001
-From: Alexandru Ardelean <aa@ocedo.com>
-Date: Wed, 6 Jan 2016 15:36:48 +0200
-Subject: [PATCH 2/2] pseudo.c: add explicit <stat.h> include
-
-Signed-off-by: Alexandru Ardelean <aa@ocedo.com>
----
- squashfs-tools/pseudo.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/squashfs-tools/pseudo.c b/squashfs-tools/pseudo.c
-index f85fe60..7a26bca 100644
---- a/squashfs-tools/pseudo.c
-+++ b/squashfs-tools/pseudo.c
-@@ -32,6 +32,7 @@
- #include <stdlib.h>
- #include <sys/types.h>
- #include <sys/wait.h>
-+#include <sys/stat.h>
- #include <ctype.h>
- #include "pseudo.h"
--- 
-2.1.4
-
index 71751968ab5a49bba579218b2d6e0a89d4dc84c8..60df6f57992684821f61aa9c95f8ede67b2a1592 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=sysstat
 PKG_VERSION:=11.6.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_LICENSE:=GPL-2.0
 PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
diff --git a/utils/sysstat/patches/110-remove-sccsid.patch b/utils/sysstat/patches/110-remove-sccsid.patch
new file mode 100644 (file)
index 0000000..05c1032
--- /dev/null
@@ -0,0 +1,131 @@
+From: Robert Luberda <robert@debian.org>
+Date: Wed, 9 Sep 2015 21:37:37 +0200
+Subject: Remove scscid()
+
+Remove sccsid() function togethwe with SCCSID string that
+contained __DATE__ and __TIME__ macros. This should cause
+binary to be more reproducible, see
+https://wiki.debian.org/ReproducibleBuilds/TimestampsFromCPPMacros
+---
+ cifsiostat.c | 3 ---
+ iostat.c     | 3 ---
+ mpstat.c     | 3 ---
+ pidstat.c    | 3 ---
+ sadc.c       | 3 ---
+ sadf.c       | 3 ---
+ sar.c        | 3 ---
+ tapestat.c   | 3 ---
+ 8 files changed, 24 deletions(-)
+
+diff --git a/cifsiostat.c b/cifsiostat.c
+index a3c81d0..4668a7c 100644
+--- a/cifsiostat.c
++++ b/cifsiostat.c
+@@ -41,9 +41,6 @@
+ #define _(string) (string)
+ #endif
+-#define SCCSID "@(#)sysstat-" VERSION ": " __FILE__ " compiled " __DATE__ " " __TIME__
+-char *sccsid(void) { return (SCCSID); }
+-
+ unsigned long long uptime0[2] = {0, 0};
+ struct cifs_stats *st_cifs[2];
+ struct io_hdr_stats *st_hdr_cifs;
+diff --git a/iostat.c b/iostat.c
+index 7b346e2..a0199d2 100644
+--- a/iostat.c
++++ b/iostat.c
+@@ -48,9 +48,6 @@
+ #define _(string) (string)
+ #endif
+-#define SCCSID "@(#)sysstat-" VERSION ": " __FILE__ " compiled " __DATE__ " " __TIME__
+-char *sccsid(void) { return (SCCSID); }
+-
+ struct stats_cpu *st_cpu[2];
+ unsigned long long uptime[2]  = {0, 0};
+ unsigned long long uptime0[2] = {0, 0};
+diff --git a/mpstat.c b/mpstat.c
+index 1c83ea2..e4a040b 100644
+--- a/mpstat.c
++++ b/mpstat.c
+@@ -43,9 +43,6 @@
+ #define _(string) (string)
+ #endif
+-#define SCCSID "@(#)sysstat-" VERSION ": "  __FILE__ " compiled " __DATE__ " " __TIME__
+-char *sccsid(void) { return (SCCSID); }
+-
+ unsigned long long uptime[3] = {0, 0, 0};
+ unsigned long long uptime0[3] = {0, 0, 0};
+diff --git a/pidstat.c b/pidstat.c
+index 876635c..5372176 100644
+--- a/pidstat.c
++++ b/pidstat.c
+@@ -47,9 +47,6 @@
+ #define _(string) (string)
+ #endif
+-#define SCCSID "@(#)sysstat-" VERSION ": " __FILE__ " compiled " __DATE__ " " __TIME__
+-char *sccsid(void) { return (SCCSID); }
+-
+ unsigned long long uptime[3] = {0, 0, 0};
+ unsigned long long uptime0[3] = {0, 0, 0};
+ struct pid_stats *st_pid_list[3] = {NULL, NULL, NULL};
+diff --git a/sadc.c b/sadc.c
+index 7cdbc38..bfb4dac 100644
+--- a/sadc.c
++++ b/sadc.c
+@@ -52,9 +52,6 @@
+ #include "sensors/error.h"
+ #endif
+-#define SCCSID "@(#)sysstat-" VERSION ": " __FILE__ " compiled " __DATE__ " " __TIME__
+-char *sccsid(void) { return (SCCSID); }
+-
+ long interval = 0;
+ unsigned int flags = 0;
+diff --git a/sadf.c b/sadf.c
+index 160b485..0c0017c 100644
+--- a/sadf.c
++++ b/sadf.c
+@@ -41,9 +41,6 @@
+ # define _(string) (string)
+ #endif
+-#define SCCSID "@(#)sysstat-" VERSION ": " __FILE__ " compiled " __DATE__ " " __TIME__
+-char *sccsid(void) { return (SCCSID); }
+-
+ long interval = -1, count = 0;
+ unsigned int flags = 0;
+diff --git a/sar.c b/sar.c
+index ccf426e..07a9b4a 100644
+--- a/sar.c
++++ b/sar.c
+@@ -42,9 +42,6 @@
+ #define _(string) (string)
+ #endif
+-#define SCCSID "@(#)sysstat-" VERSION ": " __FILE__ " compiled " __DATE__ " " __TIME__
+-char *sccsid(void) { return (SCCSID); }
+-
+ /* Interval and count parameters */
+ long interval = -1, count = 0;
+diff --git a/tapestat.c b/tapestat.c
+index 268e4a5..df0a01b 100644
+--- a/tapestat.c
++++ b/tapestat.c
+@@ -58,9 +58,6 @@
+ #define _(string) (string)
+ #endif
+-#define SCCSID "@(#)sysstat-" VERSION ": " __FILE__ " compiled " __DATE__ " " __TIME__
+-char *sccsid(void) { return (SCCSID); }
+-
+ int cpu_nr = 0;               /* Nb of processors on the machine */
+ int flags = 0;                /* Flag for common options and system state */
index 606a96a4e15bbcc4ffe4937c013dfae203473382..4f22824752697fa1835ebabba5490a6ae75851d8 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2011-2016 OpenWrt.org
+# Copyright (C) 2011-2017 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:=tcsh
 PKG_VERSION:=6.20.00
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:= \
diff --git a/utils/tcsh/patches/001-sysmalloc.patch b/utils/tcsh/patches/001-sysmalloc.patch
new file mode 100644 (file)
index 0000000..b22c018
--- /dev/null
@@ -0,0 +1,15 @@
+--- a/config_f.h               
++++ b/config_f.h
+@@ -139,11 +139,8 @@
+  *            This can be much slower and no memory statistics will be
+  *            provided.
+  */
+-#if defined(__MACHTEN__) || defined(PURIFY) || defined(MALLOC_TRACE) || defined(_OSD_POSIX) || defined(__MVS__) || defined (__CYGWIN__) || defined(__GLIBC__) || defined(__OpenBSD__) || defined(__APPLE__) || defined (__ANDROID__)
++
+ # define SYSMALLOC
+-#else
+-# undef SYSMALLOC
+-#endif
+ /*
+  * USE_ACCESS Use access(2) rather than stat(2) when POSIX is defined.
diff --git a/utils/tio/Makefile b/utils/tio/Makefile
new file mode 100644 (file)
index 0000000..9d67dcd
--- /dev/null
@@ -0,0 +1,42 @@
+#
+# Copyright (C) 2017 Daniel Engberg <daniel.engberg.lists@pyret.net>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=tio
+PKG_VERSION:=1.26
+PKG_RELEASE:=1
+PKG_MAINTAINER:=Daniel Engberg <daniel.engberg.lists@pyret.net>
+PKG_LICENSE:=GPL-2.0+
+PKG_LICENSE_FILES:=COPYING
+
+PKG_SOURCE_URL:=https://github.com/$(PKG_NAME)/$(PKG_NAME)/releases/download/v$(PKG_VERSION)/
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_HASH:=f9532d519fcc7d19b25fbe9fc1ee857dc10e5862a450b4b3b423f8e8538f2500
+
+PKG_FIXUP:=autoreconf
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/tio
+  SECTION:=utils
+  CATEGORY:=Utilities
+  TITLE:=A simple TTY terminal I/O application
+  URL:=https://tio.github.io/
+  SUBMENU:=Terminal
+endef
+
+define Package/tio/description
+  A small and simple TTY terminal I/O application
+endef
+
+define Package/tio/install
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/tio $(1)/usr/sbin/
+endef
+
+$(eval $(call BuildPackage,tio))
index c88ae0bd2707572864c8d2cb989e4e16e3389d3f..f99b7bc867818e315ca01472a71f0d876ca2389f 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=tmux
-PKG_VERSION:=2.5
+PKG_VERSION:=2.6
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://github.com/tmux/tmux/releases/download/$(PKG_VERSION)
-PKG_HASH:=ae135ec37c1bf6b7750a84e3a35e93d91033a806943e034521c8af51b12d95df
+PKG_HASH:=b17cd170a94d7b58c0698752e1f4f263ab6dc47425230df7e53a6435cc7cd7e8
 PKG_MAINTAINER:=Maxim Storchak <m.storchak@gmail.com>
 
 PKG_LICENSE:=ISC
diff --git a/utils/uledd/Makefile b/utils/uledd/Makefile
new file mode 100644 (file)
index 0000000..b698333
--- /dev/null
@@ -0,0 +1,32 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=uledd
+PKG_RELEASE:=1
+
+PKG_SOURCE_URL:=https://github.com/blogic/uledd.git
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_VERSION:=bc94c7e52009f7ec33b23652502b4754351d8040
+PKG_MIRROR_HASH:=23a407197d6a423bb0b32f381e93ad3676e15f07465d7b53c843a2b510c7c284
+PKG_MAINTAINER:=John Crispin <john@phrozen.org>
+PKG_LICENSE:=GPL-2.0
+
+CMAKE_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/uledd
+  SECTION:=utils
+  CATEGORY:=Utilities
+  DEPENDS:=+libubox +libubus
+  TITLE:=PWM/RGB LED ubus frontend
+endef
+
+define Package/uledd/install
+       $(INSTALL_DIR) $(1)/sbin $(1)/etc/init.d
+
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/uledd $(1)/sbin/
+       $(INSTALL_BIN) ./files/uledd.init $(1)/etc/init.d/uledd
+endef
+
+$(eval $(call BuildPackage,uledd))
diff --git a/utils/uledd/files/uledd.init b/utils/uledd/files/uledd.init
new file mode 100644 (file)
index 0000000..b179267
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh /etc/rc.common
+
+START=95
+
+USE_PROCD=1
+PROG=/sbin/uledd
+
+start_service() {
+       procd_open_instance
+       procd_set_param command "$PROG"
+       procd_set_param respawn
+       procd_close_instance
+}
index 39a28e7719142879641411abaa712e10802fed9e..fd8f74b7c34b7841d94fda04ab74ec5b5e84e2b8 100644 (file)
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=unzip
 PKG_REV:=60
 PKG_VERSION:=6.0
-PKG_RELEASE:=5
+PKG_RELEASE:=6
 
 PKG_SOURCE:=$(PKG_NAME)$(PKG_REV).tar.gz
 PKG_SOURCE_URL:=@SF/infozip
diff --git a/utils/unzip/patches/010-remove-build-date.patch b/utils/unzip/patches/010-remove-build-date.patch
new file mode 100644 (file)
index 0000000..bb60533
--- /dev/null
@@ -0,0 +1,17 @@
+From: Jérémy Bobbio <lunar@debian.org>
+Subject: Remove build date
+Bug-Debian: https://bugs.debian.org/782851
+ In order to make unzip build reproducibly, we remove the
+ (already optional) build date from the binary.
+
+--- a/unix/unix.c
++++ b/unix/unix.c
+@@ -1705,7 +1705,7 @@
+ #endif /* Sun */
+ #endif /* SGI */
+-#ifdef __DATE__
++#if 0
+       " on ", __DATE__
+ #else
+       "", ""
index bc7df71ce8b3ba6d5129ce78d08d8e5281eb7330..2480c26572c98a324b7dcb11672eef88a5d26ca0 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=vim
-PKG_VERSION:=8.0.069
-PKG_RELEASE:=4
+PKG_VERSION:=8.0.586
+PKG_RELEASE:=2
 VIMVER:=80
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=ftp://ftp.vim.org/pub/vim/unix/
-PKG_HASH:=2e179182814715c3c77010c7300a4abcb964ba8a99a470640f9f2f03884b2ccb
+PKG_HASH:=08bd0d1dd30ece3cb9905ccd48b82b2f81c861696377508021265177dc153a61
 PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)$(VIMVER)
@@ -114,7 +114,8 @@ CONFIGURE_ARGS += \
        --disable-cscope \
        --disable-gpm \
        --disable-acl \
-       --with-tlib=ncurses
+       --with-tlib=ncurses \
+       --with-compiledby="non-existent-hostname-compiled"
 
 CONFIGURE_VARS += \
        vim_cv_getcwd_broken=no \
@@ -126,6 +127,11 @@ CONFIGURE_VARS += \
        vim_cv_tty_group=root \
        vim_cv_tty_mode=0620
 
+define Build/Prepare
+       $(call Build/Prepare/Default)
+       $(MAKE) -C $(PKG_BUILD_DIR)/src autoconf
+endef
+
 ifneq ($(CONFIG_PACKAGE_vim),)
 define Build/Compile/vim
        $(call Build/Configure/Default, \
diff --git a/utils/vim/patches/001-support-defining-compilation-date-in-SOURCE_DATE_EPOCH.patch b/utils/vim/patches/001-support-defining-compilation-date-in-SOURCE_DATE_EPOCH.patch
new file mode 100644 (file)
index 0000000..220539c
--- /dev/null
@@ -0,0 +1,81 @@
+From: James McCoy <jamessan@jamessan.com>
+Date: Thu, 28 Jan 2016 10:55:11 -0500
+Subject: Support defining compilation date in $SOURCE_DATE_EPOCH
+
+There is an ongoing effort[0] to make FOSS software reproducibly
+buildable.  In order to make Vim build reproducibly, it is necessary to
+allow defining the date/time that is part of VIM_VERSION_LONG as part of
+the build process.
+
+This commit enables that by adding support for the SOURCE_DATE_EPOCH
+spec[1].  When the $SOURCE_DATE_EPOCH environment variable is defined,
+it will be used to populate the BUILD_DATE preprocessor define.
+
+If BUILD_DATE is not defined, the existing behavior of relying on the
+preprocessor's __DATE__/__TIME__ symbols will be used.
+
+[0]: https://reproducible-builds.org/
+[1]: https://reproducible-builds.org/specs/source-date-epoch/
+---
+ src/config.h.in  |  3 +++
+ src/configure.ac | 10 ++++++++++
+ src/version.c    |  6 ++++++
+ 3 files changed, 19 insertions(+)
+
+diff --git a/src/config.h.in b/src/config.h.in
+index e692d40..d3aa1a2 100644
+--- a/src/config.h.in
++++ b/src/config.h.in
+@@ -30,6 +30,9 @@
+ /* Define when __DATE__ " " __TIME__ can be used */
+ #undef HAVE_DATE_TIME
++/* Defined as the date of last modification */
++#undef BUILD_DATE
++
+ /* Define when __attribute__((unused)) can be used */
+ #undef HAVE_ATTRIBUTE_UNUSED
+diff --git a/src/configure.ac b/src/configure.ac
+index e287124..5a16797 100644
+--- a/src/configure.ac
++++ b/src/configure.ac
+@@ -29,6 +29,16 @@ dnl in autoconf needs it, where it uses STDC_HEADERS.
+ AC_HEADER_STDC
+ AC_HEADER_SYS_WAIT
++dnl If $SOURCE_DATE_EPOCH is present in the environment, use that as the
++dnl "compiled" timestamp in :version's output.  Attempt to get the formatted
++dnl date using GNU date syntax, BSD date syntax, and finally falling back to
++dnl just using the current time.
++if test -n "$SOURCE_DATE_EPOCH"; then
++  DATE_FMT="%b %d %Y %H:%M:%S"
++  BUILD_DATE=$(LC_ALL=C date -u -d "@$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || LC_ALL=C date -u -r "$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || LC_ALL=C date -u "+$DATE_FMT")
++  AC_DEFINE_UNQUOTED(BUILD_DATE, ["$BUILD_DATE"])
++fi
++
+ dnl Check for the flag that fails if stuff are missing.
+ AC_MSG_CHECKING(--enable-fail-if-missing argument)
+diff --git a/src/version.c b/src/version.c
+index 65f5a4b..9422657 100644
+--- a/src/version.c
++++ b/src/version.c
+@@ -44,11 +44,17 @@ make_version(void)
+      * VAX C can't catenate strings in the preprocessor.
+      */
+     strcpy(longVersion, VIM_VERSION_LONG_DATE);
++#ifdef BUILD_DATE
++    strcat(longVersion, BUILD_DATE);
++#else
+     strcat(longVersion, __DATE__);
+     strcat(longVersion, " ");
+     strcat(longVersion, __TIME__);
++#endif
+     strcat(longVersion, ")");
+ }
++# elif defined(BUILD_DATE)
++char  *longVersion = VIM_VERSION_LONG_DATE BUILD_DATE ")";
+ # else
+ char  *longVersion = VIM_VERSION_LONG_DATE __DATE__ " " __TIME__ ")";
+ # endif
index d6f954e9e5617098904b9bd06e68c14b04e594bb..213186063410a92ba2062be6377cc28d9e4f3d12 100644 (file)
@@ -83,7 +83,7 @@ stop() {
 
                while read pid
                do
-                       kill "$pid"
+                       kill -KILL "$pid"
                done < "${PIDFILE}.pids"
 
                rm "${PIDFILE}.pids"
index 6849a59e651f02d441296254c27af03698c5dc0a..a15f78f0e81c2b5a7c2567fbe3c344d7dd2358e7 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=yara
-PKG_VERSION:=3.6.3
+PKG_VERSION:=3.7.0
 PKG_RELEASE:=1
 PKG_LICENSE:=BSD-3-Clause
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://github.com/VirusTotal/yara/archive/v$(PKG_VERSION)/
-PKG_HASH:=ad2c0e788b4d8b2f3e9078f448754313249a302b749b9a24e932bfc5e141a5e8
+PKG_HASH:=01f0841e7387918c2b6d0b7fb48014bda41d1487be1cabf718a0576018969641
 
 PKG_FIXUP:=autoreconf
 PKG_BUILD_PARALLEL:=1
index afdc76ada53f93848849d947faf666f522855b0b..c87f1ed84f16f96d1cee6f75eaa44d4345f2fbfb 100644 (file)
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=zip
 PKG_REV:=30
 PKG_VERSION:=3.0
-PKG_RELEASE:=3
+PKG_RELEASE:=4
 
 PKG_SOURCE:=$(PKG_NAME)$(PKG_REV).tar.gz
 PKG_SOURCE_URL:=@SF/infozip
diff --git a/utils/zip/patches/010-remove-build-date.patch b/utils/zip/patches/010-remove-build-date.patch
new file mode 100644 (file)
index 0000000..d7165cd
--- /dev/null
@@ -0,0 +1,15 @@
+From: Santiago Vila <sanvila@debian.org>
+Subject: Remove (optional) build date to make the build reproducible
+Bug-Debian: http://bugs.debian.org/779042
+
+--- a/unix/unix.c
++++ b/unix/unix.c
+@@ -1020,7 +1020,7 @@
+ /* Define the compile date string */
+-#ifdef __DATE__
++#if 0
+ #  define COMPILE_DATE " on " __DATE__
+ #else
+ #  define COMPILE_DATE ""
index fd458dda1dc7030e1d54d2aecfb67181303b3d18..7ea8b4ba9d6d7a2323fdb74f3b433c93e693d105 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2016 OpenWrt.org
+# Copyright (C) 2007-2017 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:=2017b
-PKG_VERSION_CODE:=2017b
+PKG_VERSION:=2017c
+PKG_VERSION_CODE:=2017c
 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_HASH:=f8242a522ea3496b0ce4ff4f2e75a049178da21001a08b8e666d8cbe07d18086
+PKG_HASH:=d6543f92a929826318e2f44ff3a7611ce5f565a43e10250b42599d0ba4cbd90b
 
 include $(INCLUDE_DIR)/package.mk
 
 define Download/tzcode
    FILE=$(PKG_SOURCE_CODE)
    URL=$(PKG_SOURCE_URL)
-   HASH:=4d1735bb54e22b8d7443d4d1f1a13d007ae11be79a35e51f8e8322fb8e292d40
+   HASH:=81e8b4bc23e60906640c266bbff3789661e22f0fa29fe61b96ec7c2816c079b7
 endef
 
 $(eval $(call Download,tzcode))
@@ -110,7 +110,7 @@ define Build/Compile
                $(HOST_CONFIGURE_OPTS) \
                CC="$(HOSTCC)" \
                LD="\$$$$(CC)" \
-               CPPFLAGS="$(HOST_CPPFLAGS)" \
+               CPPFLAGS="$(HOST_CPPFLAGS) -DHAVE_SNPRINTF=1" \
                LDFLAGS="$(HOST_LDFLAGS)" \
                TOPDIR="$(PKG_INSTALL_DIR)" \
                TZDIR="$(PKG_INSTALL_DIR)/zoneinfo" \
index beb3925012284a12621dfd804fc98666fca7d97c..95cb8a7d8b4a11f8685162efbc93aa64b58bbca5 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=zsh
-PKG_VERSION:=5.2
+PKG_VERSION:=5.4.2
 PKG_RELEASE:=1
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@SF/zsh
-PKG_HASH:=f17916320ffaa844bbd7ce48ceeb5945fc5f3eff64b149b4229bbfbdf3795a9d
+PKG_HASH:=957bcdb2c57f64c02f673693ea5a7518ef24b6557aeb3a4ce222cefa6d74acc9
 PKG_MAINTAINER:=Vadim A. Misbakh-Soloviov <openwrt-zsh@mva.name>
 PKG_LICENSE:=ZSH
 
@@ -41,14 +41,26 @@ endef
 
 define Build/Configure
        $(call Build/Configure/Default, \
-               --bindir=/bin \
                --disable-etcdir \
                --disable-gdbm \
+               --enable-dynamic \
+               --enable-libc-musl \
                --enable-pcre \
+               --enable-cap \
                --enable-multibyte \
+               --enable-unicode9 \
+               --enable-runhelpdir=$(CONFIGURE_PREFIX)/share/zsh/$(PKG_VERSION)/help \
+               --enable-fndir=$(CONFIGURE_PREFIX)/share/zsh/$(PKG_VERSION)/functions \
+               --enable-site-fndir=$(CONFIGURE_PREFIX)/share/zsh/site-functions \
                --enable-function-subdirs \
                --with-tcsetpgrp \
                --with-term-lib="ncursesw", \
+               zsh_cv_shared_environ=yes \
+               zsh_cv_sys_dynamic_clash_ok=yes\
+               zsh_cv_sys_dynamic_execsyms=yes \
+               zsh_cv_sys_dynamic_rtld_global=yes \
+               zsh_cv_sys_dynamic_strip_exe=yes \
+               zsh_cv_sys_dynamic_strip_lib=yes \
                zsh_cv_sys_nis=no \
                zsh_cv_sys_nis_plus=no \
        )
@@ -70,14 +82,27 @@ endef
 define Package/zsh/postinst
 #!/bin/sh
 grep zsh $${IPKG_INSTROOT}/etc/shells || \
-       echo "/bin/zsh" >> $${IPKG_INSTROOT}/etc/shells
+       echo "/usr/bin/zsh" >> $${IPKG_INSTROOT}/etc/shells
+
+       # Backwards compatibility
+       if [[ -e /bin/zsh ]] && ([[ ! -L /bin/zsh ]] || [[ "$(readlink -fn $${IPKG_INSTROOT}/bin/zsh)" != "../$(CONFIGURE_PREFIX)/bin/zsh" ]]); then
+               ln -fs "../$(CONFIGURE_PREFIX)/bin/zsh" "$${IPKG_INSTROOT}/bin/zsh"
+       fi
 endef
 
 define Package/zsh/install
        $(INSTALL_DIR) $(1)/bin
-       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/bin/zsh $(1)/bin/
-       $(INSTALL_DIR) $(1)/usr/share/zsh/$(PKG_VERSION)
-       $(CP) $(PKG_INSTALL_DIR)/usr/share/zsh/$(PKG_VERSION)/* $(1)/usr/share/zsh/$(PKG_VERSION)/
+       $(INSTALL_DIR) $(1)/$(CONFIGURE_PREFIX)/bin
+       $(INSTALL_DIR) $(1)/$(CONFIGURE_PREFIX)/lib/zsh/$(PKG_VERSION)
+       $(INSTALL_DIR) $(1)/$(CONFIGURE_PREFIX)/share/zsh/$(PKG_VERSION)
+
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/$(CONFIGURE_PREFIX)/bin/zsh $(1)/$(CONFIGURE_PREFIX)/bin/
+       $(CP) $(PKG_INSTALL_DIR)/$(CONFIGURE_PREFIX)/lib/zsh/$(PKG_VERSION)/* $(1)/$(CONFIGURE_PREFIX)/lib/zsh/$(PKG_VERSION)/
+       $(CP) $(PKG_INSTALL_DIR)/$(CONFIGURE_PREFIX)/share/zsh/$(PKG_VERSION)/* $(1)/$(CONFIGURE_PREFIX)/share/zsh/$(PKG_VERSION)/
+endef
+
+define Package/zsh/postrm
+       rm -rf "$${IPKG_INSTROOT}/$(CONFIGURE_PREFIX)/share/zsh/$(PKG_VERSION)"
 endef
 
 $(eval $(call BuildPackage,zsh))