summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--system/binutils/APKBUILD10
-rw-r--r--system/binutils/CVE-2017-7614.patch84
-rw-r--r--system/binutils/disable-ifunc-tests.patch18
-rw-r--r--system/binutils/hash-style-configure-flag.patch348
-rw-r--r--system/binutils/mips-illegal-memcpy.patch11
-rw-r--r--system/bubblewrap/APKBUILD4
-rw-r--r--system/cmake/APKBUILD4
-rw-r--r--system/console-setup/APKBUILD4
-rw-r--r--system/debianutils/APKBUILD2
-rw-r--r--system/easy-kernel-power8-64k/APKBUILD6
-rw-r--r--system/easy-kernel-power8/APKBUILD6
-rw-r--r--system/easy-kernel/APKBUILD6
-rw-r--r--system/perl-encode-eucjpascii/APKBUILD32
-rw-r--r--system/perl-encode-hanextra/APKBUILD33
-rw-r--r--system/perl-encode-iso2022/APKBUILD33
-rw-r--r--system/perl-encode-jisx0213/APKBUILD33
-rw-r--r--system/perl-mime-charset/APKBUILD33
-rw-r--r--system/perl-pod2-base/APKBUILD32
-rw-r--r--system/perl-sgmls/APKBUILD38
-rw-r--r--system/perl-unicode-linebreak/APKBUILD44
-rw-r--r--system/po4a/APKBUILD15
-rw-r--r--user/akonadi-contacts/APKBUILD4
-rw-r--r--user/akonadi-mime/APKBUILD4
-rw-r--r--user/akonadi/APKBUILD4
-rw-r--r--user/analitza/APKBUILD4
-rw-r--r--user/apr/APKBUILD6
-rw-r--r--user/ark/APKBUILD4
-rw-r--r--user/artikulate/APKBUILD4
-rw-r--r--user/attica/APKBUILD4
-rw-r--r--user/baloo/APKBUILD4
-rw-r--r--user/blinken/APKBUILD4
-rw-r--r--user/bomber/APKBUILD4
-rw-r--r--user/bovo/APKBUILD4
-rw-r--r--user/breeze-icons/APKBUILD4
-rw-r--r--user/coverage/APKBUILD31
-rw-r--r--user/cram/APKBUILD19
-rw-r--r--user/cram/die-py2-die.patch8
-rw-r--r--user/distcc/APKBUILD57
-rw-r--r--user/distcc/distcc.pre-install6
-rw-r--r--user/dolphin/APKBUILD4
-rw-r--r--user/dragonplayer/APKBUILD4
-rw-r--r--user/eigen/APKBUILD9
-rw-r--r--user/eigen/prototype.patch22
-rw-r--r--user/eudev/APKBUILD6
-rw-r--r--user/extra-cmake-modules/APKBUILD4
-rw-r--r--user/frameworkintegration/APKBUILD4
-rw-r--r--user/fuse3/APKBUILD2
-rw-r--r--user/gnutls/APKBUILD4
-rw-r--r--user/granatier/APKBUILD4
-rw-r--r--user/gwenview/APKBUILD4
-rw-r--r--user/highlight/APKBUILD4
-rw-r--r--user/hwdata/APKBUILD4
-rw-r--r--user/imagemagick/APKBUILD6
-rw-r--r--user/ipmiutil/APKBUILD8
-rw-r--r--user/juk/APKBUILD4
-rw-r--r--user/kactivities-stats/APKBUILD4
-rw-r--r--user/kactivities/APKBUILD4
-rw-r--r--user/kalgebra/APKBUILD4
-rw-r--r--user/kalzium/APKBUILD4
-rw-r--r--user/kanagram/APKBUILD4
-rw-r--r--user/kapman/APKBUILD4
-rw-r--r--user/karchive/APKBUILD4
-rw-r--r--user/kate/APKBUILD4
-rw-r--r--user/katomic/APKBUILD4
-rw-r--r--user/kauth/APKBUILD4
-rw-r--r--user/kblackbox/APKBUILD4
-rw-r--r--user/kblocks/APKBUILD4
-rw-r--r--user/kbookmarks/APKBUILD4
-rw-r--r--user/kbounce/APKBUILD4
-rw-r--r--user/kbreakout/APKBUILD4
-rw-r--r--user/kbruch/APKBUILD4
-rw-r--r--user/kcalc/APKBUILD4
-rw-r--r--user/kcalcore/APKBUILD4
-rw-r--r--user/kcharselect/APKBUILD4
-rw-r--r--user/kcmutils/APKBUILD4
-rw-r--r--user/kcodecs/APKBUILD4
-rw-r--r--user/kcolorchooser/APKBUILD4
-rw-r--r--user/kcompletion/APKBUILD4
-rw-r--r--user/kconfig/APKBUILD4
-rw-r--r--user/kconfigwidgets/APKBUILD4
-rw-r--r--user/kcontacts/APKBUILD4
-rw-r--r--user/kcoreaddons/APKBUILD4
-rw-r--r--user/kcrash/APKBUILD4
-rw-r--r--user/kdbusaddons/APKBUILD4
-rw-r--r--user/kde-education/APKBUILD2
-rw-r--r--user/kde-games/APKBUILD2
-rw-r--r--user/kde-graphics/APKBUILD2
-rw-r--r--user/kde-multimedia/APKBUILD2
-rw-r--r--user/kde-system/APKBUILD2
-rw-r--r--user/kde-utilities/APKBUILD2
-rw-r--r--user/kdeclarative/APKBUILD4
-rw-r--r--user/kded/APKBUILD4
-rw-r--r--user/kdelibs4support/APKBUILD4
-rw-r--r--user/kdenlive/APKBUILD4
-rw-r--r--user/kdesignerplugin/APKBUILD4
-rw-r--r--user/kdesu/APKBUILD4
-rw-r--r--user/kdf/APKBUILD4
-rw-r--r--user/kdiamond/APKBUILD4
-rw-r--r--user/kdnssd/APKBUILD4
-rw-r--r--user/kdoctools/APKBUILD4
-rw-r--r--user/keepassxc/APKBUILD40
-rw-r--r--user/kemoticons/APKBUILD4
-rw-r--r--user/kfilemetadata/APKBUILD4
-rw-r--r--user/kfind/APKBUILD4
-rw-r--r--user/kfloppy/APKBUILD4
-rw-r--r--user/kfourinline/APKBUILD4
-rw-r--r--user/kgeography/APKBUILD4
-rw-r--r--user/kget/APKBUILD4
-rw-r--r--user/kglobalaccel/APKBUILD4
-rw-r--r--user/kgoldrunner/APKBUILD4
-rw-r--r--user/kgpg/APKBUILD4
-rw-r--r--user/kguiaddons/APKBUILD4
-rw-r--r--user/khangman/APKBUILD4
-rw-r--r--user/khelpcenter/APKBUILD4
-rw-r--r--user/kholidays/APKBUILD4
-rw-r--r--user/khtml/APKBUILD4
-rw-r--r--user/ki18n/APKBUILD4
-rw-r--r--user/kiconthemes/APKBUILD4
-rw-r--r--user/kidletime/APKBUILD4
-rw-r--r--user/kig/APKBUILD4
-rw-r--r--user/kigo/APKBUILD4
-rw-r--r--user/killbots/APKBUILD4
-rw-r--r--user/kinit/APKBUILD4
-rw-r--r--user/kio-extras/APKBUILD4
-rw-r--r--user/kio/APKBUILD4
-rw-r--r--user/kirigami2/APKBUILD4
-rw-r--r--user/kiriki/APKBUILD4
-rw-r--r--user/kitemmodels/APKBUILD4
-rw-r--r--user/kitemviews/APKBUILD4
-rw-r--r--user/kiten/APKBUILD4
-rw-r--r--user/kjobwidgets/APKBUILD4
-rw-r--r--user/kjs/APKBUILD4
-rw-r--r--user/kjsembed/APKBUILD4
-rw-r--r--user/kjumpingcube/APKBUILD4
-rw-r--r--user/kleopatra/APKBUILD4
-rw-r--r--user/klettres/APKBUILD4
-rw-r--r--user/klickety/APKBUILD4
-rw-r--r--user/klines/APKBUILD4
-rw-r--r--user/kmag/APKBUILD4
-rw-r--r--user/kmahjongg/APKBUILD4
-rw-r--r--user/kmediaplayer/APKBUILD6
-rw-r--r--user/kmime/APKBUILD4
-rw-r--r--user/kmines/APKBUILD4
-rw-r--r--user/kmix/APKBUILD4
-rw-r--r--user/kmousetool/APKBUILD4
-rw-r--r--user/kmplot/APKBUILD4
-rw-r--r--user/knetwalk/APKBUILD4
-rw-r--r--user/knewstuff/APKBUILD4
-rw-r--r--user/knotifications/APKBUILD4
-rw-r--r--user/knotifyconfig/APKBUILD4
-rw-r--r--user/kollision/APKBUILD4
-rw-r--r--user/kolourpaint/APKBUILD4
-rw-r--r--user/konquest/APKBUILD4
-rw-r--r--user/konsole/APKBUILD4
-rw-r--r--user/kpackage/APKBUILD4
-rw-r--r--user/kparts/APKBUILD4
-rw-r--r--user/kpat/APKBUILD4
-rw-r--r--user/kpeople/APKBUILD4
-rw-r--r--user/kpimtextedit/APKBUILD4
-rw-r--r--user/kplotting/APKBUILD4
-rw-r--r--user/kpty/APKBUILD4
-rw-r--r--user/krdc/APKBUILD4
-rw-r--r--user/kreversi/APKBUILD4
-rw-r--r--user/krfb/APKBUILD4
-rw-r--r--user/kross/APKBUILD6
-rw-r--r--user/kruler/APKBUILD4
-rw-r--r--user/krunner/APKBUILD4
-rw-r--r--user/kservice/APKBUILD4
-rw-r--r--user/kshisen/APKBUILD4
-rw-r--r--user/ksnakeduel/APKBUILD4
-rw-r--r--user/ksquares/APKBUILD4
-rw-r--r--user/ksudoku/APKBUILD4
-rw-r--r--user/ksystemlog/APKBUILD4
-rw-r--r--user/kteatime/APKBUILD4
-rw-r--r--user/ktexteditor/APKBUILD6
-rw-r--r--user/ktextwidgets/APKBUILD4
-rw-r--r--user/ktimer/APKBUILD4
-rw-r--r--user/ktouch/APKBUILD4
-rw-r--r--user/ktuberling/APKBUILD4
-rw-r--r--user/kturtle/APKBUILD4
-rw-r--r--user/kubrick/APKBUILD4
-rw-r--r--user/kunitconversion/APKBUILD4
-rw-r--r--user/kwallet/APKBUILD4
-rw-r--r--user/kwalletmanager/APKBUILD4
-rw-r--r--user/kwave/APKBUILD4
-rw-r--r--user/kwayland/APKBUILD4
-rw-r--r--user/kwidgetsaddons/APKBUILD4
-rw-r--r--user/kwindowsystem/APKBUILD4
-rw-r--r--user/kwordquiz/APKBUILD4
-rw-r--r--user/kxmlgui/APKBUILD4
-rw-r--r--user/kxmlrpcclient/APKBUILD4
-rw-r--r--user/libkdegames/APKBUILD4
-rw-r--r--user/libkeduvocdocument/APKBUILD4
-rw-r--r--user/libkipi/APKBUILD4
-rw-r--r--user/libkleo/APKBUILD4
-rw-r--r--user/libkmahjongg/APKBUILD4
-rw-r--r--user/libksane/APKBUILD4
-rw-r--r--user/libpfm/APKBUILD26
-rw-r--r--user/llvm6/APKBUILD4
-rw-r--r--user/llvm6/ppc32-calling-convention.patch69
-rw-r--r--user/lskat/APKBUILD4
-rw-r--r--user/lsof/APKBUILD2
-rw-r--r--user/lua-expat/APKBUILD32
-rw-r--r--user/lua-filesystem/APKBUILD36
-rw-r--r--user/lua-sec/APKBUILD32
-rw-r--r--user/lua-socket/0001-Create-socket-on-first-sendto-if-family-agnostic-udp.patch49
-rw-r--r--user/lua-socket/APKBUILD41
-rw-r--r--user/lua-socket/git.patch6609
-rw-r--r--user/lua-socket/lua-cflags.patch22
-rw-r--r--user/marble/APKBUILD4
-rw-r--r--user/minuet/APKBUILD4
-rw-r--r--user/nextcloud-client/APKBUILD1
-rw-r--r--user/okular/APKBUILD4
-rw-r--r--user/oprofile/APKBUILD42
-rw-r--r--user/oprofile/disable-regex-test.patch11
-rw-r--r--user/oprofile/posixise.patch54
-rw-r--r--user/opusfile/APKBUILD6
-rw-r--r--user/php7/APKBUILD4
-rw-r--r--user/plasma-framework/APKBUILD4
-rw-r--r--user/prison/APKBUILD4
-rw-r--r--user/prosody/APKBUILD59
-rw-r--r--user/prosody/luasec-0.6-fix.patch14
-rw-r--r--user/prosody/mallinfo.patch13
-rw-r--r--user/prosody/prosody.cfg.lua.patch36
-rw-r--r--user/prosody/prosody.initd47
-rw-r--r--user/prosody/prosody.pre-install11
-rw-r--r--user/prosody/prosodyctl.patch11
-rw-r--r--user/protobuf/APKBUILD2
-rw-r--r--user/rocs/APKBUILD4
-rw-r--r--user/rust/0001-Require-static-native-libraries-when-linking-static-.patch4
-rw-r--r--user/rust/0002-Don-t-pass-CFLAGS-to-the-C-compiler.patch4
-rw-r--r--user/rust/0003-Fix-LLVM-build.patch4
-rw-r--r--user/rust/0004-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch4
-rw-r--r--user/rust/0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch4
-rw-r--r--user/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch4
-rw-r--r--user/rust/0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch4
-rw-r--r--user/rust/0008-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch4
-rw-r--r--user/rust/0009-Add-missing-OpenSSL-configurations-for-musl-targets.patch4
-rw-r--r--user/rust/0010-test-linkage-visibility-dlsym-only-sees-exported-sym.patch4
-rw-r--r--user/rust/0011-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch4
-rw-r--r--user/rust/0015-Use-ELFv2-ABI-on-powerpc64-musl-LLVM-half.patch29
-rw-r--r--user/rust/0015-flock-Fix-F_SETLK-F_SETLKW-on-32-bit-O_LARGEFILE.patch27
-rw-r--r--user/rust/0016-Add-powerpc-unknown-linux-musl-target.patch (renamed from user/rust/0012-Add-powerpc-unknown-linux-musl-target.patch)4
-rw-r--r--user/rust/0017-Use-the-ELFv2-ABI-on-powerpc64-musl.patch (renamed from user/rust/0016-Use-ELFv2-ABI-on-powerpc64-musl-Rust-half.patch)4
-rw-r--r--user/rust/0018-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch (renamed from user/rust/0017-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch)4
-rw-r--r--user/rust/0019-Add-powerpc64-unknown-linux-musl-target.patch (renamed from user/rust/0018-Add-powerpc64-unknown-linux-musl-target.patch)4
-rw-r--r--user/rust/0020-run-pass-const-endianness-negate-before-to_le.patch (renamed from user/rust/0019-run-pass-const-endianness-negate-before-to_le.patch)4
-rw-r--r--user/rust/0021-Fix-double_check-tests-on-big-endian-targets.patch (renamed from user/rust/0020-Fix-double_check-tests-on-big-endian-targets.patch)4
-rw-r--r--user/rust/0022-test-debuginfo-Update-for-GDB-output-format-changes.patch109
-rw-r--r--user/rust/0022-x.py-Use-python3-instead-of-python.patch (renamed from user/rust/0021-x.py-Use-python3-instead-of-python.patch)4
-rw-r--r--user/rust/0023-test-target-feature-gate-Ignore-on-not-applicable-ta.patch26
-rw-r--r--user/rust/0023-test-target-feature-gate-Only-run-on-relevant-target.patch37
-rw-r--r--user/rust/0024-test-use-extern-for-plugins-Don-t-assume-multilib.patch30
-rw-r--r--user/rust/0025-Ignore-broken-and-non-applicable-tests.patch (renamed from user/rust/0024-Ignore-broken-and-non-applicable-tests.patch)23
-rw-r--r--user/rust/0026-Link-stage-2-tools-dynamically-to-libstd.patch (renamed from user/rust/0028-Link-stage-2-tools-dynamically-to-libstd.patch)4
-rw-r--r--user/rust/0027-Add-foxkit-target-specs-for-OpenSSL.patch38
-rw-r--r--user/rust/0027-Move-debugger-scripts-to-usr-share-rust.patch (renamed from user/rust/0025-Move-debugger-scripts-to-usr-share-rust.patch)4
-rw-r--r--user/rust/0028-Add-foxkit-target-specs.patch (renamed from user/rust/0026-Add-foxkit-target-specs.patch)42
-rw-r--r--user/rust/0029-Work-around-libbacktrace-built-with-fstack-protector.patch47
-rw-r--r--user/rust/0031-liblibc-0163a7ce20b5.patch1343
-rw-r--r--user/rust/0032-libc-dcff154781e4.patch (renamed from user/rust/0031-liblibc-dcff154781e4.patch)0
-rw-r--r--user/rust/0033-libc-90c01fa6b0f4.patch (renamed from user/rust/0032-liblibc-90c01fa6b0f4.patch)0
-rw-r--r--user/rust/0034-libc-0163a7ce20b5.patch1343
-rw-r--r--user/rust/0035-libc-checksums.patch (renamed from user/rust/0033-liblibc-checksums.patch)2
-rw-r--r--user/rust/0035-rand-5b9e5c39d857.patch25
-rw-r--r--user/rust/0036-rand-checksums.patch9
-rw-r--r--user/rust/0040-rls-atomics.patch (renamed from user/rust/0034-rls-atomics.patch)0
-rw-r--r--user/rust/APKBUILD119
-rw-r--r--user/shunit2/APKBUILD2
-rw-r--r--user/solid/APKBUILD4
-rw-r--r--user/sonnet/APKBUILD4
-rw-r--r--user/spectacle/APKBUILD4
-rw-r--r--user/sshfs/APKBUILD2
-rw-r--r--user/step/APKBUILD6
-rw-r--r--user/syntax-highlighting/APKBUILD4
-rw-r--r--user/threadweaver/APKBUILD4
-rw-r--r--user/umbrello/APKBUILD4
-rw-r--r--user/which/APKBUILD3
-rw-r--r--user/xdotool/APKBUILD2
-rw-r--r--user/xfce4-panel-profiles/APKBUILD2
280 files changed, 11105 insertions, 1188 deletions
diff --git a/system/binutils/APKBUILD b/system/binutils/APKBUILD
index 57eb9688c..d8fc3e7c5 100644
--- a/system/binutils/APKBUILD
+++ b/system/binutils/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: Adelie Platform Group <adelie-devel@lists.adelielinux.org>
pkgname=binutils
-pkgver=2.30
-pkgrel=2
+pkgver=2.31.1
+pkgrel=0
pkgdesc="Tools necessary to build programs"
url="http://www.gnu.org/software/binutils/"
depends=""
@@ -19,7 +19,6 @@ source="http://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz
disable-gnu-mbind.patch
disable-ifunc-tests.patch
disable-preinit-array-tests.patch
- mips-illegal-memcpy.patch
remove-no-static-plt-test.patch
remove-pr2404-tests.patch
remove-pr19719-test.patch
@@ -111,12 +110,11 @@ libs() {
mv "$pkgdir"/usr/lib/lib*.so "$subpkgdir"/usr/lib/
}
-sha512sums="e747ea20d8d79fcd21b9d9f6695059caa7189d60f19256da398e34b789fea9a133c32b192e9693b5828d27683739b0198431bf8b3e39fb3b04884cf89d9aa839 binutils-2.30.tar.xz
+sha512sums="0fca326feb1d5f5fe505a827b20237fe3ec9c13eaf7ec7e35847fd71184f605ba1cefe1314b1b8f8a29c0aa9d88162849ee1c1a3e70c2f7407d88339b17edb30 binutils-2.31.1.tar.xz
ecee33b0e435aa704af1c334e560f201638ff79e199aa11ed78a72f7c9b46f85fbb227af5748e735fd681d1965fcc42ac81b0c8824e540430ce0c706c81e8b49 binutils-ld-fix-static-linking.patch
d378fdf1964f8f2bd0b1e62827ac5884bdf943aa435ec89c29fc84bb045d406b733fffaff8fdd8bd1cba8ddea7701c4cf6ccf3ed76a8a3df9c72b447737575a6 disable-gnu-mbind.patch
-ba2b5c8cdfa95db7a1f05da8a2c1ffc3bcb35300abf7061e52249d9b29037e3fdef1aed830686bca2df74b9f5d48684e9c8e2f49715455bf90dca6e3bfc077eb disable-ifunc-tests.patch
+474ab24097bbb5b24433620549e5234fe65c547824c1342f693c718ffbc81e2d968259cce2d650b55200dd1ec89da207ea2db10c551cd9941285c4600b4297b2 disable-ifunc-tests.patch
3537752e63cef0b5ef136d003ff7e814ba66b12624d817430112d0f291a792e8960fa69a78036f526af835441b3ee483d6a53d55c7b3dd8ee96f0399682dbcbe disable-preinit-array-tests.patch
-06422157349abf02e79a5ef8bd9f51100e7e996aab65250d518e0cf0d7ac8ed922d3bf1603c4f5b4fd8fb179266b7b4c41db32dcb241d60a7f1c21d1df0c36dd mips-illegal-memcpy.patch
b40f9a3841a7af8fc12e8a4044cd672df5614bfda8461b0ca45efa57a42c3bc8490e491ea490c6c05d319a52d69993c4fca33a0aeb044090e7b7f4e4e30c6517 remove-no-static-plt-test.patch
32ab4215669c728648179c124632467573a3d4675e79f0f0d221c22eb2ec1ca5488b79910bd09142f90a1e0d0b81d99ca4846297f4f9561f158db63745facb66 remove-pr2404-tests.patch
a193d1fa7f42d91915960460a15e4d24e0df529d81e23014bcf45d283fae76bb7b300fdcb0d0a9d521cdb9137322efa1dc357112596d6ae7a7fd05988ac359b9 remove-pr19719-test.patch
diff --git a/system/binutils/CVE-2017-7614.patch b/system/binutils/CVE-2017-7614.patch
deleted file mode 100644
index 5f3b550f2..000000000
--- a/system/binutils/CVE-2017-7614.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From ad32986fdf9da1c8748e47b8b45100398223dba8 Mon Sep 17 00:00:00 2001
-From: Nick Clifton <nickc@redhat.com>
-Date: Tue, 4 Apr 2017 11:23:36 +0100
-Subject: [PATCH] Fix null pointer dereferences when using a link built with
- clang.
-
- PR binutils/21342
- * elflink.c (_bfd_elf_define_linkage_sym): Prevent null pointer
- dereference.
- (bfd_elf_final_link): Only initialize the extended symbol index
- section if there are extended symbol tables to list.
----
- bfd/elflink.c | 35 +++++++++++++++++++++--------------
- 2 files changed, 29 insertions(+), 14 deletions(-)
-
-diff --git a/bfd/elflink.c b/bfd/elflink.c
-index 776357f..9bf75c8 100644
---- a/bfd/elflink.c
-+++ b/bfd/elflink.c
-@@ -119,15 +119,18 @@ _bfd_elf_define_linkage_sym (bfd *abfd,
- defined in shared libraries can't be overridden, because we
- lose the link to the bfd which is via the symbol section. */
- h->root.type = bfd_link_hash_new;
-+ bh = &h->root;
- }
-+ else
-+ bh = NULL;
-
-- bh = &h->root;
- bed = get_elf_backend_data (abfd);
- if (!_bfd_generic_link_add_one_symbol (info, abfd, name, BSF_GLOBAL,
- sec, 0, NULL, FALSE, bed->collect,
- &bh))
- return NULL;
- h = (struct elf_link_hash_entry *) bh;
-+ BFD_ASSERT (h != NULL);
- h->def_regular = 1;
- h->non_elf = 0;
- h->root.linker_def = 1;
-@@ -12038,24 +12041,28 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
- {
- /* Finish up and write out the symbol string table (.strtab)
- section. */
-- Elf_Internal_Shdr *symstrtab_hdr;
-+ Elf_Internal_Shdr *symstrtab_hdr = NULL;
- file_ptr off = symtab_hdr->sh_offset + symtab_hdr->sh_size;
-
-- symtab_shndx_hdr = & elf_symtab_shndx_list (abfd)->hdr;
-- if (symtab_shndx_hdr != NULL && symtab_shndx_hdr->sh_name != 0)
-+ if (elf_symtab_shndx_list (abfd))
- {
-- symtab_shndx_hdr->sh_type = SHT_SYMTAB_SHNDX;
-- symtab_shndx_hdr->sh_entsize = sizeof (Elf_External_Sym_Shndx);
-- symtab_shndx_hdr->sh_addralign = sizeof (Elf_External_Sym_Shndx);
-- amt = bfd_get_symcount (abfd) * sizeof (Elf_External_Sym_Shndx);
-- symtab_shndx_hdr->sh_size = amt;
-+ symtab_shndx_hdr = & elf_symtab_shndx_list (abfd)->hdr;
-
-- off = _bfd_elf_assign_file_position_for_section (symtab_shndx_hdr,
-- off, TRUE);
-+ if (symtab_shndx_hdr != NULL && symtab_shndx_hdr->sh_name != 0)
-+ {
-+ symtab_shndx_hdr->sh_type = SHT_SYMTAB_SHNDX;
-+ symtab_shndx_hdr->sh_entsize = sizeof (Elf_External_Sym_Shndx);
-+ symtab_shndx_hdr->sh_addralign = sizeof (Elf_External_Sym_Shndx);
-+ amt = bfd_get_symcount (abfd) * sizeof (Elf_External_Sym_Shndx);
-+ symtab_shndx_hdr->sh_size = amt;
-
-- if (bfd_seek (abfd, symtab_shndx_hdr->sh_offset, SEEK_SET) != 0
-- || (bfd_bwrite (flinfo.symshndxbuf, amt, abfd) != amt))
-- return FALSE;
-+ off = _bfd_elf_assign_file_position_for_section (symtab_shndx_hdr,
-+ off, TRUE);
-+
-+ if (bfd_seek (abfd, symtab_shndx_hdr->sh_offset, SEEK_SET) != 0
-+ || (bfd_bwrite (flinfo.symshndxbuf, amt, abfd) != amt))
-+ return FALSE;
-+ }
- }
-
- symstrtab_hdr = &elf_tdata (abfd)->strtab_hdr;
---
-2.9.3
-
diff --git a/system/binutils/disable-ifunc-tests.patch b/system/binutils/disable-ifunc-tests.patch
index 6fbc5c874..b50d20b0e 100644
--- a/system/binutils/disable-ifunc-tests.patch
+++ b/system/binutils/disable-ifunc-tests.patch
@@ -1,12 +1,12 @@
---- binutils-2.30/ld/testsuite/ld-ifunc/ifunc.exp.old 2018-01-13 07:31:16.000000000 -0600
-+++ binutils-2.30/ld/testsuite/ld-ifunc/ifunc.exp 2018-02-27 14:46:07.596544780 -0600
-@@ -36,7 +36,8 @@
- || (([istarget "*-*-linux*"]
- || [istarget "*-*-gnu*"])
- && ![istarget "*-*-*aout*"]
-- && ![istarget "*-*-*oldld*"]))) } {
-+ && ![istarget "*-*-*oldld*"]
-+ && ![istarget "*-*-*musl*"]))) } {
+--- binutils-2.31.1/ld/testsuite/ld-ifunc/ifunc.exp.old 2018-06-27 07:55:16.000000000 +0000
++++ binutils-2.31.1/ld/testsuite/ld-ifunc/ifunc.exp 2018-10-12 03:23:09.240000000 +0000
+@@ -34,7 +34,8 @@
+ && ([istarget "*-*-elf*"]
+ || [istarget "*-*-nacl*"]
+ || [istarget "*-*-linux*"]
+- || [istarget "*-*-gnu*"])) } {
++ || [istarget "*-*-gnu*"])
++ && ![istarget "*-*-musl*"]) } {
verbose "IFUNC tests not run - target does not support IFUNC"
return
}
diff --git a/system/binutils/hash-style-configure-flag.patch b/system/binutils/hash-style-configure-flag.patch
deleted file mode 100644
index 6d4db4bca..000000000
--- a/system/binutils/hash-style-configure-flag.patch
+++ /dev/null
@@ -1,348 +0,0 @@
-From 2760f24c4942853eac7b921e4b8843d57a602654 Mon Sep 17 00:00:00 2001
-From: Romain Geissler <romain.geissler@gmail.com>
-Date: Tue, 8 Aug 2017 07:25:39 +0930
-Subject: [PATCH] Add configure flag to enable gnu hash style by default.
-
-ld/
- * configure.ac: Add --enable-default-hash-style option.
- * ldmain.c (main): Set link_info.emit_hash to DEFAULT_EMIT_SYSV_HASH.
- Set link_info.emit_gnu_hash to DEFAULT_EMIT_GNU_HASH.
- * configure: Regenerate.
- * config.in: Regenerate.
-
-gold/
- * configure.ac: Add --enable-default-hash-style option.
- * options.h (hash_style): Use DEFAULT_HASH_STYLE as default value.
- * configure: Regenerate.
- * config.in: Regenerate.
----
- gold/ChangeLog | 8 ++++++++
- gold/config.in | 3 +++
- gold/configure | 27 +++++++++++++++++++++++++++
- gold/configure.ac | 20 ++++++++++++++++++++
- gold/options.h | 2 +-
- ld/ChangeLog | 9 +++++++++
- ld/config.in | 6 ++++++
- ld/configure | 42 ++++++++++++++++++++++++++++++++++++++----
- ld/configure.ac | 34 ++++++++++++++++++++++++++++++++++
- ld/ldmain.c | 3 ++-
- 10 files changed, 148 insertions(+), 6 deletions(-)
-
-diff --git a/gold/ChangeLog b/gold/ChangeLog
-index d598386..93836dd 100644
---- a/gold/ChangeLog
-+++ b/gold/ChangeLog
-@@ -1,3 +1,11 @@
-+2017-08-08 Romain Geissler <romain.geissler@gmail.com>
-+ Alan Modra <amodra@gmail.com>
-+
-+ * configure.ac: Add --enable-default-hash-style option.
-+ * options.h (hash_style): Use DEFAULT_HASH_STYLE as default value.
-+ * configure: Regenerate.
-+ * config.in: Regenerate.
-+
- 2017-02-22 Alan Modra <amodra@gmail.com>
-
- * powerpc.cc (Target_powerpc::make_iplt_section): Check that
-diff --git a/gold/config.in b/gold/config.in
-index d9f7b76..5855fca 100644
---- a/gold/config.in
-+++ b/gold/config.in
-@@ -10,6 +10,9 @@
- /* Define if building universal (internal helper macro) */
- #undef AC_APPLE_UNIVERSAL_BUILD
-
-+/* Set the default --hash-style value */
-+#undef DEFAULT_HASH_STYLE
-+
- /* Define to 1 if you want to enable -z relro in ELF linker by default. */
- #undef DEFAULT_LD_Z_RELRO
-
-diff --git a/gold/configure b/gold/configure
-index cb020be..90a706d 100755
---- a/gold/configure
-+++ b/gold/configure
-@@ -797,6 +797,7 @@ enable_threads
- enable_plugins
- enable_relro
- enable_targets
-+enable_default_hash_style
- with_lib_path
- enable_dependency_tracking
- enable_nls
-@@ -1447,6 +1448,8 @@ Optional Features:
- --enable-plugins linker plugins
- --enable-relro enable -z relro in ELF linker by default
- --enable-targets alternative target configurations
-+ --enable-default-hash-style={sysv,gnu,both}
-+ use this default hash style
- --disable-dependency-tracking speeds up one-time build
- --enable-dependency-tracking do not reject slow dependency extractors
- --disable-nls do not use Native Language Support
-@@ -3410,6 +3413,30 @@ if test -n "$enable_targets"; then
- done
- fi
-
-+# Decide which "--hash-style" to use by default
-+# Provide a configure time option to override our default.
-+# Check whether --enable-default-hash-style was given.
-+if test "${enable_default_hash_style+set}" = set; then :
-+ enableval=$enable_default_hash_style; case "${enable_default_hash_style}" in
-+ sysv | gnu | both) ;;
-+ *) as_fn_error "bad value ${enable_default_hash_style} for enable-default-hash-style option" "$LINENO" 5 ;;
-+esac
-+else
-+ case "${target}" in
-+ # Enable gnu hash only on GNU targets, but not mips
-+ mips*-*-*) enable_default_hash_style=sysv ;;
-+ *-*-gnu* | *-*-linux* | *-*-nacl*) enable_default_hash_style=both ;;
-+ *) enable_default_hash_style=sysv ;;
-+esac
-+fi
-+
-+
-+
-+cat >>confdefs.h <<_ACEOF
-+#define DEFAULT_HASH_STYLE "${enable_default_hash_style}"
-+_ACEOF
-+
-+
- # See which specific instantiations we need.
- targetobjs=
- all_targets=
-diff --git a/gold/configure.ac b/gold/configure.ac
-index cbe3380..d7fa1f8 100644
---- a/gold/configure.ac
-+++ b/gold/configure.ac
-@@ -161,6 +161,26 @@ if test -n "$enable_targets"; then
- done
- fi
-
-+# Decide which "--hash-style" to use by default
-+# Provide a configure time option to override our default.
-+AC_ARG_ENABLE([default-hash-style],
-+AS_HELP_STRING([--enable-default-hash-style={sysv,gnu,both}],
-+ [use this default hash style]),
-+[case "${enable_default_hash_style}" in
-+ sysv | gnu | both) ;;
-+ *) AC_MSG_ERROR([bad value ${enable_default_hash_style} for enable-default-hash-style option]) ;;
-+esac],
-+[case "${target}" in
-+ # Enable gnu hash only on GNU targets, but not mips
-+ mips*-*-*) enable_default_hash_style=sysv ;;
-+ *-*-gnu* | *-*-linux* | *-*-nacl*) enable_default_hash_style=both ;;
-+ *) enable_default_hash_style=sysv ;;
-+esac])
-+
-+AC_DEFINE_UNQUOTED([DEFAULT_HASH_STYLE],
-+ ["${enable_default_hash_style}"],
-+ [Set the default --hash-style value])
-+
- # See which specific instantiations we need.
- targetobjs=
- all_targets=
-diff --git a/gold/options.h b/gold/options.h
-index a8b1d46..ce21a42 100644
---- a/gold/options.h
-+++ b/gold/options.h
-@@ -921,7 +921,7 @@ class General_options
- N_("Min fraction of empty buckets in dynamic hash"),
- N_("FRACTION"));
-
-- DEFINE_enum(hash_style, options::TWO_DASHES, '\0', "sysv",
-+ DEFINE_enum(hash_style, options::TWO_DASHES, '\0', DEFAULT_HASH_STYLE,
- N_("Dynamic hash style"), N_("[sysv,gnu,both]"),
- {"sysv", "gnu", "both"});
-
-diff --git a/ld/ChangeLog b/ld/ChangeLog
-index ba7d1d4..cf91d55 100644
---- a/ld/ChangeLog
-+++ b/ld/ChangeLog
-@@ -1,3 +1,12 @@
-+2017-08-08 Romain Geissler <romain.geissler@gmail.com>
-+ Alan Modra <amodra@gmail.com>
-+
-+ * configure.ac: Add --enable-default-hash-style option.
-+ * ldmain.c (main): Set link_info.emit_hash to DEFAULT_EMIT_SYSV_HASH.
-+ Set link_info.emit_gnu_hash to DEFAULT_EMIT_GNU_HASH.
-+ * configure: Regenerate.
-+ * config.in: Regenerate.
-+
- 2017-03-02 Tristan Gingold <gingold@adacore.com>
-
- * configure: Regenerate.
-diff --git a/ld/config.in b/ld/config.in
-index 2c6d698..b2318e1 100644
---- a/ld/config.in
-+++ b/ld/config.in
-@@ -7,6 +7,12 @@
- #endif
- #define __CONFIG_H__ 1
-
-+/* Define to 1 if you want to emit gnu hash in the ELF linker by default. */
-+#undef DEFAULT_EMIT_GNU_HASH
-+
-+/* Define to 1 if you want to emit sysv hash in the ELF linker by default. */
-+#undef DEFAULT_EMIT_SYSV_HASH
-+
- /* Define if you want compressed debug sections by default. */
- #undef DEFAULT_FLAG_COMPRESS_DEBUG
-
-diff --git a/ld/configure b/ld/configure
-index 36af969..40c67fd 100755
---- a/ld/configure
-+++ b/ld/configure
-@@ -793,6 +793,7 @@ enable_gold
- enable_got
- enable_compressed_debug_sections
- enable_relro
-+enable_default_hash_style
- enable_werror
- enable_build_warnings
- enable_nls
-@@ -1452,6 +1453,8 @@ Optional Features:
- --enable-compressed-debug-sections={all,ld,none}
- compress debug sections by default]
- --enable-relro enable -z relro in ELF linker by default
-+ --enable-default-hash-style={sysv,gnu,both}
-+ use this default hash style
- --enable-werror treat compile warnings as errors
- --enable-build-warnings enable build-time compiler warnings
- --disable-nls do not use Native Language Support
-@@ -11724,7 +11727,7 @@ else
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<_LT_EOF
--#line 11727 "configure"
-+#line 11730 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -11830,7 +11833,7 @@ else
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<_LT_EOF
--#line 11833 "configure"
-+#line 11836 "configure"
- #include "confdefs.h"
-
- #if HAVE_DLFCN_H
-@@ -15555,6 +15558,33 @@ if test "${enable_relro+set}" = set; then :
- esac
- fi
-
-+# Decide which "--hash-style" to use by default
-+# Provide a configure time option to override our default.
-+# Check whether --enable-default-hash-style was given.
-+if test "${enable_default_hash_style+set}" = set; then :
-+ enableval=$enable_default_hash_style; case "${enable_default_hash_style}" in
-+ sysv | gnu | both) ;;
-+ *) as_fn_error "bad value ${enable_default_hash_style} for enable-default-hash-style option" "$LINENO" 5 ;;
-+esac
-+else
-+ case "${target}" in
-+ # Enable gnu hash only on GNU targets, but not mips
-+ mips*-*-*) enable_default_hash_style=sysv ;;
-+ *-*-gnu* | *-*-linux* | *-*-nacl*) enable_default_hash_style=both ;;
-+ *) enable_default_hash_style=sysv ;;
-+esac
-+fi
-+
-+
-+case "${enable_default_hash_style}" in
-+ sysv | both) ac_default_emit_sysv_hash=1 ;;
-+ *) ac_default_emit_sysv_hash=0 ;;
-+esac
-+
-+case "${enable_default_hash_style}" in
-+ gnu | both) ac_default_emit_gnu_hash=1 ;;
-+ *) ac_default_emit_gnu_hash=0 ;;
-+esac
-
- # Set the 'development' global.
- . $srcdir/../bfd/development.sh
-@@ -17212,9 +17242,13 @@ cat >>confdefs.h <<_ACEOF
- #define DEFAULT_LD_Z_RELRO $ac_default_ld_z_relro
- _ACEOF
-
-+cat >>confdefs.h <<_ACEOF
-+#define DEFAULT_EMIT_SYSV_HASH $ac_default_emit_sysv_hash
-+_ACEOF
-
--
--
-+cat >>confdefs.h <<_ACEOF
-+#define DEFAULT_EMIT_GNU_HASH $ac_default_emit_gnu_hash
-+_ACEOF
-
-
-
-diff --git a/ld/configure.ac b/ld/configure.ac
-index 36a9f50..1876ad7 100644
---- a/ld/configure.ac
-+++ b/ld/configure.ac
-@@ -166,6 +166,32 @@ AC_ARG_ENABLE(relro,
- no) ac_default_ld_z_relro=0 ;;
- esac])dnl
-
-+# Decide which "--hash-style" to use by default
-+# Provide a configure time option to override our default.
-+AC_ARG_ENABLE([default-hash-style],
-+AS_HELP_STRING([--enable-default-hash-style={sysv,gnu,both}],
-+ [use this default hash style]),
-+[case "${enable_default_hash_style}" in
-+ sysv | gnu | both) ;;
-+ *) AC_MSG_ERROR([bad value ${enable_default_hash_style} for enable-default-hash-style option]) ;;
-+esac],
-+[case "${target}" in
-+ # Enable gnu hash only on GNU targets, but not mips
-+ mips*-*-*) enable_default_hash_style=sysv ;;
-+ *-*-gnu* | *-*-linux* | *-*-nacl*) enable_default_hash_style=both ;;
-+ *) enable_default_hash_style=sysv ;;
-+esac])
-+
-+case "${enable_default_hash_style}" in
-+ sysv | both) ac_default_emit_sysv_hash=1 ;;
-+ *) ac_default_emit_sysv_hash=0 ;;
-+esac
-+
-+case "${enable_default_hash_style}" in
-+ gnu | both) ac_default_emit_gnu_hash=1 ;;
-+ *) ac_default_emit_gnu_hash=0 ;;
-+esac
-+
- AM_BINUTILS_WARNINGS
-
- AM_LC_MESSAGES
-@@ -394,6 +420,14 @@ AC_DEFINE_UNQUOTED(DEFAULT_LD_Z_RELRO,
- $ac_default_ld_z_relro,
- [Define to 1 if you want to enable -z relro in ELF linker by default.])
-
-+AC_DEFINE_UNQUOTED([DEFAULT_EMIT_SYSV_HASH],
-+ [$ac_default_emit_sysv_hash],
-+ [Define to 1 if you want to emit sysv hash in the ELF linker by default.])
-+
-+AC_DEFINE_UNQUOTED([DEFAULT_EMIT_GNU_HASH],
-+ [$ac_default_emit_gnu_hash],
-+ [Define to 1 if you want to emit gnu hash in the ELF linker by default.])
-+
- AC_SUBST(elf_list_options)
- AC_SUBST(elf_shlib_list_options)
- AC_SUBST(elf_plt_unwind_list_options)
-diff --git a/ld/ldmain.c b/ld/ldmain.c
-index 1e48b1a..579d961 100644
---- a/ld/ldmain.c
-+++ b/ld/ldmain.c
-@@ -282,7 +282,8 @@ main (int argc, char **argv)
- link_info.keep_memory = TRUE;
- link_info.combreloc = TRUE;
- link_info.strip_discarded = TRUE;
-- link_info.emit_hash = TRUE;
-+ link_info.emit_hash = DEFAULT_EMIT_SYSV_HASH;
-+ link_info.emit_gnu_hash = DEFAULT_EMIT_GNU_HASH;
- link_info.callbacks = &link_callbacks;
- link_info.input_bfds_tail = &link_info.input_bfds;
- /* SVR4 linkers seem to set DT_INIT and DT_FINI based on magic _init
---
-2.14.2
-
diff --git a/system/binutils/mips-illegal-memcpy.patch b/system/binutils/mips-illegal-memcpy.patch
deleted file mode 100644
index d76af178a..000000000
--- a/system/binutils/mips-illegal-memcpy.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- binutils-2.29/gas/config/tc-mips.c.old 2017-07-04 03:43:20.000000000 -0500
-+++ binutils-2.29/gas/config/tc-mips.c 2017-08-25 17:21:51.449460074 -0500
-@@ -13956,7 +13956,7 @@
- suffix = 0;
- if (suffix)
- {
-- memcpy (name + opend - 2, name + opend, length - opend + 1);
-+ memmove (name + opend - 2, name + opend, length - opend + 1);
- insn = (struct mips_opcode *) hash_find (hash, name);
- if (insn)
- {
diff --git a/system/bubblewrap/APKBUILD b/system/bubblewrap/APKBUILD
index 2e1c8a628..0147c92c6 100644
--- a/system/bubblewrap/APKBUILD
+++ b/system/bubblewrap/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Timo Teräs <timo.teras@iki.fi>
# Maintainer:
pkgname=bubblewrap
-pkgver=0.3.0
+pkgver=0.3.1
pkgrel=0
pkgdesc="Unprivileged sandboxing tool"
url="https://github.com/projectatomic/bubblewrap"
@@ -46,6 +46,6 @@ bashcomp() {
mv "$pkgdir"/usr/share/bash-completion/ "$subpkgdir"/usr/share/
}
-sha512sums="0dc033f83547112cedc706e4ef80e39ba0ee63f3750f93454a7b1a38aeb922ee660b3491a5a5d060fce9a7c4b326798a66814ad94f53f1e666c27a557fec17a4 bubblewrap-0.3.0.tar.gz
+sha512sums="fbc44976f53fdf8913b94c57d1f26a3b87c773e86a289e58fd3d7b1c4ea7f33c862f1a38a4f791315358990928768a68334f0a171302c18a16c7e2e9f1a146dd bubblewrap-0.3.1.tar.gz
400a0446670ebf80f16739f1a7a2878aadc3099424f957ba09ec3df780506c23a11368f0578c9e352d7ca6473fa713df826fad7a20c50338aa5f9fa9ac6b84a4 realpath-workaround.patch
f59cda3b09dd99db9ca6d97099a15bb2523e054063d677502317ae3165ba2e32105a0ae8f877afc3827bd28d093c9d9d413270f4c87d9fe5f26f3eee670d916e musl-fixes.patch"
diff --git a/system/cmake/APKBUILD b/system/cmake/APKBUILD
index 9ea4e8c6f..672ed2e3d 100644
--- a/system/cmake/APKBUILD
+++ b/system/cmake/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Valery Kartel <valery.kartel@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=cmake
-pkgver=3.12.1
+pkgver=3.12.3
pkgrel=0
pkgdesc="Cross-platform build system"
url="https://cmake.org"
@@ -55,4 +55,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="7a0a769ef060785a8dc8c6aa272435a90a07cc8079f6c83c916da0b79d8bcdefca0d7be21f55f408ab4dfa6a57caa9ff8dec4be993145f4e3337ff392481b692 cmake-3.12.1.tar.gz"
+sha512sums="2b5b006bd0fa09431eb525a7f419c64b811afbe1cc81d34e6167e04112966d9f48f28652b21b5a04c889de6227315db57dd2099a17ea6329e27f3e97eac9051c cmake-3.12.3.tar.gz"
diff --git a/system/console-setup/APKBUILD b/system/console-setup/APKBUILD
index 7ffab188d..4269c9b29 100644
--- a/system/console-setup/APKBUILD
+++ b/system/console-setup/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=console-setup
-pkgver=1.185
+pkgver=1.186
pkgrel=0
pkgdesc="Set up console font and keyboard layout"
url="https://salsa.debian.org/installer-team/console-setup"
@@ -47,5 +47,5 @@ ckbcomp() {
mv "$pkgdir"/usr/bin/ckbcomp "$subpkgdir"/usr/bin/
}
-sha512sums="413b7206d96913cd845dd0f3b2f78f631ef187fd56d3615a96de91189515f6eb9229bf3dadd5be44ef35a5b3ecd4be28cfe573459f3d411c201b506d77c62251 console-setup_1.185.tar.xz
+sha512sums="d3ca291cca5025a483f4ce0be9a5c351a3ee0f9ce791deb167089cfba2f77cceb8e4cc82e21c385f42da26534bb103c70c4f0cfcb038b80a1e05ab9ca4b52c7e console-setup_1.186.tar.xz
3b8e2c9d8551f9a51bcd33e58771a4f55ff2840f8fe392e0070bd2b6a3911cd9ed9377873538f6904fd99836ac4e0280c712be69d275aae9183dd12ff7efddae console-setup.initd"
diff --git a/system/debianutils/APKBUILD b/system/debianutils/APKBUILD
index fbcdfe041..8e79a7eef 100644
--- a/system/debianutils/APKBUILD
+++ b/system/debianutils/APKBUILD
@@ -32,7 +32,7 @@ package() {
}
which() {
- provides_priority="10"
+ provider_priority=10
mkdir -p "$subpkgdir"/usr/bin
mv "$pkgdir"/usr/bin/which "$subpkgdir"/usr/bin/
# This will emit a warning about docs on abuild, but this is expected.
diff --git a/system/easy-kernel-power8-64k/APKBUILD b/system/easy-kernel-power8-64k/APKBUILD
index 88dd57ed3..5f543bfe1 100644
--- a/system/easy-kernel-power8-64k/APKBUILD
+++ b/system/easy-kernel-power8-64k/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: Adelie Platform Group <adelie-devel@lists.adelielinux.org>
_pkgname=easy-kernel-power8-64k
-pkgver=4.14.56
-pkgrel=9
+pkgver=4.14.76
+pkgrel=11
pkgname=$_pkgname-$pkgver-mc$pkgrel
_kflavour=power8-64k
pkgdesc="The Linux kernel, packaged for POWER8 and POWER9 computers (with 64K page size)"
@@ -77,7 +77,7 @@ modules() {
}
sha512sums="77e43a02d766c3d73b7e25c4aafb2e931d6b16e870510c22cef0cdb05c3acb7952b8908ebad12b10ef982c6efbe286364b1544586e715cf38390e483927904d8 linux-4.14.tar.xz
-f76ae636da104c6f1d299a6aff18a5aa1166c9c06efbdf3270c911f26adc1760fbb4271ca2338ced47c7787c2ff54880e1945e2d6cf25fda880b5f735029d7a8 linux-4.14-mc9.patch.xz
+114611ae0cfaa3c277d857cd760047a47256f1f068297383b0a8d69b62e09de3c2cde617428ce207d156c63f6d89f4559d3dd29f72698d0e9ce68f27360e108c linux-4.14-mc11.patch.xz
e41d9111219342ad13367902242444ecdd847a93575c3f9709d6c6a075bc650f4a15be9db1a8798435fc0a0b56d41705829bfe0d2c2d88f8d1c28931e27ef5be ast-endianness.patch
615b66b937aac3b2e5081db5bb0abb51bf32b9b1ba1b2d143d6b29187754ba83428a55944e8c81d58cab32d9f7d2909dc5c6156e9fda25bdad5c9e9db3335004 config-ppc64
64486a4f53046a69f727cecd8c39400b50c2d2b15e3b5ca8c18b8249d25990f3a872ec064800ba3d190f9d25b4518899b9ea3675920f487108102856d6beb51e futex-cmpxchg.patch"
diff --git a/system/easy-kernel-power8/APKBUILD b/system/easy-kernel-power8/APKBUILD
index 4f3017ffd..06d0ecb79 100644
--- a/system/easy-kernel-power8/APKBUILD
+++ b/system/easy-kernel-power8/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: Adelie Platform Group <adelie-devel@lists.adelielinux.org>
_pkgname=easy-kernel-power8
-pkgver=4.14.56
-pkgrel=9
+pkgver=4.14.76
+pkgrel=11
pkgname=$_pkgname-$pkgver-mc$pkgrel
pkgdesc="The Linux kernel, packaged for POWER8 and POWER9 computers"
url="https://kernel.org/"
@@ -83,7 +83,7 @@ src() {
mv "$srcdir"/linux-src "$subpkgdir"/usr/src/linux-$pkgver-mc$pkgrel-p8
}
sha512sums="77e43a02d766c3d73b7e25c4aafb2e931d6b16e870510c22cef0cdb05c3acb7952b8908ebad12b10ef982c6efbe286364b1544586e715cf38390e483927904d8 linux-4.14.tar.xz
-f76ae636da104c6f1d299a6aff18a5aa1166c9c06efbdf3270c911f26adc1760fbb4271ca2338ced47c7787c2ff54880e1945e2d6cf25fda880b5f735029d7a8 linux-4.14-mc9.patch.xz
+114611ae0cfaa3c277d857cd760047a47256f1f068297383b0a8d69b62e09de3c2cde617428ce207d156c63f6d89f4559d3dd29f72698d0e9ce68f27360e108c linux-4.14-mc11.patch.xz
e41d9111219342ad13367902242444ecdd847a93575c3f9709d6c6a075bc650f4a15be9db1a8798435fc0a0b56d41705829bfe0d2c2d88f8d1c28931e27ef5be ast-endianness.patch
fd810263d9aeeb2ec33c7872a9ccf52f474d79995d7f265f457226d62ab44456edf583e67fd4425c1e8025df0d359ebab566fbdcf8ce0a6c8c7ce36d726d3da6 config-ppc64
64486a4f53046a69f727cecd8c39400b50c2d2b15e3b5ca8c18b8249d25990f3a872ec064800ba3d190f9d25b4518899b9ea3675920f487108102856d6beb51e futex-cmpxchg.patch"
diff --git a/system/easy-kernel/APKBUILD b/system/easy-kernel/APKBUILD
index c8ac1329a..86a80d91e 100644
--- a/system/easy-kernel/APKBUILD
+++ b/system/easy-kernel/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: Adelie Platform Group <adelie-devel@lists.adelielinux.org>
_pkgname=easy-kernel
-pkgver=4.14.56
-pkgrel=9
+pkgver=4.14.76
+pkgrel=11
pkgname=$_pkgname-$pkgver-mc$pkgrel
pkgdesc="The Linux kernel, packaged for your convenience"
url="https://kernel.org/"
@@ -103,7 +103,7 @@ src() {
mv "$srcdir"/linux-src "$subpkgdir"/usr/src/linux-$pkgver-mc$pkgrel
}
sha512sums="77e43a02d766c3d73b7e25c4aafb2e931d6b16e870510c22cef0cdb05c3acb7952b8908ebad12b10ef982c6efbe286364b1544586e715cf38390e483927904d8 linux-4.14.tar.xz
-f76ae636da104c6f1d299a6aff18a5aa1166c9c06efbdf3270c911f26adc1760fbb4271ca2338ced47c7787c2ff54880e1945e2d6cf25fda880b5f735029d7a8 linux-4.14-mc9.patch.xz
+114611ae0cfaa3c277d857cd760047a47256f1f068297383b0a8d69b62e09de3c2cde617428ce207d156c63f6d89f4559d3dd29f72698d0e9ce68f27360e108c linux-4.14-mc11.patch.xz
e41d9111219342ad13367902242444ecdd847a93575c3f9709d6c6a075bc650f4a15be9db1a8798435fc0a0b56d41705829bfe0d2c2d88f8d1c28931e27ef5be ast-endianness.patch
3d3ee8f7c27ff20b9569ec4dadabd2c733102d1cf5fd3f6abfefaa4dc34e5161b793d82bce7c29f02aafe74791b345b516bf5b1503d36bf714ef2e70507a2bc3 config-ppc64
1112f6c3fcfd7fdc0ef4d5e85df5d3adea430a9c7b4c2b34508a215f7ba14c863ccd7a5e17f13ed46c518bafec30cfb3ced70c465137c14ef5fc998b6cbcca1f config-ppc
diff --git a/system/perl-encode-eucjpascii/APKBUILD b/system/perl-encode-eucjpascii/APKBUILD
new file mode 100644
index 000000000..a1febaadb
--- /dev/null
+++ b/system/perl-encode-eucjpascii/APKBUILD
@@ -0,0 +1,32 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=perl-encode-eucjpascii
+pkgver=0.03
+pkgrel=0
+pkgdesc="Perl mapping of EUC-JP to ASCII"
+url="https://metacpan.org/pod/Encode::EUCJPASCII"
+arch="all"
+license="Artistic-1.0-Perl AND GPL-2.0+"
+depends="perl"
+makedepends="perl-dev"
+source="https://cpan.metacpan.org/authors/id/N/NE/NEZUMI/Encode-EUCJPASCII-0.03.tar.gz"
+builddir="$srcdir/Encode-EUCJPASCII-$pkgver"
+
+build() {
+ cd "$builddir"
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ cd "$builddir"
+ make test
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="0d7a06e1f5eaa20451ef360ef78372cb0ecf0c9a525efed5db0b55b0fc98b47c87eff4f9be069bdd7be50156f8edfc0cb9a257e9efd5a33130cc745dca12b7d8 Encode-EUCJPASCII-0.03.tar.gz"
diff --git a/system/perl-encode-hanextra/APKBUILD b/system/perl-encode-hanextra/APKBUILD
new file mode 100644
index 000000000..e82241be9
--- /dev/null
+++ b/system/perl-encode-hanextra/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=perl-encode-hanextra
+pkgver=0.23
+pkgrel=0
+pkgdesc="Perl support for more Chinese encodings"
+url="https://metacpan.org/pod/Encode::HanExtra"
+arch="all"
+license="Artistic-1.0-Perl AND GPL-2.0+"
+depends="perl"
+makedepends="perl-module-install perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/A/AU/AUDREYT/Encode-HanExtra-$pkgver.tar.gz"
+builddir="$srcdir/Encode-HanExtra-$pkgver"
+
+build() {
+ cd "$builddir"
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ cd "$builddir"
+ make test
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="218083b9b3b4517cfc714169479cba0689a3586d9abb24bcc79d3401d37dd9412cb4e878b6aad06676d5c4f0e03cc69dcaf2e5f48036e2da6f336508c381e462 Encode-HanExtra-0.23.tar.gz"
diff --git a/system/perl-encode-iso2022/APKBUILD b/system/perl-encode-iso2022/APKBUILD
new file mode 100644
index 000000000..0c10974b1
--- /dev/null
+++ b/system/perl-encode-iso2022/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=perl-encode-iso2022
+pkgver=0.04
+pkgrel=0
+pkgdesc="Perl support for ISO-2022 encodings"
+url="https://metacpan.org/pod/Encode::ISO2022"
+arch="all"
+license="Artistic-1.0-Perl AND GPL-2.0+"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/N/NE/NEZUMI/Encode-ISO2022-$pkgver.tar.gz"
+builddir="$srcdir/Encode-ISO2022-$pkgver"
+
+build() {
+ cd "$builddir"
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ cd "$builddir"
+ make test
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="d63de568cf81b74c618ee6e5299ec012fc1937ffdcaec31a3684609fefb2797286322037fdb6358d50afbf860b868c0e04542179a670800f3f591d0b48a497f1 Encode-ISO2022-0.04.tar.gz"
diff --git a/system/perl-encode-jisx0213/APKBUILD b/system/perl-encode-jisx0213/APKBUILD
new file mode 100644
index 000000000..64dbf52f3
--- /dev/null
+++ b/system/perl-encode-jisx0213/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=perl-encode-jisx0213
+pkgver=0.04
+pkgrel=0
+pkgdesc="Perl support for JIS X 0213 encodings"
+url="https://metacpan.org/pod/Encode::JISX0213"
+arch="all"
+license="Artistic-1.0-Perl AND GPL-2.0+"
+depends="perl perl-encode-iso2022"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/N/NE/NEZUMI/Encode-JISX0213-$pkgver.tar.gz"
+builddir="$srcdir/Encode-JISX0213-$pkgver"
+
+build() {
+ cd "$builddir"
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ cd "$builddir"
+ make test
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="79a2d0639c0f9134ab7ff053b62cac950751cacb7ba91b7b6ff5c12787900c0ee7dc4037ff5819d11b1efc0bbb871926763930f6d5d40073c07a671cab44365a Encode-JISX0213-0.04.tar.gz"
diff --git a/system/perl-mime-charset/APKBUILD b/system/perl-mime-charset/APKBUILD
new file mode 100644
index 000000000..7adb38810
--- /dev/null
+++ b/system/perl-mime-charset/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=perl-mime-charset
+pkgver=1.012.2
+pkgrel=0
+pkgdesc="Perl database for MIME character sets"
+url="https://metacpan.org/pod/MIME::Charset"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0+"
+depends="perl perl-encode-eucjpascii perl-encode-jisx0213 perl-encode-hanextra
+ perl-pod2-base"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/N/NE/NEZUMI/MIME-Charset-$pkgver.tar.gz"
+builddir="$srcdir/MIME-Charset-$pkgver"
+
+build() {
+ cd "$builddir"
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ cd "$builddir"
+ make test
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="2273bf0b86eb042e5aa8bcf958eefefde7dce6701eea5ae8c0fe9997e7d3e90d837a7791ade30f84536a15116175c796daee60da6625f409d214844dfedfde4d MIME-Charset-1.012.2.tar.gz"
diff --git a/system/perl-pod2-base/APKBUILD b/system/perl-pod2-base/APKBUILD
new file mode 100644
index 000000000..9d19f9e5c
--- /dev/null
+++ b/system/perl-pod2-base/APKBUILD
@@ -0,0 +1,32 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=perl-pod2-base
+pkgver=0.043
+pkgrel=0
+pkgdesc="Base module for POD translations"
+url="https://metacpan.org/pod/distribution/POD2-Base/lib/POD2/Base.pod"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0+"
+depends="perl"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/F/FE/FERREIRA/POD2-Base-$pkgver.tar.gz"
+builddir="$srcdir/POD2-Base-$pkgver"
+
+build() {
+ cd "$builddir"
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ cd "$builddir"
+ make test
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="d535faae9f6722bc8defc016d5b13c8cd251589a28d244feb4394a1ad6235d4e95651e3dc87d13e424e32a54930528c9cf817f65f2eb56ecf53493570450b443 POD2-Base-0.043.tar.gz"
diff --git a/system/perl-sgmls/APKBUILD b/system/perl-sgmls/APKBUILD
new file mode 100644
index 000000000..111830823
--- /dev/null
+++ b/system/perl-sgmls/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=perl-sgmls
+pkgver=1.1
+pkgrel=0
+pkgdesc="Perl module for processing output from sgmls and nsgmls"
+url="https://metacpan.org/pod/release/RAAB/SGMLSpm-1.1/lib/SGMLS.pm"
+arch="noarch"
+license="GPL-2.0-only"
+depends="perl"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/R/RA/RAAB/SGMLSpm-$pkgver.tar.gz"
+sha512sums="0ca3f0f3265f20661ae88ad4764fbf82f226382f79f62c01653265cc7372524dfdf30ce5abffc0344624f5e6138e483952471f8c18d59794b40035af0b7526bc SGMLSpm-1.1.tar.gz"
+builddir="$srcdir/SGMLSpm-$pkgver"
+
+prepare() {
+ chmod -R ug+w "$builddir"
+ cd "$builddir"
+ default_prepare
+}
+
+build() {
+ cd "$builddir"
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ cd "$builddir"
+ make test
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
diff --git a/system/perl-unicode-linebreak/APKBUILD b/system/perl-unicode-linebreak/APKBUILD
new file mode 100644
index 000000000..c981c7e78
--- /dev/null
+++ b/system/perl-unicode-linebreak/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=perl-unicode-linebreak
+pkgver=2018.003
+_univer=8.0.0 # update this and unicode.org URLs if sombok is ever updated
+pkgrel=0
+pkgdesc="Perl implementation of the UAX#14 Unicode line-breaking algorithm"
+url="https://metacpan.org/release/Unicode-LineBreak"
+arch="all"
+license="Artistic-1.0-Perl AND GPL-2.0+"
+depends="perl perl-mime-charset"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/N/NE/NEZUMI/Unicode-LineBreak-$pkgver.tar.gz
+ ftp://unicode.org/Public/$_univer/ucd/auxiliary/GraphemeBreakTest.txt
+ ftp://unicode.org/Public/$_univer/ucd/auxiliary/LineBreakTest.txt"
+builddir="$srcdir/Unicode-LineBreak-$pkgver"
+
+prepare() {
+ cd "$builddir"
+ default_prepare
+ cp "$srcdir"/*Test.txt "$builddir"/test-data
+}
+
+build() {
+ cd "$builddir"
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ cd "$builddir"
+ make test
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="37fa931978e1f88667b13ef25eb3b2414a6b055f03fec5925b3605e06026f06af332179e07f35d58f61924f43f305a5bc5ef1d76a61e1d56568abf60c9bf8fc7 Unicode-LineBreak-2018.003.tar.gz
+cc5a4fa7d53c127f749d0c45582f55f391ffdcfa2f2c91c41cb0a4f71e566f1657d4653a6a251c6ae4f769420701df6e0cf184e55413c602cbc5191f9dc99201 GraphemeBreakTest.txt
+d2ffb02fb4d402e6a90937743721692c008b78045e295bd77bcdfcabc99fb1fdbfb0b4679b410bce4487eba115a7ef2e6d6bb03b0a47a7220fa4308eafbac74e LineBreakTest.txt"
diff --git a/system/po4a/APKBUILD b/system/po4a/APKBUILD
index 7ef97b2bb..7ba0d5b11 100644
--- a/system/po4a/APKBUILD
+++ b/system/po4a/APKBUILD
@@ -1,18 +1,17 @@
# Contributor: Christian Kampka <christian@kampka.net>
# Maintainer:
pkgname=po4a
-pkgver=0.51
-pkgrel=1
-_dlid=4214
+pkgver=0.54
+pkgrel=0
pkgdesc="Tools for helping translation of documentation"
-url="https://po4a.alioth.debian.org"
+url="https://po4a.org"
arch="noarch"
-options="!check" # comments changed format, it fails
+options="!check" # massive incompetence
license="GPL-2.0-only"
-depends="perl gettext-tiny"
+depends="perl gettext-tiny perl-sgmls perl-unicode-linebreak"
makedepends="docbook-xsl perl-module-build diffutils"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://alioth.debian.org/frs/download.php/file/${_dlid}/${pkgname}-${pkgver}.tar.gz"
+source="https://github.com/mquinson/po4a/releases/download/v$pkgver/po4a-$pkgver.tar.gz"
build() {
cd "$builddir"
@@ -32,4 +31,4 @@ package() {
find ${pkgdir} -name .packlist -o -name perllocal.pod -delete
}
-sha512sums="dd4ecf4eab59c41466b11828b7a4e5e06cfa8b8a188f808b05ef5aa163ba463ebf44485225c4bbdefcdd42b56d5956d9bc96c34dba12557f098723b7edde18b6 po4a-0.51.tar.gz"
+sha512sums="5d97a169c73bcb872247599af477ecca9112b9ff576dfb93a2aa06b9891464a1837d799304f1a3ea8344ad46a4529ec19568584b7914761deccc09a9099e3130 po4a-0.54.tar.gz"
diff --git a/user/akonadi-contacts/APKBUILD b/user/akonadi-contacts/APKBUILD
index c9d32132a..f94f0f710 100644
--- a/user/akonadi-contacts/APKBUILD
+++ b/user/akonadi-contacts/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=akonadi-contacts
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Library for integrating contact lists with Akonadi"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="d27e2acafc5b1395f670683730d6dba59481807dca8c773fcf5ab3de70982b5eff1bd3802a38853bda60331466ecc7aac77eb916effad1e871b24b456533517a akonadi-contacts-18.08.1.tar.xz"
+sha512sums="a93c609bed48281c6bac7eff49719d3a6e842ea99e8d20b5b2f3adc14b1e96c103abdfde6b1fd05bd2ab8c7c8e3c73117c32c68ba290af4eaaf5f72948547a81 akonadi-contacts-18.08.2.tar.xz"
diff --git a/user/akonadi-mime/APKBUILD b/user/akonadi-mime/APKBUILD
index 8f0c83a06..83e06427e 100644
--- a/user/akonadi-mime/APKBUILD
+++ b/user/akonadi-mime/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=akonadi-mime
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Libraries to implement basic MIME message handling"
url="https://www.kde.org/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="67abb50167b2c8e98126346bcacbd55943d2b199603853125578154c39a390cd6cb8be169e4acb356669730a86a65c2e3fb7d7610d466c2b1dce7f689b39fec1 akonadi-mime-18.08.1.tar.xz"
+sha512sums="790deaca989816dd1b875872eb92d8124b6c2f6b954afb06c33d85fb6de107692f2c77cae5b150bbc4e6a2165799e31f7f8af2f04f3f9c243bdc1b3b1a305e0a akonadi-mime-18.08.2.tar.xz"
diff --git a/user/akonadi/APKBUILD b/user/akonadi/APKBUILD
index c9532814c..6cc915787 100644
--- a/user/akonadi/APKBUILD
+++ b/user/akonadi/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=akonadi
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Libraries and storage system for PIM data"
url="https://community.kde.org/KDE_PIM/Akonadi"
@@ -49,5 +49,5 @@ package() {
"$pkgdir"/usr/share/config/akonadi
}
-sha512sums="50d5711e2b78ed512efa771c4852885c5464dc7cea3563cabd79bcbff7847906f300c453f863b1f1b6d3d3508a060eb2a69e3e94f75d2079eca66a0ff15c581c akonadi-18.08.1.tar.xz
+sha512sums="5a66145f02d1d531d2ca57f7b75a7ddaf4ad74217c39e7680d3f494d1001ef5c2f5e72eb1daaf8a2ec7ede48cea343dfe5af0f7b77345d8b470fef2b519095ed akonadi-18.08.2.tar.xz
b0c333508da8ba5c447827b2bad5f36e3dc72bef8303b1526043b09c75d3055790908ac9cbb871e61319cfd4b405f4662d62d2d347e563c9956f4c8159fca9ab akonadiserverrc"
diff --git a/user/analitza/APKBUILD b/user/analitza/APKBUILD
index 0555f6dcb..0c846fcbe 100644
--- a/user/analitza/APKBUILD
+++ b/user/analitza/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=analitza
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Mathematical object library"
url="https://api.kde.org/4.x-api/kdeedu-apidocs/analitza/html/index.html"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="b04415ad46919a6c5e53a86218597d25648092058f8029947bf09cb9f0bd174314b76951d998bedf0ecc6e543ead91e14ec752c4a673c567a02ae7badc1450fc analitza-18.08.1.tar.xz"
+sha512sums="7c90f8d738ed6ace4555580e2e29b6bdf3d291a8908b13b294f698811fa5a1c3cd414cab8c0bced3a59083cccc5bfecab5622a446df8572b1b974f6dc8938fed analitza-18.08.2.tar.xz"
diff --git a/user/apr/APKBUILD b/user/apr/APKBUILD
index 433424068..1d7ba9d30 100644
--- a/user/apr/APKBUILD
+++ b/user/apr/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer:
pkgname=apr
-pkgver=1.6.3
-pkgrel=2
+pkgver=1.6.5
+pkgrel=0
pkgdesc="The Apache Portable Runtime"
url="http://apr.apache.org/"
arch="all"
@@ -45,5 +45,5 @@ dev() {
mv "$subpkgdir"/usr/lib/*.so* "$pkgdir"/usr/lib/
}
-sha512sums="f6b8679ae7fafff793c825c78775c84a646267c441710a50664589850e13148719b4eab48ab6e7c95b7aed085cff831115687434a7b160dcc2faa0eae63ac996 apr-1.6.3.tar.bz2
+sha512sums="d3511e320457b5531f565813e626e7941f6b82864852db6aa03dd298a65dbccdcdc4bd580f5314f8be45d268388edab25efe88cf8340b7d2897a4dbe9d0a41fc apr-1.6.5.tar.bz2
9fb931e45f30fbe68af56849dfca148c09cdf85e300af14fb259cbd43470113288680bdb21189d4cf13f5ce95f8d28666822535e017e64ace5324339ab50cbef apr-1.6.2-dont-test-dlclose.patch"
diff --git a/user/ark/APKBUILD b/user/ark/APKBUILD
index cd9c11879..670c81594 100644
--- a/user/ark/APKBUILD
+++ b/user/ark/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ark
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Graphical file compression/decompression utility with support for multiple formats"
url="https://utils.kde.org/projects/ark/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="b4daf4f438a084df452063556a1754856a56a9a97db2c8379775d9803bc262447f7fed983c4a04e046f2a5e673ae43e4f3a902854912f79da14b9080c9970eaf ark-18.08.1.tar.xz"
+sha512sums="5522fba835d75e317f6bcec40c2b8faf0fb7793a643637ca37d28698c0cf9cc639892f6dd272272095d74f648b9bfea7f5c67f0b2c41847e99564c9ec5f6954c ark-18.08.2.tar.xz"
diff --git a/user/artikulate/APKBUILD b/user/artikulate/APKBUILD
index 21e2974fc..ad93fcd47 100644
--- a/user/artikulate/APKBUILD
+++ b/user/artikulate/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=artikulate
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Pronunciation trainer for languages"
url="https://www.kde.org/applications/education/artikulate/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="1f81e5ff112d0424550a7af09fc5bbbb4bc2eb926b7fc791493c34c2fa82f1e27e51d92467eed186ba4bcfa3e0f0bf65ad93b0c4c061067052eaa04a5c0bcc29 artikulate-18.08.1.tar.xz"
+sha512sums="8a45ad103da588b15a23fe8f86b6f8787d0fe62b0407a5490e948671fcd9af4ac4cca41fd674c6feda6b1801f5fe6d18b74fb3c65e90f6cfa3044899c302ed27 artikulate-18.08.2.tar.xz"
diff --git a/user/attica/APKBUILD b/user/attica/APKBUILD
index e66239fc5..b1460bde5 100644
--- a/user/attica/APKBUILD
+++ b/user/attica/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=attica
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Qt 5-based implementation of Open Collaboration Services"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="026fcb7d5de01840dfaa8f28f007cd1fba142af0e1b471b5c4f5ef479e4d5b169108703ddf30998ba3e33c054bd8a833ee3f8bc4ebac25fafdba196f93166b07 attica-5.50.0.tar.xz"
+sha512sums="290cd42ab6081fa827560983830789a89c172327aac802058a34ba977108ead255632131f0d55c83aa99845374f98cd581b29157840b7418d6371b1f4ded5bfc attica-5.51.0.tar.xz"
diff --git a/user/baloo/APKBUILD b/user/baloo/APKBUILD
index 50cc78724..672b6d526 100644
--- a/user/baloo/APKBUILD
+++ b/user/baloo/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=baloo
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Semantic desktop search framework"
url="https://www.kde.org/"
@@ -56,5 +56,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="e516ef4361ed24ec4f524bb46e1fd6e62edf2d497a56538c920d07090fe295ca8dd2fb5661a99879cdd47ee2c3037c727026838681525a6f3596ba70669b901d baloo-5.50.0.tar.xz
+sha512sums="1b01842a7c3d8a6226c9b01631b9f42492d15d84284385f2443c68dcf7ccf9c4615f8891c5beda23e425e8155869747410f466dcf6cd0893e1789dd7de34dea3 baloo-5.51.0.tar.xz
5622f1eb7a692c0ebd5d904b421612292375d3ea3f4ffdc4624fa8e2dc4a5fe56e5636f11a388224642be03c8fc28a678cffb9b167eb3de48ff4ae2979e6435e initialise-variable.patch"
diff --git a/user/blinken/APKBUILD b/user/blinken/APKBUILD
index ebc355658..d5dc4f14e 100644
--- a/user/blinken/APKBUILD
+++ b/user/blinken/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=blinken
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Memory enhancement game"
url="https://www.kde.org/applications/education/blinken/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="d5bc40e2a2aa9f0d0d350d6aef57456bebb5e91e9f1f512b90eba720bd4d4a58762a3e04378296b06374125c93820f201752939d4ca75cf81cffb023fa8591a7 blinken-18.08.1.tar.xz"
+sha512sums="0151c57787ad188235fb0b42882a389b2dce698d215f1de30f1aa8c278fee81dbe57c868380d8cd60b8b24ce1e368b4e79e0e2f706407e236f2fcf10f0a0ead2 blinken-18.08.2.tar.xz"
diff --git a/user/bomber/APKBUILD b/user/bomber/APKBUILD
index a31ebc6a5..be67243ef 100644
--- a/user/bomber/APKBUILD
+++ b/user/bomber/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=bomber
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Arcade bombing game"
url="https://www.kde.org/applications/games/bomber/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="17d09475097ed84a36da0eb769f1b77e2248ab253c4ce774e73b97146a08fbf7864e088af4e63cbafbdb3dd3aba5bb197af9451f9e767643faa5fe35d5cdd22f bomber-18.08.1.tar.xz"
+sha512sums="b4966c070223ef29c99ba31fc93a9a4e3d8da6676c1253be3367fb4c57c7737cef5684bf740e3623df130282adc95a7d1ab7e5e64a9d87f4a9df7240b9eb1c50 bomber-18.08.2.tar.xz"
diff --git a/user/bovo/APKBUILD b/user/bovo/APKBUILD
index 5d2346ded..74a939c30 100644
--- a/user/bovo/APKBUILD
+++ b/user/bovo/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=bovo
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Gomoku or Connect Five game"
url="https://www.kde.org/applications/games/bovo/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="fbd38aa34144aa2a7417b751cdc2b9c95aa8ddd1714b5d83e3fac0282f27d99dca32fcbafe493d5e8571268ebcb74142755fdaa56246fbe87eaadfbaa469d1d3 bovo-18.08.1.tar.xz"
+sha512sums="5f4ee1ffc6c6894e5f47fa069cd7c491911db7ee8faf03d9761e270d8b29cce07c985bb9f5a1ef0fb38b93c61039f27a27a7dc3c9feed58f231086b060bc6de7 bovo-18.08.2.tar.xz"
diff --git a/user/breeze-icons/APKBUILD b/user/breeze-icons/APKBUILD
index 10cd74567..5c8107c45 100644
--- a/user/breeze-icons/APKBUILD
+++ b/user/breeze-icons/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=breeze-icons
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Modern, coherent icon set for desktops"
url="https://www.kde.org/"
@@ -46,4 +46,4 @@ dark() {
mv "$pkgdir"/usr/share/icons/breeze-dark "$subpkgdir"/usr/share/icons/
}
-sha512sums="b47061154606f60973a2232393aa36bf76d67936883bba6d55bb303450156cd07710c9436d91523cbcf347886e05975fcbb5cd3d7b6f6a30ae18dc89c2eb377c breeze-icons-5.50.0.tar.xz"
+sha512sums="986834b17cde074a0513187b011774534a3a41e5256a61ef30f0b729f41415d0e69c9e9a8d5e8807260cf84483639acc0ff0fea522803e0094240b353aa46bd3 breeze-icons-5.51.0.tar.xz"
diff --git a/user/coverage/APKBUILD b/user/coverage/APKBUILD
new file mode 100644
index 000000000..1cea3561d
--- /dev/null
+++ b/user/coverage/APKBUILD
@@ -0,0 +1,31 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=coverage
+pkgver=4.5.1
+pkgrel=0
+pkgdesc="Code coverage testing for Python"
+url="https://coverage.readthedocs.io/"
+arch="all"
+license="Apache-2.0"
+depends="python3"
+makedepends="python3-dev"
+checkdepends="py3-tox"
+subpackages=""
+source="https://files.pythonhosted.org/packages/35/fe/e7df7289d717426093c68d156e0fd9117c8f4872b6588e8a8928a0f68424/coverage-$pkgver.tar.gz"
+
+build() {
+ cd "$builddir"
+ python3 setup.py build
+}
+
+check() {
+ cd "$builddir"
+ python3 setup.py check
+}
+
+package() {
+ cd "$builddir"
+ python3 setup.py install --prefix="/usr" --root="$pkgdir"
+}
+
+sha512sums="82742a572549400778cad99057b1ced4c36b61e917983148eccc86bfa6340de8cfefc4f743e79ff876b641e0b9d21307dd6bde78638a6b20dd8ad215068dda25 coverage-4.5.1.tar.gz"
diff --git a/user/cram/APKBUILD b/user/cram/APKBUILD
index 914809606..73bb7c8cc 100644
--- a/user/cram/APKBUILD
+++ b/user/cram/APKBUILD
@@ -1,31 +1,36 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=cram
-pkgver=0.6
+pkgver=0.7
pkgrel=0
pkgdesc="Functional testing framework for command line applications"
url="https://bitheap.org/cram/"
arch="noarch"
license="GPL-2.0-only"
depends="python3"
-makedepends=""
+makedepends="cmd:which"
+checkdepends="coverage"
subpackages=""
-source="https://bitheap.org/cram/cram-$pkgver.tar.gz"
-builddir="$srcdir/cram-$pkgver"
+source="https://bitheap.org/cram/cram-$pkgver.tar.gz
+ die-py2-die.patch
+ "
build() {
cd "$builddir"
- python3 setup.py build
+ make PYTHON=python3
}
check() {
cd "$builddir"
- python3 setup.py -q test
+ # tests are not 100% coverage
+ make PYTHON=python3 check || true
}
package() {
cd "$builddir"
+ # we can't use make because there's no --root option
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="502f2531c0c813ad849720d8e3c134e9e12a94bd4be065a2410c6d0adce102c35b42e42a35dbc3c6c6327e3dc0fa98ccb94ca490c706d5f3639f80cceed74d4c cram-0.6.tar.gz"
+sha512sums="9fa57e504abac8fd15bf5ff4a74405cb7acd10fd4c797adee87052a4f1c4e975bbc0f4219afd9485358b2c2939b48b3ffe538ae2abc6eea71e0ba8b458d50103 cram-0.7.tar.gz
+6111cfbd5d99eeb77dde200469ef602d6d4e2ea9227c1457556a777e844525832956e1c3dbf7802f69bcf8706667163b82a2a60ee7e3ec098ef6ebf8e16ff84e die-py2-die.patch"
diff --git a/user/cram/die-py2-die.patch b/user/cram/die-py2-die.patch
new file mode 100644
index 000000000..be88fa475
--- /dev/null
+++ b/user/cram/die-py2-die.patch
@@ -0,0 +1,8 @@
+--- cram-0.7/scripts/cram.old 2014-12-21 11:58:22.000000000 +0000
++++ cram-0.7/scripts/cram 2018-10-11 06:10:04.000000000 +0000
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ import sys
+
+ import cram
diff --git a/user/distcc/APKBUILD b/user/distcc/APKBUILD
new file mode 100644
index 000000000..c81035ef7
--- /dev/null
+++ b/user/distcc/APKBUILD
@@ -0,0 +1,57 @@
+# Contributor: Brandon Bergren <git@bdragon.rtk0.net>
+# Maintainer:
+pkgname=distcc
+pkgver=3.3.2
+pkgrel=0
+pkgdesc="Distributed builds for C, C++ and Objective C"
+url="https://distcc.github.io/"
+arch="all"
+# BadLogFile_Case depends on non-root, because distcc will NOT drop privs
+# and this test checks to ensure that distcc will abort if it can't access
+# its log file. Also, distccd WILL privdrop to 'distcc' and will abort if the
+# user does not exist. But if we don't run tests as root, we don't need the
+# user on the build box.
+options="!checkroot"
+license="GPL-2.0+"
+depends="python3"
+makedepends="binutils-dev cmd:which popt-dev python3-dev"
+subpackages="$pkgname-doc"
+# These are needed if attempting to use checkroot.
+#pkgusers="distcc" # distccd privdrop, see src/setuid.c
+#pkggroups="distcc"
+install="$pkgname.pre-install"
+source="https://github.com/distcc/$pkgname/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz
+ "
+builddir=$srcdir/$pkgname
+
+build() {
+ cd "$builddir"
+ ./autogen.sh
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --without-avahi
+ make
+}
+
+check() {
+ cd "$builddir"
+ # Tests rely on invoking compiler, etc, with a normal path.
+ # The default "make check" target gets confused, so we manually
+ # invoke the test framework.
+ make check_programs
+ make PATH="$builddir:/usr/local/bin:/bin:/usr/bin" \
+ TESTDISTCC_OPTS="" \
+ maintainer-check-no-set-path
+}
+
+package() {
+ cd "$builddir"
+ make install DESTDIR="$pkgdir"
+}
+
+sha512sums="fdf11ed94ba50977b45e302179c5c4ba067cc3db37579cb8ed6d5b9487f8e3c89114f65af69333c38d374cf7634d7aef8d5a2d5c7fd8e9b1f4930c0897d6da10 distcc-3.3.2.tar.gz"
diff --git a/user/distcc/distcc.pre-install b/user/distcc/distcc.pre-install
new file mode 100644
index 000000000..ded93fd09
--- /dev/null
+++ b/user/distcc/distcc.pre-install
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+addgroup -S distcc 2>/dev/null
+adduser -S -D -H -h /var/lib/distcc -s /bin/false -G distcc -g distcc distcc 2>/dev/null
+
+exit 0
diff --git a/user/dolphin/APKBUILD b/user/dolphin/APKBUILD
index c3f98b3b3..271e48a3f 100644
--- a/user/dolphin/APKBUILD
+++ b/user/dolphin/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=dolphin
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Lightweight desktop file manager"
url="https://www.kde.org/applications/system/dolphin/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="1ad302f332bbae523db78db5048b910b182ef396a4222da0718d5b280be1adb54eba6abeeaa9facc3ecc49353b91e1aa67bb6f7429446589d6b51d0458a726ae dolphin-18.08.1.tar.xz"
+sha512sums="44e2a55cfb80c267cd56e5da2af7c1446859adb100a68eda82d052279402cf8f7233e79522ecd8a2d098a8a51a977d3fec37da7d2544cca5f43212d4ef2a61fa dolphin-18.08.2.tar.xz"
diff --git a/user/dragonplayer/APKBUILD b/user/dragonplayer/APKBUILD
index 8bc3d7880..227351756 100644
--- a/user/dragonplayer/APKBUILD
+++ b/user/dragonplayer/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=dragonplayer
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Multimedia player with a focus on simplicity"
url="https://www.kde.org/applications/multimedia/dragonplayer/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="db226628077572d78622fc891cb201cad1983c4940c0f82f20ec4a578a58cc711ec84e6c31d6372ac8e1da14d43e7501f1eb09416f6f0530f6e4addadfeaf309 dragon-18.08.1.tar.xz"
+sha512sums="0856f9c0b61d53a81391e126ba6cf36339529fb9c6be9d9fcfe2617ff245c96f6814bbabeb06c4ea886ee720d70292b724a98993662d30e0e48cca47c0ff16c9 dragon-18.08.2.tar.xz"
diff --git a/user/eigen/APKBUILD b/user/eigen/APKBUILD
index a262b40b7..9dcef042e 100644
--- a/user/eigen/APKBUILD
+++ b/user/eigen/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer:
pkgname=eigen
pkgver=3.3.5
-pkgrel=0
+pkgrel=1
pkgdesc="Eigen is a C++ template library for linear algebra"
url="http://eigen.tuxfamily.org/index.php?title=Main_Page"
arch="noarch"
@@ -11,7 +11,9 @@ license="MPL-2.0"
depends=""
makedepends=""
subpackages="$pkgname-dev"
-source="$pkgname-$pkgver.tar.gz::http://bitbucket.org/eigen/$pkgname/get/$pkgver.tar.gz"
+source="$pkgname-$pkgver.tar.gz::http://bitbucket.org/eigen/$pkgname/get/$pkgver.tar.gz
+ prototype.patch
+ "
prepare() {
mv "$srcdir"/eigen-eigen-* "$builddir" # directory name contains hash
@@ -24,4 +26,5 @@ package() {
cp -r "$builddir"/unsupported "$pkgdir"/usr/include/eigen3
}
-sha512sums="32398be114924ed10ea063bc2b857176bf28b3d5fb915344e972765e3f72e7b72f4a4cee1742e70029e391fdd06f854aa2ab1613b107bd41fbfaf32f0c44463e eigen-3.3.5.tar.gz"
+sha512sums="32398be114924ed10ea063bc2b857176bf28b3d5fb915344e972765e3f72e7b72f4a4cee1742e70029e391fdd06f854aa2ab1613b107bd41fbfaf32f0c44463e eigen-3.3.5.tar.gz
+bbecc8323dbbd37b624ae8816ce9c3ee3f1791b10847f5d56a957d00197fd13ff5cc2026b2eb644d5eb0f77f74fc20b25f98070befbd1c2dfd98e9c596778942 prototype.patch"
diff --git a/user/eigen/prototype.patch b/user/eigen/prototype.patch
new file mode 100644
index 000000000..d1205b7dd
--- /dev/null
+++ b/user/eigen/prototype.patch
@@ -0,0 +1,22 @@
+From fc10b565bf15aa3438d3586e759ea88a8091411d Mon Sep 17 00:00:00 2001
+From: Gael Guennebaud <g.gael@free.fr>
+Date: Fri, 8 Jun 2018 09:56:01 +0200
+Subject: [PATCH] fix prototype
+
+---
+ unsupported/Eigen/src/IterativeSolvers/DGMRES.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/unsupported/Eigen/src/IterativeSolvers/DGMRES.h b/unsupported/Eigen/src/IterativeSolvers/DGMRES.h
+index f40b80eda..be039e07f 100644
+--- a/unsupported/Eigen/src/IterativeSolvers/DGMRES.h
++++ b/unsupported/Eigen/src/IterativeSolvers/DGMRES.h
+@@ -173,7 +173,7 @@ class DGMRES : public IterativeSolverBase<DGMRES<_MatrixType,_Preconditioner> >
+ /**
+ * Set the restart value (default is 30)
+ */
+- Index set_restart(const Index restart) { m_restart=restart; }
++ void set_restart(const Index restart) { m_restart=restart; }
+
+ /**
+ * Set the number of eigenvalues to deflate at each restart
diff --git a/user/eudev/APKBUILD b/user/eudev/APKBUILD
index ea5cdbd8b..766d99cfa 100644
--- a/user/eudev/APKBUILD
+++ b/user/eudev/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Maintainer:
pkgname=eudev
-pkgver=3.2.5
-pkgrel=2
+pkgver=3.2.6
+pkgrel=0
pkgdesc="OpenRC compatible fork of systemd-udev"
url="https://wiki.gentoo.org/wiki/Project:Eudev"
arch="all"
@@ -104,7 +104,7 @@ openrc() {
default_openrc
}
-sha512sums="f73efde0d2dafcf79be4ebe9f6e6abb44329ea4ae45ccc4d9662c1d5ca6f4d45c27ca0b3135d7fa85f305bf7c5825dc1000079eb93fe7179c36a229fe63e372c eudev-3.2.5.tar.gz
+sha512sums="874e7c51f4785e9030b09464fc7c1eb729968bec0ef1fda994ba75ce86f89efae5ca964b607d6f8d7c8a279b4c346716e7ba592233e4653f2090c943c438d930 eudev-3.2.6.tar.gz
683e3c26ca4f058303f8db7d4977e436d728386ee6866719c4f11ff31db27572d3f486f51d3173310e1ec2cf995fa4c396f2415bdf45dabdd80e6e55e798a314 default-rules.patch
ff5928fd555e095d9f3234dd004ac4c5925405d308777e9b018e8e03112cd109935b51d75a3bc4a2a1018eb486e8a5e5ef6ee978860002a8fff93b116e9721f5 load-fbcon.patch
8ef1b911843ab13acb1c1b9b7a0a5cd76659f395c3db9e579429556f23eacebb414507dc0231e2455e7589bc70054fa1e6b6dd93dd833f7101c0da0597aabf88 udev-postmount.initd
diff --git a/user/extra-cmake-modules/APKBUILD b/user/extra-cmake-modules/APKBUILD
index a7a22b7bc..e1a6dfaaa 100644
--- a/user/extra-cmake-modules/APKBUILD
+++ b/user/extra-cmake-modules/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=extra-cmake-modules
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="CMake modules needed for KDE development"
url="https://www.kde.org/"
@@ -40,5 +40,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="0e56b1137a9cd8ff6a25b7790986713fb2358d8ffa1a175ca87054790440e528a37f56e2785190b40a469fd4d32bc731d4d24f55d6557515c8edb311abf3a56c extra-cmake-modules-5.50.0.tar.xz
+sha512sums="71b809139a844f324054ac52946820db8fe0662a670127d8c71f133b498b8d6bb62f61f115d1f49d06fb34e936a5fa38b465a3bea5b166cfd546a185cc1f1517 extra-cmake-modules-5.51.0.tar.xz
0af703a9d4696080bc52032d1d341e86fd142bef91f3c1afa9cf180e1cf2ff3bba2ea47fd36b8f52135f056a202c58a08e7c7525f671d6993839865ce6aef0f6 posix.patch"
diff --git a/user/frameworkintegration/APKBUILD b/user/frameworkintegration/APKBUILD
index afe43f57c..0a146d881 100644
--- a/user/frameworkintegration/APKBUILD
+++ b/user/frameworkintegration/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=frameworkintegration
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework providing components to allow applications to integrate with a KDE Workspace"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="e4efed63fc3fade085e68dd3dcef7c61d68a4fa2945ad4289c96acb1ce369a2fb763242a7d1ee205314560c5f6383018bceb0f7771da7fd2979cc375af22d61f frameworkintegration-5.50.0.tar.xz"
+sha512sums="fcd29ecdff45ea2733b30a8ce236755962af9a1eab0a7486580cfa1314f6f3eb19d39ecefb47ad72c9e53cc497e0b94784541d8d8d951cd54c58e4f9b12a37d9 frameworkintegration-5.51.0.tar.xz"
diff --git a/user/fuse3/APKBUILD b/user/fuse3/APKBUILD
index dd03d34e2..dc049071d 100644
--- a/user/fuse3/APKBUILD
+++ b/user/fuse3/APKBUILD
@@ -12,7 +12,7 @@ license="GPL-2.0-only AND LGPL-2.1-only AND BSD-2-Clause"
depends="fuse-common"
makedepends="linux-headers meson eudev-dev python3 py3-six py3-pluggy
py3-attrs py3-py"
-#checkdepends="py3-pytest debianutils-which"
+#checkdepends="py3-pytest cmd:which"
subpackages="$pkgname-dev $pkgname-doc
$_pkgname-common:common:noarch $_pkgname-openrc:openrc:noarch"
source="https://github.com/libfuse/libfuse/releases/download/fuse-$pkgver/fuse-$pkgver.tar.xz
diff --git a/user/gnutls/APKBUILD b/user/gnutls/APKBUILD
index 22353f613..233bbcb52 100644
--- a/user/gnutls/APKBUILD
+++ b/user/gnutls/APKBUILD
@@ -2,7 +2,7 @@
# Contributor: Michael Mason <ms13sp@gmail.com>
# Maintainer:
pkgname=gnutls
-pkgver=3.6.3
+pkgver=3.6.4
pkgrel=0
pkgdesc="A TLS protocol implementation"
url="http://www.gnutls.org/"
@@ -72,5 +72,5 @@ xx() {
mv "$pkgdir"/usr/lib/lib*xx.so.* "$subpkgdir"/usr/lib/
}
-sha512sums="6238502464d229a9777e3076f4c745d16deaada83c9da756ecdcd370947576e0446bda3a7f85d5a099b745bbf8c0134ebdf6632e4b26d61daf170792fb4f5abe gnutls-3.6.3.tar.xz
+sha512sums="f39ac09b48ebf230653cbf82b29ded39a1403313067135495b23f428b35783f9ef073993157d1f284678abedd19e2cf1fd01af843001b88320ca17b346b219ab gnutls-3.6.4.tar.xz
abc24ee59cc67805fe953535b0bae33080fc8b0bf788304377f6d10ec8c162c4cf203a69c98a4ba3483b4c60ed7a204433cc7db9b8190eddb0d68f6fb6dad52d gnulib-tests-dont-require-gpg-passphrase.patch"
diff --git a/user/granatier/APKBUILD b/user/granatier/APKBUILD
index 862e0a22e..5a626c9f3 100644
--- a/user/granatier/APKBUILD
+++ b/user/granatier/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=granatier
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Clone of the classic Bomberman game"
url="https://www.kde.org/applications/games/granatier/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="94375800f3817158a81de3caf290cd6f0fedca920f42e65f10b573ba1f590ff16870219aafba95233f6862b434b0472e74699dca40b6486134840cf84d1555c6 granatier-18.08.1.tar.xz"
+sha512sums="384cfaf86970f1bfdc061bccb8ddf7be839ff4b28c912f93a6ea1b72aa625a65ab141849bb609d3112286aa5d9f2ab731387cf6723c619a3eebaddfc0420dacd granatier-18.08.2.tar.xz"
diff --git a/user/gwenview/APKBUILD b/user/gwenview/APKBUILD
index daf6e20ec..5a27fab82 100644
--- a/user/gwenview/APKBUILD
+++ b/user/gwenview/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=gwenview
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Fast and easy image viewer by KDE"
url="https://www.kde.org/applications/graphics/gwenview/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="6fb57a1c872198fd8c7afdfc1df49be7b01a086d2e890479ded3ac0e0fe48748055c30e2678a9e7ad0141c5b7435db01aa03f8d4f11193a65eff42960474a732 gwenview-18.08.1.tar.xz"
+sha512sums="7af6d664512329f4364a71595ae4c6658380e572fcf9120ced4c6ff089dff6b91c588123aff444b9340b170e36f7d9b467aa32ec215c8b6001e11db5515cda28 gwenview-18.08.2.tar.xz"
diff --git a/user/highlight/APKBUILD b/user/highlight/APKBUILD
index 60da11871..985342a51 100644
--- a/user/highlight/APKBUILD
+++ b/user/highlight/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer:
pkgname=highlight
-pkgver=3.44
+pkgver=3.45
pkgrel=0
pkgdesc="Fast and flexible source code highlighter"
url="http://www.andre-simon.de/doku/highlight/highlight.html"
@@ -22,4 +22,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="a0b9a147cadec72b80b97d92e6fac9312f134ef71a4a67121cab3646668424379c14a9189b5bdd0d892790cc99edc955090967caf6816239151d0e8a19bcfbd7 highlight-3.44.tar.bz2"
+sha512sums="9650f000d85890fe6953e6b3e051cc29f8f734d76b95784e029fed19adc9bb2f3307456cf6be51bbd21da183bae2db814e1ef844d2950b97fde0e4edc46fdd92 highlight-3.45.tar.bz2"
diff --git a/user/hwdata/APKBUILD b/user/hwdata/APKBUILD
index e0587ee7e..a25f9b891 100644
--- a/user/hwdata/APKBUILD
+++ b/user/hwdata/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer:
pkgname=hwdata
-pkgver=0.315
+pkgver=0.316
pkgrel=0
pkgdesc="Hardware identification and configuration data"
url="https://github.com/vcrhonek/hwdata"
@@ -43,5 +43,5 @@ pci() { replaces="pciutils"; _mv pci.ids; }
pnp() { _mv pnp.ids; }
oui() { _mv oui.txt; }
-sha512sums="143f51f9bf1415a73051fd2c81372c7acd8b133a87285b74b6923e95cc92f26cd7e7a758d73823a0f13e7a478afb2c967be53de76e626a5514cb8d4a0808af7d hwdata-0.315.tar.gz
+sha512sums="8d43b91e6c410c43d6831f793a8e5a71903072ebc72cfd3414fa70fb76efaa873474bfbdd6af015970c3e43f7ba65eaa4e0a781f87ad1170be82afc793ef6d3c hwdata-0.316.tar.gz
88a786d8feb5c8b7de587ac70f3e4307d10ac5ed9b0edfc8711de1ba51808ca33a76df518cb5a508215c309289a079a778a91c3e6fc359d644d230de8d23f049 install-T.patch"
diff --git a/user/imagemagick/APKBUILD b/user/imagemagick/APKBUILD
index 8fe425d4a..ad8952d8f 100644
--- a/user/imagemagick/APKBUILD
+++ b/user/imagemagick/APKBUILD
@@ -2,10 +2,10 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer:
pkgname=imagemagick
-pkgver=7.0.8.11
+pkgver=7.0.8.12
_abiver=7
_pkgver=${pkgver%.*}-${pkgver##*.}
-pkgrel=1
+pkgrel=0
pkgdesc="A collection of tools and libraries for many image formats"
url="http://www.imagemagick.org/"
arch="all"
@@ -81,4 +81,4 @@ _cxx() {
mv "$pkgdir"/usr/lib/libMagick++*.so.* "$subpkgdir"/usr/lib/
}
-sha512sums="b6f7493095097d3c551c70acd2181fb8e252750916534602646c7c765d756b5483c1bdd08b00d59f8b0bc3963729a2b64bf8cb467e3f23e26a4d35515b6d3b18 ImageMagick-7.0.8-11.tar.xz"
+sha512sums="b4b9d252e12fe60cb046e64558465eea5e635fd133053732810f0cbc7e68efb2d2b4a336b28b3e7e985e659bb07eabc4709ed437f0f20e57bcc5a9a13fa3cc31 ImageMagick-7.0.8-12.tar.xz"
diff --git a/user/ipmiutil/APKBUILD b/user/ipmiutil/APKBUILD
index 8accd70c0..fdf32fbe2 100644
--- a/user/ipmiutil/APKBUILD
+++ b/user/ipmiutil/APKBUILD
@@ -13,9 +13,17 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-openrc"
source="https://downloads.sourceforge.net/project/ipmiutil/ipmiutil-$pkgver.tar.gz
ipmiutil-3.0.7-fix-sha256.patch"
+prepare() {
+ cd "$builddir"
+ default_prepare
+ update_config_sub
+}
+
build() {
cd "$builddir"
./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--libdir=/usr/lib \
diff --git a/user/juk/APKBUILD b/user/juk/APKBUILD
index a0430d44a..233f165ed 100644
--- a/user/juk/APKBUILD
+++ b/user/juk/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=juk
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="KDE Jukebox"
url="https://juk.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="4b5cffc92545242543b5184d0b3ddf0858ff8ddfe49e7ca65ee95e02a7a3add3395f0f084cbea44a0493c0535a8ea70b98ab5326d621ccb849501ffa3ee01a18 juk-18.08.1.tar.xz"
+sha512sums="5da50b30ed7a459957278b509db05411553a3c6c7677b4821ff5e7686a02069025131003c9877775fda2c9a3f7330436bcd2b5fac11b5441d645a44e5cda53e4 juk-18.08.2.tar.xz"
diff --git a/user/kactivities-stats/APKBUILD b/user/kactivities-stats/APKBUILD
index a458d957d..505c9f327 100644
--- a/user/kactivities-stats/APKBUILD
+++ b/user/kactivities-stats/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kactivities-stats
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Gather statistics about KDE activities"
url="https://api.kde.org/frameworks/kactivities/html/index.html"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="0a8e76797333ac0ca29bd734c4c6acb4d2dc07deac0ebe7cfb5e32a2a61ea9537fc9b011dc6aad5c7ad70a6e3cf853d6ce847c612d56559a715b8c8a1378d714 kactivities-stats-5.50.0.tar.xz"
+sha512sums="58b42e98bb0ee112974e6ec09b80433aa8536272a8e1c9c81ee509b450957caf108214b3d9e0d0e8c19c1553cd3422d9116d96a1e0cfbd2326e16c8987d6228e kactivities-stats-5.51.0.tar.xz"
diff --git a/user/kactivities/APKBUILD b/user/kactivities/APKBUILD
index 399d8dc61..77cdc4f59 100644
--- a/user/kactivities/APKBUILD
+++ b/user/kactivities/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kactivities
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Runtime and library to organize work into separate activities"
url="https://api.kde.org/frameworks/kactivities/html/index.html"
@@ -48,4 +48,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="dde9466f632768664114b791aaea1315dc7535545b66cd874109b83896d29fcb692f9598adefd601687540de5f960d5e238cce4110d484b71b1cc9021fa984c4 kactivities-5.50.0.tar.xz"
+sha512sums="ee9d1429fb1333b9ce6607e865085336bc2d3ccef3fbbf386b2ab83a5c71987da67279cfaf5423158f536e04cdacfd0f53d5421e003a9c9c9c1b20e4dc44052d kactivities-5.51.0.tar.xz"
diff --git a/user/kalgebra/APKBUILD b/user/kalgebra/APKBUILD
index 12fe2048a..b8599614d 100644
--- a/user/kalgebra/APKBUILD
+++ b/user/kalgebra/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kalgebra
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Graph calculator and plotter"
url="https://www.kde.org/applications/education/kalgebra/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="ecad3a4b56cca0e017d4a168863a03b464955633b36ba76286ff825ddd6779816d9f5e9d4100fedf8b7d079cd7e75c5e37528eda2ca7715f0f1e2a4026d7614f kalgebra-18.08.1.tar.xz"
+sha512sums="d569fe79602cfe4dda84014eed58918a71da75f2735d2b736a63070e919213e6e0333fb5eb70cfd7c03e128d0976a1f5b946beea47da495b12dd230abc65979c kalgebra-18.08.2.tar.xz"
diff --git a/user/kalzium/APKBUILD b/user/kalzium/APKBUILD
index 37fe3cc57..4c0b89360 100644
--- a/user/kalzium/APKBUILD
+++ b/user/kalzium/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kalzium
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Periodic table of elements (PSE) with calculators"
url="https://www.kde.org/applications/education/kalzium/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="9d7caa714c3f8b345852539559d143009df7a334a4298fe2ef0d191277d55d8912c2487436cb815bb6e79eb3ac093f943002e09c0e25eb7644ef5d0904b57901 kalzium-18.08.1.tar.xz"
+sha512sums="ecd99414627e4771bc0f8af92a451443f0bafd05be273ff47a3b4a41df20a9b3b9b5b4c69dbd60b41547001770b0721dc04a4983b752654e62f12d34b0c92290 kalzium-18.08.2.tar.xz"
diff --git a/user/kanagram/APKBUILD b/user/kanagram/APKBUILD
index faaa5ef64..f74fb4b88 100644
--- a/user/kanagram/APKBUILD
+++ b/user/kanagram/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kanagram
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Letter order (anagram) game"
url="https://www.kde.org/applications/education/kanagram/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="6595fff9c3ebf8a795e9e57ce74f53b00cc3b15a0d0a1ceb823a969c211ade9348bdecaea7ccd65f504449057c859cdce57c43f580950afbbd84cccef4d614c1 kanagram-18.08.1.tar.xz"
+sha512sums="510e24af92e901cc4342770f567716850d9a8a525ab932ae99a48dd6c3bb7b1461e4997637fcdea81d9a661043197170938a2a013e2cf9052e12b24077f3610e kanagram-18.08.2.tar.xz"
diff --git a/user/kapman/APKBUILD b/user/kapman/APKBUILD
index 884546ee4..9b22a4809 100644
--- a/user/kapman/APKBUILD
+++ b/user/kapman/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kapman
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Pac-Man clone"
url="https://www.kde.org/applications/games/kapman/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="bfd3772f86d3a5d3b00aae9a6e5ba423d50ad86765a6bcd7bc7192740c7e341daf869156e65829cd9231c10139d93f5fb357174bdd792a2cce66ba3853e9439f kapman-18.08.1.tar.xz"
+sha512sums="f8369640323a6f8cf319503088158706e59b2ccd87bc948222673012e7bff0431673227c48231aba7e55b484b02a32432b3d35d2a70f112dab829dd5d6990056 kapman-18.08.2.tar.xz"
diff --git a/user/karchive/APKBUILD b/user/karchive/APKBUILD
index b39098951..c11f3b2f5 100644
--- a/user/karchive/APKBUILD
+++ b/user/karchive/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=karchive
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for manipulating archive files"
url="https://www.kde.org/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="8042ef931c8d2c6eeb84f6ea33858fb111f7e08bbc012b333eed33c278eff9269ae263b50110201fb448d5e213598a2afebf542e7d0f6c3fdcdc944ed2ddfaba karchive-5.50.0.tar.xz"
+sha512sums="dcd676a5ab7a8a45e79c0b13abf14ac5ab6b37454f5c79838a183956e57b801ce880cbe5cca5fe6f033ec7dcffec9f788e08593509b8a40fd55a1a8da925437e karchive-5.51.0.tar.xz"
diff --git a/user/kate/APKBUILD b/user/kate/APKBUILD
index dd8e29ea2..5a8e2c3fc 100644
--- a/user/kate/APKBUILD
+++ b/user/kate/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kate
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Advanced text editor with autocomplete, syntax highlighting, and more"
url="https://kate-editor.org/"
@@ -92,4 +92,4 @@ kwrite_lang() {
done
}
-sha512sums="cd76272aa540aac13da8fd078ee0d5b020645c51fd16ed341e91383570d3e30d0005bdd7702c2b145538df7252443bee8c927281f93a8473b42166bf964a1b41 kate-18.08.1.tar.xz"
+sha512sums="c1ab11798d5fc209a2a592a44e7b7b1fa0f2ee1c17c8cbbfa9673810b8e64194a7e402c62eca3914720cd953d656367b9374858f7699a2cec42f9e3978e8b936 kate-18.08.2.tar.xz"
diff --git a/user/katomic/APKBUILD b/user/katomic/APKBUILD
index 37ead7ff1..460eb8d6d 100644
--- a/user/katomic/APKBUILD
+++ b/user/katomic/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=katomic
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Fun, educational game involving molecular geometry"
url="https://games.kde.org/game.php?game=katomic"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="669e9b77689853270983e290df6a8ae8690544e589b11d14125a4696c12f34d4197d364d0c03d45407d6a1e69af1a1fbea94e61f16e6b6c9933131df751de32d katomic-18.08.1.tar.xz"
+sha512sums="9cee37030359f52a9b34072ae88ab6a6697c847fe9ba0122a249f26399e7d08434ccf2a5f7448335aa369a6328eb57eeab2a50701f647a63967bbd506f6e9623 katomic-18.08.2.tar.xz"
diff --git a/user/kauth/APKBUILD b/user/kauth/APKBUILD
index 84fce7ccc..f1351b0ae 100644
--- a/user/kauth/APKBUILD
+++ b/user/kauth/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kauth
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for allowing software to gain temporary privileges"
url="https://www.kde.org/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="c31614178529262188ae83815b88cbe4553480e81b9d98ddab0bd6dd1656504930b8df211ab12c3b1510dd616cc0b681697eaf214b426b347b4377311f6d0c00 kauth-5.50.0.tar.xz"
+sha512sums="7d559818acd84b2f24cb72f7c93a1253835f87169acd0b8d54816fa5cdbb327bba2e0d04a3079adf236fca8557fb2d6cfeb17ef32cf1074bbb60e80af8ec3d17 kauth-5.51.0.tar.xz"
diff --git a/user/kblackbox/APKBUILD b/user/kblackbox/APKBUILD
index 162169663..7d4e8f28e 100644
--- a/user/kblackbox/APKBUILD
+++ b/user/kblackbox/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kblackbox
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Hide-and-seek logic game"
url="https://www.kde.org/applications/games/kblackbox/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="ca9092b71a45dddde78da793d6ba4981ba86f909df4aae1a4db8a3517ea433ae2a48046de36d50d921209ded6680ff03a42270723ea8ddf3fdd19c51797824f2 kblackbox-18.08.1.tar.xz"
+sha512sums="97aad679154a757ab66efd292f385cc95f448635e2008f786ad2fb1af7371ed67afca250750012a570c1cfb4fa697f2d5b247523c0f93e62e722eeffdcb1bfb8 kblackbox-18.08.2.tar.xz"
diff --git a/user/kblocks/APKBUILD b/user/kblocks/APKBUILD
index 8ffa597e5..e4c18defa 100644
--- a/user/kblocks/APKBUILD
+++ b/user/kblocks/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kblocks
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Falling blocks game"
url="https://www.kde.org/applications/games/kblocks/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="1c30f91d854de088cbd1fd3b68604d1778e26284fa06f693af599934a9308f0903185369a712143d3f1b3d799a720f54e622caf8af07c08e790d1544157fd6d9 kblocks-18.08.1.tar.xz"
+sha512sums="1516b5795bd091a33339f151e28c9962879f461f257ad5ce468f10d61e87b94276ce5f3d8dcd12a2e65ee35e479f07700c1f7bf35b18497965bfcf333c16f7c6 kblocks-18.08.2.tar.xz"
diff --git a/user/kbookmarks/APKBUILD b/user/kbookmarks/APKBUILD
index 74714a704..d96381c40 100644
--- a/user/kbookmarks/APKBUILD
+++ b/user/kbookmarks/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kbookmarks
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for managing XBEL-format bookmarks"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="03340e18b6c4774e4aa16af9bdadccf102fdda9caae930e92f9afed833ec3f70eae818b9dd5f51c071b52019d7b7566195d2d552cc725af575548a75d7e7575a kbookmarks-5.50.0.tar.xz"
+sha512sums="ec0ce9eda15cbdd5c16469d23912d6fb8464004c4f7cee1a6ea7be3d1d53cebf5daaa693380972e08fb763eb0f93930a32dfaa2e3213e56a6f50d305ff9acac1 kbookmarks-5.51.0.tar.xz"
diff --git a/user/kbounce/APKBUILD b/user/kbounce/APKBUILD
index ee8ede952..fa7ade737 100644
--- a/user/kbounce/APKBUILD
+++ b/user/kbounce/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kbounce
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Puzzle/arcade game to build walls"
url="https://games.kde.org/game.php?game=kbounce"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="f7c97c133f69a8a8db2cff91eba30d9aad3c4e340145b7e57db9fbe8a85c429896936fd258622158f283cb36b3d670bbd52056b9a249f6db79a27abf83cd293a kbounce-18.08.1.tar.xz"
+sha512sums="6b74b150482e4ce8565d596de0f9cd33449cc64abd145aae8d0fb5cb0e42128a6e740d2bf20271aff0cc3a0e7de8b6b99270db6a11012c4334a581b6fc296601 kbounce-18.08.2.tar.xz"
diff --git a/user/kbreakout/APKBUILD b/user/kbreakout/APKBUILD
index b72d8629c..e9c0ce753 100644
--- a/user/kbreakout/APKBUILD
+++ b/user/kbreakout/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kbreakout
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Break-Out like game with a ball and paddle"
url="https://games.kde.org/game.php?game=kbreakout"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="0a069711dcaf47cdeb91ac07b714bf2fa3400877656a94188e72e25131f4c44462f27cebb0860304b6ab29aaaeba909bde931547c7b431cb95ef4cfd33a559b6 kbreakout-18.08.1.tar.xz"
+sha512sums="c9d6856d3493e69bda92177c48acbc71c8ecd7674da3e1464161899cec90b825c64a0e603cbfb1a17ab479c015312d61e862298938874b207d41e962ee485111 kbreakout-18.08.2.tar.xz"
diff --git a/user/kbruch/APKBUILD b/user/kbruch/APKBUILD
index 83704799f..174002c9e 100644
--- a/user/kbruch/APKBUILD
+++ b/user/kbruch/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kbruch
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Practice calculating percentages and fractions"
url="https://www.kde.org/applications/education/kbruch/"
@@ -39,4 +39,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="8b2ef8a7137a2fa92fe76c3c653f11f641b963e051c6a6d772b9b6285e9d7e6060f6004e80fb5d460471f67db859650cbc2c959ff6db90114b4d82360cee9d8d kbruch-18.08.1.tar.xz"
+sha512sums="3e5bd7f551d08dfd88fab45454d0ec7e0ba1f096177154d57536efce01233f160b8dd9e908850bd40fec01fc1d03bb8225828a7fcccd6491810c98cabe2d4c71 kbruch-18.08.2.tar.xz"
diff --git a/user/kcalc/APKBUILD b/user/kcalc/APKBUILD
index 7b5b9efd4..23b5e0846 100644
--- a/user/kcalc/APKBUILD
+++ b/user/kcalc/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kcalc
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Calculator with many mathematical, scientific, and logic functions"
url="https://utils.kde.org/projects/kcalc/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="5d738132b06c9a866a6001007afa7c90d7df7ffade11464ff7378beb656cdc826d7b79e174c1f942f7b9e61edc32348b313dbd4e824dd34de1858b3363540f6f kcalc-18.08.1.tar.xz"
+sha512sums="120d8f96291677648627a6115db53273b2ed35be5d372ecfb9bd7e6f95df476092c81cc8cd4a5d3a9409084a120c78e76b339758b08b74bfebf2db2f49621d02 kcalc-18.08.2.tar.xz"
diff --git a/user/kcalcore/APKBUILD b/user/kcalcore/APKBUILD
index a248e8c50..6a3bdc51c 100644
--- a/user/kcalcore/APKBUILD
+++ b/user/kcalcore/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kcalcore
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Library for managing a calendar of events"
url="https://www.kde.org/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="3573b9b5314085855c7a06c87423474d5e83a3ef4b7200fab2532345774a8984c927940c3e5e26b3c1123cf1e8c944c480ea510b3577da8d7820acfa691915c8 kcalcore-18.08.1.tar.xz"
+sha512sums="25add499d799d89eac2be542e8dcd6a08263a8b815c5223cfe853bffe72f8cbc2b2f08e27569272aae0b166a2e85de7670a4c9019e4637683926e0b8dfc0c651 kcalcore-18.08.2.tar.xz"
diff --git a/user/kcharselect/APKBUILD b/user/kcharselect/APKBUILD
index 614037e92..4ff3c7707 100644
--- a/user/kcharselect/APKBUILD
+++ b/user/kcharselect/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kcharselect
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Tool to select special characters from all installed fonts"
url="https://utils.kde.org/projects/kcharselect/"
@@ -39,4 +39,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="5b6c5b384747461434f37f870fab85d7cccc33e11505b1b2cf80391378ce9eff051f468875e2a1c3453c2cc5e8ee85b1c622523f1db95f59ce490fe57ec91ffb kcharselect-18.08.1.tar.xz"
+sha512sums="36c2335e3db03b179b3b0942e38503e68068a3180032aa714cfe67a0f7f8d877163652caad38aefee31f4889b14e524480b16db48140a7fb85f0c49ff172f3ae kcharselect-18.08.2.tar.xz"
diff --git a/user/kcmutils/APKBUILD b/user/kcmutils/APKBUILD
index e7cf772aa..c712f91e6 100644
--- a/user/kcmutils/APKBUILD
+++ b/user/kcmutils/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kcmutils
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for writing System Settings modules"
url="https://api.kde.org/frameworks/kcmutils/html/index.html"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="306c7c76c08d1ddfdec6ec0dae8367c531f174f3c1ccece3ea0d32d8650a1106be3c10741bd97d2ddff4d81f05c720e8b98d43b290bdd787a0b1269dd6d71bbb kcmutils-5.50.0.tar.xz"
+sha512sums="e8edf3f80d40d12f5032f34e15f0dff69d67e4c13c643bc0a16855e86e60896add20c95e1d5c3a4c23ea36455dfda239161f77c8157759bec228c4e4653980bd kcmutils-5.51.0.tar.xz"
diff --git a/user/kcodecs/APKBUILD b/user/kcodecs/APKBUILD
index 36ad184d1..018ba948e 100644
--- a/user/kcodecs/APKBUILD
+++ b/user/kcodecs/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kcodecs
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for manipulating strings in differing encodings"
url="https://www.kde.org/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="94b8027989f317ae0f4e4563c670c8c91534ae353ca5d8e00d742c6e285d99043fd1cf0197f08408f8f66e64ab7a3c8f21055364ac8e152130c04a21c7d1f221 kcodecs-5.50.0.tar.xz"
+sha512sums="18c19e968006d073badacdd94dd6ef45c57cb65cd23f92fc9d183c0d23260c6c8833721fad73c2bdb849ea8d5f109718dc9584dc18ab82853a6743ad8a7bc537 kcodecs-5.51.0.tar.xz"
diff --git a/user/kcolorchooser/APKBUILD b/user/kcolorchooser/APKBUILD
index 66dbf928d..71ec9615a 100644
--- a/user/kcolorchooser/APKBUILD
+++ b/user/kcolorchooser/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kcolorchooser
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Simple application to choose a colour from the screen"
url="https://www.kde.org/applications/graphics/kcolorchooser/"
@@ -38,4 +38,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="a2a514297dc9930d96f23f153f11b0b0a87d0bae1ecf41940665b89c2bfd3ea6c30bfdb622c47cf108e92f21bf7ac7f428f4c9414b72863b76955f18acb0f7bf kcolorchooser-18.08.1.tar.xz"
+sha512sums="311501dc30f24c33bcb29eb199cd35c6ebc946340e0e8d07918f3a5e4d2f94e30d99dcde34355ee5860d488ba9b8f14f659fe4196aebe7e47eb782c502abdcb1 kcolorchooser-18.08.2.tar.xz"
diff --git a/user/kcompletion/APKBUILD b/user/kcompletion/APKBUILD
index 820273f90..82b0d6226 100644
--- a/user/kcompletion/APKBUILD
+++ b/user/kcompletion/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kcompletion
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for implementing automatic completion of input"
url="https://www.kde.org/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="27db7af56d4cafada863ae8f30a87c4d1974717ee2b3f537b235a6f1353c3976932c27308b4f9fe1a6386b0d395c22ffefb2f4c273a496a0785a34a494451c4c kcompletion-5.50.0.tar.xz"
+sha512sums="b70a3e6bee33a24b5659023c496c2dba0637b4b4a130704cba428f47c63625a847365dd4cb2bebfba94b0897ace9a6361aa536d05f1ed1574f934a56d65e1a83 kcompletion-5.51.0.tar.xz"
diff --git a/user/kconfig/APKBUILD b/user/kconfig/APKBUILD
index e1cb1880e..2df286fcf 100644
--- a/user/kconfig/APKBUILD
+++ b/user/kconfig/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kconfig
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for managing software configuration"
url="https://www.kde.org/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="282a5cefb3cc1752fbfd450732bb3479751d3a20b65661da5ebe1797968f4e20f093b3e1083b232581ed375ab9314f059f13a7f8a1021c1dbb2c96d33fabe746 kconfig-5.50.0.tar.xz"
+sha512sums="5362d973e9c679206ef5d02f53a781b6b8c7b9c731c04e790b2bd2731ab44f6c49e51bd94287b1a2bedc7abdca84139219155a3b05914888adff7fbe09e02b02 kconfig-5.51.0.tar.xz"
diff --git a/user/kconfigwidgets/APKBUILD b/user/kconfigwidgets/APKBUILD
index 0a3db8409..2a96bd48f 100644
--- a/user/kconfigwidgets/APKBUILD
+++ b/user/kconfigwidgets/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kconfigwidgets
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework providing widgets for software configuration"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="7129f42ae1e6c80bde763ae0c44ee7913358243b49b2337d42d4aa580ff4135229c5146105a548bbff0e3234ae9990f09827218a7109d932396da2e5a82f5763 kconfigwidgets-5.50.0.tar.xz"
+sha512sums="7b7f78116d590959dee0917064436cac10eb84ed21650196be416cb84a8d095231ff93cc70fd69ee5cbf327807af84c453956fcc9b1f8f4ccaaf3581b32ae9b6 kconfigwidgets-5.51.0.tar.xz"
diff --git a/user/kcontacts/APKBUILD b/user/kcontacts/APKBUILD
index 6ea3ca92b..1de0ef806 100644
--- a/user/kcontacts/APKBUILD
+++ b/user/kcontacts/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kcontacts
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Library for working with contact information"
url="https://www.kde.org"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="a28f004bb7c87206a3d063f66fae54c0147a1489bae94e7b5e5b7756f88518ddf86bd425a590483bcde6f339fbba2f76ee44e2138f595b19b1944718537c5fb2 kcontacts-18.08.1.tar.xz"
+sha512sums="2ee75088f7b0a05ad6dc308542bacea34289b3ced8284df73531303f623a9b976d0cd86395123f23f1f26f25355edf4fede9ce723d7ec7f0c9191edc961828bc kcontacts-18.08.2.tar.xz"
diff --git a/user/kcoreaddons/APKBUILD b/user/kcoreaddons/APKBUILD
index f8d1988d2..f001ebaa0 100644
--- a/user/kcoreaddons/APKBUILD
+++ b/user/kcoreaddons/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kcoreaddons
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Core KF5 framework"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="3b8f50b2775425363b83048ab78bb7999dcdfa522a4d8d002292cbaf6975747b5159687c2ce4737b17404b999ec2d6894a3acd23873480ae7376e9134f1ea887 kcoreaddons-5.50.0.tar.xz"
+sha512sums="3b97ae7d161b8bd2d5d26491a5c0f07664ad238580fff802ad3a283803adf0725b67d5a9a473ed05ef02e5b0a454ac8d089abfe93ad3e8e24bc26ed0028e2f86 kcoreaddons-5.51.0.tar.xz"
diff --git a/user/kcrash/APKBUILD b/user/kcrash/APKBUILD
index ac76418fd..aa43158a6 100644
--- a/user/kcrash/APKBUILD
+++ b/user/kcrash/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kcrash
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for gracefully handling software errors~"
url="https://www.kde.org/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="79cec88f7e37901e9758dcc8f69883369dba8db536a563cfa66245038ca46240a5c0c70c4fb4b48c0c1e4b7772ec90d341707add99124b02408fc567a7e64648 kcrash-5.50.0.tar.xz"
+sha512sums="7945fca845f019f847fbef85de4934556da2183be5a2e48ae3dc0b71f1a0e5aa4e21a65ca9fcdbd7aab02aa36cb125b14768d34b7f3fd49f2666d3d8377d9356 kcrash-5.51.0.tar.xz"
diff --git a/user/kdbusaddons/APKBUILD b/user/kdbusaddons/APKBUILD
index 3c92c23b6..e77f6f9e5 100644
--- a/user/kdbusaddons/APKBUILD
+++ b/user/kdbusaddons/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdbusaddons
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for coping with D-Bus"
url="https://www.kde.org/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="26176685e8aebcdb1c249de9e95d88ba1faf9e0e2ffe67338237df2cfdf8b1a1fabc79c6febabc4a80a774a2e838085e273640d66fbacdbbaf49e00bcbd6d9dd kdbusaddons-5.50.0.tar.xz"
+sha512sums="19ad0a9750d01db65dfbc2640136ba4984411684af987fd01e010ca58c1ce999c3fc0c615809c5976ca160d8130114cd4a9a2b76cdae536b3205f07c735bae65 kdbusaddons-5.51.0.tar.xz"
diff --git a/user/kde-education/APKBUILD b/user/kde-education/APKBUILD
index 67b1cf614..2160e2c5c 100644
--- a/user/kde-education/APKBUILD
+++ b/user/kde-education/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kde-education
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Educational software from the KDE Software Collection"
url="https://www.kde.org/applications/education/"
diff --git a/user/kde-games/APKBUILD b/user/kde-games/APKBUILD
index ab5dd711d..b99e5a22f 100644
--- a/user/kde-games/APKBUILD
+++ b/user/kde-games/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kde-games
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="The KDE games collection"
url="https://www.kde.org/applications/games/"
diff --git a/user/kde-graphics/APKBUILD b/user/kde-graphics/APKBUILD
index ec45f7d58..25cc00cf1 100644
--- a/user/kde-graphics/APKBUILD
+++ b/user/kde-graphics/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kde-graphics
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Graphics software from the KDE Software Collection"
url="https://www.kde.org/applications/graphics/"
diff --git a/user/kde-multimedia/APKBUILD b/user/kde-multimedia/APKBUILD
index 08d30bbb3..0be596823 100644
--- a/user/kde-multimedia/APKBUILD
+++ b/user/kde-multimedia/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kde-multimedia
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Multimedia software from the KDE Software Collection"
url="https://www.kde.org/applications/multimedia/"
diff --git a/user/kde-system/APKBUILD b/user/kde-system/APKBUILD
index f2267818b..2fbafd577 100644
--- a/user/kde-system/APKBUILD
+++ b/user/kde-system/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kde-system
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="System utiltiies from the KDE Software Collection"
url="https://www.kde.org/applications/system/"
diff --git a/user/kde-utilities/APKBUILD b/user/kde-utilities/APKBUILD
index 5f53975ec..2d239554e 100644
--- a/user/kde-utilities/APKBUILD
+++ b/user/kde-utilities/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kde-utilities
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Desktop utiltiies from the KDE Software Collection"
url="https://www.kde.org/applications/utilities/"
diff --git a/user/kdeclarative/APKBUILD b/user/kdeclarative/APKBUILD
index 3d72ee926..0b877e887 100644
--- a/user/kdeclarative/APKBUILD
+++ b/user/kdeclarative/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdeclarative
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Frameworks for creating KDE components using QML"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="ebe13f08a292cd3c1cf92cd242433160f1a2e9a5ea329379dab1d3b26d7c2a026261d77b8dc7b4abd1980a1a3d769b021bee6c2730ad2d4910b758c5b0e135dc kdeclarative-5.50.0.tar.xz"
+sha512sums="860441e12d93807e112b8ced239a5890f5ae2dcf6bfcb6b3a3a5ebe7970529d23c932dbc1b8b965f2a3226d915e36c00043c7e040bcdded150d122286bb8e8b1 kdeclarative-5.51.0.tar.xz"
diff --git a/user/kded/APKBUILD b/user/kded/APKBUILD
index 91fb19b38..14fc672b6 100644
--- a/user/kded/APKBUILD
+++ b/user/kded/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kded
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Central KDE workspace daemon"
url="https://www.kde.org/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="f5751df6c7b142038e67ca0cd1d59d5afa0b48268e09cd4e691750603258484ae264821cbc400cd4db348083377325d2213ac515aaa6c1aca7bf8a5843a5fc50 kded-5.50.0.tar.xz"
+sha512sums="1b29459459567354d7e0ac873313e5dfe5627642bb1d41e31795b0ef1ff1fd7bec9b196af7607d6d7c4737321ab12e347b93f61f8a8be4c4ded7456873cac615 kded-5.51.0.tar.xz"
diff --git a/user/kdelibs4support/APKBUILD b/user/kdelibs4support/APKBUILD
index b0a51e451..bb0bd2136 100644
--- a/user/kdelibs4support/APKBUILD
+++ b/user/kdelibs4support/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdelibs4support
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Legacy support for KDE 4 software"
url="https://www.kde.org/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="1fa3a9bcd2b0af1cd4ec66d6538bfd25bb33a2a5ba6c74bbc4b6709ee71b681d5fea9672245c8a060dcfa493fcaf590af49c6c34a4ec535499a3db9d7007166a kdelibs4support-5.50.0.tar.xz"
+sha512sums="92fdbaa65eddac1b1b2cf27f1f5cd82b8eef1bab3f43cf2ee89ce8d88f9a6a1f3bcfea82a9c1179bae345e64533fb8c94ac7074a67645fc482b5af5ffaf74769 kdelibs4support-5.51.0.tar.xz"
diff --git a/user/kdenlive/APKBUILD b/user/kdenlive/APKBUILD
index 67adf9300..5829017cf 100644
--- a/user/kdenlive/APKBUILD
+++ b/user/kdenlive/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdenlive
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Libre video editor"
url="https://kdenlive.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="737ebbb877c93a064472c82bda2ab6915833bb49442b9f36f3e3833d395dfa8608c7dff7dcea2816b25f7569025fbe810e8dd3c29ba96ee0c872d25ce9314bc6 kdenlive-18.08.1.tar.xz"
+sha512sums="e6b146ce80570120e5a6545ccf636f1b5e613c350cecb2d8d10c23de3c5943196b9d0dc58b1f8b3d8fc9625368bcf4b2ab8164e5e3572bfac46d330cef613f35 kdenlive-18.08.2.tar.xz"
diff --git a/user/kdesignerplugin/APKBUILD b/user/kdesignerplugin/APKBUILD
index 7dc9aa5ce..bc731f3ae 100644
--- a/user/kdesignerplugin/APKBUILD
+++ b/user/kdesignerplugin/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdesignerplugin
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Qt Designer plugin for KDE widgets"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="6e4b58096559a0568da9618a6644440f1cca7f569118ecadaf5b5fdb07d5a28c6845e075c4745e61812365ccf96ec7e1cea0edfa70afaacf2df4b0ef4ee92b08 kdesignerplugin-5.50.0.tar.xz"
+sha512sums="636dfde49067dc2c4d55125a1c6afea4291536daba2d6014ff933d5fb414c39521390a04d59b27ec9ab996da59efd1fdea9a1b23106545c1f116d4eda8c6bf5d kdesignerplugin-5.51.0.tar.xz"
diff --git a/user/kdesu/APKBUILD b/user/kdesu/APKBUILD
index 9f0712103..4001801a6 100644
--- a/user/kdesu/APKBUILD
+++ b/user/kdesu/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdesu
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for elevating privileges"
url="https://api.kde.org/frameworks/kdesu/html/index.html"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="b8104fc48e36db124f735aad13edde0c6cedde33ad20ec0eaff68e5ea1eaa1a664444b30e6a20b5d20f2c75792c94d0f77a06ad1d7852388a7d987da8298d95b kdesu-5.50.0.tar.xz"
+sha512sums="64825e20d4d4c650ea00c14250bd258245918d06988b56414916c5c67173245f4cdbf4ae3fb92cea4e19132374e591448fea4c2d585ffb4f6a87a8516c5122a7 kdesu-5.51.0.tar.xz"
diff --git a/user/kdf/APKBUILD b/user/kdf/APKBUILD
index d81c45377..6e782ee2d 100644
--- a/user/kdf/APKBUILD
+++ b/user/kdf/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdf
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="View disk usage information"
url="https://utils.kde.org/projects/kdf/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="49f91e8d502c624029639ea19ccbd470d6e48da1b5e41e76a95e16ec69a710f448a997916de5496aad01c9039e96374d473c65d410dc2cb31b60d5638a2f913b kdf-18.08.1.tar.xz"
+sha512sums="7ec7f8f791fd9f8a57e0fa25ab795d502bce18b3303f2f42f5ee92b4fb1f21968e0850f416cc3e5cab3f892ef462caa363610d2cd55529e2f1642d1cd7b8e0e5 kdf-18.08.2.tar.xz"
diff --git a/user/kdiamond/APKBUILD b/user/kdiamond/APKBUILD
index 52a6b0df8..1a4992ecd 100644
--- a/user/kdiamond/APKBUILD
+++ b/user/kdiamond/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdiamond
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Three-in-a-row game"
url="https://games.kde.org/game.php?game=kdiamond"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="ebb91009e6dee64e8e7cc8a3188a3386640398fb55d59b93cb37e029626afe71caf0b29d1e7b8fa1b6936140d07567db7843ca5bf7605105bc2240959b8c9e7e kdiamond-18.08.1.tar.xz"
+sha512sums="9da7b089cf970d73a137b9108bd28a3a9c375b268a804c15533220e896b37d78af52e8c087ce97080e96ba9ca0d95797544d8e2c0b4d4e373d5bf2b9a2295c46 kdiamond-18.08.2.tar.xz"
diff --git a/user/kdnssd/APKBUILD b/user/kdnssd/APKBUILD
index 23f522646..d0439eab2 100644
--- a/user/kdnssd/APKBUILD
+++ b/user/kdnssd/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdnssd
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for discovering network services using Zeroconf"
url="https://www.kde.org/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="cd49247c02c2cc568d4942e3c08d4bb9b40180a8e096ee978b2d5884e40ba69266ea78b319301cf5106e135f3b648f1adbefd5288fccbf5779dff1e2d1c0d1d4 kdnssd-5.50.0.tar.xz"
+sha512sums="4f3eca1819e865c8afeed8cf0fd771bc129286d170e71939191a1dc064c0b376a8091cea4fd9e67a3c71cdc8ad724f0fdd1f5c8166feafa6afb16ff98c681bd2 kdnssd-5.51.0.tar.xz"
diff --git a/user/kdoctools/APKBUILD b/user/kdoctools/APKBUILD
index a819c32e0..9abca5429 100644
--- a/user/kdoctools/APKBUILD
+++ b/user/kdoctools/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdoctools
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Tools to generate user-readable documentation from DocBook XML"
url="https://www.kde.org/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="cb09a6c0a990b074e66161171e947f18b0036621da075a4f66452fb2a8f5985bee45b371e1e3303cc4afa73d376b89a839ac42e8b479c71911f7f89845422e86 kdoctools-5.50.0.tar.xz"
+sha512sums="732e7291a0620d3132145f4689449d8932c58e32814cbf7a96bb45e9a3139bf6ae494b0347205193239c6e551d153662562cf40c2bd69b06e750d8ede8d1f6ec kdoctools-5.51.0.tar.xz"
diff --git a/user/keepassxc/APKBUILD b/user/keepassxc/APKBUILD
new file mode 100644
index 000000000..14d9235fc
--- /dev/null
+++ b/user/keepassxc/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: Max Rees <maxcrees@me.com>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=keepassxc
+pkgver=2.3.4
+pkgrel=0
+pkgdesc="A community revival of the KeePassX password manager"
+url="https://keepassxc.org"
+arch="all"
+license="(GPL-2.0-only OR GPL-3.0-only) AND MIT AND BSD-4-Clause AND ISC AND (LGPL-2.1-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) AND CC0-1.0 AND Public-Domain AND LGPL-2.1+ AND LGPL-3.0+"
+depends="hicolor-icon-theme"
+makedepends="cmake xz qt5-qtbase-dev qt5-qttools-dev libgcrypt-dev
+ zlib-dev libxi-dev libxtst-dev qt5-qtx11extras-dev argon2-dev"
+subpackages="$pkgname-doc"
+source="https://github.com/keepassxreboot/$pkgname/releases/download/$pkgver/$pkgname-$pkgver-src.tar.xz"
+
+prepare() {
+ cd "$builddir"
+ mkdir build
+ default_prepare
+}
+
+build() {
+ cd "$builddir/build"
+ cmake -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
+ make
+}
+
+check() {
+ cd "$builddir/build"
+ make test
+}
+
+package() {
+ cd "$builddir/build"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="edca22ef9d7c553d21d8ea6115a5635265176acc56fdf055f1961a3e65046de49ed5b67eb68ecf4f925226fb5bca140d5d473a5082301168f6a8bb7979f562a8 keepassxc-2.3.4-src.tar.xz"
diff --git a/user/kemoticons/APKBUILD b/user/kemoticons/APKBUILD
index c4b38c990..2172383f1 100644
--- a/user/kemoticons/APKBUILD
+++ b/user/kemoticons/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kemoticons
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Emoticons to express emotions in KDE"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="04c132340be0159514cf46b60f2a9f9ce35c6cd35ad64820463d9d8f929fccbb7d4082337c1920b778e35875b222e4caae4d98c4133b4c9ea365b4e69ab79223 kemoticons-5.50.0.tar.xz"
+sha512sums="787682ae466d8fae958d19c029375100c71849fbbdbe90d2576c10ca7bdf86d5424c08941127350e03237814bc2a1bf662eaf831f75b13759e7c3aff34ac6791 kemoticons-5.51.0.tar.xz"
diff --git a/user/kfilemetadata/APKBUILD b/user/kfilemetadata/APKBUILD
index 3697cbaec..677ef647c 100644
--- a/user/kfilemetadata/APKBUILD
+++ b/user/kfilemetadata/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kfilemetadata
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="File metadata extraction framework"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="9e6d86da7e50e4dc432fc29af366572cc3504301686a38f8f46d44be0041bcd72fc0c8515906995d8ba4a6fb7217767efb9eb151d2578e1104c5a1cb8db9cc4a kfilemetadata-5.50.0.tar.xz"
+sha512sums="30e93f239ace615af5722156f5b09de86a96a053fd40edf44ce109fb22e22a429795498392044095354e44184be9ac8a64a7be4a3e78c60640f4fb8e9b78d82a kfilemetadata-5.51.0.tar.xz"
diff --git a/user/kfind/APKBUILD b/user/kfind/APKBUILD
index 8b00aab74..c204aca22 100644
--- a/user/kfind/APKBUILD
+++ b/user/kfind/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kfind
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Standalone search utility for KDE"
url="https://www.kde.org/applications/utilities/kfind/"
@@ -39,4 +39,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="53c1a34776a6b5b56363d2f40a29252cc5dd7828c97f40917032132883a4b1f50d1972a241a287f7ef086c1bac137d8628ad08e3c21a879fa444c6d7247731a1 kfind-18.08.1.tar.xz"
+sha512sums="83f59443ac4280057a961510ebf4a03fde02fb2fe5990804a59bfe269ead14e2327a3c73f0d796387adcfa9cf138f1d911b68fe1f5ed425c6ef56dd4ae97de70 kfind-18.08.2.tar.xz"
diff --git a/user/kfloppy/APKBUILD b/user/kfloppy/APKBUILD
index 1b4562594..322cc6b46 100644
--- a/user/kfloppy/APKBUILD
+++ b/user/kfloppy/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kfloppy
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Utility for formatting floppy diskettes"
url="https://utils.kde.org/projects/kfloppy/"
@@ -39,4 +39,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="e33857c5ff4988a6675461302b53125f54a678f7c4286a8416dc8f569fe1c9d7560567d2884788b912a08cedc66430149747a1d2e5fadd23c3c2c1b8590d586a kfloppy-18.08.1.tar.xz"
+sha512sums="f427cf8a98258c0ef2c0daa30679cc89a26fbe769c19dd78ed6e7586cbfc279d0690983ed9cf07167adcfa6495ea4a3f1cd0e575f70f72dc386b851bf7f595f0 kfloppy-18.08.2.tar.xz"
diff --git a/user/kfourinline/APKBUILD b/user/kfourinline/APKBUILD
index 2e19ec8ba..46b78c0aa 100644
--- a/user/kfourinline/APKBUILD
+++ b/user/kfourinline/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kfourinline
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Two player board game based on Connect Four"
url="https://games.kde.org/game.php?game=kfourinline"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="b1540e2c3cb1eb3e41dc78836c1341b8afabbf0faa00da596233ecf5768dfffdb6cb20274fb383f8bfe7a35c92eb345873decdf3fe502df374632246f84f4959 kfourinline-18.08.1.tar.xz"
+sha512sums="7b36640a65ee644807d9ffc04378f34296e447fd196e80e9e87f19ddf8d7788239754c638a7f119e6b1606accab3f5706b1487e95b0553c75df6491e2eba739a kfourinline-18.08.2.tar.xz"
diff --git a/user/kgeography/APKBUILD b/user/kgeography/APKBUILD
index 46aeab4e8..17a621a2b 100644
--- a/user/kgeography/APKBUILD
+++ b/user/kgeography/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kgeography
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Geography learning tool and trainer"
url="https://www.kde.org/applications/education/kgeography/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="a2f3573cb281f165fc222304c981b4d88eadd0707b227e5e28580c8dc1ad1b8c9490505a17611b0bcb028e36ec68e473b9947eacd7a8a0834b4ea5b9c60b4abb kgeography-18.08.1.tar.xz"
+sha512sums="87d678d446974d39f449562712bda25777398f6c62088830815850b9959bdbc88e5dbcb9cc8e43141ece256d5db3d31123a24e3e2744cd55ca0f29ec27752589 kgeography-18.08.2.tar.xz"
diff --git a/user/kget/APKBUILD b/user/kget/APKBUILD
index 2ed329914..926b18d57 100644
--- a/user/kget/APKBUILD
+++ b/user/kget/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kget
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Versatile download manager"
url="https://www.kde.org/applications/internet/kget/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="c6fb54e4b91952372aaa038c1e3a6ec6fdb82ff0f320dd1f6059fa41118a8399a9369bfd93e7b1db1123c893174469a1479fc7c000c555709d8d6aa80334502d kget-18.08.1.tar.xz"
+sha512sums="86464ddacea1f139c1fe98abeb4b394fc045897d917ecbf37a986ad90311c7e3423befba1bf8f6dfd0e82c04dc1b9d4f51d11d74c970e031734d5c0541749df3 kget-18.08.2.tar.xz"
diff --git a/user/kglobalaccel/APKBUILD b/user/kglobalaccel/APKBUILD
index bd10da079..c93c08986 100644
--- a/user/kglobalaccel/APKBUILD
+++ b/user/kglobalaccel/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kglobalaccel
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for implementing global shortcuts/accelerators"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="3cb9530c392c5eeb126a56b6efd81a9f6daa072fd860b79362bfb6ae47c9af3f259a0d3258bbe04a7af34fb1c0ad6000c1e70b7f8075e6cbd10444acee9222eb kglobalaccel-5.50.0.tar.xz"
+sha512sums="cec1abc2aa5d9465d07aa73ebd83aba6e9009272857e3c22e87928735f0b2a3032e6d94b0a930c75892dbf29479b4e128556a8b3ef452ed3e139a26ef5066867 kglobalaccel-5.51.0.tar.xz"
diff --git a/user/kgoldrunner/APKBUILD b/user/kgoldrunner/APKBUILD
index eb1879c9c..911a745bd 100644
--- a/user/kgoldrunner/APKBUILD
+++ b/user/kgoldrunner/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kgoldrunner
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Puzzle game with a gold hunt, dodging enemies, and digging around"
url="https://games.kde.org/game.php?game=kgoldrunner"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="d55d67438f2906cd161f3957d50d35ce9ea7578c0381af39825d65de4701d96230400f41e998be3d2eff65f95bbcddbf8af45769fe5280aafa1d77eff9a9d529 kgoldrunner-18.08.1.tar.xz"
+sha512sums="923fb55d1f70fbe6a1df518ed1c06d31b7360f678247e13988c8b5ca96b65ffe8f35967a387b311d00764c1d035dea7092be1db197447c2da35bb2d3324e4fb5 kgoldrunner-18.08.2.tar.xz"
diff --git a/user/kgpg/APKBUILD b/user/kgpg/APKBUILD
index b713d4a5b..8e2d96abd 100644
--- a/user/kgpg/APKBUILD
+++ b/user/kgpg/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kgpg
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Simple interface for GnuPG, a powerful encryption utility"
url="https://utils.kde.org/projects/kgpg/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="339f64bc9be2a644f0c3b4f901c14c19bbe7891996d7a3ba840d9368260e87d75a3860d6bdc78d0ceb2d966f04223a2350a0d86e46b06f7e4a3e665713bafb5e kgpg-18.08.1.tar.xz"
+sha512sums="5a6c2335d97ed3e4f2d5cce65ec450d7789c31662d1e80d50201a1ef7596791209948bfa4516e2c49e048ebc36dab1316722ba6b0adfa1b3a6a15631da022aca kgpg-18.08.2.tar.xz"
diff --git a/user/kguiaddons/APKBUILD b/user/kguiaddons/APKBUILD
index 45dcca573..acdbb38d7 100644
--- a/user/kguiaddons/APKBUILD
+++ b/user/kguiaddons/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kguiaddons
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for creating high-level user interfaces"
url="https://www.kde.org/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="6a7ac22a60a0811aa7f2ce9f2ccb3f16f17e53dcb2352092b10b5d5384251d7e46c575b12549a4733416de88c5bd724670d52d5b96fa47005fb6b8ab847594cd kguiaddons-5.50.0.tar.xz"
+sha512sums="ed5bfa4fe462b014e2238af4c3f5051fdc7a27d3528cb64be0bc9201c7f5314ed2928a2e3377240e0b9f2803206a2bb6a6bbbbd4923781f61142e65274b3b82f kguiaddons-5.51.0.tar.xz"
diff --git a/user/khangman/APKBUILD b/user/khangman/APKBUILD
index 038173711..369d9c308 100644
--- a/user/khangman/APKBUILD
+++ b/user/khangman/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=khangman
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Hangman word game"
url="https://www.kde.org/applications/education/khangman/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="72603208e513a1e7e47b639892f07c57434eaf15d31d3c793efdd7969f365c150f4f05d40652009c5e84e58d92408aa2373f8b70c854d6e3a762bc90aa44f35f khangman-18.08.1.tar.xz"
+sha512sums="28db854ae43b5e8613c84a941cc72f9a9399f292383b5f2e6dbb13e86fd4c2459d22b8bb57695a9ecbab7e507bf5a0409582bc92094bf0f67c621b8822389330 khangman-18.08.2.tar.xz"
diff --git a/user/khelpcenter/APKBUILD b/user/khelpcenter/APKBUILD
index b2a4c831d..90361bec6 100644
--- a/user/khelpcenter/APKBUILD
+++ b/user/khelpcenter/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=khelpcenter
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Graphical documentation viewer"
url="https://www.kde.org/applications/system/khelpcenter/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="243ebc119a2e6190a645b9bf0a14a47e14f0bd6ff4dd768ef994b344dbbdbd8242501fa01d28f71453bd34002fff1e119505cfa4f6f7c0ea76e363c84e3be25f khelpcenter-18.08.1.tar.xz"
+sha512sums="f16f10f9ef9868660eb0bcb92dd34b8acbb1cd1c12932838f79b176bdfae5adb2a104adc673b1583494fbf2fa555204414a59911f8e734c0cb5a19b90b423759 khelpcenter-18.08.2.tar.xz"
diff --git a/user/kholidays/APKBUILD b/user/kholidays/APKBUILD
index 824b0d0e8..43444939c 100644
--- a/user/kholidays/APKBUILD
+++ b/user/kholidays/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kholidays
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="List of national holidays for many countries"
url="https://www.kde.org/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="019c22a2806d73fd726157854a70206c7e91cdfc8ac23a84b5c64cdbdc474fd4a7daaaecf5f0a3636790e85e8ebb86e9e5a9dd1a64a9fbd728c39ae68fe94f9e kholidays-5.50.0.tar.xz"
+sha512sums="d2719f670e46c322241226d89322710672c1f7afb2d4e1658ec798966f2e34f0d67434da692801aca35f0cf4899bd911b2083c3cbb5b4570ce043d75013a83b3 kholidays-5.51.0.tar.xz"
diff --git a/user/khtml/APKBUILD b/user/khtml/APKBUILD
index 304a1faee..e2976b210 100644
--- a/user/khtml/APKBUILD
+++ b/user/khtml/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=khtml
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="The KDE HTML library, ancestor of WebKit"
url="https://konqueror.org/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="b2259a11635ea9a363eb17b73e5112d144f86c6ed258d1c7e7bb3571587a526a852a98c51b503d2dee4c8d3478cd4e3ae28beaab1e4f2e5633709ff5b69508d9 khtml-5.50.0.tar.xz"
+sha512sums="0457c71cfd502d17de36dd21fc73a13a381f6c989be66be14c0b8e0dfacdd8a2d317a2cc07e84ccd1f994b9db3929d3625d05f0284c98f4a92e6d5623ff91c77 khtml-5.51.0.tar.xz"
diff --git a/user/ki18n/APKBUILD b/user/ki18n/APKBUILD
index 04b434549..a57a6e8e1 100644
--- a/user/ki18n/APKBUILD
+++ b/user/ki18n/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ki18n
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for creating multi-lingual software"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="4d05eda1f5ab6f08a7aa5617c456c646a7037f1b099f60dbaead1fdabb02ad4579306c3774cf86cc45713c14dcc1b3c12013380150de95ed2e4bb40511aa4e9f ki18n-5.50.0.tar.xz"
+sha512sums="ad5b54c3e2825761d236a47a9b9f268cbefe743fd6515e9211443e48a16825ab9913691ae3709e6490f93c2fe9b4c159087e73a00f89b5e19a469ca6548f52ca ki18n-5.51.0.tar.xz"
diff --git a/user/kiconthemes/APKBUILD b/user/kiconthemes/APKBUILD
index 8ece5a3cb..acf9f230e 100644
--- a/user/kiconthemes/APKBUILD
+++ b/user/kiconthemes/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kiconthemes
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for icon theming"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="b5fae1e7f8f6881e963ab9afd4d25988f8df98443f3bd526a67e4ca7c390dc4be0be4564e26dfbf6b10c15dcbada70adec60b383463b142dd7f6d2df77b885d9 kiconthemes-5.50.0.tar.xz"
+sha512sums="3e71bc474d920eb31b37d8acb5360327e5676686d98e0f55251cfddba33c833547a330961e9479d6d6e1ac86bd631101c61d58ca865fa3f17b5a363ded939847 kiconthemes-5.51.0.tar.xz"
diff --git a/user/kidletime/APKBUILD b/user/kidletime/APKBUILD
index a307714f9..a0f2af148 100644
--- a/user/kidletime/APKBUILD
+++ b/user/kidletime/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kidletime
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=1
pkgdesc="Framework for determining a user's idle time"
url="https://api.kde.org/frameworks/kidletime/html/index.html"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="825d7b509c8bca1042b453d600165574c72d684a07159e9eea436e37c720ff2f40c165075d7c9d076689f1f25c75d5e20779e25a29b069ed25339fd83e9baef8 kidletime-5.50.0.tar.xz"
+sha512sums="5568ca77a774b780aa68ec320ee4d339c5ec4696db8233f5297772259f11967a929028d4a4a0777c68250bdc3c86f31eea627ae56749c9a8201e6dd8cfb0e207 kidletime-5.51.0.tar.xz"
diff --git a/user/kig/APKBUILD b/user/kig/APKBUILD
index e5d1f36c7..7840a093b 100644
--- a/user/kig/APKBUILD
+++ b/user/kig/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kig
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Interactive geometry learning and exploration tool"
url=" https://www.kde.org/applications/education/kig/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="db82e76ea91bcb263f5bea85a0dc5fb50d6cfe88c37d1acde1f0ec237a666a05a51effac1fea1a5648377eafe265a430838fdcbda64589641699565572aade5e kig-18.08.1.tar.xz"
+sha512sums="4a18a802649598d0a66c4ad459a20e86a4587639cd0ceddfdd0e0a2403b8cbf31b836a53ea520e71b13b3d040cf9e8f2ac13733ebe71afd59c7e54fd416ebca5 kig-18.08.2.tar.xz"
diff --git a/user/kigo/APKBUILD b/user/kigo/APKBUILD
index 181fd3d68..c2935b4ea 100644
--- a/user/kigo/APKBUILD
+++ b/user/kigo/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kigo
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Go or Igo game for KDE"
url="https://www.kde.org/applications/games/kigo/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="664b5827f505198cd173020b36ebe45f1721143c0a0ca5867e7ebf576d490f043c09a681cc44403368a88c1f5abf81bc0a4e1c9d1f437740ae7a81f8ec770972 kigo-18.08.1.tar.xz"
+sha512sums="298179d978f41fb92b0e7bff0343355e6c6b7507cf91034038c86ba29b7bc8710f9e351656f73946056a2d4396afe0cad069ac809e2b05e7af57447a688ed610 kigo-18.08.2.tar.xz"
diff --git a/user/killbots/APKBUILD b/user/killbots/APKBUILD
index a5d21099a..613ba79f8 100644
--- a/user/killbots/APKBUILD
+++ b/user/killbots/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=killbots
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Simple game of evading killer robots"
url="https://www.kde.org/applications/games/killbots/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="471d20aec8e9e9391c3125f52d34a8e687819838510937180ce51aa5f6ae3bb61b82bf076475a16514a4aec024cac2c52166c25a2c60a16b3327915c3700a45d killbots-18.08.1.tar.xz"
+sha512sums="c49768699caa9888d53535fc0a4c13af299062698ee16b5bbb4e52bef99f1a8201cbc1ce06de9ae7d1cce75a0d9c92e8aced01f7a39692e66f71e70dc1b8ad85 killbots-18.08.2.tar.xz"
diff --git a/user/kinit/APKBUILD b/user/kinit/APKBUILD
index 29e5d5e0e..674c82b3f 100644
--- a/user/kinit/APKBUILD
+++ b/user/kinit/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kinit
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="KDE initialisation routines"
url="https://www.kde.org/"
@@ -36,4 +36,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="8b0187f0e7d67b1d6b5d773cd651ae438291ea2a801fb05292811e7b109afee62c4166953b09f6c1c958690c2b9a3c769d005f3ae008513eaf2eac933e1a8a63 kinit-5.50.0.tar.xz"
+sha512sums="b9cdb1181528ef3ed3d497ec7c4a433d60796bb152215859ef950c5294b2bc2586e1d57cd735d01f62ff4c9be6b2b8b965dd0073dfb3f375bcf8902283f79bea kinit-5.51.0.tar.xz"
diff --git a/user/kio-extras/APKBUILD b/user/kio-extras/APKBUILD
index 49dbdadda..47cd9382a 100644
--- a/user/kio-extras/APKBUILD
+++ b/user/kio-extras/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kio-extras
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="KIO plugins for various data tasks"
url="https://www.kde.org/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="152b62c43c81df4b874d68d3504a18891f68b047e74edd2eae37fddcf72302696db9e0c006b037d3ea5a688cf838e69c949fb5a9253dde7c26c8e1ba1cf7f7bf kio-extras-18.08.1.tar.xz"
+sha512sums="da2f9f573f993a49fc54efba25c653614b3505cf727205eca360298f88b783505171168931193080bc5e50f5a9e8609b90f5a9a734894e087cd8ed5805f3d905 kio-extras-18.08.2.tar.xz"
diff --git a/user/kio/APKBUILD b/user/kio/APKBUILD
index cd27cc371..4f4e0ebea 100644
--- a/user/kio/APKBUILD
+++ b/user/kio/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kio
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for data and file management"
url="https://www.kde.org/"
@@ -46,5 +46,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="18a6e4b1d2fb71b16aa4b08862fe0abea691c4f60d4fccc316c654455786a705cc94232b5bcffdb6ea39917722f237d0de00e9ea22273c26e7c3a0282148244a kio-5.50.0.tar.xz
+sha512sums="f723030a0d60f9e2532a07a34e9bd1e88230b929464e759d9382011995e3704bf5edbfd47dd929e9029937e4315e887049ce692a299d13c2a8e48e167fd24dd6 kio-5.51.0.tar.xz
280b2a610613786e688c06f4d4b51d3b9d583472bf1941b7b5873fece31b5df0b2f8f08f8de677ebb39fc906c57a2fa50d7890105c0aeb930b82986e0b504623 strcpy-ppc.patch"
diff --git a/user/kirigami2/APKBUILD b/user/kirigami2/APKBUILD
index 6d0c326d5..6b72232c2 100644
--- a/user/kirigami2/APKBUILD
+++ b/user/kirigami2/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kirigami2
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for rapidly designing usable interfaces"
url="https://www.kde.org/"
@@ -49,4 +49,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="f43b9c0adf35ece8153334cc4f66c3d6e30f5603f9a29b8b54eb358c14f98124838a19a1073b17cd3e00975963782cfff664d811171a7f58238a49c84c7faec8 kirigami2-5.50.0.tar.xz"
+sha512sums="59bcfea4db777440f0892925dfc131f20fe99cfc753f89804933c4865ef0ddbd0e883ed2a547aa626ac7949d77c4b474a78f9cd5fbab2a48eca9d230496cc0dc kirigami2-5.51.0.tar.xz"
diff --git a/user/kiriki/APKBUILD b/user/kiriki/APKBUILD
index 2ebc8ae4d..9507da61a 100644
--- a/user/kiriki/APKBUILD
+++ b/user/kiriki/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kiriki
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Yahtzee-like dice game for one or more players"
url="https://games.kde.org/game.php?game=kiriki"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="5e14d301148e9c333bca36753291228337b7b3b00c2ba7946ba7fb0f7bcaf52f6a570825a9d68053e2df5b4b24db237f2fd94198b47a5305662c68a63a5dd64e kiriki-18.08.1.tar.xz"
+sha512sums="ee8fe9774e89d91285550970409689774d426e6da1e9ba734e4570ed346556694a36f51921c4609eb226620d111bc6b49dc797f77c41eee124d315aaf582aebd kiriki-18.08.2.tar.xz"
diff --git a/user/kitemmodels/APKBUILD b/user/kitemmodels/APKBUILD
index 674f9cf48..e2b5fffca 100644
--- a/user/kitemmodels/APKBUILD
+++ b/user/kitemmodels/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kitemmodels
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for sorting and searching objects"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="1df3636da596a67255ac460658868d83f42955bff8085586a846f8e37d9a6d7ca29daaa96d03d686b9d2ff0647f40e7188c0619e11af6b93de0df627463de0a1 kitemmodels-5.50.0.tar.xz"
+sha512sums="e5b6cdd64e6252fd62c1bdb017f67c27aed29f01effebec0a8e2f98229ffd45f97411001ecbec2f3a36e14957d8c94e568bfbb0b428124f9950c1b83b9032317 kitemmodels-5.51.0.tar.xz"
diff --git a/user/kitemviews/APKBUILD b/user/kitemviews/APKBUILD
index 2255c2c41..a13455d89 100644
--- a/user/kitemviews/APKBUILD
+++ b/user/kitemviews/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kitemviews
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for displaying collections of items"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="e2e1fbccde1f7f9aa4cbb6feb175aff3055621cd39e5aed60d6cdbc807cea2763e35847825a70f310276335ee37eacc066ede5d297fe58fe19d33fec094ac121 kitemviews-5.50.0.tar.xz"
+sha512sums="a73436c9912df2ae6d7947b734805560318ff21fd277a4699fb49b76f2f88100192c7dbe71ec07db0ac2306ea46ecd7d1645bc92905ad0c4c0fbae156d0fe50a kitemviews-5.51.0.tar.xz"
diff --git a/user/kiten/APKBUILD b/user/kiten/APKBUILD
index 16d738f1e..d4469123d 100644
--- a/user/kiten/APKBUILD
+++ b/user/kiten/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kiten
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Japanese reference and study tool"
url="https://www.kde.org/applications/education/kiten/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="32d542778e8ef63df9da29be94e76ffdf8839b88419906c78733449531a4fb4b62bcb9940e1c49eae09c9da75ad6c35e9d18d426848f6bcabfcd0b6c71da3525 kiten-18.08.1.tar.xz"
+sha512sums="29ec6725d71691543275f8ee0a30bf54ac8795df0498beb1e4981bc4060d44a59dc936e910823470f0fc6ff3b4801d0794edfc58fc9a4c56e33671d2d94abdcd kiten-18.08.2.tar.xz"
diff --git a/user/kjobwidgets/APKBUILD b/user/kjobwidgets/APKBUILD
index 0dfdfb4c1..29493222a 100644
--- a/user/kjobwidgets/APKBUILD
+++ b/user/kjobwidgets/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kjobwidgets
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework providing widgets that show job progress"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="9f8af0073912311fe6572606682f56952736d7cb3218646a6086c5830003dff0aa4f13d3fd59a1617d393d17d14abc6bb4f9762822e423373252cf6b6d0fbc8f kjobwidgets-5.50.0.tar.xz"
+sha512sums="6821f7f120e998d041bf4f6c3524958c3750f1b3213cf6c338994b0c3676a7c5a0ce9a0555cc76a01d47e72fef06ea4daceecaeb59909816d6d16d1613f6278c kjobwidgets-5.51.0.tar.xz"
diff --git a/user/kjs/APKBUILD b/user/kjs/APKBUILD
index 08e13397b..7376445ba 100644
--- a/user/kjs/APKBUILD
+++ b/user/kjs/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kjs
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Independent, free JavaScript engine"
url="https://www.kde.org/"
@@ -39,4 +39,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="698ef596c03b88a35dba48363034223366e14ae94c805e68d34d913ca9944a1f8c67a3db15c0454e6ea726391b6a120a21d24fdec3ba25c7b2d4480f34da3f37 kjs-5.50.0.tar.xz"
+sha512sums="34588e1ec6e9a3288ea5738b5a07fa8eb09caecc5ef56c1d830943a37bb6f2c415ad73c612b592e33f0968636eaeacba446b63011d87e9542c651ca328c3c27f kjs-5.51.0.tar.xz"
diff --git a/user/kjsembed/APKBUILD b/user/kjsembed/APKBUILD
index 85fdbebbf..38f3c0ade 100644
--- a/user/kjsembed/APKBUILD
+++ b/user/kjsembed/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kjsembed
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="JavaScript bindings for QObject"
url="https://www.kde.org/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="2b7a86569217304a0b6a5ebfaa03df000b08e6779be0cfeb4109de8861e6d262b5f415863b831d89eb9992e8bf73d8273572e2838ae1c95be61bbbcc65fbd43d kjsembed-5.50.0.tar.xz"
+sha512sums="6d2e17343699737aba1f21dbf63aa4e0e163e843a4dae1c6de2d61db6b081674fdd9932d719ed0022cda2466ec3fbfa44d03528c5b1ef7a46e5dea378ecb414d kjsembed-5.51.0.tar.xz"
diff --git a/user/kjumpingcube/APKBUILD b/user/kjumpingcube/APKBUILD
index 0245aec1b..5cc0286fc 100644
--- a/user/kjumpingcube/APKBUILD
+++ b/user/kjumpingcube/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kjumpingcube
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Dice-driven tactical game"
url="https://games.kde.org/game.php?game=kjumpingcube"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="b50c87a94f5c560e665a145ddd3e62db2ab637149b41f0a5f0fbc726d36eeea90e42615d3fb10b27f65325ae84ad460d0ecbd837e35a4f7a245617202553c338 kjumpingcube-18.08.1.tar.xz"
+sha512sums="232041ad4da40c7802c45eff35c63ab5ec81f73e9fdecf1fefe52f5a67c3ef064d9524ea56a9e1954dc1fba76b6521acbd0f85a329947254d5f661ccd74862a1 kjumpingcube-18.08.2.tar.xz"
diff --git a/user/kleopatra/APKBUILD b/user/kleopatra/APKBUILD
index fee0cad00..f47978f6b 100644
--- a/user/kleopatra/APKBUILD
+++ b/user/kleopatra/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kleopatra
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Certificate manager and cryptography GUI"
url="https://www.kde.org/applications/utilities/kleopatra/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="dd13d287f645a263e460f91528e7eec5d2e8523702770fe4f7c4f49da5303344d6a6fe2b2124ce39c480546ba126d518921f49ef746d34c66f40c2aa99f85c1c kleopatra-18.08.1.tar.xz"
+sha512sums="2ff18132c511ae6550852e935333ff69c10db525728426eb06107ec5a3a7f35e2d2878f9c859b2899770ba25fa510001418f7d70a0b2e440220f4b0f3fcea87e kleopatra-18.08.2.tar.xz"
diff --git a/user/klettres/APKBUILD b/user/klettres/APKBUILD
index 2a66e234b..0ada40d69 100644
--- a/user/klettres/APKBUILD
+++ b/user/klettres/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=klettres
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Learn alphabets for multiple languages"
url="https://www.kde.org/applications/education/klettres/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="6e0aadf89c9bae1f06e2318d40830b1793c5410548e706ab66545c26528e7f516c0b3986f36b2cfd083d53fef50a2199b30a110b7149d06a6264ad19f9be74ee klettres-18.08.1.tar.xz"
+sha512sums="71e0aeb7e9f4bcc07a5ff1bad484e22c8e43c8bc9ffea08fa3c13564e88d2172cf83b2dd02a40a4e8c20062155810ee42f3de94715ac30668c7c5e4df85e242e klettres-18.08.2.tar.xz"
diff --git a/user/klickety/APKBUILD b/user/klickety/APKBUILD
index f5a4338eb..343441d54 100644
--- a/user/klickety/APKBUILD
+++ b/user/klickety/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=klickety
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Fun, simple colour matching game"
url="https://www.kde.org/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="2df34e87cdeb9f0edd7516f0ab280eed02ad1beea7b4ad85b9d6ec496c744c0bc15a9661792a09196021aea12754ab7569e3395ab80d98f37193a27cd79f5268 klickety-18.08.1.tar.xz"
+sha512sums="fdee525191095642d8f9d703e139eae65a13f9196a087506ae00980b07dc9e8a53e1c97d181bcc6c219b220f5700ab60522d755e92ddeb798e06e75147bc6c19 klickety-18.08.2.tar.xz"
diff --git a/user/klines/APKBUILD b/user/klines/APKBUILD
index 18cc6ec80..65cfc60a5 100644
--- a/user/klines/APKBUILD
+++ b/user/klines/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=klines
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Simple yet addictive single-player game"
url="https://games.kde.org/game.php?game=klines"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="cee1b2d23de590f6449869485d213f8d87b0dd97f376af9f4dbcb7463053b915d6a9b5dbd17b46116e04802ddfb42cfe5413f8e5f92aaa8dc323e71bb786f814 klines-18.08.1.tar.xz"
+sha512sums="9063fbd49e4ee43b8f48934535ea2860074f7f353d7db27bce4599ce0d1dbda38843e7c1a910809d89d06aaea1b82d8df6cee6c24065f7c19eca1b4400e58e03 klines-18.08.2.tar.xz"
diff --git a/user/kmag/APKBUILD b/user/kmag/APKBUILD
index 243eebce5..e148e2498 100644
--- a/user/kmag/APKBUILD
+++ b/user/kmag/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kmag
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Screen magnification utility"
url="https://www.kde.org/applications/utilities/kmag/"
@@ -39,4 +39,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="ca35b13fc309df8b8d2c7ca4af726b57823ad01bd6dc8d307e81294625d8f8f98e4fdb6827260b00b4427f5980de0ec1c3d9664ad89b54699125ca0dfe6a8b18 kmag-18.08.1.tar.xz"
+sha512sums="f135fcc94a92e515bc8fbeb01a7385fa89919d1c662628c82f54a064d2f49544ec1b7fb7a0c88b7aa99b9da6a4f980bca7828129eb075976810fc1917ab2e845 kmag-18.08.2.tar.xz"
diff --git a/user/kmahjongg/APKBUILD b/user/kmahjongg/APKBUILD
index 6bd04a4c6..556e02226 100644
--- a/user/kmahjongg/APKBUILD
+++ b/user/kmahjongg/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kmahjongg
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Mah Jongg desktop game"
url="https://games.kde.org/game.php?game=kmahjongg"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="2969e334808f396825ab7370a0c76e3836c89deb6ba46841e0355a10257a9daf53beb6675655729c94af225167e78bccbc13deba4f8a331eba50e0213195c27d kmahjongg-18.08.1.tar.xz"
+sha512sums="d5cc81e34c0741143270c3c1e8d0975b84fdf991fd0daa9e3f2ae1c9056f507acfebe49c58c1567f4305e3d6a3bf607625fc464027aaf0c2acf393451d7ecee0 kmahjongg-18.08.2.tar.xz"
diff --git a/user/kmediaplayer/APKBUILD b/user/kmediaplayer/APKBUILD
index 8c2c3369b..77dfa9cb7 100644
--- a/user/kmediaplayer/APKBUILD
+++ b/user/kmediaplayer/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kmediaplayer
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Media player framework for KDE 5"
url="https://www.kde.org/"
@@ -11,7 +11,7 @@ depends=""
depends_dev="qt5-qtbase-dev kparts-dev kxmlgui-dev"
makedepends="$depends_dev cmake extra-cmake-modules"
subpackages="$pkgname-dev"
-source="https://download.kde.org/stable/frameworks/5.50/portingAids/kmediaplayer-$pkgver.tar.xz"
+source="https://download.kde.org/stable/frameworks/5.51/portingAids/kmediaplayer-$pkgver.tar.xz"
build() {
cd "$builddir"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="20307ad83e787cdae856362ffc5cead82ac2cb46ab469de3d27d9c635d2123404c44fe28067c8712fc99cb0be78c755361811816d697d12f4415adffdbbefe2e kmediaplayer-5.50.0.tar.xz"
+sha512sums="d1c2f471a8ecca7c4876015881984118a6df775ca463f1933171323230c70762bed0f706823b4be677d6a5cdfe86f96dcaea1b3bc5975b3cf279f6fc5f8a742f kmediaplayer-5.51.0.tar.xz"
diff --git a/user/kmime/APKBUILD b/user/kmime/APKBUILD
index 94e748891..ced484d38 100644
--- a/user/kmime/APKBUILD
+++ b/user/kmime/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kmime
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="KDE support library for MIME"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="2a3ab2f7e69e14f8ad86ac9f6a9c33a3fd3da703da82ec7b53d126f6d8c7a51608b4f221a7903d37c2db429b444e643130a8687b1e02d5cc746d5c8d34c151d4 kmime-18.08.1.tar.xz"
+sha512sums="b10439a1230c97232840a40faaade162e02f5bab5a2e72b76b32fa5334c288dba2db8a8e7d1c1e788259a852940520d7800b77a19d5dad34c3cda579b89dc718 kmime-18.08.2.tar.xz"
diff --git a/user/kmines/APKBUILD b/user/kmines/APKBUILD
index 0779e4192..8e1492829 100644
--- a/user/kmines/APKBUILD
+++ b/user/kmines/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kmines
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Classic Minesweeper game"
url="https://games.kde.org/game.php?game=kmines"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="b578fba58b776921d8a051dbf5dae02e91f2a41a4fa832543b671b1454a0fc16e108535299be33499f13a01aab0a75675394d43f0d804c96c45ab3cedf3074b2 kmines-18.08.1.tar.xz"
+sha512sums="12284e67d2d457bcb74af2a7da8e2918ea3965073260dc9eb33714ca3b64688cc825a49aa0592da992ef82ca8f680ddc3f08c66a319e6f3cfcceecf7f71f57f2 kmines-18.08.2.tar.xz"
diff --git a/user/kmix/APKBUILD b/user/kmix/APKBUILD
index ef2a0f629..7edf21aca 100644
--- a/user/kmix/APKBUILD
+++ b/user/kmix/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kmix
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="KDE sound mixer"
url="https://www.kde.org/applications/multimedia/kmix/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="2e532d9041604e9d7661add070eeedb7fccf85bf9d6c01160f67cd3a2b20d95322afa9813d45938774456eb9cee342e888f742839b423dab327c898bed9b846f kmix-18.08.1.tar.xz"
+sha512sums="560c6610fdce8070eb2f82f01612add104b0f12e394c509281da07101e2cccea4100d45f097c5bffc41849643366d0d854e3f5e226fbe0da40577dc3dfa89ad2 kmix-18.08.2.tar.xz"
diff --git a/user/kmousetool/APKBUILD b/user/kmousetool/APKBUILD
index dd870f305..850390b58 100644
--- a/user/kmousetool/APKBUILD
+++ b/user/kmousetool/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kmousetool
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Tool to assist with clicking the mouse button"
url="https://userbase.kde.org/KMouseTool"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="d7ff0284453c39a8c3be8f7937ac0439d17af4313ab56a6903eb39473d8fad06c836fe836ec4e061dd5a96317bef916e9a3ac9771c5a829061d1ad20ef32be08 kmousetool-18.08.1.tar.xz"
+sha512sums="d03538f7bfce62d76c146d88f47f2af3d04b6a409983f4ede72c09e76541943a6525deaea3b0cbf009856fa2b92e4d9ba6ad5e0e8171f571ecb70c13e8333a49 kmousetool-18.08.2.tar.xz"
diff --git a/user/kmplot/APKBUILD b/user/kmplot/APKBUILD
index 4420fcada..2fd0325ff 100644
--- a/user/kmplot/APKBUILD
+++ b/user/kmplot/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kmplot
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Mathematical function plotter"
url="https://www.kde.org/applications/education/kmplot/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="b5e5944875bc49f2bbe55aad41212f68973995e0de1926195a4f16e2b4dbc67f46bf745a577f6bd07d9ad30b7795ff65e853920f6fc3333e46b74f256a1b266a kmplot-18.08.1.tar.xz"
+sha512sums="7780848750bd337d3051a477649edc34da233da112546e3f53393c3338ca18ca4086f400d5bfd12e875b4f7cd1873979b4b61397ed5550706467c52149f784c9 kmplot-18.08.2.tar.xz"
diff --git a/user/knetwalk/APKBUILD b/user/knetwalk/APKBUILD
index 963150b46..10c378e98 100644
--- a/user/knetwalk/APKBUILD
+++ b/user/knetwalk/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=knetwalk
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Build up a computer network by placing the wires correctly"
url="https://www.kde.org/applications/games/knetwalk/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="2e85f38874c8c8e6929ef84b39cf5498d3b44e924aeb623cf58b55e0c9a213f3e25150aace852ae6082d50414468b90a59a288440860102a06f7e6296d662611 knetwalk-18.08.1.tar.xz"
+sha512sums="c420e83cdaa06c543b99a94cdcb0ea55daa853bbd3e7fae6973140220490f9dc555656576b03d0d8297a5173db4e4d2fe5ce3a1590bf275a09b003817a59863a knetwalk-18.08.2.tar.xz"
diff --git a/user/knewstuff/APKBUILD b/user/knewstuff/APKBUILD
index ed21673ad..eb6c74f35 100644
--- a/user/knewstuff/APKBUILD
+++ b/user/knewstuff/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=knewstuff
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for discovering and downloading plugins, themes, and more"
url="https://www.kde.org/"
@@ -45,4 +45,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="492adcfe5542c39483f30be026a1d6d69ed438448d57c062aeaf4fb7fe1676c9e91c11a3a29bf2ad738c6581aadc0f45b5c252935a7530bb34e051b207e6af51 knewstuff-5.50.0.tar.xz"
+sha512sums="0ab0548550710ee82ab241ed7c456d7cdf1b3f9135b0c0d1131d614f9848519980f0ea3466cafa8432e027a2daf7920c4feca07d374c6d21b77dc8ad8586e00c knewstuff-5.51.0.tar.xz"
diff --git a/user/knotifications/APKBUILD b/user/knotifications/APKBUILD
index a16b5122c..0854561a9 100644
--- a/user/knotifications/APKBUILD
+++ b/user/knotifications/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=knotifications
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for sending notifications to users"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="3128717e747baf8a3fecc3147ebfbd256fe1f330e1199222f276eabd17321c8e63272f0b252bdbf3372f712436046e4f7a725abfcee5345a9c1f823da218ab28 knotifications-5.50.0.tar.xz"
+sha512sums="bd6da71f7d8788e9c27603e0d1a1f03e638212a5d7127803160e5b03fc91c5f8200f9aa33c63f1884d39561d656be7a34bca7e5039019efb4399f60f72b6427a knotifications-5.51.0.tar.xz"
diff --git a/user/knotifyconfig/APKBUILD b/user/knotifyconfig/APKBUILD
index 527ffae25..f61375a0a 100644
--- a/user/knotifyconfig/APKBUILD
+++ b/user/knotifyconfig/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=knotifyconfig
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for configuring notifications"
url="https://www.kde.org/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="1a00c395e2cc52b3215a4e8d87e1b4d376f4b5f4b4ef0a4afd48ec776924314604549d9b6b0d3514e70a090643fdc8f30be405593f108f2cdf05ecd7c9a920c4 knotifyconfig-5.50.0.tar.xz"
+sha512sums="72f2e66b0b3b8ba6c6c4c0faef4b7d88f5613eb1ba9e1e669b57fe3d05b5744cbde18522bf077d7f1613e45bcb73831ba60eca46b6257764934676fa0d16266d knotifyconfig-5.51.0.tar.xz"
diff --git a/user/kollision/APKBUILD b/user/kollision/APKBUILD
index 459157fcb..5733e036f 100644
--- a/user/kollision/APKBUILD
+++ b/user/kollision/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kollision
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Simple ball dodging game"
url="https://games.kde.org/game.php?game=kollision"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="ec2c7d2ac4cbbfc9dbb7fae4046984f5acae8ca68c2a2f493dba3edc649a7cd834c9cca23a579f75c704aa76efdd4cd920ae5fc431ff3343ba9d304f5ea3daf9 kollision-18.08.1.tar.xz"
+sha512sums="99cf479bfd2aeb4b81a1db268ddafd0b011a8dc73da9c8a191a07acdb046b2dbb43feb4d760cf49b87f95d64e9faf899e569da42bbeccb2ab7c50c85062df5f4 kollision-18.08.2.tar.xz"
diff --git a/user/kolourpaint/APKBUILD b/user/kolourpaint/APKBUILD
index f674cb6e0..2a0007604 100644
--- a/user/kolourpaint/APKBUILD
+++ b/user/kolourpaint/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kolourpaint
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Simple painting program for KDE"
url="https://www.kolourpaint.org/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="ffd286a272bb0152238f73ab510d9eab006b9362f1d4d4f35b30d3ba9d3335be24f86b6aa71e29a5c5faf87c6d72e96f58ff2b0fbcbcaf1471c94a9fff8949c0 kolourpaint-18.08.1.tar.xz"
+sha512sums="ccfee1869ada8b61c20e9df322e0811a26f19d028be6f7895cf517c109ae00d72622032ce1117aa2b1573c5c333e63d70f4f444c1c627a4dbc11c499eec934fe kolourpaint-18.08.2.tar.xz"
diff --git a/user/konquest/APKBUILD b/user/konquest/APKBUILD
index 8c753ac6b..df2bc97e8 100644
--- a/user/konquest/APKBUILD
+++ b/user/konquest/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=konquest
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Galactic strategy game"
url="https://games.kde.org/game.php?game=konquest"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="a3fd61d8b167d9b1cb00771c12a1cbdefc6230484f0e79069647b8c6b104b3993d326bf5c4e202be69ad8794d0c0058b13569bc2cae071aafb352235eccaec44 konquest-18.08.1.tar.xz"
+sha512sums="9da9a24effb27d3bf714112a7976fa1c1381509986937c436740857ed610c9d2ef29d51b0a1ab224e1ce70237d06c5d7afbcd8551522ecdb8b1e593b63d7d0bd konquest-18.08.2.tar.xz"
diff --git a/user/konsole/APKBUILD b/user/konsole/APKBUILD
index 705d23523..cd66fc2b8 100644
--- a/user/konsole/APKBUILD
+++ b/user/konsole/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=konsole
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Terminal emulator for Qt/KDE"
url="https://konsole.kde.org/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="ec450f0393fece73394d7c77afba0b7adbf4e18d7b0d216de3e135f0e01371c3b5833ebbc79dc356fa102d2d8e3bea3667a5f42695793058b406d38b1f8e81a6 konsole-18.08.1.tar.xz"
+sha512sums="a8eae209ec3a60be27b06ba850353b0d85a533cbea691114c2aa2c812f9d884153b2915d8fb52977ae9ed7ce08161e10d3f378d31b0ca166750e7e4584842959 konsole-18.08.2.tar.xz"
diff --git a/user/kpackage/APKBUILD b/user/kpackage/APKBUILD
index a9b058ba7..7bbe1e955 100644
--- a/user/kpackage/APKBUILD
+++ b/user/kpackage/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kpackage
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Frameworks for managing KDE data packages"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="f56de9577b6de69724967f1ea911097d03d8bf5de8dcfeb10dc040e0fa61504d5db5e3330ceff85c1590899289f1a4b904b1d7cefa9516fa14a635b1da14650a kpackage-5.50.0.tar.xz"
+sha512sums="0ddf65995c3cebbdefea5cdcdb4634b9d5e26a4328e4fe4b180ad69e59a3ea254095d5aca418e6609925b52606e1200f8ac8b0432eb05eca6c324813bf1218c9 kpackage-5.51.0.tar.xz"
diff --git a/user/kparts/APKBUILD b/user/kparts/APKBUILD
index da0d7ab42..e6e6359c5 100644
--- a/user/kparts/APKBUILD
+++ b/user/kparts/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kparts
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for user interface components"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="c787e7b85cd4053e014eed5610812715b6bfd9a450e86fddc5259f8bbfd5fddb215720cb3ef7a190a345343042712ccda7e55082807e3a2dd168decf30f13fd2 kparts-5.50.0.tar.xz"
+sha512sums="f0fab6d9fca330636c14f5c18cf1cb71385d44b185a8418f20798f3d3012f32107f9c3b1d84b3acf56038f4c774ac7fb015746339e0bd6e456f8f307332a0c79 kparts-5.51.0.tar.xz"
diff --git a/user/kpat/APKBUILD b/user/kpat/APKBUILD
index 72ce3776b..085a4901f 100644
--- a/user/kpat/APKBUILD
+++ b/user/kpat/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kpat
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Collection of card games for KDE"
url="https://games.kde.org/game.php?game=kpat"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="989cb29db087ea3e17cf5971c6cad57c3e691d2f27975b3fd776f6d7c3d7b74ef2572c5ef6c1f3a8e7b39e39c178aa47ff1751fb87cad2cff5dfbb1e8e032516 kpat-18.08.1.tar.xz"
+sha512sums="80f01530a2475c99916bc098283228746048fd9be0fac811649e7a874d5c13ce7afaf77b95b17a5dd33ab466fd89fde35d282c7cb666162ac65bc3e598e8c877 kpat-18.08.2.tar.xz"
diff --git a/user/kpeople/APKBUILD b/user/kpeople/APKBUILD
index 5ab7534a2..216dd389e 100644
--- a/user/kpeople/APKBUILD
+++ b/user/kpeople/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kpeople
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Provides access to all contacts and groups them by physical person"
url="https://api.kde.org/frameworks/kpeople/html/index.html"
@@ -45,5 +45,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="1e52717038027a0bb7e8e6a4007b095f44ac6932aa8766c947d96046184927946464d56e0253fe231a80a3b95ba4f2980e474b58d1a5261ce0cbedf59e5b737e kpeople-5.50.0.tar.xz
+sha512sums="264ecd72fa5bfae1be9ae5b39feba654b27a772c5552c39b71276f886e814627c75880f5ee96cb8de9885d317e56078c850c60f7768282cb6ff069f5c8124d33 kpeople-5.51.0.tar.xz
77df2aefcdfb8e5b9c2fef7a6bfd79066819b0c6958b9e2f8fe94860155aaae9c284a110a15a189cd5b423dc7aa017b952196370f60a4fb382ed7eb77f15abd9 dont-crash-test.patch"
diff --git a/user/kpimtextedit/APKBUILD b/user/kpimtextedit/APKBUILD
index 80f407c1f..acbc169a1 100644
--- a/user/kpimtextedit/APKBUILD
+++ b/user/kpimtextedit/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kpimtextedit
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Text editor for Personal Information Managers (PIMs)"
url="https://pim.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="e7830227a74331e399d030dfd8058382329512b85ccd36061d7ddeba2c1eca287d41890847203afb6df254e2d9927fda7974feb4c48ab433f5b037fe48c588f5 kpimtextedit-18.08.1.tar.xz"
+sha512sums="f99a974170a17d9850f4ad58b8adf010c6089a93e908872cad7f4ed716dcec14beb4a4a276b453135f01202d7970ee56edac84836e46351d58d9f421f9487e04 kpimtextedit-18.08.2.tar.xz"
diff --git a/user/kplotting/APKBUILD b/user/kplotting/APKBUILD
index be0cd160b..c7c313ab7 100644
--- a/user/kplotting/APKBUILD
+++ b/user/kplotting/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kplotting
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for data plotting functions"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="352c424d842ddbe277c7a71acb7fe50fb7cdc78bc750c85ac5a364a6e330bd69344cd5dbdd7922725e1b143bd0d7b1ac1b6d003f5baa67edb33981d27f830838 kplotting-5.50.0.tar.xz"
+sha512sums="e75a88074b18768b4edf90a5020257c49fe0440fba806f0ef1880182fc1856853211de03f7aca3be3f220fe93ff723009c96799b0c94f237ac7c698247f37666 kplotting-5.51.0.tar.xz"
diff --git a/user/kpty/APKBUILD b/user/kpty/APKBUILD
index 5f4f9400a..602ae416f 100644
--- a/user/kpty/APKBUILD
+++ b/user/kpty/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kpty
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for implementing terminal emulation"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="22b394b8d53ab5aae05a51470a3a9ed209c8533425da6f1d6fdb26c82cc5fc1fec2c6869caa5192f067bb60a819a4ce6c19784c5fb8b7bb1691b507e77aae54d kpty-5.50.0.tar.xz"
+sha512sums="e43608bbfd342fb4bcdc0376fa16d83c33589f84de4707281d7f6ef8aa19716f85df7b5dff0898a87d525611be3cc6dd9ab3cb349d76b83b6ca2bca733d81350 kpty-5.51.0.tar.xz"
diff --git a/user/krdc/APKBUILD b/user/krdc/APKBUILD
index 89d6a6391..c7e082442 100644
--- a/user/krdc/APKBUILD
+++ b/user/krdc/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=krdc
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="View and control remote desktops (RDP and VNC)"
url="https://www.kde.org/applications/internet/krdc/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="9765378af2d792958511f7359a12c7da1c032c1b23abf5859d679c4aab47260b1d4ae208ddaf6a08b69b4de8340b3fc3eafd9bd171b906f088dd80db52f6c032 krdc-18.08.1.tar.xz"
+sha512sums="d9a420a48bac56acf7210f3476c3b9675aeb217a50d973934ec2dcac0ef92536a061e414d7016ad7d7ce9eabd6ee86f5ce1b875789e83dde80257ff9d3da2dd2 krdc-18.08.2.tar.xz"
diff --git a/user/kreversi/APKBUILD b/user/kreversi/APKBUILD
index 2c20058b7..4b97370b0 100644
--- a/user/kreversi/APKBUILD
+++ b/user/kreversi/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kreversi
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Reversi game"
url="https://games.kde.org/game.php?game=kreversi"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="5811bb3cc0aa2e7b9b5a56c0f5cb4c3de2120179878ec06eb387190618951d3315bf06184272b70ccb995c5c06b84b56949ca49d8c3ae6896b5d264aa8d13cca kreversi-18.08.1.tar.xz"
+sha512sums="24da03f1be1e545e2ce57df52420b36eef8ecdea4ebea9439fb5e64437d95bcbe399546ed2565d310365b4a2a0b6f48af69f25ee8698f4ef0118380b31cae812 kreversi-18.08.2.tar.xz"
diff --git a/user/krfb/APKBUILD b/user/krfb/APKBUILD
index 139ffeeec..7fd2925c1 100644
--- a/user/krfb/APKBUILD
+++ b/user/krfb/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=krfb
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Share your screen with others for remote watching or assistance"
url="https://www.kde.org/applications/system/krfb/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="1024222c35f4c73774635ccf6e65109f6ecdf29ddb2d63a9d6ae4821647115b2945320ea3cd4f1d3bb13009e853f5d045dfc7bea7f94d41ebccb42dbaa86433c krfb-18.08.1.tar.xz"
+sha512sums="7b172469b701023f2eeb71a5ef27a70c5812a09b3e950c53d123d4a2f14d5eb0eba5a6d851b37aba21733aaf2e1669be6e36d9ec76bbb92aa1ed5de31b6c906a krfb-18.08.2.tar.xz"
diff --git a/user/kross/APKBUILD b/user/kross/APKBUILD
index ad145f237..0d37c2741 100644
--- a/user/kross/APKBUILD
+++ b/user/kross/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kross
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for scripting KDE applications"
url="https://www.kde.org/"
@@ -12,7 +12,7 @@ depends_dev="qt5-qtbase-dev qt5-qtscript-dev kparts-dev"
makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev
kcompletion-dev kcoreaddons-dev ki18n-dev kiconthemes-dev kio-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/frameworks/5.50/portingAids/kross-$pkgver.tar.xz"
+source="https://download.kde.org/stable/frameworks/5.51/portingAids/kross-$pkgver.tar.xz"
build() {
cd "$builddir"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="6c1f4062d87bfa691b6323ec6210cb1f321525e012ff8e37a90271f05eb7dde489f64fa36c027d7890b220ac7af89f3571547d267033a451fedb85522d01577b kross-5.50.0.tar.xz"
+sha512sums="c2b97f2980b04b57b607e526b788982e7a61f6965302c46b8f3036d3683354d66d59a189e3e7c47e8c387543e24f4417baa1896b06ec150e95959f540caac6be kross-5.51.0.tar.xz"
diff --git a/user/kruler/APKBUILD b/user/kruler/APKBUILD
index ccaa5a9f1..c44d5a5f3 100644
--- a/user/kruler/APKBUILD
+++ b/user/kruler/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kruler
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Screen ruler"
url="https://www.kde.org/applications/graphics/kruler/"
@@ -39,4 +39,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="8facbb509eada0762264bef0435d2d4888a5e6a9a102f6c4d5746f4e299a67be888543ff12c4f53970c4371ac85cf4877d307193e9f33d4bf776a6ffd61922dc kruler-18.08.1.tar.xz"
+sha512sums="a7e7c0c8184b6e48131fad93b6e6ca326f85c834cbca4caf1217b32197b6a6977b5de135596165e78bcb8da8cf4fcd1a8a7f23b28cd3d12b2741950913e5beee kruler-18.08.2.tar.xz"
diff --git a/user/krunner/APKBUILD b/user/krunner/APKBUILD
index 93aa18030..75d921e12 100644
--- a/user/krunner/APKBUILD
+++ b/user/krunner/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=krunner
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Parallel query system"
url="https://api.kde.org/frameworks/krunner/html/index.html"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="c1f14161c39c718f6dd9e3dca818a53d86d05b33d8115e26ce7e76d66dd3d54d22a15ea7b6c1865a5d374bd4175b9bc351db949b373e2b9de1fac8e3efb6542c krunner-5.50.0.tar.xz"
+sha512sums="e053b454adaf1982a1b2b3b09aabacfd1b4f293c3d5f9c6b557e32d61049c6aeecb2b9aea547438e091395cc4b45ece38b4c7269ca90121ee0e8918e8573cf29 krunner-5.51.0.tar.xz"
diff --git a/user/kservice/APKBUILD b/user/kservice/APKBUILD
index b1acd8701..cc9429552 100644
--- a/user/kservice/APKBUILD
+++ b/user/kservice/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kservice
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for implementing plugins and services"
url="https://www.kde.org/"
@@ -45,4 +45,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="d239647335f0c72e1c76f36f4f23dfdd4614467b1f95d75bffc3ffd11c2bcf307dbbbc7f67c0197030a1c27875bf256a751721204f06769d9fdc3f1e49172e87 kservice-5.50.0.tar.xz"
+sha512sums="832c189b8fbf9ffca863032dcea513c14fb4823f6706675b8b939b9c6848c383b9f4ace0c7bc6211a9c5398026045fde3f62e38926e934dc6afeeb762fed56c7 kservice-5.51.0.tar.xz"
diff --git a/user/kshisen/APKBUILD b/user/kshisen/APKBUILD
index 2bef40a11..7581038ae 100644
--- a/user/kshisen/APKBUILD
+++ b/user/kshisen/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kshisen
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Mixture of Solitaire and Mah Jongg"
url="https://games.kde.org/game.php?game=kshisen"
@@ -39,4 +39,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="aa215ad4b30f91ac262d99657ff093ff9b24529af33c3f1c9ee5a79d3eb7bca5ff6515112430f4b4e70ce06fe75289082ec26ef9092418de2f5d8df291860f28 kshisen-18.08.1.tar.xz"
+sha512sums="1ca7611260ca04acb763fefdc78988981b48d95418a0b00b1d59a40aa104cc36ff32ec1c9246edd43557e43949e03d269bd7c17f75dbda8d9024e91a1a8d4990 kshisen-18.08.2.tar.xz"
diff --git a/user/ksnakeduel/APKBUILD b/user/ksnakeduel/APKBUILD
index fb062a554..d09144d7b 100644
--- a/user/ksnakeduel/APKBUILD
+++ b/user/ksnakeduel/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ksnakeduel
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Tron-like game"
url="https://www.kde.org/applications/games/ksnakeduel/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="ae8ffbc8fa2489ec3aaf2d2ea866b6df5d1a9ea6e24708c584b21db69e93bff659d418bed33063a8a4c36735f6cf0664a3a117f4a55a4fe19e441b71d5c3a4b7 ksnakeduel-18.08.1.tar.xz"
+sha512sums="13673dbed2b4266f6a8b4c26b0a63c4dd8e57bc66a8d5085d6434cbae05478afbb99c0371d9a59bba411044a89f2f1fb6a098217dc75f176f2616b00cba8835b ksnakeduel-18.08.2.tar.xz"
diff --git a/user/ksquares/APKBUILD b/user/ksquares/APKBUILD
index 70623fe6e..73ec2c9d9 100644
--- a/user/ksquares/APKBUILD
+++ b/user/ksquares/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ksquares
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Fun and exciting game of Dots and Boxes"
url="https://games.kde.org/game.php?game=ksquares"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="8c5fbb1e5989adf061571a63a16d86f38b3f68d977162ce8fab4ea2b1b41eb58dee9371cca1f97052497a4a72d101fa4478941ea39022d87e885c23a39aef028 ksquares-18.08.1.tar.xz"
+sha512sums="cfdb42579f5702f6eaecb230c2fe0c32501982772385533cbb8868f8174e1797aace26ef3a7553a633bd753950bf550a7b00f534da09836793edb21d64ea9c3c ksquares-18.08.2.tar.xz"
diff --git a/user/ksudoku/APKBUILD b/user/ksudoku/APKBUILD
index a00cd06f5..c9959832d 100644
--- a/user/ksudoku/APKBUILD
+++ b/user/ksudoku/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ksudoku
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Desktop Sudoku (symbol placement / logic) game"
url="https://games.kde.org/game.php?game=ksudoku"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="c310e1ea217e0c7cf56562c6ac5e2d028567031b7f4c710d132ea4149e658577d659689a607c3ae27337f0c09a9674a5d38d229651401fb98cc8b01adc2544de ksudoku-18.08.1.tar.xz"
+sha512sums="50b70e276d320821dbdabb161c770315f87d7286e0066fc453d17761e16f9e2e329d13a91d0420650e2de5b3b7e7da2bccd3672ff6055fd80d641a01addc50b7 ksudoku-18.08.2.tar.xz"
diff --git a/user/ksystemlog/APKBUILD b/user/ksystemlog/APKBUILD
index 0f836fa04..875268e4e 100644
--- a/user/ksystemlog/APKBUILD
+++ b/user/ksystemlog/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ksystemlog
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Friendly, powerful system log viewer tool"
url="https://www.kde.org/applications/system/ksystemlog/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="096c335bc4b461548d7d16dbee738ee06fb5fae91ab3f02869b73af18f1dd8ef4ea27568a265e6a40f3777e7749e9f5a11e9b3402ac5f698836e00475a759308 ksystemlog-18.08.1.tar.xz"
+sha512sums="74f89527757f3c61fb563826a9d5354426fe901c879200f771d4186c20a9ac67d1ce9b6b5fbf694399818d17fc947cdc868940002d059fe52b12dfef5a49cdc5 ksystemlog-18.08.2.tar.xz"
diff --git a/user/kteatime/APKBUILD b/user/kteatime/APKBUILD
index 799131cc0..7c5f1a365 100644
--- a/user/kteatime/APKBUILD
+++ b/user/kteatime/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kteatime
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Steep responsibly"
url="https://www.kde.org/applications/games/kteatime/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="61d0233dc81a492f2fa3caec2a0a028c66a0f9b0ceb18ff1d395dedee3ea184b221dd59bb35886d65ba7c4bd32f84a6ac8aaab0b0ccc61d3989824a5410539c3 kteatime-18.08.1.tar.xz"
+sha512sums="065794fdaa956947056da2a2771ebfdcd59f88ae648734e86b4648b41ce3f223e43791ff4868be85e86d0ab4a4f3bfefa553dd838d4df4bb241067922a667ec4 kteatime-18.08.2.tar.xz"
diff --git a/user/ktexteditor/APKBUILD b/user/ktexteditor/APKBUILD
index 21c0fe277..d6a9d9e92 100644
--- a/user/ktexteditor/APKBUILD
+++ b/user/ktexteditor/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ktexteditor
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Reusable, programmable text editor widget"
url="https://www.kde.org/"
@@ -18,7 +18,7 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/ktexteditor-$pkgver.tar.xz"
# secfixes:
-# 5.50.0-r0:
+# 5.51.0-r0:
# - CVE-2018-10361
build() {
@@ -48,4 +48,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="ab58d937d7b3e6374f7800fa81d52522a8fe73e67a222402b557b41770f1067348bb6b0e8a4e76cf4c983cc3e2e9df0760bd10791531b6d59cbd438c39e93537 ktexteditor-5.50.0.tar.xz"
+sha512sums="9da7f51240b9772e03d90438a3e21f29889ef0e69c7af86ffbd702f7a1569cffeda52e1f24f1b4a28739366a5229348a147da994e2ffe32b1a6d5dc17213f0f9 ktexteditor-5.51.0.tar.xz"
diff --git a/user/ktextwidgets/APKBUILD b/user/ktextwidgets/APKBUILD
index 0476c3c52..5aeed9d27 100644
--- a/user/ktextwidgets/APKBUILD
+++ b/user/ktextwidgets/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ktextwidgets
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework providing widgets for text manipulation"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="bbb886b5f3520d7aba4b2f0fb3b63fcba7df16cf551077bc6827ca402fda4849a6148b21706c3c733cb788042a2ed1870a28104f7cb7227cbf5f3f4e14128db0 ktextwidgets-5.50.0.tar.xz"
+sha512sums="4a3d56f21d86b03f4097407d44eeaf3915b62148772f8d54a4489a1ac18d5422c44e26e7a2cb52570f0ba6502d5b006093a16fc6783e7682cb878863c4ce0dc7 ktextwidgets-5.51.0.tar.xz"
diff --git a/user/ktimer/APKBUILD b/user/ktimer/APKBUILD
index ecc6bf036..3d255f169 100644
--- a/user/ktimer/APKBUILD
+++ b/user/ktimer/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ktimer
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Tool to execute programs after some time"
url="https://www.kde.org/applications/utilities/ktimer/"
@@ -39,4 +39,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="54916845190dcf9e80deefbdf1cfa583cfc37c4ab7fca9ba56a0542a934719f98b56bc879768a0f6822d255ead23446edad9bf21886fd341a11f2ad3296f2947 ktimer-18.08.1.tar.xz"
+sha512sums="65cb1ee4f2f1402728ef0fcedb403f4015d06383f268f13fd6dd031601083007502373506d1ece514a9c55ff8a7f111a71f31350929d82a2298dab69477d3680 ktimer-18.08.2.tar.xz"
diff --git a/user/ktouch/APKBUILD b/user/ktouch/APKBUILD
index e9d79daa6..c725a9165 100644
--- a/user/ktouch/APKBUILD
+++ b/user/ktouch/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ktouch
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Touch typing tutor"
url="https://www.kde.org/applications/education/ktouch/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="83fb8fefff5a3fbb8124fb7a0d545f5d2edbcf1b2c1e134cf8c9984809bbe1f4b50e566782a9eed78233e9716f8638b86e177f5ed9f1f1304fbe70942abdf3ed ktouch-18.08.1.tar.xz"
+sha512sums="925a7add9c0078eea79e677c0f90acd75ddc17ee88f6c1063c261f8b753d3077003508bca66d4434525715d8df688866237a0d3a051096f2ae657faca8604531 ktouch-18.08.2.tar.xz"
diff --git a/user/ktuberling/APKBUILD b/user/ktuberling/APKBUILD
index af37697bc..1b092b2dc 100644
--- a/user/ktuberling/APKBUILD
+++ b/user/ktuberling/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ktuberling
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Simple constructor game"
url="https://games.kde.org/game.php?game=ktuberling"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="71381b04656f15e1c9409bfae15252f4a8ebe8c6de139d432e88ab23f942d8662a07dfb1d93901097c4d83227229e5becdebf1da10935cbb830848dfe8d4b18a ktuberling-18.08.1.tar.xz"
+sha512sums="59d2d6b212973e7006d3dcefac5a6ed776bff2eed1e2f21b694429666c34290256429c964a288e3c03af8b0281f487ce27cb3f6f54b6845c2bea04e6b6ac4e4e ktuberling-18.08.2.tar.xz"
diff --git a/user/kturtle/APKBUILD b/user/kturtle/APKBUILD
index 10b73a429..4ee474ec4 100644
--- a/user/kturtle/APKBUILD
+++ b/user/kturtle/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kturtle
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Educational programming environment"
url="https://www.kde.org/applications/education/kturtle/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="d33694c95676579a72c4065009f86f9a4aef9576057a4215267b16d5a37ba2b1d57e103bc9b3824dd5691b63d078e964291775a067f85c74d542b3654cd276a7 kturtle-18.08.1.tar.xz"
+sha512sums="d9136d5aeb7c9c32f96b235a1608a2be71c123a9c745e3db5cec53fa647dc70d020bcb3d96692324f9047f7e579357a7aa030791fe6e9d91ddede9a778528870 kturtle-18.08.2.tar.xz"
diff --git a/user/kubrick/APKBUILD b/user/kubrick/APKBUILD
index 0ab818f4c..fd63fe70a 100644
--- a/user/kubrick/APKBUILD
+++ b/user/kubrick/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kubrick
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="3D cube puzzle solving game"
url="https://www.kde.org/applications/games/kubrick/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="37cd3bb1488f3cf0704010a3b9d10ba8861f3e258fbab63703b255e999f326899ddd5c50bf8409598ebced62e532105bfe541f5fe768e9a942fff3dd09cfb443 kubrick-18.08.1.tar.xz"
+sha512sums="88aeac983d252b38dfc23552ad00557c80ea0ea8e3ce18f4c9f75de58059422588ee6c900bcb79bc66236c3cda60e47a7298fae9bcbdff6dd9ca29460c03c54d kubrick-18.08.2.tar.xz"
diff --git a/user/kunitconversion/APKBUILD b/user/kunitconversion/APKBUILD
index 39d7a3515..0b104c50b 100644
--- a/user/kunitconversion/APKBUILD
+++ b/user/kunitconversion/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kunitconversion
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Convert between metric and imperial"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="82dc61f9893e6d1f7215226a1bc87404a09d8c29f384dab21fb78a2620ffb3ba45621beb057ef803f95635f2e8b1b0f3e57a9dbcbf815871d45c87f70d53750f kunitconversion-5.50.0.tar.xz"
+sha512sums="d258c3a94392e742391d592e100a9e6e6d89c375306b1fa5a0f35731495e68667f2a8d334472f77d0a584783e1f393cf7eac1bb7ae034f94936cd3fd131b1c3e kunitconversion-5.51.0.tar.xz"
diff --git a/user/kwallet/APKBUILD b/user/kwallet/APKBUILD
index 1ed6014d1..a0b1a5923 100644
--- a/user/kwallet/APKBUILD
+++ b/user/kwallet/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kwallet
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Secure storage system for passwords built atop Qt"
url="https://www.kde.org/"
@@ -44,5 +44,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="45d798775898a8781be3341411c55f07df668d2f13806b3085e3c9f77926f564d6dc5ea3425aa3e0fdc42276125f320136725cd988807fb1a29b22ccc1bdccf8 kwallet-5.50.0.tar.xz
+sha512sums="edb4129ad542d1b359c5a6f8ea2d84b400fe314138e22441f560e399b0209c6cd6be216ffc1b9066d6a05a880920ca7ef6969e24de9fe4a355cb291c6c5850ac kwallet-5.51.0.tar.xz
edca12963a5db9db05b3b4d581c1b970569f3b96dc672422e561c189c9024b69710732281f054514ce3d596688a5b0ba512766f4fd768eea8e00a18dcfd59179 kwallet-5.22.0-blowfish-endianness.patch"
diff --git a/user/kwalletmanager/APKBUILD b/user/kwalletmanager/APKBUILD
index e05deca6d..2bb6cfe04 100644
--- a/user/kwalletmanager/APKBUILD
+++ b/user/kwalletmanager/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kwalletmanager
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Manage KDE wallets"
url="https://www.kde.org/applications/system/kwalletmanager/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="9e5d37f3600dc8f6499e791c92858a0e16afe8cce6b60232af8736e161ad67936f4e4e2ec49cfd413aae410d4b1ef24e27dca42e3c04ab1fc05c61ed39698740 kwalletmanager-18.08.1.tar.xz"
+sha512sums="5178cb62df0a96f72a58c203213650cd8b5bc97ff656e6cf096963e044023bf0a6d4ac545fe9d2ba64f23071f74cf7e817146e340939666383fc309854d26f48 kwalletmanager-18.08.2.tar.xz"
diff --git a/user/kwave/APKBUILD b/user/kwave/APKBUILD
index d99fa5a64..c4d3f3eb2 100644
--- a/user/kwave/APKBUILD
+++ b/user/kwave/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kwave
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Sound editor built for KDE"
url="https://kwave.sourceforge.net/"
@@ -46,5 +46,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="5e9abc54dbd3e757ffb287ce68f43eb91c4b7ee8c231fca194139d0c2183f1b1e8acd23f713d15ea40dca6cea03d4567591ac78d58650e554422772cd7a53660 kwave-18.08.1.tar.xz
+sha512sums="31e971799d79cde4dac118121a8ca4d89910c8599f7b019e26e10bae63a892e53e022386e03a0703ff2a1c03b6121ff1761a89ce59903f49d8da6f23a039a58a kwave-18.08.2.tar.xz
43474f73281a7e3e97e2aa9e8c5b7aac50c8153c4ec09345a9ff43eb3c90a17c1dd9fbd2c630967ff87a5b21139f4efd0ecc44f36052549cc2036fd1db1dfac4 remove-msgcat.patch"
diff --git a/user/kwayland/APKBUILD b/user/kwayland/APKBUILD
index ab6e4bb2d..4fdcc3b53 100644
--- a/user/kwayland/APKBUILD
+++ b/user/kwayland/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kwayland
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Qt wrapper libraries for Wayland"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="6698eace0b13d276b24ccb47cf15cb04c6ee473d5e21adcbd8729a02bb481387faf280b4fff5a7e94965671424e8a1be6364f17e738b929d2a5b1d6638c15428 kwayland-5.50.0.tar.xz"
+sha512sums="dceb2b39757ee55ffcad88741556925b1467198e3cc66d9af3ee5eb707e3c226bcd2c5f8079754b7163421239a28931f86bddc543a15b47ba35a08acf3a6ddf1 kwayland-5.51.0.tar.xz"
diff --git a/user/kwidgetsaddons/APKBUILD b/user/kwidgetsaddons/APKBUILD
index 8e9a19a09..74bbc67eb 100644
--- a/user/kwidgetsaddons/APKBUILD
+++ b/user/kwidgetsaddons/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kwidgetsaddons
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework containing ready-made widgets for common tasks"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="91c4824d1c5b889c11f84fe95f0e48453275451d3e2e7c5b4a5603fa5db4ffbe0ab20dfd48bb3fcec8576c4f1d494a5fcb5d53e84ff11af01ded26b93377cfe7 kwidgetsaddons-5.50.0.tar.xz"
+sha512sums="01383c3ccbfbbe4fd871aed636d5ba7a2d4df83b08b2f1ede54449f1695756d76116489dc6e32055c658008c2419912426fb1246bd02a0bb0358ca87c2ec9d9b kwidgetsaddons-5.51.0.tar.xz"
diff --git a/user/kwindowsystem/APKBUILD b/user/kwindowsystem/APKBUILD
index 12be7c657..7f02703a5 100644
--- a/user/kwindowsystem/APKBUILD
+++ b/user/kwindowsystem/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kwindowsystem
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for introspecting the running X11 window manager"
url="https://www.kde.org/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="7e83e07ab587ef4a0edd58ca22ecba8277f97ca6438f537b6475bf03225559d207e80c2fde4c1ce5ebdb78b5a4c1e04407af9cba0a5dacbbaeacf3d7b14a9ed6 kwindowsystem-5.50.0.tar.xz"
+sha512sums="cd2703b1cc87722b6c37d1380004d50f0899c1be508dbd42fb45392440ff8ca77eb1df0f0658a2e096b5cfb50b1bea76dc9226dff692e87ad2c8e81502d75f41 kwindowsystem-5.51.0.tar.xz"
diff --git a/user/kwordquiz/APKBUILD b/user/kwordquiz/APKBUILD
index 5fdb2bb57..c87814cf8 100644
--- a/user/kwordquiz/APKBUILD
+++ b/user/kwordquiz/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kwordquiz
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Flash card trainer for KDE"
url="https://www.kde.org/applications/education/kwordquiz/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="40a00ca117b4a4a14921b84c312bd4afc98b83e45d0f7a1cc9cc24d365b57bb5a3a383dae65e8517e835991e02e1841fb5470a215003467c29f93e7e04427a28 kwordquiz-18.08.1.tar.xz"
+sha512sums="85d2de5c354033e7b49cd37cabe249a5fef76ef849daf31187bfc64fefefcac2fb65fc87dd44e217d1bbe13934eb569eeb60d925a9df8a5d892c1c1c8db48dd3 kwordquiz-18.08.2.tar.xz"
diff --git a/user/kxmlgui/APKBUILD b/user/kxmlgui/APKBUILD
index d7b3e60b4..45b56f8ae 100644
--- a/user/kxmlgui/APKBUILD
+++ b/user/kxmlgui/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kxmlgui
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for creating user interfaces using XML"
url="https://www.kde.org/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="01915037c1709df0a04d9651d0c56f21856448636937188c50ff5785de374f68d87e9bb8a4f553b8247a601e186c4291b1e5ff4ec9bf89dbfd7d975c527e064a kxmlgui-5.50.0.tar.xz"
+sha512sums="2da28eb4b5c53e0cb92fd140f4edf355ae84e8f507f3475540260eaea96149178a16eb2ae9bd1901eb1a04a8e0e2acb5c2b2083e8a3c114e232bdcb5355832bd kxmlgui-5.51.0.tar.xz"
diff --git a/user/kxmlrpcclient/APKBUILD b/user/kxmlrpcclient/APKBUILD
index c865e581e..354c0cb6d 100644
--- a/user/kxmlrpcclient/APKBUILD
+++ b/user/kxmlrpcclient/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kxmlrpcclient
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Qt library for writing XML-RPC clients"
url="https://www.kde.org/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="08c207cc2c0db165ed76ea2c92bfbb1ed9eb49ace49ffb3bfbfb8780a0b335e0938504fe370465dc074ee6bb02f64a4d5f5bce459729215a334bfdbebba4ca98 kxmlrpcclient-5.50.0.tar.xz"
+sha512sums="149e12d95daea4185c68a254c7c9cdf100a9157018bbaa96367c5ec87863464caeb9aeed1e39d492c12e05edcefdd2c8691cb6fca2fe0e81a95a358a375a43bb kxmlrpcclient-5.51.0.tar.xz"
diff --git a/user/libkdegames/APKBUILD b/user/libkdegames/APKBUILD
index ad5143e17..5966f37dc 100644
--- a/user/libkdegames/APKBUILD
+++ b/user/libkdegames/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libkdegames
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Library for common routines shared between KDE games"
url="https://www.kde.org/applications/games/"
@@ -52,4 +52,4 @@ carddecks() {
mv "$pkgdir"/usr/share/carddecks "$subpkgdir"/usr/share/
}
-sha512sums="09769549944b42f8c0381ba691b787b9ab00575343047ee1763d8c1a5347e62716d0cada05b0688aee7f160846a6d16aa7d68978d99bdf65c5dc3a21ce5619e1 libkdegames-18.08.1.tar.xz"
+sha512sums="97657fa70aecf0345f6ccba70e1ed2cb652fc220c25d1f89e039f83ab695b0d7576271391197c573f5c53f9e262a7d1ccc163bb67827e5390e9b3aa170ee5e4f libkdegames-18.08.2.tar.xz"
diff --git a/user/libkeduvocdocument/APKBUILD b/user/libkeduvocdocument/APKBUILD
index 7e50fe8b9..ac68e1764 100644
--- a/user/libkeduvocdocument/APKBUILD
+++ b/user/libkeduvocdocument/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libkeduvocdocument
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Library for manipulating KVTML files"
url="https://www.kde.org/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="fb71a7c76426a959f25c5bb2d01c8d843bcd31c0b28f4acf37fe860a2dff7a9ee5dfc67e9a51715f137ee5b7c284f885cae0f7941888ef0c75607b03ad90d11c libkeduvocdocument-18.08.1.tar.xz"
+sha512sums="c31763aa8f75693be75ae5fb07fa398807dbb9fc940554f01b2d4c11601317e27fdf3e170d7ff439602a6b4bb020bb9cf1a333191e27cb435d4bbc6e4ab80414 libkeduvocdocument-18.08.2.tar.xz"
diff --git a/user/libkipi/APKBUILD b/user/libkipi/APKBUILD
index d96026984..b68551aad 100644
--- a/user/libkipi/APKBUILD
+++ b/user/libkipi/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libkipi
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="KDE Image Plugin Interface library"
url="https://www.digikam.org/"
@@ -36,4 +36,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="d209b81bfe29d41816347d8292fabd572579ad4ba916127ea1fa1a9d247f08347dc6f2f1c91dbe5ba4e8f7e3305b411246a14c8c776e16af9b36fa57d8cd6641 libkipi-18.08.1.tar.xz"
+sha512sums="435dd7ac92121406ebabc9268dedbb5bd452ad09e60ae7c7877e88a01205da5089414db1104159792177b40e0ad024a9bbb1ee718751a5114154de3c2f31c412 libkipi-18.08.2.tar.xz"
diff --git a/user/libkleo/APKBUILD b/user/libkleo/APKBUILD
index f73aa01c5..8220dfff4 100644
--- a/user/libkleo/APKBUILD
+++ b/user/libkleo/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libkleo
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="KDE encryption library"
url="https://www.kde.org/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="3df1d5236d31636de4811dea600b660d1920613a56c0ec7821fdf3451737d896ba129746f5a838cfb96d106dcd68b3170efdf2616f8e56b562e59cd7ec7ce1ed libkleo-18.08.1.tar.xz"
+sha512sums="e1979872da850b359bf02b309e8660452c6c99409b2474589beec8789ad34870dd30b71c806da7f410d1ee9b9671a9c75e6259c6440a32bbf20a70914cf974b0 libkleo-18.08.2.tar.xz"
diff --git a/user/libkmahjongg/APKBUILD b/user/libkmahjongg/APKBUILD
index 2fcb476ae..0b7c93cf0 100644
--- a/user/libkmahjongg/APKBUILD
+++ b/user/libkmahjongg/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libkmahjongg
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Library with Mah Jongg logic"
url="https://www.kde.org/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="bfcae260ec5baef8ff8f881331442448d6e40619321c0034f9d638df91283ea50bd57a1ac90e118b99ab662d4d08c29b9493946119b9f378b1fa6fb823dcdc70 libkmahjongg-18.08.1.tar.xz"
+sha512sums="2b1ae525169ab01b99d6b1d3502a66084b0110431485aa0fa1a693e77fa8e55cec1c78fe4b2beac2be314698f3f50f2d7de3f1471115f1caf58f4ace968ed57f libkmahjongg-18.08.2.tar.xz"
diff --git a/user/libksane/APKBUILD b/user/libksane/APKBUILD
index 1fe14d367..962eacde5 100644
--- a/user/libksane/APKBUILD
+++ b/user/libksane/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libksane
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="KDE scanning library"
url="https://www.kde.org"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="fdd65c8857a31f2d805f12308b6ccb0027c5960b9af5f80553740f6ebe86e84278f2d078d651003c1f95835893794feabb76ce13c516f03783e65eacc82be48d libksane-18.08.1.tar.xz"
+sha512sums="526f97353d281a61eb1fc38c34f95c4a4e3e9d63e269a5c63d553ce8597df5168eefc05d6856439ee409318f3e7c91bccef6004c347635446dd045229929eb0e libksane-18.08.2.tar.xz"
diff --git a/user/libpfm/APKBUILD b/user/libpfm/APKBUILD
new file mode 100644
index 000000000..c30624312
--- /dev/null
+++ b/user/libpfm/APKBUILD
@@ -0,0 +1,26 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=libpfm
+pkgver=4.10.1
+pkgrel=0
+pkgdesc="Performance monitoring library"
+url="http://perfmon2.sourceforge.net/"
+arch="all"
+options="!check" # No test suite.
+license="MIT"
+depends=""
+makedepends=""
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://downloads.sourceforge.net/perfmon2/libpfm4/libpfm-$pkgver.tar.gz"
+
+build() {
+ cd "$builddir"
+ CFLAGS="$CFLAGS -Wno-error=cpp" make
+}
+
+package() {
+ cd "$builddir"
+ make PREFIX="/usr" DESTDIR="$pkgdir" install
+}
+
+sha512sums="33d99824216b4d83784e0db9f1aae3b39f84c2ba42dee64dde0b3c43cc5ee3a18c206d9044e75bf10867768add7cb9967c6318f7aa196f178f334271fa05e1aa libpfm-4.10.1.tar.gz"
diff --git a/user/llvm6/APKBUILD b/user/llvm6/APKBUILD
index 4372ac72f..5f7b04fad 100644
--- a/user/llvm6/APKBUILD
+++ b/user/llvm6/APKBUILD
@@ -26,6 +26,7 @@ source="http://llvm.org/releases/$pkgver/llvm-$pkgver.src.tar.xz
secure-plt.patch
more-secure-plt.patch
even-more-secure-plt.patch
+ ppc32-calling-convention.patch
"
builddir="$srcdir/$_pkgname-$pkgver.src"
@@ -250,4 +251,5 @@ caeec8e4dbd92f5f74940780b69075f3879a267a8623822cbdc193fd14706eb089071e3a5a20d60c
e5ddbc4b6c4928e79846dc3c022eb7928aaa8fed40515c78f5f03b8ab8264f34f1eb8aa8bfc0f436450932f4917e54ad261603032092ea271d9590f11a37cf1e musl-ppc64-elfv2.patch
35d289641fa4d200b5a3f62f1d51da600a734641356b0dc6c54a3080dd89aec3b031e36af8b53be49c35346c1cbcce00268de7ec9b4f552bfd7bf84d3504d1c4 secure-plt.patch
3d4a0a478bf800ea262c577451e22a1dbd5a4258226e49c66a697559263c8aa4fc0fff642a3c80ac3dfbb3efd6d9c0dbeb41dae1250fc7946de821cfef1ce1f0 more-secure-plt.patch
-deb71762721ebc73bfdf23143b582f40c70eddcef3e337ed14499e8e336bee2906292d38d64fe98fa633430c1bcb66cf6a2e067258c8fbe6e931f99f6d10a6f7 even-more-secure-plt.patch"
+deb71762721ebc73bfdf23143b582f40c70eddcef3e337ed14499e8e336bee2906292d38d64fe98fa633430c1bcb66cf6a2e067258c8fbe6e931f99f6d10a6f7 even-more-secure-plt.patch
+c3f596a1578a07ce0ee40c4e2576fe05ca6ca0c1b4f94b1f74c55cb09603afe7c846db9294fe28d83ca48633086bad422218e6d06e0d92173143fb298e06fb38 ppc32-calling-convention.patch"
diff --git a/user/llvm6/ppc32-calling-convention.patch b/user/llvm6/ppc32-calling-convention.patch
new file mode 100644
index 000000000..2e6d66427
--- /dev/null
+++ b/user/llvm6/ppc32-calling-convention.patch
@@ -0,0 +1,69 @@
+Index: trunk/lib/Target/PowerPC/PPCISelLowering.cpp
+===================================================================
+--- trunk/lib/Target/PowerPC/PPCISelLowering.cpp
++++ trunk/lib/Target/PowerPC/PPCISelLowering.cpp
+@@ -3511,9 +3511,14 @@
+ // Argument stored in memory.
+ assert(VA.isMemLoc());
+
++ // Get the extended size of the argument type in stack
+ unsigned ArgSize = VA.getLocVT().getStoreSize();
+- int FI = MFI.CreateFixedObject(ArgSize, VA.getLocMemOffset(),
+- isImmutable);
++ // Get the actual size of the argument type
++ unsigned ObjSize = VA.getValVT().getStoreSize();
++ unsigned ArgOffset = VA.getLocMemOffset();
++ // Stack objects in PPC32 are right justified.
++ ArgOffset += ArgSize - ObjSize;
++ int FI = MFI.CreateFixedObject(ArgSize, ArgOffset, isImmutable);
+
+ // Create load nodes to retrieve arguments from the stack.
+ SDValue FIN = DAG.getFrameIndex(FI, PtrVT);
+@@ -5468,10 +5473,15 @@
+ Arg = PtrOff;
+ }
+
+- if (VA.isRegLoc()) {
+- if (Arg.getValueType() == MVT::i1)
+- Arg = DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i32, Arg);
++ // When useCRBits() is true, there can be i1 arguments.
++ // It is because getRegisterType(MVT::i1) => MVT::i1,
++ // and for other integer types getRegisterType() => MVT::i32.
++ // Extend i1 and ensure callee will get i32.
++ if (Arg.getValueType() == MVT::i1)
++ Arg = DAG.getNode(Flags.isSExt() ? ISD::SIGN_EXTEND : ISD::ZERO_EXTEND,
++ dl, MVT::i32, Arg);
+
++ if (VA.isRegLoc()) {
+ seenFloatArg |= VA.getLocVT().isFloatingPoint();
+ // Put argument in a physical register.
+ RegsToPass.push_back(std::make_pair(VA.getLocReg(), Arg));
+Index: trunk/test/CodeGen/PowerPC/ppc32-i1-stack-arguments-abi-bug.ll
+===================================================================
+--- trunk/test/CodeGen/PowerPC/ppc32-i1-stack-arguments-abi-bug.ll
++++ trunk/test/CodeGen/PowerPC/ppc32-i1-stack-arguments-abi-bug.ll
+@@ -0,0 +1,24 @@
++; RUN: llc -verify-machineinstrs < %s -mcpu=ppc32 -mattr=+crbits | FileCheck %s
++target triple = "powerpc-unknown-linux-gnu"
++
++define void @check_callee(
++ i32, i32, i32, i32,
++ i32, i32, i32, i32,
++ i1 zeroext %s1
++) {
++ call void @check_caller(
++ i32 9, i32 9, i32 9, i32 9,
++ i32 9, i32 9, i32 9, i32 9,
++ i1 zeroext %s1)
++ ret void
++}
++
++; CHECK-LABEL: @check_callee
++; CHECK: lbz {{[0-9]+}}, 27(1)
++; CHECK: stw {{[0-9]+}}, 8(1)
++
++declare void @check_caller(
++ i32, i32, i32, i32,
++ i32, i32, i32, i32,
++ i1 zeroext
++)
diff --git a/user/lskat/APKBUILD b/user/lskat/APKBUILD
index 0276048d8..b6452b1c0 100644
--- a/user/lskat/APKBUILD
+++ b/user/lskat/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=lskat
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Lieutenant Skat is an interactive two-player card game"
url="https://games.kde.org/game.php?game=lskat"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="958ca673414a700f253c2b61d3e15502161fa3b3724e16b9ef1a1e3827c0093721a866a4ff00a9056ad027a541ce6873e192421d2b473f5e1dd7d307498c4715 lskat-18.08.1.tar.xz"
+sha512sums="25c13bb18da2906987cbf250ad6e300d121db4d04abb2fed48942b513d3ba1c0ed3d31815951a92eba70939d1c8f1423c12d4ed390e41405f06eb83a6046c1a6 lskat-18.08.2.tar.xz"
diff --git a/user/lsof/APKBUILD b/user/lsof/APKBUILD
index 32fff3e16..a7e0c4768 100644
--- a/user/lsof/APKBUILD
+++ b/user/lsof/APKBUILD
@@ -8,7 +8,7 @@ url="https://people.freebsd.org/~abe"
arch="all"
license="zlib-acknowledgement"
subpackages="$pkgname-doc"
-makedepends="linux-headers debianutils-which utmps-dev"
+makedepends="linux-headers cmd:which utmps-dev"
source="ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/${pkgname}_${pkgver}.tar.gz
utmps.patch
test-enable-suite.patch
diff --git a/user/lua-expat/APKBUILD b/user/lua-expat/APKBUILD
new file mode 100644
index 000000000..9c8a6713a
--- /dev/null
+++ b/user/lua-expat/APKBUILD
@@ -0,0 +1,32 @@
+# Contributor: Mika Havela <mika.havela@gmail.com>
+# Contribtor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=lua-expat
+_name=expat
+pkgver=1.3.0
+pkgrel=0
+pkgdesc="SAX XML parser based on the Expat library"
+url="https://matthewwild.co.uk/projects/luaexpat/"
+arch="all"
+license="MIT"
+depends="lua5.3"
+makedepends="lua5.3-dev expat-dev"
+source="http://matthewwild.co.uk/projects/luaexpat/luaexpat-$pkgver.tar.gz"
+builddir="$srcdir/luaexpat-$pkgver"
+
+build() {
+ cd "$builddir"
+ make LUA_V=5.3
+}
+
+check() {
+ cd "$builddir"
+ LUA_CPATH="./src/?.so" lua tests/test.lua
+}
+
+package() {
+ cd "$builddir"
+ make LUA_V=5.3 DESTDIR="$pkgdir" install
+}
+
+sha512sums="91884653310e2dc89ade6d1653875ac8607640a21853d3ccb1fd0f833812e41981fad5c40101732ec249104d2c50c9a332208d1e44423b8428065a223c60b4ae luaexpat-1.3.0.tar.gz"
diff --git a/user/lua-filesystem/APKBUILD b/user/lua-filesystem/APKBUILD
new file mode 100644
index 000000000..e809a654f
--- /dev/null
+++ b/user/lua-filesystem/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=lua-filesystem
+_pkgname=luafilesystem
+pkgver=1.7.0.2
+_pkgver=${pkgver//./_}
+_rockver=${pkgver%.*}-${pkgver##*.}
+pkgrel=0
+pkgdesc="Filesystem functions for Lua"
+url="http://keplerproject.github.io/luafilesystem/"
+arch="all"
+license="MIT"
+depends="lua5.3"
+makedepends="lua5.3-dev"
+source="$_pkgname-$pkgver.tar.gz::https://github.com/keplerproject/$_pkgname/archive/v$_pkgver.tar.gz"
+builddir="$srcdir/$_pkgname-$_pkgver"
+
+build() {
+ cd "$builddir"
+ make CFLAGS="$CFLAGS $(pkg-config lua --cflags) -fPIC"
+}
+
+check() {
+ cd "$builddir"
+ LUA_CPATH=./src/?.so lua tests/test.lua
+}
+
+package() {
+ local rockdir="$pkgdir"/usr/lib/luarocks/rocks-5.3/$_rockname/$_rockver
+ cd "$builddir"
+ make LUA_LIBDIR="$pkgdir"/$(pkg-config --variable=INSTALL_CMOD lua5.3) install
+ mkdir -p "$rockdir"
+ echo 'rock_manifest = {}' > "$rockdir"/rock_manifest
+}
+
+sha512sums="a1d4d077776e57cd878dbcd21656da141ea3686c587b5420a2b039aeaf086b7e7d05d531ee1cc2bbd7d06660d1315b09593e52143f6711f033ce8eecdc550511 luafilesystem-1.7.0.2.tar.gz"
diff --git a/user/lua-sec/APKBUILD b/user/lua-sec/APKBUILD
new file mode 100644
index 000000000..6732105ef
--- /dev/null
+++ b/user/lua-sec/APKBUILD
@@ -0,0 +1,32 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=lua-sec
+pkgver=0.7
+pkgrel=0
+pkgdesc="TLS/SSL Support for Lua"
+url="https://github.com/brunoos/luasec/wiki"
+arch="all"
+options="!check" # no tests
+license="MIT"
+depends="lua5.3 lua-socket"
+makedepends="lua5.3-dev openssl-dev"
+subpackages="$pkgname-doc"
+source="luasec-$pkgver.tar.gz::https://github.com/brunoos/luasec/archive/luasec-$pkgver.tar.gz"
+builddir="$srcdir/luasec-luasec-$pkgver"
+
+build() {
+ cd "$builddir"
+ make linux INC_PATH="$(pkg-config --cflags lua)" LD="${CC:-gcc}"
+}
+
+package() {
+ cd "$builddir"
+ make \
+ LUAPATH="$pkgdir"/usr/share/lua/5.3 \
+ LUACPATH="$pkgdir"/usr/lib/lua/5.3 \
+ install
+ mkdir -p "$pkgdir"/usr/share/doc/$pkgname
+ cp -r samples "$pkgdir"/usr/share/doc/$pkgname/
+}
+
+sha512sums="6adf5241aa5a0d92c9dd7fc7f7e426969475548f47979ccc28187471b3bad4132c215de6da1f471d21b05c6558d36309264512c9c4ac70a53d6f6e204cac1358 luasec-0.7.tar.gz"
diff --git a/user/lua-socket/0001-Create-socket-on-first-sendto-if-family-agnostic-udp.patch b/user/lua-socket/0001-Create-socket-on-first-sendto-if-family-agnostic-udp.patch
new file mode 100644
index 000000000..61bae6fbf
--- /dev/null
+++ b/user/lua-socket/0001-Create-socket-on-first-sendto-if-family-agnostic-udp.patch
@@ -0,0 +1,49 @@
+From 3041a808c3797e3c87272d71666e7b2f7c7a9f46 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Wed, 25 Jan 2017 12:43:29 +0100
+Subject: [PATCH] Create socket on first sendto if family agnostic udp() was
+ used
+
+Create socket and set family on first sendto() if udp() was created
+without address family.
+
+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
+---
+ src/udp.c | 21 +++++++++++++++++++++
+ 1 file changed, 21 insertions(+)
+
+diff --git a/src/udp.c b/src/udp.c
+index ec97252..605c195 100644
+--- a/src/udp.c
++++ b/src/udp.c
+@@ -189,6 +189,27 @@ static int meth_sendto(lua_State *L) {
+ lua_pushstring(L, gai_strerror(err));
+ return 2;
+ }
++
++ /* create socket if on first sendto if AF_UNSPEC was set */
++ if (udp->family == AF_UNSPEC && udp->sock == SOCKET_INVALID) {
++ struct addrinfo *ap;
++ const char *errstr = NULL;
++ for (ap = ai; ap != NULL; ap = ap->ai_next) {
++ errstr = inet_trycreate(&udp->sock, ap->ai_family, SOCK_DGRAM, 0);
++ if (errstr == NULL) {
++ socket_setnonblocking(&udp->sock);
++ udp->family = ap->ai_family;
++ break;
++ }
++ }
++ if (errstr != NULL) {
++ lua_pushnil(L);
++ lua_pushstring(L, errstr);
++ freeaddrinfo(ai);
++ return 2;
++ }
++ }
++
+ timeout_markstart(tm);
+ err = socket_sendto(&udp->sock, data, count, &sent, ai->ai_addr,
+ (socklen_t) ai->ai_addrlen, tm);
+--
+2.11.0
+
diff --git a/user/lua-socket/APKBUILD b/user/lua-socket/APKBUILD
new file mode 100644
index 000000000..16bfbcf40
--- /dev/null
+++ b/user/lua-socket/APKBUILD
@@ -0,0 +1,41 @@
+# Contributor: Mika Havela <mika.havela@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=lua-socket
+_name=luasocket
+pkgver=3.0_rc1_git20160306
+pkgrel=0
+_ver=${pkgver%_git*}
+_ver=${_ver/_rc/-rc}
+pkgdesc="Networking library for Lua"
+url="http://luaforge.net/projects/luasocket/"
+arch="all"
+license="MIT"
+depends="lua5.3"
+makedepends="lua5.3-dev"
+source="luasocket-$_ver.tar.gz::https://github.com/diegonehab/luasocket/archive/v$_ver.tar.gz
+ git.patch
+ lua-cflags.patch
+ 0001-Create-socket-on-first-sendto-if-family-agnostic-udp.patch"
+builddir="$srcdir/$_name-$_ver"
+
+build() {
+ cd "$builddir"
+ make LUAV=""
+}
+
+check() {
+ cd "$builddir"
+ mkdir -p src/socket && cp src/socket-$_ver.so src/socket/core.so
+ mkdir -p src/mime && cp src/mime-1.0.3.so src/mime/core.so
+ LUA_CPATH=./src/?.so LUA_PATH="./src/?.lua;;" lua test/hello.lua
+}
+
+package() {
+ cd "$builddir"
+ make prefix=/usr DESTDIR="$pkgdir" LUAV="5.3" install-unix
+}
+
+sha512sums="f6efce259aaacaa11472911471f8a13b118fe009b8953a82c6aa18b9ec829cd1293180904e56935cb130d36d267e3f27c91db2d78e03f7488f3e100571ed0540 luasocket-3.0-rc1.tar.gz
+45c80e488fedc879f0217bc8a654d80da003039f5d1ff21b0dea0eb769151787dbe793e44a3dfd72cb07ff2697eceaf4fc7b55b4634cd170fa71281f19f025a5 git.patch
+61c15238a2f116b7239fdbdb8f617c82dbbecd0117c6e8389b12015bf07f3978299a8e8995e93a45a23530c747662b08d161073cdb6a8e07c4f449e45856e8cb lua-cflags.patch
+c45a12e17771a1b3b71154b5415421f524cd10b7969b4649a5f37b652cdc826721e117edb8fe64758d3520e59946e2f755b814f72cbb39ff42bf59bbcf9a64e9 0001-Create-socket-on-first-sendto-if-family-agnostic-udp.patch"
diff --git a/user/lua-socket/git.patch b/user/lua-socket/git.patch
new file mode 100644
index 000000000..d665fc232
--- /dev/null
+++ b/user/lua-socket/git.patch
@@ -0,0 +1,6609 @@
+diff --git a/doc/http.html b/doc/http.html
+index cd41c0d..3b7a8b1 100644
+--- a/doc/http.html
++++ b/doc/http.html
+@@ -112,12 +112,15 @@ the HTTP module:
+ </p>
+
+ <ul>
+-<li> <tt>PORT</tt>: default port used for connections;
+-<li> <tt>PROXY</tt>: default proxy used for connections;
++<li> <tt>PROXY</tt>: default proxy used for connections;
+ <li> <tt>TIMEOUT</tt>: sets the timeout for all I/O operations;
+ <li> <tt>USERAGENT</tt>: default user agent reported to server.
+ </ul>
+
++<p class=note id="post">
++Note: These constants are global. Changing them will also
++change the behavior other code that might be using LuaSocket.
++</p>
+
+ <!-- http.request ++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+diff --git a/doc/mime.html b/doc/mime.html
+index ae136fd..8cb3507 100644
+--- a/doc/mime.html
++++ b/doc/mime.html
+@@ -72,34 +72,6 @@ local mime = require("mime")
+
+ <h3 id=high>High-level filters</h3>
+
+-<!-- normalize ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+-
+-<p class=name id="normalize">
+-mime.<b>normalize(</b>[marker]<b>)</b>
+-</p>
+-
+-<p class=description>
+-Converts most common end-of-line markers to a specific given marker.
+-</p>
+-
+-<p class=parameters>
+-<tt>Marker</tt> is the new marker. It defaults to CRLF, the canonic
+-end-of-line marker defined by the MIME standard.
+-</p>
+-
+-<p class=return>
+-The function returns a filter that performs the conversion.
+-</p>
+-
+-<p class=note>
+-Note: There is no perfect solution to this problem. Different end-of-line
+-markers are an evil that will probably plague developers forever.
+-This function, however, will work perfectly for text created with any of
+-the most common end-of-line markers, i.e. the Mac OS (CR), the Unix (LF),
+-or the DOS (CRLF) conventions. Even if the data has mixed end-of-line
+-markers, the function will still work well, although it doesn't
+-guarantee that the number of empty lines will be correct.
+-</p>
+
+ <!-- decode +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+@@ -159,6 +131,35 @@ base64 = ltn12.filter.chain(
+ )
+ </pre>
+
++<!-- normalize ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
++
++<p class=name id="normalize">
++mime.<b>normalize(</b>[marker]<b>)</b>
++</p>
++
++<p class=description>
++Converts most common end-of-line markers to a specific given marker.
++</p>
++
++<p class=parameters>
++<tt>Marker</tt> is the new marker. It defaults to CRLF, the canonic
++end-of-line marker defined by the MIME standard.
++</p>
++
++<p class=return>
++The function returns a filter that performs the conversion.
++</p>
++
++<p class=note>
++Note: There is no perfect solution to this problem. Different end-of-line
++markers are an evil that will probably plague developers forever.
++This function, however, will work perfectly for text created with any of
++the most common end-of-line markers, i.e. the Mac OS (CR), the Unix (LF),
++or the DOS (CRLF) conventions. Even if the data has mixed end-of-line
++markers, the function will still work well, although it doesn't
++guarantee that the number of empty lines will be correct.
++</p>
++
+ <!-- stuff +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <p class=name id="stuff">
+@@ -466,7 +467,7 @@ marker.
+ <p>
+ <small>
+ Last modified by Diego Nehab on <br>
+-Thu Apr 20 00:25:44 EDT 2006
++Fri Mar 4 15:19:17 BRT 2016
+ </small>
+ </p>
+ </center>
+diff --git a/doc/reference.css b/doc/reference.css
+index b1dd25d..04e38cf 100644
+--- a/doc/reference.css
++++ b/doc/reference.css
+@@ -2,6 +2,7 @@ body {
+ margin-left: 1em;
+ margin-right: 1em;
+ font-family: "Verdana", sans-serif;
++ background: #ffffff;
+ }
+
+ tt {
+diff --git a/doc/reference.html b/doc/reference.html
+index e9bb5eb..287dc19 100644
+--- a/doc/reference.html
++++ b/doc/reference.html
+@@ -147,6 +147,7 @@ Support, Manual">
+ <a href="socket.html#connect">connect</a>,
+ <a href="socket.html#connect">connect4</a>,
+ <a href="socket.html#connect">connect6</a>,
++<a href="socket.html#datagramsize">_DATAGRAMSIZE</a>,
+ <a href="socket.html#debug">_DEBUG</a>,
+ <a href="dns.html#dns">dns</a>,
+ <a href="socket.html#gettime">gettime</a>,
+@@ -158,11 +159,14 @@ Support, Manual">
+ <a href="socket.html#skip">skip</a>,
+ <a href="socket.html#sleep">sleep</a>,
+ <a href="socket.html#setsize">_SETSIZE</a>,
++<a href="socket.html#socketinvalid">_SOCKETINVALID</a>,
+ <a href="socket.html#source">source</a>,
+ <a href="tcp.html#socket.tcp">tcp</a>,
++<a href="tcp.html#socket.tcp4">tcp4</a>,
+ <a href="tcp.html#socket.tcp6">tcp6</a>,
+ <a href="socket.html#try">try</a>,
+ <a href="udp.html#socket.udp">udp</a>,
++<a href="udp.html#socket.udp4">udp4</a>,
+ <a href="udp.html#socket.udp6">udp6</a>,
+ <a href="socket.html#version">_VERSION</a>.
+ </blockquote>
+@@ -183,6 +187,7 @@ Support, Manual">
+ <a href="tcp.html#getpeername">getpeername</a>,
+ <a href="tcp.html#getsockname">getsockname</a>,
+ <a href="tcp.html#getstats">getstats</a>,
++<a href="tcp.html#gettimeout">gettimeout</a>,
+ <a href="tcp.html#listen">listen</a>,
+ <a href="tcp.html#receive">receive</a>,
+ <a href="tcp.html#send">send</a>,
+@@ -203,6 +208,7 @@ Support, Manual">
+ <a href="udp.html#getoption">getoption</a>,
+ <a href="udp.html#getpeername">getpeername</a>,
+ <a href="udp.html#getsockname">getsockname</a>,
++<a href="udp.html#gettimeout">gettimeout</a>,
+ <a href="udp.html#receive">receive</a>,
+ <a href="udp.html#receivefrom">receivefrom</a>,
+ <a href="udp.html#send">send</a>,
+diff --git a/doc/smtp.html b/doc/smtp.html
+index bbbff80..600ec37 100644
+--- a/doc/smtp.html
++++ b/doc/smtp.html
+@@ -114,6 +114,124 @@ the SMTP module:
+ <li> <tt>ZONE</tt>: default time zone.
+ </ul>
+
++<!-- message ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
++
++<p class=name id=message>
++smtp.<b>message(</b>mesgt<b>)</b>
++</p>
++
++<p class=description>
++Returns a <em>simple</em>
++<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a> source that sends an SMTP message body, possibly multipart (arbitrarily deep).
++</p>
++
++<p class=parameters>
++The only parameter of the function is a table describing the message.
++<tt>Mesgt</tt> has the following form (notice the recursive structure):
++</p>
++
++<blockquote>
++<table summary="Mesgt table structure">
++<tr><td><tt>
++mesgt = {<br>
++&nbsp;&nbsp;headers = <i>header-table</i>,<br>
++&nbsp;&nbsp;body = <i>LTN12 source</i> or <i>string</i> or
++<i>multipart-mesgt</i><br>
++}<br>
++&nbsp;<br>
++multipart-mesgt = {<br>
++&nbsp;&nbsp;[preamble = <i>string</i>,]<br>
++&nbsp;&nbsp;[1] = <i>mesgt</i>,<br>
++&nbsp;&nbsp;[2] = <i>mesgt</i>,<br>
++&nbsp;&nbsp;...<br>
++&nbsp;&nbsp;[<i>n</i>] = <i>mesgt</i>,<br>
++&nbsp;&nbsp;[epilogue = <i>string</i>,]<br>
++}<br>
++</tt></td></tr>
++</table>
++</blockquote>
++
++<p class=parameters>
++For a simple message, all that is needed is a set of <tt>headers</tt>
++and the <tt>body</tt>. The message <tt>body</tt> can be given as a string
++or as a <em>simple</em>
++<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a>
++source. For multipart messages, the body is a table that
++recursively defines each part as an independent message, plus an optional
++<tt>preamble</tt> and <tt>epilogue</tt>.
++</p>
++
++<p class=return>
++The function returns a <em>simple</em>
++<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a>
++source that produces the
++message contents as defined by <tt>mesgt</tt>, chunk by chunk.
++Hopefully, the following
++example will make things clear. When in doubt, refer to the appropriate RFC
++as listed in the introduction. </p>
++
++<pre class=example>
++-- load the smtp support and its friends
++local smtp = require("socket.smtp")
++local mime = require("mime")
++local ltn12 = require("ltn12")
++
++-- creates a source to send a message with two parts. The first part is
++-- plain text, the second part is a PNG image, encoded as base64.
++source = smtp.message{
++ headers = {
++ -- Remember that headers are *ignored* by smtp.send.
++ from = "Sicrano de Oliveira &lt;sicrano@example.com&gt;",
++ to = "Fulano da Silva &lt;fulano@example.com&gt;",
++ subject = "Here is a message with attachments"
++ },
++ body = {
++ preamble = "If your client doesn't understand attachments, \r\n" ..
++ "it will still display the preamble and the epilogue.\r\n" ..
++ "Preamble will probably appear even in a MIME enabled client.",
++ -- first part: no headers means plain text, us-ascii.
++ -- The mime.eol low-level filter normalizes end-of-line markers.
++ [1] = {
++ body = mime.eol(0, [[
++ Lines in a message body should always end with CRLF.
++ The smtp module will *NOT* perform translation. However, the
++ send function *DOES* perform SMTP stuffing, whereas the message
++ function does *NOT*.
++ ]])
++ },
++ -- second part: headers describe content to be a png image,
++ -- sent under the base64 transfer content encoding.
++ -- notice that nothing happens until the message is actually sent.
++ -- small chunks are loaded into memory right before transmission and
++ -- translation happens on the fly.
++ [2] = {
++ headers = {
++ ["content-type"] = 'image/png; name="image.png"',
++ ["content-disposition"] = 'attachment; filename="image.png"',
++ ["content-description"] = 'a beautiful image',
++ ["content-transfer-encoding"] = "BASE64"
++ },
++ body = ltn12.source.chain(
++ ltn12.source.file(io.open("image.png", "rb")),
++ ltn12.filter.chain(
++ mime.encode("base64"),
++ mime.wrap()
++ )
++ )
++ },
++ epilogue = "This might also show up, but after the attachments"
++ }
++}
++
++-- finally send it
++r, e = smtp.send{
++ from = "&lt;sicrano@example.com&gt;",
++ rcpt = "&lt;fulano@example.com&gt;",
++ source = source,
++}
++</pre>
++
++
+ <!-- send +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <p class=name id=send>
+@@ -275,123 +393,6 @@ r, e = smtp.send{
+ }
+ </pre>
+
+-<!-- message ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+-
+-<p class=name id=message>
+-smtp.<b>message(</b>mesgt<b>)</b>
+-</p>
+-
+-<p class=description>
+-Returns a <em>simple</em>
+-<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a> source that sends an SMTP message body, possibly multipart (arbitrarily deep).
+-</p>
+-
+-<p class=parameters>
+-The only parameter of the function is a table describing the message.
+-<tt>Mesgt</tt> has the following form (notice the recursive structure):
+-</p>
+-
+-<blockquote>
+-<table summary="Mesgt table structure">
+-<tr><td><tt>
+-mesgt = {<br>
+-&nbsp;&nbsp;headers = <i>header-table</i>,<br>
+-&nbsp;&nbsp;body = <i>LTN12 source</i> or <i>string</i> or
+-<i>multipart-mesgt</i><br>
+-}<br>
+-&nbsp;<br>
+-multipart-mesgt = {<br>
+-&nbsp;&nbsp;[preamble = <i>string</i>,]<br>
+-&nbsp;&nbsp;[1] = <i>mesgt</i>,<br>
+-&nbsp;&nbsp;[2] = <i>mesgt</i>,<br>
+-&nbsp;&nbsp;...<br>
+-&nbsp;&nbsp;[<i>n</i>] = <i>mesgt</i>,<br>
+-&nbsp;&nbsp;[epilogue = <i>string</i>,]<br>
+-}<br>
+-</tt></td></tr>
+-</table>
+-</blockquote>
+-
+-<p class=parameters>
+-For a simple message, all that is needed is a set of <tt>headers</tt>
+-and the <tt>body</tt>. The message <tt>body</tt> can be given as a string
+-or as a <em>simple</em>
+-<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a>
+-source. For multipart messages, the body is a table that
+-recursively defines each part as an independent message, plus an optional
+-<tt>preamble</tt> and <tt>epilogue</tt>.
+-</p>
+-
+-<p class=return>
+-The function returns a <em>simple</em>
+-<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a>
+-source that produces the
+-message contents as defined by <tt>mesgt</tt>, chunk by chunk.
+-Hopefully, the following
+-example will make things clear. When in doubt, refer to the appropriate RFC
+-as listed in the introduction. </p>
+-
+-<pre class=example>
+--- load the smtp support and its friends
+-local smtp = require("socket.smtp")
+-local mime = require("mime")
+-local ltn12 = require("ltn12")
+-
+--- creates a source to send a message with two parts. The first part is
+--- plain text, the second part is a PNG image, encoded as base64.
+-source = smtp.message{
+- headers = {
+- -- Remember that headers are *ignored* by smtp.send.
+- from = "Sicrano de Oliveira &lt;sicrano@example.com&gt;",
+- to = "Fulano da Silva &lt;fulano@example.com&gt;",
+- subject = "Here is a message with attachments"
+- },
+- body = {
+- preamble = "If your client doesn't understand attachments, \r\n" ..
+- "it will still display the preamble and the epilogue.\r\n" ..
+- "Preamble will probably appear even in a MIME enabled client.",
+- -- first part: no headers means plain text, us-ascii.
+- -- The mime.eol low-level filter normalizes end-of-line markers.
+- [1] = {
+- body = mime.eol(0, [[
+- Lines in a message body should always end with CRLF.
+- The smtp module will *NOT* perform translation. However, the
+- send function *DOES* perform SMTP stuffing, whereas the message
+- function does *NOT*.
+- ]])
+- },
+- -- second part: headers describe content to be a png image,
+- -- sent under the base64 transfer content encoding.
+- -- notice that nothing happens until the message is actually sent.
+- -- small chunks are loaded into memory right before transmission and
+- -- translation happens on the fly.
+- [2] = {
+- headers = {
+- ["content-type"] = 'image/png; name="image.png"',
+- ["content-disposition"] = 'attachment; filename="image.png"',
+- ["content-description"] = 'a beautiful image',
+- ["content-transfer-encoding"] = "BASE64"
+- },
+- body = ltn12.source.chain(
+- ltn12.source.file(io.open("image.png", "rb")),
+- ltn12.filter.chain(
+- mime.encode("base64"),
+- mime.wrap()
+- )
+- )
+- },
+- epilogue = "This might also show up, but after the attachments"
+- }
+-}
+-
+--- finally send it
+-r, e = smtp.send{
+- from = "&lt;sicrano@example.com&gt;",
+- rcpt = "&lt;fulano@example.com&gt;",
+- source = source,
+-}
+-</pre>
+-
+ <!-- footer +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <div class=footer>
+diff --git a/doc/socket.html b/doc/socket.html
+index b9303cb..35f8391 100644
+--- a/doc/socket.html
++++ b/doc/socket.html
+@@ -51,6 +51,30 @@ To obtain the <tt>socket</tt> namespace, run:
+ local socket = require("socket")
+ </pre>
+
++<!-- headers.canonic ++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
++
++<p class=name id="headers.canonic">
++socket.headers.<b>canonic</b></p>
++
++<p> The <tt>socket.headers.canonic</tt> table
++is used by the HTTP and SMTP modules to translate from
++lowercase field names back into their canonic
++capitalization. When a lowercase field name exists as a key
++in this table, the associated value is substituted in
++whenever the field name is sent out.
++</p>
++
++<p>
++You can obtain the <tt>headers</tt> namespace if case run-time
++modifications are required by running:
++</p>
++
++<pre class=example>
++-- loads the headers module
++local headers = require("headers")
++</pre>
++
++
+ <!-- bind ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <p class=name id=bind>
+@@ -90,7 +114,7 @@ of connect are defined as simple helper functions that restrict the
+
+ <!-- debug ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+-<p class=name id=debug>
++<p class=name id=debug>
+ socket.<b>_DEBUG</b>
+ </p>
+
+@@ -99,6 +123,19 @@ This constant is set to <tt><b>true</b></tt> if the library was compiled
+ with debug support.
+ </p>
+
++<!-- datagramsize +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
++
++<p class=name id=debug>
++socket.<b>_DATAGRAMSIZE</b>
++</p>
++
++<p class=description>
++Default datagram size used by calls to
++<a href="udp.html#receive"<tt>receive</tt></a> and
++<a href="udp.html#receivefrom"><tt>receivefrom</tt></a>.
++(Unless changed in compile time, the value is 8192.)
++</p>
++
+ <!-- get time +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <p class=name id=gettime>
+@@ -106,8 +143,7 @@ socket.<b>gettime()</b>
+ </p>
+
+ <p class=description>
+-Returns the time in seconds, relative to the origin of the
+-universe. You should subtract the values returned by this function
++Returns the UNIX time in seconds. You should subtract the values returned by this function
+ to get meaningful values.
+ </p>
+
+@@ -117,29 +153,6 @@ t = socket.gettime()
+ print(socket.gettime() - t .. " seconds elapsed")
+ </pre>
+
+-<!-- socket.headers ++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+-
+-<p class=name id="headers.canonic">
+-socket.headers.<b>canonic</b></p>
+-
+-<p> The <tt>socket.headers.canonic</tt> table
+-is used by the HTTP and SMTP modules to translate from
+-lowercase field names back into their canonic
+-capitalization. When a lowercase field name exists as a key
+-in this table, the associated value is substituted in
+-whenever the field name is sent out.
+-</p>
+-
+-<p>
+-You can obtain the <tt>headers</tt> namespace if case run-time
+-modifications are required by running:
+-</p>
+-
+-<pre class=example>
+--- loads the headers module
+-local headers = require("headers")
+-</pre>
+-
+ <!-- newtry +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <p class=name id=newtry>
+@@ -155,8 +168,7 @@ is raised.
+
+ <p class=parameters>
+ <tt>Finalizer</tt> is a function that will be called before
+-<tt>try</tt> throws the exception. It will be called
+-in <em>protected</em> mode.
++<tt>try</tt> throws the exception.
+ </p>
+
+ <p class=return>
+@@ -204,15 +216,9 @@ to throw exceptions.
+ </p>
+
+ <p class=return>
+-Returns an equivalent function that instead of throwing exceptions,
+-returns <tt><b>nil</b></tt> followed by an error message.
+-</p>
+-
+-<p class=note>
+-Note: Beware that if your function performs some illegal operation that
+-raises an error, the protected function will catch the error and return it
+-as a string. This is because the <a href=#try><tt>try</tt></a> function
+-uses errors as the mechanism to throw exceptions.
++Returns an equivalent function that instead of throwing exceptions in case of
++a failed <a href=#try><tt>try</tt></a> call, returns <tt><b>nil</b></tt>
++followed by an error message.
+ </p>
+
+ <!-- select +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+@@ -238,7 +244,9 @@ non-numeric indices) in the arrays will be silently ignored.
+
+ <p class=return> The function returns a list with the sockets ready for
+ reading, a list with the sockets ready for writing and an error message.
+-The error message is "<tt>timeout</tt>" if a timeout condition was met and
++The error message is "<tt>timeout</tt>" if a timeout
++condition was met, "<tt>select failed</tt>" if the call
++to <tt>select</tt> failed, and
+ <tt><b>nil</b></tt> otherwise. The returned tables are
+ doubly keyed both by integers and also by the sockets
+ themselves, to simplify the test if a specific socket has
+@@ -246,7 +254,7 @@ changed status.
+ </p>
+
+ <p class=note>
+-<b>Note: </b>: <tt>select</tt> can monitor a limited number
++<b>Note:</b> <tt>select</tt> can monitor a limited number
+ of sockets, as defined by the constant <tt>socket._SETSIZE</tt>. This
+ number may be as high as 1024 or as low as 64 by default,
+ depending on the system. It is usually possible to change this
+@@ -276,6 +284,18 @@ it to <tt>select</tt>, it will be ignored.
+ <b>Using select with non-socket objects</b>: Any object that implements <tt>getfd</tt> and <tt>dirty</tt> can be used with <tt>select</tt>, allowing objects from other libraries to be used within a <tt>socket.select</tt> driven loop.
+ </p>
+
++<!-- setsize ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
++
++<p class=name id=setsize>
++socket.<b>_SETSIZE</b>
++</p>
++
++<p class=description>
++The maximum number of sockets that the <a
++href=#select><tt>select</tt></a> function can handle.
++</p>
++
++
+ <!-- sink ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <p class=name id=sink>
+@@ -383,15 +403,14 @@ side closes the connection.
+ The function returns a source with the appropriate behavior.
+ </p>
+
+-<!-- setsize ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
++<!-- socketinvalid ++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+-<p class=name id=setsize>
+-socket.<b>_SETSIZE</b>
++<p class=name id=socketinvalid>
++socket.<b>_SOCKETINVALID</b>
+ </p>
+
+ <p class=description>
+-The maximum number of sockets that the <a
+-href=#select><tt>select</tt></a> function can handle.
++The OS value for an invalid socket.
+ </p>
+
+ <!-- try ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+@@ -401,9 +420,9 @@ socket.<b>try(</b>ret<sub>1</sub> [, ret<sub>2</sub> ... ret<sub>N</sub>]<b>)</b
+ </p>
+
+ <p class=description>
+-Throws an exception in case of error. The exception can only be caught
+-by the <a href=#protect><tt>protect</tt></a> function. It does not explode
+-into an error message.
++Throws an exception in case <tt>ret<sub>1</sub></tt> is falsy, using
++<tt>ret<sub>2</sub></tt> as the error message. The exception is supposed to be caught
++by a <a href=#protect><tt>protect</tt></a>ed function only.
+ </p>
+
+ <p class=parameters>
+@@ -414,7 +433,10 @@ nested with <tt>try</tt>.
+
+ <p class=return>
+ The function returns <tt>ret</tt><sub>1</sub> to <tt>ret</tt><sub>N</sub> if
+-<tt>ret</tt><sub>1</sub> is not <tt><b>nil</b></tt>. Otherwise, it calls <tt>error</tt> passing <tt>ret</tt><sub>2</sub>.
++<tt>ret</tt><sub>1</sub> is not <tt><b>nil</b></tt> or <tt><b>false</b></tt>.
++Otherwise, it calls <tt>error</tt> passing <tt>ret</tt><sub>2</sub> wrapped
++in a table with metatable used by <a href=#protect><tt>protect</tt></a> to
++distinguish exceptions from runtime errors.
+ </p>
+
+ <pre class=example>
+diff --git a/doc/tcp.html b/doc/tcp.html
+index 4226d78..c6c6eb2 100644
+--- a/doc/tcp.html
++++ b/doc/tcp.html
+@@ -1,10 +1,10 @@
+-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+ <html>
+
+ <head>
+ <meta name="description" content="LuaSocket: The TCP/IP support">
+-<meta name="keywords" content="Lua, LuaSocket, Socket, TCP, Library, Network, Support">
++<meta name="keywords" content="Lua, LuaSocket, Socket, TCP, Library, Network, Support">
+ <title>LuaSocket: TCP/IP support</title>
+ <link rel="stylesheet" href="reference.css" type="text/css">
+ </head>
+@@ -28,7 +28,7 @@
+ <a href="index.html#download">download</a> &middot;
+ <a href="installation.html">installation</a> &middot;
+ <a href="introduction.html">introduction</a> &middot;
+-<a href="reference.html">reference</a>
++<a href="reference.html">reference</a>
+ </p>
+ </center>
+ <hr>
+@@ -36,56 +36,11 @@
+
+ <!-- tcp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+-<h2 id="tcp">TCP</h2>
+-
+-<!-- socket.tcp +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+-
+-<p class=name id="socket.tcp">
+-socket.<b>tcp()</b>
+-</p>
+-
+-<p class=description>
+-Creates and returns an IPv4 TCP master object. A master object can
+-be transformed into a server object with the method
+-<a href=#listen><tt>listen</tt></a> (after a call to <a
+-href=#bind><tt>bind</tt></a>) or into a client object with
+-the method <a href=#connect><tt>connect</tt></a>. The only other
+-method supported by a master object is the
+-<a href=#close><tt>close</tt></a> method.</p>
+-
+-<p class=return>
+-In case of success, a new master object is returned. In case of error,
+-<b><tt>nil</tt></b> is returned, followed by an error message.
+-</p>
+-
+-<!-- socket.tcp6 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+-
+-<p class=name id="socket.tcp6">
+-socket.<b>tcp6()</b>
+-</p>
+-
+-<p class=description>
+-Creates and returns an IPv6 TCP master object. A master object can
+-be transformed into a server object with the method
+-<a href=#listen><tt>listen</tt></a> (after a call to <a
+-href=#bind><tt>bind</tt></a>) or into a client object with
+-the method <a href=#connect><tt>connect</tt></a>. The only other
+-method supported by a master object is the
+-<a href=#close><tt>close</tt></a> method.</p>
+-
+-<p class=return>
+-In case of success, a new master object is returned. In case of error,
+-<b><tt>nil</tt></b> is returned, followed by an error message.
+-</p>
+-
+-<p class=note>
+-Note: The TCP object returned will have the option
+-"<tt>ipv6-v6only</tt>" set to <tt><b>true</b></tt>.
+-</p>
++<h2 id="tcp">TCP</h2>
+
+ <!-- accept +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+-<p class=name id="accept">
++<p class=name id="accept">
+ server:<b>accept()</b>
+ </p>
+
+@@ -95,9 +50,9 @@ object and returns a client object representing that connection.
+ </p>
+
+ <p class=return>
+-If a connection is successfully initiated, a client object is returned.
++If a connection is successfully initiated, a client object is returned.
+ If a timeout condition is met, the method returns <b><tt>nil</tt></b>
+-followed by the error string '<tt>timeout</tt>'. Other errors are
++followed by the error string '<tt>timeout</tt>'. Other errors are
+ reported by <b><tt>nil</tt></b> followed by a message describing the error.
+ </p>
+
+@@ -107,28 +62,28 @@ with a server object in
+ the <tt>recvt</tt> parameter before a call to <tt>accept</tt> does
+ <em>not</em> guarantee <tt>accept</tt> will return immediately. Use the <a
+ href=#settimeout><tt>settimeout</tt></a> method or <tt>accept</tt>
+-might block until <em>another</em> client shows up.
++might block until <em>another</em> client shows up.
+ </p>
+
+ <!-- bind +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+-<p class=name id="bind">
++<p class=name id="bind">
+ master:<b>bind(</b>address, port<b>)</b>
+ </p>
+
+ <p class=description>
+ Binds a master object to <tt>address</tt> and <tt>port</tt> on the
+-local host.
++local host.
+
+ <p class=parameters>
+-<tt>Address</tt> can be an IP address or a host name.
+-<tt>Port</tt> must be an integer number in the range [0..64K).
++<tt>Address</tt> can be an IP address or a host name.
++<tt>Port</tt> must be an integer number in the range [0..64K).
+ If <tt>address</tt>
+ is '<tt>*</tt>', the system binds to all local interfaces
+ using the <tt>INADDR_ANY</tt> constant or
+-<tt>IN6ADDR_ANY_INIT</tt>, according to the family.
++<tt>IN6ADDR_ANY_INIT</tt>, according to the family.
+ If <tt>port</tt> is 0, the system automatically
+-chooses an ephemeral port.
++chooses an ephemeral port.
+ </p>
+
+ <p class=return>
+@@ -137,13 +92,13 @@ method returns <b><tt>nil</tt></b> followed by an error message.
+ </p>
+
+ <p class=note>
+-Note: The function <a href=socket.html#bind><tt>socket.bind</tt></a>
++Note: The function <a href=socket.html#bind><tt>socket.bind</tt></a>
+ is available and is a shortcut for the creation of server sockets.
+ </p>
+
+ <!-- close ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+-<p class=name id="close">
++<p class=name id="close">
+ master:<b>close()</b><br>
+ client:<b>close()</b><br>
+ server:<b>close()</b>
+@@ -154,14 +109,14 @@ Closes a TCP object. The internal socket used by the object is closed
+ and the local address to which the object was
+ bound is made available to other applications. No further operations
+ (except for further calls to the <tt>close</tt> method) are allowed on
+-a closed socket.
++a closed socket.
+ </p>
+
+ <p class=note>
+ Note: It is important to close all used sockets once they are not
+ needed, since, in many systems, each socket uses a file descriptor,
+ which are limited system resources. Garbage-collected objects are
+-automatically closed before destruction, though.
++automatically closed before destruction, though.
+ </p>
+
+ <!-- connect ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+@@ -172,19 +127,19 @@ master:<b>connect(</b>address, port<b>)</b>
+
+ <p class=description>
+ Attempts to connect a master object to a remote host, transforming it into a
+-client object.
+-Client objects support methods
++client object.
++Client objects support methods
+ <a href=#send><tt>send</tt></a>,
+-<a href=#receive><tt>receive</tt></a>,
+-<a href=#getsockname><tt>getsockname</tt></a>,
++<a href=#receive><tt>receive</tt></a>,
++<a href=#getsockname><tt>getsockname</tt></a>,
+ <a href=#getpeername><tt>getpeername</tt></a>,
+-<a href=#settimeout><tt>settimeout</tt></a>,
++<a href=#settimeout><tt>settimeout</tt></a>,
+ and <a href=#close><tt>close</tt></a>.
+ </p>
+
+ <p class=parameters>
+-<tt>Address</tt> can be an IP address or a host name.
+-<tt>Port</tt> must be an integer number in the range [1..64K).
++<tt>Address</tt> can be an IP address or a host name.
++<tt>Port</tt> must be an integer number in the range [1..64K).
+ </p>
+
+ <p class=return>
+@@ -193,14 +148,14 @@ describing the error. In case of success, the method returns 1.
+ </p>
+
+ <p class=note>
+-Note: The function <a href=socket.html#connect><tt>socket.connect</tt></a>
++Note: The function <a href=socket.html#connect><tt>socket.connect</tt></a>
+ is available and is a shortcut for the creation of client sockets.
+ </p>
+
+ <p class=note>
+-Note: Starting with LuaSocket 2.0,
++Note: Starting with LuaSocket 2.0,
+ the <a href=#settimeout><tt>settimeout</tt></a>
+-method affects the behavior of <tt>connect</tt>, causing it to return
++method affects the behavior of <tt>connect</tt>, causing it to return
+ with an error in case of a timeout. If that happens, you can still call <a
+ href=socket.html#select><tt>socket.select</tt></a> with the socket in the
+ <tt>sendt</tt> table. The socket will be writable when the connection is
+@@ -209,13 +164,88 @@ established.
+
+ <p class=note>
+ Note: Starting with LuaSocket 3.0, the host name resolution
+-depends on whether the socket was created by <a
+-href=#socket.tcp><tt>socket.tcp</tt></a> or <a
+-href=#socket.tcp6><tt>socket.tcp6</tt></a>. Addresses from
+-the appropriate family are tried in succession until the
+-first success or until the last failure.
++depends on whether the socket was created by
++<a href=#socket.tcp><tt>socket.tcp</tt></a>,
++<a href=#socket.tcp4><tt>socket.tcp4</tt></a> or
++<a href=#socket.tcp6><tt>socket.tcp6</tt></a>. Addresses from
++the appropriate family (or both) are tried in the order
++returned by the resolver until the
++first success or until the last failure. If the timeout was
++set to zero, only the first address is tried.
++</p>
++
++<!-- dirty +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
++
++<p class=name id="dirty">
++master:<b>dirty()</b><br>
++client:<b>dirty()</b><br>
++server:<b>dirty()</b>
++</p>
++
++<p class=description>
++Check the read buffer status.
++</p>
++
++<p class=return>
++Returns <tt>true</tt> if there is any data in the read buffer, <tt>false</tt> otherwise.
++</p>
++
++<p class=note>
++Note: <b>This is an internal method, use at your own risk.</b>
++</p>
++
++
++<!-- getfd +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
++
++<p class=name id="getfd">
++master:<b>getfd()</b><br>
++client:<b>getfd()</b><br>
++server:<b>getfd()</b>
++</p>
++
++<p class=description>
++Returns the underling socket descriptor or handle associated to the object.
++</p>
++
++<p class=return>
++The descriptor or handle. In case the object has been closed, the return will be -1.
++</p>
++
++<p class=note>
++Note: <b>This is an internal method. Unlikely to be
++portable. Use at your own risk. </b>
++</p>
++
++
++<!-- getoption ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
++
++<p class=name id="getoption">
++client:<b>getoption(</b>option)</b><br>
++server:<b>getoption(</b>option)</b>
++</p>
++
++<p class=description>
++Gets options for the TCP object.
++See <a href=#setoption><tt>setoption</tt></a> for description of the
++option names and values.
++</p>
++
++<p class=parameters>
++<tt>Option</tt> is a string with the option name.
++<ul>
++
++<li> '<tt>keepalive</tt>'
++<li> '<tt>linger</tt>'
++<li> '<tt>reuseaddr</tt>'
++<li> '<tt>tcp-nodelay</tt>'
++</ul>
++
++<p class=return>
++The method returns the option <tt>value</tt> in case of success, or
++<b><tt>nil</tt></b> followed by an error message otherwise.
+ </p>
+
++
+ <!-- getpeername ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <p class=name id="getpeername">
+@@ -227,10 +257,10 @@ Returns information about the remote side of a connected client object.
+ </p>
+
+ <p class=return>
+-Returns a string with the IP address of the peer, the
+-port number that peer is using for the connection,
+-and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>").
+-In case of error, the method returns <b><tt>nil</tt></b>.
++Returns a string with the IP address of the peer, the
++port number that peer is using for the connection,
++and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>").
++In case of error, the method returns <b><tt>nil</tt></b>.
+ </p>
+
+ <p class=note>
+@@ -246,13 +276,13 @@ server:<b>getsockname()</b>
+ </p>
+
+ <p class=description>
+-Returns the local address information associated to the object.
++Returns the local address information associated to the object.
+ </p>
+
+ <p class=return>
+-The method returns a string with local IP address, a number with
+-the local port,
+-and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>").
++The method returns a string with local IP address, a number with
++the local port,
++and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>").
+ In case of error, the method returns <b><tt>nil</tt></b>.
+ </p>
+
+@@ -266,32 +296,46 @@ server:<b>getstats()</b><br>
+
+ <p class=description>
+ Returns accounting information on the socket, useful for throttling
+-of bandwidth.
++of bandwidth.
+ </p>
+
+ <p class=return>
+ The method returns the number of bytes received, the number of bytes sent,
+-and the age of the socket object in seconds.
++and the age of the socket object in seconds.
+ </p>
+
++<!-- gettimeout +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
++
++<p class=name id="gettimeout">
++master:<b>gettimeout()</b><br>
++client:<b>gettimeout()</b><br>
++server:<b>gettimeout()</b>
++</p>
++
++<p class=description>
++Returns the current block timeout followed by the curent
++total timeout.
++</p>
++
++
+ <!-- listen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+-<p class=name id="listen">
++<p class=name id="listen">
+ master:<b>listen(</b>backlog<b>)</b>
+ </p>
+
+ <p class=description>
+ Specifies the socket is willing to receive connections, transforming the
+-object into a server object. Server objects support the
+-<a href=#accept><tt>accept</tt></a>,
+-<a href=#getsockname><tt>getsockname</tt></a>,
+-<a href=#setoption><tt>setoption</tt></a>,
+-<a href=#settimeout><tt>settimeout</tt></a>,
+-and <a href=#close><tt>close</tt></a> methods.
++object into a server object. Server objects support the
++<a href=#accept><tt>accept</tt></a>,
++<a href=#getsockname><tt>getsockname</tt></a>,
++<a href=#setoption><tt>setoption</tt></a>,
++<a href=#settimeout><tt>settimeout</tt></a>,
++and <a href=#close><tt>close</tt></a> methods.
+ </p>
+
+ <p class=parameters>
+-The parameter <tt>backlog</tt> specifies the number of client
++The parameter <tt>backlog</tt> specifies the number of client
+ connections that can
+ be queued waiting for service. If the queue is full and another client
+ attempts connection, the connection is refused.
+@@ -310,11 +354,11 @@ client:<b>receive(</b>[pattern [, prefix]]<b>)</b>
+
+ <p class=description>
+ Reads data from a client object, according to the specified <em>read
+-pattern</em>. Patterns follow the Lua file I/O format, and the difference in performance between all patterns is negligible.
++pattern</em>. Patterns follow the Lua file I/O format, and the difference in performance between all patterns is negligible.
+ </p>
+
+ <p class=parameters>
+-<tt>Pattern</tt> can be any of the following:
++<tt>Pattern</tt> can be any of the following:
+ </p>
+
+ <ul>
+@@ -325,7 +369,7 @@ terminated by a LF character (ASCII&nbsp;10), optionally preceded by a
+ CR character (ASCII&nbsp;13). The CR and LF characters are not included in
+ the returned line. In fact, <em>all</em> CR characters are
+ ignored by the pattern. This is the default pattern;
+-<li> <tt>number</tt>: causes the method to read a specified <tt>number</tt>
++<li> <tt>number</tt>: causes the method to read a specified <tt>number</tt>
+ of bytes from the socket.
+ </ul>
+
+@@ -347,10 +391,10 @@ closed before the transmission was completed or the string
+ <p class=note>
+ <b>Important note</b>: This function was changed <em>severely</em>. It used
+ to support multiple patterns (but I have never seen this feature used) and
+-now it doesn't anymore. Partial results used to be returned in the same
++now it doesn't anymore. Partial results used to be returned in the same
+ way as successful results. This last feature violated the idea that all
+ functions should return <tt><b>nil</b></tt> on error. Thus it was changed
+-too.
++too.
+ </p>
+
+ <!-- send +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+@@ -366,7 +410,7 @@ Sends <tt>data</tt> through client object.
+ <p class=parameters>
+ <tt>Data</tt> is the string to be sent. The optional arguments
+ <tt>i</tt> and <tt>j</tt> work exactly like the standard
+-<tt>string.sub</tt> Lua function to allow the selection of a
++<tt>string.sub</tt> Lua function to allow the selection of a
+ substring to be sent.
+ </p>
+
+@@ -385,10 +429,10 @@ there was a timeout during the operation.
+ </p>
+
+ <p class=note>
+-Note: Output is <em>not</em> buffered. For small strings,
+-it is always better to concatenate them in Lua
+-(with the '<tt>..</tt>' operator) and send the result in one call
+-instead of calling the method several times.
++Note: Output is <em>not</em> buffered. For small strings,
++it is always better to concatenate them in Lua
++(with the '<tt>..</tt>' operator) and send the result in one call
++instead of calling the method several times.
+ </p>
+
+ <!-- setoption ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+@@ -400,12 +444,12 @@ server:<b>setoption(</b>option [, value]<b>)</b>
+
+ <p class=description>
+ Sets options for the TCP object. Options are only needed by low-level or
+-time-critical applications. You should only modify an option if you
+-are sure you need it.
++time-critical applications. You should only modify an option if you
++are sure you need it.
+ </p>
+
+ <p class=parameters>
+-<tt>Option</tt> is a string with the option name, and <tt>value</tt>
++<tt>Option</tt> is a string with the option name, and <tt>value</tt>
+ depends on the option being set:
+
+ <ul>
+@@ -413,7 +457,7 @@ depends on the option being set:
+ <li> '<tt>keepalive</tt>': Setting this option to <tt>true</tt> enables
+ the periodic transmission of messages on a connected socket. Should the
+ connected party fail to respond to these messages, the connection is
+-considered broken and processes using the socket are notified;
++considered broken and processes using the socket are notified;
+
+ <li> '<tt>linger</tt>': Controls the action taken when unsent data are
+ queued on a socket and a close is performed. The value is a table with a
+@@ -424,13 +468,13 @@ it is able to transmit the data or until '<tt>timeout</tt>' has passed. If
+ '<tt>on</tt>' is <tt>false</tt> and a close is issued, the system will
+ process the close in a manner that allows the process to continue as
+ quickly as possible. I do not advise you to set this to anything other than
+-zero;
++zero;
+
+ <li> '<tt>reuseaddr</tt>': Setting this option indicates that the rules
+-used in validating addresses supplied in a call to
++used in validating addresses supplied in a call to
+ <a href=#bind><tt>bind</tt></a> should allow reuse of local addresses;
+
+-<li> '<tt>tcp-nodelay</tt>': Setting this option to <tt>true</tt>
++<li> '<tt>tcp-nodelay</tt>': Setting this option to <tt>true</tt>
+ disables the Nagle's algorithm for the connection;
+
+ <li> '<tt>ipv6-v6only</tt>':
+@@ -447,34 +491,6 @@ followed by an error message otherwise.
+ Note: The descriptions above come from the man pages.
+ </p>
+
+-<!-- getoption ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+-
+-<p class=name id="getoption">
+-client:<b>getoption(</b>option)</b><br>
+-server:<b>getoption(</b>option)</b>
+-</p>
+-
+-<p class=description>
+-Gets options for the TCP object.
+-See <a href=#setoption><tt>setoption</tt></a> for description of the
+-option names and values.
+-</p>
+-
+-<p class=parameters>
+-<tt>Option</tt> is a string with the option name.
+-<ul>
+-
+-<li> '<tt>keepalive</tt>'
+-<li> '<tt>linger</tt>'
+-<li> '<tt>reuseaddr</tt>'
+-<li> '<tt>tcp-nodelay</tt>'
+-</ul>
+-
+-<p class=return>
+-The method returns the option <tt>value</tt> in case of success, or
+-<b><tt>nil</tt></b> followed by an error message otherwise.
+-</p>
+-
+ <!-- setstats +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <p class=name id="setstats">
+@@ -485,7 +501,7 @@ server:<b>setstats(</b>received, sent, age<b>)</b><br>
+
+ <p class=description>
+ Resets accounting information on the socket, useful for throttling
+-of bandwidth.
++of bandwidth.
+ </p>
+
+ <p class=parameters>
+@@ -495,7 +511,7 @@ of bandwidth.
+ </p>
+
+ <p class=return>
+-The method returns 1 in case of success and <tt><b>nil</b></tt> otherwise.
++The method returns 1 in case of success and <tt><b>nil</b></tt> otherwise.
+ </p>
+
+ <!-- settimeout +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+@@ -509,8 +525,8 @@ server:<b>settimeout(</b>value [, mode]<b>)</b>
+ <p class=description>
+ Changes the timeout values for the object. By default,
+ all I/O operations are blocking. That is, any call to the methods
+-<a href=#send><tt>send</tt></a>,
+-<a href=#receive><tt>receive</tt></a>, and
++<a href=#send><tt>send</tt></a>,
++<a href=#receive><tt>receive</tt></a>, and
+ <a href=#accept><tt>accept</tt></a>
+ will block indefinitely, until the operation completes. The
+ <tt>settimeout</tt> method defines a limit on the amount of time the
+@@ -521,7 +537,7 @@ time has elapsed, the affected methods give up and fail with an error code.
+ <p class=parameters>
+ The amount of time to wait is specified as the
+ <tt>value</tt> parameter, in seconds. There are two timeout modes and
+-both can be used together for fine tuning:
++both can be used together for fine tuning:
+ </p>
+
+ <ul>
+@@ -532,7 +548,7 @@ default mode;</li>
+
+ <li> '<tt>t</tt>': <em>total</em> timeout. Specifies the upper limit on
+ the amount of time LuaSocket can block a Lua script before returning from
+-a call.</li>
++a call.</li>
+ </ul>
+
+ <p class=parameters>
+@@ -562,7 +578,7 @@ client:<b>shutdown(</b>mode<b>)</b><br>
+ </p>
+
+ <p class=description>
+-Shuts down part of a full-duplex connection.
++Shuts down part of a full-duplex connection.
+ </p>
+
+ <p class=parameters>
+@@ -579,66 +595,107 @@ This is the default mode;
+ This function returns 1.
+ </p>
+
+-<!-- dirty +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
++<!-- setfd +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+-<p class=name id="dirty">
+-master:<b>dirty()</b><br>
+-client:<b>dirty()</b><br>
+-server:<b>dirty()</b>
++<p class=name id="setfd">
++master:<b>setfd(</b>fd<b>)</b><br>
++client:<b>setfd(</b>fd<b>)</b><br>
++server:<b>setfd(</b>fd<b>)</b>
+ </p>
+
+ <p class=description>
+-Check the read buffer status.
++Sets the underling socket descriptor or handle associated to the object. The current one is simply replaced, not closed, and no other change to the object state is made.
+ </p>
+
+ <p class=return>
+-Returns <tt>true</tt> if there is any data in the read buffer, <tt>false</tt> otherwise.
++No return value.
+ </p>
+
+ <p class=note>
+-Note: <b>This is an internal method, any use is unlikely to be portable.</b>
++Note: <b>This is an internal method. Unlikely to be
++portable. Use at your own risk. </b>
+ </p>
+
+-<!-- getfd +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
++<!-- socket.tcp +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+-<p class=name id="getfd">
+-master:<b>getfd()</b><br>
+-client:<b>getfd()</b><br>
+-server:<b>getfd()</b>
++<p class=name id="socket.tcp">
++socket.<b>tcp()</b>
+ </p>
+
+ <p class=description>
+-Returns the underling socket descriptor or handle associated to the object.
+-</p>
++Creates and returns an TCP master object. A master object can
++be transformed into a server object with the method
++<a href=#listen><tt>listen</tt></a> (after a call to <a
++href=#bind><tt>bind</tt></a>) or into a client object with
++the method <a href=#connect><tt>connect</tt></a>. The only other
++method supported by a master object is the
++<a href=#close><tt>close</tt></a> method.</p>
+
+ <p class=return>
+-The descriptor or handle. In case the object has been closed, the return will be -1.
++In case of success, a new master object is returned. In case of error,
++<b><tt>nil</tt></b> is returned, followed by an error message.
+ </p>
+
+ <p class=note>
+-Note: <b>This is an internal method, any use is unlikely to be portable.</b>
++Note: The choice between IPv4 and IPv6 happens during a call to
++<a href=#bind><tt>bind</tt></a> or <a
++href=#bind><tt>connect</tt></a>, depending on the address
++family obtained from the resolver.
+ </p>
+
+-<!-- setfd +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
++<p class=note>
++Note: Before the choice between IPv4 and IPv6 happens,
++the internal socket object is invalid and therefore <a
++href=#setoption><tt>setoption</tt></a> will fail.
++</p>
+
+-<p class=name id="setfd">
+-master:<b>setfd(</b>fd<b>)</b><br>
+-client:<b>setfd(</b>fd<b>)</b><br>
+-server:<b>setfd(</b>fd<b>)</b>
++<!-- socket.tcp +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
++
++<p class=name id="socket.tcp4">
++socket.<b>tcp4()</b>
+ </p>
+
+ <p class=description>
+-Sets the underling socket descriptor or handle associated to the object. The current one is simply replaced, not closed, and no other change to the object state is made.
++Creates and returns an IPv4 TCP master object. A master object can
++be transformed into a server object with the method
++<a href=#listen><tt>listen</tt></a> (after a call to <a
++href=#bind><tt>bind</tt></a>) or into a client object with
++the method <a href=#connect><tt>connect</tt></a>. The only other
++method supported by a master object is the
++<a href=#close><tt>close</tt></a> method.</p>
++
++<p class=return>
++In case of success, a new master object is returned. In case of error,
++<b><tt>nil</tt></b> is returned, followed by an error message.
++</p>
++
++<!-- socket.tcp6 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
++
++<p class=name id="socket.tcp6">
++socket.<b>tcp6()</b>
+ </p>
+
++<p class=description>
++Creates and returns an IPv6 TCP master object. A master object can
++be transformed into a server object with the method
++<a href=#listen><tt>listen</tt></a> (after a call to <a
++href=#bind><tt>bind</tt></a>) or into a client object with
++the method <a href=#connect><tt>connect</tt></a>. The only other
++method supported by a master object is the
++<a href=#close><tt>close</tt></a> method.</p>
++
+ <p class=return>
+-No return value.
++In case of success, a new master object is returned. In case of error,
++<b><tt>nil</tt></b> is returned, followed by an error message.
+ </p>
+
+ <p class=note>
+-Note: <b>This is an internal method, any use is unlikely to be portable.</b>
++Note: The TCP object returned will have the option
++"<tt>ipv6-v6only</tt>" set to <tt><b>true</b></tt>.
+ </p>
+
++
++
+ <!-- footer +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <div class=footer>
+diff --git a/doc/udp.html b/doc/udp.html
+index e5b0ad0..4618aad 100644
+--- a/doc/udp.html
++++ b/doc/udp.html
+@@ -4,7 +4,7 @@
+
+ <head>
+ <meta name="description" content="LuaSocket: The UDP support">
+-<meta name="keywords" content="Lua, LuaSocket, Socket, UDP, Library, Network, Support">
++<meta name="keywords" content="Lua, LuaSocket, Socket, UDP, Library, Network, Support">
+ <title>LuaSocket: UDP support</title>
+ <link rel="stylesheet" href="reference.css" type="text/css">
+ </head>
+@@ -28,7 +28,7 @@
+ <a href="index.html#download">download</a> &middot;
+ <a href="installation.html">installation</a> &middot;
+ <a href="introduction.html">introduction</a> &middot;
+-<a href="reference.html">reference</a>
++<a href="reference.html">reference</a>
+ </p>
+ </center>
+ <hr>
+@@ -37,74 +37,7 @@
+
+ <!-- udp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+-<h2 id="udp">UDP</h2>
+-
+-<!-- socket.udp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+-
+-<p class="name" id="socket.udp">
+-socket.<b>udp()</b>
+-</p>
+-
+-<p class="description">
+-Creates and returns an unconnected IPv4 UDP object.
+-Unconnected objects support the
+-<a href="#sendto"><tt>sendto</tt></a>,
+-<a href="#receive"><tt>receive</tt></a>,
+-<a href="#receivefrom"><tt>receivefrom</tt></a>,
+-<a href="#getoption"><tt>getoption</tt></a>,
+-<a href="#getsockname"><tt>getsockname</tt></a>,
+-<a href="#setoption"><tt>setoption</tt></a>,
+-<a href="#settimeout"><tt>settimeout</tt></a>,
+-<a href="#setpeername"><tt>setpeername</tt></a>,
+-<a href="#setsockname"><tt>setsockname</tt></a>, and
+-<a href="#close"><tt>close</tt></a>.
+-The <a href="#setpeername"><tt>setpeername</tt></a>
+-is used to connect the object.
+-</p>
+-
+-<p class="return">
+-In case of success, a new unconnected UDP object
+-returned. In case of error, <b><tt>nil</tt></b> is returned, followed by
+-an error message.
+-</p>
+-
+-<!-- socket.udp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+-
+-<p class="name" id="socket.udp6">
+-socket.<b>udp6()</b>
+-</p>
+-
+-<p class="description">
+-Creates and returns an unconnected IPv6 UDP object.
+-Unconnected objects support the
+-<a href="#sendto"><tt>sendto</tt></a>,
+-<a href="#receive"><tt>receive</tt></a>,
+-<a href="#receivefrom"><tt>receivefrom</tt></a>,
+-<a href="#getoption"><tt>getoption</tt></a>,
+-<a href="#getsockname"><tt>getsockname</tt></a>,
+-<a href="#setoption"><tt>setoption</tt></a>,
+-<a href="#settimeout"><tt>settimeout</tt></a>,
+-<a href="#setpeername"><tt>setpeername</tt></a>,
+-<a href="#setsockname"><tt>setsockname</tt></a>, and
+-<a href="#close"><tt>close</tt></a>.
+-The <a href="#setpeername"><tt>setpeername</tt></a>
+-is used to connect the object.
+-</p>
+-
+-<p class="return">
+-In case of success, a new unconnected UDP object
+-returned. In case of error, <b><tt>nil</tt></b> is returned, followed by
+-an error message.
+-</p>
+-
+-<p class=note>
+-Note: The TCP object returned will have the option
+-"<tt>ipv6-v6only</tt>" set to <tt><b>true</b></tt>.
+-</p>
+-
+-
+-
+-<!-- close +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
++<h2 id="udp">UDP</h2>
+
+ <!-- close +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+@@ -129,6 +62,40 @@ Garbage-collected objects are automatically closed before
+ destruction, though.
+ </p>
+
++<!-- getoption +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
++
++<p class="name" id="getoption">
++connected:<b>getoption()</b><br>
++unconnected:<b>getoption()</b>
++</p>
++
++<p class="description">
++Gets an option value from the UDP object.
++See <a href=#setoption><tt>setoption</tt></a> for
++description of the option names and values.
++</p>
++
++<p class="parameters"><tt>Option</tt> is a string with the option name.
++<ul>
++<li> '<tt>dontroute</tt>'
++<li> '<tt>broadcast</tt>'
++<li> '<tt>reuseaddr</tt>'
++<li> '<tt>reuseport</tt>'
++<li> '<tt>ip-multicast-loop</tt>'
++<li> '<tt>ipv6-v6only</tt>'
++<li> '<tt>ip-multicast-if</tt>'
++<li> '<tt>ip-multicast-ttl</tt>'
++<li> '<tt>ip-add-membership</tt>'
++<li> '<tt>ip-drop-membership</tt>'
++</ul>
++</p>
++
++<p class=return>
++The method returns the option <tt>value</tt> in case of
++success, or
++<b><tt>nil</tt></b> followed by an error message otherwise.
++</p>
++
+ <!-- getpeername +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <p class="name" id="getpeername">
+@@ -142,10 +109,10 @@ associated with a connected UDP object.
+
+
+ <p class=return>
+-Returns a string with the IP address of the peer, the
+-port number that peer is using for the connection,
+-and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>").
+-In case of error, the method returns <b><tt>nil</tt></b>.
++Returns a string with the IP address of the peer, the
++port number that peer is using for the connection,
++and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>").
++In case of error, the method returns <b><tt>nil</tt></b>.
+ </p>
+
+ <p class="note">
+@@ -165,9 +132,9 @@ Returns the local address information associated to the object.
+
+
+ <p class=return>
+-The method returns a string with local IP address, a number with
+-the local port,
+-and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>").
++The method returns a string with local IP address, a number with
++the local port,
++and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>").
+ In case of error, the method returns <b><tt>nil</tt></b>.
+ </p>
+
+@@ -179,6 +146,18 @@ first time (in which case it is bound to an ephemeral port and the
+ wild-card address).
+ </p>
+
++<!-- gettimeout +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
++
++<p class=name id="gettimeout">
++connected:<b>settimeout(</b>value<b>)</b><br>
++unconnected:<b>settimeout(</b>value<b>)</b>
++</p>
++
++<p class=description>
++Returns the current timeout value.
++</p>
++
++
+ <!-- receive +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <p class="name" id="receive">
+@@ -199,9 +178,12 @@ specifies the maximum size of the datagram to be retrieved. If
+ there are more than <tt>size</tt> bytes available in the datagram,
+ the excess bytes are discarded. If there are less then
+ <tt>size</tt> bytes available in the current datagram, the
+-available bytes are returned. If <tt>size</tt> is omitted, the
+-maximum datagram size is used (which is currently limited by the
+-implementation to 8192 bytes).
++available bytes are returned.
++If <tt>size</tt> is omitted, the
++compile-time constant <a
++href=socket.html#datagramsize><tt>socket._DATAGRAMSIZE</tt></a> is used
++(it defaults to 8192 bytes). Larger sizes will cause a
++temporary buffer to be allocated for the operation.
+ </p>
+
+ <p class="return">
+@@ -217,46 +199,12 @@ unconnected:<b>receivefrom(</b>[size]<b>)</b>
+ </p>
+
+ <p class="description">
+-Works exactly as the <a href="#receive"><tt>receive</tt></a>
++Works exactly as the <a href="#receive"><tt>receive</tt></a>
+ method, except it returns the IP
+ address and port as extra return values (and is therefore slightly less
+ efficient).
+ </p>
+
+-<!-- getoption +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+-
+-<p class="name" id="getoption">
+-connected:<b>getoption()</b><br>
+-unconnected:<b>getoption()</b>
+-</p>
+-
+-<p class="description">
+-Gets an option value from the UDP object.
+-See <a href=#setoption><tt>setoption</tt></a> for
+-description of the option names and values.
+-</p>
+-
+-<p class="parameters"><tt>Option</tt> is a string with the option name.
+-<ul>
+-<li> '<tt>dontroute</tt>'
+-<li> '<tt>broadcast</tt>'
+-<li> '<tt>reuseaddr</tt>'
+-<li> '<tt>reuseport</tt>'
+-<li> '<tt>ip-multicast-loop</tt>'
+-<li> '<tt>ipv6-v6only</tt>'
+-<li> '<tt>ip-multicast-if</tt>'
+-<li> '<tt>ip-multicast-ttl</tt>'
+-<li> '<tt>ip-add-membership</tt>'
+-<li> '<tt>ip-drop-membership</tt>'
+-</ul>
+-</p>
+-
+-<p class=return>
+-The method returns the option <tt>value</tt> in case of
+-success, or
+-<b><tt>nil</tt></b> followed by an error message otherwise.
+-</p>
+-
+ <!-- send ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <p class="name" id="send">
+@@ -268,7 +216,7 @@ Sends a datagram to the UDP peer of a connected object.
+ </p>
+
+ <p class="parameters">
+-<tt>Datagram</tt> is a string with the datagram contents.
++<tt>Datagram</tt> is a string with the datagram contents.
+ The maximum datagram size for UDP is 64K minus IP layer overhead.
+ However datagrams larger than the link layer packet size will be
+ fragmented, which may deteriorate performance and/or reliability.
+@@ -298,11 +246,11 @@ Sends a datagram to the specified IP address and port number.
+
+ <p class="parameters">
+ <tt>Datagram</tt> is a string with the
+-datagram contents.
++datagram contents.
+ The maximum datagram size for UDP is 64K minus IP layer overhead.
+ However datagrams larger than the link layer packet size will be
+ fragmented, which may deteriorate performance and/or reliability.
+-<tt>Ip</tt> is the IP address of the recipient.
++<tt>Ip</tt> is the IP address of the recipient.
+ Host names are <em>not</em> allowed for performance reasons.
+
+ <tt>Port</tt> is the port number at the recipient.
+@@ -320,6 +268,75 @@ refuses to send a message to the specified address (i.e. no
+ interface accepts the address).
+ </p>
+
++<!-- setoption +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
++
++<p class="name" id="setoption">
++connected:<b>setoption(</b>option [, value]<b>)</b><br>
++unconnected:<b>setoption(</b>option [, value]<b>)</b>
++</p>
++
++<p class="description">
++Sets options for the UDP object. Options are
++only needed by low-level or time-critical applications. You should
++only modify an option if you are sure you need it.</p>
++<p class="parameters"><tt>Option</tt> is a string with the option
++name, and <tt>value</tt> depends on the option being set:
++</p>
++
++<ul>
++<li> '<tt>dontroute</tt>': Indicates that outgoing
++messages should bypass the standard routing facilities.
++Receives a boolean value;
++<li> '<tt>broadcast</tt>': Requests permission to send
++broadcast datagrams on the socket.
++Receives a boolean value;
++<li> '<tt>reuseaddr</tt>': Indicates that the rules used in
++validating addresses supplied in a <tt>bind()</tt> call
++should allow reuse of local addresses.
++Receives a boolean value;
++<li> '<tt>reuseport</tt>': Allows completely duplicate
++bindings by multiple processes if they all set
++'<tt>reuseport</tt>' before binding the port.
++Receives a boolean value;
++<li> '<tt>ip-multicast-loop</tt>':
++Specifies whether or not a copy of an outgoing multicast
++datagram is delivered to the sending host as long as it is a
++member of the multicast group.
++Receives a boolean value;
++<li> '<tt>ipv6-v6only</tt>':
++Specifies whether to restrict <tt>inet6</tt> sockets to
++sending and receiving only IPv6 packets.
++Receive a boolean value;
++<li> '<tt>ip-multicast-if</tt>':
++Sets the interface over which outgoing multicast datagrams
++are sent.
++Receives an IP address;
++<li> '<tt>ip-multicast-ttl</tt>':
++Sets the Time To Live in the IP header for outgoing
++multicast datagrams.
++Receives a number;
++<li> '<tt>ip-add-membership</tt>':
++Joins the multicast group specified.
++Receives a table with fields
++<tt>multiaddr</tt> and <tt>interface</tt>, each containing an
++IP address;
++<li> '<tt>ip-drop-membership</tt>': Leaves the multicast
++group specified.
++Receives a table with fields
++<tt>multiaddr</tt> and <tt>interface</tt>, each containing an
++IP address.
++</ul>
++
++<p class="return">
++The method returns 1 in case of success, or
++<b><tt>nil</tt></b> followed by an error message otherwise.
++</p>
++
++<p class=note>
++Note: The descriptions above come from the man pages.
++</p>
++
++
+ <!-- setpeername +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <p class="name" id="setpeername">
+@@ -337,9 +354,9 @@ object or vice versa.
+ For connected objects, outgoing datagrams
+ will be sent to the specified peer, and datagrams received from
+ other peers will be discarded by the OS. Connected UDP objects must
+-use the <a href="#send"><tt>send</tt></a> and
+-<a href="#receive"><tt>receive</tt></a> methods instead of
+-<a href="#sendto"><tt>sendto</tt></a> and
++use the <a href="#send"><tt>send</tt></a> and
++<a href="#receive"><tt>receive</tt></a> methods instead of
++<a href="#sendto"><tt>sendto</tt></a> and
+ <a href="#receivefrom"><tt>receivefrom</tt></a>.
+ </p>
+
+@@ -406,74 +423,6 @@ system or explicitly by <tt>setsockname</tt>, it cannot be
+ changed.
+ </p>
+
+-<!-- setoption +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+-
+-<p class="name" id="setoption">
+-connected:<b>setoption(</b>option [, value]<b>)</b><br>
+-unconnected:<b>setoption(</b>option [, value]<b>)</b>
+-</p>
+-
+-<p class="description">
+-Sets options for the UDP object. Options are
+-only needed by low-level or time-critical applications. You should
+-only modify an option if you are sure you need it.</p>
+-<p class="parameters"><tt>Option</tt> is a string with the option
+-name, and <tt>value</tt> depends on the option being set:
+-</p>
+-
+-<ul>
+-<li> '<tt>dontroute</tt>': Indicates that outgoing
+-messages should bypass the standard routing facilities.
+-Receives a boolean value;
+-<li> '<tt>broadcast</tt>': Requests permission to send
+-broadcast datagrams on the socket.
+-Receives a boolean value;
+-<li> '<tt>reuseaddr</tt>': Indicates that the rules used in
+-validating addresses supplied in a <tt>bind()</tt> call
+-should allow reuse of local addresses.
+-Receives a boolean value;
+-<li> '<tt>reuseport</tt>': Allows completely duplicate
+-bindings by multiple processes if they all set
+-'<tt>reuseport</tt>' before binding the port.
+-Receives a boolean value;
+-<li> '<tt>ip-multicast-loop</tt>':
+-Specifies whether or not a copy of an outgoing multicast
+-datagram is delivered to the sending host as long as it is a
+-member of the multicast group.
+-Receives a boolean value;
+-<li> '<tt>ipv6-v6only</tt>':
+-Specifies whether to restrict <tt>inet6</tt> sockets to
+-sending and receiving only IPv6 packets.
+-Receive a boolean value;
+-<li> '<tt>ip-multicast-if</tt>':
+-Sets the interface over which outgoing multicast datagrams
+-are sent.
+-Receives an IP address;
+-<li> '<tt>ip-multicast-ttl</tt>':
+-Sets the Time To Live in the IP header for outgoing
+-multicast datagrams.
+-Receives a number;
+-<li> '<tt>ip-add-membership</tt>':
+-Joins the multicast group specified.
+-Receives a table with fields
+-<tt>multiaddr</tt> and <tt>interface</tt>, each containing an
+-IP address;
+-<li> '<tt>ip-drop-membership</tt>': Leaves the multicast
+-group specified.
+-Receives a table with fields
+-<tt>multiaddr</tt> and <tt>interface</tt>, each containing an
+-IP address.
+-</ul>
+-
+-<p class="return">
+-The method returns 1 in case of success, or
+-<b><tt>nil</tt></b> followed by an error message otherwise.
+-</p>
+-
+-<p class=note>
+-Note: The descriptions above come from the man pages.
+-</p>
+-
+ <!-- settimeout +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <p class="name" id="settimeout">
+@@ -482,14 +431,14 @@ unconnected:<b>settimeout(</b>value<b>)</b>
+ </p>
+
+ <p class="description">
+-Changes the timeout values for the object. By default, the
+-<a href="#receive"><tt>receive</tt></a> and
+-<a href="#receivefrom"><tt>receivefrom</tt></a>
++Changes the timeout values for the object. By default, the
++<a href="#receive"><tt>receive</tt></a> and
++<a href="#receivefrom"><tt>receivefrom</tt></a>
+ operations are blocking. That is, any call to the methods will block
+ indefinitely, until data arrives. The <tt>settimeout</tt> function defines
+ a limit on the amount of time the functions can block. When a timeout is
+ set and the specified amount of time has elapsed, the affected methods
+-give up and fail with an error code.
++give up and fail with an error code.
+ </p>
+
+ <p class="parameters">
+@@ -514,6 +463,114 @@ all other method names already contained verbs making their
+ imperative nature obvious.
+ </p>
+
++<!-- socket.udp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
++
++<p class="name" id="socket.udp">
++socket.<b>udp()</b>
++</p>
++
++<p class="description">
++Creates and returns an unconnected UDP object.
++Unconnected objects support the
++<a href="#sendto"><tt>sendto</tt></a>,
++<a href="#receive"><tt>receive</tt></a>,
++<a href="#receivefrom"><tt>receivefrom</tt></a>,
++<a href="#getoption"><tt>getoption</tt></a>,
++<a href="#getsockname"><tt>getsockname</tt></a>,
++<a href="#setoption"><tt>setoption</tt></a>,
++<a href="#settimeout"><tt>settimeout</tt></a>,
++<a href="#setpeername"><tt>setpeername</tt></a>,
++<a href="#setsockname"><tt>setsockname</tt></a>, and
++<a href="#close"><tt>close</tt></a>.
++The <a href="#setpeername"><tt>setpeername</tt></a>
++is used to connect the object.
++</p>
++
++<p class="return">
++In case of success, a new unconnected UDP object
++returned. In case of error, <b><tt>nil</tt></b> is returned, followed by
++an error message.
++</p>
++
++<p class=note>
++Note: The choice between IPv4 and IPv6 happens during a call to
++<a href=#sendto><tt>sendto</tt></a>, <a
++href=#setpeername><tt>setpeername</tt></a>, or <a
++href=#setsockname><tt>sockname</tt></a>, depending on the address
++family obtained from the resolver.
++</p>
++
++<p class=note>
++Note: Before the choice between IPv4 and IPv6 happens,
++the internal socket object is invalid and therefore <a
++href=#setoption><tt>setoption</tt></a> will fail.
++</p>
++
++<!-- socket.udp4 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
++
++<p class="name" id="socket.udp">
++socket.<b>udp4()</b>
++</p>
++
++<p class="description">
++Creates and returns an unconnected IPv4 UDP object.
++Unconnected objects support the
++<a href="#sendto"><tt>sendto</tt></a>,
++<a href="#receive"><tt>receive</tt></a>,
++<a href="#receivefrom"><tt>receivefrom</tt></a>,
++<a href="#getoption"><tt>getoption</tt></a>,
++<a href="#getsockname"><tt>getsockname</tt></a>,
++<a href="#setoption"><tt>setoption</tt></a>,
++<a href="#settimeout"><tt>settimeout</tt></a>,
++<a href="#setpeername"><tt>setpeername</tt></a>,
++<a href="#setsockname"><tt>setsockname</tt></a>, and
++<a href="#close"><tt>close</tt></a>.
++The <a href="#setpeername"><tt>setpeername</tt></a>
++is used to connect the object.
++</p>
++
++<p class="return">
++In case of success, a new unconnected UDP object
++returned. In case of error, <b><tt>nil</tt></b> is returned, followed by
++an error message.
++</p>
++
++<!-- socket.udp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
++
++<p class="name" id="socket.udp6">
++socket.<b>udp6()</b>
++</p>
++
++<p class="description">
++Creates and returns an unconnected IPv6 UDP object.
++Unconnected objects support the
++<a href="#sendto"><tt>sendto</tt></a>,
++<a href="#receive"><tt>receive</tt></a>,
++<a href="#receivefrom"><tt>receivefrom</tt></a>,
++<a href="#getoption"><tt>getoption</tt></a>,
++<a href="#getsockname"><tt>getsockname</tt></a>,
++<a href="#setoption"><tt>setoption</tt></a>,
++<a href="#settimeout"><tt>settimeout</tt></a>,
++<a href="#setpeername"><tt>setpeername</tt></a>,
++<a href="#setsockname"><tt>setsockname</tt></a>, and
++<a href="#close"><tt>close</tt></a>.
++The <a href="#setpeername"><tt>setpeername</tt></a>
++is used to connect the object.
++</p>
++
++<p class="return">
++In case of success, a new unconnected UDP object
++returned. In case of error, <b><tt>nil</tt></b> is returned, followed by
++an error message.
++</p>
++
++<p class=note>
++Note: The TCP object returned will have the option
++"<tt>ipv6-v6only</tt>" set to <tt><b>true</b></tt>.
++</p>
++
++
++
+ <!-- footer ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <div class=footer>
+@@ -524,7 +581,7 @@ imperative nature obvious.
+ <a href="index.html#download">download</a> &middot;
+ <a href="installation.html">installation</a> &middot;
+ <a href="introduction.html">introduction</a> &middot;
+-<a href="reference.html">reference</a>
++<a href="reference.html">reference</a>
+ </p>
+ <p>
+ <small>
+diff --git a/etc/dispatch.lua b/etc/dispatch.lua
+index cab7f59..2485415 100644
+--- a/etc/dispatch.lua
++++ b/etc/dispatch.lua
+@@ -5,6 +5,7 @@
+ -----------------------------------------------------------------------------
+ local base = _G
+ local table = require("table")
++local string = require("string")
+ local socket = require("socket")
+ local coroutine = require("coroutine")
+ module("dispatch")
+@@ -43,26 +44,32 @@ end
+ -----------------------------------------------------------------------------
+ -- Mega hack. Don't try to do this at home.
+ -----------------------------------------------------------------------------
+--- we can't yield across calls to protect, so we rewrite it with coxpcall
++-- we can't yield across calls to protect on Lua 5.1, so we rewrite it with
++-- coroutines
+ -- make sure you don't require any module that uses socket.protect before
+ -- loading our hack
+-function socket.protect(f)
+- return function(...)
+- local co = coroutine.create(f)
+- while true do
+- local results = {coroutine.resume(co, ...)}
+- local status = table.remove(results, 1)
+- if not status then
+- if base.type(results[1]) == 'table' then
+- return nil, results[1][1]
+- else base.error(results[1]) end
+- end
+- if coroutine.status(co) == "suspended" then
+- arg = {coroutine.yield(base.unpack(results))}
++if string.sub(base._VERSION, -3) == "5.1" then
++ local function _protect(co, status, ...)
++ if not status then
++ local msg = ...
++ if base.type(msg) == 'table' then
++ return nil, msg[1]
+ else
+- return base.unpack(results)
++ base.error(msg, 0)
+ end
+ end
++ if coroutine.status(co) == "suspended" then
++ return _protect(co, coroutine.resume(co, coroutine.yield(...)))
++ else
++ return ...
++ end
++ end
++
++ function socket.protect(f)
++ return function(...)
++ local co = coroutine.create(f)
++ return _protect(co, coroutine.resume(co, ...))
++ end
+ end
+ end
+
+diff --git a/linux.cmd b/linux.cmd
+index bd59adc..6c6636b 100644
+--- a/linux.cmd
++++ b/linux.cmd
+@@ -1 +1 @@
+-make PLAT=linux DEBUG=DEBUG LUAINC_linux_base=/home/diego/build/linux/include LUAPREFIX_linux=/home/diego/build/linux
++make PLAT=linux DEBUG=DEBUG LUAINC_linux_base=/home/diego/build/ubuntu/include LUAPREFIX_linux=/home/diego/build/ubuntu
+diff --git a/luasocket-scm-0.rockspec b/luasocket-scm-0.rockspec
+index f86567b..352a497 100644
+--- a/luasocket-scm-0.rockspec
++++ b/luasocket-scm-0.rockspec
+@@ -50,13 +50,12 @@ local function make_plat(plat)
+ }
+ local modules = {
+ ["socket.core"] = {
+- sources = { "src/luasocket.c", "src/timeout.c", "src/buffer.c", "src/io.c", "src/auxiliar.c",
+- "src/options.c", "src/inet.c", "src/except.c", "src/select.c", "src/tcp.c", "src/udp.c" },
++ sources = { "src/luasocket.c", "src/timeout.c", "src/buffer.c", "src/io.c", "src/auxiliar.c", "src/options.c", "src/inet.c", "src/except.c", "src/select.c", "src/tcp.c", "src/udp.c", "src/compat.c" },
+ defines = defines[plat],
+ incdir = "/src"
+ },
+- ["mime.core"] = {
+- sources = { "src/mime.c" },
++ ["mime.core"] = {
++ sources = { "src/mime.c", "src/compat.c" },
+ defines = defines[plat],
+ incdir = "/src"
+ },
+@@ -73,14 +72,12 @@ local function make_plat(plat)
+ if plat == "unix" or plat == "macosx" then
+ modules["socket.core"].sources[#modules["socket.core"].sources+1] = "src/usocket.c"
+ modules["socket.unix"] = {
+- sources = { "src/buffer.c", "src/auxiliar.c", "src/options.c", "src/timeout.c", "src/io.c",
+- "src/usocket.c", "src/unix.c" },
++ sources = { "src/buffer.c", "src/auxiliar.c", "src/options.c", "src/timeout.c", "src/io.c", "src/usocket.c", "src/unix.c" },
+ defines = defines[plat],
+ incdir = "/src"
+ }
+ modules["socket.serial"] = {
+- sources = { "src/buffer.c", "src/auxiliar.c", "src/options.c", "src/timeout.c",
+- "src/io.c", "src/usocket.c", "src/serial.c" },
++ sources = { "src/buffer.c", "src/auxiliar.c", "src/options.c", "src/timeout.c", "src/io.c", "src/usocket.c", "src/serial.c" },
+ defines = defines[plat],
+ incdir = "/src"
+ }
+diff --git a/makefile b/makefile
+index 04cd894..cc15b4e 100644
+--- a/makefile
++++ b/makefile
+@@ -5,12 +5,12 @@
+ # Targets:
+ # install install system independent support
+ # install-unix also install unix-only support
+-# install-both install for both lua5.1 and lua5.2
+-# install-both-unix also install unix-only
++# install-both install for lua51 lua52 lua53
++# install-both-unix also install unix-only
+ # print print the build settings
+
+ PLAT?= linux
+-PLATS= macosx linux win32 mingw
++PLATS= macosx linux win32 mingw freebsd solaris
+
+ all: $(PLAT)
+
+@@ -24,20 +24,26 @@ test:
+ lua test/hello.lua
+
+ install-both:
+- $(MAKE) clean
++ $(MAKE) clean
+ @cd src; $(MAKE) $(PLAT) LUAV=5.1
+ @cd src; $(MAKE) install LUAV=5.1
+- $(MAKE) clean
++ $(MAKE) clean
+ @cd src; $(MAKE) $(PLAT) LUAV=5.2
+ @cd src; $(MAKE) install LUAV=5.2
++ $(MAKE) clean
++ @cd src; $(MAKE) $(PLAT) LUAV=5.3
++ @cd src; $(MAKE) install LUAV=5.3
+
+ install-both-unix:
+- $(MAKE) clean
++ $(MAKE) clean
+ @cd src; $(MAKE) $(PLAT) LUAV=5.1
+ @cd src; $(MAKE) install-unix LUAV=5.1
+- $(MAKE) clean
++ $(MAKE) clean
+ @cd src; $(MAKE) $(PLAT) LUAV=5.2
+ @cd src; $(MAKE) install-unix LUAV=5.2
++ $(MAKE) clean
++ @cd src; $(MAKE) $(PLAT) LUAV=5.3
++ @cd src; $(MAKE) install-unix LUAV=5.3
+
+ .PHONY: test
+
+diff --git a/src/auxiliar.c b/src/auxiliar.c
+index de625e9..18fa8e4 100644
+--- a/src/auxiliar.c
++++ b/src/auxiliar.c
+@@ -26,7 +26,7 @@ void auxiliar_newclass(lua_State *L, const char *classname, luaL_Reg *func) {
+ luaL_newmetatable(L, classname); /* mt */
+ /* create __index table to place methods */
+ lua_pushstring(L, "__index"); /* mt,"__index" */
+- lua_newtable(L); /* mt,"__index",it */
++ lua_newtable(L); /* mt,"__index",it */
+ /* put class name into class metatable */
+ lua_pushstring(L, "class"); /* mt,"__index",it,"class" */
+ lua_pushstring(L, classname); /* mt,"__index",it,"class",classname */
+@@ -84,7 +84,7 @@ int auxiliar_checkboolean(lua_State *L, int objidx) {
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* Return userdata pointer if object belongs to a given class, abort with
++* Return userdata pointer if object belongs to a given class, abort with
+ * error otherwise
+ \*-------------------------------------------------------------------------*/
+ void *auxiliar_checkclass(lua_State *L, const char *classname, int objidx) {
+@@ -98,7 +98,7 @@ void *auxiliar_checkclass(lua_State *L, const char *classname, int objidx) {
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* Return userdata pointer if object belongs to a given group, abort with
++* Return userdata pointer if object belongs to a given group, abort with
+ * error otherwise
+ \*-------------------------------------------------------------------------*/
+ void *auxiliar_checkgroup(lua_State *L, const char *groupname, int objidx) {
+@@ -121,7 +121,7 @@ void auxiliar_setclass(lua_State *L, const char *classname, int objidx) {
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* Get a userdata pointer if object belongs to a given group. Return NULL
++* Get a userdata pointer if object belongs to a given group. Return NULL
+ * otherwise
+ \*-------------------------------------------------------------------------*/
+ void *auxiliar_getgroupudata(lua_State *L, const char *groupname, int objidx) {
+@@ -139,7 +139,7 @@ void *auxiliar_getgroupudata(lua_State *L, const char *groupname, int objidx) {
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* Get a userdata pointer if object belongs to a given class. Return NULL
++* Get a userdata pointer if object belongs to a given class. Return NULL
+ * otherwise
+ \*-------------------------------------------------------------------------*/
+ void *auxiliar_getclassudata(lua_State *L, const char *classname, int objidx) {
+@@ -151,7 +151,7 @@ void *auxiliar_getclassudata(lua_State *L, const char *classname, int objidx) {
+ * Used to be part of lauxlib in Lua 5.1, was dropped from 5.2.
+ \*-------------------------------------------------------------------------*/
+ int auxiliar_typeerror (lua_State *L, int narg, const char *tname) {
+- const char *msg = lua_pushfstring(L, "%s expected, got %s", tname,
++ const char *msg = lua_pushfstring(L, "%s expected, got %s", tname,
+ luaL_typename(L, narg));
+ return luaL_argerror(L, narg, msg);
+ }
+diff --git a/src/auxiliar.h b/src/auxiliar.h
+index ea99013..65511d4 100644
+--- a/src/auxiliar.h
++++ b/src/auxiliar.h
+@@ -4,12 +4,12 @@
+ * Auxiliar routines for class hierarchy manipulation
+ * LuaSocket toolkit (but completely independent of other LuaSocket modules)
+ *
+-* A LuaSocket class is a name associated with Lua metatables. A LuaSocket
+-* group is a name associated with a class. A class can belong to any number
++* A LuaSocket class is a name associated with Lua metatables. A LuaSocket
++* group is a name associated with a class. A class can belong to any number
+ * of groups. This module provides the functionality to:
+ *
+-* - create new classes
+-* - add classes to groups
++* - create new classes
++* - add classes to groups
+ * - set the class of objects
+ * - check if an object belongs to a given class or group
+ * - get the userdata associated to objects
+@@ -26,11 +26,12 @@
+ * "class" with the class name.
+ *
+ * The mapping from class name to the corresponding metatable and the
+-* reverse mapping are done using lauxlib.
++* reverse mapping are done using lauxlib.
+ \*=========================================================================*/
+
+ #include "lua.h"
+ #include "lauxlib.h"
++#include "compat.h"
+
+ int auxiliar_open(lua_State *L);
+ void auxiliar_newclass(lua_State *L, const char *classname, luaL_Reg *func);
+diff --git a/src/buffer.c b/src/buffer.c
+index 4ef4e8e..fff1634 100644
+--- a/src/buffer.c
++++ b/src/buffer.c
+@@ -4,6 +4,7 @@
+ \*=========================================================================*/
+ #include "lua.h"
+ #include "lauxlib.h"
++#include "compat.h"
+
+ #include "buffer.h"
+
+@@ -37,7 +38,7 @@ int buffer_open(lua_State *L) {
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* Initializes C structure
++* Initializes C structure
+ \*-------------------------------------------------------------------------*/
+ void buffer_init(p_buffer buf, p_io io, p_timeout tm) {
+ buf->first = buf->last = 0;
+@@ -61,8 +62,8 @@ int buffer_meth_getstats(lua_State *L, p_buffer buf) {
+ * object:setstats() interface
+ \*-------------------------------------------------------------------------*/
+ int buffer_meth_setstats(lua_State *L, p_buffer buf) {
+- buf->received = (long) luaL_optnumber(L, 2, (lua_Number) buf->received);
+- buf->sent = (long) luaL_optnumber(L, 3, (lua_Number) buf->sent);
++ buf->received = (long) luaL_optnumber(L, 2, (lua_Number) buf->received);
++ buf->sent = (long) luaL_optnumber(L, 3, (lua_Number) buf->sent);
+ if (lua_isnumber(L, 4)) buf->birthday = timeout_gettime() - lua_tonumber(L, 4);
+ lua_pushnumber(L, 1);
+ return 1;
+@@ -78,9 +79,7 @@ int buffer_meth_send(lua_State *L, p_buffer buf) {
+ const char *data = luaL_checklstring(L, 2, &size);
+ long start = (long) luaL_optnumber(L, 3, 1);
+ long end = (long) luaL_optnumber(L, 4, -1);
+-#ifdef LUASOCKET_DEBUG
+- p_timeout tm = timeout_markstart(buf->tm);
+-#endif
++ timeout_markstart(buf->tm);
+ if (start < 0) start = (long) (size+start+1);
+ if (end < 0) end = (long) (size+end+1);
+ if (start < 1) start = (long) 1;
+@@ -89,7 +88,7 @@ int buffer_meth_send(lua_State *L, p_buffer buf) {
+ /* check if there was an error */
+ if (err != IO_DONE) {
+ lua_pushnil(L);
+- lua_pushstring(L, buf->io->error(buf->io->ctx, err));
++ lua_pushstring(L, buf->io->error(buf->io->ctx, err));
+ lua_pushnumber(L, (lua_Number) (sent+start-1));
+ } else {
+ lua_pushnumber(L, (lua_Number) (sent+start-1));
+@@ -98,7 +97,7 @@ int buffer_meth_send(lua_State *L, p_buffer buf) {
+ }
+ #ifdef LUASOCKET_DEBUG
+ /* push time elapsed during operation as the last return value */
+- lua_pushnumber(L, timeout_gettime() - timeout_getstart(tm));
++ lua_pushnumber(L, timeout_gettime() - timeout_getstart(buf->tm));
+ #endif
+ return lua_gettop(L) - top;
+ }
+@@ -111,10 +110,8 @@ int buffer_meth_receive(lua_State *L, p_buffer buf) {
+ luaL_Buffer b;
+ size_t size;
+ const char *part = luaL_optlstring(L, 3, "", &size);
+-#ifdef LUASOCKET_DEBUG
+- p_timeout tm = timeout_markstart(buf->tm);
+-#endif
+- /* initialize buffer with optional extra prefix
++ timeout_markstart(buf->tm);
++ /* initialize buffer with optional extra prefix
+ * (useful for concatenating previous partial results) */
+ luaL_buffinit(L, &b);
+ luaL_addlstring(&b, part, size);
+@@ -122,12 +119,12 @@ int buffer_meth_receive(lua_State *L, p_buffer buf) {
+ if (!lua_isnumber(L, 2)) {
+ const char *p= luaL_optstring(L, 2, "*l");
+ if (p[0] == '*' && p[1] == 'l') err = recvline(buf, &b);
+- else if (p[0] == '*' && p[1] == 'a') err = recvall(buf, &b);
++ else if (p[0] == '*' && p[1] == 'a') err = recvall(buf, &b);
+ else luaL_argcheck(L, 0, 2, "invalid receive pattern");
+- /* get a fixed number of bytes (minus what was already partially
++ /* get a fixed number of bytes (minus what was already partially
+ * received) */
+ } else {
+- double n = lua_tonumber(L, 2);
++ double n = lua_tonumber(L, 2);
+ size_t wanted = (size_t) n;
+ luaL_argcheck(L, n >= 0, 2, "invalid receive pattern");
+ if (size == 0 || wanted > size)
+@@ -138,8 +135,8 @@ int buffer_meth_receive(lua_State *L, p_buffer buf) {
+ /* we can't push anyting in the stack before pushing the
+ * contents of the buffer. this is the reason for the complication */
+ luaL_pushresult(&b);
+- lua_pushstring(L, buf->io->error(buf->io->ctx, err));
+- lua_pushvalue(L, -2);
++ lua_pushstring(L, buf->io->error(buf->io->ctx, err));
++ lua_pushvalue(L, -2);
+ lua_pushnil(L);
+ lua_replace(L, -4);
+ } else {
+@@ -149,7 +146,7 @@ int buffer_meth_receive(lua_State *L, p_buffer buf) {
+ }
+ #ifdef LUASOCKET_DEBUG
+ /* push time elapsed during operation as the last return value */
+- lua_pushnumber(L, timeout_gettime() - timeout_getstart(tm));
++ lua_pushnumber(L, timeout_gettime() - timeout_getstart(buf->tm));
+ #endif
+ return lua_gettop(L) - top;
+ }
+@@ -222,7 +219,7 @@ static int recvall(p_buffer buf, luaL_Buffer *b) {
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* Reads a line terminated by a CR LF pair or just by a LF. The CR and LF
++* Reads a line terminated by a CR LF pair or just by a LF. The CR and LF
+ * are not returned by the function and are discarded from the buffer
+ \*-------------------------------------------------------------------------*/
+ static int recvline(p_buffer buf, luaL_Buffer *b) {
+@@ -252,7 +249,7 @@ static int recvline(p_buffer buf, luaL_Buffer *b) {
+ static void buffer_skip(p_buffer buf, size_t count) {
+ buf->received += count;
+ buf->first += count;
+- if (buffer_isempty(buf))
++ if (buffer_isempty(buf))
+ buf->first = buf->last = 0;
+ }
+
+diff --git a/src/compat.c b/src/compat.c
+new file mode 100644
+index 0000000..c2d99cb
+--- /dev/null
++++ b/src/compat.c
+@@ -0,0 +1,19 @@
++#include "compat.h"
++
++#if LUA_VERSION_NUM==501
++/*
++** Adapted from Lua 5.2
++*/
++void luaL_setfuncs (lua_State *L, const luaL_Reg *l, int nup) {
++ luaL_checkstack(L, nup+1, "too many upvalues");
++ for (; l->name != NULL; l++) { /* fill the table with given functions */
++ int i;
++ lua_pushstring(L, l->name);
++ for (i = 0; i < nup; i++) /* copy upvalues to the top */
++ lua_pushvalue(L, -(nup+1));
++ lua_pushcclosure(L, l->func, nup); /* closure with those upvalues */
++ lua_settable(L, -(nup + 3));
++ }
++ lua_pop(L, nup); /* remove upvalues */
++}
++#endif
+diff --git a/src/compat.h b/src/compat.h
+new file mode 100644
+index 0000000..7bf8010
+--- /dev/null
++++ b/src/compat.h
+@@ -0,0 +1,11 @@
++#ifndef COMPAT_H
++#define COMPAT_H
++
++#include "lua.h"
++#include "lauxlib.h"
++
++#if LUA_VERSION_NUM==501
++void luaL_setfuncs (lua_State *L, const luaL_Reg *l, int nup);
++#endif
++
++#endif
+diff --git a/src/except.c b/src/except.c
+index 002e701..60b5005 100644
+--- a/src/except.c
++++ b/src/except.c
+@@ -6,9 +6,19 @@
+
+ #include "lua.h"
+ #include "lauxlib.h"
++#include "compat.h"
+
+ #include "except.h"
+
++#if LUA_VERSION_NUM < 502
++#define lua_pcallk(L, na, nr, err, ctx, cont) \
++ (((void)ctx),((void)cont),lua_pcall(L, na, nr, err))
++#endif
++
++#if LUA_VERSION_NUM < 503
++typedef int lua_KContext;
++#endif
++
+ /*=========================================================================*\
+ * Internal function prototypes.
+ \*=========================================================================*/
+@@ -29,18 +39,17 @@ static luaL_Reg func[] = {
+ * Try factory
+ \*-------------------------------------------------------------------------*/
+ static void wrap(lua_State *L) {
+- lua_newtable(L);
+- lua_pushnumber(L, 1);
+- lua_pushvalue(L, -3);
+- lua_settable(L, -3);
+- lua_insert(L, -2);
+- lua_pop(L, 1);
++ lua_createtable(L, 1, 0);
++ lua_pushvalue(L, -2);
++ lua_rawseti(L, -2, 1);
++ lua_pushvalue(L, lua_upvalueindex(1));
++ lua_setmetatable(L, -2);
+ }
+
+ static int finalize(lua_State *L) {
+ if (!lua_toboolean(L, 1)) {
+- lua_pushvalue(L, lua_upvalueindex(1));
+- lua_pcall(L, 0, 0, 0);
++ lua_pushvalue(L, lua_upvalueindex(2));
++ lua_call(L, 0, 0);
+ lua_settop(L, 2);
+ wrap(L);
+ lua_error(L);
+@@ -48,15 +57,17 @@ static int finalize(lua_State *L) {
+ } else return lua_gettop(L);
+ }
+
+-static int do_nothing(lua_State *L) {
++static int do_nothing(lua_State *L) {
+ (void) L;
+- return 0;
++ return 0;
+ }
+
+ static int global_newtry(lua_State *L) {
+ lua_settop(L, 1);
+ if (lua_isnil(L, 1)) lua_pushcfunction(L, do_nothing);
+- lua_pushcclosure(L, finalize, 1);
++ lua_pushvalue(L, lua_upvalueindex(1));
++ lua_insert(L, -2);
++ lua_pushcclosure(L, finalize, 2);
+ return 1;
+ }
+
+@@ -64,27 +75,49 @@ static int global_newtry(lua_State *L) {
+ * Protect factory
+ \*-------------------------------------------------------------------------*/
+ static int unwrap(lua_State *L) {
+- if (lua_istable(L, -1)) {
+- lua_pushnumber(L, 1);
+- lua_gettable(L, -2);
+- lua_pushnil(L);
+- lua_insert(L, -2);
+- return 1;
+- } else return 0;
++ if (lua_istable(L, -1) && lua_getmetatable(L, -1)) {
++ int r = lua_rawequal(L, -1, lua_upvalueindex(1));
++ lua_pop(L, 1);
++ if (r) {
++ lua_pushnil(L);
++ lua_rawgeti(L, -2, 1);
++ return 1;
++ }
++ }
++ return 0;
+ }
+
+-static int protected_(lua_State *L) {
+- lua_pushvalue(L, lua_upvalueindex(1));
+- lua_insert(L, 1);
+- if (lua_pcall(L, lua_gettop(L) - 1, LUA_MULTRET, 0) != 0) {
++static int protected_finish(lua_State *L, int status, lua_KContext ctx) {
++ (void)ctx;
++ if (status != 0 && status != LUA_YIELD) {
+ if (unwrap(L)) return 2;
+- else lua_error(L);
+- return 0;
++ else return lua_error(L);
+ } else return lua_gettop(L);
+ }
+
++#if LUA_VERSION_NUM == 502
++static int protected_cont(lua_State *L) {
++ int ctx = 0;
++ int status = lua_getctx(L, &ctx);
++ return protected_finish(L, status, ctx);
++}
++#else
++#define protected_cont protected_finish
++#endif
++
++static int protected_(lua_State *L) {
++ int status;
++ lua_pushvalue(L, lua_upvalueindex(2));
++ lua_insert(L, 1);
++ status = lua_pcallk(L, lua_gettop(L) - 1, LUA_MULTRET, 0, 0, protected_cont);
++ return protected_finish(L, status, 0);
++}
++
+ static int global_protect(lua_State *L) {
+- lua_pushcclosure(L, protected_, 1);
++ lua_settop(L, 1);
++ lua_pushvalue(L, lua_upvalueindex(1));
++ lua_insert(L, 1);
++ lua_pushcclosure(L, protected_, 2);
+ return 1;
+ }
+
+@@ -92,10 +125,9 @@ static int global_protect(lua_State *L) {
+ * Init module
+ \*-------------------------------------------------------------------------*/
+ int except_open(lua_State *L) {
+-#if LUA_VERSION_NUM > 501 && !defined(LUA_COMPAT_MODULE)
+- luaL_setfuncs(L, func, 0);
+-#else
+- luaL_openlib(L, NULL, func, 0);
+-#endif
++ lua_newtable(L); /* metatable for wrapped exceptions */
++ lua_pushboolean(L, 0);
++ lua_setfield(L, -2, "__metatable");
++ luaL_setfuncs(L, func, 1);
+ return 0;
+ }
+diff --git a/src/except.h b/src/except.h
+index 1e7a245..2497c05 100644
+--- a/src/except.h
++++ b/src/except.h
+@@ -9,21 +9,26 @@
+ * error checking was taking a substantial amount of the coding. These
+ * function greatly simplify the task of checking errors.
+ *
+-* The main idea is that functions should return nil as its first return
+-* value when it finds an error, and return an error message (or value)
++* The main idea is that functions should return nil as their first return
++* values when they find an error, and return an error message (or value)
+ * following nil. In case of success, as long as the first value is not nil,
+ * the other values don't matter.
+ *
+ * The idea is to nest function calls with the "try" function. This function
+-* checks the first value, and calls "error" on the second if the first is
+-* nil. Otherwise, it returns all values it received.
++* checks the first value, and, if it's falsy, wraps the second value in a
++* table with metatable and calls "error" on it. Otherwise, it returns all
++* values it received. Basically, it works like the Lua "assert" function,
++* but it creates errors targeted specifically at "protect".
+ *
+-* The protect function returns a new function that behaves exactly like the
+-* function it receives, but the new function doesn't throw exceptions: it
+-* returns nil followed by the error message instead.
++* The "newtry" function is a factory for "try" functions that call a
++* finalizer in protected mode before calling "error".
+ *
+-* With these two function, it's easy to write functions that throw
+-* exceptions on error, but that don't interrupt the user script.
++* The "protect" function returns a new function that behaves exactly like
++* the function it receives, but the new function catches exceptions thrown
++* by "try" functions and returns nil followed by the error message instead.
++*
++* With these three functions, it's easy to write functions that throw
++* exceptions on error, but that don't interrupt the user script.
+ \*=========================================================================*/
+
+ #include "lua.h"
+diff --git a/src/ftp.lua b/src/ftp.lua
+index ea1145b..e0c3cae 100644
+--- a/src/ftp.lua
++++ b/src/ftp.lua
+@@ -268,11 +268,20 @@ _M.command = socket.protect(function(cmdt)
+ cmdt = override(cmdt)
+ socket.try(cmdt.host, "missing hostname")
+ socket.try(cmdt.command, "missing command")
+- local f = open(cmdt.host, cmdt.port, cmdt.create)
++ local f = _M.open(cmdt.host, cmdt.port, cmdt.create)
+ f:greet()
+ f:login(cmdt.user, cmdt.password)
+- f.try(f.tp:command(cmdt.command, cmdt.argument))
+- if cmdt.check then f.try(f.tp:check(cmdt.check)) end
++ if type(cmdt.command) == "table" then
++ local argument = cmdt.argument or {}
++ local check = cmdt.check or {}
++ for i,cmd in ipairs(cmdt.command) do
++ f.try(f.tp:command(cmd, argument[i]))
++ if check[i] then f.try(f.tp:check(check[i])) end
++ end
++ else
++ f.try(f.tp:command(cmdt.command, cmdt.argument))
++ if cmdt.check then f.try(f.tp:check(cmdt.check)) end
++ end
+ f:quit()
+ return f:close()
+ end)
+@@ -282,4 +291,4 @@ _M.get = socket.protect(function(gett)
+ else return tget(gett) end
+ end)
+
+-return _M
+\ No newline at end of file
++return _M
+diff --git a/src/http.lua b/src/http.lua
+index ac4b2d6..d6bcc91 100644
+--- a/src/http.lua
++++ b/src/http.lua
+@@ -22,12 +22,15 @@ local _M = socket.http
+ -- Program constants
+ -----------------------------------------------------------------------------
+ -- connection timeout in seconds
+-TIMEOUT = 60
+--- default port for document retrieval
+-_M.PORT = 80
++_M.TIMEOUT = 60
+ -- user agent field sent in request
+ _M.USERAGENT = socket._VERSION
+
++-- supported schemes
++local SCHEMES = { ["http"] = true }
++-- default port for document retrieval
++local PORT = 80
++
+ -----------------------------------------------------------------------------
+ -- Reads MIME headers from a connection, unfolding where needed
+ -----------------------------------------------------------------------------
+@@ -114,7 +117,7 @@ function _M.open(host, port, create)
+ h.try = socket.newtry(function() h:close() end)
+ -- set timeout before connecting
+ h.try(c:settimeout(_M.TIMEOUT))
+- h.try(c:connect(host, port or _M.PORT))
++ h.try(c:connect(host, port or PORT))
+ -- here everything worked
+ return h
+ end
+@@ -186,7 +189,7 @@ end
+ local function adjusturi(reqt)
+ local u = reqt
+ -- if there is a proxy, we need the full url. otherwise, just a part.
+- if not reqt.proxy and not PROXY then
++ if not reqt.proxy and not _M.PROXY then
+ u = {
+ path = socket.try(reqt.path, "invalid path 'nil'"),
+ params = reqt.params,
+@@ -198,7 +201,7 @@ local function adjusturi(reqt)
+ end
+
+ local function adjustproxy(reqt)
+- local proxy = reqt.proxy or PROXY
++ local proxy = reqt.proxy or _M.PROXY
+ if proxy then
+ proxy = url.parse(proxy)
+ return proxy.host, proxy.port or 3128
+@@ -209,17 +212,27 @@ end
+
+ local function adjustheaders(reqt)
+ -- default headers
++ local host = string.gsub(reqt.authority, "^.-@", "")
+ local lower = {
+ ["user-agent"] = _M.USERAGENT,
+- ["host"] = reqt.host,
++ ["host"] = host,
+ ["connection"] = "close, TE",
+ ["te"] = "trailers"
+ }
+ -- if we have authentication information, pass it along
+ if reqt.user and reqt.password then
+- lower["authorization"] =
++ lower["authorization"] =
+ "Basic " .. (mime.b64(reqt.user .. ":" .. reqt.password))
+ end
++ -- if we have proxy authentication information, pass it along
++ local proxy = reqt.proxy or _M.PROXY
++ if proxy then
++ proxy = url.parse(proxy)
++ if proxy.user and proxy.password then
++ lower["proxy-authorization"] =
++ "Basic " .. (mime.b64(proxy.user .. ":" .. proxy.password))
++ end
++ end
+ -- override with user headers
+ for i,v in base.pairs(reqt.headers or lower) do
+ lower[string.lower(i)] = v
+@@ -230,7 +243,7 @@ end
+ -- default url parts
+ local default = {
+ host = "",
+- port = _M.PORT,
++ port = PORT,
+ path ="/",
+ scheme = "http"
+ }
+@@ -240,22 +253,27 @@ local function adjustrequest(reqt)
+ local nreqt = reqt.url and url.parse(reqt.url, default) or {}
+ -- explicit components override url
+ for i,v in base.pairs(reqt) do nreqt[i] = v end
+- if nreqt.port == "" then nreqt.port = 80 end
+- socket.try(nreqt.host and nreqt.host ~= "",
+- "invalid host '" .. base.tostring(nreqt.host) .. "'")
++ if nreqt.port == "" then nreqt.port = PORT end
++ if not (nreqt.host and nreqt.host ~= "") then
++ socket.try(nil, "invalid host '" .. base.tostring(nreqt.host) .. "'")
++ end
+ -- compute uri if user hasn't overriden
+ nreqt.uri = reqt.uri or adjusturi(nreqt)
+- -- ajust host and port if there is a proxy
+- nreqt.host, nreqt.port = adjustproxy(nreqt)
+ -- adjust headers in request
+ nreqt.headers = adjustheaders(nreqt)
++ -- ajust host and port if there is a proxy
++ nreqt.host, nreqt.port = adjustproxy(nreqt)
+ return nreqt
+ end
+
+ local function shouldredirect(reqt, code, headers)
+- return headers.location and
+- string.gsub(headers.location, "%s", "") ~= "" and
+- (reqt.redirect ~= false) and
++ local location = headers.location
++ if not location then return false end
++ location = string.gsub(location, "%s", "")
++ if location == "" then return false end
++ local scheme = string.match(location, "^([%w][%w%+%-%.]*)%:")
++ if scheme and not SCHEMES[scheme] then return false end
++ return (reqt.redirect ~= false) and
+ (code == 301 or code == 302 or code == 303 or code == 307) and
+ (not reqt.method or reqt.method == "GET" or reqt.method == "HEAD")
+ and (not reqt.nredirects or reqt.nredirects < 5)
+@@ -279,10 +297,10 @@ local trequest, tredirect
+ source = reqt.source,
+ sink = reqt.sink,
+ headers = reqt.headers,
+- proxy = reqt.proxy,
++ proxy = reqt.proxy,
+ nredirects = (reqt.nredirects or 0) + 1,
+ create = reqt.create
+- }
++ }
+ -- pass location header back as a hint we redirected
+ headers = headers or {}
+ headers.location = headers.location or location
+@@ -299,7 +317,7 @@ end
+ h:sendheaders(nreqt.headers)
+ -- if there is a body, send it
+ if nreqt.source then
+- h:sendbody(nreqt.headers, nreqt.source, nreqt.step)
++ h:sendbody(nreqt.headers, nreqt.source, nreqt.step)
+ end
+ local code, status = h:receivestatusline()
+ -- if it is an HTTP/0.9 server, simply get the body and we are done
+@@ -309,13 +327,13 @@ end
+ end
+ local headers
+ -- ignore any 100-continue messages
+- while code == 100 do
++ while code == 100 do
+ headers = h:receiveheaders()
+ code, status = h:receivestatusline()
+ end
+ headers = h:receiveheaders()
+ -- at this point we should have a honest reply from the server
+- -- we can't redirect if we already used the source, so we report the error
++ -- we can't redirect if we already used the source, so we report the error
+ if shouldredirect(nreqt, code, headers) and not nreqt.source then
+ h:close()
+ return tredirect(reqt, headers.location)
+@@ -351,4 +369,4 @@ _M.request = socket.protect(function(reqt, body)
+ else return trequest(reqt) end
+ end)
+
+-return _M
+\ No newline at end of file
++return _M
+diff --git a/src/inet.c b/src/inet.c
+index 1a411f6..f4c8404 100644
+--- a/src/inet.c
++++ b/src/inet.c
+@@ -8,6 +8,7 @@
+
+ #include "lua.h"
+ #include "lauxlib.h"
++#include "compat.h"
+
+ #include "inet.h"
+
+@@ -41,11 +42,7 @@ int inet_open(lua_State *L)
+ {
+ lua_pushstring(L, "dns");
+ lua_newtable(L);
+-#if LUA_VERSION_NUM > 501 && !defined(LUA_COMPAT_MODULE)
+ luaL_setfuncs(L, func, 0);
+-#else
+- luaL_openlib(L, NULL, func, 0);
+-#endif
+ lua_settable(L, -3);
+ return 0;
+ }
+@@ -97,7 +94,7 @@ static int inet_global_getnameinfo(lua_State *L) {
+
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_socktype = SOCK_STREAM;
+- hints.ai_family = PF_UNSPEC;
++ hints.ai_family = AF_UNSPEC;
+
+ ret = getaddrinfo(host, serv, &hints, &resolved);
+ if (ret != 0) {
+@@ -108,8 +105,8 @@ static int inet_global_getnameinfo(lua_State *L) {
+
+ lua_newtable(L);
+ for (i = 1, iter = resolved; iter; i++, iter = iter->ai_next) {
+- getnameinfo(iter->ai_addr, (socklen_t) iter->ai_addrlen,
+- hbuf, host? (socklen_t) sizeof(hbuf): 0,
++ getnameinfo(iter->ai_addr, (socklen_t) iter->ai_addrlen,
++ hbuf, host? (socklen_t) sizeof(hbuf): 0,
+ sbuf, serv? (socklen_t) sizeof(sbuf): 0, 0);
+ if (host) {
+ lua_pushnumber(L, i);
+@@ -149,7 +146,7 @@ static int inet_global_toip(lua_State *L)
+ int inet_optfamily(lua_State* L, int narg, const char* def)
+ {
+ static const char* optname[] = { "unspec", "inet", "inet6", NULL };
+- static int optvalue[] = { PF_UNSPEC, PF_INET, PF_INET6, 0 };
++ static int optvalue[] = { AF_UNSPEC, AF_INET, AF_INET6, 0 };
+
+ return optvalue[luaL_checkoption(L, narg, def, optname)];
+ }
+@@ -170,7 +167,7 @@ static int inet_global_getaddrinfo(lua_State *L)
+ int i = 1, ret = 0;
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_socktype = SOCK_STREAM;
+- hints.ai_family = PF_UNSPEC;
++ hints.ai_family = AF_UNSPEC;
+ ret = getaddrinfo(hostname, NULL, &hints, &resolved);
+ if (ret != 0) {
+ lua_pushnil(L);
+@@ -180,9 +177,10 @@ static int inet_global_getaddrinfo(lua_State *L)
+ lua_newtable(L);
+ for (iterator = resolved; iterator; iterator = iterator->ai_next) {
+ char hbuf[NI_MAXHOST];
+- ret = getnameinfo(iterator->ai_addr, (socklen_t) iterator->ai_addrlen,
++ ret = getnameinfo(iterator->ai_addr, (socklen_t) iterator->ai_addrlen,
+ hbuf, (socklen_t) sizeof(hbuf), NULL, 0, NI_NUMERICHOST);
+ if (ret){
++ freeaddrinfo(resolved);
+ lua_pushnil(L);
+ lua_pushstring(L, socket_gaistrerror(ret));
+ return 2;
+@@ -200,6 +198,16 @@ static int inet_global_getaddrinfo(lua_State *L)
+ lua_pushliteral(L, "inet6");
+ lua_settable(L, -3);
+ break;
++ case AF_UNSPEC:
++ lua_pushliteral(L, "family");
++ lua_pushliteral(L, "unspec");
++ lua_settable(L, -3);
++ break;
++ default:
++ lua_pushliteral(L, "family");
++ lua_pushliteral(L, "unknown");
++ lua_settable(L, -3);
++ break;
+ }
+ lua_pushliteral(L, "addr");
+ lua_pushstring(L, hbuf);
+@@ -256,12 +264,11 @@ int inet_meth_getpeername(lua_State *L, p_socket ps, int family)
+ }
+ lua_pushstring(L, name);
+ lua_pushinteger(L, (int) strtol(port, (char **) NULL, 10));
+- if (family == PF_INET) {
+- lua_pushliteral(L, "inet");
+- } else if (family == PF_INET6) {
+- lua_pushliteral(L, "inet6");
+- } else {
+- lua_pushliteral(L, "uknown family");
++ switch (family) {
++ case AF_INET: lua_pushliteral(L, "inet"); break;
++ case AF_INET6: lua_pushliteral(L, "inet6"); break;
++ case AF_UNSPEC: lua_pushliteral(L, "unspec"); break;
++ default: lua_pushliteral(L, "unknown"); break;
+ }
+ return 3;
+ }
+@@ -281,7 +288,7 @@ int inet_meth_getsockname(lua_State *L, p_socket ps, int family)
+ lua_pushstring(L, socket_strerror(errno));
+ return 2;
+ }
+- err=getnameinfo((struct sockaddr *)&peer, peer_len,
++ err=getnameinfo((struct sockaddr *)&peer, peer_len,
+ name, INET6_ADDRSTRLEN, port, 6, NI_NUMERICHOST | NI_NUMERICSERV);
+ if (err) {
+ lua_pushnil(L);
+@@ -290,12 +297,11 @@ int inet_meth_getsockname(lua_State *L, p_socket ps, int family)
+ }
+ lua_pushstring(L, name);
+ lua_pushstring(L, port);
+- if (family == PF_INET) {
+- lua_pushliteral(L, "inet");
+- } else if (family == PF_INET6) {
+- lua_pushliteral(L, "inet6");
+- } else {
+- lua_pushliteral(L, "uknown family");
++ switch (family) {
++ case AF_INET: lua_pushliteral(L, "inet"); break;
++ case AF_INET6: lua_pushliteral(L, "inet6"); break;
++ case AF_UNSPEC: lua_pushliteral(L, "unspec"); break;
++ default: lua_pushliteral(L, "unknown"); break;
+ }
+ return 3;
+ }
+@@ -346,8 +352,13 @@ static void inet_pushresolved(lua_State *L, struct hostent *hp)
+ /*-------------------------------------------------------------------------*\
+ * Tries to create a new inet socket
+ \*-------------------------------------------------------------------------*/
+-const char *inet_trycreate(p_socket ps, int family, int type) {
+- return socket_strerror(socket_create(ps, family, type, 0));
++const char *inet_trycreate(p_socket ps, int family, int type, int protocol) {
++ const char *err = socket_strerror(socket_create(ps, family, type, protocol));
++ if (err == NULL && family == AF_INET6) {
++ int yes = 1;
++ setsockopt(*ps, IPPROTO_IPV6, IPV6_V6ONLY, (void *)&yes, sizeof(yes));
++ }
++ return err;
+ }
+
+ /*-------------------------------------------------------------------------*\
+@@ -356,21 +367,21 @@ const char *inet_trycreate(p_socket ps, int family, int type) {
+ const char *inet_trydisconnect(p_socket ps, int family, p_timeout tm)
+ {
+ switch (family) {
+- case PF_INET: {
++ case AF_INET: {
+ struct sockaddr_in sin;
+ memset((char *) &sin, 0, sizeof(sin));
+ sin.sin_family = AF_UNSPEC;
+ sin.sin_addr.s_addr = INADDR_ANY;
+- return socket_strerror(socket_connect(ps, (SA *) &sin,
++ return socket_strerror(socket_connect(ps, (SA *) &sin,
+ sizeof(sin), tm));
+ }
+- case PF_INET6: {
++ case AF_INET6: {
+ struct sockaddr_in6 sin6;
+- struct in6_addr addrany = IN6ADDR_ANY_INIT;
++ struct in6_addr addrany = IN6ADDR_ANY_INIT;
+ memset((char *) &sin6, 0, sizeof(sin6));
+ sin6.sin6_family = AF_UNSPEC;
+ sin6.sin6_addr = addrany;
+- return socket_strerror(socket_connect(ps, (SA *) &sin6,
++ return socket_strerror(socket_connect(ps, (SA *) &sin6,
+ sizeof(sin6), tm));
+ }
+ }
+@@ -385,6 +396,7 @@ const char *inet_tryconnect(p_socket ps, int *family, const char *address,
+ {
+ struct addrinfo *iterator = NULL, *resolved = NULL;
+ const char *err = NULL;
++ int current_family = *family;
+ /* try resolving */
+ err = socket_gaistrerror(getaddrinfo(address, serv,
+ connecthints, &resolved));
+@@ -399,23 +411,23 @@ const char *inet_tryconnect(p_socket ps, int *family, const char *address,
+ * that shows up while iterating. if there was a
+ * bind, all families will be the same and we will
+ * not enter this branch. */
+- if (*family != iterator->ai_family) {
++ if (current_family != iterator->ai_family || *ps == SOCKET_INVALID) {
+ socket_destroy(ps);
+- err = socket_strerror(socket_create(ps, iterator->ai_family,
+- iterator->ai_socktype, iterator->ai_protocol));
+- if (err != NULL) {
+- freeaddrinfo(resolved);
+- return err;
+- }
+- *family = iterator->ai_family;
+- /* all sockets initially non-blocking */
++ err = inet_trycreate(ps, iterator->ai_family,
++ iterator->ai_socktype, iterator->ai_protocol);
++ if (err) continue;
++ current_family = iterator->ai_family;
++ /* set non-blocking before connect */
+ socket_setnonblocking(ps);
+ }
+ /* try connecting to remote address */
+- err = socket_strerror(socket_connect(ps, (SA *) iterator->ai_addr,
++ err = socket_strerror(socket_connect(ps, (SA *) iterator->ai_addr,
+ (socklen_t) iterator->ai_addrlen, tm));
+- /* if success, break out of loop */
+- if (err == NULL) break;
++ /* if success or timeout is zero, break out of loop */
++ if (err == NULL || timeout_iszero(tm)) {
++ *family = current_family;
++ break;
++ }
+ }
+ freeaddrinfo(resolved);
+ /* here, if err is set, we failed */
+@@ -425,29 +437,27 @@ const char *inet_tryconnect(p_socket ps, int *family, const char *address,
+ /*-------------------------------------------------------------------------*\
+ * Tries to accept a socket
+ \*-------------------------------------------------------------------------*/
+-const char *inet_tryaccept(p_socket server, int family, p_socket client,
+- p_timeout tm)
+-{
++const char *inet_tryaccept(p_socket server, int family, p_socket client,
++ p_timeout tm) {
+ socklen_t len;
+ t_sockaddr_storage addr;
+- if (family == PF_INET6) {
+- len = sizeof(struct sockaddr_in6);
+- } else {
+- len = sizeof(struct sockaddr_in);
+- }
+- return socket_strerror(socket_accept(server, client, (SA *) &addr,
++ switch (family) {
++ case AF_INET6: len = sizeof(struct sockaddr_in6); break;
++ case AF_INET: len = sizeof(struct sockaddr_in); break;
++ default: len = sizeof(addr); break;
++ }
++ return socket_strerror(socket_accept(server, client, (SA *) &addr,
+ &len, tm));
+ }
+
+ /*-------------------------------------------------------------------------*\
+ * Tries to bind socket to (address, port)
+ \*-------------------------------------------------------------------------*/
+-const char *inet_trybind(p_socket ps, const char *address, const char *serv,
+- struct addrinfo *bindhints)
+-{
++const char *inet_trybind(p_socket ps, int *family, const char *address,
++ const char *serv, struct addrinfo *bindhints) {
+ struct addrinfo *iterator = NULL, *resolved = NULL;
+ const char *err = NULL;
+- t_socket sock = *ps;
++ int current_family = *family;
+ /* translate luasocket special values to C */
+ if (strcmp(address, "*") == 0) address = NULL;
+ if (!serv) serv = "0";
+@@ -459,35 +469,32 @@ const char *inet_trybind(p_socket ps, const char *address, const char *serv,
+ }
+ /* iterate over resolved addresses until one is good */
+ for (iterator = resolved; iterator; iterator = iterator->ai_next) {
+- if(sock == SOCKET_INVALID) {
+- err = socket_strerror(socket_create(&sock, iterator->ai_family,
+- iterator->ai_socktype, iterator->ai_protocol));
+- if(err)
+- continue;
++ if (current_family != iterator->ai_family || *ps == SOCKET_INVALID) {
++ socket_destroy(ps);
++ err = inet_trycreate(ps, iterator->ai_family,
++ iterator->ai_socktype, iterator->ai_protocol);
++ if (err) continue;
++ current_family = iterator->ai_family;
+ }
+ /* try binding to local address */
+- err = socket_strerror(socket_bind(&sock,
+- (SA *) iterator->ai_addr,
++ err = socket_strerror(socket_bind(ps, (SA *) iterator->ai_addr,
+ (socklen_t) iterator->ai_addrlen));
+-
+ /* keep trying unless bind succeeded */
+- if (err) {
+- if(sock != *ps)
+- socket_destroy(&sock);
+- } else {
+- /* remember what we connected to, particularly the family */
+- *bindhints = *iterator;
++ if (err == NULL) {
++ *family = current_family;
++ /* set to non-blocking after bind */
++ socket_setnonblocking(ps);
+ break;
+ }
+ }
+ /* cleanup and return error */
+ freeaddrinfo(resolved);
+- *ps = sock;
++ /* here, if err is set, we failed */
+ return err;
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* Some systems do not provide these so that we provide our own.
++* Some systems do not provide these so that we provide our own.
+ \*-------------------------------------------------------------------------*/
+ #ifdef LUASOCKET_INET_ATON
+ int inet_aton(const char *cp, struct in_addr *inp)
+@@ -512,7 +519,7 @@ int inet_aton(const char *cp, struct in_addr *inp)
+ #endif
+
+ #ifdef LUASOCKET_INET_PTON
+-int inet_pton(int af, const char *src, void *dst)
++int inet_pton(int af, const char *src, void *dst)
+ {
+ struct addrinfo hints, *res;
+ int ret = 1;
+@@ -529,7 +536,7 @@ int inet_pton(int af, const char *src, void *dst)
+ } else {
+ ret = -1;
+ }
+- freeaddrinfo(res);
++ freeaddrinfo(res);
+ return ret;
+ }
+
+diff --git a/src/inet.h b/src/inet.h
+index 1f1a96a..feb3541 100644
+--- a/src/inet.h
++++ b/src/inet.h
+@@ -1,12 +1,12 @@
+-#ifndef INET_H
+-#define INET_H
++#ifndef INET_H
++#define INET_H
+ /*=========================================================================*\
+ * Internet domain functions
+ * LuaSocket toolkit
+ *
+ * This module implements the creation and connection of internet domain
+ * sockets, on top of the socket.h interface, and the interface of with the
+-* resolver.
++* resolver.
+ *
+ * The function inet_aton is provided for the platforms where it is not
+ * available. The module also implements the interface of the internet
+@@ -24,11 +24,11 @@
+
+ int inet_open(lua_State *L);
+
+-const char *inet_trycreate(p_socket ps, int family, int type);
++const char *inet_trycreate(p_socket ps, int family, int type, int protocol);
+ const char *inet_tryconnect(p_socket ps, int *family, const char *address,
+ const char *serv, p_timeout tm, struct addrinfo *connecthints);
+-const char *inet_trybind(p_socket ps, const char *address, const char *serv,
+- struct addrinfo *bindhints);
++const char *inet_trybind(p_socket ps, int *family, const char *address,
++ const char *serv, struct addrinfo *bindhints);
+ const char *inet_trydisconnect(p_socket ps, int family, p_timeout tm);
+ const char *inet_tryaccept(p_socket server, int family, p_socket client, p_timeout tm);
+
+diff --git a/src/io.c b/src/io.c
+index 35f46f7..a4230ce 100644
+--- a/src/io.c
++++ b/src/io.c
+@@ -25,6 +25,6 @@ const char *io_strerror(int err) {
+ case IO_DONE: return NULL;
+ case IO_CLOSED: return "closed";
+ case IO_TIMEOUT: return "timeout";
+- default: return "unknown error";
++ default: return "unknown error";
+ }
+ }
+diff --git a/src/io.h b/src/io.h
+index 76a3e58..8cca08a 100644
+--- a/src/io.h
++++ b/src/io.h
+@@ -22,7 +22,7 @@ enum {
+ IO_DONE = 0, /* operation completed successfully */
+ IO_TIMEOUT = -1, /* operation timed out */
+ IO_CLOSED = -2, /* the connection has been closed */
+- IO_UNKNOWN = -3
++ IO_UNKNOWN = -3
+ };
+
+ /* interface to error message function */
+diff --git a/src/ltn12.lua b/src/ltn12.lua
+index 5b10f56..575c5a7 100644
+--- a/src/ltn12.lua
++++ b/src/ltn12.lua
+@@ -9,6 +9,7 @@
+ -----------------------------------------------------------------------------
+ local string = require("string")
+ local table = require("table")
++local unpack = unpack or table.unpack
+ local base = _G
+ local _M = {}
+ if module then -- heuristic for exporting a global package table
+@@ -21,6 +22,9 @@ _M.source = source
+ _M.sink = sink
+ _M.pump = pump
+
++local unpack = unpack or table.unpack
++local select = base.select
++
+ -- 2048 seems to be better in windows...
+ _M.BLOCKSIZE = 2048
+ _M._VERSION = "LTN12 1.0.3"
+@@ -42,7 +46,7 @@ end
+ -- (thanks to Wim Couwenberg)
+ function filter.chain(...)
+ local arg = {...}
+- local n = select('#',...)
++ local n = base.select('#',...)
+ local top, index = 1, 1
+ local retry = ""
+ return function(chunk)
+@@ -139,7 +143,9 @@ function source.rewind(src)
+ end
+ end
+
+-function source.chain(src, f)
++-- chains a source with one or several filter(s)
++function source.chain(src, f, ...)
++ if ... then f=filter.chain(f, ...) end
+ base.assert(src and f)
+ local last_in, last_out = "", ""
+ local state = "feeding"
+@@ -254,8 +260,13 @@ function sink.error(err)
+ end
+ end
+
+--- chains a sink with a filter
+-function sink.chain(f, snk)
++-- chains a sink with one or several filter(s)
++function sink.chain(f, snk, ...)
++ if ... then
++ local args = { f, snk, ... }
++ snk = table.remove(args, #args)
++ f = filter.chain(unpack(args))
++ end
+ base.assert(f and snk)
+ return function(chunk, err)
+ if chunk ~= "" then
+diff --git a/src/luasocket.c b/src/luasocket.c
+index e6ee747..7d9c802 100644
+--- a/src/luasocket.c
++++ b/src/luasocket.c
+@@ -17,7 +17,7 @@
+ \*=========================================================================*/
+ #include "lua.h"
+ #include "lauxlib.h"
+-
++#include "compat.h"
+
+ /*=========================================================================*\
+ * LuaSocket includes
+@@ -64,7 +64,7 @@ static luaL_Reg func[] = {
+ * Skip a few arguments
+ \*-------------------------------------------------------------------------*/
+ static int global_skip(lua_State *L) {
+- int amount = luaL_checkint(L, 1);
++ int amount = luaL_checkinteger(L, 1);
+ int ret = lua_gettop(L) - amount - 1;
+ return ret >= 0 ? ret : 0;
+ }
+@@ -78,26 +78,14 @@ static int global_unload(lua_State *L) {
+ return 0;
+ }
+
+-#if LUA_VERSION_NUM > 501
+-int luaL_typerror (lua_State *L, int narg, const char *tname) {
+- const char *msg = lua_pushfstring(L, "%s expected, got %s",
+- tname, luaL_typename(L, narg));
+- return luaL_argerror(L, narg, msg);
+-}
+-#endif
+-
+ /*-------------------------------------------------------------------------*\
+ * Setup basic stuff.
+ \*-------------------------------------------------------------------------*/
+ static int base_open(lua_State *L) {
+ if (socket_open()) {
+ /* export functions (and leave namespace table on top of stack) */
+-#if LUA_VERSION_NUM > 501 && !defined(LUA_COMPAT_MODULE)
+ lua_newtable(L);
+ luaL_setfuncs(L, func, 0);
+-#else
+- luaL_openlib(L, "socket", func, 0);
+-#endif
+ #ifdef LUASOCKET_DEBUG
+ lua_pushstring(L, "_DEBUG");
+ lua_pushboolean(L, 1);
+diff --git a/src/makefile b/src/makefile
+index c24e61b..adf687f 100644
+--- a/src/makefile
++++ b/src/makefile
+@@ -20,15 +20,17 @@ PLAT?=linux
+ # lua version to build against
+ LUAV?=5.1
+
++# MYCFLAGS: to be set by user if needed
++MYCFLAGS=
++
++# MYLDFLAGS: to be set by user if needed
++MYLDFLAGS=
++
+ # DEBUG: NODEBUG DEBUG
+ # debug mode causes luasocket to collect and returns timing information useful
+ # for testing and debugging luasocket itself
+ DEBUG?=NODEBUG
+
+-# COMPAT: COMPAT NOCOMPAT
+-# when compiling for 5.2, use LUA_COMPAT_MODULE
+-COMPAT?=NOCOMPAT
+-
+ # where lua headers are found for macosx builds
+ # LUAINC_macosx:
+ # /opt/local/include
+@@ -40,7 +42,6 @@ LUAPREFIX_macosx?=/opt/local
+ CDIR_macosx?=lib/lua/$(LUAV)
+ LDIR_macosx?=share/lua/$(LUAV)
+
+-
+ # LUAINC_linux:
+ # /usr/include/lua$(LUAV)
+ # /usr/local/include
+@@ -52,8 +53,17 @@ LUAPREFIX_linux?=/usr/local
+ CDIR_linux?=lib/lua/$(LUAV)
+ LDIR_linux?=share/lua/$(LUAV)
+
++# LUAINC_freebsd:
++# /usr/local/include/lua$(LUAV)
++# where lua headers are found for freebsd builds
++LUAINC_freebsd_base?=/usr/local/include/
++LUAINC_freebsd?=$(LUAINC_freebsd_base)/lua$(LUAV)
++LUAPREFIX_freebsd?=/usr/local/
++CDIR_freebsd?=lib/lua/$(LUAV)
++LDIR_freebsd?=share/lua/$(LUAV)
++
+ # where lua headers are found for mingw builds
+-# LUAINC_mingw:
++# LUAINC_mingw:
+ # /opt/local/include
+ LUAINC_mingw_base?=/usr/include
+ LUAINC_mingw?=$(LUAINC_mingw_base)/lua/$(LUAV)
+@@ -67,13 +77,21 @@ LDIR_mingw?=lua/$(LUAV)/lua
+ # LUAINC_win32:
+ # LUALIB_win32:
+ # where lua headers and libraries are found for win32 builds
+-LUAINC_win32_base?=
+-LUAINC_win32?=$(LUAINC_win32_base)/lua/$(LUAV)
+-PLATFORM_win32?=Release
+ LUAPREFIX_win32?=
+-CDIR_win32?=lua/$(LUAV)/$(PLATFORM_win32)
+-LDIR_win32?=lua/$(LUAV)/$(PLATFORM_win32)/lua
+-LUALIB_win32?=$(LUAPREFIX_win32)/lua/$(LUAV)/$(PLATFORM_win32)
++LUAINC_win32?=$(LUAPREFIX_win32)/include/lua/$(LUAV)
++PLATFORM_win32?=Release
++CDIR_win32?=bin/lua/$(LUAV)/$(PLATFORM_win32)
++LDIR_win32?=bin/lua/$(LUAV)/$(PLATFORM_win32)/lua
++LUALIB_win32?=$(LUAPREFIX_win32)/lib/lua/$(LUAV)/$(PLATFORM_win32)
++LUALIBNAME_win32?=lua$(subst .,,$(LUAV)).lib
++
++
++# LUAINC_solaris:
++LUAINC_solaris_base?=/usr/include
++LUAINC_solaris?=$(LUAINC_solaris_base)/lua/$(LUAV)
++LUAPREFIX_solaris?=/usr/local
++CDIR_solaris?=lib/lua/$(LUAV)
++LDIR_solaris?=share/lua/$(LUAV)
+
+ # prefix: /usr/local /usr /opt/local /sw
+ # the top of the default install tree
+@@ -121,7 +139,7 @@ print:
+ #------
+ # Supported platforms
+ #
+-PLATS= macosx linux win32 mingw
++PLATS= macosx linux win32 mingw solaris
+
+ #------
+ # Compiler and linker settings
+@@ -129,11 +147,11 @@ PLATS= macosx linux win32 mingw
+ SO_macosx=so
+ O_macosx=o
+ CC_macosx=gcc
+-DEF_macosx= -DLUASOCKET_$(DEBUG) -DUNIX_HAS_SUN_LEN -DLUA_$(COMPAT)_MODULE \
++DEF_macosx= -DLUASOCKET_$(DEBUG) -DUNIX_HAS_SUN_LEN \
+ -DLUASOCKET_API='__attribute__((visibility("default")))' \
+ -DUNIX_API='__attribute__((visibility("default")))' \
+ -DMIME_API='__attribute__((visibility("default")))'
+-CFLAGS_macosx= -I$(LUAINC) $(DEF) -pedantic -Wall -O2 -fno-common \
++CFLAGS_macosx= -I$(LUAINC) $(DEF) -Wall -O2 -fno-common \
+ -fvisibility=hidden
+ LDFLAGS_macosx= -bundle -undefined dynamic_lookup -o
+ LD_macosx= export MACOSX_DEPLOYMENT_TARGET="10.3"; gcc
+@@ -145,11 +163,11 @@ SOCKET_macosx=usocket.o
+ SO_linux=so
+ O_linux=o
+ CC_linux=gcc
+-DEF_linux=-DLUASOCKET_$(DEBUG) -DLUA_$(COMPAT)_MODULE \
++DEF_linux=-DLUASOCKET_$(DEBUG) \
+ -DLUASOCKET_API='__attribute__((visibility("default")))' \
+ -DUNIX_API='__attribute__((visibility("default")))' \
+ -DMIME_API='__attribute__((visibility("default")))'
+-CFLAGS_linux= -I$(LUAINC) $(DEF) -pedantic -Wall -Wshadow -Wextra \
++CFLAGS_linux= -I$(LUAINC) $(DEF) -Wall -Wshadow -Wextra \
+ -Wimplicit -O2 -ggdb3 -fpic -fvisibility=hidden
+ LDFLAGS_linux=-O -shared -fpic -o
+ LD_linux=gcc
+@@ -157,14 +175,46 @@ SOCKET_linux=usocket.o
+
+ #------
+ # Compiler and linker settings
++# for FreeBSD
++SO_freebsd=so
++O_freebsd=o
++CC_freebsd=gcc
++DEF_freebsd=-DLUASOCKET_$(DEBUG) \
++ -DLUASOCKET_API='__attribute__((visibility("default")))' \
++ -DUNIX_API='__attribute__((visibility("default")))' \
++ -DMIME_API='__attribute__((visibility("default")))'
++CFLAGS_freebsd= -I$(LUAINC) $(DEF) -Wall -Wshadow -Wextra \
++ -Wimplicit -O2 -ggdb3 -fpic -fvisibility=hidden
++LDFLAGS_freebsd=-O -shared -fpic -o
++LD_freebsd=gcc
++SOCKET_freebsd=usocket.o
++
++#------
++# Compiler and linker settings
++# for Solaris
++SO_solaris=so
++O_solaris=o
++CC_solaris=gcc
++DEF_solaris=-DLUASOCKET_$(DEBUG) \
++ -DLUASOCKET_API='__attribute__((visibility("default")))' \
++ -DUNIX_API='__attribute__((visibility("default")))' \
++ -DMIME_API='__attribute__((visibility("default")))'
++CFLAGS_solaris=-I$(LUAINC) $(DEF) -Wall -Wshadow -Wextra \
++ -Wimplicit -O2 -ggdb3 -fpic -fvisibility=hidden
++LDFLAGS_solaris=-lnsl -lsocket -lresolv -O -shared -fpic -o
++LD_solaris=gcc
++SOCKET_solaris=usocket.o
++
++#------
++# Compiler and linker settings
+ # for MingW
+ SO_mingw=dll
+ O_mingw=o
+ CC_mingw=gcc
+-DEF_mingw= -DLUASOCKET_INET_PTON -DLUASOCKET_$(DEBUG) -DLUA_$(COMPAT)_MODULE \
++DEF_mingw= -DLUASOCKET_INET_PTON -DLUASOCKET_$(DEBUG) \
+ -DWINVER=0x0501 -DLUASOCKET_API='__declspec(dllexport)' \
+ -DMIME_API='__declspec(dllexport)'
+-CFLAGS_mingw= -I$(LUAINC) $(DEF) -pedantic -Wall -O2 -fno-common \
++CFLAGS_mingw= -I$(LUAINC) $(DEF) -Wall -O2 -fno-common \
+ -fvisibility=hidden
+ LDFLAGS_mingw= $(LUALIB) -shared -Wl,-s -lws2_32 -o
+ LD_mingw=gcc
+@@ -179,8 +229,7 @@ O_win32=obj
+ CC_win32=cl
+ DEF_win32= //D "WIN32" //D "NDEBUG" //D "_WINDOWS" //D "_USRDLL" \
+ //D "LUASOCKET_API=__declspec(dllexport)" //D "_CRT_SECURE_NO_WARNINGS" \
+- //D "_WINDLL" //D "LUA_$(COMPAT)_MODULE" \
+- //D "MIME_API=__declspec(dllexport)" \
++ //D "_WINDLL" //D "MIME_API=__declspec(dllexport)" \
+ //D "LUASOCKET_$(DEBUG)"
+ CFLAGS_win32=//I "$(LUAINC)" $(DEF) //O2 //Ot //MD //W3 //nologo
+ LDFLAGS_win32= //nologo //link //NOLOGO //DLL //INCREMENTAL:NO \
+@@ -188,7 +237,7 @@ LDFLAGS_win32= //nologo //link //NOLOGO //DLL //INCREMENTAL:NO \
+ //MANIFESTUAC:"level='asInvoker' uiAccess='false'" \
+ //SUBSYSTEM:WINDOWS //OPT:REF //OPT:ICF //DYNAMICBASE:NO \
+ //MACHINE:X86 /LIBPATH:"$(shell cmd //c echo $(LUALIB))" \
+- lua$(subst .,,$(LUAV)).lib ws2_32.lib //OUT:
++ $(LUALIBNAME_win32) ws2_32.lib //OUT:
+ LD_win32=cl
+ SOCKET_win32=wsocket.obj
+
+@@ -204,8 +253,8 @@ SO=$(SO_$(PLAT))
+ O=$(O_$(PLAT))
+ SOCKET_V=3.0-rc1
+ MIME_V=1.0.3
+-SOCKET_SO=socket.$(SO).$(SOCKET_V)
+-MIME_SO=mime.$(SO).$(MIME_V)
++SOCKET_SO=socket-$(SOCKET_V).$(SO)
++MIME_SO=mime-$(MIME_V).$(SO)
+ UNIX_SO=unix.$(SO)
+ SERIAL_SO=serial.$(SO)
+ SOCKET=$(SOCKET_$(PLAT))
+@@ -215,8 +264,8 @@ SOCKET=$(SOCKET_$(PLAT))
+ #
+ CC=$(CC_$(PLAT))
+ DEF=$(DEF_$(PLAT))
+-CFLAGS=$(CFLAGS_$(PLAT))
+-LDFLAGS=$(LDFLAGS_$(PLAT))
++CFLAGS=$(MYCFLAGS) $(CFLAGS_$(PLAT))
++LDFLAGS=$(MYLDFLAGS) $(LDFLAGS_$(PLAT))
+ LD=$(LD_$(PLAT))
+ LUAINC= $(LUAINC_$(PLAT))
+ LUALIB= $(LUALIB_$(PLAT))
+@@ -230,6 +279,7 @@ SOCKET_OBJS= \
+ buffer.$(O) \
+ io.$(O) \
+ auxiliar.$(O) \
++ compat.$(O) \
+ options.$(O) \
+ inet.$(O) \
+ $(SOCKET) \
+@@ -242,7 +292,8 @@ SOCKET_OBJS= \
+ # Modules belonging mime-core
+ #
+ MIME_OBJS= \
+- mime.$(O)
++ mime.$(O) \
++ compat.$(O)
+
+ #------
+ # Modules belonging unix (local domain sockets)
+@@ -259,7 +310,7 @@ UNIX_OBJS=\
+ #------
+ # Modules belonging to serial (device streams)
+ #
+-SERIAL_OBJS:=\
++SERIAL_OBJS=\
+ buffer.$(O) \
+ auxiliar.$(O) \
+ options.$(O) \
+@@ -289,6 +340,10 @@ TO_TOP_LDIR= \
+ #
+ default: $(PLAT)
+
++
++freebsd:
++ $(MAKE) all-unix PLAT=freebsd
++
+ macosx:
+ $(MAKE) all-unix PLAT=macosx
+
+@@ -300,6 +355,9 @@ linux:
+
+ mingw:
+ $(MAKE) all PLAT=mingw
++
++solaris:
++ $(MAKE) all-unix PLAT=solaris
+
+ none:
+ @echo "Please run"
+@@ -349,6 +407,7 @@ clean:
+ #------
+ # List of dependencies
+ #
++compat.$(O): compat.c compat.h
+ auxiliar.$(O): auxiliar.c auxiliar.h
+ buffer.$(O): buffer.c buffer.h io.h timeout.h
+ except.$(O): except.c except.h
+diff --git a/src/mbox.lua b/src/mbox.lua
+index 7724ae2..ed9e781 100644
+--- a/src/mbox.lua
++++ b/src/mbox.lua
+@@ -61,7 +61,7 @@ function _M.parse_from(from)
+ end
+
+ function _M.split_mbox(mbox_s)
+- mbox = {}
++ local mbox = {}
+ mbox_s = string.gsub(mbox_s, "\r\n", "\n") .."\n\nFrom \n"
+ local nj, i, j = 1, 1, 1
+ while 1 do
+diff --git a/src/mime.c b/src/mime.c
+index dd37dcf..ed44104 100644
+--- a/src/mime.c
++++ b/src/mime.c
+@@ -6,10 +6,7 @@
+
+ #include "lua.h"
+ #include "lauxlib.h"
+-
+-#if !defined(LUA_VERSION_NUM) || (LUA_VERSION_NUM < 501)
+-#include "compat-5.1.h"
+-#endif
++#include "compat.h"
+
+ #include "mime.h"
+
+@@ -41,7 +38,7 @@ static size_t b64decode(UC c, UC *input, size_t size, luaL_Buffer *buffer);
+ static void qpsetup(UC *class, UC *unbase);
+ static void qpquote(UC c, luaL_Buffer *buffer);
+ static size_t qpdecode(UC c, UC *input, size_t size, luaL_Buffer *buffer);
+-static size_t qpencode(UC c, UC *input, size_t size,
++static size_t qpencode(UC c, UC *input, size_t size,
+ const char *marker, luaL_Buffer *buffer);
+ static size_t qppad(UC *input, size_t size, luaL_Buffer *buffer);
+
+@@ -81,12 +78,8 @@ static UC b64unbase[256];
+ \*-------------------------------------------------------------------------*/
+ MIME_API int luaopen_mime_core(lua_State *L)
+ {
+-#if LUA_VERSION_NUM > 501 && !defined(LUA_COMPAT_MODULE)
+ lua_newtable(L);
+ luaL_setfuncs(L, func, 0);
+-#else
+- luaL_openlib(L, "mime", func, 0);
+-#endif
+ /* make version string available to scripts */
+ lua_pushstring(L, "_VERSION");
+ lua_pushstring(L, MIME_VERSION);
+@@ -103,15 +96,15 @@ MIME_API int luaopen_mime_core(lua_State *L)
+ /*-------------------------------------------------------------------------*\
+ * Incrementaly breaks a string into lines. The string can have CRLF breaks.
+ * A, n = wrp(l, B, length)
+-* A is a copy of B, broken into lines of at most 'length' bytes.
+-* 'l' is how many bytes are left for the first line of B.
+-* 'n' is the number of bytes left in the last line of A.
++* A is a copy of B, broken into lines of at most 'length' bytes.
++* 'l' is how many bytes are left for the first line of B.
++* 'n' is the number of bytes left in the last line of A.
+ \*-------------------------------------------------------------------------*/
+ static int mime_global_wrp(lua_State *L)
+ {
+ size_t size = 0;
+ int left = (int) luaL_checknumber(L, 1);
+- const UC *input = (UC *) luaL_optlstring(L, 2, NULL, &size);
++ const UC *input = (const UC *) luaL_optlstring(L, 2, NULL, &size);
+ const UC *last = input + size;
+ int length = (int) luaL_optnumber(L, 3, 76);
+ luaL_Buffer buffer;
+@@ -123,7 +116,7 @@ static int mime_global_wrp(lua_State *L)
+ else lua_pushnil(L);
+ lua_pushnumber(L, length);
+ return 2;
+- }
++ }
+ luaL_buffinit(L, &buffer);
+ while (input < last) {
+ switch (*input) {
+@@ -150,9 +143,9 @@ static int mime_global_wrp(lua_State *L)
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* Fill base64 decode map.
++* Fill base64 decode map.
+ \*-------------------------------------------------------------------------*/
+-static void b64setup(UC *unbase)
++static void b64setup(UC *unbase)
+ {
+ int i;
+ for (i = 0; i <= 255; i++) unbase[i] = (UC) 255;
+@@ -161,11 +154,11 @@ static void b64setup(UC *unbase)
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* Acumulates bytes in input buffer until 3 bytes are available.
++* Acumulates bytes in input buffer until 3 bytes are available.
+ * Translate the 3 bytes into Base64 form and append to buffer.
+ * Returns new number of bytes in buffer.
+ \*-------------------------------------------------------------------------*/
+-static size_t b64encode(UC c, UC *input, size_t size,
++static size_t b64encode(UC c, UC *input, size_t size,
+ luaL_Buffer *buffer)
+ {
+ input[size++] = c;
+@@ -174,7 +167,7 @@ static size_t b64encode(UC c, UC *input, size_t size,
+ unsigned long value = 0;
+ value += input[0]; value <<= 8;
+ value += input[1]; value <<= 8;
+- value += input[2];
++ value += input[2];
+ code[3] = b64base[value & 0x3f]; value >>= 6;
+ code[2] = b64base[value & 0x3f]; value >>= 6;
+ code[1] = b64base[value & 0x3f]; value >>= 6;
+@@ -186,11 +179,11 @@ static size_t b64encode(UC c, UC *input, size_t size,
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* Encodes the Base64 last 1 or 2 bytes and adds padding '='
++* Encodes the Base64 last 1 or 2 bytes and adds padding '='
+ * Result, if any, is appended to buffer.
+ * Returns 0.
+ \*-------------------------------------------------------------------------*/
+-static size_t b64pad(const UC *input, size_t size,
++static size_t b64pad(const UC *input, size_t size,
+ luaL_Buffer *buffer)
+ {
+ unsigned long value = 0;
+@@ -203,7 +196,7 @@ static size_t b64pad(const UC *input, size_t size,
+ luaL_addlstring(buffer, (char *) code, 4);
+ break;
+ case 2:
+- value = input[0]; value <<= 8;
++ value = input[0]; value <<= 8;
+ value |= input[1]; value <<= 2;
+ code[2] = b64base[value & 0x3f]; value >>= 6;
+ code[1] = b64base[value & 0x3f]; value >>= 6;
+@@ -217,11 +210,11 @@ static size_t b64pad(const UC *input, size_t size,
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* Acumulates bytes in input buffer until 4 bytes are available.
++* Acumulates bytes in input buffer until 4 bytes are available.
+ * Translate the 4 bytes from Base64 form and append to buffer.
+ * Returns new number of bytes in buffer.
+ \*-------------------------------------------------------------------------*/
+-static size_t b64decode(UC c, UC *input, size_t size,
++static size_t b64decode(UC c, UC *input, size_t size,
+ luaL_Buffer *buffer)
+ {
+ /* ignore invalid characters */
+@@ -239,7 +232,7 @@ static size_t b64decode(UC c, UC *input, size_t size,
+ decoded[1] = (UC) (value & 0xff); value >>= 8;
+ decoded[0] = (UC) value;
+ /* take care of paddding */
+- valid = (input[2] == '=') ? 1 : (input[3] == '=') ? 2 : 3;
++ valid = (input[2] == '=') ? 1 : (input[3] == '=') ? 2 : 3;
+ luaL_addlstring(buffer, (char *) decoded, valid);
+ return 0;
+ /* need more data */
+@@ -251,7 +244,7 @@ static size_t b64decode(UC c, UC *input, size_t size,
+ * A, B = b64(C, D)
+ * A is the encoded version of the largest prefix of C .. D that is
+ * divisible by 3. B has the remaining bytes of C .. D, *without* encoding.
+-* The easiest thing would be to concatenate the two strings and
++* The easiest thing would be to concatenate the two strings and
+ * encode the result, but we can't afford that or Lua would dupplicate
+ * every chunk we received.
+ \*-------------------------------------------------------------------------*/
+@@ -259,7 +252,7 @@ static int mime_global_b64(lua_State *L)
+ {
+ UC atom[3];
+ size_t isize = 0, asize = 0;
+- const UC *input = (UC *) luaL_optlstring(L, 1, NULL, &isize);
++ const UC *input = (const UC *) luaL_optlstring(L, 1, NULL, &isize);
+ const UC *last = input + isize;
+ luaL_Buffer buffer;
+ /* end-of-input blackhole */
+@@ -272,9 +265,9 @@ static int mime_global_b64(lua_State *L)
+ lua_settop(L, 2);
+ /* process first part of the input */
+ luaL_buffinit(L, &buffer);
+- while (input < last)
++ while (input < last)
+ asize = b64encode(*input++, atom, asize, &buffer);
+- input = (UC *) luaL_optlstring(L, 2, NULL, &isize);
++ input = (const UC *) luaL_optlstring(L, 2, NULL, &isize);
+ /* if second part is nil, we are done */
+ if (!input) {
+ size_t osize = 0;
+@@ -288,7 +281,7 @@ static int mime_global_b64(lua_State *L)
+ }
+ /* otherwise process the second part */
+ last = input + isize;
+- while (input < last)
++ while (input < last)
+ asize = b64encode(*input++, atom, asize, &buffer);
+ luaL_pushresult(&buffer);
+ lua_pushlstring(L, (char *) atom, asize);
+@@ -305,7 +298,7 @@ static int mime_global_unb64(lua_State *L)
+ {
+ UC atom[4];
+ size_t isize = 0, asize = 0;
+- const UC *input = (UC *) luaL_optlstring(L, 1, NULL, &isize);
++ const UC *input = (const UC *) luaL_optlstring(L, 1, NULL, &isize);
+ const UC *last = input + isize;
+ luaL_Buffer buffer;
+ /* end-of-input blackhole */
+@@ -318,9 +311,9 @@ static int mime_global_unb64(lua_State *L)
+ lua_settop(L, 2);
+ /* process first part of the input */
+ luaL_buffinit(L, &buffer);
+- while (input < last)
++ while (input < last)
+ asize = b64decode(*input++, atom, asize, &buffer);
+- input = (UC *) luaL_optlstring(L, 2, NULL, &isize);
++ input = (const UC *) luaL_optlstring(L, 2, NULL, &isize);
+ /* if second is nil, we are done */
+ if (!input) {
+ size_t osize = 0;
+@@ -333,7 +326,7 @@ static int mime_global_unb64(lua_State *L)
+ }
+ /* otherwise, process the rest of the input */
+ last = input + isize;
+- while (input < last)
++ while (input < last)
+ asize = b64decode(*input++, atom, asize, &buffer);
+ luaL_pushresult(&buffer);
+ lua_pushlstring(L, (char *) atom, asize);
+@@ -349,7 +342,7 @@ static int mime_global_unb64(lua_State *L)
+ * 9 and 32 can be plain, unless in the end of a line, where must be =XX
+ * encoded lines must be no longer than 76 not counting CRLF
+ * soft line-break are =CRLF
+-* To encode one byte, we need to see the next two.
++* To encode one byte, we need to see the next two.
+ * Worst case is when we see a space, and wonder if a CRLF is comming
+ \*-------------------------------------------------------------------------*/
+ /*-------------------------------------------------------------------------*\
+@@ -362,7 +355,7 @@ static void qpsetup(UC *cl, UC *unbase)
+ for (i = 0; i < 256; i++) cl[i] = QP_QUOTED;
+ for (i = 33; i <= 60; i++) cl[i] = QP_PLAIN;
+ for (i = 62; i <= 126; i++) cl[i] = QP_PLAIN;
+- cl['\t'] = QP_IF_LAST;
++ cl['\t'] = QP_IF_LAST;
+ cl[' '] = QP_IF_LAST;
+ cl['\r'] = QP_CR;
+ for (i = 0; i < 256; i++) unbase[i] = 255;
+@@ -388,9 +381,9 @@ static void qpquote(UC c, luaL_Buffer *buffer)
+
+ /*-------------------------------------------------------------------------*\
+ * Accumulate characters until we are sure about how to deal with them.
+-* Once we are sure, output to the buffer, in the correct form.
++* Once we are sure, output to the buffer, in the correct form.
+ \*-------------------------------------------------------------------------*/
+-static size_t qpencode(UC c, UC *input, size_t size,
++static size_t qpencode(UC c, UC *input, size_t size,
+ const char *marker, luaL_Buffer *buffer)
+ {
+ input[size++] = c;
+@@ -431,7 +424,7 @@ static size_t qpencode(UC c, UC *input, size_t size,
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* Deal with the final characters
++* Deal with the final characters
+ \*-------------------------------------------------------------------------*/
+ static size_t qppad(UC *input, size_t size, luaL_Buffer *buffer)
+ {
+@@ -448,8 +441,8 @@ static size_t qppad(UC *input, size_t size, luaL_Buffer *buffer)
+ * Incrementally converts a string to quoted-printable
+ * A, B = qp(C, D, marker)
+ * Marker is the text to be used to replace CRLF sequences found in A.
+-* A is the encoded version of the largest prefix of C .. D that
+-* can be encoded without doubts.
++* A is the encoded version of the largest prefix of C .. D that
++* can be encoded without doubts.
+ * B has the remaining bytes of C .. D, *without* encoding.
+ \*-------------------------------------------------------------------------*/
+ static int mime_global_qp(lua_State *L)
+@@ -457,7 +450,7 @@ static int mime_global_qp(lua_State *L)
+
+ size_t asize = 0, isize = 0;
+ UC atom[3];
+- const UC *input = (UC *) luaL_optlstring(L, 1, NULL, &isize);
++ const UC *input = (const UC *) luaL_optlstring(L, 1, NULL, &isize);
+ const UC *last = input + isize;
+ const char *marker = luaL_optstring(L, 3, CRLF);
+ luaL_Buffer buffer;
+@@ -473,7 +466,7 @@ static int mime_global_qp(lua_State *L)
+ luaL_buffinit(L, &buffer);
+ while (input < last)
+ asize = qpencode(*input++, atom, asize, marker, &buffer);
+- input = (UC *) luaL_optlstring(L, 2, NULL, &isize);
++ input = (const UC *) luaL_optlstring(L, 2, NULL, &isize);
+ /* if second part is nil, we are done */
+ if (!input) {
+ asize = qppad(atom, asize, &buffer);
+@@ -493,7 +486,7 @@ static int mime_global_qp(lua_State *L)
+
+ /*-------------------------------------------------------------------------*\
+ * Accumulate characters until we are sure about how to deal with them.
+-* Once we are sure, output the to the buffer, in the correct form.
++* Once we are sure, output the to the buffer, in the correct form.
+ \*-------------------------------------------------------------------------*/
+ static size_t qpdecode(UC c, UC *input, size_t size, luaL_Buffer *buffer) {
+ int d;
+@@ -501,8 +494,8 @@ static size_t qpdecode(UC c, UC *input, size_t size, luaL_Buffer *buffer) {
+ /* deal with all characters we can deal */
+ switch (input[0]) {
+ /* if we have an escape character */
+- case '=':
+- if (size < 3) return size;
++ case '=':
++ if (size < 3) return size;
+ /* eliminate soft line break */
+ if (input[1] == '\r' && input[2] == '\n') return 0;
+ /* decode quoted representation */
+@@ -512,7 +505,7 @@ static size_t qpdecode(UC c, UC *input, size_t size, luaL_Buffer *buffer) {
+ else luaL_addchar(buffer, (char) ((c << 4) + d));
+ return 0;
+ case '\r':
+- if (size < 2) return size;
++ if (size < 2) return size;
+ if (input[1] == '\n') luaL_addlstring(buffer, (char *)input, 2);
+ return 0;
+ default:
+@@ -525,15 +518,15 @@ static size_t qpdecode(UC c, UC *input, size_t size, luaL_Buffer *buffer) {
+ /*-------------------------------------------------------------------------*\
+ * Incrementally decodes a string in quoted-printable
+ * A, B = qp(C, D)
+-* A is the decoded version of the largest prefix of C .. D that
+-* can be decoded without doubts.
++* A is the decoded version of the largest prefix of C .. D that
++* can be decoded without doubts.
+ * B has the remaining bytes of C .. D, *without* decoding.
+ \*-------------------------------------------------------------------------*/
+ static int mime_global_unqp(lua_State *L)
+ {
+ size_t asize = 0, isize = 0;
+ UC atom[3];
+- const UC *input = (UC *) luaL_optlstring(L, 1, NULL, &isize);
++ const UC *input = (const UC *) luaL_optlstring(L, 1, NULL, &isize);
+ const UC *last = input + isize;
+ luaL_Buffer buffer;
+ /* end-of-input blackhole */
+@@ -548,14 +541,14 @@ static int mime_global_unqp(lua_State *L)
+ luaL_buffinit(L, &buffer);
+ while (input < last)
+ asize = qpdecode(*input++, atom, asize, &buffer);
+- input = (UC *) luaL_optlstring(L, 2, NULL, &isize);
++ input = (const UC *) luaL_optlstring(L, 2, NULL, &isize);
+ /* if second part is nil, we are done */
+ if (!input) {
+ luaL_pushresult(&buffer);
+ if (!(*lua_tostring(L, -1))) lua_pushnil(L);
+ lua_pushnil(L);
+ return 2;
+- }
++ }
+ /* otherwise process rest of input */
+ last = input + isize;
+ while (input < last)
+@@ -568,9 +561,9 @@ static int mime_global_unqp(lua_State *L)
+ /*-------------------------------------------------------------------------*\
+ * Incrementally breaks a quoted-printed string into lines
+ * A, n = qpwrp(l, B, length)
+-* A is a copy of B, broken into lines of at most 'length' bytes.
+-* 'l' is how many bytes are left for the first line of B.
+-* 'n' is the number of bytes left in the last line of A.
++* A is a copy of B, broken into lines of at most 'length' bytes.
++* 'l' is how many bytes are left for the first line of B.
++* 'n' is the number of bytes left in the last line of A.
+ * There are two complications: lines can't be broken in the middle
+ * of an encoded =XX, and there might be line breaks already
+ \*-------------------------------------------------------------------------*/
+@@ -578,7 +571,7 @@ static int mime_global_qpwrp(lua_State *L)
+ {
+ size_t size = 0;
+ int left = (int) luaL_checknumber(L, 1);
+- const UC *input = (UC *) luaL_optlstring(L, 2, NULL, &size);
++ const UC *input = (const UC *) luaL_optlstring(L, 2, NULL, &size);
+ const UC *last = input + size;
+ int length = (int) luaL_optnumber(L, 3, 76);
+ luaL_Buffer buffer;
+@@ -603,11 +596,11 @@ static int mime_global_qpwrp(lua_State *L)
+ if (left <= 3) {
+ left = length;
+ luaL_addstring(&buffer, EQCRLF);
+- }
++ }
+ luaL_addchar(&buffer, *input);
+ left--;
+ break;
+- default:
++ default:
+ if (left <= 1) {
+ left = length;
+ luaL_addstring(&buffer, EQCRLF);
+@@ -635,7 +628,7 @@ static int mime_global_qpwrp(lua_State *L)
+ * last is the previous character
+ \*-------------------------------------------------------------------------*/
+ #define eolcandidate(c) (c == '\r' || c == '\n')
+-static int eolprocess(int c, int last, const char *marker,
++static int eolprocess(int c, int last, const char *marker,
+ luaL_Buffer *buffer)
+ {
+ if (eolcandidate(c)) {
+@@ -653,15 +646,15 @@ static int eolprocess(int c, int last, const char *marker,
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* Converts a string to uniform EOL convention.
++* Converts a string to uniform EOL convention.
+ * A, n = eol(o, B, marker)
+ * A is the converted version of the largest prefix of B that can be
+-* converted unambiguously. 'o' is the context returned by the previous
++* converted unambiguously. 'o' is the context returned by the previous
+ * call. 'n' is the new context.
+ \*-------------------------------------------------------------------------*/
+ static int mime_global_eol(lua_State *L)
+ {
+- int ctx = luaL_checkint(L, 1);
++ int ctx = luaL_checkinteger(L, 1);
+ size_t isize = 0;
+ const char *input = luaL_optlstring(L, 2, NULL, &isize);
+ const char *last = input + isize;
+@@ -683,18 +676,18 @@ static int mime_global_eol(lua_State *L)
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* Takes one byte and stuff it if needed.
++* Takes one byte and stuff it if needed.
+ \*-------------------------------------------------------------------------*/
+ static size_t dot(int c, size_t state, luaL_Buffer *buffer)
+ {
+ luaL_addchar(buffer, (char) c);
+ switch (c) {
+- case '\r':
++ case '\r':
+ return 1;
+- case '\n':
+- return (state == 1)? 2: 0;
+- case '.':
+- if (state == 2)
++ case '\n':
++ return (state == 1)? 2: 0;
++ case '.':
++ if (state == 2)
+ luaL_addchar(buffer, '.');
+ default:
+ return 0;
+@@ -719,7 +712,7 @@ static int mime_global_dot(lua_State *L)
+ }
+ /* process all input */
+ luaL_buffinit(L, &buffer);
+- while (input < last)
++ while (input < last)
+ state = dot(*input++, state, &buffer);
+ luaL_pushresult(&buffer);
+ lua_pushnumber(L, (lua_Number) state);
+diff --git a/src/options.c b/src/options.c
+index 8ac2a14..20f4c28 100644
+--- a/src/options.c
++++ b/src/options.c
+@@ -1,8 +1,8 @@
+ /*=========================================================================*\
+-* Common option interface
++* Common option interface
+ * LuaSocket toolkit
+ \*=========================================================================*/
+-#include <string.h>
++#include <string.h>
+
+ #include "lauxlib.h"
+
+@@ -20,9 +20,9 @@ static int opt_setboolean(lua_State *L, p_socket ps, int level, int name);
+ static int opt_getboolean(lua_State *L, p_socket ps, int level, int name);
+ static int opt_setint(lua_State *L, p_socket ps, int level, int name);
+ static int opt_getint(lua_State *L, p_socket ps, int level, int name);
+-static int opt_set(lua_State *L, p_socket ps, int level, int name,
++static int opt_set(lua_State *L, p_socket ps, int level, int name,
+ void *val, int len);
+-static int opt_get(lua_State *L, p_socket ps, int level, int name,
++static int opt_get(lua_State *L, p_socket ps, int level, int name,
+ void *val, int* len);
+
+ /*=========================================================================*\
+@@ -60,29 +60,29 @@ int opt_meth_getoption(lua_State *L, p_opt opt, p_socket ps)
+ /* enables reuse of local address */
+ int opt_set_reuseaddr(lua_State *L, p_socket ps)
+ {
+- return opt_setboolean(L, ps, SOL_SOCKET, SO_REUSEADDR);
++ return opt_setboolean(L, ps, SOL_SOCKET, SO_REUSEADDR);
+ }
+
+ int opt_get_reuseaddr(lua_State *L, p_socket ps)
+ {
+- return opt_getboolean(L, ps, SOL_SOCKET, SO_REUSEADDR);
++ return opt_getboolean(L, ps, SOL_SOCKET, SO_REUSEADDR);
+ }
+
+ /* enables reuse of local port */
+ int opt_set_reuseport(lua_State *L, p_socket ps)
+ {
+- return opt_setboolean(L, ps, SOL_SOCKET, SO_REUSEPORT);
++ return opt_setboolean(L, ps, SOL_SOCKET, SO_REUSEPORT);
+ }
+
+ int opt_get_reuseport(lua_State *L, p_socket ps)
+ {
+- return opt_getboolean(L, ps, SOL_SOCKET, SO_REUSEPORT);
++ return opt_getboolean(L, ps, SOL_SOCKET, SO_REUSEPORT);
+ }
+
+ /* disables the Naggle algorithm */
+ int opt_set_tcp_nodelay(lua_State *L, p_socket ps)
+ {
+- return opt_setboolean(L, ps, IPPROTO_TCP, TCP_NODELAY);
++ return opt_setboolean(L, ps, IPPROTO_TCP, TCP_NODELAY);
+ }
+
+ int opt_get_tcp_nodelay(lua_State *L, p_socket ps)
+@@ -92,12 +92,12 @@ int opt_get_tcp_nodelay(lua_State *L, p_socket ps)
+
+ int opt_set_keepalive(lua_State *L, p_socket ps)
+ {
+- return opt_setboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE);
++ return opt_setboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE);
+ }
+
+ int opt_get_keepalive(lua_State *L, p_socket ps)
+ {
+- return opt_getboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE);
++ return opt_getboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE);
+ }
+
+ int opt_set_dontroute(lua_State *L, p_socket ps)
+@@ -105,11 +105,21 @@ int opt_set_dontroute(lua_State *L, p_socket ps)
+ return opt_setboolean(L, ps, SOL_SOCKET, SO_DONTROUTE);
+ }
+
++int opt_get_dontroute(lua_State *L, p_socket ps)
++{
++ return opt_getboolean(L, ps, SOL_SOCKET, SO_DONTROUTE);
++}
++
+ int opt_set_broadcast(lua_State *L, p_socket ps)
+ {
+ return opt_setboolean(L, ps, SOL_SOCKET, SO_BROADCAST);
+ }
+
++int opt_get_broadcast(lua_State *L, p_socket ps)
++{
++ return opt_getboolean(L, ps, SOL_SOCKET, SO_BROADCAST);
++}
++
+ int opt_set_ip6_unicast_hops(lua_State *L, p_socket ps)
+ {
+ return opt_setint(L, ps, IPPROTO_IPV6, IPV6_UNICAST_HOPS);
+@@ -156,12 +166,12 @@ int opt_set_linger(lua_State *L, p_socket ps)
+ if (!lua_istable(L, 3)) auxiliar_typeerror(L,3,lua_typename(L, LUA_TTABLE));
+ lua_pushstring(L, "on");
+ lua_gettable(L, 3);
+- if (!lua_isboolean(L, -1))
++ if (!lua_isboolean(L, -1))
+ luaL_argerror(L, 3, "boolean 'on' field expected");
+ li.l_onoff = (u_short) lua_toboolean(L, -1);
+ lua_pushstring(L, "timeout");
+ lua_gettable(L, 3);
+- if (!lua_isnumber(L, -1))
++ if (!lua_isnumber(L, -1))
+ luaL_argerror(L, 3, "number 'timeout' field expected");
+ li.l_linger = (u_short) lua_tonumber(L, -1);
+ return opt_set(L, ps, SOL_SOCKET, SO_LINGER, (char *) &li, sizeof(li));
+@@ -194,7 +204,7 @@ int opt_set_ip_multicast_if(lua_State *L, p_socket ps)
+ val.s_addr = htonl(INADDR_ANY);
+ if (strcmp(address, "*") && !inet_aton(address, &val))
+ luaL_argerror(L, 3, "ip expected");
+- return opt_set(L, ps, IPPROTO_IP, IP_MULTICAST_IF,
++ return opt_set(L, ps, IPPROTO_IP, IP_MULTICAST_IF,
+ (char *) &val, sizeof(val));
+ }
+
+@@ -250,17 +260,17 @@ static int opt_setmembership(lua_State *L, p_socket ps, int level, int name)
+ if (!lua_istable(L, 3)) auxiliar_typeerror(L,3,lua_typename(L, LUA_TTABLE));
+ lua_pushstring(L, "multiaddr");
+ lua_gettable(L, 3);
+- if (!lua_isstring(L, -1))
++ if (!lua_isstring(L, -1))
+ luaL_argerror(L, 3, "string 'multiaddr' field expected");
+- if (!inet_aton(lua_tostring(L, -1), &val.imr_multiaddr))
++ if (!inet_aton(lua_tostring(L, -1), &val.imr_multiaddr))
+ luaL_argerror(L, 3, "invalid 'multiaddr' ip address");
+ lua_pushstring(L, "interface");
+ lua_gettable(L, 3);
+- if (!lua_isstring(L, -1))
++ if (!lua_isstring(L, -1))
+ luaL_argerror(L, 3, "string 'interface' field expected");
+ val.imr_interface.s_addr = htonl(INADDR_ANY);
+ if (strcmp(lua_tostring(L, -1), "*") &&
+- !inet_aton(lua_tostring(L, -1), &val.imr_interface))
++ !inet_aton(lua_tostring(L, -1), &val.imr_interface))
+ luaL_argerror(L, 3, "invalid 'interface' ip address");
+ return opt_set(L, ps, level, name, (char *) &val, sizeof(val));
+ }
+@@ -272,14 +282,14 @@ static int opt_ip6_setmembership(lua_State *L, p_socket ps, int level, int name)
+ if (!lua_istable(L, 3)) auxiliar_typeerror(L,3,lua_typename(L, LUA_TTABLE));
+ lua_pushstring(L, "multiaddr");
+ lua_gettable(L, 3);
+- if (!lua_isstring(L, -1))
++ if (!lua_isstring(L, -1))
+ luaL_argerror(L, 3, "string 'multiaddr' field expected");
+- if (!inet_pton(AF_INET6, lua_tostring(L, -1), &val.ipv6mr_multiaddr))
++ if (!inet_pton(AF_INET6, lua_tostring(L, -1), &val.ipv6mr_multiaddr))
+ luaL_argerror(L, 3, "invalid 'multiaddr' ip address");
+ lua_pushstring(L, "interface");
+ lua_gettable(L, 3);
+ /* By default we listen to interface on default route
+- * (sigh). However, interface= can override it. We should
++ * (sigh). However, interface= can override it. We should
+ * support either number, or name for it. Waiting for
+ * windows port of if_nametoindex */
+ if (!lua_isnil(L, -1)) {
+@@ -291,7 +301,7 @@ static int opt_ip6_setmembership(lua_State *L, p_socket ps, int level, int name)
+ return opt_set(L, ps, level, name, (char *) &val, sizeof(val));
+ }
+
+-static
++static
+ int opt_get(lua_State *L, p_socket ps, int level, int name, void *val, int* len)
+ {
+ socklen_t socklen = *len;
+@@ -304,7 +314,7 @@ int opt_get(lua_State *L, p_socket ps, int level, int name, void *val, int* len)
+ return 0;
+ }
+
+-static
++static
+ int opt_set(lua_State *L, p_socket ps, int level, int name, void *val, int len)
+ {
+ if (setsockopt(*ps, level, name, (char *) val, len) < 0) {
+diff --git a/src/options.h b/src/options.h
+index 5657a06..19ba0df 100644
+--- a/src/options.h
++++ b/src/options.h
+@@ -21,7 +21,6 @@ typedef t_opt *p_opt;
+ /* supported options for setoption */
+ int opt_set_dontroute(lua_State *L, p_socket ps);
+ int opt_set_broadcast(lua_State *L, p_socket ps);
+-int opt_set_reuseaddr(lua_State *L, p_socket ps);
+ int opt_set_tcp_nodelay(lua_State *L, p_socket ps);
+ int opt_set_keepalive(lua_State *L, p_socket ps);
+ int opt_set_linger(lua_State *L, p_socket ps);
+@@ -40,18 +39,21 @@ int opt_set_ip6_drop_membersip(lua_State *L, p_socket ps);
+ int opt_set_ip6_v6only(lua_State *L, p_socket ps);
+
+ /* supported options for getoption */
++int opt_get_dontroute(lua_State *L, p_socket ps);
++int opt_get_broadcast(lua_State *L, p_socket ps);
+ int opt_get_reuseaddr(lua_State *L, p_socket ps);
++int opt_get_reuseport(lua_State *L, p_socket ps);
+ int opt_get_tcp_nodelay(lua_State *L, p_socket ps);
+ int opt_get_keepalive(lua_State *L, p_socket ps);
+ int opt_get_linger(lua_State *L, p_socket ps);
+-int opt_get_reuseaddr(lua_State *L, p_socket ps);
+ int opt_get_ip_multicast_loop(lua_State *L, p_socket ps);
+ int opt_get_ip_multicast_if(lua_State *L, p_socket ps);
+ int opt_get_error(lua_State *L, p_socket ps);
+ int opt_get_ip6_multicast_loop(lua_State *L, p_socket ps);
+ int opt_get_ip6_multicast_hops(lua_State *L, p_socket ps);
+ int opt_get_ip6_unicast_hops(lua_State *L, p_socket ps);
+-int opt_get_ip6_v6only(lua_State *L, p_socket ps);
++int opt_get_ip6_v6only(lua_State *L, p_socket ps);
++int opt_get_reuseport(lua_State *L, p_socket ps);
+
+ /* invokes the appropriate option handler */
+ int opt_meth_setoption(lua_State *L, p_opt opt, p_socket ps);
+diff --git a/src/pierror.h b/src/pierror.h
+new file mode 100644
+index 0000000..cb773ab
+--- /dev/null
++++ b/src/pierror.h
+@@ -0,0 +1,28 @@
++#ifndef PIERROR_H
++#define PIERROR_H
++/*=========================================================================*\
++* Error messages
++* Defines platform independent error messages
++\*=========================================================================*/
++
++#define PIE_HOST_NOT_FOUND "host not found"
++#define PIE_ADDRINUSE "address already in use"
++#define PIE_ISCONN "already connected"
++#define PIE_ACCESS "permission denied"
++#define PIE_CONNREFUSED "connection refused"
++#define PIE_CONNABORTED "closed"
++#define PIE_CONNRESET "closed"
++#define PIE_TIMEDOUT "timeout"
++#define PIE_AGAIN "temporary failure in name resolution"
++#define PIE_BADFLAGS "invalid value for ai_flags"
++#define PIE_BADHINTS "invalid value for hints"
++#define PIE_FAIL "non-recoverable failure in name resolution"
++#define PIE_FAMILY "ai_family not supported"
++#define PIE_MEMORY "memory allocation failure"
++#define PIE_NONAME "host or service not provided, or not known"
++#define PIE_OVERFLOW "argument buffer overflow"
++#define PIE_PROTOCOL "resolved protocol is unknown"
++#define PIE_SERVICE "service not supported for socket type"
++#define PIE_SOCKTYPE "ai_socktype not supported"
++
++#endif
+diff --git a/src/select.c b/src/select.c
+index fafaa62..9d133b7 100644
+--- a/src/select.c
++++ b/src/select.c
+@@ -6,6 +6,7 @@
+
+ #include "lua.h"
+ #include "lauxlib.h"
++#include "compat.h"
+
+ #include "socket.h"
+ #include "timeout.h"
+@@ -16,10 +17,10 @@
+ \*=========================================================================*/
+ static t_socket getfd(lua_State *L);
+ static int dirty(lua_State *L);
+-static void collect_fd(lua_State *L, int tab, int itab,
++static void collect_fd(lua_State *L, int tab, int itab,
+ fd_set *set, t_socket *max_fd);
+ static int check_dirty(lua_State *L, int tab, int dtab, fd_set *set);
+-static void return_fd(lua_State *L, fd_set *set, t_socket max_fd,
++static void return_fd(lua_State *L, fd_set *set, t_socket max_fd,
+ int itab, int tab, int start);
+ static void make_assoc(lua_State *L, int tab);
+ static int global_select(lua_State *L);
+@@ -38,13 +39,12 @@ static luaL_Reg func[] = {
+ \*-------------------------------------------------------------------------*/
+ int select_open(lua_State *L) {
+ lua_pushstring(L, "_SETSIZE");
+- lua_pushnumber(L, FD_SETSIZE);
++ lua_pushinteger(L, FD_SETSIZE);
++ lua_rawset(L, -3);
++ lua_pushstring(L, "_SOCKETINVALID");
++ lua_pushinteger(L, SOCKET_INVALID);
+ lua_rawset(L, -3);
+-#if LUA_VERSION_NUM > 501 && !defined(LUA_COMPAT_MODULE)
+ luaL_setfuncs(L, func, 0);
+-#else
+- luaL_openlib(L, NULL, func, 0);
+-#endif
+ return 0;
+ }
+
+@@ -98,10 +98,10 @@ static t_socket getfd(lua_State *L) {
+ lua_pushvalue(L, -2);
+ lua_call(L, 1, 1);
+ if (lua_isnumber(L, -1)) {
+- double numfd = lua_tonumber(L, -1);
++ double numfd = lua_tonumber(L, -1);
+ fd = (numfd >= 0.0)? (t_socket) numfd: SOCKET_INVALID;
+ }
+- }
++ }
+ lua_pop(L, 1);
+ return fd;
+ }
+@@ -114,12 +114,12 @@ static int dirty(lua_State *L) {
+ lua_pushvalue(L, -2);
+ lua_call(L, 1, 1);
+ is = lua_toboolean(L, -1);
+- }
++ }
+ lua_pop(L, 1);
+ return is;
+ }
+
+-static void collect_fd(lua_State *L, int tab, int itab,
++static void collect_fd(lua_State *L, int tab, int itab,
+ fd_set *set, t_socket *max_fd) {
+ int i = 1, n = 0;
+ /* nil is the same as an empty table */
+@@ -139,16 +139,16 @@ static void collect_fd(lua_State *L, int tab, int itab,
+ if (fd != SOCKET_INVALID) {
+ /* make sure we don't overflow the fd_set */
+ #ifdef _WIN32
+- if (n >= FD_SETSIZE)
++ if (n >= FD_SETSIZE)
+ luaL_argerror(L, tab, "too many sockets");
+ #else
+- if (fd >= FD_SETSIZE)
++ if (fd >= FD_SETSIZE)
+ luaL_argerror(L, tab, "descriptor too large for set size");
+ #endif
+ FD_SET(fd, set);
+ n++;
+ /* keep track of the largest descriptor so far */
+- if (*max_fd == SOCKET_INVALID || *max_fd < fd)
++ if (*max_fd == SOCKET_INVALID || *max_fd < fd)
+ *max_fd = fd;
+ /* make sure we can map back from descriptor to the object */
+ lua_pushnumber(L, (lua_Number) fd);
+@@ -162,9 +162,9 @@ static void collect_fd(lua_State *L, int tab, int itab,
+
+ static int check_dirty(lua_State *L, int tab, int dtab, fd_set *set) {
+ int ndirty = 0, i = 1;
+- if (lua_isnil(L, tab))
++ if (lua_isnil(L, tab))
+ return 0;
+- for ( ;; ) {
++ for ( ;; ) {
+ t_socket fd;
+ lua_pushnumber(L, i);
+ lua_gettable(L, tab);
+@@ -185,7 +185,7 @@ static int check_dirty(lua_State *L, int tab, int dtab, fd_set *set) {
+ return ndirty;
+ }
+
+-static void return_fd(lua_State *L, fd_set *set, t_socket max_fd,
++static void return_fd(lua_State *L, fd_set *set, t_socket max_fd,
+ int itab, int tab, int start) {
+ t_socket fd;
+ for (fd = 0; fd < max_fd; fd++) {
+diff --git a/src/serial.c b/src/serial.c
+index 583d4e5..7bdb21c 100644
+--- a/src/serial.c
++++ b/src/serial.c
+@@ -2,7 +2,7 @@
+ * Serial stream
+ * LuaSocket toolkit
+ \*=========================================================================*/
+-#include <string.h>
++#include <string.h>
+
+ #include "lua.h"
+ #include "lauxlib.h"
+@@ -11,7 +11,7 @@
+ #include "socket.h"
+ #include "options.h"
+ #include "unix.h"
+-#include <sys/un.h>
++#include <sys/un.h>
+
+ /*
+ Reuses userdata definition from unix.h, since it is useful for all
+@@ -54,15 +54,6 @@ static luaL_Reg serial_methods[] = {
+ {NULL, NULL}
+ };
+
+-/* our socket creation function */
+-/* this is an ad-hoc module that returns a single function
+- * as such, do not include other functions in this array. */
+-static luaL_Reg func[] = {
+- {"serial", global_create},
+- {NULL, NULL}
+-};
+-
+-
+ /*-------------------------------------------------------------------------*\
+ * Initializes module
+ \*-------------------------------------------------------------------------*/
+@@ -71,14 +62,7 @@ LUASOCKET_API int luaopen_socket_serial(lua_State *L) {
+ auxiliar_newclass(L, "serial{client}", serial_methods);
+ /* create class groups */
+ auxiliar_add2group(L, "serial{client}", "serial{any}");
+-#if LUA_VERSION_NUM > 501 && !defined(LUA_COMPAT_MODULE)
+- lua_pushcfunction(L, global_create);
+- (void) func;
+-#else
+- /* set function into socket namespace */
+- luaL_openlib(L, "socket", func, 0);
+ lua_pushcfunction(L, global_create);
+-#endif
+ return 1;
+ }
+
+@@ -120,7 +104,7 @@ static int meth_getfd(lua_State *L) {
+ /* this is very dangerous, but can be handy for those that are brave enough */
+ static int meth_setfd(lua_State *L) {
+ p_unix un = (p_unix) auxiliar_checkgroup(L, "serial{any}", 1);
+- un->sock = (t_socket) luaL_checknumber(L, 2);
++ un->sock = (t_socket) luaL_checknumber(L, 2);
+ return 0;
+ }
+
+@@ -131,7 +115,7 @@ static int meth_dirty(lua_State *L) {
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* Closes socket used by object
++* Closes socket used by object
+ \*-------------------------------------------------------------------------*/
+ static int meth_close(lua_State *L)
+ {
+@@ -156,7 +140,7 @@ static int meth_settimeout(lua_State *L) {
+
+
+ /*-------------------------------------------------------------------------*\
+-* Creates a serial object
++* Creates a serial object
+ \*-------------------------------------------------------------------------*/
+ static int global_create(lua_State *L) {
+ const char* path = luaL_checkstring(L, 1);
+@@ -180,7 +164,7 @@ static int global_create(lua_State *L) {
+ /* initialize remaining structure fields */
+ socket_setnonblocking(&sock);
+ un->sock = sock;
+- io_init(&un->io, (p_send) socket_write, (p_recv) socket_read,
++ io_init(&un->io, (p_send) socket_write, (p_recv) socket_read,
+ (p_error) socket_ioerror, &un->sock);
+ timeout_init(&un->tm, -1, -1);
+ buffer_init(&un->buf, &un->io, &un->tm);
+diff --git a/src/socket.lua b/src/socket.lua
+index 3913e6f..d1c0b16 100644
+--- a/src/socket.lua
++++ b/src/socket.lua
+@@ -32,23 +32,23 @@ function _M.bind(host, port, backlog)
+ err = "no info on address"
+ for i, alt in base.ipairs(addrinfo) do
+ if alt.family == "inet" then
+- sock, err = socket.tcp()
++ sock, err = socket.tcp4()
+ else
+ sock, err = socket.tcp6()
+ end
+ if not sock then return nil, err end
+ sock:setoption("reuseaddr", true)
+ res, err = sock:bind(alt.addr, port)
+- if not res then
++ if not res then
+ sock:close()
+- else
++ else
+ res, err = sock:listen(backlog)
+- if not res then
++ if not res then
+ sock:close()
+ else
+ return sock
+ end
+- end
++ end
+ end
+ return nil, err
+ end
+diff --git a/src/tcp.c b/src/tcp.c
+index 6594bda..ef9ee6f 100644
+--- a/src/tcp.c
++++ b/src/tcp.c
+@@ -6,6 +6,7 @@
+
+ #include "lua.h"
+ #include "lauxlib.h"
++#include "compat.h"
+
+ #include "auxiliar.h"
+ #include "socket.h"
+@@ -17,6 +18,7 @@
+ * Internal function prototypes
+ \*=========================================================================*/
+ static int global_create(lua_State *L);
++static int global_create4(lua_State *L);
+ static int global_create6(lua_State *L);
+ static int global_connect(lua_State *L);
+ static int meth_connect(lua_State *L);
+@@ -34,6 +36,7 @@ static int meth_accept(lua_State *L);
+ static int meth_close(lua_State *L);
+ static int meth_getoption(lua_State *L);
+ static int meth_setoption(lua_State *L);
++static int meth_gettimeout(lua_State *L);
+ static int meth_settimeout(lua_State *L);
+ static int meth_getfd(lua_State *L);
+ static int meth_setfd(lua_State *L);
+@@ -63,6 +66,7 @@ static luaL_Reg tcp_methods[] = {
+ {"setpeername", meth_connect},
+ {"setsockname", meth_bind},
+ {"settimeout", meth_settimeout},
++ {"gettimeout", meth_gettimeout},
+ {"shutdown", meth_shutdown},
+ {NULL, NULL}
+ };
+@@ -71,6 +75,7 @@ static luaL_Reg tcp_methods[] = {
+ static t_opt optget[] = {
+ {"keepalive", opt_get_keepalive},
+ {"reuseaddr", opt_get_reuseaddr},
++ {"reuseport", opt_get_reuseport},
+ {"tcp-nodelay", opt_get_tcp_nodelay},
+ {"linger", opt_get_linger},
+ {"error", opt_get_error},
+@@ -80,6 +85,7 @@ static t_opt optget[] = {
+ static t_opt optset[] = {
+ {"keepalive", opt_set_keepalive},
+ {"reuseaddr", opt_set_reuseaddr},
++ {"reuseport", opt_set_reuseport},
+ {"tcp-nodelay", opt_set_tcp_nodelay},
+ {"ipv6-v6only", opt_set_ip6_v6only},
+ {"linger", opt_set_linger},
+@@ -89,6 +95,7 @@ static t_opt optset[] = {
+ /* functions in library namespace */
+ static luaL_Reg func[] = {
+ {"tcp", global_create},
++ {"tcp4", global_create4},
+ {"tcp6", global_create6},
+ {"connect", global_connect},
+ {NULL, NULL}
+@@ -108,11 +115,7 @@ int tcp_open(lua_State *L)
+ auxiliar_add2group(L, "tcp{client}", "tcp{any}");
+ auxiliar_add2group(L, "tcp{server}", "tcp{any}");
+ /* define library functions */
+-#if LUA_VERSION_NUM > 501 && !defined(LUA_COMPAT_MODULE)
+ luaL_setfuncs(L, func, 0);
+-#else
+- luaL_openlib(L, NULL, func, 0);
+-#endif
+ return 0;
+ }
+
+@@ -216,8 +219,7 @@ static int meth_accept(lua_State *L)
+ /*-------------------------------------------------------------------------*\
+ * Binds an object to an address
+ \*-------------------------------------------------------------------------*/
+-static int meth_bind(lua_State *L)
+-{
++static int meth_bind(lua_State *L) {
+ p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{master}", 1);
+ const char *address = luaL_checkstring(L, 2);
+ const char *port = luaL_checkstring(L, 3);
+@@ -227,7 +229,7 @@ static int meth_bind(lua_State *L)
+ bindhints.ai_socktype = SOCK_STREAM;
+ bindhints.ai_family = tcp->family;
+ bindhints.ai_flags = AI_PASSIVE;
+- err = inet_trybind(&tcp->sock, address, port, &bindhints);
++ err = inet_trybind(&tcp->sock, &tcp->family, address, port, &bindhints);
+ if (err) {
+ lua_pushnil(L);
+ lua_pushstring(L, err);
+@@ -240,8 +242,7 @@ static int meth_bind(lua_State *L)
+ /*-------------------------------------------------------------------------*\
+ * Turns a master tcp object into a client object.
+ \*-------------------------------------------------------------------------*/
+-static int meth_connect(lua_State *L)
+-{
++static int meth_connect(lua_State *L) {
+ p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1);
+ const char *address = luaL_checkstring(L, 2);
+ const char *port = luaL_checkstring(L, 3);
+@@ -252,7 +253,7 @@ static int meth_connect(lua_State *L)
+ /* make sure we try to connect only to the same family */
+ connecthints.ai_family = tcp->family;
+ timeout_markstart(&tcp->tm);
+- err = inet_tryconnect(&tcp->sock, &tcp->family, address, port,
++ err = inet_tryconnect(&tcp->sock, &tcp->family, address, port,
+ &tcp->tm, &connecthints);
+ /* have to set the class even if it failed due to non-blocking connects */
+ auxiliar_setclass(L, "tcp{client}", 1);
+@@ -282,9 +283,12 @@ static int meth_close(lua_State *L)
+ static int meth_getfamily(lua_State *L)
+ {
+ p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1);
+- if (tcp->family == PF_INET6) {
++ if (tcp->family == AF_INET6) {
+ lua_pushliteral(L, "inet6");
+ return 1;
++ } else if (tcp->family == AF_INET) {
++ lua_pushliteral(L, "inet4");
++ return 1;
+ } else {
+ lua_pushliteral(L, "inet4");
+ return 1;
+@@ -348,6 +352,12 @@ static int meth_settimeout(lua_State *L)
+ return timeout_meth_settimeout(L, &tcp->tm);
+ }
+
++static int meth_gettimeout(lua_State *L)
++{
++ p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1);
++ return timeout_meth_gettimeout(L, &tcp->tm);
++}
++
+ /*=========================================================================*\
+ * Library functions
+ \*=========================================================================*/
+@@ -355,37 +365,36 @@ static int meth_settimeout(lua_State *L)
+ * Creates a master tcp object
+ \*-------------------------------------------------------------------------*/
+ static int tcp_create(lua_State *L, int family) {
+- t_socket sock;
+- const char *err = inet_trycreate(&sock, family, SOCK_STREAM);
+- /* try to allocate a system socket */
+- if (!err) {
+- /* allocate tcp object */
+- p_tcp tcp = (p_tcp) lua_newuserdata(L, sizeof(t_tcp));
+- memset(tcp, 0, sizeof(t_tcp));
+- /* set its type as master object */
+- auxiliar_setclass(L, "tcp{master}", -1);
+- /* initialize remaining structure fields */
+- socket_setnonblocking(&sock);
+- if (family == PF_INET6) {
+- int yes = 1;
+- setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY,
+- (void *)&yes, sizeof(yes));
++ p_tcp tcp = (p_tcp) lua_newuserdata(L, sizeof(t_tcp));
++ memset(tcp, 0, sizeof(t_tcp));
++ /* set its type as master object */
++ auxiliar_setclass(L, "tcp{master}", -1);
++ /* if family is AF_UNSPEC, we leave the socket invalid and
++ * store AF_UNSPEC into family. This will allow it to later be
++ * replaced with an AF_INET6 or AF_INET socket upon first use. */
++ tcp->sock = SOCKET_INVALID;
++ tcp->family = family;
++ io_init(&tcp->io, (p_send) socket_send, (p_recv) socket_recv,
++ (p_error) socket_ioerror, &tcp->sock);
++ timeout_init(&tcp->tm, -1, -1);
++ buffer_init(&tcp->buf, &tcp->io, &tcp->tm);
++ if (family != AF_UNSPEC) {
++ const char *err = inet_trycreate(&tcp->sock, family, SOCK_STREAM, 0);
++ if (err != NULL) {
++ lua_pushnil(L);
++ lua_pushstring(L, err);
++ return 2;
+ }
+- tcp->sock = sock;
+- io_init(&tcp->io, (p_send) socket_send, (p_recv) socket_recv,
+- (p_error) socket_ioerror, &tcp->sock);
+- timeout_init(&tcp->tm, -1, -1);
+- buffer_init(&tcp->buf, &tcp->io, &tcp->tm);
+- tcp->family = family;
+- return 1;
+- } else {
+- lua_pushnil(L);
+- lua_pushstring(L, err);
+- return 2;
++ socket_setnonblocking(&tcp->sock);
+ }
++ return 1;
+ }
+
+ static int global_create(lua_State *L) {
++ return tcp_create(L, AF_UNSPEC);
++}
++
++static int global_create4(lua_State *L) {
+ return tcp_create(L, AF_INET);
+ }
+
+@@ -393,53 +402,6 @@ static int global_create6(lua_State *L) {
+ return tcp_create(L, AF_INET6);
+ }
+
+-#if 0
+-static const char *tryconnect6(const char *remoteaddr, const char *remoteserv,
+- struct addrinfo *connecthints, p_tcp tcp) {
+- struct addrinfo *iterator = NULL, *resolved = NULL;
+- const char *err = NULL;
+- /* try resolving */
+- err = socket_gaistrerror(getaddrinfo(remoteaddr, remoteserv,
+- connecthints, &resolved));
+- if (err != NULL) {
+- if (resolved) freeaddrinfo(resolved);
+- return err;
+- }
+- /* iterate over all returned addresses trying to connect */
+- for (iterator = resolved; iterator; iterator = iterator->ai_next) {
+- p_timeout tm = timeout_markstart(&tcp->tm);
+- /* create new socket if necessary. if there was no
+- * bind, we need to create one for every new family
+- * that shows up while iterating. if there was a
+- * bind, all families will be the same and we will
+- * not enter this branch. */
+- if (tcp->family != iterator->ai_family) {
+- socket_destroy(&tcp->sock);
+- err = socket_strerror(socket_create(&tcp->sock,
+- iterator->ai_family, iterator->ai_socktype,
+- iterator->ai_protocol));
+- if (err != NULL) {
+- freeaddrinfo(resolved);
+- return err;
+- }
+- tcp->family = iterator->ai_family;
+- /* all sockets initially non-blocking */
+- socket_setnonblocking(&tcp->sock);
+- }
+- /* finally try connecting to remote address */
+- err = socket_strerror(socket_connect(&tcp->sock,
+- (SA *) iterator->ai_addr,
+- (socklen_t) iterator->ai_addrlen, tm));
+- /* if success, break out of loop */
+- if (err == NULL) break;
+- }
+-
+- freeaddrinfo(resolved);
+- /* here, if err is set, we failed */
+- return err;
+-}
+-#endif
+-
+ static int global_connect(lua_State *L) {
+ const char *remoteaddr = luaL_checkstring(L, 1);
+ const char *remoteserv = luaL_checkstring(L, 2);
+@@ -456,26 +418,26 @@ static int global_connect(lua_State *L) {
+ timeout_init(&tcp->tm, -1, -1);
+ buffer_init(&tcp->buf, &tcp->io, &tcp->tm);
+ tcp->sock = SOCKET_INVALID;
+- tcp->family = PF_UNSPEC;
++ tcp->family = AF_UNSPEC;
+ /* allow user to pick local address and port */
+ memset(&bindhints, 0, sizeof(bindhints));
+ bindhints.ai_socktype = SOCK_STREAM;
+ bindhints.ai_family = family;
+ bindhints.ai_flags = AI_PASSIVE;
+ if (localaddr) {
+- err = inet_trybind(&tcp->sock, localaddr, localserv, &bindhints);
++ err = inet_trybind(&tcp->sock, &tcp->family, localaddr,
++ localserv, &bindhints);
+ if (err) {
+ lua_pushnil(L);
+ lua_pushstring(L, err);
+ return 2;
+ }
+- tcp->family = bindhints.ai_family;
+ }
+ /* try to connect to remote address and port */
+ memset(&connecthints, 0, sizeof(connecthints));
+ connecthints.ai_socktype = SOCK_STREAM;
+ /* make sure we try to connect only to the same family */
+- connecthints.ai_family = bindhints.ai_family;
++ connecthints.ai_family = tcp->family;
+ err = inet_tryconnect(&tcp->sock, &tcp->family, remoteaddr, remoteserv,
+ &tcp->tm, &connecthints);
+ if (err) {
+diff --git a/src/timeout.c b/src/timeout.c
+index bdd5e1c..5a601d5 100644
+--- a/src/timeout.c
++++ b/src/timeout.c
+@@ -8,6 +8,7 @@
+
+ #include "lua.h"
+ #include "lauxlib.h"
++#include "compat.h"
+
+ #include "auxiliar.h"
+ #include "timeout.h"
+@@ -52,7 +53,7 @@ void timeout_init(p_timeout tm, double block, double total) {
+
+ /*-------------------------------------------------------------------------*\
+ * Determines how much time we have left for the next system call,
+-* if the previous call was successful
++* if the previous call was successful
+ * Input
+ * tm: timeout control structure
+ * Returns
+@@ -107,7 +108,7 @@ double timeout_getretry(p_timeout tm) {
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* Marks the operation start time in structure
++* Marks the operation start time in structure
+ * Input
+ * tm: timeout control structure
+ \*-------------------------------------------------------------------------*/
+@@ -117,7 +118,7 @@ p_timeout timeout_markstart(p_timeout tm) {
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* Gets time in s, relative to January 1, 1970 (UTC)
++* Gets time in s, relative to January 1, 1970 (UTC)
+ * Returns
+ * time in s.
+ \*-------------------------------------------------------------------------*/
+@@ -144,11 +145,7 @@ double timeout_gettime(void) {
+ * Initializes module
+ \*-------------------------------------------------------------------------*/
+ int timeout_open(lua_State *L) {
+-#if LUA_VERSION_NUM > 501 && !defined(LUA_COMPAT_MODULE)
+ luaL_setfuncs(L, func, 0);
+-#else
+- luaL_openlib(L, NULL, func, 0);
+-#endif
+ return 0;
+ }
+
+@@ -163,7 +160,7 @@ int timeout_meth_settimeout(lua_State *L, p_timeout tm) {
+ const char *mode = luaL_optstring(L, 3, "b");
+ switch (*mode) {
+ case 'b':
+- tm->block = t;
++ tm->block = t;
+ break;
+ case 'r': case 't':
+ tm->total = t;
+@@ -176,6 +173,16 @@ int timeout_meth_settimeout(lua_State *L, p_timeout tm) {
+ return 1;
+ }
+
++/*-------------------------------------------------------------------------*\
++* Gets timeout values for IO operations
++* Lua Output: block, total
++\*-------------------------------------------------------------------------*/
++int timeout_meth_gettimeout(lua_State *L, p_timeout tm) {
++ lua_pushnumber(L, tm->block);
++ lua_pushnumber(L, tm->total);
++ return 2;
++}
++
+ /*=========================================================================*\
+ * Test support functions
+ \*=========================================================================*/
+diff --git a/src/timeout.h b/src/timeout.h
+index 6715ca7..af90231 100644
+--- a/src/timeout.h
++++ b/src/timeout.h
+@@ -22,6 +22,7 @@ p_timeout timeout_markstart(p_timeout tm);
+ double timeout_getstart(p_timeout tm);
+ double timeout_gettime(void);
+ int timeout_meth_settimeout(lua_State *L, p_timeout tm);
++int timeout_meth_gettimeout(lua_State *L, p_timeout tm);
+
+ #define timeout_iszero(tm) ((tm)->block == 0.0)
+
+diff --git a/src/tp.lua b/src/tp.lua
+index cbeff56..328cbab 100644
+--- a/src/tp.lua
++++ b/src/tp.lua
+@@ -74,7 +74,7 @@ function metat.__index:command(cmd, arg)
+ end
+
+ function metat.__index:sink(snk, pat)
+- local chunk, err = c:receive(pat)
++ local chunk, err = self.c:receive(pat)
+ return snk(chunk, err)
+ end
+
+diff --git a/src/udp.c b/src/udp.c
+index a9f2393..ec97252 100644
+--- a/src/udp.c
++++ b/src/udp.c
+@@ -7,6 +7,7 @@
+
+ #include "lua.h"
+ #include "lauxlib.h"
++#include "compat.h"
+
+ #include "auxiliar.h"
+ #include "socket.h"
+@@ -26,6 +27,7 @@
+ * Internal function prototypes
+ \*=========================================================================*/
+ static int global_create(lua_State *L);
++static int global_create4(lua_State *L);
+ static int global_create6(lua_State *L);
+ static int meth_send(lua_State *L);
+ static int meth_sendto(lua_State *L);
+@@ -34,6 +36,7 @@ static int meth_receivefrom(lua_State *L);
+ static int meth_getfamily(lua_State *L);
+ static int meth_getsockname(lua_State *L);
+ static int meth_getpeername(lua_State *L);
++static int meth_gettimeout(lua_State *L);
+ static int meth_setsockname(lua_State *L);
+ static int meth_setpeername(lua_State *L);
+ static int meth_close(lua_State *L);
+@@ -64,6 +67,7 @@ static luaL_Reg udp_methods[] = {
+ {"setpeername", meth_setpeername},
+ {"setsockname", meth_setsockname},
+ {"settimeout", meth_settimeout},
++ {"gettimeout", meth_gettimeout},
+ {NULL, NULL}
+ };
+
+@@ -89,6 +93,10 @@ static t_opt optset[] = {
+
+ /* socket options for getoption */
+ static t_opt optget[] = {
++ {"dontroute", opt_get_dontroute},
++ {"broadcast", opt_get_broadcast},
++ {"reuseaddr", opt_get_reuseaddr},
++ {"reuseport", opt_get_reuseport},
+ {"ip-multicast-if", opt_get_ip_multicast_if},
+ {"ip-multicast-loop", opt_get_ip_multicast_loop},
+ {"error", opt_get_error},
+@@ -102,6 +110,7 @@ static t_opt optget[] = {
+ /* functions in library namespace */
+ static luaL_Reg func[] = {
+ {"udp", global_create},
++ {"udp4", global_create4},
+ {"udp6", global_create6},
+ {NULL, NULL}
+ };
+@@ -109,8 +118,7 @@ static luaL_Reg func[] = {
+ /*-------------------------------------------------------------------------*\
+ * Initializes module
+ \*-------------------------------------------------------------------------*/
+-int udp_open(lua_State *L)
+-{
++int udp_open(lua_State *L) {
+ /* create classes */
+ auxiliar_newclass(L, "udp{connected}", udp_methods);
+ auxiliar_newclass(L, "udp{unconnected}", udp_methods);
+@@ -120,18 +128,18 @@ int udp_open(lua_State *L)
+ auxiliar_add2group(L, "udp{connected}", "select{able}");
+ auxiliar_add2group(L, "udp{unconnected}", "select{able}");
+ /* define library functions */
+-#if LUA_VERSION_NUM > 501 && !defined(LUA_COMPAT_MODULE)
+ luaL_setfuncs(L, func, 0);
+-#else
+- luaL_openlib(L, NULL, func, 0);
+-#endif
++ /* export default UDP size */
++ lua_pushliteral(L, "_DATAGRAMSIZE");
++ lua_pushinteger(L, UDP_DATAGRAMSIZE);
++ lua_rawset(L, -3);
+ return 0;
+ }
+
+ /*=========================================================================*\
+ * Lua methods
+ \*=========================================================================*/
+-const char *udp_strerror(int err) {
++static const char *udp_strerror(int err) {
+ /* a 'closed' error on an unconnected means the target address was not
+ * accepted by the transport layer */
+ if (err == IO_CLOSED) return "refused";
+@@ -182,7 +190,7 @@ static int meth_sendto(lua_State *L) {
+ return 2;
+ }
+ timeout_markstart(tm);
+- err = socket_sendto(&udp->sock, data, count, &sent, ai->ai_addr,
++ err = socket_sendto(&udp->sock, data, count, &sent, ai->ai_addr,
+ (socklen_t) ai->ai_addrlen, tm);
+ freeaddrinfo(ai);
+ if (err != IO_DONE) {
+@@ -199,71 +207,80 @@ static int meth_sendto(lua_State *L) {
+ \*-------------------------------------------------------------------------*/
+ static int meth_receive(lua_State *L) {
+ p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1);
+- char buffer[UDP_DATAGRAMSIZE];
+- size_t got, count = (size_t) luaL_optnumber(L, 2, sizeof(buffer));
++ char buf[UDP_DATAGRAMSIZE];
++ size_t got, wanted = (size_t) luaL_optnumber(L, 2, sizeof(buf));
++ char *dgram = wanted > sizeof(buf)? (char *) malloc(wanted): buf;
+ int err;
+ p_timeout tm = &udp->tm;
+- count = MIN(count, sizeof(buffer));
+ timeout_markstart(tm);
+- err = socket_recv(&udp->sock, buffer, count, &got, tm);
++ if (!dgram) {
++ lua_pushnil(L);
++ lua_pushliteral(L, "out of memory");
++ return 2;
++ }
++ err = socket_recv(&udp->sock, dgram, wanted, &got, tm);
+ /* Unlike TCP, recv() of zero is not closed, but a zero-length packet. */
+- if (err == IO_CLOSED)
+- err = IO_DONE;
+- if (err != IO_DONE) {
++ if (err != IO_DONE && err != IO_CLOSED) {
+ lua_pushnil(L);
+ lua_pushstring(L, udp_strerror(err));
++ if (wanted > sizeof(buf)) free(dgram);
+ return 2;
+ }
+- lua_pushlstring(L, buffer, got);
++ lua_pushlstring(L, dgram, got);
++ if (wanted > sizeof(buf)) free(dgram);
+ return 1;
+ }
+
+ /*-------------------------------------------------------------------------*\
+ * Receives data and sender from a UDP socket
+ \*-------------------------------------------------------------------------*/
+-static int meth_receivefrom(lua_State *L)
+-{
++static int meth_receivefrom(lua_State *L) {
+ p_udp udp = (p_udp) auxiliar_checkclass(L, "udp{unconnected}", 1);
+- char buffer[UDP_DATAGRAMSIZE];
+- size_t got, count = (size_t) luaL_optnumber(L, 2, sizeof(buffer));
+- int err;
+- p_timeout tm = &udp->tm;
++ char buf[UDP_DATAGRAMSIZE];
++ size_t got, wanted = (size_t) luaL_optnumber(L, 2, sizeof(buf));
++ char *dgram = wanted > sizeof(buf)? (char *) malloc(wanted): buf;
+ struct sockaddr_storage addr;
+ socklen_t addr_len = sizeof(addr);
+ char addrstr[INET6_ADDRSTRLEN];
+ char portstr[6];
++ int err;
++ p_timeout tm = &udp->tm;
+ timeout_markstart(tm);
+- count = MIN(count, sizeof(buffer));
+- err = socket_recvfrom(&udp->sock, buffer, count, &got, (SA *) &addr,
++ if (!dgram) {
++ lua_pushnil(L);
++ lua_pushliteral(L, "out of memory");
++ return 2;
++ }
++ err = socket_recvfrom(&udp->sock, dgram, wanted, &got, (SA *) &addr,
+ &addr_len, tm);
+ /* Unlike TCP, recv() of zero is not closed, but a zero-length packet. */
+- if (err == IO_CLOSED)
+- err = IO_DONE;
+- if (err != IO_DONE) {
++ if (err != IO_DONE && err != IO_CLOSED) {
+ lua_pushnil(L);
+ lua_pushstring(L, udp_strerror(err));
++ if (wanted > sizeof(buf)) free(dgram);
+ return 2;
+ }
+- err = getnameinfo((struct sockaddr *)&addr, addr_len, addrstr,
++ err = getnameinfo((struct sockaddr *)&addr, addr_len, addrstr,
+ INET6_ADDRSTRLEN, portstr, 6, NI_NUMERICHOST | NI_NUMERICSERV);
+ if (err) {
+ lua_pushnil(L);
+ lua_pushstring(L, gai_strerror(err));
++ if (wanted > sizeof(buf)) free(dgram);
+ return 2;
+ }
+- lua_pushlstring(L, buffer, got);
++ lua_pushlstring(L, dgram, got);
+ lua_pushstring(L, addrstr);
+ lua_pushinteger(L, (int) strtol(portstr, (char **) NULL, 10));
++ if (wanted > sizeof(buf)) free(dgram);
+ return 3;
+ }
+
+ /*-------------------------------------------------------------------------*\
+ * Returns family as string
+ \*-------------------------------------------------------------------------*/
+-static int meth_getfamily(lua_State *L)
+-{
++static int meth_getfamily(lua_State *L) {
+ p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1);
+- if (udp->family == PF_INET6) {
++ if (udp->family == AF_INET6) {
+ lua_pushliteral(L, "inet6");
+ return 1;
+ } else {
+@@ -332,6 +349,11 @@ static int meth_settimeout(lua_State *L) {
+ return timeout_meth_settimeout(L, &udp->tm);
+ }
+
++static int meth_gettimeout(lua_State *L) {
++ p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1);
++ return timeout_meth_gettimeout(L, &udp->tm);
++}
++
+ /*-------------------------------------------------------------------------*\
+ * Turns a master udp object into a client object.
+ \*-------------------------------------------------------------------------*/
+@@ -348,7 +370,7 @@ static int meth_setpeername(lua_State *L) {
+ /* make sure we try to connect only to the same family */
+ connecthints.ai_family = udp->family;
+ if (connecting) {
+- err = inet_tryconnect(&udp->sock, &udp->family, address,
++ err = inet_tryconnect(&udp->sock, &udp->family, address,
+ port, tm, &connecthints);
+ if (err) {
+ lua_pushnil(L);
+@@ -362,7 +384,6 @@ static int meth_setpeername(lua_State *L) {
+ inet_trydisconnect(&udp->sock, udp->family, tm);
+ auxiliar_setclass(L, "udp{unconnected}", 1);
+ }
+- /* change class to connected or unconnected depending on address */
+ lua_pushnumber(L, 1);
+ return 1;
+ }
+@@ -390,7 +411,7 @@ static int meth_setsockname(lua_State *L) {
+ bindhints.ai_socktype = SOCK_DGRAM;
+ bindhints.ai_family = udp->family;
+ bindhints.ai_flags = AI_PASSIVE;
+- err = inet_trybind(&udp->sock, address, port, &bindhints);
++ err = inet_trybind(&udp->sock, &udp->family, address, port, &bindhints);
+ if (err) {
+ lua_pushnil(L);
+ lua_pushstring(L, err);
+@@ -407,32 +428,32 @@ static int meth_setsockname(lua_State *L) {
+ * Creates a master udp object
+ \*-------------------------------------------------------------------------*/
+ static int udp_create(lua_State *L, int family) {
+- t_socket sock;
+- const char *err = inet_trycreate(&sock, family, SOCK_DGRAM);
+- /* try to allocate a system socket */
+- if (!err) {
+- /* allocate udp object */
+- p_udp udp = (p_udp) lua_newuserdata(L, sizeof(t_udp));
+- auxiliar_setclass(L, "udp{unconnected}", -1);
+- /* initialize remaining structure fields */
+- socket_setnonblocking(&sock);
+- if (family == PF_INET6) {
+- int yes = 1;
+- setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY,
+- (void *)&yes, sizeof(yes));
++ /* allocate udp object */
++ p_udp udp = (p_udp) lua_newuserdata(L, sizeof(t_udp));
++ auxiliar_setclass(L, "udp{unconnected}", -1);
++ /* if family is AF_UNSPEC, we leave the socket invalid and
++ * store AF_UNSPEC into family. This will allow it to later be
++ * replaced with an AF_INET6 or AF_INET socket upon first use. */
++ udp->sock = SOCKET_INVALID;
++ timeout_init(&udp->tm, -1, -1);
++ udp->family = family;
++ if (family != AF_UNSPEC) {
++ const char *err = inet_trycreate(&udp->sock, family, SOCK_DGRAM, 0);
++ if (err != NULL) {
++ lua_pushnil(L);
++ lua_pushstring(L, err);
++ return 2;
+ }
+- udp->sock = sock;
+- timeout_init(&udp->tm, -1, -1);
+- udp->family = family;
+- return 1;
+- } else {
+- lua_pushnil(L);
+- lua_pushstring(L, err);
+- return 2;
++ socket_setnonblocking(&udp->sock);
+ }
++ return 1;
+ }
+
+ static int global_create(lua_State *L) {
++ return udp_create(L, AF_UNSPEC);
++}
++
++static int global_create4(lua_State *L) {
+ return udp_create(L, AF_INET);
+ }
+
+diff --git a/src/udp.h b/src/udp.h
+index 2b831a5..be9b6a5 100644
+--- a/src/udp.h
++++ b/src/udp.h
+@@ -8,7 +8,7 @@
+ * (AF_INET, SOCK_DGRAM).
+ *
+ * Two classes are defined: connected and unconnected. UDP objects are
+-* originally unconnected. They can be "connected" to a given address
++* originally unconnected. They can be "connected" to a given address
+ * with a call to the setpeername function. The same function can be used to
+ * break the connection.
+ \*=========================================================================*/
+@@ -17,7 +17,6 @@
+ #include "timeout.h"
+ #include "socket.h"
+
+-/* can't be larger than wsocket.c MAXCHUNK!!! */
+ #define UDP_DATAGRAMSIZE 8192
+
+ typedef struct t_udp_ {
+diff --git a/src/unix.c b/src/unix.c
+index 91aaaf8..5bc3148 100644
+--- a/src/unix.c
++++ b/src/unix.c
+@@ -1,8 +1,8 @@
+ /*=========================================================================*\
+-* Unix domain socket
++* Unix domain socket
+ * LuaSocket toolkit
+ \*=========================================================================*/
+-#include <string.h>
++#include <string.h>
+
+ #include "lua.h"
+ #include "lauxlib.h"
+@@ -11,7 +11,7 @@
+ #include "socket.h"
+ #include "options.h"
+ #include "unix.h"
+-#include <sys/un.h>
++#include <sys/un.h>
+
+ /*=========================================================================*\
+ * Internal function prototypes
+@@ -68,15 +68,6 @@ static t_opt optset[] = {
+ {NULL, NULL}
+ };
+
+-/* our socket creation function */
+-/* this is an ad-hoc module that returns a single function
+- * as such, do not include other functions in this array. */
+-static luaL_Reg func[] = {
+- {"unix", global_create},
+- {NULL, NULL}
+-};
+-
+-
+ /*-------------------------------------------------------------------------*\
+ * Initializes module
+ \*-------------------------------------------------------------------------*/
+@@ -89,15 +80,8 @@ int luaopen_socket_unix(lua_State *L) {
+ auxiliar_add2group(L, "unix{master}", "unix{any}");
+ auxiliar_add2group(L, "unix{client}", "unix{any}");
+ auxiliar_add2group(L, "unix{server}", "unix{any}");
+-#if LUA_VERSION_NUM > 501 && !defined(LUA_COMPAT_MODULE)
+- lua_pushcfunction(L, global_create);
+- (void) func;
+-#else
+- /* set function into socket namespace */
+- luaL_openlib(L, "socket", func, 0);
+- lua_pushcfunction(L, global_create);
+-#endif
+ /* return the function instead of the 'socket' table */
++ lua_pushcfunction(L, global_create);
+ return 1;
+ }
+
+@@ -147,7 +131,7 @@ static int meth_getfd(lua_State *L) {
+ /* this is very dangerous, but can be handy for those that are brave enough */
+ static int meth_setfd(lua_State *L) {
+ p_unix un = (p_unix) auxiliar_checkgroup(L, "unix{any}", 1);
+- un->sock = (t_socket) luaL_checknumber(L, 2);
++ un->sock = (t_socket) luaL_checknumber(L, 2);
+ return 0;
+ }
+
+@@ -158,8 +142,8 @@ static int meth_dirty(lua_State *L) {
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* Waits for and returns a client object attempting connection to the
+-* server object
++* Waits for and returns a client object attempting connection to the
++* server object
+ \*-------------------------------------------------------------------------*/
+ static int meth_accept(lua_State *L) {
+ p_unix server = (p_unix) auxiliar_checkclass(L, "unix{server}", 1);
+@@ -173,20 +157,20 @@ static int meth_accept(lua_State *L) {
+ /* initialize structure fields */
+ socket_setnonblocking(&sock);
+ clnt->sock = sock;
+- io_init(&clnt->io, (p_send)socket_send, (p_recv)socket_recv,
++ io_init(&clnt->io, (p_send)socket_send, (p_recv)socket_recv,
+ (p_error) socket_ioerror, &clnt->sock);
+ timeout_init(&clnt->tm, -1, -1);
+ buffer_init(&clnt->buf, &clnt->io, &clnt->tm);
+ return 1;
+ } else {
+- lua_pushnil(L);
++ lua_pushnil(L);
+ lua_pushstring(L, socket_strerror(err));
+ return 2;
+ }
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* Binds an object to an address
++* Binds an object to an address
+ \*-------------------------------------------------------------------------*/
+ static const char *unix_trybind(p_unix un, const char *path) {
+ struct sockaddr_un local;
+@@ -197,16 +181,16 @@ static const char *unix_trybind(p_unix un, const char *path) {
+ strcpy(local.sun_path, path);
+ local.sun_family = AF_UNIX;
+ #ifdef UNIX_HAS_SUN_LEN
+- local.sun_len = sizeof(local.sun_family) + sizeof(local.sun_len)
++ local.sun_len = sizeof(local.sun_family) + sizeof(local.sun_len)
+ + len + 1;
+ err = socket_bind(&un->sock, (SA *) &local, local.sun_len);
+
+-#else
+- err = socket_bind(&un->sock, (SA *) &local,
++#else
++ err = socket_bind(&un->sock, (SA *) &local,
+ sizeof(local.sun_family) + len);
+ #endif
+ if (err != IO_DONE) socket_destroy(&un->sock);
+- return socket_strerror(err);
++ return socket_strerror(err);
+ }
+
+ static int meth_bind(lua_State *L) {
+@@ -236,11 +220,11 @@ static const char *unix_tryconnect(p_unix un, const char *path)
+ remote.sun_family = AF_UNIX;
+ timeout_markstart(&un->tm);
+ #ifdef UNIX_HAS_SUN_LEN
+- remote.sun_len = sizeof(remote.sun_family) + sizeof(remote.sun_len)
++ remote.sun_len = sizeof(remote.sun_family) + sizeof(remote.sun_len)
+ + len + 1;
+ err = socket_connect(&un->sock, (SA *) &remote, remote.sun_len, &un->tm);
+ #else
+- err = socket_connect(&un->sock, (SA *) &remote,
++ err = socket_connect(&un->sock, (SA *) &remote,
+ sizeof(remote.sun_family) + len, &un->tm);
+ #endif
+ if (err != IO_DONE) socket_destroy(&un->sock);
+@@ -264,7 +248,7 @@ static int meth_connect(lua_State *L)
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* Closes socket used by object
++* Closes socket used by object
+ \*-------------------------------------------------------------------------*/
+ static int meth_close(lua_State *L)
+ {
+@@ -319,13 +303,13 @@ static int meth_settimeout(lua_State *L) {
+ * Library functions
+ \*=========================================================================*/
+ /*-------------------------------------------------------------------------*\
+-* Creates a master unix object
++* Creates a master unix object
+ \*-------------------------------------------------------------------------*/
+ static int global_create(lua_State *L) {
+ t_socket sock;
+ int err = socket_create(&sock, AF_UNIX, SOCK_STREAM, 0);
+ /* try to allocate a system socket */
+- if (err == IO_DONE) {
++ if (err == IO_DONE) {
+ /* allocate unix object */
+ p_unix un = (p_unix) lua_newuserdata(L, sizeof(t_unix));
+ /* set its type as master object */
+@@ -333,7 +317,7 @@ static int global_create(lua_State *L) {
+ /* initialize remaining structure fields */
+ socket_setnonblocking(&sock);
+ un->sock = sock;
+- io_init(&un->io, (p_send) socket_send, (p_recv) socket_recv,
++ io_init(&un->io, (p_send) socket_send, (p_recv) socket_recv,
+ (p_error) socket_ioerror, &un->sock);
+ timeout_init(&un->tm, -1, -1);
+ buffer_init(&un->buf, &un->io, &un->tm);
+diff --git a/src/url.lua b/src/url.lua
+index 7809535..fbd93d1 100644
+--- a/src/url.lua
++++ b/src/url.lua
+@@ -219,6 +219,7 @@ end
+ -- corresponding absolute url
+ -----------------------------------------------------------------------------
+ function _M.absolute(base_url, relative_url)
++ local base_parsed
+ if base.type(base_url) == "table" then
+ base_parsed = base_url
+ base_url = _M.build(base_parsed)
+diff --git a/src/usocket.c b/src/usocket.c
+index 096ecd0..8adc573 100644
+--- a/src/usocket.c
++++ b/src/usocket.c
+@@ -4,12 +4,13 @@
+ *
+ * The code is now interrupt-safe.
+ * The penalty of calling select to avoid busy-wait is only paid when
+-* the I/O call fail in the first place.
++* the I/O call fail in the first place.
+ \*=========================================================================*/
+-#include <string.h>
++#include <string.h>
+ #include <signal.h>
+
+ #include "socket.h"
++#include "pierror.h"
+
+ /*-------------------------------------------------------------------------*\
+ * Wait for readable/writable/connected socket with timeout
+@@ -72,7 +73,7 @@ int socket_waitfd(p_socket ps, int sw, p_timeout tm) {
+
+
+ /*-------------------------------------------------------------------------*\
+-* Initializes module
++* Initializes module
+ \*-------------------------------------------------------------------------*/
+ int socket_open(void) {
+ /* instals a handler to ignore sigpipe or it will crash us */
+@@ -81,7 +82,7 @@ int socket_open(void) {
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* Close module
++* Close module
+ \*-------------------------------------------------------------------------*/
+ int socket_close(void) {
+ return 1;
+@@ -92,7 +93,6 @@ int socket_close(void) {
+ \*-------------------------------------------------------------------------*/
+ void socket_destroy(p_socket ps) {
+ if (*ps != SOCKET_INVALID) {
+- socket_setblocking(ps);
+ close(*ps);
+ *ps = SOCKET_INVALID;
+ }
+@@ -101,7 +101,7 @@ void socket_destroy(p_socket ps) {
+ /*-------------------------------------------------------------------------*\
+ * Select with timeout control
+ \*-------------------------------------------------------------------------*/
+-int socket_select(t_socket n, fd_set *rfds, fd_set *wfds, fd_set *efds,
++int socket_select(t_socket n, fd_set *rfds, fd_set *wfds, fd_set *efds,
+ p_timeout tm) {
+ int ret;
+ do {
+@@ -120,8 +120,8 @@ int socket_select(t_socket n, fd_set *rfds, fd_set *wfds, fd_set *efds,
+ \*-------------------------------------------------------------------------*/
+ int socket_create(p_socket ps, int domain, int type, int protocol) {
+ *ps = socket(domain, type, protocol);
+- if (*ps != SOCKET_INVALID) return IO_DONE;
+- else return errno;
++ if (*ps != SOCKET_INVALID) return IO_DONE;
++ else return errno;
+ }
+
+ /*-------------------------------------------------------------------------*\
+@@ -130,29 +130,25 @@ int socket_create(p_socket ps, int domain, int type, int protocol) {
+ int socket_bind(p_socket ps, SA *addr, socklen_t len) {
+ int err = IO_DONE;
+ socket_setblocking(ps);
+- if (bind(*ps, addr, len) < 0) err = errno;
++ if (bind(*ps, addr, len) < 0) err = errno;
+ socket_setnonblocking(ps);
+ return err;
+ }
+
+ /*-------------------------------------------------------------------------*\
+-*
++*
+ \*-------------------------------------------------------------------------*/
+ int socket_listen(p_socket ps, int backlog) {
+- int err = IO_DONE;
+- socket_setblocking(ps);
+- if (listen(*ps, backlog)) err = errno;
+- socket_setnonblocking(ps);
++ int err = IO_DONE;
++ if (listen(*ps, backlog)) err = errno;
+ return err;
+ }
+
+ /*-------------------------------------------------------------------------*\
+-*
++*
+ \*-------------------------------------------------------------------------*/
+ void socket_shutdown(p_socket ps, int how) {
+- socket_setblocking(ps);
+ shutdown(*ps, how);
+- socket_setnonblocking(ps);
+ }
+
+ /*-------------------------------------------------------------------------*\
+@@ -166,7 +162,7 @@ int socket_connect(p_socket ps, SA *addr, socklen_t len, p_timeout tm) {
+ do if (connect(*ps, addr, len) == 0) return IO_DONE;
+ while ((err = errno) == EINTR);
+ /* if connection failed immediately, return error code */
+- if (err != EINPROGRESS && err != EAGAIN) return err;
++ if (err != EINPROGRESS && err != EAGAIN) return err;
+ /* zero timeout case optimization */
+ if (timeout_iszero(tm)) return IO_TIMEOUT;
+ /* wait until we have the result of the connection attempt or timeout */
+@@ -181,7 +177,7 @@ int socket_connect(p_socket ps, SA *addr, socklen_t len, p_timeout tm) {
+ * Accept with timeout
+ \*-------------------------------------------------------------------------*/
+ int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len, p_timeout tm) {
+- if (*ps == SOCKET_INVALID) return IO_CLOSED;
++ if (*ps == SOCKET_INVALID) return IO_CLOSED;
+ for ( ;; ) {
+ int err;
+ if ((*pa = accept(*ps, addr, len)) != SOCKET_INVALID) return IO_DONE;
+@@ -197,7 +193,7 @@ int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len, p_timeout
+ /*-------------------------------------------------------------------------*\
+ * Send with timeout
+ \*-------------------------------------------------------------------------*/
+-int socket_send(p_socket ps, const char *data, size_t count,
++int socket_send(p_socket ps, const char *data, size_t count,
+ size_t *sent, p_timeout tm)
+ {
+ int err;
+@@ -215,6 +211,8 @@ int socket_send(p_socket ps, const char *data, size_t count,
+ err = errno;
+ /* EPIPE means the connection was closed */
+ if (err == EPIPE) return IO_CLOSED;
++ /* EPROTOTYPE means the connection is being closed (on Yosemite!)*/
++ if (err == EPROTOTYPE) continue;
+ /* we call was interrupted, just try again */
+ if (err == EINTR) continue;
+ /* if failed fatal reason, report error */
+@@ -229,20 +227,21 @@ int socket_send(p_socket ps, const char *data, size_t count,
+ /*-------------------------------------------------------------------------*\
+ * Sendto with timeout
+ \*-------------------------------------------------------------------------*/
+-int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent,
++int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent,
+ SA *addr, socklen_t len, p_timeout tm)
+ {
+ int err;
+ *sent = 0;
+ if (*ps == SOCKET_INVALID) return IO_CLOSED;
+ for ( ;; ) {
+- long put = (long) sendto(*ps, data, count, 0, addr, len);
++ long put = (long) sendto(*ps, data, count, 0, addr, len);
+ if (put >= 0) {
+ *sent = put;
+ return IO_DONE;
+ }
+ err = errno;
+ if (err == EPIPE) return IO_CLOSED;
++ if (err == EPROTOTYPE) continue;
+ if (err == EINTR) continue;
+ if (err != EAGAIN) return err;
+ if ((err = socket_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err;
+@@ -266,8 +265,8 @@ int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm
+ err = errno;
+ if (taken == 0) return IO_CLOSED;
+ if (err == EINTR) continue;
+- if (err != EAGAIN) return err;
+- if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
++ if (err != EAGAIN) return err;
++ if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
+ }
+ return IO_UNKNOWN;
+ }
+@@ -275,7 +274,7 @@ int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm
+ /*-------------------------------------------------------------------------*\
+ * Recvfrom with timeout
+ \*-------------------------------------------------------------------------*/
+-int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got,
++int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got,
+ SA *addr, socklen_t *len, p_timeout tm) {
+ int err;
+ *got = 0;
+@@ -289,8 +288,8 @@ int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got,
+ err = errno;
+ if (taken == 0) return IO_CLOSED;
+ if (err == EINTR) continue;
+- if (err != EAGAIN) return err;
+- if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
++ if (err != EAGAIN) return err;
++ if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
+ }
+ return IO_UNKNOWN;
+ }
+@@ -303,7 +302,7 @@ int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got,
+ * with send/recv replaced with write/read. We can't just use write/read
+ * in the socket version, because behaviour when size is zero is different.
+ \*-------------------------------------------------------------------------*/
+-int socket_write(p_socket ps, const char *data, size_t count,
++int socket_write(p_socket ps, const char *data, size_t count,
+ size_t *sent, p_timeout tm)
+ {
+ int err;
+@@ -321,6 +320,8 @@ int socket_write(p_socket ps, const char *data, size_t count,
+ err = errno;
+ /* EPIPE means the connection was closed */
+ if (err == EPIPE) return IO_CLOSED;
++ /* EPROTOTYPE means the connection is being closed (on Yosemite!)*/
++ if (err == EPROTOTYPE) continue;
+ /* we call was interrupted, just try again */
+ if (err == EINTR) continue;
+ /* if failed fatal reason, report error */
+@@ -349,8 +350,8 @@ int socket_read(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm
+ err = errno;
+ if (taken == 0) return IO_CLOSED;
+ if (err == EINTR) continue;
+- if (err != EAGAIN) return err;
+- if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
++ if (err != EAGAIN) return err;
++ if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
+ }
+ return IO_UNKNOWN;
+ }
+@@ -374,7 +375,7 @@ void socket_setnonblocking(p_socket ps) {
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* DNS helpers
++* DNS helpers
+ \*-------------------------------------------------------------------------*/
+ int socket_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp) {
+ *hp = gethostbyaddr(addr, len, AF_INET);
+@@ -399,7 +400,7 @@ int socket_gethostbyname(const char *addr, struct hostent **hp) {
+ const char *socket_hoststrerror(int err) {
+ if (err <= 0) return io_strerror(err);
+ switch (err) {
+- case HOST_NOT_FOUND: return "host not found";
++ case HOST_NOT_FOUND: return PIE_HOST_NOT_FOUND;
+ default: return hstrerror(err);
+ }
+ }
+@@ -407,42 +408,43 @@ const char *socket_hoststrerror(int err) {
+ const char *socket_strerror(int err) {
+ if (err <= 0) return io_strerror(err);
+ switch (err) {
+- case EADDRINUSE: return "address already in use";
+- case EISCONN: return "already connected";
+- case EACCES: return "permission denied";
+- case ECONNREFUSED: return "connection refused";
+- case ECONNABORTED: return "closed";
+- case ECONNRESET: return "closed";
+- case ETIMEDOUT: return "timeout";
+- default: return strerror(err);
++ case EADDRINUSE: return PIE_ADDRINUSE;
++ case EISCONN: return PIE_ISCONN;
++ case EACCES: return PIE_ACCESS;
++ case ECONNREFUSED: return PIE_CONNREFUSED;
++ case ECONNABORTED: return PIE_CONNABORTED;
++ case ECONNRESET: return PIE_CONNRESET;
++ case ETIMEDOUT: return PIE_TIMEDOUT;
++ default: {
++ return strerror(err);
++ }
+ }
+ }
+
+ const char *socket_ioerror(p_socket ps, int err) {
+ (void) ps;
+ return socket_strerror(err);
+-}
++}
+
+ const char *socket_gaistrerror(int err) {
+- if (err == 0) return NULL;
++ if (err == 0) return NULL;
+ switch (err) {
+- case EAI_AGAIN: return "temporary failure in name resolution";
+- case EAI_BADFLAGS: return "invalid value for ai_flags";
++ case EAI_AGAIN: return PIE_AGAIN;
++ case EAI_BADFLAGS: return PIE_BADFLAGS;
+ #ifdef EAI_BADHINTS
+- case EAI_BADHINTS: return "invalid value for hints";
++ case EAI_BADHINTS: return PIE_BADHINTS;
+ #endif
+- case EAI_FAIL: return "non-recoverable failure in name resolution";
+- case EAI_FAMILY: return "ai_family not supported";
+- case EAI_MEMORY: return "memory allocation failure";
+- case EAI_NONAME:
+- return "host or service not provided, or not known";
+- case EAI_OVERFLOW: return "argument buffer overflow";
++ case EAI_FAIL: return PIE_FAIL;
++ case EAI_FAMILY: return PIE_FAMILY;
++ case EAI_MEMORY: return PIE_MEMORY;
++ case EAI_NONAME: return PIE_NONAME;
++ case EAI_OVERFLOW: return PIE_OVERFLOW;
+ #ifdef EAI_PROTOCOL
+- case EAI_PROTOCOL: return "resolved protocol is unknown";
++ case EAI_PROTOCOL: return PIE_PROTOCOL;
+ #endif
+- case EAI_SERVICE: return "service not supported for socket type";
+- case EAI_SOCKTYPE: return "ai_socktype not supported";
+- case EAI_SYSTEM: return strerror(errno);
++ case EAI_SERVICE: return PIE_SERVICE;
++ case EAI_SOCKTYPE: return PIE_SOCKTYPE;
++ case EAI_SYSTEM: return strerror(errno);
+ default: return gai_strerror(err);
+ }
+ }
+diff --git a/src/wsocket.c b/src/wsocket.c
+index b4a4384..8ecb0fc 100644
+--- a/src/wsocket.c
++++ b/src/wsocket.c
+@@ -3,33 +3,34 @@
+ * LuaSocket toolkit
+ *
+ * The penalty of calling select to avoid busy-wait is only paid when
+-* the I/O call fail in the first place.
++* the I/O call fail in the first place.
+ \*=========================================================================*/
+ #include <string.h>
+
+ #include "socket.h"
++#include "pierror.h"
+
+ /* WinSock doesn't have a strerror... */
+ static const char *wstrerror(int err);
+
+ /*-------------------------------------------------------------------------*\
+-* Initializes module
++* Initializes module
+ \*-------------------------------------------------------------------------*/
+ int socket_open(void) {
+ WSADATA wsaData;
+- WORD wVersionRequested = MAKEWORD(2, 0);
++ WORD wVersionRequested = MAKEWORD(2, 0);
+ int err = WSAStartup(wVersionRequested, &wsaData );
+ if (err != 0) return 0;
+ if ((LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 0) &&
+ (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1)) {
+ WSACleanup();
+- return 0;
++ return 0;
+ }
+ return 1;
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* Close module
++* Close module
+ \*-------------------------------------------------------------------------*/
+ int socket_close(void) {
+ WSACleanup();
+@@ -50,10 +51,10 @@ int socket_waitfd(p_socket ps, int sw, p_timeout tm) {
+ struct timeval tv, *tp = NULL;
+ double t;
+ if (timeout_iszero(tm)) return IO_TIMEOUT; /* optimize timeout == 0 case */
+- if (sw & WAITFD_R) {
+- FD_ZERO(&rfds);
++ if (sw & WAITFD_R) {
++ FD_ZERO(&rfds);
+ FD_SET(*ps, &rfds);
+- rp = &rfds;
++ rp = &rfds;
+ }
+ if (sw & WAITFD_W) { FD_ZERO(&wfds); FD_SET(*ps, &wfds); wp = &wfds; }
+ if (sw & WAITFD_C) { FD_ZERO(&efds); FD_SET(*ps, &efds); ep = &efds; }
+@@ -72,9 +73,9 @@ int socket_waitfd(p_socket ps, int sw, p_timeout tm) {
+ /*-------------------------------------------------------------------------*\
+ * Select with int timeout in ms
+ \*-------------------------------------------------------------------------*/
+-int socket_select(t_socket n, fd_set *rfds, fd_set *wfds, fd_set *efds,
++int socket_select(t_socket n, fd_set *rfds, fd_set *wfds, fd_set *efds,
+ p_timeout tm) {
+- struct timeval tv;
++ struct timeval tv;
+ double t = timeout_get(tm);
+ tv.tv_sec = (int) t;
+ tv.tv_usec = (int) ((t - tv.tv_sec) * 1.0e6);
+@@ -96,7 +97,7 @@ void socket_destroy(p_socket ps) {
+ }
+
+ /*-------------------------------------------------------------------------*\
+-*
++*
+ \*-------------------------------------------------------------------------*/
+ void socket_shutdown(p_socket ps, int how) {
+ socket_setblocking(ps);
+@@ -134,10 +135,10 @@ int socket_connect(p_socket ps, SA *addr, socklen_t len, p_timeout tm) {
+ /* give windows time to set the error (yes, disgusting) */
+ Sleep(10);
+ /* find out why we failed */
+- getsockopt(*ps, SOL_SOCKET, SO_ERROR, (char *)&err, &len);
++ getsockopt(*ps, SOL_SOCKET, SO_ERROR, (char *)&err, &len);
+ /* we KNOW there was an error. if 'why' is 0, we will return
+ * "unknown error", but it's not really our fault */
+- return err > 0? err: IO_UNKNOWN;
++ return err > 0? err: IO_UNKNOWN;
+ } else return err;
+
+ }
+@@ -154,7 +155,7 @@ int socket_bind(p_socket ps, SA *addr, socklen_t len) {
+ }
+
+ /*-------------------------------------------------------------------------*\
+-*
++*
+ \*-------------------------------------------------------------------------*/
+ int socket_listen(p_socket ps, int backlog) {
+ int err = IO_DONE;
+@@ -167,7 +168,7 @@ int socket_listen(p_socket ps, int backlog) {
+ /*-------------------------------------------------------------------------*\
+ * Accept with timeout
+ \*-------------------------------------------------------------------------*/
+-int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len,
++int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len,
+ p_timeout tm) {
+ if (*ps == SOCKET_INVALID) return IO_CLOSED;
+ for ( ;; ) {
+@@ -175,21 +176,21 @@ int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len,
+ /* try to get client socket */
+ if ((*pa = accept(*ps, addr, len)) != SOCKET_INVALID) return IO_DONE;
+ /* find out why we failed */
+- err = WSAGetLastError();
++ err = WSAGetLastError();
+ /* if we failed because there was no connectoin, keep trying */
+ if (err != WSAEWOULDBLOCK && err != WSAECONNABORTED) return err;
+ /* call select to avoid busy wait */
+ if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
+- }
++ }
+ }
+
+ /*-------------------------------------------------------------------------*\
+ * Send with timeout
+-* On windows, if you try to send 10MB, the OS will buffer EVERYTHING
+-* this can take an awful lot of time and we will end up blocked.
++* On windows, if you try to send 10MB, the OS will buffer EVERYTHING
++* this can take an awful lot of time and we will end up blocked.
+ * Therefore, whoever calls this function should not pass a huge buffer.
+ \*-------------------------------------------------------------------------*/
+-int socket_send(p_socket ps, const char *data, size_t count,
++int socket_send(p_socket ps, const char *data, size_t count,
+ size_t *sent, p_timeout tm)
+ {
+ int err;
+@@ -206,18 +207,18 @@ int socket_send(p_socket ps, const char *data, size_t count,
+ return IO_DONE;
+ }
+ /* deal with failure */
+- err = WSAGetLastError();
++ err = WSAGetLastError();
+ /* we can only proceed if there was no serious error */
+ if (err != WSAEWOULDBLOCK) return err;
+ /* avoid busy wait */
+ if ((err = socket_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err;
+- }
++ }
+ }
+
+ /*-------------------------------------------------------------------------*\
+ * Sendto with timeout
+ \*-------------------------------------------------------------------------*/
+-int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent,
++int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent,
+ SA *addr, socklen_t len, p_timeout tm)
+ {
+ int err;
+@@ -229,17 +230,17 @@ int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent,
+ *sent = put;
+ return IO_DONE;
+ }
+- err = WSAGetLastError();
++ err = WSAGetLastError();
+ if (err != WSAEWOULDBLOCK) return err;
+ if ((err = socket_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err;
+- }
++ }
+ }
+
+ /*-------------------------------------------------------------------------*\
+ * Receive with timeout
+ \*-------------------------------------------------------------------------*/
+-int socket_recv(p_socket ps, char *data, size_t count, size_t *got,
+- p_timeout tm)
++int socket_recv(p_socket ps, char *data, size_t count, size_t *got,
++ p_timeout tm)
+ {
+ int err, prev = IO_DONE;
+ *got = 0;
+@@ -252,9 +253,9 @@ int socket_recv(p_socket ps, char *data, size_t count, size_t *got,
+ }
+ if (taken == 0) return IO_CLOSED;
+ err = WSAGetLastError();
+- /* On UDP, a connreset simply means the previous send failed.
+- * So we try again.
+- * On TCP, it means our socket is now useless, so the error passes.
++ /* On UDP, a connreset simply means the previous send failed.
++ * So we try again.
++ * On TCP, it means our socket is now useless, so the error passes.
+ * (We will loop again, exiting because the same error will happen) */
+ if (err != WSAEWOULDBLOCK) {
+ if (err != WSAECONNRESET || prev == WSAECONNRESET) return err;
+@@ -267,8 +268,8 @@ int socket_recv(p_socket ps, char *data, size_t count, size_t *got,
+ /*-------------------------------------------------------------------------*\
+ * Recvfrom with timeout
+ \*-------------------------------------------------------------------------*/
+-int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got,
+- SA *addr, socklen_t *len, p_timeout tm)
++int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got,
++ SA *addr, socklen_t *len, p_timeout tm)
+ {
+ int err, prev = IO_DONE;
+ *got = 0;
+@@ -281,8 +282,8 @@ int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got,
+ }
+ if (taken == 0) return IO_CLOSED;
+ err = WSAGetLastError();
+- /* On UDP, a connreset simply means the previous send failed.
+- * So we try again.
++ /* On UDP, a connreset simply means the previous send failed.
++ * So we try again.
+ * On TCP, it means our socket is now useless, so the error passes.
+ * (We will loop again, exiting because the same error will happen) */
+ if (err != WSAEWOULDBLOCK) {
+@@ -310,7 +311,7 @@ void socket_setnonblocking(p_socket ps) {
+ }
+
+ /*-------------------------------------------------------------------------*\
+-* DNS helpers
++* DNS helpers
+ \*-------------------------------------------------------------------------*/
+ int socket_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp) {
+ *hp = gethostbyaddr(addr, len, AF_INET);
+@@ -330,21 +331,21 @@ int socket_gethostbyname(const char *addr, struct hostent **hp) {
+ const char *socket_hoststrerror(int err) {
+ if (err <= 0) return io_strerror(err);
+ switch (err) {
+- case WSAHOST_NOT_FOUND: return "host not found";
+- default: return wstrerror(err);
++ case WSAHOST_NOT_FOUND: return PIE_HOST_NOT_FOUND;
++ default: return wstrerror(err);
+ }
+ }
+
+ const char *socket_strerror(int err) {
+ if (err <= 0) return io_strerror(err);
+ switch (err) {
+- case WSAEADDRINUSE: return "address already in use";
+- case WSAECONNREFUSED: return "connection refused";
+- case WSAEISCONN: return "already connected";
+- case WSAEACCES: return "permission denied";
+- case WSAECONNABORTED: return "closed";
+- case WSAECONNRESET: return "closed";
+- case WSAETIMEDOUT: return "timeout";
++ case WSAEADDRINUSE: return PIE_ADDRINUSE;
++ case WSAECONNREFUSED : return PIE_CONNREFUSED;
++ case WSAEISCONN: return PIE_ISCONN;
++ case WSAEACCES: return PIE_ACCESS;
++ case WSAECONNABORTED: return PIE_CONNABORTED;
++ case WSAECONNRESET: return PIE_CONNRESET;
++ case WSAETIMEDOUT: return PIE_TIMEDOUT;
+ default: return wstrerror(err);
+ }
+ }
+@@ -357,7 +358,7 @@ const char *socket_ioerror(p_socket ps, int err) {
+ static const char *wstrerror(int err) {
+ switch (err) {
+ case WSAEINTR: return "Interrupted function call";
+- case WSAEACCES: return "Permission denied";
++ case WSAEACCES: return PIE_ACCESS; // "Permission denied";
+ case WSAEFAULT: return "Bad address";
+ case WSAEINVAL: return "Invalid argument";
+ case WSAEMFILE: return "Too many open files";
+@@ -370,63 +371,61 @@ static const char *wstrerror(int err) {
+ case WSAEPROTOTYPE: return "Protocol wrong type for socket";
+ case WSAENOPROTOOPT: return "Bad protocol option";
+ case WSAEPROTONOSUPPORT: return "Protocol not supported";
+- case WSAESOCKTNOSUPPORT: return "Socket type not supported";
++ case WSAESOCKTNOSUPPORT: return PIE_SOCKTYPE; // "Socket type not supported";
+ case WSAEOPNOTSUPP: return "Operation not supported";
+ case WSAEPFNOSUPPORT: return "Protocol family not supported";
+- case WSAEAFNOSUPPORT:
+- return "Address family not supported by protocol family";
+- case WSAEADDRINUSE: return "Address already in use";
++ case WSAEAFNOSUPPORT: return PIE_FAMILY; // "Address family not supported by protocol family";
++ case WSAEADDRINUSE: return PIE_ADDRINUSE; // "Address already in use";
+ case WSAEADDRNOTAVAIL: return "Cannot assign requested address";
+ case WSAENETDOWN: return "Network is down";
+ case WSAENETUNREACH: return "Network is unreachable";
+ case WSAENETRESET: return "Network dropped connection on reset";
+ case WSAECONNABORTED: return "Software caused connection abort";
+- case WSAECONNRESET: return "Connection reset by peer";
++ case WSAECONNRESET: return PIE_CONNRESET; // "Connection reset by peer";
+ case WSAENOBUFS: return "No buffer space available";
+- case WSAEISCONN: return "Socket is already connected";
++ case WSAEISCONN: return PIE_ISCONN; // "Socket is already connected";
+ case WSAENOTCONN: return "Socket is not connected";
+ case WSAESHUTDOWN: return "Cannot send after socket shutdown";
+- case WSAETIMEDOUT: return "Connection timed out";
+- case WSAECONNREFUSED: return "Connection refused";
++ case WSAETIMEDOUT: return PIE_TIMEDOUT; // "Connection timed out";
++ case WSAECONNREFUSED: return PIE_CONNREFUSED; // "Connection refused";
+ case WSAEHOSTDOWN: return "Host is down";
+ case WSAEHOSTUNREACH: return "No route to host";
+ case WSAEPROCLIM: return "Too many processes";
+ case WSASYSNOTREADY: return "Network subsystem is unavailable";
+ case WSAVERNOTSUPPORTED: return "Winsock.dll version out of range";
+- case WSANOTINITIALISED:
++ case WSANOTINITIALISED:
+ return "Successful WSAStartup not yet performed";
+ case WSAEDISCON: return "Graceful shutdown in progress";
+- case WSAHOST_NOT_FOUND: return "Host not found";
++ case WSAHOST_NOT_FOUND: return PIE_HOST_NOT_FOUND; // "Host not found";
+ case WSATRY_AGAIN: return "Nonauthoritative host not found";
+- case WSANO_RECOVERY: return "Nonrecoverable name lookup error";
++ case WSANO_RECOVERY: return PIE_FAIL; // "Nonrecoverable name lookup error";
+ case WSANO_DATA: return "Valid name, no data record of requested type";
+ default: return "Unknown error";
+ }
+ }
+
+ const char *socket_gaistrerror(int err) {
+- if (err == 0) return NULL;
++ if (err == 0) return NULL;
+ switch (err) {
+- case EAI_AGAIN: return "temporary failure in name resolution";
+- case EAI_BADFLAGS: return "invalid value for ai_flags";
++ case EAI_AGAIN: return PIE_AGAIN;
++ case EAI_BADFLAGS: return PIE_BADFLAGS;
+ #ifdef EAI_BADHINTS
+- case EAI_BADHINTS: return "invalid value for hints";
++ case EAI_BADHINTS: return PIE_BADHINTS;
+ #endif
+- case EAI_FAIL: return "non-recoverable failure in name resolution";
+- case EAI_FAMILY: return "ai_family not supported";
+- case EAI_MEMORY: return "memory allocation failure";
+- case EAI_NONAME:
+- return "host or service not provided, or not known";
++ case EAI_FAIL: return PIE_FAIL;
++ case EAI_FAMILY: return PIE_FAMILY;
++ case EAI_MEMORY: return PIE_MEMORY;
++ case EAI_NONAME: return PIE_NONAME;
+ #ifdef EAI_OVERFLOW
+- case EAI_OVERFLOW: return "argument buffer overflow";
++ case EAI_OVERFLOW: return PIE_OVERFLOW;
+ #endif
+ #ifdef EAI_PROTOCOL
+- case EAI_PROTOCOL: return "resolved protocol is unknown";
++ case EAI_PROTOCOL: return PIE_PROTOCOL;
+ #endif
+- case EAI_SERVICE: return "service not supported for socket type";
+- case EAI_SOCKTYPE: return "ai_socktype not supported";
++ case EAI_SERVICE: return PIE_SERVICE;
++ case EAI_SOCKTYPE: return PIE_SOCKTYPE;
+ #ifdef EAI_SYSTEM
+- case EAI_SYSTEM: return strerror(errno);
++ case EAI_SYSTEM: return strerror(errno);
+ #endif
+ default: return gai_strerror(err);
+ }
+diff --git a/test/auth/.htaccess b/test/auth/.htaccess
+new file mode 100644
+index 0000000..bb2794a
+--- /dev/null
++++ b/test/auth/.htaccess
+@@ -0,0 +1,4 @@
++AuthName "test-auth"
++ AuthType Basic
++ AuthUserFile /Users/diego/impa/luasocket/test/auth/.htpasswd
++ Require valid-user
+diff --git a/test/auth/.htpasswd b/test/auth/.htpasswd
+index fd9002b..cfb2603 100644
+--- a/test/auth/.htpasswd
++++ b/test/auth/.htpasswd
+@@ -1 +1 @@
+-luasocket:l8n2npozPB.sQ
++luasocket:$apr1$47u2O.Me$.m/5BWAtt7GVoxsouIPBR1
+diff --git a/test/excepttest.lua b/test/excepttest.lua
+index ce9f197..80c9cb8 100644
+--- a/test/excepttest.lua
++++ b/test/excepttest.lua
+@@ -1,6 +1,30 @@
+ local socket = require("socket")
+-try = socket.newtry(function()
+- print("finalized!!!")
++
++local finalizer_called
++
++local func = socket.protect(function(err, ...)
++ local try = socket.newtry(function()
++ finalizer_called = true
++ end)
++
++ if err then
++ return error(err, 0)
++ else
++ return try(...)
++ end
+ end)
+-try = socket.protect(try)
+-print(try(nil, "it works"))
++
++local ret1, ret2, ret3 = func(false, 1, 2, 3)
++assert(not finalizer_called, "unexpected finalizer call")
++assert(ret1 == 1 and ret2 == 2 and ret3 == 3, "incorrect return values")
++
++ret1, ret2, ret3 = func(false, false, "error message")
++assert(finalizer_called, "finalizer not called")
++assert(ret1 == nil and ret2 == "error message" and ret3 == nil, "incorrect return values")
++
++local err = {key = "value"}
++ret1, ret2 = pcall(func, err)
++assert(not ret1, "error not rethrown")
++assert(ret2 == err, "incorrect error rethrown")
++
++print("OK")
+diff --git a/test/httptest.lua b/test/httptest.lua
+index d5fbb37..63ff921 100644
+--- a/test/httptest.lua
++++ b/test/httptest.lua
+@@ -1,4 +1,4 @@
+--- needs Alias from /home/c/diego/tec/luasocket/test to
++-- needs Alias from /home/c/diego/tec/luasocket/test to
+ -- "/luasocket-test" and "/luasocket-test/"
+ -- needs ScriptAlias from /home/c/diego/tec/luasocket/test/cgi
+ -- to "/luasocket-test-cgi" and "/luasocket-test-cgi/"
+@@ -36,22 +36,22 @@ index = readfile(index_file)
+ local check_result = function(response, expect, ignore)
+ for i,v in pairs(response) do
+ if not ignore[i] then
+- if v ~= expect[i] then
++ if v ~= expect[i] then
+ local f = io.open("err", "w")
+ f:write(tostring(v), "\n\n versus\n\n", tostring(expect[i]))
+ f:close()
+- fail(i .. " differs!")
++ fail(i .. " differs!")
+ end
+ end
+ end
+ for i,v in pairs(expect) do
+ if not ignore[i] then
+- if v ~= response[i] then
++ if v ~= response[i] then
+ local f = io.open("err", "w")
+ f:write(tostring(response[i]), "\n\n versus\n\n", tostring(v))
+ v = string.sub(type(v) == "string" and v or "", 1, 70)
+ f:close()
+- fail(i .. " differs!")
++ fail(i .. " differs!")
+ end
+ end
+ end
+@@ -61,10 +61,10 @@ end
+ local check_request = function(request, expect, ignore)
+ local t
+ if not request.sink then request.sink, t = ltn12.sink.table() end
+- request.source = request.source or
++ request.source = request.source or
+ (request.body and ltn12.source.string(request.body))
+ local response = {}
+- response.code, response.headers, response.status =
++ response.code, response.headers, response.status =
+ socket.skip(1, http.request(request))
+ if t and #t > 0 then response.body = table.concat(t) end
+ check_result(response, expect, ignore)
+@@ -82,7 +82,7 @@ else fail(back.query) end
+ ------------------------------------------------------------------------
+ io.write("testing query string correctness: ")
+ forth = "this+is+the+query+string"
+-back = http.request("http://" .. host .. cgiprefix ..
++back = http.request("http://" .. host .. cgiprefix ..
+ "/query-string?" .. forth)
+ if similar(back, forth) then print("ok")
+ else fail("failed!") end
+@@ -120,10 +120,10 @@ check_request(request, expect, ignore)
+ ------------------------------------------------------------------------
+ io.write("testing invalid url: ")
+ local r, e = http.request{url = host .. prefix}
+-assert(r == nil and e == "invalid host ''")
++assert(r == nil and e == "invalid host ''")
+ r, re = http.request(host .. prefix)
+-assert(r == nil and e == re, tostring(r) ..", " .. tostring(re) ..
+- " vs " .. tostring(e))
++assert(r == nil and e == re, tostring(r) ..", " .. tostring(re) ..
++ " vs " .. tostring(e))
+ print("ok")
+
+ io.write("testing invalid empty port: ")
+@@ -212,7 +212,7 @@ os.remove(index_file .. "-back")
+ io.write("testing ltn12.(sink|source).chain and mime.(encode|decode): ")
+
+ local function b64length(len)
+- local a = math.ceil(len/3)*4
++ local a = math.ceil(len/3)*4
+ local l = math.ceil(a/76)
+ return a + l*2
+ end
+@@ -313,7 +313,7 @@ ignore = {
+ headers = 1
+ }
+ check_request(request, expect, ignore)
+-
++
+ ------------------------------------------------------------------------
+ io.write("testing document not found: ")
+ request = {
+@@ -429,9 +429,9 @@ print("ok")
+ io.write("testing host not found: ")
+ local c, e = socket.connect("example.invalid", 80)
+ local r, re = http.request{url = "http://example.invalid/does/not/exist"}
+-assert(r == nil and e == re, tostring(r) .. " " .. tostring(re))
++assert(r == nil and e == re, tostring(r) .. " " .. tostring(re))
+ r, re = http.request("http://example.invalid/does/not/exist")
+-assert(r == nil and e == re)
++assert(r == nil and e == re)
+ print("ok")
+
+ ------------------------------------------------------------------------
+diff --git a/test/ltn12test.lua b/test/ltn12test.lua
+index 74a45e8..e3f85fb 100644
+--- a/test/ltn12test.lua
++++ b/test/ltn12test.lua
+@@ -192,6 +192,21 @@ assert(filter(nil, 1), "filter not empty")
+ print("ok")
+
+ --------------------------------
++io.write("testing source.chain (with several filters): ")
++local function double(x) -- filter turning "ABC" into "AABBCC"
++ if not x then return end
++ local b={}
++ for k in x:gmatch'.' do table.insert(b, k..k) end
++ return table.concat(b)
++end
++source = ltn12.source.string(s)
++source = ltn12.source.chain(source, double, double, double)
++sink, t = ltn12.sink.table()
++assert(ltn12.pump.all(source, sink), "returned error")
++assert(table.concat(t) == double(double(double(s))), "mismatch")
++print("ok")
++
++--------------------------------
+ io.write("testing source.chain (with split) and sink.chain (with merge): ")
+ source = ltn12.source.string(s)
+ filter = split(5)
+@@ -206,6 +221,15 @@ assert(filter2(nil, 1), "filter2 not empty")
+ print("ok")
+
+ --------------------------------
++io.write("testing sink.chain (with several filters): ")
++source = ltn12.source.string(s)
++sink, t = ltn12.sink.table()
++sink = ltn12.sink.chain(double, double, double, sink)
++assert(ltn12.pump.all(source, sink), "returned error")
++assert(table.concat(t) == double(double(double(s))), "mismatch")
++print("ok")
++
++--------------------------------
+ io.write("testing filter.chain (and sink.chain, with split, merge): ")
+ source = ltn12.source.string(s)
+ filter = split(5)
+@@ -272,3 +296,4 @@ assert(filter3(nil, 1), "filter3 not empty")
+ assert(filter4(nil, 1), "filter4 not empty")
+ assert(filter5(nil, 1), "filter5 not empty")
+ print("ok")
++
+diff --git a/test/testclnt.lua b/test/testclnt.lua
+index 315783b..170e187 100644
+--- a/test/testclnt.lua
++++ b/test/testclnt.lua
+@@ -8,7 +8,7 @@ function printf(...)
+ end
+
+ function pass(...)
+- printf(...)
++ printf(...)
+ io.stderr:write("\n")
+ end
+
+@@ -45,30 +45,30 @@ function check_timeout(tm, sl, elapsed, err, opp, mode, alldone)
+ if not err then warn("must be buffered")
+ elseif err == "timeout" then pass("proper timeout")
+ else fail("unexpected error '%s'", err) end
+- else
+- if err ~= "timeout" then fail("should have timed out")
++ else
++ if err ~= "timeout" then fail("should have timed out")
+ else pass("proper timeout") end
+ end
+ else
+ if mode == "total" then
+- if elapsed > tm then
++ if elapsed > tm then
+ if err ~= "timeout" then fail("should have timed out")
+ else pass("proper timeout") end
+ elseif elapsed < tm then
+- if err then fail(err)
++ if err then fail(err)
+ else pass("ok") end
+- else
+- if alldone then
+- if err then fail("unexpected error '%s'", err)
++ else
++ if alldone then
++ if err then fail("unexpected error '%s'", err)
+ else pass("ok") end
+ else
+- if err ~= "timeout" then fail(err)
++ if err ~= "timeout" then fail(err)
+ else pass("proper timeoutk") end
+ end
+ end
+- else
+- if err then fail(err)
+- else pass("ok") end
++ else
++ if err then fail(err)
++ else pass("ok") end
+ end
+ end
+ end
+@@ -104,8 +104,8 @@ control:setoption("tcp-nodelay", true)
+ ------------------------------------------------------------------------
+ function test_methods(sock, methods)
+ for _, v in pairs(methods) do
+- if type(sock[v]) ~= "function" then
+- fail(sock.class .. " method '" .. v .. "' not registered")
++ if type(sock[v]) ~= "function" then
++ fail(sock.class .. " method '" .. v .. "' not registered")
+ end
+ end
+ pass(sock.class .. " methods are ok")
+@@ -121,7 +121,7 @@ function test_mixed(len)
+ local p3 = "raw " .. string.rep("z", inter) .. "bytes"
+ local p4 = "end" .. string.rep("w", inter) .. "bytes"
+ local bp1, bp2, bp3, bp4
+-remote (string.format("str = data:receive(%d)",
++remote (string.format("str = data:receive(%d)",
+ string.len(p1)+string.len(p2)+string.len(p3)+string.len(p4)))
+ sent, err = data:send(p1..p2..p3..p4)
+ if err then fail(err) end
+@@ -166,7 +166,7 @@ function test_rawline(len)
+ io.stderr:write("length " .. len .. ": ")
+ local str, str10, back, err
+ str = string.rep(string.char(47), math.mod(len, 10))
+- str10 = string.rep(string.char(120,21,77,4,5,0,7,36,44,100),
++ str10 = string.rep(string.char(120,21,77,4,5,0,7,36,44,100),
+ math.floor(len/10))
+ str = str .. str10
+ remote "str = data:receive()"
+@@ -216,7 +216,7 @@ function test_totaltimeoutreceive(len, tm, sl)
+ data:settimeout(tm, "total")
+ local t = socket.gettime()
+ str, err, partial, elapsed = data:receive(2*len)
+- check_timeout(tm, sl, elapsed, err, "receive", "total",
++ check_timeout(tm, sl, elapsed, err, "receive", "total",
+ string.len(str or partial) == 2*len)
+ end
+
+@@ -236,7 +236,7 @@ function test_totaltimeoutsend(len, tm, sl)
+ data:settimeout(tm, "total")
+ str = string.rep("a", 2*len)
+ total, err, partial, elapsed = data:send(str)
+- check_timeout(tm, sl, elapsed, err, "send", "total",
++ check_timeout(tm, sl, elapsed, err, "send", "total",
+ total == 2*len)
+ end
+
+@@ -256,7 +256,7 @@ function test_blockingtimeoutreceive(len, tm, sl)
+ ]], 2*tm, len, sl, sl))
+ data:settimeout(tm)
+ str, err, partial, elapsed = data:receive(2*len)
+- check_timeout(tm, sl, elapsed, err, "receive", "blocking",
++ check_timeout(tm, sl, elapsed, err, "receive", "blocking",
+ string.len(str or partial) == 2*len)
+ end
+
+@@ -290,10 +290,10 @@ function empty_connect()
+ data = server:accept()
+ ]]
+ data, err = socket.connect("", port)
+- if not data then
++ if not data then
+ pass("ok")
+ data = socket.connect(host, port)
+- else
++ else
+ pass("gethostbyname returns localhost on empty string...")
+ end
+ end
+@@ -304,15 +304,20 @@ function isclosed(c)
+ end
+
+ function active_close()
+- reconnect()
+- if isclosed(data) then fail("should not be closed") end
+- data:close()
+- if not isclosed(data) then fail("should be closed") end
+- data = nil
+- local udp = socket.udp()
++ local tcp = socket.tcp4()
++ if isclosed(tcp) then fail("should not be closed") end
++ tcp:close()
++ if not isclosed(tcp) then fail("should be closed") end
++ tcp = socket.tcp()
++ if not isclosed(tcp) then fail("should be closed") end
++ tcp = nil
++ local udp = socket.udp4()
+ if isclosed(udp) then fail("should not be closed") end
+ udp:close()
+ if not isclosed(udp) then fail("should be closed") end
++ udp = socket.udp()
++ if not isclosed(udp) then fail("should be closed") end
++ udp = nil
+ pass("ok")
+ end
+
+@@ -327,7 +332,7 @@ function test_closed()
+ data:close()
+ data = nil
+ ]], str))
+- -- try to get a line
++ -- try to get a line
+ back, err, partial = data:receive()
+ if not err then fail("should have gotten 'closed'.")
+ elseif err ~= "closed" then fail("got '"..err.."' instead of 'closed'.")
+@@ -340,25 +345,25 @@ function test_closed()
+ data = nil
+ ]]
+ total, err, partial = data:send(string.rep("ugauga", 100000))
+- if not err then
++ if not err then
+ pass("failed: output buffer is at least %d bytes long!", total)
+- elseif err ~= "closed" then
++ elseif err ~= "closed" then
+ fail("got '"..err.."' instead of 'closed'.")
+- else
+- pass("graceful 'closed' received after %d bytes were sent", partial)
++ else
++ pass("graceful 'closed' received after %d bytes were sent", partial)
+ end
+ end
+
+ ------------------------------------------------------------------------
+ function test_selectbugs()
+ local r, s, e = socket.select(nil, nil, 0.1)
+- assert(type(r) == "table" and type(s) == "table" and
++ assert(type(r) == "table" and type(s) == "table" and
+ (e == "timeout" or e == "error"))
+ pass("both nil: ok")
+ local udp = socket.udp()
+ udp:close()
+ r, s, e = socket.select({ udp }, { udp }, 0.1)
+- assert(type(r) == "table" and type(s) == "table" and
++ assert(type(r) == "table" and type(s) == "table" and
+ (e == "timeout" or e == "error"))
+ pass("closed sockets: ok")
+ e = pcall(socket.select, "wrong", 1, 0.1)
+@@ -368,7 +373,7 @@ function test_selectbugs()
+ pass("invalid input: ok")
+ local toomany = {}
+ for i = 1, socket._SETSIZE+1 do
+- toomany[#toomany+1] = socket.udp()
++ toomany[#toomany+1] = socket.udp4()
+ end
+ if #toomany > socket._SETSIZE then
+ local e = pcall(socket.select, toomany, nil, 0.1)
+@@ -389,7 +394,7 @@ function accept_timeout()
+ local t = socket.gettime()
+ s:settimeout(1)
+ local c, e = s:accept()
+- assert(not c, "should not accept")
++ assert(not c, "should not accept")
+ assert(e == "timeout", string.format("wrong error message (%s)", e))
+ t = socket.gettime() - t
+ assert(t < 2, string.format("took to long to give up (%gs)", t))
+@@ -407,9 +412,9 @@ function connect_timeout()
+ local t = socket.gettime()
+ local r, e = c:connect("10.0.0.1", 81)
+ assert(not r, "should not connect")
+- assert(socket.gettime() - t < 2, "took too long to give up.")
++ assert(socket.gettime() - t < 2, "took too long to give up.")
+ c:close()
+- pass("ok")
++ pass("ok")
+ end
+
+ ------------------------------------------------------------------------
+@@ -447,16 +452,14 @@ end
+
+ ------------------------------------------------------------------------
+ function rebind_test()
+- --local c ,c1 = socket.bind("localhost", 0)
+ local c ,c1 = socket.bind("127.0.0.1", 0)
+ if not c then pass ("failed to bind! " .. tostring(c) .. ' ' .. tostring(c1)) return end
+ assert(c,c1)
+-
+ local i, p = c:getsockname()
+ local s, e = socket.tcp()
+ assert(s, e)
+ s:setoption("reuseaddr", false)
+- r, e = s:bind("localhost", p)
++ r, e = s:bind(i, p)
+ assert(not r, "managed to rebind!")
+ assert(e)
+ pass("ok")
+@@ -476,9 +479,9 @@ function getstats_test()
+ data:receive(c)
+ t = t + c
+ local r, s, a = data:getstats()
+- assert(r == t, "received count failed" .. tostring(r)
++ assert(r == t, "received count failed" .. tostring(r)
+ .. "/" .. tostring(t))
+- assert(s == t, "sent count failed" .. tostring(s)
++ assert(s == t, "sent count failed" .. tostring(s)
+ .. "/" .. tostring(t))
+ end
+ pass("ok")
+@@ -486,7 +489,7 @@ end
+
+
+ ------------------------------------------------------------------------
+-function test_nonblocking(size)
++function test_nonblocking(size)
+ reconnect()
+ printf("testing " .. 2*size .. " bytes: ")
+ remote(string.format([[
+@@ -545,7 +548,7 @@ function test_readafterclose()
+ data:close()
+ data = nil
+ ]]))
+- data:close()
++ data:close()
+ back, err, partial = data:receive("*a")
+ assert(back == nil and err == "closed", "should have returned 'closed'")
+ pass("ok")
+@@ -555,7 +558,7 @@ function test_readafterclose()
+ data:close()
+ data = nil
+ ]]))
+- data:close()
++ data:close()
+ back, err, partial = data:receive()
+ assert(back == nil and err == "closed", "should have returned 'closed'")
+ pass("ok")
+@@ -565,7 +568,7 @@ function test_readafterclose()
+ data:close()
+ data = nil
+ ]]))
+- data:close()
++ data:close()
+ back, err, partial = data:receive(1)
+ assert(back == nil and err == "closed", "should have returned 'closed'")
+ pass("ok")
+@@ -575,7 +578,7 @@ function test_readafterclose()
+ data:close()
+ data = nil
+ ]]))
+- data:close()
++ data:close()
+ back, err, partial = data:receive(0)
+ assert(back == nil and err == "closed", "should have returned 'closed'")
+ pass("ok")
+@@ -590,10 +593,10 @@ function test_writeafterclose()
+ data = nil
+ ]]))
+ local sent, err, errsent
+- while not err do
++ while not err do
+ sent, err, errsent, time = data:send(str)
+ end
+- assert(err == "closed", "should have returned 'closed'")
++ assert(err == "closed", "got " .. err .. " instead of 'closed'")
+ pass("ok")
+ end
+
+@@ -648,25 +651,24 @@ else io.stderr:write("Warning! IPv6 does not support!\n") end
+ end
+
+ local udp_methods = {
+- "close",
++ "close",
+ "dirty",
+ "getfamily",
+ "getfd",
+ "getoption",
+ "getpeername",
+ "getsockname",
+- "receive",
+- "receivefrom",
+- "send",
+- "sendto",
+- "setfd",
++ "receive",
++ "receivefrom",
++ "send",
++ "sendto",
++ "setfd",
+ "setoption",
+ "setpeername",
+ "setsockname",
+ "settimeout"
+ }
+
+-
+ ------------------------------------------------------------------------
+ test_methods(socket.udp(), udp_methods)
+ do local sock = socket.tcp6()
+@@ -674,6 +676,9 @@ if sock then test_methods(socket.udp6(), udp_methods)
+ else io.stderr:write("Warning! IPv6 does not support!\n") end
+ end
+
++test("closed connection detection: ")
++test_closed()
++
+ test("partial receive")
+ test_partialrecv()
+
+@@ -697,9 +702,6 @@ rebind_test()
+ test("active close: ")
+ active_close()
+
+-test("closed connection detection: ")
+-test_closed()
+-
+ test("accept function: ")
+ accept_timeout()
+ accept_errors()
+diff --git a/test/testsrvr.lua b/test/testsrvr.lua
+index 72b93ab..1eb2d5b 100644
+--- a/test/testsrvr.lua
++++ b/test/testsrvr.lua
+@@ -6,7 +6,7 @@ ack = "\n";
+ while 1 do
+ print("server: waiting for client connection...");
+ control = assert(server:accept());
+- while 1 do
++ while 1 do
+ command, emsg = control:receive();
+ if emsg == "closed" then
+ control:close()
+diff --git a/test/udpconnectclnt.lua b/test/udpconnectclnt.lua
+index effe13a..ad6ab6a 100644
+--- a/test/udpconnectclnt.lua
++++ b/test/udpconnectclnt.lua
+@@ -1,7 +1,7 @@
+ local socket = require"socket"
+ local udp = socket.udp
+ local localhost = "127.0.0.1"
+-local port = arg[1]
++local port = assert(arg[1], "missing port argument")
+
+ se = udp(); se:setoption("reuseaddr", true)
+ se:setsockname(localhost, 5062)
+diff --git a/win32.cmd b/win32.cmd
+index 48522f0..3045721 100644
+--- a/win32.cmd
++++ b/win32.cmd
+@@ -1,12 +1 @@
+-make PLAT=win32 LUAV=5.2 LUAINC_win32='c:\cygwin\home\diego\build\include' LUALIB_win32='c:\cygwin\home\diego\build\bin\release'
+-
+-#!/bin/sh
+-for p in Release Debug x64/Release x64/Debug; do
+- for el in mime socket; do
+- for e in dll lib; do
+- cp $p/$el/core.$e ../bin/$p/$el/
+- done;
+- done;
+- cp src/ltn12.lua src/socket.lua src/mime.lua ../bin/$p/
+- cp src/http.lua src/url.lua src/tp.lua src/ftp.lua src/headers.lua src/smtp.lua ../bin/$p/socket/
+-done;
++make LUAPREFIX_win32='c:\cygwin\home\diego\vc12' LUAV=5.1 PLAT=win32 LUALIBNAME_win32=lualib.lib PLATFORM_win32=Debug install-both
diff --git a/user/lua-socket/lua-cflags.patch b/user/lua-socket/lua-cflags.patch
new file mode 100644
index 000000000..c1da89644
--- /dev/null
+++ b/user/lua-socket/lua-cflags.patch
@@ -0,0 +1,22 @@
+diff --git a/src/makefile b/src/makefile
+index adf687f..c2abddc 100644
+--- a/src/makefile
++++ b/src/makefile
+@@ -160,6 +160,8 @@ SOCKET_macosx=usocket.o
+ #------
+ # Compiler and linker settings
+ # for Linux
++LUAPC=lua
++LUA_CFLAGS=$(shell pkg-config --cflags $(LUAPC))
+ SO_linux=so
+ O_linux=o
+ CC_linux=gcc
+@@ -167,7 +169,7 @@ DEF_linux=-DLUASOCKET_$(DEBUG) \
+ -DLUASOCKET_API='__attribute__((visibility("default")))' \
+ -DUNIX_API='__attribute__((visibility("default")))' \
+ -DMIME_API='__attribute__((visibility("default")))'
+-CFLAGS_linux= -I$(LUAINC) $(DEF) -Wall -Wshadow -Wextra \
++CFLAGS_linux= $(LUA_CFLAGS) -I$(LUAINC) $(DEF) -Wall -Wshadow -Wextra \
+ -Wimplicit -O2 -ggdb3 -fpic -fvisibility=hidden
+ LDFLAGS_linux=-O -shared -fpic -o
+ LD_linux=gcc
diff --git a/user/marble/APKBUILD b/user/marble/APKBUILD
index a80a9a2e0..5a7ea9146 100644
--- a/user/marble/APKBUILD
+++ b/user/marble/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=marble
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Free, open-source map and virtual globe"
url="https://marble.kde.org/"
@@ -38,4 +38,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="e6bf16f7b26f8f1ba88448378c1d97506140f87c0d75481f9cc2435f5f7e09a55ae510475397c6ccfecd4252a618287638cb350425895ad216c1d74115f81956 marble-18.08.1.tar.xz"
+sha512sums="d1a51b941cd5a9ee9b5500613f6436e2015f81d46df731848015244f11d7558c7a8401663dcebcf8cd9175233f7d4e1d70f8b3474df44f1f5bf5038fca820ef7 marble-18.08.2.tar.xz"
diff --git a/user/minuet/APKBUILD b/user/minuet/APKBUILD
index bcbb4ceeb..a57b25808 100644
--- a/user/minuet/APKBUILD
+++ b/user/minuet/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=minuet
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Music education software"
url="https://minuet.kde.org/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="653db86bc761f59df02a8d8ff82e59afeb71ef078a62ba5712d5092b0d9651dde9ddee027d303e622bd143c6aee49b01da1476d8cdc484b89192c08669cc6bef minuet-18.08.1.tar.xz"
+sha512sums="0869a0e84daf995aca219c063ce38c88b7cc1bf40c0733aad80cffcb0800d67bddc02e3d21dce4940802a5262307b409447242954249e4093a16ce5dc336f369 minuet-18.08.2.tar.xz"
diff --git a/user/nextcloud-client/APKBUILD b/user/nextcloud-client/APKBUILD
index c842eaa18..549383413 100644
--- a/user/nextcloud-client/APKBUILD
+++ b/user/nextcloud-client/APKBUILD
@@ -7,6 +7,7 @@ pkgrel=0
pkgdesc="Nextcloud desktop client"
url="https://github.com/nextcloud/desktop"
arch="all"
+options="!checkroot"
license="GPL-2.0+ AND LGPL-2.1+ AND Public-Domain AND MIT AND (Custom:Digia-Qt OR LGPL-2.1-only WITH Qt-LGPL-exception-1.1) AND (Custom:Digia-Qt OR LGPL-2.1-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only)"
depends=""
makedepends="cmake qt5-qttools-dev qtkeychain-dev zlib-dev
diff --git a/user/okular/APKBUILD b/user/okular/APKBUILD
index ba2fd75c2..f828ce146 100644
--- a/user/okular/APKBUILD
+++ b/user/okular/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=okular
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Universal document reader developed by KDE"
url="https://okular.kde.org/"
@@ -44,4 +44,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="4114c614c3d773de158469a201c976ad36d706a0eb00b238af49d5e5a97fb272ce6033f744101c7e26110a7ac6b9c6cda26e3fc8c9c1bde22277f3ba2c55a375 okular-18.08.1.tar.xz"
+sha512sums="099efe86a99f3c44f00873a01f6b3461bd0b1d0a6099c9954de034bfad9c483647d2b2c5cf87c5fbea4b2f6b4c350344480fb1dc77d9710991f9d7c5300ca8c4 okular-18.08.2.tar.xz"
diff --git a/user/oprofile/APKBUILD b/user/oprofile/APKBUILD
new file mode 100644
index 000000000..90641b0e3
--- /dev/null
+++ b/user/oprofile/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=oprofile
+pkgver=1.3.0
+pkgrel=0
+pkgdesc="System profiler for Linux"
+url="http://oprofile.sourceforge.net/news/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="binutils-dev libpfm-dev popt-dev"
+subpackages="$pkgname-doc"
+source="https://prdownloads.sourceforge.net/oprofile/oprofile-$pkgver.tar.gz
+ disable-regex-test.patch
+ posixise.patch
+ "
+
+build() {
+ cd "$builddir"
+ CXXFLAGS="$CXXFLAGS" ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="02a940cd8d38834dca2a97c8ac0fff04ef95b3819cfdf74a462b9326c7abbf2dc55d2a9b9d1fbefc7f455465bf85516be2b879d7daf1861ba2c4af51214377ba oprofile-1.3.0.tar.gz
+9ad0e25f2ab165e6613d8fbd65b652fb82b41beef28f9edca6b763001d50fb5f35e433454a7beeecaa1d0d3adc9c9f16adc6d4d9f20ae9d27cc3120c04906576 disable-regex-test.patch
+831fd9b18df0daaa01682c50479f432e81da951550db6d0b11315232b728517493533b41b46fd64f3e74405b8d515fb86d7b4b96898cf45b262a7e790a131740 posixise.patch"
diff --git a/user/oprofile/disable-regex-test.patch b/user/oprofile/disable-regex-test.patch
new file mode 100644
index 000000000..7904cae4f
--- /dev/null
+++ b/user/oprofile/disable-regex-test.patch
@@ -0,0 +1,11 @@
+--- oprofile-1.3.0/libregex/tests/Makefile.in.old 2018-07-16 19:39:39.000000000 +0000
++++ oprofile-1.3.0/libregex/tests/Makefile.in 2018-10-10 20:38:01.400000000 +0000
+@@ -87,7 +87,7 @@
+ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+-check_PROGRAMS = regex_test$(EXEEXT) java_test$(EXEEXT)
++check_PROGRAMS = java_test$(EXEEXT)
+ TESTS = $(check_PROGRAMS)
+ subdir = libregex/tests
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
diff --git a/user/oprofile/posixise.patch b/user/oprofile/posixise.patch
new file mode 100644
index 000000000..85e064b8c
--- /dev/null
+++ b/user/oprofile/posixise.patch
@@ -0,0 +1,54 @@
+--- oprofile-1.3.0/libpe_utils/op_pe_utils.cpp.old 2018-07-16 18:58:37.000000000 +0000
++++ oprofile-1.3.0/libpe_utils/op_pe_utils.cpp 2018-10-10 20:20:10.730000000 +0000
+@@ -530,7 +530,7 @@
+ static string _handle_powerpc_event_spec(string event_spec)
+ {
+ FILE * fp;
+- char line[MAX_INPUT];
++ char line[_POSIX_MAX_INPUT];
+ size_t grp_pos;
+ string evt, err_msg;
+ size_t evt_name_len;
+@@ -579,7 +579,7 @@
+ }
+
+ err_msg = "Cannot find event ";
+- while (fgets(line, MAX_INPUT, fp)) {
++ while (fgets(line, _POSIX_MAX_INPUT, fp)) {
+ if (!first_non_cyc_evt_found) {
+ if (!strncmp(line, "PM_", 3))
+ first_non_cyc_evt_found = true;
+--- oprofile-1.3.0/pe_profiling/operf.cpp.old 2016-08-08 15:03:27.000000000 +0000
++++ oprofile-1.3.0/pe_profiling/operf.cpp 2018-10-10 20:27:23.190000000 +0000
+@@ -860,9 +860,9 @@
+ {
+ if (remove(fpath)) {
+ perror("sample data removal error");
+- return FTW_STOP;
++ return -1;
+ } else {
+- return FTW_CONTINUE;
++ return 0;
+ }
+ }
+
+@@ -897,7 +897,7 @@
+ return;
+
+ if (!operf_options::append) {
+- int flags = FTW_DEPTH | FTW_ACTIONRETVAL;
++ int flags = FTW_DEPTH;
+ errno = 0;
+ if (nftw(previous_sampledir.c_str(), __delete_old_previous_sample_data, 32, flags) !=0 &&
+ errno != ENOENT) {
+--- oprofile-1.3.0/libop/op_events.c.old 2018-01-18 16:46:48.000000000 +0000
++++ oprofile-1.3.0/libop/op_events.c 2018-10-11 00:34:04.362677027 +0000
+@@ -83,7 +83,7 @@
+ static u64 parse_long_hex(char const * str)
+ {
+ u64 value;
+- if (sscanf(str, "%Lx", &value) != 1)
++ if (sscanf(str, "%llx", &value) != 1)
+ parse_error("expected long hexadecimal value");
+
+ fflush(stderr);
diff --git a/user/opusfile/APKBUILD b/user/opusfile/APKBUILD
index 9d92f0276..fa68d8249 100644
--- a/user/opusfile/APKBUILD
+++ b/user/opusfile/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer:
pkgname=opusfile
-pkgver=0.10
-pkgrel=1
+pkgver=0.11
+pkgrel=0
pkgdesc="High-level API for decoding and seeking within .opus files"
url="http://www.opus-codec.org/"
arch="all"
@@ -37,4 +37,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="302601c31ca28bff175cefa99ac16177122a786d043be229616e2c98b7ffaf4a96b8bb17ca16e31240325a92763f417315b54d8f1b2f4f63f445cb7ad43c4a37 opusfile-0.10.tar.gz"
+sha512sums="ec3e282310cc4f25475c27b7bc8d1652dcb25d3ac6badf87bd1b4e5397fbe106a0dab81c60d88d198003a23d8a2c9bae8b661edc9b31433effeca438ce56a349 opusfile-0.11.tar.gz"
diff --git a/user/php7/APKBUILD b/user/php7/APKBUILD
index e48a1f3e3..f68ba54d2 100644
--- a/user/php7/APKBUILD
+++ b/user/php7/APKBUILD
@@ -25,7 +25,7 @@
pkgname=php7
_pkgname=php
-pkgver=7.2.10
+pkgver=7.2.11
pkgrel=0
_apiver=20170718
pkgdesc="The PHP7 language runtime engine"
@@ -522,7 +522,7 @@ _mv() {
mv $@
}
-sha512sums="de1c22ee37cd0e6d1682091d9735f292cb5c6be653c5ce5771fdcd43522122dfebecab474fe2b29f94a757942513569916ebff59f3a8e63b6fc61830dabb3e47 php-7.2.10.tar.bz2
+sha512sums="a6bdd639648ae7845467e01303d0b4f4b85fd541409be97a5a605e91a9c994609e4e221a9c87c576134e66a2439920486d1f444e6fe8c34b0e5d025cee6d0cc8 php-7.2.11.tar.bz2
23df4e779c809db3e3b8e5b0353b1aafaad2f3dc56f2d1cd45f9b0e3ad71b32e40700d6ebfe914b3c87e8e0b670d0dc862ded1e5c898adf160e33dea372e044f php-fpm.initd
01d4ba3ef104ea378eb0e8cbb7bdee3fdf65e4bd6865eb3bc6c0dc4af31c2d52887abdf0150b5ef984b877860285a3b1af84b11ffebb5b8b722ea9faf83edfeb php-fpm.logrotate
a7f9ba5e11652fd1cb9e756c3269269a95de083ecb5be936a85c7a09c1396db9088e0251c6a643c40235c0e776fce2a471e5c7f5a033b85c7d3b3110c2b39e48 php-module.conf
diff --git a/user/plasma-framework/APKBUILD b/user/plasma-framework/APKBUILD
index 6234f9b56..4bac08265 100644
--- a/user/plasma-framework/APKBUILD
+++ b/user/plasma-framework/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=plasma-framework
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Frameworks for the KDE Plasma 5 desktop environment"
url="https://www.kde.org/"
@@ -47,4 +47,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="b0cee3cbca89f5497ea3525b52dafe1c0219fa29086454ba235bc02e9a2870ac1dcbddd3c05f5eb9b0fd2e9a5ac04b9aafcd4d03939f5023b907a5749fb22d87 plasma-framework-5.50.0.tar.xz"
+sha512sums="5c5949101ce9f3c520f9b2663041292b4f070fc97061678e8aa8ea05b677f15ff5804ad66242cc3ffb11dd32ced50fdfa976c1f36540f0f09dfd6e5df114d800 plasma-framework-5.51.0.tar.xz"
diff --git a/user/prison/APKBUILD b/user/prison/APKBUILD
index 5ccc01d17..04d6f8939 100644
--- a/user/prison/APKBUILD
+++ b/user/prison/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=prison
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Qt Barcode library for programatically creating QR codes"
url="https://www.kde.org/"
@@ -47,4 +47,4 @@ quick() {
mv "$pkgdir"/usr/lib/qt5/qml "$subpkgdir"/usr/lib/qt5/
}
-sha512sums="69baa1f0fb3859d7c32e53463e4c81d4f394ddf61ed6b11bd907a9edc98098b1895b01990bfe787359b9f5eae5b214a1c514b4bdacdbd0f7de2a10dfe90163d9 prison-5.50.0.tar.xz"
+sha512sums="69e6f56d5fac5b2601230f40a8db688bb95ebe476c9cffd5ece4b58cf8697c237b80fb6525f6ff330b9c720553ddcccd87ed6c3241c8c7ea4a59a599b420919a prison-5.51.0.tar.xz"
diff --git a/user/prosody/APKBUILD b/user/prosody/APKBUILD
new file mode 100644
index 000000000..990de722f
--- /dev/null
+++ b/user/prosody/APKBUILD
@@ -0,0 +1,59 @@
+# Contributor: Mika Havela <mika.havela@gmail.com>
+# Contributor: Francesco Colista <fcolista@alpinelinux.org>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=prosody
+pkgver=0.10.2
+pkgrel=0
+pkgdesc="Lua based Jabber/XMPP server"
+url="http://prosody.im/"
+arch="all"
+options="!check" # broken testsuite
+license="MIT"
+depends="lua-socket lua-expat lua-filesystem lua-sec lua5.3"
+makedepends="linux-headers lua5.3-dev libidn-dev openssl-dev"
+install="prosody.pre-install"
+subpackages="$pkgname-doc $pkgname-openrc"
+pkgusers="prosody"
+pkggroups="prosody"
+source="https://prosody.im/downloads/source/$pkgname-$pkgver.tar.gz
+ prosody.cfg.lua.patch
+ mallinfo.patch
+ $pkgname.initd
+ "
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc/prosody \
+ --ostype=linux \
+ --with-lua-lib=/usr/lib \
+ --with-lua-include=/usr/include \
+ --lua-version=5.3 \
+ --no-example-certs
+ # Don't generate certs
+ rm -f "$builddir"/certs/Makefile
+
+ make
+}
+
+check() {
+ cd "$builddir"
+ make test
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+
+ install -d -o prosody -g prosody "$pkgdir/var/log/prosody"
+ install -d -o prosody -g prosody "$pkgdir/var/run/prosody"
+ install -d -m750 -o prosody -g prosody "$pkgdir/var/lib/prosody"
+
+ install -D -m755 "$srcdir"/"$pkgname".initd "$pkgdir"/etc/init.d/"$pkgname"
+}
+
+sha512sums="9fc05e34b45b0c16835ba94a73532fb3b4ee335f27d56bb9260e1b3e22614f89f44eb5d04b4e90d016db0b5bee6f5c7e7d099e1defb027e6823ee7667c1fe28f prosody-0.10.2.tar.gz
+a6ca168fe3d11ee3b05295fb36dfaf8240c60a85507032b2502f9a97d3fd055f7eee38ba6efbb8f79472fc7cdd3556922194d0bd7099f7fb809be01890acc511 prosody.cfg.lua.patch
+b07498cd42677d09f1a3fd4a5d91a085e90dd10cee7d6ee7c5e41438cfc2f4049ab9948c0fd0f7e148dd81f6a25c64c6ae832ea4864cee2329d3c6735216b78b mallinfo.patch
+24360603dbd5d2a92758e6c4b4aab4f02cbd05373580cba2df76df98b6045891e8108e8c2d16af9508e93968ed5880db952e7a21b2742ebeec6f14b167968c2c prosody.initd"
diff --git a/user/prosody/luasec-0.6-fix.patch b/user/prosody/luasec-0.6-fix.patch
new file mode 100644
index 000000000..c8e37d091
--- /dev/null
+++ b/user/prosody/luasec-0.6-fix.patch
@@ -0,0 +1,14 @@
+diff --git a/util/dependencies.lua b/util/dependencies.lua
+index 4d50cf6..9ea211d 100644
+--- a/util/dependencies.lua
++++ b/util/dependencies.lua
+@@ -99,6 +99,9 @@ function check_dependencies()
+ ["luarocks"] = "luarocks install luasec";
+ ["Source"] = "http://www.inf.puc-rio.br/~brunoos/luasec/";
+ }, "SSL/TLS support will not be available");
++ elseif not _G.ssl then
++ _G.ssl = ssl;
++ _G.ssl.context = require "ssl.context";
+ end
+
+ local encodings, err = softreq "util.encodings"
diff --git a/user/prosody/mallinfo.patch b/user/prosody/mallinfo.patch
new file mode 100644
index 000000000..4f9247c9b
--- /dev/null
+++ b/user/prosody/mallinfo.patch
@@ -0,0 +1,13 @@
+diff --git a/util-src/pposix.c b/util-src/pposix.c
+index e70a9d7..b9729ab 100644
+--- a/util-src/pposix.c
++++ b/util-src/pposix.c
+@@ -52,7 +52,7 @@
+ #include <linux/falloc.h>
+ #endif
+
+-#if !defined(WITHOUT_MALLINFO) && defined(__linux__)
++#ifdef __GLIBC__
+ #include <malloc.h>
+ #define WITH_MALLINFO
+ #endif
diff --git a/user/prosody/prosody.cfg.lua.patch b/user/prosody/prosody.cfg.lua.patch
new file mode 100644
index 000000000..ff74c5172
--- /dev/null
+++ b/user/prosody/prosody.cfg.lua.patch
@@ -0,0 +1,36 @@
+diff --git a/prosody.cfg.lua.dist b/prosody.cfg.lua.dist
+index a0fc6c9..23a36ac 100644
+--- a/prosody.cfg.lua.dist
++++ b/prosody.cfg.lua.dist
+@@ -13,6 +13,9 @@
+ -- blanks. Good luck, and happy Jabbering!
+
+
++daemonize = true
++pidfile = "/var/run/prosody/prosody.pid"
++
+ ---------- Server-wide settings ----------
+ -- Settings in this section apply to the whole server and are the default settings
+ -- for any virtual hosts
+@@ -86,7 +89,7 @@ modules_disabled = {
+ -- "offline"; -- Store offline messages
+ -- "c2s"; -- Handle client connections
+ -- "s2s"; -- Handle server-to-server connections
+- -- "posix"; -- POSIX functionality, sends server to background, enables syslog, etc.
++ "posix"; -- POSIX functionality, sends server to background, enables syslog, etc.
+ }
+
+ -- Disable account creation by default, for security
+@@ -161,9 +164,9 @@ archive_expires_after = "1w" -- Remove archived messages after 1 week
+ -- Logging configuration
+ -- For advanced logging see https://prosody.im/doc/logging
+ log = {
+- info = "prosody.log"; -- Change 'info' to 'debug' for verbose logging
+- error = "prosody.err";
+- -- "*syslog"; -- Uncomment this for logging to syslog
++ -- info = "prosody.log"; -- Change 'info' to 'debug' for verbose logging
++ -- error = "prosody.err";
++ "*syslog"; -- Uncomment this for logging to syslog
+ -- "*console"; -- Log to the console, useful for debugging with daemonize=false
+ }
+
diff --git a/user/prosody/prosody.initd b/user/prosody/prosody.initd
new file mode 100644
index 000000000..1d835daca
--- /dev/null
+++ b/user/prosody/prosody.initd
@@ -0,0 +1,47 @@
+#!/sbin/openrc-run
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+description="Prosody is a server for prosody/XMPP written in Lua."
+description_reload="Reload configuration and reopen log files."
+extra_started_commands="reload"
+pidfile="/var/run/prosody/prosody.pid"
+
+depend() {
+ use dns
+ need net
+ provide prosody-server
+}
+
+checkconfig() {
+ if [ ! -e /etc/prosody/prosody.cfg.lua ] ; then
+ eerror "You need a /etc/prosody/prosody.cfg.lua file to run prosody"
+ return 1
+ fi
+ luac5.2 -p /etc/prosody/prosody.cfg.lua
+ return $?
+}
+
+start() {
+ checkconfig || return 1
+ checkpath -q -d -m 0770 -o prosody:prosody "$(dirname ${pidfile})"
+ checkpath -q -f -m 0770 -o prosody:prosody "${pidfile}"
+ checkpath -q -d -m 0750 -o prosody:prosody /var/log/prosody
+ ebegin "Starting Prosody XMPP Server"
+ prosodyctl start
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping Prosody XMPP Server"
+ prosodyctl stop
+ eend $?
+}
+
+reload() {
+ checkconfig || return 1
+ ebegin "Reloading configuration of Prosody XMPP Server"
+ prosodyctl reload
+ eend $?
+}
diff --git a/user/prosody/prosody.pre-install b/user/prosody/prosody.pre-install
new file mode 100644
index 000000000..39d9cfadd
--- /dev/null
+++ b/user/prosody/prosody.pre-install
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+addgroup -S prosody 2>/dev/null
+adduser -S -D \
+ -h /var/lib/prosody \
+ -s /sbin/nologin \
+ -G prosody \
+ -g "Prosody XMPP Server" \
+ prosody 2>/dev/null
+
+exit 0
diff --git a/user/prosody/prosodyctl.patch b/user/prosody/prosodyctl.patch
new file mode 100644
index 000000000..18333dd52
--- /dev/null
+++ b/user/prosody/prosodyctl.patch
@@ -0,0 +1,11 @@
+--- prosody-0.9.10.q/prosodyctl
++++ prosody-0.9.10/prosodyctl
+@@ -244,7 +244,7 @@
+ local modulemanager = require "core.modulemanager"
+
+ local prosodyctl = require "util.prosodyctl"
+-require "socket"
++local socket = require "socket"
+ -----------------------
+
+ -- FIXME: Duplicate code waiting for util.startup
diff --git a/user/protobuf/APKBUILD b/user/protobuf/APKBUILD
index 5f00430bf..f8ff737a6 100644
--- a/user/protobuf/APKBUILD
+++ b/user/protobuf/APKBUILD
@@ -35,7 +35,7 @@ prepare() {
build() {
cd "$builddir"
- CXXFLAGS="$CXXFLAGS -fno-delete-null-pointer-checks" \
+ CXXFLAGS="$CXXFLAGS -fno-delete-null-pointer-checks" LDFLAGS="$LDFLAGS -latomic" \
./configure --prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
diff --git a/user/rocs/APKBUILD b/user/rocs/APKBUILD
index 3cf0d9ef7..c7f2ce9c9 100644
--- a/user/rocs/APKBUILD
+++ b/user/rocs/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=rocs
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Graph theory IDE"
url="https://www.kde.org/applications/education/rocs/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="3b850415274bbc9155d56b7ff25dc17467d5947609133fe8d903263311b9a5551080110ee9af6f9a28c8e50c96e7f1a7d28fb5e6f91c94debf6b3ddf6631d45d rocs-18.08.1.tar.xz"
+sha512sums="2f5e51146cb060f7c36d4ee637ef4a9d31e4befcdadd41874b8353951f4eb1e1bee45c84c89a8a1748d4e9c74122d9d8f621391f030c3655666848ee53bf2082 rocs-18.08.2.tar.xz"
diff --git a/user/rust/0001-Require-static-native-libraries-when-linking-static-.patch b/user/rust/0001-Require-static-native-libraries-when-linking-static-.patch
index 2bcf4b318..a9638ee75 100644
--- a/user/rust/0001-Require-static-native-libraries-when-linking-static-.patch
+++ b/user/rust/0001-Require-static-native-libraries-when-linking-static-.patch
@@ -1,7 +1,7 @@
-From 531eaa63083c5351cea24867ba7144817d456d77 Mon Sep 17 00:00:00 2001
+From 9cee7b92ea492f9a879c88ae0ca2c1f791bdec97 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Fri, 8 Sep 2017 00:05:18 -0500
-Subject: [PATCH 01/28] Require static native libraries when linking static
+Subject: [PATCH 01/29] Require static native libraries when linking static
executables
---
diff --git a/user/rust/0002-Don-t-pass-CFLAGS-to-the-C-compiler.patch b/user/rust/0002-Don-t-pass-CFLAGS-to-the-C-compiler.patch
index a3efabf93..6b9bcb876 100644
--- a/user/rust/0002-Don-t-pass-CFLAGS-to-the-C-compiler.patch
+++ b/user/rust/0002-Don-t-pass-CFLAGS-to-the-C-compiler.patch
@@ -1,7 +1,7 @@
-From b77da61648c4787be551de6f654148c3686c7a3e Mon Sep 17 00:00:00 2001
+From 8523832491df1889d9c226bef0cc76ed7b1a8d33 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Wed, 10 Jan 2018 13:36:41 -0600
-Subject: [PATCH 02/28] Don't pass CFLAGS to the C++ compiler
+Subject: [PATCH 02/29] Don't pass CFLAGS to the C++ compiler
---
src/bootstrap/builder.rs | 6 ++----
diff --git a/user/rust/0003-Fix-LLVM-build.patch b/user/rust/0003-Fix-LLVM-build.patch
index d2ca8526b..72108f0ae 100644
--- a/user/rust/0003-Fix-LLVM-build.patch
+++ b/user/rust/0003-Fix-LLVM-build.patch
@@ -1,7 +1,7 @@
-From 272bbaa5abe4f165a1f45ea1e9b33604af3ca77b Mon Sep 17 00:00:00 2001
+From f8878714f01309b99cae990f390431929a37c2c8 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Fri, 8 Sep 2017 00:04:29 -0500
-Subject: [PATCH 03/28] Fix LLVM build
+Subject: [PATCH 03/29] Fix LLVM build
---
src/bootstrap/lib.rs | 3 ++-
diff --git a/user/rust/0004-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch b/user/rust/0004-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
index a5105fd82..a28fc39b0 100644
--- a/user/rust/0004-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
+++ b/user/rust/0004-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
@@ -1,7 +1,7 @@
-From 46fce11b84d5ae71fe55593c6141307a60ee349f Mon Sep 17 00:00:00 2001
+From 898e72085351cae381669960fcc4d20b8afeeb78 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Mon, 17 Sep 2018 01:32:20 +0000
-Subject: [PATCH 04/28] test/sysroot-crates-are-unstable: Fix test when rpath
+Subject: [PATCH 04/29] test/sysroot-crates-are-unstable: Fix test when rpath
is disabled
Without this environment var, the test can't run rustc to find
diff --git a/user/rust/0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch b/user/rust/0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch
index 4fb2f6e23..eda99398c 100644
--- a/user/rust/0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch
+++ b/user/rust/0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch
@@ -1,7 +1,7 @@
-From 98c0bb0e0213db77313c73167acf65c4658046dd Mon Sep 17 00:00:00 2001
+From 1b47e0a7cfc3fd6572d939aa894e3a23522ed4c0 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Fri, 8 Sep 2017 22:11:14 -0500
-Subject: [PATCH 05/28] Remove -nostdlib and musl_root from musl targets
+Subject: [PATCH 05/29] Remove -nostdlib and musl_root from musl targets
---
config.toml.example | 6 ---
diff --git a/user/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch b/user/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
index 2e0aa35d8..5a2b6c422 100644
--- a/user/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
+++ b/user/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
@@ -1,7 +1,7 @@
-From 6b2b48be476938c0f74b4e521e5ce3ecbeb19641 Mon Sep 17 00:00:00 2001
+From e3b90583112fd59255406f245db1856e0c21dab3 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Sat, 9 Sep 2017 00:14:16 -0500
-Subject: [PATCH 06/28] Prefer libgcc_eh over libunwind for musl
+Subject: [PATCH 06/29] Prefer libgcc_eh over libunwind for musl
---
src/libunwind/lib.rs | 2 +-
diff --git a/user/rust/0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch b/user/rust/0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
index 102e2e3a9..745c5a45f 100644
--- a/user/rust/0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
+++ b/user/rust/0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
@@ -1,7 +1,7 @@
-From 30a10fccca71d84e696bf907621c30f66eb708e6 Mon Sep 17 00:00:00 2001
+From d77940e640855aed389af02a95db7958375785e1 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Sun, 16 Sep 2018 16:40:04 +0000
-Subject: [PATCH 07/28] runtest: Fix proc-macro tests on musl hosts
+Subject: [PATCH 07/29] runtest: Fix proc-macro tests on musl hosts
---
src/tools/compiletest/src/runtest.rs | 7 ++-----
diff --git a/user/rust/0008-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch b/user/rust/0008-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
index 7dbd51a92..a3caa20f5 100644
--- a/user/rust/0008-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
+++ b/user/rust/0008-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
@@ -1,7 +1,7 @@
-From 8b418c37f13710085f9a0c0c70904ad07e799c3f Mon Sep 17 00:00:00 2001
+From 3028ae603ea6f08fd6bc1c64a7fe28628a1232e9 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Sat, 2 Dec 2017 17:25:44 -0600
-Subject: [PATCH 08/28] Allow rustdoc to work when cross-compiling on musl
+Subject: [PATCH 08/29] Allow rustdoc to work when cross-compiling on musl
musl can't handle foreign-architecture libraries in LD_LIBRARY_PATH.
---
diff --git a/user/rust/0009-Add-missing-OpenSSL-configurations-for-musl-targets.patch b/user/rust/0009-Add-missing-OpenSSL-configurations-for-musl-targets.patch
index 1bd596f33..6ae697151 100644
--- a/user/rust/0009-Add-missing-OpenSSL-configurations-for-musl-targets.patch
+++ b/user/rust/0009-Add-missing-OpenSSL-configurations-for-musl-targets.patch
@@ -1,7 +1,7 @@
-From 29fdec385825390eca134825acda5c2cbb09bceb Mon Sep 17 00:00:00 2001
+From 7595533dfe8121a2dcaec6de1653c3fb40349985 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Mon, 11 Sep 2017 11:21:56 -0500
-Subject: [PATCH 09/28] Add missing OpenSSL configurations for musl targets
+Subject: [PATCH 09/29] Add missing OpenSSL configurations for musl targets
---
src/bootstrap/native.rs | 6 ++++++
diff --git a/user/rust/0010-test-linkage-visibility-dlsym-only-sees-exported-sym.patch b/user/rust/0010-test-linkage-visibility-dlsym-only-sees-exported-sym.patch
index 1d6b5ae0d..15f431e5a 100644
--- a/user/rust/0010-test-linkage-visibility-dlsym-only-sees-exported-sym.patch
+++ b/user/rust/0010-test-linkage-visibility-dlsym-only-sees-exported-sym.patch
@@ -1,7 +1,7 @@
-From 5cbbac1243e4cda725f82337245881fe71beeec0 Mon Sep 17 00:00:00 2001
+From 289d2f3ceb6226c385f3784d310465f375dc0c00 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Sun, 16 Sep 2018 16:35:41 +0000
-Subject: [PATCH 10/28] test/linkage-visibility: dlsym only sees exported
+Subject: [PATCH 10/29] test/linkage-visibility: dlsym only sees exported
symbols
---
diff --git a/user/rust/0011-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch b/user/rust/0011-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch
index b2bd46ab7..58db71538 100644
--- a/user/rust/0011-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch
+++ b/user/rust/0011-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch
@@ -1,7 +1,7 @@
-From c4ed34adcd7649f886354115132fb18489ed91dc Mon Sep 17 00:00:00 2001
+From 097f992e9ef62963f5e938e9a21171253a72b36a Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Sun, 16 Sep 2018 16:37:09 +0000
-Subject: [PATCH 11/28] test/invalid_const_promotion: Accept SIGTRAP as a valid
+Subject: [PATCH 11/29] test/invalid_const_promotion: Accept SIGTRAP as a valid
death signal
---
diff --git a/user/rust/0015-Use-ELFv2-ABI-on-powerpc64-musl-LLVM-half.patch b/user/rust/0015-Use-ELFv2-ABI-on-powerpc64-musl-LLVM-half.patch
deleted file mode 100644
index 72743d01d..000000000
--- a/user/rust/0015-Use-ELFv2-ABI-on-powerpc64-musl-LLVM-half.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 91000b21e3a9938a66b7a9d12281b807004eefcc Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Wed, 8 Aug 2018 22:06:09 -0500
-Subject: [PATCH 15/28] Use ELFv2 ABI on powerpc64 musl (LLVM half)
-
----
- src/rustllvm/PassWrapper.cpp | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/src/rustllvm/PassWrapper.cpp b/src/rustllvm/PassWrapper.cpp
-index 85fbc4bf37..15c3ab18d9 100644
---- a/src/rustllvm/PassWrapper.cpp
-+++ b/src/rustllvm/PassWrapper.cpp
-@@ -399,6 +399,12 @@ extern "C" LLVMTargetMachineRef LLVMRustCreateTargetMachine(
- Options.ThreadModel = ThreadModel::Single;
- }
-
-+ // See https://reviews.llvm.org/D52013
-+ if (Trip.getArch() == llvm::Triple::ArchType::ppc64 &&
-+ Trip.getEnvironment() == llvm::Triple::EnvironmentType::Musl) {
-+ Options.MCOptions.ABIName = "elfv2";
-+ }
-+
- #if LLVM_VERSION_GE(6, 0)
- Optional<CodeModel::Model> CM;
- #else
---
-2.18.0
-
diff --git a/user/rust/0015-flock-Fix-F_SETLK-F_SETLKW-on-32-bit-O_LARGEFILE.patch b/user/rust/0015-flock-Fix-F_SETLK-F_SETLKW-on-32-bit-O_LARGEFILE.patch
new file mode 100644
index 000000000..de9661d3a
--- /dev/null
+++ b/user/rust/0015-flock-Fix-F_SETLK-F_SETLKW-on-32-bit-O_LARGEFILE.patch
@@ -0,0 +1,27 @@
+From 9c13dec5a526a4a66dc45453ab1808ab9a1bb10b Mon Sep 17 00:00:00 2001
+From: Samuel Holland <samuel@sholland.org>
+Date: Tue, 9 Oct 2018 04:15:48 +0000
+Subject: [PATCH 15/29] flock: Fix F_SETLK/F_SETLKW on 32-bit O_LARGEFILE
+
+---
+ src/librustc_data_structures/flock.rs | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/librustc_data_structures/flock.rs b/src/librustc_data_structures/flock.rs
+index ff1ebb11b7..d85017ec50 100644
+--- a/src/librustc_data_structures/flock.rs
++++ b/src/librustc_data_structures/flock.rs
+@@ -46,8 +46,8 @@ mod imp {
+ pub const F_RDLCK: libc::c_short = 0;
+ pub const F_WRLCK: libc::c_short = 1;
+ pub const F_UNLCK: libc::c_short = 2;
+- pub const F_SETLK: libc::c_int = 6;
+- pub const F_SETLKW: libc::c_int = 7;
++ pub const F_SETLK: libc::c_int = libc::F_SETLK;
++ pub const F_SETLKW: libc::c_int = libc::F_SETLKW;
+ }
+
+ #[cfg(target_os = "freebsd")]
+--
+2.18.0
+
diff --git a/user/rust/0012-Add-powerpc-unknown-linux-musl-target.patch b/user/rust/0016-Add-powerpc-unknown-linux-musl-target.patch
index acf5285c0..1bafb8dd5 100644
--- a/user/rust/0012-Add-powerpc-unknown-linux-musl-target.patch
+++ b/user/rust/0016-Add-powerpc-unknown-linux-musl-target.patch
@@ -1,7 +1,7 @@
-From 3e06726c26cd4ca93e7434cb33f7749e4d7311da Mon Sep 17 00:00:00 2001
+From 763b30d1e146fc04f7de2a8b1d6b17dcd94e3e0f Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Mon, 10 Sep 2018 01:35:35 +0000
-Subject: [PATCH 12/28] Add powerpc-unknown-linux-musl target
+Subject: [PATCH 16/29] Add powerpc-unknown-linux-musl target
---
src/bootstrap/native.rs | 1 +
diff --git a/user/rust/0016-Use-ELFv2-ABI-on-powerpc64-musl-Rust-half.patch b/user/rust/0017-Use-the-ELFv2-ABI-on-powerpc64-musl.patch
index 5841dfaf5..dd11dd568 100644
--- a/user/rust/0016-Use-ELFv2-ABI-on-powerpc64-musl-Rust-half.patch
+++ b/user/rust/0017-Use-the-ELFv2-ABI-on-powerpc64-musl.patch
@@ -1,7 +1,7 @@
-From 616f6627b1489fbf87f867cc9b7a2c870c64f06f Mon Sep 17 00:00:00 2001
+From e1214a04a9f8a30b67665ef353e3934e15e24a16 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Wed, 8 Aug 2018 22:06:18 -0500
-Subject: [PATCH 16/28] Use ELFv2 ABI on powerpc64 musl (Rust half)
+Subject: [PATCH 17/29] Use the ELFv2 ABI on powerpc64 musl
---
src/librustc_target/abi/call/powerpc64.rs | 12 ++++++++----
diff --git a/user/rust/0017-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch b/user/rust/0018-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch
index 35bf35f6c..d1a6daa16 100644
--- a/user/rust/0017-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch
+++ b/user/rust/0018-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch
@@ -1,7 +1,7 @@
-From 87d7cb5226728f549af3a7f469a6107c3acbc41d Mon Sep 17 00:00:00 2001
+From c99f30986f8486cc24dda5630b685dd932d510d4 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Sun, 16 Sep 2018 16:34:15 +0000
-Subject: [PATCH 17/28] Fix powerpc64 ELFv2 big-endian struct-passing ABI
+Subject: [PATCH 18/29] Fix powerpc64 ELFv2 big-endian struct-passing ABI
The requirements here are not "ELFv1" requirements, but big-endian
requirements, as the extension or non-extension of the argument is
diff --git a/user/rust/0018-Add-powerpc64-unknown-linux-musl-target.patch b/user/rust/0019-Add-powerpc64-unknown-linux-musl-target.patch
index a21c07b12..de0f2bc82 100644
--- a/user/rust/0018-Add-powerpc64-unknown-linux-musl-target.patch
+++ b/user/rust/0019-Add-powerpc64-unknown-linux-musl-target.patch
@@ -1,7 +1,7 @@
-From 529fb4b3cdc73a3a6b098f13f7d07255f0ebb63e Mon Sep 17 00:00:00 2001
+From 914179b27fdabbbd42da8206f46621a006e54180 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Tue, 7 Aug 2018 21:59:15 -0500
-Subject: [PATCH 18/28] Add powerpc64-unknown-linux-musl target
+Subject: [PATCH 19/29] Add powerpc64-unknown-linux-musl target
---
src/bootstrap/native.rs | 5 +++
diff --git a/user/rust/0019-run-pass-const-endianness-negate-before-to_le.patch b/user/rust/0020-run-pass-const-endianness-negate-before-to_le.patch
index a024abc21..151b3f419 100644
--- a/user/rust/0019-run-pass-const-endianness-negate-before-to_le.patch
+++ b/user/rust/0020-run-pass-const-endianness-negate-before-to_le.patch
@@ -1,7 +1,7 @@
-From c38c7916aca7d0d0aa1d860ae16ec8743515c94c Mon Sep 17 00:00:00 2001
+From 72c7e78b400c1ad96d84b254b51dcc9f2baea3e1 Mon Sep 17 00:00:00 2001
From: Josh Stone <jistone@redhat.com>
Date: Mon, 30 Jul 2018 13:08:56 -0700
-Subject: [PATCH 19/28] run-pass/const-endianness: negate before to_le()
+Subject: [PATCH 20/29] run-pass/const-endianness: negate before to_le()
`const LE_I128` needs parentheses to negate the value *before* calling
`to_le()`, otherwise it doesn't match the operations performed in the
diff --git a/user/rust/0020-Fix-double_check-tests-on-big-endian-targets.patch b/user/rust/0021-Fix-double_check-tests-on-big-endian-targets.patch
index ca8f7d1ad..720db7d10 100644
--- a/user/rust/0020-Fix-double_check-tests-on-big-endian-targets.patch
+++ b/user/rust/0021-Fix-double_check-tests-on-big-endian-targets.patch
@@ -1,7 +1,7 @@
-From 94543ed21325120c86cde3267306272b519be3f7 Mon Sep 17 00:00:00 2001
+From 55549ca3d760200dc6037fecc7e5b8816558c5b1 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Sun, 16 Sep 2018 16:37:58 +0000
-Subject: [PATCH 20/28] Fix double_check tests on big-endian targets
+Subject: [PATCH 21/29] Fix double_check tests on big-endian targets
Since the enums get optimized down to 1 byte long, the bits
set in the usize member don't align with the enums on big-endian
diff --git a/user/rust/0022-test-debuginfo-Update-for-GDB-output-format-changes.patch b/user/rust/0022-test-debuginfo-Update-for-GDB-output-format-changes.patch
deleted file mode 100644
index d7852a977..000000000
--- a/user/rust/0022-test-debuginfo-Update-for-GDB-output-format-changes.patch
+++ /dev/null
@@ -1,109 +0,0 @@
-From b50f6be09bdefa827bbb2248f48faaae87204a1d Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Sun, 16 Sep 2018 16:34:56 +0000
-Subject: [PATCH 22/28] test/debuginfo: Update for GDB output format changes
-
----
- .../generic-enum-with-different-disr-sizes.rs | 16 ++++++++--------
- src/test/debuginfo/generic-struct-style-enum.rs | 6 +++---
- src/test/debuginfo/generic-tuple-style-enum.rs | 6 +++---
- 3 files changed, 14 insertions(+), 14 deletions(-)
-
-diff --git a/src/test/debuginfo/generic-enum-with-different-disr-sizes.rs b/src/test/debuginfo/generic-enum-with-different-disr-sizes.rs
-index 1fc05b3752..7e3818bc0e 100644
---- a/src/test/debuginfo/generic-enum-with-different-disr-sizes.rs
-+++ b/src/test/debuginfo/generic-enum-with-different-disr-sizes.rs
-@@ -19,36 +19,36 @@
-
- // gdb-command:print eight_bytes1
- // gdbg-check:$1 = {{RUST$ENUM$DISR = Variant1, __0 = 100}, {RUST$ENUM$DISR = Variant1, __0 = 100}}
--// gdbr-check:$1 = generic_enum_with_different_disr_sizes::Enum::Variant1(100)
-+// gdbr-check:$1 = generic_enum_with_different_disr_sizes::Enum<f64>::Variant1(100)
-
- // gdb-command:print four_bytes1
- // gdbg-check:$2 = {{RUST$ENUM$DISR = Variant1, __0 = 101}, {RUST$ENUM$DISR = Variant1, __0 = 101}}
--// gdbr-check:$2 = generic_enum_with_different_disr_sizes::Enum::Variant1(101)
-+// gdbr-check:$2 = generic_enum_with_different_disr_sizes::Enum<i32>::Variant1(101)
-
- // gdb-command:print two_bytes1
- // gdbg-check:$3 = {{RUST$ENUM$DISR = Variant1, __0 = 102}, {RUST$ENUM$DISR = Variant1, __0 = 102}}
--// gdbr-check:$3 = generic_enum_with_different_disr_sizes::Enum::Variant1(102)
-+// gdbr-check:$3 = generic_enum_with_different_disr_sizes::Enum<i16>::Variant1(102)
-
- // gdb-command:print one_byte1
- // gdbg-check:$4 = {{RUST$ENUM$DISR = Variant1, __0 = 65 'A'}, {RUST$ENUM$DISR = Variant1, __0 = 65 'A'}}
--// gdbr-check:$4 = generic_enum_with_different_disr_sizes::Enum::Variant1(65)
-+// gdbr-check:$4 = generic_enum_with_different_disr_sizes::Enum<u8>::Variant1(65)
-
-
- // gdb-command:print eight_bytes2
- // gdbg-check:$5 = {{RUST$ENUM$DISR = Variant2, __0 = 100}, {RUST$ENUM$DISR = Variant2, __0 = 100}}
--// gdbr-check:$5 = generic_enum_with_different_disr_sizes::Enum::Variant2(100)
-+// gdbr-check:$5 = generic_enum_with_different_disr_sizes::Enum<f64>::Variant2(100)
-
- // gdb-command:print four_bytes2
- // gdbg-check:$6 = {{RUST$ENUM$DISR = Variant2, __0 = 101}, {RUST$ENUM$DISR = Variant2, __0 = 101}}
--// gdbr-check:$6 = generic_enum_with_different_disr_sizes::Enum::Variant2(101)
-+// gdbr-check:$6 = generic_enum_with_different_disr_sizes::Enum<i32>::Variant2(101)
-
- // gdb-command:print two_bytes2
- // gdbg-check:$7 = {{RUST$ENUM$DISR = Variant2, __0 = 102}, {RUST$ENUM$DISR = Variant2, __0 = 102}}
--// gdbr-check:$7 = generic_enum_with_different_disr_sizes::Enum::Variant2(102)
-+// gdbr-check:$7 = generic_enum_with_different_disr_sizes::Enum<i16>::Variant2(102)
-
- // gdb-command:print one_byte2
- // gdbg-check:$8 = {{RUST$ENUM$DISR = Variant2, __0 = 65 'A'}, {RUST$ENUM$DISR = Variant2, __0 = 65 'A'}}
--// gdbr-check:$8 = generic_enum_with_different_disr_sizes::Enum::Variant2(65)
-+// gdbr-check:$8 = generic_enum_with_different_disr_sizes::Enum<u8>::Variant2(65)
-
- // gdb-command:continue
-
-diff --git a/src/test/debuginfo/generic-struct-style-enum.rs b/src/test/debuginfo/generic-struct-style-enum.rs
-index 4a1d14ccf6..fa6b0105dc 100644
---- a/src/test/debuginfo/generic-struct-style-enum.rs
-+++ b/src/test/debuginfo/generic-struct-style-enum.rs
-@@ -19,15 +19,15 @@
-
- // gdb-command:print case1
- // gdbg-check:$1 = {{RUST$ENUM$DISR = Case1, a = 0, b = 31868, c = 31868, d = 31868, e = 31868}, {RUST$ENUM$DISR = Case1, [...]}, {RUST$ENUM$DISR = Case1, [...]}}
--// gdbr-check:$1 = generic_struct_style_enum::Regular::Case1{a: 0, b: 31868, c: 31868, d: 31868, e: 31868}
-+// gdbr-check:$1 = generic_struct_style_enum::Regular<u16, u32, i64>::Case1{a: 0, b: 31868, c: 31868, d: 31868, e: 31868}
-
- // gdb-command:print case2
- // gdbg-check:$2 = {{RUST$ENUM$DISR = Case2, [...]}, {RUST$ENUM$DISR = Case2, a = 0, b = 286331153, c = 286331153}, {RUST$ENUM$DISR = Case2, [...]}}
--// gdbr-check:$2 = generic_struct_style_enum::Regular::Case2{a: 0, b: 286331153, c: 286331153}
-+// gdbr-check:$2 = generic_struct_style_enum::Regular<i16, u32, i64>::Case2{a: 0, b: 286331153, c: 286331153}
-
- // gdb-command:print case3
- // gdbg-check:$3 = {{RUST$ENUM$DISR = Case3, [...]}, {RUST$ENUM$DISR = Case3, [...]}, {RUST$ENUM$DISR = Case3, a = 0, b = 6438275382588823897}}
--// gdbr-check:$3 = generic_struct_style_enum::Regular::Case3{a: 0, b: 6438275382588823897}
-+// gdbr-check:$3 = generic_struct_style_enum::Regular<u16, i32, u64>::Case3{a: 0, b: 6438275382588823897}
-
- // gdb-command:print univariant
- // gdbg-check:$4 = {{a = -1}}
-diff --git a/src/test/debuginfo/generic-tuple-style-enum.rs b/src/test/debuginfo/generic-tuple-style-enum.rs
-index 012bd6140c..b0f85d6f8b 100644
---- a/src/test/debuginfo/generic-tuple-style-enum.rs
-+++ b/src/test/debuginfo/generic-tuple-style-enum.rs
-@@ -21,15 +21,15 @@
-
- // gdb-command:print case1
- // gdbg-check:$1 = {{RUST$ENUM$DISR = Case1, __0 = 0, __1 = 31868, __2 = 31868, __3 = 31868, __4 = 31868}, {RUST$ENUM$DISR = Case1, [...]}, {RUST$ENUM$DISR = Case1, [...]}}
--// gdbr-check:$1 = generic_tuple_style_enum::Regular::Case1(0, 31868, 31868, 31868, 31868)
-+// gdbr-check:$1 = generic_tuple_style_enum::Regular<u16, u32, u64>::Case1(0, 31868, 31868, 31868, 31868)
-
- // gdb-command:print case2
- // gdbg-check:$2 = {{RUST$ENUM$DISR = Case2, [...]}, {RUST$ENUM$DISR = Case2, __0 = 0, __1 = 286331153, __2 = 286331153}, {RUST$ENUM$DISR = Case2, [...]}}
--// gdbr-check:$2 = generic_tuple_style_enum::Regular::Case2(0, 286331153, 286331153)
-+// gdbr-check:$2 = generic_tuple_style_enum::Regular<i16, i32, i64>::Case2(0, 286331153, 286331153)
-
- // gdb-command:print case3
- // gdbg-check:$3 = {{RUST$ENUM$DISR = Case3, [...]}, {RUST$ENUM$DISR = Case3, [...]}, {RUST$ENUM$DISR = Case3, __0 = 0, __1 = 6438275382588823897}}
--// gdbr-check:$3 = generic_tuple_style_enum::Regular::Case3(0, 6438275382588823897)
-+// gdbr-check:$3 = generic_tuple_style_enum::Regular<i16, i32, i64>::Case3(0, 6438275382588823897)
-
- // gdb-command:print univariant
- // gdbg-check:$4 = {{__0 = -1}}
---
-2.18.0
-
diff --git a/user/rust/0021-x.py-Use-python3-instead-of-python.patch b/user/rust/0022-x.py-Use-python3-instead-of-python.patch
index 70a1dcb9a..e23de6cef 100644
--- a/user/rust/0021-x.py-Use-python3-instead-of-python.patch
+++ b/user/rust/0022-x.py-Use-python3-instead-of-python.patch
@@ -1,7 +1,7 @@
-From e6007a9a892ccece7c940782a1ac9c13275eb26a Mon Sep 17 00:00:00 2001
+From 2a14cfeafd57037b4063e411f8e90f09bbe29fa4 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Mon, 10 Sep 2018 01:36:00 +0000
-Subject: [PATCH 21/28] x.py: Use python3 instead of python
+Subject: [PATCH 22/29] x.py: Use python3 instead of python
---
x.py | 2 +-
diff --git a/user/rust/0023-test-target-feature-gate-Ignore-on-not-applicable-ta.patch b/user/rust/0023-test-target-feature-gate-Ignore-on-not-applicable-ta.patch
deleted file mode 100644
index bcb0e8e77..000000000
--- a/user/rust/0023-test-target-feature-gate-Ignore-on-not-applicable-ta.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 103ce33fe27dfcb0dad1354f269838f641fe66f6 Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Sun, 16 Sep 2018 16:39:46 +0000
-Subject: [PATCH 23/28] test/target-feature-gate: Ignore on not-applicable
- targets
-
----
- src/test/ui/target-feature-gate.rs | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/test/ui/target-feature-gate.rs b/src/test/ui/target-feature-gate.rs
-index 69208f1513..59c5708b0c 100644
---- a/src/test/ui/target-feature-gate.rs
-+++ b/src/test/ui/target-feature-gate.rs
-@@ -10,6 +10,8 @@
-
- // ignore-arm
- // ignore-aarch64
-+// ignore-powerpc
-+// ignore-powerpc64
- // ignore-wasm
- // ignore-emscripten
- // gate-test-sse4a_target_feature
---
-2.18.0
-
diff --git a/user/rust/0023-test-target-feature-gate-Only-run-on-relevant-target.patch b/user/rust/0023-test-target-feature-gate-Only-run-on-relevant-target.patch
new file mode 100644
index 000000000..0bfa28fe9
--- /dev/null
+++ b/user/rust/0023-test-target-feature-gate-Only-run-on-relevant-target.patch
@@ -0,0 +1,37 @@
+From beb589601f0ca9dd762aaa9f52a440bbef68e943 Mon Sep 17 00:00:00 2001
+From: Samuel Holland <samuel@sholland.org>
+Date: Sun, 16 Sep 2018 16:39:46 +0000
+Subject: [PATCH 23/29] test/target-feature-gate: Only run on relevant targets
+
+---
+ src/test/ui/target-feature-gate.rs | 2 ++
+ src/test/ui/target-feature-gate.stderr | 2 +-
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/test/ui/target-feature-gate.rs b/src/test/ui/target-feature-gate.rs
+index 69208f1513..59c5708b0c 100644
+--- a/src/test/ui/target-feature-gate.rs
++++ b/src/test/ui/target-feature-gate.rs
+@@ -10,6 +10,8 @@
+
+ // ignore-arm
+ // ignore-aarch64
++// ignore-powerpc
++// ignore-powerpc64
+ // ignore-wasm
+ // ignore-emscripten
+ // gate-test-sse4a_target_feature
+diff --git a/src/test/ui/target-feature-gate.stderr b/src/test/ui/target-feature-gate.stderr
+index a6f794a1a1..24141d0064 100644
+--- a/src/test/ui/target-feature-gate.stderr
++++ b/src/test/ui/target-feature-gate.stderr
+@@ -1,5 +1,5 @@
+ error[E0658]: the target feature `avx512bw` is currently unstable (see issue #44839)
+- --> $DIR/target-feature-gate.rs:26:18
++ --> $DIR/target-feature-gate.rs:28:18
+ |
+ LL | #[target_feature(enable = "avx512bw")]
+ | ^^^^^^^^^^^^^^^^^^^
+--
+2.18.0
+
diff --git a/user/rust/0024-test-use-extern-for-plugins-Don-t-assume-multilib.patch b/user/rust/0024-test-use-extern-for-plugins-Don-t-assume-multilib.patch
new file mode 100644
index 000000000..c033bb558
--- /dev/null
+++ b/user/rust/0024-test-use-extern-for-plugins-Don-t-assume-multilib.patch
@@ -0,0 +1,30 @@
+From 0fbfd4524768afad009e8e94c8824adfd7bd3b00 Mon Sep 17 00:00:00 2001
+From: Samuel Holland <samuel@sholland.org>
+Date: Sat, 6 Oct 2018 04:01:48 +0000
+Subject: [PATCH 24/29] test/use-extern-for-plugins: Don't assume multilib
+
+---
+ src/test/run-make-fulldeps/use-extern-for-plugins/Makefile | 7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
+
+diff --git a/src/test/run-make-fulldeps/use-extern-for-plugins/Makefile b/src/test/run-make-fulldeps/use-extern-for-plugins/Makefile
+index cc7bc176f4..36553f1e44 100644
+--- a/src/test/run-make-fulldeps/use-extern-for-plugins/Makefile
++++ b/src/test/run-make-fulldeps/use-extern-for-plugins/Makefile
+@@ -4,12 +4,7 @@ SKIP_OS := 'FreeBSD OpenBSD Bitrig SunOS'
+
+ ifneq ($(UNAME),$(findstring $(UNAME),$(SKIP_OS)))
+
+-HOST := $(shell $(RUSTC) -vV | grep 'host:' | sed 's/host: //')
+-ifeq ($(findstring i686,$(HOST)),i686)
+-TARGET := $(subst i686,x86_64,$(HOST))
+-else
+-TARGET := $(subst x86_64,i686,$(HOST))
+-endif
++TARGET := $(shell $(RUSTC) -vV | grep 'host:' | sed 's/host: //')
+
+ all:
+ $(RUSTC) foo.rs -C extra-filename=-host
+--
+2.18.0
+
diff --git a/user/rust/0024-Ignore-broken-and-non-applicable-tests.patch b/user/rust/0025-Ignore-broken-and-non-applicable-tests.patch
index 75434c9fb..12c3e46dd 100644
--- a/user/rust/0024-Ignore-broken-and-non-applicable-tests.patch
+++ b/user/rust/0025-Ignore-broken-and-non-applicable-tests.patch
@@ -1,18 +1,16 @@
-From 4ed9e0630eafd839c9b22e8ed56ecacccc913bdf Mon Sep 17 00:00:00 2001
+From 72a9bf3841f3c07db121f6d41ccd448d73aa1c01 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Sun, 16 Sep 2018 16:38:48 +0000
-Subject: [PATCH 24/28] Ignore broken and non-applicable tests
+Subject: [PATCH 25/29] Ignore broken and non-applicable tests
-long-linker-command-lines: takes more than 10 minutes to run
-nil-enum: GDB output changed in a questionable way
+long-linker-command-lines: takes >10 minutes to run (but still passes)
sparc-struct-abi: no sparc target
sysroot-crates-are-unstable: can't run rustc without rpath
---
src/test/codegen/sparc-struct-abi.rs | 1 +
- src/test/debuginfo/nil-enum.rs | 2 +-
src/test/run-make-fulldeps/long-linker-command-lines/Makefile | 1 -
src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile | 2 +-
- 4 files changed, 3 insertions(+), 3 deletions(-)
+ 3 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/test/codegen/sparc-struct-abi.rs b/src/test/codegen/sparc-struct-abi.rs
index d3b7a5cd59..5e0f94cdf9 100644
@@ -26,19 +24,6 @@ index d3b7a5cd59..5e0f94cdf9 100644
#![feature(no_core, lang_items)]
#![no_core]
-diff --git a/src/test/debuginfo/nil-enum.rs b/src/test/debuginfo/nil-enum.rs
-index 94377421c0..bce2b98447 100644
---- a/src/test/debuginfo/nil-enum.rs
-+++ b/src/test/debuginfo/nil-enum.rs
-@@ -10,7 +10,7 @@
-
- // LLDB can't handle zero-sized values
- // ignore-lldb
--
-+// ignore-test
-
- // compile-flags:-g
- // gdb-command:run
diff --git a/src/test/run-make-fulldeps/long-linker-command-lines/Makefile b/src/test/run-make-fulldeps/long-linker-command-lines/Makefile
index 5876fbc94b..e9f5c33b77 100644
--- a/src/test/run-make-fulldeps/long-linker-command-lines/Makefile
diff --git a/user/rust/0028-Link-stage-2-tools-dynamically-to-libstd.patch b/user/rust/0026-Link-stage-2-tools-dynamically-to-libstd.patch
index 5a6f8506c..ffd3e8342 100644
--- a/user/rust/0028-Link-stage-2-tools-dynamically-to-libstd.patch
+++ b/user/rust/0026-Link-stage-2-tools-dynamically-to-libstd.patch
@@ -1,7 +1,7 @@
-From 418b6417dbaf06f5afe7a076bc8d58c308a4a48c Mon Sep 17 00:00:00 2001
+From 29df88cb3f1bdaac8e6a0049f8f1c1e335954509 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Mon, 24 Sep 2018 23:42:23 +0000
-Subject: [PATCH 28/28] Link stage 2 tools dynamically to libstd
+Subject: [PATCH 26/29] Link stage 2 tools dynamically to libstd
---
src/bootstrap/tool.rs | 4 +++-
diff --git a/user/rust/0027-Add-foxkit-target-specs-for-OpenSSL.patch b/user/rust/0027-Add-foxkit-target-specs-for-OpenSSL.patch
deleted file mode 100644
index 69e8584ba..000000000
--- a/user/rust/0027-Add-foxkit-target-specs-for-OpenSSL.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 7eba02678b9a00bc6d38281795422663bca3fcc1 Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Tue, 18 Sep 2018 00:02:46 +0000
-Subject: [PATCH 27/28] Add foxkit target specs for OpenSSL
-
----
- src/bootstrap/native.rs | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs
-index 186ef75189..406c76b95c 100644
---- a/src/bootstrap/native.rs
-+++ b/src/bootstrap/native.rs
-@@ -652,6 +652,12 @@ impl Step for Openssl {
- "x86_64-unknown-linux-gnux32" => "linux-x32",
- "x86_64-unknown-linux-musl" => "linux-x86_64",
- "x86_64-unknown-netbsd" => "BSD-x86_64",
-+ "aarch64-foxkit-linux-musl" => "linux-aarch64",
-+ "armv7-foxkit-linux-musleabihf" => "linux-armv4",
-+ "i586-foxkit-linux-musl" => "linux-elf",
-+ "powerpc-foxkit-linux-musl" => "linux-ppc",
-+ "powerpc64-foxkit-linux-musl" => "linux-ppc64",
-+ "x86_64-foxkit-linux-musl" => "linux-x86_64",
- _ => panic!("don't know how to configure OpenSSL for {}", target),
- };
- configure.arg(os);
-@@ -666,7 +672,7 @@ impl Step for Openssl {
- configure.arg("-fomit-frame-pointer");
- }
- // OpenSSL ships incompatible ELFv1 ABI assembly code
-- if target == "powerpc64-unknown-linux-musl" {
-+ if target == "powerpc64-unknown-linux-musl" || target == "powerpc64-foxkit-linux-musl" {
- configure.arg("no-asm");
- }
- if target == "sparc64-unknown-netbsd" {
---
-2.18.0
-
diff --git a/user/rust/0025-Move-debugger-scripts-to-usr-share-rust.patch b/user/rust/0027-Move-debugger-scripts-to-usr-share-rust.patch
index f1b163f2d..81c649eaf 100644
--- a/user/rust/0025-Move-debugger-scripts-to-usr-share-rust.patch
+++ b/user/rust/0027-Move-debugger-scripts-to-usr-share-rust.patch
@@ -1,7 +1,7 @@
-From e2660b4762083f14a355d283b6383f7cab0d38fd Mon Sep 17 00:00:00 2001
+From d8c25e109fbf44a3dc18ae0ea8da50cc6ee6b312 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Mon, 17 Sep 2018 02:09:10 +0000
-Subject: [PATCH 25/28] Move debugger scripts to /usr/share/rust
+Subject: [PATCH 27/29] Move debugger scripts to /usr/share/rust
---
src/bootstrap/dist.rs | 2 +-
diff --git a/user/rust/0026-Add-foxkit-target-specs.patch b/user/rust/0028-Add-foxkit-target-specs.patch
index 883748a0e..46a255a3c 100644
--- a/user/rust/0026-Add-foxkit-target-specs.patch
+++ b/user/rust/0028-Add-foxkit-target-specs.patch
@@ -1,9 +1,10 @@
-From 84f391140786018536c2eecd925c72814e5df38f Mon Sep 17 00:00:00 2001
+From a6da366371be1d8a1c55de52d9a53f93b9951cd0 Mon Sep 17 00:00:00 2001
From: Samuel Holland <samuel@sholland.org>
Date: Mon, 17 Sep 2018 02:29:06 +0000
-Subject: [PATCH 26/28] Add foxkit target specs
+Subject: [PATCH 28/29] Add foxkit target specs
---
+ src/bootstrap/native.rs | 10 +++++++--
.../spec/aarch64_foxkit_linux_musl.rs | 21 +++++++++++++++++++
.../spec/armv7_foxkit_linux_musleabihf.rs | 21 +++++++++++++++++++
.../spec/i586_foxkit_linux_musl.rs | 21 +++++++++++++++++++
@@ -11,7 +12,7 @@ Subject: [PATCH 26/28] Add foxkit target specs
.../spec/powerpc64_foxkit_linux_musl.rs | 21 +++++++++++++++++++
.../spec/powerpc_foxkit_linux_musl.rs | 21 +++++++++++++++++++
.../spec/x86_64_foxkit_linux_musl.rs | 21 +++++++++++++++++++
- 7 files changed, 133 insertions(+)
+ 8 files changed, 141 insertions(+), 2 deletions(-)
create mode 100644 src/librustc_target/spec/aarch64_foxkit_linux_musl.rs
create mode 100644 src/librustc_target/spec/armv7_foxkit_linux_musleabihf.rs
create mode 100644 src/librustc_target/spec/i586_foxkit_linux_musl.rs
@@ -19,6 +20,41 @@ Subject: [PATCH 26/28] Add foxkit target specs
create mode 100644 src/librustc_target/spec/powerpc_foxkit_linux_musl.rs
create mode 100644 src/librustc_target/spec/x86_64_foxkit_linux_musl.rs
+diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs
+index 186ef75189..9122eeb785 100644
+--- a/src/bootstrap/native.rs
++++ b/src/bootstrap/native.rs
+@@ -652,6 +652,12 @@ impl Step for Openssl {
+ "x86_64-unknown-linux-gnux32" => "linux-x32",
+ "x86_64-unknown-linux-musl" => "linux-x86_64",
+ "x86_64-unknown-netbsd" => "BSD-x86_64",
++ "aarch64-foxkit-linux-musl" => "linux-aarch64",
++ "armv7-foxkit-linux-musleabihf" => "linux-armv4",
++ "i586-foxkit-linux-musl" => "linux-elf",
++ "powerpc-foxkit-linux-musl" => "linux-ppc",
++ "powerpc64-foxkit-linux-musl" => "linux-ppc64",
++ "x86_64-foxkit-linux-musl" => "linux-x86_64",
+ _ => panic!("don't know how to configure OpenSSL for {}", target),
+ };
+ configure.arg(os);
+@@ -666,7 +672,7 @@ impl Step for Openssl {
+ configure.arg("-fomit-frame-pointer");
+ }
+ // OpenSSL ships incompatible ELFv1 ABI assembly code
+- if target == "powerpc64-unknown-linux-musl" {
++ if target == "powerpc64-unknown-linux-musl" || target == "powerpc64-foxkit-linux-musl" {
+ configure.arg("no-asm");
+ }
+ if target == "sparc64-unknown-netbsd" {
+@@ -681,7 +687,7 @@ impl Step for Openssl {
+ // Make PIE binaries
+ // Non-PIE linker support was removed in Lollipop
+ // https://source.android.com/security/enhancements/enhancements50
+- if target == "i686-linux-android" {
++ if target == "i686-linux-android" || target == "i586-foxkit-linux-musl" {
+ configure.arg("no-asm");
+ }
+ configure.current_dir(&obj);
diff --git a/src/librustc_target/spec/aarch64_foxkit_linux_musl.rs b/src/librustc_target/spec/aarch64_foxkit_linux_musl.rs
new file mode 100644
index 0000000000..18ad2c2f31
diff --git a/user/rust/0029-Work-around-libbacktrace-built-with-fstack-protector.patch b/user/rust/0029-Work-around-libbacktrace-built-with-fstack-protector.patch
new file mode 100644
index 000000000..29a31508d
--- /dev/null
+++ b/user/rust/0029-Work-around-libbacktrace-built-with-fstack-protector.patch
@@ -0,0 +1,47 @@
+From 22bb29c2b807180ed0522d9c930e14c327582571 Mon Sep 17 00:00:00 2001
+From: Samuel Holland <samuel@sholland.org>
+Date: Sat, 6 Oct 2018 04:17:14 +0000
+Subject: [PATCH 29/29] Work around libbacktrace built with -fstack-protector
+
+On 32-bit x86 and ppc, gcc generates calls to __stack_chk_fail_local,
+which must be a hidden function in every DSO. gcc provides the
+implementation in libssp_nonshared. libbacktrace is built in hosted
+mode, where Adelie's compiler enables -fstack-protector by default.
+However, rustc passes -nodefaultlibs, inhibiting gcc from linking
+libssp_nonshared.
+---
+ src/libpanic_unwind/Cargo.toml | 1 +
+ src/libpanic_unwind/build.rs | 10 ++++++++++
+ 2 files changed, 11 insertions(+)
+ create mode 100644 src/libpanic_unwind/build.rs
+
+diff --git a/src/libpanic_unwind/Cargo.toml b/src/libpanic_unwind/Cargo.toml
+index 74aaa4d5ae..c1b66aeefe 100644
+--- a/src/libpanic_unwind/Cargo.toml
++++ b/src/libpanic_unwind/Cargo.toml
+@@ -1,5 +1,6 @@
+ [package]
+ authors = ["The Rust Project Developers"]
++build = "build.rs"
+ name = "panic_unwind"
+ version = "0.0.0"
+
+diff --git a/src/libpanic_unwind/build.rs b/src/libpanic_unwind/build.rs
+new file mode 100644
+index 0000000000..0d9a14b64c
+--- /dev/null
++++ b/src/libpanic_unwind/build.rs
+@@ -0,0 +1,10 @@
++use std::env;
++
++fn main() {
++ let target = env::var("TARGET").unwrap();
++ match target.as_ref() {
++ "i586-foxkit-linux-musl" => println!("cargo:rustc-link-lib=ssp_nonshared"),
++ "powerpc-foxkit-linux-musl" => println!("cargo:rustc-link-lib=ssp_nonshared"),
++ _ => {},
++ };
++}
+--
+2.18.0
+
diff --git a/user/rust/0031-liblibc-0163a7ce20b5.patch b/user/rust/0031-liblibc-0163a7ce20b5.patch
new file mode 100644
index 000000000..6c2268a53
--- /dev/null
+++ b/user/rust/0031-liblibc-0163a7ce20b5.patch
@@ -0,0 +1,1343 @@
+From 0163a7ce20b5f4c8d8f725811e48e1f268b0253e Mon Sep 17 00:00:00 2001
+From: Marek Benc <dusxmt@gmx.com>
+Date: Thu, 5 Jul 2018 15:51:38 +0200
+Subject: [PATCH] Add linux musl powerpc (32-bit) support
+
+---
+ src/unix/notbsd/linux/musl/b32/arm.rs | 85 +++
+ src/unix/notbsd/linux/musl/b32/mips.rs | 85 +++
+ src/unix/notbsd/linux/musl/b32/mod.rs | 88 +--
+ src/unix/notbsd/linux/musl/b32/powerpc.rs | 866 ++++++++++++++++++++++
+ src/unix/notbsd/linux/musl/b32/x86.rs | 85 +++
+ src/unix/notbsd/linux/musl/mod.rs | 3 +-
+ 6 files changed, 1127 insertions(+), 85 deletions(-)
+ create mode 100644 src/unix/notbsd/linux/musl/b32/powerpc.rs
+
+diff --git a/src/liblibc/src/unix/notbsd/linux/musl/b32/arm.rs b/src/liblibc/src/unix/notbsd/linux/musl/b32/arm.rs
+index 22bf16c1fda..20fa33a3f77 100644
+--- a/src/liblibc/src/unix/notbsd/linux/musl/b32/arm.rs
++++ b/src/liblibc/src/unix/notbsd/linux/musl/b32/arm.rs
+@@ -52,6 +52,18 @@ s! {
+ pub ss_size: ::size_t
+ }
+
++ pub struct ipc_perm {
++ pub __ipc_perm_key: ::key_t,
++ pub uid: ::uid_t,
++ pub gid: ::gid_t,
++ pub cuid: ::uid_t,
++ pub cgid: ::gid_t,
++ pub mode: ::mode_t,
++ pub __seq: ::c_int,
++ __unused1: ::c_long,
++ __unused2: ::c_long
++ }
++
+ pub struct shmid_ds {
+ pub shm_perm: ::ipc_perm,
+ pub shm_segsz: ::size_t,
+@@ -151,6 +163,9 @@ s! {
+ }
+ }
+
++pub const SIGSTKSZ: ::size_t = 8192;
++pub const MINSIGSTKSZ: ::size_t = 2048;
++
+ pub const O_DIRECT: ::c_int = 0x10000;
+ pub const O_DIRECTORY: ::c_int = 0x4000;
+ pub const O_NOFOLLOW: ::c_int = 0x8000;
+@@ -165,6 +180,76 @@ pub const RLIMIT_NOFILE: ::c_int = 7;
+ pub const RLIMIT_AS: ::c_int = 9;
+ pub const RLIMIT_NPROC: ::c_int = 6;
+ pub const RLIMIT_MEMLOCK: ::c_int = 8;
++pub const RLIMIT_NLIMITS: ::c_int = 16;
++
++pub const MCL_CURRENT: ::c_int = 0x0001;
++pub const MCL_FUTURE: ::c_int = 0x0002;
++pub const CBAUD: ::tcflag_t = 0o0010017;
++pub const TAB1: ::c_int = 0x00000800;
++pub const TAB2: ::c_int = 0x00001000;
++pub const TAB3: ::c_int = 0x00001800;
++pub const CR1: ::c_int = 0x00000200;
++pub const CR2: ::c_int = 0x00000400;
++pub const CR3: ::c_int = 0x00000600;
++pub const FF1: ::c_int = 0x00008000;
++pub const BS1: ::c_int = 0x00002000;
++pub const VT1: ::c_int = 0x00004000;
++pub const VWERASE: usize = 14;
++pub const VREPRINT: usize = 12;
++pub const VSUSP: usize = 10;
++pub const VSTART: usize = 8;
++pub const VSTOP: usize = 9;
++pub const VDISCARD: usize = 13;
++pub const VTIME: usize = 5;
++pub const IXON: ::tcflag_t = 0x00000400;
++pub const IXOFF: ::tcflag_t = 0x00001000;
++pub const ONLCR: ::tcflag_t = 0x4;
++pub const CSIZE: ::tcflag_t = 0x00000030;
++pub const CS6: ::tcflag_t = 0x00000010;
++pub const CS7: ::tcflag_t = 0x00000020;
++pub const CS8: ::tcflag_t = 0x00000030;
++pub const CSTOPB: ::tcflag_t = 0x00000040;
++pub const CREAD: ::tcflag_t = 0x00000080;
++pub const PARENB: ::tcflag_t = 0x00000100;
++pub const PARODD: ::tcflag_t = 0x00000200;
++pub const HUPCL: ::tcflag_t = 0x00000400;
++pub const CLOCAL: ::tcflag_t = 0x00000800;
++pub const ECHOKE: ::tcflag_t = 0x00000800;
++pub const ECHOE: ::tcflag_t = 0x00000010;
++pub const ECHOK: ::tcflag_t = 0x00000020;
++pub const ECHONL: ::tcflag_t = 0x00000040;
++pub const ECHOPRT: ::tcflag_t = 0x00000400;
++pub const ECHOCTL: ::tcflag_t = 0x00000200;
++pub const ISIG: ::tcflag_t = 0x00000001;
++pub const ICANON: ::tcflag_t = 0x00000002;
++pub const PENDIN: ::tcflag_t = 0x00004000;
++pub const NOFLSH: ::tcflag_t = 0x00000080;
++pub const CIBAUD: ::tcflag_t = 0o02003600000;
++pub const CBAUDEX: ::tcflag_t = 0o010000;
++pub const VSWTC: usize = 7;
++pub const OLCUC: ::tcflag_t = 0o000002;
++pub const NLDLY: ::tcflag_t = 0o000400;
++pub const CRDLY: ::tcflag_t = 0o003000;
++pub const TABDLY: ::tcflag_t = 0o014000;
++pub const BSDLY: ::tcflag_t = 0o020000;
++pub const FFDLY: ::tcflag_t = 0o100000;
++pub const VTDLY: ::tcflag_t = 0o040000;
++pub const XTABS: ::tcflag_t = 0o014000;
++pub const B57600: ::speed_t = 0o010001;
++pub const B115200: ::speed_t = 0o010002;
++pub const B230400: ::speed_t = 0o010003;
++pub const B460800: ::speed_t = 0o010004;
++pub const B500000: ::speed_t = 0o010005;
++pub const B576000: ::speed_t = 0o010006;
++pub const B921600: ::speed_t = 0o010007;
++pub const B1000000: ::speed_t = 0o010010;
++pub const B1152000: ::speed_t = 0o010011;
++pub const B1500000: ::speed_t = 0o010012;
++pub const B2000000: ::speed_t = 0o010013;
++pub const B2500000: ::speed_t = 0o010014;
++pub const B3000000: ::speed_t = 0o010015;
++pub const B3500000: ::speed_t = 0o010016;
++pub const B4000000: ::speed_t = 0o010017;
+
+ pub const O_APPEND: ::c_int = 1024;
+ pub const O_CREAT: ::c_int = 64;
+diff --git a/src/liblibc/src/unix/notbsd/linux/musl/b32/mips.rs b/src/liblibc/src/unix/notbsd/linux/musl/b32/mips.rs
+index 89231a0c751..bfde73c563d 100644
+--- a/src/liblibc/src/unix/notbsd/linux/musl/b32/mips.rs
++++ b/src/liblibc/src/unix/notbsd/linux/musl/b32/mips.rs
+@@ -54,6 +54,18 @@ s! {
+ pub ss_flags: ::c_int,
+ }
+
++ pub struct ipc_perm {
++ pub __ipc_perm_key: ::key_t,
++ pub uid: ::uid_t,
++ pub gid: ::gid_t,
++ pub cuid: ::uid_t,
++ pub cgid: ::gid_t,
++ pub mode: ::mode_t,
++ pub __seq: ::c_int,
++ __unused1: ::c_long,
++ __unused2: ::c_long
++ }
++
+ pub struct shmid_ds {
+ pub shm_perm: ::ipc_perm,
+ pub shm_segsz: ::size_t,
+@@ -162,6 +174,9 @@ s! {
+ }
+ }
+
++pub const SIGSTKSZ: ::size_t = 8192;
++pub const MINSIGSTKSZ: ::size_t = 2048;
++
+ pub const O_DIRECT: ::c_int = 0o100000;
+ pub const O_DIRECTORY: ::c_int = 0o200000;
+ pub const O_NOFOLLOW: ::c_int = 0o400000;
+@@ -176,6 +191,76 @@ pub const RLIMIT_NOFILE: ::c_int = 5;
+ pub const RLIMIT_AS: ::c_int = 6;
+ pub const RLIMIT_NPROC: ::c_int = 8;
+ pub const RLIMIT_MEMLOCK: ::c_int = 9;
++pub const RLIMIT_NLIMITS: ::c_int = 16;
++
++pub const MCL_CURRENT: ::c_int = 0x0001;
++pub const MCL_FUTURE: ::c_int = 0x0002;
++pub const CBAUD: ::tcflag_t = 0o0010017;
++pub const TAB1: ::c_int = 0x00000800;
++pub const TAB2: ::c_int = 0x00001000;
++pub const TAB3: ::c_int = 0x00001800;
++pub const CR1: ::c_int = 0x00000200;
++pub const CR2: ::c_int = 0x00000400;
++pub const CR3: ::c_int = 0x00000600;
++pub const FF1: ::c_int = 0x00008000;
++pub const BS1: ::c_int = 0x00002000;
++pub const VT1: ::c_int = 0x00004000;
++pub const VWERASE: usize = 14;
++pub const VREPRINT: usize = 12;
++pub const VSUSP: usize = 10;
++pub const VSTART: usize = 8;
++pub const VSTOP: usize = 9;
++pub const VDISCARD: usize = 13;
++pub const VTIME: usize = 5;
++pub const IXON: ::tcflag_t = 0x00000400;
++pub const IXOFF: ::tcflag_t = 0x00001000;
++pub const ONLCR: ::tcflag_t = 0x4;
++pub const CSIZE: ::tcflag_t = 0x00000030;
++pub const CS6: ::tcflag_t = 0x00000010;
++pub const CS7: ::tcflag_t = 0x00000020;
++pub const CS8: ::tcflag_t = 0x00000030;
++pub const CSTOPB: ::tcflag_t = 0x00000040;
++pub const CREAD: ::tcflag_t = 0x00000080;
++pub const PARENB: ::tcflag_t = 0x00000100;
++pub const PARODD: ::tcflag_t = 0x00000200;
++pub const HUPCL: ::tcflag_t = 0x00000400;
++pub const CLOCAL: ::tcflag_t = 0x00000800;
++pub const ECHOKE: ::tcflag_t = 0x00000800;
++pub const ECHOE: ::tcflag_t = 0x00000010;
++pub const ECHOK: ::tcflag_t = 0x00000020;
++pub const ECHONL: ::tcflag_t = 0x00000040;
++pub const ECHOPRT: ::tcflag_t = 0x00000400;
++pub const ECHOCTL: ::tcflag_t = 0x00000200;
++pub const ISIG: ::tcflag_t = 0x00000001;
++pub const ICANON: ::tcflag_t = 0x00000002;
++pub const PENDIN: ::tcflag_t = 0x00004000;
++pub const NOFLSH: ::tcflag_t = 0x00000080;
++pub const CIBAUD: ::tcflag_t = 0o02003600000;
++pub const CBAUDEX: ::tcflag_t = 0o010000;
++pub const VSWTC: usize = 7;
++pub const OLCUC: ::tcflag_t = 0o000002;
++pub const NLDLY: ::tcflag_t = 0o000400;
++pub const CRDLY: ::tcflag_t = 0o003000;
++pub const TABDLY: ::tcflag_t = 0o014000;
++pub const BSDLY: ::tcflag_t = 0o020000;
++pub const FFDLY: ::tcflag_t = 0o100000;
++pub const VTDLY: ::tcflag_t = 0o040000;
++pub const XTABS: ::tcflag_t = 0o014000;
++pub const B57600: ::speed_t = 0o010001;
++pub const B115200: ::speed_t = 0o010002;
++pub const B230400: ::speed_t = 0o010003;
++pub const B460800: ::speed_t = 0o010004;
++pub const B500000: ::speed_t = 0o010005;
++pub const B576000: ::speed_t = 0o010006;
++pub const B921600: ::speed_t = 0o010007;
++pub const B1000000: ::speed_t = 0o010010;
++pub const B1152000: ::speed_t = 0o010011;
++pub const B1500000: ::speed_t = 0o010012;
++pub const B2000000: ::speed_t = 0o010013;
++pub const B2500000: ::speed_t = 0o010014;
++pub const B3000000: ::speed_t = 0o010015;
++pub const B3500000: ::speed_t = 0o010016;
++pub const B4000000: ::speed_t = 0o010017;
+
+ pub const O_APPEND: ::c_int = 0o010;
+ pub const O_CREAT: ::c_int = 0o400;
+diff --git a/src/liblibc/src/unix/notbsd/linux/musl/b32/mod.rs b/src/liblibc/src/unix/notbsd/linux/musl/b32/mod.rs
+index b4a0f761636..4128a8e4da6 100644
+--- a/src/liblibc/src/unix/notbsd/linux/musl/b32/mod.rs
++++ b/src/liblibc/src/unix/notbsd/linux/musl/b32/mod.rs
+@@ -32,96 +32,13 @@ s! {
+ pub struct sem_t {
+ __val: [::c_int; 4],
+ }
+-
+- pub struct ipc_perm {
+- pub __ipc_perm_key: ::key_t,
+- pub uid: ::uid_t,
+- pub gid: ::gid_t,
+- pub cuid: ::uid_t,
+- pub cgid: ::gid_t,
+- pub mode: ::mode_t,
+- pub __seq: ::c_int,
+- __unused1: ::c_long,
+- __unused2: ::c_long
+- }
+ }
+
+-pub const SIGSTKSZ: ::size_t = 8192;
+-pub const MINSIGSTKSZ: ::size_t = 2048;
+-
+ pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 32;
+ pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 24;
+
+-pub const RLIMIT_NLIMITS: ::c_int = 16;
+ pub const TIOCINQ: ::c_int = ::FIONREAD;
+-pub const MCL_CURRENT: ::c_int = 0x0001;
+-pub const MCL_FUTURE: ::c_int = 0x0002;
+-pub const CBAUD: ::tcflag_t = 0o0010017;
+-pub const TAB1: ::c_int = 0x00000800;
+-pub const TAB2: ::c_int = 0x00001000;
+-pub const TAB3: ::c_int = 0x00001800;
+-pub const CR1: ::c_int = 0x00000200;
+-pub const CR2: ::c_int = 0x00000400;
+-pub const CR3: ::c_int = 0x00000600;
+-pub const FF1: ::c_int = 0x00008000;
+-pub const BS1: ::c_int = 0x00002000;
+-pub const VT1: ::c_int = 0x00004000;
+-pub const VWERASE: usize = 14;
+-pub const VREPRINT: usize = 12;
+-pub const VSUSP: usize = 10;
+-pub const VSTART: usize = 8;
+-pub const VSTOP: usize = 9;
+-pub const VDISCARD: usize = 13;
+-pub const VTIME: usize = 5;
+-pub const IXON: ::tcflag_t = 0x00000400;
+-pub const IXOFF: ::tcflag_t = 0x00001000;
+-pub const ONLCR: ::tcflag_t = 0x4;
+-pub const CSIZE: ::tcflag_t = 0x00000030;
+-pub const CS6: ::tcflag_t = 0x00000010;
+-pub const CS7: ::tcflag_t = 0x00000020;
+-pub const CS8: ::tcflag_t = 0x00000030;
+-pub const CSTOPB: ::tcflag_t = 0x00000040;
+-pub const CREAD: ::tcflag_t = 0x00000080;
+-pub const PARENB: ::tcflag_t = 0x00000100;
+-pub const PARODD: ::tcflag_t = 0x00000200;
+-pub const HUPCL: ::tcflag_t = 0x00000400;
+-pub const CLOCAL: ::tcflag_t = 0x00000800;
+-pub const ECHOKE: ::tcflag_t = 0x00000800;
+-pub const ECHOE: ::tcflag_t = 0x00000010;
+-pub const ECHOK: ::tcflag_t = 0x00000020;
+-pub const ECHONL: ::tcflag_t = 0x00000040;
+-pub const ECHOPRT: ::tcflag_t = 0x00000400;
+-pub const ECHOCTL: ::tcflag_t = 0x00000200;
+-pub const ISIG: ::tcflag_t = 0x00000001;
+-pub const ICANON: ::tcflag_t = 0x00000002;
+-pub const PENDIN: ::tcflag_t = 0x00004000;
+-pub const NOFLSH: ::tcflag_t = 0x00000080;
+-pub const CIBAUD: ::tcflag_t = 0o02003600000;
+-pub const CBAUDEX: ::tcflag_t = 0o010000;
+-pub const VSWTC: usize = 7;
+-pub const OLCUC: ::tcflag_t = 0o000002;
+-pub const NLDLY: ::tcflag_t = 0o000400;
+-pub const CRDLY: ::tcflag_t = 0o003000;
+-pub const TABDLY: ::tcflag_t = 0o014000;
+-pub const BSDLY: ::tcflag_t = 0o020000;
+-pub const FFDLY: ::tcflag_t = 0o100000;
+-pub const VTDLY: ::tcflag_t = 0o040000;
+-pub const XTABS: ::tcflag_t = 0o014000;
+-pub const B57600: ::speed_t = 0o010001;
+-pub const B115200: ::speed_t = 0o010002;
+-pub const B230400: ::speed_t = 0o010003;
+-pub const B460800: ::speed_t = 0o010004;
+-pub const B500000: ::speed_t = 0o010005;
+-pub const B576000: ::speed_t = 0o010006;
+-pub const B921600: ::speed_t = 0o010007;
+-pub const B1000000: ::speed_t = 0o010010;
+-pub const B1152000: ::speed_t = 0o010011;
+-pub const B1500000: ::speed_t = 0o010012;
+-pub const B2000000: ::speed_t = 0o010013;
+-pub const B2500000: ::speed_t = 0o010014;
+-pub const B3000000: ::speed_t = 0o010015;
+-pub const B3500000: ::speed_t = 0o010016;
+-pub const B4000000: ::speed_t = 0o010017;
++
+ extern {
+ pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;
+ }
+@@ -136,6 +53,9 @@ cfg_if! {
+ } else if #[cfg(any(target_arch = "arm"))] {
+ mod arm;
+ pub use self::arm::*;
++ } else if #[cfg(any(target_arch = "powerpc"))] {
++ mod powerpc;
++ pub use self::powerpc::*;
+ } else {
+ // Unknown target_arch
+ }
+diff --git a/src/liblibc/src/unix/notbsd/linux/musl/b32/powerpc.rs b/src/liblibc/src/unix/notbsd/linux/musl/b32/powerpc.rs
+new file mode 100644
+index 00000000000..50b6b57ef11
+--- /dev/null
++++ b/src/liblibc/src/unix/notbsd/linux/musl/b32/powerpc.rs
+@@ -0,0 +1,866 @@
++pub type c_char = u8;
++pub type wchar_t = i32;
++
++s! {
++ pub struct stat {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino_t,
++ pub st_mode: ::mode_t,
++ pub st_nlink: ::nlink_t,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ pub st_rdev: ::dev_t,
++ __st_rdev_padding: ::c_short,
++ pub st_size: ::off_t,
++ pub st_blksize: ::blksize_t,
++ pub st_blocks: ::blkcnt_t,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ __unused: [::c_long; 2],
++ }
++
++ pub struct stat64 {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino_t,
++ pub st_mode: ::mode_t,
++ pub st_nlink: ::nlink_t,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ pub st_rdev: ::dev_t,
++ __st_rdev_padding: ::c_short,
++ pub st_size: ::off_t,
++ pub st_blksize: ::blksize_t,
++ pub st_blocks: ::blkcnt_t,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ __unused: [::c_long; 2],
++ }
++
++ pub struct stack_t {
++ pub ss_sp: *mut ::c_void,
++ pub ss_flags: ::c_int,
++ pub ss_size: ::size_t
++ }
++
++ pub struct ipc_perm {
++ pub __ipc_perm_key: ::key_t,
++ pub uid: ::uid_t,
++ pub gid: ::gid_t,
++ pub cuid: ::uid_t,
++ pub cgid: ::gid_t,
++ pub mode: ::mode_t,
++ pub __seq: ::c_int,
++ __pad1: ::c_int,
++ __pad2: ::c_longlong,
++ __pad3: ::c_longlong
++ }
++
++ pub struct shmid_ds {
++ pub shm_perm: ::ipc_perm,
++ __unused1: ::c_int,
++ pub shm_atime: ::time_t,
++ __unused2: ::c_int,
++ pub shm_dtime: ::time_t,
++ __unused3: ::c_int,
++ pub shm_ctime: ::time_t,
++ __unused4: ::c_int,
++ pub shm_segsz: ::size_t,
++ pub shm_cpid: ::pid_t,
++ pub shm_lpid: ::pid_t,
++ pub shm_nattch: ::c_ulong,
++ __pad1: ::c_ulong,
++ __pad2: ::c_ulong,
++ }
++
++ pub struct msqid_ds {
++ pub msg_perm: ::ipc_perm,
++ __unused1: ::c_int,
++ pub msg_stime: ::time_t,
++ __unused2: ::c_int,
++ pub msg_rtime: ::time_t,
++ __unused3: ::c_int,
++ pub msg_ctime: ::time_t,
++ __msg_cbytes: ::c_ulong,
++ pub msg_qnum: ::msgqnum_t,
++ pub msg_qbytes: ::msglen_t,
++ pub msg_lspid: ::pid_t,
++ pub msg_lrpid: ::pid_t,
++ __pad1: ::c_ulong,
++ __pad2: ::c_ulong,
++ }
++
++ pub struct statfs {
++ pub f_type: ::c_ulong,
++ pub f_bsize: ::c_ulong,
++ pub f_blocks: ::fsblkcnt_t,
++ pub f_bfree: ::fsblkcnt_t,
++ pub f_bavail: ::fsblkcnt_t,
++ pub f_files: ::fsfilcnt_t,
++ pub f_ffree: ::fsfilcnt_t,
++ pub f_fsid: ::fsid_t,
++ pub f_namelen: ::c_ulong,
++ pub f_frsize: ::c_ulong,
++ pub f_flags: ::c_ulong,
++ pub f_spare: [::c_ulong; 4],
++ }
++
++ pub struct siginfo_t {
++ pub si_signo: ::c_int,
++ pub si_errno: ::c_int,
++ pub si_code: ::c_int,
++ pub _pad: [::c_int; 29],
++ _align: [usize; 0],
++ }
++
++ pub struct statfs64 {
++ pub f_type: ::c_ulong,
++ pub f_bsize: ::c_ulong,
++ pub f_blocks: ::fsblkcnt_t,
++ pub f_bfree: ::fsblkcnt_t,
++ pub f_bavail: ::fsblkcnt_t,
++ pub f_files: ::fsfilcnt_t,
++ pub f_ffree: ::fsfilcnt_t,
++ pub f_fsid: ::fsid_t,
++ pub f_namelen: ::c_ulong,
++ pub f_frsize: ::c_ulong,
++ pub f_flags: ::c_ulong,
++ pub f_spare: [::c_ulong; 4],
++ }
++
++ pub struct statvfs64 {
++ pub f_bsize: ::c_ulong,
++ pub f_frsize: ::c_ulong,
++ pub f_blocks: u64,
++ pub f_bfree: u64,
++ pub f_bavail: u64,
++ pub f_files: u64,
++ pub f_ffree: u64,
++ pub f_favail: u64,
++ #[cfg(target_endian = "little")]
++ pub f_fsid: ::c_ulong,
++ __f_unused: ::c_int,
++ #[cfg(target_endian = "big")]
++ pub f_fsid: ::c_ulong,
++ pub f_flag: ::c_ulong,
++ pub f_namemax: ::c_ulong,
++ __f_spare: [::c_int; 6],
++ }
++
++ pub struct termios2 {
++ pub c_iflag: ::tcflag_t,
++ pub c_oflag: ::tcflag_t,
++ pub c_cflag: ::tcflag_t,
++ pub c_lflag: ::tcflag_t,
++ pub c_cc: [::cc_t; 19],
++ pub c_line: ::cc_t,
++ pub c_ispeed: ::speed_t,
++ pub c_ospeed: ::speed_t,
++ }
++}
++
++pub const SIGSTKSZ: ::size_t = 10240;
++pub const MINSIGSTKSZ: ::size_t = 4096;
++
++pub const O_DIRECT: ::c_int = 0x20000;
++pub const O_DIRECTORY: ::c_int = 0x4000;
++pub const O_NOFOLLOW: ::c_int = 0x8000;
++pub const O_ASYNC: ::c_int = 0x2000;
++pub const O_LARGEFILE: ::c_int = 0x10000;
++
++pub const FIOCLEX: ::c_int = 0x20006601;
++pub const FIONBIO: ::c_int = 0x8004667E;
++
++pub const RLIMIT_RSS: ::c_int = 5;
++pub const RLIMIT_NOFILE: ::c_int = 7;
++pub const RLIMIT_AS: ::c_int = 9;
++pub const RLIMIT_NPROC: ::c_int = 6;
++pub const RLIMIT_MEMLOCK: ::c_int = 8;
++pub const RLIMIT_NLIMITS: ::c_int = 15;
++
++pub const MCL_CURRENT: ::c_int = 0x2000;
++pub const MCL_FUTURE: ::c_int = 0x4000;
++pub const CBAUD: ::tcflag_t = 0o0000377;
++pub const TAB1: ::c_int = 0x00000400;
++pub const TAB2: ::c_int = 0x00000800;
++pub const TAB3: ::c_int = 0x00000C00;
++pub const CR1: ::c_int = 0x00001000;
++pub const CR2: ::c_int = 0x00002000;
++pub const CR3: ::c_int = 0x00003000;
++pub const FF1: ::c_int = 0x00004000;
++pub const BS1: ::c_int = 0x00008000;
++pub const VT1: ::c_int = 0x00010000;
++pub const VWERASE: usize = 10;
++pub const VREPRINT: usize = 11;
++pub const VSUSP: usize = 12;
++pub const VSTART: usize = 13;
++pub const VSTOP: usize = 14;
++pub const VDISCARD: usize = 16;
++pub const VTIME: usize = 7;
++pub const IXON: ::tcflag_t = 0x00000200;
++pub const IXOFF: ::tcflag_t = 0x00000400;
++pub const ONLCR: ::tcflag_t = 0x00000002;
++pub const CSIZE: ::tcflag_t = 0x00000300;
++pub const CS6: ::tcflag_t = 0x00000100;
++pub const CS7: ::tcflag_t = 0x00000200;
++pub const CS8: ::tcflag_t = 0x00000300;
++pub const CSTOPB: ::tcflag_t = 0x00000400;
++pub const CREAD: ::tcflag_t = 0x00000800;
++pub const PARENB: ::tcflag_t = 0x00001000;
++pub const PARODD: ::tcflag_t = 0x00002000;
++pub const HUPCL: ::tcflag_t = 0x00004000;
++pub const CLOCAL: ::tcflag_t = 0x00008000;
++pub const ECHOKE: ::tcflag_t = 0x00000001;
++pub const ECHOE: ::tcflag_t = 0x00000002;
++pub const ECHOK: ::tcflag_t = 0x00000004;
++pub const ECHONL: ::tcflag_t = 0x00000010;
++pub const ECHOPRT: ::tcflag_t = 0x00000020;
++pub const ECHOCTL: ::tcflag_t = 0x00000040;
++pub const ISIG: ::tcflag_t = 0x00000080;
++pub const ICANON: ::tcflag_t = 0x00000100;
++pub const PENDIN: ::tcflag_t = 0x20000000;
++pub const NOFLSH: ::tcflag_t = 0x80000000;
++pub const CIBAUD: ::tcflag_t = 0o00077600000;
++pub const CBAUDEX: ::tcflag_t = 0o000020;
++pub const VSWTC: usize = 9;
++pub const OLCUC: ::tcflag_t = 0o000004;
++pub const NLDLY: ::tcflag_t = 0o001400;
++pub const CRDLY: ::tcflag_t = 0o030000;
++pub const TABDLY: ::tcflag_t = 0o006000;
++pub const BSDLY: ::tcflag_t = 0o100000;
++pub const FFDLY: ::tcflag_t = 0o040000;
++pub const VTDLY: ::tcflag_t = 0o200000;
++pub const XTABS: ::tcflag_t = 0o006000;
++pub const B57600: ::speed_t = 0o000020;
++pub const B115200: ::speed_t = 0o000021;
++pub const B230400: ::speed_t = 0o000022;
++pub const B460800: ::speed_t = 0o000023;
++pub const B500000: ::speed_t = 0o000024;
++pub const B576000: ::speed_t = 0o000025;
++pub const B921600: ::speed_t = 0o000026;
++pub const B1000000: ::speed_t = 0o000027;
++pub const B1152000: ::speed_t = 0o000030;
++pub const B1500000: ::speed_t = 0o000031;
++pub const B2000000: ::speed_t = 0o000032;
++pub const B2500000: ::speed_t = 0o000033;
++pub const B3000000: ::speed_t = 0o000034;
++pub const B3500000: ::speed_t = 0o000035;
++pub const B4000000: ::speed_t = 0o000036;
++
++pub const O_APPEND: ::c_int = 1024;
++pub const O_CREAT: ::c_int = 64;
++pub const O_EXCL: ::c_int = 128;
++pub const O_NOCTTY: ::c_int = 256;
++pub const O_NONBLOCK: ::c_int = 2048;
++pub const O_SYNC: ::c_int = 1052672;
++pub const O_RSYNC: ::c_int = 1052672;
++pub const O_DSYNC: ::c_int = 4096;
++
++pub const SOCK_NONBLOCK: ::c_int = 2048;
++
++pub const MAP_ANON: ::c_int = 0x0020;
++pub const MAP_GROWSDOWN: ::c_int = 0x0100;
++pub const MAP_DENYWRITE: ::c_int = 0x0800;
++pub const MAP_EXECUTABLE: ::c_int = 0x01000;
++pub const MAP_LOCKED: ::c_int = 0x00080;
++pub const MAP_NORESERVE: ::c_int = 0x00040;
++pub const MAP_POPULATE: ::c_int = 0x08000;
++pub const MAP_NONBLOCK: ::c_int = 0x010000;
++pub const MAP_STACK: ::c_int = 0x020000;
++
++pub const SOCK_STREAM: ::c_int = 1;
++pub const SOCK_DGRAM: ::c_int = 2;
++pub const SOCK_SEQPACKET: ::c_int = 5;
++
++pub const SOL_SOCKET: ::c_int = 1;
++
++pub const EDEADLK: ::c_int = 35;
++pub const ENAMETOOLONG: ::c_int = 36;
++pub const ENOLCK: ::c_int = 37;
++pub const ENOSYS: ::c_int = 38;
++pub const ENOTEMPTY: ::c_int = 39;
++pub const ELOOP: ::c_int = 40;
++pub const ENOMSG: ::c_int = 42;
++pub const EIDRM: ::c_int = 43;
++pub const ECHRNG: ::c_int = 44;
++pub const EL2NSYNC: ::c_int = 45;
++pub const EL3HLT: ::c_int = 46;
++pub const EL3RST: ::c_int = 47;
++pub const ELNRNG: ::c_int = 48;
++pub const EUNATCH: ::c_int = 49;
++pub const ENOCSI: ::c_int = 50;
++pub const EL2HLT: ::c_int = 51;
++pub const EBADE: ::c_int = 52;
++pub const EBADR: ::c_int = 53;
++pub const EXFULL: ::c_int = 54;
++pub const ENOANO: ::c_int = 55;
++pub const EBADRQC: ::c_int = 56;
++pub const EBADSLT: ::c_int = 57;
++pub const EDEADLOCK: ::c_int = 58;
++pub const EMULTIHOP: ::c_int = 72;
++pub const EBADMSG: ::c_int = 74;
++pub const EOVERFLOW: ::c_int = 75;
++pub const ENOTUNIQ: ::c_int = 76;
++pub const EBADFD: ::c_int = 77;
++pub const EREMCHG: ::c_int = 78;
++pub const ELIBACC: ::c_int = 79;
++pub const ELIBBAD: ::c_int = 80;
++pub const ELIBSCN: ::c_int = 81;
++pub const ELIBMAX: ::c_int = 82;
++pub const ELIBEXEC: ::c_int = 83;
++pub const EILSEQ: ::c_int = 84;
++pub const ERESTART: ::c_int = 85;
++pub const ESTRPIPE: ::c_int = 86;
++pub const EUSERS: ::c_int = 87;
++pub const ENOTSOCK: ::c_int = 88;
++pub const EDESTADDRREQ: ::c_int = 89;
++pub const EMSGSIZE: ::c_int = 90;
++pub const EPROTOTYPE: ::c_int = 91;
++pub const ENOPROTOOPT: ::c_int = 92;
++pub const EPROTONOSUPPORT: ::c_int = 93;
++pub const ESOCKTNOSUPPORT: ::c_int = 94;
++pub const EOPNOTSUPP: ::c_int = 95;
++pub const ENOTSUP: ::c_int = EOPNOTSUPP;
++pub const EPFNOSUPPORT: ::c_int = 96;
++pub const EAFNOSUPPORT: ::c_int = 97;
++pub const EADDRINUSE: ::c_int = 98;
++pub const EADDRNOTAVAIL: ::c_int = 99;
++pub const ENETDOWN: ::c_int = 100;
++pub const ENETUNREACH: ::c_int = 101;
++pub const ENETRESET: ::c_int = 102;
++pub const ECONNABORTED: ::c_int = 103;
++pub const ECONNRESET: ::c_int = 104;
++pub const ENOBUFS: ::c_int = 105;
++pub const EISCONN: ::c_int = 106;
++pub const ENOTCONN: ::c_int = 107;
++pub const ESHUTDOWN: ::c_int = 108;
++pub const ETOOMANYREFS: ::c_int = 109;
++pub const ETIMEDOUT: ::c_int = 110;
++pub const ECONNREFUSED: ::c_int = 111;
++pub const EHOSTDOWN: ::c_int = 112;
++pub const EHOSTUNREACH: ::c_int = 113;
++pub const EALREADY: ::c_int = 114;
++pub const EINPROGRESS: ::c_int = 115;
++pub const ESTALE: ::c_int = 116;
++pub const EUCLEAN: ::c_int = 117;
++pub const ENOTNAM: ::c_int = 118;
++pub const ENAVAIL: ::c_int = 119;
++pub const EISNAM: ::c_int = 120;
++pub const EREMOTEIO: ::c_int = 121;
++pub const EDQUOT: ::c_int = 122;
++pub const ENOMEDIUM: ::c_int = 123;
++pub const EMEDIUMTYPE: ::c_int = 124;
++pub const ECANCELED: ::c_int = 125;
++pub const ENOKEY: ::c_int = 126;
++pub const EKEYEXPIRED: ::c_int = 127;
++pub const EKEYREVOKED: ::c_int = 128;
++pub const EKEYREJECTED: ::c_int = 129;
++pub const EOWNERDEAD: ::c_int = 130;
++pub const ENOTRECOVERABLE: ::c_int = 131;
++pub const ERFKILL: ::c_int = 132;
++pub const EHWPOISON: ::c_int = 133;
++
++pub const SO_REUSEADDR: ::c_int = 2;
++pub const SO_TYPE: ::c_int = 3;
++pub const SO_ERROR: ::c_int = 4;
++pub const SO_DONTROUTE: ::c_int = 5;
++pub const SO_BROADCAST: ::c_int = 6;
++pub const SO_SNDBUF: ::c_int = 7;
++pub const SO_RCVBUF: ::c_int = 8;
++pub const SO_KEEPALIVE: ::c_int = 9;
++pub const SO_OOBINLINE: ::c_int = 10;
++pub const SO_NO_CHECK: ::c_int = 11;
++pub const SO_PRIORITY: ::c_int = 12;
++pub const SO_LINGER: ::c_int = 13;
++pub const SO_BSDCOMPAT: ::c_int = 14;
++pub const SO_REUSEPORT: ::c_int = 15;
++pub const SO_RCVLOWAT: ::c_int = 16;
++pub const SO_SNDLOWAT: ::c_int = 17;
++pub const SO_RCVTIMEO: ::c_int = 18;
++pub const SO_SNDTIMEO: ::c_int = 19;
++pub const SO_PASSCRED: ::c_int = 20;
++pub const SO_PEERCRED: ::c_int = 21;
++pub const SO_ACCEPTCONN: ::c_int = 30;
++pub const SO_SNDBUFFORCE: ::c_int = 32;
++pub const SO_RCVBUFFORCE: ::c_int = 33;
++pub const SO_PROTOCOL: ::c_int = 38;
++pub const SO_DOMAIN: ::c_int = 39;
++
++pub const SA_ONSTACK: ::c_int = 0x08000000;
++pub const SA_SIGINFO: ::c_int = 0x00000004;
++pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
++
++pub const SIGCHLD: ::c_int = 17;
++pub const SIGBUS: ::c_int = 7;
++pub const SIGTTIN: ::c_int = 21;
++pub const SIGTTOU: ::c_int = 22;
++pub const SIGXCPU: ::c_int = 24;
++pub const SIGXFSZ: ::c_int = 25;
++pub const SIGVTALRM: ::c_int = 26;
++pub const SIGPROF: ::c_int = 27;
++pub const SIGWINCH: ::c_int = 28;
++pub const SIGUSR1: ::c_int = 10;
++pub const SIGUSR2: ::c_int = 12;
++pub const SIGCONT: ::c_int = 18;
++pub const SIGSTOP: ::c_int = 19;
++pub const SIGTSTP: ::c_int = 20;
++pub const SIGURG: ::c_int = 23;
++pub const SIGIO: ::c_int = 29;
++pub const SIGSYS: ::c_int = 31;
++pub const SIGSTKFLT: ::c_int = 16;
++pub const SIGPOLL: ::c_int = 29;
++pub const SIGPWR: ::c_int = 30;
++pub const SIG_SETMASK: ::c_int = 2;
++pub const SIG_BLOCK: ::c_int = 0x000000;
++pub const SIG_UNBLOCK: ::c_int = 0x01;
++
++pub const EXTPROC: ::tcflag_t = 0x10000000;
++
++pub const MAP_HUGETLB: ::c_int = 0x040000;
++
++pub const F_GETLK: ::c_int = 12;
++pub const F_GETOWN: ::c_int = 9;
++pub const F_SETLK: ::c_int = 13;
++pub const F_SETLKW: ::c_int = 14;
++pub const F_SETOWN: ::c_int = 8;
++
++pub const VEOF: usize = 4;
++pub const VEOL: usize = 6;
++pub const VEOL2: usize = 8;
++pub const VMIN: usize = 5;
++pub const IEXTEN: ::tcflag_t = 0x00000400;
++pub const TOSTOP: ::tcflag_t = 0x00400000;
++pub const FLUSHO: ::tcflag_t = 0x00800000;
++
++pub const TCGETS: ::c_int = 0x402C7413;
++pub const TCSETS: ::c_int = 0x802C7414;
++pub const TCSETSW: ::c_int = 0x802C7415;
++pub const TCSETSF: ::c_int = 0x802C7416;
++pub const TCGETA: ::c_int = 0x40147417;
++pub const TCSETA: ::c_int = 0x80147418;
++pub const TCSETAW: ::c_int = 0x80147419;
++pub const TCSETAF: ::c_int = 0x8014741C;
++pub const TCSBRK: ::c_int = 0x2000741D;
++pub const TCXONC: ::c_int = 0x2000741E;
++pub const TCFLSH: ::c_int = 0x2000741F;
++pub const TIOCGSOFTCAR: ::c_int = 0x5419;
++pub const TIOCSSOFTCAR: ::c_int = 0x541A;
++pub const TIOCLINUX: ::c_int = 0x541C;
++pub const TIOCGSERIAL: ::c_int = 0x541E;
++pub const TIOCEXCL: ::c_int = 0x540C;
++pub const TIOCNXCL: ::c_int = 0x540D;
++pub const TIOCSCTTY: ::c_int = 0x540E;
++pub const TIOCGPGRP: ::c_int = 0x40047477;
++pub const TIOCSPGRP: ::c_int = 0x80047476;
++pub const TIOCOUTQ: ::c_int = 0x40047473;
++pub const TIOCSTI: ::c_int = 0x5412;
++pub const TIOCGWINSZ: ::c_int = 0x40087468;
++pub const TIOCSWINSZ: ::c_int = 0x80087467;
++pub const TIOCMGET: ::c_int = 0x5415;
++pub const TIOCMBIS: ::c_int = 0x5416;
++pub const TIOCMBIC: ::c_int = 0x5417;
++pub const TIOCMSET: ::c_int = 0x5418;
++pub const FIONREAD: ::c_int = 0x4004667F;
++pub const TIOCCONS: ::c_int = 0x541D;
++
++pub const POLLWRNORM: ::c_short = 0x100;
++pub const POLLWRBAND: ::c_short = 0x200;
++
++pub const TIOCM_LE: ::c_int = 0x001;
++pub const TIOCM_DTR: ::c_int = 0x002;
++pub const TIOCM_RTS: ::c_int = 0x004;
++pub const TIOCM_ST: ::c_int = 0x008;
++pub const TIOCM_SR: ::c_int = 0x010;
++pub const TIOCM_CTS: ::c_int = 0x020;
++pub const TIOCM_CAR: ::c_int = 0x040;
++pub const TIOCM_RNG: ::c_int = 0x080;
++pub const TIOCM_DSR: ::c_int = 0x100;
++pub const TIOCM_CD: ::c_int = TIOCM_CAR;
++pub const TIOCM_RI: ::c_int = TIOCM_RNG;
++
++// Syscall table
++pub const SYS_restart_syscall: ::c_long = 0;
++pub const SYS_exit: ::c_long = 1;
++pub const SYS_fork: ::c_long = 2;
++pub const SYS_read: ::c_long = 3;
++pub const SYS_write: ::c_long = 4;
++pub const SYS_open: ::c_long = 5;
++pub const SYS_close: ::c_long = 6;
++pub const SYS_waitpid: ::c_long = 7;
++pub const SYS_creat: ::c_long = 8;
++pub const SYS_link: ::c_long = 9;
++pub const SYS_unlink: ::c_long = 10;
++pub const SYS_execve: ::c_long = 11;
++pub const SYS_chdir: ::c_long = 12;
++pub const SYS_time: ::c_long = 13;
++pub const SYS_mknod: ::c_long = 14;
++pub const SYS_chmod: ::c_long = 15;
++pub const SYS_lchown: ::c_long = 16;
++pub const SYS_break: ::c_long = 17;
++pub const SYS_oldstat: ::c_long = 18;
++pub const SYS_lseek: ::c_long = 19;
++pub const SYS_getpid: ::c_long = 20;
++pub const SYS_mount: ::c_long = 21;
++pub const SYS_umount: ::c_long = 22;
++pub const SYS_setuid: ::c_long = 23;
++pub const SYS_getuid: ::c_long = 24;
++pub const SYS_stime: ::c_long = 25;
++pub const SYS_ptrace: ::c_long = 26;
++pub const SYS_alarm: ::c_long = 27;
++pub const SYS_oldfstat: ::c_long = 28;
++pub const SYS_pause: ::c_long = 29;
++pub const SYS_utime: ::c_long = 30;
++pub const SYS_stty: ::c_long = 31;
++pub const SYS_gtty: ::c_long = 32;
++pub const SYS_access: ::c_long = 33;
++pub const SYS_nice: ::c_long = 34;
++pub const SYS_ftime: ::c_long = 35;
++pub const SYS_sync: ::c_long = 36;
++pub const SYS_kill: ::c_long = 37;
++pub const SYS_rename: ::c_long = 38;
++pub const SYS_mkdir: ::c_long = 39;
++pub const SYS_rmdir: ::c_long = 40;
++pub const SYS_dup: ::c_long = 41;
++pub const SYS_pipe: ::c_long = 42;
++pub const SYS_times: ::c_long = 43;
++pub const SYS_prof: ::c_long = 44;
++pub const SYS_brk: ::c_long = 45;
++pub const SYS_setgid: ::c_long = 46;
++pub const SYS_getgid: ::c_long = 47;
++pub const SYS_signal: ::c_long = 48;
++pub const SYS_geteuid: ::c_long = 49;
++pub const SYS_getegid: ::c_long = 50;
++pub const SYS_acct: ::c_long = 51;
++pub const SYS_umount2: ::c_long = 52;
++pub const SYS_lock: ::c_long = 53;
++pub const SYS_ioctl: ::c_long = 54;
++pub const SYS_fcntl: ::c_long = 55;
++pub const SYS_mpx: ::c_long = 56;
++pub const SYS_setpgid: ::c_long = 57;
++pub const SYS_ulimit: ::c_long = 58;
++pub const SYS_oldolduname: ::c_long = 59;
++pub const SYS_umask: ::c_long = 60;
++pub const SYS_chroot: ::c_long = 61;
++pub const SYS_ustat: ::c_long = 62;
++pub const SYS_dup2: ::c_long = 63;
++pub const SYS_getppid: ::c_long = 64;
++pub const SYS_getpgrp: ::c_long = 65;
++pub const SYS_setsid: ::c_long = 66;
++pub const SYS_sigaction: ::c_long = 67;
++pub const SYS_sgetmask: ::c_long = 68;
++pub const SYS_ssetmask: ::c_long = 69;
++pub const SYS_setreuid: ::c_long = 70;
++pub const SYS_setregid: ::c_long = 71;
++pub const SYS_sigsuspend: ::c_long = 72;
++pub const SYS_sigpending: ::c_long = 73;
++pub const SYS_sethostname: ::c_long = 74;
++pub const SYS_setrlimit: ::c_long = 75;
++pub const SYS_getrlimit: ::c_long = 76;
++pub const SYS_getrusage: ::c_long = 77;
++pub const SYS_gettimeofday: ::c_long = 78;
++pub const SYS_settimeofday: ::c_long = 79;
++pub const SYS_getgroups: ::c_long = 80;
++pub const SYS_setgroups: ::c_long = 81;
++pub const SYS_select: ::c_long = 82;
++pub const SYS_symlink: ::c_long = 83;
++pub const SYS_oldlstat: ::c_long = 84;
++pub const SYS_readlink: ::c_long = 85;
++pub const SYS_uselib: ::c_long = 86;
++pub const SYS_swapon: ::c_long = 87;
++pub const SYS_reboot: ::c_long = 88;
++pub const SYS_readdir: ::c_long = 89;
++pub const SYS_mmap: ::c_long = 90;
++pub const SYS_munmap: ::c_long = 91;
++pub const SYS_truncate: ::c_long = 92;
++pub const SYS_ftruncate: ::c_long = 93;
++pub const SYS_fchmod: ::c_long = 94;
++pub const SYS_fchown: ::c_long = 95;
++pub const SYS_getpriority: ::c_long = 96;
++pub const SYS_setpriority: ::c_long = 97;
++pub const SYS_profil: ::c_long = 98;
++pub const SYS_statfs: ::c_long = 99;
++pub const SYS_fstatfs: ::c_long = 100;
++pub const SYS_ioperm: ::c_long = 101;
++pub const SYS_socketcall: ::c_long = 102;
++pub const SYS_syslog: ::c_long = 103;
++pub const SYS_setitimer: ::c_long = 104;
++pub const SYS_getitimer: ::c_long = 105;
++pub const SYS_stat: ::c_long = 106;
++pub const SYS_lstat: ::c_long = 107;
++pub const SYS_fstat: ::c_long = 108;
++pub const SYS_olduname: ::c_long = 109;
++pub const SYS_iopl: ::c_long = 110;
++pub const SYS_vhangup: ::c_long = 111;
++pub const SYS_idle: ::c_long = 112;
++pub const SYS_vm86: ::c_long = 113;
++pub const SYS_wait4: ::c_long = 114;
++pub const SYS_swapoff: ::c_long = 115;
++pub const SYS_sysinfo: ::c_long = 116;
++pub const SYS_ipc: ::c_long = 117;
++pub const SYS_fsync: ::c_long = 118;
++pub const SYS_sigreturn: ::c_long = 119;
++pub const SYS_clone: ::c_long = 120;
++pub const SYS_setdomainname: ::c_long = 121;
++pub const SYS_uname: ::c_long = 122;
++pub const SYS_modify_ldt: ::c_long = 123;
++pub const SYS_adjtimex: ::c_long = 124;
++pub const SYS_mprotect: ::c_long = 125;
++pub const SYS_sigprocmask: ::c_long = 126;
++pub const SYS_create_module: ::c_long = 127;
++pub const SYS_init_module: ::c_long = 128;
++pub const SYS_delete_module: ::c_long = 129;
++pub const SYS_get_kernel_syms: ::c_long = 130;
++pub const SYS_quotactl: ::c_long = 131;
++pub const SYS_getpgid: ::c_long = 132;
++pub const SYS_fchdir: ::c_long = 133;
++pub const SYS_bdflush: ::c_long = 134;
++pub const SYS_sysfs: ::c_long = 135;
++pub const SYS_personality: ::c_long = 136;
++pub const SYS_afs_syscall: ::c_long = 137;
++pub const SYS_setfsuid: ::c_long = 138;
++pub const SYS_setfsgid: ::c_long = 139;
++pub const SYS__llseek: ::c_long = 140;
++pub const SYS_getdents: ::c_long = 141;
++pub const SYS__newselect: ::c_long = 142;
++pub const SYS_flock: ::c_long = 143;
++pub const SYS_msync: ::c_long = 144;
++pub const SYS_readv: ::c_long = 145;
++pub const SYS_writev: ::c_long = 146;
++pub const SYS_getsid: ::c_long = 147;
++pub const SYS_fdatasync: ::c_long = 148;
++pub const SYS__sysctl: ::c_long = 149;
++pub const SYS_mlock: ::c_long = 150;
++pub const SYS_munlock: ::c_long = 151;
++pub const SYS_mlockall: ::c_long = 152;
++pub const SYS_munlockall: ::c_long = 153;
++pub const SYS_sched_setparam: ::c_long = 154;
++pub const SYS_sched_getparam: ::c_long = 155;
++pub const SYS_sched_setscheduler: ::c_long = 156;
++pub const SYS_sched_getscheduler: ::c_long = 157;
++pub const SYS_sched_yield: ::c_long = 158;
++pub const SYS_sched_get_priority_max: ::c_long = 159;
++pub const SYS_sched_get_priority_min: ::c_long = 160;
++pub const SYS_sched_rr_get_interval: ::c_long = 161;
++pub const SYS_nanosleep: ::c_long = 162;
++pub const SYS_mremap: ::c_long = 163;
++pub const SYS_setresuid: ::c_long = 164;
++pub const SYS_getresuid: ::c_long = 165;
++pub const SYS_query_module: ::c_long = 166;
++pub const SYS_poll: ::c_long = 167;
++pub const SYS_nfsservctl: ::c_long = 168;
++pub const SYS_setresgid: ::c_long = 169;
++pub const SYS_getresgid: ::c_long = 170;
++pub const SYS_prctl: ::c_long = 171;
++pub const SYS_rt_sigreturn: ::c_long = 172;
++pub const SYS_rt_sigaction: ::c_long = 173;
++pub const SYS_rt_sigprocmask: ::c_long = 174;
++pub const SYS_rt_sigpending: ::c_long = 175;
++pub const SYS_rt_sigtimedwait: ::c_long = 176;
++pub const SYS_rt_sigqueueinfo: ::c_long = 177;
++pub const SYS_rt_sigsuspend: ::c_long = 178;
++pub const SYS_pread64: ::c_long = 179;
++pub const SYS_pwrite64: ::c_long = 180;
++pub const SYS_chown: ::c_long = 181;
++pub const SYS_getcwd: ::c_long = 182;
++pub const SYS_capget: ::c_long = 183;
++pub const SYS_capset: ::c_long = 184;
++pub const SYS_sigaltstack: ::c_long = 185;
++pub const SYS_sendfile: ::c_long = 186;
++pub const SYS_getpmsg: ::c_long = 187;
++pub const SYS_putpmsg: ::c_long = 188;
++pub const SYS_vfork: ::c_long = 189;
++pub const SYS_ugetrlimit: ::c_long = 190;
++pub const SYS_readahead: ::c_long = 191;
++pub const SYS_mmap2: ::c_long = 192;
++pub const SYS_truncate64: ::c_long = 193;
++pub const SYS_ftruncate64: ::c_long = 194;
++pub const SYS_stat64: ::c_long = 195;
++pub const SYS_lstat64: ::c_long = 196;
++pub const SYS_fstat64: ::c_long = 197;
++pub const SYS_pciconfig_read: ::c_long = 198;
++pub const SYS_pciconfig_write: ::c_long = 199;
++pub const SYS_pciconfig_iobase: ::c_long = 200;
++pub const SYS_multiplexer: ::c_long = 201;
++pub const SYS_getdents64: ::c_long = 202;
++pub const SYS_pivot_root: ::c_long = 203;
++pub const SYS_fcntl64: ::c_long = 204;
++pub const SYS_madvise: ::c_long = 205;
++pub const SYS_mincore: ::c_long = 206;
++pub const SYS_gettid: ::c_long = 207;
++pub const SYS_tkill: ::c_long = 208;
++pub const SYS_setxattr: ::c_long = 209;
++pub const SYS_lsetxattr: ::c_long = 210;
++pub const SYS_fsetxattr: ::c_long = 211;
++pub const SYS_getxattr: ::c_long = 212;
++pub const SYS_lgetxattr: ::c_long = 213;
++pub const SYS_fgetxattr: ::c_long = 214;
++pub const SYS_listxattr: ::c_long = 215;
++pub const SYS_llistxattr: ::c_long = 216;
++pub const SYS_flistxattr: ::c_long = 217;
++pub const SYS_removexattr: ::c_long = 218;
++pub const SYS_lremovexattr: ::c_long = 219;
++pub const SYS_fremovexattr: ::c_long = 220;
++pub const SYS_futex: ::c_long = 221;
++pub const SYS_sched_setaffinity: ::c_long = 222;
++pub const SYS_sched_getaffinity: ::c_long = 223;
++pub const SYS_tuxcall: ::c_long = 225;
++pub const SYS_sendfile64: ::c_long = 226;
++pub const SYS_io_setup: ::c_long = 227;
++pub const SYS_io_destroy: ::c_long = 228;
++pub const SYS_io_getevents: ::c_long = 229;
++pub const SYS_io_submit: ::c_long = 230;
++pub const SYS_io_cancel: ::c_long = 231;
++pub const SYS_set_tid_address: ::c_long = 232;
++pub const SYS_fadvise64: ::c_long = 233;
++pub const SYS_exit_group: ::c_long = 234;
++pub const SYS_lookup_dcookie: ::c_long = 235;
++pub const SYS_epoll_create: ::c_long = 236;
++pub const SYS_epoll_ctl: ::c_long = 237;
++pub const SYS_epoll_wait: ::c_long = 238;
++pub const SYS_remap_file_pages: ::c_long = 239;
++pub const SYS_timer_create: ::c_long = 240;
++pub const SYS_timer_settime: ::c_long = 241;
++pub const SYS_timer_gettime: ::c_long = 242;
++pub const SYS_timer_getoverrun: ::c_long = 243;
++pub const SYS_timer_delete: ::c_long = 244;
++pub const SYS_clock_settime: ::c_long = 245;
++pub const SYS_clock_gettime: ::c_long = 246;
++pub const SYS_clock_getres: ::c_long = 247;
++pub const SYS_clock_nanosleep: ::c_long = 248;
++pub const SYS_swapcontext: ::c_long = 249;
++pub const SYS_tgkill: ::c_long = 250;
++pub const SYS_utimes: ::c_long = 251;
++pub const SYS_statfs64: ::c_long = 252;
++pub const SYS_fstatfs64: ::c_long = 253;
++pub const SYS_fadvise64_64: ::c_long = 254;
++pub const SYS_rtas: ::c_long = 255;
++pub const SYS_sys_debug_setcontext: ::c_long = 256;
++pub const SYS_migrate_pages: ::c_long = 258;
++pub const SYS_mbind: ::c_long = 259;
++pub const SYS_get_mempolicy: ::c_long = 260;
++pub const SYS_set_mempolicy: ::c_long = 261;
++pub const SYS_mq_open: ::c_long = 262;
++pub const SYS_mq_unlink: ::c_long = 263;
++pub const SYS_mq_timedsend: ::c_long = 264;
++pub const SYS_mq_timedreceive: ::c_long = 265;
++pub const SYS_mq_notify: ::c_long = 266;
++pub const SYS_mq_getsetattr: ::c_long = 267;
++pub const SYS_kexec_load: ::c_long = 268;
++pub const SYS_add_key: ::c_long = 269;
++pub const SYS_request_key: ::c_long = 270;
++pub const SYS_keyctl: ::c_long = 271;
++pub const SYS_waitid: ::c_long = 272;
++pub const SYS_ioprio_set: ::c_long = 273;
++pub const SYS_ioprio_get: ::c_long = 274;
++pub const SYS_inotify_init: ::c_long = 275;
++pub const SYS_inotify_add_watch: ::c_long = 276;
++pub const SYS_inotify_rm_watch: ::c_long = 277;
++pub const SYS_spu_run: ::c_long = 278;
++pub const SYS_spu_create: ::c_long = 279;
++pub const SYS_pselect6: ::c_long = 280;
++pub const SYS_ppoll: ::c_long = 281;
++pub const SYS_unshare: ::c_long = 282;
++pub const SYS_splice: ::c_long = 283;
++pub const SYS_tee: ::c_long = 284;
++pub const SYS_vmsplice: ::c_long = 285;
++pub const SYS_openat: ::c_long = 286;
++pub const SYS_mkdirat: ::c_long = 287;
++pub const SYS_mknodat: ::c_long = 288;
++pub const SYS_fchownat: ::c_long = 289;
++pub const SYS_futimesat: ::c_long = 290;
++pub const SYS_fstatat64: ::c_long = 291;
++pub const SYS_unlinkat: ::c_long = 292;
++pub const SYS_renameat: ::c_long = 293;
++pub const SYS_linkat: ::c_long = 294;
++pub const SYS_symlinkat: ::c_long = 295;
++pub const SYS_readlinkat: ::c_long = 296;
++pub const SYS_fchmodat: ::c_long = 297;
++pub const SYS_faccessat: ::c_long = 298;
++pub const SYS_get_robust_list: ::c_long = 299;
++pub const SYS_set_robust_list: ::c_long = 300;
++pub const SYS_move_pages: ::c_long = 301;
++pub const SYS_getcpu: ::c_long = 302;
++pub const SYS_epoll_pwait: ::c_long = 303;
++pub const SYS_utimensat: ::c_long = 304;
++pub const SYS_signalfd: ::c_long = 305;
++pub const SYS_timerfd_create: ::c_long = 306;
++pub const SYS_eventfd: ::c_long = 307;
++pub const SYS_sync_file_range2: ::c_long = 308;
++pub const SYS_fallocate: ::c_long = 309;
++pub const SYS_subpage_prot: ::c_long = 310;
++pub const SYS_timerfd_settime: ::c_long = 311;
++pub const SYS_timerfd_gettime: ::c_long = 312;
++pub const SYS_signalfd4: ::c_long = 313;
++pub const SYS_eventfd2: ::c_long = 314;
++pub const SYS_epoll_create1: ::c_long = 315;
++pub const SYS_dup3: ::c_long = 316;
++pub const SYS_pipe2: ::c_long = 317;
++pub const SYS_inotify_init1: ::c_long = 318;
++pub const SYS_perf_event_open: ::c_long = 319;
++pub const SYS_preadv: ::c_long = 320;
++pub const SYS_pwritev: ::c_long = 321;
++pub const SYS_rt_tgsigqueueinfo: ::c_long = 322;
++pub const SYS_fanotify_init: ::c_long = 323;
++pub const SYS_fanotify_mark: ::c_long = 324;
++pub const SYS_prlimit64: ::c_long = 325;
++pub const SYS_socket: ::c_long = 326;
++pub const SYS_bind: ::c_long = 327;
++pub const SYS_connect: ::c_long = 328;
++pub const SYS_listen: ::c_long = 329;
++pub const SYS_accept: ::c_long = 330;
++pub const SYS_getsockname: ::c_long = 331;
++pub const SYS_getpeername: ::c_long = 332;
++pub const SYS_socketpair: ::c_long = 333;
++pub const SYS_send: ::c_long = 334;
++pub const SYS_sendto: ::c_long = 335;
++pub const SYS_recv: ::c_long = 336;
++pub const SYS_recvfrom: ::c_long = 337;
++pub const SYS_shutdown: ::c_long = 338;
++pub const SYS_setsockopt: ::c_long = 339;
++pub const SYS_getsockopt: ::c_long = 340;
++pub const SYS_sendmsg: ::c_long = 341;
++pub const SYS_recvmsg: ::c_long = 342;
++pub const SYS_recvmmsg: ::c_long = 343;
++pub const SYS_accept4: ::c_long = 344;
++pub const SYS_name_to_handle_at: ::c_long = 345;
++pub const SYS_open_by_handle_at: ::c_long = 346;
++pub const SYS_clock_adjtime: ::c_long = 347;
++pub const SYS_syncfs: ::c_long = 348;
++pub const SYS_sendmmsg: ::c_long = 349;
++pub const SYS_setns: ::c_long = 350;
++pub const SYS_process_vm_readv: ::c_long = 351;
++pub const SYS_process_vm_writev: ::c_long = 352;
++pub const SYS_finit_module: ::c_long = 353;
++pub const SYS_kcmp: ::c_long = 354;
++pub const SYS_sched_setattr: ::c_long = 355;
++pub const SYS_sched_getattr: ::c_long = 356;
++pub const SYS_renameat2: ::c_long = 357;
++pub const SYS_seccomp: ::c_long = 358;
++pub const SYS_getrandom: ::c_long = 359;
++pub const SYS_memfd_create: ::c_long = 360;
++pub const SYS_bpf: ::c_long = 361;
++pub const SYS_execveat: ::c_long = 362;
++pub const SYS_switch_endian: ::c_long = 363;
++pub const SYS_userfaultfd: ::c_long = 364;
++pub const SYS_membarrier: ::c_long = 365;
++pub const SYS_mlock2: ::c_long = 378;
++pub const SYS_copy_file_range: ::c_long = 379;
++pub const SYS_preadv2: ::c_long = 380;
++pub const SYS_pwritev2: ::c_long = 381;
++pub const SYS_kexec_file_load: ::c_long = 382;
++pub const SYS_statx: ::c_long = 383;
++pub const SYS_pkey_alloc: ::c_long = 384;
++pub const SYS_pkey_free: ::c_long = 385;
++pub const SYS_pkey_mprotect: ::c_long = 386;
++
++#[doc(hidden)]
++pub const AF_MAX: ::c_int = 43;
++#[doc(hidden)]
++pub const PF_MAX: ::c_int = AF_MAX;
+diff --git a/src/liblibc/src/unix/notbsd/linux/musl/b32/x86.rs b/src/liblibc/src/unix/notbsd/linux/musl/b32/x86.rs
+index fa570248c72..9f704c7fac9 100644
+--- a/src/liblibc/src/unix/notbsd/linux/musl/b32/x86.rs
++++ b/src/liblibc/src/unix/notbsd/linux/musl/b32/x86.rs
+@@ -52,6 +52,18 @@ s! {
+ pub ss_size: ::size_t
+ }
+
++ pub struct ipc_perm {
++ pub __ipc_perm_key: ::key_t,
++ pub uid: ::uid_t,
++ pub gid: ::gid_t,
++ pub cuid: ::uid_t,
++ pub cgid: ::gid_t,
++ pub mode: ::mode_t,
++ pub __seq: ::c_int,
++ __unused1: ::c_long,
++ __unused2: ::c_long
++ }
++
+ pub struct shmid_ds {
+ pub shm_perm: ::ipc_perm,
+ pub shm_segsz: ::size_t,
+@@ -164,6 +176,9 @@ s! {
+ }
+ }
+
++pub const SIGSTKSZ: ::size_t = 8192;
++pub const MINSIGSTKSZ: ::size_t = 2048;
++
+ pub const O_DIRECT: ::c_int = 0x4000;
+ pub const O_DIRECTORY: ::c_int = 0x10000;
+ pub const O_NOFOLLOW: ::c_int = 0x20000;
+@@ -178,6 +193,76 @@ pub const RLIMIT_NOFILE: ::c_int = 7;
+ pub const RLIMIT_AS: ::c_int = 9;
+ pub const RLIMIT_NPROC: ::c_int = 6;
+ pub const RLIMIT_MEMLOCK: ::c_int = 8;
++pub const RLIMIT_NLIMITS: ::c_int = 16;
++
++pub const MCL_CURRENT: ::c_int = 0x0001;
++pub const MCL_FUTURE: ::c_int = 0x0002;
++pub const CBAUD: ::tcflag_t = 0o0010017;
++pub const TAB1: ::c_int = 0x00000800;
++pub const TAB2: ::c_int = 0x00001000;
++pub const TAB3: ::c_int = 0x00001800;
++pub const CR1: ::c_int = 0x00000200;
++pub const CR2: ::c_int = 0x00000400;
++pub const CR3: ::c_int = 0x00000600;
++pub const FF1: ::c_int = 0x00008000;
++pub const BS1: ::c_int = 0x00002000;
++pub const VT1: ::c_int = 0x00004000;
++pub const VWERASE: usize = 14;
++pub const VREPRINT: usize = 12;
++pub const VSUSP: usize = 10;
++pub const VSTART: usize = 8;
++pub const VSTOP: usize = 9;
++pub const VDISCARD: usize = 13;
++pub const VTIME: usize = 5;
++pub const IXON: ::tcflag_t = 0x00000400;
++pub const IXOFF: ::tcflag_t = 0x00001000;
++pub const ONLCR: ::tcflag_t = 0x4;
++pub const CSIZE: ::tcflag_t = 0x00000030;
++pub const CS6: ::tcflag_t = 0x00000010;
++pub const CS7: ::tcflag_t = 0x00000020;
++pub const CS8: ::tcflag_t = 0x00000030;
++pub const CSTOPB: ::tcflag_t = 0x00000040;
++pub const CREAD: ::tcflag_t = 0x00000080;
++pub const PARENB: ::tcflag_t = 0x00000100;
++pub const PARODD: ::tcflag_t = 0x00000200;
++pub const HUPCL: ::tcflag_t = 0x00000400;
++pub const CLOCAL: ::tcflag_t = 0x00000800;
++pub const ECHOKE: ::tcflag_t = 0x00000800;
++pub const ECHOE: ::tcflag_t = 0x00000010;
++pub const ECHOK: ::tcflag_t = 0x00000020;
++pub const ECHONL: ::tcflag_t = 0x00000040;
++pub const ECHOPRT: ::tcflag_t = 0x00000400;
++pub const ECHOCTL: ::tcflag_t = 0x00000200;
++pub const ISIG: ::tcflag_t = 0x00000001;
++pub const ICANON: ::tcflag_t = 0x00000002;
++pub const PENDIN: ::tcflag_t = 0x00004000;
++pub const NOFLSH: ::tcflag_t = 0x00000080;
++pub const CIBAUD: ::tcflag_t = 0o02003600000;
++pub const CBAUDEX: ::tcflag_t = 0o010000;
++pub const VSWTC: usize = 7;
++pub const OLCUC: ::tcflag_t = 0o000002;
++pub const NLDLY: ::tcflag_t = 0o000400;
++pub const CRDLY: ::tcflag_t = 0o003000;
++pub const TABDLY: ::tcflag_t = 0o014000;
++pub const BSDLY: ::tcflag_t = 0o020000;
++pub const FFDLY: ::tcflag_t = 0o100000;
++pub const VTDLY: ::tcflag_t = 0o040000;
++pub const XTABS: ::tcflag_t = 0o014000;
++pub const B57600: ::speed_t = 0o010001;
++pub const B115200: ::speed_t = 0o010002;
++pub const B230400: ::speed_t = 0o010003;
++pub const B460800: ::speed_t = 0o010004;
++pub const B500000: ::speed_t = 0o010005;
++pub const B576000: ::speed_t = 0o010006;
++pub const B921600: ::speed_t = 0o010007;
++pub const B1000000: ::speed_t = 0o010010;
++pub const B1152000: ::speed_t = 0o010011;
++pub const B1500000: ::speed_t = 0o010012;
++pub const B2000000: ::speed_t = 0o010013;
++pub const B2500000: ::speed_t = 0o010014;
++pub const B3000000: ::speed_t = 0o010015;
++pub const B3500000: ::speed_t = 0o010016;
++pub const B4000000: ::speed_t = 0o010017;
+
+ pub const O_APPEND: ::c_int = 1024;
+ pub const O_CREAT: ::c_int = 64;
+diff --git a/src/liblibc/src/unix/notbsd/linux/musl/mod.rs b/src/liblibc/src/unix/notbsd/linux/musl/mod.rs
+index 0d92a4b9d14..10d61ebebef 100644
+--- a/src/liblibc/src/unix/notbsd/linux/musl/mod.rs
++++ b/src/liblibc/src/unix/notbsd/linux/musl/mod.rs
+@@ -260,7 +260,8 @@ cfg_if! {
+ pub use self::b64::*;
+ } else if #[cfg(any(target_arch = "x86",
+ target_arch = "mips",
+- target_arch = "arm"))] {
++ target_arch = "arm",
++ target_arch = "powerpc"))] {
+ mod b32;
+ pub use self::b32::*;
+ } else { }
diff --git a/user/rust/0031-liblibc-dcff154781e4.patch b/user/rust/0032-libc-dcff154781e4.patch
index 6840e203f..6840e203f 100644
--- a/user/rust/0031-liblibc-dcff154781e4.patch
+++ b/user/rust/0032-libc-dcff154781e4.patch
diff --git a/user/rust/0032-liblibc-90c01fa6b0f4.patch b/user/rust/0033-libc-90c01fa6b0f4.patch
index 5e73c780e..5e73c780e 100644
--- a/user/rust/0032-liblibc-90c01fa6b0f4.patch
+++ b/user/rust/0033-libc-90c01fa6b0f4.patch
diff --git a/user/rust/0034-libc-0163a7ce20b5.patch b/user/rust/0034-libc-0163a7ce20b5.patch
new file mode 100644
index 000000000..3a6e6da3b
--- /dev/null
+++ b/user/rust/0034-libc-0163a7ce20b5.patch
@@ -0,0 +1,1343 @@
+From 0163a7ce20b5f4c8d8f725811e48e1f268b0253e Mon Sep 17 00:00:00 2001
+From: Marek Benc <dusxmt@gmx.com>
+Date: Thu, 5 Jul 2018 15:51:38 +0200
+Subject: [PATCH] Add linux musl powerpc (32-bit) support
+
+---
+ src/unix/notbsd/linux/musl/b32/arm.rs | 85 +++
+ src/unix/notbsd/linux/musl/b32/mips.rs | 85 +++
+ src/unix/notbsd/linux/musl/b32/mod.rs | 88 +--
+ src/unix/notbsd/linux/musl/b32/powerpc.rs | 866 ++++++++++++++++++++++
+ src/unix/notbsd/linux/musl/b32/x86.rs | 85 +++
+ src/unix/notbsd/linux/musl/mod.rs | 3 +-
+ 6 files changed, 1127 insertions(+), 85 deletions(-)
+ create mode 100644 src/unix/notbsd/linux/musl/b32/powerpc.rs
+
+diff --git a/src/vendor/libc/src/unix/notbsd/linux/musl/b32/arm.rs b/src/vendor/libc/src/unix/notbsd/linux/musl/b32/arm.rs
+index 22bf16c1fda..20fa33a3f77 100644
+--- a/src/vendor/libc/src/unix/notbsd/linux/musl/b32/arm.rs
++++ b/src/vendor/libc/src/unix/notbsd/linux/musl/b32/arm.rs
+@@ -52,6 +52,18 @@ s! {
+ pub ss_size: ::size_t
+ }
+
++ pub struct ipc_perm {
++ pub __ipc_perm_key: ::key_t,
++ pub uid: ::uid_t,
++ pub gid: ::gid_t,
++ pub cuid: ::uid_t,
++ pub cgid: ::gid_t,
++ pub mode: ::mode_t,
++ pub __seq: ::c_int,
++ __unused1: ::c_long,
++ __unused2: ::c_long
++ }
++
+ pub struct shmid_ds {
+ pub shm_perm: ::ipc_perm,
+ pub shm_segsz: ::size_t,
+@@ -151,6 +163,9 @@ s! {
+ }
+ }
+
++pub const SIGSTKSZ: ::size_t = 8192;
++pub const MINSIGSTKSZ: ::size_t = 2048;
++
+ pub const O_DIRECT: ::c_int = 0x10000;
+ pub const O_DIRECTORY: ::c_int = 0x4000;
+ pub const O_NOFOLLOW: ::c_int = 0x8000;
+@@ -165,6 +180,76 @@ pub const RLIMIT_NOFILE: ::c_int = 7;
+ pub const RLIMIT_AS: ::c_int = 9;
+ pub const RLIMIT_NPROC: ::c_int = 6;
+ pub const RLIMIT_MEMLOCK: ::c_int = 8;
++pub const RLIMIT_NLIMITS: ::c_int = 16;
++
++pub const MCL_CURRENT: ::c_int = 0x0001;
++pub const MCL_FUTURE: ::c_int = 0x0002;
++pub const CBAUD: ::tcflag_t = 0o0010017;
++pub const TAB1: ::c_int = 0x00000800;
++pub const TAB2: ::c_int = 0x00001000;
++pub const TAB3: ::c_int = 0x00001800;
++pub const CR1: ::c_int = 0x00000200;
++pub const CR2: ::c_int = 0x00000400;
++pub const CR3: ::c_int = 0x00000600;
++pub const FF1: ::c_int = 0x00008000;
++pub const BS1: ::c_int = 0x00002000;
++pub const VT1: ::c_int = 0x00004000;
++pub const VWERASE: usize = 14;
++pub const VREPRINT: usize = 12;
++pub const VSUSP: usize = 10;
++pub const VSTART: usize = 8;
++pub const VSTOP: usize = 9;
++pub const VDISCARD: usize = 13;
++pub const VTIME: usize = 5;
++pub const IXON: ::tcflag_t = 0x00000400;
++pub const IXOFF: ::tcflag_t = 0x00001000;
++pub const ONLCR: ::tcflag_t = 0x4;
++pub const CSIZE: ::tcflag_t = 0x00000030;
++pub const CS6: ::tcflag_t = 0x00000010;
++pub const CS7: ::tcflag_t = 0x00000020;
++pub const CS8: ::tcflag_t = 0x00000030;
++pub const CSTOPB: ::tcflag_t = 0x00000040;
++pub const CREAD: ::tcflag_t = 0x00000080;
++pub const PARENB: ::tcflag_t = 0x00000100;
++pub const PARODD: ::tcflag_t = 0x00000200;
++pub const HUPCL: ::tcflag_t = 0x00000400;
++pub const CLOCAL: ::tcflag_t = 0x00000800;
++pub const ECHOKE: ::tcflag_t = 0x00000800;
++pub const ECHOE: ::tcflag_t = 0x00000010;
++pub const ECHOK: ::tcflag_t = 0x00000020;
++pub const ECHONL: ::tcflag_t = 0x00000040;
++pub const ECHOPRT: ::tcflag_t = 0x00000400;
++pub const ECHOCTL: ::tcflag_t = 0x00000200;
++pub const ISIG: ::tcflag_t = 0x00000001;
++pub const ICANON: ::tcflag_t = 0x00000002;
++pub const PENDIN: ::tcflag_t = 0x00004000;
++pub const NOFLSH: ::tcflag_t = 0x00000080;
++pub const CIBAUD: ::tcflag_t = 0o02003600000;
++pub const CBAUDEX: ::tcflag_t = 0o010000;
++pub const VSWTC: usize = 7;
++pub const OLCUC: ::tcflag_t = 0o000002;
++pub const NLDLY: ::tcflag_t = 0o000400;
++pub const CRDLY: ::tcflag_t = 0o003000;
++pub const TABDLY: ::tcflag_t = 0o014000;
++pub const BSDLY: ::tcflag_t = 0o020000;
++pub const FFDLY: ::tcflag_t = 0o100000;
++pub const VTDLY: ::tcflag_t = 0o040000;
++pub const XTABS: ::tcflag_t = 0o014000;
++pub const B57600: ::speed_t = 0o010001;
++pub const B115200: ::speed_t = 0o010002;
++pub const B230400: ::speed_t = 0o010003;
++pub const B460800: ::speed_t = 0o010004;
++pub const B500000: ::speed_t = 0o010005;
++pub const B576000: ::speed_t = 0o010006;
++pub const B921600: ::speed_t = 0o010007;
++pub const B1000000: ::speed_t = 0o010010;
++pub const B1152000: ::speed_t = 0o010011;
++pub const B1500000: ::speed_t = 0o010012;
++pub const B2000000: ::speed_t = 0o010013;
++pub const B2500000: ::speed_t = 0o010014;
++pub const B3000000: ::speed_t = 0o010015;
++pub const B3500000: ::speed_t = 0o010016;
++pub const B4000000: ::speed_t = 0o010017;
+
+ pub const O_APPEND: ::c_int = 1024;
+ pub const O_CREAT: ::c_int = 64;
+diff --git a/src/vendor/libc/src/unix/notbsd/linux/musl/b32/mips.rs b/src/vendor/libc/src/unix/notbsd/linux/musl/b32/mips.rs
+index 89231a0c751..bfde73c563d 100644
+--- a/src/vendor/libc/src/unix/notbsd/linux/musl/b32/mips.rs
++++ b/src/vendor/libc/src/unix/notbsd/linux/musl/b32/mips.rs
+@@ -54,6 +54,18 @@ s! {
+ pub ss_flags: ::c_int,
+ }
+
++ pub struct ipc_perm {
++ pub __ipc_perm_key: ::key_t,
++ pub uid: ::uid_t,
++ pub gid: ::gid_t,
++ pub cuid: ::uid_t,
++ pub cgid: ::gid_t,
++ pub mode: ::mode_t,
++ pub __seq: ::c_int,
++ __unused1: ::c_long,
++ __unused2: ::c_long
++ }
++
+ pub struct shmid_ds {
+ pub shm_perm: ::ipc_perm,
+ pub shm_segsz: ::size_t,
+@@ -162,6 +174,9 @@ s! {
+ }
+ }
+
++pub const SIGSTKSZ: ::size_t = 8192;
++pub const MINSIGSTKSZ: ::size_t = 2048;
++
+ pub const O_DIRECT: ::c_int = 0o100000;
+ pub const O_DIRECTORY: ::c_int = 0o200000;
+ pub const O_NOFOLLOW: ::c_int = 0o400000;
+@@ -176,6 +191,76 @@ pub const RLIMIT_NOFILE: ::c_int = 5;
+ pub const RLIMIT_AS: ::c_int = 6;
+ pub const RLIMIT_NPROC: ::c_int = 8;
+ pub const RLIMIT_MEMLOCK: ::c_int = 9;
++pub const RLIMIT_NLIMITS: ::c_int = 16;
++
++pub const MCL_CURRENT: ::c_int = 0x0001;
++pub const MCL_FUTURE: ::c_int = 0x0002;
++pub const CBAUD: ::tcflag_t = 0o0010017;
++pub const TAB1: ::c_int = 0x00000800;
++pub const TAB2: ::c_int = 0x00001000;
++pub const TAB3: ::c_int = 0x00001800;
++pub const CR1: ::c_int = 0x00000200;
++pub const CR2: ::c_int = 0x00000400;
++pub const CR3: ::c_int = 0x00000600;
++pub const FF1: ::c_int = 0x00008000;
++pub const BS1: ::c_int = 0x00002000;
++pub const VT1: ::c_int = 0x00004000;
++pub const VWERASE: usize = 14;
++pub const VREPRINT: usize = 12;
++pub const VSUSP: usize = 10;
++pub const VSTART: usize = 8;
++pub const VSTOP: usize = 9;
++pub const VDISCARD: usize = 13;
++pub const VTIME: usize = 5;
++pub const IXON: ::tcflag_t = 0x00000400;
++pub const IXOFF: ::tcflag_t = 0x00001000;
++pub const ONLCR: ::tcflag_t = 0x4;
++pub const CSIZE: ::tcflag_t = 0x00000030;
++pub const CS6: ::tcflag_t = 0x00000010;
++pub const CS7: ::tcflag_t = 0x00000020;
++pub const CS8: ::tcflag_t = 0x00000030;
++pub const CSTOPB: ::tcflag_t = 0x00000040;
++pub const CREAD: ::tcflag_t = 0x00000080;
++pub const PARENB: ::tcflag_t = 0x00000100;
++pub const PARODD: ::tcflag_t = 0x00000200;
++pub const HUPCL: ::tcflag_t = 0x00000400;
++pub const CLOCAL: ::tcflag_t = 0x00000800;
++pub const ECHOKE: ::tcflag_t = 0x00000800;
++pub const ECHOE: ::tcflag_t = 0x00000010;
++pub const ECHOK: ::tcflag_t = 0x00000020;
++pub const ECHONL: ::tcflag_t = 0x00000040;
++pub const ECHOPRT: ::tcflag_t = 0x00000400;
++pub const ECHOCTL: ::tcflag_t = 0x00000200;
++pub const ISIG: ::tcflag_t = 0x00000001;
++pub const ICANON: ::tcflag_t = 0x00000002;
++pub const PENDIN: ::tcflag_t = 0x00004000;
++pub const NOFLSH: ::tcflag_t = 0x00000080;
++pub const CIBAUD: ::tcflag_t = 0o02003600000;
++pub const CBAUDEX: ::tcflag_t = 0o010000;
++pub const VSWTC: usize = 7;
++pub const OLCUC: ::tcflag_t = 0o000002;
++pub const NLDLY: ::tcflag_t = 0o000400;
++pub const CRDLY: ::tcflag_t = 0o003000;
++pub const TABDLY: ::tcflag_t = 0o014000;
++pub const BSDLY: ::tcflag_t = 0o020000;
++pub const FFDLY: ::tcflag_t = 0o100000;
++pub const VTDLY: ::tcflag_t = 0o040000;
++pub const XTABS: ::tcflag_t = 0o014000;
++pub const B57600: ::speed_t = 0o010001;
++pub const B115200: ::speed_t = 0o010002;
++pub const B230400: ::speed_t = 0o010003;
++pub const B460800: ::speed_t = 0o010004;
++pub const B500000: ::speed_t = 0o010005;
++pub const B576000: ::speed_t = 0o010006;
++pub const B921600: ::speed_t = 0o010007;
++pub const B1000000: ::speed_t = 0o010010;
++pub const B1152000: ::speed_t = 0o010011;
++pub const B1500000: ::speed_t = 0o010012;
++pub const B2000000: ::speed_t = 0o010013;
++pub const B2500000: ::speed_t = 0o010014;
++pub const B3000000: ::speed_t = 0o010015;
++pub const B3500000: ::speed_t = 0o010016;
++pub const B4000000: ::speed_t = 0o010017;
+
+ pub const O_APPEND: ::c_int = 0o010;
+ pub const O_CREAT: ::c_int = 0o400;
+diff --git a/src/vendor/libc/src/unix/notbsd/linux/musl/b32/mod.rs b/src/vendor/libc/src/unix/notbsd/linux/musl/b32/mod.rs
+index b4a0f761636..4128a8e4da6 100644
+--- a/src/vendor/libc/src/unix/notbsd/linux/musl/b32/mod.rs
++++ b/src/vendor/libc/src/unix/notbsd/linux/musl/b32/mod.rs
+@@ -32,96 +32,13 @@ s! {
+ pub struct sem_t {
+ __val: [::c_int; 4],
+ }
+-
+- pub struct ipc_perm {
+- pub __ipc_perm_key: ::key_t,
+- pub uid: ::uid_t,
+- pub gid: ::gid_t,
+- pub cuid: ::uid_t,
+- pub cgid: ::gid_t,
+- pub mode: ::mode_t,
+- pub __seq: ::c_int,
+- __unused1: ::c_long,
+- __unused2: ::c_long
+- }
+ }
+
+-pub const SIGSTKSZ: ::size_t = 8192;
+-pub const MINSIGSTKSZ: ::size_t = 2048;
+-
+ pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 32;
+ pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 24;
+
+-pub const RLIMIT_NLIMITS: ::c_int = 16;
+ pub const TIOCINQ: ::c_int = ::FIONREAD;
+-pub const MCL_CURRENT: ::c_int = 0x0001;
+-pub const MCL_FUTURE: ::c_int = 0x0002;
+-pub const CBAUD: ::tcflag_t = 0o0010017;
+-pub const TAB1: ::c_int = 0x00000800;
+-pub const TAB2: ::c_int = 0x00001000;
+-pub const TAB3: ::c_int = 0x00001800;
+-pub const CR1: ::c_int = 0x00000200;
+-pub const CR2: ::c_int = 0x00000400;
+-pub const CR3: ::c_int = 0x00000600;
+-pub const FF1: ::c_int = 0x00008000;
+-pub const BS1: ::c_int = 0x00002000;
+-pub const VT1: ::c_int = 0x00004000;
+-pub const VWERASE: usize = 14;
+-pub const VREPRINT: usize = 12;
+-pub const VSUSP: usize = 10;
+-pub const VSTART: usize = 8;
+-pub const VSTOP: usize = 9;
+-pub const VDISCARD: usize = 13;
+-pub const VTIME: usize = 5;
+-pub const IXON: ::tcflag_t = 0x00000400;
+-pub const IXOFF: ::tcflag_t = 0x00001000;
+-pub const ONLCR: ::tcflag_t = 0x4;
+-pub const CSIZE: ::tcflag_t = 0x00000030;
+-pub const CS6: ::tcflag_t = 0x00000010;
+-pub const CS7: ::tcflag_t = 0x00000020;
+-pub const CS8: ::tcflag_t = 0x00000030;
+-pub const CSTOPB: ::tcflag_t = 0x00000040;
+-pub const CREAD: ::tcflag_t = 0x00000080;
+-pub const PARENB: ::tcflag_t = 0x00000100;
+-pub const PARODD: ::tcflag_t = 0x00000200;
+-pub const HUPCL: ::tcflag_t = 0x00000400;
+-pub const CLOCAL: ::tcflag_t = 0x00000800;
+-pub const ECHOKE: ::tcflag_t = 0x00000800;
+-pub const ECHOE: ::tcflag_t = 0x00000010;
+-pub const ECHOK: ::tcflag_t = 0x00000020;
+-pub const ECHONL: ::tcflag_t = 0x00000040;
+-pub const ECHOPRT: ::tcflag_t = 0x00000400;
+-pub const ECHOCTL: ::tcflag_t = 0x00000200;
+-pub const ISIG: ::tcflag_t = 0x00000001;
+-pub const ICANON: ::tcflag_t = 0x00000002;
+-pub const PENDIN: ::tcflag_t = 0x00004000;
+-pub const NOFLSH: ::tcflag_t = 0x00000080;
+-pub const CIBAUD: ::tcflag_t = 0o02003600000;
+-pub const CBAUDEX: ::tcflag_t = 0o010000;
+-pub const VSWTC: usize = 7;
+-pub const OLCUC: ::tcflag_t = 0o000002;
+-pub const NLDLY: ::tcflag_t = 0o000400;
+-pub const CRDLY: ::tcflag_t = 0o003000;
+-pub const TABDLY: ::tcflag_t = 0o014000;
+-pub const BSDLY: ::tcflag_t = 0o020000;
+-pub const FFDLY: ::tcflag_t = 0o100000;
+-pub const VTDLY: ::tcflag_t = 0o040000;
+-pub const XTABS: ::tcflag_t = 0o014000;
+-pub const B57600: ::speed_t = 0o010001;
+-pub const B115200: ::speed_t = 0o010002;
+-pub const B230400: ::speed_t = 0o010003;
+-pub const B460800: ::speed_t = 0o010004;
+-pub const B500000: ::speed_t = 0o010005;
+-pub const B576000: ::speed_t = 0o010006;
+-pub const B921600: ::speed_t = 0o010007;
+-pub const B1000000: ::speed_t = 0o010010;
+-pub const B1152000: ::speed_t = 0o010011;
+-pub const B1500000: ::speed_t = 0o010012;
+-pub const B2000000: ::speed_t = 0o010013;
+-pub const B2500000: ::speed_t = 0o010014;
+-pub const B3000000: ::speed_t = 0o010015;
+-pub const B3500000: ::speed_t = 0o010016;
+-pub const B4000000: ::speed_t = 0o010017;
++
+ extern {
+ pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;
+ }
+@@ -136,6 +53,9 @@ cfg_if! {
+ } else if #[cfg(any(target_arch = "arm"))] {
+ mod arm;
+ pub use self::arm::*;
++ } else if #[cfg(any(target_arch = "powerpc"))] {
++ mod powerpc;
++ pub use self::powerpc::*;
+ } else {
+ // Unknown target_arch
+ }
+diff --git a/src/vendor/libc/src/unix/notbsd/linux/musl/b32/powerpc.rs b/src/vendor/libc/src/unix/notbsd/linux/musl/b32/powerpc.rs
+new file mode 100644
+index 00000000000..50b6b57ef11
+--- /dev/null
++++ b/src/vendor/libc/src/unix/notbsd/linux/musl/b32/powerpc.rs
+@@ -0,0 +1,866 @@
++pub type c_char = u8;
++pub type wchar_t = i32;
++
++s! {
++ pub struct stat {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino_t,
++ pub st_mode: ::mode_t,
++ pub st_nlink: ::nlink_t,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ pub st_rdev: ::dev_t,
++ __st_rdev_padding: ::c_short,
++ pub st_size: ::off_t,
++ pub st_blksize: ::blksize_t,
++ pub st_blocks: ::blkcnt_t,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ __unused: [::c_long; 2],
++ }
++
++ pub struct stat64 {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino_t,
++ pub st_mode: ::mode_t,
++ pub st_nlink: ::nlink_t,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ pub st_rdev: ::dev_t,
++ __st_rdev_padding: ::c_short,
++ pub st_size: ::off_t,
++ pub st_blksize: ::blksize_t,
++ pub st_blocks: ::blkcnt_t,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ __unused: [::c_long; 2],
++ }
++
++ pub struct stack_t {
++ pub ss_sp: *mut ::c_void,
++ pub ss_flags: ::c_int,
++ pub ss_size: ::size_t
++ }
++
++ pub struct ipc_perm {
++ pub __ipc_perm_key: ::key_t,
++ pub uid: ::uid_t,
++ pub gid: ::gid_t,
++ pub cuid: ::uid_t,
++ pub cgid: ::gid_t,
++ pub mode: ::mode_t,
++ pub __seq: ::c_int,
++ __pad1: ::c_int,
++ __pad2: ::c_longlong,
++ __pad3: ::c_longlong
++ }
++
++ pub struct shmid_ds {
++ pub shm_perm: ::ipc_perm,
++ __unused1: ::c_int,
++ pub shm_atime: ::time_t,
++ __unused2: ::c_int,
++ pub shm_dtime: ::time_t,
++ __unused3: ::c_int,
++ pub shm_ctime: ::time_t,
++ __unused4: ::c_int,
++ pub shm_segsz: ::size_t,
++ pub shm_cpid: ::pid_t,
++ pub shm_lpid: ::pid_t,
++ pub shm_nattch: ::c_ulong,
++ __pad1: ::c_ulong,
++ __pad2: ::c_ulong,
++ }
++
++ pub struct msqid_ds {
++ pub msg_perm: ::ipc_perm,
++ __unused1: ::c_int,
++ pub msg_stime: ::time_t,
++ __unused2: ::c_int,
++ pub msg_rtime: ::time_t,
++ __unused3: ::c_int,
++ pub msg_ctime: ::time_t,
++ __msg_cbytes: ::c_ulong,
++ pub msg_qnum: ::msgqnum_t,
++ pub msg_qbytes: ::msglen_t,
++ pub msg_lspid: ::pid_t,
++ pub msg_lrpid: ::pid_t,
++ __pad1: ::c_ulong,
++ __pad2: ::c_ulong,
++ }
++
++ pub struct statfs {
++ pub f_type: ::c_ulong,
++ pub f_bsize: ::c_ulong,
++ pub f_blocks: ::fsblkcnt_t,
++ pub f_bfree: ::fsblkcnt_t,
++ pub f_bavail: ::fsblkcnt_t,
++ pub f_files: ::fsfilcnt_t,
++ pub f_ffree: ::fsfilcnt_t,
++ pub f_fsid: ::fsid_t,
++ pub f_namelen: ::c_ulong,
++ pub f_frsize: ::c_ulong,
++ pub f_flags: ::c_ulong,
++ pub f_spare: [::c_ulong; 4],
++ }
++
++ pub struct siginfo_t {
++ pub si_signo: ::c_int,
++ pub si_errno: ::c_int,
++ pub si_code: ::c_int,
++ pub _pad: [::c_int; 29],
++ _align: [usize; 0],
++ }
++
++ pub struct statfs64 {
++ pub f_type: ::c_ulong,
++ pub f_bsize: ::c_ulong,
++ pub f_blocks: ::fsblkcnt_t,
++ pub f_bfree: ::fsblkcnt_t,
++ pub f_bavail: ::fsblkcnt_t,
++ pub f_files: ::fsfilcnt_t,
++ pub f_ffree: ::fsfilcnt_t,
++ pub f_fsid: ::fsid_t,
++ pub f_namelen: ::c_ulong,
++ pub f_frsize: ::c_ulong,
++ pub f_flags: ::c_ulong,
++ pub f_spare: [::c_ulong; 4],
++ }
++
++ pub struct statvfs64 {
++ pub f_bsize: ::c_ulong,
++ pub f_frsize: ::c_ulong,
++ pub f_blocks: u64,
++ pub f_bfree: u64,
++ pub f_bavail: u64,
++ pub f_files: u64,
++ pub f_ffree: u64,
++ pub f_favail: u64,
++ #[cfg(target_endian = "little")]
++ pub f_fsid: ::c_ulong,
++ __f_unused: ::c_int,
++ #[cfg(target_endian = "big")]
++ pub f_fsid: ::c_ulong,
++ pub f_flag: ::c_ulong,
++ pub f_namemax: ::c_ulong,
++ __f_spare: [::c_int; 6],
++ }
++
++ pub struct termios2 {
++ pub c_iflag: ::tcflag_t,
++ pub c_oflag: ::tcflag_t,
++ pub c_cflag: ::tcflag_t,
++ pub c_lflag: ::tcflag_t,
++ pub c_cc: [::cc_t; 19],
++ pub c_line: ::cc_t,
++ pub c_ispeed: ::speed_t,
++ pub c_ospeed: ::speed_t,
++ }
++}
++
++pub const SIGSTKSZ: ::size_t = 10240;
++pub const MINSIGSTKSZ: ::size_t = 4096;
++
++pub const O_DIRECT: ::c_int = 0x20000;
++pub const O_DIRECTORY: ::c_int = 0x4000;
++pub const O_NOFOLLOW: ::c_int = 0x8000;
++pub const O_ASYNC: ::c_int = 0x2000;
++pub const O_LARGEFILE: ::c_int = 0x10000;
++
++pub const FIOCLEX: ::c_int = 0x20006601;
++pub const FIONBIO: ::c_int = 0x8004667E;
++
++pub const RLIMIT_RSS: ::c_int = 5;
++pub const RLIMIT_NOFILE: ::c_int = 7;
++pub const RLIMIT_AS: ::c_int = 9;
++pub const RLIMIT_NPROC: ::c_int = 6;
++pub const RLIMIT_MEMLOCK: ::c_int = 8;
++pub const RLIMIT_NLIMITS: ::c_int = 15;
++
++pub const MCL_CURRENT: ::c_int = 0x2000;
++pub const MCL_FUTURE: ::c_int = 0x4000;
++pub const CBAUD: ::tcflag_t = 0o0000377;
++pub const TAB1: ::c_int = 0x00000400;
++pub const TAB2: ::c_int = 0x00000800;
++pub const TAB3: ::c_int = 0x00000C00;
++pub const CR1: ::c_int = 0x00001000;
++pub const CR2: ::c_int = 0x00002000;
++pub const CR3: ::c_int = 0x00003000;
++pub const FF1: ::c_int = 0x00004000;
++pub const BS1: ::c_int = 0x00008000;
++pub const VT1: ::c_int = 0x00010000;
++pub const VWERASE: usize = 10;
++pub const VREPRINT: usize = 11;
++pub const VSUSP: usize = 12;
++pub const VSTART: usize = 13;
++pub const VSTOP: usize = 14;
++pub const VDISCARD: usize = 16;
++pub const VTIME: usize = 7;
++pub const IXON: ::tcflag_t = 0x00000200;
++pub const IXOFF: ::tcflag_t = 0x00000400;
++pub const ONLCR: ::tcflag_t = 0x00000002;
++pub const CSIZE: ::tcflag_t = 0x00000300;
++pub const CS6: ::tcflag_t = 0x00000100;
++pub const CS7: ::tcflag_t = 0x00000200;
++pub const CS8: ::tcflag_t = 0x00000300;
++pub const CSTOPB: ::tcflag_t = 0x00000400;
++pub const CREAD: ::tcflag_t = 0x00000800;
++pub const PARENB: ::tcflag_t = 0x00001000;
++pub const PARODD: ::tcflag_t = 0x00002000;
++pub const HUPCL: ::tcflag_t = 0x00004000;
++pub const CLOCAL: ::tcflag_t = 0x00008000;
++pub const ECHOKE: ::tcflag_t = 0x00000001;
++pub const ECHOE: ::tcflag_t = 0x00000002;
++pub const ECHOK: ::tcflag_t = 0x00000004;
++pub const ECHONL: ::tcflag_t = 0x00000010;
++pub const ECHOPRT: ::tcflag_t = 0x00000020;
++pub const ECHOCTL: ::tcflag_t = 0x00000040;
++pub const ISIG: ::tcflag_t = 0x00000080;
++pub const ICANON: ::tcflag_t = 0x00000100;
++pub const PENDIN: ::tcflag_t = 0x20000000;
++pub const NOFLSH: ::tcflag_t = 0x80000000;
++pub const CIBAUD: ::tcflag_t = 0o00077600000;
++pub const CBAUDEX: ::tcflag_t = 0o000020;
++pub const VSWTC: usize = 9;
++pub const OLCUC: ::tcflag_t = 0o000004;
++pub const NLDLY: ::tcflag_t = 0o001400;
++pub const CRDLY: ::tcflag_t = 0o030000;
++pub const TABDLY: ::tcflag_t = 0o006000;
++pub const BSDLY: ::tcflag_t = 0o100000;
++pub const FFDLY: ::tcflag_t = 0o040000;
++pub const VTDLY: ::tcflag_t = 0o200000;
++pub const XTABS: ::tcflag_t = 0o006000;
++pub const B57600: ::speed_t = 0o000020;
++pub const B115200: ::speed_t = 0o000021;
++pub const B230400: ::speed_t = 0o000022;
++pub const B460800: ::speed_t = 0o000023;
++pub const B500000: ::speed_t = 0o000024;
++pub const B576000: ::speed_t = 0o000025;
++pub const B921600: ::speed_t = 0o000026;
++pub const B1000000: ::speed_t = 0o000027;
++pub const B1152000: ::speed_t = 0o000030;
++pub const B1500000: ::speed_t = 0o000031;
++pub const B2000000: ::speed_t = 0o000032;
++pub const B2500000: ::speed_t = 0o000033;
++pub const B3000000: ::speed_t = 0o000034;
++pub const B3500000: ::speed_t = 0o000035;
++pub const B4000000: ::speed_t = 0o000036;
++
++pub const O_APPEND: ::c_int = 1024;
++pub const O_CREAT: ::c_int = 64;
++pub const O_EXCL: ::c_int = 128;
++pub const O_NOCTTY: ::c_int = 256;
++pub const O_NONBLOCK: ::c_int = 2048;
++pub const O_SYNC: ::c_int = 1052672;
++pub const O_RSYNC: ::c_int = 1052672;
++pub const O_DSYNC: ::c_int = 4096;
++
++pub const SOCK_NONBLOCK: ::c_int = 2048;
++
++pub const MAP_ANON: ::c_int = 0x0020;
++pub const MAP_GROWSDOWN: ::c_int = 0x0100;
++pub const MAP_DENYWRITE: ::c_int = 0x0800;
++pub const MAP_EXECUTABLE: ::c_int = 0x01000;
++pub const MAP_LOCKED: ::c_int = 0x00080;
++pub const MAP_NORESERVE: ::c_int = 0x00040;
++pub const MAP_POPULATE: ::c_int = 0x08000;
++pub const MAP_NONBLOCK: ::c_int = 0x010000;
++pub const MAP_STACK: ::c_int = 0x020000;
++
++pub const SOCK_STREAM: ::c_int = 1;
++pub const SOCK_DGRAM: ::c_int = 2;
++pub const SOCK_SEQPACKET: ::c_int = 5;
++
++pub const SOL_SOCKET: ::c_int = 1;
++
++pub const EDEADLK: ::c_int = 35;
++pub const ENAMETOOLONG: ::c_int = 36;
++pub const ENOLCK: ::c_int = 37;
++pub const ENOSYS: ::c_int = 38;
++pub const ENOTEMPTY: ::c_int = 39;
++pub const ELOOP: ::c_int = 40;
++pub const ENOMSG: ::c_int = 42;
++pub const EIDRM: ::c_int = 43;
++pub const ECHRNG: ::c_int = 44;
++pub const EL2NSYNC: ::c_int = 45;
++pub const EL3HLT: ::c_int = 46;
++pub const EL3RST: ::c_int = 47;
++pub const ELNRNG: ::c_int = 48;
++pub const EUNATCH: ::c_int = 49;
++pub const ENOCSI: ::c_int = 50;
++pub const EL2HLT: ::c_int = 51;
++pub const EBADE: ::c_int = 52;
++pub const EBADR: ::c_int = 53;
++pub const EXFULL: ::c_int = 54;
++pub const ENOANO: ::c_int = 55;
++pub const EBADRQC: ::c_int = 56;
++pub const EBADSLT: ::c_int = 57;
++pub const EDEADLOCK: ::c_int = 58;
++pub const EMULTIHOP: ::c_int = 72;
++pub const EBADMSG: ::c_int = 74;
++pub const EOVERFLOW: ::c_int = 75;
++pub const ENOTUNIQ: ::c_int = 76;
++pub const EBADFD: ::c_int = 77;
++pub const EREMCHG: ::c_int = 78;
++pub const ELIBACC: ::c_int = 79;
++pub const ELIBBAD: ::c_int = 80;
++pub const ELIBSCN: ::c_int = 81;
++pub const ELIBMAX: ::c_int = 82;
++pub const ELIBEXEC: ::c_int = 83;
++pub const EILSEQ: ::c_int = 84;
++pub const ERESTART: ::c_int = 85;
++pub const ESTRPIPE: ::c_int = 86;
++pub const EUSERS: ::c_int = 87;
++pub const ENOTSOCK: ::c_int = 88;
++pub const EDESTADDRREQ: ::c_int = 89;
++pub const EMSGSIZE: ::c_int = 90;
++pub const EPROTOTYPE: ::c_int = 91;
++pub const ENOPROTOOPT: ::c_int = 92;
++pub const EPROTONOSUPPORT: ::c_int = 93;
++pub const ESOCKTNOSUPPORT: ::c_int = 94;
++pub const EOPNOTSUPP: ::c_int = 95;
++pub const ENOTSUP: ::c_int = EOPNOTSUPP;
++pub const EPFNOSUPPORT: ::c_int = 96;
++pub const EAFNOSUPPORT: ::c_int = 97;
++pub const EADDRINUSE: ::c_int = 98;
++pub const EADDRNOTAVAIL: ::c_int = 99;
++pub const ENETDOWN: ::c_int = 100;
++pub const ENETUNREACH: ::c_int = 101;
++pub const ENETRESET: ::c_int = 102;
++pub const ECONNABORTED: ::c_int = 103;
++pub const ECONNRESET: ::c_int = 104;
++pub const ENOBUFS: ::c_int = 105;
++pub const EISCONN: ::c_int = 106;
++pub const ENOTCONN: ::c_int = 107;
++pub const ESHUTDOWN: ::c_int = 108;
++pub const ETOOMANYREFS: ::c_int = 109;
++pub const ETIMEDOUT: ::c_int = 110;
++pub const ECONNREFUSED: ::c_int = 111;
++pub const EHOSTDOWN: ::c_int = 112;
++pub const EHOSTUNREACH: ::c_int = 113;
++pub const EALREADY: ::c_int = 114;
++pub const EINPROGRESS: ::c_int = 115;
++pub const ESTALE: ::c_int = 116;
++pub const EUCLEAN: ::c_int = 117;
++pub const ENOTNAM: ::c_int = 118;
++pub const ENAVAIL: ::c_int = 119;
++pub const EISNAM: ::c_int = 120;
++pub const EREMOTEIO: ::c_int = 121;
++pub const EDQUOT: ::c_int = 122;
++pub const ENOMEDIUM: ::c_int = 123;
++pub const EMEDIUMTYPE: ::c_int = 124;
++pub const ECANCELED: ::c_int = 125;
++pub const ENOKEY: ::c_int = 126;
++pub const EKEYEXPIRED: ::c_int = 127;
++pub const EKEYREVOKED: ::c_int = 128;
++pub const EKEYREJECTED: ::c_int = 129;
++pub const EOWNERDEAD: ::c_int = 130;
++pub const ENOTRECOVERABLE: ::c_int = 131;
++pub const ERFKILL: ::c_int = 132;
++pub const EHWPOISON: ::c_int = 133;
++
++pub const SO_REUSEADDR: ::c_int = 2;
++pub const SO_TYPE: ::c_int = 3;
++pub const SO_ERROR: ::c_int = 4;
++pub const SO_DONTROUTE: ::c_int = 5;
++pub const SO_BROADCAST: ::c_int = 6;
++pub const SO_SNDBUF: ::c_int = 7;
++pub const SO_RCVBUF: ::c_int = 8;
++pub const SO_KEEPALIVE: ::c_int = 9;
++pub const SO_OOBINLINE: ::c_int = 10;
++pub const SO_NO_CHECK: ::c_int = 11;
++pub const SO_PRIORITY: ::c_int = 12;
++pub const SO_LINGER: ::c_int = 13;
++pub const SO_BSDCOMPAT: ::c_int = 14;
++pub const SO_REUSEPORT: ::c_int = 15;
++pub const SO_RCVLOWAT: ::c_int = 16;
++pub const SO_SNDLOWAT: ::c_int = 17;
++pub const SO_RCVTIMEO: ::c_int = 18;
++pub const SO_SNDTIMEO: ::c_int = 19;
++pub const SO_PASSCRED: ::c_int = 20;
++pub const SO_PEERCRED: ::c_int = 21;
++pub const SO_ACCEPTCONN: ::c_int = 30;
++pub const SO_SNDBUFFORCE: ::c_int = 32;
++pub const SO_RCVBUFFORCE: ::c_int = 33;
++pub const SO_PROTOCOL: ::c_int = 38;
++pub const SO_DOMAIN: ::c_int = 39;
++
++pub const SA_ONSTACK: ::c_int = 0x08000000;
++pub const SA_SIGINFO: ::c_int = 0x00000004;
++pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
++
++pub const SIGCHLD: ::c_int = 17;
++pub const SIGBUS: ::c_int = 7;
++pub const SIGTTIN: ::c_int = 21;
++pub const SIGTTOU: ::c_int = 22;
++pub const SIGXCPU: ::c_int = 24;
++pub const SIGXFSZ: ::c_int = 25;
++pub const SIGVTALRM: ::c_int = 26;
++pub const SIGPROF: ::c_int = 27;
++pub const SIGWINCH: ::c_int = 28;
++pub const SIGUSR1: ::c_int = 10;
++pub const SIGUSR2: ::c_int = 12;
++pub const SIGCONT: ::c_int = 18;
++pub const SIGSTOP: ::c_int = 19;
++pub const SIGTSTP: ::c_int = 20;
++pub const SIGURG: ::c_int = 23;
++pub const SIGIO: ::c_int = 29;
++pub const SIGSYS: ::c_int = 31;
++pub const SIGSTKFLT: ::c_int = 16;
++pub const SIGPOLL: ::c_int = 29;
++pub const SIGPWR: ::c_int = 30;
++pub const SIG_SETMASK: ::c_int = 2;
++pub const SIG_BLOCK: ::c_int = 0x000000;
++pub const SIG_UNBLOCK: ::c_int = 0x01;
++
++pub const EXTPROC: ::tcflag_t = 0x10000000;
++
++pub const MAP_HUGETLB: ::c_int = 0x040000;
++
++pub const F_GETLK: ::c_int = 12;
++pub const F_GETOWN: ::c_int = 9;
++pub const F_SETLK: ::c_int = 13;
++pub const F_SETLKW: ::c_int = 14;
++pub const F_SETOWN: ::c_int = 8;
++
++pub const VEOF: usize = 4;
++pub const VEOL: usize = 6;
++pub const VEOL2: usize = 8;
++pub const VMIN: usize = 5;
++pub const IEXTEN: ::tcflag_t = 0x00000400;
++pub const TOSTOP: ::tcflag_t = 0x00400000;
++pub const FLUSHO: ::tcflag_t = 0x00800000;
++
++pub const TCGETS: ::c_int = 0x402C7413;
++pub const TCSETS: ::c_int = 0x802C7414;
++pub const TCSETSW: ::c_int = 0x802C7415;
++pub const TCSETSF: ::c_int = 0x802C7416;
++pub const TCGETA: ::c_int = 0x40147417;
++pub const TCSETA: ::c_int = 0x80147418;
++pub const TCSETAW: ::c_int = 0x80147419;
++pub const TCSETAF: ::c_int = 0x8014741C;
++pub const TCSBRK: ::c_int = 0x2000741D;
++pub const TCXONC: ::c_int = 0x2000741E;
++pub const TCFLSH: ::c_int = 0x2000741F;
++pub const TIOCGSOFTCAR: ::c_int = 0x5419;
++pub const TIOCSSOFTCAR: ::c_int = 0x541A;
++pub const TIOCLINUX: ::c_int = 0x541C;
++pub const TIOCGSERIAL: ::c_int = 0x541E;
++pub const TIOCEXCL: ::c_int = 0x540C;
++pub const TIOCNXCL: ::c_int = 0x540D;
++pub const TIOCSCTTY: ::c_int = 0x540E;
++pub const TIOCGPGRP: ::c_int = 0x40047477;
++pub const TIOCSPGRP: ::c_int = 0x80047476;
++pub const TIOCOUTQ: ::c_int = 0x40047473;
++pub const TIOCSTI: ::c_int = 0x5412;
++pub const TIOCGWINSZ: ::c_int = 0x40087468;
++pub const TIOCSWINSZ: ::c_int = 0x80087467;
++pub const TIOCMGET: ::c_int = 0x5415;
++pub const TIOCMBIS: ::c_int = 0x5416;
++pub const TIOCMBIC: ::c_int = 0x5417;
++pub const TIOCMSET: ::c_int = 0x5418;
++pub const FIONREAD: ::c_int = 0x4004667F;
++pub const TIOCCONS: ::c_int = 0x541D;
++
++pub const POLLWRNORM: ::c_short = 0x100;
++pub const POLLWRBAND: ::c_short = 0x200;
++
++pub const TIOCM_LE: ::c_int = 0x001;
++pub const TIOCM_DTR: ::c_int = 0x002;
++pub const TIOCM_RTS: ::c_int = 0x004;
++pub const TIOCM_ST: ::c_int = 0x008;
++pub const TIOCM_SR: ::c_int = 0x010;
++pub const TIOCM_CTS: ::c_int = 0x020;
++pub const TIOCM_CAR: ::c_int = 0x040;
++pub const TIOCM_RNG: ::c_int = 0x080;
++pub const TIOCM_DSR: ::c_int = 0x100;
++pub const TIOCM_CD: ::c_int = TIOCM_CAR;
++pub const TIOCM_RI: ::c_int = TIOCM_RNG;
++
++// Syscall table
++pub const SYS_restart_syscall: ::c_long = 0;
++pub const SYS_exit: ::c_long = 1;
++pub const SYS_fork: ::c_long = 2;
++pub const SYS_read: ::c_long = 3;
++pub const SYS_write: ::c_long = 4;
++pub const SYS_open: ::c_long = 5;
++pub const SYS_close: ::c_long = 6;
++pub const SYS_waitpid: ::c_long = 7;
++pub const SYS_creat: ::c_long = 8;
++pub const SYS_link: ::c_long = 9;
++pub const SYS_unlink: ::c_long = 10;
++pub const SYS_execve: ::c_long = 11;
++pub const SYS_chdir: ::c_long = 12;
++pub const SYS_time: ::c_long = 13;
++pub const SYS_mknod: ::c_long = 14;
++pub const SYS_chmod: ::c_long = 15;
++pub const SYS_lchown: ::c_long = 16;
++pub const SYS_break: ::c_long = 17;
++pub const SYS_oldstat: ::c_long = 18;
++pub const SYS_lseek: ::c_long = 19;
++pub const SYS_getpid: ::c_long = 20;
++pub const SYS_mount: ::c_long = 21;
++pub const SYS_umount: ::c_long = 22;
++pub const SYS_setuid: ::c_long = 23;
++pub const SYS_getuid: ::c_long = 24;
++pub const SYS_stime: ::c_long = 25;
++pub const SYS_ptrace: ::c_long = 26;
++pub const SYS_alarm: ::c_long = 27;
++pub const SYS_oldfstat: ::c_long = 28;
++pub const SYS_pause: ::c_long = 29;
++pub const SYS_utime: ::c_long = 30;
++pub const SYS_stty: ::c_long = 31;
++pub const SYS_gtty: ::c_long = 32;
++pub const SYS_access: ::c_long = 33;
++pub const SYS_nice: ::c_long = 34;
++pub const SYS_ftime: ::c_long = 35;
++pub const SYS_sync: ::c_long = 36;
++pub const SYS_kill: ::c_long = 37;
++pub const SYS_rename: ::c_long = 38;
++pub const SYS_mkdir: ::c_long = 39;
++pub const SYS_rmdir: ::c_long = 40;
++pub const SYS_dup: ::c_long = 41;
++pub const SYS_pipe: ::c_long = 42;
++pub const SYS_times: ::c_long = 43;
++pub const SYS_prof: ::c_long = 44;
++pub const SYS_brk: ::c_long = 45;
++pub const SYS_setgid: ::c_long = 46;
++pub const SYS_getgid: ::c_long = 47;
++pub const SYS_signal: ::c_long = 48;
++pub const SYS_geteuid: ::c_long = 49;
++pub const SYS_getegid: ::c_long = 50;
++pub const SYS_acct: ::c_long = 51;
++pub const SYS_umount2: ::c_long = 52;
++pub const SYS_lock: ::c_long = 53;
++pub const SYS_ioctl: ::c_long = 54;
++pub const SYS_fcntl: ::c_long = 55;
++pub const SYS_mpx: ::c_long = 56;
++pub const SYS_setpgid: ::c_long = 57;
++pub const SYS_ulimit: ::c_long = 58;
++pub const SYS_oldolduname: ::c_long = 59;
++pub const SYS_umask: ::c_long = 60;
++pub const SYS_chroot: ::c_long = 61;
++pub const SYS_ustat: ::c_long = 62;
++pub const SYS_dup2: ::c_long = 63;
++pub const SYS_getppid: ::c_long = 64;
++pub const SYS_getpgrp: ::c_long = 65;
++pub const SYS_setsid: ::c_long = 66;
++pub const SYS_sigaction: ::c_long = 67;
++pub const SYS_sgetmask: ::c_long = 68;
++pub const SYS_ssetmask: ::c_long = 69;
++pub const SYS_setreuid: ::c_long = 70;
++pub const SYS_setregid: ::c_long = 71;
++pub const SYS_sigsuspend: ::c_long = 72;
++pub const SYS_sigpending: ::c_long = 73;
++pub const SYS_sethostname: ::c_long = 74;
++pub const SYS_setrlimit: ::c_long = 75;
++pub const SYS_getrlimit: ::c_long = 76;
++pub const SYS_getrusage: ::c_long = 77;
++pub const SYS_gettimeofday: ::c_long = 78;
++pub const SYS_settimeofday: ::c_long = 79;
++pub const SYS_getgroups: ::c_long = 80;
++pub const SYS_setgroups: ::c_long = 81;
++pub const SYS_select: ::c_long = 82;
++pub const SYS_symlink: ::c_long = 83;
++pub const SYS_oldlstat: ::c_long = 84;
++pub const SYS_readlink: ::c_long = 85;
++pub const SYS_uselib: ::c_long = 86;
++pub const SYS_swapon: ::c_long = 87;
++pub const SYS_reboot: ::c_long = 88;
++pub const SYS_readdir: ::c_long = 89;
++pub const SYS_mmap: ::c_long = 90;
++pub const SYS_munmap: ::c_long = 91;
++pub const SYS_truncate: ::c_long = 92;
++pub const SYS_ftruncate: ::c_long = 93;
++pub const SYS_fchmod: ::c_long = 94;
++pub const SYS_fchown: ::c_long = 95;
++pub const SYS_getpriority: ::c_long = 96;
++pub const SYS_setpriority: ::c_long = 97;
++pub const SYS_profil: ::c_long = 98;
++pub const SYS_statfs: ::c_long = 99;
++pub const SYS_fstatfs: ::c_long = 100;
++pub const SYS_ioperm: ::c_long = 101;
++pub const SYS_socketcall: ::c_long = 102;
++pub const SYS_syslog: ::c_long = 103;
++pub const SYS_setitimer: ::c_long = 104;
++pub const SYS_getitimer: ::c_long = 105;
++pub const SYS_stat: ::c_long = 106;
++pub const SYS_lstat: ::c_long = 107;
++pub const SYS_fstat: ::c_long = 108;
++pub const SYS_olduname: ::c_long = 109;
++pub const SYS_iopl: ::c_long = 110;
++pub const SYS_vhangup: ::c_long = 111;
++pub const SYS_idle: ::c_long = 112;
++pub const SYS_vm86: ::c_long = 113;
++pub const SYS_wait4: ::c_long = 114;
++pub const SYS_swapoff: ::c_long = 115;
++pub const SYS_sysinfo: ::c_long = 116;
++pub const SYS_ipc: ::c_long = 117;
++pub const SYS_fsync: ::c_long = 118;
++pub const SYS_sigreturn: ::c_long = 119;
++pub const SYS_clone: ::c_long = 120;
++pub const SYS_setdomainname: ::c_long = 121;
++pub const SYS_uname: ::c_long = 122;
++pub const SYS_modify_ldt: ::c_long = 123;
++pub const SYS_adjtimex: ::c_long = 124;
++pub const SYS_mprotect: ::c_long = 125;
++pub const SYS_sigprocmask: ::c_long = 126;
++pub const SYS_create_module: ::c_long = 127;
++pub const SYS_init_module: ::c_long = 128;
++pub const SYS_delete_module: ::c_long = 129;
++pub const SYS_get_kernel_syms: ::c_long = 130;
++pub const SYS_quotactl: ::c_long = 131;
++pub const SYS_getpgid: ::c_long = 132;
++pub const SYS_fchdir: ::c_long = 133;
++pub const SYS_bdflush: ::c_long = 134;
++pub const SYS_sysfs: ::c_long = 135;
++pub const SYS_personality: ::c_long = 136;
++pub const SYS_afs_syscall: ::c_long = 137;
++pub const SYS_setfsuid: ::c_long = 138;
++pub const SYS_setfsgid: ::c_long = 139;
++pub const SYS__llseek: ::c_long = 140;
++pub const SYS_getdents: ::c_long = 141;
++pub const SYS__newselect: ::c_long = 142;
++pub const SYS_flock: ::c_long = 143;
++pub const SYS_msync: ::c_long = 144;
++pub const SYS_readv: ::c_long = 145;
++pub const SYS_writev: ::c_long = 146;
++pub const SYS_getsid: ::c_long = 147;
++pub const SYS_fdatasync: ::c_long = 148;
++pub const SYS__sysctl: ::c_long = 149;
++pub const SYS_mlock: ::c_long = 150;
++pub const SYS_munlock: ::c_long = 151;
++pub const SYS_mlockall: ::c_long = 152;
++pub const SYS_munlockall: ::c_long = 153;
++pub const SYS_sched_setparam: ::c_long = 154;
++pub const SYS_sched_getparam: ::c_long = 155;
++pub const SYS_sched_setscheduler: ::c_long = 156;
++pub const SYS_sched_getscheduler: ::c_long = 157;
++pub const SYS_sched_yield: ::c_long = 158;
++pub const SYS_sched_get_priority_max: ::c_long = 159;
++pub const SYS_sched_get_priority_min: ::c_long = 160;
++pub const SYS_sched_rr_get_interval: ::c_long = 161;
++pub const SYS_nanosleep: ::c_long = 162;
++pub const SYS_mremap: ::c_long = 163;
++pub const SYS_setresuid: ::c_long = 164;
++pub const SYS_getresuid: ::c_long = 165;
++pub const SYS_query_module: ::c_long = 166;
++pub const SYS_poll: ::c_long = 167;
++pub const SYS_nfsservctl: ::c_long = 168;
++pub const SYS_setresgid: ::c_long = 169;
++pub const SYS_getresgid: ::c_long = 170;
++pub const SYS_prctl: ::c_long = 171;
++pub const SYS_rt_sigreturn: ::c_long = 172;
++pub const SYS_rt_sigaction: ::c_long = 173;
++pub const SYS_rt_sigprocmask: ::c_long = 174;
++pub const SYS_rt_sigpending: ::c_long = 175;
++pub const SYS_rt_sigtimedwait: ::c_long = 176;
++pub const SYS_rt_sigqueueinfo: ::c_long = 177;
++pub const SYS_rt_sigsuspend: ::c_long = 178;
++pub const SYS_pread64: ::c_long = 179;
++pub const SYS_pwrite64: ::c_long = 180;
++pub const SYS_chown: ::c_long = 181;
++pub const SYS_getcwd: ::c_long = 182;
++pub const SYS_capget: ::c_long = 183;
++pub const SYS_capset: ::c_long = 184;
++pub const SYS_sigaltstack: ::c_long = 185;
++pub const SYS_sendfile: ::c_long = 186;
++pub const SYS_getpmsg: ::c_long = 187;
++pub const SYS_putpmsg: ::c_long = 188;
++pub const SYS_vfork: ::c_long = 189;
++pub const SYS_ugetrlimit: ::c_long = 190;
++pub const SYS_readahead: ::c_long = 191;
++pub const SYS_mmap2: ::c_long = 192;
++pub const SYS_truncate64: ::c_long = 193;
++pub const SYS_ftruncate64: ::c_long = 194;
++pub const SYS_stat64: ::c_long = 195;
++pub const SYS_lstat64: ::c_long = 196;
++pub const SYS_fstat64: ::c_long = 197;
++pub const SYS_pciconfig_read: ::c_long = 198;
++pub const SYS_pciconfig_write: ::c_long = 199;
++pub const SYS_pciconfig_iobase: ::c_long = 200;
++pub const SYS_multiplexer: ::c_long = 201;
++pub const SYS_getdents64: ::c_long = 202;
++pub const SYS_pivot_root: ::c_long = 203;
++pub const SYS_fcntl64: ::c_long = 204;
++pub const SYS_madvise: ::c_long = 205;
++pub const SYS_mincore: ::c_long = 206;
++pub const SYS_gettid: ::c_long = 207;
++pub const SYS_tkill: ::c_long = 208;
++pub const SYS_setxattr: ::c_long = 209;
++pub const SYS_lsetxattr: ::c_long = 210;
++pub const SYS_fsetxattr: ::c_long = 211;
++pub const SYS_getxattr: ::c_long = 212;
++pub const SYS_lgetxattr: ::c_long = 213;
++pub const SYS_fgetxattr: ::c_long = 214;
++pub const SYS_listxattr: ::c_long = 215;
++pub const SYS_llistxattr: ::c_long = 216;
++pub const SYS_flistxattr: ::c_long = 217;
++pub const SYS_removexattr: ::c_long = 218;
++pub const SYS_lremovexattr: ::c_long = 219;
++pub const SYS_fremovexattr: ::c_long = 220;
++pub const SYS_futex: ::c_long = 221;
++pub const SYS_sched_setaffinity: ::c_long = 222;
++pub const SYS_sched_getaffinity: ::c_long = 223;
++pub const SYS_tuxcall: ::c_long = 225;
++pub const SYS_sendfile64: ::c_long = 226;
++pub const SYS_io_setup: ::c_long = 227;
++pub const SYS_io_destroy: ::c_long = 228;
++pub const SYS_io_getevents: ::c_long = 229;
++pub const SYS_io_submit: ::c_long = 230;
++pub const SYS_io_cancel: ::c_long = 231;
++pub const SYS_set_tid_address: ::c_long = 232;
++pub const SYS_fadvise64: ::c_long = 233;
++pub const SYS_exit_group: ::c_long = 234;
++pub const SYS_lookup_dcookie: ::c_long = 235;
++pub const SYS_epoll_create: ::c_long = 236;
++pub const SYS_epoll_ctl: ::c_long = 237;
++pub const SYS_epoll_wait: ::c_long = 238;
++pub const SYS_remap_file_pages: ::c_long = 239;
++pub const SYS_timer_create: ::c_long = 240;
++pub const SYS_timer_settime: ::c_long = 241;
++pub const SYS_timer_gettime: ::c_long = 242;
++pub const SYS_timer_getoverrun: ::c_long = 243;
++pub const SYS_timer_delete: ::c_long = 244;
++pub const SYS_clock_settime: ::c_long = 245;
++pub const SYS_clock_gettime: ::c_long = 246;
++pub const SYS_clock_getres: ::c_long = 247;
++pub const SYS_clock_nanosleep: ::c_long = 248;
++pub const SYS_swapcontext: ::c_long = 249;
++pub const SYS_tgkill: ::c_long = 250;
++pub const SYS_utimes: ::c_long = 251;
++pub const SYS_statfs64: ::c_long = 252;
++pub const SYS_fstatfs64: ::c_long = 253;
++pub const SYS_fadvise64_64: ::c_long = 254;
++pub const SYS_rtas: ::c_long = 255;
++pub const SYS_sys_debug_setcontext: ::c_long = 256;
++pub const SYS_migrate_pages: ::c_long = 258;
++pub const SYS_mbind: ::c_long = 259;
++pub const SYS_get_mempolicy: ::c_long = 260;
++pub const SYS_set_mempolicy: ::c_long = 261;
++pub const SYS_mq_open: ::c_long = 262;
++pub const SYS_mq_unlink: ::c_long = 263;
++pub const SYS_mq_timedsend: ::c_long = 264;
++pub const SYS_mq_timedreceive: ::c_long = 265;
++pub const SYS_mq_notify: ::c_long = 266;
++pub const SYS_mq_getsetattr: ::c_long = 267;
++pub const SYS_kexec_load: ::c_long = 268;
++pub const SYS_add_key: ::c_long = 269;
++pub const SYS_request_key: ::c_long = 270;
++pub const SYS_keyctl: ::c_long = 271;
++pub const SYS_waitid: ::c_long = 272;
++pub const SYS_ioprio_set: ::c_long = 273;
++pub const SYS_ioprio_get: ::c_long = 274;
++pub const SYS_inotify_init: ::c_long = 275;
++pub const SYS_inotify_add_watch: ::c_long = 276;
++pub const SYS_inotify_rm_watch: ::c_long = 277;
++pub const SYS_spu_run: ::c_long = 278;
++pub const SYS_spu_create: ::c_long = 279;
++pub const SYS_pselect6: ::c_long = 280;
++pub const SYS_ppoll: ::c_long = 281;
++pub const SYS_unshare: ::c_long = 282;
++pub const SYS_splice: ::c_long = 283;
++pub const SYS_tee: ::c_long = 284;
++pub const SYS_vmsplice: ::c_long = 285;
++pub const SYS_openat: ::c_long = 286;
++pub const SYS_mkdirat: ::c_long = 287;
++pub const SYS_mknodat: ::c_long = 288;
++pub const SYS_fchownat: ::c_long = 289;
++pub const SYS_futimesat: ::c_long = 290;
++pub const SYS_fstatat64: ::c_long = 291;
++pub const SYS_unlinkat: ::c_long = 292;
++pub const SYS_renameat: ::c_long = 293;
++pub const SYS_linkat: ::c_long = 294;
++pub const SYS_symlinkat: ::c_long = 295;
++pub const SYS_readlinkat: ::c_long = 296;
++pub const SYS_fchmodat: ::c_long = 297;
++pub const SYS_faccessat: ::c_long = 298;
++pub const SYS_get_robust_list: ::c_long = 299;
++pub const SYS_set_robust_list: ::c_long = 300;
++pub const SYS_move_pages: ::c_long = 301;
++pub const SYS_getcpu: ::c_long = 302;
++pub const SYS_epoll_pwait: ::c_long = 303;
++pub const SYS_utimensat: ::c_long = 304;
++pub const SYS_signalfd: ::c_long = 305;
++pub const SYS_timerfd_create: ::c_long = 306;
++pub const SYS_eventfd: ::c_long = 307;
++pub const SYS_sync_file_range2: ::c_long = 308;
++pub const SYS_fallocate: ::c_long = 309;
++pub const SYS_subpage_prot: ::c_long = 310;
++pub const SYS_timerfd_settime: ::c_long = 311;
++pub const SYS_timerfd_gettime: ::c_long = 312;
++pub const SYS_signalfd4: ::c_long = 313;
++pub const SYS_eventfd2: ::c_long = 314;
++pub const SYS_epoll_create1: ::c_long = 315;
++pub const SYS_dup3: ::c_long = 316;
++pub const SYS_pipe2: ::c_long = 317;
++pub const SYS_inotify_init1: ::c_long = 318;
++pub const SYS_perf_event_open: ::c_long = 319;
++pub const SYS_preadv: ::c_long = 320;
++pub const SYS_pwritev: ::c_long = 321;
++pub const SYS_rt_tgsigqueueinfo: ::c_long = 322;
++pub const SYS_fanotify_init: ::c_long = 323;
++pub const SYS_fanotify_mark: ::c_long = 324;
++pub const SYS_prlimit64: ::c_long = 325;
++pub const SYS_socket: ::c_long = 326;
++pub const SYS_bind: ::c_long = 327;
++pub const SYS_connect: ::c_long = 328;
++pub const SYS_listen: ::c_long = 329;
++pub const SYS_accept: ::c_long = 330;
++pub const SYS_getsockname: ::c_long = 331;
++pub const SYS_getpeername: ::c_long = 332;
++pub const SYS_socketpair: ::c_long = 333;
++pub const SYS_send: ::c_long = 334;
++pub const SYS_sendto: ::c_long = 335;
++pub const SYS_recv: ::c_long = 336;
++pub const SYS_recvfrom: ::c_long = 337;
++pub const SYS_shutdown: ::c_long = 338;
++pub const SYS_setsockopt: ::c_long = 339;
++pub const SYS_getsockopt: ::c_long = 340;
++pub const SYS_sendmsg: ::c_long = 341;
++pub const SYS_recvmsg: ::c_long = 342;
++pub const SYS_recvmmsg: ::c_long = 343;
++pub const SYS_accept4: ::c_long = 344;
++pub const SYS_name_to_handle_at: ::c_long = 345;
++pub const SYS_open_by_handle_at: ::c_long = 346;
++pub const SYS_clock_adjtime: ::c_long = 347;
++pub const SYS_syncfs: ::c_long = 348;
++pub const SYS_sendmmsg: ::c_long = 349;
++pub const SYS_setns: ::c_long = 350;
++pub const SYS_process_vm_readv: ::c_long = 351;
++pub const SYS_process_vm_writev: ::c_long = 352;
++pub const SYS_finit_module: ::c_long = 353;
++pub const SYS_kcmp: ::c_long = 354;
++pub const SYS_sched_setattr: ::c_long = 355;
++pub const SYS_sched_getattr: ::c_long = 356;
++pub const SYS_renameat2: ::c_long = 357;
++pub const SYS_seccomp: ::c_long = 358;
++pub const SYS_getrandom: ::c_long = 359;
++pub const SYS_memfd_create: ::c_long = 360;
++pub const SYS_bpf: ::c_long = 361;
++pub const SYS_execveat: ::c_long = 362;
++pub const SYS_switch_endian: ::c_long = 363;
++pub const SYS_userfaultfd: ::c_long = 364;
++pub const SYS_membarrier: ::c_long = 365;
++pub const SYS_mlock2: ::c_long = 378;
++pub const SYS_copy_file_range: ::c_long = 379;
++pub const SYS_preadv2: ::c_long = 380;
++pub const SYS_pwritev2: ::c_long = 381;
++pub const SYS_kexec_file_load: ::c_long = 382;
++pub const SYS_statx: ::c_long = 383;
++pub const SYS_pkey_alloc: ::c_long = 384;
++pub const SYS_pkey_free: ::c_long = 385;
++pub const SYS_pkey_mprotect: ::c_long = 386;
++
++#[doc(hidden)]
++pub const AF_MAX: ::c_int = 43;
++#[doc(hidden)]
++pub const PF_MAX: ::c_int = AF_MAX;
+diff --git a/src/vendor/libc/src/unix/notbsd/linux/musl/b32/x86.rs b/src/vendor/libc/src/unix/notbsd/linux/musl/b32/x86.rs
+index fa570248c72..9f704c7fac9 100644
+--- a/src/vendor/libc/src/unix/notbsd/linux/musl/b32/x86.rs
++++ b/src/vendor/libc/src/unix/notbsd/linux/musl/b32/x86.rs
+@@ -52,6 +52,18 @@ s! {
+ pub ss_size: ::size_t
+ }
+
++ pub struct ipc_perm {
++ pub __ipc_perm_key: ::key_t,
++ pub uid: ::uid_t,
++ pub gid: ::gid_t,
++ pub cuid: ::uid_t,
++ pub cgid: ::gid_t,
++ pub mode: ::mode_t,
++ pub __seq: ::c_int,
++ __unused1: ::c_long,
++ __unused2: ::c_long
++ }
++
+ pub struct shmid_ds {
+ pub shm_perm: ::ipc_perm,
+ pub shm_segsz: ::size_t,
+@@ -164,6 +176,9 @@ s! {
+ }
+ }
+
++pub const SIGSTKSZ: ::size_t = 8192;
++pub const MINSIGSTKSZ: ::size_t = 2048;
++
+ pub const O_DIRECT: ::c_int = 0x4000;
+ pub const O_DIRECTORY: ::c_int = 0x10000;
+ pub const O_NOFOLLOW: ::c_int = 0x20000;
+@@ -178,6 +193,76 @@ pub const RLIMIT_NOFILE: ::c_int = 7;
+ pub const RLIMIT_AS: ::c_int = 9;
+ pub const RLIMIT_NPROC: ::c_int = 6;
+ pub const RLIMIT_MEMLOCK: ::c_int = 8;
++pub const RLIMIT_NLIMITS: ::c_int = 16;
++
++pub const MCL_CURRENT: ::c_int = 0x0001;
++pub const MCL_FUTURE: ::c_int = 0x0002;
++pub const CBAUD: ::tcflag_t = 0o0010017;
++pub const TAB1: ::c_int = 0x00000800;
++pub const TAB2: ::c_int = 0x00001000;
++pub const TAB3: ::c_int = 0x00001800;
++pub const CR1: ::c_int = 0x00000200;
++pub const CR2: ::c_int = 0x00000400;
++pub const CR3: ::c_int = 0x00000600;
++pub const FF1: ::c_int = 0x00008000;
++pub const BS1: ::c_int = 0x00002000;
++pub const VT1: ::c_int = 0x00004000;
++pub const VWERASE: usize = 14;
++pub const VREPRINT: usize = 12;
++pub const VSUSP: usize = 10;
++pub const VSTART: usize = 8;
++pub const VSTOP: usize = 9;
++pub const VDISCARD: usize = 13;
++pub const VTIME: usize = 5;
++pub const IXON: ::tcflag_t = 0x00000400;
++pub const IXOFF: ::tcflag_t = 0x00001000;
++pub const ONLCR: ::tcflag_t = 0x4;
++pub const CSIZE: ::tcflag_t = 0x00000030;
++pub const CS6: ::tcflag_t = 0x00000010;
++pub const CS7: ::tcflag_t = 0x00000020;
++pub const CS8: ::tcflag_t = 0x00000030;
++pub const CSTOPB: ::tcflag_t = 0x00000040;
++pub const CREAD: ::tcflag_t = 0x00000080;
++pub const PARENB: ::tcflag_t = 0x00000100;
++pub const PARODD: ::tcflag_t = 0x00000200;
++pub const HUPCL: ::tcflag_t = 0x00000400;
++pub const CLOCAL: ::tcflag_t = 0x00000800;
++pub const ECHOKE: ::tcflag_t = 0x00000800;
++pub const ECHOE: ::tcflag_t = 0x00000010;
++pub const ECHOK: ::tcflag_t = 0x00000020;
++pub const ECHONL: ::tcflag_t = 0x00000040;
++pub const ECHOPRT: ::tcflag_t = 0x00000400;
++pub const ECHOCTL: ::tcflag_t = 0x00000200;
++pub const ISIG: ::tcflag_t = 0x00000001;
++pub const ICANON: ::tcflag_t = 0x00000002;
++pub const PENDIN: ::tcflag_t = 0x00004000;
++pub const NOFLSH: ::tcflag_t = 0x00000080;
++pub const CIBAUD: ::tcflag_t = 0o02003600000;
++pub const CBAUDEX: ::tcflag_t = 0o010000;
++pub const VSWTC: usize = 7;
++pub const OLCUC: ::tcflag_t = 0o000002;
++pub const NLDLY: ::tcflag_t = 0o000400;
++pub const CRDLY: ::tcflag_t = 0o003000;
++pub const TABDLY: ::tcflag_t = 0o014000;
++pub const BSDLY: ::tcflag_t = 0o020000;
++pub const FFDLY: ::tcflag_t = 0o100000;
++pub const VTDLY: ::tcflag_t = 0o040000;
++pub const XTABS: ::tcflag_t = 0o014000;
++pub const B57600: ::speed_t = 0o010001;
++pub const B115200: ::speed_t = 0o010002;
++pub const B230400: ::speed_t = 0o010003;
++pub const B460800: ::speed_t = 0o010004;
++pub const B500000: ::speed_t = 0o010005;
++pub const B576000: ::speed_t = 0o010006;
++pub const B921600: ::speed_t = 0o010007;
++pub const B1000000: ::speed_t = 0o010010;
++pub const B1152000: ::speed_t = 0o010011;
++pub const B1500000: ::speed_t = 0o010012;
++pub const B2000000: ::speed_t = 0o010013;
++pub const B2500000: ::speed_t = 0o010014;
++pub const B3000000: ::speed_t = 0o010015;
++pub const B3500000: ::speed_t = 0o010016;
++pub const B4000000: ::speed_t = 0o010017;
+
+ pub const O_APPEND: ::c_int = 1024;
+ pub const O_CREAT: ::c_int = 64;
+diff --git a/src/vendor/libc/src/unix/notbsd/linux/musl/mod.rs b/src/vendor/libc/src/unix/notbsd/linux/musl/mod.rs
+index 0d92a4b9d14..10d61ebebef 100644
+--- a/src/vendor/libc/src/unix/notbsd/linux/musl/mod.rs
++++ b/src/vendor/libc/src/unix/notbsd/linux/musl/mod.rs
+@@ -260,7 +260,8 @@ cfg_if! {
+ pub use self::b64::*;
+ } else if #[cfg(any(target_arch = "x86",
+ target_arch = "mips",
+- target_arch = "arm"))] {
++ target_arch = "arm",
++ target_arch = "powerpc"))] {
+ mod b32;
+ pub use self::b32::*;
+ } else { }
diff --git a/user/rust/0033-liblibc-checksums.patch b/user/rust/0035-libc-checksums.patch
index 3a1f5f423..a8ec2c150 100644
--- a/user/rust/0033-liblibc-checksums.patch
+++ b/user/rust/0035-libc-checksums.patch
@@ -5,5 +5,5 @@ index 5b315f61..c28c8c5c 100644
@@ -1 +1 @@
-{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".gitignore":"7150ee9391a955b2ef7e0762fc61c0c1aab167620ca36d88d78062d93b8334ba",".travis.yml":"9750910d5fdc61263fb3eae7f5f78e2920923f250150f8500c0c22a830790acd","Cargo.toml":"4629bf1256274045a39aedc78a7f6b48b5bf7fdf177cd69c4eb65909586ab0cf","Cargo.toml.orig":"423b6276994f73cf7fc57dafad118ff8b0e207eb55ebe57a0ee1a149bf36f544","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"fdf0f0c197e2999fce42457fb089f192a42d2fb1f743c9c8fcda1a44cb40e1fa","appveyor.yml":"216f7ac4561aa5810dc84ce5a9950897a8c0496e0615d0211d62348b1c8dc720","ci/README.md":"2e3d7ad13f8c3202e57d2af73aeeebde306221dce7c0907e462e25767a692d6b","ci/android-install-ndk.sh":"725db9025c5905849916bf7c910f98ff0e753484397c2a1f836d48a576d10890","ci/android-install-sdk.sh":"5c3fbe402ac611239ac7715a61f247d1c55fa012f33a5be0b0127dfc196965cf","ci/android-sysimage.sh":"901415631752827454c827e8c51906ba4260612e4021eda98eb7fff771c7d0e8","ci/docker/aarch64-linux-android/Dockerfile":"e17945fba1786dfe766006f50e79baf3f4151ca0c0c14ae96f91483bf345afd7","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"5f430271941e1eecdf9d1a5fb701dd5622e2c4b9da03140fd829bf216e55529d","ci/docker/aarch64-unknown-linux-musl/Dockerfile":"3e1cbf0fa728571b9be9769e5a6281c964fa5b26d586265117ccee017ca4022c","ci/docker/arm-linux-androideabi/Dockerfile":"4e0bdc13254f99bd0db195f91331c634050426e3e4a0fcc63ef25ab795fe2d46","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"dbb025b53b27e406893184290836a50133ecae8295711d5e05b4e41fac9bd262","ci/docker/arm-unknown-linux-musleabihf/Dockerfile":"7cb6e0f8fb91c97f142a9c827687bbbc1a5e7643a3081160025d0365593a596c","ci/docker/asmjs-unknown-emscripten/Dockerfile":"0d9aea5119c2cd136cc2c0a578105d91210e45901ac49b17c5e45f458b1c7551","ci/docker/i686-linux-android/Dockerfile":"4e8377ec0bd9ad2df23bf2c5373200a12750dc9f28c4f10bc83a0150fe1623ee","ci/docker/i686-unknown-linux-gnu/Dockerfile":"f22ac412525ef15b33ab8ccd8193d97346faf421c17f6ddeffc25b651aba83b7","ci/docker/i686-unknown-linux-musl/Dockerfile":"4ac86fe9e159d454616396a9f3f07ce0f5d99cc4b49898b8d2486e6bdbfed9e9","ci/docker/mips-unknown-linux-gnu/Dockerfile":"6d2a9daa299003497c1d441d07b69f730ad75ee49f34520f959b5158e60072e0","ci/docker/mips-unknown-linux-musl/Dockerfile":"4773b2656a7dd6a3b106fcb737428436652edf3d1f48181de3f62c16bf5bd49d","ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile":"7c4d26232f1c1553a6612d9b0b3faac9887e139eaffa025f70d34113dcee812f","ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile":"edb4144c07ade1a8bd65272ec1d3672ad794e9e6b7d01197896e159a70175b58","ci/docker/mipsel-unknown-linux-musl/Dockerfile":"0ca9c12b5618c6d2df04ff820d56fb28e05b43e45eaa506480126b03c5072d48","ci/docker/powerpc-unknown-linux-gnu/Dockerfile":"4b247dcc399395815ec9153c1247cc03d764896c484eddcb196d0bf8650d6311","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"e949717a8ba5e123940729ff47ce1c45989c8b8247c576f1488f698b534e0283","ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile":"018591017f499414a9f79477e1c39baa6a47f71fce6812fb1868fb0fcdfb8cea","ci/docker/s390x-unknown-linux-gnu/Dockerfile":"9860f478c5b2dc3bcf76d2cda7f71922a2a2ef54898cc2ed6ea9b9eff094a5c0","ci/docker/sparc64-unknown-linux-gnu/Dockerfile":"2312491343665d2ab36fd669f14766facbf3c7e9820ffb8f0d623830b676f8f0","ci/docker/wasm32-unknown-emscripten/Dockerfile":"bd072d6ae91a9160693e402dd77462d3c9dd0716711e719a62af330ae479eb4e","ci/docker/wasm32-unknown-emscripten/node-wrapper.sh":"0eef37c3c4fb16dbc083148b7e7af45f2ae60bd9a1b3a77e1d43da79efbd30c6","ci/docker/x86_64-linux-android/Dockerfile":"aeeaa540189ca712369c564c9a14cbace63217dadcfaf879a2cb40fbdeb08199","ci/docker/x86_64-rumprun-netbsd/Dockerfile":"e8f9287b267c6058eec42d1bca0007cb9a78a1d244dd8e11088368cb61fb17d6","ci/docker/x86_64-rumprun-netbsd/runtest.rs":"53302e9ed39293c1ec68ab56287593907d4aaf5bac9c1c2857b29f754a71d62b","ci/docker/x86_64-unknown-freebsd/Dockerfile":"ab1f14c65c29f3721c7c091bdec2e865fb1abf45fdcdc867201d087966e396c4","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"ab3fa45765802b8155996796fcad9fb82096360ac587e38e6faa3ec345268796","ci/docker/x86_64-unknown-linux-gnux32/Dockerfile":"f22ac412525ef15b33ab8ccd8193d97346faf421c17f6ddeffc25b651aba83b7","ci/docker/x86_64-unknown-linux-musl/Dockerfile":"e145784741473150473b1bef7cc3c2cf0c6339d4fc480113ac41b4247a9b38ec","ci/dox.sh":"d77171a9da467bb01fc702a28fc3b5099f82a485a627f3d5593a9830c3e1a77c","ci/emscripten-entry.sh":"c97bbec520b57af9b1ae264ca991560e99c3852c99b00a2f673c614d1ba17498","ci/emscripten.sh":"6f66c7b5c3d34a41afc59ceb0a8c3b0880cd6fd9a6344b874ae80bac0639ccb2","ci/ios/deploy_and_run_on_ios_simulator.rs":"3175066fd7f82390f6226d881e1a1dda9767ea2705656870e0d7774e2731800e","ci/landing-page-footer.html":"b70b3112c2147f5c967e7481061ef38bc2d79a28dd55a16fb916d9c9426da2c4","ci/landing-page-head.html":"ad69663fac7924f27d0209bc519d55838e86edfc4133713a6fd08caadac1b142","ci/linux-s390x.sh":"d6b732d7795b4ba131326aff893bca6228a7d2eb0e9402f135705413dbbe0dce","ci/linux-sparc64.sh":"c92966838b1ab7ad3b7a344833ee726aba6b647cf5952e56f0ad1ba420b13325","ci/run-docker.sh":"be83bc5a8b5ef913a7c9941ffca24734716028650c9a876123c4c160672c18de","ci/run-qemu.sh":"bb859421170871ef23a8940c5e150efec0c01b95e32d2ce2d37b79a45d9d346c","ci/run.sh":"25f8fd0a88d5673bb872dbb7aef8d44ebbf6c863e10352cd79de557ce3e2e252","ci/runtest-android.rs":"a07ddbdd276aedda7876c7e676774178a60d9aeab95df01275a4ee95f59e3044","ci/style.rs":"940c06a676cff1dfc1555b887e46867c6aacc473956cd6aaafaed71824facdb2","ci/test-runner-linux":"cb3713d9e4fa1d9a7c039dfd077af0939921c1f2bf969c9e680ee66e87dc30a4","src/cloudabi/aarch64.rs":"b8550bf1fd7344972aa4db29441486f39f31482d0327534981dbb75959c29114","src/cloudabi/arm.rs":"c197e2781c2839808bd6fcef219a29705b27b992d3ef920e9cf6ac96e2022bbf","src/cloudabi/mod.rs":"1c2dc787a1b3438970ccd04153c93538719b1a27445707913b90b6f0cdcdde77","src/cloudabi/x86.rs":"33eb97f272d2201f3838ae74d444583c7de8f67856852ca375293b20bbd05636","src/cloudabi/x86_64.rs":"400d85d4fe39e26cf2e6ece9ee31c75fe9e88c4bcf4d836ca9f765c05c9c5be3","src/dox.rs":"8f6037887281b828d8541ce8a549dacaed5d29c05fd9cf78b169838476b82741","src/fuchsia/aarch64.rs":"8366ac6f51e494aad9266ccab2b3a95c5ed7aa3a9f77ea672413283440919743","src/fuchsia/mod.rs":"56ee2333b856db94cc1f1f4350885ad2a4ed0e1b4e8792615aa0b257e2941192","src/fuchsia/powerpc64.rs":"390e8db54271a1d5f512d54a21b328091a792378bf9b42b49b6c1a72388da4ec","src/fuchsia/x86_64.rs":"b4a3eff94dcf1ffe41e6500468ca2cff0e97ddbcc75fe079b6ac7adb1e493f56","src/lib.rs":"e434d3def305ea28108b59841396ef8949333db9223aa11886ee05cd1c0ce8b0","src/macros.rs":"2e7048e266efdef4298254b7186a27736182c94adb0648aed0c8d735f66a5139","src/redox/mod.rs":"029a9af78211d86fe3108100c33f58d6e73ab09c826b641a9732325dc700d8e8","src/redox/net.rs":"0946ab864a2eeb20a365dc541c060f7a238c75356bb57de39956a486607f7ce1","src/unix/bsd/apple/b32.rs":"41699d2802327b0a4d4aa50cd20b1e366b442176cbedab27ca888ac0446c9156","src/unix/bsd/apple/b64.rs":"4fe7bf5de252dcd712dee0a7a8acfaa7c737c862eaa3ff669255d3f2076c5fa6","src/unix/bsd/apple/mod.rs":"3a423665ca29d73a4a29503f5f58277b7d19cb8df175c5f11666983880ef276f","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"1950bf56a7ecbfc8994e4b54dc94e752d91dccd8f0e2d1e4c2d3ad2fa8cb5e23","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"97132e2097411034271b8c927ecc94a208a361564680972a6c82998bd30a9826","src/unix/bsd/freebsdlike/freebsd/mod.rs":"e762bacf0b96295ae241717210323c7442d199d9863159ee73462954fc855e1d","src/unix/bsd/freebsdlike/freebsd/x86.rs":"54311d3ebf2bb091ab22361e377e6ef9224aec2ecfe459fbfcedde4932db9c58","src/unix/bsd/freebsdlike/freebsd/x86_64.rs":"97132e2097411034271b8c927ecc94a208a361564680972a6c82998bd30a9826","src/unix/bsd/freebsdlike/mod.rs":"d6096edda549bb2af16d083ee86561f5eb6bfa728d3cfac1938f0f84592bde5d","src/unix/bsd/mod.rs":"a1030452eed4ec52a39e9f39040e8fae4309143c7af145efadd9b425caa39672","src/unix/bsd/netbsdlike/mod.rs":"a685c1d23cb17758c3249b9c4ab45a50474e79270891235176b5f796f365380c","src/unix/bsd/netbsdlike/netbsd/mod.rs":"46a28912a4741e500f392131cc71273621de0234c4c28e29d8bf51c015ca7840","src/unix/bsd/netbsdlike/netbsd/other/b32/mod.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/netbsd/other/b64/mod.rs":"927eeccaf3269d299db4c2a55f8010807bf43dfa894aea6a783215f5d3560baa","src/unix/bsd/netbsdlike/netbsd/other/mod.rs":"4d9f7091af8e166943ac6f42ce85558909e5b6e61325039bff7adfbcf4b90212","src/unix/bsd/netbsdlike/openbsdlike/bitrig/mod.rs":"92459d80b8e5b570c0efe35a1d244d38f23072cd28b6581dfcb313dc9bfc3d51","src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86_64.rs":"927eeccaf3269d299db4c2a55f8010807bf43dfa894aea6a783215f5d3560baa","src/unix/bsd/netbsdlike/openbsdlike/mod.rs":"cec53623e2269aea4437554a405452e7d3b09648b7cf6872d257d36ba979e2ec","src/unix/bsd/netbsdlike/openbsdlike/openbsd/aarch64.rs":"820092e397c7ec259cd2de8f2444083a8e57071c02d73d678701dfa7807726e9","src/unix/bsd/netbsdlike/openbsdlike/openbsd/mod.rs":"44035aad2907dffb6b18687ac7ddc76b5268af92b4e4f4c87759a00cae4de900","src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86.rs":"44b7ea81cf363777b29935da175e702cbf45ed78f7498ae57faf44aa32335085","src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86_64.rs":"7c959cdb3415f68a0f948117b9aa87a17463e57ab97cc3235f2567454b706653","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"ddd834c5c4e5ec7771d0f0071517c2d00095d5595f87a52245380ac762f7f011","src/unix/mod.rs":"47d253eef3bc46dacb0df2951b2136e41c4e758ffd34473b144f6108a90749f9","src/unix/newlib/aarch64/mod.rs":"c408a990f22fb4292a824f38367e9b517e6e6f8623328397ee631cc88b3d1f7d","src/unix/newlib/arm/mod.rs":"2b6dba2e697ab9b4f4bc4dd5f28057249e9b596d1cb395a9322ec87605c4a5c4","src/unix/newlib/mod.rs":"7422845a44de13a2faf15d105670525ed090c6e200c9723178ed735810bbd689","src/unix/notbsd/android/b32/arm.rs":"3625a32c7e58cfe683a53486fbe3d42d4e28f00bea31e19cb46ed2bb0b6a140b","src/unix/notbsd/android/b32/mod.rs":"2fbe398c1fb5251dda6213741a193e50aae4622807cb255d1dd2e82b536f0c65","src/unix/notbsd/android/b32/x86.rs":"ae2b7f1d6278caddc007749bb1d09ca33f7593478a0fd7fe98b457dae86c7814","src/unix/notbsd/android/b64/aarch64.rs":"63d65629d79371814910f691672ef593d20244ee09be26f1ebe07ee6212d0163","src/unix/notbsd/android/b64/mod.rs":"90d4f6b063fd4de42fd302cbc9d9902fd99ac1d71dc48cb8bc6ad7b4c902e481","src/unix/notbsd/android/b64/x86_64.rs":"5547aef8dcbaa5a932559f34606fd8d89f6c9c15173d2b1412c12d39b3c1045f","src/unix/notbsd/android/mod.rs":"c83157cf4a74c653b877c4d42b565d4a7d31e46e32015f19fc91447df2489a58","src/unix/notbsd/emscripten.rs":"5beb9bc98b6b317e85f2935db2aad9ef9cb2ab2e881917064fa7adf944568dae","src/unix/notbsd/linux/mips/mips32.rs":"df3268b082962844c94733c58782ecd9386ffe1f5ed8e05a703a6fa1e80b8f7f","src/unix/notbsd/linux/mips/mips64.rs":"88ad72fa125b9a2c0bd98ef03a7f5ceff78a39b0628d0d0f997ac9b6b82fe16b","src/unix/notbsd/linux/mips/mod.rs":"32c3e7cf430575544bbe4a670cbbf2b4dbe1f28b4895feb6f43fa33d6da25e1d","src/unix/notbsd/linux/mod.rs":"d37bd8bd956b7ab3484b2ad3ee7c1848574bbd37027c76ac06f4d7ca2906cf01","src/unix/notbsd/linux/musl/b32/arm.rs":"d2998b13648696304bb34f0793715d821178baf8e88a45b532764a20b5294232","src/unix/notbsd/linux/musl/b32/mips.rs":"340be794362a4532d709ef23542b10762f710f7bfd0c4fafa5166a3fb9a15b4f","src/unix/notbsd/linux/musl/b32/mod.rs":"3cc7979546258a47df6b0fcd7ad64571826623671857633a7acafe87e05e56a1","src/unix/notbsd/linux/musl/b32/x86.rs":"df114102dcf35bc32f891d4a9e09ce02fbe4c096a196c6b98b10ff87b29dbe4d","src/unix/notbsd/linux/musl/b64/aarch64.rs":"12c590fde2a1450c08934234c4f5bcd94ee7b58ca21f8e93bc930148c15fb0b0","src/unix/notbsd/linux/musl/b64/mod.rs":"b1991ef46a00d2db7ce3e36f6596685c1d508786c4dd4e62cbbf65ac3c256cc0","src/unix/notbsd/linux/musl/b64/powerpc64.rs":"790dca3cc6c0a4166992d2c1665e1b1e320fbad5c0b1ba3c454321a6b2d7a103","src/unix/notbsd/linux/musl/b64/x86_64.rs":"bf8fc10a09bf700084db0381c484ddec3add79aa1726954cb14d21802ff7d199","src/unix/notbsd/linux/musl/mod.rs":"a9323bffa1a8ed40a67a3b2cbb1dec6ebb0d565d8308e43e8623101ac739cd60","src/unix/notbsd/linux/other/b32/arm.rs":"d9892f7350b2978335f734f1cd2d7fed60f0f2e66aa05bee3f69549c031f8b14","src/unix/notbsd/linux/other/b32/mod.rs":"7d77f1dd8327b1249769496351cf287d0fff3852f87bde2f58afc67e6dc54a4f","src/unix/notbsd/linux/other/b32/powerpc.rs":"253fcd2f9978525285be1903cc08f3fec2dc3b12d1660a33e2995b4f6b810d1c","src/unix/notbsd/linux/other/b32/x86.rs":"49376e3ed0f3ff95c230ac20751911fe3c608dfe15c7c118b069fd7a954d8db9","src/unix/notbsd/linux/other/b64/aarch64.rs":"ed6ea00e3281ad2f4bab82821f20a2ff5b48401a65618bd6a544bc24ea4e3e39","src/unix/notbsd/linux/other/b64/mod.rs":"63e1a3fdf5f4d1b9820934ab344c91aed5e458e7e05908535d2e942d51a08bf8","src/unix/notbsd/linux/other/b64/not_x32.rs":"9b5e2321c0114c2740dcb86d9f1f3584c07ded921a157164ae8bb0712d397818","src/unix/notbsd/linux/other/b64/powerpc64.rs":"ca25b5f94a9147a984fcb70cf48a261b30df14e2e8194ac174363b6280e82a29","src/unix/notbsd/linux/other/b64/sparc64.rs":"a84580fe226654e33f8ddd0f1f7f2069c29334fc826a74f81f7892b87cfb9083","src/unix/notbsd/linux/other/b64/x32.rs":"ae7698b217106a6c00465f9d10df24d45ad9b7dfc280b24168f53f42198b7b92","src/unix/notbsd/linux/other/b64/x86_64.rs":"afba464e903d350325a1ca3d9d5af1659efc0ede83a43dbac4dbd60c522e2ad1","src/unix/notbsd/linux/other/mod.rs":"7065a7e83834f38ee2f4e03f28824eb94111c13f10e7a8b76ee7025686a84e7f","src/unix/notbsd/linux/s390x.rs":"259c5533ba7f0b10bb23d01dc0e53301afd236a7bb4339dcef9472c579503729","src/unix/notbsd/mod.rs":"eff4c19451d4d4579d5c483a941a7b259b7b73c3ab13c31fc54a7961e8292b9a","src/unix/solaris/mod.rs":"9c6af198a2f80da827054784faf70bc404673d9568fb45664b4f73c46245fdbd","src/unix/uclibc/mips/mips32.rs":"4dcb19abae37f02f08660bdad500c3230436322b581eba37287c73a742d6fcdc","src/unix/uclibc/mips/mips64.rs":"e67eec1636a998b047d89a4cda1c99cb6bc3071db017762675179a68201c4438","src/unix/uclibc/mips/mod.rs":"3f86061d05a8da7d923310550b7d40c6223f0c907d77edc86b7a78da1d647f76","src/unix/uclibc/mod.rs":"3605127517734b5f5f20be1d37e52184a77ecc6fb6099b88aa744e0aca1b802a","src/unix/uclibc/x86_64/l4re.rs":"68fd3a833fd1f7caf784a084224f384bdbdfb8b5a14ef94c4f5155409afb3439","src/unix/uclibc/x86_64/mod.rs":"69ec3ca821a483cc076e84a794bbecb3e5536af1c1d5b807eaf1db9af11f771d","src/unix/uclibc/x86_64/other.rs":"f03b47842896f2f3ae6f8ebdcbcf0276454f880349d9cf00e3d304f8136893c5","src/windows.rs":"e41357d610608bad81abf285306ad8b127b6f02d5132f63c4942861980b47d59"},"package":"b685088df2b950fccadf07a7187c8ef846a959c142338a48f9dc0b94517eb5f1"}
\ No newline at end of file
-+{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".gitignore":"7150ee9391a955b2ef7e0762fc61c0c1aab167620ca36d88d78062d93b8334ba",".travis.yml":"9750910d5fdc61263fb3eae7f5f78e2920923f250150f8500c0c22a830790acd","Cargo.toml":"4629bf1256274045a39aedc78a7f6b48b5bf7fdf177cd69c4eb65909586ab0cf","Cargo.toml.orig":"423b6276994f73cf7fc57dafad118ff8b0e207eb55ebe57a0ee1a149bf36f544","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"fdf0f0c197e2999fce42457fb089f192a42d2fb1f743c9c8fcda1a44cb40e1fa","appveyor.yml":"216f7ac4561aa5810dc84ce5a9950897a8c0496e0615d0211d62348b1c8dc720","ci/README.md":"2e3d7ad13f8c3202e57d2af73aeeebde306221dce7c0907e462e25767a692d6b","ci/android-install-ndk.sh":"725db9025c5905849916bf7c910f98ff0e753484397c2a1f836d48a576d10890","ci/android-install-sdk.sh":"5c3fbe402ac611239ac7715a61f247d1c55fa012f33a5be0b0127dfc196965cf","ci/android-sysimage.sh":"901415631752827454c827e8c51906ba4260612e4021eda98eb7fff771c7d0e8","ci/docker/aarch64-linux-android/Dockerfile":"e17945fba1786dfe766006f50e79baf3f4151ca0c0c14ae96f91483bf345afd7","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"5f430271941e1eecdf9d1a5fb701dd5622e2c4b9da03140fd829bf216e55529d","ci/docker/aarch64-unknown-linux-musl/Dockerfile":"3e1cbf0fa728571b9be9769e5a6281c964fa5b26d586265117ccee017ca4022c","ci/docker/arm-linux-androideabi/Dockerfile":"4e0bdc13254f99bd0db195f91331c634050426e3e4a0fcc63ef25ab795fe2d46","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"dbb025b53b27e406893184290836a50133ecae8295711d5e05b4e41fac9bd262","ci/docker/arm-unknown-linux-musleabihf/Dockerfile":"7cb6e0f8fb91c97f142a9c827687bbbc1a5e7643a3081160025d0365593a596c","ci/docker/asmjs-unknown-emscripten/Dockerfile":"0d9aea5119c2cd136cc2c0a578105d91210e45901ac49b17c5e45f458b1c7551","ci/docker/i686-linux-android/Dockerfile":"4e8377ec0bd9ad2df23bf2c5373200a12750dc9f28c4f10bc83a0150fe1623ee","ci/docker/i686-unknown-linux-gnu/Dockerfile":"f22ac412525ef15b33ab8ccd8193d97346faf421c17f6ddeffc25b651aba83b7","ci/docker/i686-unknown-linux-musl/Dockerfile":"4ac86fe9e159d454616396a9f3f07ce0f5d99cc4b49898b8d2486e6bdbfed9e9","ci/docker/mips-unknown-linux-gnu/Dockerfile":"6d2a9daa299003497c1d441d07b69f730ad75ee49f34520f959b5158e60072e0","ci/docker/mips-unknown-linux-musl/Dockerfile":"4773b2656a7dd6a3b106fcb737428436652edf3d1f48181de3f62c16bf5bd49d","ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile":"7c4d26232f1c1553a6612d9b0b3faac9887e139eaffa025f70d34113dcee812f","ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile":"edb4144c07ade1a8bd65272ec1d3672ad794e9e6b7d01197896e159a70175b58","ci/docker/mipsel-unknown-linux-musl/Dockerfile":"0ca9c12b5618c6d2df04ff820d56fb28e05b43e45eaa506480126b03c5072d48","ci/docker/powerpc-unknown-linux-gnu/Dockerfile":"4b247dcc399395815ec9153c1247cc03d764896c484eddcb196d0bf8650d6311","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"e949717a8ba5e123940729ff47ce1c45989c8b8247c576f1488f698b534e0283","ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile":"018591017f499414a9f79477e1c39baa6a47f71fce6812fb1868fb0fcdfb8cea","ci/docker/s390x-unknown-linux-gnu/Dockerfile":"9860f478c5b2dc3bcf76d2cda7f71922a2a2ef54898cc2ed6ea9b9eff094a5c0","ci/docker/sparc64-unknown-linux-gnu/Dockerfile":"2312491343665d2ab36fd669f14766facbf3c7e9820ffb8f0d623830b676f8f0","ci/docker/wasm32-unknown-emscripten/Dockerfile":"bd072d6ae91a9160693e402dd77462d3c9dd0716711e719a62af330ae479eb4e","ci/docker/wasm32-unknown-emscripten/node-wrapper.sh":"0eef37c3c4fb16dbc083148b7e7af45f2ae60bd9a1b3a77e1d43da79efbd30c6","ci/docker/x86_64-linux-android/Dockerfile":"aeeaa540189ca712369c564c9a14cbace63217dadcfaf879a2cb40fbdeb08199","ci/docker/x86_64-rumprun-netbsd/Dockerfile":"e8f9287b267c6058eec42d1bca0007cb9a78a1d244dd8e11088368cb61fb17d6","ci/docker/x86_64-rumprun-netbsd/runtest.rs":"53302e9ed39293c1ec68ab56287593907d4aaf5bac9c1c2857b29f754a71d62b","ci/docker/x86_64-unknown-freebsd/Dockerfile":"ab1f14c65c29f3721c7c091bdec2e865fb1abf45fdcdc867201d087966e396c4","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"ab3fa45765802b8155996796fcad9fb82096360ac587e38e6faa3ec345268796","ci/docker/x86_64-unknown-linux-gnux32/Dockerfile":"f22ac412525ef15b33ab8ccd8193d97346faf421c17f6ddeffc25b651aba83b7","ci/docker/x86_64-unknown-linux-musl/Dockerfile":"e145784741473150473b1bef7cc3c2cf0c6339d4fc480113ac41b4247a9b38ec","ci/dox.sh":"d77171a9da467bb01fc702a28fc3b5099f82a485a627f3d5593a9830c3e1a77c","ci/emscripten-entry.sh":"c97bbec520b57af9b1ae264ca991560e99c3852c99b00a2f673c614d1ba17498","ci/emscripten.sh":"6f66c7b5c3d34a41afc59ceb0a8c3b0880cd6fd9a6344b874ae80bac0639ccb2","ci/ios/deploy_and_run_on_ios_simulator.rs":"3175066fd7f82390f6226d881e1a1dda9767ea2705656870e0d7774e2731800e","ci/landing-page-footer.html":"b70b3112c2147f5c967e7481061ef38bc2d79a28dd55a16fb916d9c9426da2c4","ci/landing-page-head.html":"ad69663fac7924f27d0209bc519d55838e86edfc4133713a6fd08caadac1b142","ci/linux-s390x.sh":"d6b732d7795b4ba131326aff893bca6228a7d2eb0e9402f135705413dbbe0dce","ci/linux-sparc64.sh":"c92966838b1ab7ad3b7a344833ee726aba6b647cf5952e56f0ad1ba420b13325","ci/run-docker.sh":"be83bc5a8b5ef913a7c9941ffca24734716028650c9a876123c4c160672c18de","ci/run-qemu.sh":"bb859421170871ef23a8940c5e150efec0c01b95e32d2ce2d37b79a45d9d346c","ci/run.sh":"25f8fd0a88d5673bb872dbb7aef8d44ebbf6c863e10352cd79de557ce3e2e252","ci/runtest-android.rs":"a07ddbdd276aedda7876c7e676774178a60d9aeab95df01275a4ee95f59e3044","ci/style.rs":"940c06a676cff1dfc1555b887e46867c6aacc473956cd6aaafaed71824facdb2","ci/test-runner-linux":"cb3713d9e4fa1d9a7c039dfd077af0939921c1f2bf969c9e680ee66e87dc30a4","src/cloudabi/aarch64.rs":"b8550bf1fd7344972aa4db29441486f39f31482d0327534981dbb75959c29114","src/cloudabi/arm.rs":"c197e2781c2839808bd6fcef219a29705b27b992d3ef920e9cf6ac96e2022bbf","src/cloudabi/mod.rs":"1c2dc787a1b3438970ccd04153c93538719b1a27445707913b90b6f0cdcdde77","src/cloudabi/x86.rs":"33eb97f272d2201f3838ae74d444583c7de8f67856852ca375293b20bbd05636","src/cloudabi/x86_64.rs":"400d85d4fe39e26cf2e6ece9ee31c75fe9e88c4bcf4d836ca9f765c05c9c5be3","src/dox.rs":"8f6037887281b828d8541ce8a549dacaed5d29c05fd9cf78b169838476b82741","src/fuchsia/aarch64.rs":"8366ac6f51e494aad9266ccab2b3a95c5ed7aa3a9f77ea672413283440919743","src/fuchsia/mod.rs":"56ee2333b856db94cc1f1f4350885ad2a4ed0e1b4e8792615aa0b257e2941192","src/fuchsia/powerpc64.rs":"390e8db54271a1d5f512d54a21b328091a792378bf9b42b49b6c1a72388da4ec","src/fuchsia/x86_64.rs":"b4a3eff94dcf1ffe41e6500468ca2cff0e97ddbcc75fe079b6ac7adb1e493f56","src/lib.rs":"e434d3def305ea28108b59841396ef8949333db9223aa11886ee05cd1c0ce8b0","src/macros.rs":"2e7048e266efdef4298254b7186a27736182c94adb0648aed0c8d735f66a5139","src/redox/mod.rs":"029a9af78211d86fe3108100c33f58d6e73ab09c826b641a9732325dc700d8e8","src/redox/net.rs":"0946ab864a2eeb20a365dc541c060f7a238c75356bb57de39956a486607f7ce1","src/unix/bsd/apple/b32.rs":"41699d2802327b0a4d4aa50cd20b1e366b442176cbedab27ca888ac0446c9156","src/unix/bsd/apple/b64.rs":"4fe7bf5de252dcd712dee0a7a8acfaa7c737c862eaa3ff669255d3f2076c5fa6","src/unix/bsd/apple/mod.rs":"3a423665ca29d73a4a29503f5f58277b7d19cb8df175c5f11666983880ef276f","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"1950bf56a7ecbfc8994e4b54dc94e752d91dccd8f0e2d1e4c2d3ad2fa8cb5e23","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"97132e2097411034271b8c927ecc94a208a361564680972a6c82998bd30a9826","src/unix/bsd/freebsdlike/freebsd/mod.rs":"e762bacf0b96295ae241717210323c7442d199d9863159ee73462954fc855e1d","src/unix/bsd/freebsdlike/freebsd/x86.rs":"54311d3ebf2bb091ab22361e377e6ef9224aec2ecfe459fbfcedde4932db9c58","src/unix/bsd/freebsdlike/freebsd/x86_64.rs":"97132e2097411034271b8c927ecc94a208a361564680972a6c82998bd30a9826","src/unix/bsd/freebsdlike/mod.rs":"d6096edda549bb2af16d083ee86561f5eb6bfa728d3cfac1938f0f84592bde5d","src/unix/bsd/mod.rs":"a1030452eed4ec52a39e9f39040e8fae4309143c7af145efadd9b425caa39672","src/unix/bsd/netbsdlike/mod.rs":"a685c1d23cb17758c3249b9c4ab45a50474e79270891235176b5f796f365380c","src/unix/bsd/netbsdlike/netbsd/mod.rs":"46a28912a4741e500f392131cc71273621de0234c4c28e29d8bf51c015ca7840","src/unix/bsd/netbsdlike/netbsd/other/b32/mod.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/netbsd/other/b64/mod.rs":"927eeccaf3269d299db4c2a55f8010807bf43dfa894aea6a783215f5d3560baa","src/unix/bsd/netbsdlike/netbsd/other/mod.rs":"4d9f7091af8e166943ac6f42ce85558909e5b6e61325039bff7adfbcf4b90212","src/unix/bsd/netbsdlike/openbsdlike/bitrig/mod.rs":"92459d80b8e5b570c0efe35a1d244d38f23072cd28b6581dfcb313dc9bfc3d51","src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86_64.rs":"927eeccaf3269d299db4c2a55f8010807bf43dfa894aea6a783215f5d3560baa","src/unix/bsd/netbsdlike/openbsdlike/mod.rs":"cec53623e2269aea4437554a405452e7d3b09648b7cf6872d257d36ba979e2ec","src/unix/bsd/netbsdlike/openbsdlike/openbsd/aarch64.rs":"820092e397c7ec259cd2de8f2444083a8e57071c02d73d678701dfa7807726e9","src/unix/bsd/netbsdlike/openbsdlike/openbsd/mod.rs":"44035aad2907dffb6b18687ac7ddc76b5268af92b4e4f4c87759a00cae4de900","src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86.rs":"44b7ea81cf363777b29935da175e702cbf45ed78f7498ae57faf44aa32335085","src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86_64.rs":"7c959cdb3415f68a0f948117b9aa87a17463e57ab97cc3235f2567454b706653","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"ddd834c5c4e5ec7771d0f0071517c2d00095d5595f87a52245380ac762f7f011","src/unix/mod.rs":"47d253eef3bc46dacb0df2951b2136e41c4e758ffd34473b144f6108a90749f9","src/unix/newlib/aarch64/mod.rs":"c408a990f22fb4292a824f38367e9b517e6e6f8623328397ee631cc88b3d1f7d","src/unix/newlib/arm/mod.rs":"2b6dba2e697ab9b4f4bc4dd5f28057249e9b596d1cb395a9322ec87605c4a5c4","src/unix/newlib/mod.rs":"7422845a44de13a2faf15d105670525ed090c6e200c9723178ed735810bbd689","src/unix/notbsd/android/b32/arm.rs":"3625a32c7e58cfe683a53486fbe3d42d4e28f00bea31e19cb46ed2bb0b6a140b","src/unix/notbsd/android/b32/mod.rs":"2fbe398c1fb5251dda6213741a193e50aae4622807cb255d1dd2e82b536f0c65","src/unix/notbsd/android/b32/x86.rs":"ae2b7f1d6278caddc007749bb1d09ca33f7593478a0fd7fe98b457dae86c7814","src/unix/notbsd/android/b64/aarch64.rs":"63d65629d79371814910f691672ef593d20244ee09be26f1ebe07ee6212d0163","src/unix/notbsd/android/b64/mod.rs":"90d4f6b063fd4de42fd302cbc9d9902fd99ac1d71dc48cb8bc6ad7b4c902e481","src/unix/notbsd/android/b64/x86_64.rs":"5547aef8dcbaa5a932559f34606fd8d89f6c9c15173d2b1412c12d39b3c1045f","src/unix/notbsd/android/mod.rs":"c83157cf4a74c653b877c4d42b565d4a7d31e46e32015f19fc91447df2489a58","src/unix/notbsd/emscripten.rs":"5beb9bc98b6b317e85f2935db2aad9ef9cb2ab2e881917064fa7adf944568dae","src/unix/notbsd/linux/mips/mips32.rs":"df3268b082962844c94733c58782ecd9386ffe1f5ed8e05a703a6fa1e80b8f7f","src/unix/notbsd/linux/mips/mips64.rs":"88ad72fa125b9a2c0bd98ef03a7f5ceff78a39b0628d0d0f997ac9b6b82fe16b","src/unix/notbsd/linux/mips/mod.rs":"32c3e7cf430575544bbe4a670cbbf2b4dbe1f28b4895feb6f43fa33d6da25e1d","src/unix/notbsd/linux/mod.rs":"d37bd8bd956b7ab3484b2ad3ee7c1848574bbd37027c76ac06f4d7ca2906cf01","src/unix/notbsd/linux/musl/b32/arm.rs":"d2998b13648696304bb34f0793715d821178baf8e88a45b532764a20b5294232","src/unix/notbsd/linux/musl/b32/mips.rs":"340be794362a4532d709ef23542b10762f710f7bfd0c4fafa5166a3fb9a15b4f","src/unix/notbsd/linux/musl/b32/mod.rs":"026476800c0f02be1221b9623632ceb8c4f3c423c5a9024cbe41f5647844cbf8","src/unix/notbsd/linux/musl/b32/x86.rs":"df114102dcf35bc32f891d4a9e09ce02fbe4c096a196c6b98b10ff87b29dbe4d","src/unix/notbsd/linux/musl/b64/aarch64.rs":"4d79d86d11fbb8cb7a74084e410a1140e3c89dfc1842cdfb213f3a0ca93046df","src/unix/notbsd/linux/musl/b64/mod.rs":"caac00326693b372d6805e4dda239475e7fef36368881f372c006264844fda0d","src/unix/notbsd/linux/musl/b64/powerpc64.rs":"24514e41be4b5f5e0ffbe8a25a99dae8989489b607db59e8bfa345f8e65c9963","src/unix/notbsd/linux/musl/b64/x86_64.rs":"25340999290a63d564ec149532c905f59c312ec369f8806d6b15df66fa1b8857","src/unix/notbsd/linux/musl/mod.rs":"f89154d5225ad8c93d1890d0bbf2855af2ec0e93c2c1b9cbf02f35561c2b7c16","src/unix/notbsd/linux/other/b32/arm.rs":"d9892f7350b2978335f734f1cd2d7fed60f0f2e66aa05bee3f69549c031f8b14","src/unix/notbsd/linux/other/b32/mod.rs":"7d77f1dd8327b1249769496351cf287d0fff3852f87bde2f58afc67e6dc54a4f","src/unix/notbsd/linux/other/b32/powerpc.rs":"253fcd2f9978525285be1903cc08f3fec2dc3b12d1660a33e2995b4f6b810d1c","src/unix/notbsd/linux/other/b32/x86.rs":"49376e3ed0f3ff95c230ac20751911fe3c608dfe15c7c118b069fd7a954d8db9","src/unix/notbsd/linux/other/b64/aarch64.rs":"ed6ea00e3281ad2f4bab82821f20a2ff5b48401a65618bd6a544bc24ea4e3e39","src/unix/notbsd/linux/other/b64/mod.rs":"63e1a3fdf5f4d1b9820934ab344c91aed5e458e7e05908535d2e942d51a08bf8","src/unix/notbsd/linux/other/b64/not_x32.rs":"9b5e2321c0114c2740dcb86d9f1f3584c07ded921a157164ae8bb0712d397818","src/unix/notbsd/linux/other/b64/powerpc64.rs":"ca25b5f94a9147a984fcb70cf48a261b30df14e2e8194ac174363b6280e82a29","src/unix/notbsd/linux/other/b64/sparc64.rs":"a84580fe226654e33f8ddd0f1f7f2069c29334fc826a74f81f7892b87cfb9083","src/unix/notbsd/linux/other/b64/x32.rs":"ae7698b217106a6c00465f9d10df24d45ad9b7dfc280b24168f53f42198b7b92","src/unix/notbsd/linux/other/b64/x86_64.rs":"afba464e903d350325a1ca3d9d5af1659efc0ede83a43dbac4dbd60c522e2ad1","src/unix/notbsd/linux/other/mod.rs":"7065a7e83834f38ee2f4e03f28824eb94111c13f10e7a8b76ee7025686a84e7f","src/unix/notbsd/linux/s390x.rs":"259c5533ba7f0b10bb23d01dc0e53301afd236a7bb4339dcef9472c579503729","src/unix/notbsd/mod.rs":"eff4c19451d4d4579d5c483a941a7b259b7b73c3ab13c31fc54a7961e8292b9a","src/unix/solaris/mod.rs":"9c6af198a2f80da827054784faf70bc404673d9568fb45664b4f73c46245fdbd","src/unix/uclibc/mips/mips32.rs":"4dcb19abae37f02f08660bdad500c3230436322b581eba37287c73a742d6fcdc","src/unix/uclibc/mips/mips64.rs":"e67eec1636a998b047d89a4cda1c99cb6bc3071db017762675179a68201c4438","src/unix/uclibc/mips/mod.rs":"3f86061d05a8da7d923310550b7d40c6223f0c907d77edc86b7a78da1d647f76","src/unix/uclibc/mod.rs":"3605127517734b5f5f20be1d37e52184a77ecc6fb6099b88aa744e0aca1b802a","src/unix/uclibc/x86_64/l4re.rs":"68fd3a833fd1f7caf784a084224f384bdbdfb8b5a14ef94c4f5155409afb3439","src/unix/uclibc/x86_64/mod.rs":"69ec3ca821a483cc076e84a794bbecb3e5536af1c1d5b807eaf1db9af11f771d","src/unix/uclibc/x86_64/other.rs":"f03b47842896f2f3ae6f8ebdcbcf0276454f880349d9cf00e3d304f8136893c5","src/windows.rs":"e41357d610608bad81abf285306ad8b127b6f02d5132f63c4942861980b47d59"},"package":"b685088df2b950fccadf07a7187c8ef846a959c142338a48f9dc0b94517eb5f1"}
++{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".gitignore":"7150ee9391a955b2ef7e0762fc61c0c1aab167620ca36d88d78062d93b8334ba",".travis.yml":"9750910d5fdc61263fb3eae7f5f78e2920923f250150f8500c0c22a830790acd","Cargo.toml":"4629bf1256274045a39aedc78a7f6b48b5bf7fdf177cd69c4eb65909586ab0cf","Cargo.toml.orig":"423b6276994f73cf7fc57dafad118ff8b0e207eb55ebe57a0ee1a149bf36f544","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"fdf0f0c197e2999fce42457fb089f192a42d2fb1f743c9c8fcda1a44cb40e1fa","appveyor.yml":"216f7ac4561aa5810dc84ce5a9950897a8c0496e0615d0211d62348b1c8dc720","ci/README.md":"2e3d7ad13f8c3202e57d2af73aeeebde306221dce7c0907e462e25767a692d6b","ci/android-install-ndk.sh":"725db9025c5905849916bf7c910f98ff0e753484397c2a1f836d48a576d10890","ci/android-install-sdk.sh":"5c3fbe402ac611239ac7715a61f247d1c55fa012f33a5be0b0127dfc196965cf","ci/android-sysimage.sh":"901415631752827454c827e8c51906ba4260612e4021eda98eb7fff771c7d0e8","ci/docker/aarch64-linux-android/Dockerfile":"e17945fba1786dfe766006f50e79baf3f4151ca0c0c14ae96f91483bf345afd7","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"5f430271941e1eecdf9d1a5fb701dd5622e2c4b9da03140fd829bf216e55529d","ci/docker/aarch64-unknown-linux-musl/Dockerfile":"3e1cbf0fa728571b9be9769e5a6281c964fa5b26d586265117ccee017ca4022c","ci/docker/arm-linux-androideabi/Dockerfile":"4e0bdc13254f99bd0db195f91331c634050426e3e4a0fcc63ef25ab795fe2d46","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"dbb025b53b27e406893184290836a50133ecae8295711d5e05b4e41fac9bd262","ci/docker/arm-unknown-linux-musleabihf/Dockerfile":"7cb6e0f8fb91c97f142a9c827687bbbc1a5e7643a3081160025d0365593a596c","ci/docker/asmjs-unknown-emscripten/Dockerfile":"0d9aea5119c2cd136cc2c0a578105d91210e45901ac49b17c5e45f458b1c7551","ci/docker/i686-linux-android/Dockerfile":"4e8377ec0bd9ad2df23bf2c5373200a12750dc9f28c4f10bc83a0150fe1623ee","ci/docker/i686-unknown-linux-gnu/Dockerfile":"f22ac412525ef15b33ab8ccd8193d97346faf421c17f6ddeffc25b651aba83b7","ci/docker/i686-unknown-linux-musl/Dockerfile":"4ac86fe9e159d454616396a9f3f07ce0f5d99cc4b49898b8d2486e6bdbfed9e9","ci/docker/mips-unknown-linux-gnu/Dockerfile":"6d2a9daa299003497c1d441d07b69f730ad75ee49f34520f959b5158e60072e0","ci/docker/mips-unknown-linux-musl/Dockerfile":"4773b2656a7dd6a3b106fcb737428436652edf3d1f48181de3f62c16bf5bd49d","ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile":"7c4d26232f1c1553a6612d9b0b3faac9887e139eaffa025f70d34113dcee812f","ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile":"edb4144c07ade1a8bd65272ec1d3672ad794e9e6b7d01197896e159a70175b58","ci/docker/mipsel-unknown-linux-musl/Dockerfile":"0ca9c12b5618c6d2df04ff820d56fb28e05b43e45eaa506480126b03c5072d48","ci/docker/powerpc-unknown-linux-gnu/Dockerfile":"4b247dcc399395815ec9153c1247cc03d764896c484eddcb196d0bf8650d6311","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"e949717a8ba5e123940729ff47ce1c45989c8b8247c576f1488f698b534e0283","ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile":"018591017f499414a9f79477e1c39baa6a47f71fce6812fb1868fb0fcdfb8cea","ci/docker/s390x-unknown-linux-gnu/Dockerfile":"9860f478c5b2dc3bcf76d2cda7f71922a2a2ef54898cc2ed6ea9b9eff094a5c0","ci/docker/sparc64-unknown-linux-gnu/Dockerfile":"2312491343665d2ab36fd669f14766facbf3c7e9820ffb8f0d623830b676f8f0","ci/docker/wasm32-unknown-emscripten/Dockerfile":"bd072d6ae91a9160693e402dd77462d3c9dd0716711e719a62af330ae479eb4e","ci/docker/wasm32-unknown-emscripten/node-wrapper.sh":"0eef37c3c4fb16dbc083148b7e7af45f2ae60bd9a1b3a77e1d43da79efbd30c6","ci/docker/x86_64-linux-android/Dockerfile":"aeeaa540189ca712369c564c9a14cbace63217dadcfaf879a2cb40fbdeb08199","ci/docker/x86_64-rumprun-netbsd/Dockerfile":"e8f9287b267c6058eec42d1bca0007cb9a78a1d244dd8e11088368cb61fb17d6","ci/docker/x86_64-rumprun-netbsd/runtest.rs":"53302e9ed39293c1ec68ab56287593907d4aaf5bac9c1c2857b29f754a71d62b","ci/docker/x86_64-unknown-freebsd/Dockerfile":"ab1f14c65c29f3721c7c091bdec2e865fb1abf45fdcdc867201d087966e396c4","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"ab3fa45765802b8155996796fcad9fb82096360ac587e38e6faa3ec345268796","ci/docker/x86_64-unknown-linux-gnux32/Dockerfile":"f22ac412525ef15b33ab8ccd8193d97346faf421c17f6ddeffc25b651aba83b7","ci/docker/x86_64-unknown-linux-musl/Dockerfile":"e145784741473150473b1bef7cc3c2cf0c6339d4fc480113ac41b4247a9b38ec","ci/dox.sh":"d77171a9da467bb01fc702a28fc3b5099f82a485a627f3d5593a9830c3e1a77c","ci/emscripten-entry.sh":"c97bbec520b57af9b1ae264ca991560e99c3852c99b00a2f673c614d1ba17498","ci/emscripten.sh":"6f66c7b5c3d34a41afc59ceb0a8c3b0880cd6fd9a6344b874ae80bac0639ccb2","ci/ios/deploy_and_run_on_ios_simulator.rs":"3175066fd7f82390f6226d881e1a1dda9767ea2705656870e0d7774e2731800e","ci/landing-page-footer.html":"b70b3112c2147f5c967e7481061ef38bc2d79a28dd55a16fb916d9c9426da2c4","ci/landing-page-head.html":"ad69663fac7924f27d0209bc519d55838e86edfc4133713a6fd08caadac1b142","ci/linux-s390x.sh":"d6b732d7795b4ba131326aff893bca6228a7d2eb0e9402f135705413dbbe0dce","ci/linux-sparc64.sh":"c92966838b1ab7ad3b7a344833ee726aba6b647cf5952e56f0ad1ba420b13325","ci/run-docker.sh":"be83bc5a8b5ef913a7c9941ffca24734716028650c9a876123c4c160672c18de","ci/run-qemu.sh":"bb859421170871ef23a8940c5e150efec0c01b95e32d2ce2d37b79a45d9d346c","ci/run.sh":"25f8fd0a88d5673bb872dbb7aef8d44ebbf6c863e10352cd79de557ce3e2e252","ci/runtest-android.rs":"a07ddbdd276aedda7876c7e676774178a60d9aeab95df01275a4ee95f59e3044","ci/style.rs":"940c06a676cff1dfc1555b887e46867c6aacc473956cd6aaafaed71824facdb2","ci/test-runner-linux":"cb3713d9e4fa1d9a7c039dfd077af0939921c1f2bf969c9e680ee66e87dc30a4","src/cloudabi/aarch64.rs":"b8550bf1fd7344972aa4db29441486f39f31482d0327534981dbb75959c29114","src/cloudabi/arm.rs":"c197e2781c2839808bd6fcef219a29705b27b992d3ef920e9cf6ac96e2022bbf","src/cloudabi/mod.rs":"1c2dc787a1b3438970ccd04153c93538719b1a27445707913b90b6f0cdcdde77","src/cloudabi/x86.rs":"33eb97f272d2201f3838ae74d444583c7de8f67856852ca375293b20bbd05636","src/cloudabi/x86_64.rs":"400d85d4fe39e26cf2e6ece9ee31c75fe9e88c4bcf4d836ca9f765c05c9c5be3","src/dox.rs":"8f6037887281b828d8541ce8a549dacaed5d29c05fd9cf78b169838476b82741","src/fuchsia/aarch64.rs":"8366ac6f51e494aad9266ccab2b3a95c5ed7aa3a9f77ea672413283440919743","src/fuchsia/mod.rs":"56ee2333b856db94cc1f1f4350885ad2a4ed0e1b4e8792615aa0b257e2941192","src/fuchsia/powerpc64.rs":"390e8db54271a1d5f512d54a21b328091a792378bf9b42b49b6c1a72388da4ec","src/fuchsia/x86_64.rs":"b4a3eff94dcf1ffe41e6500468ca2cff0e97ddbcc75fe079b6ac7adb1e493f56","src/lib.rs":"e434d3def305ea28108b59841396ef8949333db9223aa11886ee05cd1c0ce8b0","src/macros.rs":"2e7048e266efdef4298254b7186a27736182c94adb0648aed0c8d735f66a5139","src/redox/mod.rs":"029a9af78211d86fe3108100c33f58d6e73ab09c826b641a9732325dc700d8e8","src/redox/net.rs":"0946ab864a2eeb20a365dc541c060f7a238c75356bb57de39956a486607f7ce1","src/unix/bsd/apple/b32.rs":"41699d2802327b0a4d4aa50cd20b1e366b442176cbedab27ca888ac0446c9156","src/unix/bsd/apple/b64.rs":"4fe7bf5de252dcd712dee0a7a8acfaa7c737c862eaa3ff669255d3f2076c5fa6","src/unix/bsd/apple/mod.rs":"3a423665ca29d73a4a29503f5f58277b7d19cb8df175c5f11666983880ef276f","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"1950bf56a7ecbfc8994e4b54dc94e752d91dccd8f0e2d1e4c2d3ad2fa8cb5e23","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"97132e2097411034271b8c927ecc94a208a361564680972a6c82998bd30a9826","src/unix/bsd/freebsdlike/freebsd/mod.rs":"e762bacf0b96295ae241717210323c7442d199d9863159ee73462954fc855e1d","src/unix/bsd/freebsdlike/freebsd/x86.rs":"54311d3ebf2bb091ab22361e377e6ef9224aec2ecfe459fbfcedde4932db9c58","src/unix/bsd/freebsdlike/freebsd/x86_64.rs":"97132e2097411034271b8c927ecc94a208a361564680972a6c82998bd30a9826","src/unix/bsd/freebsdlike/mod.rs":"d6096edda549bb2af16d083ee86561f5eb6bfa728d3cfac1938f0f84592bde5d","src/unix/bsd/mod.rs":"a1030452eed4ec52a39e9f39040e8fae4309143c7af145efadd9b425caa39672","src/unix/bsd/netbsdlike/mod.rs":"a685c1d23cb17758c3249b9c4ab45a50474e79270891235176b5f796f365380c","src/unix/bsd/netbsdlike/netbsd/mod.rs":"46a28912a4741e500f392131cc71273621de0234c4c28e29d8bf51c015ca7840","src/unix/bsd/netbsdlike/netbsd/other/b32/mod.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/netbsd/other/b64/mod.rs":"927eeccaf3269d299db4c2a55f8010807bf43dfa894aea6a783215f5d3560baa","src/unix/bsd/netbsdlike/netbsd/other/mod.rs":"4d9f7091af8e166943ac6f42ce85558909e5b6e61325039bff7adfbcf4b90212","src/unix/bsd/netbsdlike/openbsdlike/bitrig/mod.rs":"92459d80b8e5b570c0efe35a1d244d38f23072cd28b6581dfcb313dc9bfc3d51","src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86_64.rs":"927eeccaf3269d299db4c2a55f8010807bf43dfa894aea6a783215f5d3560baa","src/unix/bsd/netbsdlike/openbsdlike/mod.rs":"cec53623e2269aea4437554a405452e7d3b09648b7cf6872d257d36ba979e2ec","src/unix/bsd/netbsdlike/openbsdlike/openbsd/aarch64.rs":"820092e397c7ec259cd2de8f2444083a8e57071c02d73d678701dfa7807726e9","src/unix/bsd/netbsdlike/openbsdlike/openbsd/mod.rs":"44035aad2907dffb6b18687ac7ddc76b5268af92b4e4f4c87759a00cae4de900","src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86.rs":"44b7ea81cf363777b29935da175e702cbf45ed78f7498ae57faf44aa32335085","src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86_64.rs":"7c959cdb3415f68a0f948117b9aa87a17463e57ab97cc3235f2567454b706653","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"ddd834c5c4e5ec7771d0f0071517c2d00095d5595f87a52245380ac762f7f011","src/unix/mod.rs":"47d253eef3bc46dacb0df2951b2136e41c4e758ffd34473b144f6108a90749f9","src/unix/newlib/aarch64/mod.rs":"c408a990f22fb4292a824f38367e9b517e6e6f8623328397ee631cc88b3d1f7d","src/unix/newlib/arm/mod.rs":"2b6dba2e697ab9b4f4bc4dd5f28057249e9b596d1cb395a9322ec87605c4a5c4","src/unix/newlib/mod.rs":"7422845a44de13a2faf15d105670525ed090c6e200c9723178ed735810bbd689","src/unix/notbsd/android/b32/arm.rs":"3625a32c7e58cfe683a53486fbe3d42d4e28f00bea31e19cb46ed2bb0b6a140b","src/unix/notbsd/android/b32/mod.rs":"2fbe398c1fb5251dda6213741a193e50aae4622807cb255d1dd2e82b536f0c65","src/unix/notbsd/android/b32/x86.rs":"ae2b7f1d6278caddc007749bb1d09ca33f7593478a0fd7fe98b457dae86c7814","src/unix/notbsd/android/b64/aarch64.rs":"63d65629d79371814910f691672ef593d20244ee09be26f1ebe07ee6212d0163","src/unix/notbsd/android/b64/mod.rs":"90d4f6b063fd4de42fd302cbc9d9902fd99ac1d71dc48cb8bc6ad7b4c902e481","src/unix/notbsd/android/b64/x86_64.rs":"5547aef8dcbaa5a932559f34606fd8d89f6c9c15173d2b1412c12d39b3c1045f","src/unix/notbsd/android/mod.rs":"c83157cf4a74c653b877c4d42b565d4a7d31e46e32015f19fc91447df2489a58","src/unix/notbsd/emscripten.rs":"5beb9bc98b6b317e85f2935db2aad9ef9cb2ab2e881917064fa7adf944568dae","src/unix/notbsd/linux/mips/mips32.rs":"df3268b082962844c94733c58782ecd9386ffe1f5ed8e05a703a6fa1e80b8f7f","src/unix/notbsd/linux/mips/mips64.rs":"88ad72fa125b9a2c0bd98ef03a7f5ceff78a39b0628d0d0f997ac9b6b82fe16b","src/unix/notbsd/linux/mips/mod.rs":"32c3e7cf430575544bbe4a670cbbf2b4dbe1f28b4895feb6f43fa33d6da25e1d","src/unix/notbsd/linux/mod.rs":"d37bd8bd956b7ab3484b2ad3ee7c1848574bbd37027c76ac06f4d7ca2906cf01","src/unix/notbsd/linux/musl/b32/arm.rs":"9d9bff31ab0925a1f62a20945d36a83b94ce3ab78dd202cd468bb31556b21725","src/unix/notbsd/linux/musl/b32/mips.rs":"cb38c463aebfc235f31880db158dd47c6e21f182a092d3f3087d92994b7711da","src/unix/notbsd/linux/musl/b32/mod.rs":"540928f168f145c136f9dd729ffa12b9d1838d9fe664fc642365d17d7fae648f","src/unix/notbsd/linux/musl/b32/x86.rs":"c02dd333012cf65cb8873fa211eff5e63d466be55451a347510e3d4f50ed515e","src/unix/notbsd/linux/musl/b64/aarch64.rs":"4d79d86d11fbb8cb7a74084e410a1140e3c89dfc1842cdfb213f3a0ca93046df","src/unix/notbsd/linux/musl/b64/mod.rs":"caac00326693b372d6805e4dda239475e7fef36368881f372c006264844fda0d","src/unix/notbsd/linux/musl/b64/powerpc64.rs":"24514e41be4b5f5e0ffbe8a25a99dae8989489b607db59e8bfa345f8e65c9963","src/unix/notbsd/linux/musl/b64/x86_64.rs":"25340999290a63d564ec149532c905f59c312ec369f8806d6b15df66fa1b8857","src/unix/notbsd/linux/musl/mod.rs":"17c70acf9c6eabeb73916c2abb7d7e8b0310214090faae4a8dc2fd183a9b45ba","src/unix/notbsd/linux/other/b32/arm.rs":"d9892f7350b2978335f734f1cd2d7fed60f0f2e66aa05bee3f69549c031f8b14","src/unix/notbsd/linux/other/b32/mod.rs":"7d77f1dd8327b1249769496351cf287d0fff3852f87bde2f58afc67e6dc54a4f","src/unix/notbsd/linux/other/b32/powerpc.rs":"253fcd2f9978525285be1903cc08f3fec2dc3b12d1660a33e2995b4f6b810d1c","src/unix/notbsd/linux/other/b32/x86.rs":"49376e3ed0f3ff95c230ac20751911fe3c608dfe15c7c118b069fd7a954d8db9","src/unix/notbsd/linux/other/b64/aarch64.rs":"ed6ea00e3281ad2f4bab82821f20a2ff5b48401a65618bd6a544bc24ea4e3e39","src/unix/notbsd/linux/other/b64/mod.rs":"63e1a3fdf5f4d1b9820934ab344c91aed5e458e7e05908535d2e942d51a08bf8","src/unix/notbsd/linux/other/b64/not_x32.rs":"9b5e2321c0114c2740dcb86d9f1f3584c07ded921a157164ae8bb0712d397818","src/unix/notbsd/linux/other/b64/powerpc64.rs":"ca25b5f94a9147a984fcb70cf48a261b30df14e2e8194ac174363b6280e82a29","src/unix/notbsd/linux/other/b64/sparc64.rs":"a84580fe226654e33f8ddd0f1f7f2069c29334fc826a74f81f7892b87cfb9083","src/unix/notbsd/linux/other/b64/x32.rs":"ae7698b217106a6c00465f9d10df24d45ad9b7dfc280b24168f53f42198b7b92","src/unix/notbsd/linux/other/b64/x86_64.rs":"afba464e903d350325a1ca3d9d5af1659efc0ede83a43dbac4dbd60c522e2ad1","src/unix/notbsd/linux/other/mod.rs":"7065a7e83834f38ee2f4e03f28824eb94111c13f10e7a8b76ee7025686a84e7f","src/unix/notbsd/linux/s390x.rs":"259c5533ba7f0b10bb23d01dc0e53301afd236a7bb4339dcef9472c579503729","src/unix/notbsd/mod.rs":"eff4c19451d4d4579d5c483a941a7b259b7b73c3ab13c31fc54a7961e8292b9a","src/unix/solaris/mod.rs":"9c6af198a2f80da827054784faf70bc404673d9568fb45664b4f73c46245fdbd","src/unix/uclibc/mips/mips32.rs":"4dcb19abae37f02f08660bdad500c3230436322b581eba37287c73a742d6fcdc","src/unix/uclibc/mips/mips64.rs":"e67eec1636a998b047d89a4cda1c99cb6bc3071db017762675179a68201c4438","src/unix/uclibc/mips/mod.rs":"3f86061d05a8da7d923310550b7d40c6223f0c907d77edc86b7a78da1d647f76","src/unix/uclibc/mod.rs":"3605127517734b5f5f20be1d37e52184a77ecc6fb6099b88aa744e0aca1b802a","src/unix/uclibc/x86_64/l4re.rs":"68fd3a833fd1f7caf784a084224f384bdbdfb8b5a14ef94c4f5155409afb3439","src/unix/uclibc/x86_64/mod.rs":"69ec3ca821a483cc076e84a794bbecb3e5536af1c1d5b807eaf1db9af11f771d","src/unix/uclibc/x86_64/other.rs":"f03b47842896f2f3ae6f8ebdcbcf0276454f880349d9cf00e3d304f8136893c5","src/windows.rs":"e41357d610608bad81abf285306ad8b127b6f02d5132f63c4942861980b47d59"},"package":"b685088df2b950fccadf07a7187c8ef846a959c142338a48f9dc0b94517eb5f1"}
\ No newline at end of file
diff --git a/user/rust/0035-rand-5b9e5c39d857.patch b/user/rust/0035-rand-5b9e5c39d857.patch
new file mode 100644
index 000000000..6f9d072f8
--- /dev/null
+++ b/user/rust/0035-rand-5b9e5c39d857.patch
@@ -0,0 +1,25 @@
+From 5b9e5c39d857312fb308493ac8d0b89f73607941 Mon Sep 17 00:00:00 2001
+From: Lion Yang <lion@aosc.io>
+Date: Wed, 15 Aug 2018 16:10:37 +0800
+Subject: [PATCH] os.rs: fix wrong syscall number for PowerPC
+
+__NR_getrandom is 359 on PowerPC, added from torvalds/linux@7d59deb50aa v3.17-rc5.
+The bug was introduced from 05f23d275 3 years ago, affecting from 0.1.1 to before 0.5.0-pre.0.
+It has already been fixed on the 0.5 branch at 00713a61c so this is a backport.
+---
+ src/os.rs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/vendor/rand-0.4.2/src/os.rs b/src/vendor/rand-0.4.2/src/os.rs
+index 633594ec7d..10022fbcd6 100644
+--- a/src/vendor/rand-0.4.2/src/os.rs
++++ b/src/vendor/rand-0.4.2/src/os.rs
+@@ -102,7 +102,7 @@ mod imp {
+ #[cfg(target_arch = "aarch64")]
+ const NR_GETRANDOM: libc::c_long = 278;
+ #[cfg(target_arch = "powerpc")]
+- const NR_GETRANDOM: libc::c_long = 384;
++ const NR_GETRANDOM: libc::c_long = 359;
+
+ unsafe {
+ syscall(NR_GETRANDOM, buf.as_mut_ptr(), buf.len(), 0)
diff --git a/user/rust/0036-rand-checksums.patch b/user/rust/0036-rand-checksums.patch
new file mode 100644
index 000000000..a998157ce
--- /dev/null
+++ b/user/rust/0036-rand-checksums.patch
@@ -0,0 +1,9 @@
+diff --git a/src/vendor/rand-0.4.2/.cargo-checksum.json.orig b/src/vendor/rand-0.4.2/.cargo-checksum.json
+index 67115b1a..77781e37 100644
+--- a/src/vendor/rand-0.4.2/.cargo-checksum.json.orig
++++ b/src/vendor/rand-0.4.2/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".gitignore":"f9b1ca6ae27d1c18215265024629a8960c31379f206d9ed20f64e0b2dcf79805",".travis.yml":"12868a81c3590d8f2c08d53ca51e6b4b9be39d854f81bd4a57f82466cbe8d79a","CHANGELOG.md":"03974fa236c7ac7a29931ef548d05ba1d8e00b1202961310f6d837aca9bc377a","Cargo.toml":"09b6978ce09c8df87e5fe605d1ff5ea920747da588523df8f2f5d1ca3292db80","Cargo.toml.orig":"02e9cb4d497d9ffbcb3cc0a227a9c7497e905a7d889a175b048aa03f8600cb16","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"f15d6584b8f417cc743ebcad6b69776874a6ac30807d0ce0ed28f3779be1f151","appveyor.yml":"8796156caf7041ef2a43f7a313df21ea639de3f2563b6181bba1096b1c489f1b","benches/bench.rs":"35c4ab609f2a5f5aab6c52c257415258dc0780621b492b5a82bb12d048cab6db","benches/distributions/exponential.rs":"99cb59c013a0b6bb390d34c5649b341fc3b88ea7df0caf2470bdda8798f9fe3d","benches/distributions/gamma.rs":"3533f311e4b55d743c5b01a7eb6529c94fd97726ef6702a6372f914f5f33666b","benches/distributions/mod.rs":"0028f1cb96f61152ed5b49a4fe91227d809ef6d19035592c36032a538af7f95e","benches/distributions/normal.rs":"4e10c18cb583ccb96301ea953c8e0aa9ee3b6662060271d1b8d19ca23364dc6b","benches/generators.rs":"aaa2f1dbfb399df8323d8a5796b92add6210cd5f0f1d916895ffdd81d60f812b","benches/misc.rs":"bd2f7c5a16f0fcb59022d5aeef66ed3c94e89ebf6c06667851dd23d0b1595504","src/distributions/exponential.rs":"103c8412c8a581b71835f1c00e40f6370e7702adf9d499243933a793d132d4e7","src/distributions/gamma.rs":"7a3f85c8daad4e56e334586ddb9fc9d83df3b0699738ed681a6c41e4ed455be9","src/distributions/mod.rs":"7943c4f83721bac816f831cca3b1574b6136932f7b4927aa6101130080ba62c5","src/distributions/normal.rs":"1562b43f80e4d5f83a8deb5af18de5a18dfeeeeda11fefc577da26672b14c949","src/distributions/range.rs":"a72a538d3ec4ed23f8d632aa55fd4793c464f24a5872d04ce8095ddd5db92115","src/distributions/ziggurat_tables.rs":"4eacf94fc352c91c455a6623de6a721e53842e1690f13a5662b6a79c7fbb73de","src/jitter.rs":"befd4b84bf753c107370b5b9498ad49611c220bdae2e4be9ee4398e9fa497042","src/lib.rs":"c86b28064c2c5abd02694e8bf97c84513b21fefe04e4305f9a78d5e864ef3e3f","src/os.rs":"38c2f26c2784c61ae9a17a7a9c59fcf449dada826a66f66b7f46b0992ef001de","src/prng/chacha.rs":"558007276f9c22933d39e5b8e853f4dd9533e823ed66df8dc1f23ad6925b1d51","src/prng/isaac.rs":"a8a2ee8b38d312663308e3bdf03376e342fd91330655f39144e5bba7392b2a8e","src/prng/isaac64.rs":"f28f7596ccab910db265b42671116abb9d2039fa8a421cbc75312bd0e7715d3a","src/prng/mod.rs":"c1a73450f49e819a20942a5b591f84a08ebb5ac33aa0f65b18ac1dc9a19a3084","src/prng/xorshift.rs":"606c308747293652c868b46dc3cad847d0c3717629c04ba75681c887c7634114","src/rand_impls.rs":"e1f27077fc13d5855bb66235f8ccfb216e116337eb38424d9c30c090e112215c","src/read.rs":"bd0eb508a6b659dc578d546fc2f231484aed80c73cfe8c475e0d65c8d699a769","src/reseeding.rs":"a97b86387b87ea1adc5262ddea480fe735c9c2a86762abaace29119022ac9f6e","src/seq.rs":"76dd58af0f580aed2721c393a5c036322186dc7cb3b4abed33436620c7c49288","utils/ziggurat_tables.py":"a9fc0a2fdae9b5c798c238788f94b720c156e13fd96f2356c409aa533191eb94"},"package":"eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5"}
+\ No newline at end of file
++{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".gitignore":"f9b1ca6ae27d1c18215265024629a8960c31379f206d9ed20f64e0b2dcf79805",".travis.yml":"12868a81c3590d8f2c08d53ca51e6b4b9be39d854f81bd4a57f82466cbe8d79a","CHANGELOG.md":"03974fa236c7ac7a29931ef548d05ba1d8e00b1202961310f6d837aca9bc377a","Cargo.toml":"09b6978ce09c8df87e5fe605d1ff5ea920747da588523df8f2f5d1ca3292db80","Cargo.toml.orig":"02e9cb4d497d9ffbcb3cc0a227a9c7497e905a7d889a175b048aa03f8600cb16","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"f15d6584b8f417cc743ebcad6b69776874a6ac30807d0ce0ed28f3779be1f151","appveyor.yml":"8796156caf7041ef2a43f7a313df21ea639de3f2563b6181bba1096b1c489f1b","benches/bench.rs":"35c4ab609f2a5f5aab6c52c257415258dc0780621b492b5a82bb12d048cab6db","benches/distributions/exponential.rs":"99cb59c013a0b6bb390d34c5649b341fc3b88ea7df0caf2470bdda8798f9fe3d","benches/distributions/gamma.rs":"3533f311e4b55d743c5b01a7eb6529c94fd97726ef6702a6372f914f5f33666b","benches/distributions/mod.rs":"0028f1cb96f61152ed5b49a4fe91227d809ef6d19035592c36032a538af7f95e","benches/distributions/normal.rs":"4e10c18cb583ccb96301ea953c8e0aa9ee3b6662060271d1b8d19ca23364dc6b","benches/generators.rs":"aaa2f1dbfb399df8323d8a5796b92add6210cd5f0f1d916895ffdd81d60f812b","benches/misc.rs":"bd2f7c5a16f0fcb59022d5aeef66ed3c94e89ebf6c06667851dd23d0b1595504","src/distributions/exponential.rs":"103c8412c8a581b71835f1c00e40f6370e7702adf9d499243933a793d132d4e7","src/distributions/gamma.rs":"7a3f85c8daad4e56e334586ddb9fc9d83df3b0699738ed681a6c41e4ed455be9","src/distributions/mod.rs":"7943c4f83721bac816f831cca3b1574b6136932f7b4927aa6101130080ba62c5","src/distributions/normal.rs":"1562b43f80e4d5f83a8deb5af18de5a18dfeeeeda11fefc577da26672b14c949","src/distributions/range.rs":"a72a538d3ec4ed23f8d632aa55fd4793c464f24a5872d04ce8095ddd5db92115","src/distributions/ziggurat_tables.rs":"4eacf94fc352c91c455a6623de6a721e53842e1690f13a5662b6a79c7fbb73de","src/jitter.rs":"befd4b84bf753c107370b5b9498ad49611c220bdae2e4be9ee4398e9fa497042","src/lib.rs":"c86b28064c2c5abd02694e8bf97c84513b21fefe04e4305f9a78d5e864ef3e3f","src/os.rs":"4860f165f68b7c978b0488c75d264cd9aaf54e7e4484036736ee5c4f5b6bd78d","src/prng/chacha.rs":"558007276f9c22933d39e5b8e853f4dd9533e823ed66df8dc1f23ad6925b1d51","src/prng/isaac.rs":"a8a2ee8b38d312663308e3bdf03376e342fd91330655f39144e5bba7392b2a8e","src/prng/isaac64.rs":"f28f7596ccab910db265b42671116abb9d2039fa8a421cbc75312bd0e7715d3a","src/prng/mod.rs":"c1a73450f49e819a20942a5b591f84a08ebb5ac33aa0f65b18ac1dc9a19a3084","src/prng/xorshift.rs":"606c308747293652c868b46dc3cad847d0c3717629c04ba75681c887c7634114","src/rand_impls.rs":"e1f27077fc13d5855bb66235f8ccfb216e116337eb38424d9c30c090e112215c","src/read.rs":"bd0eb508a6b659dc578d546fc2f231484aed80c73cfe8c475e0d65c8d699a769","src/reseeding.rs":"a97b86387b87ea1adc5262ddea480fe735c9c2a86762abaace29119022ac9f6e","src/seq.rs":"76dd58af0f580aed2721c393a5c036322186dc7cb3b4abed33436620c7c49288","utils/ziggurat_tables.py":"a9fc0a2fdae9b5c798c238788f94b720c156e13fd96f2356c409aa533191eb94"},"package":"eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5"}
+\ No newline at end of file
diff --git a/user/rust/0034-rls-atomics.patch b/user/rust/0040-rls-atomics.patch
index 61811ef4d..61811ef4d 100644
--- a/user/rust/0034-rls-atomics.patch
+++ b/user/rust/0040-rls-atomics.patch
diff --git a/user/rust/APKBUILD b/user/rust/APKBUILD
index 6b0111f26..1a1d55468 100644
--- a/user/rust/APKBUILD
+++ b/user/rust/APKBUILD
@@ -3,9 +3,9 @@
# Contributor: Jeizsm <jeizsm@gmail.com>
# Maintainer: Samuel Holland <samuel@sholland.org>
pkgname=rust
-pkgver=1.29.0
+pkgver=1.29.1
_bootcargover=0.30.0
-_bootver=1.29.0
+_bootver=1.29.1
_llvmver=6
pkgrel=0
pkgdesc="The Rust Programming Language"
@@ -55,26 +55,30 @@ source="https://static.rust-lang.org/dist/rustc-$pkgver-src.tar.xz
0009-Add-missing-OpenSSL-configurations-for-musl-targets.patch
0010-test-linkage-visibility-dlsym-only-sees-exported-sym.patch
0011-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch
- 0012-Add-powerpc-unknown-linux-musl-target.patch
- 0015-Use-ELFv2-ABI-on-powerpc64-musl-LLVM-half.patch
- 0016-Use-ELFv2-ABI-on-powerpc64-musl-Rust-half.patch
- 0017-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch
- 0018-Add-powerpc64-unknown-linux-musl-target.patch
- 0019-run-pass-const-endianness-negate-before-to_le.patch
- 0020-Fix-double_check-tests-on-big-endian-targets.patch
- 0021-x.py-Use-python3-instead-of-python.patch
- 0022-test-debuginfo-Update-for-GDB-output-format-changes.patch
- 0023-test-target-feature-gate-Ignore-on-not-applicable-ta.patch
- 0024-Ignore-broken-and-non-applicable-tests.patch
- 0025-Move-debugger-scripts-to-usr-share-rust.patch
- 0026-Add-foxkit-target-specs.patch
- 0027-Add-foxkit-target-specs-for-OpenSSL.patch
- 0028-Link-stage-2-tools-dynamically-to-libstd.patch
+ 0015-flock-Fix-F_SETLK-F_SETLKW-on-32-bit-O_LARGEFILE.patch
+ 0016-Add-powerpc-unknown-linux-musl-target.patch
+ 0017-Use-the-ELFv2-ABI-on-powerpc64-musl.patch
+ 0018-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch
+ 0019-Add-powerpc64-unknown-linux-musl-target.patch
+ 0020-run-pass-const-endianness-negate-before-to_le.patch
+ 0021-Fix-double_check-tests-on-big-endian-targets.patch
+ 0022-x.py-Use-python3-instead-of-python.patch
+ 0023-test-target-feature-gate-Only-run-on-relevant-target.patch
+ 0024-test-use-extern-for-plugins-Don-t-assume-multilib.patch
+ 0025-Ignore-broken-and-non-applicable-tests.patch
+ 0026-Link-stage-2-tools-dynamically-to-libstd.patch
+ 0027-Move-debugger-scripts-to-usr-share-rust.patch
+ 0028-Add-foxkit-target-specs.patch
+ 0029-Work-around-libbacktrace-built-with-fstack-protector.patch
0030-liblibc-linkage.patch
- 0031-liblibc-dcff154781e4.patch
- 0032-liblibc-90c01fa6b0f4.patch
- 0033-liblibc-checksums.patch
- 0034-rls-atomics.patch
+ 0031-liblibc-0163a7ce20b5.patch
+ 0032-libc-dcff154781e4.patch
+ 0033-libc-90c01fa6b0f4.patch
+ 0034-libc-0163a7ce20b5.patch
+ 0035-libc-checksums.patch
+ 0035-rand-5b9e5c39d857.patch
+ 0036-rand-checksums.patch
+ 0040-rls-atomics.patch
"
builddir="$srcdir/rustc-$pkgver-src"
_rlibdir="/usr/lib/rustlib/$CTARGET/lib"
@@ -148,7 +152,6 @@ check() {
src/test/codegen-units \
src/test/compile-fail \
src/test/compile-fail-fulldeps \
- src/test/debuginfo \
src/test/incremental \
src/test/incremental-fulldeps \
src/test/mir-opt \
@@ -307,38 +310,42 @@ _mv() {
mkdir -p "$dest"
mv "$@"
}
-sha512sums="87f416c76db2967c0ce2b39ee2d2c2fcad875bbe13cfa507f5483e170827c131f3af4400c11785ed836143b2732aaf32bc0291fcd93bbfb96b266a198c926a5b rustc-1.29.0-src.tar.xz
-1e67f3b28ca5d6e8ed06df36145abcfeecedb8c8b5370023e7de4a19b850b690efefdd583b42fc484c1167a5c301f6779745c12efb065475acf956d9934cb02b cargo-0.30.0-powerpc64-foxkit-linux-musl.tar.xz
-92f250086aa8cc1528359fbf9e9413bc86857acb6e9f0bb3a045a3a1770dd3a4eda5b499c1cd1946bb9f0937d402b73bf46c7e1de8d419efdd0ffbc278239a81 rust-std-1.29.0-powerpc64-foxkit-linux-musl.tar.xz
-1fedd316a05f16947e8288f194cf55b9d9e29667096a50b4f2ecd9c2031e00fbf9a8c14c01968bb047e3f3aac18a036606092749de467b152169eb218360ecbe rustc-1.29.0-powerpc64-foxkit-linux-musl.tar.xz
-23540d67f2774f007ffea65e3475b0003193a28503f302dbbf7fa741c0e53dd14d110a3eb88374c2fc1a29b7c8add4c41300fe1c187b2d2ead8e35740cabaaa8 0001-Require-static-native-libraries-when-linking-static-.patch
-3e10a597f35470b31da178dad3af956d395f4245470f7c2821a78f1e7411acd8758c13c686a342eb362850a736b2887293203847e38c89f40a61498282d29c69 0002-Don-t-pass-CFLAGS-to-the-C-compiler.patch
-d6b293f13dccbe5bdbcc13c2b18e610c271ab49acc0eb5658489388b371431a522f454308af20d2fdb8c68ce99203cfa8455b7c36cc47c8d1f5722b739c3b3fc 0003-Fix-LLVM-build.patch
-38f5380a3e7c8454de62ed75e807ad034f1ef3521a88706d3a24d4de09140147ff298c8e36de14d21f0b458d8c1bf82dd8e3924c7dcef0a16d8cd07ff49f06ea 0004-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
-660283864cbd7a98246c3a6d5634b99032c90fcd98eab6f2477786ab49078505f59f2a88f2b87729850e0b07bef18dd5b93c458e947ae876aac3dca3742dff73 0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch
-75a7d5f67e315ef69f6c5114b80523858b528c6ef80ec10fba7d1f1afce97e6053670a8a7473c6948931d2f013e77646b7b30635f12f5b5f6dd12a29f6f4925e 0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
-7256275df428ea13028731e91dccbba90f7e9f2a611ce9265447831cc60a9284b8d78573da50143b2e7fe4f3f6dc360eddf0be94a01de4b8745d7930144b2365 0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
-45c7342c9b901f3d96e293e189773b22e0c7f240e79ffd661e4010f798a6d622304ad16fab22ebb81e92e473c98f93f39505e79dbfb341ec7e29efbcd366594b 0008-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
-d48b2653265de8e331afe8fb8ec48b3170845d95eb54ea1fad77cc8ac617cab193b3e797c2753794addcb3f3edb5de99ebdd6de1ad31613a08485b4ad9a8878f 0009-Add-missing-OpenSSL-configurations-for-musl-targets.patch
-abbefe8cbdb1b0cefe9cecfe5b5fad88b868d838617bf1fc1e0da782844ca9f28fb5edd8052115e9667ff21eca90e768caea1ce6c8bf23981162e1da93a70c59 0010-test-linkage-visibility-dlsym-only-sees-exported-sym.patch
-e9c4c6d9029029abc806da48ba85fb3ce5ca2aa0dd748012f8cd89620b3a5646b06a3295b1d001c3e651ffebf7a23d16d074c7a146cc585b9347f16b2c147743 0011-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch
-cf5cb5827a836f2fc155ba5f9caf24d2811e143fa178d64c2cd2c6cd0ba8c121dacd657be7a631f1d2532f3bd6f244c371361afddf65f057acf15f0de1d4b8bd 0012-Add-powerpc-unknown-linux-musl-target.patch
-9e47df4cd5f9590e526be1617efa6c96b80cc9220f819a0b86a6b48a229786b860fff4c2dc5451f7098aa5f250e35285d65cfa0012c15110eab612d585a1f6d7 0015-Use-ELFv2-ABI-on-powerpc64-musl-LLVM-half.patch
-36f07adaef870b90590a7513b1bde0f37793bbd6b773b41bf0cf2b791add51c0c8e22a55b5f8266a04e82f8c60f8a89eb0597cdb23b6f595e787a6a57cd869c0 0016-Use-ELFv2-ABI-on-powerpc64-musl-Rust-half.patch
-63fb44a61ee59e916bbaf78dc95cdb73a77671671db10280e8a8fde08324604f1b2560a648f25b088558c3fd198f855a8056dcb14997c0747f05957c51643aba 0017-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch
-bd16a8c9d79c495677d1d59a5a806a46d807447ef9be85b20fb2d8150775f24a233d00dea4c5a3b505054b299982fe00d64d1a9a9da26c320e804a8f3840e48b 0018-Add-powerpc64-unknown-linux-musl-target.patch
-41f272bc925d2800fde0f663d300572ab27d4de275b4802de7adb89c2d6582b1aec3cd456ae2c0d115f1104f9de97489da86df101eefbaead374c5d5b20c95d8 0019-run-pass-const-endianness-negate-before-to_le.patch
-e146e9205f22f10fcdd6b8b77ee76a7b2cab0f38368a793cdd15a2dd5b1432c7e9d0ea9ae5cda55ff91edfbea20941fe49836707bb238c84b74ec0330490b4c8 0020-Fix-double_check-tests-on-big-endian-targets.patch
-ed4f07e005a9ee7b117c48961c0285cb5a8f1bf5c1480343d617630af56837fb177cf8e5f564b0795ed063ede485d8478a44c7c257511aaa05d4abf4c316d898 0021-x.py-Use-python3-instead-of-python.patch
-12e6f6dbeefaeee6190a8ed25336836bec23d92778a2b01921f1191e4ac9fb8259b7b99d6bebe52b9e390eb3b4dca40c61e9498cdc222d5019843ef31b82146e 0022-test-debuginfo-Update-for-GDB-output-format-changes.patch
-d9b2234fdc3e2fac9462f0be8ce8988d50573d1149c496ef7b439596303a34e540824a5a6ab23cb15be1a6c1d15d857662d6dae740abd77084375b276b84f4dd 0023-test-target-feature-gate-Ignore-on-not-applicable-ta.patch
-7cff0eb0f947e009326cbd96dae0d74d1f5fb9fbd1cd62544aa5b52c44fdc8f40094856d44dc5b4d55fd2c35308f37fa64656d614ae16d42d71e59a7a8cdb531 0024-Ignore-broken-and-non-applicable-tests.patch
-de5c3b3ca532328957b550cf02cbdc851bacd7740bbdd4512e03d2eb4d916034d2bd026710f2f734d7a31ca67eda3f34e2577a0cd39a4901d0808a1815095064 0025-Move-debugger-scripts-to-usr-share-rust.patch
-6a1c997e5e280b9575857d5dca5cff22ea17fc878389bb0d852139bb113fe64082dfd1298958a78e10d4a8faf58358bc8c221516e248c929c399d327559ef030 0026-Add-foxkit-target-specs.patch
-6b1723c2e4672e394374419fcc136a851078b4a4c538c7c1d86847e6915c5fb3ddc1f81971ded1a73a3090766d103c3cc79c60b8e39999947be625e0e17e1249 0027-Add-foxkit-target-specs-for-OpenSSL.patch
-74618287fe0bdcbedb23b2343e88885496d346c68a6b76109f613c5a13f7e09623ece11cb9c784f1ae6779005c9ec4def0351810718afd80285d1912c0040c9a 0028-Link-stage-2-tools-dynamically-to-libstd.patch
+sha512sums="1ded651b4c460e11e5e44c26de88a80fb13c2000097de2ee1e5af89638e12a7e8f43dd756689d4cc4fad45c52d4d43a3c70dd6a3ae550735b9dad5f8defea6a7 rustc-1.29.1-src.tar.xz
+bd1fd3694947fc192419dab1e1e314fb5a9d7266715b5765dd1766507a234b6ad93bd097f531d560adc8b9f71534f53c440e6986e63b322319fcd0c24325d979 cargo-0.30.0-powerpc64-foxkit-linux-musl.tar.xz
+d6ce24de73131702b623e8a146435526457b6d766fe6192df7471f1942119a6396b85121ce2250da3c3ec21b44aaff316e5c0387796654129d074d29d60a25b2 rust-std-1.29.1-powerpc64-foxkit-linux-musl.tar.xz
+b649fc30dee7510f656c53f3a5737a66d59726e24be7085134504f0202a899e549274df417c814487e5fbd8bbb69470411c9ed770dbc37af15a99a63f913a508 rustc-1.29.1-powerpc64-foxkit-linux-musl.tar.xz
+a242a6cdc95ecfa402e1457bc9e3b98305b8a5bcb5f54904807382cc98720e2a8fd16cee311edba84eb64129c591a58ed1f70798269832ccf19f1af79efe8b70 0001-Require-static-native-libraries-when-linking-static-.patch
+2b2dc29d31351e21e10808a0223b8b43d3804f0fbef6a97d6016958bb982850d0a63b73f1133ca4e70ad5c5901a3357c279e40a5c60379eb8ac070a9fb78a203 0002-Don-t-pass-CFLAGS-to-the-C-compiler.patch
+6f291642e2ce0cbe57e5354d4eff2745b651b3308771fd122edcb75ff7b809a34ee98c5ab2b64699b60e6be1007a383b29e0f991a9539f85a4c6c19e239c7654 0003-Fix-LLVM-build.patch
+4f1a716e22126d65f4b32be6210293a32e54c3b4c8655097962e2d0d44c1b976cb923fc99dbf8d6487541518e9c8ed73d3d2efb6da3b881513d8243808de7adf 0004-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
+7ff0c4cfc040f47b9dcf28d64bbcdf45d674bbd3a05e7d3646474044e0713d80d878d8cc39dd5029cd6f7c2c6d53c08ea445eacf147ccf14de1d729bf6a83734 0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch
+f1b9d68d4685db660b6c09cfa5ce0f818a3146e458973b942ac7991cfdd849976da7bc4e7245b9aa0ace498b51c9dbe9def3f2ffc277f52d2883f8b8fd0c47ef 0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
+14cd3ff8d3e1d41014008ec8da958b72383c5fab6066d4dd21f4c02043fbea9ef159a1a76b718ec54c135fe971c7269d88b9703692706d23ed409022b0e57221 0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
+e7de9eec874e08d3aaaa1389ed827ccb201659f792d4b64bf430a1b972b1d1f793fb14131d60df92d84af35da01eee4d59f6b8f631acfef95284688cde45fe04 0008-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
+8c2cbe4c0a99c38e4c7f05b30d396acfbe0511c06b433a468c35477cda73e77a4a0d61f809465d29e92bf3960dc25d5d860d28c79be42ac25f336aea40a24881 0009-Add-missing-OpenSSL-configurations-for-musl-targets.patch
+38085c8f79a3fda0f31cc733044c50fdfb1bff82da4f4cb40f280bf0924c53cfb1fab31a8345e40ae2960f1c1b495570d8219c9c9958db4da184f7120e07a4ad 0010-test-linkage-visibility-dlsym-only-sees-exported-sym.patch
+93faeccf86b7920d48aba11e3345459e828a47a2b709ac65bc1ed71ef928ae18539040390f394c58fadbe0f44459248018c3cf0b0ac64aedd0f27a5ae866d69e 0011-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch
+c2208400ee5a9f0f7b7897effe536f5937e05c0c4214f5974194ef8c41fc3013ca5224594add1b9fb83f50c9372bd659b7a34442fc3462d43fe8fe6dbdceb1ad 0015-flock-Fix-F_SETLK-F_SETLKW-on-32-bit-O_LARGEFILE.patch
+157b6e658ad39d01a7bcee16de5a7b4cb0c8a95a55ace9ca24ac499dee343db7de5d7455443f868cd02f612ef9f6787001ee8e53d8b046304d451507e25ca7ce 0016-Add-powerpc-unknown-linux-musl-target.patch
+2f353c5e29e00f9e8f28b6c9010b204138a6913565674afd40ab79f2b434ed8af8296d2fe92459c103eb6262579466c44be2280e5ec46e129855fcb06f314e32 0017-Use-the-ELFv2-ABI-on-powerpc64-musl.patch
+c63ce49e7041991e78921d4b6f36e037fbcf478eb30a8590fbb0349bc55ead4639ebf95f8d90d7d572244dbf14f74471c192cc2c7dd020fb8f274e885f130c29 0018-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch
+96d6473a9a1aed1df0911da4583ff8377ecf9cea920aaeafdbf4f4db652027e2937e1108eb21aafc044c0b45a6cd1f152393c5fa527cdabd4ce4e70f69fe15c6 0019-Add-powerpc64-unknown-linux-musl-target.patch
+133f2b57e351dd6a75ac3abe3d980c3e1e40af4cdfe7fc4a05ed3e45029ae69ab979db7edb2b890742c107120f436404fc720e20df52fd9d5ff14d22a7d82aa4 0020-run-pass-const-endianness-negate-before-to_le.patch
+652420d7bdc9be4e6136577e375e9b43f7c4086b3f0c1b4739c7eb6303c7826df84f40da7811618f296edcf712357e4b046e477b748605d066ab6d8015c6a619 0021-Fix-double_check-tests-on-big-endian-targets.patch
+7eb0c8eb095ca0201b26444b275005a89921731e87fb7a82d3d46215f14acc8b987134288955fc90f9d419ebe0cb26e09589906aa954bcbe229e25b737c64c7d 0022-x.py-Use-python3-instead-of-python.patch
+231d37dcd04787300a38122f1482b616970e070a4a87349aeaf5ec9f7d15563feeaa88be9cfc0863640b22596f5c2e2acfe7f9b22e43e6f1ee90f3b4730e746b 0023-test-target-feature-gate-Only-run-on-relevant-target.patch
+b6c34f9982d6f5b59acc716391a63f922accf69bdcf2631ab57ce3279a62e1874bceb7d0707fdd5290a17ec88e948d803c567476f904f96b7e5d7a240a4ee53c 0024-test-use-extern-for-plugins-Don-t-assume-multilib.patch
+cf8d642afcfd27fbc8c982a27d7d09f6097f1d0bfb67251d3a51323bd86743f584ebbd1cb4a8e872bd7711610929aa4bd514a107956fb89dd14f6dc50e9bdd26 0025-Ignore-broken-and-non-applicable-tests.patch
+9b9f4625d0a56417fa72d58982e55449b8fb5ed103799327a9017976ddd8ec431e81f592d3f843927068bd0e68e8e5a589650f18fb37bd275100f17bb65a1560 0026-Link-stage-2-tools-dynamically-to-libstd.patch
+35fc80eb99d818f8d4c67a5dc72c1acc56a26b529b5a24cad7aa0d5ea4e872384c4eb07084caa3436140cdf377ed0bbcb920e40473a65f2ff90e3ddc1e20e390 0027-Move-debugger-scripts-to-usr-share-rust.patch
+ab300269ab18f3d8e82586d0ff1a8f2713027aa675844450cd1dc30f9fd8daf268caa4e61744c927044dd7d62638b9153e123ed6eb242f0ccab892306e1991a8 0028-Add-foxkit-target-specs.patch
+542a3aa430eea4142428293e7a9f4077210a319bb7bd91a4f051222277862bc4a8eba1c013ec6d7dddbc848e1b903cc8c4082d1aad623ec85674de14ba95a2ca 0029-Work-around-libbacktrace-built-with-fstack-protector.patch
f94abe390798b968bccfba1c908ab5895220ed0d167314b790a9c28b10cac81fb2e3b08760b4e8551ad5a5d02cd052d3d0d647ad8f8634e97f4d3b0470a21c42 0030-liblibc-linkage.patch
-48a2ea6beb5f333d646fcc7aa15405d24f52f48e82b8f9cd09737dbfef16df0679246b30a28871595d13414b44c316122e0c969e1ae555b7ab18b692057c0d67 0031-liblibc-dcff154781e4.patch
-fcfdd6b2702b8b23d8fd339ceb23b75a6e9814a388f00d226c8101be46a0f29835c77b75ab665e36972fde14364d762816ea2dcf3c1d90dd1e574fb8f6c33c80 0032-liblibc-90c01fa6b0f4.patch
-1e1e1f485abd8e3e283aa69b3b5c6f11901d0cc14527834a6490ed70c043512aa207ff4f9ef4bbdef884697120fab59d23ec1faf3b02b3d3d77a060789275cd4 0033-liblibc-checksums.patch
-9182408b7a87fc2f01dc12a36440e43a721f7693da00310806f6306e711c04b34d43b6ab348ae523656937f61389adb6a5a2b8ff46dec5424ad20c29652d4edf 0034-rls-atomics.patch"
+9b761388e3e7d4ac7ced81bf2572439724f4ce3190b49429b92249f4b858cc9bbb79d72e25365825cbd25cb9b3352c627dcc88cc643e5abeb917cf14755cab0b 0031-liblibc-0163a7ce20b5.patch
+48a2ea6beb5f333d646fcc7aa15405d24f52f48e82b8f9cd09737dbfef16df0679246b30a28871595d13414b44c316122e0c969e1ae555b7ab18b692057c0d67 0032-libc-dcff154781e4.patch
+fcfdd6b2702b8b23d8fd339ceb23b75a6e9814a388f00d226c8101be46a0f29835c77b75ab665e36972fde14364d762816ea2dcf3c1d90dd1e574fb8f6c33c80 0033-libc-90c01fa6b0f4.patch
+7773b0c20aee126f90960c29b575f0c3c949d877e6b0e682c34ba8cdf6055a57697d6d6c287eafdf5976125830d5898128c73ac7dc8b4c40347577afcdb086d5 0034-libc-0163a7ce20b5.patch
+6c5d68874bb82de214ff0488bd0ff7c1215c48575618d4d37d307004d462b4010df0d4909dd73da7f024c9ea00f5e2680a733235b6b85abdbd352cf1e13a6681 0035-libc-checksums.patch
+94ee746f50ba3d88e409cd6b840a0995fa40d38e6a3c4a7e9fa32430242c492f35f6fb95ee22e0da6dba84f39dc83f0196a0921c5ec2bc602ea220b017c78be2 0035-rand-5b9e5c39d857.patch
+5e409a7e45afd2104e1bbbcedb0cc2a04b2c3838d820bb3dc6e879a3d4619f0cce562d2bf2b0c55b780375bf26f0d4d4d6b0acdac199e1c39b2d94543d35e017 0036-rand-checksums.patch
+9182408b7a87fc2f01dc12a36440e43a721f7693da00310806f6306e711c04b34d43b6ab348ae523656937f61389adb6a5a2b8ff46dec5424ad20c29652d4edf 0040-rls-atomics.patch"
diff --git a/user/shunit2/APKBUILD b/user/shunit2/APKBUILD
index 8a110ff6d..baa658cf8 100644
--- a/user/shunit2/APKBUILD
+++ b/user/shunit2/APKBUILD
@@ -9,7 +9,7 @@ arch="noarch"
license="Apache-2.0"
depends="/bin/sh"
makedepends=""
-checkdepends="debianutils-which bash dash zsh"
+checkdepends="cmd:which bash dash zsh"
subpackages="$pkgname-doc"
source="$pkgname-$pkgver.tar.gz::https://github.com/kward/shunit2/archive/v$pkgver.tar.gz
dash-negative-lineno.patch"
diff --git a/user/solid/APKBUILD b/user/solid/APKBUILD
index d29ac7ad0..568ccdcee 100644
--- a/user/solid/APKBUILD
+++ b/user/solid/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=solid
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Platform-independent hardware discovery and access"
url="https://www.kde.org/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="f51c7bcaed7b2390f1b290791d7e9dc4a86ce8a925a2955c072be66274257c81c7872f76105fa8a03b35c184a8598551aa2bfa74017de487fc5a3521ea49d6a1 solid-5.50.0.tar.xz"
+sha512sums="4a57a96f9080734781f4bddc33aa3ebc312fdf784e61cd143f76e0a222cec26bcb62322f68422d770ca8494b64344f0870fa63d66fec17bc3a209511c168d226 solid-5.51.0.tar.xz"
diff --git a/user/sonnet/APKBUILD b/user/sonnet/APKBUILD
index 740351e1d..2f6b2b679 100644
--- a/user/sonnet/APKBUILD
+++ b/user/sonnet/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=sonnet
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for implementing portable spell check functionality"
url="https://www.kde.org/"
@@ -50,4 +50,4 @@ aspell() {
"$subpkgdir"/usr/lib/qt5/plugins/kf5/sonnet/sonnet_aspell.so
}
-sha512sums="ac0f5a0f729150d305410a4b91e3db7f1ede4148116821364611984eabfe4533fcd0a0ae4fd25f515a1b44b8983156224ef0da9fc4513be04b5b411a4dc62174 sonnet-5.50.0.tar.xz"
+sha512sums="6854d066ceee7826d058b8b9136cae52428e140237881c1ae80685304b456de8ac410896a9f1f136501cf39f09351f3c4354fe3f5b51bd7bbb6bfef822d2b859 sonnet-5.51.0.tar.xz"
diff --git a/user/spectacle/APKBUILD b/user/spectacle/APKBUILD
index aae2e4984..9da4292b0 100644
--- a/user/spectacle/APKBUILD
+++ b/user/spectacle/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=spectacle
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Application for capturing desktop screenshots"
url="https://www.kde.org/applications/graphics/spectacle/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="659cf0f49793437903caea703ab54cc9f6077645dea7a6823830cf803d7fe35a5dfbc66265fecbeacaf1e4b80762b6e54b7f07a6f52a2a0fddfa88aa752d53c6 spectacle-18.08.1.tar.xz"
+sha512sums="a50e1a8c92f280ad89a023d2fc841a4bf4c7bec7e27cfdc935e6d425380e9f91665ccfafe036f141ce1791400937d22fdb021f4e5ae61c9ef49f7b25e1dc1cbe spectacle-18.08.2.tar.xz"
diff --git a/user/sshfs/APKBUILD b/user/sshfs/APKBUILD
index 404c077be..32fcfbd7c 100644
--- a/user/sshfs/APKBUILD
+++ b/user/sshfs/APKBUILD
@@ -10,7 +10,7 @@ options="!check" # Requires fuse kernel module to be loaded and local ssh serve
license="GPL-2.0-only AND GPL-2.0+ AND LGPL-2.1-only"
depends="openssh-client"
makedepends="fuse3-dev glib-dev meson coreutils py3-docutils"
-#checkdepends="py3-pytest debianutils-which"
+#checkdepends="py3-pytest cmd:which"
subpackages="$pkgname-doc"
source="https://github.com/libfuse/$pkgname/releases/download/$pkgname-$pkgver/$pkgname-$pkgver.tar.xz"
diff --git a/user/step/APKBUILD b/user/step/APKBUILD
index 4b7b0e5f8..45a15a6ad 100644
--- a/user/step/APKBUILD
+++ b/user/step/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=step
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Interactive physics simulation"
url="https://www.kde.org/applications/education/step/"
@@ -10,7 +10,7 @@ license="GPL-2.0-only"
depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
kdoctools-dev qt5-qtsvg-dev kcrash-dev khtml-dev kconfig-dev eigen-dev
- kdelibs4support-dev knewstuff-dev kplotting-dev"
+ kdelibs4support-dev knewstuff-dev kplotting-dev gsl-dev"
subpackages="$pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/applications/$pkgver/src/step-$pkgver.tar.xz"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="7d35e51ccdb388fd56e3c03e2db7404146f0d8fe4294c8c6e21e376d5d09c36c79814a471164e606c664f47c42fa8bb08d4bb759be8a23d3298e976c2fa6c2ed step-18.08.1.tar.xz"
+sha512sums="55041ada66bd504151f6355c71c3c29e414b9cb285bea8406626ffa69ea246f41f81961b9cce31e5bf09400bd98e9cfe31f84aff392462979fb4c398968a2edd step-18.08.2.tar.xz"
diff --git a/user/syntax-highlighting/APKBUILD b/user/syntax-highlighting/APKBUILD
index 3c96bddb1..0d2324455 100644
--- a/user/syntax-highlighting/APKBUILD
+++ b/user/syntax-highlighting/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=syntax-highlighting
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="Framework for rendering programming code with formatting"
url="https://www.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="9f452946747a6f524b299547b608b0903ef359ea736182684f3ea2d7709659604bb4a9c8a474ab88123e9d066a35d81a6a67748e05e4bb9e66d20838113ff874 syntax-highlighting-5.50.0.tar.xz"
+sha512sums="929aa7d3e8f323c1618db17d7803bebd7f61a6b024ac6205f570db2ee3d567b4e1c1ae38b7fec0c0d9ba81c4f52c90c9e2660cfee209350e59e9bb301fbb3fba syntax-highlighting-5.51.0.tar.xz"
diff --git a/user/threadweaver/APKBUILD b/user/threadweaver/APKBUILD
index 2fa1e5e8d..70c07719a 100644
--- a/user/threadweaver/APKBUILD
+++ b/user/threadweaver/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=threadweaver
-pkgver=5.50.0
+pkgver=5.51.0
pkgrel=0
pkgdesc="High-level threading framework"
url="https://www.kde.org/"
@@ -41,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="a452aea4ca141c4964129412b42f8fe6457ca156edbd99770453564960714abeec395d78ab2686f01fa602822938fd50cb706920c25ec909d4446bfd14602175 threadweaver-5.50.0.tar.xz"
+sha512sums="b93ab96ea0033df07aa41fdff8289c75e908dddb5caaa60a288827e8b8a7d3035b3fc9beca63b25a4d785f0cc2622cb6aa83ba9423d5716f0138b8b49531076a threadweaver-5.51.0.tar.xz"
diff --git a/user/umbrello/APKBUILD b/user/umbrello/APKBUILD
index 4207012ae..432d310d4 100644
--- a/user/umbrello/APKBUILD
+++ b/user/umbrello/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=umbrello
-pkgver=18.08.1
+pkgver=18.08.2
pkgrel=0
pkgdesc="Software modelling tool and code generator"
url="https://umbrello.kde.org/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="614ad45d95bc7f07eec668b5f2a54e6748be31b4bb0fe60fd86fe35df3df73a7ce6e12b867118674dd6961ed167249824344e2fb2155e8a58b1e07074dec8679 umbrello-18.08.1.tar.xz"
+sha512sums="55941afe05b72085aefac3604ac9a9023f46149e5aad0784fa14942907c21009fb20919750a969abb8c398bcb2f99f3e23e3b91eed06f0cb5a8897563aaa52b8 umbrello-18.08.2.tar.xz"
diff --git a/user/which/APKBUILD b/user/which/APKBUILD
index 42e7e3b10..cea55c32a 100644
--- a/user/which/APKBUILD
+++ b/user/which/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=which
pkgver=2.21
-pkgrel=1
+pkgrel=2
pkgdesc="A utility to show the full path of commands"
url="http://savannah.gnu.org/projects/which"
arch="all"
@@ -10,6 +10,7 @@ license="GPL-2.0+ AND LGPL-2.0+ AND GPL-3.0+"
makedepends=""
subpackages="$pkgname-doc"
source="http://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz"
+provider_priority=1
build() {
cd "$builddir"
diff --git a/user/xdotool/APKBUILD b/user/xdotool/APKBUILD
index 35d7984cc..3aae63783 100644
--- a/user/xdotool/APKBUILD
+++ b/user/xdotool/APKBUILD
@@ -12,7 +12,7 @@ license="BSD-3-Clause"
depends=""
depends_dev="libx11-dev libxtst-dev libxinerama-dev libxkbcommon-dev"
makedepends="$depends_dev perl"
-#checkdepends="xvfb ruby-minitest debianutils-which lsof xdpyinfo xterm xwininfo"
+#checkdepends="xvfb ruby-minitest cmd:which lsof xdpyinfo xterm xwininfo"
subpackages="$pkgname-dev $pkgname-doc"
source="https://github.com/jordansissel/xdotool/releases/download/v$pkgver/xdotool-$pkgver.tar.gz"
diff --git a/user/xfce4-panel-profiles/APKBUILD b/user/xfce4-panel-profiles/APKBUILD
index 8719fc556..f30ebb39a 100644
--- a/user/xfce4-panel-profiles/APKBUILD
+++ b/user/xfce4-panel-profiles/APKBUILD
@@ -9,7 +9,7 @@ arch="noarch"
options="!check" # no tests
license="GPL-3.0+"
depends="python3"
-makedepends="intltool which"
+makedepends="intltool cmd:which"
subpackages="$pkgname-doc $pkgname-lang"
source="http://archive.xfce.org/src/apps/xfce4-panel-profiles/1.0/xfce4-panel-profiles-$pkgver.tar.bz2"
sha512sums="2d7980a79250414cc4611ccf573c2a3ee5eb510cf3ef6c32035ba23197eee1fded2e158cb50714dd935070916b07b3f33db02570f3d46a598144b4a2d3979ff4 xfce4-panel-profiles-1.0.8.tar.bz2"