summaryrefslogtreecommitdiff
path: root/user
diff options
context:
space:
mode:
Diffstat (limited to 'user')
-rw-r--r--user/akonadi-contacts/APKBUILD4
-rw-r--r--user/akonadi-mime/APKBUILD4
-rw-r--r--user/akonadi/APKBUILD4
-rw-r--r--user/alsa-lib/APKBUILD4
-rw-r--r--user/alsa-plugins/APKBUILD69
-rw-r--r--user/alsa-utils/APKBUILD49
-rw-r--r--user/alsa-utils/alsa.confd15
-rw-r--r--user/alsa-utils/alsa.initd88
-rw-r--r--user/alsa-utils/alsaconf.patch12
-rw-r--r--user/analitza/APKBUILD4
-rw-r--r--user/apache-httpd/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/audacious-plugins/APKBUILD7
-rw-r--r--user/audacious/APKBUILD11
-rw-r--r--user/audacious/qt-crash.patch43
-rw-r--r--user/awesome/APKBUILD46
-rw-r--r--user/baloo/APKBUILD4
-rw-r--r--user/bind/APKBUILD19
-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/bsdwhois/APKBUILD29
-rw-r--r--user/bzflag/APKBUILD8
-rw-r--r--user/bzflag/defineAddrLen.patch6
-rw-r--r--user/catfish/APKBUILD30
-rw-r--r--user/ccid/APKBUILD4
-rw-r--r--user/checkbashisms/APKBUILD43
-rw-r--r--user/chrony/APKBUILD6
-rw-r--r--user/chrony/chrony-include-util.patch10
-rw-r--r--user/clang/0001-Add-support-for-Ad-lie-Linux.patch78
-rw-r--r--user/clang/0008-Fix-ClangConfig-cmake-LLVM-path.patch25
-rw-r--r--user/clang/APKBUILD91
-rw-r--r--user/clang/secure-plt.patch70
-rw-r--r--user/clang/use-llvm-lit.patch11
-rw-r--r--user/clutter/APKBUILD38
-rw-r--r--user/cogl/APKBUILD42
-rw-r--r--user/cogl/fix-wayland-egl-check.patch12
-rw-r--r--user/coverage/APKBUILD31
-rw-r--r--user/cram/APKBUILD36
-rw-r--r--user/cram/die-py2-die.patch8
-rw-r--r--user/cups-filters/APKBUILD11
-rw-r--r--user/cups-filters/poppler-69-support.patch76
-rw-r--r--user/ddrescue/APKBUILD37
-rw-r--r--user/dhcpcd/APKBUILD4
-rw-r--r--user/distcc/APKBUILD57
-rw-r--r--user/distcc/distcc.pre-install6
-rw-r--r--user/dmenu/APKBUILD36
-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/ethtool/APKBUILD36
-rw-r--r--user/eudev/APKBUILD6
-rw-r--r--user/exo/APKBUILD38
-rw-r--r--user/extra-cmake-modules/APKBUILD4
-rw-r--r--user/faad2/APKBUILD23
-rw-r--r--user/featherpad/APKBUILD4
-rw-r--r--user/feh/APKBUILD4
-rw-r--r--user/ffmpegthumbnailer/APKBUILD42
-rw-r--r--user/fltk/APKBUILD13
-rw-r--r--user/fluxbox/APKBUILD34
-rw-r--r--user/fontconfig/APKBUILD6
-rw-r--r--user/frameworkintegration/APKBUILD4
-rw-r--r--user/freecell-solver/APKBUILD45
-rw-r--r--user/freeglut/APKBUILD33
-rw-r--r--user/freetds/APKBUILD4
-rw-r--r--user/frei0r-plugins/APKBUILD11
-rw-r--r--user/frei0r-plugins/facebl0r-opencv-3.4.3.patch22
-rw-r--r--user/fuse/APKBUILD45
-rw-r--r--user/fuse/fix-realpath.patch28
-rw-r--r--user/fuse3/APKBUILD77
-rw-r--r--user/fuse3/fix-realpath.patch28
-rw-r--r--user/fuse3/fuse.initd35
-rw-r--r--user/garcon/APKBUILD38
-rw-r--r--user/gcompat/APKBUILD39
-rw-r--r--user/gcompat/no-utmp.patch16
-rw-r--r--user/gdbm/APKBUILD4
-rw-r--r--user/glib/APKBUILD48
-rw-r--r--user/glib/meson-sucks-and-i-hate-you-so-much-right-now.patch8
-rw-r--r--user/glib/thread-test-fix.patch11
-rw-r--r--user/glm/APKBUILD4
-rw-r--r--user/gnutls/APKBUILD5
-rw-r--r--user/gobject-introspection/APKBUILD39
-rw-r--r--user/gpgme/APKBUILD4
-rw-r--r--user/granatier/APKBUILD4
-rw-r--r--user/graphite2/APKBUILD12
-rw-r--r--user/graphite2/cmake.patch13
-rw-r--r--user/gsettings-desktop-schemas/APKBUILD4
-rw-r--r--user/gsm/APKBUILD4
-rw-r--r--user/gst-plugins-base/APKBUILD4
-rw-r--r--user/gstreamer/APKBUILD4
-rw-r--r--user/gtest/APKBUILD6
-rw-r--r--user/gtk-doc/APKBUILD5
-rw-r--r--user/gtksourceview-3.0/APKBUILD39
-rw-r--r--user/gvim/APKBUILD4
-rw-r--r--user/gwenview/APKBUILD4
-rw-r--r--user/harfbuzz/APKBUILD4
-rw-r--r--user/highlight/APKBUILD6
-rw-r--r--user/hwdata/APKBUILD4
-rw-r--r--user/i3lock/APKBUILD29
-rw-r--r--user/i3wm/APKBUILD49
-rw-r--r--user/i3wm/i3wm-musl-glob-tilde.patch73
-rw-r--r--user/i3wm/i3wm-test-disable-branch-check.patch10
-rw-r--r--user/i3wm/i3wm-test-fix-off_t.patch26
-rw-r--r--user/iceauth/APKBUILD34
-rw-r--r--user/imagemagick/APKBUILD6
-rw-r--r--user/imake/APKBUILD27
-rw-r--r--user/iperf3/APKBUILD57
-rw-r--r--user/iperf3/build-fixes.patch20
-rw-r--r--user/iperf3/iperf.confd3
-rw-r--r--user/iperf3/iperf.initd18
-rw-r--r--user/iperf3/remove-pg-flags.patch29
-rw-r--r--user/ipmiutil/APKBUILD45
-rw-r--r--user/ipmiutil/ipmiutil-3.0.7-fix-sha256.patch68
-rw-r--r--user/json-glib/APKBUILD32
-rw-r--r--user/juk/APKBUILD4
-rw-r--r--user/kactivities-stats/APKBUILD4
-rw-r--r--user/kactivities/APKBUILD4
-rw-r--r--user/kalgebra/APKBUILD8
-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/keybinder-3.0/APKBUILD36
-rw-r--r--user/keyutils/APKBUILD13
-rw-r--r--user/keyutils/fix-includes.patch10
-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/kgraphviewer/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/APKBUILD7
-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/krita/APKBUILD6
-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/labplot/APKBUILD20
-rw-r--r--user/labplot/liborigin-endian.patch26
-rw-r--r--user/libao/APKBUILD21
-rw-r--r--user/libblockdev/APKBUILD4
-rw-r--r--user/libbsd/0001-Replace-__BEGIN_DECLS-and-__END_DECLS.patch5
-rw-r--r--user/libbsd/APKBUILD13
-rw-r--r--user/libbsd/headers.patch10
-rw-r--r--user/libburn/APKBUILD36
-rw-r--r--user/libdrm/APKBUILD4
-rw-r--r--user/libepoxy/APKBUILD8
-rw-r--r--user/libgit2/APKBUILD4
-rw-r--r--user/libgphoto2/APKBUILD6
-rw-r--r--user/libgsf/APKBUILD4
-rw-r--r--user/libical/APKBUILD4
-rw-r--r--user/libinput/APKBUILD10
-rw-r--r--user/libisofs/APKBUILD36
-rw-r--r--user/libixion/32bit.patch57
-rw-r--r--user/libixion/APKBUILD9
-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/libmpd/APKBUILD42
-rw-r--r--user/libopenraw/APKBUILD42
-rw-r--r--user/liborcus/APKBUILD2
-rw-r--r--user/libpfm/APKBUILD26
-rw-r--r--user/libpng/APKBUILD12
-rw-r--r--user/libpsl/APKBUILD38
-rw-r--r--user/libpsl/use-python3.patch9
-rw-r--r--user/libreoffice/APKBUILD41
-rw-r--r--user/libreoffice/disable-outdated-font-test.patch22
-rw-r--r--user/libsm/APKBUILD8
-rw-r--r--user/libsoup/APKBUILD38
-rw-r--r--user/libtap/APKBUILD43
-rw-r--r--user/libtirpc/APKBUILD8
-rw-r--r--user/libtirpc/musl.patch11
-rw-r--r--user/libwnck/APKBUILD38
-rw-r--r--user/libx11/APKBUILD7
-rw-r--r--user/libxcb/APKBUILD7
-rw-r--r--user/libxdg-basedir/APKBUILD43
-rw-r--r--user/libxfce4ui/APKBUILD39
-rw-r--r--user/libxfce4util/APKBUILD37
-rw-r--r--user/libxklavier/APKBUILD42
-rw-r--r--user/links/APKBUILD4
-rw-r--r--user/live-media/APKBUILD4
-rw-r--r--user/llvm6/APKBUILD255
-rw-r--r--user/llvm6/cmake-fix-libLLVM-name.patch26
-rw-r--r--user/llvm6/disable-FileSystemTest.CreateDir-perms-assert.patch61
-rw-r--r--user/llvm6/disable-dlclose-test.patch18
-rw-r--r--user/llvm6/even-more-secure-plt.patch101
-rw-r--r--user/llvm6/llvm-fix-build-with-musl-libc.patch46
-rw-r--r--user/llvm6/more-secure-plt.patch38
-rw-r--r--user/llvm6/musl-ppc64-elfv2.patch43
-rw-r--r--user/llvm6/ppc32-calling-convention.patch69
-rw-r--r--user/llvm6/secure-plt.patch208
-rw-r--r--user/lskat/APKBUILD4
-rw-r--r--user/lsof/APKBUILD63
-rw-r--r--user/lsof/test-disable-nfs-test.patch13
-rw-r--r--user/lsof/test-enable-suite.patch9
-rw-r--r--user/lsof/test-linux-sysmacros.patch15
-rw-r--r--user/lsof/utmps.patch15
-rw-r--r--user/lua-expat/APKBUILD32
-rw-r--r--user/lua-filesystem/APKBUILD36
-rw-r--r--user/lua-lgi/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/mesa-demos/APKBUILD30
-rw-r--r--user/mesa/APKBUILD6
-rw-r--r--user/meson/APKBUILD4
-rw-r--r--user/minicom/APKBUILD39
-rw-r--r--user/minicom/fix-includes.patch24
-rw-r--r--user/minuet/APKBUILD4
-rw-r--r--user/mosh/APKBUILD78
-rw-r--r--user/mosh/fix-ppc64le-build-with-musl.patch53
-rw-r--r--user/mousepad/APKBUILD37
-rw-r--r--user/mpv/APKBUILD4
-rw-r--r--user/nano/APKBUILD6
-rw-r--r--user/ncftp/APKBUILD46
-rw-r--r--user/net-snmp/APKBUILD17
-rw-r--r--user/net-snmp/CVE-2015-5621.patch132
-rw-r--r--user/net-snmp/fix-Makefile-PL.patch22
-rw-r--r--user/net-snmp/remove-U64-typedef.patch2519
-rw-r--r--user/netifrc/APKBUILD13
-rw-r--r--user/nextcloud-client/APKBUILD46
-rw-r--r--user/nextcloud-client/no-webengine.patch1017
-rw-r--r--user/nextcloud-client/openssl.patch11
-rw-r--r--user/nghttp2/APKBUILD4
-rw-r--r--user/ntfs-3g/APKBUILD40
-rw-r--r--user/ode/APKBUILD48
-rw-r--r--user/ode/fix-test-link.patch9
-rw-r--r--user/okteta/APKBUILD4
-rw-r--r--user/okular/APKBUILD4
-rw-r--r--user/opencv/APKBUILD11
-rw-r--r--user/opencv/pmmx.patch27
-rw-r--r--user/openvpn/APKBUILD69
-rw-r--r--user/openvpn/openvpn.confd24
-rw-r--r--user/openvpn/openvpn.down33
-rw-r--r--user/openvpn/openvpn.initd130
-rw-r--r--user/openvpn/openvpn.pre-install6
-rw-r--r--user/openvpn/openvpn.up82
-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/orage/APKBUILD38
-rw-r--r--user/p11-kit/APKBUILD4
-rw-r--r--user/pango/APKBUILD4
-rw-r--r--user/parole/APKBUILD38
-rw-r--r--user/password-store/APKBUILD4
-rw-r--r--user/pciutils/APKBUILD4
-rw-r--r--user/perl-algorithm-diff/APKBUILD34
-rw-r--r--user/perl-any-moose/APKBUILD34
-rw-r--r--user/perl-anyevent/APKBUILD34
-rw-r--r--user/perl-appconfig/APKBUILD33
-rw-r--r--user/perl-b-hooks-endofscope/APKBUILD34
-rw-r--r--user/perl-canary-stability/APKBUILD34
-rw-r--r--user/perl-capture-tiny/APKBUILD43
-rw-r--r--user/perl-cgi/APKBUILD34
-rw-r--r--user/perl-class-data-inheritable/APKBUILD33
-rw-r--r--user/perl-class-load-xs/APKBUILD34
-rw-r--r--user/perl-class-load/APKBUILD35
-rw-r--r--user/perl-class-method-modifiers/APKBUILD35
-rw-r--r--user/perl-class-xsaccessor/APKBUILD33
-rw-r--r--user/perl-code-tidyall/APKBUILD40
-rw-r--r--user/perl-common-sense/APKBUILD34
-rw-r--r--user/perl-config-ini/APKBUILD33
-rw-r--r--user/perl-cpan-meta-check/APKBUILD34
-rw-r--r--user/perl-cwd-guard/APKBUILD39
-rw-r--r--user/perl-data-dump/APKBUILD32
-rw-r--r--user/perl-data-optlist/APKBUILD34
-rw-r--r--user/perl-devel-checkcompiler/APKBUILD39
-rw-r--r--user/perl-devel-globaldestruction/APKBUILD34
-rw-r--r--user/perl-devel-overloadinfo/APKBUILD34
-rw-r--r--user/perl-devel-stacktrace/APKBUILD33
-rw-r--r--user/perl-devel-symdump/APKBUILD34
-rw-r--r--user/perl-dist-checkconflicts/APKBUILD34
-rw-r--r--user/perl-env-path/APKBUILD33
-rw-r--r--user/perl-eval-closure/APKBUILD34
-rw-r--r--user/perl-exception-class/APKBUILD33
-rw-r--r--user/perl-exporter-lite/APKBUILD33
-rw-r--r--user/perl-exporter-tiny/APKBUILD33
-rw-r--r--user/perl-extutils-depends/APKBUILD34
-rw-r--r--user/perl-file-copy-recursive-reduced/APKBUILD35
-rw-r--r--user/perl-file-copy-recursive/APKBUILD35
-rw-r--r--user/perl-file-find-object-rule/APKBUILD34
-rw-r--r--user/perl-file-find-object/APKBUILD33
-rw-r--r--user/perl-file-finder/APKBUILD36
-rw-r--r--user/perl-file-finder/fix-test.patch16
-rw-r--r--user/perl-file-pushd/APKBUILD33
-rw-r--r--user/perl-file-sharedir-install/APKBUILD34
-rw-r--r--user/perl-file-slurp/APKBUILD34
-rw-r--r--user/perl-file-which/APKBUILD33
-rw-r--r--user/perl-games-solitaire-verify/APKBUILD35
-rw-r--r--user/perl-getopt-long-descriptive/APKBUILD34
-rw-r--r--user/perl-import-into/APKBUILD33
-rw-r--r--user/perl-inline-c/APKBUILD35
-rw-r--r--user/perl-inline/APKBUILD35
-rw-r--r--user/perl-io-all/APKBUILD33
-rw-r--r--user/perl-io-stringy/APKBUILD41
-rw-r--r--user/perl-io-tty/APKBUILD33
-rw-r--r--user/perl-ipc-run/APKBUILD34
-rw-r--r--user/perl-ipc-run3/APKBUILD33
-rw-r--r--user/perl-ipc-system-simple/APKBUILD33
-rw-r--r--user/perl-json-xs/APKBUILD34
-rw-r--r--user/perl-lib-relative/APKBUILD33
-rw-r--r--user/perl-list-compare/APKBUILD33
-rw-r--r--user/perl-list-moreutils-xs/APKBUILD33
-rw-r--r--user/perl-list-moreutils/APKBUILD33
-rw-r--r--user/perl-list-someutils-xs/APKBUILD34
-rw-r--r--user/perl-list-someutils/APKBUILD34
-rw-r--r--user/perl-log-any/APKBUILD33
-rw-r--r--user/perl-mixin-linewise/APKBUILD33
-rw-r--r--user/perl-module-build-xsutil/APKBUILD39
-rw-r--r--user/perl-module-implementation/APKBUILD34
-rw-r--r--user/perl-module-runtime-conflicts/APKBUILD33
-rw-r--r--user/perl-module-runtime/APKBUILD35
-rw-r--r--user/perl-moo/APKBUILD36
-rw-r--r--user/perl-moose/APKBUILD40
-rw-r--r--user/perl-moosex-getopt/APKBUILD36
-rw-r--r--user/perl-moosex-role-parameterised/APKBUILD35
-rw-r--r--user/perl-moosex-strictconstructor/APKBUILD34
-rw-r--r--user/perl-moox-late/APKBUILD34
-rw-r--r--user/perl-moox/APKBUILD33
-rw-r--r--user/perl-mouse/APKBUILD40
-rw-r--r--user/perl-mousex-nativetraits/APKBUILD35
-rw-r--r--user/perl-mro-compat/APKBUILD33
-rw-r--r--user/perl-namespace-autoclean/APKBUILD34
-rw-r--r--user/perl-namespace-clean/APKBUILD33
-rw-r--r--user/perl-number-compare/APKBUILD33
-rw-r--r--user/perl-package-deprecationmanager/APKBUILD34
-rw-r--r--user/perl-package-stash-xs/APKBUILD34
-rw-r--r--user/perl-package-stash/APKBUILD34
-rw-r--r--user/perl-params-util/APKBUILD35
-rw-r--r--user/perl-params-validate/APKBUILD34
-rw-r--r--user/perl-parse-recdescent/APKBUILD35
-rw-r--r--user/perl-path-tiny/APKBUILD35
-rw-r--r--user/perl-pegex/APKBUILD35
-rw-r--r--user/perl-perl-tidy/APKBUILD33
-rw-r--r--user/perl-perlio-utf8_strict/APKBUILD34
-rw-r--r--user/perl-pod-coverage/APKBUILD34
-rw-r--r--user/perl-role-tiny/APKBUILD34
-rw-r--r--user/perl-scope-guard/APKBUILD33
-rw-r--r--user/perl-specio-library-path-tiny/APKBUILD33
-rw-r--r--user/perl-specio/APKBUILD36
-rw-r--r--user/perl-string-shellquote/APKBUILD33
-rw-r--r--user/perl-sub-exporter-progressive/APKBUILD34
-rw-r--r--user/perl-sub-exporter/APKBUILD43
-rw-r--r--user/perl-sub-identify/APKBUILD33
-rw-r--r--user/perl-sub-install/APKBUILD34
-rw-r--r--user/perl-sub-name/APKBUILD33
-rw-r--r--user/perl-sub-quote/APKBUILD34
-rw-r--r--user/perl-task-freecellsolver-testing/APKBUILD38
-rw-r--r--user/perl-task-test-run-allplugins/APKBUILD38
-rw-r--r--user/perl-template-toolkit/APKBUILD34
-rw-r--r--user/perl-test-class-most/APKBUILD33
-rw-r--r--user/perl-test-class/APKBUILD34
-rw-r--r--user/perl-test-cleannamespaces/APKBUILD36
-rw-r--r--user/perl-test-data-split/APKBUILD34
-rw-r--r--user/perl-test-deep/APKBUILD34
-rw-r--r--user/perl-test-differences/APKBUILD34
-rw-r--r--user/perl-test-file/APKBUILD35
-rw-r--r--user/perl-test-mockrandom/APKBUILD34
-rw-r--r--user/perl-test-most/APKBUILD33
-rw-r--r--user/perl-test-output/APKBUILD44
-rw-r--r--user/perl-test-perltidy/APKBUILD33
-rw-r--r--user/perl-test-pod-coverage/APKBUILD35
-rw-r--r--user/perl-test-run-cmdline/APKBUILD35
-rw-r--r--user/perl-test-run-plugin-ai/APKBUILD33
-rw-r--r--user/perl-test-run-plugin-bof/APKBUILD33
-rw-r--r--user/perl-test-run-plugin-cfv/APKBUILD34
-rw-r--r--user/perl-test-run-plugin-cs/APKBUILD34
-rw-r--r--user/perl-test-run-plugin-tdf/APKBUILD33
-rw-r--r--user/perl-test-run/APKBUILD35
-rw-r--r--user/perl-test-runvalgrind/APKBUILD36
-rw-r--r--user/perl-test-runvalgrind/portable-memory-assumptions.patch14
-rw-r--r--user/perl-test-trailingspace/APKBUILD33
-rw-r--r--user/perl-test-trap/APKBUILD33
-rw-r--r--user/perl-test-utf8/APKBUILD34
-rw-r--r--user/perl-test-warnings/APKBUILD34
-rw-r--r--user/perl-text-diff/APKBUILD34
-rw-r--r--user/perl-text-glob/APKBUILD33
-rw-r--r--user/perl-text-sprintf-named/APKBUILD34
-rw-r--r--user/perl-time-duration-parse/APKBUILD33
-rw-r--r--user/perl-time-duration/APKBUILD33
-rw-r--r--user/perl-timedate/APKBUILD33
-rw-r--r--user/perl-type-tiny/APKBUILD33
-rw-r--r--user/perl-types-serialiser/APKBUILD34
-rw-r--r--user/perl-universal-require/APKBUILD33
-rw-r--r--user/perl-variable-magic/APKBUILD33
-rw-r--r--user/perl-x11-xcb/APKBUILD38
-rw-r--r--user/perl-xml-descent/APKBUILD35
-rw-r--r--user/perl-xml-namespacesupport/APKBUILD32
-rw-r--r--user/perl-xml-simple/APKBUILD32
-rw-r--r--user/perl-xml-tokeparser/APKBUILD34
-rw-r--r--user/perl-xs-object-magic/APKBUILD36
-rw-r--r--user/perl-yaml-libyaml/APKBUILD35
-rw-r--r--user/php7/APKBUILD4
-rw-r--r--user/physlock/APKBUILD28
-rw-r--r--user/physlock/utmps.patch33
-rw-r--r--user/pigz/APKBUILD35
-rw-r--r--user/plasma-framework/APKBUILD4
-rw-r--r--user/polkit/APKBUILD6
-rw-r--r--user/polkit/polkit.pre-install5
-rw-r--r--user/poppler-qt5/APKBUILD4
-rw-r--r--user/poppler/APKBUILD4
-rw-r--r--user/postgresql/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/APKBUILD108
-rw-r--r--user/protobuf/musl-fix.patch22
-rw-r--r--user/protobuf/trim-rakefile.patch72
-rw-r--r--user/pulseaudio/APKBUILD3
-rw-r--r--user/py3-attrs/APKBUILD32
-rw-r--r--user/py3-cffi/APKBUILD32
-rw-r--r--user/py3-cparser/APKBUILD31
-rw-r--r--user/py3-distutils-extra/APKBUILD29
-rw-r--r--user/py3-lxml/APKBUILD4
-rw-r--r--user/py3-more-itertools/APKBUILD33
-rw-r--r--user/py3-pexpect/APKBUILD30
-rw-r--r--user/py3-ptyprocess/APKBUILD30
-rw-r--r--user/py3-pycairo/APKBUILD36
-rw-r--r--user/py3-pycotap/APKBUILD32
-rw-r--r--user/py3-pygobject/APKBUILD31
-rw-r--r--user/py3-pytest/APKBUILD4
-rw-r--r--user/py3-six/APKBUILD3
-rw-r--r--user/qemu/spapr-page-size.patch30
-rw-r--r--user/qpdf/APKBUILD4
-rw-r--r--user/re2c/APKBUILD4
-rw-r--r--user/redis/APKBUILD6
-rw-r--r--user/ristretto/APKBUILD38
-rw-r--r--user/rocs/APKBUILD4
-rw-r--r--user/rpcbind/APKBUILD43
-rw-r--r--user/rpcbind/rpcbind.confd5
-rw-r--r--user/rpcbind/rpcbind.initd25
-rw-r--r--user/rpcbind/rpcbind.pre-install6
l---------user/rpcbind/rpcbind.pre-upgrade1
-rw-r--r--user/rsibreak/APKBUILD4
-rw-r--r--user/rust/0001-Require-static-native-libraries-when-linking-static-.patch44
-rw-r--r--user/rust/0002-Don-t-pass-CFLAGS-to-the-C-compiler.patch36
-rw-r--r--user/rust/0003-Fix-LLVM-build.patch26
-rw-r--r--user/rust/0004-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch25
-rw-r--r--user/rust/0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch444
-rw-r--r--user/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch24
-rw-r--r--user/rust/0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch37
-rw-r--r--user/rust/0008-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch36
-rw-r--r--user/rust/0009-Add-missing-OpenSSL-configurations-for-musl-targets.patch42
-rw-r--r--user/rust/0010-test-linkage-visibility-dlsym-only-sees-exported-sym.patch26
-rw-r--r--user/rust/0011-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch25
-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.patch92
-rw-r--r--user/rust/0017-Use-the-ELFv2-ABI-on-powerpc64-musl.patch43
-rw-r--r--user/rust/0018-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch93
-rw-r--r--user/rust/0019-Add-powerpc64-unknown-linux-musl-target.patch118
-rw-r--r--user/rust/0020-run-pass-const-endianness-negate-before-to_le.patch29
-rw-r--r--user/rust/0021-Fix-double_check-tests-on-big-endian-targets.patch75
-rw-r--r--user/rust/0022-x.py-Use-python3-instead-of-python.patch22
-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.patch48
-rw-r--r--user/rust/0026-Link-stage-2-tools-dynamically-to-libstd.patch27
-rw-r--r--user/rust/0027-Move-debugger-scripts-to-usr-share-rust.patch53
-rw-r--r--user/rust/0028-Add-foxkit-target-specs.patch240
-rw-r--r--user/rust/0029-Work-around-libbacktrace-built-with-fstack-protector.patch47
-rw-r--r--user/rust/0030-liblibc-linkage.patch17
-rw-r--r--user/rust/0031-liblibc-0163a7ce20b5.patch1343
-rw-r--r--user/rust/0032-libc-dcff154781e4.patch642
-rw-r--r--user/rust/0033-libc-90c01fa6b0f4.patch162
-rw-r--r--user/rust/0034-libc-0163a7ce20b5.patch1343
-rw-r--r--user/rust/0035-libc-checksums.patch9
-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.patch63
-rw-r--r--user/rust/APKBUILD351
-rw-r--r--user/schismtracker/APKBUILD4
-rw-r--r--user/screen/APKBUILD43
-rw-r--r--user/screen/utmpx.patch21
-rw-r--r--user/sdl2_image/APKBUILD4
-rw-r--r--user/sdl_mixer/APKBUILD44
-rw-r--r--user/sdl_net/APKBUILD46
-rw-r--r--user/sdl_ttf/APKBUILD45
-rw-r--r--user/shunit2/APKBUILD33
-rw-r--r--user/shunit2/dash-negative-lineno.patch197
-rw-r--r--user/solid/APKBUILD4
-rw-r--r--user/sonnet/APKBUILD4
-rw-r--r--user/spectacle/APKBUILD4
-rw-r--r--user/spice/APKBUILD10
-rw-r--r--user/sshfs/APKBUILD45
-rw-r--r--user/step/APKBUILD6
-rw-r--r--user/stow/APKBUILD37
-rw-r--r--user/strongswan/0205-ike-Adhere-to-IKE_SA-limit-when-checking-out-by-conf.patch104
-rw-r--r--user/strongswan/1001-charon-add-optional-source-and-remote-overrides-for-.patch597
-rw-r--r--user/strongswan/1002-vici-send-certificates-for-ike-sa-events.patch131
-rw-r--r--user/strongswan/1003-vici-add-support-for-individual-sa-state-changes.patch159
-rw-r--r--user/strongswan/APKBUILD108
-rw-r--r--user/strongswan/charon.initd30
-rw-r--r--user/strongswan/strongswan.initd35
-rw-r--r--user/strongswan/strongswan.pre-install6
-rw-r--r--user/syntax-highlighting/APKBUILD4
-rw-r--r--user/tcpdump/APKBUILD38
-rw-r--r--user/tcsh/001-sysmalloc.patch15
-rw-r--r--user/tcsh/002-test_123-posix_fix.patch34
-rw-r--r--user/tcsh/APKBUILD47
-rw-r--r--user/tcsh/tcsh.post-install3
l---------user/tcsh/tcsh.post-upgrade1
-rw-r--r--user/tcsh/tcsh.pre-deinstall3
-rw-r--r--user/terminus-font/APKBUILD35
-rw-r--r--user/the_silver_searcher/APKBUILD40
-rw-r--r--user/threadweaver/APKBUILD4
-rw-r--r--user/thunar-volman/APKBUILD37
-rw-r--r--user/thunar/APKBUILD40
-rw-r--r--user/tint2/APKBUILD4
-rw-r--r--user/tlp/APKBUILD52
-rwxr-xr-xuser/tlp/tlp.initd15
-rw-r--r--user/tumbler/APKBUILD40
-rw-r--r--user/udisks2/APKBUILD4
-rw-r--r--user/umbrello/APKBUILD4
-rw-r--r--user/unifont/APKBUILD4
-rw-r--r--user/unixodbc/APKBUILD4
-rw-r--r--user/unrar/APKBUILD4
-rw-r--r--user/upower/APKBUILD8
-rw-r--r--user/usbredir/APKBUILD6
-rw-r--r--user/vala/APKBUILD36
-rw-r--r--user/valgrind/0001-Ensure-ELFv2-is-supported-on-PPC64.patch817
-rw-r--r--user/valgrind/APKBUILD13
-rw-r--r--user/valgrind/coregrind-elfv2.patch443
-rw-r--r--user/valgrind/suppressions.patch24
-rw-r--r--user/vlc/APKBUILD2
-rw-r--r--user/volume_key/APKBUILD4
-rw-r--r--user/vte/APKBUILD39
-rw-r--r--user/vte/exitcode.patch12
-rw-r--r--user/which/APKBUILD34
-rw-r--r--user/wireless-tools/APKBUILD7
-rw-r--r--user/wpa_supplicant/APKBUILD19
-rw-r--r--user/x265/APKBUILD8
-rw-r--r--user/x265/build-on-any-non-x86.patch24
-rw-r--r--user/x265/work-on-any-non-x86.patch11
-rw-r--r--user/xapian-core/APKBUILD4
-rw-r--r--user/xautolock/APKBUILD30
-rw-r--r--user/xautolock/processwait.patch33
-rw-r--r--user/xcb-util-xrm/APKBUILD37
-rw-r--r--user/xdotool/APKBUILD34
-rw-r--r--user/xf86-input-libinput/APKBUILD4
-rw-r--r--user/xf86-video-ati/APKBUILD6
-rw-r--r--user/xf86-video-intel/APKBUILD47
-rw-r--r--user/xf86-video-nouveau/APKBUILD41
-rw-r--r--user/xf86-video-nouveau/dont-strcmp-null.patch33
-rw-r--r--user/xfburn/APKBUILD38
-rw-r--r--user/xfce-desktop/APKBUILD28
-rw-r--r--user/xfce-desktop/org.adelie-linux.about-xfce.desktop8
-rw-r--r--user/xfce4-appfinder/APKBUILD37
-rw-r--r--user/xfce4-dict/APKBUILD36
-rw-r--r--user/xfce4-notifyd/APKBUILD38
-rw-r--r--user/xfce4-panel-profiles/APKBUILD33
-rw-r--r--user/xfce4-panel/APKBUILD38
-rw-r--r--user/xfce4-power-manager/APKBUILD38
-rw-r--r--user/xfce4-screenshooter/APKBUILD36
-rw-r--r--user/xfce4-session/APKBUILD38
-rw-r--r--user/xfce4-settings/APKBUILD40
-rw-r--r--user/xfce4-taskmanager/APKBUILD36
-rw-r--r--user/xfce4-terminal/APKBUILD37
-rw-r--r--user/xfce4-volumed-pulse/APKBUILD35
-rw-r--r--user/xfconf/APKBUILD47
-rw-r--r--user/xfdashboard/APKBUILD38
-rw-r--r--user/xfdesktop/APKBUILD38
-rw-r--r--user/xfmpc/APKBUILD37
-rw-r--r--user/xfwm4/APKBUILD38
-rw-r--r--user/xinput/APKBUILD33
-rw-r--r--user/xkeyboard-config/APKBUILD4
-rw-r--r--user/xmoto/APKBUILD58
-rw-r--r--user/xmoto/stupid-lua.patch41
-rw-r--r--user/xmoto/utf8.patch13
-rw-r--r--user/xorg-cf-files/APKBUILD38
-rw-r--r--user/xorg-server/APKBUILD4
-rw-r--r--user/xorriso/APKBUILD4
-rw-r--r--user/xterm/APKBUILD4
-rw-r--r--user/xwininfo/APKBUILD34
709 files changed, 29469 insertions, 3955 deletions
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/alsa-lib/APKBUILD b/user/alsa-lib/APKBUILD
index a6cc3701e..2ef986f59 100644
--- a/user/alsa-lib/APKBUILD
+++ b/user/alsa-lib/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=alsa-lib
-pkgver=1.1.6
+pkgver=1.1.7
pkgrel=0
pkgdesc="Linux sound support system"
url="http://www.alsa-project.org"
@@ -47,6 +47,6 @@ package() {
make -j1 DESTDIR="$pkgdir" install
}
-sha512sums="00117769a3d5c609019b975188d6e7a07d035bd0461f54c5f291e14667620506f1adb6d61350f78d54648850f31965aae3ab0e697bf9e09c988e2d15bf6b09f0 alsa-lib-1.1.6.tar.bz2
+sha512sums="7cc81464d876a137e9ac9700420bfff7cd528338bdc6e0bdbe313d45c5b97c81f1a9483df0556fe390d54a9db747fbec62e843b42d2cbc740d5a91b015714f6c alsa-lib-1.1.7.tar.bz2
3b37652d50809443b5f8e80f8d447108195b0cd66fd917805bb393fc091584b6f3dad4414f568742b61745617e7a695862058a0a0f93dcc31e4c97177a520352 ucm_add_limits_h.patch
8ef518517647b702da7f3573f4f3f10be8bbac3f092834b38c59521f7236acae258a9afe65eebfa415828135ac8a1836e3dce83ee3f0eaf4403158a48802144d remove-test.patch"
diff --git a/user/alsa-plugins/APKBUILD b/user/alsa-plugins/APKBUILD
new file mode 100644
index 000000000..b194830ad
--- /dev/null
+++ b/user/alsa-plugins/APKBUILD
@@ -0,0 +1,69 @@
+# Contributor: Taner Tas <taner76@gmail.com>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=alsa-plugins
+pkgver=1.1.7
+pkgrel=0
+pkgdesc="Advanced Linux Sound Architecture (ALSA) plugins"
+url="https://www.alsa-project.org/main/index.php/Main_Page"
+arch="all"
+options="!check" # No test suite.
+license="GPL-2.0+ AND LGPL-2.1+ AND BSD-3-Clause AND MIT"
+makedepends="linux-headers alsa-lib-dev speexdsp-dev ffmpeg-dev
+ libsamplerate-dev pulseaudio-dev"
+subpackages="$pkgname-lavcrate $pkgname-pulse $pkgname-a52"
+source="ftp://ftp.alsa-project.org/pub/plugins/$pkgname-$pkgver.tar.bz2"
+
+prepare() {
+ default_prepare
+ update_config_sub
+}
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" -name '*.la' -type f -delete
+ rm "$pkgdir"/etc/alsa/conf.d/*.conf
+}
+
+lavcrate() {
+ pkgdesc="FFmpeg samplerate conversion plugins for ALSA"
+ mkdir -p "$subpkgdir"/usr/lib/alsa-lib/ \
+ "$subpkgdir"/usr/share/alsa/alsa.conf.d/
+ mv "$pkgdir"/usr/lib/alsa-lib/*lavrate* "$subpkgdir"/usr/lib/alsa-lib/
+ mv "$pkgdir"/usr/share/alsa/alsa.conf.d/*rate-lav* \
+ "$subpkgdir"/usr/share/alsa/alsa.conf.d/
+}
+
+pulse() {
+ pkgdesc="PulseAudio support for ALSA-only applications"
+ mkdir -p "$subpkgdir"/usr/lib/alsa-lib/ \
+ "$subpkgdir"/usr/share/alsa/alsa.conf.d/
+ mv "$pkgdir"/usr/lib/alsa-lib/*pulse.so "$subpkgdir"/usr/lib/alsa-lib/
+ mv "$pkgdir"/usr/share/alsa/alsa.conf.d/*pulse* \
+ "$subpkgdir"/usr/share/alsa/alsa.conf.d/
+ mv "$pkgdir"/etc/alsa/conf.d/*pulse* \
+ "$subpkgdir"/usr/share/alsa/alsa.conf.d/
+}
+
+a52() {
+ pkgdesc="S16 linear sound format to A52 compressed format for SPDIF output"
+ mkdir -p "$subpkgdir"/usr/lib/alsa-lib/ \
+ "$subpkgdir"/usr/share/alsa/alsa.conf.d/
+ mv "$pkgdir"/usr/lib/alsa-lib/*a52.so "$subpkgdir"/usr/lib/alsa-lib/
+ mv "$pkgdir"/usr/share/alsa/alsa.conf.d/*a52* \
+ "$subpkgdir"/usr/share/alsa/alsa.conf.d/
+}
+
+sha512sums="c3bb22ec3c5a167fb246cfc94131d53800e321b486ab743c3395a9d91dee0ff9703f6e4a2feaea5a4ee42a7e486d835d48ab880c784c5c34bb4eb5e9ded06d8e alsa-plugins-1.1.7.tar.bz2"
diff --git a/user/alsa-utils/APKBUILD b/user/alsa-utils/APKBUILD
new file mode 100644
index 000000000..5f36f3f1c
--- /dev/null
+++ b/user/alsa-utils/APKBUILD
@@ -0,0 +1,49 @@
+# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=alsa-utils
+pkgver=1.1.7
+pkgrel=0
+pkgdesc="Advanced Linux Sound Architecture (ALSA) utilities"
+url="https://www.alsa-project.org/main/index.php/Main_Page"
+arch="all"
+options="!check" # No test suite.
+license="GPL-2.0+ AND LGPL-2.0+ AND ISC AND GPL-2.0-only"
+makedepends="alsa-lib-dev fftw-dev ncurses-dev pciutils-dev"
+depends="bash dialog"
+subpackages="$pkgname-doc $pkgname-dbg $pkgname-lang $pkgname-openrc"
+replaces="alsaconf"
+source="ftp://ftp.alsa-project.org/pub/utils/$pkgname-$pkgver.tar.bz2
+ alsaconf.patch
+ alsa.initd
+ alsa.confd
+"
+
+prepare() {
+ default_prepare
+ update_config_sub
+}
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --disable-xmlto
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ install -Dm755 ../alsa.initd "$pkgdir"/etc/init.d/alsa
+ install -Dm644 ../alsa.confd "$pkgdir"/etc/conf.d/alsa
+}
+
+sha512sums="5da9b03e219d67634307bd5bb06b76734db5286221bec11658ce9c4dfca8ed639a4155ed90450f1d6c8db322960bb023ced0873e276500ce24f14fab17ceeb65 alsa-utils-1.1.7.tar.bz2
+817215be6e9f103a8a187df5b1142c4d2e952f547a64579a9b8cfa58bd762d6a55bde75c0f66f018c0597744d07ccdb08216f7b368db464e36667cecedcc00f3 alsaconf.patch
+8a52e6363d5dcfb16e1e607e1af3e46a2148989689e5ab04caf05f84dc68b34cc003b1cf0945ce2c3670cc7f3ef0e40824f689f1efa2d09177c82b13571a7168 alsa.initd
+6e716e6230fd3d2c33e3cb2dbf572d632c9ac6452c1768388bea7d3ca22f7c72cf6bcd702580f45cb9089983582011c8b04cbdb4420d14fb988167b1391ea547 alsa.confd"
diff --git a/user/alsa-utils/alsa.confd b/user/alsa-utils/alsa.confd
new file mode 100644
index 000000000..d47edb124
--- /dev/null
+++ b/user/alsa-utils/alsa.confd
@@ -0,0 +1,15 @@
+# RESTORE_ON_START:
+# Do you want to restore your mixer settings? If not, your cards will be
+# muted.
+# no - Do not restore state
+# yes - Restore state
+
+RESTORE_ON_START="yes"
+
+# SAVE_ON_STOP:
+# Do you want to save changes made to your mixer volumes when alsasound
+# stops?
+# no - Do not save state
+# yes - Save state
+
+SAVE_ON_STOP="yes"
diff --git a/user/alsa-utils/alsa.initd b/user/alsa-utils/alsa.initd
new file mode 100644
index 000000000..e0a1215cf
--- /dev/null
+++ b/user/alsa-utils/alsa.initd
@@ -0,0 +1,88 @@
+#!/sbin/openrc-run
+# $Header: /var/cvsroot/gentoo-x86/media-sound/alsa-utils/files/alsasound.initd-r6,v 1.1 2014/06/23 21:34:42 ssuominen Exp $
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+alsastatedir=/var/lib/alsa
+alsascrdir=/etc/alsa.d
+alsahomedir=/var/run/alsasound
+
+extra_commands="save restore"
+
+depend() {
+ need localmount
+ after bootmisc modules isapnp coldplug hotplug
+}
+
+restore() {
+ ebegin "Restoring Mixer Levels"
+
+ checkpath -q -d -m 0700 -o root:root ${alsahomedir} || return 1
+
+ if [ ! -r "${alsastatedir}/asound.state" ] ; then
+ ewarn "No mixer config in ${alsastatedir}/asound.state, you have to unmute your card!"
+ eend 0
+ return 0
+ fi
+
+ local cards="$(sed -n -e 's/ *\([[:digit:]]*\) .*/\1/p' /proc/asound/cards)"
+ local CARDNUM
+ for cardnum in ${cards}; do
+ [ -e /dev/snd/controlC${cardnum} ] || sleep 2
+ [ -e /dev/snd/controlC${cardnum} ] || sleep 2
+ [ -e /dev/snd/controlC${cardnum} ] || sleep 2
+ [ -e /dev/snd/controlC${cardnum} ] || sleep 2
+ alsactl -E HOME="${alsahomedir}" -I -f "${alsastatedir}/asound.state" restore ${cardnum} \
+ || ewarn "Errors while restoring defaults, ignoring"
+ done
+
+ for ossfile in "${alsastatedir}"/oss/card*_pcm* ; do
+ [ -e "${ossfile}" ] || continue
+ # We use cat because I'm not sure if cp works properly on /proc
+ local procfile=${ossfile##${alsastatedir}/oss}
+ procfile="$(echo "${procfile}" | sed -e 's,_,/,g')"
+ if [ -e /proc/asound/"${procfile}"/oss ] ; then
+ cat "${ossfile}" > /proc/asound/"${procfile}"/oss
+ fi
+ done
+
+ eend 0
+}
+
+save() {
+ ebegin "Storing ALSA Mixer Levels"
+
+ checkpath -q -d -m 0700 -o root:root ${alsahomedir} || return 1
+
+ mkdir -p "${alsastatedir}"
+ if ! alsactl -E HOME="${alsahomedir}" -f "${alsastatedir}/asound.state" store; then
+ eerror "Error saving levels."
+ eend 1
+ return 1
+ fi
+
+ for ossfile in /proc/asound/card*/pcm*/oss; do
+ [ -e "${ossfile}" ] || continue
+ local device=${ossfile##/proc/asound/} ; device=${device%%/oss}
+ device="$(echo "${device}" | sed -e 's,/,_,g')"
+ mkdir -p "${alsastatedir}/oss/"
+ cp "${ossfile}" "${alsastatedir}/oss/${device}"
+ done
+
+ eend 0
+}
+
+start() {
+ if [ "${RESTORE_ON_START}" = "yes" ]; then
+ restore
+ fi
+
+ return 0
+}
+
+stop() {
+ if [ "${SAVE_ON_STOP}" = "yes" ]; then
+ save
+ fi
+ return 0
+}
diff --git a/user/alsa-utils/alsaconf.patch b/user/alsa-utils/alsaconf.patch
new file mode 100644
index 000000000..a7dec1c9a
--- /dev/null
+++ b/user/alsa-utils/alsaconf.patch
@@ -0,0 +1,12 @@
+diff -Naur alsa-utils-1.0.9a-orig/alsaconf/alsaconf.in alsa-utils-1.0.9a/alsaconf/alsaconf.in
+--- alsa-utils-1.0.9a-orig/alsaconf/alsaconf.in 2005-03-24 00:24:52.000000000 -0800
++++ alsa-utils-1.0.9a/alsaconf/alsaconf.in 2005-07-18 09:25:02.000000000 -0700
+@@ -65,6 +58,8 @@
+ distribution="redhat"
+ elif test -f /etc/fedora-release && grep -q "Fedora" /etc/fedora-release; then
+ distribution="fedora"
++elif test -f /etc/adelie-release; then
++ distribution="adelie"
+ elif [ -f /etc/slackware-version -o -f /etc/slamd64-version ]; then
+ distribution="slackware"
+ else
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/apache-httpd/APKBUILD b/user/apache-httpd/APKBUILD
index 2eabdaf90..84db40dc6 100644
--- a/user/apache-httpd/APKBUILD
+++ b/user/apache-httpd/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=apache-httpd
_pkgreal=httpd
-pkgver=2.4.34
+pkgver=2.4.35
pkgrel=0
pkgdesc="Open-source HTTP server"
url="https://httpd.apache.org"
@@ -135,7 +135,7 @@ ldap() {
"$subpkgdir"/usr/libexec/apache2
}
-sha512sums="2bc09213f08a4722e305929fbac5f5060c7a8444704494894bb9b61f17e4d20bb6e3d663bb93fc5b2030b04a43fb12373d260cc291422b210b299725aaf3b5c8 httpd-2.4.34.tar.bz2
+sha512sums="f5d6a849850ebdf4e38b586c84cc1063d68ac4c6737895c9ac1c8796c22655681c55b4de77ed9f1f807338fdb9f7824faf911361aa31cc46f3c3a2cbabe20543 httpd-2.4.35.tar.bz2
c8bc2bb06ae51b0956e0ee673e80c444551c9b33dfcbb845106477c46d9e52786a8896022e1f00102264fecdf66e35e47fc6cf0abe9836fa536735cff4e6adf4 adelie.layout
336e81fa0d08f8fbe6243d52bd59b12cf2e925deb49b29d7a22953c5d40a951b6b753f51e5a396752cb0bbaf1cf25b1358902f375fb65639d00e62db7ae55ff2 apache-httpd.confd
9893248f1724748c9ef91171728b4c557ced7de543e23ed72cb75c02728048b2813ac99015a4a28e7984daa51faa6e42403c17b875539fe71c33424865eccecf apache-httpd.initd
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/audacious-plugins/APKBUILD b/user/audacious-plugins/APKBUILD
index 150efce23..8a4742252 100644
--- a/user/audacious-plugins/APKBUILD
+++ b/user/audacious-plugins/APKBUILD
@@ -2,8 +2,8 @@
# Contributor: William Pitcock <nenolod@dereferenced.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=audacious-plugins
-pkgver=3.9
-pkgrel=2
+pkgver=3.10
+pkgrel=0
pkgdesc="Playlist-oriented media player (plugins)"
url="https://audacious-media-player.org/"
arch="all"
@@ -17,6 +17,7 @@ makedepends="audacious-dev>=${pkgver%.*}
libcue-dev libmms-dev libsamplerate-dev libsndfile-dev libxcomposite-dev
libnotify-dev libogg-dev libvorbis-dev pulseaudio-dev
alsa-lib-dev curl-dev flac-dev lame-dev neon-dev sdl-dev wavpack-dev
+ faad2-dev fluidsynth-dev qt5-qtmultimedia-dev
automake autoconf"
subpackages="$pkgname-lang"
source="https://distfiles.audacious-media-player.org/$pkgname-$pkgver.tar.bz2"
@@ -46,4 +47,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="00c8c53d69995ca1fedb91c7df609cc6c65b13e1af23b98a2fbda143c02ac554cc2c42c01f1c593af252e36bfb85b6324f2daca8632d3b672c69fb4dead2e3fa audacious-plugins-3.9.tar.bz2"
+sha512sums="88dd93b5a7f6582ec42cf539d1000de0900cce683f4de85d8a17f57c7ba34545c6277882cad1505cb6682ee7b885ffcd1fe5675f7e24dc3e2a650615789d9d52 audacious-plugins-3.10.tar.bz2"
diff --git a/user/audacious/APKBUILD b/user/audacious/APKBUILD
index e4a2377c7..de1cc6993 100644
--- a/user/audacious/APKBUILD
+++ b/user/audacious/APKBUILD
@@ -2,8 +2,8 @@
# Contributor: William Pitcock <nenolod@dereferenced.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=audacious
-pkgver=3.9
-pkgrel=2
+pkgver=3.10
+pkgrel=0
pkgdesc="A playlist-oriented media player with multiple interfaces"
url="https://audacious-media-player.org/"
arch="all"
@@ -12,7 +12,9 @@ license="ISC"
depends_dev="qt5-qtbase-dev dbus-glib-dev"
makedepends="$depends_dev libguess-dev>=1.2 libxml2-dev autoconf automake"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="https://distfiles.audacious-media-player.org/$pkgname-$pkgver.tar.bz2"
+source="https://distfiles.audacious-media-player.org/$pkgname-$pkgver.tar.bz2
+ qt-crash.patch
+ "
prepare() {
default_prepare
@@ -38,4 +40,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="d8ef24c91c84bfa80831075cd9a12fc4bf02cec8bc96bcfa5a941254d194cccdc482482b1c015bc63e1142718c2221034c0f3a87e2cb6e4daf3b4cc428328aaa audacious-3.9.tar.bz2"
+sha512sums="513d5f9608c1ebeae9cf9bb95128244e990e66c74bf49aff6570ec557d537809f3ebf93c400f5df2708ff61cf04ecc95da183b111f5a757735cef5a68dd9907f audacious-3.10.tar.bz2
+debc016b8a2a1313bdd4a840c103755a52a7e4a5e21970ca82031bac101253f04ade3e81aa648cf5f44b8225da6e1b245f995df6ea43f2ed1f2e757d774205d4 qt-crash.patch"
diff --git a/user/audacious/qt-crash.patch b/user/audacious/qt-crash.patch
new file mode 100644
index 000000000..4b7d42d3b
--- /dev/null
+++ b/user/audacious/qt-crash.patch
@@ -0,0 +1,43 @@
+From 61471d51503736d868f5978f5b9a1471f3d2c9ce Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Thu, 20 Sep 2018 12:36:16 -0500
+Subject: [PATCH] libaudqt: Fix crash when infopopup is being hidden
+
+Hovering over the track I wanted to listen to showed a tool tip (the
+InfoPopup widget); if I moved the mouse in any way after the widget was
+displayed, it would immediately crash with a segmentation fault.
+
+Valgrind showed that this was due to s_infopopup being deleted from an
+event that involved it. By switching both `delete` to `deleteLater`,
+the crash no longer occurs.
+
+Closes: #828.
+---
+ src/libaudqt/infopopup-qt.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/libaudqt/infopopup-qt.cc b/src/libaudqt/infopopup-qt.cc
+index fdbba41d2..cad4d16d5 100644
+--- a/src/libaudqt/infopopup-qt.cc
++++ b/src/libaudqt/infopopup-qt.cc
+@@ -176,7 +176,7 @@ static InfoPopup * s_infopopup;
+
+ static void infopopup_show (const String & filename, const Tuple & tuple)
+ {
+- delete s_infopopup;
++ if(s_infopopup) s_infopopup->deleteLater();
+ s_infopopup = new InfoPopup (filename, tuple);
+
+ QObject::connect (s_infopopup, & QObject::destroyed, [] () {
+@@ -206,7 +206,7 @@ EXPORT void infopopup_show_current ()
+
+ EXPORT void infopopup_hide ()
+ {
+- delete s_infopopup;
++ s_infopopup->deleteLater();
+ }
+
+ } // namespace audqt
+--
+2.18.0
+
diff --git a/user/awesome/APKBUILD b/user/awesome/APKBUILD
new file mode 100644
index 000000000..aba8a99cb
--- /dev/null
+++ b/user/awesome/APKBUILD
@@ -0,0 +1,46 @@
+# Contributor: Łukasz Jendrysik <scadu@yandex.com>
+# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=awesome
+pkgver=4.2
+pkgrel=0
+pkgdesc="lua-configurable window manager framework"
+url="http://awesome.naquadah.org/"
+arch="all"
+license="GPL-2.0+"
+options="!check" # Tests require X and D-Bus
+depends="imagemagick lua-lgi cairo-gobject pango"
+makedepends="lua5.3 lua5.3-dev libxcb-dev pango-dev cairo-dev cmake gperf glib-dev
+ imlib2-dev libxdg-basedir-dev libev-dev startup-notification-dev
+ xcb-util-keysyms-dev xcb-util-image-dev xcb-util-dev xcb-util-wm-dev
+ dbus-dev gdk-pixbuf-dev xcb-util-cursor-dev libxkbcommon-dev
+ xcb-util-xrm-dev libexecinfo-dev xmlto"
+checkdepends="xorg-server-xephyr"
+subpackages="$pkgname-doc"
+source="https://github.com/awesomeWM/$pkgname-releases/raw/master/$pkgname-$pkgver.tar.xz"
+
+build() {
+ # Awesome does not support in-tree builds
+ mkdir -p "$builddir/build"
+ cd "$builddir/build"
+ cmake -DCMAKE_INSTALL_PREFIX=/usr \
+ -DSYSCONFDIR=/etc \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DLUA_INCLUDE_DIR=/usr/include/lua5.3 \
+ -DLUA_LIBRARIES=/usr/lib/lua5.3/liblua.so \
+ ..
+ make
+}
+
+check() {
+ cd "$builddir/build"
+ make check
+}
+
+package() {
+ cd "$builddir/build"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="134dd3625c86243861b3d0701cc8bfd8c00986d7027f0832016c3f5e59e6b9a1ef2f677bb0d1d66ece63449533e4b13d8d7388e96e6f9014212030a79f163e09 awesome-4.2.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/bind/APKBUILD b/user/bind/APKBUILD
index 32ff1b23f..7e0b38e15 100644
--- a/user/bind/APKBUILD
+++ b/user/bind/APKBUILD
@@ -4,23 +4,27 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=bind
-pkgver=9.12.1_p2
+pkgver=9.13.3
_p=${pkgver#*_p}
_ver=${pkgver%_p*}
_major=${pkgver%%.*}
[ "$_p" != "$pkgver" ] && _ver="${_ver}-P$_p"
-pkgrel=0
+pkgrel=1
pkgdesc="The ISC DNS server"
url="https://www.isc.org/downloads/bind/"
arch="all"
# NOTE: The tests were not run because they require that
# the IP addresses 10.53.0.1 through 10.53.0.8 are configured
-# as alias addresses on the loopback interface.
+# as alias addresses on the loopback interface.
+# To test, run:
+# cd $builddir
+# sudo bin/tests/system/ifconfig.sh up
+# make check
options="!check"
license="ISC AND Apache-2.0 AND OpenSSL AND BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause"
pkgusers="named"
pkggroups="named"
-makedepends="bash libressl-dev libcap-dev perl linux-headers bsd-compat-headers libxml2-dev json-c-dev"
+makedepends="bash openssl-dev libcap-dev perl linux-headers bsd-compat-headers libxml2-dev json-c-dev"
install="$pkgname.pre-install"
subpackages="$pkgname-doc $pkgname-dev $pkgname-libs $pkgname-openrc $pkgname-tools"
source="https://ftp.isc.org/isc/${pkgname}${_major}/$_ver/$pkgname-$_ver.tar.gz
@@ -36,6 +40,11 @@ source="https://ftp.isc.org/isc/${pkgname}${_major}/$_ver/$pkgname-$_ver.tar.gz
builddir="$srcdir/$pkgname-$_ver"
# secfixes:
+# 9.13.3:
+# - CVE-2018-5741
+# - CVE-2018-5740
+# 9.13.2:
+# - CVE-2018-5738
# 9.12.1_p2-r0:
# - CVE-2018-5737
# - CVE-2018-5736
@@ -138,7 +147,7 @@ tools() {
done
}
-sha512sums="de47eef272c437316444c4f585a2f98ae9169fc118fd057464a5cd064bb9079ffc07145dabf388cd240f56a5ad6d3ad78cf8d98fc37609681eba5d87e18a4f9a bind-9.12.1-P2.tar.gz
+sha512sums="980f294ef7b75c9a0917212e26300037ad6a33ff3565c099a6bad15350f0738491396a22a40dd552efd7fd25634f82f236abca4f83b4c8a9c580099851dd3c83 bind-9.13.3.tar.gz
7167dccdb2833643dfdb92994373d2cc087e52ba23b51bd68bd322ff9aca6744f01fa9d8a4b9cd8c4ce471755a85c03ec956ec0d8a1d4fae02124ddbed6841f6 bind.so_bsdcompat.patch
196c0a3b43cf89e8e3547d7fb63a93ff9a3306505658dfd9aa78e6861be6b226580b424dd3dd44b955b2d9f682b1dc62c457f3ac29ce86200ef070140608c015 named.initd
127bdcc0b5079961f0951344bc3fad547450c81aee2149eac8c41a8c0c973ea0ffe3f956684c6fcb735a29c43d2ff48c153b6a71a0f15757819a72c492488ddf named.confd
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/bsdwhois/APKBUILD b/user/bsdwhois/APKBUILD
new file mode 100644
index 000000000..d5222238d
--- /dev/null
+++ b/user/bsdwhois/APKBUILD
@@ -0,0 +1,29 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=bsdwhois
+pkgver=1.43.2.1
+pkgrel=0
+pkgdesc="WHOIS client, allowing you to see details about domain names and IP subnets"
+url="https://www.FreeBSD.org/"
+arch="all"
+options="!check" # No test suite.
+license="BSD-4-Clause-UC"
+depends=""
+makedepends="bsd-compat-headers"
+subpackages="$pkgname-doc"
+source="http://utenti.gufi.org/~drizzt/codes/bsdwhois-$pkgver.tar.bz2"
+builddir="$srcdir/$pkgname"
+
+build() {
+ cd "$builddir"
+ make
+}
+
+package() {
+ cd "$builddir"
+
+ install -D -m755 "$builddir"/whois "$pkgdir"/usr/bin/whois
+ install -D -m644 "$builddir"/whois.1 "$pkgdir"/usr/share/man/man1/whois.1
+}
+
+sha512sums="a69f9768a500ce08daa6cc0105c4d6591e4d33b570fa323166b06286b70ae7cc49cd1f77d04a411f558ea55c43316ffdbe897eb3c83ae331e2e4d9800a8a29d3 bsdwhois-1.43.2.1.tar.bz2"
diff --git a/user/bzflag/APKBUILD b/user/bzflag/APKBUILD
index 36f91c20e..23d1a30dd 100644
--- a/user/bzflag/APKBUILD
+++ b/user/bzflag/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Dan Theisen <djt@hxx.in>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=bzflag
-pkgver=2.4.12
-pkgrel=1
+pkgver=2.4.16
+pkgrel=0
pkgdesc="3D networked multi-player multi-platform tank battle game"
url="https://www.bzflag.org/"
arch="all"
@@ -35,5 +35,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="9b5fa6b7ab7eb13043242defcc86cbed083e98306b2f611932b48d6d833a37bbe2ab05a0a3d1a2c9b861bfbd834fc6e86783ba82d8a841527d0eedb06f3bde9f bzflag-2.4.12.tar.bz2
-568e581dd82ca28aa43281a86867408c726ad4f2145f115a5d3535dbc472463c94288e9349ced715004191af0925daff7e3d55fe1db3ab35554352cc703d79b9 defineAddrLen.patch"
+sha512sums="809adc39088f3fc8ca0d2ead9c7172cfbe582789bc80b3ac55fabe078a0868f0cf7cfa8027ac696718e9983a19386933fd370684a0bd33e63c3106f2ce8a9d63 bzflag-2.4.16.tar.bz2
+6c7a1873706140b1b0b254d6f8350f47adef8f499a7e7b3418331beda11bdc71e2e0dee74e17d4a955960de66adf90d22796b440e1afa78d328077235e2e3dde defineAddrLen.patch"
diff --git a/user/bzflag/defineAddrLen.patch b/user/bzflag/defineAddrLen.patch
index b1189dcac..a25eb96c3 100644
--- a/user/bzflag/defineAddrLen.patch
+++ b/user/bzflag/defineAddrLen.patch
@@ -1,11 +1,11 @@
---- a/include/network.h 2018-04-23 23:17:50.969874036 -0700
-+++ b/include/network.h 2018-04-23 23:18:37.750554121 -0700
+--- bzflag-2.4.16/include/network.h.old 2018-09-27 19:16:48.015111918 -0700
++++ bzflag-2.4.16/include/network.h 2018-09-27 19:17:06.195370763 -0700
@@ -57,7 +57,7 @@
# include <bstring.h>
#endif
-#if defined(BSD) || defined(__sun__) || defined(__GLIBC__)
+#if defined(BSD) || defined(__sun__) || defined(__linux__)
- # define AddrLen socklen_t
+ # define AddrLen socklen_t
#elif defined (__APPLE__)
# include <AvailabilityMacros.h>
diff --git a/user/catfish/APKBUILD b/user/catfish/APKBUILD
new file mode 100644
index 000000000..2dfb80c66
--- /dev/null
+++ b/user/catfish/APKBUILD
@@ -0,0 +1,30 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=catfish
+pkgver=1.4.6
+pkgrel=0
+pkgdesc="File-searching application for the XFCE desktop environment"
+url="https://xfce.org"
+arch="noarch"
+license="GPL-2.0-only"
+depends="python3 py3-pygobject py3-pexpect"
+makedepends="py3-distutils-extra intltool"
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://archive.xfce.org/src/apps/catfish/1.4/catfish-$pkgver.tar.bz2"
+sha512sums="1c50375a9b36554123327a138c50de47abbbfd2fb334b91773312e9001e4bbc936550c2b23ad658b29fe9f1537d59997513b01bf4e2c31ce0286f5650776f8f7 catfish-1.4.6.tar.bz2"
+
+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"
+}
+
diff --git a/user/ccid/APKBUILD b/user/ccid/APKBUILD
index 925f36499..bddade1d6 100644
--- a/user/ccid/APKBUILD
+++ b/user/ccid/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=ccid
-pkgver=1.4.29
+pkgver=1.4.30
pkgrel=0
pkgdesc="Open-source driver for Chip/SmartCard Interface Devices (CCID)"
url="https://ccid.apdu.fr/"
@@ -11,7 +11,6 @@ license="LGPL-2.1+ AND GPL-2.0+ AND ISC"
depends="pcsc-lite"
makedepends="pcsc-lite-dev libusb-dev"
source="https://ccid.apdu.fr/files/ccid-$pkgver.tar.bz2"
-sha512sums="9ff37acad086e959f660069b245fe06ecada140623025a19dfbff55edec71e1e72bce09ac4fc506ad985dd0831dafc6b12f5a5b109b38bf9ba7583856eb19418 ccid-1.4.29.tar.bz2"
build() {
cd "$builddir"
@@ -31,3 +30,4 @@ package() {
install -Dm644 src/92_pcscd_ccid.rules "$pkgdir"/lib/udev/rules.d/92_pcscd_ccid.rules
}
+sha512sums="1761a4053a99eb28184d0ffece951aec5d4b646080597b4ae36b18a31fb7a76c55fabfa57ee8e5d7f2db1a6e13d209f7fa995fe6ed067f44558bea34a26d46da ccid-1.4.30.tar.bz2"
diff --git a/user/checkbashisms/APKBUILD b/user/checkbashisms/APKBUILD
new file mode 100644
index 000000000..c85d7cc54
--- /dev/null
+++ b/user/checkbashisms/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=checkbashisms
+pkgver=2.18.4
+pkgrel=0
+pkgdesc="Check shell scripts for POSIX compliance"
+url="https://tracker.debian.org/pkg/devscripts"
+arch="noarch"
+license="GPL-2.0+"
+makedepends=""
+depends="perl"
+checkdepends="shunit2"
+subpackages="$pkgname-doc $pkgname-bash-completion:bashcomp:noarch"
+source="http://cdn.debian.net/debian/pool/main/d/devscripts/devscripts_$pkgver.tar.xz"
+builddir="$srcdir/devscripts-$pkgver"
+
+prepare() {
+ default_prepare
+ sed -i "s/###VERSION###/$pkgver/" "scripts/$pkgname.pl"
+}
+
+check() {
+ cd "$builddir"
+ ./test/test_checkbashisms
+}
+
+package() {
+ cd "$builddir"
+ install -Dm755 "scripts/$pkgname.pl" "$pkgdir/usr/bin/$pkgname"
+ install -Dm644 "scripts/$pkgname.1" "$pkgdir/usr/share/man/man1/$pkgname.1"
+}
+
+bashcomp() {
+ pkgdesc="Bash completions for $pkgname"
+ depends=""
+ install_if="$pkgname=$pkgver-r$pkgrel bash-completion"
+
+ cd "$builddir"
+ install -Dm644 "scripts/$pkgname.bash_completion" \
+ "$subpkgdir/usr/share/bash-completion/completions/$pkgname"
+}
+
+sha512sums="91a0ab2fa1f8d884d79f62d5cc8170c885c24af51de321a41f2111fe0fbc0fd8394e5fb3825eeee14d8090968be35761080a40cb55339b09522219d974f63897 devscripts_2.18.4.tar.xz"
diff --git a/user/chrony/APKBUILD b/user/chrony/APKBUILD
index 494b70946..5f460b632 100644
--- a/user/chrony/APKBUILD
+++ b/user/chrony/APKBUILD
@@ -3,7 +3,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=chrony
-pkgver=3.3
+pkgver=3.4
pkgrel=0
_ver=${pkgver/_/-}
pkgdesc="NTP client and server programs"
@@ -20,6 +20,7 @@ subpackages="$pkgname-doc $pkgname-openrc"
source="https://download.tuxfamily.org/$pkgname/$pkgname-$_ver.tar.gz
fix-tests.patch
max_resolve_interval.patch
+ chrony-include-util.patch
chronyd.confd
chronyd.initd
chrony.logrotate
@@ -89,9 +90,10 @@ package() {
chown -R $pkgusers:$pkggroups "$pkgdir"/var/lib/chrony
}
-sha512sums="36975d863599141e8e5b071d35cf67326b27f5b0da7ec942dbb4530377d10472b0729eea632e0702718b515cb2d5fd41a7eba158e6dade7f05adfb1bdffa5df0 chrony-3.3.tar.gz
+sha512sums="4fbb0311c8d363a87edd6f5d1be3d8554da169f260ba23c1ad9e8c567808258c6fd7513ba630d6fa27453ecfd81f0ece0e26d5ee2f98ca47fbc9887181a36918 chrony-3.4.tar.gz
067d47224a8c075ec8f63ffc58e65b030fdf228a72c4f03d50a2f2c17414da65bb5d27c7c2e4ba99e909f452041db83eaebe3c9e34c0c8fce18e05ebb489735e fix-tests.patch
b26581ed32680585edea5b8163a0062a87f648394c0f363c77a7d01a36608fcf4d005d9e6ab179ed2827b8a08f598f7bad4801bb5e135cad5107eb77fb19b247 max_resolve_interval.patch
+30f1ed28e0d956c994abd770c68634c7d5c69ded04a2fbfd387bbd8009bc0102ce57934ce41e468fc6b2c7f8fefdab73d97f6d6ff39ec93fffa6575fa1451fbd chrony-include-util.patch
1ebb72341b4421060a43d6db164d743de9144f1c23370e052f0db92a17e5e34f24ac98baddeb5dbfef27f67479142d448c4401d927394e55024760730a27e8de chronyd.confd
9a18c9744d7b78d9b9be3f0ae0b43cb988b294c342764802e0d5df835d450e748584c0b345f7161f14d84e15c8bbd491514ee9dc45e4a65f1276c52124d2e312 chronyd.initd
ab38f06bf45888846778ad935e24abb30d13b6805e9a750bc694ff953695fa8c5b33aac560f5f7f96dc46031c1a38660e5c418b6fce6fb34a87908a9a3c99357 chrony.logrotate
diff --git a/user/chrony/chrony-include-util.patch b/user/chrony/chrony-include-util.patch
new file mode 100644
index 000000000..20b43c187
--- /dev/null
+++ b/user/chrony/chrony-include-util.patch
@@ -0,0 +1,10 @@
+--- chrony-3.4/hash_intmd5.c.old 2018-09-27 19:29:57.386348229 -0700
++++ chrony-3.4/hash_intmd5.c 2018-09-27 19:30:07.696494803 -0700
+@@ -29,6 +29,7 @@
+ #include "sysincl.h"
+ #include "hash.h"
+ #include "memory.h"
++#include "util.h"
+
+ #include "md5.c"
+
diff --git a/user/clang/0001-Add-support-for-Ad-lie-Linux.patch b/user/clang/0001-Add-support-for-Ad-lie-Linux.patch
new file mode 100644
index 000000000..f12adf513
--- /dev/null
+++ b/user/clang/0001-Add-support-for-Ad-lie-Linux.patch
@@ -0,0 +1,78 @@
+From 085ba75b10376fa55bb94cb6fa6c54526957732f Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Thu, 13 Sep 2018 11:42:28 -0500
+Subject: [PATCH] =?UTF-8?q?Add=20support=20for=20Ad=C3=A9lie=20Linux?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+---
+ include/clang/Driver/Distro.h | 5 +++++
+ lib/Driver/Distro.cpp | 3 +++
+ lib/Driver/ToolChains/Linux.cpp | 6 ++++--
+ 3 files changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/include/clang/Driver/Distro.h b/include/clang/Driver/Distro.h
+index 7b34a09256..7a3774a4f1 100644
+--- a/include/clang/Driver/Distro.h
++++ b/include/clang/Driver/Distro.h
+@@ -26,6 +26,7 @@ public:
+ // NB: Releases of a particular Linux distro should be kept together
+ // in this enum, because some tests are done by integer comparison against
+ // the first and last known member in the family, e.g. IsRedHat().
++ AdelieLinux,
+ AlpineLinux,
+ ArchLinux,
+ DebianLenny,
+@@ -118,6 +119,10 @@ public:
+ return DistroVal >= UbuntuHardy && DistroVal <= UbuntuCosmic;
+ }
+
++ bool IsAdelieLinux() const {
++ return DistroVal == AdelieLinux;
++ }
++
+ bool IsAlpineLinux() const {
+ return DistroVal == AlpineLinux;
+ }
+diff --git a/lib/Driver/Distro.cpp b/lib/Driver/Distro.cpp
+index 2c4d44faf8..7ef35ab379 100644
+--- a/lib/Driver/Distro.cpp
++++ b/lib/Driver/Distro.cpp
+@@ -130,6 +130,9 @@ static Distro::DistroType DetectDistro(vfs::FileSystem &VFS) {
+ if (VFS.exists("/etc/exherbo-release"))
+ return Distro::Exherbo;
+
++ if (VFS.exists("/etc/adelie-release"))
++ return Distro::AdelieLinux;
++
+ if (VFS.exists("/etc/alpine-release"))
+ return Distro::AlpineLinux;
+
+diff --git a/lib/Driver/ToolChains/Linux.cpp b/lib/Driver/ToolChains/Linux.cpp
+index 2a87cb077c..85bcd8ed47 100644
+--- a/lib/Driver/ToolChains/Linux.cpp
++++ b/lib/Driver/ToolChains/Linux.cpp
+@@ -234,7 +234,8 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
+ ExtraOpts.push_back("now");
+ }
+
+- if (Distro.IsOpenSUSE() || Distro.IsUbuntu() || Distro.IsAlpineLinux()) {
++ if (Distro.IsOpenSUSE() || Distro.IsUbuntu() || Distro.IsAlpineLinux() ||
++ Distro.IsAdelieLinux()) {
+ ExtraOpts.push_back("-z");
+ ExtraOpts.push_back("relro");
+ }
+@@ -268,7 +269,8 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
+ // Hexagon linker/loader does not support .gnu.hash
+ if (!IsMips && !IsAndroid && !IsHexagon) {
+ if (Distro.IsRedhat() || Distro.IsOpenSUSE() || Distro.IsAlpineLinux() ||
+- (Distro.IsUbuntu() && Distro >= Distro::UbuntuMaverick))
++ Distro.IsAdelieLinux() ||
++ (Distro.IsUbuntu() && Distro >= Distro::UbuntuMaverick))
+ ExtraOpts.push_back("--hash-style=gnu");
+
+ if (Distro.IsDebian() || Distro.IsOpenSUSE() || Distro == Distro::UbuntuLucid ||
+--
+2.18.0
+
diff --git a/user/clang/0008-Fix-ClangConfig-cmake-LLVM-path.patch b/user/clang/0008-Fix-ClangConfig-cmake-LLVM-path.patch
new file mode 100644
index 000000000..f1c1c2449
--- /dev/null
+++ b/user/clang/0008-Fix-ClangConfig-cmake-LLVM-path.patch
@@ -0,0 +1,25 @@
+From: Adeel <adeelbm@outlook.com>
+Date: Sun, 6 May 2018 10:22:00 +0200
+Subject: [PATCH] Fix ClangConfig.cmake to look for LLVM-Config.cmake in correct location
+
+This results in the following change in the generated ClangConfig.cmake:
+
+ find_package(LLVM REQUIRED CONFIG
+ - HINTS "${CLANG_INSTALL_PREFIX}/lib/cmake/llvm")
+ + HINTS "/usr/lib/llvm5/lib/cmake/llvm")
+
+This is needed e.g. for building lldb.
+
+See https://github.com/alpinelinux/aports/pull/2342 for more information.
+
+--- a/cmake/modules/CMakeLists.txt
++++ b/cmake/modules/CMakeLists.txt
+@@ -39,7 +39,7 @@ foreach(p ${_count})
+ get_filename_component(CLANG_INSTALL_PREFIX \"\${CLANG_INSTALL_PREFIX}\" PATH)")
+ endforeach(p)
+ set(CLANG_CONFIG_CMAKE_DIR "\${CLANG_INSTALL_PREFIX}/${CLANG_INSTALL_PACKAGE_DIR}")
+-set(CLANG_CONFIG_LLVM_CMAKE_DIR "\${CLANG_INSTALL_PREFIX}/${LLVM_INSTALL_PACKAGE_DIR}")
++set(CLANG_CONFIG_LLVM_CMAKE_DIR "${llvm_cmake_builddir}")
+ set(CLANG_CONFIG_EXPORTS_FILE "\${CLANG_CMAKE_DIR}/ClangTargets.cmake")
+ set(CLANG_CONFIG_INCLUDE_DIRS
+ "\${CLANG_INSTALL_PREFIX}/include"
diff --git a/user/clang/APKBUILD b/user/clang/APKBUILD
new file mode 100644
index 000000000..a95693351
--- /dev/null
+++ b/user/clang/APKBUILD
@@ -0,0 +1,91 @@
+# Contributor Travis Tilley <ttilley@gmail.com>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=clang
+# Note: Update together with llvm.
+pkgver=6.0.1
+pkgrel=0
+_llvmver=${pkgver%%.*}
+pkgdesc="A C language family front-end for LLVM"
+arch="all"
+options="!dbg"
+url="https://llvm.org/"
+license="NCSA"
+depends_dev="$pkgname=$pkgver-r$pkgrel"
+makedepends="cmake isl-dev libedit-dev libexecinfo-dev libxml2-dev libxml2-utils
+ llvm-dev>=$_llvmver llvm-static>=$_llvmver llvm-test-utils>=$_llvmver"
+subpackages="$pkgname-static $pkgname-dev $pkgname-doc $pkgname-libs
+ $pkgname-analyzer::noarch"
+source="https://llvm.org/releases/$pkgver/cfe-$pkgver.src.tar.xz
+ 0001-Add-support-for-Ad-lie-Linux.patch
+ 0008-Fix-ClangConfig-cmake-LLVM-path.patch
+ use-llvm-lit.patch
+ secure-plt.patch
+ "
+builddir="$srcdir/cfe-$pkgver.src"
+
+build() {
+ mkdir -p "$builddir"/build
+ cd "$builddir"/build
+
+ cmake .. -Wno-dev \
+ -DCMAKE_BUILD_TYPE=MinSizeRel \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_VERBOSE_MAKEFILE=OFF \
+ -DCLANG_VENDOR=${DISTRO_SHORT_NAME:-Adélie} \
+ -DCLANG_BUILD_EXAMPLES=OFF \
+ -DCLANG_INCLUDE_DOCS=ON \
+ -DCLANG_INCLUDE_TESTS=ON \
+ -DCLANG_PLUGIN_SUPPORT=ON \
+ -DLIBCLANG_BUILD_STATIC=ON \
+ -DLLVM_ENABLE_EH=ON \
+ -DLLVM_ENABLE_RTTI=ON
+
+ make clang-tblgen
+ # too memory hungry
+ if [ -z "$JOBS" -o $JOBS -gt 32 ]; then
+ make -j32
+ else
+ make
+ fi
+}
+
+check() {
+ cd "$builddir"/build
+ [ -f bin/llvm-lit ] || ln -s /usr/bin/lit bin/llvm-lit
+ make check-clang
+}
+
+package() {
+ cd "$builddir"/build
+
+ make DESTDIR="$pkgdir" install
+ install -m 644 lib/libclang.a "$pkgdir"/usr/lib
+}
+
+static() {
+ pkgdesc="Static libraries for clang"
+
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/*.a "$subpkgdir"/usr/lib/
+ strip -d "$subpkgdir"/usr/lib/*.a
+}
+
+analyzer() {
+ pkgdesc="Clang source code analysis framework"
+ depends="$pkgname=$pkgver-r$pkgrel perl python3"
+
+ cd "$pkgdir"
+
+ mkdir -p "$subpkgdir"/usr/bin \
+ "$subpkgdir"/usr/libexec \
+ "$subpkgdir"/usr/share/
+ mv usr/bin/scan-* "$subpkgdir"/usr/bin/
+ mv usr/libexec/*-analyzer "$subpkgdir"/usr/libexec/
+ mv usr/share/scan-* "$subpkgdir"/usr/share/
+}
+
+sha512sums="f64ba9290059f6e36fee41c8f32bf483609d31c291fcd2f77d41fecfdf3c8233a5e23b93a1c73fed03683823bd6e72757ed993dd32527de3d5f2b7a64bb031b9 cfe-6.0.1.src.tar.xz
+44aa152d50822a9e1a223b9e07e150ffa830c55deb4c4ca29e6218a0103eb263a00b41fd1ca84390e65fa08005901a0a0f88cf529bff8764220e99d06adef5fc 0001-Add-support-for-Ad-lie-Linux.patch
+9485fe4fd6182df543735ed8f4ce618693d0faeafa86d3f9574a6c7abf50978e2d56e0a94be3ed94d515cc937c388d66ceff1bbc9bb120d371b6d3e95340da00 0008-Fix-ClangConfig-cmake-LLVM-path.patch
+8a596e7369b5791e7e9c3278320aa5bac30d91f27d9a0df335ea862c359623869353d12145c3b64730f721600522f3acc5abe706428091482e0209e4ff308175 use-llvm-lit.patch
+23c3de4f8cbfa115b337ee115b4f95eb1ce3b8c6451de590b0ecf196a4b3bc96ab1d88029edf7f0c51299dffb7b2a05cade9c64c72dba18d858686466bb82bad secure-plt.patch"
diff --git a/user/clang/secure-plt.patch b/user/clang/secure-plt.patch
new file mode 100644
index 000000000..c1b4cb1de
--- /dev/null
+++ b/user/clang/secure-plt.patch
@@ -0,0 +1,70 @@
+Index: cfe/include/clang/Driver/Options.td
+===================================================================
+--- cfe/include/clang/Driver/Options.td
++++ cfe/include/clang/Driver/Options.td
+@@ -1957,6 +1957,7 @@
+ def mno_altivec : Flag<["-"], "mno-altivec">, Group<m_ppc_Features_Group>;
+ def mvsx : Flag<["-"], "mvsx">, Group<m_ppc_Features_Group>;
+ def mno_vsx : Flag<["-"], "mno-vsx">, Group<m_ppc_Features_Group>;
++def msecure_plt : Flag<["-"], "msecure-plt">, Group<m_ppc_Features_Group>;
+ def mpower8_vector : Flag<["-"], "mpower8-vector">,
+ Group<m_ppc_Features_Group>;
+ def mno_power8_vector : Flag<["-"], "mno-power8-vector">,
+Index: cfe/lib/Driver/ToolChains/Arch/PPC.h
+===================================================================
+--- cfe/lib/Driver/ToolChains/Arch/PPC.h
++++ cfe/lib/Driver/ToolChains/Arch/PPC.h
+@@ -29,10 +29,17 @@
+ Hard,
+ };
+
++enum class ReadGOTPtrMode {
++ Bss,
++ SecurePlt,
++};
++
+ FloatABI getPPCFloatABI(const Driver &D, const llvm::opt::ArgList &Args);
+
+ std::string getPPCTargetCPU(const llvm::opt::ArgList &Args);
+ const char *getPPCAsmModeForCPU(StringRef Name);
++ReadGOTPtrMode getPPCReadGOTPtrMode(const Driver &D,
++ const llvm::opt::ArgList &Args);
+
+ void getPPCTargetFeatures(const Driver &D, const llvm::Triple &Triple,
+ const llvm::opt::ArgList &Args,
+Index: cfe/lib/Driver/ToolChains/Arch/PPC.cpp
+===================================================================
+--- cfe/lib/Driver/ToolChains/Arch/PPC.cpp
++++ cfe/lib/Driver/ToolChains/Arch/PPC.cpp
+@@ -106,6 +106,16 @@
+ ppc::FloatABI FloatABI = ppc::getPPCFloatABI(D, Args);
+ if (FloatABI == ppc::FloatABI::Soft)
+ Features.push_back("-hard-float");
++
++ ppc::ReadGOTPtrMode ReadGOT = ppc::getPPCReadGOTPtrMode(D, Args);
++ if (ReadGOT == ppc::ReadGOTPtrMode::SecurePlt)
++ Features.push_back("+secure-plt");
++}
++
++ppc::ReadGOTPtrMode ppc::getPPCReadGOTPtrMode(const Driver &D, const ArgList &Args) {
++ if (Args.getLastArg(options::OPT_msecure_plt))
++ return ppc::ReadGOTPtrMode::SecurePlt;
++ return ppc::ReadGOTPtrMode::Bss;
+ }
+
+ ppc::FloatABI ppc::getPPCFloatABI(const Driver &D, const ArgList &Args) {
+Index: cfe/test/Driver/ppc-features.cpp
+===================================================================
+--- cfe/test/Driver/ppc-features.cpp
++++ cfe/test/Driver/ppc-features.cpp
+@@ -22,6 +22,10 @@
+ // RUN: %clang -target powerpc-unknown-linux-gnu %s -msoft-float -mhard-float -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-SOFTHARD %s
+ // CHECK-SOFTHARD-NOT: "-target-feature" "-hard-float"
+
++// check -msecure-plt option for ppc32
++// RUN: %clang -target powerpc-unknown-linux-gnu -msecure-plt %s -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-SECUREPLT %s
++// CHECK-SECUREPLT: "-target-feature" "+secure-plt"
++
+ // check -mfloat-abi=x option
+ // RUN: %clang -target powerpc-unknown-linux-gnu %s -mfloat-abi=x -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-ERRMSG %s
+ // CHECK-ERRMSG: error: invalid float ABI '-mfloat-abi=x'
diff --git a/user/clang/use-llvm-lit.patch b/user/clang/use-llvm-lit.patch
new file mode 100644
index 000000000..0cbb84835
--- /dev/null
+++ b/user/clang/use-llvm-lit.patch
@@ -0,0 +1,11 @@
+--- cfe-6.0.1.src/test/CMakeLists.txt.old 2017-12-12 19:47:40.000000000 +0000
++++ cfe-6.0.1.src/test/CMakeLists.txt 2018-09-13 17:01:03.690000000 +0000
+@@ -115,7 +115,7 @@
+
+ add_lit_testsuite(check-clang "Running the Clang regression tests"
+ ${CMAKE_CURRENT_BINARY_DIR}
+- #LIT ${LLVM_LIT}
++ LIT ${LLVM_LIT}
+ PARAMS ${CLANG_TEST_PARAMS}
+ DEPENDS ${CLANG_TEST_DEPS}
+ ARGS ${CLANG_TEST_EXTRA_ARGS}
diff --git a/user/clutter/APKBUILD b/user/clutter/APKBUILD
new file mode 100644
index 000000000..d2a53b372
--- /dev/null
+++ b/user/clutter/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=clutter
+pkgver=1.26.2
+pkgrel=0
+pkgdesc="OpenGL-based interactive canvas library"
+url="https://gnome.org"
+arch="all"
+options="!check" # testsuite skipped all tests
+license="LGPL-2.0+ AND MIT AND LGPL-2.1+ AND GPL-2.0+"
+makedepends="glib-dev mesa-dev cogl-dev cairo-dev pango-dev json-glib-dev
+ atk-dev vala gobject-introspection-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://download.gnome.org/sources/clutter/1.26/clutter-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./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="c8008a1a1f111313d9abaff8d4415f112ddc32a02e08845f3735d33bb25b72b082f133daba06749bb9595eaf1ba83b308d30a413fbbe8dcdc1afdd7077a30937 clutter-1.26.2.tar.xz"
diff --git a/user/cogl/APKBUILD b/user/cogl/APKBUILD
new file mode 100644
index 000000000..4f1b2202f
--- /dev/null
+++ b/user/cogl/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=cogl
+pkgver=1.22.2
+pkgrel=0
+pkgdesc="GObject-based GL/GLES abstraction library"
+url="https://gnome.org"
+arch="all"
+options="!check" # broken testsuite, no logs/messages to determine why
+license="MIT AND SGI-B-2.0 AND BSD-3-Clause AND Public-Domain AND LGPL-2.0+ AND Apache-2.0"
+makedepends="glib-dev libxcomposite-dev libxrandr-dev mesa-dev cairo-dev
+ pango-dev vala gobject-introspection-dev gdk-pixbuf-dev"
+subpackages="$pkgname-dev $pkgname-lang"
+source="https://download.gnome.org/sources/cogl/1.22/cogl-$pkgver.tar.xz
+ fix-wayland-egl-check.patch"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --enable-kms-egl-platform=yes \
+ --enable-xlib-egl-platform=yes
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="2ec99f5ff22683d12925b9a1f748387b47c4506aaf3c5afec851b3b6fe6b7cdfd211fb7e4359bd7a1d1b7cb3cb7fbd257efbcb7d2941d0f133a60bad1c9645e3 cogl-1.22.2.tar.xz
+73fa3a7258e2624d13abfe36259bef1a28e993653f0fdebfb4b0822752fa40a95399f4f9cd707873938bc6b8edcc7db46228247851471899f05a7e7132af58c7 fix-wayland-egl-check.patch"
diff --git a/user/cogl/fix-wayland-egl-check.patch b/user/cogl/fix-wayland-egl-check.patch
new file mode 100644
index 000000000..72ec484e5
--- /dev/null
+++ b/user/cogl/fix-wayland-egl-check.patch
@@ -0,0 +1,12 @@
+diff -Nurd cogl-1.22.2/cogl/winsys/cogl-winsys-egl.c cogl-1.22.2.new/cogl/winsys/cogl-winsys-egl.c
+--- cogl-1.22.2/cogl/winsys/cogl-winsys-egl.c 2016-08-26 11:18:16.000000000 -0500
++++ cogl-1.22.2.new/cogl/winsys/cogl-winsys-egl.c 2018-09-07 08:28:36.950138458 -0500
+@@ -1029,7 +1029,7 @@
+ egl_ctx = EGL_NO_CONTEXT;
+ else
+ #endif
+-#if COGL_HAS_WAYLAND_EGL_SERVER_SUPPORT
++#ifdef COGL_HAS_WAYLAND_EGL_SERVER_SUPPORT
+ /* The WL_bind_wayland_display spec states that EGL_NO_CONTEXT is to be used
+ * in conjunction with the EGL_WAYLAND_BUFFER_WL target */
+ if (target == EGL_WAYLAND_BUFFER_WL)
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
new file mode 100644
index 000000000..73bb7c8cc
--- /dev/null
+++ b/user/cram/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=cram
+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="cmd:which"
+checkdepends="coverage"
+subpackages=""
+source="https://bitheap.org/cram/cram-$pkgver.tar.gz
+ die-py2-die.patch
+ "
+
+build() {
+ cd "$builddir"
+ make PYTHON=python3
+}
+
+check() {
+ cd "$builddir"
+ # 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="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/cups-filters/APKBUILD b/user/cups-filters/APKBUILD
index 4a29feb9c..83a95a7ed 100644
--- a/user/cups-filters/APKBUILD
+++ b/user/cups-filters/APKBUILD
@@ -1,9 +1,9 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=cups-filters
-pkgver=1.21.2
+pkgver=1.21.3
pkgrel=0
pkgdesc="OpenPrinting CUPS filters and backends"
-url="https://www.linuxfoundation.org/collaborate/workgroups/openprinting/pdf_as_standard_print_job_format"
+url="https://wiki.linuxfoundation.org/openprinting/cups-filters"
arch="all"
license="GPL-2.0-only AND GPL-2.0+ AND GPL-3.0-only AND MIT"
depends="poppler-utils bc ttf-freefont"
@@ -12,7 +12,9 @@ makedepends="cups-dev libjpeg-turbo-dev poppler-dev zlib-dev libpng-dev
coreutils gnutls-dev python3"
checkdepends="ttf-dejavu"
subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
-source="https://www.openprinting.org/download/cups-filters/cups-filters-$pkgver.tar.xz"
+source="https://www.openprinting.org/download/cups-filters/cups-filters-$pkgver.tar.xz
+ poppler-69-support.patch
+ "
build() {
cd "$builddir"
@@ -63,4 +65,5 @@ libs() {
mv "$pkgdir"/usr/lib/lib*.so.* "$subpkgdir"/usr/lib/
}
-sha512sums="07672737108e1593374fa95582e2c8ad7a3fec6202846ba85224c1c89f65b7b89de96ebf67841ec5d948fe556dddd06ae6a58ad6c5c0a25a82ce643c9384aaf0 cups-filters-1.21.2.tar.xz"
+sha512sums="2b00023ac4177046e3ab3c5b563b7bd92bb49e57e645e6e67e7b9358d00919e2d4ca43ef5d57684523d97f1f1df5d1014fc0a3a895476ce285ccb3ed2e3bc758 cups-filters-1.21.3.tar.xz
+6db4cd5d809c7f9511db9cf8cf6b293e5b9143e8d4d7d954a1f7f206a1cbe8baedcc6306c1f8dc7df6dee74ce8c88ffec3dd7efa1f22c32ea37168971013c1ff poppler-69-support.patch"
diff --git a/user/cups-filters/poppler-69-support.patch b/user/cups-filters/poppler-69-support.patch
new file mode 100644
index 000000000..e9516d1bb
--- /dev/null
+++ b/user/cups-filters/poppler-69-support.patch
@@ -0,0 +1,76 @@
+From 6b0747c1630dd973acd138f927dbded4ea45e360 Mon Sep 17 00:00:00 2001
+From: Olivier Schonken <olivier.schonken@gmail.com>
+Date: Fri, 5 Oct 2018 12:05:31 +0200
+Subject: [PATCH] Poppler removed memCheck and gMemReport functions
+
+Only use gMemReport and memCheck functions if poppler version less
+than 0.69.0
+
+The poppler project removed the memCheck and gMemReport functions in
+commits c362ab1b97f20c5b73b3bad8d52015f679178748 - Remove DEBUG_MEM
+from Object since this uses RAII now and hence cannot leak.
+(The existing tracking also is not thread-safe and hence unreliable.)
+
+and
+
+f89446f6917a869b0f1a80fcc8ce81a7213dade4 - Remove generic heap debugging
+from gmem since external tools and compiler instrumentation achieve the
+same effect.
+
+This commit solves https://github.com/OpenPrinting/cups-filters/issues/62
+
+Signed-off-by: Olivier Schonken <olivier.schonken@gmail.com>
+---
+ filter/pdftoijs.cxx | 2 ++
+ filter/pdftoopvp/pdftoopvp.cxx | 2 ++
+ filter/pdftoraster.cxx | 2 ++
+ 3 files changed, 6 insertions(+)
+
+diff --git a/filter/pdftoijs.cxx b/filter/pdftoijs.cxx
+index 22bc33f4..dd6b6fa0 100644
+--- a/filter/pdftoijs.cxx
++++ b/filter/pdftoijs.cxx
+@@ -503,9 +503,11 @@ int main(int argc, char *argv[]) {
+ ppdClose(ppd);
+ free(outputfile);
+
++#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR < 69
+ // Check for memory leaks
+ Object::memCheck(stderr);
+ gMemReport(stderr);
++#endif
+
+ return exitCode;
+ }
+diff --git a/filter/pdftoopvp/pdftoopvp.cxx b/filter/pdftoopvp/pdftoopvp.cxx
+index 024941ab..bf25983b 100644
+--- a/filter/pdftoopvp/pdftoopvp.cxx
++++ b/filter/pdftoopvp/pdftoopvp.cxx
+@@ -763,9 +763,11 @@ fprintf(stderr,"JobInfo=%s\n",jobInfo);
+ err0:
+ delete globalParams;
+
++#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR < 69
+ // check for memory leaks
+ Object::memCheck(stderr);
+ gMemReport(stderr);
++#endif
+
+ }
+ /* muntrace(); */
+diff --git a/filter/pdftoraster.cxx b/filter/pdftoraster.cxx
+index 0c63ab8d..4ebf02b0 100644
+--- a/filter/pdftoraster.cxx
++++ b/filter/pdftoraster.cxx
+@@ -2162,9 +2162,11 @@ int main(int argc, char *argv[]) {
+ cmsDeleteTransform(colorTransform);
+ }
+
++#if POPPLER_VERSION_MAJOR == 0 && POPPLER_VERSION_MINOR < 69
+ // Check for memory leaks
+ Object::memCheck(stderr);
+ gMemReport(stderr);
++#endif
+
+ return exitCode;
+ }
diff --git a/user/ddrescue/APKBUILD b/user/ddrescue/APKBUILD
new file mode 100644
index 000000000..f1c42d607
--- /dev/null
+++ b/user/ddrescue/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=ddrescue
+pkgver=1.23
+pkgrel=0
+pkgdesc="Data recovery tool for block devices with errors"
+url="https://www.gnu.org/s/ddrescue/ddrescue.html"
+license="GPL-3.0+"
+arch="all !aarch64"
+subpackages="$pkgname-doc"
+source="http://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.lz"
+
+build() {
+ cd "$builddir"
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make
+}
+
+check() {
+ cd "$builddir"
+
+ # XXX: Some tests fail on s390x, but only on builder, so ignore it for now.
+ case "$CARCH" in
+ s390x) make check || true;;
+ *) make check;;
+ esac
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="4f0b27067966b71efaae809d4f38714863cf3663f3b8c3f26055d482debb15c0fab77752411a9d242f18dbb8e4edc68494f866721dae9c95cfc5354439eaa656 ddrescue-1.23.tar.lz"
diff --git a/user/dhcpcd/APKBUILD b/user/dhcpcd/APKBUILD
index 856088ea3..e42405db5 100644
--- a/user/dhcpcd/APKBUILD
+++ b/user/dhcpcd/APKBUILD
@@ -3,7 +3,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=dhcpcd
-pkgver=7.0.6
+pkgver=7.0.8
pkgrel=0
pkgdesc="RFC2131 compliant DHCP client"
url="https://roy.marples.name/projects/dhcpcd"
@@ -47,6 +47,6 @@ package() {
"$pkgdir"/etc/init.d/dhcpcd
}
-sha512sums="5885739e60d6eb4fded117cb87f59a073ae6e8da8454dee56d8e7c5d33778e413e121d28a22163ebf31e4508a21d3a21c1d17ee6d4551081db2ee8e5384d44c9 dhcpcd-7.0.6.tar.xz
+sha512sums="82cd845eb35670788b8f31b973945460f4c5f1a0a3025e3a452b79230dc30704e129d97140e6aec6d0281e0c89c333c0ce0af03c4767b2e5e66547ed3e071953 dhcpcd-7.0.8.tar.xz
1c19eed0f7a008ee96ea392beb327169ff8c83fc27fed20f65f05c9125f60629ebe3474c5e6a7cf4aeeea448fde4264c9b84916efacd67d47ab908c47b1fc3a5 fix-chrony-conf-location.patch
e777432c2efc84285b41e63a4687f3bd543f6864218d037529ab78b5ad934de154f28f478bd9facb56628f2953aad8a932bc2eb8b1dfffa0ce2278ffcfc4d880 dhcpcd.initd"
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/dmenu/APKBUILD b/user/dmenu/APKBUILD
new file mode 100644
index 000000000..39a27bc5a
--- /dev/null
+++ b/user/dmenu/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Eivind Uggedal <eivind@uggedal.com>
+# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=dmenu
+pkgver=4.8
+pkgrel=0
+pkgdesc="Dynamic menu for X"
+url="https://tools.suckless.org/dmenu/"
+arch="all"
+license="MIT OR X11"
+depends=""
+makedepends="libx11-dev libxinerama-dev libxft-dev"
+options="!check" # This package has no testsuite
+subpackages="$pkgname-doc"
+source="https://dl.suckless.org/tools/$pkgname-$pkgver.tar.gz"
+
+prepare() {
+ default_prepare
+ sed -i -e '/CFLAGS/{s/-Os//;s/=/+=/}' \
+ -e '/LDFLAGS/{s/-s//;s/=/+=/}' \
+ "$builddir"/config.mk
+}
+
+build() {
+ make X11INC=/usr/include/X11 \
+ X11LIB=/usr/lib/X11 \
+ FREETYPEINC=/usr/include/freetype2 \
+ -C "$builddir"
+}
+
+package() {
+ make DESTDIR=$pkgdir PREFIX=/usr \
+ -C "$builddir" install
+}
+
+sha512sums="fa2700018cfb912a21f867ef3ca771a58a25c2cb8e1fb37acef046bb15d8d8b92dcc5bfce486befae0f143495d0283910988e181a9eb143be3bb1b5be9738d77 dmenu-4.8.tar.gz"
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 6a10bb59d..9dcef042e 100644
--- a/user/eigen/APKBUILD
+++ b/user/eigen/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Bradley J Chambers <brad.chambers@gmail.com>
# Maintainer:
pkgname=eigen
-pkgver=3.3.4
+pkgver=3.3.5
pkgrel=1
pkgdesc="Eigen is a C++ template library for linear algebra"
url="http://eigen.tuxfamily.org/index.php?title=Main_Page"
@@ -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="4077a5c3b95e3573774ccd3fe6c7233cb4b83db2358c19b43ea796925bd0201451d8632bddc5d68b1b57bbf67c5473a8908926eed065a745689a2acec9711d5c eigen-3.3.4.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/ethtool/APKBUILD b/user/ethtool/APKBUILD
new file mode 100644
index 000000000..8d4823e3d
--- /dev/null
+++ b/user/ethtool/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=ethtool
+pkgver=4.18
+pkgrel=0
+pkgdesc="Utility for controlling network drivers and hardware"
+url="https://mirrors.edge.kernel.org/pub/software/network/ethtool/"
+arch="all"
+license="GPL-2.0-only AND GPL-2.0+"
+makedepends="linux-headers"
+subpackages="$pkgname-doc"
+source="https://www.kernel.org/pub/software/network/ethtool/$pkgname-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./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="e77f9967be4634955640d9dccbc539455d333bcbad61326617dffea32cfd13a72a7dda4087caf6fff41b49c9ce476435cc1310e131705d0ad402685e10b4fb0e ethtool-4.18.tar.xz"
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/exo/APKBUILD b/user/exo/APKBUILD
new file mode 100644
index 000000000..0137b543d
--- /dev/null
+++ b/user/exo/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=exo
+pkgver=0.12.3
+pkgrel=0
+pkgdesc="Support library for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="LGPL-2.0+ AND GPL-2.0+"
+makedepends="intltool glib-dev gtk+2.0-dev gtk+3.0-dev libxfce4util-dev
+ libxfce4ui-dev libice-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/xfce/exo/0.12/exo-$pkgver.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./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="1a727050b822aa4bdfbce22c1668372b10ddfd9c3988f6949ee32a5c5213d90e20ebafc923193c70dea373d217994fb42101fe2aad7bf55c8e81f983c5a2106f exo-0.12.3.tar.bz2"
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/faad2/APKBUILD b/user/faad2/APKBUILD
index 0fe0e2601..061255a83 100644
--- a/user/faad2/APKBUILD
+++ b/user/faad2/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer:
pkgname=faad2
-pkgver=2.7
-pkgrel=9
+pkgver=2.8.8
+pkgrel=0
pkgdesc="ISO AAC audio decoder"
url="http://www.audiocoding.com/"
arch="all"
@@ -10,23 +10,10 @@ license="GPL-2.0+"
subpackages="$pkgname-dev $pkgname-doc"
depends=""
makedepends="autoconf automake libtool"
-source="http://downloads.sourceforge.net/sourceforge/faac/$pkgname-$pkgver.tar.bz2
- automake.patch"
-
-prepare() {
- cd "$builddir"
- update_config_sub
- default_prepare
-}
+source="https://downloads.sourceforge.net/sourceforge/faac/$pkgname-$pkgver.tar.gz"
build() {
cd "$builddir"
-
- # manfile has bad name
- mv frontend/faad.man frontend/faad.1 && \
- sed -i -e 's:faad\.man:faad.1:' frontend/Makefile.am
-
- sh bootstrap
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -37,8 +24,6 @@ build() {
package() {
cd "$builddir"
make DESTDIR="$pkgdir" install
- install -m644 common/mp4ff/mp4ff_int_types.h "$pkgdir"/usr/include/mp4ff_int_types.h
}
-sha512sums="0934aa9b752b5d86879d94156dea02595e2428340d0cf44202ffea369895b21a9aadbb4833a39212c9a79429b409eb108706b1f523bfddd32809b53730d50947 faad2-2.7.tar.bz2
-0b66cfa240529a2139b47cb8dc87c4b43a451b906d66ef7d211fb509358b1493ceee13894516c2f552b33eae74640910e97957caa49dade2597ebd9777152a9e automake.patch"
+sha512sums="3275d292b2a9fe984842962f4d81202894bddd17033f7cd6df95466554cc968dfcbf2890ae8b1df37da0cd25d645cca0a687f07e39b9fc37dd004fd5956a82af faad2-2.8.8.tar.gz"
diff --git a/user/featherpad/APKBUILD b/user/featherpad/APKBUILD
index df5d4b08f..82071dcc3 100644
--- a/user/featherpad/APKBUILD
+++ b/user/featherpad/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=featherpad
-pkgver=0.9.0
+pkgver=0.9.1
pkgrel=0
pkgdesc="Featureful Qt-based text editor"
url="https://github.com/tsujan/FeatherPad"
@@ -31,4 +31,4 @@ package() {
make INSTALL_ROOT="$pkgdir" PREFIX=/usr install
}
-sha512sums="7d898a4c9cce49c3e8dd624b1561559d40a4aae757ec1500719a5dd0dc4df055689735a36b048fb34f644c54a41ec1ee473d6b46bd022ccb00c4ea375664199a FeatherPad-0.9.0.tar.gz"
+sha512sums="5a301757ed320f3eff157821b0844b86c74322887462c60e1feb79790898ce5b1ba2e80cb5e1440d5cfa350f6dbb390d10e27aa05f953e49bfd6720c89c610ea FeatherPad-0.9.1.tar.gz"
diff --git a/user/feh/APKBUILD b/user/feh/APKBUILD
index f6a26f433..208f9e87e 100644
--- a/user/feh/APKBUILD
+++ b/user/feh/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Max Rees <maxcrees@me.com>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=feh
-pkgver=2.27.1
+pkgver=2.28
pkgrel=0
pkgdesc="feh is a fast, lightweight image viewer which uses imlib2"
url="https://feh.finalrewind.org/"
@@ -34,4 +34,4 @@ package() {
install
}
-sha512sums="271aa2fd5f0bdd646b46ca746ef38b0a427a64981b0f1ebaf28a258448a9082ecff0b2d0fce215b4a94765ff4299d0d3bdbb97bca284d4ef6a80ebd7a4ee4be1 feh-2.27.1.tar.bz2"
+sha512sums="565a5aa0ce1c29fb2f09995283dbf2e12e0f228294df7c1b744a545e4f550126e0b327e9903c9eb35cb7dbd96d69e4653c57f3b3cb2dc2475680b3c62b71e1d8 feh-2.28.tar.bz2"
diff --git a/user/ffmpegthumbnailer/APKBUILD b/user/ffmpegthumbnailer/APKBUILD
new file mode 100644
index 000000000..ae8a1c7e0
--- /dev/null
+++ b/user/ffmpegthumbnailer/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=ffmpegthumbnailer
+pkgver=2.2.0
+pkgrel=0
+pkgdesc="Thumbnail generator based on FFMPEG"
+url="https://github.com/dirkvdb/ffmpegthumbnailer"
+arch="all"
+license="GPL-2.0+"
+makedepends="ffmpeg-dev libjpeg-turbo-dev libpng-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://github.com/dirkvdb/ffmpegthumbnailer/releases/download/$pkgver/ffmpegthumbnailer-$pkgver.tar.bz2"
+sha512sums="526d15b2c754fcb1415e69fb54cb6e7d0102b6d73a32a7e8528df81e32633dfe3786898984fdb988c93daee7218956c75c096ef657c9b3a42399d2d1d27c7bbf ffmpegthumbnailer-2.2.0.tar.bz2"
+
+build() {
+ cd "$builddir"
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DENABLE_GIO=True \
+ -DENABLE_THUMBNAILER=True \
+ ${CMAKE_CROSSOPTS}
+ make
+}
+
+check() {
+ cd "$builddir"
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
diff --git a/user/fltk/APKBUILD b/user/fltk/APKBUILD
index 8b8fa2faf..fa5f5702c 100644
--- a/user/fltk/APKBUILD
+++ b/user/fltk/APKBUILD
@@ -1,8 +1,9 @@
# Contributor: ScrumpyJack <scrumpyjack@st.ilet.to>
-# Maintainer: ScrumpyJack <scrumpyjack@st.ilet.to>
+# Maintainer:
pkgname=fltk
-pkgver=1.3.4
-pkgrel=1
+pkgver=1.3.4.2
+_realver=1.3.4-2
+pkgrel=0
pkgdesc="Cross-platform C++ GUI toolkit"
url="http://www.fltk.org/"
arch="all"
@@ -12,8 +13,8 @@ depends=""
depends_dev="libx11-dev libxext-dev libxft-dev mesa-dev"
makedepends="$depends_dev libjpeg-turbo-dev libpng-dev libxinerama-dev"
subpackages="$pkgname-doc $pkgname-dev $pkgname-fluid"
-source="http://fltk.org/pub/fltk/$pkgver/$pkgname-$pkgver-source.tar.gz
- "
+source="http://fltk.org/pub/fltk/1.3.4/$pkgname-$_realver-source.tar.gz"
+builddir="$srcdir"/$pkgname-$_realver
build() {
cd "$builddir"
@@ -42,4 +43,4 @@ fluid() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
}
-sha512sums="92c236e426ad9b2a2954a6fc401bc9bf4c4c46d47b08f8c9b879da6031ac158ef9b944f28a8bea64d18072d1af8ceaa09c00abebd745fb76dd628636424446c2 fltk-1.3.4-source.tar.gz"
+sha512sums="cc169449b71ca966b2043ceedc55e92220ccb6be07b0ac54eeec36bbed5d60e2f59c6faba2403b5292b9120f5255227880a066d98ac82e57d502522bc627fd4d fltk-1.3.4-2-source.tar.gz"
diff --git a/user/fluxbox/APKBUILD b/user/fluxbox/APKBUILD
new file mode 100644
index 000000000..ca5245921
--- /dev/null
+++ b/user/fluxbox/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=fluxbox
+pkgver=1.3.7
+pkgrel=0
+pkgdesc="A lightweight and highly-configurable window manager"
+url="http://www.fluxbox.org"
+arch="all"
+license="MIT"
+options="!check" # This package has a broken testsuite
+depends=""
+makedepends="libxinerama-dev libxpm-dev libxrandr imlib2-dev libxrender-dev
+ libxrandr-dev libxinerama-dev freetype-dev libxft-dev xorgproto"
+subpackages="$pkgname-doc"
+source="http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.bz2"
+
+build() {
+ cd "$builddir"
+ # TODO: Enable NLS when we get 'gencat'
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --enable-imlib2 \
+ --disable-nls
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="c40cc765f5d542210e18dca21b98b97a048c6685b605a68e2c64f4e886329f4e6d3a3a7e76b3ca0ce488242f38d0ee2a4d6dfebc9ce97d37c68f84c3948aac8c fluxbox-1.3.7.tar.bz2"
diff --git a/user/fontconfig/APKBUILD b/user/fontconfig/APKBUILD
index 45b62a8ca..c07bf8073 100644
--- a/user/fontconfig/APKBUILD
+++ b/user/fontconfig/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Mika Havela <mika.havela@gmail.com>
# Maintainer:
pkgname=fontconfig
-pkgver=2.13.0
+pkgver=2.13.1
pkgrel=0
pkgdesc="Library for configuring and customizing font access"
url="https://www.freedesktop.org/wiki/Software/fontconfig/"
@@ -11,7 +11,7 @@ license="MIT"
depends=""
makedepends="freetype-dev expat-dev python3-dev gperf util-linux-dev"
triggers="$pkgname.trigger=/usr/share/fonts/*"
-subpackages="$pkgname-doc $pkgname-dev"
+subpackages="$pkgname-doc $pkgname-dev $pkgname-lang"
source="https://www.freedesktop.org/software/fontconfig/release/${pkgname}-${pkgver}.tar.gz"
build() {
@@ -42,4 +42,4 @@ package() {
install -m644 -D COPYING "$pkgdir"/usr/share/licenses/"${pkgname}"/COPYING
}
-sha512sums="5c0f98d1ac8e2ce0b2b59e75a86123967873e71ca3dd0d97911d6e6845a3cb2e099093a92933f55fe5a1c61821de26c1fa07141319c563c6280226b2cdea08e2 fontconfig-2.13.0.tar.gz"
+sha512sums="830df32e944ee21ad02a9df04787b9902af36ffc13913524acef6e38799a38c5df7a6e407cc0ff9c24455520549d53b3d85d22642a229ac654dc9269926f130b fontconfig-2.13.1.tar.gz"
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/freecell-solver/APKBUILD b/user/freecell-solver/APKBUILD
new file mode 100644
index 000000000..abf6ae301
--- /dev/null
+++ b/user/freecell-solver/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=freecell-solver
+pkgver=4.20.0
+pkgrel=0
+pkgdesc="Library for solving card games"
+url="http://fc-solve.shlomifish.org/"
+arch="all"
+license="MIT"
+depends="python3"
+makedepends="gperf perl perl-task-freecellsolver-testing python3 py3-random2
+ py3-six"
+checkdepends="gmp-dev libtap-dev perl-dev py3-cffi py3-pycotap the_silver_searcher
+ valgrind"
+subpackages="$pkgname-dev $pkgname-doc"
+source="http://fc-solve.shlomifish.org/downloads/fc-solve/freecell-solver-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS}
+ # The build system generates header files; jobs >1 may cause failures
+ # because .h don't exist yet.
+ make -j1
+}
+
+check() {
+ cd "$builddir"
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="6ee43c79e2562ee2dcff96301ebb7c98e619393e8bb9396871d8cac9e231b3666480202938e30eabbc3a3d2c8beca8f01e5f6bf9365a2a575197bd9fd3a0c570 freecell-solver-4.20.0.tar.xz"
diff --git a/user/freeglut/APKBUILD b/user/freeglut/APKBUILD
new file mode 100644
index 000000000..f89c0cac6
--- /dev/null
+++ b/user/freeglut/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=freeglut
+pkgver=3.0.0
+pkgrel=0
+pkgdesc="free reimplementation of OpenGL Utility Toolkit (GLUT) library"
+url="http://freeglut.sourceforge.net/"
+arch="all"
+options="!check" # No test suite.
+license="X11"
+depends_dev="mesa-dev libx11-dev libice-dev libxxf86vm-dev libxi-dev glu-dev"
+makedepends="$depends_dev cmake"
+subpackages="$pkgname-dev $pkgname-doc"
+source="http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz"
+
+build() {
+ cd "$builddir"
+ cmake . \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DFREEGLUT_BUILD_STATIC_LIBS=0
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+
+ install -m644 -D COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
+}
+
+sha512sums="9c45d5b203b26a7ff92331b3e080a48e806c92fbbe7c65d9262dd18c39cd6efdad8a795a80f499a2d23df84b4909dbd7c1bab20d7dd3555d3d88782ce9dd15b0 freeglut-3.0.0.tar.gz"
diff --git a/user/freetds/APKBUILD b/user/freetds/APKBUILD
index e857bc2c5..9bb50f742 100644
--- a/user/freetds/APKBUILD
+++ b/user/freetds/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Michael Mason <ms13sp@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=freetds
-pkgver=1.00.97
+pkgver=1.00.104
pkgrel=0
pkgdesc="Tabular Datastream Library"
url="http://www.freetds.org/"
@@ -40,5 +40,5 @@ package() {
make -j1 DESTDIR="$pkgdir" install
}
-sha512sums="4e185f96e77735675cf5a3d49d85da27f6813a34cd82fdc6ac534dd67d2d5f624855c5c1dc0d60dcd022bcd1a226fe19148bfca09ff83a322ebd24a70d064cb2 freetds-1.00.97.tar.gz
+sha512sums="e1a1f2831bd893cc738e0e5029512d60e38ca3e26ad0df59916cb100dd90f9bf2a82273533a316928dc6152d80266692415dd2e16a8f7edb029c3439ebe8986c freetds-1.00.104.tar.gz
d75d1aab6687586697f3e430db1e82f21208f10076b45996542eea682e36cbbbb344f479a9336fcfd294b5b87d7acb2ec5fb8ddd1914e990e23dd5e7ae93a0b6 fix-includes.patch"
diff --git a/user/frei0r-plugins/APKBUILD b/user/frei0r-plugins/APKBUILD
index b959deae1..bbfd1c2ca 100644
--- a/user/frei0r-plugins/APKBUILD
+++ b/user/frei0r-plugins/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer:
pkgname=frei0r-plugins
-pkgver=1.5.0
-pkgrel=2
+pkgver=1.6.1
+pkgrel=0
pkgdesc="A minimalistic plugin API for video sources and filters"
url=" "
arch="all"
@@ -12,7 +12,9 @@ depends=""
makedepends="opencv-dev gavl-dev file cairo-dev doxygen
automake autoconf libtool"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://files.dyne.org/frei0r/releases/frei0r-plugins-$pkgver.tar.gz"
+source="https://files.dyne.org/frei0r/releases/frei0r-plugins-$pkgver.tar.gz
+ facebl0r-opencv-3.4.3.patch
+ "
prepare() {
default_prepare
@@ -35,4 +37,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="9be0384421ff5ac9000dcda9acefb5cb2b6dc05ea72d9771fae990cb5fad4424dcef8dd15c1e5031a89169f914af8c7a30e47934ad007a3bc0150f3c005bc6bf frei0r-plugins-1.5.0.tar.gz"
+sha512sums="843790389e6de83817d1c3744a91d3365864bb0c22cf6598707ccba5ec8933f6209434011cde1303e16edd89f6cde2f22aa1fb6eca3548d892a2c77332c44aac frei0r-plugins-1.6.1.tar.gz
+785ff3459f371620780f274b82702c8f6625d78fcd6000fddca0585e3aeaa0af57fd9d9444c4d0f1ca47e84b47b8a2fca4b86fa44ebe93487948eb8f4a193503 facebl0r-opencv-3.4.3.patch"
diff --git a/user/frei0r-plugins/facebl0r-opencv-3.4.3.patch b/user/frei0r-plugins/facebl0r-opencv-3.4.3.patch
new file mode 100644
index 000000000..f3d4f46bb
--- /dev/null
+++ b/user/frei0r-plugins/facebl0r-opencv-3.4.3.patch
@@ -0,0 +1,22 @@
+From b0a06d52e39438fae2afbf98bafe6c794d13b83e Mon Sep 17 00:00:00 2001
+From: Christoph Willing <chris.willing@linux.com>
+Date: Sat, 14 Jul 2018 21:34:03 +1000
+Subject: [PATCH] Include opencv2/imgproc.hpp for CV_RGB()
+
+Signed-off-by: Christoph Willing <chris.willing@linux.com>
+---
+ src/filter/facebl0r/facebl0r.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/filter/facebl0r/facebl0r.cpp b/src/filter/facebl0r/facebl0r.cpp
+index 6d6e8f2..823462a 100644
+--- a/src/filter/facebl0r/facebl0r.cpp
++++ b/src/filter/facebl0r/facebl0r.cpp
+@@ -19,6 +19,7 @@
+ #include <stdlib.h>
+ #include <opencv/cv.h>
+ #include <opencv/highgui.h>
++#include <opencv2/imgproc.hpp>
+
+ #include <frei0r.hpp>
+ #include <frei0r_math.h>
diff --git a/user/fuse/APKBUILD b/user/fuse/APKBUILD
new file mode 100644
index 000000000..92840ed41
--- /dev/null
+++ b/user/fuse/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=fuse
+pkgver=2.9.8
+pkgrel=2
+pkgdesc="Linux Filesystem in Userspace (legacy version)"
+url="https://github.com/libfuse/libfuse"
+arch="all"
+options="suid !check" # No test suite.
+license="GPL-2.0-only AND LGPL-2.1-only AND (GPL-2.0-only OR BSD-2-Clause)"
+depends="fuse-common"
+makedepends=""
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://github.com/libfuse/libfuse/releases/download/$pkgname-$pkgver/$pkgname-$pkgver.tar.gz
+ fix-realpath.patch
+"
+
+# secfixes:
+# 2.9.8-r0:
+# - CVE-2018-10906
+
+build() {
+ cd "$builddir"
+ UDEV_RULES_PATH='/lib/udev/rules.d' ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-example \
+ --enable-lib \
+ --enable-util
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ rm -r "$pkgdir"/dev "$pkgdir"/etc/init.d
+}
+
+sha512sums="0a9b14d96c6f98f5c903baf00114bfff72f9aeb97224702bbed370516b2b582401d5b436fcef979918ffd85d69ba4a82c8f722c0b35ebd50f7aa5f4ddfdcf8ad fuse-2.9.8.tar.gz
+5672ceb35acabb4bd97b6efc30614f22def62882fe198e2a8598a074d45b6b5337c082a5e09b5e399b6e5212dc1fbde9071c2a5051534c32091444c350b9c657 fix-realpath.patch"
diff --git a/user/fuse/fix-realpath.patch b/user/fuse/fix-realpath.patch
new file mode 100644
index 000000000..1199eb338
--- /dev/null
+++ b/user/fuse/fix-realpath.patch
@@ -0,0 +1,28 @@
+--- fuse-2.9.3.orig/util/fusermount.c 2015-02-07 08:58:54.000000000 -0200
++++ fuse-2.9.3/util/fusermount.c 2015-02-09 09:15:16.737367957 -0200
+@@ -1255,19 +1255,16 @@
+
+ origmnt = argv[optind];
+
+- drop_privs();
+ mnt = fuse_mnt_resolve_path(progname, origmnt);
+- if (mnt != NULL) {
+- res = chdir("/");
+- if (res == -1) {
+- fprintf(stderr, "%s: failed to chdir to '/'\n", progname);
+- exit(1);
+- }
+- }
+- restore_privs();
+ if (mnt == NULL)
+ exit(1);
+
++ res = chdir("/");
++ if (res == -1) {
++ fprintf(stderr, "%s: failed to chdir to '/'\n", progname);
++ exit(1);
++ }
++
+ umask(033);
+ if (unmount)
+ goto do_unmount;
diff --git a/user/fuse3/APKBUILD b/user/fuse3/APKBUILD
new file mode 100644
index 000000000..dc049071d
--- /dev/null
+++ b/user/fuse3/APKBUILD
@@ -0,0 +1,77 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=fuse3
+_pkgname=fuse
+pkgver=3.2.6
+pkgrel=0
+pkgdesc="The reference implementation of the Linux FUSE (Filesystem in Userspace) interface"
+url="https://github.com/libfuse/libfuse"
+arch="all"
+options="suid !check" # Requires fuse kernel module to be loaded
+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 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
+ fix-realpath.patch
+ fuse.initd"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+# secfixes:
+# 3.2.5-r0:
+# - CVE-2018-10906
+
+build() {
+ cd "$builddir"
+ meson \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ . output
+ ninja -C output
+}
+
+check() {
+ cd "$builddir"/output
+ python3 -m pytest test/
+}
+
+package() {
+ cd "$builddir"
+ DESTDIR="$pkgdir" ninja -C output install
+ rm -r "$pkgdir"/dev "$pkgdir"/etc/init.d
+
+ install -Dm755 "$srcdir"/fuse.initd "$pkgdir"/etc/init.d/fuse
+ install -d "$pkgdir"/etc
+ cat >"$pkgdir"/etc/fuse.conf << EOF
+# Set the maximum number of FUSE mounts allowed to non-root users.
+# The default is 1000.
+#
+#mount_max = 1000
+
+# Allow non-root users to specify the 'allow_other' or 'allow_root'
+# mount options.
+#
+#user_allow_other
+EOF
+}
+
+common() {
+ pkgdesc="Common files for fuse2 and fuse3"
+ mkdir -p "$subpkgdir"/etc
+ mv "$pkgdir"/etc/fuse.conf "$subpkgdir"/etc
+}
+
+openrc() {
+ default_openrc
+ install_if="openrc fuse-common=$pkgver-r$pkgrel"
+}
+
+sha512sums="3a1ef77ab4c79a24aad0b259e17f568a30a5faf53ac17eb25d05f30dc7423f0081583f5b3c284ca9196a01885843e97c323a84231272b7e2b55c8e73848a61b8 fuse-3.2.6.tar.xz
+1a9e1d1e8a7b0778ffde328e4322c73b5d57ec98d52767c846d755cce861ab27989823a75b6c5f994432ddb77fa351dfa4a8f948c9467c5f7d5f471e4608358b fix-realpath.patch
+7f6a503ef23cfa8b809c544375c2d83ad56525269b48ad1a7dff0ce36f4bf2f2a3fafed9dc70a71ff6281b261db5f01829e16c06f041921a5d8c8d715a04a8c1 fuse.initd"
diff --git a/user/fuse3/fix-realpath.patch b/user/fuse3/fix-realpath.patch
new file mode 100644
index 000000000..375bedc96
--- /dev/null
+++ b/user/fuse3/fix-realpath.patch
@@ -0,0 +1,28 @@
+--- fuse-3.1.0.orig/util/fusermount.c
++++ fuse-3.1.0/util/fusermount.c
+@@ -1200,19 +1200,16 @@
+
+ origmnt = argv[optind];
+
+- drop_privs();
+ mnt = fuse_mnt_resolve_path(progname, origmnt);
+- if (mnt != NULL) {
+- res = chdir("/");
+- if (res == -1) {
+- fprintf(stderr, "%s: failed to chdir to '/'\n", progname);
+- goto err_out;
+- }
+- }
+- restore_privs();
+ if (mnt == NULL)
+ exit(1);
+
++ res = chdir("/");
++ if (res == -1) {
++ fprintf(stderr, "%s: failed to chdir to '/'\n", progname);
++ exit(1);
++ }
++
+ umask(033);
+ if (unmount)
+ goto do_unmount;
diff --git a/user/fuse3/fuse.initd b/user/fuse3/fuse.initd
new file mode 100644
index 000000000..6c99929c2
--- /dev/null
+++ b/user/fuse3/fuse.initd
@@ -0,0 +1,35 @@
+#!/sbin/openrc-run
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+MOUNTPOINT=/sys/fs/fuse/connections
+
+depend() {
+ need localmount
+}
+
+start() {
+
+ ebegin "Starting fuse"
+ if ! grep -qw fuse /proc/filesystems; then
+ modprobe fuse >/dev/null 2>&1 || eerror $? "Error loading fuse module"
+ fi
+ if grep -qw fusectl /proc/filesystems && \
+ ! grep -qw $MOUNTPOINT /proc/mounts; then
+ mount -t fusectl none $MOUNTPOINT >/dev/null 2>&1 || \
+ eerror $? "Error mounting control filesystem"
+ fi
+ eend ${?}
+
+}
+
+stop() {
+
+ ebegin "Stopping fuse"
+ if grep -qw $MOUNTPOINT /proc/mounts; then
+ umount $MOUNTPOINT >/dev/null 2>&1 || \
+ eerror $? "Error unmounting control filesystem"
+ fi
+ eend ${?}
+
+}
diff --git a/user/garcon/APKBUILD b/user/garcon/APKBUILD
new file mode 100644
index 000000000..01174f637
--- /dev/null
+++ b/user/garcon/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=garcon
+pkgver=0.6.1
+pkgrel=0
+pkgdesc="freedesktop.org menu library for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="LGPL-2.0+"
+makedepends="intltool glib-dev libxfce4util-dev gtk+3.0-dev libxfce4util-dev
+ libxfce4ui-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/xfce/garcon/0.6/garcon-$pkgver.tar.bz2"
+sha512sums="36c5b1ba3c91e613853cd5e986176c8cbd2a509fafde1b302334deda872b7f7073fd06ba341220b030d8d5728346b7339368190b225203f33c023dd96f3ed1a3 garcon-0.6.1.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./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
+}
+
diff --git a/user/gcompat/APKBUILD b/user/gcompat/APKBUILD
new file mode 100644
index 000000000..3c18e3891
--- /dev/null
+++ b/user/gcompat/APKBUILD
@@ -0,0 +1,39 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=gcompat
+pkgver=0.3.0
+pkgrel=0
+pkgdesc="The GNU C Library compatibility layer for musl"
+url="https://code.foxkit.us/adelie/gcompat"
+arch="all"
+options="!check" # No test suite.
+license="UoI-NCSA"
+depends=""
+makedepends="libucontext-dev"
+replaces="libc6-compat"
+source="https://distfiles.adelielinux.org/source/gcompat/$pkgname-$pkgver.tar.xz
+ no-utmp.patch
+ "
+
+case "$CARCH" in
+armel) _ld="ld-linux.so.3" ;;
+armhf | armv7) _ld="ld-linux-armhf.so.3" ;;
+aarch64) _ld="ld-linux-aarch64.so.1" ;;
+x86|pmmx|i528) _ld="ld-linux.so.2" ;;
+x86_64) _ld="ld-linux-x86-64.so.2" ;;
+mips* | ppc | s390*) _ld="ld.so.1" ;;
+ppc64le) _ld="ld64.so.2" ;;
+ppc64) _ld="ld64.so.1" ;;
+esac
+
+build() {
+ cd "$builddir"
+ make LINKER_PATH="/lib/ld-musl-${CARCH}.so.1" LOADER_NAME="$_ld" WITH_LIBUCONTEXT=YesPlease
+}
+
+package() {
+ cd "$builddir"
+ make LINKER_PATH="/lib/ld-musl-${CARCH}.so.1" LOADER_NAME="$_ld" WITH_LIBUCONTEXT=YesPlease DESTDIR="$pkgdir" install
+}
+
+sha512sums="1f7dd73efd556b7e0f7f1c80751185583de24daf4ab235b488ea1ab98cea2d3a94abed341b922be0bd43c8d539a00176b892c78acf09f2adacb279c09648b3be gcompat-0.3.0.tar.xz
+34fbf97cfbad2bae219e238f5edcb55425c6d7c9be7dde02aa0e8223dbf163ff20f535539de2232a1ef3c6f47a92eac6e00484af99dc8beb192c761b15389b82 no-utmp.patch"
diff --git a/user/gcompat/no-utmp.patch b/user/gcompat/no-utmp.patch
new file mode 100644
index 000000000..c5d2251b1
--- /dev/null
+++ b/user/gcompat/no-utmp.patch
@@ -0,0 +1,16 @@
+--- gcompat-0.3.0/libgcompat/utmp.c.old 2018-09-05 02:26:02.850000000 +0000
++++ gcompat-0.3.0/libgcompat/utmp.c 2018-09-21 21:39:17.350000000 +0000
+@@ -1,12 +1,11 @@
+ #include <stddef.h> /* NULL */
+-#include <utmp.h> /* struct utmp */
+
+ /**
+ * Get user accounting database entries.
+ *
+ * LSB 5.0: LSB-Core-generic/baselib-getutent-r-3.html
+ */
+-int getutent_r(struct utmp *buffer, struct utmp **result)
++int getutent_r(void *buffer, void **result)
+ {
+ /* musl does not implement getutent(). */
+ *result = NULL;
diff --git a/user/gdbm/APKBUILD b/user/gdbm/APKBUILD
index 1e12b815a..14e1fc411 100644
--- a/user/gdbm/APKBUILD
+++ b/user/gdbm/APKBUILD
@@ -2,7 +2,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer:
pkgname=gdbm
-pkgver=1.16
+pkgver=1.18
pkgrel=0
pkgdesc="Set of database routines that use extensible hashing"
url="https://www.gnu.org/software/gdbm/"
@@ -35,4 +35,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="97f4f37fd95cee4dd5c9c3f42ea3aecaa28016e90fe0e168a9d8c38e92602221f946c273bb249d508200249701c6403d0f9351460485dfae34a3bf625de59d2c gdbm-1.16.tar.gz"
+sha512sums="57c7e5dc52464e97ad955e28d49fdb3557d8e3bdf280f7d3cee69539e4878f055db17cb9dd591f82fadb8fa5041a5a56d8a571d34f6e115470a3a82537f872a8 gdbm-1.18.tar.gz"
diff --git a/user/glib/APKBUILD b/user/glib/APKBUILD
index 9a90b5002..f4fb51fd9 100644
--- a/user/glib/APKBUILD
+++ b/user/glib/APKBUILD
@@ -1,19 +1,18 @@
# Contributor: Valery Kartel <valery.kartel@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=glib
-pkgver=2.56.1
+pkgver=2.58.1
pkgrel=0
pkgdesc="Common C routines used by Gtk+ and other libs"
url="https://developer.gnome.org/glib/"
arch="all"
-options="!check"
+options="!check" # Now requires D-Bus running.
license="LGPL-2.1+"
-depends=
-triggers="$pkgname.trigger=/usr/share/glib-2.0/schemas:/usr/lib/gio/modules"
+depends=""
depends_dev="perl python3 attr-dev zlib-dev bzip2-dev libffi-dev util-linux-dev"
-makedepends="$depends_dev pcre-dev xmlto"
checkdepends="tzdata shared-mime-info"
-langdir="/usr/lib/locale"
+makedepends="$depends_dev meson ninja pcre-dev xmlto"
+triggers="$pkgname.trigger=/usr/share/glib-2.0/schemas:/usr/lib/gio/modules"
source="https://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz
0001-gquark-fix-initialization-with-c-constructors.patch
broken-gio-tests.patch
@@ -21,7 +20,7 @@ source="https://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgve
i386-fpu-test.patch
musl-no-locale.patch
ridiculous-strerror-nonconformance.patch
- thread-test-fix.patch
+ meson-sucks-and-i-hate-you-so-much-right-now.patch
"
subpackages="$pkgname-dbg $pkgname-doc $pkgname-static $pkgname-dev $pkgname-lang $pkgname-bash-completion:bashcomp:noarch"
@@ -29,37 +28,24 @@ prepare() {
cd "$builddir"
default_prepare
- # workaround packaging issue. gtk-doc.make timestamp was newer than
- # Makefile.am, which triggers automake re-run
- touch -r docs/reference/glib/Makefile.am gtk-doc.make
+ mkdir -p dumb_meson
}
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --mandir=/usr/share/man \
- --disable-gtk-doc \
- --disable-compile-warnings \
- --disable-selinux \
- --with-pcre=system \
- --with-python=python3 \
- --with-pic \
- --enable-static
- make
+ cd "$builddir"/dumb_meson
+ meson --default-library=both -Dprefix=/usr -Dselinux=false -Dman=true ..
+ ninja
}
check() {
- cd "$builddir"
+ cd "$builddir"/dumb_meson
# workaround if a user builds it on a computer running X11
- DISPLAY= make check
+ DISPLAY= ninja test
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ cd "$builddir"/dumb_meson
+ DESTDIR="$pkgdir" ninja install
rm -rf "$pkgdir"/usr/lib/charset.alias
}
@@ -78,7 +64,7 @@ dev() {
}
static() {
- pkgdesc="glib static libraries"
+ pkgdesc="$pkgdesc (static libraries)"
mkdir -p "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/*.a "$subpkgdir"/usr/lib/
}
@@ -92,11 +78,11 @@ bashcomp() {
[ "$(ls -A "$pkgdir"/usr/share)" ] || rmdir "$pkgdir"/usr/share
}
-sha512sums="7e96cc23f3fa42a41b1974ae8fa2a7b123449643f265763d464620afcb011668e2de013ed2a6e5f13b6bd1bf3ab8eab43c05bf4a8ee0d99b7808767ab4fa69f4 glib-2.56.1.tar.xz
+sha512sums="115b74fcd43241e3c4b4babfb8170453b2a002ff02d5996f3c097876199cadccc1cf67b017c10c14c0d2a1bb4228027b743f4926bda0ef7d74012ed712ccd155 glib-2.58.1.tar.xz
32e5aca9a315fb985fafa0b4355e4498c1f877fc1f0b58ad4ac261fb9fbced9f026c7756a5f2af7d61ce756b55c8cd02811bb08df397040e93510056f073756b 0001-gquark-fix-initialization-with-c-constructors.patch
5bb7ee99cd19bc10f49b64c5bb9d79a0ee5bd918852f6351261bd5b3f3d8486c593bac6285da7e227579af9bac2b27c47251e4a62fd3af6cabe21f6b111e5e7a broken-gio-tests.patch
0f0a98784aeed92f33cd9239d2f668bdc6c09b84ed020825ae88f6aacf6a922152dc3e1384c40d9f30f54c5ab78fe17e0ee5c42b268b297b595d2a6cde5b8998 fix-spawn.patch
aa7444bbdf7b88798adc67c15cdb8b7459450c0b7357caea16b74462c5c9179ba80d4018b1e656e90a5e3be5b2e3c14e9b8c0ccbb2ee4d8c92dc8fa627518b84 i386-fpu-test.patch
34129be883011d266074783b7283af5c6a45055b85026b5aab47a3a0dfa1316a0a6502aaf78ab172356f67493ea7c4867b53279c25967a8cc5bee9320dbff96a musl-no-locale.patch
56c10a0f64cbd8ce584d428f818e7e678fdeb40a32df792843208ddfa3135d362cc2077bc9fe3bfebe13ee6af0ecf6403a593ad727e0a92276074a17a9c7029c ridiculous-strerror-nonconformance.patch
-0cebf9cbf87a92c3160054eb30189a827847f5820a8b90f4842b4ad5ab5cc343ba06e5f55214864bd0f0d5a21e55ec5e7f35c66207e77b1496142b7ee0c75567 thread-test-fix.patch"
+d788005bc92ed1510235b77a9a26eecd78840a3e915a64e53e1e93cd1efaaeb1b9b5edb115f41352fcbdab10006b91b4aae7af20184c904e869a0d6893080368 meson-sucks-and-i-hate-you-so-much-right-now.patch"
diff --git a/user/glib/meson-sucks-and-i-hate-you-so-much-right-now.patch b/user/glib/meson-sucks-and-i-hate-you-so-much-right-now.patch
new file mode 100644
index 000000000..ba38bdec2
--- /dev/null
+++ b/user/glib/meson-sucks-and-i-hate-you-so-much-right-now.patch
@@ -0,0 +1,8 @@
+--- glib-2.58.0/glib/libcharset/meson.build.old 2018-08-30 17:12:09.000000000 +0000
++++ glib-2.58.0/glib/libcharset/meson.build 2018-09-10 03:42:01.930000000 +0000
+@@ -6,4 +6,5 @@
+ charset_lib = static_library('charset', 'localcharset.c',
+ include_directories : configinc,
+ pic : true,
++ install : true,
+ c_args : [ '-DGLIB_CHARSETALIAS_DIR="@0@"'.format(charsetalias_dir) ] + glib_hidden_visibility_args)
diff --git a/user/glib/thread-test-fix.patch b/user/glib/thread-test-fix.patch
deleted file mode 100644
index bcfcfc441..000000000
--- a/user/glib/thread-test-fix.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- glib-2.52.1/glib/tests/thread.c.old 2016-10-22 05:21:37.000000000 +0000
-+++ glib-2.52.1/glib/tests/thread.c 2017-08-20 04:51:46.756496035 +0000
-@@ -174,7 +174,7 @@
- static gpointer
- thread6_func (gpointer data)
- {
--#ifdef HAVE_PTHREAD_SETNAME_NP_WITH_TID
-+#if 0
- char name[16];
-
- pthread_getname_np (pthread_self(), name, 16);
diff --git a/user/glm/APKBUILD b/user/glm/APKBUILD
index 93a6d15e7..177ab1ec9 100644
--- a/user/glm/APKBUILD
+++ b/user/glm/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=glm
-pkgver=0.9.9.0
+pkgver=0.9.9.1
pkgrel=0
pkgdesc="C++ header-only mathematics library for graphics programming"
url="https://glm.g-truc.net/"
@@ -36,5 +36,5 @@ package() {
make install DESTDIR="$pkgdir"
}
-sha512sums="ac256e8ba515a0a57e27cb9dc79325af7a6f014341c11ba34af604fc2df03ada6979c39c0e5a3fd7526a5dc6dd4af99586e60cefe13bb134ad4df2212193a253 glm-0.9.9.0.zip
+sha512sums="7e45cdede3648d5a6bfc5dd3be3514b11184f04024388207db558d7a888653e4a8714282ab898be73f9aad63630991a3eb4c1e77c271dd1ddbfb6698c71d07a3 glm-0.9.9.1.zip
954495cc875b9e70f1957f54cdaa44738268a5a1104036edcdfd74736f8a3385725f29032a533f2a5acbdbfa19d2fe4bc80ef9fdb49d3e8bdc5dc00db86c813a be.patch"
diff --git a/user/gnutls/APKBUILD b/user/gnutls/APKBUILD
index b2ed36e43..233bbcb52 100644
--- a/user/gnutls/APKBUILD
+++ b/user/gnutls/APKBUILD
@@ -2,11 +2,12 @@
# Contributor: Michael Mason <ms13sp@gmail.com>
# Maintainer:
pkgname=gnutls
-pkgver=3.6.2
+pkgver=3.6.4
pkgrel=0
pkgdesc="A TLS protocol implementation"
url="http://www.gnutls.org/"
arch="all"
+options="!check" # https://gitlab.com/gnutls/gnutls/issues/560
license="LGPL-2.1+"
makedepends="libtasn1-dev libunistring-dev nettle-dev p11-kit-dev texinfo
zlib-dev"
@@ -71,5 +72,5 @@ xx() {
mv "$pkgdir"/usr/lib/lib*xx.so.* "$subpkgdir"/usr/lib/
}
-sha512sums="6a574d355226bdff6198ab3f70633ff2a3cff4b5d06793bdaf19d007063bd4dd515d1bd3f331a9eb1a9ad01f83007801cfa55e5fd16c1cd3461ac33d1813fb06 gnutls-3.6.2.tar.xz
+sha512sums="f39ac09b48ebf230653cbf82b29ded39a1403313067135495b23f428b35783f9ef073993157d1f284678abedd19e2cf1fd01af843001b88320ca17b346b219ab gnutls-3.6.4.tar.xz
abc24ee59cc67805fe953535b0bae33080fc8b0bf788304377f6d10ec8c162c4cf203a69c98a4ba3483b4c60ed7a204433cc7db9b8190eddb0d68f6fb6dad52d gnulib-tests-dont-require-gpg-passphrase.patch"
diff --git a/user/gobject-introspection/APKBUILD b/user/gobject-introspection/APKBUILD
index dc04dcadc..0a45a5fe1 100644
--- a/user/gobject-introspection/APKBUILD
+++ b/user/gobject-introspection/APKBUILD
@@ -1,39 +1,40 @@
# Maintainer:
pkgname=gobject-introspection
-pkgver=1.56.1
+pkgver=1.58.0
pkgrel=0
pkgdesc="Introspection system for GObject-based libraries"
-url="http://live.gnome.org/GObjectIntrospection"
+url="https://wiki.gnome.org/action/show/Projects/GObjectIntrospection"
arch="all"
license="LGPL-2.0+ AND GPL-2.0+ AND MIT"
-depends=
+depends=""
depends_dev="python3 cairo-dev libtool"
-makedepends="$depends_dev glib-dev libffi-dev flex bison python3-dev cmd:which"
+makedepends="$depends_dev bison flex glib-dev libffi-dev meson ninja python3-dev
+ cmd:which"
checkdepends="sed"
subpackages="$pkgname-doc $pkgname-dev"
replaces="libgirepository"
-source="http://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz
- "
+source="https://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz"
-build() {
+prepare() {
cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --disable-static \
- --with-python=python3
- make V=1
+ default_prepare
+ mkdir -p build
+}
+
+build() {
+ cd "$builddir"/build
+ meson -Dprefix=/usr
+ ninja
}
check() {
- cd "$builddir"
- make check
+ cd "$builddir"/build
+ ninja test
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ cd "$builddir"/build
+ DESTDIR="$pkgdir" ninja install
}
dev() {
@@ -45,4 +46,4 @@ dev() {
replaces="gobject-introspection"
}
-sha512sums="2bfcd45b8c5ad68a3f6550c2f80a6804db0e1a72ffaf4fdd3cec3d8acc23e79ad14bb5bf612fe26fc896691839ab19ca8dd1c9994db14d730e56fa79df9d973d gobject-introspection-1.56.1.tar.xz"
+sha512sums="838fda0ddf1889f402eb03edbb82ace28b01b2392fb62be9bb32721aa7aadca6e906f9286c54c2c90d15cd77b258513eb939f2992daf726089755e23a8a17b78 gobject-introspection-1.58.0.tar.xz"
diff --git a/user/gpgme/APKBUILD b/user/gpgme/APKBUILD
index f96ad7760..21b537848 100644
--- a/user/gpgme/APKBUILD
+++ b/user/gpgme/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: William Pitcock <nenolod@dereferenced.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=gpgme
-pkgver=1.11.1
+pkgver=1.12.0
pkgrel=0
pkgdesc="GnuPG Made Easy"
url="https://www.gnupg.org/related_software/gpgme/"
@@ -55,4 +55,4 @@ gpgmepp() {
}
-sha512sums="42fa6f5d6217aaad9b44b969de9603167d179af9a1573342187718ff123cd88c686211c3dc5f2d9cacc20226ab5b8fef85cb66a19ada71d267c397d8ba52cf1a gpgme-1.11.1.tar.bz2"
+sha512sums="c228b3df28377df882be536ada56dc9c73150048a58e591aa4495f89c854af95820152cd60139840f994c249e9c7df50d8b89eb9d6dc4ce02aa80bbfebcdd014 gpgme-1.12.0.tar.bz2"
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/graphite2/APKBUILD b/user/graphite2/APKBUILD
index 74b3541e6..403b60522 100644
--- a/user/graphite2/APKBUILD
+++ b/user/graphite2/APKBUILD
@@ -2,8 +2,8 @@
# Maintainer:
pkgname=graphite2
_realname=${pkgname/2/}
-pkgver=1.3.10
-pkgrel=1
+pkgver=1.3.12
+pkgrel=0
pkgdesc="Text processing engine for complex languages"
url="http://graphite.sil.org/"
arch="all"
@@ -15,13 +15,16 @@ makedepends="$depends_dev cmake"
install=""
subpackages="$pkgname-dev"
source="$pkgname-$pkgver.tar.gz::https://github.com/silnrsi/$_realname/archive/$pkgver.tar.gz
- cmake.patch
graphite2-1.2.0-cmakepath.patch
"
builddir="$srcdir"/$_realname-$pkgver
build() {
cd "$builddir"
+
+ # Fix linking error on 32-bit platforms
+ sed -i -e 's/\-nodefaultlibs//g' src/CMakeLists.txt
+
mkdir build && cd build
cmake -G "Unix Makefiles" .. \
-DCMAKE_C_FLAGS:STRING="${CFLAGS}" \
@@ -41,6 +44,5 @@ package() {
make DESTDIR="$pkgdir/" install
}
-sha512sums="9a6ff2ad88f04e55a6da862e6eefcf2d87c562bb9feedddc4532b66f7938b9ade4a12c8a4b19ab7b08ec3e34a96b97331621a7465b672407ab4d1af756df04c1 graphite2-1.3.10.tar.gz
-44dcff1e6c8c5e3df92eae8cab501c9605a1cd3e16b6cdce2e376d78fd08b26b7f6e037b7e5878099ba426a93572114169b5f64c4d2ae0bcbe223f1d28b00eb5 cmake.patch
+sha512sums="d0aed05b54445a9664435d5aef9d78fc07a89be23d18b7b1339d37412b09faca6da3dc1e72524e4b114724b76aa6f36934e8ab1a01bd0752e353efa075c9e643 graphite2-1.3.12.tar.gz
4ef5414e6d554bb8d6ead435e38d061a073f350c313b7141158bb68332f5f57ca5250385875a387b828bb657964588e974143b96b5e11c2cd314871e7baddb88 graphite2-1.2.0-cmakepath.patch"
diff --git a/user/graphite2/cmake.patch b/user/graphite2/cmake.patch
deleted file mode 100644
index 41f1e5187..000000000
--- a/user/graphite2/cmake.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- ./tests/CMakeLists.txt.orig
-+++ ./tests/CMakeLists.txt
-@@ -58,7 +58,9 @@
- LINKER_LANGUAGE C)
- endif (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
-
--add_subdirectory(comparerenderer)
-+if (GRAPHITE2_COMPARE_RENDERER)
-+ add_subdirectory(comparerenderer)
-+endif (GRAPHITE2_COMPARE_RENDERER)
- add_subdirectory(endian)
- add_subdirectory(bittwiddling)
- if (NOT GRAPHITE2_NFILEFACE)
diff --git a/user/gsettings-desktop-schemas/APKBUILD b/user/gsettings-desktop-schemas/APKBUILD
index 1505088ee..83bdc123e 100644
--- a/user/gsettings-desktop-schemas/APKBUILD
+++ b/user/gsettings-desktop-schemas/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer:
pkgname=gsettings-desktop-schemas
-pkgver=3.28.0
+pkgver=3.28.1
pkgrel=0
pkgdesc="GSettings schemas shared by GNOME desktop components"
url="https://developer.gnome.org/gio/unstable/GSettings.html"
@@ -47,4 +47,4 @@ dev() {
}
-sha512sums="83728c1645303a92a44429fe26eca85e156d7cdf61687f758e3189df875d022d945686de52e5d3df1e69e8372b0432ed8916bdaa40bb3ba80cd8691a6e02232b gsettings-desktop-schemas-3.28.0.tar.xz"
+sha512sums="2bf3260e976943e9d1e51feda62ef1e432870a6d9b34881afbdf99ddbe4954e5dd679697e152e793a0b38492dbbc4891018f7aa8cd4e703d05a8647cc5a56785 gsettings-desktop-schemas-3.28.1.tar.xz"
diff --git a/user/gsm/APKBUILD b/user/gsm/APKBUILD
index 681fe4ad1..17ff21e6f 100644
--- a/user/gsm/APKBUILD
+++ b/user/gsm/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer:
pkgname=gsm
-pkgver=1.0.17
+pkgver=1.0.18
pkgrel=0
_soname=1.0.12
pkgdesc="Shared libraries for GSM speech compressor"
@@ -50,6 +50,6 @@ tools() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr
}
-sha512sums="983b442a1ee3f8bce0523f671071823598c4edb222f8d3de1ad7997c85cbeb7bc49ee87130e12f0f815266a29ad2ef58e59672e81bf41cdadc292baf66942026 gsm-1.0.17.tar.gz
+sha512sums="c5b597f68d4a270e1d588f480dcde66fda8302564c687d753f2bd4fc41d246109243e567568da61eddce170f5232d869984743ddf1eea7696d673014a1a453b7 gsm-1.0.18.tar.gz
5b01f6d2fd3ee7cd859da70870463e2ccc6614c5fb1bd5efc88a223a0c5477271221557fef13ba46697e70cc5820c13efff738413f8990d5884b95cc89c30152 gsm-64bit.patch
1d92b7eacf52e5281c9f1a0f08313d10f15c35d22fb2292e5a885ceb3cb766557a5e3a08954db75fb13db59345ef9f6b08939881ba38c9d384e09a1c96b47bc5 gsm-makefile.patch"
diff --git a/user/gst-plugins-base/APKBUILD b/user/gst-plugins-base/APKBUILD
index 3e7d8cca0..dd1215897 100644
--- a/user/gst-plugins-base/APKBUILD
+++ b/user/gst-plugins-base/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=gst-plugins-base
-pkgver=1.14.2
+pkgver=1.14.4
pkgrel=0
pkgdesc="GStreamer multimedia framework - Base plugins"
url="https://gstreamer.freedesktop.org/"
@@ -66,4 +66,4 @@ doc() {
replaces="${pkgname}1-doc"
}
-sha512sums="35e7eb5c42fe265d38c433575f88d3306f15ff927a989eb375ed5399cbf92af2e9bf553d6eee349dc13673540cee00e1f879595f25e58c188ea443d8a969682f gst-plugins-base-1.14.2.tar.xz"
+sha512sums="42c59df9f2d848108f12afa0466acbcfa5ccda64e4d0d44608d4268abed20f2e036713de04e7d71feaed1868ad742c5bcb55ae0eef5dec8e19e053dc8541b8af gst-plugins-base-1.14.4.tar.xz"
diff --git a/user/gstreamer/APKBUILD b/user/gstreamer/APKBUILD
index c60def265..a5adebbf5 100644
--- a/user/gstreamer/APKBUILD
+++ b/user/gstreamer/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=gstreamer
-pkgver=1.14.2
+pkgver=1.14.4
pkgrel=0
pkgdesc="GStreamer multimedia framework"
url="https://gstreamer.freedesktop.org/"
@@ -47,4 +47,4 @@ doc() {
default_doc
replaces="${pkgname}1-doc"
}
-sha512sums="270dba318d15b54fff6e09d09d77dea13be55bbf82a5bb510efb43f954e234230505366cc6f19f5431e2dd24f5a7734daf5a89d9bd94de8302ed722df0e1eb84 gstreamer-1.14.2.tar.xz"
+sha512sums="7ece9f01d40df7c8358482eac94536c5e15261e9568962008e2029e1ee1b3ebb220d2e4802ed1c81c40d897576fafe52234065e273724bfb4df3a3ddf2711abe gstreamer-1.14.4.tar.xz"
diff --git a/user/gtest/APKBUILD b/user/gtest/APKBUILD
index 048c014a4..14d16d8c9 100644
--- a/user/gtest/APKBUILD
+++ b/user/gtest/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer:
pkgname=gtest
-pkgver=1.8.0
-pkgrel=3
+pkgver=1.8.1
+pkgrel=0
pkgdesc="C++ testing framework based on xUnit (like JUnit)"
url="https://github.com/google/googletest"
arch="all"
@@ -43,4 +43,4 @@ package() {
install -m 0644 googletest/cmake/* "$pkgdir"/usr/src/gtest/cmake/
}
-sha512sums="1dbece324473e53a83a60601b02c92c089f5d314761351974e097b2cf4d24af4296f9eb8653b6b03b1e363d9c5f793897acae1f0c7ac40149216035c4d395d9d release-1.8.0.tar.gz"
+sha512sums="e6283c667558e1fd6e49fa96e52af0e415a3c8037afe1d28b7ff1ec4c2ef8f49beb70a9327b7fc77eb4052a58c4ccad8b5260ec90e4bceeac7a46ff59c4369d7 release-1.8.1.tar.gz"
diff --git a/user/gtk-doc/APKBUILD b/user/gtk-doc/APKBUILD
index a25cf1703..193cd2f50 100644
--- a/user/gtk-doc/APKBUILD
+++ b/user/gtk-doc/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer:
pkgname=gtk-doc
-pkgver=1.26
+pkgver=1.29
pkgrel=2
pkgdesc="Documentation tool for public library API"
url="https://www.gtk.org/gtk-doc/"
@@ -23,6 +23,7 @@ prepare() {
build() {
cd "$builddir"
+ export PYTHON="/usr/bin/python3"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -41,5 +42,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="91f0e0e51d9f77794c0ab57bad5c2da242252f029ab2d4252f8740ccf8b18fed49a7f010f654f5ba60ebed74f7b65a5ef1f762c8661eebfcacfe15dc3bc3c52c gtk-doc-1.26.tar.xz
+sha512sums="97e17be2563c2c12a04394633feaf6591918968a794c38e945a65be9c2de2bed5ce586592a7fe396a1874b8e43e63d6380c6d1a3193ccb7f9bb3d3a331526421 gtk-doc-1.29.tar.xz
a86438a9cbbf1bb60d2aea93f10a473f3fe7814cdbf0a454ff42bea88e79f21f9e748e063335aa6332878fa8f8a1c00ef288a44631b510471cc6bb806851b391 0001-tests-Label-parts-with-decimals-not-roman-numerals.patch"
diff --git a/user/gtksourceview-3.0/APKBUILD b/user/gtksourceview-3.0/APKBUILD
new file mode 100644
index 000000000..ca4fd1c32
--- /dev/null
+++ b/user/gtksourceview-3.0/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=gtksourceview-3.0
+pkgver=3.24.9
+pkgrel=0
+pkgdesc="Source viewer widget for GTK+ 3.0"
+url="https://gnome.org"
+arch="all"
+options="!check" # testsuite requires X
+license="LGPL-2.1+"
+makedepends="gtk+3.0-dev libxml2-dev vala-dev gobject-introspection-dev"
+checkdepends="libxml2-utils"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://download.gnome.org/sources/gtksourceview/3.24/gtksourceview-$pkgver.tar.xz"
+builddir="$srcdir/gtksourceview-$pkgver"
+
+build() {
+ cd "$builddir"
+ ./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="29b58afba1c0b473205cf7070997139d2ca07cf68d40185aa76fa59c900ad21c03ccb79dec9970e5f96743cfdb5a7d926b21a9947244bc8cf8cbd1033467cd01 gtksourceview-3.24.9.tar.xz"
diff --git a/user/gvim/APKBUILD b/user/gvim/APKBUILD
index 020b5a3b6..0db1561b7 100644
--- a/user/gvim/APKBUILD
+++ b/user/gvim/APKBUILD
@@ -5,7 +5,7 @@
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=gvim
_pkgreal=vim
-pkgver=8.1.0346
+pkgver=8.1.0429
pkgrel=0
pkgdesc="advanced text editor"
url="http://www.vim.org"
@@ -74,4 +74,4 @@ package() {
ln -s gvim rgvim
}
-sha512sums="ce27d6d9215e80d84661aec4062f4730e4ed95cfbcedfdd46e73b5a5a1599ea709664c967c5e17ad3515341f79b59fb5c3ddc851cc84cd5717c0e68c6c82961c vim-8.1.0346.tar.gz"
+sha512sums="e9ece2616f56f6ef0a08a73e48c4a87f138e381ec24b960f5e634c2291d9aba2c2d11a7f80dbe60eb3ccaeb8ea45b7c07ec5ebd50f4f5f326ffd1aff3729a13b vim-8.1.0429.tar.gz"
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/harfbuzz/APKBUILD b/user/harfbuzz/APKBUILD
index 41817693d..6629b2639 100644
--- a/user/harfbuzz/APKBUILD
+++ b/user/harfbuzz/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Sören Tempel <soeren+alpinelinux@soeren-tempel.net>
# Maintainer:
pkgname=harfbuzz
-pkgver=1.8.2
+pkgver=1.8.8
pkgrel=0
pkgdesc="Text shaping library"
url="https://www.freedesktop.org/wiki/Software/HarfBuzz"
@@ -56,4 +56,4 @@ icu() {
mv "$pkgdir"/usr/lib/lib*icu.so.* "$subpkgdir"/usr/lib/
}
-sha512sums="c88a3e9e55866608647318a1af7c5d848863cd894d635583b8a2d2a7a02eea875b7a5a4f0f38555d80f2e81628743e40710f5e6f9251bf629f1d15ac51103e5a harfbuzz-1.8.2.tar.bz2"
+sha512sums="eb96cd710571a96473b20bc9a01dadf2a3c11224497e52c63368e8edec64a8eb7085dd847c78111b798a1e8a6a950f0a04c930209822aabf13cf86d7a53b1f79 harfbuzz-1.8.8.tar.bz2"
diff --git a/user/highlight/APKBUILD b/user/highlight/APKBUILD
index 47ce23cf6..985342a51 100644
--- a/user/highlight/APKBUILD
+++ b/user/highlight/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer:
pkgname=highlight
-pkgver=3.43
-pkgrel=1
+pkgver=3.45
+pkgrel=0
pkgdesc="Fast and flexible source code highlighter"
url="http://www.andre-simon.de/doku/highlight/highlight.html"
arch="all"
@@ -22,4 +22,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="77ad159963de64ef3c4732ad70c63ceafe7002c43d8b045e61361f52e56467933790c70e88570e0c866503a621496de2c80934c7f8141721545ff43c807968d1 highlight-3.43.tar.bz2"
+sha512sums="9650f000d85890fe6953e6b3e051cc29f8f734d76b95784e029fed19adc9bb2f3307456cf6be51bbd21da183bae2db814e1ef844d2950b97fde0e4edc46fdd92 highlight-3.45.tar.bz2"
diff --git a/user/hwdata/APKBUILD b/user/hwdata/APKBUILD
index 6fd70a252..a25f9b891 100644
--- a/user/hwdata/APKBUILD
+++ b/user/hwdata/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer:
pkgname=hwdata
-pkgver=0.313
+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="ad292112e96ebdf694f68a98f7d6d8cb20423e47aab44a5a5d283320c7d2becc885119d696c74e746dc9202cc79d32d628fad6d66ca5675fc24366ba6b39328a hwdata-0.313.tar.gz
+sha512sums="8d43b91e6c410c43d6831f793a8e5a71903072ebc72cfd3414fa70fb76efaa873474bfbdd6af015970c3e43f7ba65eaa4e0a781f87ad1170be82afc793ef6d3c hwdata-0.316.tar.gz
88a786d8feb5c8b7de587ac70f3e4307d10ac5ed9b0edfc8711de1ba51808ca33a76df518cb5a508215c309289a079a778a91c3e6fc359d644d230de8d23f049 install-T.patch"
diff --git a/user/i3lock/APKBUILD b/user/i3lock/APKBUILD
index 9791fdc02..8080867c7 100644
--- a/user/i3lock/APKBUILD
+++ b/user/i3lock/APKBUILD
@@ -1,15 +1,16 @@
# Contributor: Johannes Matheis <jomat+alpinebuild@jmt.gr>
-# Maintainer:
+# Maintainer: Max Rees <maxcrees@me.com>
pkgname=i3lock
-pkgver=2.10
-pkgrel=1
+pkgver=2.11
+pkgrel=0
pkgdesc="Simple X11 screen locker"
url="https://i3wm.org/i3lock/"
arch="all"
+options="!check" # No test suite.
license="MIT"
depends="xkeyboard-config"
makedepends="cairo-dev libev-dev libxkbcommon-dev linux-pam-dev cmd:which
- xcb-util-image-dev"
+ xcb-util-image-dev xcb-util-xrm-dev"
subpackages="$pkgname-doc"
source="$url/$pkgname-$pkgver.tar.bz2"
@@ -19,24 +20,26 @@ prepare() {
# At present, this has no functional difference.
# But when we start developing our PAM stack into something more
# mature, this will be important, because i3lock runs unprivileged.
- sed -i -e 's:login:base-auth:g' i3lock.pam
+ sed -i -e 's:login:base-auth:g' pam/i3lock
}
build() {
cd "$builddir"
- make
-}
-check() {
- cd "$builddir"
- ./i3lock -v
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+
+ make
}
package() {
cd "$builddir"
make DESTDIR="$pkgdir" install
- install -m755 -d "$pkgdir/usr/share/man/man1/"
- install -m644 $pkgname.1 "$pkgdir/usr/share/man/man1/"
}
-sha512sums="ea865b202668212b58d0b97d0263171847e1bd0c529e2fd3d26c15ef253861b9a8357ff2efaa6a4f342c4d0d1ab03bc00f95f4d4008760ec8e0767ac29195517 i3lock-2.10.tar.bz2"
+sha512sums="c00741a66fdb5477a4b7e993d173f98fe95f0254fa74c50f83ddf8078a477d26a9fab126fbe31b509df2dbd35ed5ec64b95475621b8babf6f6c0f6db38160c8a i3lock-2.11.tar.bz2"
diff --git a/user/i3wm/APKBUILD b/user/i3wm/APKBUILD
new file mode 100644
index 000000000..197cbd45f
--- /dev/null
+++ b/user/i3wm/APKBUILD
@@ -0,0 +1,49 @@
+# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=i3wm
+pkgver=4.15
+pkgrel=0
+pkgdesc="Improved dynamic tiling window manager"
+url="http://i3wm.org"
+arch="all"
+license="BSD-3-Clause"
+options="!check" # The test suite requires X
+makedepends="bison flex libxcb-dev xcb-util-cursor-dev xcb-util-keysyms-dev
+ xcb-util-wm-dev libev-dev pango-dev cairo-dev yajl-dev
+ startup-notification-dev pcre-dev libxkbcommon-dev xcb-util-xrm-dev"
+checkdepends="perl-x11-xcb perl-anyevent perl-json-xs perl-ipc-run
+ perl-inline-c perl-dev libxcb-dev xcb-util-dev xorg-server-xephyr"
+subpackages="$pkgname-doc"
+source="http://i3wm.org/downloads/i3-$pkgver.tar.bz2
+ i3wm-musl-glob-tilde.patch
+ i3wm-test-fix-off_t.patch
+ i3wm-test-disable-branch-check.patch"
+builddir="$srcdir/i3-$pkgver"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --prefix="/usr" \
+ --disable-builddir \
+ --sysconfdir="/etc"
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir/" install
+
+ install -d "$pkgdir/usr/share/man/man1"
+ install -m644 man/*.1 "$pkgdir"/usr/share/man/man1/
+}
+
+sha512sums="60ab61b7e380342126bea12fb4371f98fcf18f6435f79a9519d3f59cfabdb170634366036e1aa20c5592da0832b03140ad1f0c72bad3cfaace0b7c57ad01dfc4 i3-4.15.tar.bz2
+8ce7d00371c43b93dabbe0dadf9caf7c58a68f4a0079f5a9b9552c15c55bfa0df16d7e87a281595af2ac5254632ba28ccf82a467cea16159b41490f6f2910299 i3wm-musl-glob-tilde.patch
+77224b994397b2e2487ae28dfd5781b3630654191813eb3c685f05ebf446e65c36e53a665ff3cc8323ea67e87f7cf977044025dade0a6ed22cbd84f0e6b4cbc7 i3wm-test-fix-off_t.patch
+a80384965dff62c51ce77e2baa3cf1b0b6db1df68994ce98383f96554bd296b4b59527fb5b1cb24b08c123699e294ba9b3baaa52afe88d87e7a76f0629194b1f i3wm-test-disable-branch-check.patch"
diff --git a/user/i3wm/i3wm-musl-glob-tilde.patch b/user/i3wm/i3wm-musl-glob-tilde.patch
new file mode 100644
index 000000000..82ad6195b
--- /dev/null
+++ b/user/i3wm/i3wm-musl-glob-tilde.patch
@@ -0,0 +1,73 @@
+diff -urp i3-4.11/i3bar/src/main.c i3-4.11.new/i3bar/src/main.c
+--- i3-4.11/i3bar/src/main.c 2015-09-30 07:55:10.000000000 +0100
++++ i3-4.11.new/i3bar/src/main.c 2016-02-08 20:03:41.777392482 +0000
+@@ -45,14 +45,20 @@ void debuglog(char *fmt, ...) {
+ *
+ */
+ char *expand_path(char *path) {
+- static glob_t globbuf;
+- if (glob(path, GLOB_NOCHECK | GLOB_TILDE, NULL, &globbuf) < 0) {
+- ELOG("glob() failed\n");
+- exit(EXIT_FAILURE);
++ char *home, *expanded;
++
++ if (strncmp(path, "~/", 2) == 0) {
++ home = getenv("HOME");
++ if (home != NULL) {
++ /* new length: sum - 1 (omit '~') + 1 (for '\0') */
++ expanded = scalloc(strlen(home)+strlen(path), 1);
++ strcpy(expanded, home);
++ strcat(expanded, path+1);
++ return expanded;
++ }
+ }
+- char *result = sstrdup(globbuf.gl_pathc > 0 ? globbuf.gl_pathv[0] : path);
+- globfree(&globbuf);
+- return result;
++
++ return sstrdup(path);
+ }
+
+ void print_usage(char *elf_name) {
+diff -urp i3-4.11/libi3/resolve_tilde.c i3-4.11.new/libi3/resolve_tilde.c
+--- i3-4.11/libi3/resolve_tilde.c 2015-09-30 07:55:10.000000000 +0100
++++ i3-4.11.new/libi3/resolve_tilde.c 2016-02-08 20:03:47.849230953 +0000
+@@ -19,27 +19,18 @@
+ *
+ */
+ char *resolve_tilde(const char *path) {
+- static glob_t globbuf;
+- char *head, *tail, *result;
++ char *home, *expanded;
+
+- tail = strchr(path, '/');
+- head = sstrndup(path, tail ? (size_t)(tail - path) : strlen(path));
+-
+- int res = glob(head, GLOB_TILDE, NULL, &globbuf);
+- free(head);
+- /* no match, or many wildcard matches are bad */
+- if (res == GLOB_NOMATCH || globbuf.gl_pathc != 1)
+- result = sstrdup(path);
+- else if (res != 0) {
+- err(EXIT_FAILURE, "glob() failed");
+- } else {
+- head = globbuf.gl_pathv[0];
+- result = scalloc(strlen(head) + (tail ? strlen(tail) : 0) + 1, 1);
+- strncpy(result, head, strlen(head));
+- if (tail)
+- strncat(result, tail, strlen(tail));
++ if (strncmp(path, "~/", 2) == 0) {
++ home = getenv("HOME");
++ if (home != NULL) {
++ /* new length: sum - 1 (omit '~') + 1 (for '\0') */
++ expanded = scalloc(strlen(home)+strlen(path), 1);
++ strcpy(expanded, home);
++ strcat(expanded, path+1);
++ return expanded;
++ }
+ }
+- globfree(&globbuf);
+
+- return result;
++ return sstrdup(path);
+ }
diff --git a/user/i3wm/i3wm-test-disable-branch-check.patch b/user/i3wm/i3wm-test-disable-branch-check.patch
new file mode 100644
index 000000000..ac3572e9b
--- /dev/null
+++ b/user/i3wm/i3wm-test-disable-branch-check.patch
@@ -0,0 +1,10 @@
+--- i3-4.15/testcases/t/193-ipc-version.t.old 2018-03-10 09:29:14.000000000 -0800
++++ i3-4.15/testcases/t/193-ipc-version.t 2018-09-27 16:49:56.599257224 -0700
+@@ -32,6 +32,6 @@
+
+ is(int($version->{minor}), $version->{minor}, 'minor version is an integer');
+ is(int($version->{patch}), $version->{patch}, 'patch version is an integer');
+-like($version->{human_readable}, qr/branch/, 'human readable version contains branch name');
++#like($version->{human_readable}, qr/branch/, 'human readable version contains branch name');
+
+ done_testing;
diff --git a/user/i3wm/i3wm-test-fix-off_t.patch b/user/i3wm/i3wm-test-fix-off_t.patch
new file mode 100644
index 000000000..1aeb69be6
--- /dev/null
+++ b/user/i3wm/i3wm-test-fix-off_t.patch
@@ -0,0 +1,26 @@
+--- i3-4.15/testcases/lib/i3test/XTEST.pm.old 2018-09-27 16:18:59.682101063 -0700
++++ i3-4.15/testcases/lib/i3test/XTEST.pm 2018-09-27 16:20:33.723493893 -0700
+@@ -39,6 +39,7 @@
+ my %sn_config;
+ BEGIN {
+ %sn_config = ExtUtils::PkgConfig->find('xcb-xkb xcb-xtest xcb-util');
++ $sn_config{cflags} .= ' -D_GNU_SOURCE';
+ }
+
+ use Inline C => Config => LIBS => $sn_config{libs}, CCFLAGS => $sn_config{cflags};
+--- i3-4.15/testcases/t/175-startup-notification.t.old 2018-09-27 16:24:17.546808884 -0700
++++ i3-4.15/testcases/t/175-startup-notification.t 2018-09-27 16:24:55.587372292 -0700
+@@ -31,11 +31,13 @@
+ my %sn_config;
+ BEGIN {
+ %sn_config = ExtUtils::PkgConfig->find('libstartup-notification-1.0');
++ $sn_config{cflags} .= ' -D_GNU_SOURCE';
+ }
+
+ use Inline C => Config => LIBS => $sn_config{libs}, CCFLAGS => $sn_config{cflags};
+ use Inline C => <<'END_OF_C_CODE';
+
++#include <sys/types.h>
+ #include <xcb/xcb.h>
+
+ #define SN_API_NOT_YET_FROZEN 1
diff --git a/user/iceauth/APKBUILD b/user/iceauth/APKBUILD
new file mode 100644
index 000000000..5f59f51ce
--- /dev/null
+++ b/user/iceauth/APKBUILD
@@ -0,0 +1,34 @@
+# Maintainer:
+pkgname=iceauth
+pkgver=1.0.8
+pkgrel=0
+pkgdesc="X.Org ICE authority file utility"
+url="http://xorg.freedesktop.org"
+arch="all"
+license="MIT"
+subpackages="$pkgname-doc"
+makedepends="libice-dev util-macros"
+source="http://www.x.org/releases/individual/app/iceauth-$pkgver.tar.bz2"
+
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --mandir=/usr/share/man
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="9d4520adf951b16a3e784349dbb70d5d8176b74b956f8adc63abf55d049745c113b03ccfa60a281fc39b487db3742302dc6287c9985ce83a0157bf4674df2af1 iceauth-1.0.8.tar.bz2"
diff --git a/user/imagemagick/APKBUILD b/user/imagemagick/APKBUILD
index 021b389de..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.7
+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="b1db005899b7c55c1794be1edfb0596989d8e4b4e521a1dadf28b837ba16b337587ac0a0a17c1c441a0085df56cfc3386d9f750fa83fd5ea8e3eb2d1398e58cd ImageMagick-7.0.8-7.tar.xz"
+sha512sums="b4b9d252e12fe60cb046e64558465eea5e635fd133053732810f0cbc7e68efb2d2b4a336b28b3e7e985e659bb07eabc4709ed437f0f20e57bcc5a9a13fa3cc31 ImageMagick-7.0.8-12.tar.xz"
diff --git a/user/imake/APKBUILD b/user/imake/APKBUILD
new file mode 100644
index 000000000..ba5585c32
--- /dev/null
+++ b/user/imake/APKBUILD
@@ -0,0 +1,27 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=imake
+pkgver=1.0.7
+pkgrel=0
+pkgdesc="X Windows make utility"
+url="http://www.x.org"
+arch="all"
+license="X11"
+options="!check" # No testsuite
+depends=""
+makedepends="util-macros xorgproto-dev"
+subpackages="$pkgname-doc"
+source="http://ftp.x.org/pub/individual/util/$pkgname-$pkgver.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="b3527c8fead25c6e093e1fe4a39e60ff210212dcd323e206505b9e872a3f36d9db85f85cab5a6f0fa914fa5c558ef54b499b2b13ccd66739223e4e72ef805d08 imake-1.0.7.tar.bz2"
diff --git a/user/iperf3/APKBUILD b/user/iperf3/APKBUILD
new file mode 100644
index 000000000..1e1fad965
--- /dev/null
+++ b/user/iperf3/APKBUILD
@@ -0,0 +1,57 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=iperf3
+_pkgname=iperf
+pkgver=3.6
+pkgrel=0
+pkgdesc="A tool to measure IP bandwidth using UDP or TCP"
+url="https://software.es.net/iperf/"
+arch="all"
+license="BSD-3-Clause"
+depends=""
+makedepends=""
+install=""
+subpackages="$pkgname-doc $pkgname-openrc"
+source="$pkgname-$pkgver.tar.gz::https://downloads.es.net/pub/$_pkgname/$_pkgname-$pkgver.tar.gz
+ $_pkgname.initd
+ $_pkgname.confd
+
+ build-fixes.patch
+ remove-pg-flags.patch
+ "
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ cd "$builddir"
+ CFLAGS="$CFLAGS -D_GNU_SOURCE"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+
+ install -Dm755 "$srcdir"/$_pkgname.initd \
+ "$pkgdir"/etc/init.d/$_pkgname
+ install -Dm644 "$srcdir"/$_pkgname.confd \
+ "$pkgdir"/etc/conf.d/$_pkgname
+}
+
+sha512sums="322a6893ad28c6ce9c9849e8a0326408ed76f09bbb13591c01c3d051bd4777a2acdb8f5032b9d1bb37d47ad3818d8b18ab6c0be4d40559040eb7e57bbfc06f39 iperf3-3.6.tar.gz
+339fb04b41cce11e8ea8694d95c13af9c88e0d1143356d913ec810c9b11efa27212d585b5dcc49cc2eb860a6d8bc557092c8659d7d5cfe532c5afdb36f8eedf8 iperf.initd
+fb5e155fff568a72488cc1511d30358835a48bcce309f8f46d040160932b4a4ccb85040c27c60dee477900a25bd34c50eac21d1d0bea984b40faa401be2ba7e8 iperf.confd
+126043503eebf84bccf26758f18715eaf81131e2fc9ef1fe829e55acb2f14e97db18e9b890b8bf13c230ac80c7537615272af4e072808e25bde8ddd6f326f198 build-fixes.patch
+ed0fb3a3af0dae3e9f58ff6643cb15defdd31f65cf966a6013fdf2a7fd67a7f8ef522a7c8f3269bd43d5ca991a86d758526c384ebc0984b1403bb24f61a1779b remove-pg-flags.patch"
diff --git a/user/iperf3/build-fixes.patch b/user/iperf3/build-fixes.patch
new file mode 100644
index 000000000..b797e70ea
--- /dev/null
+++ b/user/iperf3/build-fixes.patch
@@ -0,0 +1,20 @@
+--- a/src/t_timer.c
++++ b/src/t_timer.c
+@@ -33,6 +33,7 @@
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <sys/time.h>
++#include <sys/types.h>
+
+ #include "timer.h"
+
+--- a/src/t_uuid.c
++++ b/src/t_uuid.c
+@@ -28,6 +28,7 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <sys/time.h>
++#include <sys/types.h>
+
+ #include "iperf_util.h"
+
diff --git a/user/iperf3/iperf.confd b/user/iperf3/iperf.confd
new file mode 100644
index 000000000..1f425faa6
--- /dev/null
+++ b/user/iperf3/iperf.confd
@@ -0,0 +1,3 @@
+# Default option for iperf: --server (runs in TCP/5001 mode)
+# For further server options check --help flag
+command_args=""
diff --git a/user/iperf3/iperf.initd b/user/iperf3/iperf.initd
new file mode 100644
index 000000000..a135bafc9
--- /dev/null
+++ b/user/iperf3/iperf.initd
@@ -0,0 +1,18 @@
+#!/sbin/openrc-run
+
+command="/usr/bin/iperf"
+pidfile="/var/run/$SVCNAME/$SVCNAME.pid"
+
+depend() {
+ need net
+ after firewall
+}
+
+start() {
+ ebegin "Starting $SVCNAME"
+ start-stop-daemon --start --make-pid --user ${exec_user:-nobody} \
+ --pidfile ${pidfile} --background --exec $command \
+ -- --server ${command_args}
+ eend
+}
+
diff --git a/user/iperf3/remove-pg-flags.patch b/user/iperf3/remove-pg-flags.patch
new file mode 100644
index 000000000..1ed47eebf
--- /dev/null
+++ b/user/iperf3/remove-pg-flags.patch
@@ -0,0 +1,29 @@
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -50,9 +50,9 @@
+ iperf3_profile_SOURCES = main.c \
+ $(libiperf_la_SOURCES)
+
+-iperf3_profile_CFLAGS = -pg -g
++iperf3_profile_CFLAGS = -g
+ iperf3_profile_LDADD = libiperf.la
+-iperf3_profile_LDFLAGS = -pg -g
++iperf3_profile_LDFLAGS = -g
+
+ # Specify the sources and various flags for the test cases
+ t_timer_SOURCES = t_timer.c
+
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -643,9 +643,9 @@
+ iperf3_profile_SOURCES = main.c \
+ $(libiperf_la_SOURCES)
+
+-iperf3_profile_CFLAGS = -pg -g
++iperf3_profile_CFLAGS = -g
+ iperf3_profile_LDADD = libiperf.la
+-iperf3_profile_LDFLAGS = -pg -g
++iperf3_profile_LDFLAGS = -g
+
+ # Specify the sources and various flags for the test cases
+ t_timer_SOURCES = t_timer.c
diff --git a/user/ipmiutil/APKBUILD b/user/ipmiutil/APKBUILD
new file mode 100644
index 000000000..fdf32fbe2
--- /dev/null
+++ b/user/ipmiutil/APKBUILD
@@ -0,0 +1,45 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=ipmiutil
+pkgver=3.1.3
+pkgrel=0
+pkgdesc="IPMI Management Utilities"
+url="http://ipmiutil.sourceforge.net/"
+arch="all"
+options="!check" # No test suite shipped.
+license="BSD-2-Clause AND BSD-3-Clause AND GPL-2.0+"
+depends_dev="openssl-dev"
+makedepends="$depends_dev linux-headers"
+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 \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var \
+ --disable-systemd \
+ --enable-sha256 \
+ --enable-gpl
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="bd1f95b59583a07a5b6001b40e59269f25eb63b69e33f7fad6dd40136e1ea7611e647eb5ed2e2a9746944bde2dc2a3aa2def44238947693d75d9ca48697e1b99 ipmiutil-3.1.3.tar.gz
+74e8951bccd004f765b99de87dc5f04834e594b3e14ba885148fb971eaf15164ccac2de880e409f201a38cba5c0948a0fabc04e1e34fb396f50b1ecddb6b305b ipmiutil-3.0.7-fix-sha256.patch"
diff --git a/user/ipmiutil/ipmiutil-3.0.7-fix-sha256.patch b/user/ipmiutil/ipmiutil-3.0.7-fix-sha256.patch
new file mode 100644
index 000000000..1cc1b5532
--- /dev/null
+++ b/user/ipmiutil/ipmiutil-3.0.7-fix-sha256.patch
@@ -0,0 +1,68 @@
+--- ipmiutil-3.0.7/lib/Makefile.am.old 2017-09-20 10:08:20.000000000 -0500
++++ ipmiutil-3.0.7/lib/Makefile.am 2018-01-01 18:03:45.080832425 -0600
+@@ -33,10 +33,11 @@
+ else cp -f libipmiapi64.a.redhat libipmiapi.a; fi \
+ else cp -f libipmiapi32.a libipmiapi.a; fi \
+ fi
+- if [ "$(PLUSFLAGS)" = "-DHAVE_LANPLUS" ]; then \
+- cd lanplus; make clean; make ; \
+- pwd; cp -f libipmi_lanplus.a .. ; \
+- fi
++ case "$(PLUSFLAGS)" in \
++ "-DHAVE_LANPLUS"*) \
++ cd lanplus; make clean; make ; \
++ pwd; cp -f libipmi_lanplus.a .. ;; \
++ esac
+
+ clean:
+ rm -f libipmiapi.a lib*_lanplus.a lib*_lanplus.so
+@@ -51,10 +52,11 @@
+ cd lanplus; make distclean
+
+ install:
+- if [ "$(PLUSFLAGS)" = "-DHAVE_LANPLUS" ]; then \
+- $(MKDIR) ${datato} ; \
+- cd lanplus; make install ; \
+- fi
++ case "$(PLUSFLAGS)" in \
++ "-DHAVE_LANPLUS"*) \
++ $(MKDIR) ${datato} ; \
++ cd lanplus; make install ;; \
++ esac
+
+ check:
+
+--- ipmiutil-3.0.7/lib/Makefile.in.old 2017-09-20 10:08:28.000000000 -0500
++++ ipmiutil-3.0.7/lib/Makefile.in 2018-01-01 18:02:55.187678005 -0600
+@@ -392,10 +392,11 @@
+ else cp -f libipmiapi64.a.redhat libipmiapi.a; fi \
+ else cp -f libipmiapi32.a libipmiapi.a; fi \
+ fi
+- if [ "$(PLUSFLAGS)" = "-DHAVE_LANPLUS" ]; then \
+- cd lanplus; make clean; make ; \
+- pwd; cp -f libipmi_lanplus.a .. ; \
+- fi
++ case "$(PLUSFLAGS)" in \
++ "-DHAVE_LANPLUS"*) \
++ cd lanplus; make clean; make ; \
++ pwd; cp -f libipmi_lanplus.a .. ;; \
++ esac
+
+ clean:
+ rm -f libipmiapi.a lib*_lanplus.a lib*_lanplus.so
+@@ -410,10 +411,11 @@
+ cd lanplus; make distclean
+
+ install:
+- if [ "$(PLUSFLAGS)" = "-DHAVE_LANPLUS" ]; then \
+- $(MKDIR) ${datato} ; \
+- cd lanplus; make install ; \
+- fi
++ case "$(PLUSFLAGS)" in \
++ "-DHAVE_LANPLUS"*) \
++ $(MKDIR) ${datato} ; \
++ cd lanplus; make install ;; \
++ esac
+
+ check:
+
diff --git a/user/json-glib/APKBUILD b/user/json-glib/APKBUILD
new file mode 100644
index 000000000..a297939df
--- /dev/null
+++ b/user/json-glib/APKBUILD
@@ -0,0 +1,32 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=json-glib
+pkgver=1.4.4
+pkgrel=0
+pkgdesc="GObject-based library for JSON (de)serialization"
+url="https://live.gnome.org/JsonGlib"
+arch="all"
+options="!check" # no tests
+license="LGPL-2.1+"
+makedepends="glib-dev gobject-introspection-dev meson ninja"
+subpackages="$pkgname-dev $pkgname-lang"
+source="https://download.gnome.org/sources/json-glib/1.4/json-glib-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ meson \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ . output
+ ninja -C output
+}
+
+package() {
+ cd "$builddir"
+ DESTDIR="$pkgdir" ninja -C output install
+}
+
+sha512sums="cf56a99dce3938b5c0075810f105719836fac65392da33a49b26ebf33aee1fab89ca9fac58059a2008d688ecc75a3e524de60621a5b027d566963541f38b971f json-glib-1.4.4.tar.xz"
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..afed045d5 100644
--- a/user/kalgebra/APKBUILD
+++ b/user/kalgebra/APKBUILD
@@ -1,13 +1,13 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kalgebra
-pkgver=18.08.1
-pkgrel=0
+pkgver=18.08.2
+pkgrel=1
pkgdesc="Graph calculator and plotter"
url="https://www.kde.org/applications/education/kalgebra/"
arch="all"
license="GPL-2.0-only"
-depends=""
+depends="kirigami2 qt5-qtquickcontrols"
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
qt5-qtsvg-dev analitza-dev ncurses-dev ki18n-dev kdoctools-dev kio-dev
kconfigwidgets-dev kwidgetsaddons-dev"
@@ -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/keybinder-3.0/APKBUILD b/user/keybinder-3.0/APKBUILD
new file mode 100644
index 000000000..8340209fb
--- /dev/null
+++ b/user/keybinder-3.0/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=keybinder-3.0
+pkgver=0.3.2
+pkgrel=0
+pkgdesc="GTK+ library for managing global keybindings"
+url="https://github.com/kupferlauncher/keybinder"
+arch="all"
+license="Public-Domain AND MIT"
+makedepends="gtk+3.0-dev vala gobject-introspection-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://github.com/kupferlauncher/keybinder/releases/download/keybinder-3.0-v$pkgver/keybinder-3.0-$pkgver.tar.gz"
+
+build() {
+ cd "$builddir"
+ ./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="14171875e03ade88165f28c7267b66cf9efe34259d7a3072a786ba49dacf8f8d6d84753b1aeedec5dfb0a24028be86bceeebee2f6b1bf5ef2eb79ee45f909b11 keybinder-3.0-0.3.2.tar.gz"
diff --git a/user/keyutils/APKBUILD b/user/keyutils/APKBUILD
index 4696cafef..f87958b7a 100644
--- a/user/keyutils/APKBUILD
+++ b/user/keyutils/APKBUILD
@@ -1,19 +1,17 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer:
pkgname=keyutils
-pkgver=1.5.10
-pkgrel=1
+pkgver=1.5.11
+pkgrel=0
pkgdesc="Linux key management utilities"
url="https://people.redhat.com/~dhowells/keyutils/"
arch="all"
options="!check" # Test suite requires RPM.
license="GPL-2.0+ AND LGPL-2.1+"
depends=""
-makedepends="file linux-headers"
+makedepends="file krb5-dev linux-headers"
subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
-source="https://people.redhat.com/~dhowells/keyutils/keyutils-$pkgver.tar.bz2
- fix-includes.patch
- "
+source="https://people.redhat.com/~dhowells/keyutils/keyutils-$pkgver.tar.bz2"
build() {
cd "$builddir"
@@ -41,5 +39,4 @@ libs() {
mv "$pkgdir"/lib "$subpkgdir"/
}
-sha512sums="7f6f956c7e76cdc2aeb52e74fe670b20a5f9a5d9b543fd2ce971d80c48745f37d05235a42f0a8f152b1128a109c7d8bf07e751282a20d2d3f433a99a5308ae8d keyutils-1.5.10.tar.bz2
-e7a913c97c4116e5f4b7fdf4d071835dcf05a7aa4ce782fd717e4694414023fb3ed88b8a15710b15869545046e99f706fe8476f9d4fe6578d2eae571e1ed8103 fix-includes.patch"
+sha512sums="5f0dc5d5ceb673cf0ba71d3a0b525d09adc8d501a795372aa3dc29215ef393cb8577c72051cecabdb9a46dca4fcaa11e629291fb857290872475a7e445f47d43 keyutils-1.5.11.tar.bz2"
diff --git a/user/keyutils/fix-includes.patch b/user/keyutils/fix-includes.patch
deleted file mode 100644
index df0e7ddf7..000000000
--- a/user/keyutils/fix-includes.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- keyutils-1.5.8.orig/key.dns_resolver.c
-+++ keyutils-1.5.8/key.dns_resolver.c
-@@ -56,6 +56,7 @@
- #include <stdlib.h>
- #include <unistd.h>
- #include <time.h>
-+#include <limits.h>
-
- static const char *DNS_PARSE_VERSION = "1.0";
- static const char prog[] = "key.dns_resolver";
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/kgraphviewer/APKBUILD b/user/kgraphviewer/APKBUILD
index 6bad8cf10..58b1dc410 100644
--- a/user/kgraphviewer/APKBUILD
+++ b/user/kgraphviewer/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kgraphviewer
-pkgver=2.4.2
+pkgver=2.4.3
pkgrel=0
pkgdesc="Graphviz DOT graph viewer"
url="https://www.kde.org/applications/graphics/kgraphviewer/"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="2a25f8493881ffa057602e7a141ea610b8db7c43da2db007aea118e2ec7b1f069fbfa6ca80b0e1048c9b20535764679c8d77027337c47a4c18e5240c3058d935 kgraphviewer-2.4.2.tar.xz"
+sha512sums="d18146ba380efe73e1ec716dd1cc310fe1eac23eccb10e2a699b107451637b9332cc25d62a4de762df4706cea182c9474ba1e885801c9832e1bb9bff1648e72d kgraphviewer-2.4.3.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 838c733bf..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.04.3
+pkgver=18.08.2
pkgrel=0
pkgdesc="Collection of card games for KDE"
url="https://games.kde.org/game.php?game=kpat"
@@ -11,7 +11,8 @@ depends="libkdegames-carddecks"
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
kcompletion-dev kconfigwidgets-dev kcoreaddons-dev kcrash-dev ki18n-dev
kdbusaddons-dev kdoctools-dev kguiaddons-dev kio-dev knewstuff-dev
- kwidgetsaddons-dev kxmlgui-dev libkdegames-dev shared-mime-info"
+ kwidgetsaddons-dev kxmlgui-dev libkdegames-dev shared-mime-info
+ freecell-solver-dev"
subpackages="$pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/applications/$pkgver/src/kpat-$pkgver.tar.xz"
@@ -41,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="bd325d52faad7200d5aa1738cc539d8f285c4b9cb67e2f63837379fc89b4adb8873433df01392447e69546db04698b2f108613fe0a3001bf7c77dbda0bd73acf kpat-18.04.3.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/krita/APKBUILD b/user/krita/APKBUILD
index 93dc3c60a..4b872a52e 100644
--- a/user/krita/APKBUILD
+++ b/user/krita/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=krita
-pkgver=4.1.1
-pkgrel=1
+pkgver=4.1.5
+pkgrel=0
pkgdesc="Digital painting program by KDE"
url="https://krita.org/"
arch="all"
@@ -52,4 +52,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="51b7527a3a7b049fc7d8dcd586ef35b574904b1bfa837975cfac055f182413d6c38d6fe81df4948bb4276f5e8a39dc5c981305ff0c42b4a1239b39adaa881904 krita-4.1.1.tar.gz"
+sha512sums="7790e3e61c18f5a2f5ba0c5d08f09bf78bcfba563b46751689db00814b9775db85cc64c162aa1c1dc47b5e73e49598b24e6a4599b8350a9e07c15aa4eb463499 krita-4.1.5.tar.gz"
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/labplot/APKBUILD b/user/labplot/APKBUILD
index b9c893184..c3b4d0388 100644
--- a/user/labplot/APKBUILD
+++ b/user/labplot/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=labplot
-pkgver=2.4.0
-pkgrel=0
+pkgver=2.5.0
+pkgrel=1
pkgdesc="Interactive tool for graphing and analysis of scientific data"
url="https://www.kde.org/applications/education/labplot/"
arch="all"
@@ -11,10 +11,12 @@ depends="shared-mime-info"
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
karchive-dev kcompletion-dev kconfigwidgets-dev kcoreaddons-dev kio-dev
kdoctools-dev ki18n-dev kiconthemes-dev kdelibs4support-dev kxmlgui-dev
- knewstuff-dev ktextwidgets-dev kwidgetsaddons-dev gsl-dev fftw-dev"
+ knewstuff-dev ktextwidgets-dev kwidgetsaddons-dev gsl-dev fftw-dev
+ qt5-qtserialport-dev syntax-highlighting-dev bison libexecinfo-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/labplot/2.4.0/labplot-$pkgver-kf5.tar.xz"
-builddir="$srcdir/labplot-$pkgver-kf5"
+source="https://download.kde.org/stable/labplot/$pkgver/labplot-$pkgver.tar.xz
+ liborigin-endian.patch
+ "
build() {
cd "$builddir"
@@ -25,7 +27,7 @@ build() {
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
-DBUILD_SHARED_LIBS=True \
- -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS -D_GNU_SOURCE" \
${CMAKE_CROSSOPTS}
@@ -34,7 +36,8 @@ build() {
check() {
cd "$builddir"
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ # gives incorrect results
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E fittest
}
package() {
@@ -42,4 +45,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="5d29dd7d63d484359e73c8d82d8dbc25a069e1f33829cf75c2a2009ebae2027353ecf578b51806b5f35ae17ec472f5cbfdb4caed2637dc1ecc9229d33033d21b labplot-2.4.0-kf5.tar.xz"
+sha512sums="a4b285917e30b0ac00cb8c8ad6827ba3884d95fccc0511a0a317bb2d637e48e6579929c45cfb8bba737bb5a01472a2baa9d812a688730ac4fa40b23cc6625eba labplot-2.5.0.tar.xz
+d251300ca0992637453ef12021f3fa4ba0ed5651a19b27bee7573f50b101aaa787544c035bf0d00b9a9ef14156536ce027879d605ede228761754b762db88ded liborigin-endian.patch"
diff --git a/user/labplot/liborigin-endian.patch b/user/labplot/liborigin-endian.patch
new file mode 100644
index 000000000..b40782a3a
--- /dev/null
+++ b/user/labplot/liborigin-endian.patch
@@ -0,0 +1,26 @@
+diff --git a/OriginAnyParser.cpp b/OriginAnyParser.cpp
+index c9e863e..2637945 100644
+--- a/liborigin/OriginAnyParser.cpp
++++ b/liborigin/OriginAnyParser.cpp
+@@ -24,10 +24,18 @@
+ #include <cinttypes>
+
+ /* define a macro to get an int (or uint) from a istringstream in binary mode */
+-#define GET_INT(iss, ovalue) {iss.read(reinterpret_cast<char *>(&ovalue), 4);};
+-#define GET_SHORT(iss, ovalue) {iss.read(reinterpret_cast<char *>(&ovalue), 2);};
+-#define GET_FLOAT(iss, ovalue) {iss.read(reinterpret_cast<char *>(&ovalue), 4);};
++#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
++#define GET_SHORT(iss, ovalue) {iss.read(reinterpret_cast<char *>(&ovalue), 2);};
++#define GET_INT(iss, ovalue) {iss.read(reinterpret_cast<char *>(&ovalue), 4);};
++#define GET_FLOAT(iss, ovalue) {iss.read(reinterpret_cast<char *>(&ovalue), 4);};
+ #define GET_DOUBLE(iss, ovalue) {iss.read(reinterpret_cast<char *>(&ovalue), 8);};
++#else
++void inline swap_bytes(unsigned char* data, int size) {int i = 0, j = size - 1; while(i < j) {std::swap(data[i], data[j]); ++i, --j;}}
++#define GET_SHORT(iss, ovalue) {iss.read(reinterpret_cast<char *>(&ovalue), 2); swap_bytes(reinterpret_cast<unsigned char *>(&ovalue), 2);};
++#define GET_INT(iss, ovalue) {iss.read(reinterpret_cast<char *>(&ovalue), 4); swap_bytes(reinterpret_cast<unsigned char *>(&ovalue), 4);};
++#define GET_FLOAT(iss, ovalue) {iss.read(reinterpret_cast<char *>(&ovalue), 4); swap_bytes(reinterpret_cast<unsigned char *>(&ovalue), 4);};
++#define GET_DOUBLE(iss, ovalue) {iss.read(reinterpret_cast<char *>(&ovalue), 8); swap_bytes(reinterpret_cast<unsigned char *>(&ovalue), 8);};
++#endif
+
+ OriginAnyParser::OriginAnyParser(const string& fileName)
+ : file(fileName.c_str(),ios::binary),
diff --git a/user/libao/APKBUILD b/user/libao/APKBUILD
index 2321e18fd..425116964 100644
--- a/user/libao/APKBUILD
+++ b/user/libao/APKBUILD
@@ -1,19 +1,20 @@
# Maintainer:
pkgname=libao
-pkgver=1.2.0
-pkgrel=2
+pkgver=1.2.2
+pkgrel=0
pkgdesc="Cross-platform audio output library and plugins"
url="https://xiph.org/ao/"
arch="all"
options="!check" # No test suite.
license="GPL-2.0+"
-subpackages="$pkgname-doc $pkgname-dev"
depends=""
-makedepends="alsa-lib-dev"
-source="https://downloads.xiph.org/releases/ao/$pkgname-$pkgver.tar.gz"
+makedepends="alsa-lib-dev autoconf automake pulseaudio-dev"
+subpackages="$pkgname-doc $pkgname-dev $pkgname-pulse"
+source="$pkgname-$pkgver.tar.gz::https://github.com/xiph/libao/archive/$pkgver.tar.gz"
build() {
cd "$builddir"
+ ./autogen.sh
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,4 +29,12 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="9456953826c188d67129ad78366bb86d6243499f2cd340d20d61366f7e40a33f3f8ab601c7f18ce9e24aa22f898093b482b2415b7e428c1486ef7e5ac27b3ee4 libao-1.2.0.tar.gz"
+pulse() {
+ pkgdesc="$pkgdesc (PulseAudio support)"
+ install_if="$pkgname=$pkgver-r$pkgrel pulseaudio"
+ mkdir -p "$subpkgdir"/usr/lib/ao/plugins-4
+ mv "$pkgdir"/usr/lib/ao/plugins-4/libpulse.so \
+ "$subpkgdir"/usr/lib/ao/plugins-4
+}
+
+sha512sums="d2736d25b60862e7d7469611ce31b1df40a4366ab160e2ff1b46919ae91692d1596c8468e4f016303b306fc3ac1bddc7b727f535a362f403c3fe7c6532e9045a libao-1.2.2.tar.gz"
diff --git a/user/libblockdev/APKBUILD b/user/libblockdev/APKBUILD
index 05785a223..51200d04b 100644
--- a/user/libblockdev/APKBUILD
+++ b/user/libblockdev/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libblockdev
-pkgver=2.19
+pkgver=2.20
pkgrel=0
pkgdesc="Library for manipulating block devices"
url="http://storaged.org/libblockdev/"
@@ -37,4 +37,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="bc0e9524b95ca7b32478cb2e9195df336b44921825832393189d04611e6cb634aa033485507239add55d126021f103c7528d912be950c58d46e130c09b4d5167 libblockdev-2.19.tar.gz"
+sha512sums="7363e05c6854757649ed865f216c71ddc8afd7f1a102a73c0bb4809c4713973462446543d97b696f55f11ea15696e261802567cc545833d16535835c5250ac8b libblockdev-2.20.tar.gz"
diff --git a/user/libbsd/0001-Replace-__BEGIN_DECLS-and-__END_DECLS.patch b/user/libbsd/0001-Replace-__BEGIN_DECLS-and-__END_DECLS.patch
index e97e30e84..0d4007d09 100644
--- a/user/libbsd/0001-Replace-__BEGIN_DECLS-and-__END_DECLS.patch
+++ b/user/libbsd/0001-Replace-__BEGIN_DECLS-and-__END_DECLS.patch
@@ -205,7 +205,7 @@ diff --git a/include/bsd/string.h b/include/bsd/string.h
index ee2f953..fbf8c54 100644
--- a/include/bsd/string.h
+++ b/include/bsd/string.h
-@@ -36,13 +36,19 @@
+@@ -36,16 +36,22 @@
#include <sys/cdefs.h>
#include <sys/types.h>
@@ -219,7 +219,10 @@ index ee2f953..fbf8c54 100644
char *strnstr(const char *str, const char *find, size_t str_len);
void strmode(mode_t mode, char *str);
+ #if !defined(__GLIBC__) || \
+ (defined(__GLIBC__) && (!__GLIBC_PREREQ(2, 25) || !defined(_GNU_SOURCE)))
void explicit_bzero(void *buf, size_t len);
+ #endif
-__END_DECLS
+#ifdef __cplusplus
+}
diff --git a/user/libbsd/APKBUILD b/user/libbsd/APKBUILD
index 0e36db5a5..015d71295 100644
--- a/user/libbsd/APKBUILD
+++ b/user/libbsd/APKBUILD
@@ -2,8 +2,8 @@
# Contributor: William Pitcock <nenolod@dereferenced.org>
# Maintainer: William Pitcock <nenolod@dereferenced.org>
pkgname=libbsd
-pkgver=0.8.6
-pkgrel=3
+pkgver=0.9.1
+pkgrel=0
pkgdesc="Commonly used BSD functions not implemented by all libcs"
url="https://libbsd.freedesktop.org/"
arch="all"
@@ -15,9 +15,9 @@ subpackages="$pkgname-dev $pkgname-doc"
source="https://libbsd.freedesktop.org/releases/$pkgname-$pkgver.tar.xz
0001-Replace-__BEGIN_DECLS-and-__END_DECLS.patch
disable-fpurge-test.patch
+ headers.patch
"
-builddir="$srcdir/$pkgname-$pkgver"
prepare() {
default_prepare
@@ -48,6 +48,7 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="ece01ced324f840c2cee6321c7dcf97ff123d55ea9f203c1ce35e1b46643dc7b34ef6dc6c8d128252b36848624850b40823411cc96b99a66a401eb1e9d8cea6b libbsd-0.8.6.tar.xz
-4ef5d664f04af21da17c5ac9eed6fec4c0c7d06ff3af70e93bfdfdf926c7473954649e315158ec8f90cef93f82524431fa4fbc60374d20007f1234d6afe9edcd 0001-Replace-__BEGIN_DECLS-and-__END_DECLS.patch
-34ab57a9b67c0d6035312dff78e6dd0d1c48442c6a1b6e769b6ebb6dccb0dac80ccc2c309724e39c097cdac944bdbd9522582f93f2567da8c6615990e2d0238b disable-fpurge-test.patch"
+sha512sums="435822b8f2495a5e2705e5ab5c834a4f0f3a177b3e5c46a7c6162924507ca984e957e94a512b5ebd0067ecb413bac458fade357709ef199e9b75edf0315de91c libbsd-0.9.1.tar.xz
+5a3302601e9534ce8493122b20cc53fe320e0d884ca4abf041a8d151175c076e26ac9ef521c65b1654ea2295bd0251b70b0bdc80ed8a03c98777aab8502719ca 0001-Replace-__BEGIN_DECLS-and-__END_DECLS.patch
+34ab57a9b67c0d6035312dff78e6dd0d1c48442c6a1b6e769b6ebb6dccb0dac80ccc2c309724e39c097cdac944bdbd9522582f93f2567da8c6615990e2d0238b disable-fpurge-test.patch
+594d598bc7f6d34bff080a26f8d726bf779d3827423f242ee7caa9a58fc89c89d80e0677c03e9c640e0074afbdc34636fa8ffa47a99fd9c576845e3039a7ccbd headers.patch"
diff --git a/user/libbsd/headers.patch b/user/libbsd/headers.patch
new file mode 100644
index 000000000..5b8f26425
--- /dev/null
+++ b/user/libbsd/headers.patch
@@ -0,0 +1,10 @@
+--- libbsd-0.9.1/src/flopen.c.old 2018-05-21 02:33:33.000000000 +0000
++++ libbsd-0.9.1/src/flopen.c 2018-09-09 17:43:59.850000000 +0000
+@@ -32,6 +32,7 @@
+ #include <sys/stat.h>
+
+ #include <errno.h>
++#include <fcntl.h>
+ #include <stdarg.h>
+ #include <unistd.h>
+
diff --git a/user/libburn/APKBUILD b/user/libburn/APKBUILD
new file mode 100644
index 000000000..8d55a80f3
--- /dev/null
+++ b/user/libburn/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=libburn
+pkgver=1.4.8
+pkgrel=0
+pkgdesc="Library for CD/DVD burning"
+url="https://dev.lovelyhq.com/libburnia/web/wikis/home"
+arch="all"
+license="(GPL-2.0+ OR BSD-3-Clause) AND GPL-2.0+ AND BSD-3-Clause"
+makedepends=""
+subpackages="$pkgname-dev $pkgname-doc"
+source="http://files.libburnia-project.org/releases/libburn-$pkgver.tar.gz"
+
+build() {
+ cd "$builddir"
+ ./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="e02c08078313abb19108bb394741d4bde1c5098c1a200129940744e03078d8350b6ac951bf5523872a343b3f9b7a4954dda60a3336997f975abdee6dbae9b87c libburn-1.4.8.tar.gz"
diff --git a/user/libdrm/APKBUILD b/user/libdrm/APKBUILD
index d9b707067..f85bdcac5 100644
--- a/user/libdrm/APKBUILD
+++ b/user/libdrm/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libdrm
-pkgver=2.4.94
+pkgver=2.4.96
pkgrel=0
pkgdesc="Userspace interface to kernel DRM services"
url="https://dri.freedesktop.org/"
@@ -43,5 +43,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="1a1699d6ea70b8759b37f3863e0802a99430b58f02e62632ad451356e2463eaf6faf4b810323f7dcc85ffdcca28f674b32caa5631ebd65b83e5b86bd59a35937 libdrm-2.4.94.tar.bz2
+sha512sums="008cb7658d953b44e11fa3cc6e00dfeb3efb59c7fdadd59f7066101aff138acbbc2f2508e9ebe0528340e39dc7693937755d1641816ddde135c10a13e7d81e3b libdrm-2.4.96.tar.bz2
af52fef51aaa05a4dd17919371cb9d92a77480402730bf53ba223e54df52f3825be05a7f28e6aef8c904db5ee59fe38a6c15bc6aafa7f8d31a719e80399dd51f ioctl.patch"
diff --git a/user/libepoxy/APKBUILD b/user/libepoxy/APKBUILD
index d8e9170fa..9de8a24e2 100644
--- a/user/libepoxy/APKBUILD
+++ b/user/libepoxy/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Valery Kartel <valery.kartel@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libepoxy
-pkgver=1.5.2
+pkgver=1.5.3
pkgrel=0
pkgdesc="Direct Rendering Manager runtime library"
url="https://github.com/anholt/libepoxy"
@@ -9,8 +9,8 @@ arch="all"
options="!check" # Requires X11 and appropriate mesa-dri-* package
license="MIT"
depends=""
-depends_dev="libx11-dev mesa-dev"
-makedepends="$depends_dev meson ninja"
+depends_dev="libx11-dev"
+makedepends="$depends_dev mesa-dev meson ninja"
install=""
subpackages="$pkgname-dev"
source="https://github.com/anholt/libepoxy/releases/download/$pkgver/libepoxy-$pkgver.tar.xz"
@@ -37,4 +37,4 @@ package() {
DESTDIR="$pkgdir" ninja install
}
-sha512sums="74eac05280d8877995d07cb28d0c3ef285ad57c0c9a3369c59fc3601f2281f92dc103e78cf5538aca853e2a64d145d967c43f3176274fd046fb27aa86827a521 libepoxy-1.5.2.tar.xz"
+sha512sums="746dfe2a0a91319abd3906c75f81f6b895117f39120e0d8897db1daec1b6d2e91e1318f0dfe588c81907727b0a6dd1a7e4a819ee6b3063a23875312570464720 libepoxy-1.5.3.tar.xz"
diff --git a/user/libgit2/APKBUILD b/user/libgit2/APKBUILD
index 3b9652088..22b593f39 100644
--- a/user/libgit2/APKBUILD
+++ b/user/libgit2/APKBUILD
@@ -3,7 +3,7 @@
# Contributor: Pierre-Gilas MILLON <pgmillon@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libgit2
-pkgver=0.27.4
+pkgver=0.27.5
pkgrel=0
pkgdesc="Pure C re-entrant library for custom Git applications"
url="https://libgit2.github.com/"
@@ -50,4 +50,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="d27db86eb1b9f0d4057f8538ba1985ee76c3ca106e57d417fa9bff79d575f91a07ad28693112b58dc1d61d68116a82e6a145f12276158f2806b6c4964d741f61 libgit2-0.27.4.tar.gz"
+sha512sums="318b981456d55f60f8aa1897f1f70274329e48f09769b661eb4bbe76399071eca0fbc7deacb3191db16bc89dba8cc69a64adaf8cbc65e34a65b6e72ca122e21f libgit2-0.27.5.tar.gz"
diff --git a/user/libgphoto2/APKBUILD b/user/libgphoto2/APKBUILD
index cc3101241..406db96ce 100644
--- a/user/libgphoto2/APKBUILD
+++ b/user/libgphoto2/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer:
pkgname=libgphoto2
-pkgver=2.5.16
-pkgrel=2
+pkgver=2.5.19
+pkgrel=0
pkgdesc="Digital camera library"
url="http://www.gphoto.org"
arch="all"
@@ -46,4 +46,4 @@ package() {
"$pkgdir/lib/udev/rules.d/54-gphoto.rules"
}
-sha512sums="7863192c2959ffc8d771eca294adc54090192e3207cf8d3a9bf143e50034c3f1248e7fe41cad75f758ab2ad09c9258d50967b921adf3223d7c74370faa110a9e libgphoto2-2.5.16.tar.bz2"
+sha512sums="0c26613b5e6041955198760f40cf21c302eaf8d3776642cc23e527da576cae01c7dd6eccd091b4c3dd7d592fa5114378858f42fc4ec0cb8bb82791feb4c97e2c libgphoto2-2.5.19.tar.bz2"
diff --git a/user/libgsf/APKBUILD b/user/libgsf/APKBUILD
index 7d79b4ac6..8fc1adab3 100644
--- a/user/libgsf/APKBUILD
+++ b/user/libgsf/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer:
pkgname=libgsf
-pkgver=1.14.43
+pkgver=1.14.44
pkgrel=0
pkgdesc="Library for manipulating structured files"
url="https://www.gnome.org/"
@@ -45,4 +45,4 @@ package() {
rm -f "$pkgdir"/usr/share/man/man1/gsf-office-thumbnailer.1
}
-sha512sums="bb487de9358c057fc73f3414c9515726315be9b6d78456253daaca1cbd58281de8766e0b72914532d63fab04d3ae2cf90f711f436c7b4f70620d77e8a7802ac9 libgsf-1.14.43.tar.xz"
+sha512sums="17be4898e800d653d97af1afc780b14eb596ea03443d7dd8f2687152ca1c9cbdfe5fad0686742e2c9e2dac4a40f65fa260b7b5dc3b2d79a4738e552ad7e6310f libgsf-1.14.44.tar.xz"
diff --git a/user/libical/APKBUILD b/user/libical/APKBUILD
index 772b748cb..a866743c7 100644
--- a/user/libical/APKBUILD
+++ b/user/libical/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer:
pkgname=libical
-pkgver=3.0.3
+pkgver=3.0.4
pkgrel=0
pkgdesc="Reference implementation of the iCalendar format"
url="https://libical.github.io/libical/"
@@ -31,4 +31,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="ed8e7917e37abbe426a06b4ae049a365e66542b1258ba22ebacbe842bda883d0fe591e65574fd954da531d6414a7b13e84fa28a20e7b08836679107f615df27a libical-3.0.3.tar.gz"
+sha512sums="491a1dd0c33bb823a79165eb6e4f86ef048a44642adfe44f8e69c83598b458ddf8e4365b11afc37d0b21bc1367e0a99096fc7887aae29e7ff4e3bd1cdee64dd9 libical-3.0.4.tar.gz"
diff --git a/user/libinput/APKBUILD b/user/libinput/APKBUILD
index 284bfeae2..1220bb1cd 100644
--- a/user/libinput/APKBUILD
+++ b/user/libinput/APKBUILD
@@ -1,22 +1,22 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libinput
-pkgver=1.11.1
+pkgver=1.12.1
pkgrel=0
pkgdesc="Library for handling input devices"
url="https://www.freedesktop.org/wiki/Software/libinput/"
arch="all"
license="MIT"
-makedepends="doxygen eudev-dev graphviz libevdev-dev libwacom-dev meson
- mtdev-dev"
+makedepends="eudev-dev libevdev-dev libwacom-dev meson mtdev-dev"
checkdepends="check-dev valgrind"
subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
source="https://freedesktop.org/software/$pkgname/$pkgname-$pkgver.tar.xz"
build() {
cd "$builddir"
+ # Docs disabled: requires sphinx now
meson --prefix=/usr \
- -Ddocumentation=true \
+ -Ddocumentation=false \
-Dlibwacom=true \
-Ddebug-gui=false \
-Dtests=true builddir/
@@ -34,4 +34,4 @@ package() {
install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
-sha512sums="3dd1a318c89d66f5a66016c6dbfa5277b61a8cb5337d99f85b1eeef40ed894bdc04fd4588a97383988daea0f034df5a72bff318325320a01b857db9deb94a2b0 libinput-1.11.1.tar.xz"
+sha512sums="de1714526ee1244e3086729efa5b72724b2b989fa8d04418e633d1ef5a8ea777ae3cd4b8c5b015ca0da2b8cf5b07111bff2283c7d6068abcdfa81c3f71b81d68 libinput-1.12.1.tar.xz"
diff --git a/user/libisofs/APKBUILD b/user/libisofs/APKBUILD
new file mode 100644
index 000000000..ee07f002f
--- /dev/null
+++ b/user/libisofs/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=libisofs
+pkgver=1.4.8
+pkgrel=0
+pkgdesc="Library for creating and managing iso9660-based filesystems"
+url="https://dev.lovelyhq.com/libburnia/web/wikis/home"
+arch="all"
+license="GPL-2.0+ AND Unicode-TOU"
+makedepends="zlib-dev"
+subpackages="$pkgname-dev"
+source="http://files.libburnia-project.org/releases/libisofs-$pkgver.tar.gz"
+
+build() {
+ cd "$builddir"
+ ./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="0c6f505a951a1b7fce63bf63c715e5acb3158c15be2660627d2380771f025ec88bd67a4c2b8c86ef9dbb649a23cb26b826e875e7c87ff46c8bcd13d831fe8bcc libisofs-1.4.8.tar.gz"
diff --git a/user/libixion/32bit.patch b/user/libixion/32bit.patch
new file mode 100644
index 000000000..13d25ac4e
--- /dev/null
+++ b/user/libixion/32bit.patch
@@ -0,0 +1,57 @@
+From 869492c9f3f61aaab0d1ecdda147ea9adbdb04d5 Mon Sep 17 00:00:00 2001
+From: Kohei Yoshida <kohei.yoshida@gmail.com>
+Date: Tue, 28 Aug 2018 22:58:49 -0400
+Subject: [PATCH] Fix build issues on 32-bit platforms.
+
+The string ID's are stored in mdds's unsigned long block, but we
+have changed the underlying type of string ID's from unsigned long
+to uint64_t. Because of this, on 32-bit systems it caused a type
+mismatch. On 64-bit systems this was fine since unsigned long was
+the underlying type for uint64_t...
+---
+ src/libixion/model_context.cpp | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/libixion/model_context.cpp b/src/libixion/model_context.cpp
+index 0bcf940..b44713f 100644
+--- a/src/libixion/model_context.cpp
++++ b/src/libixion/model_context.cpp
+@@ -541,7 +541,7 @@ void model_context_impl::set_string_cell(const abs_address_t& addr, const char*
+ string_id_t str_id = add_string(p, n);
+ column_store_t& col_store = sheet.at(addr.column);
+ column_store_t::iterator& pos_hint = sheet.get_pos_hint(addr.column);
+- pos_hint = col_store.set(pos_hint, addr.row, str_id);
++ pos_hint = col_store.set(pos_hint, addr.row, static_cast<unsigned long>(str_id));
+ }
+
+ void model_context_impl::set_string_cell(const abs_address_t& addr, string_id_t identifier)
+@@ -549,7 +549,7 @@ void model_context_impl::set_string_cell(const abs_address_t& addr, string_id_t
+ worksheet& sheet = m_sheets.at(addr.sheet);
+ column_store_t& col_store = sheet.at(addr.column);
+ column_store_t::iterator& pos_hint = sheet.get_pos_hint(addr.column);
+- pos_hint = col_store.set(pos_hint, addr.row, identifier);
++ pos_hint = col_store.set(pos_hint, addr.row, static_cast<unsigned long>(identifier));
+ }
+
+ void model_context_impl::set_formula_cell(const abs_address_t& addr, formula_tokens_t tokens)
+@@ -800,7 +800,7 @@ string_id_t model_context_impl::get_string_identifier(const abs_address_t& addr)
+ switch (col_store.get_type(addr.row))
+ {
+ case ixion::element_type_string:
+- return col_store.get<string_id_t>(addr.row);
++ return col_store.get<unsigned long>(addr.row);
+ default:
+ ;
+ }
+@@ -813,7 +813,7 @@ string_id_t model_context_impl::get_string_identifier_nowait(const abs_address_t
+ switch (col_store.get_type(addr.row))
+ {
+ case ixion::element_type_string:
+- return col_store.get<string_id_t>(addr.row);
++ return col_store.get<unsigned long>(addr.row);
+ case ixion::element_type_formula:
+ {
+ const formula_cell* p = col_store.get<formula_cell*>(addr.row);
+--
+2.18.0
+
diff --git a/user/libixion/APKBUILD b/user/libixion/APKBUILD
index 659969780..22de8c82a 100644
--- a/user/libixion/APKBUILD
+++ b/user/libixion/APKBUILD
@@ -8,10 +8,12 @@ url="https://gitlab.com/ixion/ixion"
arch="all"
license="MPL-2.0"
depends=""
-depends_dev="mdds"
+depends_dev="mdds~1.3"
makedepends="$depends_dev boost-dev"
subpackages="$pkgname-dev"
-source="http://kohei.us/files/ixion/src/$pkgname-$pkgver.tar.xz"
+source="http://kohei.us/files/ixion/src/$pkgname-$pkgver.tar.xz
+ 32bit.patch
+ "
build() {
cd "$builddir"
@@ -43,4 +45,5 @@ dev() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr
}
-sha512sums="15784e947164d106e677c59ece53b3cd401d4f9433cc5331a35d3be8332ae4f20a469ca73b30b253433c86da4afde886dfb4ac23e46ed46376a7349e0276c3a0 libixion-0.13.0.tar.xz"
+sha512sums="15784e947164d106e677c59ece53b3cd401d4f9433cc5331a35d3be8332ae4f20a469ca73b30b253433c86da4afde886dfb4ac23e46ed46376a7349e0276c3a0 libixion-0.13.0.tar.xz
+a6d26bfc8721f8f65a1eafa527e5b29166c9e0c45de39493bcaae17896ad6e145b78e123ea01903a96b0fb4a5b7def3dc2d256c3e301a0676e07c840603570ac 32bit.patch"
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/libmpd/APKBUILD b/user/libmpd/APKBUILD
new file mode 100644
index 000000000..c3ae2be64
--- /dev/null
+++ b/user/libmpd/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=libmpd
+pkgver=11.8.17
+pkgrel=0
+pkgdesc="GObject-based client library for the music player daemon"
+url="https://gmpclient.org/"
+arch="all"
+license="GPL-2.0+ AND BSD-3-Clause"
+makedepends="glib-dev"
+subpackages="$pkgname-dev"
+source="http://download.sarine.nl/Programs/gmpc/11.8/libmpd-$pkgver.tar.gz"
+
+prepare() {
+ cd "$builddir"
+ default_prepare
+ update_config_sub
+}
+
+build() {
+ cd "$builddir"
+ ./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="ffe2880834a4a39745a5327d628781e16eeb8cd1ec17402dda46ad96ff402bc0d8b4312ba058a39242ad9bb8c3a0bb6feb2c5ea2a30ef9be97652fdb5c02572d libmpd-11.8.17.tar.gz"
diff --git a/user/libopenraw/APKBUILD b/user/libopenraw/APKBUILD
new file mode 100644
index 000000000..e06f1637d
--- /dev/null
+++ b/user/libopenraw/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=libopenraw
+pkgver=0.1.3
+pkgrel=0
+pkgdesc="Library for decoding RAW camera image formats"
+url="https://libopenraw.freedesktop.org/wiki/"
+arch="all"
+license="LGPL-2.1+ AND LGPL-3.0+ AND GPL-2.0+"
+makedepends="boost-dev libjpeg-turbo-dev libxml2-dev glib-dev gdk-pixbuf-dev"
+subpackages="$pkgname-dev"
+source="https://libopenraw.freedesktop.org/download/libopenraw-$pkgver.tar.bz2"
+sha512sums="c56d84610f0cf5da970c4c0c791fccf2f7e9f7c7dacf2aeac0b2702ce9a0cd3aaa2f6db0794b0466e1dd8316771973db1e64d013f635c1166b7ff2eebdcbf029 libopenraw-0.1.3.tar.bz2"
+
+prepare() {
+ cd "$builddir"
+ default_prepare
+ update_config_sub
+}
+
+build() {
+ cd "$builddir"
+ ./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
+}
+
diff --git a/user/liborcus/APKBUILD b/user/liborcus/APKBUILD
index cd6494fef..a991df5eb 100644
--- a/user/liborcus/APKBUILD
+++ b/user/liborcus/APKBUILD
@@ -7,7 +7,7 @@ pkgdesc="Library for processing spreadsheet documents"
url="https://gitlab.com/orcus/orcus"
arch="all"
license="MPL-2.0 AND MIT"
-depends_dev="boost-dev mdds libixion-dev"
+depends_dev="boost-dev mdds~1.3 libixion-dev~0.13"
makedepends="$depends_dev zlib-dev"
subpackages="$pkgname-dev"
source="http://kohei.us/files/orcus/src/liborcus-$pkgver.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/libpng/APKBUILD b/user/libpng/APKBUILD
index 1ca9f0ec1..5b1a3352d 100644
--- a/user/libpng/APKBUILD
+++ b/user/libpng/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer:
pkgname=libpng
-pkgver=1.6.34
-pkgrel=2
+pkgver=1.6.35
+pkgrel=0
pkgdesc="Portable Network Graphics library"
url="http://www.libpng.org/"
arch="all"
@@ -11,8 +11,8 @@ depends=""
depends_dev=""
makedepends="autoconf automake libtool zlib-dev"
subpackages="$pkgname-doc $pkgname-dev $pkgname-utils"
-source="http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz
- http://downloads.sourceforge.net/sourceforge/$pkgname-apng/$pkgname-$pkgver-apng.patch.gz
+source="https://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz
+ https://downloads.sourceforge.net/sourceforge/$pkgname-apng/$pkgname-$pkgver-apng.patch.gz
libpng-fix-arm-neon.patch
"
@@ -55,6 +55,6 @@ utils() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr
}
-sha512sums="7ee14f3fcf68802b56ac006ae0188735f25adb0402422dc97f560e6d00ba0adac50b1014dbab83457cd33b360901771c962e6b7c0c6e3948cda13eb1188de825 libpng-1.6.34.tar.gz
-0777b8e55aeee207ee92479f2258ef1f60f16d7951fdbc6d89a80ef533b86dadecd1ef659d6fe7602d8ea3a8e711a096b0f77ee09b993799b73dfffddfe5dd3c libpng-1.6.34-apng.patch.gz
+sha512sums="e4312a4b33e02ad975864d8f1b0c29427625257983962ddd043f258643c18ddcb15a118405282f04d1310817e454a95111e2d4569de494d01d649c7171fd3127 libpng-1.6.35.tar.gz
+fe02147399a3cf3bf86d12589f876cf685fd5edf140d0e8b92f58fc6f113f8b2fce9ab9c19d5b3c8bff381d7e657faa6a2c6b1b6640472c2f1b59dedc598ef52 libpng-1.6.35-apng.patch.gz
e3fae918f14bc34e7c126892f69527c6e1b4d72593835ece839d9a28cff55a886b2030f877cf9e29b2c97abf2e47bbb5ba54584828edd2a841c2556f330b9c7e libpng-fix-arm-neon.patch"
diff --git a/user/libpsl/APKBUILD b/user/libpsl/APKBUILD
new file mode 100644
index 000000000..9f4e97f9e
--- /dev/null
+++ b/user/libpsl/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=libpsl
+pkgver=0.20.2
+pkgrel=0
+pkgdesc="C library for examining the Public Suffix List"
+url="https://rockdaboot.github.io/libpsl"
+arch="all"
+license="MIT AND BSD-3-Clause"
+makedepends="python3 libidn2-dev libunistring-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://github.com/rockdaboot/libpsl/releases/download/libpsl-$pkgver/libpsl-$pkgver.tar.gz
+ use-python3.patch"
+
+build() {
+ cd "$builddir"
+ ./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="fa9f6f7f0447d9fe00f5dfca5262c56ff26217eea44d0f7fc1e5d982224c41874e753f0aa06dd9e5d7d03d4f04e3dacd4f36034cc8dd0fc6e2c28b49a23e62fe libpsl-0.20.2.tar.gz
+00c9c09bac334efcd7ae6240b740ac88453425cc380cc23b443a0579f4ccabf86eafdb90f5f05027cc55ee20f6c1d4388939792a55cd95705d5e6919d40b30e5 use-python3.patch"
diff --git a/user/libpsl/use-python3.patch b/user/libpsl/use-python3.patch
new file mode 100644
index 000000000..5f9cb8bf5
--- /dev/null
+++ b/user/libpsl/use-python3.patch
@@ -0,0 +1,9 @@
+diff -Nurd libpsl-0.20.2/src/psl-make-dafsa libpsl-0.20.2.new/src/psl-make-dafsa
+--- libpsl-0.20.2/src/psl-make-dafsa 2018-04-19 02:36:59.000000000 -0500
++++ libpsl-0.20.2.new/src/psl-make-dafsa 2018-09-03 11:29:35.036414479 -0500
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # Copyright 2014 The Chromium Authors. All rights reserved.
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE.chromium file.
diff --git a/user/libreoffice/APKBUILD b/user/libreoffice/APKBUILD
index fd36400dd..013787576 100644
--- a/user/libreoffice/APKBUILD
+++ b/user/libreoffice/APKBUILD
@@ -30,7 +30,7 @@
pkgname=libreoffice
pkgver=6.0.6.2
-pkgrel=0
+pkgrel=1
case "$pkgver" in
*.*.*.*) _ver="${pkgver%.*}";;
*.*.*) _ver="$pkgver";;
@@ -49,26 +49,29 @@ license="MPL-2.0 AND Apache-2.0 AND MIT AND X11 AND (MPL-1.1 OR GPL-2.0+ OR LGPL
depends="$pkgname-base $pkgname-calc $pkgname-common $pkgname-draw
$pkgname-impress $pkgname-math $pkgname-connector-postgres $pkgname-writer"
# 1. Base dependencies
-# 2. GUIs
-# 3. File formats
+# 2. GUIs - gen
+# 3. GUIs - gtk+2.0
+# 4. File formats
makedepends="apr-dev bash bison boost-dev cairo-dev clucene-dev cmd:which
coreutils cppunit-dev cups-dev dbus-glib-dev findutils flex
fontconfig-dev freetype-dev gettext-tiny-dev glm gperf gpgme-dev
gst-plugins-base-dev gstreamer-dev harfbuzz-dev hunspell-dev
hyphen-dev icu icu-dev lcms2-dev libcmis-dev libexttextcat-dev
- libjpeg-turbo-dev libpng-dev libxml2-utils libxslt-dev mdds mythes-dev
- neon-dev nss-dev openldap-dev openssl-dev paxmark perl poppler-dev
- postgresql-dev python3-dev redland-dev sane-dev sed ucpp
+ libjpeg-turbo-dev libpng-dev libxml2-utils libxslt-dev mdds~1.3
+ mythes-dev neon-dev nss-dev openldap-dev openssl-dev paxmark perl
+ poppler-dev postgresql-dev python3-dev redland-dev sane-dev sed ucpp
unixodbc-dev util-linux xmlsec-dev zip
- gtk+3.0-dev libepoxy-dev libice-dev libsm-dev libxext-dev
- libxinerama-dev libxrandr-dev libxrender-dev
+ libepoxy-dev libxinerama-dev libxrandr-dev libxrender-dev libxext-dev
+
+ gtk+2.0-dev gdk-pixbuf-dev glib-dev
libabw-dev libcdr-dev libe-book-dev libepubgen-dev libetonyek-dev
- libfreehand-dev libmspub-dev libmwaw-dev libodfgen-dev liborcus-dev
+ libfreehand-dev libmspub-dev libmwaw-dev libodfgen-dev liborcus-dev~0.13
libpagemaker-dev libqxp-dev libstaroffice-dev libvisio-dev libwpd-dev
libwpg-dev libwps-dev libzmf-dev
"
+
# -common also depends on these fonts
_fonts="ttf-liberation ttf-dejavu ttf-carlito"
checkdepends="$_fonts"
@@ -77,7 +80,7 @@ checkdepends="$_fonts"
# -doc comes first since it redirects manpages from the other subpackages
# -lang-* comes before -common since it redirects miscellaneous
# language-specific files from -common
-subpackages="$pkgname-doc $pkgname-gtk3 $pkgname-base
+subpackages="$pkgname-doc $pkgname-base $pkgname-gtk2
$pkgname-calc $pkgname-draw $pkgname-impress $pkgname-math
$pkgname-connector-postgres $pkgname-writer"
source="https://download.documentfoundation.org/$pkgname/src/$_ver/$pkgname-$pkgver.tar.xz
@@ -89,6 +92,7 @@ source="https://download.documentfoundation.org/$pkgname/src/$_ver/$pkgname-$pkg
fix-includes.patch
gettext-tiny.patch
disable-crc-test.patch
+ disable-outdated-font-test.patch
"
ldpath="/usr/lib/$pkgname/program"
@@ -275,8 +279,8 @@ build() {
--disable-firebird-sdbc \
--disable-coinmp \
--disable-lpsolve \
- --enable-gtk3 \
- --disable-gtk \
+ --disable-gtk3 \
+ --enable-gtk \
--disable-qt5 \
--disable-odk \
--disable-avahi \
@@ -400,7 +404,7 @@ _split_lang() {
common() {
pkgdesc="LibreOffice - common files"
- depends="$pkgname-lang-en_us $pkgname-gtk3 $_fonts"
+ depends="$pkgname-lang-en_us $_fonts"
_split common
@@ -410,9 +414,6 @@ common() {
mkdir -p "$subpkgdir/usr/share/appdata"
mv "$pkgdir"/usr/share/appdata/*.xml "$subpkgdir/usr/share/appdata"
- mkdir -p "$subpkgdir/usr/lib/libreoffice/share/libreofficekit"
- mv "$pkgdir"/usr/lib/libreoffice/share/libreofficekit/*.png \
- "$subpkgdir/usr/lib/libreoffice/share/libreofficekit"
# At this point there should only be empty directories left in
# the "libreoffice" metapackage
@@ -423,9 +424,10 @@ common() {
fi
}
-gtk3() {
- pkgdesc="LibreOffice - GTK+3.0 GUI"
+gtk2() {
+ pkgdesc="LibreOffice - GTK+2.0 GUI"
depends="libreoffice-common"
+ install_if="$pkgname-common=$pkgver-r$pkgrel gtk+2.0"
_split gnome
}
@@ -479,4 +481,5 @@ fcc2ffeefde50abb80e539f7395efec6e022462b8b8938c2077df6fb3be217808cc2b96eb51539d5
4aa595588226ac2060ae78f4f857db1b148735429a47389f75313df61cabf0819ad2add15c09cae5c5ebbce64852589ca89932c72281ba662ab53dddec4e1336 fix-execinfo.patch
ae36500897db9d758e95da1791ef2577d59b0e0865baba316b4a1f1f48ce9fd5e52fc3f14fa45aeeab73c5b93f57e89f9a42c996bdb3c85eb3beb2634543d85e fix-includes.patch
c50272ec2cf0471e629bf817d23e5c51ff59e94961fab1ee107f43352409353a37f2988c1ff75f423c4c5aedb1e38b432849619700e25124a33c99a589d7a80b gettext-tiny.patch
-4ce3bacada3ab99dc09c6d29529bfc5e70eb287bcb61bc6e9a4ba4334cf77624121191d240f2a8f31b63e7510886904ce7842425752252e174478e0034988055 disable-crc-test.patch"
+4ce3bacada3ab99dc09c6d29529bfc5e70eb287bcb61bc6e9a4ba4334cf77624121191d240f2a8f31b63e7510886904ce7842425752252e174478e0034988055 disable-crc-test.patch
+887680966f8e8754d551ca7e4acc3bcae57c4fb835c49240fde05f65eb4282b8ad03deda3944b50e73b0da97ca8b28e7b1f1861907e6dbd012f5646e6d55efb4 disable-outdated-font-test.patch"
diff --git a/user/libreoffice/disable-outdated-font-test.patch b/user/libreoffice/disable-outdated-font-test.patch
new file mode 100644
index 000000000..2278fb587
--- /dev/null
+++ b/user/libreoffice/disable-outdated-font-test.patch
@@ -0,0 +1,22 @@
+https://www.mail-archive.com/libreoffice@lists.freedesktop.org/msg217102.html
+
+--- libreoffice-6.0.6.2/editeng/qa/unit/core-test.cxx 2018-07-27 13:15:59.000000000 +0000
++++ libreoffice-6.0.6.2/editeng/qa/unit/core-test.cxx 2018-09-27 03:45:48.400130363 +0000
+@@ -195,8 +195,6 @@ void Test::testLineSpacing()
+
+ // Check the first line
+ ParagraphInfos aInfo = aEditEngine.GetParagraphInfos(0);
+- CPPUNIT_ASSERT_EQUAL((sal_uInt16)122, aInfo.nFirstLineMaxAscent);
+- CPPUNIT_ASSERT_EQUAL((sal_uInt16)153, (sal_uInt16)aEditEngine.GetLineHeight(0));
+
+ // Prepare second case - 150%
+ std::unique_ptr<SfxItemSet> pSet2(new SfxItemSet(aEditEngine.GetEmptyItemSet()));
+@@ -218,8 +216,6 @@ void Test::testLineSpacing()
+
+ // Check the first line
+ ParagraphInfos aInfo2 = aEditEngine.GetParagraphInfos(0);
+- CPPUNIT_ASSERT_EQUAL(sal_uInt16(337), aInfo2.nFirstLineMaxAscent);
+- CPPUNIT_ASSERT_EQUAL(sal_uInt16(382), static_cast<sal_uInt16>(aEditEngine.GetLineHeight(0)));
+ }
+
+ void Test::testConstruction()
diff --git a/user/libsm/APKBUILD b/user/libsm/APKBUILD
index 0f5a773b0..5ff18a439 100644
--- a/user/libsm/APKBUILD
+++ b/user/libsm/APKBUILD
@@ -1,12 +1,12 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libsm
-pkgver=1.2.2
-pkgrel=2
+pkgver=1.2.3
+pkgrel=0
pkgdesc="X11 session management library"
url="https://www.X.Org/"
arch="all"
license="MIT AND X11"
-depends=
+depends=""
makedepends="libice-dev util-linux-dev util-macros xmlto xorgproto-dev xtrans"
checkdepends="check-dev"
subpackages="$pkgname-dev $pkgname-doc"
@@ -38,4 +38,4 @@ package() {
install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
-sha512sums="dfb91dcc7200fce8d0a62953ae4b81fcb00d525674bbcc6dfcaa23ecb35e1213ceb07cc51f590072dce2107909903160d9f3636a0434fe2a605b1e9a9bd0a6ca libSM-1.2.2.tar.bz2"
+sha512sums="74c42e27029db78475e62025b4711dbac5e22d2f8e8a24be98a1c31b03c0fc4afe859928f851800ea0b76854f12147900dc4f27bbfd3d8ea45daaaf24b70a903 libSM-1.2.3.tar.bz2"
diff --git a/user/libsoup/APKBUILD b/user/libsoup/APKBUILD
new file mode 100644
index 000000000..bc3c76754
--- /dev/null
+++ b/user/libsoup/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=libsoup
+pkgver=2.64.1
+pkgrel=0
+pkgdesc="GObject-based HTTP library"
+url="https://wiki.gnome.org/Projects/libsoup"
+arch="all"
+options="!check" # test suite requires poorly-configured apache-httpd
+license="LGPL-2.0+ AND LGPL-2.1+"
+makedepends="glib-dev libxml2-dev sqlite-dev libpsl-dev intltool vala-dev
+ gobject-introspection-dev glib-networking"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://download.gnome.org/sources/libsoup/2.64/libsoup-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./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="13d16457a443294020621df34205c570d25a6ff048ab68633cc504d70a8a1281a38dddb54110fd35a059bd69aebc3fd49b5ab0fc42abf4f4a19746a25050119d libsoup-2.64.1.tar.xz"
diff --git a/user/libtap/APKBUILD b/user/libtap/APKBUILD
new file mode 100644
index 000000000..0c47e0468
--- /dev/null
+++ b/user/libtap/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=libtap
+pkgver=1.12.0
+pkgrel=0
+pkgdesc="C library implementing the Test Anything Protocol (TAP)"
+url="https://www.shlomifish.org/open-source/projects/libtap/"
+arch="all"
+license="BSD-3-Clause"
+depends=""
+depends_dev=""
+makedepends="cmake perl"
+subpackages="$pkgname-dev $pkgname-doc"
+source="http://web-cpan.shlomifish.org/downloads/libtap-$pkgver.tar.bz2"
+builddir="$srcdir/libtap-$pkgver"
+
+build() {
+ cd "$builddir"
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS}
+ make
+}
+
+check() {
+ cd "$builddir"
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="510f85a5b10525cf8b67a0bcc67213e43a9e752def5293fecbc97f7058d24256a85cd8ce8c0b408186ca676f3ca700ddbeea4c8c7558352665956b4233258d31 libtap-1.12.0.tar.bz2"
diff --git a/user/libtirpc/APKBUILD b/user/libtirpc/APKBUILD
index 170e00fae..64124563a 100644
--- a/user/libtirpc/APKBUILD
+++ b/user/libtirpc/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libtirpc
pkgver=1.1.4
-pkgrel=0
+pkgrel=1
pkgdesc="Transport Independent RPC library (SunRPC replacement)"
url="http://libtirpc.sourceforge.net/"
arch="all"
@@ -11,7 +11,8 @@ depends=""
depends_dev="bsd-compat-headers krb5-dev"
makedepends="$depends_dev autoconf automake libtool linux-headers"
subpackages="$pkgname-dev $pkgname-doc $pkgname-dbg"
-source="https://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.bz2"
+source="https://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.bz2
+ musl.patch"
build() {
cd "$builddir"
@@ -29,4 +30,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="392f391f9fc1bd68d81dc44e4058831a64b32790b5c8c37338b0ab416fad2ae4d16389e632596734dba09780347918cc65c6f134e0c1afd09e81ec250785ed23 libtirpc-1.1.4.tar.bz2"
+sha512sums="392f391f9fc1bd68d81dc44e4058831a64b32790b5c8c37338b0ab416fad2ae4d16389e632596734dba09780347918cc65c6f134e0c1afd09e81ec250785ed23 libtirpc-1.1.4.tar.bz2
+8e52246ae478ae9e4689426627e17d9c58d701f4fd21a40ffe3cf17c4ceaa4ab2e8e91d2fa3ba0d0c7adc52ae4b986fcda113ec86e370ede83903bb641de520c musl.patch"
diff --git a/user/libtirpc/musl.patch b/user/libtirpc/musl.patch
new file mode 100644
index 000000000..5a4fb04f5
--- /dev/null
+++ b/user/libtirpc/musl.patch
@@ -0,0 +1,11 @@
+--- ./tirpc/rpc/types.h.orig 2018-03-17 10:23:10.022055255 +0100
++++ ./tirpc/rpc/types.h 2018-03-17 10:23:30.877751656 +0100
+@@ -66,7 +66,7 @@
+ #define mem_free(ptr, bsize) free(ptr)
+
+
+-#if defined __APPLE_CC__ || defined __FreeBSD__
++#if defined __APPLE_CC__ || defined __FreeBSD__ || !defined(__GLIBC__)
+ # define __u_char_defined
+ # define __daddr_t_defined
+ #endif
diff --git a/user/libwnck/APKBUILD b/user/libwnck/APKBUILD
new file mode 100644
index 000000000..c3d89fd43
--- /dev/null
+++ b/user/libwnck/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=libwnck
+pkgver=3.24.1
+pkgrel=0
+pkgdesc="Window navigator construction kit library from Gnome"
+url="https://gnome.org"
+arch="all"
+license="LGPL-2.0+"
+makedepends="glib-dev gtk+3.0-dev gobject-introspection-dev vala-dev
+ startup-notification-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://download.gnome.org/sources/libwnck/3.24/libwnck-$pkgver.tar.xz"
+sha512sums="e8a31ab2dc0c282f1e0994ce6a2ccd18678dc5c140943399262e795052b7f5da2d6a5d388a74f4b10f8fac66ab138983a9caaee4e72c92a17c01ca5c39b731e1 libwnck-3.24.1.tar.xz"
+builddir="$srcdir/libwnck-$pkgver"
+
+build() {
+ cd "$builddir"
+ ./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
+}
+
diff --git a/user/libx11/APKBUILD b/user/libx11/APKBUILD
index 5917acfa6..6a8b7b643 100644
--- a/user/libx11/APKBUILD
+++ b/user/libx11/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libx11
-pkgver=1.6.6
+pkgver=1.6.7
pkgrel=0
pkgdesc="X11 client-side library"
url="https://www.X.Org/"
@@ -22,8 +22,7 @@ build() {
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
- --localstatedir=/var \
- --with-xcb
+ --localstatedir=/var
make
}
@@ -38,4 +37,4 @@ package() {
install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
-sha512sums="9866dc6b158b15a96efe140b6fa68a775889a37e5565a126216211fee63868e02629a9f9f41816d590ef150560f43b8864010a77a6318c9109e76aec1d21b4d7 libX11-1.6.6.tar.bz2"
+sha512sums="edd2273b9dadbbf90ad8d7b5715db29eb120a5a22ad2595f697e56532cc24b84e358580c00548fa6be8e9d26601a2b2cdab32272c59266709534317abbd05cd5 libX11-1.6.7.tar.bz2"
diff --git a/user/libxcb/APKBUILD b/user/libxcb/APKBUILD
index fa3e90c6b..53db51310 100644
--- a/user/libxcb/APKBUILD
+++ b/user/libxcb/APKBUILD
@@ -1,12 +1,12 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxcb
-pkgver=1.13
+pkgver=1.13.1
pkgrel=0
pkgdesc="X11 C language Binding"
url="https://xcb.freedesktop.org/"
arch="all"
license="X11"
-depends=
+depends=""
subpackages="$pkgname-dev $pkgname-doc"
depends_dev="libxau-dev xcb-proto"
checkdepends="check-dev"
@@ -18,6 +18,7 @@ build() {
./configure \
--build=$CBUILD \
--host=$CHOST \
+ --target=$CTARGET \
--prefix=/usr \
--enable-xkb \
--enable-xinput \
@@ -36,4 +37,4 @@ package() {
install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
-sha512sums="d99bbe386a65f60fcc0cc2935e4a365bc0577b5e90433e18778a665a5aee8ebc8e9e8cb0aedac0ac4a276147c0507e759a716874ea4f80792b2fc18eefbc128c libxcb-1.13.tar.bz2"
+sha512sums="763edff9572623674f75a858adc57b5c09591f508cc5d5093218e7bb047abdbe0a0108bd465419a8bf15c7dcdc85efdd2d4d9fd56605c41475d15dc992640c23 libxcb-1.13.1.tar.bz2"
diff --git a/user/libxdg-basedir/APKBUILD b/user/libxdg-basedir/APKBUILD
new file mode 100644
index 000000000..50a1e7dfc
--- /dev/null
+++ b/user/libxdg-basedir/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Dan Theisen <djt@hxx.in>
+# TODO: Repackage from better source, rehost or something.
+pkgname=libxdg-basedir
+pkgver=1.2.0
+pkgrel=0
+pkgdesc="library for XDG base dir specification"
+url="https://nevill.ch/libxdg-basedir/"
+arch="all"
+license="MIT"
+depends=""
+makedepends=""
+subpackages="$pkgname-dev"
+source="https://nevill.ch/libxdg-basedir/downloads/$pkgname-$pkgver.tar.gz"
+
+prepare() {
+ cd "$builddir"
+ default_prepare
+ update_config_sub
+}
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="346553ddd9d0a0c854af9320f2ced695a0838adc18736b66120bea48ea60cb9ea3a7390672a42f83909db92f692e94de833d9e8bcfe51568a72ad1f4661fde06 libxdg-basedir-1.2.0.tar.gz"
diff --git a/user/libxfce4ui/APKBUILD b/user/libxfce4ui/APKBUILD
new file mode 100644
index 000000000..779e73a54
--- /dev/null
+++ b/user/libxfce4ui/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=libxfce4ui
+pkgver=4.13.4
+pkgrel=0
+pkgdesc="UI library for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="LGPL-2.0+ AND GPL-2.0+"
+makedepends="intltool gtk+3.0-dev gobject-introspection-dev vala-dev
+ libxfce4util-dev xfconf-dev startup-notification-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/xfce/libxfce4ui/4.13/libxfce4ui-$pkgver.tar.bz2"
+sha512sums="c82d6ff7ea0da4fc0f664bab92f1e9531162996a26bb092e6ba651cfc4551732cbcd8023908d428b47906c17c331c14bf4804256566ca564befa218dc1194206 libxfce4ui-4.13.4.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --enable-vala=yes
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
diff --git a/user/libxfce4util/APKBUILD b/user/libxfce4util/APKBUILD
new file mode 100644
index 000000000..55a5a62f7
--- /dev/null
+++ b/user/libxfce4util/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=libxfce4util
+pkgver=4.13.2
+pkgrel=0
+pkgdesc="Utility library for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="LGPL-2.0+ GPL-2.0+"
+makedepends="intltool glib-dev gobject-introspection-dev vala"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/xfce/libxfce4util/4.13/libxfce4util-$pkgver.tar.bz2"
+sha512sums="3bbb718f3a6d2213c86695b3f99d1e67c859ce635e5d066b18745d2ee57c0b2eea468b61079d8e2514c2d8f5fa847539d236ec0ed3fd17fecd9d1b36dc3595c4 libxfce4util-4.13.2.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./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
+}
+
diff --git a/user/libxklavier/APKBUILD b/user/libxklavier/APKBUILD
new file mode 100644
index 000000000..0f3964a06
--- /dev/null
+++ b/user/libxklavier/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=libxklavier
+pkgver=5.4
+pkgrel=0
+pkgdesc="High-level API for XKB"
+url="https://www.freedesktop.org/wiki/Software/LibXklavier/"
+arch="all"
+license="LGPL-2.0+"
+makedepends="libx11-dev libxml2-dev glib-dev libxcb-dev libxi-dev iso-codes-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://people.freedesktop.org/~svu/libxklavier-$pkgver.tar.bz2"
+
+prepare() {
+ cd "$builddir"
+ default_prepare
+ update_config_sub
+}
+
+build() {
+ cd "$builddir"
+ ./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="e9342d94f6cd67e900e44d9751ee0d8c75bec8e3a7b30989612bd71a5f890be52ff843465162dbbe0bfc9004da76e1d47158a4671b8f915e51c91f9d82f7baae libxklavier-5.4.tar.bz2"
diff --git a/user/links/APKBUILD b/user/links/APKBUILD
index 1450559f5..572f9d977 100644
--- a/user/links/APKBUILD
+++ b/user/links/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=links
-pkgver=2.16
+pkgver=2.17
pkgrel=0
pkgdesc="Text Web browser, similar to Lynx"
url="http://links.twibright.com/"
@@ -30,4 +30,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="3ce169e214eae0f997c1f8647d354dc0803c9118a97dcd2594d62af23336890272f4b027d3ab0a0e151672d1506e50da0f0e561999c5841f0f183f32a279b14a links-2.16.tar.bz2"
+sha512sums="871a3a2cbc210467f4ffd830ba2966f2ebc0ec9ed4a1de018d032cec4b550e58f6858875478647c627ec746bb76810a4b97603575f2d21b5ea650c612684c8d5 links-2.17.tar.bz2"
diff --git a/user/live-media/APKBUILD b/user/live-media/APKBUILD
index 11fd2cf4e..08b42891b 100644
--- a/user/live-media/APKBUILD
+++ b/user/live-media/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer:
pkgname=live-media
-pkgver=2018.07.07
+pkgver=2018.09.06
pkgrel=0
pkgdesc="Libraries for multimedia streaming"
url="http://live555.com/liveMedia"
@@ -53,4 +53,4 @@ utils() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
}
-sha512sums="e7d4ddf51e9666c6ebe9a46976035b68fea94be54825535ffb04006cd242b9d3ad08250305206442bed3500d1e8d628ccf44302c485f63a9e244b3f8b1e27fe4 live.2018.07.07.tar.gz"
+sha512sums="ada3b4f0de25304d0d53aef19136beecc6c16d506562eea85709542f608be7dcf56977e3073722873fb03deafd56be945397db8804c252acd87192adaee1bdba live.2018.09.06.tar.gz"
diff --git a/user/llvm6/APKBUILD b/user/llvm6/APKBUILD
new file mode 100644
index 000000000..5f7b04fad
--- /dev/null
+++ b/user/llvm6/APKBUILD
@@ -0,0 +1,255 @@
+# Contributor: Travis Tilley <ttilley@gmail.com>
+# Contributor: Mitch Tishmack <mitch.tishmack@gmail.com>
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+_pkgname=llvm
+pkgver=6.0.1
+_majorver=${pkgver%%.*}
+pkgname=$_pkgname$_majorver
+pkgrel=0
+pkgdesc="Low Level Virtual Machine compiler system, version $_majorver"
+arch="all"
+options="!checkroot !dbg"
+url="https://llvm.org/"
+license="NCSA"
+depends_dev="$pkgname=$pkgver-r$pkgrel libexecinfo-dev libxml2-dev"
+makedepends="binutils-dev chrpath cmake file libexecinfo-dev libffi-dev
+ libxml2-dev python3 zlib-dev"
+subpackages="$pkgname-static $pkgname-libs $pkgname-dev
+ $pkgname-test-utils:_test_utils"
+source="http://llvm.org/releases/$pkgver/llvm-$pkgver.src.tar.xz
+ llvm-fix-build-with-musl-libc.patch
+ cmake-fix-libLLVM-name.patch
+ disable-FileSystemTest.CreateDir-perms-assert.patch
+ disable-dlclose-test.patch
+ musl-ppc64-elfv2.patch
+ secure-plt.patch
+ more-secure-plt.patch
+ even-more-secure-plt.patch
+ ppc32-calling-convention.patch
+ "
+builddir="$srcdir/$_pkgname-$pkgver.src"
+
+# ARM has few failures in test suite that we don't care about currently and
+# also it takes forever to run them on the builder.
+case "$CARCH" in
+ arm*) options="$options !check";;
+esac
+
+# Whether is this package the default (latest) LLVM version.
+_default_llvm="yes"
+
+if [ "$_default_llvm" = yes ]; then
+ provides="llvm=$pkgver-r$pkgrel"
+ replaces="llvm"
+fi
+
+# NOTE: It seems that there's no (sane) way how to change includedir, sharedir
+# etc. separately, just the CMAKE_INSTALL_PREFIX. Standard CMake variables and
+# even LLVM-specific variables, that are related to these paths, actually
+# don't work (in llvm 3.7).
+#
+# When building a software that depends on LLVM, utility llvm-config should be
+# used to discover where is LLVM installed. It provides options to print
+# path of bindir, includedir, and libdir separately, but in its source, all
+# these paths are actually hard-coded against INSTALL_PREFIX. We can patch it
+# and move paths manually, but I'm really not sure what it may break...
+#
+# Also note that we should *not* add version suffix to files in llvm bindir!
+# It breaks build system of some software that depends on LLVM, because they
+# don't expect these files to have a sufix.
+#
+# So, we install all the LLVM files into /usr/lib/llvm$_majorver.
+# BTW, Fedora and Debian do the same thing.
+#
+_prefix="usr/lib/llvm$_majorver"
+
+prepare() {
+ default_prepare
+ cd "$builddir"
+
+ # https://bugs.llvm.org//show_bug.cgi?id=31870
+ rm test/tools/llvm-symbolizer/print_context.c
+
+ mkdir -p "$builddir"/build
+}
+
+build() {
+ cd "$builddir"/build
+
+ # Auto-detect it by guessing either.
+ local ffi_include_dir="$(pkg-config --cflags-only-I libffi | sed 's|^-I||g')"
+
+ cmake -G "Unix Makefiles" -Wno-dev \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/$_prefix \
+ -DCMAKE_VERBOSE_MAKEFILE=NO \
+ -DFFI_INCLUDE_DIR="$ffi_include_dir" \
+ -DLLVM_BINUTILS_INCDIR=/usr/include \
+ -DLLVM_BUILD_DOCS=OFF \
+ -DLLVM_BUILD_EXAMPLES=OFF \
+ -DLLVM_BUILD_EXTERNAL_COMPILER_RT=ON \
+ -DLLVM_BUILD_LLVM_DYLIB=ON \
+ -DLLVM_BUILD_TESTS=ON \
+ -DLLVM_DEFAULT_TARGET_TRIPLE="$CBUILD" \
+ -DLLVM_ENABLE_ASSERTIONS=OFF \
+ -DLLVM_ENABLE_CXX1Y=ON \
+ -DLLVM_ENABLE_FFI=ON \
+ -DLLVM_ENABLE_LIBCXX=OFF \
+ -DLLVM_ENABLE_PIC=ON \
+ -DLLVM_ENABLE_RTTI=ON \
+ -DLLVM_ENABLE_SPHINX=OFF \
+ -DLLVM_ENABLE_TERMINFO=ON \
+ -DLLVM_ENABLE_ZLIB=ON \
+ -DLLVM_HOST_TRIPLE="$CHOST" \
+ -DLLVM_INCLUDE_EXAMPLES=OFF \
+ -DLLVM_LINK_LLVM_DYLIB=ON \
+ -DLLVM_TARGETS_TO_BUILD='X86;ARM;AArch64;PowerPC;SystemZ;AMDGPU;NVPTX;Mips;BPF' \
+ "$builddir"
+
+ make llvm-tblgen
+ make
+
+ python3 ../utils/lit/setup.py build
+}
+
+check() {
+ cd "$builddir"/build
+
+ # FIXME: Few tests fail on s390x, ignore it for now. See build log
+ # https://gist.github.com/jirutka/6edc951ad5b8002cf1780546cf661edc
+ case "$CARCH" in
+ s390x) make check-llvm || true;;
+ *) make check-llvm;;
+ esac
+}
+
+package() {
+ cd "$builddir"/build
+
+ make DESTDIR="$pkgdir" install
+
+ cd "$pkgdir"/$_prefix
+
+ # Remove RPATHs.
+ file lib/*.so bin/* \
+ | awk -F: '$2~/ELF/{print $1}' \
+ | xargs -r chrpath -d
+
+ # Symlink files from /usr/lib/llvm*/bin to /usr/bin.
+ mkdir -p "$pkgdir"/usr/bin
+ local name newname path
+ for path in bin/*; do
+ name=${path##*/}
+ # Add version infix/suffix to the executable name.
+ case "$name" in
+ llvm-*) newname="llvm$_majorver-${name#llvm-}";;
+ *) newname="$name$_majorver";;
+ esac
+ # If this package provides=llvm (i.e. it's the default/latest
+ # llvm package), omit version infix/suffix.
+ if [ "$_default_llvm" = yes ]; then
+ newname=$name
+ fi
+ case "$name" in
+ FileCheck | obj2yaml | yaml2obj) continue;;
+ esac
+ ln -s ../lib/llvm$_majorver/bin/$name "$pkgdir"/usr/bin/$newname
+ done
+
+ # Move /usr/lib/$pkgname/include/ into /usr/include/$pkgname/
+ # and symlink it back.
+ _mv include/* "$pkgdir"/usr/include/$pkgname/
+ rmdir include
+ ln -s ../../include/$pkgname include
+
+ # Move /usr/lib/$pkgname/lib/cmake/llvm/ into /usr/lib/cmake/$pkgname/
+ # and symlink it back.
+ _mv lib/cmake/llvm/* "$pkgdir"/usr/lib/cmake/$pkgname/
+ rmdir lib/cmake/llvm
+ ln -s ../../../cmake/$pkgname lib/cmake/llvm
+}
+
+static() {
+ pkgdesc="LLVM $_majorver static libraries"
+ _common_subpkg
+
+ _mv "$pkgdir"/$_prefix/lib/*.a "$subpkgdir"/$_prefix/lib/
+ strip -d "$subpkgdir"/$_prefix/lib/*.a
+}
+
+libs() {
+ pkgdesc="LLVM $_majorver runtime library"
+ local soname="libLLVM-$_majorver.0.so"
+ local soname2="libLLVM-$pkgver.so"
+ _common_subpkg
+
+ mkdir -p "$subpkgdir"
+ cd "$subpkgdir"
+
+ # libLLVM should be in /usr/lib. This is needed for binaries that are
+ # dynamically linked with libLLVM, so they can find it on default path.
+ _mv "$pkgdir"/$_prefix/lib/$soname usr/lib/
+ ln -s $soname usr/lib/$soname2
+
+ # And also symlink it back to the LLVM prefix.
+ mkdir -p $_prefix/lib
+ ln -s ../../$soname $_prefix/lib/$soname
+ ln -s ../../$soname $_prefix/lib/$soname2
+}
+
+dev() {
+ _common_subpkg
+ default_dev
+ cd "$subpkgdir"
+
+ _mv "$pkgdir"/$_prefix/lib $_prefix/
+ _mv "$pkgdir"/$_prefix/include $_prefix/
+
+ _mv "$pkgdir"/$_prefix/bin/llvm-config $_prefix/bin/
+}
+
+_test_utils() {
+ pkgdesc="LLVM $_majorver utilities for executing LLVM and Clang style test suites"
+ depends="python3"
+ _common_subpkg
+ replaces=""
+
+ local litver=$(python3 "$builddir"/utils/lit/setup.py --version 2>/dev/null \
+ | sed 's/\.dev.*$//')
+ test -n "$litver" || return 1
+ provides="$provides lit=$litver-r$pkgrel"
+
+ cd "$builddir"/build
+
+ install -D -m 755 bin/FileCheck "$subpkgdir"/$_prefix/bin/FileCheck
+ install -D -m 755 bin/count "$subpkgdir"/$_prefix/bin/count
+ install -D -m 755 bin/not "$subpkgdir"/$_prefix/bin/not
+
+ python3 ../utils/lit/setup.py install --prefix=/usr --root="$subpkgdir"
+ ln -s ../../../bin/lit "$subpkgdir"/$_prefix/bin/lit
+}
+
+_common_subpkg() {
+ if [ "$_default_llvm" = yes ]; then
+ replaces="llvm${subpkgname#$pkgname}"
+ provides="$replaces=$pkgver-r$pkgrel"
+ fi
+}
+
+_mv() {
+ local dest; for dest; do true; done # get last argument
+ mkdir -p "$dest"
+ mv $@
+}
+
+sha512sums="cbbb00eb99cfeb4aff623ee1a5ba075e7b5a76fc00c5f9f539ff28c108598f5708a0369d5bd92683def5a20c2fe60cab7827b42d628dbfcc79b57e0e91b84dd9 llvm-6.0.1.src.tar.xz
+f84cd65d7042e89826ba6e8d48c4c302bf4980da369d7f19a55f217e51c00ca8ed178d453df3a3cee76598a7cecb94aed0775a6d24fe73266f82749913fc3e71 llvm-fix-build-with-musl-libc.patch
+6d1a716e5aa24e6b9a3acf4cc11e2504b1b01abf574074e9e5617b991de87d5e4e687eb18e85e73d5e632568afe2fc357771c4c96f9e136502071991496fb78c cmake-fix-libLLVM-name.patch
+49c47f125014b60d0ea7870f981a2c1708ad705793f89287ed846ee881a837a4dc0170bf467e03f2ef56177473128945287749ac80dc2d13cfabcf8b929ba58a disable-FileSystemTest.CreateDir-perms-assert.patch
+caeec8e4dbd92f5f74940780b69075f3879a267a8623822cbdc193fd14706eb089071e3a5a20d60cc2eca59e4c5b2a61d29827a2f3362ee7c5f74f11d9ace200 disable-dlclose-test.patch
+e5ddbc4b6c4928e79846dc3c022eb7928aaa8fed40515c78f5f03b8ab8264f34f1eb8aa8bfc0f436450932f4917e54ad261603032092ea271d9590f11a37cf1e musl-ppc64-elfv2.patch
+35d289641fa4d200b5a3f62f1d51da600a734641356b0dc6c54a3080dd89aec3b031e36af8b53be49c35346c1cbcce00268de7ec9b4f552bfd7bf84d3504d1c4 secure-plt.patch
+3d4a0a478bf800ea262c577451e22a1dbd5a4258226e49c66a697559263c8aa4fc0fff642a3c80ac3dfbb3efd6d9c0dbeb41dae1250fc7946de821cfef1ce1f0 more-secure-plt.patch
+deb71762721ebc73bfdf23143b582f40c70eddcef3e337ed14499e8e336bee2906292d38d64fe98fa633430c1bcb66cf6a2e067258c8fbe6e931f99f6d10a6f7 even-more-secure-plt.patch
+c3f596a1578a07ce0ee40c4e2576fe05ca6ca0c1b4f94b1f74c55cb09603afe7c846db9294fe28d83ca48633086bad422218e6d06e0d92173143fb298e06fb38 ppc32-calling-convention.patch"
diff --git a/user/llvm6/cmake-fix-libLLVM-name.patch b/user/llvm6/cmake-fix-libLLVM-name.patch
new file mode 100644
index 000000000..cb29fe2ef
--- /dev/null
+++ b/user/llvm6/cmake-fix-libLLVM-name.patch
@@ -0,0 +1,26 @@
+Include version in name of shared libs
+
+libLLVM.so -> libLLVM-$MAJOR.$MINOR.so
+
+Source: http://pkgs.fedoraproject.org/cgit/rpms/llvm3.9.git/tree/llvm-soversion.patch?id=3dac83eaa5b88f550ae50125b14b8f644e10617b
+--- a/cmake/modules/AddLLVM.cmake
++++ b/cmake/modules/AddLLVM.cmake
+@@ -450,6 +450,18 @@
+ PREFIX ""
+ )
+ endif()
++
++ # Set SOVERSION on shared libraries that lack explicit SONAME
++ # specifier, on *nix systems that are not Darwin.
++ if(UNIX AND NOT APPLE AND NOT ARG_SONAME)
++ set_target_properties(${name}
++ PROPERTIES
++ # Concatenate the version numbers since ldconfig expects exactly
++ # one component indicating the ABI version, while LLVM uses
++ # major+minor for that.
++ SOVERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}
++ VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX})
++ endif()
+ endif()
+
+ if(ARG_MODULE OR ARG_SHARED)
diff --git a/user/llvm6/disable-FileSystemTest.CreateDir-perms-assert.patch b/user/llvm6/disable-FileSystemTest.CreateDir-perms-assert.patch
new file mode 100644
index 000000000..e73ce9b6f
--- /dev/null
+++ b/user/llvm6/disable-FileSystemTest.CreateDir-perms-assert.patch
@@ -0,0 +1,61 @@
+Do not assert permissions of file created in /tmp directory.
+
+This assertion fails, probably due to some specific setup of /tmp
+on build servers.
+
+ FAIL: LLVM-Unit :: Support/SupportTests/FileSystemTest.CreateDir (1293 of 17222)
+ ******************** TEST 'LLVM-Unit :: Support/SupportTests/FileSystemTest.CreateDir' FAILED ********************
+ Note: Google Test filter = FileSystemTest.CreateDir
+ [==========] Running 1 test from 1 test case.
+ [----------] Global test environment set-up.
+ [----------] 1 test from FileSystemTest
+ [ RUN ] FileSystemTest.CreateDir
+ /home/buildozer/aports/testing/llvm3.9/src/llvm-3.9.1.src/unittests/Support/Path.cpp:591: Failure
+ Value of: fs::perms::owner_read | fs::perms::owner_exe
+ Actual: 320
+ Expected: Status.permissions() & fs::perms::all_all
+ Which is: 448
+
+--- a/unittests/Support/Path.cpp
++++ b/unittests/Support/Path.cpp
+@@ -579,23 +579,23 @@
+ ASSERT_NO_ERROR(fs::remove(Twine(TestDirectory) + "foo"));
+
+ #ifdef LLVM_ON_UNIX
+- // Set a 0000 umask so that we can test our directory permissions.
+- mode_t OldUmask = ::umask(0000);
+-
+- fs::file_status Status;
+- ASSERT_NO_ERROR(
+- fs::create_directory(Twine(TestDirectory) + "baz500", false,
+- fs::perms::owner_read | fs::perms::owner_exe));
+- ASSERT_NO_ERROR(fs::status(Twine(TestDirectory) + "baz500", Status));
+- ASSERT_EQ(Status.permissions() & fs::perms::all_all,
+- fs::perms::owner_read | fs::perms::owner_exe);
+- ASSERT_NO_ERROR(fs::create_directory(Twine(TestDirectory) + "baz777", false,
+- fs::perms::all_all));
+- ASSERT_NO_ERROR(fs::status(Twine(TestDirectory) + "baz777", Status));
+- ASSERT_EQ(Status.permissions() & fs::perms::all_all, fs::perms::all_all);
+-
+- // Restore umask to be safe.
+- ::umask(OldUmask);
++// // Set a 0000 umask so that we can test our directory permissions.
++// mode_t OldUmask = ::umask(0000);
++//
++// fs::file_status Status;
++// ASSERT_NO_ERROR(
++// fs::create_directory(Twine(TestDirectory) + "baz500", false,
++// fs::perms::owner_read | fs::perms::owner_exe));
++// ASSERT_NO_ERROR(fs::status(Twine(TestDirectory) + "baz500", Status));
++// ASSERT_EQ(Status.permissions() & fs::perms::all_all,
++// fs::perms::owner_read | fs::perms::owner_exe);
++// ASSERT_NO_ERROR(fs::create_directory(Twine(TestDirectory) + "baz777", false,
++// fs::perms::all_all));
++// ASSERT_NO_ERROR(fs::status(Twine(TestDirectory) + "baz777", Status));
++// ASSERT_EQ(Status.permissions() & fs::perms::all_all, fs::perms::all_all);
++//
++// // Restore umask to be safe.
++// ::umask(OldUmask);
+ #endif
+
+ #ifdef LLVM_ON_WIN32
diff --git a/user/llvm6/disable-dlclose-test.patch b/user/llvm6/disable-dlclose-test.patch
new file mode 100644
index 000000000..b70cd4d4d
--- /dev/null
+++ b/user/llvm6/disable-dlclose-test.patch
@@ -0,0 +1,18 @@
+--- llvm-6.0.1.src/unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp.old 2017-07-12 21:22:45.000000000 +0000
++++ llvm-6.0.1.src/unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp 2018-09-13 04:43:37.240000000 +0000
+@@ -107,6 +107,7 @@
+ EXPECT_TRUE(DynamicLibrary::SearchOrder == DynamicLibrary::SO_Linker);
+ }
+
++#if 0
+ TEST(DynamicLibrary, Shutdown) {
+ std::string A("PipSqueak"), B, C("SecondLib");
+ std::vector<std::string> Order;
+@@ -162,6 +163,7 @@
+ EXPECT_EQ(Order.front(), "SecondLib");
+ EXPECT_EQ(Order.back(), "PipSqueak");
+ }
++#endif
+
+ #else
+
diff --git a/user/llvm6/even-more-secure-plt.patch b/user/llvm6/even-more-secure-plt.patch
new file mode 100644
index 000000000..112e111b8
--- /dev/null
+++ b/user/llvm6/even-more-secure-plt.patch
@@ -0,0 +1,101 @@
+Index: lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp
+===================================================================
+--- a/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp
++++ b/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp
+@@ -442,13 +442,22 @@
+ // On PPC64, VariantKind is VK_None, but on PPC32, it's VK_PLT, and it must
+ // come at the _end_ of the expression.
+ const MCOperand &Op = MI->getOperand(OpNo);
+- const MCSymbolRefExpr &refExp = cast<MCSymbolRefExpr>(*Op.getExpr());
+- O << refExp.getSymbol().getName();
++ const MCSymbolRefExpr *RefExp = nullptr;
++ const MCConstantExpr *ConstExp = nullptr;
++ if (const MCBinaryExpr *BinExpr = dyn_cast<MCBinaryExpr>(Op.getExpr())) {
++ RefExp = cast<MCSymbolRefExpr>(BinExpr->getLHS());
++ ConstExp = cast<MCConstantExpr>(BinExpr->getRHS());
++ } else
++ RefExp = cast<MCSymbolRefExpr>(Op.getExpr());
++
++ O << RefExp->getSymbol().getName();
+ O << '(';
+ printOperand(MI, OpNo+1, O);
+ O << ')';
+- if (refExp.getKind() != MCSymbolRefExpr::VK_None)
+- O << '@' << MCSymbolRefExpr::getVariantKindName(refExp.getKind());
++ if (RefExp->getKind() != MCSymbolRefExpr::VK_None)
++ O << '@' << MCSymbolRefExpr::getVariantKindName(RefExp->getKind());
++ if (ConstExp != nullptr)
++ O << '+' << ConstExp->getValue();
+ }
+
+ /// showRegistersWithPercentPrefix - Check if this register name should be
+Index: lib/Target/PowerPC/PPCAsmPrinter.cpp
+===================================================================
+--- a/lib/Target/PowerPC/PPCAsmPrinter.cpp
++++ b/lib/Target/PowerPC/PPCAsmPrinter.cpp
+@@ -487,8 +487,14 @@
+ if (!Subtarget->isPPC64() && !Subtarget->isDarwin() &&
+ isPositionIndependent())
+ Kind = MCSymbolRefExpr::VK_PLT;
+- const MCSymbolRefExpr *TlsRef =
++ const MCExpr *TlsRef =
+ MCSymbolRefExpr::create(TlsGetAddr, Kind, OutContext);
++
++ // Add 32768 offset to the symbol so we follow up the latest GOT/PLT ABI.
++ if (Kind == MCSymbolRefExpr::VK_PLT && Subtarget->isSecurePlt())
++ TlsRef = MCBinaryExpr::createAdd(TlsRef,
++ MCConstantExpr::create(32768, OutContext),
++ OutContext);
+ const MachineOperand &MO = MI->getOperand(2);
+ const GlobalValue *GValue = MO.getGlobal();
+ MCSymbol *MOSymbol = getSymbol(GValue);
+Index: lib/Target/PowerPC/PPCISelDAGToDAG.cpp
+===================================================================
+--- a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
++++ b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
+@@ -4054,7 +4054,20 @@
+ if (trySETCC(N))
+ return;
+ break;
+-
++ // These nodes will be transformed into GETtlsADDR32 node, which
++ // later becomes BL_TLS __tls_get_addr(sym at tlsgd)@PLT
++ case PPCISD::ADDI_TLSLD_L_ADDR:
++ case PPCISD::ADDI_TLSGD_L_ADDR: {
++ const Module *Mod = MF->getFunction().getParent();
++ if (PPCLowering->getPointerTy(CurDAG->getDataLayout()) != MVT::i32 ||
++ !PPCSubTarget->isSecurePlt() || !PPCSubTarget->isTargetELF() ||
++ Mod->getPICLevel() == PICLevel::SmallPIC)
++ break;
++ // Attach global base pointer on GETtlsADDR32 node in order to
++ // generate secure plt code for TLS symbols.
++ getGlobalBaseReg();
++ }
++ break;
+ case PPCISD::CALL: {
+ const Module *M = MF->getFunction().getParent();
+
+Index: test/CodeGen/PowerPC/ppc32-secure-plt-tls.ll
+===================================================================
+--- a/test/CodeGen/PowerPC/ppc32-secure-plt-tls.ll
++++ b/test/CodeGen/PowerPC/ppc32-secure-plt-tls.ll
+@@ -0,0 +1,18 @@
++; RUN: llc < %s -mtriple=powerpc-unknown-linux-gnu -mattr=+secure-plt -relocation-model=pic | FileCheck -check-prefix=SECURE-PLT-TLS %s
++
++@a = thread_local local_unnamed_addr global i32 6, align 4
++define i32 @main() local_unnamed_addr #0 {
++entry:
++ %0 = load i32, i32* @a, align 4
++ ret i32 %0
++}
++
++
++!llvm.module.flags = !{!0}
++!0 = !{i32 7, !"PIC Level", i32 2}
++
++; SECURE-PLT-TLS: mflr 30
++; SECURE-PLT-TLS-NEXT: addis 30, 30, .LTOC-.L0$pb@ha
++; SECURE-PLT-TLS-NEXT: addi 30, 30, .LTOC-.L0$pb@l
++; SECURE-PLT-TLS-NEXT: bl .L{{.*}}
++; SECURE-PLT-TLS: bl __tls_get_addr(a@tlsgd)@PLT+32768
+\ No newline at end of file
diff --git a/user/llvm6/llvm-fix-build-with-musl-libc.patch b/user/llvm6/llvm-fix-build-with-musl-libc.patch
new file mode 100644
index 000000000..6ee91ea44
--- /dev/null
+++ b/user/llvm6/llvm-fix-build-with-musl-libc.patch
@@ -0,0 +1,46 @@
+From 5c571082fdaf61f6df19d9b7137dc26d71334058 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Thu, 18 Feb 2016 10:33:04 +0100
+Subject: [PATCH 2/3] Fix build with musl libc
+
+On musl libc the fopen64 and fopen are the same thing, but for
+compatibility they have a `#define fopen64 fopen`. Same applies for
+fseek64, fstat64, fstatvfs64, ftello64, lstat64, stat64 and tmpfile64.
+---
+ include/llvm/Analysis/TargetLibraryInfo.h | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/include/llvm/Analysis/TargetLibraryInfo.h b/include/llvm/Analysis/TargetLibraryInfo.h
+index 7becdf0..7f14427 100644
+--- a/include/llvm/Analysis/TargetLibraryInfo.h
++++ b/include/llvm/Analysis/TargetLibraryInfo.h
+@@ -18,6 +18,26 @@
+ #include "llvm/IR/Module.h"
+ #include "llvm/Pass.h"
+
++#undef fopen64
++#undef fseeko64
++#undef fstat64
++#undef fstatvfs64
++#undef ftello64
++#undef lstat64
++#undef stat64
++#undef tmpfile64
++#undef F_GETLK64
++#undef F_SETLK64
++#undef F_SETLKW64
++#undef flock64
++#undef open64
++#undef openat64
++#undef creat64
++#undef lockf64
++#undef posix_fadvise64
++#undef posix_fallocate64
++#undef off64_t
++
+ namespace llvm {
+ /// VecDesc - Describes a possible vectorization of a function.
+ /// Function 'VectorFnName' is equivalent to 'ScalarFnName' vectorized
+--
+2.7.3
+
diff --git a/user/llvm6/more-secure-plt.patch b/user/llvm6/more-secure-plt.patch
new file mode 100644
index 000000000..1cc08a9a8
--- /dev/null
+++ b/user/llvm6/more-secure-plt.patch
@@ -0,0 +1,38 @@
+diff --git a/lib/Target/PowerPC/PPCSubtarget.cpp b/lib/Target/PowerPC/PPCSubtarget.cpp
+index c0cbfd779cb..5d7a021c3e2 100644
+--- a/lib/Target/PowerPC/PPCSubtarget.cpp
++++ b/lib/Target/PowerPC/PPCSubtarget.cpp
+@@ -106,6 +106,7 @@
+ HasFloat128 = false;
+ IsISA3_0 = false;
+ UseLongCalls = false;
++ SecurePlt = false;
+
+ HasPOPCNTD = POPCNTD_Unavailable;
+ }
+@@ -136,6 +137,10 @@
+ if (isDarwin())
+ HasLazyResolverStubs = true;
+
++ // Set up musl-specific properties.
++ if (TargetTriple.getEnvironment() == Triple::Musl)
++ SecurePlt = true;
++
+ // QPX requires a 32-byte aligned stack. Note that we need to do this if
+ // we're compiling for a BG/Q system regardless of whether or not QPX
+ // is enabled because external functions will assume this alignment.
+diff --git a/lib/Target/PowerPC/PPCTargetMachine.cpp b/lib/Target/PowerPC/PPCTargetMachine.cpp
+index c583fba8cab..6a9eedf89c5 100644
+--- a/lib/Target/PowerPC/PPCTargetMachine.cpp
++++ b/lib/Target/PowerPC/PPCTargetMachine.cpp
+@@ -222,6 +222,10 @@ static Reloc::Model getEffectiveRelocModel(const Triple &TT,
+ if (TT.getArch() == Triple::ppc64 || TT.getArch() == Triple::ppc64le)
+ return Reloc::PIC_;
+
++ // musl needs SecurePlt, which depends on PIC.
++ if (TT.getEnvironment() == Triple::Musl)
++ return Reloc::PIC_;
++
+ // 32-bit is static by default.
+ return Reloc::Static;
+ }
diff --git a/user/llvm6/musl-ppc64-elfv2.patch b/user/llvm6/musl-ppc64-elfv2.patch
new file mode 100644
index 000000000..016be5dad
--- /dev/null
+++ b/user/llvm6/musl-ppc64-elfv2.patch
@@ -0,0 +1,43 @@
+From 750d323a6060ad92c3d247f85d6555041f55b4a5 Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Thu, 4 Oct 2018 15:26:59 -0500
+Subject: [PATCH] Add support for powerpc64-*-linux-musl targets
+
+This patch ensures that 64-bit PowerPC musl targets use ELFv2 ABI on both
+endians. It additionally adds a test that big endian PPC64 uses ELFv2 on
+musl.
+---
+ lib/Target/PowerPC/PPCTargetMachine.cpp | 4 ++++
+ test/CodeGen/PowerPC/ppc64-elf-abi.ll | 1 +
+ 2 files changed, 5 insertions(+)
+
+diff --git a/lib/Target/PowerPC/PPCTargetMachine.cpp b/lib/Target/PowerPC/PPCTargetMachine.cpp
+index 34410393ef6..c583fba8cab 100644
+--- a/lib/Target/PowerPC/PPCTargetMachine.cpp
++++ b/lib/Target/PowerPC/PPCTargetMachine.cpp
+@@ -199,6 +199,10 @@ static PPCTargetMachine::PPCABI computeTargetABI(const Triple &TT,
+ case Triple::ppc64le:
+ return PPCTargetMachine::PPC_ABI_ELFv2;
+ case Triple::ppc64:
++ // musl uses ELFv2 ABI on both endians.
++ if (TT.getEnvironment() == Triple::Musl)
++ return PPCTargetMachine::PPC_ABI_ELFv2;
++
+ return PPCTargetMachine::PPC_ABI_ELFv1;
+ default:
+ return PPCTargetMachine::PPC_ABI_UNKNOWN;
+diff --git a/test/CodeGen/PowerPC/ppc64-elf-abi.ll b/test/CodeGen/PowerPC/ppc64-elf-abi.ll
+index 1e17930304b..aa594b37b47 100644
+--- a/test/CodeGen/PowerPC/ppc64-elf-abi.ll
++++ b/test/CodeGen/PowerPC/ppc64-elf-abi.ll
+@@ -1,6 +1,7 @@
+ ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s -check-prefix=CHECK-ELFv1
+ ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -target-abi elfv1 < %s | FileCheck %s -check-prefix=CHECK-ELFv1
+ ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -target-abi elfv2 < %s | FileCheck %s -check-prefix=CHECK-ELFv2
++; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-musl < %s | FileCheck %s -check-prefix=CHECK-ELFv2
+ ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s -check-prefix=CHECK-ELFv2
+ ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -target-abi elfv1 < %s | FileCheck %s -check-prefix=CHECK-ELFv1
+ ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -target-abi elfv2 < %s | FileCheck %s -check-prefix=CHECK-ELFv2
+--
+2.18.0
+
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/llvm6/secure-plt.patch b/user/llvm6/secure-plt.patch
new file mode 100644
index 000000000..e8af33d87
--- /dev/null
+++ b/user/llvm6/secure-plt.patch
@@ -0,0 +1,208 @@
+Index: llvm/lib/Target/PowerPC/PPC.td
+===================================================================
+--- llvm/lib/Target/PowerPC/PPC.td
++++ llvm/lib/Target/PowerPC/PPC.td
+@@ -119,6 +119,8 @@
+ [FeatureBookE]>;
+ def FeatureE500 : SubtargetFeature<"e500", "IsE500", "true",
+ "Enable E500/E500mc instructions">;
++def FeatureSecurePlt : SubtargetFeature<"secure-plt","SecurePlt", "true",
++ "Enable secure plt mode">;
+ def FeaturePPC4xx : SubtargetFeature<"ppc4xx", "IsPPC4xx", "true",
+ "Enable PPC 4xx instructions">;
+ def FeaturePPC6xx : SubtargetFeature<"ppc6xx", "IsPPC6xx", "true",
+Index: llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp
+===================================================================
+--- llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp
++++ llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp
+@@ -563,33 +563,63 @@
+ // Transform %rd = UpdateGBR(%rt, %ri)
+ // Into: lwz %rt, .L0$poff - .L0$pb(%ri)
+ // add %rd, %rt, %ri
++ // or into (if secure plt mode is on):
++ // addis r30, r30, .LTOC - .L0$pb@ha
++ // addi r30, r30, .LTOC - .L0$pb@l
+ // Get the offset from the GOT Base Register to the GOT
+ LowerPPCMachineInstrToMCInst(MI, TmpInst, *this, isDarwin);
+- MCSymbol *PICOffset =
+- MF->getInfo<PPCFunctionInfo>()->getPICOffsetSymbol();
+- TmpInst.setOpcode(PPC::LWZ);
+- const MCExpr *Exp =
+- MCSymbolRefExpr::create(PICOffset, MCSymbolRefExpr::VK_None, OutContext);
+- const MCExpr *PB =
+- MCSymbolRefExpr::create(MF->getPICBaseSymbol(),
+- MCSymbolRefExpr::VK_None,
+- OutContext);
+- const MCOperand TR = TmpInst.getOperand(1);
+- const MCOperand PICR = TmpInst.getOperand(0);
++ if (Subtarget->isSecurePlt() && isPositionIndependent() ) {
++ unsigned PICR = TmpInst.getOperand(0).getReg();
++ MCSymbol *LTOCSymbol = OutContext.getOrCreateSymbol(StringRef(".LTOC"));
++ const MCExpr *PB =
++ MCSymbolRefExpr::create(MF->getPICBaseSymbol(),
++ OutContext);
+
+- // Step 1: lwz %rt, .L$poff - .L$pb(%ri)
+- TmpInst.getOperand(1) =
+- MCOperand::createExpr(MCBinaryExpr::createSub(Exp, PB, OutContext));
+- TmpInst.getOperand(0) = TR;
+- TmpInst.getOperand(2) = PICR;
+- EmitToStreamer(*OutStreamer, TmpInst);
++ const MCExpr *LTOCDeltaExpr =
++ MCBinaryExpr::createSub(MCSymbolRefExpr::create(LTOCSymbol, OutContext),
++ PB, OutContext);
+
+- TmpInst.setOpcode(PPC::ADD4);
+- TmpInst.getOperand(0) = PICR;
+- TmpInst.getOperand(1) = TR;
+- TmpInst.getOperand(2) = PICR;
+- EmitToStreamer(*OutStreamer, TmpInst);
+- return;
++ const MCExpr *LTOCDeltaHi =
++ PPCMCExpr::createHa(LTOCDeltaExpr, false, OutContext);
++ EmitToStreamer(*OutStreamer, MCInstBuilder(PPC::ADDIS)
++ .addReg(PICR)
++ .addReg(PICR)
++ .addExpr(LTOCDeltaHi));
++
++ const MCExpr *LTOCDeltaLo =
++ PPCMCExpr::createLo(LTOCDeltaExpr, false, OutContext);
++ EmitToStreamer(*OutStreamer, MCInstBuilder(PPC::ADDI)
++ .addReg(PICR)
++ .addReg(PICR)
++ .addExpr(LTOCDeltaLo));
++ return;
++ } else {
++ MCSymbol *PICOffset =
++ MF->getInfo<PPCFunctionInfo>()->getPICOffsetSymbol();
++ TmpInst.setOpcode(PPC::LWZ);
++ const MCExpr *Exp =
++ MCSymbolRefExpr::create(PICOffset, MCSymbolRefExpr::VK_None, OutContext);
++ const MCExpr *PB =
++ MCSymbolRefExpr::create(MF->getPICBaseSymbol(),
++ MCSymbolRefExpr::VK_None,
++ OutContext);
++ const MCOperand TR = TmpInst.getOperand(1);
++ const MCOperand PICR = TmpInst.getOperand(0);
++
++ // Step 1: lwz %rt, .L$poff - .L$pb(%ri)
++ TmpInst.getOperand(1) =
++ MCOperand::createExpr(MCBinaryExpr::createSub(Exp, PB, OutContext));
++ TmpInst.getOperand(0) = TR;
++ TmpInst.getOperand(2) = PICR;
++ EmitToStreamer(*OutStreamer, TmpInst);
++
++ TmpInst.setOpcode(PPC::ADD4);
++ TmpInst.getOperand(0) = PICR;
++ TmpInst.getOperand(1) = TR;
++ TmpInst.getOperand(2) = PICR;
++ EmitToStreamer(*OutStreamer, TmpInst);
++ return;
++ }
+ }
+ case PPC::LWZtoc: {
+ // Transform %r3 = LWZtoc @min1, %r2
+@@ -1233,7 +1263,7 @@
+
+ if (!Subtarget->isPPC64()) {
+ const PPCFunctionInfo *PPCFI = MF->getInfo<PPCFunctionInfo>();
+- if (PPCFI->usesPICBase()) {
++ if (PPCFI->usesPICBase() && !Subtarget->isSecurePlt()) {
+ MCSymbol *RelocSymbol = PPCFI->getPICOffsetSymbol();
+ MCSymbol *PICBase = MF->getPICBaseSymbol();
+ OutStreamer->EmitLabel(RelocSymbol);
+Index: llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
+===================================================================
+--- llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
++++ llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
+@@ -4001,6 +4001,27 @@
+ return;
+ break;
+
++ case PPCISD::CALL: {
++ const Module *M = MF->getFunction().getParent();
++
++ if (PPCLowering->getPointerTy(CurDAG->getDataLayout()) != MVT::i32 ||
++ !PPCSubTarget->isSecurePlt() || !PPCSubTarget->isTargetELF() ||
++ M->getPICLevel() == PICLevel::SmallPIC)
++ break;
++
++ SDValue Op = N->getOperand(1);
++
++ if (GlobalAddressSDNode *GA = dyn_cast<GlobalAddressSDNode>(Op)) {
++ if (GA->getTargetFlags() == PPCII::MO_PLT)
++ getGlobalBaseReg();
++ }
++ else if (ExternalSymbolSDNode *ES = dyn_cast<ExternalSymbolSDNode>(Op)) {
++ if (ES->getTargetFlags() == PPCII::MO_PLT)
++ getGlobalBaseReg();
++ }
++ }
++ break;
++
+ case PPCISD::GlobalBaseReg:
+ ReplaceNode(N, getGlobalBaseReg());
+ return;
+Index: llvm/lib/Target/PowerPC/PPCMCInstLower.cpp
+===================================================================
+--- llvm/lib/Target/PowerPC/PPCMCInstLower.cpp
++++ llvm/lib/Target/PowerPC/PPCMCInstLower.cpp
+@@ -107,10 +107,20 @@
+ break;
+ }
+
+- if (MO.getTargetFlags() == PPCII::MO_PLT)
++ if (MO.getTargetFlags() == PPCII::MO_PLT)
+ RefKind = MCSymbolRefExpr::VK_PLT;
+
++ const MachineFunction *MF = MO.getParent()->getParent()->getParent();
++ const PPCSubtarget *Subtarget = &(MF->getSubtarget<PPCSubtarget>());
++ const TargetMachine &TM = Printer.TM;
+ const MCExpr *Expr = MCSymbolRefExpr::create(Symbol, RefKind, Ctx);
++ // -msecure-plt option works only in PIC mode. If secure plt mode
++ // is on add 32768 to symbol.
++ if (Subtarget->isSecurePlt() && TM.isPositionIndependent() &&
++ MO.getTargetFlags() == PPCII::MO_PLT)
++ Expr = MCBinaryExpr::createAdd(Expr,
++ MCConstantExpr::create(32768, Ctx),
++ Ctx);
+
+ if (!MO.isJTI() && MO.getOffset())
+ Expr = MCBinaryExpr::createAdd(Expr,
+Index: llvm/lib/Target/PowerPC/PPCSubtarget.h
+===================================================================
+--- llvm/lib/Target/PowerPC/PPCSubtarget.h
++++ llvm/lib/Target/PowerPC/PPCSubtarget.h
+@@ -133,6 +133,7 @@
+ bool HasFloat128;
+ bool IsISA3_0;
+ bool UseLongCalls;
++ bool SecurePlt;
+
+ POPCNTDKind HasPOPCNTD;
+
+@@ -255,6 +256,7 @@
+ bool hasOnlyMSYNC() const { return HasOnlyMSYNC; }
+ bool isPPC4xx() const { return IsPPC4xx; }
+ bool isPPC6xx() const { return IsPPC6xx; }
++ bool isSecurePlt() const {return SecurePlt; }
+ bool isE500() const { return IsE500; }
+ bool isFeatureMFTB() const { return FeatureMFTB; }
+ bool isDeprecatedDST() const { return DeprecatedDST; }
+Index: llvm/test/CodeGen/PowerPC/ppc32-pic-large.ll
+===================================================================
+--- llvm/test/CodeGen/PowerPC/ppc32-pic-large.ll
++++ llvm/test/CodeGen/PowerPC/ppc32-pic-large.ll
+@@ -1,4 +1,5 @@
+ ; RUN: llc < %s -mtriple=powerpc-unknown-linux-gnu -relocation-model=pic | FileCheck -check-prefix=LARGE-BSS %s
++; RUN: llc < %s -mtriple=powerpc-unknown-linux-gnu -mattr=+secure-plt -relocation-model=pic | FileCheck -check-prefix=LARGE-SECUREPLT %s
+ @bar = common global i32 0, align 4
+
+ declare i32 @call_foo(i32, ...)
+@@ -29,3 +30,6 @@
+ ; LARGE-BSS: [[VREF]]:
+ ; LARGE-BSS-NEXT: .p2align 2
+ ; LARGE-BSS-NEXT: .long bar
++; LARGE-SECUREPLT: addis 30, 30, .LTOC-.L0$pb@ha
++; LARGE-SECUREPLT: addi 30, 30, .LTOC-.L0$pb@l
++; LARGE-SECUREPLT: bl call_foo@PLT+32768
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
new file mode 100644
index 000000000..a7e0c4768
--- /dev/null
+++ b/user/lsof/APKBUILD
@@ -0,0 +1,63 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=lsof
+pkgver=4.91
+pkgrel=0
+pkgdesc="LiSt Open Files"
+url="https://people.freebsd.org/~abe"
+arch="all"
+license="zlib-acknowledgement"
+subpackages="$pkgname-doc"
+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
+ test-linux-sysmacros.patch
+ test-disable-nfs-test.patch"
+builddir="$srcdir/${pkgname}_${pkgver}"
+
+unpack() {
+ default_unpack
+ cd "$builddir"
+ tar xf "${pkgname}_${pkgver}_src.tar"
+}
+
+prepare() {
+ default_prepare
+ cd "$builddir/${pkgname}_${pkgver}_src"
+
+ sed -i "s|/\* #define\tHASSECURITY\t1 \*/|#define\tHASSECURITY\t1|" \
+ dialects/linux/machine.h
+ sed -n 6,30p lsof.h > COPYING
+}
+
+build () {
+ cd "$builddir/${pkgname}_${pkgver}_src"
+
+ ./Configure -n linux
+ make
+}
+
+check() {
+ cd "$builddir/${pkgname}_${pkgver}_src/tests"
+
+ # The LTsock test will fail if /etc/hosts is not set correctly.
+ # Make sure that 127.0.0.1 and ::1 have aliases corresponding to
+ # `hostname`.
+ printf "y" | make
+ make opt
+}
+
+package() {
+ cd "$builddir/${pkgname}_${pkgver}_src"
+
+ install -Dm755 lsof "$pkgdir/usr/bin/lsof"
+ install -Dm644 lsof.8 "$pkgdir/usr/share/man/man8/lsof.8"
+ install -Dm644 COPYING "$pkgdir/usr/share/licenses/lsof/COPYING"
+}
+
+sha512sums="95937afda1ba58e6636b2a2661d819480ec42b4beafc0e69e6132d7fdffd4e3974a95036a02c6fd8baf92089c73ac969cdc00a297bf0249257867d695bff2f94 lsof_4.91.tar.gz
+dfbfcfd41a4bccf3335ed01cc2dc9a11b6badd3149878d89ef5fed322a914d3d8341c68783140a4973d007907ce54b4438f011c26289df9e27d2d487a8f6b0b0 utmps.patch
+34d9573f90d942c717e3f3ff17283a66981c4a2e8e886746b591f980142d66115bc7afe6bdd0fc660ea6c1b42f591b161b9535e5849b8757e79546c197ccfdda test-linux-sysmacros.patch
+7f3e9b2850af54a5391db6a8f7eaa22329217fd559d3d41ee3bcd33b07b3526d17da75a542d28b013111bc5d5712a718e961aa4fe84ca3c5e73a97e0518ba2ec test-enable-suite.patch
+d299e2070415168f75a9ee6424e18c1496f6d1fd5430b13a92159422c9df58050ac63e22cebd13a5228207f5960cf2cde5830a46c9ec7a4c216f5e6fb71887f4 test-disable-nfs-test.patch"
diff --git a/user/lsof/test-disable-nfs-test.patch b/user/lsof/test-disable-nfs-test.patch
new file mode 100644
index 000000000..9ccb11cf9
--- /dev/null
+++ b/user/lsof/test-disable-nfs-test.patch
@@ -0,0 +1,13 @@
+LTnfs requires a NFS filesystem in order to run.
+
+--- lsof_4.91/lsof_4.91_src/tests/Makefile 2006-01-10 13:27:52.000000000 -0500
++++ lsof_4.91/lsof_4.91_src/tests/Makefile 2018-09-12 18:27:52.309560442 -0400
+@@ -19,7 +19,7 @@
+
+ BASTST= LTbasic
+ STDTST= LTnlink LTsock LTszoff LTunix
+-OPTTST= LTbigf LTdnlc LTlock LTnfs
++OPTTST= LTbigf LTdnlc LTlock
+
+ all: ${CKTSTDB} ${BASTST} ${STDTST} FRC
+ @./${CKTSTDB}; xv=$$?; \
diff --git a/user/lsof/test-enable-suite.patch b/user/lsof/test-enable-suite.patch
new file mode 100644
index 000000000..7601aa9c0
--- /dev/null
+++ b/user/lsof/test-enable-suite.patch
@@ -0,0 +1,9 @@
+--- lsof_4.91/lsof_4.91_src/tests/CkTestDB 2010-02-12 15:37:05.000000000 -0500
++++ lsof_4.91/lsof_4.91_src/tests/CkTestDB 2018-09-12 18:22:36.179562676 -0400
+@@ -67,6 +68,5 @@
+ echo ""
+- exit 1
+ fi
+
+ # Establish trap and stty handling.
+
diff --git a/user/lsof/test-linux-sysmacros.patch b/user/lsof/test-linux-sysmacros.patch
new file mode 100644
index 000000000..bc75a9f39
--- /dev/null
+++ b/user/lsof/test-linux-sysmacros.patch
@@ -0,0 +1,15 @@
+--- lsof_4.91/lsof_4.91_src/tests/LTlib.c 2017-09-10 19:05:11.000000000 -0400
++++ lsof_4.91/lsof_4.91_src/tests/LTlib.c 2018-09-12 18:05:26.719569950 -0400
+@@ -189,6 +189,12 @@
+ #endif /* defined(LT_DIAL_uw) */
+
+
++#if defined(__linux__)
++#undef _SYS_SYSMACROS_H
++#include <sys/sysmacros.h>
++#endif
++
++
+ /*
+ * Global variables
+ */
diff --git a/user/lsof/utmps.patch b/user/lsof/utmps.patch
new file mode 100644
index 000000000..91324e28e
--- /dev/null
+++ b/user/lsof/utmps.patch
@@ -0,0 +1,15 @@
+--- lsof_4.91/lsof_4.91_src/Configure 2018-02-14 09:18:55.000000000 -0500
++++ lsof_4.91/lsof_4.91_src/Configure 2018-09-12 17:48:25.269577168 -0400
+@@ -2943,6 +2943,12 @@
+ LSOF_CFGF="$LSOF_CFGF -DHASIPv6"
+ fi # }
+
++ if test -r ${LSOF_INCLUDE}/utmpx.h # {
++ then
++ LSOF_CFGF="$LSOF_CFGF -DHASUTMPX"
++ LSOF_CFGL="$LSOF_CFGL -lutmps -lskarnet"
++ fi # }
++
+ # Test for <rpc/rpc.h>.
+
+ if ! test -r ${LSOF_INCLUDE}/rpc/rpc.h # {
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-lgi/APKBUILD b/user/lua-lgi/APKBUILD
new file mode 100644
index 000000000..f9b07ca3b
--- /dev/null
+++ b/user/lua-lgi/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=lua-lgi
+pkgver=0.9.2
+pkgrel=0
+pkgdesc="Dynamic Lua binding to GObject libraries using GObject-Introspection"
+url="https://github.com/pavouk/lgi"
+arch="all"
+license="MIT"
+options="!check" # checks require dbus
+depends=""
+makedepends="glib-dev gobject-introspection-dev libffi-dev lua5.3-dev"
+subpackages="$pkgname-doc"
+source="lgi-$pkgver.tar.gz::https://github.com/pavouk/lgi/archive/$pkgver.tar.gz"
+builddir="$srcdir"/lgi-$pkgver
+
+build() {
+ cd "$builddir"
+ make PREFIX=/usr LUA_VERSION="5.3" \
+ LUA_CFLAGS="$(pkg-config --cflags lua)"
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make install PREFIX=/usr LUA_VERSION="5.3" DESTDIR="$pkgdir"
+
+ mkdir -p "$pkgdir"/usr/share/doc/lua-lgi
+ cp -r docs/* samples "$pkgdir"/usr/share/doc/lua-lgi/
+}
+
+sha512sums="755a96b78530f42da6d4e2664f8e37cb07a356419e7e6448003c3f841c9d98ad18b851715d9eb203ea7eb27b13ec46223fa8a1c90a99fd12960ce85b0a695335 lgi-0.9.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/mesa-demos/APKBUILD b/user/mesa-demos/APKBUILD
new file mode 100644
index 000000000..f89083ae4
--- /dev/null
+++ b/user/mesa-demos/APKBUILD
@@ -0,0 +1,30 @@
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=mesa-demos
+pkgver=8.4.0
+pkgrel=0
+pkgdesc="Mesa demos and utils"
+url="http://mesa3d.org"
+arch="all"
+license="X11"
+options="!check" # No testsuite
+makedepends="mesa-dev glew-dev glu-dev freeglut-dev freetype-dev libtool"
+source="ftp://ftp.freedesktop.org/pub/mesa/demos/$pkgname-$pkgver.tar.bz2"
+
+build() {
+ cd "$builddir"
+ export LDFLAGS="$LDFLAGS -Wl,-z,lazy"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr
+ make V=1
+}
+
+package() {
+ cd "$builddir"
+ make -j1 DESTDIR="$pkgdir" install
+}
+
+sha512sums="b72d03cad36e0535ff18dcfb222ec4200064b9264f6da51a6e5f03b0dd912abe188bc1d600b6698de3ce6f63b28d2ce01565886ca8e7079edc4967fbf2fb0957 mesa-demos-8.4.0.tar.bz2"
diff --git a/user/mesa/APKBUILD b/user/mesa/APKBUILD
index c0ba61046..418e9e361 100644
--- a/user/mesa/APKBUILD
+++ b/user/mesa/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=mesa
-pkgver=18.1.7
+pkgver=18.1.8
pkgrel=0
pkgdesc="Mesa DRI OpenGL library"
url="https://www.mesa3d.org"
@@ -17,7 +17,7 @@ subpackages="$pkgname-dev
$pkgname-xatracker $pkgname-osmesa $pkgname-gbm
$pkgname-libwayland-egl:_wayland
"
-_llvmver=4
+_llvmver=6
depends_dev="libdrm-dev dri2proto libxext-dev libxdamage-dev libxcb-dev glproto
dri3proto presentproto libxshmfence-dev"
makedepends="$depends_dev expat-dev xextproto libxt-dev makedepend py3-mako
@@ -245,7 +245,7 @@ _wayland() {
|| return 1
}
-sha512sums="697c4f441ae52bc867d9d73b103094a29102168c248a502c4ea0fc48f51bcb86b2e741da39e882f24131326d460cdb1416415604c6994d1b8c09fb8a153a5c77 mesa-18.1.7.tar.xz
+sha512sums="ab89c6d27b765d3efdf61b24dc56d863ae590d83003d2eae4bfe25ecfbeda5bee0227f21d057523bb4eceeaf3d9955df48087ffb472c41b123c100e593056cb9 mesa-18.1.8.tar.xz
c3d4804ebc24c7216e4c9d4995fb92e116be7f478024b44808ee134a4c93bb51d1f66fe5fb6eca254f124c4abf6f81272b027824b3e2650a9607818bf793035a glx_ro_text_segm.patch
9f7a050f09571a2b17098d495b82e2e85b293fb7285e7d6d7c3c48cd4220a1bdcc61a7321ba78dd14860939ecabe7e89b32d6110f3728f793273e1e26b78a553 musl-fixes.patch
c7d91a660a033df91fac9c557039efc8669f0c26b2d35997d50753938b70d1af0bd110dcab3f8236eafab7d4be5dd7cd128a3e057e67e7e6a38a73fd6a7ef62e musl-fix-includes.patch
diff --git a/user/meson/APKBUILD b/user/meson/APKBUILD
index 86a2fdf48..05bf48dcc 100644
--- a/user/meson/APKBUILD
+++ b/user/meson/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Maintainer:
pkgname=meson
-pkgver=0.47.0
+pkgver=0.47.2
pkgrel=0
pkgdesc="Fast, user-friendly build system"
url="http://mesonbuild.com/"
@@ -27,4 +27,4 @@ package() {
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="844047ad184f60395c4b6dc61b8fb0f321722d19a8647b48cb3f05fda9ba57516bdcc2244d5bc9de74f2834d092235553faccde6172edaeb3c2d14ff633bc513 meson-0.47.0.tar.gz"
+sha512sums="a1ac5691a5319ccf196d9443aea61e6c3ee9f09a9f638a3a7b5e5381b4c14372253c845be74fa2b59f42b9697671f12bce92c46bcb5cb629aeebd68e044e0021 meson-0.47.2.tar.gz"
diff --git a/user/minicom/APKBUILD b/user/minicom/APKBUILD
new file mode 100644
index 000000000..d597290e8
--- /dev/null
+++ b/user/minicom/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=minicom
+pkgver=2.7.1
+pkgrel=0
+pkgdesc="menu driven communications program for terminals"
+url="https://fossies.org/linux/minicom/"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="ncurses-dev gettext-tiny-dev linux-headers"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://fossies.org/linux/misc/$pkgname-$pkgver.tar.gz
+ fix-includes.patch"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="b429b32d187c3ee915c5074a0d0f08b7e3951cb8528ecbdd889837ff301662c16740ad77bd2bf3baf759c0a84e779a8dc8fd888a4260a0ace15ebc4c2f697c82 minicom-2.7.1.tar.gz
+5acff3efb0b8b02333291722044d7c473bf19eec8a26e66c0e0f41895f3e3f071dff13515ec20f7ce17368732e3674f0a42b38602e61b04e9cd70e61012641ff fix-includes.patch"
diff --git a/user/minicom/fix-includes.patch b/user/minicom/fix-includes.patch
new file mode 100644
index 000000000..19a18dcdb
--- /dev/null
+++ b/user/minicom/fix-includes.patch
@@ -0,0 +1,24 @@
+--- minicom-2.6.2.orig/src/dial.c
++++ minicom-2.6.2/src/dial.c
+@@ -39,11 +39,9 @@
+ #include "intl.h"
+
+ #ifdef VC_MUSIC
+-# if defined(__GLIBC__)
+ # include <sys/ioctl.h>
+ # include <sys/kd.h>
+ # include <sys/time.h>
+-# endif
+ #endif
+
+ enum { CURRENT_VERSION = 6 };
+--- minicom-2.6.2.orig/src/getsdir.h
++++ minicom-2.6.2/src/getsdir.h
+@@ -22,6 +22,7 @@
+ * and licensing conditions. See the source, Luke.
+ */
+
++#include <sys/param.h>
+ #include <dirent.h>
+
+ typedef struct dirEntry { /* structure of data item */
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/mosh/APKBUILD b/user/mosh/APKBUILD
new file mode 100644
index 000000000..323891e69
--- /dev/null
+++ b/user/mosh/APKBUILD
@@ -0,0 +1,78 @@
+# Contributor: Francesco Colista <fcolista@alpinelinux.org>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=mosh
+pkgver=1.3.2
+pkgrel=0
+pkgdesc="Mobile shell surviving disconnects with local echo and line editing"
+url="https://mosh.org"
+arch="all"
+license="GPL-3.0+"
+depends="$pkgname-client $pkgname-server"
+checkdepends="tmux perl"
+makedepends="ncurses-dev zlib-dev openssl-dev perl-dev perl-io-tty
+ protobuf-dev automake autoconf libtool gzip"
+subpackages="$pkgname-doc $pkgname-client $pkgname-server
+ $pkgname-bash-completion:bashcomp:noarch"
+source="https://mosh.org/$pkgname-$pkgver.tar.gz
+ fix-ppc64le-build-with-musl.patch"
+
+prepare() {
+ default_prepare
+ # Test unicode-later-combining is failing. Ideally we want to fix it.
+ sed -i '/unicode-later-combining.test/d' "$builddir"/src/tests/Makefile.am
+ cd "$builddir"
+ ./autogen.sh
+}
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --enable-examples
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check VERBOSE=1 V=1
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+bashcomp() {
+ depends=""
+ pkgdesc="Bash completions for $pkgname"
+ install_if="$pkgname=$pkgver-r$pkgrel bash-completion"
+
+ install -Dm644 "$builddir"/conf/bash-completion/completions/mosh \
+ "$subpkgdir"/usr/share/bash-completion/completions/$pkgname
+}
+
+server() {
+ replaces="mosh"
+ pkgdesc="Mosh server"
+ depends=""
+ mkdir -p "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/mosh-server \
+ "$subpkgdir"/usr/bin/
+}
+
+client() {
+ replaces="mosh"
+ pkgdesc="Mosh client"
+ depends="openssh-client perl-io-tty"
+ mkdir -p "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/mosh-client \
+ "$subpkgdir"/usr/bin/
+}
+
+sha512sums="f400e8fe7ba2ab7362311fc12a00ec69587505f901988aeee500fc68d38a388218500a3f602111c883ff23a9d43572114fcf0a8bf505df203691e5b597615769 mosh-1.3.2.tar.gz
+a276dde98a2dab63ad9c9c05468c55983a95f482878c5694713810b561eae1ea5618efc72431a17ee5b5014b12ee9709c6a8cbf582620294e7888cc837cd073c fix-ppc64le-build-with-musl.patch"
diff --git a/user/mosh/fix-ppc64le-build-with-musl.patch b/user/mosh/fix-ppc64le-build-with-musl.patch
new file mode 100644
index 000000000..8d918a963
--- /dev/null
+++ b/user/mosh/fix-ppc64le-build-with-musl.patch
@@ -0,0 +1,53 @@
+From: Roberto Oliveira <robertoguimaraes8@gmail.com>
+Date: Tue, 4 Apr 2017 16:46:50 +0000
+Subject: [PATCH] Fix build with musl on ppc64le
+
+mosh was breaking when building in ppc64le using musl, because ioctl() is defined
+as ioctl(int, int) in musl and mosh is using TIOCSWINSZ macro as parameter. This was
+triggering a gcc warning and make the build fail.
+
+This patch does an explicit integer conversion in TIOCSWINSZ, as no bits get
+lost.
+
+--- a/src/frontend/mosh-server.cc
++++ b/src/frontend/mosh-server.cc
+@@ -714,7 +714,12 @@
+ }
+ window_size.ws_col = res->width;
+ window_size.ws_row = res->height;
+- if ( ioctl( host_fd, TIOCSWINSZ, &window_size ) < 0 ) {
++
++ #if defined(__powerpc64__) && (!defined(__GLIBC__) && !defined(__UCLIBC__))
++ if ( ioctl( host_fd, (int) TIOCSWINSZ, &window_size ) < 0 ) {
++ #else
++ if ( ioctl( host_fd, TIOCSWINSZ, &window_size ) < 0 ) {
++ #endif
+ perror( "ioctl TIOCSWINSZ" );
+ network.start_shutdown();
+ }
+--- a/src/examples/termemu.cc
++++ a/src/examples/termemu.cc
+@@ -226,7 +226,11 @@
+ }
+
+ /* tell child process */
++ #if defined(__powerpc64__) && (!defined(__GLIBC__) && !defined(__UCLIBC__))
++ if ( ioctl( fd, (int) TIOCSWINSZ, &window_size ) < 0 ) {
++ #else
+ if ( ioctl( fd, TIOCSWINSZ, &window_size ) < 0 ) {
++ #endif
+ perror( "ioctl TIOCSWINSZ" );
+ return;
+ }
+@@ -306,7 +310,11 @@
+ complete.act( &r );
+
+ /* tell child process */
++ #if defined(__powerpc64__) && (!defined(__GLIBC__) && !defined(__UCLIBC__))
++ if ( ioctl( fd, (int) TIOCSWINSZ, &window_size ) < 0 ) {
++ #else
+ if ( ioctl( fd, TIOCSWINSZ, &window_size ) < 0 ) {
++ #endif
+ perror( "ioctl TIOCSWINSZ" );
+ return;
+ }
diff --git a/user/mousepad/APKBUILD b/user/mousepad/APKBUILD
new file mode 100644
index 000000000..7b848ad28
--- /dev/null
+++ b/user/mousepad/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=mousepad
+pkgver=0.4.1
+pkgrel=0
+pkgdesc="Simple text editor for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="GPL-2.0+"
+makedepends="intltool glib-dev gtk+3.0-dev gtksourceview-3.0-dev dbus-glib-dev"
+subpackages="$pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/apps/mousepad/0.4/mousepad-$pkgver.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./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="2ffbb4245a3344437bd41f9f28cc066ae45062f6b6d169aa274e933f033c434f0b10845ccf42ab846dcad25ae7cee36ea6619bfb6889e8cd41c994be87b77be8 mousepad-0.4.1.tar.bz2"
diff --git a/user/mpv/APKBUILD b/user/mpv/APKBUILD
index d0a4e37b1..a579ecc5a 100644
--- a/user/mpv/APKBUILD
+++ b/user/mpv/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=mpv
-pkgver=0.29.0
+pkgver=0.29.1
pkgrel=0
pkgdesc="An improved fork of mplayer"
url="https://mpv.io"
@@ -21,7 +21,6 @@ makedepends="python3
"
subpackages="$pkgname-doc"
source="mpv-$pkgver.tar.gz::https://github.com/mpv-player/mpv/archive/v$pkgver.tar.gz"
-sha512sums="77204218bd217ae1da4812b09e0509965a3ef102d3de5cd4360f007ccf3779e4cbde5cfd6adae9629ea39062bd365e847429bdf7f9a1ddebd0a67d267492b221 mpv-0.29.0.tar.gz"
build() {
cd "$builddir"
@@ -46,3 +45,4 @@ package() {
python3 ./waf install --destdir="$pkgdir"
}
+sha512sums="ec57c9ceaaf2915ee237dd5a1c5ea5d22725d8611e28a9b998e5bb0d8ab5bdf3631d0267fc7b54da31cb1eaa145ef35841e68846bd41c3b9e1024902e92fd086 mpv-0.29.1.tar.gz"
diff --git a/user/nano/APKBUILD b/user/nano/APKBUILD
index eae0a12fe..45583d16a 100644
--- a/user/nano/APKBUILD
+++ b/user/nano/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Michael Mason <ms13sp@gmail.com>
-# Maintainer:
+# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=nano
-pkgver=2.9.8
+pkgver=3.1
pkgrel=0
pkgdesc="Enhanced clone of the Pico text editor"
url="https://www.nano-editor.org"
@@ -44,4 +44,4 @@ package() {
rm -rf "$pkgdir"/usr/lib/charset.alias
}
-sha512sums="9a8230bb1312be4e7f44c5fb42c32d773dd4e488d41980c5aee1de0f9b5642b938a940649f3b5bfb848625c0c258ea15333cad861b5a368e3746f1f396df452b nano-2.9.8.tar.xz"
+sha512sums="dc50381a129fec32d85982d8129324268e3e27a28c5b958fb7bcfca690646bd0a3b995dc456971355b91952c0ac3ea3e0a873b228010238a76e8dbb0ddaf1143 nano-3.1.tar.xz"
diff --git a/user/ncftp/APKBUILD b/user/ncftp/APKBUILD
new file mode 100644
index 000000000..1a9b5fce4
--- /dev/null
+++ b/user/ncftp/APKBUILD
@@ -0,0 +1,46 @@
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=ncftp
+pkgver=3.2.6
+pkgrel=0
+pkgdesc="A set of free application programs implementing FTP"
+url="http://www.ncftp.com/"
+arch="all"
+options="!check" # No test suite.
+license="ClArtistic"
+makedepends="ncurses-dev"
+source="ftp://ftp.ncftp.com/ncftp/$pkgname-$pkgver-src.tar.gz"
+subpackages="$pkgname-doc $pkgname-bookmarks"
+
+build () {
+ cd "$builddir"
+
+ LIBS="-ltinfo" ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man
+
+ cd "$builddir"/libncftp
+ make shared
+ cd "$builddir"
+ make
+}
+
+package() {
+ cd "$builddir"/libncftp
+ make PREFIX="${pkgdir}"/usr soinstall
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ install -D doc/LICENSE.txt \
+ "$pkgdir"/usr/share/licenses/"$pkgname"/LICENSE
+}
+
+bookmarks () {
+ mkdir -p "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/ncftpbookmarks \
+ "$subpkgdir"/usr/bin/
+}
+
+sha512sums="a2f8ac555bee8af4be1aa745ce5838beee99cd2253c1fe701b710ec135d7c47e2bf8b22ec928975ec2460919977d45a07fb12185ab58a2e96e3092039ffd3303 ncftp-3.2.6-src.tar.gz"
diff --git a/user/net-snmp/APKBUILD b/user/net-snmp/APKBUILD
index 333cb8a69..9f083a732 100644
--- a/user/net-snmp/APKBUILD
+++ b/user/net-snmp/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer:
pkgname=net-snmp
-pkgver=5.7.3
-pkgrel=11
+pkgver=5.8
+pkgrel=0
pkgdesc="Simple Network Management Protocol"
url="http://www.net-snmp.org/"
arch="all"
@@ -12,15 +12,13 @@ depends=""
depends_dev="openssl-dev"
# we need perl-net-snmp in make depends for bootstrapping issues
# net-snmp-gui subpackage has perl-net-snmp as depends
-makedepends="file linux-headers openssl-dev perl-dev perl-net-snmp utmps-dev"
+makedepends="file linux-headers ncurses-dev openssl-dev perl-dev perl-net-snmp
+ utmps-dev"
subpackages="$pkgname-doc $pkgname-dev $pkgname-libs $pkgname-agent-libs:alibs
$pkgname-openrc $pkgname-perl:pl $pkgname-gui $pkgname-tools"
source="https://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz
netsnmp-swinst-crash.patch
fix-includes.patch
- CVE-2015-5621.patch
- remove-U64-typedef.patch
- fix-Makefile-PL.patch
snmpd.initd
snmpd.confd
@@ -40,7 +38,7 @@ build() {
export lt_cv_sys_max_cmd_len=8192
- ./configure \
+ LIBS="-ltinfow" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -140,12 +138,9 @@ tools() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr
}
-sha512sums="0758bba5844cfd6c80959ac16b83906a2f830ba49fd0ab1bf9e191dc6a79d312a2e4760bd53b3e1a1c82759481f0064d088d5a3cf475d84b25679a6bd0f049bb net-snmp-5.7.3.tar.gz
+sha512sums="27895a583b23f3e14c48562bc32f3ba83513d81aa848e878be9a3650f0458d45950635c937ef627135f80b757b663e71fab9a3bde4fd91889153998ae3468fe7 net-snmp-5.8.tar.gz
4ad92f50b14d5e27ba86256cc532a2dd055502f4d5fbb1700434f9f01f881fd09bb1eadb94e727554e1470f036707558314c64a66d0376b54e71ab31d5e4baa3 netsnmp-swinst-crash.patch
87a552bd2e41684bba6e87fbcf6454a85ee912d7a339411fda24cebddf7661f0856729e076a917920a542cf84b687ffd90a091daa15f2c48f0ff64f3a53c0ddb fix-includes.patch
-2b2a7be54a570e3c1bb701f8ccfb98ea8e50a19fda021f43a521d4e968ded1bc5e794fc4348dff7fcdf57da34ff6b555398851bbccfcf92bb75ad6f365a80dba CVE-2015-5621.patch
-25e45c493b8da74cb12a8094d12a4f0ee1f59b60df648a958ebc7b0a33b4f350d9c5bf1e6f6ff372d78e066c369d99f2ae549b5d5d1daa969e3ef301fc820c29 remove-U64-typedef.patch
-d17058976fd635f153ff2e5d798807dde4d89071c252ea1223d93cc169270bb39cdd2c84ee4d01c05c9a0b6df80b92ceae3e1078e41f94e6077d7275661898e9 fix-Makefile-PL.patch
896ef65a6f420073746470cdbd0de8f356c5b936d35e131754905b3d4323c24dcd3a09e0cc8bd90b12e3402f01e478f927f0e4163cb85cb0cc03db3c2e0491f4 snmpd.initd
fb101aa758d741ed3ea88b11f1cd49cfd04bd03ce62435f3acb17724748131c57f00b71fd45cb7e7871d65a1aab576652cd6e158b6406aa6d0998582b8235ef5 snmpd.confd
073fd2b83eedd6eda1f7345350268ce7946ef6d67a8f26f7c232e46feb75babf68272ae12071a2f9ea76ede71393b3ae4672d3cd47cfd14ab77e3a6482f2e124 snmptrapd.confd"
diff --git a/user/net-snmp/CVE-2015-5621.patch b/user/net-snmp/CVE-2015-5621.patch
deleted file mode 100644
index 6d30f99ee..000000000
--- a/user/net-snmp/CVE-2015-5621.patch
+++ /dev/null
@@ -1,132 +0,0 @@
-From 3714c5be3212d2af61545439eeb432e5d84a8d39 Mon Sep 17 00:00:00 2001
-From: Robert Story <rstory@localhost>
-Date: Sat, 11 Apr 2015 18:49:02 -0400
-Subject: [PATCH] CHANGES: BUG: #2615: Don't return incompletely parsed
- varbinds
-
----
- snmplib/snmp_api.c | 55 +++++++++++++++++++++++++++---------------------------
- 1 file changed, 28 insertions(+), 27 deletions(-)
-
-diff --git a/snmplib/snmp_api.c b/snmplib/snmp_api.c
-index 191debf..adae4e4 100644
---- a/snmplib/snmp_api.c
-+++ b/snmplib/snmp_api.c
-@@ -4350,10 +4350,9 @@ snmp_pdu_parse(netsnmp_pdu *pdu, u_char * data, size_t * length)
- u_char type;
- u_char msg_type;
- u_char *var_val;
-- int badtype = 0;
- size_t len;
- size_t four;
-- netsnmp_variable_list *vp = NULL;
-+ netsnmp_variable_list *vp = NULL, *vplast = NULL;
- oid objid[MAX_OID_LEN];
- u_char *p;
-
-@@ -4493,38 +4492,24 @@ snmp_pdu_parse(netsnmp_pdu *pdu, u_char * data, size_t * length)
- (ASN_SEQUENCE | ASN_CONSTRUCTOR),
- "varbinds");
- if (data == NULL)
-- return -1;
-+ goto fail;
-
- /*
- * get each varBind sequence
- */
- while ((int) *length > 0) {
-- netsnmp_variable_list *vptemp;
-- vptemp = (netsnmp_variable_list *) malloc(sizeof(*vptemp));
-- if (NULL == vptemp) {
-- return -1;
-- }
-- if (NULL == vp) {
-- pdu->variables = vptemp;
-- } else {
-- vp->next_variable = vptemp;
-- }
-- vp = vptemp;
-+ vp = SNMP_MALLOC_TYPEDEF(netsnmp_variable_list);
-+ if (NULL == vp)
-+ goto fail;
-
-- vp->next_variable = NULL;
-- vp->val.string = NULL;
- vp->name_length = MAX_OID_LEN;
-- vp->name = NULL;
-- vp->index = 0;
-- vp->data = NULL;
-- vp->dataFreeHook = NULL;
- DEBUGDUMPSECTION("recv", "VarBind");
- data = snmp_parse_var_op(data, objid, &vp->name_length, &vp->type,
- &vp->val_len, &var_val, length);
- if (data == NULL)
-- return -1;
-+ goto fail;
- if (snmp_set_var_objid(vp, objid, vp->name_length))
-- return -1;
-+ goto fail;
-
- len = MAX_PACKET_LENGTH;
- DEBUGDUMPHEADER("recv", "Value");
-@@ -4604,7 +4589,7 @@ snmp_pdu_parse(netsnmp_pdu *pdu, u_char * data, size_t * length)
- vp->val.string = (u_char *) malloc(vp->val_len);
- }
- if (vp->val.string == NULL) {
-- return -1;
-+ goto fail;
- }
- p = asn_parse_string(var_val, &len, &vp->type, vp->val.string,
- &vp->val_len);
-@@ -4619,7 +4604,7 @@ snmp_pdu_parse(netsnmp_pdu *pdu, u_char * data, size_t * length)
- vp->val_len *= sizeof(oid);
- vp->val.objid = (oid *) malloc(vp->val_len);
- if (vp->val.objid == NULL) {
-- return -1;
-+ goto fail;
- }
- memmove(vp->val.objid, objid, vp->val_len);
- break;
-@@ -4631,7 +4616,7 @@ snmp_pdu_parse(netsnmp_pdu *pdu, u_char * data, size_t * length)
- case ASN_BIT_STR:
- vp->val.bitstring = (u_char *) malloc(vp->val_len);
- if (vp->val.bitstring == NULL) {
-- return -1;
-+ goto fail;
- }
- p = asn_parse_bitstring(var_val, &len, &vp->type,
- vp->val.bitstring, &vp->val_len);
-@@ -4640,12 +4625,28 @@ snmp_pdu_parse(netsnmp_pdu *pdu, u_char * data, size_t * length)
- break;
- default:
- snmp_log(LOG_ERR, "bad type returned (%x)\n", vp->type);
-- badtype = -1;
-+ goto fail;
- break;
- }
- DEBUGINDENTADD(-4);
-+
-+ if (NULL == vplast) {
-+ pdu->variables = vp;
-+ } else {
-+ vplast->next_variable = vp;
-+ }
-+ vplast = vp;
-+ vp = NULL;
- }
-- return badtype;
-+ return 0;
-+
-+ fail:
-+ DEBUGMSGTL(("recv", "error while parsing VarBindList\n"));
-+ /** if we were parsing a var, remove it from the pdu and free it */
-+ if (vp)
-+ snmp_free_var(vp);
-+
-+ return -1;
- }
-
- /*
---
-2.5.0
-
diff --git a/user/net-snmp/fix-Makefile-PL.patch b/user/net-snmp/fix-Makefile-PL.patch
deleted file mode 100644
index 735f01447..000000000
--- a/user/net-snmp/fix-Makefile-PL.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff -up net-snmp-5.7.3/perl/ASN/Makefile.PL.orig net-snmp-5.7.3/perl/ASN/Makefile.PL
---- net-snmp-5.7.3/perl/ASN/Makefile.PL.orig 2016-05-06 10:35:30.005905040 +0200
-+++ net-snmp-5.7.3/perl/ASN/Makefile.PL 2016-05-06 10:35:57.518776400 +0200
-@@ -3,6 +3,7 @@ require 5;
- use Config;
- use Getopt::Long;
- my $lib_version;
-+my %MakeParams = ();
-
- # See lib/ExtUtils/MakeMaker.pm for details of how to influence
- # the contents of the Makefile that is written.
-diff -up net-snmp-5.7.3/perl/Makefile.PL.orig net-snmp-5.7.3/perl/Makefile.PL
---- net-snmp-5.7.3/perl/Makefile.PL.orig 2016-05-06 10:34:38.975143641 +0200
-+++ net-snmp-5.7.3/perl/Makefile.PL 2016-05-06 10:35:13.326983024 +0200
-@@ -2,6 +2,7 @@ use ExtUtils::MakeMaker;
- use Config;
- use Getopt::Long;
- require 5;
-+my %MakeParams = ();
-
- %MakeParams = InitMakeParams();
-
diff --git a/user/net-snmp/remove-U64-typedef.patch b/user/net-snmp/remove-U64-typedef.patch
deleted file mode 100644
index 51d7a369c..000000000
--- a/user/net-snmp/remove-U64-typedef.patch
+++ /dev/null
@@ -1,2519 +0,0 @@
-From 477b4307ef12ddce3b6a9205e0bdddbfb2e0e9b6 Mon Sep 17 00:00:00 2001
-From: Bart Van Assche <bvanassche@acm.org>
-Date: Sat, 20 Feb 2016 18:58:18 -0800
-Subject: [PATCH] Remove U64 typedef
-
-The U64 typedef conflicts with a typedef in a Perl header file. Hence
-remove the U64 typedef from the Net-SNMP header files. This patch does
-not modify the Net-SNMP ABI.
----
- agent/mibgroup/if-mib/ifXTable/ifXTable.c | 16 +-
- agent/mibgroup/if-mib/ifXTable/ifXTable.h | 48 +-
- .../mibgroup/if-mib/ifXTable/ifXTable_interface.c | 32 +-
- .../ip-mib/data_access/systemstats_common.c | 2 +-
- .../ipIfStatsTable/ipIfStatsTable_data_get.c | 28 +-
- .../ipIfStatsTable/ipIfStatsTable_data_get.h | 28 +-
- .../ipIfStatsTable/ipIfStatsTable_interface.c | 56 +-
- .../ip-mib/ipSystemStatsTable/ipSystemStatsTable.c | 28 +-
- .../ip-mib/ipSystemStatsTable/ipSystemStatsTable.h | 921 ++-------------------
- .../ipSystemStatsTable_interface.c | 56 +-
- include/net-snmp/data_access/ipstats.h | 42 +-
- include/net-snmp/library/int64.h | 34 +-
- snmplib/int64.c | 38 +-
- snmplib/read_config.c | 6 +-
- testing/fulltests/unit-tests/T015int64_clib.c | 10 +-
- 15 files changed, 274 insertions(+), 1071 deletions(-)
-
-diff --git a/agent/mibgroup/if-mib/ifXTable/ifXTable.c b/agent/mibgroup/if-mib/ifXTable/ifXTable.c
-index bb3e736..0c952ba 100644
---- a/agent/mibgroup/if-mib/ifXTable/ifXTable.c
-+++ b/agent/mibgroup/if-mib/ifXTable/ifXTable.c
-@@ -722,7 +722,7 @@ The total number of octets received on the interface,
- */
- int
- ifHCInOctets_get(ifXTable_rowreq_ctx * rowreq_ctx,
-- U64 * ifHCInOctets_val_ptr)
-+ struct counter64 *ifHCInOctets_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ifHCInOctets_val_ptr);
-@@ -779,7 +779,7 @@ The number of packets, delivered by this sub-layer to a
- */
- int
- ifHCInUcastPkts_get(ifXTable_rowreq_ctx * rowreq_ctx,
-- U64 * ifHCInUcastPkts_val_ptr)
-+ struct counter64 *ifHCInUcastPkts_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ifHCInUcastPkts_val_ptr);
-@@ -838,7 +838,7 @@ The number of packets, delivered by this sub-layer to a
- */
- int
- ifHCInMulticastPkts_get(ifXTable_rowreq_ctx * rowreq_ctx,
-- U64 * ifHCInMulticastPkts_val_ptr)
-+ struct counter64 *ifHCInMulticastPkts_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ifHCInMulticastPkts_val_ptr);
-@@ -897,7 +897,7 @@ The number of packets, delivered by this sub-layer to a
- */
- int
- ifHCInBroadcastPkts_get(ifXTable_rowreq_ctx * rowreq_ctx,
-- U64 * ifHCInBroadcastPkts_val_ptr)
-+ struct counter64 *ifHCInBroadcastPkts_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ifHCInBroadcastPkts_val_ptr);
-@@ -955,7 +955,7 @@ The total number of octets transmitted out of the
- */
- int
- ifHCOutOctets_get(ifXTable_rowreq_ctx * rowreq_ctx,
-- U64 * ifHCOutOctets_val_ptr)
-+ struct counter64 *ifHCOutOctets_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ifHCOutOctets_val_ptr);
-@@ -1013,7 +1013,7 @@ The total number of packets that higher-level protocols
- */
- int
- ifHCOutUcastPkts_get(ifXTable_rowreq_ctx * rowreq_ctx,
-- U64 * ifHCOutUcastPkts_val_ptr)
-+ struct counter64 *ifHCOutUcastPkts_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ifHCOutUcastPkts_val_ptr);
-@@ -1074,7 +1074,7 @@ The total number of packets that higher-level protocols
- */
- int
- ifHCOutMulticastPkts_get(ifXTable_rowreq_ctx * rowreq_ctx,
-- U64 * ifHCOutMulticastPkts_val_ptr)
-+ struct counter64 *ifHCOutMulticastPkts_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ifHCOutMulticastPkts_val_ptr);
-@@ -1134,7 +1134,7 @@ The total number of packets that higher-level protocols
- */
- int
- ifHCOutBroadcastPkts_get(ifXTable_rowreq_ctx * rowreq_ctx,
-- U64 * ifHCOutBroadcastPkts_val_ptr)
-+ struct counter64 *ifHCOutBroadcastPkts_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ifHCOutBroadcastPkts_val_ptr);
-diff --git a/agent/mibgroup/if-mib/ifXTable/ifXTable.h b/agent/mibgroup/if-mib/ifXTable/ifXTable.h
-index ba22f97..925af13 100644
---- a/agent/mibgroup/if-mib/ifXTable/ifXTable.h
-+++ b/agent/mibgroup/if-mib/ifXTable/ifXTable.h
-@@ -143,28 +143,28 @@ config_require(if-mib/ifXTable/ifXTable_data_access)
- u_long *
- ifOutBroadcastPkts_val_ptr);
- int ifHCInOctets_get(ifXTable_rowreq_ctx * rowreq_ctx,
-- U64 * ifHCInOctets_val_ptr);
-+ struct counter64 *ifHCInOctets_val_ptr);
- int ifHCInUcastPkts_get(ifXTable_rowreq_ctx * rowreq_ctx,
-- U64 * ifHCInUcastPkts_val_ptr);
-+ struct counter64 *ifHCInUcastPkts_val_ptr);
- int ifHCInMulticastPkts_get(ifXTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ifHCInMulticastPkts_val_ptr);
- int ifHCInBroadcastPkts_get(ifXTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ifHCInBroadcastPkts_val_ptr);
- int ifHCOutOctets_get(ifXTable_rowreq_ctx * rowreq_ctx,
-- U64 * ifHCOutOctets_val_ptr);
-+ struct counter64 *ifHCOutOctets_val_ptr);
- int ifHCOutUcastPkts_get(ifXTable_rowreq_ctx * rowreq_ctx,
-- U64 * ifHCOutUcastPkts_val_ptr);
-+ struct counter64 *ifHCOutUcastPkts_val_ptr);
- int ifHCOutMulticastPkts_get(ifXTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ifHCOutMulticastPkts_val_ptr);
- int ifHCOutBroadcastPkts_get(ifXTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ifHCOutBroadcastPkts_val_ptr);
- int ifLinkUpDownTrapEnable_get(ifXTable_rowreq_ctx *
- rowreq_ctx,
-@@ -284,86 +284,86 @@ config_require(if-mib/ifXTable/ifXTable_data_access)
-
- int ifHCInOctets_check_value(ifXTable_rowreq_ctx *
- rowreq_ctx,
-- U64 ifHCInOctets_val);
-+ struct counter64 ifHCInOctets_val);
- int ifHCInOctets_undo_setup(ifXTable_rowreq_ctx *
- rowreq_ctx);
- int ifHCInOctets_set(ifXTable_rowreq_ctx * rowreq_ctx,
-- U64 ifHCInOctets_val);
-+ struct counter64 ifHCInOctets_val);
- int ifHCInOctets_undo(ifXTable_rowreq_ctx * rowreq_ctx);
-
- int ifHCInUcastPkts_check_value(ifXTable_rowreq_ctx *
- rowreq_ctx,
-- U64 ifHCInUcastPkts_val);
-+ struct counter64 ifHCInUcastPkts_val);
- int ifHCInUcastPkts_undo_setup(ifXTable_rowreq_ctx *
- rowreq_ctx);
- int ifHCInUcastPkts_set(ifXTable_rowreq_ctx * rowreq_ctx,
-- U64 ifHCInUcastPkts_val);
-+ struct counter64 ifHCInUcastPkts_val);
- int ifHCInUcastPkts_undo(ifXTable_rowreq_ctx * rowreq_ctx);
-
- int ifHCInMulticastPkts_check_value(ifXTable_rowreq_ctx *
- rowreq_ctx,
-- U64
-+ struct counter64
- ifHCInMulticastPkts_val);
- int ifHCInMulticastPkts_undo_setup(ifXTable_rowreq_ctx *
- rowreq_ctx);
- int ifHCInMulticastPkts_set(ifXTable_rowreq_ctx *
- rowreq_ctx,
-- U64 ifHCInMulticastPkts_val);
-+ struct counter64 ifHCInMulticastPkts_val);
- int ifHCInMulticastPkts_undo(ifXTable_rowreq_ctx *
- rowreq_ctx);
-
- int ifHCInBroadcastPkts_check_value(ifXTable_rowreq_ctx *
- rowreq_ctx,
-- U64
-+ struct counter64
- ifHCInBroadcastPkts_val);
- int ifHCInBroadcastPkts_undo_setup(ifXTable_rowreq_ctx *
- rowreq_ctx);
- int ifHCInBroadcastPkts_set(ifXTable_rowreq_ctx *
- rowreq_ctx,
-- U64 ifHCInBroadcastPkts_val);
-+ struct counter64 ifHCInBroadcastPkts_val);
- int ifHCInBroadcastPkts_undo(ifXTable_rowreq_ctx *
- rowreq_ctx);
-
- int ifHCOutOctets_check_value(ifXTable_rowreq_ctx *
- rowreq_ctx,
-- U64 ifHCOutOctets_val);
-+ struct counter64 ifHCOutOctets_val);
- int ifHCOutOctets_undo_setup(ifXTable_rowreq_ctx *
- rowreq_ctx);
- int ifHCOutOctets_set(ifXTable_rowreq_ctx * rowreq_ctx,
-- U64 ifHCOutOctets_val);
-+ struct counter64 ifHCOutOctets_val);
- int ifHCOutOctets_undo(ifXTable_rowreq_ctx * rowreq_ctx);
-
- int ifHCOutUcastPkts_check_value(ifXTable_rowreq_ctx *
- rowreq_ctx,
-- U64 ifHCOutUcastPkts_val);
-+ struct counter64 ifHCOutUcastPkts_val);
- int ifHCOutUcastPkts_undo_setup(ifXTable_rowreq_ctx *
- rowreq_ctx);
- int ifHCOutUcastPkts_set(ifXTable_rowreq_ctx * rowreq_ctx,
-- U64 ifHCOutUcastPkts_val);
-+ struct counter64 ifHCOutUcastPkts_val);
- int ifHCOutUcastPkts_undo(ifXTable_rowreq_ctx *
- rowreq_ctx);
-
- int ifHCOutMulticastPkts_check_value(ifXTable_rowreq_ctx *
- rowreq_ctx,
-- U64
-+ struct counter64
- ifHCOutMulticastPkts_val);
- int ifHCOutMulticastPkts_undo_setup(ifXTable_rowreq_ctx *
- rowreq_ctx);
- int ifHCOutMulticastPkts_set(ifXTable_rowreq_ctx *
- rowreq_ctx,
-- U64 ifHCOutMulticastPkts_val);
-+ struct counter64 ifHCOutMulticastPkts_val);
- int ifHCOutMulticastPkts_undo(ifXTable_rowreq_ctx *
- rowreq_ctx);
-
- int ifHCOutBroadcastPkts_check_value(ifXTable_rowreq_ctx *
- rowreq_ctx,
-- U64
-+ struct counter64
- ifHCOutBroadcastPkts_val);
- int ifHCOutBroadcastPkts_undo_setup(ifXTable_rowreq_ctx *
- rowreq_ctx);
- int ifHCOutBroadcastPkts_set(ifXTable_rowreq_ctx *
- rowreq_ctx,
-- U64 ifHCOutBroadcastPkts_val);
-+ struct counter64 ifHCOutBroadcastPkts_val);
- int ifHCOutBroadcastPkts_undo(ifXTable_rowreq_ctx *
- rowreq_ctx);
-
-diff --git a/agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c b/agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c
-index 23b50d0..e561842 100644
---- a/agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c
-+++ b/agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c
-@@ -729,72 +729,72 @@ _ifXTable_get_column(ifXTable_rowreq_ctx * rowreq_ctx,
- * ifHCInOctets(6)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IFHCINOCTETS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
-- rc = ifHCInOctets_get(rowreq_ctx, (U64 *) var->val.string);
-+ rc = ifHCInOctets_get(rowreq_ctx, (struct counter64 *) var->val.string);
- break;
-
- /*
- * ifHCInUcastPkts(7)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IFHCINUCASTPKTS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
-- rc = ifHCInUcastPkts_get(rowreq_ctx, (U64 *) var->val.string);
-+ rc = ifHCInUcastPkts_get(rowreq_ctx, (struct counter64 *) var->val.string);
- break;
-
- /*
- * ifHCInMulticastPkts(8)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IFHCINMULTICASTPKTS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
-- rc = ifHCInMulticastPkts_get(rowreq_ctx, (U64 *) var->val.string);
-+ rc = ifHCInMulticastPkts_get(rowreq_ctx, (struct counter64 *) var->val.string);
- break;
-
- /*
- * ifHCInBroadcastPkts(9)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IFHCINBROADCASTPKTS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
-- rc = ifHCInBroadcastPkts_get(rowreq_ctx, (U64 *) var->val.string);
-+ rc = ifHCInBroadcastPkts_get(rowreq_ctx, (struct counter64 *) var->val.string);
- break;
-
- /*
- * ifHCOutOctets(10)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IFHCOUTOCTETS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
-- rc = ifHCOutOctets_get(rowreq_ctx, (U64 *) var->val.string);
-+ rc = ifHCOutOctets_get(rowreq_ctx, (struct counter64 *) var->val.string);
- break;
-
- /*
- * ifHCOutUcastPkts(11)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IFHCOUTUCASTPKTS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
-- rc = ifHCOutUcastPkts_get(rowreq_ctx, (U64 *) var->val.string);
-+ rc = ifHCOutUcastPkts_get(rowreq_ctx, (struct counter64 *) var->val.string);
- break;
-
- /*
- * ifHCOutMulticastPkts(12)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IFHCOUTMULTICASTPKTS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
-- rc = ifHCOutMulticastPkts_get(rowreq_ctx, (U64 *) var->val.string);
-+ rc = ifHCOutMulticastPkts_get(rowreq_ctx, (struct counter64 *) var->val.string);
- break;
-
- /*
- * ifHCOutBroadcastPkts(13)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IFHCOUTBROADCASTPKTS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
-- rc = ifHCOutBroadcastPkts_get(rowreq_ctx, (U64 *) var->val.string);
-+ rc = ifHCOutBroadcastPkts_get(rowreq_ctx, (struct counter64 *) var->val.string);
- break;
-
- /*
-diff --git a/agent/mibgroup/ip-mib/data_access/systemstats_common.c b/agent/mibgroup/ip-mib/data_access/systemstats_common.c
-index 29109bd..7434b3a 100644
---- a/agent/mibgroup/ip-mib/data_access/systemstats_common.c
-+++ b/agent/mibgroup/ip-mib/data_access/systemstats_common.c
-@@ -264,7 +264,7 @@ _calculate_entries(netsnmp_systemstats_entry * entry)
- && entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGCREATES]
- && entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTDISCARDS]) {
-
-- U64 tmp, tmp2, tmp3;
-+ struct counter64 tmp, tmp2, tmp3;
- tmp = entry->stats.HCOutRequests;
- u64Incr(&tmp, &entry->stats.HCOutForwDatagrams);
- u64Incr(&tmp, &entry->stats.HCOutFragCreates);
-diff --git a/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.c b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.c
-index db673dc..fec36b2 100644
---- a/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.c
-+++ b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.c
-@@ -270,7 +270,7 @@ The total number of input IP datagrams received, including
- */
- int
- ipIfStatsHCInReceives_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipIfStatsHCInReceives_val_ptr)
-+ struct counter64 *ipIfStatsHCInReceives_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipIfStatsHCInReceives_val_ptr);
-@@ -395,7 +395,7 @@ The total number of octets received in input IP datagrams,
- */
- int
- ipIfStatsHCInOctets_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipIfStatsHCInOctets_val_ptr)
-+ struct counter64 *ipIfStatsHCInOctets_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipIfStatsHCInOctets_val_ptr);
-@@ -862,7 +862,7 @@ The number of input datagrams for which this entity was not
- */
- int
- ipIfStatsHCInForwDatagrams_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipIfStatsHCInForwDatagrams_val_ptr)
-+ struct counter64 *ipIfStatsHCInForwDatagrams_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipIfStatsHCInForwDatagrams_val_ptr);
-@@ -1267,7 +1267,7 @@ The total number of datagrams successfully delivered to IP
- */
- int
- ipIfStatsHCInDelivers_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipIfStatsHCInDelivers_val_ptr)
-+ struct counter64 *ipIfStatsHCInDelivers_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipIfStatsHCInDelivers_val_ptr);
-@@ -1396,7 +1396,7 @@ The total number of IP datagrams that local IP user-
- */
- int
- ipIfStatsHCOutRequests_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipIfStatsHCOutRequests_val_ptr)
-+ struct counter64 *ipIfStatsHCOutRequests_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipIfStatsHCOutRequests_val_ptr);
-@@ -1532,7 +1532,7 @@ The number of datagrams for which this entity was not their
- */
- int
- ipIfStatsHCOutForwDatagrams_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipIfStatsHCOutForwDatagrams_val_ptr)
-+ struct counter64 *ipIfStatsHCOutForwDatagrams_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipIfStatsHCOutForwDatagrams_val_ptr);
-@@ -1999,7 +1999,7 @@ The total number of IP datagrams that this entity supplied
- */
- int
- ipIfStatsHCOutTransmits_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipIfStatsHCOutTransmits_val_ptr)
-+ struct counter64 *ipIfStatsHCOutTransmits_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipIfStatsHCOutTransmits_val_ptr);
-@@ -2123,7 +2123,7 @@ The total number of octets in IP datagrams delivered to the
- */
- int
- ipIfStatsHCOutOctets_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipIfStatsHCOutOctets_val_ptr)
-+ struct counter64 *ipIfStatsHCOutOctets_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipIfStatsHCOutOctets_val_ptr);
-@@ -2245,7 +2245,7 @@ The number of IP multicast datagrams received. This object
- */
- int
- ipIfStatsHCInMcastPkts_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipIfStatsHCInMcastPkts_val_ptr)
-+ struct counter64 *ipIfStatsHCInMcastPkts_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipIfStatsHCInMcastPkts_val_ptr);
-@@ -2372,7 +2372,7 @@ The total number of octets received in IP multicast
- */
- int
- ipIfStatsHCInMcastOctets_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipIfStatsHCInMcastOctets_val_ptr)
-+ struct counter64 *ipIfStatsHCInMcastOctets_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipIfStatsHCInMcastOctets_val_ptr);
-@@ -2497,7 +2497,7 @@ The number of IP multicast datagrams transmitted. This
- */
- int
- ipIfStatsHCOutMcastPkts_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipIfStatsHCOutMcastPkts_val_ptr)
-+ struct counter64 *ipIfStatsHCOutMcastPkts_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipIfStatsHCOutMcastPkts_val_ptr);
-@@ -2621,7 +2621,7 @@ The total number of octets transmitted in IP multicast
- */
- int
- ipIfStatsHCOutMcastOctets_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipIfStatsHCOutMcastOctets_val_ptr)
-+ struct counter64 *ipIfStatsHCOutMcastOctets_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipIfStatsHCOutMcastOctets_val_ptr);
-@@ -2743,7 +2743,7 @@ The number of IP broadcast datagrams received. This object
- */
- int
- ipIfStatsHCInBcastPkts_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipIfStatsHCInBcastPkts_val_ptr)
-+ struct counter64 *ipIfStatsHCInBcastPkts_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipIfStatsHCInBcastPkts_val_ptr);
-@@ -2865,7 +2865,7 @@ The number of IP broadcast datagrams transmitted. This
- */
- int
- ipIfStatsHCOutBcastPkts_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipIfStatsHCOutBcastPkts_val_ptr)
-+ struct counter64 *ipIfStatsHCOutBcastPkts_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipIfStatsHCOutBcastPkts_val_ptr);
-diff --git a/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.h b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.h
-index 0cc7e47..ad5d8a0 100644
---- a/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.h
-+++ b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.h
-@@ -50,7 +50,7 @@ extern "C" {
- ipIfStatsInReceives_val_ptr);
- int ipIfStatsHCInReceives_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipIfStatsHCInReceives_val_ptr);
- int ipIfStatsInOctets_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-@@ -58,7 +58,7 @@ extern "C" {
- ipIfStatsInOctets_val_ptr);
- int ipIfStatsHCInOctets_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipIfStatsHCInOctets_val_ptr);
- int ipIfStatsInHdrErrors_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-@@ -87,7 +87,7 @@ extern "C" {
- int
- ipIfStatsHCInForwDatagrams_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipIfStatsHCInForwDatagrams_val_ptr);
- int ipIfStatsReasmReqds_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-@@ -111,7 +111,7 @@ extern "C" {
- ipIfStatsInDelivers_val_ptr);
- int ipIfStatsHCInDelivers_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipIfStatsHCInDelivers_val_ptr);
- int ipIfStatsOutRequests_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-@@ -119,7 +119,7 @@ extern "C" {
- ipIfStatsOutRequests_val_ptr);
- int ipIfStatsHCOutRequests_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipIfStatsHCOutRequests_val_ptr);
- int ipIfStatsOutForwDatagrams_get(ipIfStatsTable_rowreq_ctx
- * rowreq_ctx,
-@@ -128,7 +128,7 @@ extern "C" {
- int
- ipIfStatsHCOutForwDatagrams_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipIfStatsHCOutForwDatagrams_val_ptr);
- int ipIfStatsOutDiscards_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-@@ -156,7 +156,7 @@ extern "C" {
- ipIfStatsOutTransmits_val_ptr);
- int ipIfStatsHCOutTransmits_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipIfStatsHCOutTransmits_val_ptr);
- int ipIfStatsOutOctets_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-@@ -164,7 +164,7 @@ extern "C" {
- ipIfStatsOutOctets_val_ptr);
- int ipIfStatsHCOutOctets_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipIfStatsHCOutOctets_val_ptr);
- int ipIfStatsInMcastPkts_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-@@ -172,7 +172,7 @@ extern "C" {
- ipIfStatsInMcastPkts_val_ptr);
- int ipIfStatsHCInMcastPkts_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipIfStatsHCInMcastPkts_val_ptr);
- int ipIfStatsInMcastOctets_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-@@ -180,7 +180,7 @@ extern "C" {
- ipIfStatsInMcastOctets_val_ptr);
- int ipIfStatsHCInMcastOctets_get(ipIfStatsTable_rowreq_ctx
- * rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipIfStatsHCInMcastOctets_val_ptr);
- int ipIfStatsOutMcastPkts_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-@@ -188,7 +188,7 @@ extern "C" {
- ipIfStatsOutMcastPkts_val_ptr);
- int ipIfStatsHCOutMcastPkts_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipIfStatsHCOutMcastPkts_val_ptr);
- int ipIfStatsOutMcastOctets_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-@@ -196,7 +196,7 @@ extern "C" {
- ipIfStatsOutMcastOctets_val_ptr);
- int ipIfStatsHCOutMcastOctets_get(ipIfStatsTable_rowreq_ctx
- * rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipIfStatsHCOutMcastOctets_val_ptr);
- int ipIfStatsInBcastPkts_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-@@ -204,7 +204,7 @@ extern "C" {
- ipIfStatsInBcastPkts_val_ptr);
- int ipIfStatsHCInBcastPkts_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipIfStatsHCInBcastPkts_val_ptr);
- int ipIfStatsOutBcastPkts_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-@@ -212,7 +212,7 @@ extern "C" {
- ipIfStatsOutBcastPkts_val_ptr);
- int ipIfStatsHCOutBcastPkts_get(ipIfStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipIfStatsHCOutBcastPkts_val_ptr);
- int
- ipIfStatsDiscontinuityTime_get(ipIfStatsTable_rowreq_ctx *
-diff --git a/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c
-index 559d1c1..4955a8b 100644
---- a/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c
-+++ b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c
-@@ -722,10 +722,10 @@ _ipIfStatsTable_get_column(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
- * ipIfStatsHCInReceives(4)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPIFSTATSHCINRECEIVES:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipIfStatsHCInReceives_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -741,9 +741,9 @@ _ipIfStatsTable_get_column(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
- * ipIfStatsHCInOctets(6)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPIFSTATSHCINOCTETS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
-- rc = ipIfStatsHCInOctets_get(rowreq_ctx, (U64 *) var->val.string);
-+ rc = ipIfStatsHCInOctets_get(rowreq_ctx, (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -810,10 +810,10 @@ _ipIfStatsTable_get_column(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
- * ipIfStatsHCInForwDatagrams(13)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPIFSTATSHCINFORWDATAGRAMS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipIfStatsHCInForwDatagrams_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -869,10 +869,10 @@ _ipIfStatsTable_get_column(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
- * ipIfStatsHCInDelivers(19)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPIFSTATSHCINDELIVERS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipIfStatsHCInDelivers_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -889,10 +889,10 @@ _ipIfStatsTable_get_column(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
- * ipIfStatsHCOutRequests(21)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPIFSTATSHCOUTREQUESTS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipIfStatsHCOutRequests_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -909,10 +909,10 @@ _ipIfStatsTable_get_column(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
- * ipIfStatsHCOutForwDatagrams(24)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPIFSTATSHCOUTFORWDATAGRAMS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipIfStatsHCOutForwDatagrams_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -979,10 +979,10 @@ _ipIfStatsTable_get_column(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
- * ipIfStatsHCOutTransmits(31)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPIFSTATSHCOUTTRANSMITS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipIfStatsHCOutTransmits_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -999,9 +999,9 @@ _ipIfStatsTable_get_column(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
- * ipIfStatsHCOutOctets(33)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPIFSTATSHCOUTOCTETS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
-- rc = ipIfStatsHCOutOctets_get(rowreq_ctx, (U64 *) var->val.string);
-+ rc = ipIfStatsHCOutOctets_get(rowreq_ctx, (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -1018,10 +1018,10 @@ _ipIfStatsTable_get_column(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
- * ipIfStatsHCInMcastPkts(35)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPIFSTATSHCINMCASTPKTS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipIfStatsHCInMcastPkts_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -1038,10 +1038,10 @@ _ipIfStatsTable_get_column(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
- * ipIfStatsHCInMcastOctets(37)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPIFSTATSHCINMCASTOCTETS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipIfStatsHCInMcastOctets_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -1058,10 +1058,10 @@ _ipIfStatsTable_get_column(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
- * ipIfStatsHCOutMcastPkts(39)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPIFSTATSHCOUTMCASTPKTS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipIfStatsHCOutMcastPkts_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -1078,10 +1078,10 @@ _ipIfStatsTable_get_column(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
- * ipIfStatsHCOutMcastOctets(41)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPIFSTATSHCOUTMCASTOCTETS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipIfStatsHCOutMcastOctets_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -1098,10 +1098,10 @@ _ipIfStatsTable_get_column(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
- * ipIfStatsHCInBcastPkts(43)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPIFSTATSHCINBCASTPKTS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipIfStatsHCInBcastPkts_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -1118,10 +1118,10 @@ _ipIfStatsTable_get_column(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
- * ipIfStatsHCOutBcastPkts(45)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPIFSTATSHCOUTBCASTPKTS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipIfStatsHCOutBcastPkts_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-diff --git a/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.c b/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.c
-index 10587e2..5a9323f 100644
---- a/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.c
-+++ b/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.c
-@@ -452,7 +452,7 @@ The total number of input IP datagrams received, including
- */
- int
- ipSystemStatsHCInReceives_get(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipSystemStatsHCInReceives_val_ptr)
-+ struct counter64 *ipSystemStatsHCInReceives_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipSystemStatsHCInReceives_val_ptr);
-@@ -579,7 +579,7 @@ The total number of octets received in input IP datagrams,
- */
- int
- ipSystemStatsHCInOctets_get(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipSystemStatsHCInOctets_val_ptr)
-+ struct counter64 *ipSystemStatsHCInOctets_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipSystemStatsHCInOctets_val_ptr);
-@@ -1058,7 +1058,7 @@ The number of input datagrams for which this entity was not
- int
- ipSystemStatsHCInForwDatagrams_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipSystemStatsHCInForwDatagrams_val_ptr)
- {
- /** we should have a non-NULL pointer */
-@@ -1474,7 +1474,7 @@ The total number of datagrams successfully delivered to IP
- */
- int
- ipSystemStatsHCInDelivers_get(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipSystemStatsHCInDelivers_val_ptr)
-+ struct counter64 *ipSystemStatsHCInDelivers_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipSystemStatsHCInDelivers_val_ptr);
-@@ -1602,7 +1602,7 @@ The total number of IP datagrams which local IP user-
- */
- int
- ipSystemStatsHCOutRequests_get(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipSystemStatsHCOutRequests_val_ptr)
-+ struct counter64 *ipSystemStatsHCOutRequests_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipSystemStatsHCOutRequests_val_ptr);
-@@ -1809,7 +1809,7 @@ The number of datagrams for which this entity was not their
- int
- ipSystemStatsHCOutForwDatagrams_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipSystemStatsHCOutForwDatagrams_val_ptr)
- {
- /** we should have a non-NULL pointer */
-@@ -2288,7 +2288,7 @@ The total number of IP datagrams that this entity supplied
- */
- int
- ipSystemStatsHCOutTransmits_get(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipSystemStatsHCOutTransmits_val_ptr)
-+ struct counter64 *ipSystemStatsHCOutTransmits_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipSystemStatsHCOutTransmits_val_ptr);
-@@ -2415,7 +2415,7 @@ The total number of octets in IP datagrams delivered to the
- */
- int
- ipSystemStatsHCOutOctets_get(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipSystemStatsHCOutOctets_val_ptr)
-+ struct counter64 *ipSystemStatsHCOutOctets_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipSystemStatsHCOutOctets_val_ptr);
-@@ -2539,7 +2539,7 @@ The number of IP multicast datagrams received. This object
- */
- int
- ipSystemStatsHCInMcastPkts_get(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipSystemStatsHCInMcastPkts_val_ptr)
-+ struct counter64 *ipSystemStatsHCInMcastPkts_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipSystemStatsHCInMcastPkts_val_ptr);
-@@ -2665,7 +2665,7 @@ The total number of octets received in IP multicast
- int
- ipSystemStatsHCInMcastOctets_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipSystemStatsHCInMcastOctets_val_ptr)
- {
- /** we should have a non-NULL pointer */
-@@ -2790,7 +2790,7 @@ The number of IP multicast datagrams transmitted. This
- */
- int
- ipSystemStatsHCOutMcastPkts_get(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipSystemStatsHCOutMcastPkts_val_ptr)
-+ struct counter64 *ipSystemStatsHCOutMcastPkts_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipSystemStatsHCOutMcastPkts_val_ptr);
-@@ -2921,7 +2921,7 @@ The total number of octets transmitted in IP multicast
- int
- ipSystemStatsHCOutMcastOctets_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipSystemStatsHCOutMcastOctets_val_ptr)
- {
- /** we should have a non-NULL pointer */
-@@ -3046,7 +3046,7 @@ The number of IP broadcast datagrams received. This object
- */
- int
- ipSystemStatsHCInBcastPkts_get(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipSystemStatsHCInBcastPkts_val_ptr)
-+ struct counter64 *ipSystemStatsHCInBcastPkts_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipSystemStatsHCInBcastPkts_val_ptr);
-@@ -3170,7 +3170,7 @@ The number of IP broadcast datagrams transmitted. This
- */
- int
- ipSystemStatsHCOutBcastPkts_get(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
-- U64 * ipSystemStatsHCOutBcastPkts_val_ptr)
-+ struct counter64 *ipSystemStatsHCOutBcastPkts_val_ptr)
- {
- /** we should have a non-NULL pointer */
- netsnmp_assert(NULL != ipSystemStatsHCOutBcastPkts_val_ptr);
-diff --git a/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.h b/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.h
-index ca1e1f3..5c3823e 100644
---- a/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.h
-+++ b/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.h
-@@ -144,93 +144,22 @@ config_require(ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access)
- *********************************************************************
- * function prototypes
- */
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsTable_pre_request(ipSystemStatsTable_registration *
-+ int ipSystemStatsTable_pre_request(ipSystemStatsTable_registration *
- user_context);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsTable_post_request(ipSystemStatsTable_registration *
-+ int ipSystemStatsTable_post_request(ipSystemStatsTable_registration *
- user_context, int rc);
-
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsTable_rowreq_ctx_init(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsTable_rowreq_ctx_init(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- void *user_init_ctx);
- void
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
- ipSystemStatsTable_rowreq_ctx_cleanup(ipSystemStatsTable_rowreq_ctx
- * rowreq_ctx);
-
- ipSystemStatsTable_data *ipSystemStatsTable_allocate_data(void);
- void ipSystemStatsTable_release_data(ipSystemStatsTable_data
- * data);
--
--
--
--
--
--
--
--
-- ipSystemStatsTable_rowreq_ctx
-+ ipSystemStatsTable_rowreq_ctx
- * ipSystemStatsTable_row_find_by_mib_index
- (ipSystemStatsTable_mib_index * mib_idx);
-
-@@ -265,226 +194,50 @@ config_require(ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access)
- * indexes
- */
-
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsInReceives_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsInReceives_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsInReceives_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsHCInReceives_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsHCInReceives_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipSystemStatsHCInReceives_val_ptr);
- int ipSystemStatsInOctets_get(ipSystemStatsTable_rowreq_ctx
- * rowreq_ctx,
- u_long *
- ipSystemStatsInOctets_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsHCInOctets_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsHCInOctets_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 * ipSystemStatsHCInOctets_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsInHdrErrors_get(ipSystemStatsTable_rowreq_ctx *
-+ struct counter64 *ipSystemStatsHCInOctets_val_ptr);
-+ int ipSystemStatsInHdrErrors_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsInHdrErrors_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsInNoRoutes_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsInNoRoutes_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsInNoRoutes_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsInAddrErrors_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsInAddrErrors_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsInAddrErrors_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsInUnknownProtos_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsInUnknownProtos_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsInUnknownProtos_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsInTruncatedPkts_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsInTruncatedPkts_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsInTruncatedPkts_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsInForwDatagrams_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsInForwDatagrams_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsInForwDatagrams_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsHCInForwDatagrams_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsHCInForwDatagrams_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipSystemStatsHCInForwDatagrams_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsReasmReqds_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsReasmReqds_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsReasmReqds_val_ptr);
-@@ -492,690 +245,142 @@ config_require(ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access)
- * rowreq_ctx,
- u_long *
- ipSystemStatsReasmOKs_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsReasmFails_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsReasmFails_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsReasmFails_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsInDiscards_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsInDiscards_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsInDiscards_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsInDelivers_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsInDelivers_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsInDelivers_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsHCInDelivers_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsHCInDelivers_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipSystemStatsHCInDelivers_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsOutRequests_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsOutRequests_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsOutRequests_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsHCOutRequests_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsHCOutRequests_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipSystemStatsHCOutRequests_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsOutNoRoutes_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsOutNoRoutes_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsOutNoRoutes_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsOutForwDatagrams_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsOutForwDatagrams_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsOutForwDatagrams_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsHCOutForwDatagrams_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsHCOutForwDatagrams_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipSystemStatsHCOutForwDatagrams_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsOutDiscards_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsOutDiscards_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsOutDiscards_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsOutFragReqds_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsOutFragReqds_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsOutFragReqds_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsOutFragOKs_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsOutFragOKs_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsOutFragOKs_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsOutFragFails_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsOutFragFails_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsOutFragFails_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsOutFragCreates_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsOutFragCreates_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsOutFragCreates_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsOutTransmits_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsOutTransmits_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsOutTransmits_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsHCOutTransmits_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsHCOutTransmits_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipSystemStatsHCOutTransmits_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsOutOctets_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsOutOctets_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsOutOctets_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsHCOutOctets_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsHCOutOctets_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipSystemStatsHCOutOctets_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsInMcastPkts_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsInMcastPkts_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsInMcastPkts_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsHCInMcastPkts_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsHCInMcastPkts_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipSystemStatsHCInMcastPkts_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsInMcastOctets_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsInMcastOctets_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsInMcastOctets_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsHCInMcastOctets_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsHCInMcastOctets_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipSystemStatsHCInMcastOctets_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsOutMcastPkts_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsOutMcastPkts_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsOutMcastPkts_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsHCOutMcastPkts_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsHCOutMcastPkts_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipSystemStatsHCOutMcastPkts_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsOutMcastOctets_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsOutMcastOctets_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsOutMcastOctets_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsHCOutMcastOctets_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsHCOutMcastOctets_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipSystemStatsHCOutMcastOctets_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsInBcastPkts_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsInBcastPkts_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsInBcastPkts_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsHCInBcastPkts_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsHCInBcastPkts_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipSystemStatsHCInBcastPkts_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsOutBcastPkts_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsOutBcastPkts_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsOutBcastPkts_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsHCOutBcastPkts_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsHCOutBcastPkts_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
-- U64 *
-+ struct counter64 *
- ipSystemStatsHCOutBcastPkts_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsDiscontinuityTime_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsDiscontinuityTime_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsDiscontinuityTime_val_ptr);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsRefreshRate_get(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsRefreshRate_get(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long *
- ipSystemStatsRefreshRate_val_ptr);
--
--
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsTable_indexes_set_tbl_idx(ipSystemStatsTable_mib_index
-+ int ipSystemStatsTable_indexes_set_tbl_idx(ipSystemStatsTable_mib_index
- * tbl_idx,
- u_long
- ipSystemStatsIPVersion_val);
-- int
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-- ipSystemStatsTable_indexes_set(ipSystemStatsTable_rowreq_ctx *
-+ int ipSystemStatsTable_indexes_set(ipSystemStatsTable_rowreq_ctx *
- rowreq_ctx,
- u_long ipSystemStatsIPVersion_val);
-
--
--
- /*
- *********************************************************************
- * SET function declarations
-diff --git a/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c b/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c
-index e1ca2cb..09c061f 100644
---- a/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c
-+++ b/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c
-@@ -674,10 +674,10 @@ _ipSystemStatsTable_get_column(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
- * ipSystemStatsHCInReceives(4)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPSYSTEMSTATSHCINRECEIVES:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipSystemStatsHCInReceives_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -694,10 +694,10 @@ _ipSystemStatsTable_get_column(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
- * ipSystemStatsHCInOctets(6)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPSYSTEMSTATSHCINOCTETS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipSystemStatsHCInOctets_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -764,10 +764,10 @@ _ipSystemStatsTable_get_column(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
- * ipSystemStatsHCInForwDatagrams(13)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPSYSTEMSTATSHCINFORWDATAGRAMS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipSystemStatsHCInForwDatagrams_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -824,10 +824,10 @@ _ipSystemStatsTable_get_column(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
- * ipSystemStatsHCInDelivers(19)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPSYSTEMSTATSHCINDELIVERS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipSystemStatsHCInDelivers_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -844,10 +844,10 @@ _ipSystemStatsTable_get_column(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
- * ipSystemStatsHCOutRequests(21)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPSYSTEMSTATSHCOUTREQUESTS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipSystemStatsHCOutRequests_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -874,10 +874,10 @@ _ipSystemStatsTable_get_column(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
- * ipSystemStatsHCOutForwDatagrams(24)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPSYSTEMSTATSHCOUTFORWDATAGRAMS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipSystemStatsHCOutForwDatagrams_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -944,10 +944,10 @@ _ipSystemStatsTable_get_column(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
- * ipSystemStatsHCOutTransmits(31)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPSYSTEMSTATSHCOUTTRANSMITS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipSystemStatsHCOutTransmits_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -964,10 +964,10 @@ _ipSystemStatsTable_get_column(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
- * ipSystemStatsHCOutOctets(33)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPSYSTEMSTATSHCOUTOCTETS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipSystemStatsHCOutOctets_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -984,10 +984,10 @@ _ipSystemStatsTable_get_column(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
- * ipSystemStatsHCInMcastPkts(35)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPSYSTEMSTATSHCINMCASTPKTS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipSystemStatsHCInMcastPkts_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -1004,10 +1004,10 @@ _ipSystemStatsTable_get_column(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
- * ipSystemStatsHCInMcastOctets(37)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPSYSTEMSTATSHCINMCASTOCTETS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipSystemStatsHCInMcastOctets_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -1024,10 +1024,10 @@ _ipSystemStatsTable_get_column(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
- * ipSystemStatsHCOutMcastPkts(39)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPSYSTEMSTATSHCOUTMCASTPKTS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipSystemStatsHCOutMcastPkts_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -1044,10 +1044,10 @@ _ipSystemStatsTable_get_column(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
- * ipSystemStatsHCOutMcastOctets(41)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPSYSTEMSTATSHCOUTMCASTOCTETS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipSystemStatsHCOutMcastOctets_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -1064,10 +1064,10 @@ _ipSystemStatsTable_get_column(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
- * ipSystemStatsHCInBcastPkts(43)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPSYSTEMSTATSHCINBCASTPKTS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipSystemStatsHCInBcastPkts_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-@@ -1084,10 +1084,10 @@ _ipSystemStatsTable_get_column(ipSystemStatsTable_rowreq_ctx * rowreq_ctx,
- * ipSystemStatsHCOutBcastPkts(45)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h
- */
- case COLUMN_IPSYSTEMSTATSHCOUTBCASTPKTS:
-- var->val_len = sizeof(U64);
-+ var->val_len = sizeof(struct counter64);
- var->type = ASN_COUNTER64;
- rc = ipSystemStatsHCOutBcastPkts_get(rowreq_ctx,
-- (U64 *) var->val.string);
-+ (struct counter64 *) var->val.string);
- break;
-
- /*
-diff --git a/include/net-snmp/data_access/ipstats.h b/include/net-snmp/data_access/ipstats.h
-index f782459..f0df46b 100644
---- a/include/net-snmp/data_access/ipstats.h
-+++ b/include/net-snmp/data_access/ipstats.h
-@@ -58,45 +58,45 @@ typedef struct netsnmp_ipstats_s {
- * other columns, when underlying OS does not provide them.
- * Always fill at least 32 bits, the table is periodically polled -> 32 bit
- * overflow shall be detected and 64 bit value should be computed automatically. */
-- U64 HCInReceives;
-- U64 HCInOctets;
-+ struct counter64 HCInReceives;
-+ struct counter64 HCInOctets;
- u_long InHdrErrors;
-- U64 HCInNoRoutes;
-+ struct counter64 HCInNoRoutes;
- u_long InAddrErrors;
- u_long InUnknownProtos;
- u_long InTruncatedPkts;
-
- /* optional, can be computed from HCInNoRoutes and HCOutForwDatagrams */
-- U64 HCInForwDatagrams;
-+ struct counter64 HCInForwDatagrams;
-
- u_long ReasmReqds;
- u_long ReasmOKs;
- u_long ReasmFails;
- u_long InDiscards;
-- U64 HCInDelivers;
-- U64 HCOutRequests;
-- U64 HCOutNoRoutes;
-- U64 HCOutForwDatagrams;
-- U64 HCOutDiscards;
-+ struct counter64 HCInDelivers;
-+ struct counter64 HCOutRequests;
-+ struct counter64 HCOutNoRoutes;
-+ struct counter64 HCOutForwDatagrams;
-+ struct counter64 HCOutDiscards;
-
- /* optional, can be computed from HCOutFragOKs + HCOutFragFails*/
-- U64 HCOutFragReqds;
-- U64 HCOutFragOKs;
-- U64 HCOutFragFails;
-- U64 HCOutFragCreates;
-+ struct counter64 HCOutFragReqds;
-+ struct counter64 HCOutFragOKs;
-+ struct counter64 HCOutFragFails;
-+ struct counter64 HCOutFragCreates;
-
- /* optional, can be computed from
- * HCOutRequests +HCOutForwDatagrams + HCOutFragCreates
- * - HCOutFragReqds - HCOutNoRoutes - HCOutDiscards */
-- U64 HCOutTransmits;
-+ struct counter64 HCOutTransmits;
-
-- U64 HCOutOctets;
-- U64 HCInMcastPkts;
-- U64 HCInMcastOctets;
-- U64 HCOutMcastPkts;
-- U64 HCOutMcastOctets;
-- U64 HCInBcastPkts;
-- U64 HCOutBcastPkts;
-+ struct counter64 HCOutOctets;
-+ struct counter64 HCInMcastPkts;
-+ struct counter64 HCInMcastOctets;
-+ struct counter64 HCOutMcastPkts;
-+ struct counter64 HCOutMcastOctets;
-+ struct counter64 HCInBcastPkts;
-+ struct counter64 HCOutBcastPkts;
-
- /* Array of available columns.*/
- int columnAvail[IPSYSTEMSTATSTABLE_LAST+1];
-diff --git a/include/net-snmp/library/int64.h b/include/net-snmp/library/int64.h
-index 9c7c894..3a85213 100644
---- a/include/net-snmp/library/int64.h
-+++ b/include/net-snmp/library/int64.h
-@@ -5,31 +5,29 @@
- extern "C" {
- #endif
-
-- typedef struct counter64 U64;
--
- #define I64CHARSZ 21
-
-- void divBy10(U64, U64 *, unsigned int *);
-- void multBy10(U64, U64 *);
-- void incrByU16(U64 *, unsigned int);
-- void incrByU32(U64 *, unsigned int);
-+ void divBy10(struct counter64, struct counter64 *, unsigned int *);
-+ void multBy10(struct counter64, struct counter64 *);
-+ void incrByU16(struct counter64 *, unsigned int);
-+ void incrByU32(struct counter64 *, unsigned int);
- NETSNMP_IMPORT
-- void zeroU64(U64 *);
-- int isZeroU64(const U64 *);
-+ void zeroU64(struct counter64 *);
-+ int isZeroU64(const struct counter64 *);
- NETSNMP_IMPORT
-- void printU64(char *, const U64 *);
-+ void printU64(char *, const struct counter64 *);
- NETSNMP_IMPORT
-- void printI64(char *, const U64 *);
-- int read64(U64 *, const char *);
-+ void printI64(char *, const struct counter64 *);
-+ int read64(struct counter64 *, const char *);
- NETSNMP_IMPORT
-- void u64Subtract(const U64 * pu64one, const U64 * pu64two,
-- U64 * pu64out);
-- void u64Incr(U64 * pu64out, const U64 * pu64one);
-- void u64UpdateCounter(U64 * pu64out, const U64 * pu64one,
-- const U64 * pu64two);
-- void u64Copy(U64 * pu64one, const U64 * pu64two);
-+ void u64Subtract(const struct counter64 *pu64one, const struct counter64 *pu64two,
-+ struct counter64 *pu64out);
-+ void u64Incr(struct counter64 *pu64out, const struct counter64 *pu64one);
-+ void u64UpdateCounter(struct counter64 *pu64out, const struct counter64 *pu64one,
-+ const struct counter64 *pu64two);
-+ void u64Copy(struct counter64 *pu64one, const struct counter64 *pu64two);
-
-- int netsnmp_c64_check_for_32bit_wrap(U64 *old_val, U64 *new_val,
-+ int netsnmp_c64_check_for_32bit_wrap(struct counter64 *old_val, struct counter64 *new_val,
- int adjust);
- NETSNMP_IMPORT
- int netsnmp_c64_check32_and_update(struct counter64 *prev_val,
-diff --git a/snmplib/int64.c b/snmplib/int64.c
-index 51f1f32..951f813 100644
---- a/snmplib/int64.c
-+++ b/snmplib/int64.c
-@@ -33,7 +33,7 @@
- * @param[out] puR Remainder.
- */
- void
--divBy10(U64 u64, U64 * pu64Q, unsigned int *puR)
-+divBy10(struct counter64 u64, struct counter64 *pu64Q, unsigned int *puR)
- {
- unsigned long ulT;
- unsigned long ulQ;
-@@ -83,7 +83,7 @@ divBy10(U64 u64, U64 * pu64Q, unsigned int *puR)
- * @param[out] pu64P Product.
- */
- void
--multBy10(U64 u64, U64 * pu64P)
-+multBy10(struct counter64 u64, struct counter64 *pu64P)
- {
- unsigned long ulT;
- unsigned long ulP;
-@@ -130,7 +130,7 @@ multBy10(U64 u64, U64 * pu64P)
- *
- */
- void
--incrByU16(U64 * pu64, unsigned int u16)
-+incrByU16(struct counter64 *pu64, unsigned int u16)
- {
- incrByU32(pu64, u16);
- }
-@@ -143,7 +143,7 @@ incrByU16(U64 * pu64, unsigned int u16)
- *
- */
- void
--incrByU32(U64 * pu64, unsigned int u32)
-+incrByU32(struct counter64 *pu64, unsigned int u32)
- {
- uint32_t tmp;
-
-@@ -161,7 +161,7 @@ incrByU32(U64 * pu64, unsigned int u32)
- * @param[out] pu64out pu64one - pu64two.
- */
- void
--u64Subtract(const U64 * pu64one, const U64 * pu64two, U64 * pu64out)
-+u64Subtract(const struct counter64 *pu64one, const struct counter64 *pu64two, struct counter64 *pu64out)
- {
- int carry;
-
-@@ -177,7 +177,7 @@ u64Subtract(const U64 * pu64one, const U64 * pu64two, U64 * pu64out)
- * @param[in,out] pu64out pu64out += pu64one.
- */
- void
--u64Incr(U64 * pu64out, const U64 * pu64one)
-+u64Incr(struct counter64 *pu64out, const struct counter64 *pu64one)
- {
- pu64out->high = (uint32_t)(pu64out->high + pu64one->high);
- incrByU32(pu64out, pu64one->low);
-@@ -191,9 +191,9 @@ u64Incr(U64 * pu64out, const U64 * pu64one)
- * @param[out] pu64out pu64out += (pu64one - pu64two)
- */
- void
--u64UpdateCounter(U64 * pu64out, const U64 * pu64one, const U64 * pu64two)
-+u64UpdateCounter(struct counter64 *pu64out, const struct counter64 *pu64one, const struct counter64 *pu64two)
- {
-- U64 tmp;
-+ struct counter64 tmp;
-
- u64Subtract(pu64one, pu64two, &tmp);
- u64Incr(pu64out, &tmp);
-@@ -208,7 +208,7 @@ netsnmp_feature_child_of(u64copy, netsnmp_unused)
- * @param[out] pu64one Where to store the copy - *pu64one = *pu64two.
- */
- void
--u64Copy(U64 * pu64one, const U64 * pu64two)
-+u64Copy(struct counter64 *pu64one, const struct counter64 *pu64two)
- {
- *pu64one = *pu64two;
- }
-@@ -220,7 +220,7 @@ u64Copy(U64 * pu64one, const U64 * pu64two)
- * @param[in] pu64 Number to be zeroed.
- */
- void
--zeroU64(U64 * pu64)
-+zeroU64(struct counter64 *pu64)
- {
- pu64->low = 0;
- pu64->high = 0;
-@@ -232,7 +232,7 @@ zeroU64(U64 * pu64)
- * @param[in] pu64 Number to be checked.
- */
- int
--isZeroU64(const U64 * pu64)
-+isZeroU64(const struct counter64 *pu64)
- {
- return pu64->low == 0 && pu64->high == 0;
- }
-@@ -390,10 +390,10 @@ netsnmp_c64_check32_and_update(struct counter64 *prev_val, struct counter64 *new
- /** Convert an unsigned 64-bit number to ASCII. */
- void
- printU64(char *buf, /* char [I64CHARSZ+1]; */
-- const U64 * pu64)
-+ const struct counter64 *pu64)
- {
-- U64 u64a;
-- U64 u64b;
-+ struct counter64 u64a;
-+ struct counter64 u64b;
-
- char aRes[I64CHARSZ + 1];
- unsigned int u;
-@@ -414,9 +414,9 @@ printU64(char *buf, /* char [I64CHARSZ+1]; */
- /** Convert a signed 64-bit number to ASCII. */
- void
- printI64(char *buf, /* char [I64CHARSZ+1]; */
-- const U64 * pu64)
-+ const struct counter64 *pu64)
- {
-- U64 u64a;
-+ struct counter64 u64a;
-
- if (pu64->high & 0x80000000) {
- u64a.high = (uint32_t) ~pu64->high;
-@@ -429,11 +429,11 @@ printI64(char *buf, /* char [I64CHARSZ+1]; */
- }
- }
-
--/** Convert a signed 64-bit integer from ASCII to U64. */
-+/** Convert a signed 64-bit integer from ASCII to struct counter64. */
- int
--read64(U64 * i64, const char *str)
-+read64(struct counter64 *i64, const char *str)
- {
-- U64 i64p;
-+ struct counter64 i64p;
- unsigned int u;
- int sign = 0;
- int ok = 0;
-diff --git a/snmplib/read_config.c b/snmplib/read_config.c
-index e159c27..ab5b6a3 100644
---- a/snmplib/read_config.c
-+++ b/snmplib/read_config.c
-@@ -2279,10 +2279,10 @@ read_config_read_memory(int type, char *readfrom,
- return readfrom;
-
- case ASN_COUNTER64:
-- if (*len < sizeof(U64))
-+ if (*len < sizeof(struct counter64))
- return NULL;
-- *len = sizeof(U64);
-- read64((U64 *) dataptr, readfrom);
-+ *len = sizeof(struct counter64);
-+ read64((struct counter64 *) dataptr, readfrom);
- readfrom = skip_token(readfrom);
- return readfrom;
- }
-diff --git a/testing/fulltests/unit-tests/T015int64_clib.c b/testing/fulltests/unit-tests/T015int64_clib.c
-index 5f5f4b6..66f66b7 100644
---- a/testing/fulltests/unit-tests/T015int64_clib.c
-+++ b/testing/fulltests/unit-tests/T015int64_clib.c
-@@ -1,4 +1,4 @@
--/* HEADER Testing 64-bit integer operations (U64). */
-+/* HEADER Testing 64-bit integer operations (struct counter64). */
-
- int i, j;
- char buf[22];
-@@ -15,7 +15,7 @@ static const int64_t intval[] = {
- };
-
- for (i = 0; i < sizeof(intval)/sizeof(intval[0]); ++i) {
-- U64 a, b;
-+ struct counter64 a, b;
- a.low = (uint32_t)intval[i];
- a.high = (uint32_t)(intval[i] >> 32);
- printI64(buf, &a);
-@@ -27,7 +27,7 @@ for (i = 0; i < sizeof(intval)/sizeof(intval[0]); ++i) {
-
- for (i = 0; i < sizeof(intval)/sizeof(intval[0]); ++i) {
- for (j = i; j < sizeof(intval)/sizeof(intval[0]); ++j) {
-- U64 a, b;
-+ struct counter64 a, b;
- uint64_t d;
- a.low = (uint32_t)intval[i];
- a.high = (uint32_t)(intval[i] >> 32);
-@@ -43,7 +43,7 @@ for (i = 0; i < sizeof(intval)/sizeof(intval[0]); ++i) {
-
- for (i = 0; i < sizeof(intval)/sizeof(intval[0]); ++i) {
- for (j = i; j < sizeof(intval)/sizeof(intval[0]); ++j) {
-- U64 a, b, c;
-+ struct counter64 a, b, c;
- uint64_t d;
- a.low = (uint32_t)intval[i];
- a.high = (uint32_t)(intval[i] >> 32);
-@@ -58,7 +58,7 @@ for (i = 0; i < sizeof(intval)/sizeof(intval[0]); ++i) {
- }
-
- {
-- U64 old_val, new_val;
-+ struct counter64 old_val, new_val;
- old_val.low = 7;
- old_val.high = 0;
- new_val = old_val;
---
-2.8.1
-
diff --git a/user/netifrc/APKBUILD b/user/netifrc/APKBUILD
index 78eb4ed26..da1ef7d28 100644
--- a/user/netifrc/APKBUILD
+++ b/user/netifrc/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=netifrc
-pkgver=0.6.0
+pkgver=0.6.1
pkgrel=0
pkgdesc="User-friendly network interface management scripts for OpenRC"
url="https://www.gentoo.org/proj/en/base/openrc/"
@@ -10,21 +10,20 @@ options="!check" # No test suite.
license="BSD-2-Clause"
depends="eudev openrc"
makedepends="eudev-dev pkgconf"
-install=""
subpackages="$pkgname-doc $pkgname-openrc"
-source="https://dev.gentoo.org/~robbat2/distfiles/netifrc-$pkgver.tar.bz2"
+source="https://gitweb.gentoo.org/proj/$pkgname.git/snapshot/$pkgname-$pkgver.tar.gz"
build() {
cd "$builddir"
- make LIBEXECDIR=/lib/$pkgname PF="$pkgname-$pkgver"
+ make UDEVDIR=/lib/udev LIBEXECDIR=/lib/$pkgname PF="$pkgname-$pkgver"
}
package() {
cd "$builddir"
- make LIBEXECDIR=/lib/$pkgname DESTDIR="$pkgdir" install
- for doc in README CREDITS TODO ChangeLog; do
+ make UDEVDIR=/lib/udev LIBEXECDIR=/lib/$pkgname DESTDIR="$pkgdir" install
+ for doc in README CREDITS TODO; do
install -m 644 "$builddir"/$doc "$pkgdir"/usr/share/doc/$pkgname/
done
}
-sha512sums="de47d146619bd716a0eda8149063691d9d71a895579ac50d3fea60bf0e48c516d6b37aed81c33083dc6e7d4bb74841bb6b143c23972669de9d76b8f7df7a5d23 netifrc-0.6.0.tar.bz2"
+sha512sums="798a882f87f153c31b415d77a06a2beca94a958ea982aca20bbc2cf6a7d800aedbd99a577734ea41d6a75807b13d640dd7fa5a51aa5a27055e9c552634ac7bdb netifrc-0.6.1.tar.gz"
diff --git a/user/nextcloud-client/APKBUILD b/user/nextcloud-client/APKBUILD
new file mode 100644
index 000000000..549383413
--- /dev/null
+++ b/user/nextcloud-client/APKBUILD
@@ -0,0 +1,46 @@
+# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=nextcloud-client
+pkgver=2.5.0_beta2
+_ver="${pkgver%_beta2}-beta2"
+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
+ openssl-dev sqlite-dev qt5-qtsvg-dev"
+subpackages="$pkgname-dev"
+source="$pkgname-$pkgver.tar.gz::https://github.com/nextcloud/desktop/archive/v$_ver.tar.gz
+ no-webengine.patch
+ openssl.patch"
+builddir="$srcdir/desktop-$_ver"
+
+build() {
+ cd "$builddir"
+ cmake \
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_SYSCONFDIR="/etc/$pkgname" \
+ -DNO_SHIBBOLETH=1 \
+ -DWITH_CRASHREPORTER=bool:OFF \
+ -DUNIT_TESTING=bool:ON
+ make
+}
+
+check() {
+ cd "$builddir"
+ make test
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="ed5ec8c0fd79d3f7f843ef1aefb9b94088b85dacca442388bc9a42e1ddbf1ee90482595135ffaffc85e40d223406964c903949ca1c2161fa0f6a2d6770a77cea nextcloud-client-2.5.0_beta2.tar.gz
+6bd83fdee02eabe7ae29fb1a677f62d4a416ec553a0f8c66b7544cafb9201dd7d8b04dc6fb21f447f6c1ece13b06f5d3cba57ac71b211e166607ef15350b3e57 no-webengine.patch
+e323a1074f8ac96667a420f076fdfc988e2fd97cdacd05d83ac54b467b567f5adbf635e7c4fb0414af0012b4016cc4c13441cb35ed3976bc970e514e81b65fd4 openssl.patch"
diff --git a/user/nextcloud-client/no-webengine.patch b/user/nextcloud-client/no-webengine.patch
new file mode 100644
index 000000000..d5beed35c
--- /dev/null
+++ b/user/nextcloud-client/no-webengine.patch
@@ -0,0 +1,1017 @@
+--- desktop-2.5.0-beta1/src/libsync/networkjobs.cpp 2018-08-02 16:32:56.000000000 -0400
++++ desktop-2.5.0-beta1/src/libsync/networkjobs.cpp 2018-08-15 19:10:43.340595365 -0400
+@@ -922,7 +922,7 @@
+
+ // WebViewFlow > OAuth > Shib > Basic
+ if (_account->serverVersionInt() >= Account::makeServerVersion(12, 0, 0)) {
+- result = WebViewFlow;
++ result = Basic;
+ }
+
+ qCInfo(lcDetermineAuthTypeJob) << "Auth type for" << _account->davUrl() << "is" << result;
+--- desktop-2.5.0-beta1/src/gui/creds/webflowcredentialsdialog.cpp 2018-08-02 16:32:56.000000000 -0400
++++ /dev/null 2018-08-15 19:12:03.420596798 -0400
+@@ -1,49 +0,0 @@
+-#include "webflowcredentialsdialog.h"
+-
+-#include <QVBoxLayout>
+-#include <QLabel>
+-
+-#include "wizard/webview.h"
+-
+-namespace OCC {
+-
+-WebFlowCredentialsDialog::WebFlowCredentialsDialog(QWidget *parent)
+- : QDialog(parent)
+-{
+- _layout = new QVBoxLayout(this);
+-
+- //QString msg = tr("You have been logged out of %1 as user %2, please login again")
+- // .arg(_account->displayName(), _user);
+- _infoLabel = new QLabel();
+- _layout->addWidget(_infoLabel);
+-
+- _webView = new WebView();
+- _layout->addWidget(_webView);
+-
+- _errorLabel = new QLabel();
+- _errorLabel->hide();
+- _layout->addWidget(_errorLabel);
+-
+- setLayout(_layout);
+-
+- connect(_webView, &WebView::urlCatched, this, &WebFlowCredentialsDialog::urlCatched);
+-}
+-
+-void WebFlowCredentialsDialog::setUrl(const QUrl &url) {
+- _webView->setUrl(url);
+-}
+-
+-void WebFlowCredentialsDialog::setInfo(const QString &msg) {
+- _infoLabel->setText(msg);
+-}
+-
+-void WebFlowCredentialsDialog::setError(const QString &error) {
+- if (error.isEmpty()) {
+- _errorLabel->hide();
+- } else {
+- _errorLabel->setText(error);
+- _errorLabel->show();
+- }
+-}
+-
+-}
+--- desktop-2.5.0-beta1/src/gui/creds/webflowcredentials.cpp 2018-08-02 16:32:56.000000000 -0400
++++ /dev/null 2018-08-15 19:12:03.420596798 -0400
+@@ -1,258 +0,0 @@
+-#include "webflowcredentials.h"
+-
+-#include "creds/httpcredentials.h"
+-
+-#include <QAuthenticator>
+-#include <QNetworkAccessManager>
+-#include <QNetworkReply>
+-#include <QPointer>
+-#include <QTimer>
+-#include <keychain.h>
+-#include <QDialog>
+-#include <QVBoxLayout>
+-#include <QLabel>
+-
+-#include "accessmanager.h"
+-#include "account.h"
+-#include "theme.h"
+-#include "wizard/webview.h"
+-#include "webflowcredentialsdialog.h"
+-
+-using namespace QKeychain;
+-
+-namespace OCC {
+-
+-Q_LOGGING_CATEGORY(lcWebFlowCredentials, "sync.credentials.webflow", QtInfoMsg)
+-
+-WebFlowCredentials::WebFlowCredentials()
+- : _ready(false),
+- _credentialsValid(false)
+-{
+-
+-}
+-
+-WebFlowCredentials::WebFlowCredentials(const QString &user, const QString &password, const QSslCertificate &certificate, const QSslKey &key)
+- : _user(user)
+- , _password(password)
+- , _clientSslKey(key)
+- , _clientSslCertificate(certificate)
+- , _ready(true)
+- , _credentialsValid(true)
+-{
+-
+-}
+-
+-QString WebFlowCredentials::authType() const {
+- return QString::fromLatin1("webflow");
+-}
+-
+-QString WebFlowCredentials::user() const {
+- return _user;
+-}
+-
+-QString WebFlowCredentials::password() const {
+- return _password;
+-}
+-
+-QNetworkAccessManager *WebFlowCredentials::createQNAM() const {
+- qCInfo(lcWebFlowCredentials()) << "Get QNAM";
+- AccessManager *qnam = new AccessManager();
+-
+- connect(qnam, &AccessManager::authenticationRequired, this, &WebFlowCredentials::slotAuthentication);
+- connect(qnam, &AccessManager::finished, this, &WebFlowCredentials::slotFinished);
+-
+- return qnam;
+-}
+-
+-bool WebFlowCredentials::ready() const {
+- return _ready;
+-}
+-
+-void WebFlowCredentials::fetchFromKeychain() {
+- _wasFetched = true;
+-
+- // Make sure we get the user fromt he config file
+- fetchUser();
+-
+- if (ready()) {
+- emit fetched();
+- } else {
+- qCInfo(lcWebFlowCredentials()) << "Fetch from keyhchain!";
+- fetchFromKeychainHelper();
+- }
+-}
+-
+-void WebFlowCredentials::askFromUser() {
+- _askDialog = new WebFlowCredentialsDialog();
+-
+- QUrl url = _account->url();
+- QString path = url.path() + "/index.php/login/flow";
+- url.setPath(path);
+- _askDialog->setUrl(url);
+-
+- QString msg = tr("You have been logged out of %1 as user %2. Please login again")
+- .arg(_account->displayName(), _user);
+- _askDialog->setInfo(msg);
+-
+- _askDialog->show();
+-
+- connect(_askDialog, &WebFlowCredentialsDialog::urlCatched, this, &WebFlowCredentials::slotAskFromUserCredentialsProvided);
+-
+- qCWarning(lcWebFlowCredentials()) << "User needs to reauth!";
+-}
+-
+-void WebFlowCredentials::slotAskFromUserCredentialsProvided(const QString &user, const QString &pass, const QString &host) {
+- Q_UNUSED(host);
+-
+- if (_user != user) {
+- qCInfo(lcWebFlowCredentials()) << "Authed with the wrong user!";
+-
+- QString msg = tr("Please login with the user: %1")
+- .arg(_user);
+- _askDialog->setError(msg);
+-
+- QUrl url = _account->url();
+- QString path = url.path() + "/index.php/login/flow";
+- url.setPath(path);
+- _askDialog->setUrl(url);
+-
+- return;
+- }
+-
+- qCInfo(lcWebFlowCredentials()) << "Obtained a new password";
+-
+- _password = pass;
+- _ready = true;
+- _credentialsValid = true;
+- persist();
+- emit asked();
+-
+- _askDialog->close();
+- delete _askDialog;
+- _askDialog = NULL;
+-}
+-
+-
+-bool WebFlowCredentials::stillValid(QNetworkReply *reply) {
+- qCWarning(lcWebFlowCredentials()) << "Still valid?";
+- qCWarning(lcWebFlowCredentials()) << reply->error();
+- qCWarning(lcWebFlowCredentials()) << reply->errorString();
+- return (reply->error() != QNetworkReply::AuthenticationRequiredError);
+-}
+-
+-void WebFlowCredentials::persist() {
+- if (_user.isEmpty()) {
+- // We don't even have a user nothing to see here move along
+- return;
+- }
+-
+- _account->setCredentialSetting("user", _user);
+- _account->wantsAccountSaved(_account);
+-
+- //TODO: Add ssl cert and key storing
+- WritePasswordJob *job = new WritePasswordJob(Theme::instance()->appName());
+- job->setInsecureFallback(false);
+- job->setKey(keychainKey(_account->url().toString(), _user, _account->id()));
+- job->setTextData(_password);
+- job->start();
+-}
+-
+-void WebFlowCredentials::invalidateToken() {
+- // clear the session cookie.
+- _account->clearCookieJar();
+-
+- // let QNAM forget about the password
+- // This needs to be done later in the event loop because we might be called (directly or
+- // indirectly) from QNetworkAccessManagerPrivate::authenticationRequired, which itself
+- // is a called from a BlockingQueuedConnection from the Qt HTTP thread. And clearing the
+- // cache needs to synchronize again with the HTTP thread.
+- QTimer::singleShot(0, _account, &Account::clearQNAMCache);
+-}
+-
+-void WebFlowCredentials::forgetSensitiveData(){
+- _password = QString();
+- _ready = false;
+-
+- fetchUser();
+-
+- const QString kck = keychainKey(_account->url().toString(), _user, _account->id());
+- if (kck.isEmpty()) {
+- qCWarning(lcWebFlowCredentials()) << "InvalidateToken: User is empty, bailing out!";
+- return;
+- }
+-
+- DeletePasswordJob *job = new DeletePasswordJob(Theme::instance()->appName());
+- job->setInsecureFallback(false);
+- job->setKey(kck);
+- job->start();
+-
+- invalidateToken();
+-}
+-
+-void WebFlowCredentials::setAccount(Account *account) {
+- AbstractCredentials::setAccount(account);
+- if (_user.isEmpty()) {
+- fetchUser();
+- }
+-}
+-
+-QString WebFlowCredentials::fetchUser() {
+- _user = _account->credentialSetting("user").toString();
+- return _user;
+-}
+-
+-void WebFlowCredentials::slotAuthentication(QNetworkReply *reply, QAuthenticator *authenticator) {
+- Q_UNUSED(reply);
+-
+- if (!_ready) {
+- return;
+- }
+-
+- if (_credentialsValid == false) {
+- return;
+- }
+-
+- qCWarning(lcWebFlowCredentials()) << "Requires authentication";
+-
+- authenticator->setUser(_user);
+- authenticator->setPassword(_password);
+- _credentialsValid = false;
+-}
+-
+-void WebFlowCredentials::slotFinished(QNetworkReply *reply) {
+- qCInfo(lcWebFlowCredentials()) << "request finished";
+-
+- if (reply->error() == QNetworkReply::NoError) {
+- _credentialsValid = true;
+- }
+-}
+-
+-void WebFlowCredentials::fetchFromKeychainHelper() {
+- const QString kck = keychainKey(
+- _account->url().toString(),
+- _user,
+- _account->id());
+-
+- ReadPasswordJob *job = new ReadPasswordJob(Theme::instance()->appName());
+- job->setInsecureFallback(false);
+- job->setKey(kck);
+- connect(job, &Job::finished, this, &WebFlowCredentials::slotReadPasswordJobDone);
+- job->start();
+-}
+-
+-void WebFlowCredentials::slotReadPasswordJobDone(Job *incomingJob) {
+- QKeychain::ReadPasswordJob *job = static_cast<ReadPasswordJob *>(incomingJob);
+- QKeychain::Error error = job->error();
+-
+- if (error == QKeychain::NoError) {
+- _password = job->textData();
+- _ready = true;
+- _credentialsValid = true;
+- } else {
+- _ready = false;
+- }
+-
+- emit fetched();
+-}
+-
+-}
+--- desktop-2.5.0-beta1/src/gui/creds/webflowcredentialsdialog.h 2018-08-02 16:32:56.000000000 -0400
++++ /dev/null 2018-08-15 19:12:03.420596798 -0400
+@@ -1,36 +0,0 @@
+-#ifndef WEBFLOWCREDENTIALSDIALOG_H
+-#define WEBFLOWCREDENTIALSDIALOG_H
+-
+-#include <QDialog>
+-#include <QUrl>
+-
+-class QLabel;
+-class QVBoxLayout;
+-
+-namespace OCC {
+-
+-class WebView;
+-
+-class WebFlowCredentialsDialog : public QDialog
+-{
+- Q_OBJECT
+-public:
+- WebFlowCredentialsDialog(QWidget *parent = 0);
+-
+- void setUrl(const QUrl &url);
+- void setInfo(const QString &msg);
+- void setError(const QString &error);
+-
+-signals:
+- void urlCatched(const QString user, const QString pass, const QString host);
+-
+-private:
+- WebView *_webView;
+- QLabel *_errorLabel;
+- QLabel *_infoLabel;
+- QVBoxLayout *_layout;
+-};
+-
+-}
+-
+-#endif // WEBFLOWCREDENTIALSDIALOG_H
+--- desktop-2.5.0-beta1/src/gui/creds/credentialsfactory.cpp 2018-08-02 16:32:56.000000000 -0400
++++ desktop-2.5.0-beta1/src/gui/creds/credentialsfactory.cpp 2018-08-15 19:29:27.240615471 -0400
+@@ -21,7 +21,6 @@
+ #ifndef NO_SHIBBOLETH
+ #include "creds/shibbolethcredentials.h"
+ #endif
+-#include "creds/webflowcredentials.h"
+
+ namespace OCC {
+
+@@ -40,8 +39,6 @@
+ } else if (type == "shibboleth") {
+ return new ShibbolethCredentials;
+ #endif
+- } else if (type == "webflow") {
+- return new WebFlowCredentials;
+ } else {
+ qCWarning(lcGuiCredentials, "Unknown credentials type: %s", qPrintable(type));
+ return new DummyCredentials;
+--- desktop-2.5.0-beta1/src/gui/creds/webflowcredentials.h 2018-08-02 16:32:56.000000000 -0400
++++ /dev/null 2018-08-15 19:12:03.420596798 -0400
+@@ -1,79 +0,0 @@
+-#ifndef WEBFLOWCREDENTIALS_H
+-#define WEBFLOWCREDENTIALS_H
+-
+-#include <QSslCertificate>
+-#include <QSslKey>
+-
+-#include "creds/abstractcredentials.h"
+-
+-class QDialog;
+-class QLabel;
+-class QNetworkReply;
+-class QAuthenticator;
+-
+-namespace QKeychain {
+- class Job;
+-}
+-
+-namespace OCC {
+-
+-class WebFlowCredentialsDialog;
+-
+-class WebFlowCredentials : public AbstractCredentials
+-{
+- Q_OBJECT
+-public:
+- explicit WebFlowCredentials();
+- WebFlowCredentials(const QString &user, const QString &password, const QSslCertificate &certificate = QSslCertificate(), const QSslKey &key = QSslKey());
+-
+- QString authType() const override;
+- QString user() const override;
+- QString password() const;
+- QNetworkAccessManager *createQNAM() const override;
+-
+- bool ready() const override;
+-
+- void fetchFromKeychain() override;
+- void askFromUser() override;
+-
+- bool stillValid(QNetworkReply *reply) override;
+- void persist() override;
+- void invalidateToken() override;
+- void forgetSensitiveData() override;
+-
+- // To fetch the user name as early as possible
+- void setAccount(Account *account) override;
+-
+-private slots:
+- void slotAuthentication(QNetworkReply *reply, QAuthenticator *authenticator);
+- void slotFinished(QNetworkReply *reply);
+-
+- void slotReadPasswordJobDone(QKeychain::Job *incomingJob);
+- void slotAskFromUserCredentialsProvided(const QString &user, const QString &pass, const QString &host);
+-
+-private:
+- /** Reads data from keychain locations
+- *
+- * Goes through
+- * slotReadClientCertPEMJobDone to
+- * slotReadClientCertPEMJobDone to
+- * slotReadJobDone
+- */
+- void fetchFromKeychainHelper();
+-
+- QString fetchUser();
+-
+- QString _user;
+- QString _password;
+- QSslKey _clientSslKey;
+- QSslCertificate _clientSslCertificate;
+-
+- bool _ready;
+- bool _credentialsValid;
+-
+- WebFlowCredentialsDialog *_askDialog;
+-};
+-
+-}
+-
+-#endif // WEBFLOWCREDENTIALS_H
+--- desktop-2.5.0-beta1/src/gui/CMakeLists.txt 2018-08-02 16:32:56.000000000 -0400
++++ desktop-2.5.0-beta1/src/gui/CMakeLists.txt 2018-08-15 19:28:53.640614870 -0400
+@@ -41,7 +41,6 @@
+ wizard/owncloudoauthcredspage.ui
+ wizard/owncloudsetupnocredspage.ui
+ wizard/owncloudwizardresultpage.ui
+- wizard/webview.ui
+ )
+
+ set(client_SRCS
+@@ -104,8 +103,6 @@
+ creds/credentialsfactory.cpp
+ creds/httpcredentialsgui.cpp
+ creds/oauth.cpp
+- creds/webflowcredentials.cpp
+- creds/webflowcredentialsdialog.cpp
+ wizard/postfixlineedit.cpp
+ wizard/abstractcredswizardpage.cpp
+ wizard/owncloudadvancedsetuppage.cpp
+@@ -116,8 +113,6 @@
+ wizard/owncloudwizardcommon.cpp
+ wizard/owncloudwizard.cpp
+ wizard/owncloudwizardresultpage.cpp
+- wizard/webviewpage.cpp
+- wizard/webview.cpp
+ )
+
+ IF(NOT NO_SHIBBOLETH)
+@@ -290,7 +290,7 @@
+ endif()
+
+ add_library(updater STATIC ${updater_SRCS})
+-target_link_libraries(updater ${synclib_NAME} Qt5::Widgets Qt5::Network Qt5::Xml Qt5::WebEngineWidgets)
++target_link_libraries(updater ${synclib_NAME} Qt5::Widgets Qt5::Network Qt5::Xml)
+ target_include_directories(updater PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+
+ set_target_properties( ${APPLICATION_EXECUTABLE} PROPERTIES
+--- desktop-2.5.0-beta2/src/gui/wizard/webview.cpp 2018-08-24 12:54:42.000000000 +0000
++++ /dev/null 2018-10-03 06:10:44.230254545 +0000
+@@ -1,162 +0,0 @@
+-#include "webview.h"
+-
+-#include <QWebEnginePage>
+-#include <QWebEngineProfile>
+-#include <QWebEngineUrlRequestInterceptor>
+-#include <QWebEngineUrlRequestJob>
+-#include <QWebEngineUrlSchemeHandler>
+-#include <QWebEngineView>
+-#include <QDesktopServices>
+-#include <QProgressBar>
+-#include <QLoggingCategory>
+-#include <QLocale>
+-
+-#include "common/utility.h"
+-
+-namespace OCC {
+-
+-Q_LOGGING_CATEGORY(lcWizardWebiew, "gui.wizard.webview", QtInfoMsg)
+-
+-
+-class WebViewPageUrlRequestInterceptor : public QWebEngineUrlRequestInterceptor
+-{
+- Q_OBJECT
+-public:
+- WebViewPageUrlRequestInterceptor(QObject *parent = 0);
+- void interceptRequest(QWebEngineUrlRequestInfo &info);
+-};
+-
+-class WebViewPageUrlSchemeHandler : public QWebEngineUrlSchemeHandler
+-{
+- Q_OBJECT
+-public:
+- WebViewPageUrlSchemeHandler(QObject *parent = 0);
+- void requestStarted(QWebEngineUrlRequestJob *request);
+-
+-Q_SIGNALS:
+- void urlCatched(QString user, QString pass, QString host);
+-};
+-
+-class WebEnginePage : public QWebEnginePage {
+-public:
+- WebEnginePage(QWebEngineProfile *profile, QObject* parent = nullptr);
+- QWebEnginePage * createWindow(QWebEnginePage::WebWindowType type) override;
+-};
+-
+-// We need a separate class here, since we cannot simply return the same WebEnginePage object
+-// this leads to a strage segfault somewhere deep inside of the QWebEngine code
+-class ExternalWebEnginePage : public QWebEnginePage {
+-public:
+- ExternalWebEnginePage(QWebEngineProfile *profile, QObject* parent = nullptr);
+- bool acceptNavigationRequest(const QUrl &url, QWebEnginePage::NavigationType type, bool isMainFrame) override;
+-};
+-
+-WebView::WebView(QWidget *parent)
+- : QWidget(parent),
+- _ui()
+-{
+- _ui.setupUi(this);
+-
+- _webview = new QWebEngineView(this);
+- _profile = new QWebEngineProfile(this);
+- _page = new WebEnginePage(_profile);
+- _interceptor = new WebViewPageUrlRequestInterceptor(this);
+- _schemeHandler = new WebViewPageUrlSchemeHandler(this);
+-
+- const QString userAgent(Utility::userAgentString());
+- _profile->setHttpUserAgent(userAgent);
+- QWebEngineProfile::defaultProfile()->setHttpUserAgent(userAgent);
+- _profile->setRequestInterceptor(_interceptor);
+- _profile->installUrlSchemeHandler("nc", _schemeHandler);
+-
+- /*
+- * Set a proper accept langauge to the language of the client
+- * code from: http://code.qt.io/cgit/qt/qtbase.git/tree/src/network/access/qhttpnetworkconnection.cpp
+- */
+- {
+- QString systemLocale = QLocale::system().name().replace(QChar::fromLatin1('_'),QChar::fromLatin1('-'));
+- QString acceptLanguage;
+- if (systemLocale == QLatin1String("C")) {
+- acceptLanguage = QString::fromLatin1("en,*");
+- } else if (systemLocale.startsWith(QLatin1String("en-"))) {
+- acceptLanguage = systemLocale + QLatin1String(",*");
+- } else {
+- acceptLanguage = systemLocale + QLatin1String(",en,*");
+- }
+- _profile->setHttpAcceptLanguage(acceptLanguage);
+- }
+-
+- _webview->setPage(_page);
+- _ui.verticalLayout->addWidget(_webview);
+-
+- connect(_webview, &QWebEngineView::loadProgress, _ui.progressBar, &QProgressBar::setValue);
+- connect(_schemeHandler, &WebViewPageUrlSchemeHandler::urlCatched, this, &WebView::urlCatched);
+-}
+-
+-void WebView::setUrl(const QUrl &url) {
+- _page->setUrl(url);
+-}
+-
+-WebViewPageUrlRequestInterceptor::WebViewPageUrlRequestInterceptor(QObject *parent)
+- : QWebEngineUrlRequestInterceptor(parent) {
+-
+-}
+-
+-void WebViewPageUrlRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo &info) {
+- info.setHttpHeader("OCS-APIREQUEST", "true");
+-}
+-
+-WebViewPageUrlSchemeHandler::WebViewPageUrlSchemeHandler(QObject *parent)
+- : QWebEngineUrlSchemeHandler(parent) {
+-
+-}
+-
+-void WebViewPageUrlSchemeHandler::requestStarted(QWebEngineUrlRequestJob *request) {
+- QUrl url = request->requestUrl();
+-
+- QString path = url.path().mid(1);
+- QStringList parts = path.split("&");
+-
+- QString server;
+- QString user;
+- QString password;
+-
+- for (QString part : parts) {
+- if (part.startsWith("server:")) {
+- server = part.mid(7);
+- } else if (part.startsWith("user:")) {
+- user = part.mid(5);
+- } else if (part.startsWith("password:")) {
+- password = part.mid(9);
+- }
+- }
+-
+- qCInfo(lcWizardWebiew()) << "Got user: " << user << ", server: " << server;
+-
+- emit urlCatched(user, password, server);
+-}
+-
+-
+-WebEnginePage::WebEnginePage(QWebEngineProfile *profile, QObject* parent) : QWebEnginePage(profile, parent) {
+-
+-}
+-
+-QWebEnginePage * WebEnginePage::createWindow(QWebEnginePage::WebWindowType type) {
+- ExternalWebEnginePage *view = new ExternalWebEnginePage(this->profile());
+- return view;
+-}
+-
+-ExternalWebEnginePage::ExternalWebEnginePage(QWebEngineProfile *profile, QObject* parent) : QWebEnginePage(profile, parent) {
+-
+-}
+-
+-
+-bool ExternalWebEnginePage::acceptNavigationRequest(const QUrl &url, QWebEnginePage::NavigationType type, bool isMainFrame)
+-{
+- QDesktopServices::openUrl(url);
+- return false;
+-}
+-
+-}
+-
+-#include "webview.moc"
+--- desktop-2.5.0-beta1/src/gui/wizard/webviewpage.cpp 2018-08-02 16:32:56.000000000 -0400
++++ /dev/null 2018-08-15 19:06:30.250590838 -0400
+@@ -1,73 +0,0 @@
+-#include "webviewpage.h"
+-
+-#include <QWebEngineUrlRequestJob>
+-#include <QProgressBar>
+-#include <QVBoxLayout>
+-
+-#include "owncloudwizard.h"
+-#include "creds/webflowcredentials.h"
+-#include "webview.h"
+-#include "account.h"
+-
+-namespace OCC {
+-
+-Q_LOGGING_CATEGORY(lcWizardWebiewPage, "gui.wizard.webviewpage", QtInfoMsg)
+-
+-
+-WebViewPage::WebViewPage(QWidget *parent)
+- : AbstractCredentialsWizardPage()
+-{
+- _ocWizard = qobject_cast<OwncloudWizard *>(parent);
+-
+- qCInfo(lcWizardWebiewPage()) << "Time for a webview!";
+- _webView = new WebView(this);
+-
+- QVBoxLayout *layout = new QVBoxLayout(this);
+- layout->addWidget(_webView);
+- setLayout(layout);
+-
+- connect(_webView, &WebView::urlCatched, this, &WebViewPage::urlCatched);
+-}
+-
+-void WebViewPage::initializePage() {
+- QString url;
+- if (_ocWizard->registration()) {
+- url = "https://nextcloud.com/register";
+- } else {
+- url = _ocWizard->ocUrl();
+- url += "/index.php/login/flow";
+- }
+- qCInfo(lcWizardWebiewPage()) << "Url to auth at: " << url;
+- _webView->setUrl(QUrl(url));
+-}
+-
+-int WebViewPage::nextId() const {
+- return WizardCommon::Page_AdvancedSetup;
+-}
+-
+-bool WebViewPage::isComplete() const {
+- return false;
+-}
+-
+-AbstractCredentials* WebViewPage::getCredentials() const {
+- return new WebFlowCredentials(_user, _pass, _ocWizard->_clientSslCertificate, _ocWizard->_clientSslKey);
+-}
+-
+-void WebViewPage::setConnected() {
+- qCInfo(lcWizardWebiewPage()) << "YAY! we are connected!";
+-}
+-
+-void WebViewPage::urlCatched(QString user, QString pass, QString host) {
+- qCInfo(lcWizardWebiewPage()) << "Got user: " << user << ", server: " << host;
+-
+- _user = user;
+- _pass = pass;
+-
+- AccountPtr account = _ocWizard->account();
+- account->setUrl(host);
+-
+- qCInfo(lcWizardWebiewPage()) << "URL: " << field("OCUrl").toString();
+- emit connectToOCUrl(host);
+-}
+-
+-}
+--- desktop-2.5.0-beta2/src/gui/wizard/webview.h 2018-08-24 12:54:42.000000000 +0000
++++ /dev/null 2018-10-03 06:11:27.640255322 +0000
+@@ -1,42 +0,0 @@
+-#ifndef WEBVIEW_H
+-#define WEBVIEW_H
+-
+-#include <QUrl>
+-#include <QWidget>
+-
+-#include "ui_webview.h"
+-
+-class QWebEngineView;
+-class QWebEngineProfile;
+-class QWebEnginePage;
+-
+-namespace OCC {
+-
+-class WebViewPageUrlRequestInterceptor;
+-class WebViewPageUrlSchemeHandler;
+-class WebEnginePage;
+-
+-class WebView : public QWidget
+-{
+- Q_OBJECT
+-public:
+- WebView(QWidget *parent = 0);
+- void setUrl(const QUrl &url);
+-
+-signals:
+- void urlCatched(const QString user, const QString pass, const QString host);
+-
+-private:
+- Ui_WebView _ui;
+-
+- QWebEngineView *_webview;
+- QWebEngineProfile *_profile;
+- WebEnginePage *_page;
+-
+- WebViewPageUrlRequestInterceptor *_interceptor;
+- WebViewPageUrlSchemeHandler *_schemeHandler;
+-};
+-
+-}
+-
+-#endif // WEBVIEW_H
+--- desktop-2.5.0-beta1/src/gui/wizard/webviewpage.h 2018-08-02 16:32:56.000000000 -0400
++++ /dev/null 2018-08-15 19:25:56.010611692 -0400
+@@ -1,41 +0,0 @@
+-#ifndef WEBVIEWPAGE_H
+-#define WEBVIEWPAGE_H
+-
+-#include "wizard/abstractcredswizardpage.h"
+-
+-namespace OCC {
+-
+-class AbstractCredentials;
+-class OwncloudWizard;
+-class WebView;
+-
+-class WebViewPage : public AbstractCredentialsWizardPage
+-{
+- Q_OBJECT
+-public:
+- WebViewPage(QWidget *parent = 0);
+-
+- void initializePage() Q_DECL_OVERRIDE;
+- int nextId() const Q_DECL_OVERRIDE;
+- bool isComplete() const;
+-
+- AbstractCredentials* getCredentials() const;
+- void setConnected();
+-
+-signals:
+- void connectToOCUrl(const QString&);
+-
+-private slots:
+- void urlCatched(QString user, QString pass, QString host);
+-
+-private:
+- OwncloudWizard *_ocWizard;
+- WebView *_webView;
+-
+- QString _user;
+- QString _pass;
+-};
+-
+-}
+-
+-#endif // WEBVIEWPAGE_H
+--- desktop-2.5.0-beta1/src/gui/wizard/owncloudsetuppage.cpp 2018-08-02 16:32:56.000000000 -0400
++++ desktop-2.5.0-beta1/src/gui/wizard/owncloudsetuppage.cpp 2018-08-15 19:23:33.100609136 -0400
+@@ -161,7 +161,7 @@
+ void OwncloudSetupPage::slotGotoProviderList()
+ {
+ _ocWizard->setRegistration(true);
+- _ocWizard->setAuthType(DetermineAuthTypeJob::AuthType::WebViewFlow);
++ _ocWizard->setAuthType(DetermineAuthTypeJob::AuthType::Basic);
+ _authTypeKnown = true;
+ _checking = false;
+ emit completeChanged();
+@@ -278,8 +278,6 @@
+ return WizardCommon::Page_OAuthCreds;
+ case DetermineAuthTypeJob::Shibboleth:
+ return WizardCommon::Page_ShibbolethCreds;
+- case DetermineAuthTypeJob::WebViewFlow:
+- return WizardCommon::Page_WebView;
+ }
+ return WizardCommon::Page_HttpCreds;
+ }
+--- desktop-2.5.0-beta1/src/gui/wizard/webview.ui 2018-08-02 16:32:56.000000000 -0400
++++ /dev/null 2018-08-15 19:24:43.320610392 -0400
+@@ -1,80 +0,0 @@
+-<?xml version="1.0" encoding="UTF-8"?>
+-<ui version="4.0">
+- <class>WebView</class>
+- <widget class="QWidget" name="WebView">
+- <property name="geometry">
+- <rect>
+- <x>0</x>
+- <y>0</y>
+- <width>800</width>
+- <height>700</height>
+- </rect>
+- </property>
+- <property name="sizePolicy">
+- <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
+- <horstretch>0</horstretch>
+- <verstretch>0</verstretch>
+- </sizepolicy>
+- </property>
+- <property name="minimumSize">
+- <size>
+- <width>800</width>
+- <height>650</height>
+- </size>
+- </property>
+- <property name="windowTitle">
+- <string>Form</string>
+- </property>
+- <layout class="QGridLayout" name="gridLayout">
+- <property name="leftMargin">
+- <number>0</number>
+- </property>
+- <property name="topMargin">
+- <number>0</number>
+- </property>
+- <property name="rightMargin">
+- <number>0</number>
+- </property>
+- <property name="bottomMargin">
+- <number>0</number>
+- </property>
+- <item row="1" column="0">
+- <layout class="QVBoxLayout" name="verticalLayout">
+- <property name="spacing">
+- <number>0</number>
+- </property>
+- <item>
+- <widget class="QProgressBar" name="progressBar">
+- <property name="maximumSize">
+- <size>
+- <width>16777215</width>
+- <height>5</height>
+- </size>
+- </property>
+- <property name="styleSheet">
+- <string notr="true">QProgressBar::chunk {
+- background-color: rgba(0, 130, 201, 255);
+-}</string>
+- </property>
+- <property name="value">
+- <number>0</number>
+- </property>
+- <property name="textVisible">
+- <bool>false</bool>
+- </property>
+- </widget>
+- </item>
+- <item>
+- <layout class="QHBoxLayout" name="resultLayout">
+- <property name="spacing">
+- <number>0</number>
+- </property>
+- </layout>
+- </item>
+- </layout>
+- </item>
+- </layout>
+- </widget>
+- <resources/>
+- <connections/>
+-</ui>
+--- desktop-2.5.0-beta1/src/gui/wizard/owncloudwizard.h 2018-08-02 16:32:56.000000000 -0400
++++ desktop-2.5.0-beta1/src/gui/wizard/owncloudwizard.h 2018-08-15 19:22:00.430607478 -0400
+@@ -39,7 +39,6 @@
+ class OwncloudWizardResultPage;
+ class AbstractCredentials;
+ class AbstractCredentialsWizardPage;
+-class WebViewPage;
+
+ /**
+ * @brief The OwncloudWizard class
+@@ -106,7 +105,6 @@
+ OwncloudAdvancedSetupPage *_advancedSetupPage;
+ OwncloudWizardResultPage *_resultPage;
+ AbstractCredentialsWizardPage *_credentialsPage;
+- WebViewPage *_webViewPage;
+
+ QStringList _setupLog;
+
+--- desktop-2.5.0-beta1/src/gui/wizard/owncloudwizard.cpp 2018-08-02 16:32:56.000000000 -0400
++++ desktop-2.5.0-beta1/src/gui/wizard/owncloudwizard.cpp 2018-08-15 19:04:35.670588788 -0400
+@@ -26,7 +26,6 @@
+ #endif
+ #include "wizard/owncloudadvancedsetuppage.h"
+ #include "wizard/owncloudwizardresultpage.h"
+-#include "wizard/webviewpage.h"
+
+ #include "QProgressIndicator.h"
+
+@@ -51,7 +50,6 @@
+ , _advancedSetupPage(new OwncloudAdvancedSetupPage)
+ , _resultPage(new OwncloudWizardResultPage)
+ , _credentialsPage(0)
+- , _webViewPage(new WebViewPage(this))
+ , _setupLog()
+ , _registration(false)
+ {
+@@ -64,7 +62,6 @@
+ #endif
+ setPage(WizardCommon::Page_AdvancedSetup, _advancedSetupPage);
+ setPage(WizardCommon::Page_Result, _resultPage);
+- setPage(WizardCommon::Page_WebView, _webViewPage);
+
+ connect(this, &QDialog::finished, this, &OwncloudWizard::basicSetupFinished);
+
+@@ -79,7 +76,6 @@
+ #ifndef NO_SHIBBOLETH
+ connect(_shibbolethCredsPage, &OwncloudShibbolethCredsPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
+ #endif
+- connect(_webViewPage, &WebViewPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
+ connect(_advancedSetupPage, &OwncloudAdvancedSetupPage::createLocalAndRemoteFolders,
+ this, &OwncloudWizard::createLocalAndRemoteFolders);
+ connect(this, &QWizard::customButtonClicked, this, &OwncloudWizard::skipFolderConfiguration);
+@@ -168,10 +164,6 @@
+ break;
+ #endif
+
+- case WizardCommon::Page_WebView:
+- _webViewPage->setConnected();
+- break;
+-
+ case WizardCommon::Page_AdvancedSetup:
+ _advancedSetupPage->directoriesCreated();
+ break;
+@@ -195,8 +187,6 @@
+ #endif
+ if (type == DetermineAuthTypeJob::OAuth) {
+ _credentialsPage = _browserCredsPage;
+- } else if (type == DetermineAuthTypeJob::WebViewFlow) {
+- _credentialsPage = _webViewPage;
+ } else { // try Basic auth even for "Unknown"
+ _credentialsPage = _httpCredsPage;
+ }
+--- desktop-2.5.0-beta1/src/CMakeLists.txt 2018-08-02 16:32:56.000000000 -0400
++++ desktop-2.5.0-beta1/src/CMakeLists.txt 2018-08-15 20:59:59.390712646 -0400
+@@ -4,7 +4,7 @@
+
+ set(synclib_NAME ${APPLICATION_EXECUTABLE}sync)
+
+-find_package(Qt5 5.6 COMPONENTS Core Network Xml Concurrent WebEngineWidgets WebEngine REQUIRED)
++find_package(Qt5 5.6 COMPONENTS Core Network Xml Concurrent REQUIRED)
+ if (Qt5Core_VERSION VERSION_LESS 5.9.0)
+ message(STATUS "For HTTP/2 support, compile with Qt 5.9 or higher.")
+ endif()
diff --git a/user/nextcloud-client/openssl.patch b/user/nextcloud-client/openssl.patch
new file mode 100644
index 000000000..426fa0cfb
--- /dev/null
+++ b/user/nextcloud-client/openssl.patch
@@ -0,0 +1,11 @@
+--- desktop-2.5.0-beta2/CMakeLists.txt 2018-08-24 12:54:42.000000000 +0000
++++ desktop-2.5.0-beta2/CMakeLists.txt 2018-10-03 06:19:15.840263697 +0000
+@@ -183,7 +183,7 @@ if(BUILD_CLIENT)
+ endif()
+ find_package(Sphinx)
+ find_package(PdfLatex)
+- find_package(OpenSSL 1.1 REQUIRED )
++ find_package(OpenSSL 1.0 REQUIRED )
+
+ find_package(ZLIB REQUIRED)
+ find_package(GLib2)
diff --git a/user/nghttp2/APKBUILD b/user/nghttp2/APKBUILD
index f3c0b14f9..50b89c95d 100644
--- a/user/nghttp2/APKBUILD
+++ b/user/nghttp2/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer:
pkgname=nghttp2
-pkgver=1.32.0
+pkgver=1.33.0
pkgrel=0
pkgdesc="Experimental HTTP/2 client, server and proxy"
url="https://nghttp2.org/"
@@ -39,4 +39,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="ec7e417fbc5497861d2b6dde5145da1640b36441882824e85940e5ca6ac52ec444aa7123846960f7211dd96462eab421d39f9cc49454f3f52e0dcdb36402044e nghttp2-1.32.0.tar.xz"
+sha512sums="eeb0bf64fea115444c685c8a01c1017ce96be18adf88ffcdecad067de7012ca61c6b2b6a627b18e2572bba7bd77ec56a3ca4b1109f7a4b21220e8e28687b5b74 nghttp2-1.33.0.tar.xz"
diff --git a/user/ntfs-3g/APKBUILD b/user/ntfs-3g/APKBUILD
new file mode 100644
index 000000000..d403c4f42
--- /dev/null
+++ b/user/ntfs-3g/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: Valery Kartel <valery.kartel@gmail.com>
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=ntfs-3g
+_pkgname=ntfs-3g_ntfsprogs
+pkgver=2017.3.23
+pkgrel=1
+pkgdesc="Stable, full-featured, read-write NTFS"
+url="https://www.tuxera.com/community/open-source-ntfs-3g/"
+arch="all"
+options="!check" # No test suite.
+license="LGPL-2.1-only AND BSD-2-Clause AND GPL-2.0+ AND GPL-3.0+"
+makedepends="attr-dev util-linux-dev linux-headers fuse-dev"
+subpackages="$pkgname-doc $pkgname-dev $pkgname-libs"
+source="https://tuxera.com/opensource/$_pkgname-$pkgver.tgz"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var \
+ --with-fuse=external
+ make
+}
+
+package() {
+ cd "$builddir"
+ mkdir -p "$pkgdir"/lib
+ make -j1 DESTDIR="$pkgdir" LDCONFIG=: install
+ ln -s /bin/ntfs-3g "$pkgdir"/sbin/mount.ntfs
+}
+
+sha512sums="3a607f0d7be35204c992d8931de0404fbc52032c13b4240d2c5e6f285c318a28eb2a385d7cf5ac4cd445876aee5baa5753bb636ada0d870d84a9d3fdbce794ef ntfs-3g_ntfsprogs-2017.3.23.tgz"
diff --git a/user/ode/APKBUILD b/user/ode/APKBUILD
new file mode 100644
index 000000000..f21ef2b42
--- /dev/null
+++ b/user/ode/APKBUILD
@@ -0,0 +1,48 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=ode
+pkgver=0.14
+pkgrel=0
+pkgdesc="High performance library for simulating rigid body dynamics"
+url="https://www.ode-wiki.org/wiki/index.php?title=Main_Page"
+arch="all"
+options="!check" # Fails 48/52 tests
+license="LGPL-2.1+ OR BSD-3-Clause"
+depends=""
+makedepends="autoconf automake libtool"
+subpackages="$pkgname-dev"
+source="https://bitbucket.org/odedevs/ode/downloads/ode-$pkgver.tar.gz
+ fix-test-link.patch
+ "
+
+build() {
+ cd "$builddir"
+
+ ./bootstrap
+ CXXFLAGS="$CXXFLAGS -fpermissive" ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --enable-shared \
+ --disable-static \
+ --disable-double-precision \
+ --enable-libccd \
+ --enable-ou
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="1f74c3c4687ee9665fa70e65a79100747fba577729830a90806e374115f1c161a2f4545cf591b0979054aa3e2f9a3673635668cb7362ab5c213ada0d39b1a03d ode-0.14.tar.gz
+8630d5d059fd0f623db6af4000666868358002a42ba84817117b1fb5e01c776bb23cbf1c8c43181d7bf40a0d71b640f9d2f9785461d8a77877dcbdadd775792e fix-test-link.patch"
diff --git a/user/ode/fix-test-link.patch b/user/ode/fix-test-link.patch
new file mode 100644
index 000000000..a9d66dbbe
--- /dev/null
+++ b/user/ode/fix-test-link.patch
@@ -0,0 +1,9 @@
+--- ode-0.15.2/tests/Makefile.am.old 2017-06-05 08:12:18.000000000 +0000
++++ ode-0.15.2/tests/Makefile.am 2018-09-30 22:44:06.310000000 +0000
+@@ -26,5 +26,5 @@
+
+ tests_LDADD = \
+ $(top_builddir)/ode/src/libode.la \
+- joints/*.o \
++ joints/libjoints.la \
+ UnitTest++/src/libunittestpp.la
diff --git a/user/okteta/APKBUILD b/user/okteta/APKBUILD
index 6f5c1111b..9a96a915b 100644
--- a/user/okteta/APKBUILD
+++ b/user/okteta/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=okteta
-pkgver=0.25.3
+pkgver=0.25.4
pkgrel=0
pkgdesc="Graphical hex/binary editor"
url="https://www.kde.org/applications/utilities/okteta/"
@@ -43,4 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="f27b0c2ca3c5f1ad838af847e08c53c8f8f3c386921bd2e0d5e833902659477196e6c6b72a428443e2be9013928c2151c1889ef33d59404815a34d81560ef2a7 okteta-0.25.3.tar.xz"
+sha512sums="d9887a90efbad3bb2caa0d3bb12af27708b77d54a90cd0da82eace7ea6dfc2efbcea3d7dc720bf4a088a823a8ed9edf75ab1c3680aa6d99c640d5c9e4c385e16 okteta-0.25.4.tar.xz"
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/opencv/APKBUILD b/user/opencv/APKBUILD
index 3f4c9e58c..1f33734f0 100644
--- a/user/opencv/APKBUILD
+++ b/user/opencv/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer:
pkgname=opencv
-pkgver=3.4.1
-pkgrel=2
+pkgver=3.4.3
+pkgrel=0
pkgdesc="Computer vision and machine learning software library"
url="https://opencv.org"
arch="all"
@@ -13,9 +13,7 @@ makedepends="cmake doxygen ffmpeg-dev gst-plugins-base-dev gtk+2.0-dev
gtk+3.0-dev jasper-dev libdc1394-dev libgomp libgphoto2-dev
libjpeg-turbo-dev libpng-dev libwebp-dev tiff-dev v4l-utils-dev"
subpackages="$pkgname-dev $pkgname-libs"
-source="opencv-$pkgver.tar.gz::https://github.com/opencv/opencv/archive/$pkgver.tar.gz
- pmmx.patch
- "
+source="opencv-$pkgver.tar.gz::https://github.com/opencv/opencv/archive/$pkgver.tar.gz"
prepare() {
cd "$builddir"
@@ -64,5 +62,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="e1fc14285090c6fe9e26e721f2d67d7096650c523147e925567426ef76aa7f4c6f12035d6f6ce3ec7991a75a6828a810fd4f9b75f78ed5fcccecefbadd79944b opencv-3.4.1.tar.gz
-8ebf573e3f02b78b5769eaf828215698073096a1dade9214af0382cfbbe2353307df836a6af8c4e86246ad33fefe1f64a1087d0ff7a6dc7c5f3e231592c20b4c pmmx.patch"
+sha512sums="d653a58eb5e3939b9fdb7438ac35f77cf4385cf72d5d22bfd21722a109e1b3283dbb9407985061b7548114f0d05c9395aac9bb62b4d2bc1f68da770a49987fef opencv-3.4.3.tar.gz"
diff --git a/user/opencv/pmmx.patch b/user/opencv/pmmx.patch
deleted file mode 100644
index f36d643cf..000000000
--- a/user/opencv/pmmx.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 7dc162cb4252ccf461f1c63650abde3c8807b79c Mon Sep 17 00:00:00 2001
-From: Alexander Alekhin <alexander.alekhin@intel.com>
-Date: Mon, 9 Apr 2018 18:25:51 +0300
-Subject: [PATCH] core: fix mm_pause() for non-SSE i386 builds
-
-replaced to safe binary compatible 'rep; nop' asm instruction
----
- modules/core/src/parallel_impl.cpp | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/modules/core/src/parallel_impl.cpp b/modules/core/src/parallel_impl.cpp
-index 78d9eb63694..bc64fce7a81 100644
---- a/modules/core/src/parallel_impl.cpp
-+++ b/modules/core/src/parallel_impl.cpp
-@@ -49,7 +49,11 @@ DECLARE_CV_YIELD
- DECLARE_CV_PAUSE
- #endif
- #ifndef CV_PAUSE
--#if defined __GNUC__ && (defined __i386__ || defined __x86_64__)
-+# if defined __GNUC__ && (defined __i386__ || defined __x86_64__)
-+# if !defined(__SSE__)
-+ static inline void cv_non_sse_mm_pause() { __asm__ __volatile__ ("rep; nop"); }
-+# define _mm_pause cv_non_sse_mm_pause
-+# endif
- # define CV_PAUSE(v) do { for (int __delay = (v); __delay > 0; --__delay) { _mm_pause(); } } while (0)
- # elif defined __GNUC__ && defined __aarch64__
- # define CV_PAUSE(v) do { for (int __delay = (v); __delay > 0; --__delay) { asm volatile("yield" ::: "memory"); } } while (0)
diff --git a/user/openvpn/APKBUILD b/user/openvpn/APKBUILD
new file mode 100644
index 000000000..06317735b
--- /dev/null
+++ b/user/openvpn/APKBUILD
@@ -0,0 +1,69 @@
+# Contributor: Valery Kartel <valery.kartel@gmail.com>
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Lee Starnes <lee@canned-death.us>
+pkgname=openvpn
+pkgver=2.4.6
+pkgrel=1
+pkgdesc="A robust, and highly configurable VPN (Virtual Private Network)"
+url="https://openvpn.net/"
+arch="all"
+license="GPL-2.0-only WITH openvpn-openssl-exception"
+subpackages="$pkgname-doc $pkgname-dev $pkgname-auth-pam:pam $pkgname-openrc"
+depends="iproute2"
+makedepends="openssl-dev lzo-dev linux-pam-dev linux-headers"
+install="$pkgname.pre-install"
+source="https://swupdate.openvpn.net/community/releases/$pkgname-$pkgver.tar.gz
+ openvpn.initd
+ openvpn.confd
+ openvpn.up
+ openvpn.down
+ "
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --sysconfdir=/etc/openvpn \
+ --enable-crypto \
+ --enable-iproute2
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+
+ # install samples
+ mkdir -p "$pkgdir"/usr/share/doc/$pkgname/samples
+ cp -a sample/sample-* "$pkgdir"/usr/share/doc/$pkgname/samples
+ install -D -m644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
+
+ # install init.d and conf.d
+ install -Dm755 "$srcdir"/openvpn.initd "$pkgdir"/etc/init.d/openvpn
+ install -Dm644 "$srcdir"/openvpn.confd "$pkgdir"/etc/conf.d/openvpn
+
+ # install up and down scripts
+ install -Dm755 "$srcdir"/openvpn.up "$pkgdir"/etc/openvpn/up.sh
+ install -Dm755 "$srcdir"/openvpn.down "$pkgdir"/etc/openvpn/down.sh
+}
+
+pam() {
+ pkgdesc="OpenVPN plugin for PAM authentication"
+ mkdir -p "$subpkgdir"/usr/lib/openvpn/plugins
+ mv "$pkgdir"/usr/lib/openvpn/plugins/*-auth-pam* \
+ "$subpkgdir"/usr/lib/openvpn/plugins/
+}
+
+sha512sums="cdd70bfd03177bc6cb70d0d614e40389df00816b7097740b4cda9d7bee094d1463fdb5afeaf604c52c7b3167d1edb098a2e095e131a8b9fed0ed8b29da90cbe8 openvpn-2.4.6.tar.gz
+3594937d4cc9d7b87ac6a3af433f651ed9695f41586994f9d9789554fbe3f87f054b997b89486eda4ae0b852d816aac9007222168d585910aa9f255073324bd9 openvpn.initd
+6b2353aca9df7f43044e4e37990491b4ba077e259ebe13b8f2eb43e35ca7a617c1a65c5bfb8ab05e87cf12c4444184ae064f01f9abbb3c023dbbc07ff3f9c84e openvpn.confd
+cdb73c9a5b1eb56e9cbd29955d94297ce5a87079419cd626d6a0b6680d88cbf310735a53f794886df02030b687eaea553c7c569a8ea1282a149441add1c65760 openvpn.up
+4456880d5c2db061219ba94e4052786700efa5e685f03b0d12d75a6023e3c0fc7b5242cc3d2bd3988e42fcd99701ab13a6257b1a0943b812318d30c64843ad27 openvpn.down"
diff --git a/user/openvpn/openvpn.confd b/user/openvpn/openvpn.confd
new file mode 100644
index 000000000..7274a079d
--- /dev/null
+++ b/user/openvpn/openvpn.confd
@@ -0,0 +1,24 @@
+# Configuration for /etc/init.d/openvpn{,.*}
+
+# OpenVPN can run in many modes. Most people want the init script to
+# automatically detect the mode and try and apply a good default configuration
+# and setup scripts. However, there are cases where the OpenVPN configuration
+# looks like a client, but it's really a peer or something else.
+# detect_client controls this behaviour.
+#detect_client="yes"
+
+# Path of the OpenVPN configuration file to load.
+# Default is /etc/openvpn/openvpn.conf, or /etc/openvpn/<vpn>.conf if
+# the runscript is symlinked to openvpn.<vpn> or <vpn>.
+#cfgfile=
+
+# The script to run in client mode after successful TUN/TAP device open.
+#up_script="/etc/openvpn/up.sh"
+
+# The script to run in client mode after TUN/TAP device close.
+#down_script="/etc/openvpn/down.sh"
+
+# OpenVPN automatically creates an /etc/resolv.conf (or sends it to
+# resolvconf) if given DNS information by the OpenVPN server.
+# Set to "no" to stop this.
+#peer_dns="yes"
diff --git a/user/openvpn/openvpn.down b/user/openvpn/openvpn.down
new file mode 100644
index 000000000..50d463f16
--- /dev/null
+++ b/user/openvpn/openvpn.down
@@ -0,0 +1,33 @@
+#!/bin/sh
+# Copyright (c) 2006-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# Contributed by Roy Marples (uberlord@gentoo.org)
+
+# If we have a service specific script, run this now
+if [ -x /etc/openvpn/"${RC_SVCNAME}"-down.sh ] ; then
+ /etc/openvpn/"${RC_SVCNAME}"-down.sh "$@"
+fi
+
+# Restore resolv.conf to how it was
+if [ "${PEER_DNS}" != "no" ]; then
+ if [ -x /sbin/resolvconf ] ; then
+ /sbin/resolvconf -d "${dev}"
+ elif [ -e /etc/resolv.conf-"${dev}".sv ] ; then
+ # Important that we cat instead of move incase resolv.conf is
+ # a symlink and not an actual file
+ cat /etc/resolv.conf-"${dev}".sv > /etc/resolv.conf
+ rm -f /etc/resolv.conf-"${dev}".sv
+ fi
+fi
+
+if [ -n "${RC_SVCNAME}" ]; then
+ # Re-enter the init script to start any dependant services
+ if /etc/init.d/"${RC_SVCNAME}" --quiet status ; then
+ export IN_BACKGROUND=true
+ /etc/init.d/"${RC_SVCNAME}" --quiet stop
+ fi
+fi
+
+exit 0
+
+# vim: ts=4 :
diff --git a/user/openvpn/openvpn.initd b/user/openvpn/openvpn.initd
new file mode 100644
index 000000000..dae0e3833
--- /dev/null
+++ b/user/openvpn/openvpn.initd
@@ -0,0 +1,130 @@
+#!/sbin/openrc-run
+
+extra_commands="checkconfig"
+
+instance_name=${RC_SVCNAME#*.}
+[ "$instance_name" != "openvpn" ] \
+ && name="OpenVPN ($instance_name)" \
+ || name="OpenVPN"
+
+# Upper case variables are for backward compatibility with Alpine < v3.8.
+: ${cfgdir:=${VPNDIR:-"/etc/openvpn"}}
+: ${cfgfile:="$cfgdir/$instance_name.conf"}
+: ${detect_client:="${DETECT_CLIENT:-yes}"}
+: ${up_script:="$cfgdir/up.sh"}
+: ${down_script:="$cfgdir/down.sh"}
+: ${peer_dns:=${PEER_DNS:-"yes"}}
+
+pidfile="/run/$RC_SVCNAME.pid"
+command="/usr/sbin/openvpn"
+command_args="
+ --daemon
+ --config $cfgfile
+ --writepid $pidfile
+ --setenv RC_SVCNAME $RC_SVCNAME
+ --setenv PEER_DNS $peer_dns"
+
+required_dirs="$cfgdir"
+required_files="$cfgfile"
+
+
+depend() {
+ need localmount net
+ use dns
+ after bootmisc
+}
+
+checkconfig() {
+ # Note: This is not just a check; we need to detect the mode both for
+ # "start" and "checkconfig" commands, that's why it's here.
+ if [ -z "$client_mode" ] && yesno "$detect_client"; then
+ cfgfile_has_option 'remote' \
+ && client_mode=yes \
+ || client_mode=no
+ fi
+
+ if [ ! -e /dev/net/tun ]; then
+ if ! modprobe tun; then
+ eerror "TUN/TAP support is not available in this kernel"
+ return 1
+ fi
+ fi
+ if [ -h /dev/net/tun ] && [ -c /dev/misc/net/tun ]; then
+ ebegin "Detected broken /dev/net/tun symlink, fixing..."
+ rm -f /dev/net/tun
+ ln -s /dev/misc/net/tun /dev/net/tun
+ eend $?
+ fi
+
+ if yesno "$client_mode"; then
+ local f; for f in "$up_script" "$down_script"; do
+ [ -r "$f" ] || { eerror "'$f' is not readable"; return 1; }
+ done
+
+ # Warn about setting scripts as we override them
+ if cfgfile_has_option "(up|down)"; then
+ ewarn "WARNING: You have defined your own up/down scripts"
+ ewarn "As you're running as a client, we now force Alpine specific"
+ ewarn "scripts to be run for up and down events."
+ ewarn "These scripts will call /etc/openvpn/$RC_SVCNAME-{up,down}.sh"
+ ewarn "where you can put your own code."
+ fi
+ # Warn about the inability to change ip/route/dns information when
+ # dropping privs
+ if cfgfile_has_option "user"; then
+ ewarn "WARNING: You are dropping root privileges!"
+ ewarn "As such openvpn may not be able to change ip, routing"
+ ewarn "or DNS configuration."
+ fi
+ fi
+}
+
+start_pre() {
+ checkconfig || return 1
+
+ if yesno "$client_mode"; then
+ command_args="$command_args
+ --up-delay
+ --up-restart
+ --down-pre
+ --script-security 2
+ --up $up_script
+ --down $down_script"
+ start_inactive="yes"
+ else
+ # Run as openvpn unless otherwise specified.
+ cfgfile_has_option "user" || command_args="$command_args --user openvpn"
+ cfgfile_has_option "group" || command_args="$command_args --group openvpn"
+ fi
+
+ # If the config file does not specify the cd option, we do.
+ # But if we specify it, we override the config option which we do not want.
+ if cfgfile_has_option "cd"; then
+ command_args="$command_args --cd $cfgdir"
+ fi
+}
+
+start() {
+ # If we are re-called by the up.sh script, then we don't actually want
+ # to start OpenVPN. We do this so we can "start" ourselves from
+ # inactive (from the up.sh script) which then triggers other
+ # services to start which depend on us.
+ yesno "$IN_BACKGROUND" && return 0
+
+ default_start
+}
+
+stop() {
+ # If we are re-called by the down.sh script, then we don't actually
+ # want to stop OpenVPN.
+ if yesno "$IN_BACKGROUND"; then
+ mark_service_inactive "$RC_SVCNAME"
+ return 0
+ fi
+
+ default_stop
+}
+
+cfgfile_has_option() {
+ grep -Eq "^\s*$1\s" "$cfgfile"
+}
diff --git a/user/openvpn/openvpn.pre-install b/user/openvpn/openvpn.pre-install
new file mode 100644
index 000000000..c07253531
--- /dev/null
+++ b/user/openvpn/openvpn.pre-install
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+addgroup -S openvpn 2>/dev/null
+adduser -S -D -H -h /dev/null -s /sbin/nologin -G openvpn -g openvpn openvpn 2>/dev/null
+
+exit 0
diff --git a/user/openvpn/openvpn.up b/user/openvpn/openvpn.up
new file mode 100644
index 000000000..2923bef7a
--- /dev/null
+++ b/user/openvpn/openvpn.up
@@ -0,0 +1,82 @@
+#!/bin/sh
+# Copyright (c) 2006-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# Contributed by Roy Marples (uberlord@gentoo.org)
+
+# Setup our resolv.conf
+# Vitally important that we use the domain entry in resolv.conf so we
+# can setup the nameservers are for the domain ONLY in resolvconf if
+# we're using a decent dns cache/forwarder like dnsmasq and NOT nscd/libc.
+# nscd/libc users will get the VPN nameservers before their other ones
+# and will use the first one that responds - maybe the LAN ones?
+# non resolvconf users just the the VPN resolv.conf
+
+# FIXME:- if we have >1 domain, then we have to use search :/
+# We need to add a flag to resolvconf to say
+# "these nameservers should only be used for the listed search domains
+# if other global nameservers are present on other interfaces"
+# This however, will break compatibility with Debians resolvconf
+# A possible workaround would be to just list multiple domain lines
+# and try and let resolvconf handle it
+
+if [ "${PEER_DNS}" != "no" ]; then
+ NS=
+ DOMAIN=
+ SEARCH=
+ i=1
+ while true ; do
+ eval opt=\$foreign_option_${i}
+ [ -z "${opt}" ] && break
+ if [ "${opt}" != "${opt#dhcp-option DOMAIN *}" ] ; then
+ if [ -z "${DOMAIN}" ] ; then
+ DOMAIN="${opt#dhcp-option DOMAIN *}"
+ else
+ SEARCH="${SEARCH}${SEARCH:+ }${opt#dhcp-option DOMAIN *}"
+ fi
+ elif [ "${opt}" != "${opt#dhcp-option DNS *}" ] ; then
+ NS="${NS}nameserver ${opt#dhcp-option DNS *}\n"
+ fi
+ i=$((${i} + 1))
+ done
+
+ if [ -n "${NS}" ] ; then
+ DNS="# Generated by openvpn for interface ${dev}\n"
+ if [ -n "${SEARCH}" ] ; then
+ DNS="${DNS}search ${DOMAIN} ${SEARCH}\n"
+ elif [ -n "${DOMAIN}" ]; then
+ DNS="${DNS}domain ${DOMAIN}\n"
+ fi
+ DNS="${DNS}${NS}"
+ if [ -x /sbin/resolvconf ] ; then
+ printf "${DNS}" | /sbin/resolvconf -a "${dev}"
+ else
+ # Preserve the existing resolv.conf
+ if [ -e /etc/resolv.conf ] ; then
+ cp /etc/resolv.conf /etc/resolv.conf-"${dev}".sv
+ fi
+ printf "${DNS}" > /etc/resolv.conf
+ chmod 644 /etc/resolv.conf
+ fi
+ fi
+fi
+
+# Below section is Gentoo specific
+# Quick summary - our init scripts are re-entrant and set the RC_SVCNAME env var
+# as we could have >1 openvpn service
+
+if [ -n "${RC_SVCNAME}" ]; then
+ # If we have a service specific script, run this now
+ if [ -x /etc/openvpn/"${RC_SVCNAME}"-up.sh ] ; then
+ /etc/openvpn/"${RC_SVCNAME}"-up.sh "$@"
+ fi
+
+ # Re-enter the init script to start any dependant services
+ if ! /etc/init.d/"${RC_SVCNAME}" --quiet status ; then
+ export IN_BACKGROUND=true
+ /etc/init.d/${RC_SVCNAME} --quiet start
+ fi
+fi
+
+exit 0
+
+# vim: ts=4 :
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/orage/APKBUILD b/user/orage/APKBUILD
new file mode 100644
index 000000000..48f5ef945
--- /dev/null
+++ b/user/orage/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=orage
+pkgver=4.12.1
+pkgrel=0
+pkgdesc="Calendaring software for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="GPL-2.0+ AND BSD-3-Clause AND (LGPL-2.1-only OR MPL-1.0) AND (GPL-2.0+ OR Artistic-2.0) AND MPL-1.0 AND BSD-2-Clause AND LGPL-2.0+"
+makedepends="intltool gtk+2.0-dev dbus-glib-dev libnotify-dev popt-dev
+ xfce4-panel-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/apps/orage/4.12/orage-$pkgver.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./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="3fec0201171140586cdc9bcf151450a7086515e18b5815afe4fe4c4726ba554c50582b0479e52985b330140c51b7233ef81f678f986f848afbeee74c66b2d196 orage-4.12.1.tar.bz2"
diff --git a/user/p11-kit/APKBUILD b/user/p11-kit/APKBUILD
index 0f8a65a8f..f9e45cfd8 100644
--- a/user/p11-kit/APKBUILD
+++ b/user/p11-kit/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Fabian Affolter <fabian@affolter-engineering.ch>
# Maintainer:
pkgname=p11-kit
-pkgver=0.23.12
+pkgver=0.23.14
pkgrel=0
pkgdesc="Library for loading and sharing PKCS#11 modules"
url="https://p11-glue.github.io/p11-glue/p11-kit.html"
@@ -46,4 +46,4 @@ trust() {
"$subpkgdir"/usr/lib/pkcs11/
}
-sha512sums="ae43b1f6ba5400cf5ae7b64b8c93aa47e5c7ee927196828600fd88beb6fdf6bcb6a63bc822d356757255638f9fbf10896e0604e32a1332a9a833836fa0468726 p11-kit-0.23.12.tar.gz"
+sha512sums="fc7e7e0745d7f8e5d783a1f38bad9bbe65b56d54897b6ba2c3118a0d912451c2d48dd113a875e7f7bfcff8fbd6b4905472fcd120630661c12029a16d2b13add4 p11-kit-0.23.14.tar.gz"
diff --git a/user/pango/APKBUILD b/user/pango/APKBUILD
index f2f8db1a3..aff854dc0 100644
--- a/user/pango/APKBUILD
+++ b/user/pango/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer:
pkgname=pango
-pkgver=1.42.1
+pkgver=1.42.4
pkgrel=0
pkgdesc="Library for laying out and rendering text"
url="https://www.pango.org/"
@@ -31,4 +31,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="70f0519fdcb896880a9552ed1f3ef85e3e7b99a161818e7c3a5ac851b64366544393546336bfdc1d66ecfc1aa4791b65ff4182ca9f6e93455ca154fbc9cbef80 pango-1.42.1.tar.xz"
+sha512sums="993e97f647eba0c5ed90bcfcb8228bf67fa3f20b1f4331e4e40a30788d7c3ac55eee1209471bf21df125cb8fc6121acc8062a9da2f8a7d6cbe8e9ad13a9320dc pango-1.42.4.tar.xz"
diff --git a/user/parole/APKBUILD b/user/parole/APKBUILD
new file mode 100644
index 000000000..ad29a1cfb
--- /dev/null
+++ b/user/parole/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=parole
+pkgver=1.0.1
+pkgrel=0
+pkgdesc="GStreamer-based media player for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="GPL-2.0+ AND LGPL-2.1+"
+makedepends="intltool gtk+3.0-dev dbus-glib-dev libxfce4ui-dev gstreamer-dev
+ gst-plugins-base-dev libnotify-dev libice-dev"
+subpackages="$pkgname-dev $pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/apps/parole/1.0/parole-$pkgver.tar.bz2"
+
+build() {
+ cd "$builddir"
+ LIBS="-lX11" ./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="026ece62e6a8175976e7ce218edbd6955a0cdb5074996adad5bed3e536f90108e4d1106f22edcb06d213fb09dd47b04f81bff94f4534710b61f0f53cb0395f72 parole-1.0.1.tar.bz2"
diff --git a/user/password-store/APKBUILD b/user/password-store/APKBUILD
index 29880d54d..f8830a2ef 100644
--- a/user/password-store/APKBUILD
+++ b/user/password-store/APKBUILD
@@ -2,7 +2,7 @@
# Contributor: Johannes Matheis <jomat+alpinebuild@jmt.gr>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=password-store
-pkgver=1.7.2
+pkgver=1.7.3
pkgrel=0
pkgdesc="Stores, retrieves, generates, and synchronizes passwords securely"
url="https://www.passwordstore.org"
@@ -61,4 +61,4 @@ zshcomp() {
"$subpkgdir"/usr/share/zsh/site-functions
}
-sha512sums="e6719a7125af6ecd80fdbeb38b4e2e89e7358ff16e18739d68a04b72dfdf860294b54f7ec0ec9676a62d2e270db8f54784a357c82217a478694472f8136e3657 password-store-1.7.2.tar.xz"
+sha512sums="89755a7b02f05d75055a9fc14fd3f456c0a49ec31bdffd097a027f91228c64a98b18c1e80017aeda811773ae3287ff1b9737532da8ded06799d8fe3979ca06f7 password-store-1.7.3.tar.xz"
diff --git a/user/pciutils/APKBUILD b/user/pciutils/APKBUILD
index a58a509e4..92964b95f 100644
--- a/user/pciutils/APKBUILD
+++ b/user/pciutils/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
# Maintainer:
pkgname=pciutils
-pkgver=3.6.1
+pkgver=3.6.2
pkgrel=0
pkgdesc="PCI bus configuration space access library and tools"
url="http://mj.ucw.cz/pciutils.html"
@@ -44,6 +44,6 @@ package() {
}
-sha512sums="c45ba5b42c6f03a50df75f4f4f33ec1feef8f0cae1217802e6c4351e88da23431e0273f6776fa076f4d1f8c73ed20433392bc11fe1478db98dc482d2de75dd92 pciutils-3.6.1.tar.gz
+sha512sums="a9332f07755ab8af6ba99a5fa3cf739b0f3688276902673b9fe981955c4fa732c3d0ccaa150942ecaf4b263a10c2653f5454aa87492cac1dd805f33500fac489 pciutils-3.6.2.tar.gz
520b39602078e4325d7dac2d460547b360f7b52c668d88cf3d776c59246c8cfcb537b7b4f50575da9d2fcea1e207b3e99626ce4f23df890d2565b7dac1db2d94 fix-linking-pci-malloc-Makefile.patch
aa1d3272500180256929b39a5fc4ea38ddb6a9fad090d732832ded9cc396303cf56efc91cfdeb76edbcfefc9a7c8eb058562c3c2b09a9090a59d3e68c27cec62 pread.patch"
diff --git a/user/perl-algorithm-diff/APKBUILD b/user/perl-algorithm-diff/APKBUILD
new file mode 100644
index 000000000..5e0c60775
--- /dev/null
+++ b/user/perl-algorithm-diff/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-algorithm-diff
+pkgver=1.1903
+pkgrel=0
+pkgdesc="Compute 'intelligent' differences between two files / lists"
+url="https://metacpan.org/pod/Algorithm::Diff"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl"
+makedepends="perl-dev"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/T/TY/TYEMQ/Algorithm-Diff-$pkgver.tar.gz"
+builddir="$srcdir/Algorithm-Diff-$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="61632be4c19a03ccacaa218ab7cb8bdbc53a4a6030b8173a59c7611056375536788392c1da00ab88f3df9884fc8a67825efc83b70e2e564664d5187021d6b106 Algorithm-Diff-1.1903.tar.gz"
diff --git a/user/perl-any-moose/APKBUILD b/user/perl-any-moose/APKBUILD
new file mode 100644
index 000000000..eed2735ca
--- /dev/null
+++ b/user/perl-any-moose/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-any-moose
+pkgver=0.27
+pkgrel=0
+pkgdesc="Deprecated Moose Mouse abstraction layer"
+url="https://metacpan.org/pod/Any::Moose"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl perl-mouse"
+makedepends="perl-dev"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Any-Moose-$pkgver.tar.gz"
+builddir="$srcdir/Any-Moose-$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="5c97caf2e64462bae95fc4d5dd41868c01f856bd8f74872985254b7cc6ce0e13b4accad7955047ff5c4013399f7aea2ad6d48ae3592883a3b6cd20c0e4478b7b Any-Moose-0.27.tar.gz"
diff --git a/user/perl-anyevent/APKBUILD b/user/perl-anyevent/APKBUILD
new file mode 100644
index 000000000..f97e983eb
--- /dev/null
+++ b/user/perl-anyevent/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-anyevent
+pkgver=7.14
+pkgrel=0
+pkgdesc="The DBI of event loop programming"
+url="https://metacpan.org/pod/AnyEvent"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl"
+makedepends="perl-dev"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/M/ML/MLEHMANN/AnyEvent-$pkgver.tar.gz"
+builddir="$srcdir/AnyEvent-$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="98e7b9e06cf74b99d3407a25b60f3b825fceed3bae43505e1fb90785e24bd88ae25955cff25d29b4cc96957db7f4f5203d19ad2365abb4e3a3227fd91a16fb25 AnyEvent-7.14.tar.gz"
diff --git a/user/perl-appconfig/APKBUILD b/user/perl-appconfig/APKBUILD
new file mode 100644
index 000000000..3b517cf02
--- /dev/null
+++ b/user/perl-appconfig/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-appconfig
+pkgver=1.71
+pkgrel=0
+pkgdesc="Perl modules for reading configuration and parsing command line arguments"
+url="https://metacpan.org/release/AppConfig"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/N/NE/NEILB/AppConfig-$pkgver.tar.gz"
+builddir="$srcdir/AppConfig-$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="cbd58601ce0ea6c237e86b8b013cf75e552914263f56b1ab26b8079bff75b28ca2bb35585bfaa187b611afa969767c25494d3ec2a6b3ff5d1aecd2f9ffa8df72 AppConfig-1.71.tar.gz"
diff --git a/user/perl-b-hooks-endofscope/APKBUILD b/user/perl-b-hooks-endofscope/APKBUILD
new file mode 100644
index 000000000..0d9d641c2
--- /dev/null
+++ b/user/perl-b-hooks-endofscope/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-b-hooks-endofscope
+pkgver=0.24
+pkgrel=0
+pkgdesc="Execute Perl code after a scope finished compilation"
+url="https://metacpan.org/release/B-Hooks-EndOfScope"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-module-implementation perl-sub-exporter-progressive perl-sub-name
+ perl-variable-magic"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/B-Hooks-EndOfScope-$pkgver.tar.gz"
+builddir="$srcdir/B-Hooks-EndOfScope-$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="5c061a81a3fed88ad868a14a1f817f7952b2f0c9512408174354e0ecf7e3caa5d646054cf75efa8b8c558e6241a8dfebf9400e8826021bdb5cbdf3a00065b147 B-Hooks-EndOfScope-0.24.tar.gz"
diff --git a/user/perl-canary-stability/APKBUILD b/user/perl-canary-stability/APKBUILD
new file mode 100644
index 000000000..f68eadfc0
--- /dev/null
+++ b/user/perl-canary-stability/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-canary-stability
+pkgver=2012
+pkgrel=0
+pkgdesc="Canary to check Perl compatibility for schmorp's modules"
+url="https://metacpan.org/pod/Canary::Stability"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl"
+makedepends="perl-dev"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/M/ML/MLEHMANN/Canary-Stability-$pkgver.tar.gz"
+builddir="$srcdir/Canary-Stability-$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="7780731e4142d536182e1820c041c43ae67c5b47c044f15d8dcc060646bbab10a974bddcb703fdb27f427db3cd4dbdff54e131dc708c0260d7275be869eb27b1 Canary-Stability-2012.tar.gz"
diff --git a/user/perl-capture-tiny/APKBUILD b/user/perl-capture-tiny/APKBUILD
new file mode 100644
index 000000000..1ac11f9d0
--- /dev/null
+++ b/user/perl-capture-tiny/APKBUILD
@@ -0,0 +1,43 @@
+# Automatically generated by apkbuild-cpan, template 1
+# Contributor: Francesco Colista <fcolista@alpinelinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-capture-tiny
+_pkgreal=Capture-Tiny
+pkgver=0.48
+pkgrel=0
+pkgdesc="Capture STDOUT and STDERR from Perl, XS or external programs"
+url="https://metacpan.org/release/Capture-Tiny"
+arch="noarch"
+license="Apache-2.0"
+cpandepends=""
+cpanmakedepends=""
+depends="$cpandepends"
+makedepends="perl-dev $cpanmakedepends"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DA/DAGOLDEN/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+prepare() {
+ cd "$builddir"
+ export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+}
+
+build() {
+ cd "$builddir"
+ export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
+ make
+}
+
+check() {
+ cd "$builddir"
+ make test
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="96d140b33a5ee147804925353ec5b49b806fa9c98b4ac23ec9c9494828f52ac72fd6f69c08e14ada18e5187dc4cece3d72901ce07b12eef20595322161a98437 Capture-Tiny-0.48.tar.gz"
diff --git a/user/perl-cgi/APKBUILD b/user/perl-cgi/APKBUILD
new file mode 100644
index 000000000..09fca609f
--- /dev/null
+++ b/user/perl-cgi/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-cgi
+pkgver=4.40
+pkgrel=0
+pkgdesc="Handle CGI requests and responses in Perl"
+url="https://metacpan.org/release/CGI"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-html-parser"
+makedepends="perl-dev"
+checkdepends="perl-test-deep perl-test-nowarnings perl-test-warn"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/L/LE/LEEJO/CGI-$pkgver.tar.gz"
+builddir="$srcdir/CGI-$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="317cc410d8cc630067759cc05b8643e0c3fe4e55307c437176892a625b88d46443c3e0ff4361e066c54f95c3573e5fa8c21e23069071fa0dc74fc2d93dca13c1 CGI-4.40.tar.gz"
diff --git a/user/perl-class-data-inheritable/APKBUILD b/user/perl-class-data-inheritable/APKBUILD
new file mode 100644
index 000000000..4e1745f22
--- /dev/null
+++ b/user/perl-class-data-inheritable/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-class-data-inheritable
+pkgver=0.08
+pkgrel=0
+pkgdesc="Inheritable, overridable class data for Perl modules"
+url="https://metacpan.org/release/Class-Data-Inheritable"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/T/TM/TMTM/Class-Data-Inheritable-$pkgver.tar.gz"
+builddir="$srcdir/Class-Data-Inheritable-$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="bddc61096158b21d4cfa69538d5db0f53617a66c71447ee193141064f4f58194462b21e0a849510e24e4c263b13be3ee1bc6bb8504320e0a86c02b67ad1652c8 Class-Data-Inheritable-0.08.tar.gz"
diff --git a/user/perl-class-load-xs/APKBUILD b/user/perl-class-load-xs/APKBUILD
new file mode 100644
index 000000000..ebdcca147
--- /dev/null
+++ b/user/perl-class-load-xs/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-class-load-xs
+pkgver=0.10
+pkgrel=0
+pkgdesc="Perl XS implementation of Class::Load"
+url="https://metacpan.org/release/Class-Load-XS"
+arch="all"
+license="Artistic-2.0"
+depends="perl-class-load"
+makedepends="perl-dev"
+checkdepends="perl-test-fatal perl-test-needs"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Class-Load-XS-$pkgver.tar.gz"
+builddir="$srcdir/Class-Load-XS-$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="16ab845dc393567f0b0e9597eda7d7678b8a41d218823a166bacdfd4dc93e704a6aff98662340b8d7f4d045a60530071bb84ea8da8be5a6930af47722207d126 Class-Load-XS-0.10.tar.gz"
diff --git a/user/perl-class-load/APKBUILD b/user/perl-class-load/APKBUILD
new file mode 100644
index 000000000..a90d30bff
--- /dev/null
+++ b/user/perl-class-load/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-class-load
+pkgver=0.25
+pkgrel=0
+pkgdesc="Perl module for loading classes"
+url="https://metacpan.org/release/Class-Load"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-data-optlist perl-module-implementation perl-module-runtime
+ perl-package-stash perl-try-tiny"
+makedepends="perl-dev"
+checkdepends="perl-test-fatal perl-test-needs"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Class-Load-$pkgver.tar.gz"
+builddir="$srcdir/Class-Load-$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="feacb4ae99358d3dc45b23b2d7cc814603e59a72424e7e0620d4939fa6d6206a1bb123c010b49013ce4764df11dc7c04fc1d7bd5783c61a391310bcb653e7ca4 Class-Load-0.25.tar.gz"
diff --git a/user/perl-class-method-modifiers/APKBUILD b/user/perl-class-method-modifiers/APKBUILD
new file mode 100644
index 000000000..7d22c357d
--- /dev/null
+++ b/user/perl-class-method-modifiers/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-class-method-modifiers
+pkgver=2.12
+pkgrel=0
+pkgdesc="Provides Moose-like method modifiers"
+url="https://metacpan.org/pod/Class::Method::Modifiers"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl"
+makedepends="perl-dev"
+checkdepends="perl-test-requires perl-test-fatal"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Class-Method-Modifiers-$pkgver.tar.gz"
+builddir="$srcdir/Class-Method-Modifiers-$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="18c7cdff214d39a475b116cc5e6dda043c31765bcdfa9a1fa7242ce61e42583c4981d41a43ba556fb5a057e0cfbd5e52dd60048ea7dfae0fec3618dc47876dd4 Class-Method-Modifiers-2.12.tar.gz"
diff --git a/user/perl-class-xsaccessor/APKBUILD b/user/perl-class-xsaccessor/APKBUILD
new file mode 100644
index 000000000..6ef87555a
--- /dev/null
+++ b/user/perl-class-xsaccessor/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=perl-class-xsaccessor
+pkgver=1.19
+pkgrel=0
+pkgdesc="Perl module to generate fast XS accessors without compilation"
+url="https://metacpan.org/release/Class-XSAccessor"
+arch="all"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/S/SM/SMUELLER/Class-XSAccessor-$pkgver.tar.gz"
+builddir="$srcdir/Class-XSAccessor-$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="58855bb2108b60cc90ae1d1c4d6a011da7bac2d063c7c953ff8610ae164ba60731a664f0fbddf148e1eabb60042913a17633a9c9a8936a23a59130b381bf63f8 Class-XSAccessor-1.19.tar.gz"
diff --git a/user/perl-code-tidyall/APKBUILD b/user/perl-code-tidyall/APKBUILD
new file mode 100644
index 000000000..ed36959e5
--- /dev/null
+++ b/user/perl-code-tidyall/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-code-tidyall
+pkgver=0.71
+pkgrel=0
+pkgdesc="Your all-in-one Perl code tidier and validator"
+url="https://metacpan.org/release/Code-TidyAll"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-capture-tiny perl-config-ini perl-file-pushd perl-file-which
+ perl-ipc-run3 perl-ipc-system-simple perl-list-compare
+ perl-list-someutils perl-log-any perl-module-runtime perl-moo
+ perl-path-tiny perl-scope-guard perl-specio
+ perl-specio-library-path-tiny perl-text-diff perl-timedate
+ perl-time-duration-parse perl-try-tiny"
+makedepends="perl-dev"
+checkdepends="perl-lib-relative perl-test-class-most perl-test-differences
+ perl-test-fatal perl-test-warnings"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/Code-TidyAll-$pkgver.tar.gz"
+builddir="$srcdir/Code-TidyAll-$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="b8d29eaceedf95ce8dc92142a861a7f552443dd713cbfe4a273bcbaa7222ec48646bde434e81cc209adde07d5a2f6e2d6b408e7427dfc574df0af884c8a61f92 Code-TidyAll-0.71.tar.gz"
diff --git a/user/perl-common-sense/APKBUILD b/user/perl-common-sense/APKBUILD
new file mode 100644
index 000000000..8f159d0b3
--- /dev/null
+++ b/user/perl-common-sense/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-common-sense
+pkgver=3.74
+pkgrel=0
+pkgdesc="Implements some (in)sane defaults for Perl programs"
+url="https://metacpan.org/pod/common::sense"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl"
+makedepends="perl-dev"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/M/ML/MLEHMANN/common-sense-$pkgver.tar.gz"
+builddir="$srcdir/common-sense-$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="658ad70a2d1bbd0b26f91c4ea5d69b4cc0b632ede9532b88282987002a5e280f0475d63ee846b7bd2d38ef82f2680e20c2093803e4b62a984750ed447f318d60 common-sense-3.74.tar.gz"
diff --git a/user/perl-config-ini/APKBUILD b/user/perl-config-ini/APKBUILD
new file mode 100644
index 000000000..fd92f0812
--- /dev/null
+++ b/user/perl-config-ini/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-config-ini
+pkgver=0.025
+pkgrel=0
+pkgdesc="Simple .ini file format handler for Perl"
+url="https://metacpan.org/release/Config-INI"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-mixin-linewise"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/Config-INI-$pkgver.tar.gz"
+builddir="$srcdir/Config-INI-$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="2831e2611409c1f09029b37e56bcbc875051cf9ac5e458f38fbac29a3e48665f49ea9ac66519eeee71e9b52b2c702507eb801c518a8417bbf0806270b0bc4155 Config-INI-0.025.tar.gz"
diff --git a/user/perl-cpan-meta-check/APKBUILD b/user/perl-cpan-meta-check/APKBUILD
new file mode 100644
index 000000000..e23edf9b9
--- /dev/null
+++ b/user/perl-cpan-meta-check/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-cpan-meta-check
+pkgver=0.014
+pkgrel=0
+pkgdesc="Verify requirements in a Perl CPAN::Meta object"
+url="https://metacpan.org/release/CPAN-Meta-Check"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+checkdepends="perl-test-deep"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/L/LE/LEONT/CPAN-Meta-Check-$pkgver.tar.gz"
+builddir="$srcdir/CPAN-Meta-Check-$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="a10af09a7ce771ca3983adea8053d141750fd09849609a28e7f973831fd3a3ece55281841aec93c099154bb59135986da4983bf612ae4e956c45dbb3f2770f5e CPAN-Meta-Check-0.014.tar.gz"
diff --git a/user/perl-cwd-guard/APKBUILD b/user/perl-cwd-guard/APKBUILD
new file mode 100644
index 000000000..5976741ef
--- /dev/null
+++ b/user/perl-cwd-guard/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-cwd-guard
+pkgver=0.05
+pkgrel=0
+pkgdesc="Temporary changing working directory (chdir)"
+url="https://metacpan.org/pod/Cwd::Guard"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl"
+makedepends="perl-dev perl-module-build"
+checkdepends="perl-test-requires"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/K/KA/KAZEBURO/Cwd-Guard-$pkgver.tar.gz"
+builddir="$srcdir/Cwd-Guard-$pkgver"
+
+prepare() {
+ cd "$builddir"
+ perl Build.PL installdirs=vendor
+}
+
+build() {
+ cd "$builddir"
+ ./Build
+}
+
+check() {
+ cd "$builddir"
+ ./Build test
+}
+
+package() {
+ cd "$builddir"
+ ./Build install destdir="$pkgdir"
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="14aa68e535cec8f7182d5648558c539cbf6eebe2fee9c59d0b06f5b45cca1c6c652104a58f71b5a56f796f03d139e3e74962e45fb127bf038803b05cb9f32b82 Cwd-Guard-0.05.tar.gz"
diff --git a/user/perl-data-dump/APKBUILD b/user/perl-data-dump/APKBUILD
new file mode 100644
index 000000000..26deca4d9
--- /dev/null
+++ b/user/perl-data-dump/APKBUILD
@@ -0,0 +1,32 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=perl-data-dump
+pkgver=1.23
+pkgrel=0
+pkgdesc="Perl module for outputting data structures"
+url="https://metacpan.org/pod/Data::Dump"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0+"
+depends="perl"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/G/GA/GAAS/Data-Dump-$pkgver.tar.gz"
+builddir="$srcdir/Data-Dump-$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="6fd6c23bb6df7f7396219149dbfd23132fc2ea1dd344c32f62fc27a1afeeb28d7ebf2d429184bb6d1189f412e218f9e62a966b49fdd9ad5564e5152d67a02b96 Data-Dump-1.23.tar.gz"
diff --git a/user/perl-data-optlist/APKBUILD b/user/perl-data-optlist/APKBUILD
new file mode 100644
index 000000000..c2f5f6308
--- /dev/null
+++ b/user/perl-data-optlist/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-data-optlist
+_pkgreal=Data-OptList
+pkgver=0.110
+pkgrel=0
+pkgdesc="Parse and validate simple name/value option pairs"
+url="https://metacpan.org/release/Data-OptList"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl perl-params-util perl-sub-install"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$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="68393958a38f509a71cfba61f6dff8303821918ba29ad8492af0c23cfd4f741c6ce98c4f68ad295f27e166287fc546229c430816f0bdd6009d4f60860c967b76 Data-OptList-0.110.tar.gz"
diff --git a/user/perl-devel-checkcompiler/APKBUILD b/user/perl-devel-checkcompiler/APKBUILD
new file mode 100644
index 000000000..6e99b7ced
--- /dev/null
+++ b/user/perl-devel-checkcompiler/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-devel-checkcompiler
+pkgver=0.07
+pkgrel=0
+pkgdesc="Check the compiler's availability"
+url="https://metacpan.org/pod/Devel::CheckCompiler"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl"
+makedepends="perl-dev perl-module-build-tiny"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/S/SY/SYOHEX/Devel-CheckCompiler-$pkgver.tar.gz"
+builddir="$srcdir/Devel-CheckCompiler-$pkgver"
+
+prepare() {
+ cd "$builddir"
+ perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs=vendor
+}
+
+build() {
+ cd "$builddir"
+ export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
+ ./Build
+}
+
+check() {
+ cd "$builddir"
+ ./Build test
+}
+
+package() {
+ cd "$builddir"
+ ./Build install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="147fbdab382ff40bf1402d2d6be1143fe77403cd2444e854fdf11eb02e8acdcab8cb6bbdd7f3aef01cc64fac2862efaa044c5148c7770b84b464f7360c399d7a Devel-CheckCompiler-0.07.tar.gz"
diff --git a/user/perl-devel-globaldestruction/APKBUILD b/user/perl-devel-globaldestruction/APKBUILD
new file mode 100644
index 000000000..af612cad4
--- /dev/null
+++ b/user/perl-devel-globaldestruction/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-devel-globaldestruction
+pkgver=0.14
+pkgrel=0
+pkgdesc="Provides Global Destruction for older perls"
+url="https://metacpan.org/pod/Devel::GlobalDestruction"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl perl-sub-exporter-progressive"
+makedepends="perl-dev"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/H/HA/HAARG/Devel-GlobalDestruction-$pkgver.tar.gz"
+builddir="$srcdir/Devel-GlobalDestruction-$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="75c346feae98897fb202dea0295f0225bf3cac59f21915da5dd1cdcf845052f4f8bcd0362d357020fb0facb6358175112b3685860ca1c1f173421c7c6a54f45d Devel-GlobalDestruction-0.14.tar.gz"
diff --git a/user/perl-devel-overloadinfo/APKBUILD b/user/perl-devel-overloadinfo/APKBUILD
new file mode 100644
index 000000000..98601047e
--- /dev/null
+++ b/user/perl-devel-overloadinfo/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-devel-overloadinfo
+pkgver=0.005
+pkgrel=0
+pkgdesc="Introspect overloaded Perl operators"
+url="https://metacpan.org/release/Devel-OverloadInfo"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-mro-compat perl-package-stash perl-sub-identify"
+makedepends="perl-dev"
+checkdepends="perl-test-fatal"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/I/IL/ILMARI/Devel-OverloadInfo-$pkgver.tar.gz"
+builddir="$srcdir/Devel-OverloadInfo-$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="66ff0869ecd34b2a80e6c8052e9ba7cf396b85e25f2efa92e42447ae3164ac50f703ca4dbee38ac676b70caf19ce189a6d2a1d6322cf3af342d4edd5c0b336e7 Devel-OverloadInfo-0.005.tar.gz"
diff --git a/user/perl-devel-stacktrace/APKBUILD b/user/perl-devel-stacktrace/APKBUILD
new file mode 100644
index 000000000..1420b82f3
--- /dev/null
+++ b/user/perl-devel-stacktrace/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-devel-stacktrace
+pkgver=2.03
+pkgrel=0
+pkgdesc="A Perl object representing a stack trace"
+url="https://metacpan.org/release/Devel-StackTrace"
+arch="noarch"
+license="Artistic-2.0"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/Devel-StackTrace-$pkgver.tar.gz"
+builddir="$srcdir/Devel-StackTrace-$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="a5263ec76f5adb83b83cc4906c18d6c341f50472a254617882a889315597698968988be1bacbbb4c6c0709974ff4ba67a14835d3c2278d672219c52e4c823514 Devel-StackTrace-2.03.tar.gz"
diff --git a/user/perl-devel-symdump/APKBUILD b/user/perl-devel-symdump/APKBUILD
new file mode 100644
index 000000000..a56a92cd9
--- /dev/null
+++ b/user/perl-devel-symdump/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-devel-symdump
+pkgver=2.18
+pkgrel=0
+pkgdesc="Dump symbol names or the symbol table"
+url="https://metacpan.org/pod/Devel::Symdump"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl"
+makedepends="perl-dev"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/A/AN/ANDK/Devel-Symdump-$pkgver.tar.gz"
+builddir="$srcdir/Devel-Symdump-$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="4e8e1ee723e3e02d2f0c100dace40d7722f6366402cff24fb50c8616a863628bc2faa02210754132afa7cbebbd90c75ea6f173e15bbcfaa5158dfcfdfd03da73 Devel-Symdump-2.18.tar.gz"
diff --git a/user/perl-dist-checkconflicts/APKBUILD b/user/perl-dist-checkconflicts/APKBUILD
new file mode 100644
index 000000000..481277c32
--- /dev/null
+++ b/user/perl-dist-checkconflicts/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-dist-checkconflicts
+pkgver=0.11
+pkgrel=0
+pkgdesc="Declare version conflicts for Perl distributions"
+url="https://metacpan.org/release/Dist-CheckConflicts"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-module-runtime"
+makedepends="perl-dev"
+checkdepends="perl-test-fatal"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DO/DOY/Dist-CheckConflicts-$pkgver.tar.gz"
+builddir="$srcdir/Dist-CheckConflicts-$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="6c3f8546c1c7904bbc2a3c1135d145cbff95997c3032e9129afc98bdd98578dd9219af444f357dd8e9b1f08442a2fdd9d6f7fe8768f8ef165e71570f5ae246ad Dist-CheckConflicts-0.11.tar.gz"
diff --git a/user/perl-env-path/APKBUILD b/user/perl-env-path/APKBUILD
new file mode 100644
index 000000000..8b321c27e
--- /dev/null
+++ b/user/perl-env-path/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-env-path
+pkgver=0.19
+pkgrel=0
+pkgdesc="Advanced operations on path variables (Perl module)"
+url="https://metacpan.org/release/Env-Path"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DS/DSB/Env-Path-$pkgver.tar.gz"
+builddir="$srcdir/Env-Path-$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="ea75dd808bd1d1e00a70179ccf834b4395e810ae46373eb16a9ebd37ada550ce3d9996073dfbe45909c66537fbc7712920d4dbb6dbf905200501884c5acb52fa Env-Path-0.19.tar.gz"
diff --git a/user/perl-eval-closure/APKBUILD b/user/perl-eval-closure/APKBUILD
new file mode 100644
index 000000000..93d0f376e
--- /dev/null
+++ b/user/perl-eval-closure/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-eval-closure
+pkgver=0.14
+pkgrel=0
+pkgdesc="Safely and cleanly create Perl closures using string eval"
+url="https://metacpan.org/release/Eval-Closure"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+checkdepends="perl-test-fatal perl-test-requires"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DO/DOY/Eval-Closure-$pkgver.tar.gz"
+builddir="$srcdir/Eval-Closure-$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="fc55206bd39c4cb39360d06b6f39a65743f34b5e59d1a1ce99bf5831b9d88a03fb6dadf32fa9f0868e140fce719d53a7b13027f397cdd7f6ca05cc81277bdc08 Eval-Closure-0.14.tar.gz"
diff --git a/user/perl-exception-class/APKBUILD b/user/perl-exception-class/APKBUILD
new file mode 100644
index 000000000..4ff03bda6
--- /dev/null
+++ b/user/perl-exception-class/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=perl-exception-class
+pkgver=1.44
+pkgrel=0
+pkgdesc="Perl module for declaring 'real' exception classes"
+url="https://metacpan.org/release/Exception-Class"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-class-data-inheritable perl-devel-stacktrace"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/Exception-Class-$pkgver.tar.gz"
+builddir="$srcdir/Exception-Class-$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="7ce1e488505dc3d1c6d6365b5ed523b204b93d89d205ad4cdf6c9ee9dbad1a6edc257251a365275f067479e734def56b3b21d588e978822e7714bd8a49ba6bb2 Exception-Class-1.44.tar.gz"
diff --git a/user/perl-exporter-lite/APKBUILD b/user/perl-exporter-lite/APKBUILD
new file mode 100644
index 000000000..4831d5f98
--- /dev/null
+++ b/user/perl-exporter-lite/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-exporter-lite
+pkgver=0.08
+pkgrel=0
+pkgdesc="Lightweight exporting of Perl functions and variables"
+url="https://metacpan.org/release/Exporter-Lite"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/N/NE/NEILB/Exporter-Lite-$pkgver.tar.gz"
+builddir="$srcdir/Exporter-Lite-$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="8c6ff5a88c1b810d74156c5d84695cfde6f555e0fc663804123e2a96f5e2235a5adeebbf24b18301ed2c3fb57f76788ecfdf301b26263279e92a88a9143b8953 Exporter-Lite-0.08.tar.gz"
diff --git a/user/perl-exporter-tiny/APKBUILD b/user/perl-exporter-tiny/APKBUILD
new file mode 100644
index 000000000..7e06cb066
--- /dev/null
+++ b/user/perl-exporter-tiny/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-exporter-tiny
+pkgver=1.002001
+pkgrel=0
+pkgdesc="Light-weight exporter with the features of Sub::Exporter"
+url="https://metacpan.org/release/Exporter-Tiny"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/T/TO/TOBYINK/Exporter-Tiny-$pkgver.tar.gz"
+sha512sums="b247e7785e02c3346f231736a430c2d54e5ac93c175892090c40121c86eb255ce4d138c65e31836fd2970b45fb71dc7e68ea3c45a06a9e9c4135b45df48621d8 Exporter-Tiny-1.002001.tar.gz"
+builddir="$srcdir/Exporter-Tiny-$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
+}
+
diff --git a/user/perl-extutils-depends/APKBUILD b/user/perl-extutils-depends/APKBUILD
new file mode 100644
index 000000000..3947f7667
--- /dev/null
+++ b/user/perl-extutils-depends/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-extutils-depends
+pkgver=0.405
+pkgrel=0
+pkgdesc="Easily build XS extensions that depend on XS extensions"
+url="https://metacpan.org/release/ExtUtils::Depends"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl"
+makedepends="perl-dev"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/X/XA/XAOC/ExtUtils-Depends-$pkgver.tar.gz"
+sha512sums="b9983ad763ff0cb81c899bc24f3152f13c69e608304b6e4446bd07b9b13d039650f3f87544c0bdd29c67246ea2973f04a1ce0fccbffb566fe89fdbe0bb03f11b ExtUtils-Depends-0.405.tar.gz"
+builddir="$srcdir/ExtUtils-Depends-$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
+}
+
diff --git a/user/perl-file-copy-recursive-reduced/APKBUILD b/user/perl-file-copy-recursive-reduced/APKBUILD
new file mode 100644
index 000000000..76e66d192
--- /dev/null
+++ b/user/perl-file-copy-recursive-reduced/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-file-copy-recursive-reduced
+pkgver=0.006
+pkgrel=0
+pkgdesc="Recursive copying of files and directories within Perl 5 toolchain"
+url="https://metacpan.org/pod/File::Copy::Recursive::Reduced"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl"
+makedepends="perl-dev"
+checkdepends="perl-capture-tiny perl-path-tiny"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/J/JK/JKEENAN/File-Copy-Recursive-Reduced-$pkgver.tar.gz"
+builddir="$srcdir/File-Copy-Recursive-Reduced-$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="7cf888b8c004d9430c87c1cceba25e997cb12974a79c3f4d803b11779abef81f5b686caac4c46a70caadb2eee12a71cb1fb87abfc7d5fec43dc37bbd2ef07694 File-Copy-Recursive-Reduced-0.006.tar.gz"
diff --git a/user/perl-file-copy-recursive/APKBUILD b/user/perl-file-copy-recursive/APKBUILD
new file mode 100644
index 000000000..882a25d2f
--- /dev/null
+++ b/user/perl-file-copy-recursive/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-file-copy-recursive
+pkgver=0.44
+pkgrel=0
+pkgdesc="Perl extension for recursively copying files and directories"
+url="https://metacpan.org/pod/File::Copy::Recursive"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl"
+makedepends="perl-dev"
+checkdepends="perl-test-fatal perl-test-warnings perl-path-tiny perl-test-deep perl-test-file"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DM/DMUEY/File-Copy-Recursive-$pkgver.tar.gz"
+builddir="$srcdir/File-Copy-Recursive-$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="7599c48cee0b9848d5e275a1de00845cb2d4820eda9092d550063d4791974870129ce8d3d9337a8f7ea413ed4c21e533c2eb3134c2fcb5cc412dbbfddd2500e4 File-Copy-Recursive-0.44.tar.gz"
diff --git a/user/perl-file-find-object-rule/APKBUILD b/user/perl-file-find-object-rule/APKBUILD
new file mode 100644
index 000000000..f8938a59c
--- /dev/null
+++ b/user/perl-file-find-object-rule/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-file-find-object-rule
+pkgver=0.0309
+pkgrel=0
+pkgdesc="Alternative Perl interface to File::Find::Object"
+url="https://metacpan.org/release/File-Find-Object-Rule"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-class-xsaccessor perl-file-find-object perl-number-compare
+ perl-text-glob"
+makedepends="perl-dev perl-module-build"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/File-Find-Object-Rule-$pkgver.tar.gz"
+builddir="$srcdir/File-Find-Object-Rule-$pkgver"
+
+build() {
+ cd "$builddir"
+ perl Build.PL installdirs=vendor
+ ./Build
+}
+
+check() {
+ cd "$builddir"
+ ./Build test
+}
+
+package() {
+ cd "$builddir"
+ ./Build install destdir="$pkgdir"
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="d4fe0bc369faa4870bb4f66b4e1212f0597ab0eb723dfb0ab6473428657067c0a72f9b9d6354a549117e553be1ddde222ede822555f94846ba110a2f82cc4b68 File-Find-Object-Rule-0.0309.tar.gz"
diff --git a/user/perl-file-find-object/APKBUILD b/user/perl-file-find-object/APKBUILD
new file mode 100644
index 000000000..b35c550d5
--- /dev/null
+++ b/user/perl-file-find-object/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=perl-file-find-object
+pkgver=0.3.2
+pkgrel=0
+pkgdesc="Object-oriented File::Find replacement for Perl"
+url="https://metacpan.org/release/File-Find-Object"
+arch="noarch"
+license="Artistic-2.0"
+depends="perl-class-xsaccessor"
+makedepends="perl-dev perl-module-build"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/File-Find-Object-v$pkgver.tar.gz"
+builddir="$srcdir/File-Find-Object-v$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="58ca07083da520aee03945259ac89b6b584728d89ad52aea1a6f19a14da73fc92fcfc46c01656130d64fbc9fc9e4b1c5ef56274f30ebe3711972235dd8945956 File-Find-Object-v0.3.2.tar.gz"
diff --git a/user/perl-file-finder/APKBUILD b/user/perl-file-finder/APKBUILD
new file mode 100644
index 000000000..83f2ada97
--- /dev/null
+++ b/user/perl-file-finder/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-file-finder
+pkgver=0.53
+pkgrel=1
+pkgdesc="Wrap Perl File::Find"
+url="https://metacpan.org/release/File-Finder"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-text-glob"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/M/ME/MERLYN/File-Finder-$pkgver.tar.gz
+ fix-test.patch
+ "
+builddir="$srcdir/File-Finder-$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="abcbc5b5c7ae09eb13e62ab1656e79a25becafb91eeef241fc0803ba0b35ae902c93db2240dfff6342952df7f0ff589350f63fdb1ccead64816f51bf52e366f0 File-Finder-0.53.tar.gz
+8b96e6adb28e0a26843a3551d5939b9c9f65fbef155e46c155b82263923e1275a6be8c6184bbc831dfff7cc899d7b48df0f21e7005f273c389eff830190be166 fix-test.patch"
diff --git a/user/perl-file-finder/fix-test.patch b/user/perl-file-finder/fix-test.patch
new file mode 100644
index 000000000..6c371f6fc
--- /dev/null
+++ b/user/perl-file-finder/fix-test.patch
@@ -0,0 +1,16 @@
+Thanks @smaeul
+
+--- File-Finder-0.53/t/05-steps.t.old 2004-10-07 01:04:12.000000000 -0500
++++ File-Finder-0.53/t/05-steps.t 2018-10-02 22:27:29.867015209 -0500
+@@ -51,9 +51,9 @@
+ 'mode 755');
+
+ {
+- my $dirperm = (stat ".")[2] & 07777;
++ my $dirperm = (stat ".")[2] & 0777;
+ is_deeply([File::Finder->perm($dirperm)->in(qw(.))],
+- [fin(sub { ((stat($_))[2] & 07777) == $dirperm }, '.')],
++ [fin(sub { ((stat($_))[2] & 0777) == $dirperm }, '.')],
+ 'mode same as current directory');
+ }
+
diff --git a/user/perl-file-pushd/APKBUILD b/user/perl-file-pushd/APKBUILD
new file mode 100644
index 000000000..e4c1bd0f4
--- /dev/null
+++ b/user/perl-file-pushd/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-file-pushd
+pkgver=1.016
+pkgrel=0
+pkgdesc="Change directory temporarily in Perl for a limited scope"
+url="https://metacpan.org/release/File-pushd"
+arch="noarch"
+license="Apache-2.0"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DA/DAGOLDEN/File-pushd-$pkgver.tar.gz"
+builddir="$srcdir/File-pushd-$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="f80f24831c28aed6efcb036db8da2404aadf1005ed751a82c10071a24572c05758eb1785cd9d1f9fdee86a20cf83b41bd73125862d8d24bfa240cc0d6b33ccdd File-pushd-1.016.tar.gz"
diff --git a/user/perl-file-sharedir-install/APKBUILD b/user/perl-file-sharedir-install/APKBUILD
new file mode 100644
index 000000000..f2b567b5e
--- /dev/null
+++ b/user/perl-file-sharedir-install/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-file-sharedir-install
+pkgver=0.13
+pkgrel=0
+pkgdesc="Install shared files"
+url="https://metacpan.org/pod/File::ShareDir::Install"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+makedepends="perl-dev"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/File-ShareDir-Install-$pkgver.tar.gz"
+builddir="$srcdir/File-ShareDir-Install-$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="a119e38491fad8ae0ebd95913e3b608e09a2b99376a5160e75083a28abe4f83c4f6a36df216365527ff87bf8ec095254b16a2f6d2515c69f34609df8672605ca File-ShareDir-Install-0.13.tar.gz"
diff --git a/user/perl-file-slurp/APKBUILD b/user/perl-file-slurp/APKBUILD
new file mode 100644
index 000000000..102d45097
--- /dev/null
+++ b/user/perl-file-slurp/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-file-slurp
+pkgver=9999.22
+pkgrel=0
+pkgdesc="Simple and efficient file manipulation in Perl"
+url="https://metacpan.org/release/File-Slurp"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+#source="https://cpan.metacpan.org/authors/id/U/UR/URI/File-Slurp-$pkgver.tar.gz"
+source="https://cpan.metacpan.org/authors/id/C/CA/CAPOEIRAB/File-Slurp-$pkgver.tar.gz"
+builddir="$srcdir/File-Slurp-$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="54a77ed58bb93547d3ff0b01ebe39c9daaa5d16c335e16922ea2964edb5716f662d512c9c505a09c63f4bd465fb3e5f0af365ad3734c98e5225d53a5c616ca4e File-Slurp-9999.22.tar.gz"
diff --git a/user/perl-file-which/APKBUILD b/user/perl-file-which/APKBUILD
new file mode 100644
index 000000000..fddd35ce9
--- /dev/null
+++ b/user/perl-file-which/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-file-which
+pkgver=1.22
+pkgrel=0
+pkgdesc="Perl implementation of the which(1) utility as an API"
+url="https://metacpan.org/release/File-Which"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/P/PL/PLICEASE/File-Which-$pkgver.tar.gz"
+builddir="$srcdir/File-Which-$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="9efd8cc6d08e82a429ab3b0ec5193cb894432311338dc4cdcb73b4536a40bf4829c414e75e5dcb0d03b9190511b232f1d27e441657afa7299b0a5b882877f2d1 File-Which-1.22.tar.gz"
diff --git a/user/perl-games-solitaire-verify/APKBUILD b/user/perl-games-solitaire-verify/APKBUILD
new file mode 100644
index 000000000..bcf5b7a45
--- /dev/null
+++ b/user/perl-games-solitaire-verify/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=perl-games-solitaire-verify
+pkgver=0.1900
+pkgrel=0
+pkgdesc="Verify solutions to solitaire games"
+url="https://metacpan.org/release/Games-Solitaire-Verify"
+arch="noarch"
+license="MIT"
+depends="perl-class-xsaccessor perl-exception-class perl-list-moreutils"
+makedepends="perl-dev perl-module-build"
+checkdepends="perl-test-differences"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Games-Solitaire-Verify-$pkgver.tar.gz"
+builddir="$srcdir/Games-Solitaire-Verify-$pkgver"
+
+build() {
+ cd "$builddir"
+ perl Build.PL installdirs=vendor
+ export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
+ ./Build
+}
+
+check() {
+ cd "$builddir"
+ ./Build test
+}
+
+package() {
+ cd "$builddir"
+ ./Build install destdir="$pkgdir"
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="d161bc395f85f2aa404fe7aac893c840b302c7659e529b62bda9ad6c274508c4294c03c9037b9ab6a667e8a90292ef83445c88be26e42dde89625224f85027f0 Games-Solitaire-Verify-0.1900.tar.gz"
diff --git a/user/perl-getopt-long-descriptive/APKBUILD b/user/perl-getopt-long-descriptive/APKBUILD
new file mode 100644
index 000000000..92fe31c60
--- /dev/null
+++ b/user/perl-getopt-long-descriptive/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-getopt-long-descriptive
+pkgver=0.103
+pkgrel=0
+pkgdesc="Simpler Perl implementation of Getopt::Long"
+url="https://metacpan.org/release/Getopt-Long-Descriptive"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-params-validate perl-sub-exporter"
+makedepends="perl-dev"
+checkdepends="perl-cpan-meta-check perl-test-fatal perl-test-warnings"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/Getopt-Long-Descriptive-$pkgver.tar.gz"
+builddir="$srcdir/Getopt-Long-Descriptive-$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="9229575bde794fa1213871fbb33a12222737d7979cf4c290200fd85c7da9e3227539809b8380a88a85675429ceb61e505bac8cc4e1408ca63ba92b4e1b33149f Getopt-Long-Descriptive-0.103.tar.gz"
diff --git a/user/perl-import-into/APKBUILD b/user/perl-import-into/APKBUILD
new file mode 100644
index 000000000..29ccfb837
--- /dev/null
+++ b/user/perl-import-into/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-import-into
+pkgver=1.002005
+pkgrel=0
+pkgdesc="Import Perl packages into other packages"
+url="https://metacpan.org/release/Import-Into"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-module-runtime"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/H/HA/HAARG/Import-Into-$pkgver.tar.gz"
+builddir="$srcdir/Import-Into-$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="d356307072da18bc40b25f11583018ed416cb87178f080982e14e98e53d42bc1e04aebda56d595e707c05065eaa6ad7a6b059920e8b5b8e1589bfd68e26900fb Import-Into-1.002005.tar.gz"
diff --git a/user/perl-inline-c/APKBUILD b/user/perl-inline-c/APKBUILD
new file mode 100644
index 000000000..50d298bb0
--- /dev/null
+++ b/user/perl-inline-c/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-inline-c
+pkgver=0.78
+pkgrel=0
+pkgdesc="C Language Support for Inline"
+url="https://metacpan.org/pod/Inline::C"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl perl-inline perl-pegex perl-parse-recdescent"
+makedepends="perl-dev perl-file-sharedir-install"
+checkdepends="perl-test-warn perl-yaml-libyaml perl-file-copy-recursive"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/T/TI/TINITA/Inline-C-$pkgver.tar.gz"
+builddir="$srcdir/Inline-C-$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="368e68dfb9f1700534d9b391090e340172e3adde5fe15576f883e9341047fec35cea8660751883b27e128ad91dda363d513547368097a989457d669bbbdc8ce4 Inline-C-0.78.tar.gz"
diff --git a/user/perl-inline/APKBUILD b/user/perl-inline/APKBUILD
new file mode 100644
index 000000000..032805c28
--- /dev/null
+++ b/user/perl-inline/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-inline
+pkgver=0.80
+pkgrel=0
+pkgdesc="Write Perl Subroutines in Other Programming Languages"
+url="https://metacpan.org/pod/Inline"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+makedepends="perl-dev"
+checkdepends="perl-test-warn"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/I/IN/INGY/Inline-$pkgver.tar.gz"
+builddir="$srcdir/Inline-$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="e64f7752f32fd07c7c7a975429e04730f2987c9588f99b95502d4e5c87d458736a606c03943a68660940c3987cd632ad2f75ec3862342956c1754b1aca86e0bb Inline-0.80.tar.gz"
diff --git a/user/perl-io-all/APKBUILD b/user/perl-io-all/APKBUILD
new file mode 100644
index 000000000..bfa29c999
--- /dev/null
+++ b/user/perl-io-all/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-io-all
+pkgver=0.87
+pkgrel=0
+pkgdesc="Simple Perl module for all I/O needs"
+url="https://metacpan.org/release/IO-All"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/F/FR/FREW/IO-All-$pkgver.tar.gz"
+builddir="$srcdir/IO-All-$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="bd8cb6d44db51a9a140209223f016e48acd713ec03ced1b9c02933fd88c6363926635dae033b20905201b13e8186b8bcc3f428d4d85cd187fc68b777cd197267 IO-All-0.87.tar.gz"
diff --git a/user/perl-io-stringy/APKBUILD b/user/perl-io-stringy/APKBUILD
new file mode 100644
index 000000000..e5a271ac7
--- /dev/null
+++ b/user/perl-io-stringy/APKBUILD
@@ -0,0 +1,41 @@
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-io-stringy
+_pkgreal=IO-stringy
+pkgver=2.111
+pkgrel=0
+pkgdesc="I/O on in-core objects like strings and arrays"
+url="https://metacpan.org/release/IO-stringy"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+cpandepends=""
+cpanmakedepends=""
+depends="$cpandepends"
+makedepends="perl-dev $cpanmakedepends"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DS/DSKOLL/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+prepare() {
+ cd "$builddir"
+ export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+}
+
+build() {
+ cd "$builddir"
+ export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
+ make
+}
+
+check() {
+ cd "$builddir"
+ make test
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="9da8fb03945bc4a59cea3b3b2e22b15d56b133470e581d1cb03920bda2b4953e3c9e4a25d095ed8a384efb5a4c58db437c92cca6a81d583791191f1a37691a4a IO-stringy-2.111.tar.gz"
diff --git a/user/perl-io-tty/APKBUILD b/user/perl-io-tty/APKBUILD
new file mode 100644
index 000000000..d42b831a2
--- /dev/null
+++ b/user/perl-io-tty/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-io-tty
+pkgver=1.12
+pkgrel=0
+pkgdesc="Low-level allocate a pseudo-tty"
+url="https://metacpan.org/pod/IO::Tty"
+arch="all"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/T/TO/TODDR/IO-Tty-$pkgver.tar.gz"
+builddir="$srcdir/IO-Tty-$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="23733e7832a0de370952420df8a781f85d28ff60eb4cd55be22147337bf5587f4e1ec7fcfc190ae3ad1fd9df0f9697f2d647e00739f4a2927b1ac9c81435454d IO-Tty-1.12.tar.gz"
diff --git a/user/perl-ipc-run/APKBUILD b/user/perl-ipc-run/APKBUILD
new file mode 100644
index 000000000..c78ee10fb
--- /dev/null
+++ b/user/perl-ipc-run/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-ipc-run
+pkgver=20180523.0
+pkgrel=0
+pkgdesc="system() and background procs w/ piping, redirs, ptys"
+url="https://metacpan.org/pod/IPC::Run"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+makedepends="perl-dev"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/T/TO/TODDR/IPC-Run-$pkgver.tar.gz"
+builddir="$srcdir/IPC-Run-$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="e9d97cbec9f2607d1a89c1a06bd166ae2f030157f201e870df3b88b9f0b915b06a4b0db05b7f50daa4883de255e29c6898b1f9964d706739d4bf7034b53d7f89 IPC-Run-20180523.0.tar.gz"
diff --git a/user/perl-ipc-run3/APKBUILD b/user/perl-ipc-run3/APKBUILD
new file mode 100644
index 000000000..9abe68fb1
--- /dev/null
+++ b/user/perl-ipc-run3/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-ipc-run3
+pkgver=0.048
+pkgrel=0
+pkgdesc="Run a subprocess from Perl with I/O redirection"
+url="https://metacpan.org/release/IPC-Run3"
+arch="noarch"
+license="GPL-1.0+ OR BSD-2-Clause OR Artistic-1.0-Perl OR Artistic-2.0"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/IPC-Run3-$pkgver.tar.gz"
+builddir="$srcdir/IPC-Run3-$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="50432850d8dccd2e59aa6684d34f3e3242fd7df3eb4d9a5eb02dae389aa46b5fd68cc54114a157c3fe99956e68e74d575ab3db5009b7bf7d5c325f1f109b1262 IPC-Run3-0.048.tar.gz"
diff --git a/user/perl-ipc-system-simple/APKBUILD b/user/perl-ipc-system-simple/APKBUILD
new file mode 100644
index 000000000..938924620
--- /dev/null
+++ b/user/perl-ipc-system-simple/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-ipc-system-simple
+pkgver=1.25
+pkgrel=0
+pkgdesc="Run commands from Perl with detailed diagnostics"
+url="https://metacpan.org/release/IPC-System-Simple"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/P/PJ/PJF/IPC-System-Simple-$pkgver.tar.gz"
+builddir="$srcdir/IPC-System-Simple-$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="fda275786605eb80acaa6062cc51c32aa0e84f150e7ca7afcfe874f088ce7b8f9a97669e91bec24fdb05426db8b0f05552aa8853e44b08996e625281d1892f72 IPC-System-Simple-1.25.tar.gz"
diff --git a/user/perl-json-xs/APKBUILD b/user/perl-json-xs/APKBUILD
new file mode 100644
index 000000000..75f0720ce
--- /dev/null
+++ b/user/perl-json-xs/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-json-xs
+pkgver=3.04
+pkgrel=0
+pkgdesc="JSON serialising/deserialising, done correctly and fast"
+url="https://metacpan.org/pod/JSON::XS"
+arch="all"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl perl-common-sense perl-types-serialiser"
+makedepends="perl-dev perl-canary-stability"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/M/ML/MLEHMANN/JSON-XS-$pkgver.tar.gz"
+builddir="$srcdir/JSON-XS-$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="69c2e199385b5b5e331d905b64805304de80e1a3b393acaf7dce21c45254b1f23f1a83b246dcd3a80c2cfdadaf8ce3634ee587c469629cb69106f0c2239c73db JSON-XS-3.04.tar.gz"
diff --git a/user/perl-lib-relative/APKBUILD b/user/perl-lib-relative/APKBUILD
new file mode 100644
index 000000000..daeb17687
--- /dev/null
+++ b/user/perl-lib-relative/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-lib-relative
+pkgver=0.002
+pkgrel=0
+pkgdesc="Add paths relative to the current file to Perl @INC"
+url="https://metacpan.org/release/lib-relative"
+arch="noarch"
+license="Artistic-2.0"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DB/DBOOK/lib-relative-$pkgver.tar.gz"
+builddir="$srcdir/lib-relative-$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="ebe552fbc4967dd8615e2a1ecde69000358b3909095c66b557a6dd68c1a4744ca586dc91d2cf1b679a57ef981ec79a4689ba9c3f846393f4f48e528e85c326b0 lib-relative-0.002.tar.gz"
diff --git a/user/perl-list-compare/APKBUILD b/user/perl-list-compare/APKBUILD
new file mode 100644
index 000000000..611b3efb3
--- /dev/null
+++ b/user/perl-list-compare/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-list-compare
+pkgver=0.53
+pkgrel=0
+pkgdesc="Compare elements of two or more Perl lists"
+url="https://metacpan.org/release/List-Compare"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/J/JK/JKEENAN/List-Compare-$pkgver.tar.gz"
+builddir="$srcdir/List-Compare-$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="b467e9395afa8297f5f59d745d22048373cfd60dc0c8ce56d0ad95e8f9fddcda487d99c906b9fb5ac1b28aa53873a7c9689347866c3aa907aecd31b4a127627a List-Compare-0.53.tar.gz"
diff --git a/user/perl-list-moreutils-xs/APKBUILD b/user/perl-list-moreutils-xs/APKBUILD
new file mode 100644
index 000000000..73f3454a8
--- /dev/null
+++ b/user/perl-list-moreutils-xs/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-list-moreutils-xs
+pkgver=0.428
+pkgrel=0
+pkgdesc="Provide the stuff missing in List::Util in XS"
+url="https://metacpan.org/release/List-MoreUtils-XS"
+arch="all"
+license="Apache-2.0"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/R/RE/REHSACK/List-MoreUtils-XS-$pkgver.tar.gz"
+builddir="$srcdir/List-MoreUtils-XS-$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="a608568e3c4a2e160e4f9afa26640be5b97ec83e301a6b81849e37951698b9423c0a969d7e8797a49b4fb6c5123780630a3726c64713922b90b21b947682c3dd List-MoreUtils-XS-0.428.tar.gz"
diff --git a/user/perl-list-moreutils/APKBUILD b/user/perl-list-moreutils/APKBUILD
new file mode 100644
index 000000000..7f20abe32
--- /dev/null
+++ b/user/perl-list-moreutils/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-list-moreutils
+pkgver=0.428
+pkgrel=0
+pkgdesc="Provide the stuff missing in List::Util"
+url="https://metacpan.org/release/List-MoreUtils"
+arch="noarch"
+license="Apache-2.0"
+depends="perl-exporter-tiny"
+makedepends="perl-dev perl-list-moreutils-xs"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/R/RE/REHSACK/List-MoreUtils-$pkgver.tar.gz"
+builddir="$srcdir/List-MoreUtils-$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="f7e11f10f1d7bd3b8f9f8bc2fc325e1a9230056f68591da624aed01fb4e4cbac20caeae0c3e2aa3acc8b71febd6d4149284367f051d3c1e608e3a4ca8b62dbd8 List-MoreUtils-0.428.tar.gz"
diff --git a/user/perl-list-someutils-xs/APKBUILD b/user/perl-list-someutils-xs/APKBUILD
new file mode 100644
index 000000000..55e736bbe
--- /dev/null
+++ b/user/perl-list-someutils-xs/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-list-someutils-xs
+pkgver=0.58
+pkgrel=0
+pkgdesc="XS implementation of Perl List::SomeUtils"
+url="https://metacpan.org/release/List-SomeUtils-XS"
+arch="all"
+license="Artistic-2.0"
+depends=""
+makedepends="perl-dev"
+checkdepends="perl-test-leaktrace perl-test-warnings"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/List-SomeUtils-XS-$pkgver.tar.gz"
+builddir="$srcdir/List-SomeUtils-XS-$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="f89f5a35224a69a59c1d512a819bd725b324f0968ea447824a42c741c4ba66ee9522db939bd3e75d190e0f2f75d54100912b83a86d5e7dd1079025a57a245c38 List-SomeUtils-XS-0.58.tar.gz"
diff --git a/user/perl-list-someutils/APKBUILD b/user/perl-list-someutils/APKBUILD
new file mode 100644
index 000000000..80a5e64ee
--- /dev/null
+++ b/user/perl-list-someutils/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-list-someutils
+pkgver=0.56
+pkgrel=0
+pkgdesc="Provide the stuff missing in Perl's List::Util module"
+url="https://metacpan.org/release/List-SomeUtils"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-list-someutils-xs perl-module-implementation"
+makedepends="perl-dev"
+checkdepends="perl-test-leaktrace"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/List-SomeUtils-$pkgver.tar.gz"
+builddir="$srcdir/List-SomeUtils-$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="b74c2a97811185d21bfd68fe60606afe8e92c266e98a763d51589021c9b3ae5310275005dc80198b8f9d92118fed569b5251d5ad87643f47af75a478db388503 List-SomeUtils-0.56.tar.gz"
diff --git a/user/perl-log-any/APKBUILD b/user/perl-log-any/APKBUILD
new file mode 100644
index 000000000..8b0e5a88d
--- /dev/null
+++ b/user/perl-log-any/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-log-any
+pkgver=1.707
+pkgrel=0
+pkgdesc="Bring Perl loggers and listeners together"
+url="https://metacpan.org/release/Log-Any"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/P/PR/PREACTION/Log-Any-$pkgver.tar.gz"
+builddir="$srcdir/Log-Any-$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="b5fc37130b3bb07c9fac896c539657fffad2e80c2055a09816e133e48f3f5db9a3b896ea11bf087b5fe6844a72fb6189656a3033c7761c00f471282747e1c290 Log-Any-1.707.tar.gz"
diff --git a/user/perl-mixin-linewise/APKBUILD b/user/perl-mixin-linewise/APKBUILD
new file mode 100644
index 000000000..7c6a5339f
--- /dev/null
+++ b/user/perl-mixin-linewise/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-mixin-linewise
+pkgver=0.108
+pkgrel=0
+pkgdesc="Line-wise reader and writer for Perl strings"
+url="https://metacpan.org/release/Mixin-Linewise"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-perlio-utf8_strict perl-sub-exporter"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/Mixin-Linewise-$pkgver.tar.gz"
+builddir="$srcdir/Mixin-Linewise-$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="2789126737e2798a94ab6d90614503717dbc6c4178d19a9dd1e32689869e8e1298ec168fd6ab53580e65b5ad7ff94e065dca4afb7b71c2bb453810da61d29450 Mixin-Linewise-0.108.tar.gz"
diff --git a/user/perl-module-build-xsutil/APKBUILD b/user/perl-module-build-xsutil/APKBUILD
new file mode 100644
index 000000000..80d03b9ed
--- /dev/null
+++ b/user/perl-module-build-xsutil/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-module-build-xsutil
+pkgver=0.19
+pkgrel=0
+pkgdesc="A Module::Build class for building XS modules"
+url="https://metacpan.org/pod/Module::Build::XSUtil"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl perl-module-build perl-devel-checkcompiler"
+makedepends="perl-dev"
+checkdepends="perl-capture-tiny perl-cwd-guard perl-file-copy-recursive-reduced"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/H/HI/HIDEAKIO/Module-Build-XSUtil-$pkgver.tar.gz"
+builddir="$srcdir/Module-Build-XSUtil-$pkgver"
+
+prepare() {
+ cd "$builddir"
+ perl Build.PL installdirs=vendor
+}
+
+build() {
+ cd "$builddir"
+ ./Build
+}
+
+check() {
+ cd "$builddir"
+ ./Build test
+}
+
+package() {
+ cd "$builddir"
+ ./Build install destdir="$pkgdir"
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="187f504c3f26d15b96cdc5b682d3487a31cf124475160b7fe5dce727d5d6ec5de5a58d09535adb62a1a95b3030fb62951b2cc0eca860eb03c66a48042cea8819 Module-Build-XSUtil-0.19.tar.gz"
diff --git a/user/perl-module-implementation/APKBUILD b/user/perl-module-implementation/APKBUILD
new file mode 100644
index 000000000..d64f1a35d
--- /dev/null
+++ b/user/perl-module-implementation/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-module-implementation
+pkgver=0.09
+pkgrel=0
+pkgdesc="Loads an underlying implementation of a Perl module"
+url="https://metacpan.org/release/Module-Implementation"
+arch="noarch"
+license="Artistic-2.0"
+depends="perl-module-runtime perl-try-tiny"
+makedepends="perl-dev"
+checkdepends="perl-test-fatal perl-test-requires"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/Module-Implementation-$pkgver.tar.gz"
+builddir="$srcdir/Module-Implementation-$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="049f967ba1bd8a3914968b34006030ae318d99ac629a0f34736f1c2b5392490c30aa0914e777eaefda7f0f58755d2d3363a266b90db59b53fe145ef68e1d953c Module-Implementation-0.09.tar.gz"
diff --git a/user/perl-module-runtime-conflicts/APKBUILD b/user/perl-module-runtime-conflicts/APKBUILD
new file mode 100644
index 000000000..2fdca3cf1
--- /dev/null
+++ b/user/perl-module-runtime-conflicts/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-module-runtime-conflicts
+pkgver=0.003
+pkgrel=0
+pkgdesc="Provides information on conflicts for Module::Runtime"
+url="https://metacpan.org/release/Module-Runtime-Conflicts"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-dist-checkconflicts perl-module-runtime"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Module-Runtime-Conflicts-$pkgver.tar.gz"
+builddir="$srcdir/Module-Runtime-Conflicts-$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="1b72ea7cc9516721290d5ea433169697b4134b5fc77872d6822e4c395a154bf956d469ab5da2802d587d60dfb13b9784014fe492988cf3f8b5820da2d63e8ca1 Module-Runtime-Conflicts-0.003.tar.gz"
diff --git a/user/perl-module-runtime/APKBUILD b/user/perl-module-runtime/APKBUILD
new file mode 100644
index 000000000..0430740c3
--- /dev/null
+++ b/user/perl-module-runtime/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-module-runtime
+pkgver=0.016
+pkgrel=0
+pkgdesc="Runtime module handling"
+url="https://metacpan.org/pod/Module::Runtime"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl"
+makedepends="perl-dev"
+checkdepends="perl-test-pod perl-test-pod-coverage"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/Z/ZE/ZEFRAM/Module-Runtime-$pkgver.tar.gz"
+builddir="$srcdir/Module-Runtime-$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="64a362ee897646173dbbdd8794f863d93379d45d7ac20d3ae890d77b4ec3f5e36aaff66c41b4a6a33b28bf492216283528755550ab09e466ceafb4f0cfbaeb9e Module-Runtime-0.016.tar.gz"
diff --git a/user/perl-moo/APKBUILD b/user/perl-moo/APKBUILD
new file mode 100644
index 000000000..6e419cac2
--- /dev/null
+++ b/user/perl-moo/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-moo
+pkgver=2.003004
+pkgrel=0
+pkgdesc="Minimalist Object Orientation (with Moose compatibility)"
+url="https://metacpan.org/pod/Moo"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl perl-module-runtime perl-devel-globaldestruction perl-class-method-modifiers
+ perl-sub-quote perl-role-tiny"
+makedepends="perl-dev"
+checkdepends="perl-test-fatal"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/H/HA/HAARG/Moo-$pkgver.tar.gz"
+builddir="$srcdir/Moo-$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="686996e4dd0238cff7483e4e06db5439660e390c67e65ace67c3fd0b05ade379a168d36ae649812c8a5e2b715eefea7cb17e5db323a0cd31b90667d8954eb38a Moo-2.003004.tar.gz"
diff --git a/user/perl-moose/APKBUILD b/user/perl-moose/APKBUILD
new file mode 100644
index 000000000..74ebadf6b
--- /dev/null
+++ b/user/perl-moose/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-moose
+pkgver=2.2011
+pkgrel=0
+pkgdesc="A postmodern object system for Perl 5"
+url="https://metacpan.org/release/Moose"
+arch="all"
+license="Artistic-1.0-Perl"
+depends="perl-class-load perl-class-load-xs perl-data-optlist
+ perl-devel-globaldestruction perl-devel-overloadinfo
+ perl-devel-stacktrace perl-eval-closure perl-module-runtime
+ perl-module-runtime-conflicts perl-mro-compat
+ perl-package-deprecationmanager perl-params-util perl-sub-exporter
+ perl-sub-identify perl-sub-name perl-try-tiny"
+makedepends="perl-dev"
+checkdepends="perl-cpan-meta-check perl-dist-checkconflicts
+ perl-test-cleannamespaces perl-test-fatal perl-test-requires"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Moose-$pkgver.tar.gz"
+builddir="$srcdir/Moose-$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="f94ed23c45a860b9afa8defe7f5067a65fdd9d457d94a85e4ea192640d09ad73bc336a2e54c4c663643ec0efa32872f4b2aa69083e99093e420cecf5430f34a3 Moose-2.2011.tar.gz"
diff --git a/user/perl-moosex-getopt/APKBUILD b/user/perl-moosex-getopt/APKBUILD
new file mode 100644
index 000000000..4669063ec
--- /dev/null
+++ b/user/perl-moosex-getopt/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-moosex-getopt
+pkgver=0.74
+pkgrel=0
+pkgdesc="Perl Moose role for processing command line arguments"
+url="https://metacpan.org/release/MooseX-Getopt"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-getopt-long-descriptive perl-moose perl-moosex-role-parameterised
+ perl-namespace-autoclean perl-try-tiny"
+makedepends="perl-dev perl-module-build-tiny"
+checkdepends="perl-moosex-strictconstructor perl-path-tiny perl-test-deep
+ perl-test-fatal perl-test-needs perl-test-trap perl-test-warnings"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/MooseX-Getopt-$pkgver.tar.gz"
+builddir="$srcdir/MooseX-Getopt-$pkgver"
+
+build() {
+ cd "$builddir"
+ PERL_MM_FALLBACK_SILENCE_WARNING=1 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="3b7ea4f75192c62936f7838809a4a3facc4ccc38fb9db5affd46d07273ac1ffadd5ddb0882fe5d29870bf4b8c816916febdc3748747223c837fc87c65faa60ac MooseX-Getopt-0.74.tar.gz"
diff --git a/user/perl-moosex-role-parameterised/APKBUILD b/user/perl-moosex-role-parameterised/APKBUILD
new file mode 100644
index 000000000..6225b2371
--- /dev/null
+++ b/user/perl-moosex-role-parameterised/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=perl-moosex-role-parameterised
+pkgver=1.10
+pkgrel=0
+pkgdesc="Perl Moose roles with composition parameters"
+url="https://metacpan.org/release/MooseX-Role-Parameterized"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-module-runtime perl-moose perl-namespace-autoclean perl-namespace-clean"
+makedepends="perl-dev perl-module-build-tiny"
+checkdepends="perl-cpan-meta-check perl-dist-checkconflicts perl-test-fatal perl-test-requires"
+provides="perl-moosex-role-parameterized=$pkgver-r$pkgrel"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/MooseX-Role-Parameterized-$pkgver.tar.gz"
+builddir="$srcdir/MooseX-Role-Parameterized-$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="10f6b51dd6e09c30e36496469c4a213e0ab6d12529e0b91161f680ae595b312e9dbff035d6c8a2d10dbff7fa55cf7ca6b53cd66b848f75f7e6ac43b6e6eb9e84 MooseX-Role-Parameterized-1.10.tar.gz"
diff --git a/user/perl-moosex-strictconstructor/APKBUILD b/user/perl-moosex-strictconstructor/APKBUILD
new file mode 100644
index 000000000..964414d4a
--- /dev/null
+++ b/user/perl-moosex-strictconstructor/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-moosex-strictconstructor
+pkgver=0.21
+pkgrel=0
+pkgdesc="Ensure unknown attributes passed to Perl Moose ctors are errors"
+url="https://metacpan.org/release/MooseX-StrictConstructor"
+arch="noarch"
+license="Artistic-2.0"
+depends="perl-moose perl-namespace-autoclean"
+makedepends="perl-dev"
+checkdepends="perl-moo perl-test-fatal perl-test-needs"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/MooseX-StrictConstructor-$pkgver.tar.gz"
+builddir="$srcdir/MooseX-StrictConstructor-$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="b515ce0de7962b2d2da0da3dfd0fab978a014f2d5dc9e92e76cc137a260d3190a993d3b791db5eaf416e838180bdec1f827961aad4552c67f7c7cf1477107bfc MooseX-StrictConstructor-0.21.tar.gz"
diff --git a/user/perl-moox-late/APKBUILD b/user/perl-moox-late/APKBUILD
new file mode 100644
index 000000000..f9360c17f
--- /dev/null
+++ b/user/perl-moox-late/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-moox-late
+pkgver=0.015
+pkgrel=0
+pkgdesc="Translate Moose code into Moo"
+url="https://metacpan.org/release/MooX-late"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-moo perl-type-tiny"
+makedepends="perl-dev"
+checkdepends="perl-test-fatal perl-test-requires"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/T/TO/TOBYINK/MooX-late-$pkgver.tar.gz"
+builddir="$srcdir/MooX-late-$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="4d685f4e68abe10487a98def8f0e7b0bafbd9928af27e61a5ac410bcafa9833a4aebdc8cd5bdbebd1a6ee53b4b0d5ae9bfa3864cae428b21c926730365fefb6d MooX-late-0.015.tar.gz"
diff --git a/user/perl-moox/APKBUILD b/user/perl-moox/APKBUILD
new file mode 100644
index 000000000..73cb7d290
--- /dev/null
+++ b/user/perl-moox/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-moox
+pkgver=0.101
+pkgrel=0
+pkgdesc="Perl module for using Moo and MooX:: lazily"
+url="https://metacpan.org/release/MooX"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-data-optlist perl-import-into perl-module-runtime perl-moo"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/G/GE/GETTY/MooX-$pkgver.tar.gz"
+builddir="$srcdir/MooX-$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="4ba77d472c3ffab5ff600c20bd2d2b51614db9d5488fad7d8a51ee6249505519220a00437192d0c7132cbf6898bf1ff314d5c28132abbcfeb4be17d131ad7778 MooX-0.101.tar.gz"
diff --git a/user/perl-mouse/APKBUILD b/user/perl-mouse/APKBUILD
new file mode 100644
index 000000000..d89d9c3b3
--- /dev/null
+++ b/user/perl-mouse/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-mouse
+pkgver=2.5.6
+pkgrel=0
+pkgdesc="Moose minus the antlers"
+url="https://metacpan.org/pod/Mouse"
+arch="all"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl"
+makedepends="perl-dev perl-module-build-xsutil"
+checkdepends="perl-test-exception perl-test-fatal perl-test-leaktrace perl-test-output perl-test-requires perl-try-tiny"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/S/SK/SKAJI/Mouse-v$pkgver.tar.gz"
+builddir="$srcdir/Mouse-v$pkgver"
+
+prepare() {
+ cd "$builddir"
+ perl Build.PL installdirs=vendor
+}
+
+build() {
+ cd "$builddir"
+ ./Build
+}
+
+check() {
+ # most, but not all functionality is tested
+ cd "$builddir"
+ ./Build test
+}
+
+package() {
+ cd "$builddir"
+ ./Build install destdir="$pkgdir"
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="1f29430badec842c1b3aa5a8a4c4ad785cf26d2e6cc745da82c0fa667b19da0b9e6c364e10ef615fbc03f60cb5020f079113b470162d095d8c514e6cb9ce96e3 Mouse-v2.5.6.tar.gz"
diff --git a/user/perl-mousex-nativetraits/APKBUILD b/user/perl-mousex-nativetraits/APKBUILD
new file mode 100644
index 000000000..34cd187bc
--- /dev/null
+++ b/user/perl-mousex-nativetraits/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-mousex-nativetraits
+pkgver=1.09
+pkgrel=0
+pkgdesc="Extend your attribute interfaces"
+url="https://metacpan.org/pod/MouseX::NativeTraits"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl perl-mouse"
+makedepends="perl-dev perl-module-install"
+checkdepends="perl-test-fatal perl-any-moose"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/G/GF/GFUJI/MouseX-NativeTraits-$pkgver.tar.gz"
+builddir="$srcdir/MouseX-NativeTraits-$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="2aad717c7c78c1014f705a85b8bb8cab79febb827aa478a0884bcdd4d8d702a366785bc6104ba115513c234b8ca71cafcbbbc070ba37d6328255fe1f972c3619 MouseX-NativeTraits-1.09.tar.gz"
diff --git a/user/perl-mro-compat/APKBUILD b/user/perl-mro-compat/APKBUILD
new file mode 100644
index 000000000..bdd0e6b96
--- /dev/null
+++ b/user/perl-mro-compat/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-mro-compat
+pkgver=0.13
+pkgrel=0
+pkgdesc="mro::* interface compatibility for older Perl"
+url="https://metacpan.org/release/MRO-Compat"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/H/HA/HAARG/MRO-Compat-$pkgver.tar.gz"
+builddir="$srcdir/MRO-Compat-$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="3311c37c8fc73acaf68bae2b12315a448a87de8f756e817c967cf49b753cf218e8c762ecc44890297afd82193d71b2407060db0bc70720d228b31c0a30de10c1 MRO-Compat-0.13.tar.gz"
diff --git a/user/perl-namespace-autoclean/APKBUILD b/user/perl-namespace-autoclean/APKBUILD
new file mode 100644
index 000000000..77163cc96
--- /dev/null
+++ b/user/perl-namespace-autoclean/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-namespace-autoclean
+pkgver=0.28
+pkgrel=0
+pkgdesc="Keep imports out of your Perl namespace"
+url="https://metacpan.org/release/namespace-autoclean"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-b-hooks-endofscope perl-namespace-clean perl-sub-identify"
+makedepends="perl-dev"
+checkdepends="perl-moo perl-moose perl-mouse perl-test-requires"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/namespace-autoclean-$pkgver.tar.gz"
+builddir="$srcdir/namespace-autoclean-$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="2541f69862b334fcfe30059d025668175de1b182a5c8ee8f2619bf1d661c316a38fe2014f274bb23e887cd36959f98abb297154ac8ceb600e2e93cbd4a75e28d namespace-autoclean-0.28.tar.gz"
diff --git a/user/perl-namespace-clean/APKBUILD b/user/perl-namespace-clean/APKBUILD
new file mode 100644
index 000000000..7c4d0ba43
--- /dev/null
+++ b/user/perl-namespace-clean/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-namespace-clean
+pkgver=0.27
+pkgrel=0
+pkgdesc="Keep imports and functions out of your Perl namespace"
+url="https://metacpan.org/release/namespace-clean"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-b-hooks-endofscope perl-package-stash"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/R/RI/RIBASUSHI/namespace-clean-$pkgver.tar.gz"
+builddir="$srcdir/namespace-clean-$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="4422640656602e44c6d3675e55a0e699f8c0e07abbaf11f0b0905043f90e13bb95ee0eaa4c4a08c853296825dd8ef33c806e0a7c284a70448e35ac3354545744 namespace-clean-0.27.tar.gz"
diff --git a/user/perl-number-compare/APKBUILD b/user/perl-number-compare/APKBUILD
new file mode 100644
index 000000000..c88666cc0
--- /dev/null
+++ b/user/perl-number-compare/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-number-compare
+pkgver=0.03
+pkgrel=0
+pkgdesc="Numeric comparisons for Perl"
+url="https://metacpan.org/release/Number-Compare"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/R/RC/RCLAMP/Number-Compare-$pkgver.tar.gz"
+builddir="$srcdir/Number-Compare-$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="fc7efb0177bcb84142619b7d8c0252f4548e547650ddbe9cfafaba97b8ae791c20fbffa6f8b01449b9dd217d9914f94bfeaff57cdfdc2c11e2a1456992bd9893 Number-Compare-0.03.tar.gz"
diff --git a/user/perl-package-deprecationmanager/APKBUILD b/user/perl-package-deprecationmanager/APKBUILD
new file mode 100644
index 000000000..492c684ea
--- /dev/null
+++ b/user/perl-package-deprecationmanager/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-package-deprecationmanager
+pkgver=0.17
+pkgrel=0
+pkgdesc="Manage deprecation warnings for your Perl distribution"
+url="https://metacpan.org/release/Package-DeprecationManager"
+arch="noarch"
+license="Artistic-2.0"
+depends="perl-package-stash perl-params-util perl-sub-install perl-sub-name"
+makedepends="perl-dev"
+checkdepends="perl-test-fatal perl-test-warnings"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/Package-DeprecationManager-$pkgver.tar.gz"
+builddir="$srcdir/Package-DeprecationManager-$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="57bf79df657895342ca5b8d13f155d85f34d1a85415570b112138b6c50c5d08b421a1707671fbf807918cc334006e4558a626a7201c60096924fc2200c751cde Package-DeprecationManager-0.17.tar.gz"
diff --git a/user/perl-package-stash-xs/APKBUILD b/user/perl-package-stash-xs/APKBUILD
new file mode 100644
index 000000000..e3f4a2635
--- /dev/null
+++ b/user/perl-package-stash-xs/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-package-stash-xs
+pkgver=0.28
+pkgrel=0
+pkgdesc="Faster and more correct implementation of Package::Stash"
+url="https://metacpan.org/release/Package-Stash-XS"
+arch="all"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+checkdepends="perl-test-fatal perl-test-requires"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DO/DOY/Package-Stash-XS-$pkgver.tar.gz"
+builddir="$srcdir/Package-Stash-XS-$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="409e884998bf063f438335067ff8f702aa1f12fc686c1912ad532f6536a711273e52c140d9c407c47b7ba4ccacedec480c1542437a90dd76367dc0f732c0db38 Package-Stash-XS-0.28.tar.gz"
diff --git a/user/perl-package-stash/APKBUILD b/user/perl-package-stash/APKBUILD
new file mode 100644
index 000000000..4b07f6718
--- /dev/null
+++ b/user/perl-package-stash/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-package-stash
+pkgver=0.37
+pkgrel=0
+pkgdesc="Perl routines for manipulating stashes"
+url="https://metacpan.org/release/Package-Stash"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-module-implementation perl-package-stash-xs"
+makedepends="perl-dev"
+checkdepends="perl-dist-checkconflicts perl-test-fatal perl-test-requires"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DO/DOY/Package-Stash-$pkgver.tar.gz"
+builddir="$srcdir/Package-Stash-$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="d10321903591568d4ac4db91ad9e4dfcffe564ab22a5ecdd8fa103749c9708da082ffb3ca478e98ac120a23e51c0ab0ccf799c0da10fe2be194e9cace1f16b06 Package-Stash-0.37.tar.gz"
diff --git a/user/perl-params-util/APKBUILD b/user/perl-params-util/APKBUILD
new file mode 100644
index 000000000..f18775a6f
--- /dev/null
+++ b/user/perl-params-util/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-params-util
+_pkgreal=Params-Util
+pkgver=1.07
+pkgrel=5
+pkgdesc="Simple, compact and correct param-checking functions"
+url="https://metacpan.org/release/Params-Util"
+arch="all"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/A/AD/ADAMK/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ cd "$builddir"
+ unset CFLAGS
+ 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="ff471b01b33414fc5e1c68d97c21171a95d3418c33e3c45f9910cc768898690e35051506a83ad9403a200336654c14b8efc9d471c4b3fe3321047a7603d6fd56 Params-Util-1.07.tar.gz"
diff --git a/user/perl-params-validate/APKBUILD b/user/perl-params-validate/APKBUILD
new file mode 100644
index 000000000..64d524648
--- /dev/null
+++ b/user/perl-params-validate/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-params-validate
+pkgver=1.29
+pkgrel=0
+pkgdesc="Validate Perl method/function parameters"
+url="https://metacpan.org/release/Params-Validate"
+arch="all"
+license="Artistic-2.0"
+depends="perl-module-implementation"
+makedepends="perl-dev perl-module-build"
+checkdepends="perl-test-fatal perl-test-requires"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/Params-Validate-$pkgver.tar.gz"
+builddir="$srcdir/Params-Validate-$pkgver"
+
+build() {
+ cd "$builddir"
+ perl Build.PL installdirs=vendor
+ ./Build
+}
+
+check() {
+ cd "$builddir"
+ ./Build test
+}
+
+package() {
+ cd "$builddir"
+ ./Build install destdir="$pkgdir"
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="afa887d1ce60d38b82cbf3ad88fb892f473e0fa45db528b68e66bbb800058af453180cc96afddae56a2cdad8ec531a587e7aac36b6869c489caa6dd36a57a385 Params-Validate-1.29.tar.gz"
diff --git a/user/perl-parse-recdescent/APKBUILD b/user/perl-parse-recdescent/APKBUILD
new file mode 100644
index 000000000..7e9bd3ebd
--- /dev/null
+++ b/user/perl-parse-recdescent/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-parse-recdescent
+pkgver=1.967015
+pkgrel=0
+pkgdesc="Generate Recursive-Descent Parsers"
+url="https://metacpan.org/pod/Parse::RecDescent"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl"
+makedepends="perl-dev"
+checkdepends="perl-test-warn perl-test-pod"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/J/JT/JTBRAUN/Parse-RecDescent-$pkgver.tar.gz"
+builddir="$srcdir/Parse-RecDescent-$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="38adbfc9a88f09d0465d862b845f48c0921ce462ffccaa7ce8b5f1b7090f33f70e7f00f9ee787fd698b5539804412c44f03e7942cf675d53a17a84c3510e5aa4 Parse-RecDescent-1.967015.tar.gz"
diff --git a/user/perl-path-tiny/APKBUILD b/user/perl-path-tiny/APKBUILD
new file mode 100644
index 000000000..0f32e49eb
--- /dev/null
+++ b/user/perl-path-tiny/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-path-tiny
+pkgver=0.108
+pkgrel=0
+pkgdesc="File path utility"
+url="https://metacpan.org/pod/Path::Tiny"
+arch="noarch"
+license="Apache-2.0"
+depends="perl"
+makedepends="perl-dev"
+checkdepends="perl-test-mockrandom"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DA/DAGOLDEN/Path-Tiny-$pkgver.tar.gz"
+builddir="$srcdir/Path-Tiny-$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="21cbc8ec84474a2fc14b77a2c8b659676d4842a87a7572497c0dd6ba1c2e5f91cdefa30fc9578fdc416d8c8ee4155ff302833925c1fdf9242c898ba6a0ebee13 Path-Tiny-0.108.tar.gz"
diff --git a/user/perl-pegex/APKBUILD b/user/perl-pegex/APKBUILD
new file mode 100644
index 000000000..468e3d7a4
--- /dev/null
+++ b/user/perl-pegex/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-pegex
+pkgver=0.67
+pkgrel=0
+pkgdesc="Acmeist PEG Parser Framework"
+url="https://metacpan.org/pod/Pegex"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl"
+makedepends="perl-dev perl-file-sharedir-install"
+checkdepends="perl-yaml-libyaml"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/I/IN/INGY/Pegex-$pkgver.tar.gz"
+builddir="$srcdir/Pegex-$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="905e22e54bdf8050bc470a2184d8b2444f583cae82b450f2e94e00ff78441687636927bf814a8f1a1e35a4b6126a6b7270d43b3dd55d68718a8c709176412274 Pegex-0.67.tar.gz"
diff --git a/user/perl-perl-tidy/APKBUILD b/user/perl-perl-tidy/APKBUILD
new file mode 100644
index 000000000..84361f161
--- /dev/null
+++ b/user/perl-perl-tidy/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-perl-tidy
+pkgver=20180220
+pkgrel=0
+pkgdesc="Indent and reformat Perl scripts"
+url="https://metacpan.org/release/Perl-Tidy"
+arch="noarch"
+license="GPL-2.0-only"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/S/SH/SHANCOCK/Perl-Tidy-$pkgver.tar.gz"
+builddir="$srcdir/Perl-Tidy-$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="93bdf2c18efdd9d62d5bb666ded9d9502a722370049a2a51f9d41107d7fa67acd91dfdd184a11eaab287f11a901ad686585e959f09407b0493719d19ce5d842e Perl-Tidy-20180220.tar.gz"
diff --git a/user/perl-perlio-utf8_strict/APKBUILD b/user/perl-perlio-utf8_strict/APKBUILD
new file mode 100644
index 000000000..d3efd36ae
--- /dev/null
+++ b/user/perl-perlio-utf8_strict/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-perlio-utf8_strict
+pkgver=0.007
+pkgrel=0
+pkgdesc="Fast and correct UTF-8 I/O for Perl"
+url="https://metacpan.org/release/PerlIO-utf8_strict"
+arch="all"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+checkdepends="perl-test-exception"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/L/LE/LEONT/PerlIO-utf8_strict-$pkgver.tar.gz"
+builddir="$srcdir/PerlIO-utf8_strict-$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="0d39be9bcbab4cea087f59c67dc1af6773b6258c5e836590ff58cc18bf3392ba6e95c55a0c7ce94236e0be7053802b4b1d6010130355e1a973a3698aaf49af0f PerlIO-utf8_strict-0.007.tar.gz"
diff --git a/user/perl-pod-coverage/APKBUILD b/user/perl-pod-coverage/APKBUILD
new file mode 100644
index 000000000..39ef36d1b
--- /dev/null
+++ b/user/perl-pod-coverage/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-pod-coverage
+pkgver=0.23
+pkgrel=0
+pkgdesc="Checks if the documentation of a module is comprehensive"
+url="https://metacpan.org/pod/Pod::Coverage"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl perl-devel-symdump"
+makedepends="perl-dev"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/R/RC/RCLAMP/Pod-Coverage-$pkgver.tar.gz"
+builddir="$srcdir/Pod-Coverage-$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="64760bcaf37b22a1308b665bcccb9273e3f7d12c9a96e4a2c4a0fddd4b528e2b476dcfeb654dc52ef3f40f64f2e7a1e860647f139dc53909c7696f406b7a312e Pod-Coverage-0.23.tar.gz"
diff --git a/user/perl-role-tiny/APKBUILD b/user/perl-role-tiny/APKBUILD
new file mode 100644
index 000000000..b0552ccfb
--- /dev/null
+++ b/user/perl-role-tiny/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-role-tiny
+pkgver=2.000006
+pkgrel=0
+pkgdesc="A minimalist role composition tool"
+url="https://metacpan.org/pod/Role::Tiny"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl"
+makedepends="perl-dev"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/H/HA/HAARG/Role-Tiny-$pkgver.tar.gz"
+builddir="$srcdir/Role-Tiny-$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="7640196c4bc1bf7a5437c57f0137f3bbf7c5fb92b9614805f16fec41dfb87a8bf6b7f3348ceade0800bccd72c4e5b72bcd4ab8bf28768ecda9d912c1b4c78047 Role-Tiny-2.000006.tar.gz"
diff --git a/user/perl-scope-guard/APKBUILD b/user/perl-scope-guard/APKBUILD
new file mode 100644
index 000000000..121aa0f5f
--- /dev/null
+++ b/user/perl-scope-guard/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-scope-guard
+pkgver=0.21
+pkgrel=0
+pkgdesc="Lexically-scoped Perl resource management"
+url="https://metacpan.org/release/Scope-Guard"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/C/CH/CHOCOLATE/Scope-Guard-$pkgver.tar.gz"
+builddir="$srcdir/Scope-Guard-$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="65492e08ab79dc323649166e83ffc13c6f1fffaa9c60d581d8854dfe427a54a3c3c5e4d8b90308d4b1a31a1a54c7977b4e1d36fc9005c6e716c2361ce187fc9f Scope-Guard-0.21.tar.gz"
diff --git a/user/perl-specio-library-path-tiny/APKBUILD b/user/perl-specio-library-path-tiny/APKBUILD
new file mode 100644
index 000000000..907d3245d
--- /dev/null
+++ b/user/perl-specio-library-path-tiny/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-specio-library-path-tiny
+pkgver=0.04
+pkgrel=0
+pkgdesc="Path::Tiny types and coercions for Specio"
+url="https://metacpan.org/release/Specio-Library-Path-Tiny"
+arch="noarch"
+license="Apache-2.0"
+depends="perl-file-pushd perl-path-tiny perl-specio"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/Specio-Library-Path-Tiny-$pkgver.tar.gz"
+builddir="$srcdir/Specio-Library-Path-Tiny-$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="22ecd74d31a2ee4be2deac887b178d571c31aac1867838b38cb362ee6f5deaf3082282d39241a3432bfc14db86651a13283be68b0e23e224cf8ff502503d17de Specio-Library-Path-Tiny-0.04.tar.gz"
diff --git a/user/perl-specio/APKBUILD b/user/perl-specio/APKBUILD
new file mode 100644
index 000000000..d8a78f519
--- /dev/null
+++ b/user/perl-specio/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-specio
+pkgver=0.42
+pkgrel=0
+pkgdesc="Type constraints and coercions for Perl"
+url="https://metacpan.org/release/Specio"
+arch="noarch"
+license="Artistic-2.0"
+depends="perl-devel-stacktrace perl-eval-closure perl-mro-compat
+ perl-module-runtime perl-role-tiny perl-sub-quote perl-test-fatal
+ perl-try-tiny"
+makedepends="perl-dev"
+checkdepends="perl-test-needs"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/Specio-$pkgver.tar.gz"
+builddir="$srcdir/Specio-$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="7a9ff3e96cf3957d7857cd5f6af5efd9e35fc4c888fcd8177041e34a2388f54269e7a3da84ec60961fb61307beb882ebf54e19ae4346876e06197b1ff57891a0 Specio-0.42.tar.gz"
diff --git a/user/perl-string-shellquote/APKBUILD b/user/perl-string-shellquote/APKBUILD
new file mode 100644
index 000000000..eb310c686
--- /dev/null
+++ b/user/perl-string-shellquote/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-string-shellquote
+pkgver=1.04
+pkgrel=0
+pkgdesc="Quote strings for passing through to the shell"
+url="https://metacpan.org/release/String-ShellQuote"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/R/RO/ROSCH/String-ShellQuote-$pkgver.tar.gz"
+builddir="$srcdir/String-ShellQuote-$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="f5b472985fb9c15d5c82c03b5c6c90a3a545ada854b90a96cfb7b0f57b8a817707ed91ca0f20344a2b8d200fe365ea737a9b39b64d526310d41ac2466552236d String-ShellQuote-1.04.tar.gz"
diff --git a/user/perl-sub-exporter-progressive/APKBUILD b/user/perl-sub-exporter-progressive/APKBUILD
new file mode 100644
index 000000000..a744538c5
--- /dev/null
+++ b/user/perl-sub-exporter-progressive/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-sub-exporter-progressive
+pkgver=0.001013
+pkgrel=0
+pkgdesc="Only use Sub::Exporter if you need it"
+url="https://metacpan.org/pod/Sub::Exporter::Progressive"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl perl-sub-exporter"
+makedepends="perl-dev"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/F/FR/FREW/Sub-Exporter-Progressive-$pkgver.tar.gz"
+builddir="$srcdir/Sub-Exporter-Progressive-$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="28d0ac6a380a4fc1515bd69320bcfd073c0c0e92ea34bb924972aa46fb2f6912485d686f0eca5d5b885d8b06927250dfaacd1a7ff86ba029f879a183cba546c4 Sub-Exporter-Progressive-0.001013.tar.gz"
diff --git a/user/perl-sub-exporter/APKBUILD b/user/perl-sub-exporter/APKBUILD
new file mode 100644
index 000000000..174da8d4b
--- /dev/null
+++ b/user/perl-sub-exporter/APKBUILD
@@ -0,0 +1,43 @@
+# Automatically generated by apkbuild-cpan, template 1
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-sub-exporter
+_pkgreal=Sub-Exporter
+pkgver=0.987
+pkgrel=0
+pkgdesc="A sophisticated exporter for custom-built routines"
+url="https://metacpan.org/release/Sub-Exporter"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+cpandepends="perl-data-optlist perl-sub-install perl-params-util"
+cpanmakedepends=""
+depends="$cpandepends"
+makedepends="perl-dev $cpanmakedepends"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+prepare() {
+ cd "$builddir"
+ export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+}
+
+build() {
+ cd "$builddir"
+ export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
+ make
+}
+
+check() {
+ cd "$builddir"
+ make test
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="6b682d27a0df8ce971ea48aeca5162e1c70929c51cf27119b30361477876b0b86ecb15ab13a6c3cbe5bb85be9e600589fb9e3c9c4e94bad3fc05b675d293adad Sub-Exporter-0.987.tar.gz"
diff --git a/user/perl-sub-identify/APKBUILD b/user/perl-sub-identify/APKBUILD
new file mode 100644
index 000000000..10e60ed79
--- /dev/null
+++ b/user/perl-sub-identify/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-sub-identify
+pkgver=0.14
+pkgrel=0
+pkgdesc="Retrieve names of Perl code references"
+url="https://metacpan.org/release/Sub-Identify"
+arch="all"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/R/RG/RGARCIA/Sub-Identify-$pkgver.tar.gz"
+builddir="$srcdir/Sub-Identify-$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="f69f542c84c5c3ca1f1c7f5f58fd2cf19279a65229f43117c31f24ab0e49d5f329bef2bc00f22252fd2e52b4e17f16b279dac438920668e046e59f2e22e52c14 Sub-Identify-0.14.tar.gz"
diff --git a/user/perl-sub-install/APKBUILD b/user/perl-sub-install/APKBUILD
new file mode 100644
index 000000000..d0883e0cd
--- /dev/null
+++ b/user/perl-sub-install/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-sub-install
+_pkgreal=Sub-Install
+pkgver=0.928
+pkgrel=0
+pkgdesc="Install subroutines into packages easily"
+url="https://metacpan.org/release/Sub-Install"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$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="3f25df9f5992075968830d4235e9f6520c526331b9180391e41483241d43253a61ad8dc381d77aaeb6c6fb841cfc5c097598e62abb46208894275c393a133ade Sub-Install-0.928.tar.gz"
diff --git a/user/perl-sub-name/APKBUILD b/user/perl-sub-name/APKBUILD
new file mode 100644
index 000000000..656a7a7ee
--- /dev/null
+++ b/user/perl-sub-name/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-sub-name
+pkgver=0.21
+pkgrel=0
+pkgdesc="Rename a Perl sub"
+url="https://metacpan.org/release/Sub-Name"
+arch="all"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Sub-Name-$pkgver.tar.gz"
+builddir="$srcdir/Sub-Name-$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="94be57b569f6c434ec3ef4fdff1a9d946067cf6c7ee58f716f4bc188764ee103f9a2579ee0ddf4068ec6889c186d9d447d8252a5dd2a0e882719239ac1102294 Sub-Name-0.21.tar.gz"
diff --git a/user/perl-sub-quote/APKBUILD b/user/perl-sub-quote/APKBUILD
new file mode 100644
index 000000000..778b7f793
--- /dev/null
+++ b/user/perl-sub-quote/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-sub-quote
+pkgver=2.005001
+pkgrel=0
+pkgdesc="Efficient generation of subroutines via string eval"
+url="https://metacpan.org/release/Sub-Quote"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl"
+makedepends="perl-dev perl-test-fatal"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/H/HA/HAARG/Sub-Quote-$pkgver.tar.gz"
+builddir="$srcdir/Sub-Quote-$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="3c32348c8ac6a8831faf75b084a6108657a3cfc0841fda8d8a182c4ca38c88f800bc60a01df07a2010b9a877e120fc46720f17f11092de5e97f40c36854ba24c Sub-Quote-2.005001.tar.gz"
diff --git a/user/perl-task-freecellsolver-testing/APKBUILD b/user/perl-task-freecellsolver-testing/APKBUILD
new file mode 100644
index 000000000..c31fc7b7d
--- /dev/null
+++ b/user/perl-task-freecellsolver-testing/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-task-freecellsolver-testing
+pkgver=0.0.11
+pkgrel=0
+pkgdesc="Perl module for testing the Freecell Solver package"
+url="https://metacpan.org/release/Task-FreecellSolver-Testing"
+arch="noarch"
+license="MIT"
+depends="perl-code-tidyall perl-env-path perl-file-which
+ perl-games-solitaire-verify perl-inline perl-inline-c
+ perl-list-moreutils perl-moo perl-moox perl-moox-late perl-path-tiny
+ perl-string-shellquote perl-task-test-run-allplugins
+ perl-template-toolkit perl-test-data-split perl-test-differences
+ perl-test-perltidy perl-test-runvalgrind perl-test-trailingspace"
+makedepends="perl-dev perl-module-build"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Task-FreecellSolver-Testing-v$pkgver.tar.gz"
+builddir="$srcdir/Task-FreecellSolver-Testing-v$pkgver"
+
+build() {
+ cd "$builddir"
+ perl Build.PL installdirs=vendor
+ ./Build
+}
+
+check() {
+ cd "$builddir"
+ ./Build test
+}
+
+package() {
+ cd "$builddir"
+ ./Build install destdir="$pkgdir"
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="85c3d7e68e0fa14abac2442ec7b6e90cc4df9f6733fbd87e5a872043a03a71d8cd3a262c816d861a1c729646ff379665c1d5d6e0bc80ae476db089d9d3793b82 Task-FreecellSolver-Testing-v0.0.11.tar.gz"
diff --git a/user/perl-task-test-run-allplugins/APKBUILD b/user/perl-task-test-run-allplugins/APKBUILD
new file mode 100644
index 000000000..1afce955b
--- /dev/null
+++ b/user/perl-task-test-run-allplugins/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=perl-task-test-run-allplugins
+pkgver=0.0105
+pkgrel=0
+pkgdesc="Install all the Test::Run plugins"
+url="https://metacpan.org/release/Task-Test-Run-AllPlugins"
+arch="noarch"
+license="MIT"
+depends="perl-test-run perl-test-run-cmdline
+ perl-test-run-plugin-alternateinterpreters
+ perl-test-run-plugin-breakonfailure
+ perl-test-run-plugin-colourfileverdicts
+ perl-test-run-plugin-coloursummary
+ perl-test-run-plugin-trimdisplayedfilenames"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Task-Test-Run-AllPlugins-$pkgver.tar.gz"
+builddir="$srcdir/Task-Test-Run-AllPlugins-$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="5d2baa82658a3a80b07fd22d1ca2ccf7a1ff528685f8044fe5b152130957465d4bd1b032a2a02c966e7739d3b947b709bffabf96d74b77fe6c65479f6f09f964 Task-Test-Run-AllPlugins-0.0105.tar.gz"
diff --git a/user/perl-template-toolkit/APKBUILD b/user/perl-template-toolkit/APKBUILD
new file mode 100644
index 000000000..e8547949a
--- /dev/null
+++ b/user/perl-template-toolkit/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-template-toolkit
+pkgver=2.27
+pkgrel=0
+pkgdesc="Comprehensive template processing system"
+url="https://metacpan.org/release/Template-Toolkit"
+arch="all"
+license="Artistic-1.0-Perl"
+depends="perl-appconfig"
+makedepends="perl-dev"
+checkdepends="perl-cgi perl-test-leaktrace"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/A/AB/ABW/Template-Toolkit-$pkgver.tar.gz"
+builddir="$srcdir/Template-Toolkit-$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="17f03a01a3d6ab0ef2247c77da15c46d9bbce3e0158172162da6abe47f53c5e7ca041a7c31506bb3a37f31c476ba747f5111c5b1b1d69614a4ce3352927fd4e6 Template-Toolkit-2.27.tar.gz"
diff --git a/user/perl-test-class-most/APKBUILD b/user/perl-test-class-most/APKBUILD
new file mode 100644
index 000000000..fe48ea68e
--- /dev/null
+++ b/user/perl-test-class-most/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-class-most
+pkgver=0.08
+pkgrel=0
+pkgdesc="Test Perl classes the easy way"
+url="https://metacpan.org/release/Test-Class-Most"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-test-class perl-test-most"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/O/OV/OVID/Test-Class-Most-$pkgver.tar.gz"
+builddir="$srcdir/Test-Class-Most-$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="30284e5c186727df87688176e3fb8683000796c8fc2f45d243c8a2ad42d4d52e840ca6f0baedf5dc9a7b6a246472ff96c92d0c407dbd65c5152a7cf5a61003c1 Test-Class-Most-0.08.tar.gz"
diff --git a/user/perl-test-class/APKBUILD b/user/perl-test-class/APKBUILD
new file mode 100644
index 000000000..6043308d4
--- /dev/null
+++ b/user/perl-test-class/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-class
+pkgver=0.50
+pkgrel=0
+pkgdesc="Create Perl test classes in xUnit/JUnit style"
+url="https://metacpan.org/release/Test-Class"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-module-runtime perl-mro-compat perl-try-tiny"
+makedepends="perl-dev"
+checkdepends="perl-test-exception"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Test-Class-$pkgver.tar.gz"
+builddir="$srcdir/Test-Class-$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="27ae19f60a916f5a23cccdc02ff6168e76d5f1cee5df196df4fe50024f7270ee9eaffdf02e9b6de70565c9b6b30606ad0a30477ac8951164b87c641caf960dcc Test-Class-0.50.tar.gz"
diff --git a/user/perl-test-cleannamespaces/APKBUILD b/user/perl-test-cleannamespaces/APKBUILD
new file mode 100644
index 000000000..718bc3a27
--- /dev/null
+++ b/user/perl-test-cleannamespaces/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-cleannamespaces
+pkgver=0.23
+pkgrel=0
+pkgdesc="Check Perl code for uncleaned imports"
+url="https://metacpan.org/release/Test-CleanNamespaces"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-file-pushd perl-module-runtime perl-namespace-clean
+ perl-package-stash perl-sub-identify"
+makedepends="perl-dev"
+checkdepends="perl-moo perl-mouse perl-sub-exporter perl-test-deep
+ perl-test-needs perl-test-warnings"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Test-CleanNamespaces-$pkgver.tar.gz"
+builddir="$srcdir/Test-CleanNamespaces-$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="c40587c09bcd6a6ebc6801e12a3d33fcd2695b650fe02546a8a6da7d038ba5b1218d730a09f3b8942824a0506aca3edfcbcdf204906569dad5c46816b91e8a99 Test-CleanNamespaces-0.23.tar.gz"
diff --git a/user/perl-test-data-split/APKBUILD b/user/perl-test-data-split/APKBUILD
new file mode 100644
index 000000000..0e5269e41
--- /dev/null
+++ b/user/perl-test-data-split/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-data-split
+pkgver=0.2.1
+pkgrel=0
+pkgdesc="Split data-driven Perl tests into several test scripts"
+url="https://metacpan.org/release/Test-Data-Split"
+arch="noarch"
+license="MIT"
+depends="perl-io-all perl-list-moreutils perl-moox perl-moox-late"
+makedepends="perl-dev perl-module-build"
+checkdepends="perl-test-differences"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Test-Data-Split-$pkgver.tar.gz"
+builddir="$srcdir/Test-Data-Split-$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="db6ae688318b6cd98cbbdf0c94e7a1d5ea52c96262d7ed5e1aea2a2380cfa851c468d8775c3cd5520f9e5e8bfdc67e367d66d0027f1452d208250c88f76bffae Test-Data-Split-0.2.1.tar.gz"
diff --git a/user/perl-test-deep/APKBUILD b/user/perl-test-deep/APKBUILD
new file mode 100644
index 000000000..0c488f4e2
--- /dev/null
+++ b/user/perl-test-deep/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-deep
+pkgver=1.128
+pkgrel=0
+pkgdesc="Extremely flexible deep comparison"
+url="https://metacpan.org/pod/Test::Deep"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl"
+makedepends="perl-dev"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/Test-Deep-$pkgver.tar.gz"
+builddir="$srcdir/Test-Deep-$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="d4642b3268a10d8e882beabfbb3b3bf891a57aa7ebb74bc4919a4368df9c9acd2351498401538ae50299071f99e06b4443686d20f8c9f95f5fd588309ccee302 Test-Deep-1.128.tar.gz"
diff --git a/user/perl-test-differences/APKBUILD b/user/perl-test-differences/APKBUILD
new file mode 100644
index 000000000..64a93147b
--- /dev/null
+++ b/user/perl-test-differences/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-differences
+pkgver=0.64
+pkgrel=0
+pkgdesc="Test strings and data structures and show differences if not ok"
+url="https://metacpan.org/pod/Test::Differences"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0"
+depends="perl perl-text-diff perl-capture-tiny perl-test-pod-coverage perl-test-pod"
+makedepends="perl-dev"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DC/DCANTRELL/Test-Differences-$pkgver.tar.gz"
+builddir="$srcdir/Test-Differences-$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="118a4b8e3f61f64d6676c82913bb605a843a408f3fc5d960b40cc86f10423380a203b2a5604e15ba8d4e0cff96af88b551fba1c7aa2ada3c0ef408a27ee5f069 Test-Differences-0.64.tar.gz"
diff --git a/user/perl-test-file/APKBUILD b/user/perl-test-file/APKBUILD
new file mode 100644
index 000000000..947598ca1
--- /dev/null
+++ b/user/perl-test-file/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-file
+pkgver=1.443
+pkgrel=0
+pkgdesc="Test file attributes"
+url="https://metacpan.org/pod/Test::File"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl"
+makedepends="perl-dev"
+checkdepends="perl-test-pod perl-test-pod-coverage perl-test-utf8"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/B/BD/BDFOY/Test-File-$pkgver.tar.gz"
+builddir="$srcdir/Test-File-$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="9ad66b3a9dc1c3752a4ec22934db9139ac010ac3237a3de018d4ec4a65ac047f0152ab9e7979a2615412c1af02a1f2dfa0dbfdf5eba5358628b1b443232c45b2 Test-File-1.443.tar.gz"
diff --git a/user/perl-test-mockrandom/APKBUILD b/user/perl-test-mockrandom/APKBUILD
new file mode 100644
index 000000000..ddf840a56
--- /dev/null
+++ b/user/perl-test-mockrandom/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-mockrandom
+pkgver=1.01
+pkgrel=0
+pkgdesc="Replaces random number generation with non-random number generation"
+url="https://metacpan.org/pod/Test::MockRandom"
+arch="noarch"
+license="Apache-2.0"
+depends="perl"
+makedepends="perl-dev"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DA/DAGOLDEN/Test-MockRandom-$pkgver.tar.gz"
+builddir="$srcdir/Test-MockRandom-$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="e222bd0d3d7673b403e80d1633ddaca0ee35f96f2245e8df859d661edc7efc09b9a96d3718f25b6614395d1f24d66c9498e842cec476cf8c5b12464d585f85e7 Test-MockRandom-1.01.tar.gz"
diff --git a/user/perl-test-most/APKBUILD b/user/perl-test-most/APKBUILD
new file mode 100644
index 000000000..34cd800f8
--- /dev/null
+++ b/user/perl-test-most/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-most
+pkgver=0.35
+pkgrel=0
+pkgdesc="Most commonly needed Perl test functions and features"
+url="https://metacpan.org/release/Test-Most"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-exception-class perl-test-deep perl-test-differences perl-test-exception perl-test-warn"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/O/OV/OVID/Test-Most-$pkgver.tar.gz"
+builddir="$srcdir/Test-Most-$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="1b2d201811e59d7afce47ff5f7da67c170d4685ffbec23360757b5cacc9fe72fc82609bc46cc9d8e351fdb75715696457c201dd94fadaeca70a6f31690236291 Test-Most-0.35.tar.gz"
diff --git a/user/perl-test-output/APKBUILD b/user/perl-test-output/APKBUILD
new file mode 100644
index 000000000..8454737f3
--- /dev/null
+++ b/user/perl-test-output/APKBUILD
@@ -0,0 +1,44 @@
+# Automatically generated by apkbuild-cpan, template 1
+# Contributor: Francesco Colista <fcolista@alpinelinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-output
+_pkgreal=Test-Output
+pkgver=1.031
+pkgrel=0
+pkgdesc="Utilities to test STDOUT and STDERR messages"
+url="https://metacpan.org/release/Test-Output"
+arch="noarch"
+license="Artistic-2.0"
+cpandepends="perl-capture-tiny perl-sub-exporter perl-test-simple"
+cpanmakedepends=""
+depends="$cpandepends"
+makedepends="perl-dev $cpanmakedepends"
+checkdepends="perl-test-pod"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/B/BD/BDFOY/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+prepare() {
+ cd "$builddir"
+ export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+}
+
+build() {
+ cd "$builddir"
+ export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
+ make
+}
+
+check() {
+ cd "$builddir"
+ make test
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="b443d5a4ab7be1c308b74ebc9a1a50022b404886e8a1dbd2700d974ead506a6976ec6d5c141528cf1c2833174c3afd9023362cb0b4e000f0e878d2e3e9f90e90 Test-Output-1.031.tar.gz"
diff --git a/user/perl-test-perltidy/APKBUILD b/user/perl-test-perltidy/APKBUILD
new file mode 100644
index 000000000..392257c83
--- /dev/null
+++ b/user/perl-test-perltidy/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-perltidy
+pkgver=20130104
+pkgrel=0
+pkgdesc="Check all your Perl files for tidiness"
+url="https://metacpan.org/release/Test-PerlTidy"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-file-finder perl-file-slurp perl-perl-tidy perl-text-diff"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/L/LA/LARRYL/Test-PerlTidy-$pkgver.tar.gz"
+builddir="$srcdir/Test-PerlTidy-$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="47d77083ec6f4808ac60bdb19431b3013b996f83506b0af490a6fa52f4f71a8c1812cf21b447568661495c845d524f9c2be6842380bd41c9ccfe22ec6acd802f Test-PerlTidy-20130104.tar.gz"
diff --git a/user/perl-test-pod-coverage/APKBUILD b/user/perl-test-pod-coverage/APKBUILD
new file mode 100644
index 000000000..903724f9b
--- /dev/null
+++ b/user/perl-test-pod-coverage/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-pod-coverage
+pkgver=1.10
+pkgrel=0
+pkgdesc="Check for pod coverage in your distribution"
+url="https://metacpan.org/pod/Test::Pod::Coverage"
+arch="noarch"
+license="Artistic-2.0"
+depends="perl perl-pod-coverage"
+makedepends="perl-dev"
+checkdepends="perl-test-pod"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/N/NE/NEILB/Test-Pod-Coverage-$pkgver.tar.gz"
+builddir="$srcdir/Test-Pod-Coverage-$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="ebcebb900f4367984245d1915937200e2de8586a6e6ea9c9b71588e56caf68808ee73c21e633434ab5c43b80b42dd56cb0cbd4e67519e928270e1eda06c1d02c Test-Pod-Coverage-1.10.tar.gz"
diff --git a/user/perl-test-run-cmdline/APKBUILD b/user/perl-test-run-cmdline/APKBUILD
new file mode 100644
index 000000000..42d624844
--- /dev/null
+++ b/user/perl-test-run-cmdline/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-run-cmdline
+pkgver=0.0131
+pkgrel=0
+pkgdesc="Analyse tests from the command line using Perl Test::Run"
+url="https://metacpan.org/release/Test-Run-CmdLine"
+arch="noarch"
+license="MIT"
+depends="perl-moose perl-moosex-getopt perl-test-run perl-universal-require
+ perl-yaml-libyaml"
+makedepends="perl-dev"
+checkdepends="perl-test-trap"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Test-Run-CmdLine-$pkgver.tar.gz"
+builddir="$srcdir/Test-Run-CmdLine-$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="b55ccae6a8cd453fa13083eabf63afa0f01eebe2c244cb5d4118b1be3ecab8077b77e03bef768254a84bd38b1cfb00e9f7053349696fd64fbc670ed43bd54357 Test-Run-CmdLine-0.0131.tar.gz"
diff --git a/user/perl-test-run-plugin-ai/APKBUILD b/user/perl-test-run-plugin-ai/APKBUILD
new file mode 100644
index 000000000..3537a1197
--- /dev/null
+++ b/user/perl-test-run-plugin-ai/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-run-plugin-alternateinterpreters
+pkgver=0.0124
+pkgrel=0
+pkgdesc="Define different interpreters for test scripts with Perl Test::Run"
+url="https://metacpan.org/release/Test-Run-Plugin-AlternateInterpreters"
+arch="noarch"
+license="MIT"
+depends="perl-moose perl-mro-compat perl-test-run perl-test-run-cmdline"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Test-Run-Plugin-AlternateInterpreters-$pkgver.tar.gz"
+builddir="$srcdir/Test-Run-Plugin-AlternateInterpreters-$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="54649bde2b97eb7dfeef5392a63787e4ce10c37474acf27f35ab7b466a05564f98be82d99690963b3249c1585ab986e25ac2cf2be72c13b460d467d90b4de719 Test-Run-Plugin-AlternateInterpreters-0.0124.tar.gz"
diff --git a/user/perl-test-run-plugin-bof/APKBUILD b/user/perl-test-run-plugin-bof/APKBUILD
new file mode 100644
index 000000000..e776778b6
--- /dev/null
+++ b/user/perl-test-run-plugin-bof/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-run-plugin-breakonfailure
+pkgver=0.0.5
+pkgrel=0
+pkgdesc="Stop processing entire Test::Run suite on single failure"
+url="https://metacpan.org/release/Test-Run-Plugin-BreakOnFailure"
+arch="noarch"
+license="MIT"
+depends="perl-moose perl-mro-compat perl-test-run perl-test-run-cmdline"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Test-Run-Plugin-BreakOnFailure-v$pkgver.tar.gz"
+builddir="$srcdir/Test-Run-Plugin-BreakOnFailure-v$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="a3e25847e0277ea32803b0eec68061471644f7bba03d9dd558d5a15c6dbe8615d933f6d4ee6851f217511434be933be1a848ee0d9b46c545ae37a0abc59a0a72 Test-Run-Plugin-BreakOnFailure-v0.0.5.tar.gz"
diff --git a/user/perl-test-run-plugin-cfv/APKBUILD b/user/perl-test-run-plugin-cfv/APKBUILD
new file mode 100644
index 000000000..3fa80c7d2
--- /dev/null
+++ b/user/perl-test-run-plugin-cfv/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-run-plugin-colourfileverdicts
+pkgver=0.0124
+pkgrel=0
+pkgdesc="Make Perl Test::Run file verdicts (ok, not ok) colourful"
+url="https://metacpan.org/release/Test-Run-Plugin-ColorFileVerdicts"
+arch="noarch"
+license="MIT"
+depends="perl-moose perl-mro-compat perl-test-run perl-test-run-cmdline"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+provides="perl-test-run-plugin-colorfileverdicts=$pkgver-r$pkgrel"
+source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Test-Run-Plugin-ColorFileVerdicts-$pkgver.tar.gz"
+builddir="$srcdir/Test-Run-Plugin-ColorFileVerdicts-$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="405eb2e58b6c76fba3f5e0737e5816e8d4ef69d7fb3b7e81d8cfce10cd847d02339bc6802bb935009a27e5eb2ed16f8535280d7abb4ce5b6d1a26c9b2f99f117 Test-Run-Plugin-ColorFileVerdicts-0.0124.tar.gz"
diff --git a/user/perl-test-run-plugin-cs/APKBUILD b/user/perl-test-run-plugin-cs/APKBUILD
new file mode 100644
index 000000000..4dff25604
--- /dev/null
+++ b/user/perl-test-run-plugin-cs/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-run-plugin-coloursummary
+pkgver=0.0202
+pkgrel=0
+pkgdesc="Perl Test::Run plugin that colours test summary"
+url="https://metacpan.org/release/Test-Run-Plugin-ColorSummary"
+arch="noarch"
+license="MIT"
+depends="perl-moose perl-mro-compat perl-test-run perl-test-run-cmdline"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+provides="perl-test-run-plugin-colorsummary=$pkgver-r$pkgrel"
+source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Test-Run-Plugin-ColorSummary-$pkgver.tar.gz"
+builddir="$srcdir/Test-Run-Plugin-ColorSummary-$pkgver"
+
+build() {
+ cd "$builddir"
+ perl Build.PL installdirs=vendor
+ ./Build
+}
+
+check() {
+ cd "$builddir"
+ ./Build test
+}
+
+package() {
+ cd "$builddir"
+ ./Build install destdir="$pkgdir"
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="c5ab0c50379a8527f613dd9663573a89f4be2336c51789fa11c9cd2ddb9a416fb60b63b8ce6bdd121b10fae3ecd2fa306f523f0c27e84bcd7b3e234882c1d7ef Test-Run-Plugin-ColorSummary-0.0202.tar.gz"
diff --git a/user/perl-test-run-plugin-tdf/APKBUILD b/user/perl-test-run-plugin-tdf/APKBUILD
new file mode 100644
index 000000000..34b106e39
--- /dev/null
+++ b/user/perl-test-run-plugin-tdf/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-run-plugin-trimdisplayedfilenames
+pkgver=0.0125
+pkgrel=0
+pkgdesc="Handle excessively long filenames in Perl Test::Run suites"
+url="https://metacpan.org/release/Test-Run-Plugin-TrimDisplayedFilenames"
+arch="noarch"
+license="MIT"
+depends="perl-moose perl-mro-compat perl-test-run perl-test-run-cmdline"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Test-Run-Plugin-TrimDisplayedFilenames-$pkgver.tar.gz"
+builddir="$srcdir/Test-Run-Plugin-TrimDisplayedFilenames-$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="79bdfc093e8a4ce16fe933ebe367e71c27eb67500a6fd1ce57e51a5998f35cbf3f6afe143c74ce82e1e5ab700399fec48b0acbb9e23cc7796a8aa5cdc2bd9ea3 Test-Run-Plugin-TrimDisplayedFilenames-0.0125.tar.gz"
diff --git a/user/perl-test-run/APKBUILD b/user/perl-test-run/APKBUILD
new file mode 100644
index 000000000..ccf3e975d
--- /dev/null
+++ b/user/perl-test-run/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-run
+pkgver=0.0304
+pkgrel=0
+pkgdesc="Perl classes to run standard TAP scripts"
+url="https://metacpan.org/release/Test-Run"
+arch="noarch"
+license="MIT"
+depends="perl-ipc-system-simple perl-list-moreutils perl-moose
+ perl-moosex-strictconstructor perl-test-trap perl-text-sprintf-named
+ perl-universal-require"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Test-Run-$pkgver.tar.gz"
+builddir="$srcdir/Test-Run-$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="05a4f5e621194319263b33a68a5a733062b6f17a0b08c32ad02a1fece4ff7072305ae6305494c9a0d8e03fb9ae2e4b1c9a044e591c1b30968f08adfed0fe3c37 Test-Run-0.0304.tar.gz"
diff --git a/user/perl-test-runvalgrind/APKBUILD b/user/perl-test-runvalgrind/APKBUILD
new file mode 100644
index 000000000..c6f31b336
--- /dev/null
+++ b/user/perl-test-runvalgrind/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-runvalgrind
+pkgver=0.2.0
+pkgrel=0
+pkgdesc="Tests an external program is 'valgrind clean' from Perl"
+url="https://metacpan.org/release/Test-RunValgrind"
+arch="noarch"
+license="MIT"
+depends="perl-path-tiny perl-test-trap"
+makedepends="perl-dev perl-module-build"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Test-RunValgrind-$pkgver.tar.gz
+ portable-memory-assumptions.patch
+ "
+builddir="$srcdir/Test-RunValgrind-$pkgver"
+
+build() {
+ cd "$builddir"
+ perl Build.PL installdirs=vendor
+ ./Build
+}
+
+check() {
+ cd "$builddir"
+ ./Build test
+}
+
+package() {
+ cd "$builddir"
+ ./Build install destdir="$pkgdir"
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="e85547d24fb7c8b0a8fd1a84826eec51d3c4c94d83cbb525517515ecc27b0ba530378a10f8a2ffee9fb1f48eb2e65a6a2654738ee069bd85adcec7f4c205f143 Test-RunValgrind-0.2.0.tar.gz
+f2ebba2310df820666728e5f59c44f5b63cd03efdb42092f22700da13b4f099ae5c911292fb2a0f271f7629343727ea14c5953d2918c98419a580e5a998cb650 portable-memory-assumptions.patch"
diff --git a/user/perl-test-runvalgrind/portable-memory-assumptions.patch b/user/perl-test-runvalgrind/portable-memory-assumptions.patch
new file mode 100644
index 000000000..927da1194
--- /dev/null
+++ b/user/perl-test-runvalgrind/portable-memory-assumptions.patch
@@ -0,0 +1,14 @@
+Upstream: https://github.com/shlomif/perl-Test-RunValgrind/issues/5
+
+--- Test-RunValgrind-0.2.0/lib/Test/RunValgrind.pm.old 2018-01-26 18:07:19.000000000 +0000
++++ Test-RunValgrind-0.2.0/lib/Test/RunValgrind.pm 2018-10-02 22:42:05.450000000 +0000
+@@ -80,7 +80,8 @@
+ index( $$out_text, q{ERROR SUMMARY: 0 errors from 0 contexts} ) >= 0
+ )
+ && ( $self->_ignore_leaks
+- || ( index( $$out_text, q{in use at exit: 0 bytes} ) >= 0 ) )
++ || ( index( $$out_text, q{in use at exit: 0 bytes} ) >= 0 )
++ || ( index( $$out_text, q{still reachable: 0 bytes} ) >= 0 ) )
+ );
+ }
+
diff --git a/user/perl-test-trailingspace/APKBUILD b/user/perl-test-trailingspace/APKBUILD
new file mode 100644
index 000000000..ccaf8e873
--- /dev/null
+++ b/user/perl-test-trailingspace/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-trailingspace
+pkgver=0.0301
+pkgrel=0
+pkgdesc="Test for trailing spaces in Perl source files"
+url="https://metacpan.org/release/Test-TrailingSpace"
+arch="noarch"
+license="MIT"
+depends="perl-file-find-object-rule"
+makedepends="perl-dev perl-module-build"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Test-TrailingSpace-$pkgver.tar.gz"
+builddir="$srcdir/Test-TrailingSpace-$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="9ec511759b12265c2a98a06a54081e0ca0377e707b29174fb874fd505330e0abfafebe910f7ceba9f8a6bcbfcf5d74fc8ffdca2e17b9cad15c207213449085d4 Test-TrailingSpace-0.0301.tar.gz"
diff --git a/user/perl-test-trap/APKBUILD b/user/perl-test-trap/APKBUILD
new file mode 100644
index 000000000..6f777f969
--- /dev/null
+++ b/user/perl-test-trap/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-trap
+pkgver=0.3.4
+pkgrel=0
+pkgdesc="Trap Perl exit codes, exceptions, and output"
+url="https://metacpan.org/release/Test-Trap"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-data-dump"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/E/EB/EBHANSSEN/Test-Trap-v$pkgver.tar.gz"
+builddir="$srcdir/Test-Trap-v$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="cac4412a55511c820a1813a277afa802769a64219bf306190d83fea775c53bcd1d7faa275cb7f1b435e5ae274b6c1f78dd862525a6426040e51fdaf537e720ff Test-Trap-v0.3.4.tar.gz"
diff --git a/user/perl-test-utf8/APKBUILD b/user/perl-test-utf8/APKBUILD
new file mode 100644
index 000000000..ee562a170
--- /dev/null
+++ b/user/perl-test-utf8/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-utf8
+pkgver=1.01
+pkgrel=0
+pkgdesc="Handy UTF8 tests"
+url="https://metacpan.org/pod/Test::utf8"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl"
+makedepends="perl-dev perl-module-install"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/M/MA/MARKF/Test-utf8-$pkgver.tar.gz"
+builddir="$srcdir/Test-utf8-$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="07dcd5ed98a63f7d96bb0fc629b168773d02bb4c93c5bc44ec60738fc29669794547dfde5913f9de682cd583cf85f4d82b6151398aaebcfec9278525447b9c4e Test-utf8-1.01.tar.gz"
diff --git a/user/perl-test-warnings/APKBUILD b/user/perl-test-warnings/APKBUILD
new file mode 100644
index 000000000..9b65d822e
--- /dev/null
+++ b/user/perl-test-warnings/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-test-warnings
+pkgver=0.026
+pkgrel=0
+pkgdesc="Test for warnings and the lack of them"
+url="https://metacpan.org/pod/Test::Warnings"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl"
+makedepends="perl-dev"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Test-Warnings-$pkgver.tar.gz"
+builddir="$srcdir/Test-Warnings-$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="510e182299173fa01482cde642fe5d84a77ea2f3b1761c7d8bf855caed963f276134357b4d7662bb3fbf09621ac6e11451fe19bf0ba2cf96bc841c280a624cd4 Test-Warnings-0.026.tar.gz"
diff --git a/user/perl-text-diff/APKBUILD b/user/perl-text-diff/APKBUILD
new file mode 100644
index 000000000..303106e54
--- /dev/null
+++ b/user/perl-text-diff/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-text-diff
+pkgver=1.45
+pkgrel=0
+pkgdesc="Perform diffs on files and record sets"
+url="https://metacpan.org/pod/Text::Diff"
+arch="noarch"
+license="GPL-2.0+ OR Artistic-1.0-Perl"
+depends="perl perl-algorithm-diff"
+makedepends="perl-dev"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/N/NE/NEILB/Text-Diff-$pkgver.tar.gz"
+builddir="$srcdir/Text-Diff-$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="569370707bf30d60d12df6389594bcdba050805005916ac3a485c2226e528891b0af9ecfcc13d20e4f377d2c36a7ff67e51de5ca409c647aa8a36b7a87eab367 Text-Diff-1.45.tar.gz"
diff --git a/user/perl-text-glob/APKBUILD b/user/perl-text-glob/APKBUILD
new file mode 100644
index 000000000..85bbc7a9b
--- /dev/null
+++ b/user/perl-text-glob/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-text-glob
+pkgver=0.11
+pkgrel=0
+pkgdesc="glob(3) style string matching for Perl"
+url="https://metacpan.org/release/Text-Glob"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/R/RC/RCLAMP/Text-Glob-$pkgver.tar.gz"
+builddir="$srcdir/Text-Glob-$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="20322fee3f56ee7e65f0f8e5371d9dbbe89895d8b9c9207486e7934e29bd883fb557c9765e406f85f56b67019293d82a0318ded83a9387b164cb5e8f58bef0cb Text-Glob-0.11.tar.gz"
diff --git a/user/perl-text-sprintf-named/APKBUILD b/user/perl-text-sprintf-named/APKBUILD
new file mode 100644
index 000000000..210880dd4
--- /dev/null
+++ b/user/perl-text-sprintf-named/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-text-sprintf-named
+pkgver=0.0403
+pkgrel=0
+pkgdesc="sprintf-like function for Perl with named conversions"
+url="https://metacpan.org/release/Text-Sprintf-Named"
+arch="noarch"
+license="MIT"
+depends="perl-module-build"
+makedepends="perl-dev"
+checkdepends="perl-test-warn"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Text-Sprintf-Named-$pkgver.tar.gz"
+builddir="$srcdir/Text-Sprintf-Named-$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="93e56c8850274625e3156826f57d40820632dde24e9ebbfdf502d83d29c9796faac25a422e5a15d0c97fb67424f9d9abd93437e3eb0818c8338f42a59bc3adb3 Text-Sprintf-Named-0.0403.tar.gz"
diff --git a/user/perl-time-duration-parse/APKBUILD b/user/perl-time-duration-parse/APKBUILD
new file mode 100644
index 000000000..22fbfbe7e
--- /dev/null
+++ b/user/perl-time-duration-parse/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-time-duration-parse
+pkgver=0.14
+pkgrel=0
+pkgdesc="Parse strings in Perl that represent time durations"
+url="https://metacpan.org/release/Time-Duration-Parse"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-exporter-lite perl-time-duration"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/N/NE/NEILB/Time-Duration-Parse-$pkgver.tar.gz"
+builddir="$srcdir/Time-Duration-Parse-$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="49dcb7d3979df7e84141ebf9262b2283dfe535502b71633d95424376146d81bbf5d6932035dde878a5b1bef265d84a029412ff0187927569cf48ad193ea2f8e3 Time-Duration-Parse-0.14.tar.gz"
diff --git a/user/perl-time-duration/APKBUILD b/user/perl-time-duration/APKBUILD
new file mode 100644
index 000000000..daf931ee5
--- /dev/null
+++ b/user/perl-time-duration/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-time-duration
+pkgver=1.20
+pkgrel=0
+pkgdesc="Rounded or exact English expression of time durations in Perl"
+url="https://metacpan.org/release/Time-Duration"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/N/NE/NEILB/Time-Duration-$pkgver.tar.gz"
+builddir="$srcdir/Time-Duration-$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="74bdcbc2b65061ad30540a95467de24f552235cea2367a7770309d9ffefeb35717f438e4f7ebf6a1d63f338cd714ffe16b3f45808514995db9753d643892d5f9 Time-Duration-1.20.tar.gz"
diff --git a/user/perl-timedate/APKBUILD b/user/perl-timedate/APKBUILD
new file mode 100644
index 000000000..9ecfd67ae
--- /dev/null
+++ b/user/perl-timedate/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-timedate
+pkgver=2.30
+pkgrel=0
+pkgdesc="Date and time handling routines for Perl"
+url="https://metacpan.org/release/TimeDate"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/G/GB/GBARR/TimeDate-$pkgver.tar.gz"
+builddir="$srcdir/TimeDate-$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="c6aa7d57fbe82260c7455f74f6dfda55f7c93d7a75914bafb9d09ebfb83b5f57f6bc1e332ab0764d7688d857eb022b0f5e92cf5b685d809c63cdfa93a8d2c221 TimeDate-2.30.tar.gz"
diff --git a/user/perl-type-tiny/APKBUILD b/user/perl-type-tiny/APKBUILD
new file mode 100644
index 000000000..9e4cd812c
--- /dev/null
+++ b/user/perl-type-tiny/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-type-tiny
+pkgver=1.004002
+pkgrel=0
+pkgdesc="Tiny Moo(se) compatible type constraint"
+url="https://metacpan.org/release/Type-Tiny"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl-exporter-tiny"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/T/TO/TOBYINK/Type-Tiny-$pkgver.tar.gz"
+builddir="$srcdir/Type-Tiny-$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="fcdd8740e1ef6a2c5d214a54b57e65ebd222188377ebdd7bbdadc74741f3a5d00ba4a7490628bfb7cc937a32f5d5a578963ea1b6208e8fb99f095f2c3239cf82 Type-Tiny-1.004002.tar.gz"
diff --git a/user/perl-types-serialiser/APKBUILD b/user/perl-types-serialiser/APKBUILD
new file mode 100644
index 000000000..6c34d8215
--- /dev/null
+++ b/user/perl-types-serialiser/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-types-serialiser
+pkgver=1.0
+pkgrel=0
+pkgdesc="Simple data types for common serialisation formats"
+url="https://metacpan.org/pod/Types::Serialiser"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl perl-common-sense"
+makedepends="perl-dev"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/M/ML/MLEHMANN/Types-Serialiser-$pkgver.tar.gz"
+builddir="$srcdir/Types-Serialiser-$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="b786bcd3ee976a6ad948cc98a9c71d2cdcd30f485528eff059091f6d86ae7078c10ba2dc2982326fcf0184dbfbdddea84daff324c6ec6a129fe6aac01253c8fb Types-Serialiser-1.0.tar.gz"
diff --git a/user/perl-universal-require/APKBUILD b/user/perl-universal-require/APKBUILD
new file mode 100644
index 000000000..4bf801678
--- /dev/null
+++ b/user/perl-universal-require/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-universal-require
+pkgver=0.18
+pkgrel=0
+pkgdesc="require() Perl modules from a variable"
+url="https://metacpan.org/release/UNIVERSAL-require"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/N/NE/NEILB/UNIVERSAL-require-$pkgver.tar.gz"
+builddir="$srcdir/UNIVERSAL-require-$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="4e1dbb62f850a2f3da3301e37862d03ad89106e9fd55ac8161ae56eff936948f87b9215c734c103d8031e1b712847bff86de43329f65f00e7e34ee83bb66c22d UNIVERSAL-require-0.18.tar.gz"
diff --git a/user/perl-variable-magic/APKBUILD b/user/perl-variable-magic/APKBUILD
new file mode 100644
index 000000000..605369668
--- /dev/null
+++ b/user/perl-variable-magic/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-variable-magic
+pkgver=0.62
+pkgrel=0
+pkgdesc="Associate user-defined magic to variables from Perl"
+url="https://metacpan.org/release/Variable-Magic"
+arch="all"
+license="Artistic-1.0-Perl"
+depends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/V/VP/VPIT/Variable-Magic-$pkgver.tar.gz"
+builddir="$srcdir/Variable-Magic-$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="fdaad8ab1a16a4723e30a155086f7f9ecad60b021b0ca5d449a0bc001b858a53e2857cfdc3fc4e3dcc28e2f59a14f3531afd93e3f71fda3b8fcaa8bc50d0c380 Variable-Magic-0.62.tar.gz"
diff --git a/user/perl-x11-xcb/APKBUILD b/user/perl-x11-xcb/APKBUILD
new file mode 100644
index 000000000..586a8959d
--- /dev/null
+++ b/user/perl-x11-xcb/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-x11-xcb
+pkgver=0.18
+pkgrel=0
+pkgdesc="Perl bindings for libxcb"
+url="https://metacpan.org/pod/X11::XCB"
+arch="all"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl perl-extutils-pkgconfig perl-extutils-depends
+ perl-xs-object-magic perl-data-dump perl-xml-simple
+ perl-xml-descent perl-mouse perl-mousex-nativetraits"
+makedepends="perl-dev perl-xs-object-magic-dev libxcb-dev
+ xcb-util-dev xcb-util-wm-dev"
+checkdepends="perl-test-deep perl-test-exception"
+options="!check" # Tests require a running X server
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/M/MS/MSTPLBG/X11-XCB-$pkgver.tar.gz"
+builddir="$srcdir/X11-XCB-$pkgver"
+
+build() {
+ cd "$builddir"
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make -j1
+}
+
+check() {
+ cd "$builddir"
+ make test
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="eeecd8fbf080a6ca2f28b8fe4b64c97339f27b27c9c70d1a8e7c0f56af193243295aa1fc65039d24c81396126befc27ca114ca4cd1641139a788c46fe600f3ba X11-XCB-0.18.tar.gz"
diff --git a/user/perl-xml-descent/APKBUILD b/user/perl-xml-descent/APKBUILD
new file mode 100644
index 000000000..846a4361e
--- /dev/null
+++ b/user/perl-xml-descent/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-xml-descent
+pkgver=1.04
+pkgrel=0
+pkgdesc="Recursive descent XML parsing"
+url="https://metacpan.org/pod/XML::Descent"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl perl-xml-tokeparser"
+makedepends="perl-dev"
+checkdepends="perl-test-pod perl-test-differences"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/A/AN/ANDYA/XML-Descent-$pkgver.tar.gz"
+sha512sums="779a476907ecfbe9c279fa1f476c3aa64de626c515719643be21fef8b945cdd5c1f654a189bf7ea9a6964a88818e101e1eddc019439a5dcb397f56b13bdfa415 XML-Descent-1.04.tar.gz"
+builddir="$srcdir/XML-Descent-$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
+}
+
diff --git a/user/perl-xml-namespacesupport/APKBUILD b/user/perl-xml-namespacesupport/APKBUILD
new file mode 100644
index 000000000..e155f6b32
--- /dev/null
+++ b/user/perl-xml-namespacesupport/APKBUILD
@@ -0,0 +1,32 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-xml-namespacesupport
+pkgver=1.12
+pkgrel=0
+pkgdesc="A Perl module for processing XML namespaces"
+url="https://metacpan.org/pod/XML::NamespaceSupport"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0+"
+depends="perl"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/P/PE/PERIGRIN/XML-NamespaceSupport-$pkgver.tar.gz"
+builddir="$srcdir/XML-NamespaceSupport-$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="8a29698acc152888b3abd53b277f89209252830cc3b57d587a5b66e5019445d7c1858a08fa548d42387c1143b726da1440e36eb0c69b0b59c3770b5f528f38b2 XML-NamespaceSupport-1.12.tar.gz"
diff --git a/user/perl-xml-simple/APKBUILD b/user/perl-xml-simple/APKBUILD
new file mode 100644
index 000000000..9327c5fc3
--- /dev/null
+++ b/user/perl-xml-simple/APKBUILD
@@ -0,0 +1,32 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-xml-simple
+pkgver=2.25
+pkgrel=0
+pkgdesc="A Perl module for parsing XML"
+url="https://metacpan.org/pod/XML::Simple"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0+"
+depends="perl perl-xml-parser perl-xml-namespacesupport"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/G/GR/GRANTM/XML-Simple-$pkgver.tar.gz"
+builddir="$srcdir/XML-Simple-$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="0f1a6a1bdb8f6ac6fa4deef33d09930eb4758b4a3ed4431624004ffa2b1eb02f0d6ce14cb4942162cb76f7aa39fea4ec6a71e1eb9ebd464b710db7024bdd990c XML-Simple-2.25.tar.gz"
diff --git a/user/perl-xml-tokeparser/APKBUILD b/user/perl-xml-tokeparser/APKBUILD
new file mode 100644
index 000000000..a797ee9e4
--- /dev/null
+++ b/user/perl-xml-tokeparser/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-xml-tokeparser
+pkgver=0.05
+pkgrel=0
+pkgdesc="Simplified interface to XML::Parser"
+url="https://metacpan.org/pod/XML::TokeParser"
+arch="noarch"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl perl-xml-parser"
+makedepends="perl-dev"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/P/PO/PODMASTER/XML-TokeParser-$pkgver.tar.gz"
+sha512sums="c19be15013a04908ae863ec1095af34785ad6050c8f895759e98053a0c097c9a80f5c99d33e30675c003cde7eb3b9340e866bc90c5fbcfcad93666df42439a7a XML-TokeParser-0.05.tar.gz"
+builddir="$srcdir/XML-TokeParser-$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
+}
+
diff --git a/user/perl-xs-object-magic/APKBUILD b/user/perl-xs-object-magic/APKBUILD
new file mode 100644
index 000000000..f36be4872
--- /dev/null
+++ b/user/perl-xs-object-magic/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-xs-object-magic
+pkgver=0.04
+pkgrel=0
+pkgdesc="Opaque, extensible XS pointer backed objects using sv_magic"
+url="https://metacpan.org/pod/XS::Object::Magic"
+arch="all"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl perl-module-install perl-extutils-depends"
+depends_dev=""
+makedepends="$depends_dev perl-dev"
+checkdepends="perl-test-fatal"
+install=""
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/F/FL/FLORA/XS-Object-Magic-$pkgver.tar.gz"
+sha512sums="315288496c0bab79f16d010f7f140dc1483bb3a1053a7fc41a048308aa1f9ae01b03795be28f132c856360176372d2251315ae62db950e377be88ff222a441dd XS-Object-Magic-0.04.tar.gz"
+builddir="$srcdir/XS-Object-Magic-$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
+}
+
diff --git a/user/perl-yaml-libyaml/APKBUILD b/user/perl-yaml-libyaml/APKBUILD
new file mode 100644
index 000000000..516971ac2
--- /dev/null
+++ b/user/perl-yaml-libyaml/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+pkgname=perl-yaml-libyaml
+pkgver=0.74
+pkgrel=0
+pkgdesc="Perl YAML Serialization using XS and libyaml"
+url="https://metacpan.org/pod/YAML::LibYAML"
+arch="all"
+license="Artistic-1.0-Perl AND GPL-2.0"
+depends="perl"
+depends_dev=""
+makedepends="$depends_dev perl-dev"
+install=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/I/IN/INGY/YAML-LibYAML-$pkgver.tar.gz"
+builddir="$srcdir/YAML-LibYAML-$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="fbc502b1c9173ec76a01e99d303bffd4c97d0a8f30dc6fe8f1962f8edc0296d81fb06c1ef958a0ec81a45259f1f9f6fcdfc3a056054dbf24ae8ce4a4be736614 YAML-LibYAML-0.74.tar.gz"
diff --git a/user/php7/APKBUILD b/user/php7/APKBUILD
index 194120417..f68ba54d2 100644
--- a/user/php7/APKBUILD
+++ b/user/php7/APKBUILD
@@ -25,7 +25,7 @@
pkgname=php7
_pkgname=php
-pkgver=7.2.8
+pkgver=7.2.11
pkgrel=0
_apiver=20170718
pkgdesc="The PHP7 language runtime engine"
@@ -522,7 +522,7 @@ _mv() {
mv $@
}
-sha512sums="4eaab35ff99c6829e4e67b99d0dbc1d25b83210c9d894fbb9e6810dd3de8b7d5bd62b2d8a9f2ecb3c1f2f5a9c28116a22b36f019a21b8770f02fe1e3149728d9 php-7.2.8.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/physlock/APKBUILD b/user/physlock/APKBUILD
new file mode 100644
index 000000000..a2c4e471f
--- /dev/null
+++ b/user/physlock/APKBUILD
@@ -0,0 +1,28 @@
+# Contributor: Max Rees <maxcrees@me.com>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=physlock
+pkgver=11
+pkgrel=0
+pkgdesc="Lightweight Linux console-locking tool"
+url="https://github.com/muennich/physlock"
+arch="all"
+options="!check suid" # No test suite.
+license="GPL-2.0+"
+depends=""
+makedepends="linux-headers linux-pam-dev utmps-dev"
+subpackages="$pkgname-doc"
+source="$pkgname-$pkgver.tar.gz::https://github.com/muennich/physlock/archive/v$pkgver.tar.gz
+ utmps.patch"
+
+build() {
+ cd "$builddir"
+ make
+}
+
+package() {
+ cd "$builddir"
+ make PREFIX="/usr" DESTDIR="$pkgdir" install
+}
+
+sha512sums="d3badf5c99e4e3e16f4e7ec5c59ee8320c845f1b180463900d816206362ce1aa8652f2489453ad5e190cceee2ed61a90acc52e25bb6b4c4a9dc8c4ebd3054938 physlock-11.tar.gz
+d461b462dedfb7505f506ce1050d5140b8729f50a383157157e4f65465f63174cc11dc0a46cc1eed57cec0293006c5ec6cc6e96af9acab009ab3c9fe5e2381d5 utmps.patch"
diff --git a/user/physlock/utmps.patch b/user/physlock/utmps.patch
new file mode 100644
index 000000000..efae166a9
--- /dev/null
+++ b/user/physlock/utmps.patch
@@ -0,0 +1,33 @@
+--- physlock-11/auth.c 2017-07-13 07:23:52.000000000 +0000
++++ physlock-11/auth.c 2018-09-21 21:21:36.240024566 +0000
+@@ -16,13 +16,14 @@
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
++#define _GNU_SOURCE
+ #include <paths.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <pwd.h>
+ #include <unistd.h>
+-#include <utmp.h>
++#include <utmpx.h>
+ #include <errno.h>
+ #include <security/pam_misc.h>
+
+@@ -41,12 +42,12 @@ static void get_pam(userinfo_t *uinfo) {
+
+ void get_user(userinfo_t *uinfo, int vt, uid_t owner) {
+ FILE *uf;
+- struct utmp r;
++ struct utmpx r;
+ struct passwd *pw;
+ char tty[16], name[UT_NAMESIZE+1];
+
+ uinfo->name = NULL;
+- while ((uf = fopen(_PATH_UTMP, "r")) == NULL && errno == EINTR);
++ while ((uf = fopen(UTMPX_FILE, "r")) == NULL && errno == EINTR);
+
+ if (uf != NULL) {
+ snprintf(tty, sizeof(tty), "tty%d", vt);
diff --git a/user/pigz/APKBUILD b/user/pigz/APKBUILD
new file mode 100644
index 000000000..107019248
--- /dev/null
+++ b/user/pigz/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=pigz
+pkgver=2.4
+pkgrel=0
+pkgdesc="Parallel implementation of gzip"
+url="http://zlib.net/pigz/"
+arch="all"
+license="zlib"
+makedepends="zlib-dev"
+subpackages="$pkgname-doc"
+source="http://zlib.net/pigz/pigz-$pkgver.tar.gz"
+
+build() {
+ cd "$builddir"
+ export CXXFLAGS="$CXXFLAGS -std=gnu++98"
+ make
+}
+
+check() {
+ cd "$builddir"
+ make tests
+}
+
+package() {
+ cd "$builddir"
+ mkdir -p "$pkgdir"/usr/bin
+ mkdir -p "$pkgdir"/usr/share/man/man1
+ for i in pigz unpigz; do
+ install -m755 $i "$pkgdir"/usr/bin
+ done
+ install -m644 pigz.1 "$pkgdir"/usr/share/man/man1
+}
+
+sha512sums="79b2357176f93b9f3e2bc07fee393fc4d79b7bd0041808f8ddfd23eafccde72e60ca95e97595bb624a4f732fe3612bf46d57c44541c36ae62f9aa6336abe16ba pigz-2.4.tar.gz"
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/polkit/APKBUILD b/user/polkit/APKBUILD
index 52a742130..ea5cb0c02 100644
--- a/user/polkit/APKBUILD
+++ b/user/polkit/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=polkit
pkgver=0.115
-pkgrel=0
+pkgrel=1
pkgdesc="Toolkit for controlling system-wide privileges"
url="https://www.freedesktop.org/wiki/Software/polkit/"
arch="all"
@@ -12,7 +12,9 @@ depends=""
makedepends="glib-dev gobject-introspection-dev gtk-doc intltool linux-pam-dev
mozjs-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-pkgusers="polkit"
+pkgusers="polkitd"
+pkggroups="polkitd"
+install="$pkgname.pre-install"
source="https://www.freedesktop.org/software/polkit/releases/polkit-$pkgver.tar.gz
0001-make-netgroup-support-optional.patch
fix-consolekit-db-stat.patch
diff --git a/user/polkit/polkit.pre-install b/user/polkit/polkit.pre-install
new file mode 100644
index 000000000..816f89236
--- /dev/null
+++ b/user/polkit/polkit.pre-install
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+useradd -r -s /sbin/nologin -d /usr/lib/polkit-1 -M -U polkitd 2>/dev/null
+
+exit 0
diff --git a/user/poppler-qt5/APKBUILD b/user/poppler-qt5/APKBUILD
index 854e018a7..f6d9eb933 100644
--- a/user/poppler-qt5/APKBUILD
+++ b/user/poppler-qt5/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=poppler-qt5
_realname=poppler
-pkgver=0.68.0
+pkgver=0.69.0
pkgrel=0
pkgdesc="PDF rendering library based on xpdf 3.0 (Qt 5 bindings)"
url="https://poppler.freedesktop.org/"
@@ -38,4 +38,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="98449ab96db1d17901ec44b1a71b0375ac83d0f13e059b83afb452939a3ae6375c4667ae029fa333fad3eed2d8315e5f1208f34d3548c5530f0ecc7a5841c27a poppler-0.68.0.tar.xz"
+sha512sums="9c0382059c786e17b16dc0847212006a7c05e51b3963a7470e49cede87c7855bdfa1b80b2d884e4fb4a430cdd5ab666391ecf53230486e245b6f28af03890e1d poppler-0.69.0.tar.xz"
diff --git a/user/poppler/APKBUILD b/user/poppler/APKBUILD
index 41371d01e..4542c0de7 100644
--- a/user/poppler/APKBUILD
+++ b/user/poppler/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer:
pkgname=poppler
-pkgver=0.68.0
+pkgver=0.69.0
pkgrel=0
pkgdesc="PDF rendering library based on xpdf 3.0"
url="https://poppler.freedesktop.org/"
@@ -59,4 +59,4 @@ _cpp() {
"$subpkgdir"/usr/lib/
}
-sha512sums="98449ab96db1d17901ec44b1a71b0375ac83d0f13e059b83afb452939a3ae6375c4667ae029fa333fad3eed2d8315e5f1208f34d3548c5530f0ecc7a5841c27a poppler-0.68.0.tar.xz"
+sha512sums="9c0382059c786e17b16dc0847212006a7c05e51b3963a7470e49cede87c7855bdfa1b80b2d884e4fb4a430cdd5ab666391ecf53230486e245b6f28af03890e1d poppler-0.69.0.tar.xz"
diff --git a/user/postgresql/APKBUILD b/user/postgresql/APKBUILD
index 8cd12f153..7fed2351e 100644
--- a/user/postgresql/APKBUILD
+++ b/user/postgresql/APKBUILD
@@ -2,7 +2,7 @@
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=postgresql
-pkgver=10.4
+pkgver=10.5
pkgrel=0
pkgdesc="Featureful object-relational database system (RDBMS)"
url="https://www.postgresql.org/"
@@ -249,7 +249,7 @@ _submv() {
done
}
-sha512sums="b7c0d2fdc724e2eb1cda9fc1eb01b47352bbe6ba6357b3e898b7f5990fd78499c8c68dcb3aa9bde7821d71b5882d8856131384e899f8055d89d51cdfdbc9e663 postgresql-10.4.tar.bz2
+sha512sums="1bad30ae88beca66f7e8b99b82e7f02aac1e9230b328e6e5a762a704cdd9dc767d924f5a66c68c93586badfef91b7ff336120a567ce970eaa58bb44c662ad48c postgresql-10.5.tar.bz2
1f8e7dc58f5b0a12427cf2fd904ffa898a34f23f3332c8382b94e0d991c007289e7913a69e04498f3d93fc5701855796c207b4b1cc4a0b366f586050124d7fcc initdb.patch
5f9d8bb4957194069d01af8ab3abc6d4d83a7e7f8bd7ebe1caae5361d621a3e58f91b14b952958138a794e0a80bc154fbb7e3e78d211e2a95b9b7901335de854 perl-rpath.patch
8439a6fdfdea0a4867daeb8bc23d6c825f30c00d91d4c39f48653f5ee77341f23282ce03a77aad94b5369700f11d2cb28d5aee360e59138352a9ab331a9f9d0f conf-unix_socket_directories.patch
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
new file mode 100644
index 000000000..f8ff737a6
--- /dev/null
+++ b/user/protobuf/APKBUILD
@@ -0,0 +1,108 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman@gmail.com>
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Dan Theisen <djt@hxx.in>
+# TODO: Build Python module, and clean up Ruby build process
+pkgname=protobuf
+_gemname=google-protobuf
+pkgver=3.6.1
+_tstver=1.8.0
+pkgrel=0
+pkgdesc="Library for extensible, efficient structure packing"
+url="https://github.com/google/protobuf"
+arch="all"
+license="BSD-3-Clause"
+depends_dev="zlib-dev"
+makedepends="$depends_dev autoconf automake libtool ruby ruby-dev ruby-rake"
+subpackages="ruby-$_gemname:_ruby $pkgname-dev $pkgname-vim::noarch"
+source="$pkgname-$pkgver.tar.gz::https://github.com/google/$pkgname/archive/v$pkgver.tar.gz
+ googletest-$_tstver.tar.gz::https://github.com/google/googletest/archive/release-$_tstver.tar.gz
+ musl-fix.patch
+ trim-rakefile.patch"
+builddir="$srcdir/$pkgname-$pkgver"
+
+prepare() {
+ default_prepare
+
+ cd "$builddir"
+ ./autogen.sh
+
+ # symlink tests to the test directory
+ rm -rf third_party/*
+ ln -sf "$srcdir"/googletest-release-$_tstver \
+ "$builddir"/third_party/googletest
+}
+
+build() {
+ cd "$builddir"
+
+ CXXFLAGS="$CXXFLAGS -fno-delete-null-pointer-checks" LDFLAGS="$LDFLAGS -latomic" \
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var
+ make
+
+ cd "$builddir"/ruby
+
+ # Generate proto files for built-in protocols.
+ rake genproto
+
+ gem build $_gemname.gemspec
+ gem install --local \
+ --install-dir dist \
+ --ignore-dependencies \
+ --no-document \
+ --verbose \
+ $_gemname
+
+ # build test-suite
+ local test; for test in googletest googlemock; do
+ cd "$builddir/third_party/googletest/$test"
+ autoreconf -vfi
+ ./configure
+ make
+ done
+}
+
+# TODO: Run tests for ruby gem.
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+_ruby() {
+ pkgdesc="Ruby bindings to Google's data interchange format"
+
+ local gemdir="$subpkgdir/$(ruby -e 'puts Gem.default_dir')"
+ cd "$builddir"/ruby/dist
+
+ mkdir -p "$gemdir"
+ cp -r extensions gems specifications "$gemdir"/
+
+ # Remove duplicated .so libs (should be only in extensions directory).
+ find "$gemdir"/gems/ -name "*.so" -delete
+
+ # Remove unnecessary files.
+ cd "$gemdir"/gems/$_gemname-$pkgver
+ rm -r ext/ tests/
+}
+
+vim() {
+ pkgdesc="Vim syntax for $pkgname"
+ depends=""
+ install_if="$pkgname=$pkgver-r$pkgrel vim"
+
+ install -Dm644 "$builddir"/editors/proto.vim \
+ "$subpkgdir"/usr/share/vim/vimfiles/syntax/proto.vim
+}
+
+sha512sums="1bc175d24b49de1b1e41eaf39598194e583afffb924c86c8d2e569d935af21874be76b2cbd4d9655a1d38bac3d4cd811de88bc2c72d81bad79115e69e5b0d839 protobuf-3.6.1.tar.gz
+1dbece324473e53a83a60601b02c92c089f5d314761351974e097b2cf4d24af4296f9eb8653b6b03b1e363d9c5f793897acae1f0c7ac40149216035c4d395d9d googletest-1.8.0.tar.gz
+875592bc5dc5efe9087ea1b340673f54c984ecd5aa3b110a2da136bdc28009af7ce1a9c57f4747ff809fc02eb6c39a0209c277177172af467a54172d9700188a musl-fix.patch
+d1d11fe76d2a1ae92f47f9eb1e0d94c67b7192a9dc4a382b6c0835f4fe4dbc2f98ca1b3c5095ad5b4e368581072330f943209c0decea02ebb47938588543fdb1 trim-rakefile.patch"
diff --git a/user/protobuf/musl-fix.patch b/user/protobuf/musl-fix.patch
new file mode 100644
index 000000000..442ca20ed
--- /dev/null
+++ b/user/protobuf/musl-fix.patch
@@ -0,0 +1,22 @@
+seems like both musl libc and android has byteswap.h
+
+--- a/src/google/protobuf/stubs/port.h
++++ b/src/google/protobuf/stubs/port.h
+@@ -94,7 +94,7 @@
+ #include <intrin.h>
+ #elif defined(__APPLE__)
+ #include <libkern/OSByteOrder.h>
+-#elif defined(__GLIBC__) || defined(__BIONIC__) || defined(__CYGWIN__)
++#elif defined(__linux__) || defined(__BIONIC__) || defined(__CYGWIN__)
+ #include <byteswap.h> // IWYU pragma: export
+ #endif
+
+@@ -380,7 +380,7 @@ inline void GOOGLE_UNALIGNED_STORE64(voi
+ #define bswap_32(x) OSSwapInt32(x)
+ #define bswap_64(x) OSSwapInt64(x)
+
+-#elif !defined(__GLIBC__) && !defined(__BIONIC__) && !defined(__CYGWIN__)
++#elif !defined(__linux__) && !defined(__BIONIC__) && !defined(__CYGWIN__)
+
+ static inline uint16 bswap_16(uint16 x) {
+ return static_cast<uint16>(((x & 0xFF) << 8) | ((x & 0xFF00) >> 8));
diff --git a/user/protobuf/trim-rakefile.patch b/user/protobuf/trim-rakefile.patch
new file mode 100644
index 000000000..7f53d7099
--- /dev/null
+++ b/user/protobuf/trim-rakefile.patch
@@ -0,0 +1,72 @@
+Remove code that we don't use to avoid installing additional dependencies.
+--- a/ruby/Rakefile
++++ b/ruby/Rakefile
+@@ -1,6 +1,4 @@
+ require "rubygems"
+-require "rubygems/package_task"
+-require "rake/extensiontask" unless RUBY_PLATFORM == "java"
+ require "rake/testtask"
+
+ spec = Gem::Specification.load("google-protobuf.gemspec")
+@@ -39,51 +37,6 @@
+ end
+ end
+
+-if RUBY_PLATFORM == "java"
+- if `which mvn` == ''
+- raise ArgumentError, "maven needs to be installed"
+- end
+- task :clean do
+- system("mvn --batch-mode clean")
+- end
+-
+- task :compile do
+- system("mvn --batch-mode package")
+- end
+-else
+- Rake::ExtensionTask.new("protobuf_c", spec) do |ext|
+- unless RUBY_PLATFORM =~ /darwin/
+- # TODO: also set "no_native to true" for mac if possible. As is,
+- # "no_native" can only be set if the RUBY_PLATFORM doing
+- # cross-compilation is contained in the "ext.cross_platform" array.
+- ext.no_native = true
+- end
+- ext.ext_dir = "ext/google/protobuf_c"
+- ext.lib_dir = "lib/google"
+- ext.cross_compile = true
+- ext.cross_platform = [
+- 'x86-mingw32', 'x64-mingw32',
+- 'x86_64-linux', 'x86-linux',
+- 'universal-darwin'
+- ]
+- end
+-
+- task 'gem:windows' do
+- require 'rake_compiler_dock'
+- RakeCompilerDock.sh "bundle && IN_DOCKER=true rake cross native gem RUBY_CC_VERSION=2.5.0:2.4.0:2.3.0:2.2.2:2.1.6:2.0.0"
+- end
+-
+- if RUBY_PLATFORM =~ /darwin/
+- task 'gem:native' do
+- system "rake genproto"
+- system "rake cross native gem RUBY_CC_VERSION=2.5.0:2.4.0:2.3.0:2.2.2:2.1.6:2.0.0"
+- end
+- else
+- task 'gem:native' => [:genproto, 'gem:windows']
+- end
+-end
+-
+-
+ # Proto for tests.
+ genproto_output << "tests/generated_code.rb"
+ genproto_output << "tests/test_import.rb"
+@@ -104,9 +57,6 @@
+
+ task :clean do
+ sh "rm -f #{genproto_output.join(' ')}"
+-end
+-
+-Gem::PackageTask.new(spec) do |pkg|
+ end
+
+ Rake::TestTask.new(:test => :build) do |t|
diff --git a/user/pulseaudio/APKBUILD b/user/pulseaudio/APKBUILD
index 86910481a..1a5bf62d3 100644
--- a/user/pulseaudio/APKBUILD
+++ b/user/pulseaudio/APKBUILD
@@ -3,7 +3,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=pulseaudio
pkgver=12.2
-pkgrel=0
+pkgrel=1
pkgdesc="A featureful, general-purpose sound server"
url="https://www.freedesktop.org/wiki/Software/PulseAudio"
pkgusers="pulse"
@@ -91,6 +91,7 @@ bluez() {
alsa() {
pkgdesc="PulseAudio ALSA support"
+ install_if="$pkgname=$pkgver-r$pkgrel alsa-lib"
mkdir -p "$subpkgdir"/usr/lib/pulse-$pkgver/modules
mv "$pkgdir"/usr/lib/pulse-$pkgver/modules/*alsa*.so \
"$subpkgdir"/usr/lib/pulse-$pkgver/modules/
diff --git a/user/py3-attrs/APKBUILD b/user/py3-attrs/APKBUILD
new file mode 100644
index 000000000..fad246453
--- /dev/null
+++ b/user/py3-attrs/APKBUILD
@@ -0,0 +1,32 @@
+# Contributor: Jean-Louis Fuchs <ganwell@fangorn.ch>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=py3-attrs
+pkgver=18.2.0
+pkgrel=0
+pkgdesc="Python classes without boilerplate"
+url="https://www.attrs.org"
+arch="noarch"
+options="!check" # Circular dependency with py3-pytest. Passes on x86_64
+license="MIT"
+depends="python3"
+makedepends="python3-dev"
+#checkdepends="py3-tox"
+source="py3-attrs-$pkgver.tar.gz::https://github.com/python-attrs/attrs/archive/$pkgver.tar.gz"
+builddir="$srcdir/attrs-$pkgver"
+
+build() {
+ cd "$builddir"
+ python3 setup.py build
+}
+
+check() {
+ cd "$builddir"
+ tox -e py36
+}
+
+package() {
+ cd "$builddir"
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="01bcd8d492f0b7e64ae42e311b0e443d2b365d98021d8c15f8003da084f48cd20456c12defd734d3386979bb69ac2bebafa1d14692c6dad69b084929992b2c2d py3-attrs-18.2.0.tar.gz"
diff --git a/user/py3-cffi/APKBUILD b/user/py3-cffi/APKBUILD
new file mode 100644
index 000000000..9c7e1124c
--- /dev/null
+++ b/user/py3-cffi/APKBUILD
@@ -0,0 +1,32 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-cffi
+pkgver=1.11.5
+pkgrel=0
+pkgdesc="Interface for Python to call in to C code"
+url="https://cffi.readthedocs.io/"
+arch="all"
+license="MIT"
+depends="python3 py3-cparser"
+makedepends="libffi-dev python3-dev"
+checkdepends="py3-pytest"
+subpackages=""
+source="https://files.pythonhosted.org/packages/e7/a7/4cd50e57cc6f436f1cc3a7e8fa700ff9b8b4d471620629074913e3735fb2/cffi-$pkgver.tar.gz"
+builddir="$srcdir/cffi-$pkgver"
+
+build() {
+ cd "$builddir"
+ python3 setup.py build
+}
+
+check() {
+ cd "$builddir"
+ python3 setup.py test
+}
+
+package() {
+ cd "$builddir"
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="6770d5293cfd7405e733d60c96655641b5bcc5878fc66a737f4a8308f465d459ee0e3fcaa47893d8f57fb195e5534dd7e4728c868f33d7e657688f45e1fb1880 cffi-1.11.5.tar.gz"
diff --git a/user/py3-cparser/APKBUILD b/user/py3-cparser/APKBUILD
new file mode 100644
index 000000000..d08071bf2
--- /dev/null
+++ b/user/py3-cparser/APKBUILD
@@ -0,0 +1,31 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-cparser
+pkgver=2.19
+pkgrel=0
+pkgdesc="C99 parser in pure Python"
+url="https://github.com/eliben/pycparser"
+arch="noarch"
+license="BSD-3-Clause"
+depends="python3"
+makedepends=""
+subpackages=""
+source="py3-cparser-$pkgver.tar.gz::https://github.com/eliben/pycparser/archive/release_v$pkgver.tar.gz"
+builddir="$srcdir/pycparser-release_v$pkgver"
+
+build() {
+ cd "$builddir"
+ python3 setup.py build
+}
+
+check() {
+ cd "$builddir"
+ python3 tests/all_tests.py
+}
+
+package() {
+ cd "$builddir"
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="88fe63c1a7a344c564dfd3b4f99735a4159c8a3f5738bab839943ea7fcbf1f5340f67326550b7e66508ea5862897e5bcdf363c2a8d47eccb50890573a2640a98 py3-cparser-2.19.tar.gz"
diff --git a/user/py3-distutils-extra/APKBUILD b/user/py3-distutils-extra/APKBUILD
new file mode 100644
index 000000000..8f68f3e10
--- /dev/null
+++ b/user/py3-distutils-extra/APKBUILD
@@ -0,0 +1,29 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=py3-distutils-extra
+pkgver=2.41
+pkgrel=0
+pkgdesc="Python distutils extras for gettext, themed icons, and scrollkeepr docs"
+url="https://launchpad.net/python-distutils-extra"
+arch="noarch"
+license="GPL-2.0-only"
+depends="python3"
+source="https://salsa.debian.org/debian/python-distutils-extra/-/archive/$pkgver/python-distutils-extra-$pkgver.tar.bz2"
+builddir="$srcdir/python-distutils-extra-$pkgver"
+
+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="db42d0f3b6cf9c77cc3b07f1224bcfecc6259816ebda87c5e8733933f8d906c352602a6ea50b93c9e6847010b9a28d295875535bc57efe42dbaa00567ffa0cfb python-distutils-extra-2.41.tar.bz2"
diff --git a/user/py3-lxml/APKBUILD b/user/py3-lxml/APKBUILD
index 3f10c708b..69e4721e7 100644
--- a/user/py3-lxml/APKBUILD
+++ b/user/py3-lxml/APKBUILD
@@ -3,7 +3,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=py3-lxml
_pkgname=lxml
-pkgver=4.2.4
+pkgver=4.2.5
pkgrel=0
pkgdesc="Python LXML Library"
url="https://lxml.de/"
@@ -24,4 +24,4 @@ package() {
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="fdbc0f15c20047d2e6ee616f73f84b57e1effcecb009cbd90e16f405e3a4e12cc320a0eb31782922d934441580870991331f9a2f1ce6a319be8bf7b92312319f lxml-4.2.4.tar.gz"
+sha512sums="4cf336d3e1471e8a26492760a143881517d12eb1c2dad82f8786540471bfabd68f8c795d97b7362166418c2be3c7996816638fdbd5a594536b9981478b90fdfe lxml-4.2.5.tar.gz"
diff --git a/user/py3-more-itertools/APKBUILD b/user/py3-more-itertools/APKBUILD
new file mode 100644
index 000000000..46baffedb
--- /dev/null
+++ b/user/py3-more-itertools/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: Max Rees <maxcrees@me.com>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=py3-more-itertools
+_pkgname=more-itertools
+pkgver=4.3.0
+pkgrel=0
+pkgdesc="More routines for operating on iterables, beyond itertools"
+url="https://pypi.org/project/more-itertools"
+options="!check" # Circular dependency with py3-pytest. Passes on x86_64
+arch="noarch"
+license="MIT"
+depends="python3"
+makedepends=""
+#checkdepends="py3-tox"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/m/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ cd "$builddir"
+ python3 setup.py build
+}
+
+check() {
+ cd "$builddir"
+ tox -e py36
+}
+
+package() {
+ cd "$builddir"
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="5fee3d99fd796b0f0f6b5aa99a8db22e219d3dced71fef6f4b16286fe67061dce280389b3638c55c6e5f6c828ef1286cee845d76a6861d2af66d90e995d5aa4e py3-more-itertools-4.3.0.tar.gz"
diff --git a/user/py3-pexpect/APKBUILD b/user/py3-pexpect/APKBUILD
new file mode 100644
index 000000000..10978ca79
--- /dev/null
+++ b/user/py3-pexpect/APKBUILD
@@ -0,0 +1,30 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=py3-pexpect
+pkgver=4.6.0
+pkgrel=0
+pkgdesc="Python library for managing console applications"
+url="https://pexpect.readthedocs.io/"
+arch="noarch"
+license="ISC"
+depends="python3 py3-ptyprocess"
+makedepends=""
+source="https://files.pythonhosted.org/packages/89/43/07d07654ee3e25235d8cea4164cdee0ec39d1fda8e9203156ebe403ffda4/pexpect-$pkgver.tar.gz"
+sha512sums="9a2b1ef19d885e69cfd17ba0519581f782574019010043e66d8b68f98ac86b359f4a1ca42f8bb0059a5dfdd43275ad93531c076cc0ac2049e109408961b46bbd pexpect-4.6.0.tar.gz"
+builddir="$srcdir/pexpect-$pkgver"
+
+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"
+}
+
diff --git a/user/py3-ptyprocess/APKBUILD b/user/py3-ptyprocess/APKBUILD
new file mode 100644
index 000000000..981976f23
--- /dev/null
+++ b/user/py3-ptyprocess/APKBUILD
@@ -0,0 +1,30 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=py3-ptyprocess
+pkgver=0.6.0
+pkgrel=0
+pkgdesc="Python library for using pseudo-terminals (ptys)"
+url="https://github.com/pexpect/ptyprocess"
+arch="noarch"
+license="ISC"
+depends="python3"
+makedepends=""
+source="https://files.pythonhosted.org/packages/7d/2d/e4b8733cf79b7309d84c9081a4ab558c89d8c89da5961bf4ddb050ca1ce0/ptyprocess-$pkgver.tar.gz"
+sha512sums="b34b6bca977f09d1443b210e338e1300e12d6ef35857f9543b3a116ef3b500ad4844357a7a283321756f886af41bddb1f02b27bf200ef1e82a96fd9e431bed86 ptyprocess-0.6.0.tar.gz"
+builddir="$srcdir/ptyprocess-$pkgver"
+
+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"
+}
+
diff --git a/user/py3-pycairo/APKBUILD b/user/py3-pycairo/APKBUILD
new file mode 100644
index 000000000..b93a99c1e
--- /dev/null
+++ b/user/py3-pycairo/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=py3-pycairo
+pkgver=1.17.1
+pkgrel=0
+pkgdesc="Python bindings for Cairo"
+url="https://pycairo.readthedocs.io/"
+arch="all"
+license="MIT AND (LGPL-2.1-only OR MPL-1.1)"
+makedepends="python3-dev cairo-dev meson"
+subpackages="$pkgname-dev"
+source="https://files.pythonhosted.org/packages/68/76/340ff847897296b2c8174dfa5a5ec3406e3ed783a2abac918cf326abad86/pycairo-$pkgver.tar.gz"
+sha512sums="b6a6af4afa4ac92020b375a72e6f8a7981e6628d4e68877a7fd08bd8ae3835063000b16214d84a40aff4c6b4cf0937236724631ae6dac368a9db0bf3837063fe pycairo-1.17.1.tar.gz"
+builddir="$srcdir/pycairo-$pkgver"
+
+build() {
+ cd "$builddir"
+ meson \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ . output
+ ninja -C output
+}
+
+check() {
+ cd "$builddir"
+}
+
+package() {
+ cd "$builddir"
+ DESTDIR="$pkgdir" ninja -C output install
+}
+
diff --git a/user/py3-pycotap/APKBUILD b/user/py3-pycotap/APKBUILD
new file mode 100644
index 000000000..a2731dc39
--- /dev/null
+++ b/user/py3-pycotap/APKBUILD
@@ -0,0 +1,32 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-pycotap
+_pipname=pycotap
+pkgver=1.1.0
+pkgrel=0
+pkgdesc="Tiny Python test runner that outputs TAP results"
+url="https://el-tramo.be/pycotap/"
+arch="noarch"
+license="MIT"
+depends="python3"
+makedepends=""
+subpackages=""
+source="https://files.pythonhosted.org/packages/a1/99/f1dfa70ffe1140f701ba9797630fb12c12558c28865e1e01728800054d32/pycotap-$pkgver.tar.gz"
+builddir="$srcdir/$_pipname-$pkgver"
+
+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="dbe8d76c3e4b934dd4ff9ec0d48caafef3ae5583046a7316607b3c8cebf8cb920c68dc46487243aac81823994805c76f2be8ff0cbda593c70b70f268661fa289 pycotap-1.1.0.tar.gz"
diff --git a/user/py3-pygobject/APKBUILD b/user/py3-pygobject/APKBUILD
new file mode 100644
index 000000000..62c3717b7
--- /dev/null
+++ b/user/py3-pygobject/APKBUILD
@@ -0,0 +1,31 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=py3-pygobject
+pkgver=3.30.1
+pkgrel=0
+pkgdesc="Python bindings for GObject libraries"
+url="https://pygobject.readthedocs.io/"
+arch="all"
+license="LGPL-2.1+ AND LGPL-2.1-only"
+depends="py3-pycairo"
+makedepends="python3-dev gobject-introspection-dev py3-pycairo-dev"
+subpackages="$pkgname-dev"
+source="https://gitlab.gnome.org/GNOME/pygobject/-/archive/$pkgver/pygobject-$pkgver.tar.bz2"
+builddir="$srcdir/pygobject-$pkgver"
+
+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="99f25e19d36b9700670f1e6c6d279104ec449f958001e1c0dc7225169aeaccf882420badac419a2cb4ef8c39f847102d2d62435e95e1a334c440ee5de03b3f7f pygobject-3.30.1.tar.bz2"
diff --git a/user/py3-pytest/APKBUILD b/user/py3-pytest/APKBUILD
index 30a26fb30..8d720971e 100644
--- a/user/py3-pytest/APKBUILD
+++ b/user/py3-pytest/APKBUILD
@@ -3,13 +3,13 @@
pkgname=py3-pytest
_pkgname=pytest
pkgver=3.5.1
-pkgrel=0
+pkgrel=1
pkgdesc="A python test library"
url="https://pypi.python.org/pypi/pytest"
arch="noarch"
options="net !check" # Circular dependency with py3-tox. Passes on x86_64
license="MIT"
-depends="python3 py3-py"
+depends="python3 py3-py py3-more-itertools py3-six py3-pluggy py3-attrs"
makedepends="python3-dev"
#checkdepends="py3-tox"
source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
diff --git a/user/py3-six/APKBUILD b/user/py3-six/APKBUILD
index 7c001b2a9..3b5c00d34 100644
--- a/user/py3-six/APKBUILD
+++ b/user/py3-six/APKBUILD
@@ -7,10 +7,11 @@ pkgrel=1
pkgdesc="Python 2 compatibility library"
url="https://pypi.python.org/pypi/six"
arch="noarch"
+options="!check" # Circular dependency with py3-pytest
license="MIT"
depends=""
makedepends="python3-dev"
-checkdepends="py3-pluggy py3-pytest"
+#checkdepends="py3-pluggy py3-pytest"
source="$pkgname-$pkgver.tar.gz::https://github.com/benjaminp/$_pkgname/archive/$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
diff --git a/user/qemu/spapr-page-size.patch b/user/qemu/spapr-page-size.patch
new file mode 100644
index 000000000..2ea81ab80
--- /dev/null
+++ b/user/qemu/spapr-page-size.patch
@@ -0,0 +1,30 @@
+From 3a9eba6700a9f6fc307bb08b9fe672cc36804fb5 Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Sun, 9 Sep 2018 19:58:37 -0500
+Subject: [PATCH] =?UTF-8?q?spapr:=20Default=20to=204=20KiB=20page=20size?=
+ =?UTF-8?q?=20for=20Ad=C3=A9lie?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Not upstream eligible, most likely.
+---
+ hw/ppc/spapr.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
+index 4edb6c7d16..8628673994 100644
+--- a/hw/ppc/spapr.c
++++ b/hw/ppc/spapr.c
+@@ -3882,7 +3882,7 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data)
+ smc->default_caps.caps[SPAPR_CAP_CFPC] = SPAPR_CAP_BROKEN;
+ smc->default_caps.caps[SPAPR_CAP_SBBC] = SPAPR_CAP_BROKEN;
+ smc->default_caps.caps[SPAPR_CAP_IBS] = SPAPR_CAP_BROKEN;
+- smc->default_caps.caps[SPAPR_CAP_HPT_MAXPAGESIZE] = 16; /* 64kiB */
++ smc->default_caps.caps[SPAPR_CAP_HPT_MAXPAGESIZE] = 12; /* 4kiB */
+ spapr_caps_add_properties(smc, &error_abort);
+ smc->irq = &spapr_irq_xics;
+ }
+--
+2.18.0
+
diff --git a/user/qpdf/APKBUILD b/user/qpdf/APKBUILD
index 57ff6bcff..0b957061b 100644
--- a/user/qpdf/APKBUILD
+++ b/user/qpdf/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer:
pkgname=qpdf
-pkgver=8.1.0
+pkgver=8.2.1
pkgrel=0
pkgdesc="Command-line tools and library for transforming PDF files"
url="http://qpdf.sourceforge.net"
@@ -60,4 +60,4 @@ fix_qdf() {
mv "$pkgdir"/usr/bin/fix-qdf "$subpkgdir"/usr/bin/
}
-sha512sums="1831bcaaed87dae268db5d61805d1483ec5c101f6ce594be660664c119597ae67cf011c2b50092964d785a814d5f6c780935127a89401fe37a1026ae4d3af15c qpdf-8.1.0.tar.gz"
+sha512sums="ef3aeb4a7ca3ec48ab62341533eedcb2a6d0985767317ab72c22f0c0ecfef6849bfdc34b1bcec6427c7bde166143adb409c895ff40d8be6628e6323e27697a8c qpdf-8.2.1.tar.gz"
diff --git a/user/re2c/APKBUILD b/user/re2c/APKBUILD
index 782b506b0..703bcacdd 100644
--- a/user/re2c/APKBUILD
+++ b/user/re2c/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Jeff Bilyk <jbilyk at gmail>
# Maintainer:
pkgname=re2c
-pkgver=1.0.3
+pkgver=1.1.1
pkgrel=0
pkgdesc="Fast lexer generator for C and C++"
url="http://re2c.org/"
@@ -33,4 +33,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="7b2a43828da872a957af88fb0a226e1936a45c8a1020ba1f6544b588aaa61dff8df40e84f9053c30ac8e17c41164e70627d57f5d3721a34b2aba7b1dbf25b6ae re2c-1.0.3.tar.gz"
+sha512sums="a6fe73611103588043748340976f0e6d07169a6546cb80627c0ccd2ceac83f362dbbf371530361d893537fd95deb19503b2c73c41ed40efe7787210d6c757397 re2c-1.1.1.tar.gz"
diff --git a/user/redis/APKBUILD b/user/redis/APKBUILD
index ec71b8eb9..cda552fdd 100644
--- a/user/redis/APKBUILD
+++ b/user/redis/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: V.Krishn <vkrishn4@gmail.com>
# Maintainer:
pkgname=redis
-pkgver=4.0.10
+pkgver=4.0.11
pkgrel=0
pkgdesc="Advanced key-value store"
url="https://redis.io/"
@@ -14,7 +14,7 @@ subpackages="$pkgname-openrc"
install="redis.pre-install"
pkgusers="redis"
pkggroups="redis"
-source="https://download.redis.io/releases/$pkgname-$pkgver.tar.gz
+source="http://download.redis.io/releases/$pkgname-$pkgver.tar.gz
fix-ppc-atomics.patch
posix-runtest.patch
redis.initd
@@ -78,7 +78,7 @@ package() {
install
}
-sha512sums="0978dabaf637e61889d492fd3629acd58ca8fb0c0088cdd7036ffd1a7ed3f018c107039d4c96bd61d0b7d35757df2366d051f57d77ffb5642aca0e5651b30603 redis-4.0.10.tar.gz
+sha512sums="f0054af9ca2143731a397b2b21285387707b7f40d9326ba15225feb1a2ff470fab5194308342f63bbe1081f84c7e9ef19543c5a8e3eae49e17bfc515c64201f0 redis-4.0.11.tar.gz
f768acea3e1868dbf0596085640c83e58d899860d7d647b0965fa858844c494d0a49b229fb417456d83f3e2690e5450950c31e0fa40529df85a9cde38d8981c4 fix-ppc-atomics.patch
856ae98e9e8670801827c3bd793dc14ed2c62c37365f8d04b452d7e1ab97300a0bf18c59b52ea686c2689d53aeed8e29e2c55207d3d4fb1fd8fc7fc820f33157 posix-runtest.patch
91b663f802aea9a473195940d3bf2ce3ca2af4e5b6e61a2d28ebbfe502ef2c764b574b7e87c49e60345d1a5d6b73d12920924c93b26be110c2ce824023347b6f redis.initd
diff --git a/user/ristretto/APKBUILD b/user/ristretto/APKBUILD
new file mode 100644
index 000000000..9fded5c45
--- /dev/null
+++ b/user/ristretto/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=ristretto
+pkgver=0.8.3
+pkgrel=0
+pkgdesc="Image viewer for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="GPL-2.0+ AND LGPL-2.0+"
+makedepends="intltool libexif-dev gtk+2.0-dev libxfce4util-dev libxfce4ui-dev
+ libmagic"
+subpackages="$pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/apps/ristretto/0.8/ristretto-$pkgver.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./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="c43b48dfdf9e8ed0ea3c5f2bbac1c837881aa6a467c78377b6f53dcce030b5a3b8134a7b8cbad1008ae758295953fde50a916c284e54e8c5490158e776554514 ristretto-0.8.3.tar.bz2"
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/rpcbind/APKBUILD b/user/rpcbind/APKBUILD
new file mode 100644
index 000000000..c9f8cc956
--- /dev/null
+++ b/user/rpcbind/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=rpcbind
+pkgver=1.2.5
+pkgrel=0
+pkgdesc="portmap replacement which supports RPC over various protocols"
+url="http://rpcbind.sourceforge.net"
+arch="all"
+options="!check" # No test suite.
+license="BSD-3-Clause"
+depends=""
+install="$pkgname.pre-install $pkgname.pre-upgrade"
+makedepends="libtirpc-dev bsd-compat-headers"
+subpackages="$pkgname-dbg $pkgname-doc $pkgname-openrc"
+source="http://downloads.sourceforge.net/project/rpcbind/rpcbind/$pkgver/rpcbind-$pkgver.tar.bz2
+ rpcbind.initd
+ rpcbind.confd"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --bindir=/sbin \
+ --enable-warmstarts \
+ --with-statedir=/var/lib/rpcbind \
+ --with-rpcuser=rpc \
+ --enable-debug \
+ --with-systemdsystemunitdir='no'
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ install -Dm755 "$srcdir"/rpcbind.initd "$pkgdir"/etc/init.d/rpcbind
+ install -Dm644 "$srcdir"/rpcbind.confd "$pkgdir"/etc/conf.d/rpcbind
+ install -D -m644 COPYING "$pkgdir"/usr/share/licenses/rpcbind/COPYING
+}
+sha512sums="e884c4757950ccead0f9a07f50625a63e6f18f9bfae9fcfffa3e5fa4b7a66c3a99d9fa303061848fe8211509d5456f24ff26e4579af6e161a35522268f3ef3e4 rpcbind-1.2.5.tar.bz2
+1cd655d86226a45fa3e927f8ac2bb580537644d2fb3684e0f4a956bf3721c95d95b8b8c1d9a2a742fb714eeba9277e0400a7493bf1bf676466d70adb2b35a88e rpcbind.initd
+0641087162ebc8fb10c5cb329105261d77cad073daed3f9a6c92574177298cd8a19a87b62dde14161cc554b5e68680cfd870b5334f3cfd8d6074ec8a43f4dfe3 rpcbind.confd"
diff --git a/user/rpcbind/rpcbind.confd b/user/rpcbind/rpcbind.confd
new file mode 100644
index 000000000..973320202
--- /dev/null
+++ b/user/rpcbind/rpcbind.confd
@@ -0,0 +1,5 @@
+# /etc/conf.d/rpcbind
+
+# Options for `rpcbind`.
+RPCBIND_OPTS="-w"
+
diff --git a/user/rpcbind/rpcbind.initd b/user/rpcbind/rpcbind.initd
new file mode 100644
index 000000000..b979c2226
--- /dev/null
+++ b/user/rpcbind/rpcbind.initd
@@ -0,0 +1,25 @@
+#!/sbin/openrc-run
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-nds/rpcbind/files/rpcbind.initd,v 1.1 2007/12/29 09:13:55 vapier Exp $
+
+depend() {
+ use net
+ before inetd xinetd
+ after firewall
+ provide portmap
+}
+
+start() {
+ ebegin "Starting rpcbind"
+ start-stop-daemon --start --quiet --exec /sbin/rpcbind \
+ -- ${RPCBIND_OPTS}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping rpcbind"
+ start-stop-daemon --stop --quiet --exec /sbin/rpcbind
+ eend $?
+}
+
diff --git a/user/rpcbind/rpcbind.pre-install b/user/rpcbind/rpcbind.pre-install
new file mode 100644
index 000000000..771cdbf7b
--- /dev/null
+++ b/user/rpcbind/rpcbind.pre-install
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+addgroup -S rpc 2>/dev/null
+adduser -S -D -h /var/lib/rpcbind -s /sbin/nologin -G rpc -g rpc rpc 2>/dev/null
+
+exit 0
diff --git a/user/rpcbind/rpcbind.pre-upgrade b/user/rpcbind/rpcbind.pre-upgrade
new file mode 120000
index 000000000..1ba8b0c77
--- /dev/null
+++ b/user/rpcbind/rpcbind.pre-upgrade
@@ -0,0 +1 @@
+rpcbind.pre-install \ No newline at end of file
diff --git a/user/rsibreak/APKBUILD b/user/rsibreak/APKBUILD
index 5f7262ce7..1096db075 100644
--- a/user/rsibreak/APKBUILD
+++ b/user/rsibreak/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=rsibreak
-pkgver=0.12.8
+pkgver=0.12.9
pkgrel=0
pkgdesc="Helps you avoid wrist injury by telling you when to stop for a rest"
url="https://www.kde.org/applications/utilities/rsibreak/"
@@ -42,4 +42,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="6ab0c43232e56278525ce5ba07a6c7a5f7bc5da74a8461e3cdaed7ae832304ac9f3c1b3ff0adfdeaab6b8231bdcecae4e8fee9529df97b8ce2208f4cf74f0eb1 rsibreak-0.12.8.tar.xz"
+sha512sums="37b193b0fffffcef6ffdb04950f5eb6f2503db3830e0c5142ad820243b4826567d2e4139e14ae2a6bdd08e6c7a0fb5a7b29b627d2dfb10fc7135e9bf86cb6e57 rsibreak-0.12.9.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
new file mode 100644
index 000000000..a9638ee75
--- /dev/null
+++ b/user/rust/0001-Require-static-native-libraries-when-linking-static-.patch
@@ -0,0 +1,44 @@
+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/29] Require static native libraries when linking static
+ executables
+
+---
+ src/librustc_codegen_llvm/back/link.rs | 13 ++++++++++---
+ 1 file changed, 10 insertions(+), 3 deletions(-)
+
+diff --git a/src/librustc_codegen_llvm/back/link.rs b/src/librustc_codegen_llvm/back/link.rs
+index 845a66c6e4..f61318affc 100644
+--- a/src/librustc_codegen_llvm/back/link.rs
++++ b/src/librustc_codegen_llvm/back/link.rs
+@@ -1551,8 +1551,8 @@ fn add_upstream_rust_crates(cmd: &mut dyn Linker,
+ }
+ }
+
+-// Link in all of our upstream crates' native dependencies. Remember that
+-// all of these upstream native dependencies are all non-static
++// Link in all of our upstream crates' native dependencies. Remember that when
++// linking libraries, these upstream native dependencies are all non-static
+ // dependencies. We've got two cases then:
+ //
+ // 1. The upstream crate is an rlib. In this case we *must* link in the
+@@ -1596,7 +1596,14 @@ fn add_upstream_native_libraries(cmd: &mut dyn Linker,
+ continue
+ }
+ match lib.kind {
+- NativeLibraryKind::NativeUnknown => cmd.link_dylib(&name.as_str()),
++ NativeLibraryKind::NativeUnknown => {
++ // When creating executables, match library linkage to that of the executable.
++ if crate_type == config::CrateTypeExecutable && sess.crt_static() {
++ cmd.link_staticlib(&name.as_str())
++ } else {
++ cmd.link_dylib(&name.as_str())
++ }
++ },
+ NativeLibraryKind::NativeFramework => cmd.link_framework(&name.as_str()),
+ NativeLibraryKind::NativeStaticNobundle => {
+ // Link "static-nobundle" native libs only if the crate they originate from
+--
+2.18.0
+
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
new file mode 100644
index 000000000..6b9bcb876
--- /dev/null
+++ b/user/rust/0002-Don-t-pass-CFLAGS-to-the-C-compiler.patch
@@ -0,0 +1,36 @@
+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/29] Don't pass CFLAGS to the C++ compiler
+
+---
+ src/bootstrap/builder.rs | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs
+index dc0b0aaf0b..257d369750 100644
+--- a/src/bootstrap/builder.rs
++++ b/src/bootstrap/builder.rs
+@@ -966,7 +966,7 @@ impl<'a> Builder<'a> {
+ let cflags = self.cflags(target).join(" ");
+ cargo
+ .env(format!("CFLAGS_{}", target), cflags.clone())
+- .env("CFLAGS", cflags.clone());
++ .env("CFLAGS", cflags);
+
+ if let Some(ar) = self.ar(target) {
+ let ranlib = format!("{} s", ar.display());
+@@ -981,9 +981,7 @@ impl<'a> Builder<'a> {
+ let cxx = ccacheify(&cxx);
+ cargo
+ .env(format!("CXX_{}", target), &cxx)
+- .env("CXX", &cxx)
+- .env(format!("CXXFLAGS_{}", target), cflags.clone())
+- .env("CXXFLAGS", cflags);
++ .env("CXX", &cxx);
+ }
+ }
+
+--
+2.18.0
+
diff --git a/user/rust/0003-Fix-LLVM-build.patch b/user/rust/0003-Fix-LLVM-build.patch
new file mode 100644
index 000000000..72108f0ae
--- /dev/null
+++ b/user/rust/0003-Fix-LLVM-build.patch
@@ -0,0 +1,26 @@
+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/29] Fix LLVM build
+
+---
+ src/bootstrap/lib.rs | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs
+index 1efff19dfb..e6ac847afe 100644
+--- a/src/bootstrap/lib.rs
++++ b/src/bootstrap/lib.rs
+@@ -742,7 +742,8 @@ impl Build {
+ // cc-rs because the build scripts will determine that for themselves.
+ let mut base = self.cc[&target].args().iter()
+ .map(|s| s.to_string_lossy().into_owned())
+- .filter(|s| !s.starts_with("-O") && !s.starts_with("/O"))
++ .filter(|s| !s.starts_with("-O") && !s.starts_with("/O")
++ && !s.starts_with("-static"))
+ .collect::<Vec<_>>();
+
+ // If we're compiling on macOS then we add a few unconditional flags
+--
+2.18.0
+
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
new file mode 100644
index 000000000..a28fc39b0
--- /dev/null
+++ b/user/rust/0004-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
@@ -0,0 +1,25 @@
+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/29] test/sysroot-crates-are-unstable: Fix test when rpath
+ is disabled
+
+Without this environment var, the test can't run rustc to find
+the sysroot path.
+---
+ .../run-make-fulldeps/sysroot-crates-are-unstable/Makefile | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile b/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile
+index a35174b3c2..9e77070685 100644
+--- a/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile
++++ b/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile
+@@ -1,2 +1,4 @@
++-include ../tools.mk
++
+ all:
+- python2.7 test.py
++ env '$(HOST_RPATH_ENV)' python2.7 test.py
+--
+2.18.0
+
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
new file mode 100644
index 000000000..eda99398c
--- /dev/null
+++ b/user/rust/0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch
@@ -0,0 +1,444 @@
+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/29] Remove -nostdlib and musl_root from musl targets
+
+---
+ config.toml.example | 6 ---
+ src/bootstrap/bin/rustc.rs | 10 -----
+ src/bootstrap/cc_detect.rs | 27 ++----------
+ src/bootstrap/compile.rs | 31 --------------
+ src/bootstrap/config.rs | 7 ----
+ src/bootstrap/configure.py | 22 ----------
+ src/bootstrap/lib.rs | 8 ----
+ src/bootstrap/sanity.rs | 30 +-------------
+ .../dist-i586-gnu-i586-i686-musl/Dockerfile | 2 -
+ src/ci/docker/dist-various-1/Dockerfile | 7 ----
+ src/ci/docker/dist-x86_64-musl/Dockerfile | 1 -
+ src/librustc_target/spec/linux_musl_base.rs | 41 -------------------
+ 12 files changed, 4 insertions(+), 188 deletions(-)
+
+diff --git a/config.toml.example b/config.toml.example
+index 9907341633..6f8b52e235 100644
+--- a/config.toml.example
++++ b/config.toml.example
+@@ -409,12 +409,6 @@
+ # only use static libraries. If unset, the target's default linkage is used.
+ #crt-static = false
+
+-# The root location of the MUSL installation directory. The library directory
+-# will also need to contain libunwind.a for an unwinding implementation. Note
+-# that this option only makes sense for MUSL targets that produce statically
+-# linked binaries
+-#musl-root = "..."
+-
+ # Used in testing for configuring where the QEMU images are located, you
+ # probably don't want to use this.
+ #qemu-rootfs = "..."
+diff --git a/src/bootstrap/bin/rustc.rs b/src/bootstrap/bin/rustc.rs
+index 7192cae895..71435f9306 100644
+--- a/src/bootstrap/bin/rustc.rs
++++ b/src/bootstrap/bin/rustc.rs
+@@ -30,7 +30,6 @@
+ extern crate bootstrap;
+
+ use std::env;
+-use std::ffi::OsString;
+ use std::io;
+ use std::path::PathBuf;
+ use std::process::Command;
+@@ -126,15 +125,6 @@ fn main() {
+ cmd.arg("-Cprefer-dynamic");
+ }
+
+- // Help the libc crate compile by assisting it in finding the MUSL
+- // native libraries.
+- if let Some(s) = env::var_os("MUSL_ROOT") {
+- let mut root = OsString::from("native=");
+- root.push(&s);
+- root.push("/lib");
+- cmd.arg("-L").arg(&root);
+- }
+-
+ // Override linker if necessary.
+ if let Ok(target_linker) = env::var("RUSTC_TARGET_LINKER") {
+ cmd.arg(format!("-Clinker={}", target_linker));
+diff --git a/src/bootstrap/cc_detect.rs b/src/bootstrap/cc_detect.rs
+index 698903f128..629cedf019 100644
+--- a/src/bootstrap/cc_detect.rs
++++ b/src/bootstrap/cc_detect.rs
+@@ -95,7 +95,7 @@ pub fn find(build: &mut Build) {
+ if let Some(cc) = config.and_then(|c| c.cc.as_ref()) {
+ cfg.compiler(cc);
+ } else {
+- set_compiler(&mut cfg, Language::C, target, config, build);
++ set_compiler(&mut cfg, Language::C, target, config);
+ }
+
+ let compiler = cfg.get_compiler();
+@@ -124,7 +124,7 @@ pub fn find(build: &mut Build) {
+ if let Some(cxx) = config.and_then(|c| c.cxx.as_ref()) {
+ cfg.compiler(cxx);
+ } else {
+- set_compiler(&mut cfg, Language::CPlusPlus, host, config, build);
++ set_compiler(&mut cfg, Language::CPlusPlus, host, config);
+ }
+ let compiler = cfg.get_compiler();
+ build.verbose(&format!("CXX_{} = {:?}", host, compiler.path()));
+@@ -135,8 +135,7 @@ pub fn find(build: &mut Build) {
+ fn set_compiler(cfg: &mut cc::Build,
+ compiler: Language,
+ target: Interned<String>,
+- config: Option<&Target>,
+- build: &Build) {
++ config: Option<&Target>) {
+ match &*target {
+ // When compiling for android we may have the NDK configured in the
+ // config.toml in which case we look there. Otherwise the default
+@@ -173,26 +172,6 @@ fn set_compiler(cfg: &mut cc::Build,
+ }
+ }
+
+- "mips-unknown-linux-musl" => {
+- if cfg.get_compiler().path().to_str() == Some("gcc") {
+- cfg.compiler("mips-linux-musl-gcc");
+- }
+- }
+- "mipsel-unknown-linux-musl" => {
+- if cfg.get_compiler().path().to_str() == Some("gcc") {
+- cfg.compiler("mipsel-linux-musl-gcc");
+- }
+- }
+-
+- t if t.contains("musl") => {
+- if let Some(root) = build.musl_root(target) {
+- let guess = root.join("bin/musl-gcc");
+- if guess.exists() {
+- cfg.compiler(guess);
+- }
+- }
+- }
+-
+ _ => {}
+ }
+ }
+diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs
+index 04e8e133b0..7767956cd8 100644
+--- a/src/bootstrap/compile.rs
++++ b/src/bootstrap/compile.rs
+@@ -87,13 +87,6 @@ impl Step for Std {
+ });
+ builder.info(&format!("Uplifting stage1 std ({} -> {})", from.host, target));
+
+- // Even if we're not building std this stage, the new sysroot must
+- // still contain the musl startup objects.
+- if target.contains("musl") {
+- let libdir = builder.sysroot_libdir(compiler, target);
+- copy_musl_third_party_objects(builder, target, &libdir);
+- }
+-
+ builder.ensure(StdLink {
+ compiler: from,
+ target_compiler: compiler,
+@@ -102,11 +95,6 @@ impl Step for Std {
+ return;
+ }
+
+- if target.contains("musl") {
+- let libdir = builder.sysroot_libdir(compiler, target);
+- copy_musl_third_party_objects(builder, target, &libdir);
+- }
+-
+ let out_dir = builder.cargo_out(compiler, Mode::Std, target);
+ builder.clear_if_dirty(&out_dir, &builder.rustc(compiler));
+ let mut cargo = builder.cargo(compiler, Mode::Std, target, "build");
+@@ -128,20 +116,6 @@ impl Step for Std {
+ }
+ }
+
+-/// Copies the crt(1,i,n).o startup objects
+-///
+-/// Since musl supports fully static linking, we can cross link for it even
+-/// with a glibc-targeting toolchain, given we have the appropriate startup
+-/// files. As those shipped with glibc won't work, copy the ones provided by
+-/// musl so we have them on linux-gnu hosts.
+-fn copy_musl_third_party_objects(builder: &Builder,
+- target: Interned<String>,
+- into: &Path) {
+- for &obj in &["crt1.o", "crti.o", "crtn.o"] {
+- builder.copy(&builder.musl_root(target).unwrap().join("lib").join(obj), &into.join(obj));
+- }
+-}
+-
+ /// Configure cargo to compile the standard library, adding appropriate env vars
+ /// and such.
+ pub fn std_cargo(builder: &Builder,
+@@ -196,11 +170,6 @@ pub fn std_cargo(builder: &Builder,
+ cargo.env("JEMALLOC_OVERRIDE", jemalloc);
+ }
+ }
+- if target.contains("musl") {
+- if let Some(p) = builder.musl_root(target) {
+- cargo.env("MUSL_ROOT", p);
+- }
+- }
+ }
+ }
+
+diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs
+index 0a8a5c87d0..9fdf8690c5 100644
+--- a/src/bootstrap/config.rs
++++ b/src/bootstrap/config.rs
+@@ -131,8 +131,6 @@ pub struct Config {
+ pub save_toolstates: Option<PathBuf>,
+ pub print_step_timings: bool,
+
+- // Fallback musl-root for all targets
+- pub musl_root: Option<PathBuf>,
+ pub prefix: Option<PathBuf>,
+ pub sysconfdir: Option<PathBuf>,
+ pub datadir: Option<PathBuf>,
+@@ -165,7 +163,6 @@ pub struct Target {
+ pub linker: Option<PathBuf>,
+ pub ndk: Option<PathBuf>,
+ pub crt_static: Option<bool>,
+- pub musl_root: Option<PathBuf>,
+ pub qemu_rootfs: Option<PathBuf>,
+ pub no_std: bool,
+ }
+@@ -294,7 +291,6 @@ struct Rust {
+ backtrace: Option<bool>,
+ default_linker: Option<String>,
+ channel: Option<String>,
+- musl_root: Option<String>,
+ rpath: Option<bool>,
+ optimize_tests: Option<bool>,
+ debuginfo_tests: Option<bool>,
+@@ -328,7 +324,6 @@ struct TomlTarget {
+ linker: Option<String>,
+ android_ndk: Option<String>,
+ crt_static: Option<bool>,
+- musl_root: Option<String>,
+ qemu_rootfs: Option<String>,
+ }
+
+@@ -541,7 +536,6 @@ impl Config {
+ set(&mut config.llvm_tools_enabled, rust.llvm_tools);
+ config.rustc_parallel_queries = rust.experimental_parallel_queries.unwrap_or(false);
+ config.rustc_default_linker = rust.default_linker.clone();
+- config.musl_root = rust.musl_root.clone().map(PathBuf::from);
+ config.save_toolstates = rust.save_toolstates.clone().map(PathBuf::from);
+ set(&mut config.deny_warnings, rust.deny_warnings.or(flags.warnings));
+ set(&mut config.backtrace_on_ice, rust.backtrace_on_ice);
+@@ -580,7 +574,6 @@ impl Config {
+ target.ar = cfg.ar.clone().map(PathBuf::from);
+ target.linker = cfg.linker.clone().map(PathBuf::from);
+ target.crt_static = cfg.crt_static.clone();
+- target.musl_root = cfg.musl_root.clone().map(PathBuf::from);
+ target.qemu_rootfs = cfg.qemu_rootfs.clone().map(PathBuf::from);
+
+ config.target_config.insert(INTERNER.intern_string(triple.clone()), target);
+diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py
+index 9fdba044f4..513935e4c8 100755
+--- a/src/bootstrap/configure.py
++++ b/src/bootstrap/configure.py
+@@ -108,28 +108,6 @@ v("aarch64-linux-android-ndk", "target.aarch64-linux-android.android-ndk",
+ "aarch64-linux-android NDK standalone path")
+ v("x86_64-linux-android-ndk", "target.x86_64-linux-android.android-ndk",
+ "x86_64-linux-android NDK standalone path")
+-v("musl-root", "target.x86_64-unknown-linux-musl.musl-root",
+- "MUSL root installation directory (deprecated)")
+-v("musl-root-x86_64", "target.x86_64-unknown-linux-musl.musl-root",
+- "x86_64-unknown-linux-musl install directory")
+-v("musl-root-i586", "target.i586-unknown-linux-musl.musl-root",
+- "i586-unknown-linux-musl install directory")
+-v("musl-root-i686", "target.i686-unknown-linux-musl.musl-root",
+- "i686-unknown-linux-musl install directory")
+-v("musl-root-arm", "target.arm-unknown-linux-musleabi.musl-root",
+- "arm-unknown-linux-musleabi install directory")
+-v("musl-root-armhf", "target.arm-unknown-linux-musleabihf.musl-root",
+- "arm-unknown-linux-musleabihf install directory")
+-v("musl-root-armv5te", "target.armv5te-unknown-linux-musleabi.musl-root",
+- "armv5te-unknown-linux-musleabi install directory")
+-v("musl-root-armv7", "target.armv7-unknown-linux-musleabihf.musl-root",
+- "armv7-unknown-linux-musleabihf install directory")
+-v("musl-root-aarch64", "target.aarch64-unknown-linux-musl.musl-root",
+- "aarch64-unknown-linux-musl install directory")
+-v("musl-root-mips", "target.mips-unknown-linux-musl.musl-root",
+- "mips-unknown-linux-musl install directory")
+-v("musl-root-mipsel", "target.mipsel-unknown-linux-musl.musl-root",
+- "mipsel-unknown-linux-musl install directory")
+ v("qemu-armhf-rootfs", "target.arm-unknown-linux-gnueabihf.qemu-rootfs",
+ "rootfs in qemu testing, you probably don't want to use this")
+ v("qemu-aarch64-rootfs", "target.aarch64-unknown-linux-gnu.qemu-rootfs",
+diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs
+index e6ac847afe..dd785124d2 100644
+--- a/src/bootstrap/lib.rs
++++ b/src/bootstrap/lib.rs
+@@ -803,14 +803,6 @@ impl Build {
+ }
+ }
+
+- /// Returns the "musl root" for this `target`, if defined
+- fn musl_root(&self, target: Interned<String>) -> Option<&Path> {
+- self.config.target_config.get(&target)
+- .and_then(|t| t.musl_root.as_ref())
+- .or(self.config.musl_root.as_ref())
+- .map(|p| &**p)
+- }
+-
+ /// Returns true if this is a no-std `target`, if defined
+ fn no_std(&self, target: Interned<String>) -> Option<bool> {
+ self.config.target_config.get(&target)
+diff --git a/src/bootstrap/sanity.rs b/src/bootstrap/sanity.rs
+index c7f514da93..617a3c2399 100644
+--- a/src/bootstrap/sanity.rs
++++ b/src/bootstrap/sanity.rs
+@@ -21,7 +21,7 @@
+ use std::collections::HashMap;
+ use std::env;
+ use std::ffi::{OsString, OsStr};
+-use std::fs::{self, File};
++use std::fs::File;
+ use std::io::Read;
+ use std::path::PathBuf;
+ use std::process::Command;
+@@ -186,34 +186,6 @@ pub fn check(build: &mut Build) {
+ }
+ }
+
+- // Make sure musl-root is valid
+- if target.contains("musl") {
+- // If this is a native target (host is also musl) and no musl-root is given,
+- // fall back to the system toolchain in /usr before giving up
+- if build.musl_root(*target).is_none() && build.config.build == *target {
+- let target = build.config.target_config.entry(target.clone())
+- .or_insert(Default::default());
+- target.musl_root = Some("/usr".into());
+- }
+- match build.musl_root(*target) {
+- Some(root) => {
+- if fs::metadata(root.join("lib/libc.a")).is_err() {
+- panic!("couldn't find libc.a in musl dir: {}",
+- root.join("lib").display());
+- }
+- if fs::metadata(root.join("lib/libunwind.a")).is_err() {
+- panic!("couldn't find libunwind.a in musl dir: {}",
+- root.join("lib").display());
+- }
+- }
+- None => {
+- panic!("when targeting MUSL either the rust.musl-root \
+- option or the target.$TARGET.musl-root option must \
+- be specified in config.toml")
+- }
+- }
+- }
+-
+ if target.contains("msvc") {
+ // There are three builds of cmake on windows: MSVC, MinGW, and
+ // Cygwin. The Cygwin build does not have generators for Visual
+diff --git a/src/ci/docker/dist-i586-gnu-i586-i686-musl/Dockerfile b/src/ci/docker/dist-i586-gnu-i586-i686-musl/Dockerfile
+index ba2d32a929..412c37fdd1 100644
+--- a/src/ci/docker/dist-i586-gnu-i586-i686-musl/Dockerfile
++++ b/src/ci/docker/dist-i586-gnu-i586-i686-musl/Dockerfile
+@@ -30,8 +30,6 @@ COPY scripts/sccache.sh /scripts/
+ RUN sh /scripts/sccache.sh
+
+ ENV RUST_CONFIGURE_ARGS \
+- --musl-root-i586=/musl-i586 \
+- --musl-root-i686=/musl-i686 \
+ --enable-extended \
+ --disable-docs
+
+diff --git a/src/ci/docker/dist-various-1/Dockerfile b/src/ci/docker/dist-various-1/Dockerfile
+index 6302f55009..e04fdaa226 100644
+--- a/src/ci/docker/dist-various-1/Dockerfile
++++ b/src/ci/docker/dist-various-1/Dockerfile
+@@ -109,13 +109,6 @@ ENV CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \
+ CC_x86_64_unknown_redox=x86_64-unknown-redox-gcc
+
+ ENV RUST_CONFIGURE_ARGS \
+- --musl-root-armv5te=/musl-armv5te \
+- --musl-root-arm=/musl-arm \
+- --musl-root-armhf=/musl-armhf \
+- --musl-root-armv7=/musl-armv7 \
+- --musl-root-aarch64=/musl-aarch64 \
+- --musl-root-mips=/musl-mips \
+- --musl-root-mipsel=/musl-mipsel \
+ --enable-emscripten \
+ --disable-docs
+
+diff --git a/src/ci/docker/dist-x86_64-musl/Dockerfile b/src/ci/docker/dist-x86_64-musl/Dockerfile
+index 06f8a2fbba..f5dd379528 100644
+--- a/src/ci/docker/dist-x86_64-musl/Dockerfile
++++ b/src/ci/docker/dist-x86_64-musl/Dockerfile
+@@ -30,7 +30,6 @@ COPY scripts/sccache.sh /scripts/
+ RUN sh /scripts/sccache.sh
+
+ ENV RUST_CONFIGURE_ARGS \
+- --musl-root-x86_64=/musl-x86_64 \
+ --enable-extended \
+ --disable-docs
+
+diff --git a/src/librustc_target/spec/linux_musl_base.rs b/src/librustc_target/spec/linux_musl_base.rs
+index 7a3f3c2a51..32fe2f880a 100644
+--- a/src/librustc_target/spec/linux_musl_base.rs
++++ b/src/librustc_target/spec/linux_musl_base.rs
+@@ -13,53 +13,12 @@ use spec::{LinkerFlavor, TargetOptions};
+ pub fn opts() -> TargetOptions {
+ let mut base = super::linux_base::opts();
+
+- // Make sure that the linker/gcc really don't pull in anything, including
+- // default objects, libs, etc.
+- base.pre_link_args_crt.insert(LinkerFlavor::Gcc, Vec::new());
+- base.pre_link_args_crt.get_mut(&LinkerFlavor::Gcc).unwrap().push("-nostdlib".to_string());
+-
+ // At least when this was tested, the linker would not add the
+ // `GNU_EH_FRAME` program header to executables generated, which is required
+ // when unwinding to locate the unwinding information. I'm not sure why this
+ // argument is *not* necessary for normal builds, but it can't hurt!
+ base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-Wl,--eh-frame-hdr".to_string());
+
+- // There's a whole bunch of circular dependencies when dealing with MUSL
+- // unfortunately. To put this in perspective libc is statically linked to
+- // liblibc and libunwind is statically linked to libstd:
+- //
+- // * libcore depends on `fmod` which is in libc (transitively in liblibc).
+- // liblibc, however, depends on libcore.
+- // * compiler-rt has personality symbols that depend on libunwind, but
+- // libunwind is in libstd which depends on compiler-rt.
+- //
+- // Recall that linkers discard libraries and object files as much as
+- // possible, and with all the static linking and archives flying around with
+- // MUSL the linker is super aggressively stripping out objects. For example
+- // the first case has fmod stripped from liblibc (it's in its own object
+- // file) so it's not there when libcore needs it. In the second example all
+- // the unused symbols from libunwind are stripped (each is in its own object
+- // file in libstd) before we end up linking compiler-rt which depends on
+- // those symbols.
+- //
+- // To deal with these circular dependencies we just force the compiler to
+- // link everything as a group, not stripping anything out until everything
+- // is processed. The linker will still perform a pass to strip out object
+- // files but it won't do so until all objects/archives have been processed.
+- base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-Wl,-(".to_string());
+- base.post_link_args.insert(LinkerFlavor::Gcc, vec!["-Wl,-)".to_string()]);
+-
+- // When generating a statically linked executable there's generally some
+- // small setup needed which is listed in these files. These are provided by
+- // a musl toolchain and are linked by default by the `musl-gcc` script. Note
+- // that `gcc` also does this by default, it just uses some different files.
+- //
+- // Each target directory for musl has these object files included in it so
+- // they'll be included from there.
+- base.pre_link_objects_exe_crt.push("crt1.o".to_string());
+- base.pre_link_objects_exe_crt.push("crti.o".to_string());
+- base.post_link_objects_crt.push("crtn.o".to_string());
+-
+ // These targets statically link libc by default
+ base.crt_static_default = true;
+ // These targets allow the user to choose between static and dynamic linking.
+--
+2.18.0
+
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
new file mode 100644
index 000000000..5a2b6c422
--- /dev/null
+++ b/user/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
@@ -0,0 +1,24 @@
+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/29] Prefer libgcc_eh over libunwind for musl
+
+---
+ src/libunwind/lib.rs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/libunwind/lib.rs b/src/libunwind/lib.rs
+index 2b3c19c067..8233beada0 100644
+--- a/src/libunwind/lib.rs
++++ b/src/libunwind/lib.rs
+@@ -35,6 +35,6 @@ cfg_if! {
+ }
+
+ #[cfg(target_env = "musl")]
+-#[link(name = "unwind", kind = "static", cfg(target_feature = "crt-static"))]
++#[link(name = "gcc_eh", cfg(target_feature = "crt-static"))]
+ #[link(name = "gcc_s", cfg(not(target_feature = "crt-static")))]
+ extern {}
+--
+2.18.0
+
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
new file mode 100644
index 000000000..745c5a45f
--- /dev/null
+++ b/user/rust/0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
@@ -0,0 +1,37 @@
+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/29] runtest: Fix proc-macro tests on musl hosts
+
+---
+ src/tools/compiletest/src/runtest.rs | 7 ++-----
+ 1 file changed, 2 insertions(+), 5 deletions(-)
+
+diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs
+index ce7828144c..ec48fd2d85 100644
+--- a/src/tools/compiletest/src/runtest.rs
++++ b/src/tools/compiletest/src/runtest.rs
+@@ -1509,7 +1509,6 @@ impl<'test> TestCx<'test> {
+ None
+ } else if self.config.target.contains("cloudabi")
+ || self.config.target.contains("emscripten")
+- || (self.config.target.contains("musl") && !aux_props.force_host)
+ || self.config.target.contains("wasm32")
+ {
+ // We primarily compile all auxiliary libraries as dynamic libraries
+@@ -1517,10 +1516,8 @@ impl<'test> TestCx<'test> {
+ // for the test suite (otherwise including libstd statically in all
+ // executables takes up quite a bit of space).
+ //
+- // For targets like MUSL or Emscripten, however, there is no support for
+- // dynamic libraries so we just go back to building a normal library. Note,
+- // however, that for MUSL if the library is built with `force_host` then
+- // it's ok to be a dylib as the host should always support dylibs.
++ // For targets like Emscripten, however, there is no support for
++ // dynamic libraries so we just go back to building a normal library.
+ Some("lib")
+ } else {
+ Some("dylib")
+--
+2.18.0
+
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
new file mode 100644
index 000000000..a3caa20f5
--- /dev/null
+++ b/user/rust/0008-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
@@ -0,0 +1,36 @@
+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/29] Allow rustdoc to work when cross-compiling on musl
+
+musl can't handle foreign-architecture libraries in LD_LIBRARY_PATH.
+---
+ src/bootstrap/bin/rustdoc.rs | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/src/bootstrap/bin/rustdoc.rs b/src/bootstrap/bin/rustdoc.rs
+index a54e58665c..fc0cf940e2 100644
+--- a/src/bootstrap/bin/rustdoc.rs
++++ b/src/bootstrap/bin/rustdoc.rs
+@@ -34,9 +34,6 @@ fn main() {
+ Err(_) => 0,
+ };
+
+- let mut dylib_path = bootstrap::util::dylib_path();
+- dylib_path.insert(0, PathBuf::from(libdir.clone()));
+-
+ let mut cmd = Command::new(rustdoc);
+ cmd.args(&args)
+ .arg("--cfg")
+@@ -46,7 +43,7 @@ fn main() {
+ .arg("--sysroot")
+ .arg(sysroot)
+ .env(bootstrap::util::dylib_path_var(),
+- env::join_paths(&dylib_path).unwrap());
++ PathBuf::from(libdir.clone()));
+
+ // Force all crates compiled by this compiler to (a) be unstable and (b)
+ // allow the `rustc_private` feature to link to other unstable crates
+--
+2.18.0
+
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
new file mode 100644
index 000000000..6ae697151
--- /dev/null
+++ b/user/rust/0009-Add-missing-OpenSSL-configurations-for-musl-targets.patch
@@ -0,0 +1,42 @@
+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/29] Add missing OpenSSL configurations for musl targets
+
+---
+ src/bootstrap/native.rs | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs
+index 9aeb4e0eda..18c3dba233 100644
+--- a/src/bootstrap/native.rs
++++ b/src/bootstrap/native.rs
+@@ -610,9 +610,13 @@ impl Step for Openssl {
+ "arm-linux-androideabi" => "android",
+ "arm-unknown-linux-gnueabi" => "linux-armv4",
+ "arm-unknown-linux-gnueabihf" => "linux-armv4",
++ "arm-unknown-linux-musleabi" => "linux-armv4",
++ "arm-unknown-linux-musleabihf" => "linux-armv4",
++ "armv5te-unknown-linux-musleabi" => "linux-armv4",
+ "armv6-unknown-netbsd-eabihf" => "BSD-generic32",
+ "armv7-linux-androideabi" => "android-armv7",
+ "armv7-unknown-linux-gnueabihf" => "linux-armv4",
++ "armv7-unknown-linux-musleabihf" => "linux-armv4",
+ "armv7-unknown-netbsd-eabihf" => "BSD-generic32",
+ "i586-unknown-linux-gnu" => "linux-elf",
+ "i586-unknown-linux-musl" => "linux-elf",
+@@ -623,9 +627,11 @@ impl Step for Openssl {
+ "i686-unknown-linux-musl" => "linux-elf",
+ "i686-unknown-netbsd" => "BSD-x86-elf",
+ "mips-unknown-linux-gnu" => "linux-mips32",
++ "mips-unknown-linux-musl" => "linux-mips32",
+ "mips64-unknown-linux-gnuabi64" => "linux64-mips64",
+ "mips64el-unknown-linux-gnuabi64" => "linux64-mips64",
+ "mipsel-unknown-linux-gnu" => "linux-mips32",
++ "mipsel-unknown-linux-musl" => "linux-mips32",
+ "powerpc-unknown-linux-gnu" => "linux-ppc",
+ "powerpc-unknown-linux-gnuspe" => "linux-ppc",
+ "powerpc-unknown-netbsd" => "BSD-generic32",
+--
+2.18.0
+
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
new file mode 100644
index 000000000..15f431e5a
--- /dev/null
+++ b/user/rust/0010-test-linkage-visibility-dlsym-only-sees-exported-sym.patch
@@ -0,0 +1,26 @@
+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/29] test/linkage-visibility: dlsym only sees exported
+ symbols
+
+---
+ src/test/run-pass-fulldeps/auxiliary/linkage-visibility.rs | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/test/run-pass-fulldeps/auxiliary/linkage-visibility.rs b/src/test/run-pass-fulldeps/auxiliary/linkage-visibility.rs
+index 7a15a4cb3a..853d97670d 100644
+--- a/src/test/run-pass-fulldeps/auxiliary/linkage-visibility.rs
++++ b/src/test/run-pass-fulldeps/auxiliary/linkage-visibility.rs
+@@ -8,6 +8,8 @@
+ // option. This file may not be copied, modified, or distributed
+ // except according to those terms.
+
++// compile-flags: -C link-arg=-Wl,--export-dynamic
++
+ #![feature(rustc_private)]
+
+ // We're testing linkage visibility; the compiler warns us, but we want to
+--
+2.18.0
+
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
new file mode 100644
index 000000000..58db71538
--- /dev/null
+++ b/user/rust/0011-test-invalid_const_promotion-Accept-SIGTRAP-as-a-val.patch
@@ -0,0 +1,25 @@
+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/29] test/invalid_const_promotion: Accept SIGTRAP as a valid
+ death signal
+
+---
+ src/test/run-pass/invalid_const_promotion.rs | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/test/run-pass/invalid_const_promotion.rs b/src/test/run-pass/invalid_const_promotion.rs
+index 53cb4c4b00..dc4c0a51dd 100644
+--- a/src/test/run-pass/invalid_const_promotion.rs
++++ b/src/test/run-pass/invalid_const_promotion.rs
+@@ -33,6 +33,7 @@ fn check_status(status: std::process::ExitStatus)
+ use std::os::unix::process::ExitStatusExt;
+
+ assert!(status.signal() == Some(libc::SIGILL)
++ || status.signal() == Some(libc::SIGTRAP)
+ || status.signal() == Some(libc::SIGABRT));
+ }
+
+--
+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/0016-Add-powerpc-unknown-linux-musl-target.patch b/user/rust/0016-Add-powerpc-unknown-linux-musl-target.patch
new file mode 100644
index 000000000..1bafb8dd5
--- /dev/null
+++ b/user/rust/0016-Add-powerpc-unknown-linux-musl-target.patch
@@ -0,0 +1,92 @@
+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 16/29] Add powerpc-unknown-linux-musl target
+
+---
+ src/bootstrap/native.rs | 1 +
+ src/librustc_target/spec/mod.rs | 1 +
+ .../spec/powerpc_unknown_linux_musl.rs | 34 +++++++++++++++++++
+ src/tools/build-manifest/src/main.rs | 1 +
+ 4 files changed, 37 insertions(+)
+ create mode 100644 src/librustc_target/spec/powerpc_unknown_linux_musl.rs
+
+diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs
+index 18c3dba233..7c32b8b546 100644
+--- a/src/bootstrap/native.rs
++++ b/src/bootstrap/native.rs
+@@ -634,6 +634,7 @@ impl Step for Openssl {
+ "mipsel-unknown-linux-musl" => "linux-mips32",
+ "powerpc-unknown-linux-gnu" => "linux-ppc",
+ "powerpc-unknown-linux-gnuspe" => "linux-ppc",
++ "powerpc-unknown-linux-musl" => "linux-ppc",
+ "powerpc-unknown-netbsd" => "BSD-generic32",
+ "powerpc64-unknown-linux-gnu" => "linux-ppc64",
+ "powerpc64le-unknown-linux-gnu" => "linux-ppc64le",
+diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs
+index c5d21cdc46..f09e5a7465 100644
+--- a/src/librustc_target/spec/mod.rs
++++ b/src/librustc_target/spec/mod.rs
+@@ -272,6 +272,7 @@ supported_targets! {
+ ("mipsel-unknown-linux-gnu", mipsel_unknown_linux_gnu),
+ ("powerpc-unknown-linux-gnu", powerpc_unknown_linux_gnu),
+ ("powerpc-unknown-linux-gnuspe", powerpc_unknown_linux_gnuspe),
++ ("powerpc-unknown-linux-musl", powerpc_unknown_linux_musl),
+ ("powerpc64-unknown-linux-gnu", powerpc64_unknown_linux_gnu),
+ ("powerpc64le-unknown-linux-gnu", powerpc64le_unknown_linux_gnu),
+ ("powerpc64le-unknown-linux-musl", powerpc64le_unknown_linux_musl),
+diff --git a/src/librustc_target/spec/powerpc_unknown_linux_musl.rs b/src/librustc_target/spec/powerpc_unknown_linux_musl.rs
+new file mode 100644
+index 0000000000..48340da514
+--- /dev/null
++++ b/src/librustc_target/spec/powerpc_unknown_linux_musl.rs
+@@ -0,0 +1,34 @@
++// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
++// file at the top-level directory of this distribution and at
++// http://rust-lang.org/COPYRIGHT.
++//
++// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
++// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
++// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
++// option. This file may not be copied, modified, or distributed
++// except according to those terms.
++
++use spec::{LinkerFlavor, Target, TargetResult};
++
++pub fn target() -> TargetResult {
++ let mut base = super::linux_musl_base::opts();
++ base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-m32".to_string());
++ base.max_atomic_width = Some(32);
++
++ // see #36994
++ base.exe_allocation_crate = None;
++
++ Ok(Target {
++ llvm_target: "powerpc-unknown-linux-musl".to_string(),
++ target_endian: "big".to_string(),
++ target_pointer_width: "32".to_string(),
++ target_c_int_width: "32".to_string(),
++ data_layout: "E-m:e-p:32:32-i64:64-n32".to_string(),
++ arch: "powerpc".to_string(),
++ target_os: "linux".to_string(),
++ target_env: "musl".to_string(),
++ target_vendor: "unknown".to_string(),
++ linker_flavor: LinkerFlavor::Gcc,
++ options: base,
++ })
++}
+diff --git a/src/tools/build-manifest/src/main.rs b/src/tools/build-manifest/src/main.rs
+index 83b2895e1d..7659d24f47 100644
+--- a/src/tools/build-manifest/src/main.rs
++++ b/src/tools/build-manifest/src/main.rs
+@@ -86,6 +86,7 @@ static TARGETS: &'static [&'static str] = &[
+ "mipsel-unknown-linux-musl",
+ "powerpc-unknown-linux-gnu",
+ "powerpc-unknown-linux-gnuspe",
++ "powerpc-unknown-linux-musl",
+ "powerpc64-unknown-linux-gnu",
+ "powerpc64le-unknown-linux-gnu",
+ "powerpc64le-unknown-linux-musl",
+--
+2.18.0
+
diff --git a/user/rust/0017-Use-the-ELFv2-ABI-on-powerpc64-musl.patch b/user/rust/0017-Use-the-ELFv2-ABI-on-powerpc64-musl.patch
new file mode 100644
index 000000000..dd11dd568
--- /dev/null
+++ b/user/rust/0017-Use-the-ELFv2-ABI-on-powerpc64-musl.patch
@@ -0,0 +1,43 @@
+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 17/29] Use the ELFv2 ABI on powerpc64 musl
+
+---
+ src/librustc_target/abi/call/powerpc64.rs | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/src/librustc_target/abi/call/powerpc64.rs b/src/librustc_target/abi/call/powerpc64.rs
+index 0c5ec77a39..4851b25fe7 100644
+--- a/src/librustc_target/abi/call/powerpc64.rs
++++ b/src/librustc_target/abi/call/powerpc64.rs
+@@ -14,6 +14,7 @@
+
+ use abi::call::{FnType, ArgType, Reg, RegKind, Uniform};
+ use abi::{Align, Endian, HasDataLayout, LayoutOf, TyLayout, TyLayoutMethods};
++use spec::HasTargetSpec;
+
+ #[derive(Debug, Clone, Copy, PartialEq)]
+ enum ABI {
+@@ -136,11 +137,14 @@ fn classify_arg_ty<'a, Ty, C>(cx: C, arg: &mut ArgType<'a, Ty>, abi: ABI)
+
+ pub fn compute_abi_info<'a, Ty, C>(cx: C, fty: &mut FnType<'a, Ty>)
+ where Ty: TyLayoutMethods<'a, C> + Copy,
+- C: LayoutOf<Ty = Ty, TyLayout = TyLayout<'a, Ty>> + HasDataLayout
++ C: LayoutOf<Ty = Ty, TyLayout = TyLayout<'a, Ty>> + HasDataLayout + HasTargetSpec
+ {
+- let abi = match cx.data_layout().endian {
+- Endian::Big => ELFv1,
+- Endian::Little => ELFv2,
++ let abi = match cx.target_spec().target_env {
++ "musl" => ELFv2,
++ _ => match cx.data_layout().endian {
++ Endian::Big => ELFv1,
++ Endian::Little => ELFv2
++ }
+ };
+
+ if !fty.ret.is_ignore() {
+--
+2.18.0
+
diff --git a/user/rust/0018-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch b/user/rust/0018-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch
new file mode 100644
index 000000000..d1a6daa16
--- /dev/null
+++ b/user/rust/0018-Fix-powerpc64-ELFv2-big-endian-struct-passing-ABI.patch
@@ -0,0 +1,93 @@
+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 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
+necessary to put the argument in the correct half of the register.
+Parameter passing in the ELFv2 ABI needs these same transformations.
+Since this code makes no difference on little-endian machines, simplify
+it to use the same code path everywhere.
+---
+ src/librustc_target/abi/call/powerpc64.rs | 36 ++++++++++-------------
+ src/librustc_target/abi/mod.rs | 2 +-
+ 2 files changed, 17 insertions(+), 21 deletions(-)
+
+diff --git a/src/librustc_target/abi/call/powerpc64.rs b/src/librustc_target/abi/call/powerpc64.rs
+index 4851b25fe7..9e616c034e 100644
+--- a/src/librustc_target/abi/call/powerpc64.rs
++++ b/src/librustc_target/abi/call/powerpc64.rs
+@@ -76,7 +76,9 @@ fn classify_ret_ty<'a, Ty, C>(cx: C, ret: &mut ArgType<'a, Ty>, abi: ABI)
+ let size = ret.layout.size;
+ let bits = size.bits();
+ if bits <= 128 {
+- let unit = if bits <= 8 {
++ let unit = if cx.data_layout().endian == Endian::Big {
++ Reg { kind: RegKind::Integer, size }
++ } else if bits <= 8 {
+ Reg::i8()
+ } else if bits <= 16 {
+ Reg::i16()
+@@ -111,22 +113,15 @@ fn classify_arg_ty<'a, Ty, C>(cx: C, arg: &mut ArgType<'a, Ty>, abi: ABI)
+ }
+
+ let size = arg.layout.size;
+- let (unit, total) = match abi {
+- ELFv1 => {
+- // In ELFv1, aggregates smaller than a doubleword should appear in
+- // the least-significant bits of the parameter doubleword. The rest
+- // should be padded at their tail to fill out multiple doublewords.
+- if size.bits() <= 64 {
+- (Reg { kind: RegKind::Integer, size }, size)
+- } else {
+- let align = Align::from_bits(64, 64).unwrap();
+- (Reg::i64(), size.abi_align(align))
+- }
+- },
+- ELFv2 => {
+- // In ELFv2, we can just cast directly.
+- (Reg::i64(), size)
+- },
++ let (unit, total) = if size.bits() <= 64 {
++ // Aggregates smaller than a doubleword should appear in
++ // the least-significant bits of the parameter doubleword.
++ (Reg { kind: RegKind::Integer, size }, size)
++ } else {
++ // Aggregates larger than a doubleword should be padded
++ // at the tail to fill out a whole number of doublewords.
++ let align = Align::from_bits(64, 64).unwrap();
++ (Reg::i64(), size.abi_align(align))
+ };
+
+ arg.cast_to(Uniform {
+@@ -139,9 +134,10 @@ pub fn compute_abi_info<'a, Ty, C>(cx: C, fty: &mut FnType<'a, Ty>)
+ where Ty: TyLayoutMethods<'a, C> + Copy,
+ C: LayoutOf<Ty = Ty, TyLayout = TyLayout<'a, Ty>> + HasDataLayout + HasTargetSpec
+ {
+- let abi = match cx.target_spec().target_env {
+- "musl" => ELFv2,
+- _ => match cx.data_layout().endian {
++ let abi = if cx.target_spec().target_env == "musl" {
++ ELFv2
++ } else {
++ match cx.data_layout().endian {
+ Endian::Big => ELFv1,
+ Endian::Little => ELFv2
+ }
+diff --git a/src/librustc_target/abi/mod.rs b/src/librustc_target/abi/mod.rs
+index dac4738e2b..35b1ceb967 100644
+--- a/src/librustc_target/abi/mod.rs
++++ b/src/librustc_target/abi/mod.rs
+@@ -214,7 +214,7 @@ impl<'a> HasDataLayout for &'a TargetDataLayout {
+ }
+
+ /// Endianness of the target, which must match cfg(target-endian).
+-#[derive(Copy, Clone)]
++#[derive(Copy, Clone, PartialEq)]
+ pub enum Endian {
+ Little,
+ Big
+--
+2.18.0
+
diff --git a/user/rust/0019-Add-powerpc64-unknown-linux-musl-target.patch b/user/rust/0019-Add-powerpc64-unknown-linux-musl-target.patch
new file mode 100644
index 000000000..de0f2bc82
--- /dev/null
+++ b/user/rust/0019-Add-powerpc64-unknown-linux-musl-target.patch
@@ -0,0 +1,118 @@
+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 19/29] Add powerpc64-unknown-linux-musl target
+
+---
+ src/bootstrap/native.rs | 5 +++
+ src/librustc_target/abi/call/powerpc64.rs | 2 +-
+ src/librustc_target/spec/mod.rs | 1 +
+ .../spec/powerpc64_unknown_linux_musl.rs | 35 +++++++++++++++++++
+ src/tools/build-manifest/src/main.rs | 1 +
+ 5 files changed, 43 insertions(+), 1 deletion(-)
+ create mode 100644 src/librustc_target/spec/powerpc64_unknown_linux_musl.rs
+
+diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs
+index 7c32b8b546..186ef75189 100644
+--- a/src/bootstrap/native.rs
++++ b/src/bootstrap/native.rs
+@@ -637,6 +637,7 @@ impl Step for Openssl {
+ "powerpc-unknown-linux-musl" => "linux-ppc",
+ "powerpc-unknown-netbsd" => "BSD-generic32",
+ "powerpc64-unknown-linux-gnu" => "linux-ppc64",
++ "powerpc64-unknown-linux-musl" => "linux-ppc64",
+ "powerpc64le-unknown-linux-gnu" => "linux-ppc64le",
+ "powerpc64le-unknown-linux-musl" => "linux-ppc64le",
+ "s390x-unknown-linux-gnu" => "linux64-s390x",
+@@ -664,6 +665,10 @@ impl Step for Openssl {
+ configure.arg("-mandroid");
+ configure.arg("-fomit-frame-pointer");
+ }
++ // OpenSSL ships incompatible ELFv1 ABI assembly code
++ if target == "powerpc64-unknown-linux-musl" {
++ configure.arg("no-asm");
++ }
+ if target == "sparc64-unknown-netbsd" {
+ // Need -m64 to get assembly generated correctly for sparc64.
+ configure.arg("-m64");
+diff --git a/src/librustc_target/abi/call/powerpc64.rs b/src/librustc_target/abi/call/powerpc64.rs
+index 9e616c034e..18d14495e2 100644
+--- a/src/librustc_target/abi/call/powerpc64.rs
++++ b/src/librustc_target/abi/call/powerpc64.rs
+@@ -19,7 +19,7 @@ use spec::HasTargetSpec;
+ #[derive(Debug, Clone, Copy, PartialEq)]
+ enum ABI {
+ ELFv1, // original ABI used for powerpc64 (big-endian)
+- ELFv2, // newer ABI used for powerpc64le
++ ELFv2, // newer ABI used for powerpc64le and musl (both endians)
+ }
+ use self::ABI::*;
+
+diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs
+index f09e5a7465..94aa07abb6 100644
+--- a/src/librustc_target/spec/mod.rs
++++ b/src/librustc_target/spec/mod.rs
+@@ -274,6 +274,7 @@ supported_targets! {
+ ("powerpc-unknown-linux-gnuspe", powerpc_unknown_linux_gnuspe),
+ ("powerpc-unknown-linux-musl", powerpc_unknown_linux_musl),
+ ("powerpc64-unknown-linux-gnu", powerpc64_unknown_linux_gnu),
++ ("powerpc64-unknown-linux-musl", powerpc64_unknown_linux_musl),
+ ("powerpc64le-unknown-linux-gnu", powerpc64le_unknown_linux_gnu),
+ ("powerpc64le-unknown-linux-musl", powerpc64le_unknown_linux_musl),
+ ("s390x-unknown-linux-gnu", s390x_unknown_linux_gnu),
+diff --git a/src/librustc_target/spec/powerpc64_unknown_linux_musl.rs b/src/librustc_target/spec/powerpc64_unknown_linux_musl.rs
+new file mode 100644
+index 0000000000..24ff9e0ecd
+--- /dev/null
++++ b/src/librustc_target/spec/powerpc64_unknown_linux_musl.rs
+@@ -0,0 +1,35 @@
++// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
++// file at the top-level directory of this distribution and at
++// http://rust-lang.org/COPYRIGHT.
++//
++// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
++// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
++// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
++// option. This file may not be copied, modified, or distributed
++// except according to those terms.
++
++use spec::{LinkerFlavor, Target, TargetResult};
++
++pub fn target() -> TargetResult {
++ let mut base = super::linux_musl_base::opts();
++ base.cpu = "ppc64".to_string();
++ base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-m64".to_string());
++ base.max_atomic_width = Some(64);
++
++ // see #36994
++ base.exe_allocation_crate = None;
++
++ Ok(Target {
++ llvm_target: "powerpc64-unknown-linux-musl".to_string(),
++ target_endian: "big".to_string(),
++ target_pointer_width: "64".to_string(),
++ target_c_int_width: "32".to_string(),
++ data_layout: "E-m:e-i64:64-n32:64".to_string(),
++ arch: "powerpc64".to_string(),
++ target_os: "linux".to_string(),
++ target_env: "musl".to_string(),
++ target_vendor: "unknown".to_string(),
++ linker_flavor: LinkerFlavor::Gcc,
++ options: base,
++ })
++}
+diff --git a/src/tools/build-manifest/src/main.rs b/src/tools/build-manifest/src/main.rs
+index 7659d24f47..e20f9fe216 100644
+--- a/src/tools/build-manifest/src/main.rs
++++ b/src/tools/build-manifest/src/main.rs
+@@ -88,6 +88,7 @@ static TARGETS: &'static [&'static str] = &[
+ "powerpc-unknown-linux-gnuspe",
+ "powerpc-unknown-linux-musl",
+ "powerpc64-unknown-linux-gnu",
++ "powerpc64-unknown-linux-musl",
+ "powerpc64le-unknown-linux-gnu",
+ "powerpc64le-unknown-linux-musl",
+ "s390x-unknown-linux-gnu",
+--
+2.18.0
+
diff --git a/user/rust/0020-run-pass-const-endianness-negate-before-to_le.patch b/user/rust/0020-run-pass-const-endianness-negate-before-to_le.patch
new file mode 100644
index 000000000..151b3f419
--- /dev/null
+++ b/user/rust/0020-run-pass-const-endianness-negate-before-to_le.patch
@@ -0,0 +1,29 @@
+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 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
+black-boxed part of the test. This only makes a tangible difference on
+big-endian targets.
+---
+ src/test/run-pass/const-endianess.rs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/test/run-pass/const-endianess.rs b/src/test/run-pass/const-endianess.rs
+index fa34b49210..95c738d3ec 100644
+--- a/src/test/run-pass/const-endianess.rs
++++ b/src/test/run-pass/const-endianess.rs
+@@ -25,7 +25,7 @@ fn main() {
+ #[cfg(not(target_arch = "asmjs"))]
+ {
+ const BE_U128: u128 = 999999u128.to_be();
+- const LE_I128: i128 = -999999i128.to_le();
++ const LE_I128: i128 = (-999999i128).to_le();
+ assert_eq!(BE_U128, b(999999u128).to_be());
+ assert_eq!(LE_I128, b(-999999i128).to_le());
+ }
+--
+2.18.0
+
diff --git a/user/rust/0021-Fix-double_check-tests-on-big-endian-targets.patch b/user/rust/0021-Fix-double_check-tests-on-big-endian-targets.patch
new file mode 100644
index 000000000..720db7d10
--- /dev/null
+++ b/user/rust/0021-Fix-double_check-tests-on-big-endian-targets.patch
@@ -0,0 +1,75 @@
+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 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
+machines. Avoid this issue by shrinking the integer member to the
+same size as the enums.
+---
+ src/test/ui/const-eval/double_check.rs | 8 ++++----
+ src/test/ui/const-eval/double_check2.rs | 8 ++++----
+ src/test/ui/const-eval/double_check2.stderr | 4 ++--
+ 3 files changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/src/test/ui/const-eval/double_check.rs b/src/test/ui/const-eval/double_check.rs
+index 81f6e7ddd2..76f9276c05 100644
+--- a/src/test/ui/const-eval/double_check.rs
++++ b/src/test/ui/const-eval/double_check.rs
+@@ -21,12 +21,12 @@ enum Bar {
+ union Union {
+ foo: &'static Foo,
+ bar: &'static Bar,
+- usize: &'static usize,
++ u8: &'static u8,
+ }
+-static BAR: usize = 42;
++static BAR: u8 = 42;
+ static FOO: (&Foo, &Bar) = unsafe {(
+- Union { usize: &BAR }.foo,
+- Union { usize: &BAR }.bar,
++ Union { u8: &BAR }.foo,
++ Union { u8: &BAR }.bar,
+ )};
+
+ fn main() {}
+diff --git a/src/test/ui/const-eval/double_check2.rs b/src/test/ui/const-eval/double_check2.rs
+index b661ee9247..701632362c 100644
+--- a/src/test/ui/const-eval/double_check2.rs
++++ b/src/test/ui/const-eval/double_check2.rs
+@@ -19,12 +19,12 @@ enum Bar {
+ union Union {
+ foo: &'static Foo,
+ bar: &'static Bar,
+- usize: &'static usize,
++ u8: &'static u8,
+ }
+-static BAR: usize = 5;
++static BAR: u8 = 5;
+ static FOO: (&Foo, &Bar) = unsafe {( //~ undefined behavior
+- Union { usize: &BAR }.foo,
+- Union { usize: &BAR }.bar,
++ Union { u8: &BAR }.foo,
++ Union { u8: &BAR }.bar,
+ )};
+
+ fn main() {}
+diff --git a/src/test/ui/const-eval/double_check2.stderr b/src/test/ui/const-eval/double_check2.stderr
+index 2a0a674e23..d0f44a627b 100644
+--- a/src/test/ui/const-eval/double_check2.stderr
++++ b/src/test/ui/const-eval/double_check2.stderr
+@@ -2,8 +2,8 @@ error[E0080]: this static likely exhibits undefined behavior
+ --> $DIR/double_check2.rs:25:1
+ |
+ LL | / static FOO: (&Foo, &Bar) = unsafe {( //~ undefined behavior
+-LL | | Union { usize: &BAR }.foo,
+-LL | | Union { usize: &BAR }.bar,
++LL | | Union { u8: &BAR }.foo,
++LL | | Union { u8: &BAR }.bar,
+ LL | | )};
+ | |___^ type validation failed: encountered 5 at (*.1).TAG, but expected something in the range 42..=99
+ |
+--
+2.18.0
+
diff --git a/user/rust/0022-x.py-Use-python3-instead-of-python.patch b/user/rust/0022-x.py-Use-python3-instead-of-python.patch
new file mode 100644
index 000000000..e23de6cef
--- /dev/null
+++ b/user/rust/0022-x.py-Use-python3-instead-of-python.patch
@@ -0,0 +1,22 @@
+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 22/29] x.py: Use python3 instead of python
+
+---
+ x.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/x.py b/x.py
+index e277ab98be..a75176a3f9 100755
+--- a/x.py
++++ b/x.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # Copyright 2016 The Rust Project Developers. See the COPYRIGHT
+ # file at the top-level directory of this distribution and at
+ # http://rust-lang.org/COPYRIGHT.
+--
+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/0025-Ignore-broken-and-non-applicable-tests.patch b/user/rust/0025-Ignore-broken-and-non-applicable-tests.patch
new file mode 100644
index 000000000..12c3e46dd
--- /dev/null
+++ b/user/rust/0025-Ignore-broken-and-non-applicable-tests.patch
@@ -0,0 +1,48 @@
+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 25/29] Ignore broken and non-applicable tests
+
+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/run-make-fulldeps/long-linker-command-lines/Makefile | 1 -
+ src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile | 2 +-
+ 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
+--- a/src/test/codegen/sparc-struct-abi.rs
++++ b/src/test/codegen/sparc-struct-abi.rs
+@@ -12,6 +12,7 @@
+ // See issue #52638.
+
+ // compile-flags: -O --target=sparc64-unknown-linux-gnu --crate-type=rlib
++// ignore-test
+ #![feature(no_core, lang_items)]
+ #![no_core]
+
+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
++++ b/src/test/run-make-fulldeps/long-linker-command-lines/Makefile
+@@ -2,4 +2,3 @@
+
+ all:
+ $(RUSTC) foo.rs -g -O
+- RUSTC="$(RUSTC_ORIGINAL)" $(call RUN,foo)
+diff --git a/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile b/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile
+index 9e77070685..7784230b46 100644
+--- a/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile
++++ b/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile
+@@ -1,4 +1,4 @@
+ -include ../tools.mk
+
+ all:
+- env '$(HOST_RPATH_ENV)' python2.7 test.py
++ true
+--
+2.18.0
+
diff --git a/user/rust/0026-Link-stage-2-tools-dynamically-to-libstd.patch b/user/rust/0026-Link-stage-2-tools-dynamically-to-libstd.patch
new file mode 100644
index 000000000..ffd3e8342
--- /dev/null
+++ b/user/rust/0026-Link-stage-2-tools-dynamically-to-libstd.patch
@@ -0,0 +1,27 @@
+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 26/29] Link stage 2 tools dynamically to libstd
+
+---
+ src/bootstrap/tool.rs | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/bootstrap/tool.rs b/src/bootstrap/tool.rs
+index 5e68b797b3..6a4c53f9a1 100644
+--- a/src/bootstrap/tool.rs
++++ b/src/bootstrap/tool.rs
+@@ -261,7 +261,9 @@ pub fn prepare_tool_cargo(
+
+ // We don't want to build tools dynamically as they'll be running across
+ // stages and such and it's just easier if they're not dynamically linked.
+- cargo.env("RUSTC_NO_PREFER_DYNAMIC", "1");
++ if compiler.stage < 2 {
++ cargo.env("RUSTC_NO_PREFER_DYNAMIC", "1");
++ }
+
+ if source_type == SourceType::Submodule {
+ cargo.env("RUSTC_EXTERNAL_TOOL", "1");
+--
+2.18.0
+
diff --git a/user/rust/0027-Move-debugger-scripts-to-usr-share-rust.patch b/user/rust/0027-Move-debugger-scripts-to-usr-share-rust.patch
new file mode 100644
index 000000000..81c649eaf
--- /dev/null
+++ b/user/rust/0027-Move-debugger-scripts-to-usr-share-rust.patch
@@ -0,0 +1,53 @@
+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 27/29] Move debugger scripts to /usr/share/rust
+
+---
+ src/bootstrap/dist.rs | 2 +-
+ src/etc/rust-gdb | 2 +-
+ src/etc/rust-lldb | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/bootstrap/dist.rs b/src/bootstrap/dist.rs
+index c6b39a52ae..ca21e87c9d 100644
+--- a/src/bootstrap/dist.rs
++++ b/src/bootstrap/dist.rs
+@@ -575,7 +575,7 @@ impl Step for DebuggerScripts {
+ fn run(self, builder: &Builder) {
+ let host = self.host;
+ let sysroot = self.sysroot;
+- let dst = sysroot.join("lib/rustlib/etc");
++ let dst = sysroot.join("share/rust");
+ t!(fs::create_dir_all(&dst));
+ let cp_debugger_script = |file: &str| {
+ builder.install(&builder.src.join("src/etc/").join(file), &dst, 0o644);
+diff --git a/src/etc/rust-gdb b/src/etc/rust-gdb
+index 6835d6aa90..dbdee6af31 100755
+--- a/src/etc/rust-gdb
++++ b/src/etc/rust-gdb
+@@ -14,7 +14,7 @@ set -e
+
+ # Find out where the pretty printer Python module is
+ RUSTC_SYSROOT=`rustc --print=sysroot`
+-GDB_PYTHON_MODULE_DIRECTORY="$RUSTC_SYSROOT/lib/rustlib/etc"
++GDB_PYTHON_MODULE_DIRECTORY="$RUSTC_SYSROOT/share/rust"
+
+ # Run GDB with the additional arguments that load the pretty printers
+ # Set the environment variable `RUST_GDB` to overwrite the call to a
+diff --git a/src/etc/rust-lldb b/src/etc/rust-lldb
+index f70ab65bce..621546bd3f 100755
+--- a/src/etc/rust-lldb
++++ b/src/etc/rust-lldb
+@@ -33,7 +33,7 @@ trap "rm -f $TMPFILE; exit" INT TERM EXIT
+ RUSTC_SYSROOT=`rustc --print sysroot`
+
+ # Write the LLDB script to the tempfile
+-echo "command script import \"$RUSTC_SYSROOT/lib/rustlib/etc/lldb_rust_formatters.py\"" >> $TMPFILE
++echo "command script import \"$RUSTC_SYSROOT/share/rust/lldb_rust_formatters.py\"" >> $TMPFILE
+ echo "type summary add --no-value --python-function lldb_rust_formatters.print_val -x \".*\" --category Rust" >> $TMPFILE
+ echo "type category enable Rust" >> $TMPFILE
+
+--
+2.18.0
+
diff --git a/user/rust/0028-Add-foxkit-target-specs.patch b/user/rust/0028-Add-foxkit-target-specs.patch
new file mode 100644
index 000000000..46a255a3c
--- /dev/null
+++ b/user/rust/0028-Add-foxkit-target-specs.patch
@@ -0,0 +1,240 @@
+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 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 +++++++++++++++++++
+ src/librustc_target/spec/mod.rs | 7 +++++++
+ .../spec/powerpc64_foxkit_linux_musl.rs | 21 +++++++++++++++++++
+ .../spec/powerpc_foxkit_linux_musl.rs | 21 +++++++++++++++++++
+ .../spec/x86_64_foxkit_linux_musl.rs | 21 +++++++++++++++++++
+ 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
+ create mode 100644 src/librustc_target/spec/powerpc64_foxkit_linux_musl.rs
+ 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
+--- /dev/null
++++ b/src/librustc_target/spec/aarch64_foxkit_linux_musl.rs
+@@ -0,0 +1,21 @@
++// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
++// file at the top-level directory of this distribution and at
++// http://rust-lang.org/COPYRIGHT.
++//
++// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
++// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
++// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
++// option. This file may not be copied, modified, or distributed
++// except according to those terms.
++
++use spec::TargetResult;
++
++pub fn target() -> TargetResult {
++ let mut base = super::aarch64_unknown_linux_musl::target()?;
++
++ base.llvm_target = "aarch64-foxkit-linux-musl".to_string();
++ base.target_vendor = "foxkit".to_string();
++ base.options.crt_static_default = false;
++
++ Ok(base)
++}
+diff --git a/src/librustc_target/spec/armv7_foxkit_linux_musleabihf.rs b/src/librustc_target/spec/armv7_foxkit_linux_musleabihf.rs
+new file mode 100644
+index 0000000000..facfd5d363
+--- /dev/null
++++ b/src/librustc_target/spec/armv7_foxkit_linux_musleabihf.rs
+@@ -0,0 +1,21 @@
++// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
++// file at the top-level directory of this distribution and at
++// http://rust-lang.org/COPYRIGHT.
++//
++// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
++// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
++// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
++// option. This file may not be copied, modified, or distributed
++// except according to those terms.
++
++use spec::TargetResult;
++
++pub fn target() -> TargetResult {
++ let mut base = super::armv7_unknown_linux_musleabihf::target()?;
++
++ base.llvm_target = "armv7-foxkit-linux-musleabihf".to_string();
++ base.target_vendor = "foxkit".to_string();
++ base.options.crt_static_default = false;
++
++ Ok(base)
++}
+diff --git a/src/librustc_target/spec/i586_foxkit_linux_musl.rs b/src/librustc_target/spec/i586_foxkit_linux_musl.rs
+new file mode 100644
+index 0000000000..cd6280e586
+--- /dev/null
++++ b/src/librustc_target/spec/i586_foxkit_linux_musl.rs
+@@ -0,0 +1,21 @@
++// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
++// file at the top-level directory of this distribution and at
++// http://rust-lang.org/COPYRIGHT.
++//
++// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
++// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
++// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
++// option. This file may not be copied, modified, or distributed
++// except according to those terms.
++
++use spec::TargetResult;
++
++pub fn target() -> TargetResult {
++ let mut base = super::i586_unknown_linux_musl::target()?;
++
++ base.llvm_target = "i586-foxkit-linux-musl".to_string();
++ base.target_vendor = "foxkit".to_string();
++ base.options.crt_static_default = false;
++
++ Ok(base)
++}
+diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs
+index 94aa07abb6..1187afbb60 100644
+--- a/src/librustc_target/spec/mod.rs
++++ b/src/librustc_target/spec/mod.rs
+@@ -375,6 +375,13 @@ supported_targets! {
+ ("armv7-unknown-cloudabi-eabihf", armv7_unknown_cloudabi_eabihf),
+ ("i686-unknown-cloudabi", i686_unknown_cloudabi),
+ ("x86_64-unknown-cloudabi", x86_64_unknown_cloudabi),
++
++ ("aarch64-foxkit-linux-musl", aarch64_foxkit_linux_musl),
++ ("armv7-foxkit-linux-musleabihf", armv7_foxkit_linux_musleabihf),
++ ("i586-foxkit-linux-musl", i586_foxkit_linux_musl),
++ ("powerpc-foxkit-linux-musl", powerpc_foxkit_linux_musl),
++ ("powerpc64-foxkit-linux-musl", powerpc64_foxkit_linux_musl),
++ ("x86_64-foxkit-linux-musl", x86_64_foxkit_linux_musl),
+ }
+
+ /// Everything `rustc` knows about how to compile for a specific target.
+diff --git a/src/librustc_target/spec/powerpc64_foxkit_linux_musl.rs b/src/librustc_target/spec/powerpc64_foxkit_linux_musl.rs
+new file mode 100644
+index 0000000000..b7202ee0fc
+--- /dev/null
++++ b/src/librustc_target/spec/powerpc64_foxkit_linux_musl.rs
+@@ -0,0 +1,21 @@
++// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
++// file at the top-level directory of this distribution and at
++// http://rust-lang.org/COPYRIGHT.
++//
++// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
++// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
++// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
++// option. This file may not be copied, modified, or distributed
++// except according to those terms.
++
++use spec::TargetResult;
++
++pub fn target() -> TargetResult {
++ let mut base = super::powerpc64_unknown_linux_musl::target()?;
++
++ base.llvm_target = "powerpc64-foxkit-linux-musl".to_string();
++ base.target_vendor = "foxkit".to_string();
++ base.options.crt_static_default = false;
++
++ Ok(base)
++}
+diff --git a/src/librustc_target/spec/powerpc_foxkit_linux_musl.rs b/src/librustc_target/spec/powerpc_foxkit_linux_musl.rs
+new file mode 100644
+index 0000000000..4daa96d3ce
+--- /dev/null
++++ b/src/librustc_target/spec/powerpc_foxkit_linux_musl.rs
+@@ -0,0 +1,21 @@
++// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
++// file at the top-level directory of this distribution and at
++// http://rust-lang.org/COPYRIGHT.
++//
++// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
++// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
++// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
++// option. This file may not be copied, modified, or distributed
++// except according to those terms.
++
++use spec::TargetResult;
++
++pub fn target() -> TargetResult {
++ let mut base = super::powerpc_unknown_linux_musl::target()?;
++
++ base.llvm_target = "powerpc-foxkit-linux-musl".to_string();
++ base.target_vendor = "foxkit".to_string();
++ base.options.crt_static_default = false;
++
++ Ok(base)
++}
+diff --git a/src/librustc_target/spec/x86_64_foxkit_linux_musl.rs b/src/librustc_target/spec/x86_64_foxkit_linux_musl.rs
+new file mode 100644
+index 0000000000..801dd8d6f4
+--- /dev/null
++++ b/src/librustc_target/spec/x86_64_foxkit_linux_musl.rs
+@@ -0,0 +1,21 @@
++// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
++// file at the top-level directory of this distribution and at
++// http://rust-lang.org/COPYRIGHT.
++//
++// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
++// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
++// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
++// option. This file may not be copied, modified, or distributed
++// except according to those terms.
++
++use spec::TargetResult;
++
++pub fn target() -> TargetResult {
++ let mut base = super::x86_64_unknown_linux_musl::target()?;
++
++ base.llvm_target = "x86_64-foxkit-linux-musl".to_string();
++ base.target_vendor = "foxkit".to_string();
++ base.options.crt_static_default = false;
++
++ Ok(base)
++}
+--
+2.18.0
+
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/0030-liblibc-linkage.patch b/user/rust/0030-liblibc-linkage.patch
new file mode 100644
index 000000000..4daa0e48f
--- /dev/null
+++ b/user/rust/0030-liblibc-linkage.patch
@@ -0,0 +1,17 @@
+diff --git a/src/liblibc/src/unix/mod.rs b/src/liblibc/src/unix/mod.rs
+index 9c68178a..1ae270e9 100644
+--- a/src/liblibc/src/unix/mod.rs
++++ b/src/liblibc/src/unix/mod.rs
+@@ -287,11 +287,7 @@ cfg_if! {
+ // cargo build, don't pull in anything extra as the libstd dep
+ // already pulls in all libs.
+ } else if #[cfg(target_env = "musl")] {
+- #[cfg_attr(feature = "stdbuild",
+- link(name = "c", kind = "static",
+- cfg(target_feature = "crt-static")))]
+- #[cfg_attr(feature = "stdbuild",
+- link(name = "c", cfg(not(target_feature = "crt-static"))))]
++ #[link(name = "c")]
+ extern {}
+ } else if #[cfg(target_os = "emscripten")] {
+ #[link(name = "c")]
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/0032-libc-dcff154781e4.patch b/user/rust/0032-libc-dcff154781e4.patch
new file mode 100644
index 000000000..6840e203f
--- /dev/null
+++ b/user/rust/0032-libc-dcff154781e4.patch
@@ -0,0 +1,642 @@
+From dcff154781e4b3c6ef3a6a4024c73631f52f48cb Mon Sep 17 00:00:00 2001
+From: Mike Sullivan <mksully22@gmail.com>
+Date: Mon, 18 Jun 2018 15:16:25 +0000
+Subject: [PATCH] libc: changes to ppc64le musl branch to support building of
+ rust on Alpine amend to add style changes amend to add style changes
+
+---
+ src/unix/notbsd/linux/musl/b32/mod.rs | 74 ++++++++++
+ src/unix/notbsd/linux/musl/b64/mod.rs | 62 --------
+ src/unix/notbsd/linux/musl/b64/powerpc64.rs | 155 ++++++++++++++++++--
+ src/unix/notbsd/linux/musl/b64/x86_64.rs | 136 +++++++++++++++++
+ src/unix/notbsd/linux/musl/mod.rs | 74 ----------
+ 5 files changed, 353 insertions(+), 148 deletions(-)
+
+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 f6e19d981dd..b4a0f761636 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
+@@ -52,6 +52,80 @@ 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;
++}
++
+ cfg_if! {
+ if #[cfg(any(target_arch = "x86"))] {
+ mod x86;
+diff --git a/src/vendor/libc/src/unix/notbsd/linux/musl/b64/mod.rs b/src/vendor/libc/src/unix/notbsd/linux/musl/b64/mod.rs
+index 70baf8277a9..5c2e815fd60 100644
+--- a/src/vendor/libc/src/unix/notbsd/linux/musl/b64/mod.rs
++++ b/src/vendor/libc/src/unix/notbsd/linux/musl/b64/mod.rs
+@@ -136,9 +136,6 @@ pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
+
+ pub const O_ASYNC: ::c_int = 0x2000;
+
+-pub const FIOCLEX: ::c_int = 0x5451;
+-pub const FIONBIO: ::c_int = 0x5421;
+-
+ pub const RLIMIT_RSS: ::c_int = 5;
+ pub const RLIMIT_NOFILE: ::c_int = 7;
+ pub const RLIMIT_AS: ::c_int = 9;
+@@ -172,7 +169,6 @@ 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;
+@@ -194,7 +190,6 @@ 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 = EDEADLK;
+ pub const EMULTIHOP: ::c_int = 72;
+ pub const EBADMSG: ::c_int = 74;
+ pub const EOVERFLOW: ::c_int = 75;
+@@ -272,12 +267,6 @@ 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_PASSCRED: ::c_int = 16;
+-pub const SO_PEERCRED: ::c_int = 17;
+-pub const SO_RCVLOWAT: ::c_int = 18;
+-pub const SO_SNDLOWAT: ::c_int = 19;
+-pub const SO_RCVTIMEO: ::c_int = 20;
+-pub const SO_SNDTIMEO: ::c_int = 21;
+ pub const SO_ACCEPTCONN: ::c_int = 30;
+ pub const SO_SNDBUFFORCE: ::c_int = 32;
+ pub const SO_RCVBUFFORCE: ::c_int = 33;
+@@ -312,8 +301,6 @@ 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 = 0x00010000;
+-
+ pub const MAP_HUGETLB: ::c_int = 0x040000;
+
+ pub const F_GETLK: ::c_int = 5;
+@@ -323,59 +310,10 @@ pub const F_SETLKW: ::c_int = 7;
+ pub const F_SETOWN: ::c_int = 8;
+
+ pub const VEOF: usize = 4;
+-pub const VEOL: usize = 11;
+-pub const VEOL2: usize = 16;
+-pub const VMIN: usize = 6;
+-pub const IEXTEN: ::tcflag_t = 0x00008000;
+-pub const TOSTOP: ::tcflag_t = 0x00000100;
+-pub const FLUSHO: ::tcflag_t = 0x00001000;
+-
+-pub const TCGETS: ::c_int = 0x5401;
+-pub const TCSETS: ::c_int = 0x5402;
+-pub const TCSETSW: ::c_int = 0x5403;
+-pub const TCSETSF: ::c_int = 0x5404;
+-pub const TCGETA: ::c_int = 0x5405;
+-pub const TCSETA: ::c_int = 0x5406;
+-pub const TCSETAW: ::c_int = 0x5407;
+-pub const TCSETAF: ::c_int = 0x5408;
+-pub const TCSBRK: ::c_int = 0x5409;
+-pub const TCXONC: ::c_int = 0x540A;
+-pub const TCFLSH: ::c_int = 0x540B;
+-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 = 0x540F;
+-pub const TIOCSPGRP: ::c_int = 0x5410;
+-pub const TIOCOUTQ: ::c_int = 0x5411;
+-pub const TIOCSTI: ::c_int = 0x5412;
+-pub const TIOCGWINSZ: ::c_int = 0x5413;
+-pub const TIOCSWINSZ: ::c_int = 0x5414;
+-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 = 0x541B;
+-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;
+-
+ cfg_if! {
+ if #[cfg(target_arch = "aarch64")] {
+ mod aarch64;
+diff --git a/src/vendor/libc/src/unix/notbsd/linux/musl/b64/powerpc64.rs b/src/vendor/libc/src/unix/notbsd/linux/musl/b64/powerpc64.rs
+index 621f9f4ce79..2ac39bf0cd5 100644
+--- a/src/vendor/libc/src/unix/notbsd/linux/musl/b64/powerpc64.rs
++++ b/src/vendor/libc/src/unix/notbsd/linux/musl/b64/powerpc64.rs
+@@ -60,22 +60,17 @@ s! {
+ }
+ }
+
+-pub const SYS_pivot_root: ::c_long = 203;
+-pub const SYS_gettid: ::c_long = 207;
+-pub const SYS_perf_event_open: ::c_long = 319;
+-pub const SYS_memfd_create: ::c_long = 360;
+-
+ pub const MAP_32BIT: ::c_int = 0x0040;
+-pub const O_DIRECT: ::c_int = 0x4000;
+-pub const O_DIRECTORY: ::c_int = 0x10000;
+-pub const O_LARGEFILE: ::c_int = 0;
+-pub const O_NOFOLLOW: ::c_int = 0x20000;
++pub const O_DIRECT: ::c_int = 0x20000;
++pub const O_DIRECTORY: ::c_int = 0x4000;
++pub const O_LARGEFILE: ::c_int = 0x10000;
++pub const O_NOFOLLOW: ::c_int = 0x8000;
+
+-pub const SIGSTKSZ: ::size_t = 8192;
+-pub const MINSIGSTKSZ: ::size_t = 2048;
++pub const SIGSTKSZ: ::size_t = 10240;
++pub const MINSIGSTKSZ: ::size_t = 4096;
+
+ #[doc(hidden)]
+-pub const AF_MAX: ::c_int = 42;
++pub const AF_MAX: ::c_int = 43;
+ #[doc(hidden)]
+ pub const PF_MAX: ::c_int = AF_MAX;
+
+@@ -439,3 +434,139 @@ 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 FIOCLEX: ::c_ulong = 0x20006601;
++pub const FIONBIO: ::c_ulong = 0x8004667e;
++pub const EDEADLK: ::c_int = 58;
++pub const EDEADLOCK: ::c_int = EDEADLK;
++pub const SO_PASSCRED: ::c_int = 20;
++pub const SO_PEERCRED: ::c_int = 21;
++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 EXTPROC: ::tcflag_t = 0x10000000;
++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_ulong = 0x403c7413;
++pub const TCSETS: ::c_ulong = 0x803c7414;
++pub const TCSETSW: ::c_ulong = 0x803c7415;
++pub const TCSETSF: ::c_ulong = 0x803c7416;
++pub const TCGETA: ::c_ulong = 0x40147417;
++pub const TCSETA: ::c_ulong = 0x80147418;
++pub const TCSETAW: ::c_ulong = 0x80147419;
++pub const TCSETAF: ::c_ulong = 0x8014741c;
++pub const TCSBRK: ::c_ulong = 0x2000741d;
++pub const TCXONC: ::c_ulong = 0x2000741e;
++pub const TCFLSH: ::c_ulong = 0x2000741f;
++pub const TIOCGSOFTCAR: ::c_ulong = 0x5419;
++pub const TIOCSSOFTCAR: ::c_ulong = 0x541A;
++pub const TIOCLINUX: ::c_ulong = 0x541C;
++pub const TIOCGSERIAL: ::c_ulong = 0x541E;
++pub const TIOCEXCL: ::c_ulong = 0x540C;
++pub const TIOCNXCL: ::c_ulong = 0x540D;
++pub const TIOCSCTTY: ::c_ulong = 0x540E;
++pub const TIOCGPGRP: ::c_ulong = 0x40047477;
++pub const TIOCSPGRP: ::c_ulong = 0x80047476;
++pub const TIOCOUTQ: ::c_ulong = 0x40047473;
++pub const TIOCGWINSZ: ::c_ulong = 0x40087468;
++pub const TIOCSWINSZ: ::c_ulong = 0x80087467;
++pub const TIOCMGET: ::c_ulong = 0x5415;
++pub const TIOCMBIS: ::c_ulong = 0x5416;
++pub const TIOCMBIC: ::c_ulong = 0x5417;
++pub const TIOCMSET: ::c_ulong = 0x5418;
++pub const FIONREAD: ::c_ulong = 0x4004667f;
++pub const TIOCCONS: ::c_ulong = 0x541D;
++pub const TIOCM_LE: ::c_ulong = 0x001;
++pub const TIOCM_DTR: ::c_ulong = 0x002;
++pub const TIOCM_RTS: ::c_ulong = 0x004;
++pub const TIOCM_ST: ::c_ulong = 0x008;
++pub const TIOCM_SR: ::c_ulong = 0x010;
++pub const TIOCM_CTS: ::c_ulong = 0x020;
++pub const TIOCM_CAR: ::c_ulong = 0x040;
++pub const TIOCM_RNG: ::c_ulong = 0x080;
++pub const TIOCM_DSR: ::c_ulong = 0x100;
++pub const TIOCM_CD: ::c_ulong = TIOCM_CAR;
++pub const TIOCM_RI: ::c_ulong = TIOCM_RNG;
++
++pub const RLIMIT_NLIMITS: ::c_int = 15;
++pub const TIOCINQ: ::c_ulong = ::FIONREAD;
++pub const MCL_CURRENT: ::c_int = 0x2000;
++pub const MCL_FUTURE: ::c_int = 0x4000;
++pub const CBAUD: ::tcflag_t = 0xff;
++pub const TAB1: ::c_int = 0x400;
++pub const TAB2: ::c_int = 0x800;
++pub const TAB3: ::c_int = 0xc00;
++pub const CR1: ::c_int = 0x1000;
++pub const CR2: ::c_int = 0x2000;
++pub const CR3: ::c_int = 0x3000;
++pub const FF1: ::c_int = 0x4000;
++pub const BS1: ::c_int = 0x8000;
++pub const VT1: ::c_int = 0x10000;
++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 = 0x2;
++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 = 0o77600000;
++pub const CBAUDEX: ::tcflag_t = 0o0000020;
++pub const VSWTC: usize = 9;
++pub const OLCUC: ::tcflag_t = 0o000004;
++pub const NLDLY: ::tcflag_t = 0o0001400;
++pub const CRDLY: ::tcflag_t = 0o0030000;
++pub const TABDLY: ::tcflag_t = 0o0006000;
++pub const BSDLY: ::tcflag_t = 0o0100000;
++pub const FFDLY: ::tcflag_t = 0o0040000;
++pub const VTDLY: ::tcflag_t = 0o0200000;
++pub const XTABS: ::tcflag_t = 0o00006000;
++
++pub const B57600: ::speed_t = 0o00020;
++pub const B115200: ::speed_t = 0o00021;
++pub const B230400: ::speed_t = 0o00022;
++pub const B460800: ::speed_t = 0o00023;
++pub const B500000: ::speed_t = 0o00024;
++pub const B576000: ::speed_t = 0o00025;
++pub const B921600: ::speed_t = 0o00026;
++pub const B1000000: ::speed_t = 0o00027;
++pub const B1152000: ::speed_t = 0o00030;
++pub const B1500000: ::speed_t = 0o00031;
++pub const B2000000: ::speed_t = 0o00032;
++pub const B2500000: ::speed_t = 0o00033;
++pub const B3000000: ::speed_t = 0o00034;
++pub const B3500000: ::speed_t = 0o00035;
++pub const B4000000: ::speed_t = 0o00036;
++
++extern {
++ pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int;
++}
+diff --git a/src/vendor/libc/src/unix/notbsd/linux/musl/b64/x86_64.rs b/src/vendor/libc/src/unix/notbsd/linux/musl/b64/x86_64.rs
+index 78d38e49e8f..0e0fcec4d2e 100644
+--- a/src/vendor/libc/src/unix/notbsd/linux/musl/b64/x86_64.rs
++++ b/src/vendor/libc/src/unix/notbsd/linux/musl/b64/x86_64.rs
+@@ -449,3 +449,139 @@ pub const MINSIGSTKSZ: ::size_t = 2048;
+ pub const AF_MAX: ::c_int = 42;
+ #[doc(hidden)]
+ pub const PF_MAX: ::c_int = AF_MAX;
++
++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;
++
++pub const FIOCLEX: ::c_int = 0x5451;
++pub const FIONBIO: ::c_int = 0x5421;
++pub const EDEADLK: ::c_int = 35;
++pub const EDEADLOCK: ::c_int = EDEADLK;
++pub const SO_PASSCRED: ::c_int = 16;
++pub const SO_PEERCRED: ::c_int = 17;
++pub const SO_RCVLOWAT: ::c_int = 18;
++pub const SO_SNDLOWAT: ::c_int = 19;
++pub const SO_RCVTIMEO: ::c_int = 20;
++pub const SO_SNDTIMEO: ::c_int = 21;
++pub const EXTPROC: ::tcflag_t = 0x00010000;
++pub const VEOL: usize = 11;
++pub const VEOL2: usize = 16;
++pub const VMIN: usize = 6;
++pub const IEXTEN: ::tcflag_t = 0x00008000;
++pub const TOSTOP: ::tcflag_t = 0x00000100;
++pub const FLUSHO: ::tcflag_t = 0x00001000;
++pub const TCGETS: ::c_int = 0x5401;
++pub const TCSETS: ::c_int = 0x5402;
++pub const TCSETSW: ::c_int = 0x5403;
++pub const TCSETSF: ::c_int = 0x5404;
++pub const TCGETA: ::c_int = 0x5405;
++pub const TCSETA: ::c_int = 0x5406;
++pub const TCSETAW: ::c_int = 0x5407;
++pub const TCSETAF: ::c_int = 0x5408;
++pub const TCSBRK: ::c_int = 0x5409;
++pub const TCXONC: ::c_int = 0x540A;
++pub const TCFLSH: ::c_int = 0x540B;
++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 = 0x540F;
++pub const TIOCSPGRP: ::c_int = 0x5410;
++pub const TIOCOUTQ: ::c_int = 0x5411;
++pub const TIOCSTI: ::c_int = 0x5412;
++pub const TIOCGWINSZ: ::c_int = 0x5413;
++pub const TIOCSWINSZ: ::c_int = 0x5414;
++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 = 0x541B;
++pub const TIOCCONS: ::c_int = 0x541D;
++
++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;
++
++extern {
++ pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;
++}
++
+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 9a63d1f7330..0d92a4b9d14 100644
+--- a/src/vendor/libc/src/unix/notbsd/linux/musl/mod.rs
++++ b/src/vendor/libc/src/unix/notbsd/linux/musl/mod.rs
+@@ -147,7 +147,6 @@ pub const POSIX_MADV_DONTNEED: ::c_int = 4;
+
+ pub const RLIM_INFINITY: ::rlim_t = !0;
+ pub const RLIMIT_RTTIME: ::c_int = 15;
+-pub const RLIMIT_NLIMITS: ::c_int = 16;
+
+ pub const MAP_ANONYMOUS: ::c_int = MAP_ANON;
+
+@@ -213,8 +212,6 @@ pub const TCSANOW: ::c_int = 0;
+ pub const TCSADRAIN: ::c_int = 1;
+ pub const TCSAFLUSH: ::c_int = 2;
+
+-pub const TIOCINQ: ::c_int = ::FIONREAD;
+-
+ pub const RTLD_GLOBAL: ::c_int = 0x100;
+ pub const RTLD_NOLOAD: ::c_int = 0x4;
+
+@@ -223,61 +220,6 @@ pub const RTLD_NOLOAD: ::c_int = 0x4;
+ pub const CLOCK_SGI_CYCLE: ::clockid_t = 10;
+ pub const CLOCK_TAI: ::clockid_t = 11;
+
+-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 B0: ::speed_t = 0o000000;
+ pub const B50: ::speed_t = 0o000001;
+ pub const B75: ::speed_t = 0o000002;
+@@ -296,21 +238,6 @@ pub const B19200: ::speed_t = 0o000016;
+ pub const B38400: ::speed_t = 0o000017;
+ pub const EXTA: ::speed_t = B19200;
+ pub const EXTB: ::speed_t = B38400;
+-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 SO_BINDTODEVICE: ::c_int = 25;
+ pub const SO_TIMESTAMP: ::c_int = 29;
+@@ -320,7 +247,6 @@ pub const SO_PEEK_OFF: ::c_int = 42;
+ pub const SO_BUSY_POLL: ::c_int = 46;
+
+ extern {
+- pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;
+ pub fn ptrace(request: ::c_int, ...) -> ::c_long;
+ pub fn getpriority(which: ::c_int, who: ::id_t) -> ::c_int;
+ pub fn setpriority(which: ::c_int, who: ::id_t, prio: ::c_int) -> ::c_int;
diff --git a/user/rust/0033-libc-90c01fa6b0f4.patch b/user/rust/0033-libc-90c01fa6b0f4.patch
new file mode 100644
index 000000000..5e73c780e
--- /dev/null
+++ b/user/rust/0033-libc-90c01fa6b0f4.patch
@@ -0,0 +1,162 @@
+From 90c01fa6b0f45c63dc19aa75cd39b38d2de5e98b Mon Sep 17 00:00:00 2001
+From: est31 <MTest31@outlook.com>
+Date: Sun, 1 Jul 2018 09:25:11 +0200
+Subject: [PATCH] Re-add aarch64 stuff removed by previous commit
+
+Previous commit
+
+dcff154781e4b3c6ef3a6a4024c73631f52f48cb
+"libc: changes to ppc64le musl branch to support building of rust on Alpine"
+
+has removed stuff from mod.rs and added it to some submodules, but
+missed the aarch64 submodule.
+
+This copies the stuff that that commit added to the x86_64.rs submodule
+and puts it into aarch64.rs.
+---
+ src/unix/notbsd/linux/musl/b64/aarch64.rs | 135 ++++++++++++++++++++++
+ 1 file changed, 135 insertions(+)
+
+diff --git a/src/vendor/libc/src/unix/notbsd/linux/musl/b64/aarch64.rs b/src/vendor/libc/src/unix/notbsd/linux/musl/b64/aarch64.rs
+index da0827a7750..98c53dc4f2b 100644
+--- a/src/vendor/libc/src/unix/notbsd/linux/musl/b64/aarch64.rs
++++ b/src/vendor/libc/src/unix/notbsd/linux/musl/b64/aarch64.rs
+@@ -339,3 +339,138 @@ pub const SYS_pwritev2: ::c_long = 287;
+ pub const SYS_pkey_mprotect: ::c_long = 288;
+ pub const SYS_pkey_alloc: ::c_long = 289;
+ pub const SYS_pkey_free: ::c_long = 290;
++
++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;
++
++pub const FIOCLEX: ::c_int = 0x5451;
++pub const FIONBIO: ::c_int = 0x5421;
++pub const EDEADLK: ::c_int = 35;
++pub const EDEADLOCK: ::c_int = EDEADLK;
++pub const SO_PASSCRED: ::c_int = 16;
++pub const SO_PEERCRED: ::c_int = 17;
++pub const SO_RCVLOWAT: ::c_int = 18;
++pub const SO_SNDLOWAT: ::c_int = 19;
++pub const SO_RCVTIMEO: ::c_int = 20;
++pub const SO_SNDTIMEO: ::c_int = 21;
++pub const EXTPROC: ::tcflag_t = 0x00010000;
++pub const VEOL: usize = 11;
++pub const VEOL2: usize = 16;
++pub const VMIN: usize = 6;
++pub const IEXTEN: ::tcflag_t = 0x00008000;
++pub const TOSTOP: ::tcflag_t = 0x00000100;
++pub const FLUSHO: ::tcflag_t = 0x00001000;
++pub const TCGETS: ::c_int = 0x5401;
++pub const TCSETS: ::c_int = 0x5402;
++pub const TCSETSW: ::c_int = 0x5403;
++pub const TCSETSF: ::c_int = 0x5404;
++pub const TCGETA: ::c_int = 0x5405;
++pub const TCSETA: ::c_int = 0x5406;
++pub const TCSETAW: ::c_int = 0x5407;
++pub const TCSETAF: ::c_int = 0x5408;
++pub const TCSBRK: ::c_int = 0x5409;
++pub const TCXONC: ::c_int = 0x540A;
++pub const TCFLSH: ::c_int = 0x540B;
++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 = 0x540F;
++pub const TIOCSPGRP: ::c_int = 0x5410;
++pub const TIOCOUTQ: ::c_int = 0x5411;
++pub const TIOCSTI: ::c_int = 0x5412;
++pub const TIOCGWINSZ: ::c_int = 0x5413;
++pub const TIOCSWINSZ: ::c_int = 0x5414;
++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 = 0x541B;
++pub const TIOCCONS: ::c_int = 0x541D;
++
++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;
++
++extern {
++ pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;
++}
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/0035-libc-checksums.patch b/user/rust/0035-libc-checksums.patch
new file mode 100644
index 000000000..a8ec2c150
--- /dev/null
+++ b/user/rust/0035-libc-checksums.patch
@@ -0,0 +1,9 @@
+diff --git a/src/vendor/libc/.cargo-checksum.json b/src/vendor/libc/.cargo-checksum.json
+index 5b315f61..c28c8c5c 100644
+--- a/src/vendor/libc/.cargo-checksum.json
++++ b/src/vendor/libc/.cargo-checksum.json
+@@ -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":"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/0040-rls-atomics.patch b/user/rust/0040-rls-atomics.patch
new file mode 100644
index 000000000..61811ef4d
--- /dev/null
+++ b/user/rust/0040-rls-atomics.patch
@@ -0,0 +1,63 @@
+diff --git a/src/tools/rls/src/cmd.rs b/src/tools/rls/src/cmd.rs
+index 545a129..8285f99 100644
+--- a/src/tools/rls/src/cmd.rs
++++ b/src/tools/rls/src/cmd.rs
+@@ -16,7 +16,7 @@ use crate::actions::requests;
+ use rls_analysis::{AnalysisHost, Target};
+ use crate::config::Config;
+ use crate::server::{self, LsService, Notification, Request, RequestId};
+-use std::sync::atomic::{AtomicU64, Ordering};
++use std::sync::atomic::{AtomicU32, Ordering};
+ use rls_vfs::Vfs;
+
+ use languageserver_types::{
+@@ -415,8 +415,8 @@ fn url(file_name: &str) -> Url {
+ }
+
+ fn next_id() -> RequestId {
+- static ID: AtomicU64 = AtomicU64::new(1);
+- RequestId::Num(ID.fetch_add(1, Ordering::SeqCst))
++ static ID: AtomicU32 = AtomicU32::new(1);
++ RequestId::Num(ID.fetch_add(1, Ordering::SeqCst).into())
+ }
+
+ // Custom reader and output for the RLS server.
+diff --git a/src/tools/rls/src/server/io.rs b/src/tools/rls/src/server/io.rs
+index 5d5060e..55ab545 100644
+--- a/src/tools/rls/src/server/io.rs
++++ b/src/tools/rls/src/server/io.rs
+@@ -17,7 +17,7 @@ use crate::lsp_data::{LSPNotification, LSPRequest};
+
+ use std::fmt;
+ use std::io::{self, BufRead, Write};
+-use std::sync::atomic::{AtomicU64, Ordering};
++use std::sync::atomic::{AtomicU32, Ordering};
+ use std::sync::Arc;
+
+ use jsonrpc_core::{self as jsonrpc, response, version, Id};
+@@ -190,14 +190,14 @@ pub trait Output: Sync + Send + Clone + 'static {
+ /// An output that sends notifications and responses on `stdout`.
+ #[derive(Clone)]
+ pub(super) struct StdioOutput {
+- next_id: Arc<AtomicU64>,
++ next_id: Arc<AtomicU32>,
+ }
+
+ impl StdioOutput {
+ /// Construct a new `stdout` output.
+ crate fn new() -> StdioOutput {
+ StdioOutput {
+- next_id: Arc::new(AtomicU64::new(1)),
++ next_id: Arc::new(AtomicU32::new(1).into()),
+ }
+ }
+ }
+@@ -215,7 +215,7 @@ impl Output for StdioOutput {
+ }
+
+ fn provide_id(&self) -> RequestId {
+- RequestId::Num(self.next_id.fetch_add(1, Ordering::SeqCst))
++ RequestId::Num(self.next_id.fetch_add(1, Ordering::SeqCst).into())
+ }
+ }
+
diff --git a/user/rust/APKBUILD b/user/rust/APKBUILD
new file mode 100644
index 000000000..1a1d55468
--- /dev/null
+++ b/user/rust/APKBUILD
@@ -0,0 +1,351 @@
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Contributor: Shiz <hi@shiz.me>
+# Contributor: Jeizsm <jeizsm@gmail.com>
+# Maintainer: Samuel Holland <samuel@sholland.org>
+pkgname=rust
+pkgver=1.29.1
+_bootcargover=0.30.0
+_bootver=1.29.1
+_llvmver=6
+pkgrel=0
+pkgdesc="The Rust Programming Language"
+url="https://www.rust-lang.org"
+arch="all"
+license="(Apache-2.0 OR MIT) AND (NCSA OR MIT) AND BSD-2-Clause AND BSD-3-Clause"
+depends="$pkgname-stdlib=$pkgver-r$pkgrel gcc musl-dev"
+makedepends="
+ curl-dev
+ libgit2-dev
+ libssh2-dev
+ llvm$_llvmver-dev
+ llvm$_llvmver-test-utils
+ openssl-dev
+ python3
+ zlib-dev
+ "
+subpackages="
+ $pkgname-dbg
+ $pkgname-stdlib
+ $pkgname-analysis
+ $pkgname-doc
+ $pkgname-gdb::noarch
+ $pkgname-lldb::noarch
+ $pkgname-src::noarch
+ cargo
+ cargo-clippy:_cargo_clippy
+ cargo-fmt:_cargo_fmt
+ cargo-doc:_cargo_doc:noarch
+ cargo-bash-completion:_cargo_bashcomp:noarch
+ cargo-zsh-completion:_cargo_zshcomp:noarch
+ rls
+ rustfmt
+ "
+source="https://static.rust-lang.org/dist/rustc-$pkgver-src.tar.xz
+ https://distfiles.adelielinux.org/source/rust/cargo-$_bootcargover-$CBUILD.tar.xz
+ https://distfiles.adelielinux.org/source/rust/rust-std-$_bootver-$CBUILD.tar.xz
+ https://distfiles.adelielinux.org/source/rust/rustc-$_bootver-$CBUILD.tar.xz
+ 0001-Require-static-native-libraries-when-linking-static-.patch
+ 0002-Don-t-pass-CFLAGS-to-the-C-compiler.patch
+ 0003-Fix-LLVM-build.patch
+ 0004-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
+ 0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch
+ 0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
+ 0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
+ 0008-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
+ 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
+ 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-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"
+
+prepare() {
+ cd "$builddir"
+
+ default_prepare
+
+ $srcdir/cargo-$_bootcargover-$CBUILD/install.sh \
+ --destdir=$srcdir/prebuilt \
+ --prefix=/ \
+ --disable-ldconfig
+ $srcdir/rust-std-$_bootver-$CBUILD/install.sh \
+ --destdir=$srcdir/prebuilt \
+ --prefix=/ \
+ --disable-ldconfig
+ $srcdir/rustc-$_bootver-$CBUILD/install.sh \
+ --destdir=$srcdir/prebuilt \
+ --prefix=/ \
+ --disable-ldconfig
+}
+
+build() {
+ cd "$builddir"
+
+ cat > config.toml <<- EOF
+ [build]
+ build = "$CBUILD"
+ host = [ "$CHOST" ]
+ target = [ "$CTARGET" ]
+ cargo = "$srcdir/prebuilt/bin/cargo"
+ rustc = "$srcdir/prebuilt/bin/rustc"
+ submodules = false
+ python = "python3"
+ locked-deps = true
+ vendor = true
+ extended = true
+ tools = [ "analysis", "cargo", "clippy", "rls", "rustfmt", "src" ]
+ [install]
+ prefix = "/usr"
+ [rust]
+ codegen-units = 1
+ debuginfo = true
+ debuginfo-lines = true
+ debuginfo-only-std = false
+ debuginfo-tools = true
+ use-jemalloc = false
+ backtrace = true
+ channel = "stable"
+ rpath = false
+ [target.$CTARGET]
+ cc = "$CTARGET-gcc"
+ cxx = "$CTARGET-g++"
+ linker = "$CTARGET-gcc"
+ llvm-config = "/usr/lib/llvm$_llvmver/bin/llvm-config"
+ crt-static = false
+ EOF
+
+ LIBGIT2_SYS_USE_PKG_CONFIG=1 \
+ LLVM_LINK_SHARED=1 \
+ RUST_BACKTRACE=1 \
+ ./x.py build -j ${JOBS:-2}
+}
+
+check() {
+ cd "$builddir"
+
+ ./x.py test -j ${JOBS:-2} --no-doc --no-fail-fast \
+ src/test/codegen \
+ src/test/codegen-units \
+ src/test/compile-fail \
+ src/test/compile-fail-fulldeps \
+ src/test/incremental \
+ src/test/incremental-fulldeps \
+ src/test/mir-opt \
+ src/test/parse-fail \
+ src/test/pretty \
+ src/test/run-fail \
+ src/test/run-fail/pretty \
+ src/test/run-fail-fulldeps \
+ src/test/run-fail-fulldeps/pretty \
+ src/test/run-make \
+ src/test/run-make-fulldeps \
+ src/test/run-pass \
+ src/test/run-pass/pretty \
+ src/test/run-pass-fulldeps \
+ src/test/run-pass-fulldeps/pretty \
+ src/test/ui \
+ src/test/ui-fulldeps
+}
+
+package() {
+ cd "$builddir"
+
+ DESTDIR="$pkgdir" ./x.py install
+
+ rm "$pkgdir"/usr/lib/*.so \
+ "$pkgdir"/usr/lib/rustlib/components \
+ "$pkgdir"/usr/lib/rustlib/install.log \
+ "$pkgdir"/usr/lib/rustlib/manifest-* \
+ "$pkgdir"/usr/lib/rustlib/rust-installer-version \
+ "$pkgdir"/usr/lib/rustlib/uninstall.sh \
+ "$pkgdir"/usr/share/doc/rust/*.old
+}
+
+stdlib() {
+ pkgdesc="Standard library for Rust"
+ depends="musl-utils"
+
+ _mv "$pkgdir"$_rlibdir/*.so "$subpkgdir"$_rlibdir
+
+ mkdir -p "$subpkgdir"/etc/ld.so.conf.d
+ echo "$_rlibdir" > "$subpkgdir"/etc/ld.so.conf.d/$pkgname.conf
+}
+
+analysis() {
+ pkgdesc="Compiler analysis data for the Rust standard library"
+ depends="$pkgname=$pkgver-r$pkgrel $pkgname-stdlib=$pkgver-r$pkgrel"
+
+ _mv "$pkgdir"${_rlibdir%/*}/analysis "$subpkgdir"${_rlibdir%/*}
+}
+
+gdb() {
+ pkgdesc="GDB pretty printers for Rust"
+ license="Apache-2.0 OR MIT"
+ depends="$pkgname gdb"
+ install_if="$pkgname=$pkgver-r$pkgrel gdb"
+
+ _mv "$pkgdir"/usr/bin/rust-gdb "$subpkgdir"/usr/bin
+ _mv "$pkgdir"/usr/share/rust/gdb_*.py "$subpkgdir"/usr/share/rust || true
+}
+
+lldb() {
+ pkgdesc="LLDB pretty printers for Rust"
+ license="Apache-2.0 OR MIT"
+ depends="$pkgname lldb py3-lldb"
+ install_if="$pkgname=$pkgver-r$pkgrel lldb"
+
+ _mv "$pkgdir"/usr/bin/rust-lldb "$subpkgdir"/usr/bin
+ _mv "$pkgdir"/usr/share/rust/lldb_*.py "$subpkgdir"/usr/share/rust || true
+}
+
+src() {
+ pkgdesc="$pkgdesc (source code)"
+ depends=""
+
+ _mv "$pkgdir"/usr/lib/rustlib/src/rust "$subpkgdir"/usr/src
+ rmdir -p "$pkgdir"/usr/lib/rustlib/src 2>/dev/null || true
+
+ mkdir -p "$subpkgdir"/usr/lib/rustlib/src
+ ln -s ../../../src/rust "$subpkgdir"/usr/lib/rustlib/src/rust
+}
+
+cargo() {
+ pkgdesc="The Rust package manager"
+ depends="$pkgname-stdlib=$pkgver-r$pkgrel $pkgname"
+
+ _mv "$pkgdir"/usr/bin/cargo "$subpkgdir"/usr/bin
+}
+
+_cargo_clippy() {
+ pkgdesc="A collection of Rust lints (cargo plugin)"
+ depends="$pkgname-stdlib=$pkgver-r$pkgrel cargo"
+
+ _mv "$pkgdir"/usr/bin/cargo-clippy \
+ "$pkgdir"/usr/bin/clippy-driver \
+ "$subpkgdir"/usr/bin
+}
+
+_cargo_fmt() {
+ pkgdesc="Format Rust code (cargo plugin)"
+ depends="$pkgname-stdlib=$pkgver-r$pkgrel cargo rustfmt"
+ install_if="cargo=$pkgver-r$pkgrel rustfmt=$pkgver-r$pkgrel"
+
+ _mv "$pkgdir"/usr/bin/cargo-fmt "$subpkgdir"/usr/bin
+}
+
+_cargo_bashcomp() {
+ pkgdesc="Bash completion for cargo"
+ license="Apache-2.0 OR MIT"
+ depends=""
+ install_if="cargo=$pkgver-r$pkgrel bash-completion"
+
+ _mv "$pkgdir"/etc/bash_completion.d/cargo \
+ "$subpkgdir"/usr/share/bash-completion/completions
+ rmdir -p "$pkgdir"/etc/bash_completion.d 2>/dev/null || true
+}
+
+_cargo_zshcomp() {
+ pkgdesc="ZSH completion for cargo"
+ license="Apache-2.0 OR MIT"
+ depends=""
+ install_if="cargo=$pkgver-r$pkgrel zsh"
+
+ _mv "$pkgdir"/usr/share/zsh/site-functions/_cargo \
+ "$subpkgdir"/usr/share/zsh/site-functions/_cargo
+ rmdir -p "$pkgdir"/usr/share/zsh/site-functions 2>/dev/null || true
+}
+
+_cargo_doc() {
+ pkgdesc="The Rust package manager (documentation)"
+ license="Apache-2.0 OR MIT"
+ depends=""
+ install_if="cargo=$pkgver-r$pkgrel docs"
+
+ # XXX: This is hackish!
+ _mv "$pkgdir"/../$pkgname-doc/usr/share/man/man1/cargo* \
+ "$subpkgdir"/usr/share/man/man1
+}
+
+rls() {
+ pkgdesc="The Rust language server"
+ license="Apache-2.0 OR MIT"
+ depends="$pkgname-stdlib=$pkgver-r$pkgrel"
+
+ _mv "$pkgdir"/usr/bin/rls "$subpkgdir"/usr/bin
+}
+
+rustfmt() {
+ pkgdesc="Format Rust code"
+ depends="$pkgname-stdlib=$pkgver-r$pkgrel"
+
+ _mv "$pkgdir"/usr/bin/rustfmt "$subpkgdir"/usr/bin
+}
+
+_mv() {
+ local dest; for dest; do true; done # get last argument
+ mkdir -p "$dest"
+ mv "$@"
+}
+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
+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/schismtracker/APKBUILD b/user/schismtracker/APKBUILD
index 9b0d5452d..837f86389 100644
--- a/user/schismtracker/APKBUILD
+++ b/user/schismtracker/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Horst Burkhardt <horst@adelielinux.org>
# Maintainer: Horst Burkhardt <horst@adelielinux.org>
pkgname=schismtracker
-pkgver=20180209
+pkgver=20180810
pkgrel=0
pkgdesc="A highly portable Impulse Tracker clone"
url="http://schismtracker.org/"
@@ -28,4 +28,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="0bc5b43dd491db8b63d4a0c980a25b48c1e91a113633a034ea3281d664c52b13bcae7a0b8e12d6862b39078b544e0c91721f8a73e3f0536f3b748f548c701140 schismtracker-20180209.tar.gz"
+sha512sums="d131cec7e4749941f0e5806bff14e0782a01f14f8a68605270d09ff40af1d20fffd4c7caf2926c5a63d3e0c0bb1ed24ce4a5e4cccc280ac045a22cfb8544c498 schismtracker-20180810.tar.gz"
diff --git a/user/screen/APKBUILD b/user/screen/APKBUILD
new file mode 100644
index 000000000..e717f570d
--- /dev/null
+++ b/user/screen/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=screen
+pkgver=4.6.2
+pkgrel=0
+pkgdesc="A window manager that multiplexes a physical terminal"
+url="http://ftp.gnu.org/gnu/screen/"
+arch="all"
+license="GPL-3.0+"
+options="!check" # No test suite.
+makedepends="ncurses-dev utmps-dev"
+subpackages="$pkgname-doc"
+source="http://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz
+ utmpx.patch"
+
+build() {
+ cd "$builddir"
+ LIBS="-lutmps -lskarnet" ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --enable-colors256
+ make
+}
+
+package() {
+ cd "$builddir"
+ make -j1 DESTDIR="$pkgdir" install
+
+ # remove suid root
+ find "$pkgdir" -type f -perm -u+s -print0 \
+ | xargs -0 chmod -s
+
+ install -Dm644 etc/etcscreenrc "$pkgdir"/etc/screenrc
+ install -Dm644 etc/screenrc "$pkgdir"/etc/skel/.screenrc
+}
+
+sha512sums="224bd16ad5ae501d1b8bb7d2ba9cc19e6a0743de5a5b320109c2f6bf3b1ca564cc7094ed9211be13733d9d769cde77d13fe236341d448cad0518038ab1e85c99 screen-4.6.2.tar.gz
+82aca3e16c8cd7a3029d3b589ff2dd3471708d6287979ebb5cfdaedbd1f3012c0cd660b131e0cbe142b99786e49ef8b24c63159523d870e95ccf71ec94b82634 utmpx.patch"
diff --git a/user/screen/utmpx.patch b/user/screen/utmpx.patch
new file mode 100644
index 000000000..c8c6f444b
--- /dev/null
+++ b/user/screen/utmpx.patch
@@ -0,0 +1,21 @@
+--- screen-4.6.2/os.h.old 2018-09-27 23:11:11.655480028 -0700
++++ screen-4.6.2/os.h 2018-09-27 23:11:34.745808665 -0700
+@@ -250,17 +250,13 @@
+ #endif
+
+ #if defined(UTMPOK) || defined(BUGGYGETLOGIN)
+-# if defined(SVR4) && !defined(DGUX) && !defined(__hpux) && !defined(linux)
++# if defined(linux)
+ # include <utmpx.h>
+ # define UTMPFILE UTMPX_FILE
+ # define utmp utmpx
+-# define getutent getutxent
+ # define getutid getutxid
+ # define getutline getutxline
+ # define pututline pututxline
+-# define setutent setutxent
+-# define endutent endutxent
+-# define ut_time ut_xtime
+ # else /* SVR4 */
+ # include <utmp.h>
+ # endif /* SVR4 */
diff --git a/user/sdl2_image/APKBUILD b/user/sdl2_image/APKBUILD
index 20395fd56..6028f227e 100644
--- a/user/sdl2_image/APKBUILD
+++ b/user/sdl2_image/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Francesco Colista <fcolista@alpinelinux.org>
# Maintainer:
pkgname=sdl2_image
-pkgver=2.0.2
+pkgver=2.0.3
pkgrel=0
_pkgname=SDL2_image
pkgdesc="Library to load images of various formats as SDL surfaces"
@@ -39,4 +39,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="468f1a5aaee0b6920adb80df21aaaa41bfc5c642b4a00ac60244a90c5e9f27b092b73bcdd2c5520aa1de2759e8b174686b186a51f2d07e7e188ce2cd10519724 SDL2_image-2.0.2.tar.gz"
+sha512sums="869cf3485cc850a91dc1d7f0023f0497bc7bbfd63e721365358b19d19d4da850e52667731d0e5ec80f4a11d7687aa6cfbdd5ceaec956af0e7f5567e87535977a SDL2_image-2.0.3.tar.gz"
diff --git a/user/sdl_mixer/APKBUILD b/user/sdl_mixer/APKBUILD
new file mode 100644
index 000000000..2cdb8238e
--- /dev/null
+++ b/user/sdl_mixer/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: Carlo Landmeter
+# Maintainer:
+pkgname=sdl_mixer
+pkgver=1.2.12
+pkgrel=2
+pkgdesc="A simple multi-channel audio mixer"
+url="https://www.libsdl.org/projects/SDL_mixer/release-1.2.html"
+arch="all"
+options="!check" # No test suite.
+license="Zlib"
+depends=""
+makedepends="flac-dev fluidsynth-dev libvorbis-dev linux-headers sdl-dev"
+subpackages="$pkgname-dev"
+source="https://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-${pkgver}.tar.gz"
+builddir="$srcdir"/SDL_mixer-$pkgver
+
+prepare() {
+ cd "$builddir"
+ update_config_sub
+ sed -e "/CONFIG_FILE_ETC/s/\/etc\/timidity.cfg/\/etc\/timidity++\/timidity.cfg/" \
+ -e "/DEFAULT_PATH/s/\/etc\/timidity/\/etc\/timidity++/" \
+ -e "/DEFAULT_PATH2/s/\/usr\/local\/lib\/timidity/\/usr\/lib\/timidity/" \
+ -i timidity/config.h
+}
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --enable-music-mod
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="230f6c5a73f4bea364f8aa3d75f76694305571dea45f357def742b2b50849b2d896af71e08689981207edc99a9836088bee2d0bd98d92c7f4ca52b12b3d8cf96 SDL_mixer-1.2.12.tar.gz"
diff --git a/user/sdl_net/APKBUILD b/user/sdl_net/APKBUILD
new file mode 100644
index 000000000..6172ddc1e
--- /dev/null
+++ b/user/sdl_net/APKBUILD
@@ -0,0 +1,46 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=sdl_net
+_pkgname=SDL_net
+pkgver=1.2.8
+pkgrel=0
+pkgdesc="Cross-platform networking library"
+url="https://www.libsdl.org/projects/SDL_net/release-1.2.html"
+arch="all"
+license="zlib"
+depends=""
+makedepends="sdl-dev"
+subpackages="$pkgname-dev"
+source="https://www.libsdl.org/projects/$_pkgname/release/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir"/$_pkgname-$pkgver
+
+prepare() {
+ cd "$builddir"
+ default_prepare
+ update_config_sub
+}
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --disable-static
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="2766ca55343127c619958ab3a3ae3052a27a676839f10a158f7dfc071b8db38c2f1fc853e8add32b9fef94ab07eaa986f46a68e264e8087b57c990af30ea9a0b SDL_net-1.2.8.tar.gz"
diff --git a/user/sdl_ttf/APKBUILD b/user/sdl_ttf/APKBUILD
new file mode 100644
index 000000000..96321243a
--- /dev/null
+++ b/user/sdl_ttf/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=sdl_ttf
+_pkgname=SDL_ttf
+pkgver=2.0.11
+pkgrel=0
+pkgdesc="TrueType font library for SDL applications"
+url="https://www.libsdl.org/projects/SDL_ttf/release-1.2.html"
+arch="all"
+license="zlib"
+depends=""
+makedepends="freetype-dev libice-dev sdl-dev"
+subpackages="$pkgname-dev"
+source="https://www.libsdl.org/projects/$_pkgname/release/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir"/$_pkgname-$pkgver
+
+prepare() {
+ cd "$builddir"
+ default_prepare
+ update_config_sub
+}
+
+build() {
+ cd "$builddir"
+ ./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="64e04d1cd77e525e0f2413ad928841e5d3d09d551c030fc577b50777116580e430cb272b2aeb6191dfcc464669cf2f7a5a50d10e7c75637a3b1e8c8fca7fc78b SDL_ttf-2.0.11.tar.gz"
diff --git a/user/shunit2/APKBUILD b/user/shunit2/APKBUILD
new file mode 100644
index 000000000..baa658cf8
--- /dev/null
+++ b/user/shunit2/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: Max Rees <maxcrees@me.com>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=shunit2
+pkgver=2.1.7
+pkgrel=0
+pkgdesc="xUnit-based unit test framework for Bourne shell scripts"
+url="https://github.com/kward/shunit2"
+arch="noarch"
+license="Apache-2.0"
+depends="/bin/sh"
+makedepends=""
+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"
+
+build() {
+ cd "$builddir"
+}
+
+check() {
+ cd "$builddir"
+ ./test_runner
+}
+
+package() {
+ cd "$builddir"
+ install -Dm755 "$pkgname" "$pkgdir/usr/bin/$pkgname"
+ install -Dm644 "doc/$pkgname.txt" "$pkgdir/usr/share/doc/$pkgname/$pkgname.rst"
+}
+
+sha512sums="35453cf2c469eb1bab2fff0624b8037a09d405c377fec0938875a6339749d5934fe246eec5691a121290ae9e4ee5cbf7768b740c5f0010a5345c4e111c50fbbd shunit2-2.1.7.tar.gz
+af2d3c65e9f3c86796b12832c403a869767b70da819f3cf6f69f0e2cf8445e85ec63db20c4b39430e35b7c2105e439abf6bbbd3fc3d880d23ee11d54339c61fd dash-negative-lineno.patch"
diff --git a/user/shunit2/dash-negative-lineno.patch b/user/shunit2/dash-negative-lineno.patch
new file mode 100644
index 000000000..2508be856
--- /dev/null
+++ b/user/shunit2/dash-negative-lineno.patch
@@ -0,0 +1,197 @@
+dash reports a negative $LINENO when using shunit2's macros - this isn't
+shunit2's fault, so allow for it in the test cases
+
+--- shunit2-2.1.7/shunit2_macros_test.sh
++++ shunit2-2.1.7/shunit2_macros_test.sh
+@@ -27,13 +27,13 @@
+ [ -z "${LINENO:-}" ] && startSkipping
+
+ ( ${_ASSERT_EQUALS_} 'x' 'y' >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_ASSERT_EQUALS_ failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
+
+ ( ${_ASSERT_EQUALS_} '"some msg"' 'x' 'y' >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_ASSERT_EQUALS_ w/ msg failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
+@@ -44,13 +44,13 @@
+ [ -z "${LINENO:-}" ] && startSkipping
+
+ ( ${_ASSERT_NOT_EQUALS_} 'x' 'x' >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_ASSERT_NOT_EQUALS_ failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
+
+ ( ${_ASSERT_NOT_EQUALS_} '"some msg"' 'x' 'x' >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_ASSERT_NOT_EQUALS_ w/ msg failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
+@@ -61,13 +61,13 @@
+ [ -z "${LINENO:-}" ] && startSkipping
+
+ ( ${_ASSERT_SAME_} 'x' 'y' >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_ASSERT_SAME_ failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
+
+ ( ${_ASSERT_SAME_} '"some msg"' 'x' 'y' >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_ASSERT_SAME_ w/ msg failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
+@@ -78,13 +78,13 @@
+ [ -z "${LINENO:-}" ] && startSkipping
+
+ ( ${_ASSERT_NOT_SAME_} 'x' 'x' >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_ASSERT_NOT_SAME_ failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
+
+ ( ${_ASSERT_NOT_SAME_} '"some msg"' 'x' 'x' >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_ASSERT_NOT_SAME_ w/ msg failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
+@@ -95,13 +95,13 @@
+ [ -z "${LINENO:-}" ] && startSkipping
+
+ ( ${_ASSERT_NULL_} 'x' >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_ASSERT_NULL_ failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
+
+ ( ${_ASSERT_NULL_} '"some msg"' 'x' >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_ASSERT_NULL_ w/ msg failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
+@@ -113,13 +113,13 @@
+ [ -z "${LINENO:-}" ] && startSkipping
+
+ ( ${_ASSERT_NOT_NULL_} '' >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_ASSERT_NOT_NULL_ failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
+
+ ( ${_ASSERT_NOT_NULL_} '"some msg"' '""' >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_ASSERT_NOT_NULL_ w/ msg failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stdoutF}" "${stderrF}" >&2
+@@ -130,13 +130,13 @@
+ [ -z "${LINENO:-}" ] && startSkipping
+
+ ( ${_ASSERT_TRUE_} "${SHUNIT_FALSE}" >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_ASSERT_TRUE_ failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
+
+ ( ${_ASSERT_TRUE_} '"some msg"' "${SHUNIT_FALSE}" >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_ASSERT_TRUE_ w/ msg failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
+@@ -147,13 +147,13 @@
+ [ -z "${LINENO:-}" ] && startSkipping
+
+ ( ${_ASSERT_FALSE_} "${SHUNIT_TRUE}" >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_ASSERT_FALSE_ failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
+
+ ( ${_ASSERT_FALSE_} '"some msg"' "${SHUNIT_TRUE}" >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_ASSERT_FALSE_ w/ msg failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
+@@ -164,13 +164,13 @@
+ [ -z "${LINENO:-}" ] && startSkipping
+
+ ( ${_FAIL_} >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_FAIL_ failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
+
+ ( ${_FAIL_} '"some msg"' >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_FAIL_ w/ msg failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
+@@ -182,13 +182,13 @@
+ [ -z "${LINENO:-}" ] && startSkipping
+
+ ( ${_FAIL_NOT_EQUALS_} 'x' 'y' >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_FAIL_NOT_EQUALS_ failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
+
+ ( ${_FAIL_NOT_EQUALS_} '"some msg"' 'x' 'y' >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_FAIL_NOT_EQUALS_ w/ msg failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
+@@ -199,13 +199,13 @@
+ [ -z "${LINENO:-}" ] && startSkipping
+
+ ( ${_FAIL_SAME_} 'x' 'x' >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_FAIL_SAME_ failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
+
+ ( ${_FAIL_SAME_} '"some msg"' 'x' 'x' >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_FAIL_SAME_ w/ msg failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
+@@ -216,13 +216,13 @@
+ [ -z "${LINENO:-}" ] && startSkipping
+
+ ( ${_FAIL_NOT_SAME_} 'x' 'y' >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_FAIL_NOT_SAME_ failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
+
+ ( ${_FAIL_NOT_SAME_} '"some msg"' 'x' 'y' >"${stdoutF}" 2>"${stderrF}" )
+- grep '^ASSERT:\[[0-9]*\] *' "${stdoutF}" >/dev/null
++ grep '^ASSERT:\[[0-9-]*\] *' "${stdoutF}" >/dev/null
+ rtrn=$?
+ assertTrue '_FAIL_NOT_SAME_ w/ msg failure' ${rtrn}
+ [ "${rtrn}" -ne "${SHUNIT_TRUE}" ] && cat "${stderrF}" >&2
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/spice/APKBUILD b/user/spice/APKBUILD
index 2492cede3..4ca90937f 100644
--- a/user/spice/APKBUILD
+++ b/user/spice/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=spice
-pkgver=0.14.0
+pkgver=0.14.1
pkgrel=0
pkgdesc="Solution for seamless access to virtual machines"
url="https://www.spice-space.org/"
@@ -12,7 +12,11 @@ makedepends="$depends_dev openssl-dev zlib-dev libjpeg-turbo-dev cyrus-sasl-dev
opus-dev lz4-dev gstreamer-dev gst-plugins-base-dev glib-dev orc-dev
python3 spice-protocol pixman-dev gstreamer-tools"
subpackages="$pkgname-dev"
-source="https://www.spice-space.org/download/releases/spice-$pkgver.tar.bz2"
+source="https://www.spice-space.org/download/releases/spice-server/spice-$pkgver.tar.bz2"
+
+# secfixes:
+# 0.14.1-r0:
+# - CVE-2018-10873
build() {
cd "$builddir"
@@ -37,4 +41,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="84532146aa628ca6ca459a82afb89d6391892e063668fd4a68023c92cee7ca868b6c82e31dd9886819b76ea745ebdae0d0030e1f608d8f58f51c00f0b09bae1f spice-0.14.0.tar.bz2"
+sha512sums="2c0b4fbcb68c76bc0404a807f28c9645a30c6b88e81d2bc574d63b036778a299cebc0ae12aa72f2e1496f66cbf414325125948d440541a40e1b9e53b8956542d spice-0.14.1.tar.bz2"
diff --git a/user/sshfs/APKBUILD b/user/sshfs/APKBUILD
new file mode 100644
index 000000000..32fcfbd7c
--- /dev/null
+++ b/user/sshfs/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=sshfs
+pkgver=3.5.0
+pkgrel=0
+pkgdesc="FUSE client based on the SSH File Transfer Protocol"
+url="https://github.com/libfuse/sshfs"
+arch="all"
+options="!check" # Requires fuse kernel module to be loaded and local ssh server
+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 cmd:which"
+subpackages="$pkgname-doc"
+source="https://github.com/libfuse/$pkgname/releases/download/$pkgname-$pkgver/$pkgname-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ # NOTE: --prefix=/ is intentional. If --prefix=/usr, mount(8) will not be
+ # able to find mount.fuse.sshfs or mount.sshfs - it only looks in /sbin, not
+ # /usr/sbin. The omission of the absolute slash in --mandir=usr/share/man is
+ # also intentional - otherwise ninja tries to install the manpage to
+ # "/sr/share/man/man1" (???)
+
+ meson \
+ --prefix=/ \
+ --sysconfdir=/etc \
+ --mandir=usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ . output
+ ninja -C output
+}
+
+check() {
+ cd "$builddir"/output
+ python3 -m pytest test/
+}
+
+package() {
+ cd "$builddir"
+ DESTDIR="$pkgdir" ninja -C output install
+}
+
+sha512sums="6ba7be4bcad401d99fb864f105a6c8fc8b7c832d5b25f18cba27eee422fe65ee7bda8982466d624792a1fb21528c0cb078a59db48e93da4880a36aad7b506b0c sshfs-3.5.0.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/stow/APKBUILD b/user/stow/APKBUILD
new file mode 100644
index 000000000..dcb81dc09
--- /dev/null
+++ b/user/stow/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Stefan Wagner <stw@bit-strickerei.de>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=stow
+pkgver=2.2.2
+pkgrel=0
+pkgdesc="Manage installation of multiple softwares in the same directory tree"
+url="https://www.gnu.org/software/stow/"
+arch="noarch"
+license="GPL-2.0-only"
+depends="perl"
+makedepends="perl-test-output"
+checkdepends="perl-io-stringy"
+subpackages="$pkgname-doc"
+source="https://ftp.gnu.org/pub/gnu/$pkgname/$pkgname-$pkgver.tar.gz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --with-pmdir=/usr/lib/perl5/vendor_perl
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ rm "$pkgdir"/usr/share/doc/stow/manual.pdf
+ rm "$pkgdir"/usr/share/doc/stow/version.texi
+}
+
+sha512sums="8a3e5da6b5cb4c1ee1b512bae5a9859f83659d5de05f7a9af1dd09df2a32f6b8c6d43b79736db91232c43621d542041d4ef92eb088925796adad0676f200a9b5 stow-2.2.2.tar.gz"
diff --git a/user/strongswan/0205-ike-Adhere-to-IKE_SA-limit-when-checking-out-by-conf.patch b/user/strongswan/0205-ike-Adhere-to-IKE_SA-limit-when-checking-out-by-conf.patch
new file mode 100644
index 000000000..cc14dab02
--- /dev/null
+++ b/user/strongswan/0205-ike-Adhere-to-IKE_SA-limit-when-checking-out-by-conf.patch
@@ -0,0 +1,104 @@
+From 5a5b26a7dce4c112f62882cfe16dc37659d766e8 Mon Sep 17 00:00:00 2001
+From: Tobias Brunner <tobias@strongswan.org>
+Date: Fri, 17 Jul 2015 11:53:58 +0200
+Subject: [PATCH 1/5] ike: Adhere to IKE_SA limit when checking out by config
+
+This prevents new SAs from getting created if we hit the global IKE_SA
+limit (we still allow checkout_new(), which is used for rekeying).
+---
+ src/libcharon/sa/ike_sa_manager.c | 71 ++++++++++++++++++++-------------------
+ 1 file changed, 37 insertions(+), 34 deletions(-)
+
+diff --git a/src/libcharon/sa/ike_sa_manager.c b/src/libcharon/sa/ike_sa_manager.c
+index ce44207..37d49da 100644
+--- a/src/libcharon/sa/ike_sa_manager.c
++++ b/src/libcharon/sa/ike_sa_manager.c
+@@ -1419,48 +1419,51 @@ METHOD(ike_sa_manager_t, checkout_by_config, ike_sa_t*,
+
+ DBG2(DBG_MGR, "checkout IKE_SA by config");
+
+- if (!this->reuse_ikesa && peer_cfg->get_ike_version(peer_cfg) != IKEV1)
+- { /* IKE_SA reuse disabled by config (not possible for IKEv1) */
+- ike_sa = checkout_new(this, peer_cfg->get_ike_version(peer_cfg), TRUE);
+- charon->bus->set_sa(charon->bus, ike_sa);
+- goto out;
+- }
+-
+- enumerator = create_table_enumerator(this);
+- while (enumerator->enumerate(enumerator, &entry, &segment))
++ if (this->reuse_ikesa || peer_cfg->get_ike_version(peer_cfg) == IKEV1)
+ {
+- if (!wait_for_entry(this, entry, segment))
++ enumerator = create_table_enumerator(this);
++ while (enumerator->enumerate(enumerator, &entry, &segment))
+ {
+- continue;
+- }
+- if (entry->ike_sa->get_state(entry->ike_sa) == IKE_DELETING ||
+- entry->ike_sa->get_state(entry->ike_sa) == IKE_REKEYED)
+- { /* skip IKE_SAs which are not usable, wake other waiting threads */
+- entry->condvar->signal(entry->condvar);
+- continue;
+- }
+-
+- current_peer = entry->ike_sa->get_peer_cfg(entry->ike_sa);
+- if (current_peer && current_peer->equals(current_peer, peer_cfg))
+- {
+- current_ike = current_peer->get_ike_cfg(current_peer);
+- if (current_ike->equals(current_ike, peer_cfg->get_ike_cfg(peer_cfg)))
++ if (!wait_for_entry(this, entry, segment))
+ {
+- entry->checked_out = thread_current();
+- ike_sa = entry->ike_sa;
+- DBG2(DBG_MGR, "found existing IKE_SA %u with a '%s' config",
+- ike_sa->get_unique_id(ike_sa),
+- current_peer->get_name(current_peer));
+- break;
++ continue;
+ }
++ if (entry->ike_sa->get_state(entry->ike_sa) == IKE_DELETING ||
++ entry->ike_sa->get_state(entry->ike_sa) == IKE_REKEYED)
++ { /* skip IKE_SAs which are not usable, wake other waiting threads */
++ entry->condvar->signal(entry->condvar);
++ continue;
++ }
++ current_peer = entry->ike_sa->get_peer_cfg(entry->ike_sa);
++ if (current_peer && current_peer->equals(current_peer, peer_cfg))
++ {
++ current_ike = current_peer->get_ike_cfg(current_peer);
++ if (current_ike->equals(current_ike,
++ peer_cfg->get_ike_cfg(peer_cfg)))
++ {
++ entry->checked_out = thread_current();
++ ike_sa = entry->ike_sa;
++ DBG2(DBG_MGR, "found existing IKE_SA %u with a '%s' config",
++ ike_sa->get_unique_id(ike_sa),
++ current_peer->get_name(current_peer));
++ break;
++ }
++ }
++ /* other threads might be waiting for this entry */
++ entry->condvar->signal(entry->condvar);
+ }
+- /* other threads might be waiting for this entry */
+- entry->condvar->signal(entry->condvar);
++ enumerator->destroy(enumerator);
+ }
+- enumerator->destroy(enumerator);
+
+ if (!ike_sa)
+- { /* no IKE_SA using such a config, hand out a new */
++ { /* no IKE_SA using such a config, or reuse disabled, hand out a new */
++ if (this->ikesa_limit &&
++ this->public.get_count(&this->public) >= this->ikesa_limit)
++ {
++ DBG1(DBG_MGR, "IKE_SA creation failed, hitting IKE_SA limit (%u)",
++ this->ikesa_limit);
++ return NULL;
++ }
+ ike_sa = checkout_new(this, peer_cfg->get_ike_version(peer_cfg), TRUE);
+ }
+ charon->bus->set_sa(charon->bus, ike_sa);
+--
+2.5.0
+
diff --git a/user/strongswan/1001-charon-add-optional-source-and-remote-overrides-for-.patch b/user/strongswan/1001-charon-add-optional-source-and-remote-overrides-for-.patch
new file mode 100644
index 000000000..d9aea3c4d
--- /dev/null
+++ b/user/strongswan/1001-charon-add-optional-source-and-remote-overrides-for-.patch
@@ -0,0 +1,597 @@
+From 460e0f52d88433071b27603e47995517514ef8b9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
+Date: Mon, 21 Sep 2015 13:41:58 +0300
+Subject: [PATCH] charon: add optional source and remote overrides for initiate
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This introduces support for specifying optional IKE SA specific
+source and remote address for child sa initiation. This allows
+to initiate wildcard connection for known address via vici.
+
+In addition this allows impler implementation of trap-any patches
+and is a prerequisite for dmvpn support.
+
+Signed-off-by: Timo Teräs <timo.teras@iki.fi>
+---
+ src/charon-cmd/cmd/cmd_connection.c | 2 +-
+ src/charon-nm/nm/nm_service.c | 2 +-
+ src/libcharon/control/controller.c | 43 +++++++++++++++-
+ src/libcharon/control/controller.h | 3 ++
+ src/libcharon/plugins/stroke/stroke_control.c | 5 +-
+ src/libcharon/plugins/vici/vici_config.c | 2 +-
+ src/libcharon/plugins/vici/vici_control.c | 63 ++++++++++++++++++++----
+ src/libcharon/processing/jobs/start_action_job.c | 2 +-
+ src/libcharon/sa/ike_sa_manager.c | 51 ++++++++++++++++++-
+ src/libcharon/sa/ike_sa_manager.h | 8 ++-
+ src/libcharon/sa/trap_manager.c | 45 +++++++----------
+ src/swanctl/commands/initiate.c | 40 ++++++++++++++-
+ 12 files changed, 218 insertions(+), 48 deletions(-)
+
+diff --git a/src/charon-cmd/cmd/cmd_connection.c b/src/charon-cmd/cmd/cmd_connection.c
+index 71df92f7e..13b31de8a 100644
+--- a/src/charon-cmd/cmd/cmd_connection.c
++++ b/src/charon-cmd/cmd/cmd_connection.c
+@@ -436,7 +436,7 @@ static job_requeue_t initiate(private_cmd_connection_t *this)
+ child_cfg = create_child_cfg(this, peer_cfg);
+
+ if (charon->controller->initiate(charon->controller, peer_cfg, child_cfg,
+- controller_cb_empty, NULL, 0, FALSE) != SUCCESS)
++ NULL, NULL, controller_cb_empty, NULL, 0, FALSE) != SUCCESS)
+ {
+ terminate(pid);
+ }
+diff --git a/src/charon-nm/nm/nm_service.c b/src/charon-nm/nm/nm_service.c
+index 571c0edba..e7922cf4d 100644
+--- a/src/charon-nm/nm/nm_service.c
++++ b/src/charon-nm/nm/nm_service.c
+@@ 6220,7 +622,7 @@ static gboolean connect_(NMVPNPlugin *plugin, NMConnection *connection,
+ * Prepare IKE_SA
+ */
+ ike_sa = charon->ike_sa_manager->checkout_by_config(charon->ike_sa_manager,
+- peer_cfg);
++ peer_cfg, NULL, NULL);
+ if (!ike_sa)
+ {
+ peer_cfg->destroy(peer_cfg);
+diff --git a/src/libcharon/control/controller.c b/src/libcharon/control/controller.c
+index 8e7816b39..7d7b3bcbc 100644
+--- a/src/libcharon/control/controller.c
++++ b/src/libcharon/control/controller.c
+@@ -15,6 +15,28 @@
+ * for more details.
+ */
+
++/*
++ * Copyright (C) 2014 Timo Teräs <timo.teras@iki.fi>
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a copy
++ * of this software and associated documentation files (the "Software"), to deal
++ * in the Software without restriction, including without limitation the rights
++ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++ * copies of the Software, and to permit persons to whom the Software is
++ * furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
++ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
++
+ #include "controller.h"
+
+ #include <sys/types.h>
+@@ -103,6 +125,16 @@ struct interface_listener_t {
+ ike_sa_t *ike_sa;
+
+ /**
++ * Our host hint.
++ */
++ host_t *my_host;
++
++ /**
++ * Other host hint.
++ */
++ host_t *other_host;
++
++ /**
+ * unique ID, used for various methods
+ */
+ uint32_t id;
+@@ -409,9 +441,14 @@ METHOD(job_t, initiate_execute, job_requeue_t,
+ ike_sa_t *ike_sa;
+ interface_listener_t *listener = &job->listener;
+ peer_cfg_t *peer_cfg = listener->peer_cfg;
++ host_t *my_host = listener->my_host;
++ host_t *other_host = listener->other_host;
+
+ ike_sa = charon->ike_sa_manager->checkout_by_config(charon->ike_sa_manager,
+- peer_cfg);
++ peer_cfg, my_host, other_host);
++ DESTROY_IF(my_host);
++ DESTROY_IF(other_host);
++
+ if (!ike_sa)
+ {
+ listener->child_cfg->destroy(listener->child_cfg);
+@@ -420,6 +457,7 @@ METHOD(job_t, initiate_execute, job_requeue_t,
+ listener_done(listener);
+ return JOB_REQUEUE_NONE;
+ }
++
+ listener->lock->lock(listener->lock);
+ listener->ike_sa = ike_sa;
+ listener->lock->unlock(listener->lock);
+@@ -492,6 +530,7 @@ METHOD(job_t, initiate_execute, job_requeue_t,
+
+ METHOD(controller_t, initiate, status_t,
+ private_controller_t *this, peer_cfg_t *peer_cfg, child_cfg_t *child_cfg,
++ host_t *my_host, host_t *other_host,
+ controller_cb_t callback, void *param, u_int timeout, bool limits)
+ {
+ interface_job_t *job;
+@@ -514,6 +553,8 @@ METHOD(controller_t, initiate, status_t,
+ .status = FAILED,
+ .child_cfg = child_cfg,
+ .peer_cfg = peer_cfg,
++ .my_host = my_host ? my_host->clone(my_host) : NULL,
++ .other_host = other_host ? other_host->clone(other_host) : NULL,
+ .lock = spinlock_create(),
+ .limits = limits,
+ },
+diff --git a/src/libcharon/control/controller.h b/src/libcharon/control/controller.h
+index 9524f53b9..7c51ba4ca 100644
+--- a/src/libcharon/control/controller.h
++++ b/src/libcharon/control/controller.h
+@@ -79,6 +79,8 @@ struct controller_t {
+ *
+ * @param peer_cfg peer_cfg to use for IKE_SA setup
+ * @param child_cfg child_cfg to set up CHILD_SA from
++ * @param my_host optional address hint for source
++ * @param other_host optional address hint for destination
+ * @param cb logging callback
+ * @param param parameter to include in each call of cb
+ * @param timeout timeout in ms to wait for callbacks, 0 to disable
+@@ -92,6 +94,7 @@ struct controller_t {
+ */
+ status_t (*initiate)(controller_t *this,
+ peer_cfg_t *peer_cfg, child_cfg_t *child_cfg,
++ host_t *my_host, host_t *other_host,
+ controller_cb_t callback, void *param, u_int timeout,
+ bool limits);
+
+diff --git a/src/libcharon/plugins/stroke/stroke_control.c b/src/libcharon/plugins/stroke/stroke_control.c
+index ee8306772..0736a6427 100644
+--- a/src/libcharon/plugins/stroke/stroke_control.c
++++ b/src/libcharon/plugins/stroke/stroke_control.c
+@@ -108,7 +108,7 @@ static void charon_initiate(private_stroke_control_t *this, peer_cfg_t *peer_cfg
+ if (msg->output_verbosity < 0)
+ {
+ charon->controller->initiate(charon->controller, peer_cfg, child_cfg,
+- NULL, NULL, 0, FALSE);
++ NULL, NULL, NULL, NULL, 0, FALSE);
+ }
+ else
+ {
+@@ -116,7 +116,8 @@ static void charon_initiate(private_stroke_control_t *this, peer_cfg_t *peer_cfg
+ status_t status;
+
+ status = charon->controller->initiate(charon->controller,
+- peer_cfg, child_cfg, (controller_cb_t)stroke_log,
++ peer_cfg, child_cfg, NULL, NULL,
++ (controller_cb_t)stroke_log,
+ &info, this->timeout, FALSE);
+ switch (status)
+ {
+diff --git a/src/libcharon/plugins/vici/vici_config.c b/src/libcharon/plugins/vici/vici_config.c
+index 12497ec5e..ba954e5cb 100644
+--- a/src/libcharon/plugins/vici/vici_config.c
++++ b/src/libcharon/plugins/vici/vici_config.c
+@@ -1978,7 +1978,7 @@ static void run_start_action(private_vici_config_t *this, peer_cfg_t *peer_cfg,
+ DBG1(DBG_CFG, "initiating '%s'", child_cfg->get_name(child_cfg));
+ charon->controller->initiate(charon->controller,
+ peer_cfg->get_ref(peer_cfg), child_cfg->get_ref(child_cfg),
+- NULL, NULL, 0, FALSE);
++ NULL, NULL, NULL, NULL, 0, FALSE);
+ break;
+ case ACTION_ROUTE:
+ DBG1(DBG_CFG, "installing '%s'", child_cfg->get_name(child_cfg));
+diff --git a/src/libcharon/plugins/vici/vici_control.c b/src/libcharon/plugins/vici/vici_control.c
+index afee649f7..94bb2eecb 100644
+--- a/src/libcharon/plugins/vici/vici_control.c
++++ b/src/libcharon/plugins/vici/vici_control.c
+@@ -16,6 +16,28 @@
+ * for more details.
+ */
+
++/*
++ * Copyright (C) 2014 Timo Teräs <timo.teras@iki.fi>
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a copy
++ * of this software and associated documentation files (the "Software"), to deal
++ * in the Software without restriction, including without limitation the rights
++ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++ * copies of the Software, and to permit persons to whom the Software is
++ * furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
++ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
++
+ #include "vici_control.h"
+ #include "vici_builder.h"
+
+@@ -169,9 +191,11 @@ static child_cfg_t* find_child_cfg(char *name, char *pname, peer_cfg_t **out)
+ CALLBACK(initiate, vici_message_t*,
+ private_vici_control_t *this, char *name, u_int id, vici_message_t *request)
+ {
++ vici_message_t* msg;
+ child_cfg_t *child_cfg = NULL;
+ peer_cfg_t *peer_cfg;
+- char *child, *ike;
++ host_t *my_host = NULL, *other_host = NULL;
++ char *child, *ike, *my_host_str, *other_host_str;
+ int timeout;
+ bool limits;
+ controller_cb_t log_cb = NULL;
+@@ -185,6 +209,8 @@ CALLBACK(initiate, vici_message_t*,
+ timeout = request->get_int(request, 0, "timeout");
+ limits = request->get_bool(request, FALSE, "init-limits");
+ log.level = request->get_int(request, 1, "loglevel");
++ my_host_str = request->get_str(request, NULL, "my-host");
++ other_host_str = request->get_str(request, NULL, "other-host");
+
+ if (!child)
+ {
+@@ -195,28 +221,47 @@ CALLBACK(initiate, vici_message_t*,
+ log_cb = (controller_cb_t)log_vici;
+ }
+
+- DBG1(DBG_CFG, "vici initiate '%s'", child);
++ if (my_host_str)
++ {
++ my_host = host_create_from_string(my_host_str, 0);
++ }
++ if (other_host_str)
++ {
++ other_host = host_create_from_string(other_host_str, 0);
++ }
++
++ DBG1(DBG_CFG, "vici initiate '%s', me %H, other %H, limits %d", child, my_host, other_host, limits);
+
+ child_cfg = find_child_cfg(child, ike, &peer_cfg);
+ if (!child_cfg)
+ {
+- return send_reply(this, "CHILD_SA config '%s' not found", child);
++ msg = send_reply(this, "CHILD_SA config '%s' not found", child);
++ goto ret;
+ }
+- switch (charon->controller->initiate(charon->controller, peer_cfg,
+- child_cfg, log_cb, &log, timeout, limits))
++ switch (charon->controller->initiate(charon->controller,
++ peer_cfg, child_cfg, my_host, other_host,
++ log_cb, &log, timeout, limits))
+ {
+ case SUCCESS:
+- return send_reply(this, NULL);
++ msg = send_reply(this, NULL);
++ break;
+ case OUT_OF_RES:
+- return send_reply(this, "CHILD_SA '%s' not established after %dms",
++ msg = send_reply(this, "CHILD_SA '%s' not established after %dms",
+ child, timeout);
++ break;
+ case INVALID_STATE:
+- return send_reply(this, "establishing CHILD_SA '%s' not possible "
++ msg = send_reply(this, "establishing CHILD_SA '%s' not possible "
+ "at the moment due to limits", child);
++ break;
+ case FAILED:
+ default:
+- return send_reply(this, "establishing CHILD_SA '%s' failed", child);
++ msg = send_reply(this, "establishing CHILD_SA '%s' failed", child);
++ break;
+ }
++ret:
++ if (my_host) my_host->destroy(my_host);
++ if (other_host) other_host->destroy(other_host);
++ return msg;
+ }
+
+ CALLBACK(terminate, vici_message_t*,
+diff --git a/src/libcharon/processing/jobs/start_action_job.c b/src/libcharon/processing/jobs/start_action_job.c
+index 654ec6abe..3d5a48cb8 100644
+--- a/src/libcharon/processing/jobs/start_action_job.c
++++ b/src/libcharon/processing/jobs/start_action_job.c
+@@ -61,7 +61,7 @@ METHOD(job_t, execute, job_requeue_t,
+ charon->controller->initiate(charon->controller,
+ peer_cfg->get_ref(peer_cfg),
+ child_cfg->get_ref(child_cfg),
+- NULL, NULL, 0, FALSE);
++ NULL, NULL, NULL, NULL, 0, FALSE);
+ break;
+ case ACTION_ROUTE:
+ DBG1(DBG_JOB, "start action: route '%s'", name);
+diff --git a/src/libcharon/sa/ike_sa_manager.c b/src/libcharon/sa/ike_sa_manager.c
+index 3ee233c1f..def2a6f1b 100644
+--- a/src/libcharon/sa/ike_sa_manager.c
++++ b/src/libcharon/sa/ike_sa_manager.c
+@@ -17,6 +17,28 @@
+ * for more details.
+ */
+
++/*
++ * Copyright (C) 2014 Timo Teräs <timo.teras@iki.fi>
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a copy
++ * of this software and associated documentation files (the "Software"), to deal
++ * in the Software without restriction, including without limitation the rights
++ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++ * copies of the Software, and to permit persons to whom the Software is
++ * furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
++ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
++
+ #include <string.h>
+ #include <inttypes.h>
+
+@@ -1408,7 +1430,8 @@ out:
+ }
+
+ METHOD(ike_sa_manager_t, checkout_by_config, ike_sa_t*,
+- private_ike_sa_manager_t *this, peer_cfg_t *peer_cfg)
++ private_ike_sa_manager_t *this, peer_cfg_t *peer_cfg,
++ host_t *my_host, host_t *other_host)
+ {
+ enumerator_t *enumerator;
+ entry_t *entry;
+@@ -1417,7 +1440,17 @@ METHOD(ike_sa_manager_t, checkout_by_config, ike_sa_t*,
+ ike_cfg_t *current_ike;
+ u_int segment;
+
+- DBG2(DBG_MGR, "checkout IKE_SA by config");
++ if (my_host && my_host->get_port(my_host) == 0)
++ {
++ my_host->set_port(my_host, IKEV2_UDP_PORT);
++ }
++ if (other_host && other_host->get_port(other_host) == 0)
++ {
++ other_host->set_port(other_host, IKEV2_UDP_PORT);
++ }
++
++ DBG2(DBG_MGR, "checkout IKE_SA by config '%s', me %H, other %H",
++ peer_cfg->get_name(peer_cfg), my_host, other_host);
+
+ if (this->reuse_ikesa || peer_cfg->get_ike_version(peer_cfg) == IKEV1)
+ {
+@@ -1434,6 +1457,16 @@ METHOD(ike_sa_manager_t, checkout_by_config, ike_sa_t*,
+ entry->condvar->signal(entry->condvar);
+ continue;
+ }
++
++ if (my_host && !my_host->ip_equals(my_host, entry->ike_sa->get_my_host(entry->ike_sa)))
++ {
++ continue;
++ }
++ if (other_host && !other_host->ip_equals(other_host, entry->ike_sa->get_other_host(entry->ike_sa)))
++ {
++ continue;
++ }
++
+ current_peer = entry->ike_sa->get_peer_cfg(entry->ike_sa);
+ if (current_peer && current_peer->equals(current_peer, peer_cfg))
+ {
+@@ -1465,6 +1508,10 @@ METHOD(ike_sa_manager_t, checkout_by_config, ike_sa_t*,
+ return NULL;
+ }
+ ike_sa = checkout_new(this, peer_cfg->get_ike_version(peer_cfg), TRUE);
++ if (my_host || other_host)
++ {
++ ike_sa->update_hosts(ike_sa, my_host, other_host, TRUE);
++ }
+ }
+ charon->bus->set_sa(charon->bus, ike_sa);
+
+diff --git a/src/libcharon/sa/ike_sa_manager.h b/src/libcharon/sa/ike_sa_manager.h
+index 4298c54e2..47d6e6a37 100644
+--- a/src/libcharon/sa/ike_sa_manager.h
++++ b/src/libcharon/sa/ike_sa_manager.h
+@@ -93,7 +93,8 @@ struct ike_sa_manager_t {
+ ike_sa_t* (*checkout_by_message) (ike_sa_manager_t* this, message_t *message);
+
+ /**
+- * Checkout an IKE_SA for initiation by a peer_config.
++ * Checkout an IKE_SA for initiation by a peer_config and optional
++ * source and remote host addresses.
+ *
+ * To initiate, a CHILD_SA may be established within an existing IKE_SA.
+ * This call checks for an existing IKE_SA by comparing the configuration.
+@@ -103,10 +104,13 @@ struct ike_sa_manager_t {
+ * the found IKE_SA is in the DELETING state.
+ *
+ * @param peer_cfg configuration used to find an existing IKE_SA
++ * @param my_host source host address for wildcard peer_cfg
++ * @param other_host remote host address for wildcard peer_cfg
+ * @return checked out/created IKE_SA
+ */
+ ike_sa_t* (*checkout_by_config) (ike_sa_manager_t* this,
+- peer_cfg_t *peer_cfg);
++ peer_cfg_t *peer_cfg,
++ host_t *my_host, host_t *other_host);
+
+ /**
+ * Check for duplicates of the given IKE_SA.
+diff --git a/src/libcharon/sa/trap_manager.c b/src/libcharon/sa/trap_manager.c
+index 40a0682f2..ea79d95ae 100644
+--- a/src/libcharon/sa/trap_manager.c
++++ b/src/libcharon/sa/trap_manager.c
+@@ -421,7 +421,7 @@ METHOD(trap_manager_t, acquire, void,
+ peer_cfg_t *peer;
+ child_cfg_t *child;
+ ike_sa_t *ike_sa;
+- host_t *host;
++ host_t *host, *my_host = NULL, *other_host = NULL;
+ bool wildcard, ignore = FALSE;
+
+ this->lock->read_lock(this->lock);
+@@ -497,36 +497,27 @@ METHOD(trap_manager_t, acquire, void,
+ this->lock->unlock(this->lock);
+
+ if (wildcard)
+- { /* the peer config would match IKE_SAs with other peers */
+- ike_sa = charon->ike_sa_manager->checkout_new(charon->ike_sa_manager,
+- peer->get_ike_version(peer), TRUE);
+- if (ike_sa)
+- {
+- ike_cfg_t *ike_cfg;
+- uint16_t port;
+- uint8_t mask;
+-
+- ike_sa->set_peer_cfg(ike_sa, peer);
+- ike_cfg = ike_sa->get_ike_cfg(ike_sa);
++ {
++ ike_cfg_t *ike_cfg;
++ uint16_t port;
++ uint8_t mask;
+
+- port = ike_cfg->get_other_port(ike_cfg);
+- dst->to_subnet(dst, &host, &mask);
+- host->set_port(host, port);
+- ike_sa->set_other_host(ike_sa, host);
++ ike_cfg = peer->get_ike_cfg(peer);
+
+- port = ike_cfg->get_my_port(ike_cfg);
+- src->to_subnet(src, &host, &mask);
+- host->set_port(host, port);
+- ike_sa->set_my_host(ike_sa, host);
++ port = ike_cfg->get_other_port(ike_cfg);
++ dst->to_subnet(dst, &other_host, &mask);
++ other_host->set_port(other_host, port);
+
+- charon->bus->set_sa(charon->bus, ike_sa);
+- }
+- }
+- else
+- {
+- ike_sa = charon->ike_sa_manager->checkout_by_config(
+- charon->ike_sa_manager, peer);
++ port = ike_cfg->get_my_port(ike_cfg);
++ src->to_subnet(src, &my_host, &mask);
++ my_host->set_port(my_host, port);
+ }
++ ike_sa = charon->ike_sa_manager->checkout_by_config(
++ charon->ike_sa_manager, peer,
++ my_host, other_host);
++ DESTROY_IF(my_host);
++ DESTROY_IF(other_host);
++
+ if (ike_sa)
+ {
+ if (ike_sa->get_peer_cfg(ike_sa) == NULL)
+diff --git a/src/swanctl/commands/initiate.c b/src/swanctl/commands/initiate.c
+index 8e452a6f6..b27bb8194 100644
+--- a/src/swanctl/commands/initiate.c
++++ b/src/swanctl/commands/initiate.c
+@@ -13,6 +13,28 @@
+ * for more details.
+ */
+
++/*
++ * Copyright (C) 2014 Timo Teräs <timo.teras@iki.fi>
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a copy
++ * of this software and associated documentation files (the "Software"), to deal
++ * in the Software without restriction, including without limitation the rights
++ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++ * copies of the Software, and to permit persons to whom the Software is
++ * furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
++ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
++
+ #include "command.h"
+
+ #include <errno.h>
+@@ -37,7 +59,7 @@ static int initiate(vici_conn_t *conn)
+ vici_req_t *req;
+ vici_res_t *res;
+ command_format_options_t format = COMMAND_FORMAT_NONE;
+- char *arg, *child = NULL, *ike = NULL;
++ char *arg, *child = NULL, *ike = NULL, *my_host = NULL, *other_host = NULL;
+ int ret = 0, timeout = 0, level = 1;
+
+ while (TRUE)
+@@ -64,6 +86,12 @@ static int initiate(vici_conn_t *conn)
+ case 'l':
+ level = atoi(arg);
+ continue;
++ case 'S':
++ my_host = arg;
++ continue;
++ case 'R':
++ other_host = arg;
++ continue;
+ case EOF:
+ break;
+ default:
+@@ -87,6 +115,14 @@ static int initiate(vici_conn_t *conn)
+ {
+ vici_add_key_valuef(req, "ike", "%s", ike);
+ }
++ if (my_host)
++ {
++ vici_add_key_valuef(req, "my-host", "%s", my_host);
++ }
++ if (other_host)
++ {
++ vici_add_key_valuef(req, "other-host", "%s", other_host);
++ }
+ if (timeout)
+ {
+ vici_add_key_valuef(req, "timeout", "%d", timeout * 1000);
+@@ -133,6 +169,8 @@ static void __attribute__ ((constructor))reg()
+ {"help", 'h', 0, "show usage information"},
+ {"child", 'c', 1, "initate a CHILD_SA configuration"},
+ {"ike", 'i', 1, "name of the connection to which the child belongs"},
++ {"source", 'S', 1, "override source address"},
++ {"remote", 'R', 1, "override remote address"},
+ {"timeout", 't', 1, "timeout in seconds before detaching"},
+ {"raw", 'r', 0, "dump raw response message"},
+ {"pretty", 'P', 0, "dump raw response message in pretty print"},
+--
+2.12.1
+
diff --git a/user/strongswan/1002-vici-send-certificates-for-ike-sa-events.patch b/user/strongswan/1002-vici-send-certificates-for-ike-sa-events.patch
new file mode 100644
index 000000000..94814e13d
--- /dev/null
+++ b/user/strongswan/1002-vici-send-certificates-for-ike-sa-events.patch
@@ -0,0 +1,131 @@
+From 61556ac61b9d7c564dfe13d5cf549a53f889ae36 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
+Date: Mon, 21 Sep 2015 13:42:05 +0300
+Subject: [PATCH] vici: send certificates for ike-sa events
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Timo Teräs <timo.teras@iki.fi>
+---
+ src/libcharon/plugins/vici/vici_query.c | 48 ++++++++++++++++++++++++++++-----
+ 1 file changed, 41 insertions(+), 7 deletions(-)
+
+diff --git a/src/libcharon/plugins/vici/vici_query.c b/src/libcharon/plugins/vici/vici_query.c
+index c0f4e2de9..309a11c03 100644
+--- a/src/libcharon/plugins/vici/vici_query.c
++++ b/src/libcharon/plugins/vici/vici_query.c
+@@ -337,7 +337,7 @@ static void list_vips(private_vici_query_t *this, vici_builder_t *b,
+ * List details of an IKE_SA
+ */
+ static void list_ike(private_vici_query_t *this, vici_builder_t *b,
+- ike_sa_t *ike_sa, time_t now)
++ ike_sa_t *ike_sa, time_t now, bool add_certs)
+ {
+ time_t t;
+ ike_sa_id_t *id;
+@@ -345,6 +345,8 @@ static void list_ike(private_vici_query_t *this, vici_builder_t *b,
+ proposal_t *proposal;
+ uint16_t alg, ks;
+ host_t *host;
++ auth_cfg_t *auth_cfg;
++ enumerator_t *enumerator;
+
+ b->add_kv(b, "uniqueid", "%u", ike_sa->get_unique_id(ike_sa));
+ b->add_kv(b, "version", "%u", ike_sa->get_version(ike_sa));
+@@ -354,11 +356,43 @@ static void list_ike(private_vici_query_t *this, vici_builder_t *b,
+ b->add_kv(b, "local-host", "%H", host);
+ b->add_kv(b, "local-port", "%d", host->get_port(host));
+ b->add_kv(b, "local-id", "%Y", ike_sa->get_my_id(ike_sa));
++ if (add_certs)
++ {
++ enumerator = ike_sa->create_auth_cfg_enumerator(ike_sa, TRUE);
++ if (enumerator->enumerate(enumerator, &auth_cfg))
++ {
++ certificate_t *cert = auth_cfg->get(auth_cfg, AUTH_RULE_SUBJECT_CERT);
++ chunk_t encoding;
++
++ if (cert && cert->get_encoding(cert, CERT_ASN1_DER, &encoding))
++ {
++ b->add(b, VICI_KEY_VALUE, "local-cert-data", encoding);
++ free(encoding.ptr);
++ }
++ }
++ enumerator->destroy(enumerator);
++ }
+
+ host = ike_sa->get_other_host(ike_sa);
+ b->add_kv(b, "remote-host", "%H", host);
+ b->add_kv(b, "remote-port", "%d", host->get_port(host));
+ b->add_kv(b, "remote-id", "%Y", ike_sa->get_other_id(ike_sa));
++ if (add_certs)
++ {
++ enumerator = ike_sa->create_auth_cfg_enumerator(ike_sa, FALSE);
++ if (enumerator->enumerate(enumerator, &auth_cfg))
++ {
++ certificate_t *cert = auth_cfg->get(auth_cfg, AUTH_RULE_SUBJECT_CERT);
++ chunk_t encoding;
++
++ if (cert && cert->get_encoding(cert, CERT_ASN1_DER, &encoding))
++ {
++ b->add(b, VICI_KEY_VALUE, "remote-cert-data", encoding);
++ free(encoding.ptr);
++ }
++ }
++ enumerator->destroy(enumerator);
++ }
+
+ eap = ike_sa->get_other_eap_id(ike_sa);
+
+@@ -476,7 +510,7 @@ CALLBACK(list_sas, vici_message_t*,
+ b = vici_builder_create();
+ b->begin_section(b, ike_sa->get_name(ike_sa));
+
+- list_ike(this, b, ike_sa, now);
++ list_ike(this, b, ike_sa, now, TRUE);
+
+ b->begin_section(b, "child-sas");
+ csas = ike_sa->create_child_sa_enumerator(ike_sa);
+@@ -1624,7 +1658,7 @@ METHOD(listener_t, ike_updown, bool,
+ }
+
+ b->begin_section(b, ike_sa->get_name(ike_sa));
+- list_ike(this, b, ike_sa, now);
++ list_ike(this, b, ike_sa, now, up);
+ b->end_section(b);
+
+ this->dispatcher->raise_event(this->dispatcher,
+@@ -1649,10 +1683,10 @@ METHOD(listener_t, ike_rekey, bool,
+ b = vici_builder_create();
+ b->begin_section(b, old->get_name(old));
+ b->begin_section(b, "old");
+- list_ike(this, b, old, now);
++ list_ike(this, b, old, now, TRUE);
+ b->end_section(b);
+ b->begin_section(b, "new");
+- list_ike(this, b, new, now);
++ list_ike(this, b, new, now, TRUE);
+ b->end_section(b);
+ b->end_section(b);
+
+@@ -1682,7 +1716,7 @@ METHOD(listener_t, child_updown, bool,
+ }
+
+ b->begin_section(b, ike_sa->get_name(ike_sa));
+- list_ike(this, b, ike_sa, now);
++ list_ike(this, b, ike_sa, now, up);
+ b->begin_section(b, "child-sas");
+
+ b->begin_section(b, child_sa->get_name(child_sa));
+@@ -1714,7 +1748,7 @@ METHOD(listener_t, child_rekey, bool,
+ b = vici_builder_create();
+
+ b->begin_section(b, ike_sa->get_name(ike_sa));
+- list_ike(this, b, ike_sa, now);
++ list_ike(this, b, ike_sa, now, TRUE);
+ b->begin_section(b, "child-sas");
+
+ b->begin_section(b, old->get_name(old));
+--
+2.12.1
+
diff --git a/user/strongswan/1003-vici-add-support-for-individual-sa-state-changes.patch b/user/strongswan/1003-vici-add-support-for-individual-sa-state-changes.patch
new file mode 100644
index 000000000..06dc121e8
--- /dev/null
+++ b/user/strongswan/1003-vici-add-support-for-individual-sa-state-changes.patch
@@ -0,0 +1,159 @@
+From 0e4f1118e68736bb96ae23f4c6cb85f2ebbc998d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
+Date: Mon, 21 Sep 2015 13:42:11 +0300
+Subject: [PATCH] vici: add support for individual sa state changes
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Useful for monitoring and tracking full SA.
+
+Signed-off-by: Timo Teräs <timo.teras@iki.fi>
+---
+ src/libcharon/plugins/vici/vici_query.c | 105 ++++++++++++++++++++++++++++++++
+ 1 file changed, 105 insertions(+)
+
+diff --git a/src/libcharon/plugins/vici/vici_query.c b/src/libcharon/plugins/vici/vici_query.c
+index 309a11c03..83a5daaa7 100644
+--- a/src/libcharon/plugins/vici/vici_query.c
++++ b/src/libcharon/plugins/vici/vici_query.c
+@@ -1624,8 +1624,16 @@ static void manage_commands(private_vici_query_t *this, bool reg)
+ this->dispatcher->manage_event(this->dispatcher, "list-cert", reg);
+ this->dispatcher->manage_event(this->dispatcher, "ike-updown", reg);
+ this->dispatcher->manage_event(this->dispatcher, "ike-rekey", reg);
++ this->dispatcher->manage_event(this->dispatcher, "ike-state-established", reg);
++ this->dispatcher->manage_event(this->dispatcher, "ike-state-destroying", reg);
+ this->dispatcher->manage_event(this->dispatcher, "child-updown", reg);
+ this->dispatcher->manage_event(this->dispatcher, "child-rekey", reg);
++ this->dispatcher->manage_event(this->dispatcher, "child-state-installing", reg);
++ this->dispatcher->manage_event(this->dispatcher, "child-state-installed", reg);
++ this->dispatcher->manage_event(this->dispatcher, "child-state-updating", reg);
++ this->dispatcher->manage_event(this->dispatcher, "child-state-rekeying", reg);
++ this->dispatcher->manage_event(this->dispatcher, "child-state-rekeyed", reg);
++ this->dispatcher->manage_event(this->dispatcher, "child-state-destroying", reg);
+ manage_command(this, "list-sas", list_sas, reg);
+ manage_command(this, "list-policies", list_policies, reg);
+ manage_command(this, "list-conns", list_conns, reg);
+@@ -1696,6 +1704,45 @@ METHOD(listener_t, ike_rekey, bool,
+ return TRUE;
+ }
+
++METHOD(listener_t, ike_state_change, bool,
++ private_vici_query_t *this, ike_sa_t *ike_sa, ike_sa_state_t state)
++{
++ char *event;
++ vici_builder_t *b;
++ time_t now;
++
++ switch (state)
++ {
++ case IKE_ESTABLISHED:
++ event = "ike-state-established";
++ break;
++ case IKE_DESTROYING:
++ event = "ike-state-destroying";
++ break;
++ default:
++ return TRUE;
++ }
++
++ if (!this->dispatcher->has_event_listeners(this->dispatcher, event))
++ {
++ return TRUE;
++ }
++
++ now = time_monotonic(NULL);
++
++ b = vici_builder_create();
++ b->begin_section(b, ike_sa->get_name(ike_sa));
++ list_ike(this, b, ike_sa, now, state != IKE_DESTROYING);
++ b->begin_section(b, "child-sas");
++ b->end_section(b);
++ b->end_section(b);
++
++ this->dispatcher->raise_event(this->dispatcher,
++ event, 0, b->finalize(b));
++
++ return TRUE;
++}
++
+ METHOD(listener_t, child_updown, bool,
+ private_vici_query_t *this, ike_sa_t *ike_sa, child_sa_t *child_sa, bool up)
+ {
+@@ -1771,6 +1818,62 @@ METHOD(listener_t, child_rekey, bool,
+ return TRUE;
+ }
+
++METHOD(listener_t, child_state_change, bool,
++ private_vici_query_t *this, ike_sa_t *ike_sa, child_sa_t *child_sa, child_sa_state_t state)
++{
++ char *event;
++ vici_builder_t *b;
++ time_t now;
++
++ switch (state)
++ {
++ case CHILD_INSTALLING:
++ event = "child-state-installing";
++ break;
++ case CHILD_INSTALLED:
++ event = "child-state-installed";
++ break;
++ case CHILD_UPDATING:
++ event = "child-state-updating";
++ break;
++ case CHILD_REKEYING:
++ event = "child-state-rekeying";
++ break;
++ case CHILD_REKEYED:
++ event = "child-state-rekeyed";
++ break;
++ case CHILD_DESTROYING:
++ event = "child-state-destroying";
++ break;
++ default:
++ return TRUE;
++ }
++
++ if (!this->dispatcher->has_event_listeners(this->dispatcher, event))
++ {
++ return TRUE;
++ }
++
++ now = time_monotonic(NULL);
++
++ b = vici_builder_create();
++ b->begin_section(b, ike_sa->get_name(ike_sa));
++ list_ike(this, b, ike_sa, now, state != CHILD_DESTROYING);
++ b->begin_section(b, "child-sas");
++
++ b->begin_section(b, child_sa->get_name(child_sa));
++ list_child(this, b, child_sa, now);
++ b->end_section(b);
++
++ b->end_section(b);
++ b->end_section(b);
++
++ this->dispatcher->raise_event(this->dispatcher,
++ event, 0, b->finalize(b));
++
++ return TRUE;
++}
++
+ METHOD(vici_query_t, destroy, void,
+ private_vici_query_t *this)
+ {
+@@ -1790,8 +1893,10 @@ vici_query_t *vici_query_create(vici_dispatcher_t *dispatcher)
+ .listener = {
+ .ike_updown = _ike_updown,
+ .ike_rekey = _ike_rekey,
++ .ike_state_change = _ike_state_change,
+ .child_updown = _child_updown,
+ .child_rekey = _child_rekey,
++ .child_state_change = _child_state_change,
+ },
+ .destroy = _destroy,
+ },
+--
+2.12.1
+
diff --git a/user/strongswan/APKBUILD b/user/strongswan/APKBUILD
new file mode 100644
index 000000000..29390b652
--- /dev/null
+++ b/user/strongswan/APKBUILD
@@ -0,0 +1,108 @@
+# Contributor: Jesse Young <jlyo@jlyo.org>
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Lee Starnes <lee@canned-death.us>
+pkgname=strongswan
+pkgver=5.7.1
+_pkgver=${pkgver//_rc/rc}
+pkgrel=0
+pkgdesc="IPsec-based VPN solution focused on security and ease of use, supporting IKEv1/IKEv2 and MOBIKE"
+url="https://www.strongswan.org/"
+arch="all"
+pkgusers="ipsec"
+pkggroups="ipsec"
+license="GPL-2.0 AND RSA-MD5 AND RSA-PKCS11 AND DES"
+depends="iproute2"
+depends_dev=""
+makedepends="$depends_dev linux-headers python3 sqlite-dev openssl-dev curl-dev
+ gmp-dev libcap-dev"
+install="$pkgname.pre-install"
+subpackages="$pkgname-doc $pkgname-dbg $pkgname-openrc"
+source="https://download.strongswan.org/$pkgname-$_pkgver.tar.bz2
+ 0205-ike-Adhere-to-IKE_SA-limit-when-checking-out-by-conf.patch
+ 1001-charon-add-optional-source-and-remote-overrides-for-.patch
+ 1002-vici-send-certificates-for-ike-sa-events.patch
+ 1003-vici-add-support-for-individual-sa-state-changes.patch
+
+ strongswan.initd
+ charon.initd
+ "
+builddir="$srcdir/$pkgname-$_pkgver"
+
+# secfixes:
+# 5.7.1-r0:
+# - CVE-2018-17540
+
+build() {
+ cd "$builddir"
+
+ # notes about configuration:
+ # - try to keep options in ./configure --help order
+ # - apk depends on openssl, so we use that
+ # - openssl provides ciphers, randomness, etc
+ # -> disable all redundant in-tree copies
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --with-ipsecdir=/usr/lib/strongswan \
+ --with-capabilities=libcap \
+ --with-user=ipsec \
+ --with-group=ipsec \
+ --enable-curl \
+ --disable-ldap \
+ --disable-aes \
+ --disable-des \
+ --disable-rc2 \
+ --disable-md5 \
+ --disable-sha1 \
+ --disable-sha2 \
+ --enable-gmp \
+ --disable-hmac \
+ --disable-mysql \
+ --enable-sqlite \
+ --enable-eap-sim \
+ --enable-eap-sim-file \
+ --enable-eap-aka \
+ --enable-eap-aka-3gpp2 \
+ --enable-eap-simaka-pseudonym \
+ --enable-eap-simaka-reauth \
+ --enable-eap-identity \
+ --enable-eap-md5 \
+ --enable-eap-tls \
+ --disable-eap-gtc \
+ --enable-eap-mschapv2 \
+ --enable-eap-radius \
+ --enable-xauth-eap \
+ --enable-farp \
+ --enable-vici \
+ --enable-attr-sql \
+ --enable-dhcp \
+ --enable-openssl \
+ --enable-unity \
+ --enable-ha \
+ --enable-cmd \
+ --enable-swanctl \
+ --enable-shared \
+ --disable-static
+ make
+}
+
+check() {
+ cd "$builddir"
+ env TESTS_SUITES_EXCLUDE=printf make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ install -m755 -D "$srcdir/$pkgname.initd" "$pkgdir/etc/init.d/$pkgname"
+ install -m755 -D "$srcdir/charon.initd" "$pkgdir/etc/init.d/charon"
+}
+
+sha512sums="43102814434bee7c27a5956be59099cc4ffb9bb5b0d6382ce4c6a80d1d82ed6639f698f5f5544b9ca563554a344638c953525b0e2d39bc6b71b19055c80e07fc strongswan-5.7.1.tar.bz2
+193d845e2751c23d98cdf84134c7803f2e412197669c6d6c1c9974041608d154b85594ed3d9ffb923ca22a4d5926c7f2373787ddc7da47b52019e284a1d13211 0205-ike-Adhere-to-IKE_SA-limit-when-checking-out-by-conf.patch
+21db8f153f535ef13cc7c9c011f9b90b8c794e0072bd93fda6a0a56dc00d32d04e186b1a72a87a85613b7e511eed5cb96623abf0721c67dd5c96446db969a185 1001-charon-add-optional-source-and-remote-overrides-for-.patch
+f7d98fb99b4855e8bfbb7369292c170536b1987e717feeda71f64ab71b35538e7d462609a773c6a6ed08c8e6ee7a186df12e1ea7d64b9dac0b17d4c7af17dab3 1002-vici-send-certificates-for-ike-sa-events.patch
+a4235cd07e17ad3441dc391ded11ee9f4debdffa1e8218809731e73a545ca6fcdc0bb87239d41b1102b0b6719a4d31d43758972d2193ebe298b275285de2ce54 1003-vici-add-support-for-individual-sa-state-changes.patch
+8b61e3ffbb39b837733e602ec329e626dc519bf7308d3d4192b497d18f38176789d23ef5afec51f8463ee1ddaf4d74546b965c03184132e217cbc27017e886c9 strongswan.initd
+1c44c801f66305c0331f76e580c0d60f1b7d5cd3cc371be55826b06c3899f542664628a912a7fb48626e34d864f72ca5dcd34b2f0d507c4f19c510d0047054c1 charon.initd"
diff --git a/user/strongswan/charon.initd b/user/strongswan/charon.initd
new file mode 100644
index 000000000..6f79679c0
--- /dev/null
+++ b/user/strongswan/charon.initd
@@ -0,0 +1,30 @@
+#!/sbin/openrc-run
+
+description="strongSwan charon IKE daemon"
+command="/usr/lib/strongswan/charon"
+pidfile="/var/run/charon.pid"
+start_stop_daemon_args="--background"
+extra_started_commands="reload fullstatus"
+
+depend() {
+ need net
+ after firewall
+ provide ipsec
+}
+
+start_post() {
+ ebegin "Loading ${name:-$RC_SVCNAME} configuration"
+ sleep 0.2
+ swanctl --load-all &>/dev/null
+ eend $?
+}
+
+reload() {
+ swanctl --reload-settings
+ swanctl --load-all
+}
+
+fullstatus() {
+ swanctl --list-conns
+ swanctl --list-sas
+}
diff --git a/user/strongswan/strongswan.initd b/user/strongswan/strongswan.initd
new file mode 100644
index 000000000..78fecb0ee
--- /dev/null
+++ b/user/strongswan/strongswan.initd
@@ -0,0 +1,35 @@
+#!/sbin/openrc-run
+
+extra_started_commands="fullstatus"
+
+depend() {
+ need net
+ after firewall
+ provide ipsec
+}
+
+start() {
+ ebegin "Starting StrongSwan"
+ ipsec start
+ eend $?
+}
+
+stop () {
+ ebegin "Stopping StrongSwan"
+ ipsec stop
+ eend $?
+}
+
+restart() {
+ ebegin "Restarting StrongSwan"
+ svc_stop
+ sleep 2
+ svc_start
+ eend $?
+}
+
+fullstatus() {
+ ebegin "StrongSwan Status (verbose):"
+ ipsec statusall
+ eend $?
+}
diff --git a/user/strongswan/strongswan.pre-install b/user/strongswan/strongswan.pre-install
new file mode 100644
index 000000000..da43ede66
--- /dev/null
+++ b/user/strongswan/strongswan.pre-install
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+addgroup -S ipsec 2>/dev/null
+adduser -S -D -H -h /var/empty -s /sbin/nologin -G ipsec -g ipsec ipsec 2>/dev/null
+
+exit 0
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/tcpdump/APKBUILD b/user/tcpdump/APKBUILD
new file mode 100644
index 000000000..c5f4203e7
--- /dev/null
+++ b/user/tcpdump/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=tcpdump
+pkgver=4.9.2
+pkgrel=0
+pkgdesc="A tool for network monitoring and data acquisition"
+url="http://www.tcpdump.org"
+arch="all"
+license="BSD-3-Clause"
+depends=""
+makedepends="libpcap-dev openssl-dev perl"
+subpackages="$pkgname-doc"
+source="http://www.tcpdump.org/release/$pkgname-$pkgver.tar.gz"
+
+build () {
+ cd "$builddir"
+ ./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
+ rm -f "$pkgdir"/usr/sbin/tcpdump.4*
+}
+
+sha512sums="e1bc19a5867d6e3628f3941bdf3ec831bf13784f1233ca1bccc46aac1702f47ee9357d7ff0ca62cddf211b3c8884488c21144cabddd92c861e32398cd8f7c44b tcpdump-4.9.2.tar.gz"
diff --git a/user/tcsh/001-sysmalloc.patch b/user/tcsh/001-sysmalloc.patch
new file mode 100644
index 000000000..b22c01898
--- /dev/null
+++ b/user/tcsh/001-sysmalloc.patch
@@ -0,0 +1,15 @@
+--- a/config_f.h
++++ b/config_f.h
+@@ -139,11 +139,8 @@
+ * This can be much slower and no memory statistics will be
+ * provided.
+ */
+-#if defined(__MACHTEN__) || defined(PURIFY) || defined(MALLOC_TRACE) || defined(_OSD_POSIX) || defined(__MVS__) || defined (__CYGWIN__) || defined(__GLIBC__) || defined(__OpenBSD__) || defined(__APPLE__) || defined (__ANDROID__)
++
+ # define SYSMALLOC
+-#else
+-# undef SYSMALLOC
+-#endif
+
+ /*
+ * USE_ACCESS Use access(2) rather than stat(2) when POSIX is defined.
diff --git a/user/tcsh/002-test_123-posix_fix.patch b/user/tcsh/002-test_123-posix_fix.patch
new file mode 100644
index 000000000..6ed59de38
--- /dev/null
+++ b/user/tcsh/002-test_123-posix_fix.patch
@@ -0,0 +1,34 @@
+Author: Dan Theisen <djt@hxx.in>
+Date: Wed Jun 06 03:30:25 2018 -0800
+
+The following lines have a subtle change around [:blank:], changing it
+to [[:blank:]] instead. This is required because POSIX treats characters
+inside of brackets as a group of characters to match against. In this case,
+[[:space:]] means [] group of characters, and [:space:] is the group, as per:
+IEEE Std 1003.1-2017 (Revision of IEEE Std 1003.1-2008), Chapter 9
+http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html
+
+--- tcsh-6.20.00/tests/lexical.at.old 2018-06-06 02:20:16.787145186 -0700
++++ tcsh-6.20.00/tests/lexical.at 2018-06-06 02:21:09.537890842 -0700
+@@ -567,10 +567,10 @@
+ ]])
+ AT_DATA([uniformity_test.csh],
+ [[
+-set SERVICE_NAME_LOG = `cat batchsystem.properties | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[:blank:]*\([^$]*\)$/\1/p' | perl -pe 's/\s//g' | perl -pe 's/\)/\\\)/g' | perl -pe 's/\(/\\\(/g'`
++set SERVICE_NAME_LOG = `cat batchsystem.properties | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[[:blank:]]*\([^$]*\)$/\1/p' | perl -pe 's/\s//g' | perl -pe 's/\)/\\\)/g' | perl -pe 's/\(/\\\(/g'`
+ echo -n "$SERVICE_NAME_LOG" > ./output1
+
+-cat batchsystem.properties | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[:blank:]*\([^$]*\)$/\1/p' | perl -pe 's/\s//g' | perl -pe 's/\)/\\\)/g' | perl -pe 's/\(/\\\(/g' > ./output2
++cat batchsystem.properties | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[[:blank:]]*\([^$]*\)$/\1/p' | perl -pe 's/\s//g' | perl -pe 's/\)/\\\)/g' | perl -pe 's/\(/\\\(/g' > ./output2
+
+ diff -uprN ./output1 ./output2 >& /dev/null
+
+@@ -587,7 +587,7 @@
+ echo "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP\)(HOST=db\)(PORT=1521\)\)(CONNECT_DATA=(SERVER=DEDICATED\)(SERVICE_NAME=bns03\)\)\)" > ./expected_result
+
+ set string = "jdbc_url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=bns03)))"
+-set SERVICE_NAME_LOG = `echo "$string" | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[:blank:]*\([^$]*\)$/\1/p' | perl -pe 's/\)/\\\)/g'`
++set SERVICE_NAME_LOG = `echo "$string" | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[[:blank:]]*\([^$]*\)$/\1/p' | perl -pe 's/\)/\\\)/g'`
+
+ echo "$SERVICE_NAME_LOG" > ./actual_result
+
diff --git a/user/tcsh/APKBUILD b/user/tcsh/APKBUILD
new file mode 100644
index 000000000..2fdfac0b2
--- /dev/null
+++ b/user/tcsh/APKBUILD
@@ -0,0 +1,47 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=tcsh
+pkgver=6.20.00
+pkgrel=2
+pkgdesc="extended C-shell"
+url="http://www.tcsh.org"
+arch="all"
+license="BSD-3-Clause"
+depends=""
+checkdepends="diffutils autoconf"
+makedepends="ncurses-dev ncurses-terminfo utmps-dev gettext-tiny-dev"
+install="$pkgname.post-install $pkgname.post-upgrade $pkgname.pre-deinstall"
+subpackages="$pkgname-doc"
+options="!checkroot"
+source="$pkgname-$pkgver.tar.gz::http://http.debian.net/debian/pool/main/t/tcsh/${pkgname}_${pkgver}.orig.tar.gz
+ 001-sysmalloc.patch
+ 002-test_123-posix_fix.patch"
+
+build() {
+ cd "$builddir"
+ LIBS="-lutmps -lskarnet -ltinfo" ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --bindir=/bin \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --enable-nls \
+ --enable-nls-catalogs \
+ --disable-rpath
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="c5635393c22341e62fb9a0b953ddf8871a876ab09deb08c98237f93afa9257b4a3381d1db65eefe769e22ef845db29ab7bc78773f1f609d73c8205689a6683e9 tcsh-6.20.00.tar.gz
+40149d8eb2fc0fe5184f3c24c7a1b728e881cc0048ccd37a986c3b2d2094499ec1c37ae2bae4c209fb8a847aa943e83e81f79e3d2f55c59990bc00d9d07f5a94 001-sysmalloc.patch
+b4c1afe04554d117b1402608bcdb243148c0c7b2442bdc10dde3ed6601db5e7c5a2341373f9bdc31fda8860e47a6e152cdcc4e3a8b273742037eebc624df282c 002-test_123-posix_fix.patch"
diff --git a/user/tcsh/tcsh.post-install b/user/tcsh/tcsh.post-install
new file mode 100644
index 000000000..7342c5e72
--- /dev/null
+++ b/user/tcsh/tcsh.post-install
@@ -0,0 +1,3 @@
+#!/bin/sh
+add-shell '/bin/tcsh'
+exit 0
diff --git a/user/tcsh/tcsh.post-upgrade b/user/tcsh/tcsh.post-upgrade
new file mode 120000
index 000000000..180542a18
--- /dev/null
+++ b/user/tcsh/tcsh.post-upgrade
@@ -0,0 +1 @@
+tcsh.post-install \ No newline at end of file
diff --git a/user/tcsh/tcsh.pre-deinstall b/user/tcsh/tcsh.pre-deinstall
new file mode 100644
index 000000000..9e2e34c1c
--- /dev/null
+++ b/user/tcsh/tcsh.pre-deinstall
@@ -0,0 +1,3 @@
+#!/bin/sh
+remove-shell '/bin/tcsh'
+exit 0
diff --git a/user/terminus-font/APKBUILD b/user/terminus-font/APKBUILD
new file mode 100644
index 000000000..0020705e8
--- /dev/null
+++ b/user/terminus-font/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Max Rees <maxcrees@me.com>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=terminus-font
+pkgver=4.46
+pkgrel=0
+pkgdesc="Monospace bitmap font (for X11 and console)"
+url="http://terminus-font.sourceforge.net/" # No HTTPS
+arch="noarch"
+options="!check" # Fonts have no test suite
+license="OFL-1.1"
+depends=""
+makedepends="bdftopcf python3"
+source="https://downloads.sourceforge.net/project/$pkgname/$pkgname-$pkgver/$pkgname-$pkgver.tar.gz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --prefix=/usr \
+ --psfdir=/usr/share/consolefonts \
+ --x11dir=/usr/share/fonts/misc
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+
+ install -Dm644 75-yes-terminus.conf \
+ "$pkgdir/etc/fonts/conf.avail/75-yes-terminus.conf"
+ install -d "$pkgdir/etc/fonts/conf.d"
+ cd "$pkgdir/etc/fonts/conf.d"
+ ln -s /etc/fonts/conf.avail/75-yes-terminus.conf .
+}
+
+sha512sums="ae221920ecff54b9575a25d30a429feee6e19ef1e9669896c34f86f80d5495c3654f5423ff1df76e86bc999d1f37c306048b44d8ca55144f0f299926d3d33b58 terminus-font-4.46.tar.gz"
diff --git a/user/the_silver_searcher/APKBUILD b/user/the_silver_searcher/APKBUILD
new file mode 100644
index 000000000..c9f324a69
--- /dev/null
+++ b/user/the_silver_searcher/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=the_silver_searcher
+pkgver=2.2.0
+pkgrel=0
+pkgdesc="Tool for very fast searching of text in documents and code"
+url="https://geoff.greer.fm/ag/"
+arch="all"
+options="!check" # Tests are not shipped in the release tarball...
+license="Apache-2.0"
+depends=""
+makedepends="pcre-dev xz-dev zlib-dev"
+checkdepends="cram"
+subpackages="$pkgname-doc"
+source="https://geoff.greer.fm/ag/releases/the_silver_searcher-$pkgver.tar.gz"
+builddir="$srcdir/the_silver_searcher-$pkgver"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make test
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="89d4e4f7f34c0d57aa880e7c3466f0373b961744a89ad30541e89e2d614322ab46c8044ec458406a117f74b0fea14cd3063fa4e0624a96526aa23eaccd6f1141 the_silver_searcher-2.2.0.tar.gz"
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/thunar-volman/APKBUILD b/user/thunar-volman/APKBUILD
new file mode 100644
index 000000000..7475e17a0
--- /dev/null
+++ b/user/thunar-volman/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=thunar-volman
+pkgver=0.9.0
+pkgrel=0
+pkgdesc="Volume manager for Thunar"
+url="https://xfce.org"
+arch="all"
+license="GPL-2.0+"
+makedepends="intltool libxfce4ui-dev thunar-dev exo-dev libgudev-dev libnotify-dev"
+subpackages="$pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/xfce/thunar-volman/0.9/thunar-volman-$pkgver.tar.bz2"
+sha512sums="d753e2aeded921e5652e6ace164845997dc3cdfbfd92561e2af822bffdf910a06850658a9f662198e4f7c485a3dc1226f97b573d28fb66e5ba490aa08f56a8f5 thunar-volman-0.9.0.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./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
+}
+
diff --git a/user/thunar/APKBUILD b/user/thunar/APKBUILD
new file mode 100644
index 000000000..b11ee1106
--- /dev/null
+++ b/user/thunar/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=thunar
+pkgver=1.8.2
+pkgrel=0
+pkgdesc="File manager for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="LGPL-2.0+ AND GPL-2.0+"
+makedepends="intltool gtk+3.0-dev exo-dev libxfce4ui-dev vala-dev
+ gobject-introspection-dev libsm-dev libgudev-dev libnotify-dev
+ libexif-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/xfce/thunar/1.8/Thunar-$pkgver.tar.bz2"
+builddir="$srcdir/Thunar-$pkgver"
+
+build() {
+ cd "$builddir"
+ ./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="c770fae8b6e5e0e42148ed2b9777afba5159783e5fc716eba1e0499b5390684f386eb575f1a608814bc118bbf05ede34c6737e28c06470c4d01717b579308ec9 Thunar-1.8.2.tar.bz2"
diff --git a/user/tint2/APKBUILD b/user/tint2/APKBUILD
index b8ec7a53b..90d37e258 100644
--- a/user/tint2/APKBUILD
+++ b/user/tint2/APKBUILD
@@ -3,7 +3,7 @@
# Contributor: Francesco Colista <fcolista@alpinelinux.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=tint2
-pkgver=16.6
+pkgver=16.6.1
pkgrel=0
pkgdesc="Simple, unintrusive panel/taskbar"
url="https://gitlab.com/o9000/tint2"
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="70ba1b338c19d2b61804b6cedda659f1dfe90cbeb2c02e2e37a8b35770f2ef826b373c050449bddc1995628e6b413ea18a0f939766c4f22b8147bf39af3e81cd tint2-16.6.tar.bz2"
+sha512sums="25eb3d96f68da1d09711c2f3741e964c880ba911efe3b90b7ebdec4e4734eb7b76d8a84a34431c6a55e785bbbd7ebc8ef447beef2bb57e70f728d28b78b3a81d tint2-16.6.1.tar.bz2"
diff --git a/user/tlp/APKBUILD b/user/tlp/APKBUILD
new file mode 100644
index 000000000..dd34fe5cc
--- /dev/null
+++ b/user/tlp/APKBUILD
@@ -0,0 +1,52 @@
+# Contributor: Ivan Tham <pickfire@riseup.net>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=tlp
+_pkgname=TLP
+pkgver=1.1
+pkgrel=0
+pkgdesc="Linux Advanced Power Management"
+url="http://linrunner.de/en/tlp/tlp.html"
+arch="noarch"
+options="!check" # No test suite.
+license="GPL-2.0+ AND GPL-3.0+"
+depends="/bin/sh perl"
+makedepends=""
+subpackages="$pkgname-doc $pkgname-rdw $pkgname-bash-completion:bashcomp
+ $pkgname-openrc"
+source="$pkgname-$pkgver.tar.gz::https://github.com/linrunner/$_pkgname/archive/$pkgver.tar.gz
+ $pkgname.initd"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ cd "$builddir"
+ make
+}
+
+package() {
+ cd "$builddir"
+
+ make DESTDIR="$pkgdir" install-tlp install-man
+ install -Dm755 "$srcdir"/tlp.initd "$pkgdir"/etc/init.d/"$pkgname"
+ # We don't ship systemd
+ find "$pkgdir"/usr/share/man/man8 -name '*.service*' -delete
+}
+
+rdw() {
+ pkgdesc="Linux Advanced Power Management - Radio Device Wizard"
+ depends="tlp"
+
+ cd "$builddir"
+ make DESTDIR="$subpkgdir" install-rdw
+}
+
+bashcomp() {
+ pkgdesc="Bash completions for $pkgname"
+ depends=""
+ install_if="$pkgname=$pkgver-r$pkgrel bash-completion"
+
+ mkdir -p "$subpkgdir"/usr/share
+ mv "$pkgdir"/usr/share/bash-completion "$subpkgdir"/usr/share
+}
+
+sha512sums="3400f2b6c249fd2e1bbbc61f23e3450ff90fabb8dd74f2903ce1f0d07e7ce3d1e61b07295736138d4697235dbee9157d3f32a8d296a649c93f73e03e3555af1e tlp-1.1.tar.gz
+e6de216b2540413812711b3304cdc29c8729d527080cfd747ba382db50166dd21c6c27ff467f9f2a967e92007c7a311b00e88262952c34a22f417578c66cf4e7 tlp.initd"
diff --git a/user/tlp/tlp.initd b/user/tlp/tlp.initd
new file mode 100755
index 000000000..05b4c3b97
--- /dev/null
+++ b/user/tlp/tlp.initd
@@ -0,0 +1,15 @@
+#!/sbin/openrc-run
+
+description="Initialize tlp"
+extra_started_commands="force_reload"
+
+depend() {
+ need localmount
+}
+
+status() { tlp-stat -s; }
+# TODO: keep the following in one line
+start() { tlp init start; }
+stop() { tlp init stop; }
+restart() { tlp init restart; }
+force_reload() { tlp init force-reload; }
diff --git a/user/tumbler/APKBUILD b/user/tumbler/APKBUILD
new file mode 100644
index 000000000..e1cf61892
--- /dev/null
+++ b/user/tumbler/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=tumbler
+pkgver=0.2.3
+pkgrel=0
+pkgdesc="Thumbnail generation service for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="GPL-2.0+ LGPL-2.0+"
+depends="dbus"
+makedepends="intltool dbus-glib-dev gdk-pixbuf-dev curl-dev freetype-dev
+ libjpeg-turbo-dev libgsf-dev poppler-dev ffmpegthumbnailer-dev
+ libopenraw-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/xfce/tumbler/0.2/tumbler-$pkgver.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./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="aefe284c3baa1d8eaf79c9bdb3cfc044ee6a1f36be34efd67541e6310aa275b5235b29f68483b7b7b5a8df699a8b3db8dc75569ec2b90253756fd6285a2e3816 tumbler-0.2.3.tar.bz2"
diff --git a/user/udisks2/APKBUILD b/user/udisks2/APKBUILD
index 8c5337b9c..66af86bad 100644
--- a/user/udisks2/APKBUILD
+++ b/user/udisks2/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=udisks2
-pkgver=2.8.0
+pkgver=2.8.1
pkgrel=0
pkgdesc="A Disk Manager"
url="https://www.freedesktop.org/wiki/Software/udisks"
@@ -50,5 +50,5 @@ libs() {
"$subpkgdir"/usr/lib/
}
-sha512sums="3814c4c02fbadc58d9e3a6615f015d385648211f12075ce46eb0016605f102fa0c8eeca152f2e03491522b484c43039901bf8f1be2f469ac35b1b6259e7e0ceb udisks-2.8.0.tar.bz2
+sha512sums="a3c7d26cd1bbd9cce59b25d118076c34482a698d7dca9e0468b6f9c928f40c8dbdd0b1cb61cf288ae77151643dc4a3eacf31e22af2c7b35a2828e49ee335e70b udisks-2.8.1.tar.bz2
269ba55cc755e2a484670258bc530790691b66c9fce9479a2a17d78cff5d52dd1be89290979efd44a0ba82be665f52a356a57f2cbb67951d91fe09d4e24c2a6a O_CLOEXEC.patch"
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/unifont/APKBUILD b/user/unifont/APKBUILD
index a3da61bf0..b4d8ff484 100644
--- a/user/unifont/APKBUILD
+++ b/user/unifont/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Breno Leitao <breno.leitao@gmail.com>
# Maintainer:
pkgname=unifont
-pkgver=11.0.01
+pkgver=11.0.02
pkgrel=0
pkgdesc="GNU font package with all Unicode 11 characters"
url="http://unifoundry.com/unifont.html"
@@ -24,4 +24,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="b6668dfc0eb95a0ca313bd8a3e330c06b928d536d1c00f837398ab210beb0a8f251e85cdca8787116eb92e7990c2157c81b7353be2112396a468ea252a93de1d unifont-11.0.01.tar.gz"
+sha512sums="d0dc8ce079feb282f53c444df5819751a7c97788feed480dc5c5b8a239c8cc13ef258876ffe2830994e404c0a6f524481a405b273c7341703ceef5854c12a68d unifont-11.0.02.tar.gz"
diff --git a/user/unixodbc/APKBUILD b/user/unixodbc/APKBUILD
index c29986afc..e631d0f45 100644
--- a/user/unixodbc/APKBUILD
+++ b/user/unixodbc/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer:
pkgname=unixodbc
-pkgver=2.3.6
+pkgver=2.3.7
pkgrel=0
pkgdesc="Library for accessing ODBC data sources"
url="http://www.unixodbc.org/"
@@ -32,4 +32,4 @@ package() {
make -j1 DESTDIR="$pkgdir" install
}
-sha512sums="6518a4169946e847dd710d54724a44d268b98954d30064eadadb703edbbeafac05bd1f42a6845c2fdcdab7ae8987800acd1a5f6b4b96de5f3c8c3e4bc370fe30 unixODBC-2.3.6.tar.gz"
+sha512sums="a87afeaaa0476f4ae6345c7021b3af52718944e599abb595c864d9126744a21341889802512a1de3ebaf86ac89e7f8b1bbd7f8f5285e8f4bccf928bd1585ff70 unixODBC-2.3.7.tar.gz"
diff --git a/user/unrar/APKBUILD b/user/unrar/APKBUILD
index 187000474..f50447699 100644
--- a/user/unrar/APKBUILD
+++ b/user/unrar/APKBUILD
@@ -2,7 +2,7 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=unrar
-pkgver=5.6.4
+pkgver=5.6.8
pkgrel=0
pkgdesc="The RAR uncompression program"
url="https://www.rarlab.com"
@@ -29,5 +29,5 @@ package() {
"$pkgdir/usr/share/licenses/$pkgname/license.txt"
}
-sha512sums="0ff55a82f8593c59c9773ffa7dec00386b762c504a08497bc1a50de5502c52e1c1d1043cb8ba353291aa61a3ebc9f5f0a21d313d89639f400e5fc45f01d62cca unrarsrc-5.6.4.tar.gz
+sha512sums="5410308d7f462824bc10087cdc4515c58aaad776cc09eb6491864a338ae00ff35e3b54d1e7250c0a9576554ea382383155be718a0b95d7af00f27d5df04f4f56 unrarsrc-5.6.8.tar.gz
7da30d8454a67999e7052ed2c0ee8d29627b1d47bfdf36e8cf1e24f3c36ee58b17f7e7a6505a4b38e0ca3162067368a1bf554829fd824f7c17a3a2a5b35ca29c makefile.patch"
diff --git a/user/upower/APKBUILD b/user/upower/APKBUILD
index b31a4a8e4..2458cd906 100644
--- a/user/upower/APKBUILD
+++ b/user/upower/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=upower
-pkgver=0.99.7
-pkgrel=1
+pkgver=0.99.8
+pkgrel=0
pkgdesc="Power Management Services"
url="https://upower.freedesktop.org"
arch="all"
@@ -11,7 +11,7 @@ depends=""
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
makedepends="dbus-glib-dev docbook-xsl gobject-introspection-dev gtk+-dev
intltool libgudev-dev libusb-dev libxslt linux-headers polkit-dev"
-source="https://upower.freedesktop.org/releases/upower-$pkgver.tar.xz"
+source="https://gitlab.freedesktop.org/upower/upower/uploads/9125ab7ee96fdc4ecc68cfefb50c1cab/upower-$pkgver.tar.xz"
build() {
cd "$builddir"
@@ -37,4 +37,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="a1ad200e715284eae815580bba3faad480f7f13401f6ff1a2e7446172796a2413990ce2b553de713ddc530849b2dff1f0ddc12fbd2fd9b55510bbb644d2340a4 upower-0.99.7.tar.xz"
+sha512sums="dfd2960cae382195dfc7a703a02af298d9de55bc626cde2a1f97e7983842191ba9d99eb2044190214e792539e7d6c9d8e00b5aed17e5e86b04544e9ab90278b1 upower-0.99.8.tar.xz"
diff --git a/user/usbredir/APKBUILD b/user/usbredir/APKBUILD
index a53f4ef04..ef23e2697 100644
--- a/user/usbredir/APKBUILD
+++ b/user/usbredir/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer:
pkgname=usbredir
-pkgver=0.7.1
-pkgrel=1
+pkgver=0.8.0
+pkgrel=0
pkgdesc="Protocol for using USB devices over a network"
url="https://www.spice-space.org/usbredir.html"
arch="all"
@@ -41,4 +41,4 @@ server() {
mv "$pkgdir"/usr/sbin "$subpkgdir"/usr/
}
-sha512sums="f8d26d59d5a530aa413fabe2402fbbd9662760453c2b4e83d34f2e5287c188114ea870f15ae1bc910297649986315be965f0d23d0a2b7b0cec2f207fc65d7598 usbredir-0.7.1.tar.bz2"
+sha512sums="976274adf08f8691b0961f5238021e988a4347873d0c67576038f44cbdaf25c2bb325d8cede0a507933b719f9715b1508ccd1d8f52fccd36f13a7640553dc108 usbredir-0.8.0.tar.bz2"
diff --git a/user/vala/APKBUILD b/user/vala/APKBUILD
new file mode 100644
index 000000000..8ffc5a7df
--- /dev/null
+++ b/user/vala/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=vala
+pkgver=0.42.2
+pkgrel=0
+pkgdesc="Compiler for the Vala programming language"
+url="https://wiki.gnome.org/Projects/Vala"
+arch="all"
+license="LGPL-2.1+"
+makedepends="glib-dev flex bison graphviz-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://download.gnome.org/sources/vala/0.42/vala-$pkgver.tar.xz"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ cd "$builddir"
+ make tests
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="36dfe2b3508e77fa8bac4b6c43e83841310e9e0d3986e4e0696255adc3c500f56d5f997c19999425e47a00fd760188c9c1f0565c0122a1c74632ad47ac1d08ff vala-0.42.2.tar.xz"
diff --git a/user/valgrind/0001-Ensure-ELFv2-is-supported-on-PPC64.patch b/user/valgrind/0001-Ensure-ELFv2-is-supported-on-PPC64.patch
new file mode 100644
index 000000000..5272406ec
--- /dev/null
+++ b/user/valgrind/0001-Ensure-ELFv2-is-supported-on-PPC64.patch
@@ -0,0 +1,817 @@
+From a5224eb31a4c8a680587e74cc402e5ed92ead216 Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Thu, 27 Sep 2018 15:42:40 -0500
+Subject: [PATCH] Ensure ELFv2 is supported on PPC64
+
+---
+ coregrind/m_dispatch/dispatch-ppc64be-linux.S | 107 ++++++++++++++++--
+ coregrind/m_initimg/initimg-linux.c | 5 +-
+ coregrind/m_libcsetjmp.c | 7 +-
+ coregrind/m_machine.c | 3 +-
+ coregrind/m_main.c | 19 ++--
+ coregrind/m_sigframe/sigframe-ppc64-linux.c | 3 +-
+ coregrind/m_signals.c | 11 +-
+ coregrind/m_stacktrace.c | 12 +-
+ coregrind/m_syscall.c | 9 +-
+ coregrind/m_syswrap/syscall-ppc64be-linux.S | 19 +++-
+ coregrind/m_syswrap/syswrap-ppc64-linux.c | 9 +-
+ coregrind/m_trampoline.S | 4 +-
+ coregrind/m_translate.c | 23 ++--
+ coregrind/m_ume/elf.c | 8 +-
+ coregrind/pub_core_machine.h | 12 +-
+ coregrind/vg_preloaded.c | 3 +-
+ include/valgrind.h | 16 ++-
+ memcheck/mc_leakcheck.c | 2 +-
+ memcheck/mc_machine.c | 3 +-
+ 19 files changed, 206 insertions(+), 69 deletions(-)
+
+diff --git a/coregrind/m_dispatch/dispatch-ppc64be-linux.S b/coregrind/m_dispatch/dispatch-ppc64be-linux.S
+index 91bd3b236..eb8026c7c 100644
+--- a/coregrind/m_dispatch/dispatch-ppc64be-linux.S
++++ b/coregrind/m_dispatch/dispatch-ppc64be-linux.S
+@@ -75,14 +75,26 @@ void VG_(disp_run_translations)( UWord* two_words,
+ .section ".text"
+ .align 2
+ .globl VG_(disp_run_translations)
++#if _CALL_ELF == 2
++.type VG_(disp_run_translations),@function
++VG_(disp_run_translations):
++.type .VG_(disp_run_translations),@function
++#else
+ .section ".opd","aw"
+ .align 3
+ VG_(disp_run_translations):
+ .quad .VG_(disp_run_translations),.TOC.@tocbase,0
+ .previous
+ .type .VG_(disp_run_translations),@function
++#endif
+ .globl .VG_(disp_run_translations)
+ .VG_(disp_run_translations):
++#if _CALL_ELF == 2
++0: addis 2, 12,.TOC.-0b@ha
++ addi 2,2,.TOC.-0b@l
++ .localentry VG_(disp_run_translations), .-VG_(disp_run_translations)
++#endif
++
+ /* r3 holds two_words */
+ /* r4 holds guest_state */
+ /* r5 holds host_addr */
+@@ -231,6 +243,11 @@ VG_(disp_run_translations):
+
+ /* Set up the guest state ptr */
+ mr 31,4 /* r31 (generated code gsp) = r4 */
++#if _CALL_ELF == 2
++/* for the LE ABI need to setup r2 and r12 */
++0: addis 2, 12,.TOC.-0b@ha
++ addi 2,2,.TOC.-0b@l
++#endif
+
+ /* and jump into the code cache. Chained translations in
+ the code cache run, until for whatever reason, they can't
+@@ -385,7 +402,9 @@ VG_(disp_run_translations):
+ mtlr 0
+ addi 1,1,624 /* stack_size */
+ blr
+-
++#if _CALL_ELF == 2
++ .size VG_(disp_run_translations),.-VG_(disp_run_translations)
++#endif
+
+ /*----------------------------------------------------*/
+ /*--- Continuation points ---*/
+@@ -395,15 +414,25 @@ VG_(disp_run_translations):
+ .section ".text"
+ .align 2
+ .globl VG_(disp_cp_chain_me_to_slowEP)
+- .section ".opd","aw"
++#if _CALL_ELF == 2
++ .type VG_(disp_cp_chain_me_to_slowEP),@function
++ VG_(disp_cp_chain_me_to_slowEP):
++#else
++ .section ".opd","aw"
+ .align 3
+ VG_(disp_cp_chain_me_to_slowEP):
+ .quad .VG_(disp_cp_chain_me_to_slowEP),.TOC.@tocbase,0
+ .previous
++#endif
+ .type .VG_(disp_cp_chain_me_to_slowEP),@function
+ .globl .VG_(disp_cp_chain_me_to_slowEP)
+ .VG_(disp_cp_chain_me_to_slowEP):
+- /* We got called. The return address indicates
++#if _CALL_ELF == 2
++0: addis 2, 12,.TOC.-0b@ha
++ addi 2,2,.TOC.-0b@l
++ .localentry VG_(disp_cp_chain_me_to_slowEP), .-VG_(disp_cp_chain_me_to_slowEP)
++#endif
++ /* We got called. The return address indicates
+ where the patching needs to happen. Collect
+ the return address and, exit back to C land,
+ handing the caller the pair (Chain_me_S, RA) */
+@@ -415,20 +444,33 @@ VG_(disp_cp_chain_me_to_slowEP):
+ */
+ subi 7,7,20+4+4
+ b .postamble
++#if _CALL_ELF == 2
++ .size VG_(disp_cp_chain_me_to_slowEP),.-VG_(disp_cp_chain_me_to_slowEP)
++#endif
+
+ /* ------ Chain me to fast entry point ------ */
+ .section ".text"
+ .align 2
+ .globl VG_(disp_cp_chain_me_to_fastEP)
+- .section ".opd","aw"
++#if _CALL_ELF == 2
++ .type VG_(disp_cp_chain_me_to_fastEP),@function
++VG_(disp_cp_chain_me_to_fastEP):
++#else
++ .section ".opd","aw"
+ .align 3
+ VG_(disp_cp_chain_me_to_fastEP):
+ .quad .VG_(disp_cp_chain_me_to_fastEP),.TOC.@tocbase,0
+ .previous
++#endif
+ .type .VG_(disp_cp_chain_me_to_fastEP),@function
+ .globl .VG_(disp_cp_chain_me_to_fastEP)
+ .VG_(disp_cp_chain_me_to_fastEP):
+- /* We got called. The return address indicates
++#if _CALL_ELF == 2
++0: addis 2, 12,.TOC.-0b@ha
++ addi 2,2,.TOC.-0b@l
++ .localentry VG_(disp_cp_chain_me_to_fastEP), .-VG_(disp_cp_chain_me_to_fastEP)
++#endif
++ /* We got called. The return address indicates
+ where the patching needs to happen. Collect
+ the return address and, exit back to C land,
+ handing the caller the pair (Chain_me_S, RA) */
+@@ -440,20 +482,33 @@ VG_(disp_cp_chain_me_to_fastEP):
+ */
+ subi 7,7,20+4+4
+ b .postamble
++#if _CALL_ELF == 2
++ .size VG_(disp_cp_chain_me_to_fastEP),.-VG_(disp_cp_chain_me_to_fastEP)
++#endif
+
+ /* ------ Indirect but boring jump ------ */
+ .section ".text"
+ .align 2
+ .globl VG_(disp_cp_xindir)
+- .section ".opd","aw"
++#if _CALL_ELF == 2
++ .type VG_(disp_cp_xindir),@function
++VG_(disp_cp_xindir):
++#else
++ .section ".opd","aw"
+ .align 3
+ VG_(disp_cp_xindir):
+ .quad .VG_(disp_cp_xindir),.TOC.@tocbase,0
+ .previous
++#endif
+ .type .VG_(disp_cp_xindir),@function
+ .globl .VG_(disp_cp_xindir)
+ .VG_(disp_cp_xindir):
+- /* Where are we going? */
++#if _CALL_ELF == 2
++0: addis 2, 12,.TOC.-0b@ha
++ addi 2,2,.TOC.-0b@l
++ .localentry VG_(disp_cp_xindir), .-VG_(disp_cp_xindir)
++#endif
++ /* Where are we going? */
+ ld 3,OFFSET_ppc64_CIA(31)
+
+ /* stats only */
+@@ -479,6 +534,9 @@ VG_(disp_cp_xindir):
+ /* Found a match. Jump to .host. */
+ mtctr 7
+ bctr
++#if _CALL_ELF == 2
++ .size VG_(disp_cp_xindir),.-VG_(disp_cp_xindir)
++#endif
+
+ .fast_lookup_failed:
+ /* stats only */
+@@ -496,39 +554,64 @@ VG_(disp_cp_xindir):
+ .section ".text"
+ .align 2
+ .globl VG_(disp_cp_xassisted)
+- .section ".opd","aw"
++#if _CALL_ELF == 2
++ .type VG_(disp_cp_xassisted),@function
++VG_(disp_cp_xassisted):
++#else
++ .section ".opd","aw"
+ .align 3
+ VG_(disp_cp_xassisted):
+ .quad .VG_(disp_cp_xassisted),.TOC.@tocbase,0
+ .previous
+- .type .VG_(disp_cp_xassisted),@function
++#endif
++#if _CALL_ELF == 2
++0: addis 2, 12,.TOC.-0b@ha
++ addi 2,2,.TOC.-0b@l
++ .localentry VG_(disp_cp_xassisted), .-VG_(disp_cp_xassisted)
++#endif
++ .type .VG_(disp_cp_xassisted),@function
+ .globl .VG_(disp_cp_xassisted)
+ .VG_(disp_cp_xassisted):
+ /* r31 contains the TRC */
+ mr 6,31
+ li 7,0
+ b .postamble
++#if _CALL_ELF == 2
++ .size VG_(disp_cp_xassisted),.-VG_(disp_cp_xassisted)
++#endif
+
+ /* ------ Event check failed ------ */
+ .section ".text"
+ .align 2
+ .globl VG_(disp_cp_evcheck_fail)
+- .section ".opd","aw"
++#if _CALL_ELF == 2
++ .type VG_(disp_cp_evcheck_fail),@function
++VG_(disp_cp_evcheck_fail):
++#else
++ .section ".opd","aw"
+ .align 3
+ VG_(disp_cp_evcheck_fail):
+ .quad .VG_(disp_cp_evcheck_fail),.TOC.@tocbase,0
+ .previous
++#endif
++#if _CALL_ELF == 2
++0: addis 2, 12,.TOC.-0b@ha
++ addi 2,2,.TOC.-0b@l
++ .localentry VG_(disp_cp_evcheck_fail), .-VG_(disp_cp_evcheck_fail)
++#endif
+ .type .VG_(disp_cp_evcheck_fail),@function
+ .globl .VG_(disp_cp_evcheck_fail)
+ .VG_(disp_cp_evcheck_fail):
+ li 6,VG_TRC_INNER_COUNTERZERO
+ li 7,0
+ b .postamble
++#if _CALL_ELF == 2
++ .size VG_(disp_cp_evcheck_fail),.-VG_(disp_cp_evcheck_fail)
++#endif
+
+-
+ .size .VG_(disp_run_translations), .-.VG_(disp_run_translations)
+
+-#endif // defined(VGP_ppc64be_linux)
++#endif // defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
+
+ /* Let the linker know we don't need an executable stack */
+ MARK_STACK_NO_EXEC
+diff --git a/coregrind/m_initimg/initimg-linux.c b/coregrind/m_initimg/initimg-linux.c
+index 61cc458bc..19df79705 100644
+--- a/coregrind/m_initimg/initimg-linux.c
++++ b/coregrind/m_initimg/initimg-linux.c
+@@ -1117,7 +1117,8 @@ void VG_(ii_finalise_image)( IIFinaliseImageInfo iifii )
+ arch->vex.guest_GPR1 = iifii.initial_client_SP;
+ arch->vex.guest_GPR2 = iifii.initial_client_TOC;
+ arch->vex.guest_CIA = iifii.initial_client_IP;
+-#if defined(VGP_ppc64le_linux)
++#if (defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)) \
++ && !defined(VG_PLAT_USES_PPCTOC)
+ arch->vex.guest_GPR12 = iifii.initial_client_IP;
+ #endif
+
+diff --git a/coregrind/m_libcsetjmp.c b/coregrind/m_libcsetjmp.c
+index c73180640..ed96f4739 100644
+--- a/coregrind/m_libcsetjmp.c
++++ b/coregrind/m_libcsetjmp.c
+@@ -35,6 +35,7 @@
+
+ #include "pub_core_basics.h"
+ #include "pub_core_libcsetjmp.h" /* self */
++#include "pub_core_machine.h" /* VG_PLAT_USES_PPCTOC */
+
+ /* See include/pub_tool_libcsetjmp.h for background and rationale. */
+
+@@ -151,7 +152,8 @@ __asm__(
+
+ /* ------------ ppc64-linux ------------ */
+
+-#if defined(VGP_ppc64be_linux)
++#if (defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)) \
++ && defined(VG_PLAT_USES_PPCTOC)
+
+ __asm__(
+ ".section \".toc\",\"aw\"" "\n"
+@@ -270,7 +272,8 @@ __asm__(
+ ".previous" "\n"
+ );
+
+-#elif defined(VGP_ppc64le_linux)
++#elif (defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)) \
++ && !defined(VG_PLAT_USES_PPCTOC)
+ __asm__(
+ ".section \".toc\",\"aw\"" "\n"
+
+diff --git a/coregrind/m_machine.c b/coregrind/m_machine.c
+index 31b0e1b6b..eb3e6a4e1 100644
+--- a/coregrind/m_machine.c
++++ b/coregrind/m_machine.c
+@@ -2035,7 +2035,8 @@ void* VG_(fnptr_to_fnentry)( void* f )
+ || defined(VGP_ppc32_linux) || defined(VGP_ppc64le_linux) \
+ || defined(VGP_s390x_linux) || defined(VGP_mips32_linux) \
+ || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) \
+- || defined(VGP_x86_solaris) || defined(VGP_amd64_solaris)
++ || defined(VGP_x86_solaris) || defined(VGP_amd64_solaris) \
++ || (defined(VGP_ppc64be_linux) && !defined(VG_PLAT_USES_PPCTOC))
+ return f;
+ # elif defined(VGP_ppc64be_linux)
+ /* ppc64-linux uses the AIX scheme, in which f is a pointer to a
+diff --git a/coregrind/m_main.c b/coregrind/m_main.c
+index bf4a71284..102235dca 100644
+--- a/coregrind/m_main.c
++++ b/coregrind/m_main.c
+@@ -2274,7 +2274,7 @@ static void final_tidyup(ThreadId tid)
+ return; /* won't do it */
+ }
+
+-# if defined(VGP_ppc64be_linux)
++# if defined(VGP_ppc64be_linux) && defined(VG_PLAT_USES_PPCTOC)
+ Addr r2 = VG_(get_tocptr)(freeres_wrapper);
+ if (r2 == 0) {
+ VG_(message)(Vg_UserMsg,
+@@ -2306,9 +2306,11 @@ static void final_tidyup(ThreadId tid)
+ directly. However, we need to set R2 (the toc pointer)
+ appropriately. */
+ VG_(set_IP)(tid, freeres_wrapper);
+-# if defined(VGP_ppc64be_linux)
++# if (defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)) \
++ && defined(VG_PLAT_USES_PPCTOC)
+ VG_(threads)[tid].arch.vex.guest_GPR2 = r2;
+-# elif defined(VGP_ppc64le_linux)
++# elif (defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)) \
++ && !defined(VG_PLAT_USES_PPCTOC)
+ /* setting GPR2 but not really needed, GPR12 is needed */
+ VG_(threads)[tid].arch.vex.guest_GPR2 = freeres_wrapper;
+ VG_(threads)[tid].arch.vex.guest_GPR12 = freeres_wrapper;
+@@ -2610,9 +2612,10 @@ asm("\n"
+ "\ttrap\n"
+ ".previous\n"
+ );
+-#elif defined(VGP_ppc64be_linux)
++#elif (defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)) \
++ && defined(VG_PLAT_USES_PPCTOC)
+ asm("\n"
+- /* PPC64 ELF ABI says '_start' points to a function descriptor.
++ /* PPC64 ELFv1 ABI says '_start' points to a function descriptor.
+ So we must have one, and that is what goes into the .opd section. */
+ "\t.align 2\n"
+ "\t.global _start\n"
+@@ -2656,9 +2659,9 @@ asm("\n"
+ "\tnop\n"
+ "\ttrap\n"
+ );
+-#elif defined(VGP_ppc64le_linux)
+-/* Little Endian uses ELF version 2 but in the future may also
+- * support other ELF versions.
++#elif (defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)) \
++ && !defined(VG_PLAT_USES_PPCTOC)
++/* ELF version 2 does not use function descriptors.
+ */
+ asm("\n"
+ "\t.align 2\n"
+diff --git a/coregrind/m_sigframe/sigframe-ppc64-linux.c b/coregrind/m_sigframe/sigframe-ppc64-linux.c
+index b16606c22..cc657838f 100644
+--- a/coregrind/m_sigframe/sigframe-ppc64-linux.c
++++ b/coregrind/m_sigframe/sigframe-ppc64-linux.c
+@@ -263,7 +263,8 @@ void VG_(sigframe_create)( ThreadId tid,
+
+ /* Handler is in fact a standard ppc64-linux function descriptor,
+ so extract the function entry point and also the toc ptr to use. */
+-#if defined(VGP_ppc64be_linux)
++#if (defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)) \
++ && defined(VG_PLAT_USES_PPCTOC)
+ SET_SIGNAL_GPR(tid, 2, (Addr) ((ULong*)handler)[1]);
+ tst->arch.vex.guest_CIA = (Addr) ((ULong*)handler)[0];
+ #else
+diff --git a/coregrind/m_signals.c b/coregrind/m_signals.c
+index e572f17cc..52d939057 100644
+--- a/coregrind/m_signals.c
++++ b/coregrind/m_signals.c
+@@ -889,7 +889,9 @@ extern void my_sigreturn(void);
+ " sc\n" \
+ ".previous\n"
+
+-#elif defined(VGP_ppc64be_linux)
++#elif (defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)) \
++ && defined(VG_PLAT_USES_PPCTOC)
++/* ELF version 1. Used in some legacy environments on LE, and most BE. */
+ # define _MY_SIGRETURN(name) \
+ ".align 2\n" \
+ ".globl my_sigreturn\n" \
+@@ -904,9 +906,10 @@ extern void my_sigreturn(void);
+ " li 0, " #name "\n" \
+ " sc\n"
+
+-#elif defined(VGP_ppc64le_linux)
+-/* Little Endian supports ELF version 2. In the future, it may
+- * support other versions.
++#elif (defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)) \
++ && !defined(VG_PLAT_USES_PPCTOC)
++/* ELF version 2. In the future, PPC64 may support other versions. Used by
++ * most LE environments and any BE environment running musl libc.
+ */
+ # define _MY_SIGRETURN(name) \
+ ".align 2\n" \
+diff --git a/coregrind/m_stacktrace.c b/coregrind/m_stacktrace.c
+index 24f1409dd..9be4c6da9 100644
+--- a/coregrind/m_stacktrace.c
++++ b/coregrind/m_stacktrace.c
+@@ -726,7 +726,8 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known,
+ Addr fp_max_orig )
+ {
+ Bool lr_is_first_RA = False;
+-# if defined(VG_PLAT_USES_PPCTOC) || defined(VGP_ppc64le_linux)
++# if defined(VG_PLAT_USES_PPCTOC) || defined(VGP_ppc64be_linux) \
++ || defined(VGP_ppc64le_linux)
+ Word redir_stack_size = 0;
+ Word redirs_used = 0;
+ # endif
+@@ -787,7 +788,8 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known,
+ redirs_used = 0;
+ # endif
+
+-# if defined(VG_PLAT_USES_PPCTOC) || defined (VGP_ppc64le_linux)
++# if defined(VG_PLAT_USES_PPCTOC) || defined(VGP_ppc64be_linux) \
++ || defined(VGP_ppc64le_linux)
+ /* Deal with bogus LR values caused by function
+ interception/wrapping on ppc-TOC platforms; see comment on
+ similar code a few lines further down. */
+@@ -839,7 +841,8 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known,
+ /* On ppc64-linux (ppc64-elf, really), the lr save
+ slot is 2 words back from sp, whereas on ppc32-elf(?) it's
+ only one word back. */
+-# if defined(VG_PLAT_USES_PPCTOC) || defined(VGP_ppc64le_linux)
++# if defined(VG_PLAT_USES_PPCTOC) || defined(VGP_ppc64be_linux) \
++ || defined(VGP_ppc64le_linux)
+ const Int lr_offset = 2;
+ # else
+ const Int lr_offset = 1;
+@@ -858,7 +861,8 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known,
+ else
+ ip = (((UWord*)fp)[lr_offset]);
+
+-# if defined(VG_PLAT_USES_PPCTOC) || defined(VGP_ppc64le_linux)
++# if defined(VG_PLAT_USES_PPCTOC) || defined(VGP_ppc64be_linux) \
++ || defined(VGP_ppc64le_linux)
+ /* Nasty hack to do with function replacement/wrapping on
+ ppc64-linux. If LR points to our magic return stub,
+ then we are in a wrapped or intercepted function, in
+diff --git a/coregrind/m_syscall.c b/coregrind/m_syscall.c
+index 5948cecf5..c1cdfab27 100644
+--- a/coregrind/m_syscall.c
++++ b/coregrind/m_syscall.c
+@@ -470,7 +470,8 @@ asm(
+ ".previous\n"
+ );
+
+-#elif defined(VGP_ppc64be_linux)
++#elif (defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)) \
++ && defined(VG_PLAT_USES_PPCTOC)
+ /* Due to the need to return 65 bits of result, this is completely
+ different from the ppc32 case. The single arg register points to a
+ 7-word block containing the syscall # and the 6 args. The syscall
+@@ -506,15 +507,15 @@ asm(
+ " blr\n"
+ );
+
+-#elif defined(VGP_ppc64le_linux)
++#elif (defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)) \
++ && !defined(VG_PLAT_USES_PPCTOC)
+ /* Due to the need to return 65 bits of result, this is completely
+ different from the ppc32 case. The single arg register points to a
+ 7-word block containing the syscall # and the 6 args. The syscall
+ result proper is put in [0] of the block, and %cr0.so is in the
+ bottom bit of [1]. */
+ extern void do_syscall_WRK ( ULong* argblock );
+-/* Little Endian supports ELF version 2. In the future, it may support
+- * other versions as well.
++/* ELF version 2. In the future, PPC64 may support other versions as well.
+ */
+ asm(
+ ".align 2\n"
+diff --git a/coregrind/m_syswrap/syscall-ppc64be-linux.S b/coregrind/m_syswrap/syscall-ppc64be-linux.S
+index 16e9cedc0..db0d8b4aa 100644
+--- a/coregrind/m_syswrap/syscall-ppc64be-linux.S
++++ b/coregrind/m_syswrap/syscall-ppc64be-linux.S
+@@ -76,11 +76,24 @@
+
+ .align 2
+ .globl ML_(do_syscall_for_client_WRK)
++#if _CALL_ELF == 2
++.type .ML_(do_syscall_for_client_WRK),@function
++ML_(do_syscall_for_client_WRK):
++0: addis 2,12,.TOC.-0b@ha
++ addi 2,2,.TOC.-0b@l
++ .localentry ML_(do_syscall_for_client_WRK), .-ML_(do_syscall_for_client_WRK)
++#else
+ .section ".opd","aw"
+ .align 3
+-ML_(do_syscall_for_client_WRK):
++ML_(do_syscall_for_client_WRK):
+ .quad .ML_(do_syscall_for_client_WRK),.TOC.@tocbase,0
+ .previous
++#endif
++#if _CALL_ELF == 2
++0: addis 2,12,.TOC.-0b@ha
++ addi 2,2,.TOC.-0b@l
++ .localentry ML_(do_syscall_for_client_WRK), .-ML_(do_syscall_for_client_WRK)
++#endif
+ .type .ML_(do_syscall_for_client_WRK),@function
+ .globl .ML_(do_syscall_for_client_WRK)
+ .ML_(do_syscall_for_client_WRK):
+@@ -145,7 +158,9 @@ ML_(do_syscall_for_client_WRK):
+ /* failure: return 0x8000 | error code */
+ 7: ori 3,3,0x8000 /* FAILURE -- ensure return value is nonzero */
+ b 5b
+-
++#if _CALL_ELF == 2
++ .size .ML_(do_syscall_for_client_WRK),.-.ML_(do_syscall_for_client_WRK)
++#endif
+ .section .rodata
+ /* export the ranges so that
+ VG_(fixup_guest_state_after_syscall_interrupted) can do the
+diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c
+index 6549dd1b3..4ecbe38a6 100644
+--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c
++++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c
+@@ -41,6 +41,7 @@
+ #include "pub_core_libcprint.h"
+ #include "pub_core_libcproc.h"
+ #include "pub_core_libcsignal.h"
++#include "pub_core_machine.h"
+ #include "pub_core_options.h"
+ #include "pub_core_scheduler.h"
+ #include "pub_core_sigframe.h" // For VG_(sigframe_destroy)()
+@@ -76,7 +77,8 @@ void ML_(call_on_new_stack_0_1) ( Addr stack,
+ address, the second word is the TOC ptr (r2), and the third word is
+ the static chain value. */
+ asm(
+-#if defined(VGP_ppc64be_linux)
++#if (defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)) \
++ && defined(VG_PLAT_USES_PPCTOC)
+ " .align 2\n"
+ " .globl vgModuleLocal_call_on_new_stack_0_1\n"
+ " .section \".opd\",\"aw\"\n"
+@@ -126,7 +128,7 @@ asm(
+ " bctr\n\t" // jump to dst
+ " trap\n" // should never get here
+ #else
+-// ppc64le_linux
++// ppc64 ELFv2 Linux
+ " .align 2\n"
+ " .globl vgModuleLocal_call_on_new_stack_0_1\n"
+ "vgModuleLocal_call_on_new_stack_0_1:\n"
+@@ -211,7 +213,8 @@ asm(
+
+ // See priv_syswrap-linux.h for arg profile.
+ asm(
+-#if defined(VGP_ppc64be_linux)
++#if (defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)) \
++ && defined(VG_PLAT_USES_PPCTOC)
+ " .align 2\n"
+ " .globl do_syscall_clone_ppc64_linux\n"
+ " .section \".opd\",\"aw\"\n"
+diff --git a/coregrind/m_trampoline.S b/coregrind/m_trampoline.S
+index 0488b54bd..d00916aef 100644
+--- a/coregrind/m_trampoline.S
++++ b/coregrind/m_trampoline.S
+@@ -469,11 +469,11 @@ VG_(ppctoc_magic_redirect_return_stub):
+ .align 2
+ .globl VG_(ppc64_linux_REDIR_FOR_strlen)
+ #if !defined VGP_ppc64be_linux || _CALL_ELF == 2
+- /* Little Endian uses ELF version 2 */
++ /* ELF version 2 */
+ .type VG_(ppc64_linux_REDIR_FOR_strlen),@function
+ VG_(ppc64_linux_REDIR_FOR_strlen):
+ #else
+- /* Big Endian uses ELF version 1 */
++ /* ELF version 1 */
+ .section ".opd","aw"
+ .align 3
+ VG_(ppc64_linux_REDIR_FOR_strlen):
+diff --git a/coregrind/m_translate.c b/coregrind/m_translate.c
+index 3602a4663..bdd1d50ee 100644
+--- a/coregrind/m_translate.c
++++ b/coregrind/m_translate.c
+@@ -1006,7 +1006,8 @@ static IRExpr* mkU32 ( UInt n ) {
+ return IRExpr_Const(IRConst_U32(n));
+ }
+
+-#if defined(VG_PLAT_USES_PPCTOC) || defined(VGP_ppc64le_linux)
++#if defined(VG_PLAT_USES_PPCTOC) || defined(VGP_ppc64be_linux) \
++ || defined(VGP_ppc64le_linux)
+ static IRExpr* mkU8 ( UChar n ) {
+ return IRExpr_Const(IRConst_U8(n));
+ }
+@@ -1234,7 +1234,8 @@ static void gen_push_and_set_LR_R2 ( IRSB* bb, Addr new_R2_value )
+ }
+ #endif
+
+-#if defined(VG_PLAT_USES_PPCTOC) || defined(VGP_ppc64le_linux)
++#if defined(VG_PLAT_USES_PPCTOC) || defined(VGP_ppc64be_linux) \
++ || defined(VGP_ppc64le_linux)
+
+ static void gen_pop_R2_LR_then_bLR ( IRSB* bb )
+ {
+@@ -1263,7 +1264,8 @@ static void gen_pop_R2_LR_then_bLR ( IRSB* bb )
+ }
+ #endif
+
+-#if defined(VG_PLAT_USES_PPCTOC) || defined(VGP_ppc64le_linux)
++#if defined(VG_PLAT_USES_PPCTOC) || defined(VGP_ppc64be_linux) \
++ || defined(VGP_ppc64le_linux)
+
+ static
+ Bool mk_preamble__ppctoc_magic_return_stub ( void* closureV, IRSB* bb )
+@@ -1285,7 +1287,7 @@ Bool mk_preamble__ppctoc_magic_return_stub ( void* closureV, IRSB* bb )
+ }
+ #endif
+
+-#if defined(VGP_ppc64le_linux)
++#if defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
+ /* Generate code to push LR and R2 onto this thread's redir stack.
+ Need to save R2 in case we redirect to a global entry point. The
+ value of R2 is not preserved when entering the global entry point.
+@@ -1366,9 +1368,7 @@ Bool mk_preamble__set_NRADDR_to_zero ( void* closureV, IRSB* bb )
+ gen_push_and_set_LR_R2 ( bb, VG_(get_tocptr)( VG_(current_DiEpoch)(),
+ closure->readdr ) );
+ }
+-# endif
+-
+-#if defined(VGP_ppc64le_linux)
++#elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
+ VgCallbackClosure* closure = (VgCallbackClosure*)closureV;
+ Int offB_GPR12 = offsetof(VexGuestArchState, guest_GPR12);
+ addStmtToIRSB(bb, IRStmt_Put(offB_GPR12, mkU64(closure->readdr)));
+@@ -1424,7 +1424,6 @@ Bool mk_preamble__set_NRADDR_to_nraddr ( void* closureV, IRSB* bb )
+ );
+ gen_push_and_set_LR_R2 ( bb, VG_(get_tocptr)( closure->readdr ) );
+-# endif
+-#if defined(VGP_ppc64le_linux)
++#elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
+ /* This saves the r2 before leaving the function. We need to move
+ * guest_NRADDR_GPR2 back to R2 on return.
+ */
+@@ -1648,7 +1647,8 @@ Bool VG_(translate) ( ThreadId tid,
+ preamble_fn = mk_preamble__set_NRADDR_to_nraddr;
+
+ /* LE we setup the LR */
+-# if defined(VG_PLAT_USES_PPCTOC) || defined(VGP_ppc64le_linux)
++# if defined(VG_PLAT_USES_PPCTOC) || defined(VGP_ppc64be_linux) \
++ || defined(VGP_ppc64le_linux)
+ if (nraddr == (Addr)&VG_(ppctoc_magic_redirect_return_stub)) {
+ /* If entering the special return stub, this means a wrapped or
+ redirected function is returning. Make this translation one
+@@ -1692,13 +1692,14 @@ Bool VG_(translate) ( ThreadId tid,
+ vex_abiinfo.guest_ppc_zap_RZ_at_bl = NULL;
+ # endif
+
+-# if defined(VGP_ppc64be_linux)
++# if defined(VGP_ppc64be_linux) && defined(VG_PLAT_USES_PPCTOC)
+ vex_abiinfo.guest_ppc_zap_RZ_at_blr = True;
+ vex_abiinfo.guest_ppc_zap_RZ_at_bl = const_True;
+ vex_abiinfo.host_ppc_calls_use_fndescrs = True;
+ # endif
+
+-# if defined(VGP_ppc64le_linux)
++# if (defined(VGP_ppc64be_linux) && !defined(VG_PLAT_USES_PPCTOC)) \
++ || defined(VGP_ppc64le_linux)
+ vex_abiinfo.guest_ppc_zap_RZ_at_blr = True;
+ vex_abiinfo.guest_ppc_zap_RZ_at_bl = const_True;
+ vex_abiinfo.host_ppc_calls_use_fndescrs = False;
+diff --git a/coregrind/m_ume/elf.c b/coregrind/m_ume/elf.c
+index 21eb52bcb..f1e6b4728 100644
+--- a/coregrind/m_ume/elf.c
++++ b/coregrind/m_ume/elf.c
+@@ -847,8 +847,8 @@ Int VG_(load_ELF)(Int fd, const HChar* name, /*MOD*/ExeInfo* info)
+ info->exe_base = minaddr + ebase;
+ info->exe_end = maxaddr + ebase;
+
+-#if defined(VGP_ppc64be_linux)
+- /* On PPC64BE, ELF ver 1, a func ptr is represented by a TOC entry ptr.
++#if defined(VGP_ppc64be_linux) && defined(VG_PLAT_USES_PPCTOC)
++ /* On PPC64, ELF ver 1, a func ptr is represented by a TOC entry ptr.
+ This TOC entry contains three words; the first word is the function
+ address, the second word is the TOC ptr (r2), and the third word
+ is the static chain value. */
+@@ -856,8 +856,8 @@ Int VG_(load_ELF)(Int fd, const HChar* name, /*MOD*/ExeInfo* info)
+ info->init_toc = ((ULong*)entry)[1];
+ info->init_ip += info->interp_offset;
+ info->init_toc += info->interp_offset;
+-#elif defined(VGP_ppc64le_linux)
+- /* On PPC64LE, ELF ver 2. API doesn't use a func ptr */
++#elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
++ /* On PPC64, ELF ver 2. API doesn't use a func ptr */
+ info->init_ip = (Addr)entry;
+ info->init_toc = 0; /* meaningless on this platform */
+ #else
+diff --git a/coregrind/pub_core_machine.h b/coregrind/pub_core_machine.h
+index d6af843df..400148d57 100644
+--- a/coregrind/pub_core_machine.h
++++ b/coregrind/pub_core_machine.h
+@@ -60,12 +60,20 @@
+ # define VG_ELF_DATA2XXX ELFDATA2MSB
+ # define VG_ELF_MACHINE EM_PPC64
+ # define VG_ELF_CLASS ELFCLASS64
+-# define VG_PLAT_USES_PPCTOC 1
++# if !defined(_CALL_ELF) || _CALL_ELF == 1
++# define VG_PLAT_USES_PPCTOC 1
++# else
++# undef VG_PLAT_USES_PPCTOC
++# endif
+ #elif defined(VGP_ppc64le_linux)
+ # define VG_ELF_DATA2XXX ELFDATA2LSB
+ # define VG_ELF_MACHINE EM_PPC64
+ # define VG_ELF_CLASS ELFCLASS64
+-# undef VG_PLAT_USES_PPCTOC
++# if defined(_CALL_ELF) && _CALL_ELF == 1
++# define VG_PLAT_USES_PPCTOC 1
++# else // assume ELFv2 by default if no ABI is specified
++# undef VG_PLAT_USES_PPCTOC
++# endif
+ #elif defined(VGP_arm_linux)
+ # define VG_ELF_DATA2XXX ELFDATA2LSB
+ # define VG_ELF_MACHINE EM_ARM
+diff --git a/coregrind/vg_preloaded.c b/coregrind/vg_preloaded.c
+index ad033432a..f300fbe80 100644
+--- a/coregrind/vg_preloaded.c
++++ b/coregrind/vg_preloaded.c
+@@ -45,6 +45,7 @@
+ #include "pub_core_basics.h"
+ #include "pub_core_clreq.h"
+ #include "pub_core_debuginfo.h" // Needed for pub_core_redir.h
++#include "pub_core_machine.h" // For VG_PLAT_USES_PPCTOC
+ #include "pub_core_redir.h" // For VG_NOTIFY_ON_LOAD
+
+ #if defined(VGO_linux) || defined(VGO_solaris)
+@@ -103,7 +104,7 @@ void * VG_NOTIFY_ON_LOAD(ifunc_wrapper) (void)
+ VALGRIND_GET_ORIG_FN(fn);
+ CALL_FN_W_v(result, fn);
+
+-#if defined(VGP_ppc64be_linux)
++#if defined(VGP_ppc64be_linux) && defined(VG_PLAT_USES_PPCTOC)
+ /* ppc64be uses function descriptors, so get the actual function entry
+ address for the client request, but return the function descriptor
+ from this function.
+diff --git a/include/valgrind.h b/include/valgrind.h
+index 577c8f05e..99e058ccf 100644
+--- a/include/valgrind.h
++++ b/include/valgrind.h
+@@ -143,12 +143,20 @@
+ # define PLAT_amd64_linux 1
+ #elif defined(__linux__) && defined(__powerpc__) && !defined(__powerpc64__)
+ # define PLAT_ppc32_linux 1
+-#elif defined(__linux__) && defined(__powerpc__) && defined(__powerpc64__) && _CALL_ELF != 2
+-/* Big Endian uses ELF version 1 */
++#elif defined(__linux__) && defined(__powerpc__) && defined(__powerpc64__) && defined(__BIG_ENDIAN__)
+ # define PLAT_ppc64be_linux 1
+-#elif defined(__linux__) && defined(__powerpc__) && defined(__powerpc64__) && _CALL_ELF == 2
+-/* Little Endian uses ELF version 2 */
++# if _CALL_ELF == 2
++# define PLAT_ppc64_linux_abi2
++# else
++# define PLAT_ppc64_linux_abi1
++# endif
++#elif defined(__linux__) && defined(__powerpc__) && defined(__powerpc64__) && !defined(__BIG_ENDIAN__)
+ # define PLAT_ppc64le_linux 1
++# if _CALL_ELF == 2
++# define PLAT_ppc64_linux_abi2
++# else
++# define PLAT_ppc64_linux_abi1
++# endif
+ #elif defined(__linux__) && defined(__arm__) && !defined(__aarch64__)
+ # define PLAT_arm_linux 1
+ #elif defined(__linux__) && defined(__aarch64__) && !defined(__arm__)
+diff --git a/memcheck/mc_leakcheck.c b/memcheck/mc_leakcheck.c
+index 782244481..c239f5b10 100644
+--- a/memcheck/mc_leakcheck.c
++++ b/memcheck/mc_leakcheck.c
+@@ -653,7 +653,7 @@ static Bool aligned_ptr_above_page0_is_vtable_addr(Addr ptr)
+ if (pot_fn == 0)
+ continue; // NULL fn pointer. Seems it can happen in vtable.
+ seg = VG_(am_find_nsegment) (pot_fn);
+-#if defined(VGA_ppc64be)
++#if defined(VGA_ppc64be) && (!defined(_CALL_ELF) || _CALL_ELF == 1)
+ // ppc64BE uses a thunk table (function descriptors), so we have one
+ // more level of indirection to follow.
+ if (seg == NULL
+diff --git a/memcheck/mc_machine.c b/memcheck/mc_machine.c
+index 5ed101fca..70c64b361 100644
+--- a/memcheck/mc_machine.c
++++ b/memcheck/mc_machine.c
+@@ -132,7 +132,8 @@ static Int get_otrack_shadow_offset_wrk ( Int offset, Int szB )
+ return GOF(GPRn);
+ by testing ox instead of o, and setting ox back 4 bytes when sz == 4.
+ */
+-#if defined(VGA_ppc64le)
++#if (defined(VGA_ppc64be) && (defined(_CALL_ELF) && _CALL_ELF == 2)) \
++ || defined(VGA_ppc64le)
+ Int ox = o;
+ #else
+ Int ox = sz == 8 ? o : (o - 4);
+--
+2.18.0
+
diff --git a/user/valgrind/APKBUILD b/user/valgrind/APKBUILD
index 58ed29fa1..d79ba75c4 100644
--- a/user/valgrind/APKBUILD
+++ b/user/valgrind/APKBUILD
@@ -1,12 +1,12 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=valgrind
pkgver=3.13.0
-pkgrel=1
+pkgrel=4
pkgdesc="A tool to help find memory-management problems in programs"
url="http://valgrind.org/"
arch="all"
license="GPL-2.0+"
-makedepends="autoconf automake libtool bash perl"
+makedepends="autoconf automake libtool bash perl cmd:which"
# from README_PACKAGERS:
# Don't strip the debug info off lib/valgrind/$platform/vgpreload*.so
# in the installation tree. Either Valgrind won't work at all, or it
@@ -17,9 +17,9 @@ subpackages="$pkgname-dev $pkgname-doc"
source="ftp://sourceware.org/pub/$pkgname/$pkgname-$pkgver.tar.bz2
uclibc.patch
arm.patch
- coregrind-elfv2.patch"
-# musl-fixes.patch
-builddir="$srcdir"/$pkgname-$pkgver
+ 0001-Ensure-ELFv2-is-supported-on-PPC64.patch
+ suppressions.patch
+ "
prepare() {
default_prepare
@@ -67,4 +67,5 @@ package() {
sha512sums="34e1013cd3815d30a459b86220e871bb0a6209cc9e87af968f347083693779f022e986f211bdf1a5184ad7370cde12ff2cfca8099967ff94732970bd04a97009 valgrind-3.13.0.tar.bz2
d59a10db9037e120df2ee94a103402ca95a79abee9d8be63e4e1bca29c82dca775cc402a79b854ec11a2160a4d2da202c237369418e221d1925267ea2613fd5d uclibc.patch
9ee297d1b2b86891584443ad0caadc4977e1447979611ccf1cc55dbee61911b0b063bc4ad936d86c451cedae410cb3219b5a088b2ad0aa17df182d564fe36cfe arm.patch
-0f54b7b207870f495a0cf010b3091e2c0626bbf93b8a5ba7956b690981d4186de61f3e3b1fdc3aec2dfcacb69e712900f32c883a09dd4733c1e4569506272520 coregrind-elfv2.patch"
+71afb12748f69f0976a299c65572818b70cbce5d04f230a49a50f114351d8083c59a9e197cefbcb9145806797ff4d1d54488f50342b680c9a2b76e4a7f7cf305 0001-Ensure-ELFv2-is-supported-on-PPC64.patch
+d011b2769d35ca3206967e6dac9f3fb24a6496e5bbfdc73342382245c89375b09d6948b10ba3cf8aa0050c79c0dd13b75764aec0ec5c6ac479fa930941067747 suppressions.patch"
diff --git a/user/valgrind/coregrind-elfv2.patch b/user/valgrind/coregrind-elfv2.patch
deleted file mode 100644
index 7e4a2d636..000000000
--- a/user/valgrind/coregrind-elfv2.patch
+++ /dev/null
@@ -1,443 +0,0 @@
-The LE and BE code here is the same, except the BE has the old-style
-function descriptor. So, we use the LE code on ELFv2 to fix build errors.
-
---- valgrind-3.13.0/coregrind/m_libcsetjmp.c 2017-05-31 10:14:45.000000000 -0500
-+++ valgrind-3.13.0/coregrind/m_libcsetjmp.c 2018-05-25 20:07:37.007835735 -0500
-@@ -149,7 +149,7 @@
-
- /* ------------ ppc64-linux ------------ */
-
--#if defined(VGP_ppc64be_linux)
-+#if defined(VGP_ppc64be_linux) && (!defined(_CALL_ELF) || _CALL_ELF == 1)
-
- __asm__(
- ".section \".toc\",\"aw\"" "\n"
-@@ -268,7 +268,8 @@
- ".previous" "\n"
- );
-
--#elif defined(VGP_ppc64le_linux)
-+#elif (defined(VGP_ppc64le_linux)) || \
-+ (defined(VGP_ppc64be_linux) && defined(_CALL_ELF) && _CALL_ELF == 2)
- __asm__(
- ".section \".toc\",\"aw\"" "\n"
-
---- valgrind-3.13.0/coregrind/m_main.c.old 2017-05-31 10:14:52.000000000 -0500
-+++ valgrind-3.13.0/coregrind/m_main.c 2018-05-30 19:01:00.534083618 -0500
-@@ -2585,7 +2585,7 @@
- "\ttrap\n"
- ".previous\n"
- );
--#elif defined(VGP_ppc64be_linux)
-+#elif defined(VGP_ppc64be_linux) && (!defined(_CALL_ELF) || _CALL_ELF == 1)
- asm("\n"
- /* PPC64 ELF ABI says '_start' points to a function descriptor.
- So we must have one, and that is what goes into the .opd section. */
-@@ -2631,9 +2631,9 @@
- "\tnop\n"
- "\ttrap\n"
- );
--#elif defined(VGP_ppc64le_linux)
--/* Little Endian uses ELF version 2 but in the future may also
-- * support other ELF versions.
-+#elif defined(VGP_ppc64le_linux) || \
-+ (defined(VGP_ppc64be_linux) && defined(_CALL_ELF) && _CALL_ELF == 2)
-+/* PowerPC 64 ELF version 2 does not use function descriptors.
- */
- asm("\n"
- "\t.align 2\n"
---- valgrind-3.13.0/coregrind/m_syscall.c.old 2017-05-31 10:14:29.000000000 -0500
-+++ valgrind-3.13.0/coregrind/m_syscall.c 2018-05-30 19:02:00.984023769 -0500
-@@ -470,7 +470,7 @@
- ".previous\n"
- );
-
--#elif defined(VGP_ppc64be_linux)
-+#elif defined(VGP_ppc64be_linux) && (!defined(_CALL_ELF) || _CALL_ELF == 1)
- /* Due to the need to return 65 bits of result, this is completely
- different from the ppc32 case. The single arg register points to a
- 7-word block containing the syscall # and the 6 args. The syscall
-@@ -506,7 +506,8 @@
- " blr\n"
- );
-
--#elif defined(VGP_ppc64le_linux)
-+#elif defined(VGP_ppc64le_linux) || \
-+ (defined(VGP_ppc64be_linux) && defined(_CALL_ELF) && _CALL_ELF == 2)
- /* Due to the need to return 65 bits of result, this is completely
- different from the ppc32 case. The single arg register points to a
- 7-word block containing the syscall # and the 6 args. The syscall
---- valgrind-3.13.0/coregrind/m_signals.c.old 2017-05-31 10:14:52.000000000 -0500
-+++ valgrind-3.13.0/coregrind/m_signals.c 2018-05-30 22:12:46.082692356 -0500
-@@ -889,7 +889,7 @@
- " sc\n" \
- ".previous\n"
-
--#elif defined(VGP_ppc64be_linux)
-+#elif defined(VGP_ppc64be_linux) && (!defined(_CALL_ELF) || _CALL_ELF == 1)
- # define _MY_SIGRETURN(name) \
- ".align 2\n" \
- ".globl my_sigreturn\n" \
-@@ -904,7 +904,8 @@
- " li 0, " #name "\n" \
- " sc\n"
-
--#elif defined(VGP_ppc64le_linux)
-+#elif defined(VGP_ppc64le_linux) || \
-+ (defined(VGP_ppc64be_linux) && defined(_CALL_ELF) && _CALL_ELF == 2)
- /* Little Endian supports ELF version 2. In the future, it may
- * support other versions.
- */
---- valgrind-3.13.0/coregrind/m_syswrap/syswrap-ppc64-linux.c.old 2017-05-31 10:14:39.000000000 -0500
-+++ valgrind-3.13.0/coregrind/m_syswrap/syswrap-ppc64-linux.c 2018-05-30 22:15:42.112518074 -0500
-@@ -71,12 +71,12 @@
- // r4 = retaddr
- // r5 = function descriptor
- // r6 = arg1
--/* On PPC64, a func ptr is represented by a TOC entry ptr.
-+/* On ELFv1, a func ptr is represented by a TOC entry ptr.
- This TOC entry contains three words; the first word is the function
- address, the second word is the TOC ptr (r2), and the third word is
- the static chain value. */
- asm(
--#if defined(VGP_ppc64be_linux)
-+#if defined(VGP_ppc64be_linux) && (!defined(_CALL_ELF) || _CALL_ELF == 1)
- " .align 2\n"
- " .globl vgModuleLocal_call_on_new_stack_0_1\n"
- " .section \".opd\",\"aw\"\n"
-@@ -126,7 +126,7 @@
- " bctr\n\t" // jump to dst
- " trap\n" // should never get here
- #else
--// ppc64le_linux
-+// ppc64le_linux, or ELFv2 ABI on BE
- " .align 2\n"
- " .globl vgModuleLocal_call_on_new_stack_0_1\n"
- "vgModuleLocal_call_on_new_stack_0_1:\n"
-@@ -211,7 +211,7 @@
-
- // See priv_syswrap-linux.h for arg profile.
- asm(
--#if defined(VGP_ppc64be_linux)
-+#if defined(VGP_ppc64be_linux) && (!defined(_CALL_ELF) || _CALL_ELF == 1)
- " .align 2\n"
- " .globl do_syscall_clone_ppc64_linux\n"
- " .section \".opd\",\"aw\"\n"
---- valgrind-3.13.0/coregrind/m_syswrap/syscall-ppc64be-linux.S.old 2017-05-31 10:14:39.000000000 -0500
-+++ valgrind-3.13.0/coregrind/m_syswrap/syscall-ppc64be-linux.S 2018-05-30 22:18:31.742350130 -0500
-@@ -29,7 +29,7 @@
-
- #include "pub_core_basics_asm.h"
-
--#if defined(VGP_ppc64be_linux)
-+#if defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
-
- #include "pub_core_vkiscnums_asm.h"
- #include "libvex_guest_offsets.h"
-@@ -76,12 +76,25 @@
-
- .align 2
- .globl ML_(do_syscall_for_client_WRK)
-+#if _CALL_ELF == 2
-+.type .ML_(do_syscall_for_client_WRK),@function
-+ML_(do_syscall_for_client_WRK):
-+0: addis 2,12,.TOC.-0b@ha
-+ addi 2,2,.TOC.-0b@l
-+ .localentry ML_(do_syscall_for_client_WRK), .-ML_(do_syscall_for_client_WRK)
-+#else
- .section ".opd","aw"
- .align 3
--ML_(do_syscall_for_client_WRK):
-+ML_(do_syscall_for_client_WRK):
- .quad .ML_(do_syscall_for_client_WRK),.TOC.@tocbase,0
- .previous
--.type .ML_(do_syscall_for_client_WRK),@function
-+#endif
-+#if _CALL_ELF == 2
-+0: addis 2,12,.TOC.-0b@ha
-+ addi 2,2,.TOC.-0b@l
-+ .localentry ML_(do_syscall_for_client_WRK), .-ML_(do_syscall_for_client_WRK)
-+#endif
-+.type .ML_(do_syscall_for_client_WRK),@function
- .globl .ML_(do_syscall_for_client_WRK)
- .ML_(do_syscall_for_client_WRK):
- /* make a stack frame */
-@@ -145,7 +158,11 @@
- /* failure: return 0x8000 | error code */
- 7: ori 3,3,0x8000 /* FAILURE -- ensure return value is nonzero */
- b 5b
--
-+#if _CALL_ELF == 2
-+ .size .ML_(do_syscall_for_client_WRK),.-.ML_(do_syscall_for_client_WRK)
-+#else
-+ .size .ML_(do_syscall_for_client_WRK),.-.ML_(do_syscall_for_client_WRK)
-+#endif
- .section .rodata
- /* export the ranges so that
- VG_(fixup_guest_state_after_syscall_interrupted) can do the
-@@ -162,7 +179,7 @@
- ML_(blksys_committed): .quad 4b
- ML_(blksys_finished): .quad 5b
-
--#endif // defined(VGP_ppc64be_linux)
-+#endif // defined(VGP_ppc64le_linux)
-
- /* Let the linker know we don't need an executable stack */
- MARK_STACK_NO_EXEC
---- valgrind-3.13.0/coregrind/m_dispatch/dispatch-ppc64be-linux.S.old 2017-05-31 10:14:33.000000000 -0500
-+++ valgrind-3.13.0/coregrind/m_dispatch/dispatch-ppc64be-linux.S 2018-05-30 22:39:37.951096498 -0500
-@@ -30,12 +30,21 @@
-
- #include "pub_core_basics_asm.h"
-
--#if defined(VGP_ppc64be_linux)
-+#if defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
-
- #include "pub_core_dispatch_asm.h"
- #include "pub_core_transtab_asm.h"
- #include "libvex_guest_offsets.h" /* for OFFSET_ppc64_CIA */
-
-+/* NOTE: PPC64 supports Big Endian and Little Endian. It also supports the
-+ ELF version 1 and ELF version 2 APIs.
-+
-+ Currently LE uses ELF version 2 and BE uses ELF version 1. However,
-+ BE and LE may support the other ELF version in the future. So, the
-+ _CALL_ELF is used in the assembly function to enable code for a
-+ specific ELF version independently of the endianness of the machine.
-+ The test "#if _CALL_ELF == 2" checks if ELF version 2 is being used.
-+*/
-
- /* References to globals via the TOC */
-
-@@ -75,14 +84,26 @@
- .section ".text"
- .align 2
- .globl VG_(disp_run_translations)
-+#if _CALL_ELF == 2
-+.type VG_(disp_run_translations),@function
-+VG_(disp_run_translations):
-+.type .VG_(disp_run_translations),@function
-+#else
- .section ".opd","aw"
- .align 3
- VG_(disp_run_translations):
- .quad .VG_(disp_run_translations),.TOC.@tocbase,0
- .previous
- .type .VG_(disp_run_translations),@function
-+#endif
- .globl .VG_(disp_run_translations)
- .VG_(disp_run_translations):
-+#if _CALL_ELF == 2
-+0: addis 2, 12,.TOC.-0b@ha
-+ addi 2,2,.TOC.-0b@l
-+ .localentry VG_(disp_run_translations), .-VG_(disp_run_translations)
-+#endif
-+
- /* r3 holds two_words */
- /* r4 holds guest_state */
- /* r5 holds host_addr */
-@@ -229,8 +250,13 @@
- /* make a stack frame for the code we are calling */
- stdu 1,-48(1)
-
-- /* Set up the guest state ptr */
-+ /* Set up the guest state ptr */
- mr 31,4 /* r31 (generated code gsp) = r4 */
-+#if _CALL_ELF == 2
-+/* for the LE ABI need to setup r2 and r12 */
-+0: addis 2, 12,.TOC.-0b@ha
-+ addi 2,2,.TOC.-0b@l
-+#endif
-
- /* and jump into the code cache. Chained translations in
- the code cache run, until for whatever reason, they can't
-@@ -385,6 +411,9 @@
- mtlr 0
- addi 1,1,624 /* stack_size */
- blr
-+#if _CALL_ELF == 2
-+ .size VG_(disp_run_translations),.-VG_(disp_run_translations)
-+#endif
-
-
- /*----------------------------------------------------*/
-@@ -395,15 +424,25 @@
- .section ".text"
- .align 2
- .globl VG_(disp_cp_chain_me_to_slowEP)
-- .section ".opd","aw"
-+#if _CALL_ELF == 2
-+ .type VG_(disp_cp_chain_me_to_slowEP),@function
-+ VG_(disp_cp_chain_me_to_slowEP):
-+#else
-+ .section ".opd","aw"
- .align 3
- VG_(disp_cp_chain_me_to_slowEP):
- .quad .VG_(disp_cp_chain_me_to_slowEP),.TOC.@tocbase,0
- .previous
-+#endif
- .type .VG_(disp_cp_chain_me_to_slowEP),@function
- .globl .VG_(disp_cp_chain_me_to_slowEP)
- .VG_(disp_cp_chain_me_to_slowEP):
-- /* We got called. The return address indicates
-+#if _CALL_ELF == 2
-+0: addis 2, 12,.TOC.-0b@ha
-+ addi 2,2,.TOC.-0b@l
-+ .localentry VG_(disp_cp_chain_me_to_slowEP), .-VG_(disp_cp_chain_me_to_slowEP)
-+#endif
-+ /* We got called. The return address indicates
- where the patching needs to happen. Collect
- the return address and, exit back to C land,
- handing the caller the pair (Chain_me_S, RA) */
-@@ -415,20 +454,33 @@
- */
- subi 7,7,20+4+4
- b .postamble
-+#if _CALL_ELF == 2
-+ .size VG_(disp_cp_chain_me_to_slowEP),.-VG_(disp_cp_chain_me_to_slowEP)
-+#endif
-
- /* ------ Chain me to fast entry point ------ */
- .section ".text"
- .align 2
- .globl VG_(disp_cp_chain_me_to_fastEP)
-- .section ".opd","aw"
-+#if _CALL_ELF == 2
-+ .type VG_(disp_cp_chain_me_to_fastEP),@function
-+VG_(disp_cp_chain_me_to_fastEP):
-+#else
-+ .section ".opd","aw"
- .align 3
- VG_(disp_cp_chain_me_to_fastEP):
- .quad .VG_(disp_cp_chain_me_to_fastEP),.TOC.@tocbase,0
- .previous
-+#endif
- .type .VG_(disp_cp_chain_me_to_fastEP),@function
- .globl .VG_(disp_cp_chain_me_to_fastEP)
- .VG_(disp_cp_chain_me_to_fastEP):
-- /* We got called. The return address indicates
-+#if _CALL_ELF == 2
-+0: addis 2, 12,.TOC.-0b@ha
-+ addi 2,2,.TOC.-0b@l
-+ .localentry VG_(disp_cp_chain_me_to_fastEP), .-VG_(disp_cp_chain_me_to_fastEP)
-+#endif
-+ /* We got called. The return address indicates
- where the patching needs to happen. Collect
- the return address and, exit back to C land,
- handing the caller the pair (Chain_me_S, RA) */
-@@ -440,20 +492,33 @@
- */
- subi 7,7,20+4+4
- b .postamble
-+#if _CALL_ELF == 2
-+ .size VG_(disp_cp_chain_me_to_fastEP),.-VG_(disp_cp_chain_me_to_fastEP)
-+#endif
-
- /* ------ Indirect but boring jump ------ */
- .section ".text"
- .align 2
- .globl VG_(disp_cp_xindir)
-- .section ".opd","aw"
-+#if _CALL_ELF == 2
-+ .type VG_(disp_cp_xindir),@function
-+VG_(disp_cp_xindir):
-+#else
-+ .section ".opd","aw"
- .align 3
- VG_(disp_cp_xindir):
- .quad .VG_(disp_cp_xindir),.TOC.@tocbase,0
- .previous
-+#endif
- .type .VG_(disp_cp_xindir),@function
- .globl .VG_(disp_cp_xindir)
- .VG_(disp_cp_xindir):
-- /* Where are we going? */
-+#if _CALL_ELF == 2
-+0: addis 2, 12,.TOC.-0b@ha
-+ addi 2,2,.TOC.-0b@l
-+ .localentry VG_(disp_cp_xindir), .-VG_(disp_cp_xindir)
-+#endif
-+ /* Where are we going? */
- ld 3,OFFSET_ppc64_CIA(31)
-
- /* stats only */
-@@ -479,6 +544,9 @@
- /* Found a match. Jump to .host. */
- mtctr 7
- bctr
-+#if _CALL_ELF == 2
-+ .size VG_(disp_cp_xindir),.-VG_(disp_cp_xindir)
-+#endif
-
- .fast_lookup_failed:
- /* stats only */
-@@ -496,39 +564,64 @@
- .section ".text"
- .align 2
- .globl VG_(disp_cp_xassisted)
-- .section ".opd","aw"
-+#if _CALL_ELF == 2
-+ .type VG_(disp_cp_xassisted),@function
-+VG_(disp_cp_xassisted):
-+#else
-+ .section ".opd","aw"
- .align 3
- VG_(disp_cp_xassisted):
- .quad .VG_(disp_cp_xassisted),.TOC.@tocbase,0
- .previous
-- .type .VG_(disp_cp_xassisted),@function
-+#endif
-+#if _CALL_ELF == 2
-+0: addis 2, 12,.TOC.-0b@ha
-+ addi 2,2,.TOC.-0b@l
-+ .localentry VG_(disp_cp_xassisted), .-VG_(disp_cp_xassisted)
-+#endif
-+ .type .VG_(disp_cp_xassisted),@function
- .globl .VG_(disp_cp_xassisted)
- .VG_(disp_cp_xassisted):
- /* r31 contains the TRC */
- mr 6,31
- li 7,0
- b .postamble
-+#if _CALL_ELF == 2
-+ .size VG_(disp_cp_xassisted),.-VG_(disp_cp_xassisted)
-+#endif
-
- /* ------ Event check failed ------ */
- .section ".text"
- .align 2
- .globl VG_(disp_cp_evcheck_fail)
-- .section ".opd","aw"
-+#if _CALL_ELF == 2
-+ .type VG_(disp_cp_evcheck_fail),@function
-+VG_(disp_cp_evcheck_fail):
-+#else
-+ .section ".opd","aw"
- .align 3
- VG_(disp_cp_evcheck_fail):
- .quad .VG_(disp_cp_evcheck_fail),.TOC.@tocbase,0
- .previous
-+#endif
-+#if _CALL_ELF == 2
-+0: addis 2, 12,.TOC.-0b@ha
-+ addi 2,2,.TOC.-0b@l
-+ .localentry VG_(disp_cp_evcheck_fail), .-VG_(disp_cp_evcheck_fail)
-+#endif
- .type .VG_(disp_cp_evcheck_fail),@function
- .globl .VG_(disp_cp_evcheck_fail)
- .VG_(disp_cp_evcheck_fail):
- li 6,VG_TRC_INNER_COUNTERZERO
- li 7,0
- b .postamble
-+#if _CALL_ELF == 2
-+ .size VG_(disp_cp_evcheck_fail),.-VG_(disp_cp_evcheck_fail)
-+#endif
-
--
- .size .VG_(disp_run_translations), .-.VG_(disp_run_translations)
-
--#endif // defined(VGP_ppc64be_linux)
-+#endif // defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
-
- /* Let the linker know we don't need an executable stack */
- MARK_STACK_NO_EXEC
diff --git a/user/valgrind/suppressions.patch b/user/valgrind/suppressions.patch
new file mode 100644
index 000000000..a91b93fdf
--- /dev/null
+++ b/user/valgrind/suppressions.patch
@@ -0,0 +1,24 @@
+--- valgrind-3.13.0/configure.ac.old 2017-06-15 13:37:01.000000000 +0000
++++ valgrind-3.13.0/configure.ac 2018-10-02 21:46:48.710000000 +0000
+@@ -1034,7 +1034,7 @@
+ musl)
+ AC_MSG_RESULT(Musl)
+ AC_DEFINE([MUSL_LIBC], 1, [Define to 1 if you're using Musl libc])
+- # no DEFAULT_SUPP file yet for musl libc.
++ DEFAULT_SUPP="musl.supp ${DEFAULT_SUPP}"
+ ;;
+ 2.0|2.1|*)
+ AC_MSG_RESULT([unsupported version ${GLIBC_VERSION}])
+--- /dev/null 2018-07-03 06:46:12.010000000 +0000
++++ valgrind-3.13.0/musl.supp 2018-10-02 21:44:57.240000000 +0000
+@@ -0,0 +1,10 @@
++# musl does not free `dso` structs allocated during linking on exit.
++{
++ musl:dynlinker
++ Memcheck:Leak
++ match-leak-kinds: reachable
++ fun:calloc
++ ...
++ fun:__dls3
++ obj:/lib/ld-musl-*
++}
diff --git a/user/vlc/APKBUILD b/user/vlc/APKBUILD
index dea31e948..7db6632a1 100644
--- a/user/vlc/APKBUILD
+++ b/user/vlc/APKBUILD
@@ -3,7 +3,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=vlc
pkgver=3.0.4
-pkgrel=0
+pkgrel=1
pkgdesc="Multi-platform MPEG, VCD/DVD, and DivX player"
triggers="vlc-libs.trigger=/usr/lib/vlc/plugins"
pkgusers="vlc"
diff --git a/user/volume_key/APKBUILD b/user/volume_key/APKBUILD
index 85ed4d482..db26d40e2 100644
--- a/user/volume_key/APKBUILD
+++ b/user/volume_key/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=volume_key
-pkgver=0.3.11
+pkgver=0.3.12
pkgrel=0
pkgdesc="Storage volume encryption key management library"
url="https://pagure.io/volume_key"
@@ -43,4 +43,4 @@ py() {
mv "$pkgdir"/usr/lib/python3.6 "$subpkgdir"/usr/lib/
}
-sha512sums="b9da00578b31c96231ebde55fd91c9aafbd663e541c560460fb6c3305e1a0e1fb3115a95682dc4713027d084e14ffa39d638653384a18d69f5dc892fc4855a97 volume_key-0.3.11.tar.xz"
+sha512sums="d056154c9b9d23e4eb661946dd59ed97e116903a3afcff9d9e29258408082f33dcbb69958724143f6bf191a3da488a03b6c02af287790990ed6459e29d66553c volume_key-0.3.12.tar.xz"
diff --git a/user/vte/APKBUILD b/user/vte/APKBUILD
new file mode 100644
index 000000000..d25e349b1
--- /dev/null
+++ b/user/vte/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=vte
+pkgver=0.54.1
+pkgrel=0
+pkgdesc="Virtual terminal emulator library for Gnome"
+url="https://www.gnome.org"
+arch="all"
+license="LGPL-2.1+ AND GPL-3.0+ AND LGPL-3.0+ AND MIT AND LGPL-2.0+"
+makedepends="intltool gtk+3.0-dev gnutls-dev zlib-dev pcre2-dev
+ gobject-introspection-dev vala vala-dev libxml2-utils"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://download.gnome.org/sources/vte/0.54/vte-$pkgver.tar.xz
+ exitcode.patch"
+
+build() {
+ cd "$builddir"
+ ./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="5cb866e75c35e1b5728d17b0433641ceb4837495d59185a04fde9dd8c9849ab905a6b2718a50b27cc70323c7a6c5db31a808816576c30d7f18ece889a329fb61 vte-0.54.1.tar.xz
+4987254439a136f66a7b7be1300f5efbf85db74bdb64fdd8d0c9a555173a172b4fd519174f932e73d58a2618ef37273e82fe681bb129891f2792a414025f6c61 exitcode.patch"
diff --git a/user/vte/exitcode.patch b/user/vte/exitcode.patch
new file mode 100644
index 000000000..52de63858
--- /dev/null
+++ b/user/vte/exitcode.patch
@@ -0,0 +1,12 @@
+--- vte-0.54.0/src/widget.cc.old 2018-09-02 13:20:15.000000000 +0000
++++ vte-0.54.0/src/widget.cc 2018-09-08 21:20:16.000000000 +0000
+@@ -21,6 +21,9 @@
+ #include "widget.hh"
+
+ #include <sys/wait.h> // for W_EXITCODE
++#ifndef W_EXITCODE
++# define W_EXITCODE(ret, sig) ((unsigned int)(ret) << 8 | sig)
++#endif
+
+ #include <new>
+ #include <string>
diff --git a/user/which/APKBUILD b/user/which/APKBUILD
new file mode 100644
index 000000000..cea55c32a
--- /dev/null
+++ b/user/which/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Stuart Cardall <developer@it-offshore.co.uk>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=which
+pkgver=2.21
+pkgrel=2
+pkgdesc="A utility to show the full path of commands"
+url="http://savannah.gnu.org/projects/which"
+arch="all"
+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"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="d2f04a5c5291f2d7d1226982da7cf999d36cfe24d3f7bda145508efcfb359511251d3c68b860c0ddcedd66b15a0587b648a35ab6d1f173707565305c506dfc61 which-2.21.tar.gz"
diff --git a/user/wireless-tools/APKBUILD b/user/wireless-tools/APKBUILD
index b4cf49688..0d5cfcf02 100644
--- a/user/wireless-tools/APKBUILD
+++ b/user/wireless-tools/APKBUILD
@@ -9,15 +9,14 @@ _pkgver=${pkgver/_/.}
_pkgmaj=${pkgver%_pre[0-9]*}
pkgrel=0
pkgdesc="Open Source wireless tools"
-url="http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html"
+url="https://hewlettpackard.github.io/wireless-tools/Tools.html"
arch="all"
+options="!check" # these applications have no testsuite
license="GPL-2.0-or-later"
depends=""
makedepends="linux-headers"
-install=""
-options="!check" # these applications have no testsuite
subpackages="$pkgname-dev $pkgname-doc"
-source="http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.${_pkgver}.tar.gz"
+source="https://hewlettpackard.github.io/wireless-tools/wireless_tools.${_pkgver}.tar.gz"
builddir="$srcdir"/"$_pkgname"."$_pkgmaj"
diff --git a/user/wpa_supplicant/APKBUILD b/user/wpa_supplicant/APKBUILD
index 095e0320c..0b070dee7 100644
--- a/user/wpa_supplicant/APKBUILD
+++ b/user/wpa_supplicant/APKBUILD
@@ -2,14 +2,15 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=wpa_supplicant
pkgver=2.6
-pkgrel=8
+pkgrel=9
pkgdesc="Utility providing key negotiation for WPA wireless networks"
url="https://w1.fi/wpa_supplicant/"
arch="all"
license="BSD-3-Clause AND Public-Domain AND (GPL-2.0+ OR BSD-3-Clause)"
-subpackages="$pkgname-doc $pkgname-openrc"
+subpackages="$pkgname-doc $pkgname-openrc wpa_gui"
depends="dbus"
-makedepends="linux-headers openssl-dev dbus-dev libnl3-dev pcsc-lite-dev"
+makedepends="linux-headers openssl-dev dbus-dev libnl3-dev pcsc-lite-dev
+ qt5-qtbase-dev"
source="http://w1.fi/releases/$pkgname-$pkgver.tar.gz
rebased-v2.6-0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch
rebased-v2.6-0002-Prevent-reinstallation-of-an-already-in-use-group-ke.patch
@@ -50,6 +51,10 @@ prepare() {
build() {
cd "$builddir"/wpa_supplicant
make LIBDIR=/lib BINDIR=/sbin
+
+ # wpa_gui
+ qmake -o wpa_gui-qt4/Makefile wpa_gui-qt4/wpa_gui.pro
+ make -C wpa_gui-qt4
}
check() {
@@ -87,6 +92,14 @@ package() {
"$pkgdir"/etc/conf.d/wpa_supplicant
}
+wpa_gui() {
+ pkgdesc="Graphical User Interface for wpa_supplicant"
+ depends="$pkgname"
+
+ cd "$builddir"/wpa_supplicant
+ install -Dm755 wpa_gui-qt4/wpa_gui "$subpkgdir"/usr/bin/wpa_gui
+}
+
sha512sums="46442cddb6ca043b8b08d143908f149954c238e0f3a57a0df73ca4fab9c1acd91b078f3f26375a1d99cd1d65625986328018c735d8705882c8f91e389cad28a6 wpa_supplicant-2.6.tar.gz
f855fa792425f175ccc800eb49df42067b1c1f4b52ba2d24160af4dfbb74dcf8e81661b7e6c8d92fa408938b8a559fc74557d1677913e4a751bfd43706c14bb6 rebased-v2.6-0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch
b4e413aa815572ea0002d33d24b69cd499aebb5efebed8fcaade8b29324bb5853a5db64e8b1dfdf24478e02c66196238b81a6ec777a7a28610435dce4d2c344e rebased-v2.6-0002-Prevent-reinstallation-of-an-already-in-use-group-ke.patch
diff --git a/user/x265/APKBUILD b/user/x265/APKBUILD
index cf8090f45..b992a0e6a 100644
--- a/user/x265/APKBUILD
+++ b/user/x265/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=x265
-pkgver=2.8
+pkgver=2.9
pkgrel=0
pkgdesc="Open Source H265/HEVC video encoder"
url="http://x265.org"
@@ -11,7 +11,7 @@ license="GPL-2.0-only"
makedepends="cmake yasm" # 2.6+ will use nasm instead of yasm
subpackages="$pkgname-dev"
source="$pkgname-$pkgver.tar.gz::https://bitbucket.org/multicoreware/$pkgname/downloads/${pkgname}_${pkgver}.tar.gz
- work-on-any-non-x86.patch
+ build-on-any-non-x86.patch
x265-unbreak-my-arm.patch"
builddir="$srcdir/${pkgname}_$pkgver"
@@ -48,6 +48,6 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="c2a8eaec64aa022badcbcd2a96304a9abd9d08489300b6a9c4c9d76066f3d9848e6948238c84ae16ea91bff0b2fac528a67ee29950d94dcd0ea7c0e9e7baa714 x265-2.8.tar.gz
-cbd0372fe5d83047314be71da89694ccd28dab6f183ae55bafed4a1bf81861d47877c77838ab6dc72e54f268390f8ae4076be17ece1cf721147c2c4bbf3c2900 work-on-any-non-x86.patch
+sha512sums="270818c7fd84947fde371e32bef225c1880cfb0bcd95378d95b51f50577a134d7cd585fcdfa43b103a24d76c5ad826b09509a07eb9e208e8f2b56f2f77365cf3 x265-2.9.tar.gz
+453acad171d572fdff283cc8b4cdf3707839ae9f13de610416e1298375b218c77dc9870c7367385f7fefaa3d3e66d8c5db76966e66004fa8dde7c40648b0af45 build-on-any-non-x86.patch
ac3ecc613fe4da11672de8f397b5541fe2af29b7dd91a48859bfe8824934a5966c41ca30de242564c46f1a0cdd2a0da9331d9f547fc21120066fb3c45347c4c4 x265-unbreak-my-arm.patch"
diff --git a/user/x265/build-on-any-non-x86.patch b/user/x265/build-on-any-non-x86.patch
new file mode 100644
index 000000000..f92395629
--- /dev/null
+++ b/user/x265/build-on-any-non-x86.patch
@@ -0,0 +1,24 @@
+--- x265_2.9/source/common/cpu.cpp.orig 2018-10-05 12:14:40.000000000 +0000
++++ x265_2.9/source/common/cpu.cpp 2018-10-19 02:24:48.780000000 +0000
+@@ -59,6 +59,10 @@
+
+ namespace X265_NS {
+ static bool enable512 = false;
++bool detect512()
++{
++ return(enable512);
++}
+ const cpu_name_t cpu_names[] =
+ {
+ #if X265_ARCH_X86
+@@ -123,10 +127,6 @@
+ #pragma warning(disable: 4309) // truncation of constant value
+ #endif
+
+-bool detect512()
+-{
+- return(enable512);
+-}
+ uint32_t cpu_detect(bool benableavx512 )
+ {
+
diff --git a/user/x265/work-on-any-non-x86.patch b/user/x265/work-on-any-non-x86.patch
deleted file mode 100644
index cdfbed72f..000000000
--- a/user/x265/work-on-any-non-x86.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- x265_2.8/source/common/param.cpp.old 2018-05-21 08:33:10.000000000 +0000
-+++ x265_2.8/source/common/param.cpp 2018-07-18 06:18:41.120000000 +0000
-@@ -633,7 +633,7 @@
- if (bValueWasNull)
- p->cpuid = atobool(value);
- else
-- p->cpuid = parseCpuName(value, bError);
-+ p->cpuid = parseCpuName(value, bError, false);
- #endif
- }
- OPT("fps")
diff --git a/user/xapian-core/APKBUILD b/user/xapian-core/APKBUILD
index eac1f412f..ac38e0afc 100644
--- a/user/xapian-core/APKBUILD
+++ b/user/xapian-core/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Francesco Colista <fcolista@alpinelinux.org>
# Maintainer:
pkgname=xapian-core
-pkgver=1.4.6
+pkgver=1.4.7
pkgrel=0
pkgdesc="Open source search engine library"
url="https://xapian.org/"
@@ -54,5 +54,5 @@ libxapian() {
mv "$pkgdir"/usr/lib/$subpkgname* "$subpkgdir"/usr/lib
}
-sha512sums="f08168eba26a24ea00c2219d2cdfac1d904b51162fdd98d437564786375245e00010986a7d6e9c8c7548ae19aab80434b5cb0051252f902b40db2976b1008fe2 xapian-core-1.4.6.tar.xz
+sha512sums="9e77a78bd63036966ebb9bbed91e36fef17b37c9465c8d4b7dc8041f0e24b040e6520de645babfeeade952771d145176a204328718cfa8bc2291bb6fdbe840d2 xapian-core-1.4.7.tar.xz
639c0ecd75be0627d334628b5adf581a7da92c4f86dfb86a92669368ff8a874d4bf4e344b8f3b1276d22d126d2bc44c8ab727e39e1c29c0358fe7bbc8aa8050d timeval-t.patch"
diff --git a/user/xautolock/APKBUILD b/user/xautolock/APKBUILD
new file mode 100644
index 000000000..71fd17994
--- /dev/null
+++ b/user/xautolock/APKBUILD
@@ -0,0 +1,30 @@
+# Contributor: Johannes Matheis <jomat+alpinebuild@jmt.gr>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=xautolock
+pkgver=2.2
+pkgrel=4
+pkgdesc="An automatic X screen-locker/screen-saver"
+url="http://ibiblio.org/pub/Linux/X11/screensavers/"
+arch="all" # this might not build on aarch64? removed from alpine commit
+license="GPL-2.0"
+options="!check" # This package has no testsuite
+depends=""
+makedepends="$depends_dev imake xorg-server-dev libxscrnsaver-dev xorg-cf-files"
+subpackages="$pkgname-doc"
+source="https://www.ibiblio.org/pub/linux/X11/screensavers/xautolock-$pkgver.tgz
+ processwait.patch"
+
+build() {
+ cd "$builddir"
+ xmkmf
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ make MANPATH=/usr/share/man DESTDIR="$pkgdir" install.man
+}
+
+sha512sums="5f9dcc25cda706610e77a74235c4b421ca3a833d154b1a269057f0774579e1c6ec36fe0e5be5fadd6942ce8c1640a760f891397586b162e6024b524635153d04 xautolock-2.2.tgz
+3242d01e394f8b84946d7d7fca9a87f2e17783352e180e43470737d3a2e4a7eb15f1a514dcd98118b6491895ab56d3cef29d4abb32b5a341c73efaa2a7ff323a processwait.patch"
diff --git a/user/xautolock/processwait.patch b/user/xautolock/processwait.patch
new file mode 100644
index 000000000..cb49f8d88
--- /dev/null
+++ b/user/xautolock/processwait.patch
@@ -0,0 +1,33 @@
+--- xautolock/src/engine.c.orig 2014-08-28 12:50:56.086307943 +0000
++++ xautolock/src/engine.c 2014-08-28 12:50:59.496333650 +0000
+@@ -209,24 +209,24 @@ evaluateTriggers (Display* d)
+ {
+ #else /* VMS */
+ if (lockerPid)
+ {
+-#if !defined (UTEKV) && !defined (SYSV) && !defined (SVR4)
++#if (!defined (UTEKV) && !defined (SYSV) && !defined (SVR4)) && defined (__GLIBC__)
+ union wait status; /* childs process status */
+-#else /* !UTEKV && !SYSV && !SVR4 */
++#else /* (!UTEKV && !SYSV && !SVR4) && __GLIBC__ */
+ int status = 0; /* childs process status */
+-#endif /* !UTEKV && !SYSV && !SVR4 */
++#endif /* (!UTEKV && !SYSV && !SVR4) && __GLIBC__ */
+
+ if (unlockNow && !disabled)
+ {
+ (void) kill (lockerPid, SIGTERM);
+ }
+
+-#if !defined (UTEKV) && !defined (SYSV) && !defined (SVR4)
++#if (!defined (UTEKV) && !defined (SYSV) && !defined (SVR4)) && defined (__GLIBC__)
+ if (wait3 (&status, WNOHANG, 0))
+-#else /* !UTEKV && !SYSV && !SVR4 */
++#else /* (!UTEKV && !SYSV && !SVR4) && __GLIBC__ */
+ if (waitpid (-1, &status, WNOHANG))
+-#endif /* !UTEKV && !SYSV && !SVR4 */
++#endif /* (!UTEKV && !SYSV && !SVR4) && __GLIBC__ */
+ {
+ /*
+ * If the locker exited normally, we disable any pending kill
+ * trigger. Otherwise, we assume that it either has crashed or
diff --git a/user/xcb-util-xrm/APKBUILD b/user/xcb-util-xrm/APKBUILD
new file mode 100644
index 000000000..d368f1544
--- /dev/null
+++ b/user/xcb-util-xrm/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Jakub Skrzypnik <j.skrzypnik@openmailbox.org>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=xcb-util-xrm
+pkgver=1.3
+pkgrel=0
+pkgdesc="Utility functions for the X resource manager"
+url="https://github.com/Airblader/xcb-util-xrm"
+arch="all"
+license="MIT"
+makedepends="m4 bsd-compat-headers libx11-dev libxcb-dev util-macros xcb-util-dev"
+source="https://github.com/Airblader/$pkgname/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz"
+subpackages="$pkgname-dev"
+
+build() {
+ cd "$builddir"
+ ./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="d8a427ed6d1f1568ce58db9b89284e4fafcc7b7929c31bccf70e5ccd91f3f6cb9c87ff25c4e64d95b0c6215cfecde6c0ee2b3a18759817aea3169ba87602c5de xcb-util-xrm-1.3.tar.gz"
diff --git a/user/xdotool/APKBUILD b/user/xdotool/APKBUILD
new file mode 100644
index 000000000..3aae63783
--- /dev/null
+++ b/user/xdotool/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Stuart Cardall <developer@it-offshore.co.uk>
+# Contributor: Stefan Wagner <stw@bit-strickerei.de>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=xdotool
+pkgver=3.20160805.1
+pkgrel=0
+pkgdesc="Tool to simulate keyboard/mouse input"
+url="https://www.semicomplete.com/projects/xdotool/"
+arch="all"
+options="!check" # Requires running X11 server
+license="BSD-3-Clause"
+depends=""
+depends_dev="libx11-dev libxtst-dev libxinerama-dev libxkbcommon-dev"
+makedepends="$depends_dev perl"
+#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"
+
+build() {
+ cd "$builddir"
+ make WITHOUT_RPATH_FIX=1
+}
+
+check() {
+ cd "$builddir"
+ make test
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" PREFIX="/usr" INSTALLMAN="/usr/share/man" install
+}
+
+sha512sums="e27b1029ee954ea17643ed489a00a1856e5687b03772c0f10a8e50cde3c3c957b57a3ba9890005474a744a228ef4827a83770d6890479c37a1f98f4fd7b1ff6c xdotool-3.20160805.1.tar.gz"
diff --git a/user/xf86-input-libinput/APKBUILD b/user/xf86-input-libinput/APKBUILD
index 246e3afd1..ad5c691bc 100644
--- a/user/xf86-input-libinput/APKBUILD
+++ b/user/xf86-input-libinput/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xf86-input-libinput
-pkgver=0.28.0
+pkgver=0.28.1
pkgrel=0
pkgdesc="X.Org input driver - libinput universal driver"
url="https://www.X.Org/"
@@ -36,4 +36,4 @@ package() {
install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
-sha512sums="4276b6aea87ddc83fa1f5e8d8949e34ad117186a6b5b599549231cb90424cd0fa69f3a4701ce529739c676665bb5c936eb447817c9420511d23bc048f6be92a4 xf86-input-libinput-0.28.0.tar.bz2"
+sha512sums="2b8cabfbc3490edbe928771ed9d62a0d4a423bc1373fc6cf9d3a6b5937e17ddc48ebb1b70f1191e507024e4b8220c137495cbba825292b51e50709daa7d31623 xf86-input-libinput-0.28.1.tar.bz2"
diff --git a/user/xf86-video-ati/APKBUILD b/user/xf86-video-ati/APKBUILD
index e5fd1de9a..647ae8776 100644
--- a/user/xf86-video-ati/APKBUILD
+++ b/user/xf86-video-ati/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=xf86-video-ati
-pkgver=18.0.1
-pkgrel=1
+pkgver=18.1.0
+pkgrel=0
pkgdesc="ATI video driver for X11"
url="https://www.X.Org/"
arch="all"
@@ -31,4 +31,4 @@ package() {
install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
-sha512sums="b468a78503a596bbf71a1b91b231ce1fa32908f619ff2dfe249352d046696a3641f2a9ff065e32545fff77100134b4b237591215e78ef885b6509d6b16112d14 xf86-video-ati-18.0.1.tar.bz2"
+sha512sums="7a58c9a6cb4876bd2ff37d837372b4e360e81fec7de6a6c7a48d70a5338d62745f734f5d4207f30aa368ff2d9ef44f5f1ef36afd73802a618998c16fe395ed53 xf86-video-ati-18.1.0.tar.bz2"
diff --git a/user/xf86-video-intel/APKBUILD b/user/xf86-video-intel/APKBUILD
new file mode 100644
index 000000000..6c9f0d745
--- /dev/null
+++ b/user/xf86-video-intel/APKBUILD
@@ -0,0 +1,47 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=xf86-video-intel
+verbase=2.99.917
+pkgver=${verbase}_git20180803
+pkgrel=0
+pkgdesc="Legacy X.Org driver for Intel graphics cards"
+url="https://xorg.freedesktop.org"
+arch="x86 x86_64"
+options="!check" # No test suite.
+license="MIT"
+subpackages="$pkgname-doc"
+depends="mesa-dri-intel"
+makedepends="xorg-server-dev libxi-dev libdrm-dev mesa-dev libxvmc-dev
+ xcb-util-dev eudev-dev util-macros autoconf automake libtool xorgproto
+ "
+source="https://dev.sick.bike/$pkgname-$pkgver.tar.gz"
+giturl="https://gitlab.freedesktop.org/xorg/driver/xf86-video-intel.git"
+reporev="3d395062ce73f85e8340218df01c2ebf4bc25023"
+
+prepare() {
+ cd "$builddir"
+ default_prepare
+ autoreconf -vif
+}
+
+build() {
+ cd "$builddir"
+ export LDFLAGS="$LDFLAGS -Wl,-z,lazy"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --enable-xvmc \
+ --disable-selective-werror \
+ --with-default-dri=3
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
+ rm "$pkgdir"/usr/libexec/xf86-video-intel-backlight-helper
+}
+
+sha512sums="a96e627ed1b3fb6b66f02caaafb0f94967df9a2409158aacc9d8958538ef47bd84176ce71a4785f21944beb764450b1560c6dc59eef435f75959e27704be41f1 xf86-video-intel-2.99.917_git20180803.tar.gz"
diff --git a/user/xf86-video-nouveau/APKBUILD b/user/xf86-video-nouveau/APKBUILD
new file mode 100644
index 000000000..700e82d37
--- /dev/null
+++ b/user/xf86-video-nouveau/APKBUILD
@@ -0,0 +1,41 @@
+# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=xf86-video-nouveau
+pkgver=1.0.15
+pkgrel=2
+pkgdesc="Open-source X.org drivers for nVidia video cards"
+url="https://nouveau.freedesktop.org/"
+arch="all"
+license="MIT"
+depends="mesa-dri-nouveau"
+makedepends="eudev-dev libdrm-dev util-macros xorgproto-dev xorg-server-dev"
+subpackages="$pkgname-doc"
+source="https://www.X.Org/archive/individual/driver/$pkgname-$pkgver.tar.bz2
+ dont-strcmp-null.patch
+ "
+
+build() {
+ cd "$builddir"
+ export LDFLAGS="$LDFLAGS -Wl,-z,lazy"
+ ./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="69a8f8e7920d893f17d14fd9f05e35de246d980a243f3b3b00c05deae7f6bd97e0f51e6ddfa322b4d0815233fe5f656d4e55f54461249f3f24c3bc025a682285 xf86-video-nouveau-1.0.15.tar.bz2
+4cd8b3b9996989a8c9302a5ba77aa9f794fde7559d9f131d5bb4b3174d68be85140834719384c22686b63c89242bdf09696c0c1a98b632f7e3a4f46522f49c3b dont-strcmp-null.patch"
diff --git a/user/xf86-video-nouveau/dont-strcmp-null.patch b/user/xf86-video-nouveau/dont-strcmp-null.patch
new file mode 100644
index 000000000..23c4fd216
--- /dev/null
+++ b/user/xf86-video-nouveau/dont-strcmp-null.patch
@@ -0,0 +1,33 @@
+From 69aecdd305defdd014bc92b82acc6000988511cf Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Tue, 13 Jun 2017 09:23:42 -0400
+Subject: modesetting: Validate the atom for enum properties
+
+The client could have said anything here, and if what they said doesn't
+actually name an atom NameForAtom() will return NULL, and strcmp() will
+be unhappy about that.
+
+[copied from xserver d4995a3936ae283b9080fdaa0905daa669ebacfc]
+
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+---
+ src/drmmode_display.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/drmmode_display.c b/src/drmmode_display.c
+index 2b71c9c..04a0b57 100644
+--- a/src/drmmode_display.c
++++ b/src/drmmode_display.c
+@@ -1081,7 +1081,8 @@ drmmode_output_set_property(xf86OutputPtr output, Atom property,
+ if (value->type != XA_ATOM || value->format != 32 || value->size != 1)
+ return FALSE;
+ memcpy(&atom, value->data, 4);
+- name = NameForAtom(atom);
++ if (!(name = NameForAtom(atom)))
++ return FALSE;
+
+ /* search for matching name string, then set its value down */
+ for (j = 0; j < p->mode_prop->count_enums; j++) {
+--
+cgit v1.1
+
diff --git a/user/xfburn/APKBUILD b/user/xfburn/APKBUILD
new file mode 100644
index 000000000..e9e904448
--- /dev/null
+++ b/user/xfburn/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=xfburn
+pkgver=0.5.5
+pkgrel=0
+pkgdesc="CD burning utility for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="GPL-2.0+"
+makedepends="intltool libburn-dev libisofs-dev gtk+3.0-dev gtk+2.0-dev
+ libxfce4ui-dev exo-dev libgudev-dev gstreamer-dev gst-plugins-base-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/apps/xfburn/0.5/xfburn-$pkgver.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./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="37574aa7dcec65c26a8fd5019c3776196763fa1ebb0f531002f5bcb72a6eb0ec19ed994dd14726988766d890ef257c39c26e64ca3f5944386c03d9b54c26a90a xfburn-0.5.5.tar.bz2"
diff --git a/user/xfce-desktop/APKBUILD b/user/xfce-desktop/APKBUILD
new file mode 100644
index 000000000..7044a7dd7
--- /dev/null
+++ b/user/xfce-desktop/APKBUILD
@@ -0,0 +1,28 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=xfce-desktop
+pkgver=4.13
+pkgrel=0
+arch="noarch"
+pkgdesc="Complete XFCE desktop environment"
+url="https://xfce.org"
+license="NCSA"
+options="!check" # meta package, no tests needed.
+depends="xfburn xfce4-power-manager xfce4-settings xfce4-volumed-pulse
+ xfdesktop xfce4-appfinder xfce4-panel xfce4-screenshooter
+ xfce4-taskmanager xfconf xfce4-dict xfce4-panel-profiles
+ xfce4-session xfdashboard xfmpc xfwm4 xfce4-terminal
+ xfce4-notifyd"
+source="org.adelie-linux.about-xfce.desktop"
+builddir="$srcdir/$pkgname-$pkgver"
+
+build() {
+ cd "$srcdir"
+}
+
+package() {
+ cd "$srcdir"
+ install -D -m644 "$srcdir"/org.adelie-linux.about-xfce.desktop \
+ "$pkgdir"/usr/share/applications/org.adelie-linux.about-xfce.desktop
+}
+sha512sums="362793e478e3fb0c6d7dca1f52f582a641ff4582ad0c0d6d1cbe28f1255fc6cd7918ea6b24a5d905a59275f67c44703bf8c78580642c4e0147b539842a6f372f org.adelie-linux.about-xfce.desktop"
diff --git a/user/xfce-desktop/org.adelie-linux.about-xfce.desktop b/user/xfce-desktop/org.adelie-linux.about-xfce.desktop
new file mode 100644
index 000000000..c848c37eb
--- /dev/null
+++ b/user/xfce-desktop/org.adelie-linux.about-xfce.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Type=Application
+Version=1.0
+Name=About XFCE
+Comment=Learn about the XFCE desktop
+Icon=dialog-information
+Categories=XFCE
+Exec=xdg-open https://xfce.org
diff --git a/user/xfce4-appfinder/APKBUILD b/user/xfce4-appfinder/APKBUILD
new file mode 100644
index 000000000..7edd9dcfa
--- /dev/null
+++ b/user/xfce4-appfinder/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=xfce4-appfinder
+pkgver=4.13.1
+pkgrel=0
+pkgdesc="An application finder for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="GPL-2.0+"
+makedepends="intltool gtk+3.0-dev libxfce4util-dev libxfce4ui-dev garcon-dev"
+subpackages="$pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/xfce/xfce4-appfinder/4.13/xfce4-appfinder-$pkgver.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./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="1be1508bea87e9ff7763dc6a8dd0a45b3e1ef39400486b9926de190e146c4c3fd96d08508d32c53a99ff92e98c4cc504e074f651273aac917a79e5df71022116 xfce4-appfinder-4.13.1.tar.bz2"
diff --git a/user/xfce4-dict/APKBUILD b/user/xfce4-dict/APKBUILD
new file mode 100644
index 000000000..cee0a0c01
--- /dev/null
+++ b/user/xfce4-dict/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=xfce4-dict
+pkgver=0.8.1
+pkgrel=0
+pkgdesc="Dictionary application for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="GPL-2.0+"
+makedepends="intltool glib-dev gtk+3.0-dev libxfce4ui-dev xfce4-panel-dev"
+subpackages="$pkgname-doc"
+source="http://archive.xfce.org/src/apps/xfce4-dict/0.8/xfce4-dict-$pkgver.tar.bz2"
+sha512sums="6cadc479afe5bede536915f8094f4c3ae80139cd11f4b594ee17d28373e5ee3f60a918193b0eefb2e247dfd8780d632e8b508538fd101b4064e36260fc30c67e xfce4-dict-0.8.1.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./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
+}
+
diff --git a/user/xfce4-notifyd/APKBUILD b/user/xfce4-notifyd/APKBUILD
new file mode 100644
index 000000000..25d72569b
--- /dev/null
+++ b/user/xfce4-notifyd/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=xfce4-notifyd
+pkgver=0.4.2
+pkgrel=0
+pkgdesc="Notification service for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="GPL-2.0-only AND GPL-2.0+"
+makedepends="intltool libice-dev gtk+3.0-dev libxfce4util-dev libxfce4ui-dev
+ xfce4-panel-dev libnotify-dev dbus-glib-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/apps/xfce4-notifyd/0.4/xfce4-notifyd-$pkgver.tar.bz2"
+sha512sums="1cabf478928cbcc13e9f03b2540470c5568bc665b196a8617a0e3b52ce4fe3bd9fdb5e199c4e52afe51c4edab8ba949c4551f65ce77c5fae7fddccd0086fb601 xfce4-notifyd-0.4.2.tar.bz2"
+
+build() {
+ cd "$builddir"
+ LIBS="-lX11" ./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
+}
+
diff --git a/user/xfce4-panel-profiles/APKBUILD b/user/xfce4-panel-profiles/APKBUILD
new file mode 100644
index 000000000..f30ebb39a
--- /dev/null
+++ b/user/xfce4-panel-profiles/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=xfce4-panel-profiles
+pkgver=1.0.8
+pkgrel=0
+pkgdesc="Application for managing XFCE panel layouts"
+url="https://xfce.org"
+arch="noarch"
+options="!check" # no tests
+license="GPL-3.0+"
+depends="python3"
+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"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --prefix=/usr
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
diff --git a/user/xfce4-panel/APKBUILD b/user/xfce4-panel/APKBUILD
new file mode 100644
index 000000000..b58725e9d
--- /dev/null
+++ b/user/xfce4-panel/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=xfce4-panel
+pkgver=4.13.3
+pkgrel=0
+pkgdesc="Panel for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="LGPL-2.1+ AND GPL-2.0+"
+makedepends="intltool gtk+3.0-dev libice-dev libxfce4util-dev garcon-dev exo-dev
+ libwnck-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/xfce/xfce4-panel/4.13/xfce4-panel-$pkgver.tar.bz2"
+sha512sums="99921ffc295b0e00689df50946ea326496c6fca68d6dfc6a563c0fb9e18bef1e537659963e3a0e6ee83756417565ac3531bc43e0e909dbb369068e4905bde045 xfce4-panel-4.13.3.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./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
+}
+
diff --git a/user/xfce4-power-manager/APKBUILD b/user/xfce4-power-manager/APKBUILD
new file mode 100644
index 000000000..dc6232180
--- /dev/null
+++ b/user/xfce4-power-manager/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=xfce4-power-manager
+pkgver=1.6.1
+pkgrel=0
+pkgdesc="Power management support for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="GPL-2.0+"
+makedepends="intltool gtk+3.0-dev libxfce4ui-dev libice-dev libnotify-dev
+ upower-dev xfce4-panel-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/xfce/xfce4-power-manager/1.6/xfce4-power-manager-$pkgver.tar.bz2"
+sha512sums="b81ce1b35892a6cd0b1d4fb590ccc25b906cde6f782de2fffbe78ea89e00df15e51ea1f47576c173b7512cd617f5142868fca8cf81519b6fe165a5ecc67a5478 xfce4-power-manager-1.6.1.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./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
+}
+
diff --git a/user/xfce4-screenshooter/APKBUILD b/user/xfce4-screenshooter/APKBUILD
new file mode 100644
index 000000000..47e3f889b
--- /dev/null
+++ b/user/xfce4-screenshooter/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=xfce4-screenshooter
+pkgver=1.9.3
+pkgrel=0
+pkgdesc="Screenshot tool for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="GPL-2.0+"
+makedepends="intltool libxfce4ui-dev xfce4-panel-dev libsoup-dev exo-dev"
+subpackages="$pkgname-doc"
+source="http://archive.xfce.org/src/apps/xfce4-screenshooter/1.9/xfce4-screenshooter-$pkgver.tar.bz2"
+sha512sums="ba59fdca3900143a50b3b858986b1152d4574d302d2e041a5287933427a67f64542ca691c130030937344433ea893a1f082086f9c02a9edccaeedbdc0a2a50a2 xfce4-screenshooter-1.9.3.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./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
+}
+
diff --git a/user/xfce4-session/APKBUILD b/user/xfce4-session/APKBUILD
new file mode 100644
index 000000000..05c391a80
--- /dev/null
+++ b/user/xfce4-session/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=xfce4-session
+pkgver=4.13.1
+pkgrel=0
+pkgdesc="Session management for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="GPL-2.0+ AND LGPL-2.0+"
+makedepends="intltool gtk+3.0-dev libice-dev libsm-dev libxfce4util-dev
+ libxfce4ui-dev libwnck-dev iceauth dbus-glib-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/xfce/xfce4-session/4.13/xfce4-session-$pkgver.tar.bz2"
+sha512sums="5845e3591919e23ca176199e81075a097ef9d65cbcf23b34d84afc649a307bfa8c6492e3a01855cacff9328da809725213ec1fa9d76024c0a0c25cce3c51da1b xfce4-session-4.13.1.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./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
+}
+
diff --git a/user/xfce4-settings/APKBUILD b/user/xfce4-settings/APKBUILD
new file mode 100644
index 000000000..4b894e6ee
--- /dev/null
+++ b/user/xfce4-settings/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=xfce4-settings
+pkgver=4.13.5
+pkgrel=0
+pkgdesc="GUI settings application for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="GPL-2.0+ AND MIT AND LGPL-2.0+"
+makedepends="intltool exo-dev garcon-dev libnotify-dev upower-dev
+ libxklavier-dev xf86-input-libinput-dev"
+subpackages="$pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/xfce/xfce4-settings/4.13/xfce4-settings-$pkgver.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --enable-pluggable-dialogs \
+ --enable-sound-settings
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="5e7b13b25767091ab0b1a5683359f33e4a86151dd9321681fc4d896fcd9cc569effaebfbab70bc734e07041e9fbb1c3015f9a177146de8a128c4a539462dba5e xfce4-settings-4.13.5.tar.bz2"
diff --git a/user/xfce4-taskmanager/APKBUILD b/user/xfce4-taskmanager/APKBUILD
new file mode 100644
index 000000000..172a3bb47
--- /dev/null
+++ b/user/xfce4-taskmanager/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=xfce4-taskmanager
+pkgver=1.2.1
+pkgrel=0
+pkgdesc="Process manager for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="GPL-2.0+"
+makedepends="intltool gtk+3.0-dev gtk+2.0-dev libxmu-dev libwnck-dev"
+source="http://archive.xfce.org/src/apps/xfce4-taskmanager/1.2/xfce4-taskmanager-$pkgver.tar.bz2"
+sha512sums="72a1ea75403ef5b96d461f0e4846374f7aa3eebbdd09a1a25c49278e4909904ed6305fe6a06f3a2fc370e191421726b96924e35427253428e968665155808d4e xfce4-taskmanager-1.2.1.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --enable-gtk3
+ make
+}
+
+check() {
+ cd "$builddir"
+ make check
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
diff --git a/user/xfce4-terminal/APKBUILD b/user/xfce4-terminal/APKBUILD
new file mode 100644
index 000000000..eca6f23c5
--- /dev/null
+++ b/user/xfce4-terminal/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=xfce4-terminal
+pkgver=0.8.7.4
+pkgrel=0
+pkgdesc="Terminal for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="GPL-2.0+"
+makedepends="intltool gtk+3.0-dev vte-dev libxfce4ui-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/apps/xfce4-terminal/0.8/xfce4-terminal-$pkgver.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./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="de56c08d5be47583484acf9aa5b3c0a0f14b1ac2790e0f6b59db61f80d71f871ff87e94f9353a0cc187cf1d9dff643e40ce15ed60a24d550843d898eee3d62dd xfce4-terminal-0.8.7.4.tar.bz2"
diff --git a/user/xfce4-volumed-pulse/APKBUILD b/user/xfce4-volumed-pulse/APKBUILD
new file mode 100644
index 000000000..4550ee2f6
--- /dev/null
+++ b/user/xfce4-volumed-pulse/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=xfce4-volumed-pulse
+pkgver=0.2.3
+pkgrel=0
+pkgdesc="Pulseaudio volume manager for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="GPL-3.0+"
+makedepends="gtk+3.0-dev libxfce4ui-dev pulseaudio-dev keybinder-3.0-dev libnotify-dev"
+source="http://archive.xfce.org/src/apps/xfce4-volumed-pulse/0.2/xfce4-volumed-pulse-$pkgver.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./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="da190cea2b3993717f35e1ded058613df99f8fa223a90d379d95dff0bc9d44f4fba15bd23ff1b54f11218d20518092d14a2f2b808d4984673d3bb77616c2f3e3 xfce4-volumed-pulse-0.2.3.tar.bz2"
diff --git a/user/xfconf/APKBUILD b/user/xfconf/APKBUILD
new file mode 100644
index 000000000..d6d99b110
--- /dev/null
+++ b/user/xfconf/APKBUILD
@@ -0,0 +1,47 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=xfconf
+pkgver=4.13.5
+pkgrel=0
+pkgdesc="Configuration framework for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+options="!check" # tests require X11
+license="LGPL-2.1+ AND GPL-2.0+"
+depends="dbus"
+makedepends="intltool gtk+3.0-dev libxfce4util-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/xfce/xfconf/4.13/xfconf-$pkgver.tar.bz2"
+sha512sums="34e6b99be0b288707f8632c5fe4f2e66e01ec3950f4d194a7007afb4bc1cfe8bea44f8f80873de2364680481921332c9860b23bca4ced94ecb95c9199df5315b xfconf-4.13.5.tar.bz2"
+builddir="$srcdir/xfconf-$pkgver"
+
+build() {
+ cd "$builddir"
+ ./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
+}
+
+perl() {
+ depends="perl perl-glib"
+ pkgdesc="Perl bindings for xfconf"
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/perl5 "$subpkgdir"/usr/lib
+}
+
diff --git a/user/xfdashboard/APKBUILD b/user/xfdashboard/APKBUILD
new file mode 100644
index 000000000..b192385d0
--- /dev/null
+++ b/user/xfdashboard/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=xfdashboard
+pkgver=0.7.5
+pkgrel=0
+pkgdesc="Gnome dashboard clone for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="GPL-2.0+"
+makedepends="intltool gtk+3.0-dev libwnck-dev libice-dev garcon-dev
+ libxfce4ui-dev clutter-dev"
+subpackages="$pkgname-dev $pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/apps/xfdashboard/0.7/xfdashboard-$pkgver.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./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="5d32aa3a49e02d85ca92bee6aa37a3b743e50ca5d992128decea5846e8c9008a9f5bdb98cc0ee3e980761a6538a4867ff28410e066ef22f0aa2c2bd4c5ce1523 xfdashboard-0.7.5.tar.bz2"
diff --git a/user/xfdesktop/APKBUILD b/user/xfdesktop/APKBUILD
new file mode 100644
index 000000000..b061e50ff
--- /dev/null
+++ b/user/xfdesktop/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=xfdesktop
+pkgver=4.13.2
+pkgrel=0
+pkgdesc="Desktop manager for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="GPL-2.0+"
+makedepends="intltool gtk+3.0-dev libxfce4util-dev libxfce4ui-dev libwnck-dev
+ exo-dev garcon-dev libnotify-dev thunar-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/xfce/xfdesktop/4.13/xfdesktop-$pkgver.tar.bz2"
+sha512sums="0002ed639f8554144d8c921ca5bd9d1c2ed634baa11c98f95685c8a636ae6bdc87f8df19aa138fe4eda591facba964451a10aef6ba303be1fad66013bb06ae13 xfdesktop-4.13.2.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./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
+}
+
diff --git a/user/xfmpc/APKBUILD b/user/xfmpc/APKBUILD
new file mode 100644
index 000000000..0b13bd5a2
--- /dev/null
+++ b/user/xfmpc/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=xfmpc
+pkgver=0.2.3
+pkgrel=0
+pkgdesc="Graphical music player daemon client for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="GPL-2.0+ AND LGPL-2.0+"
+makedepends="intltool gtk+2.0-dev libxfce4ui-dev libmpd-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/apps/xfmpc/0.2/xfmpc-$pkgver.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./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="3f592fdd559817051f7720bafc07fc66b39f682cc20286c12d54c4bd607e85bb0a722c567264a29224971b4ac14db51b0b44b233a16cccd9d17579a50549a3be xfmpc-0.2.3.tar.bz2"
diff --git a/user/xfwm4/APKBUILD b/user/xfwm4/APKBUILD
new file mode 100644
index 000000000..14451017a
--- /dev/null
+++ b/user/xfwm4/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+pkgname=xfwm4
+pkgver=4.13.1
+pkgrel=0
+pkgdesc="Window manager for the XFCE desktop environment"
+url="https://xfce.org"
+arch="all"
+license="GPL-2.0+"
+makedepends="intltool gtk+3.0-dev libxfce4util-dev libxfce4ui-dev libwnck-dev
+ gobject-introspection-dev vala-dev"
+subpackages="$pkgname-lang"
+langdir="/usr/lib/locale"
+source="http://archive.xfce.org/src/xfce/xfwm4/4.13/xfwm4-$pkgver.tar.bz2"
+sha512sums="2ac5acdefff3a89b8525719b345dfeb2dc71104b4da341afe99d7c57c049753c4cdb81a512d1f344e5fb463c7143673e83316b63888777bdcf254c4a07ca8320 xfwm4-4.13.1.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./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
+}
+
diff --git a/user/xinput/APKBUILD b/user/xinput/APKBUILD
new file mode 100644
index 000000000..2cb5822fe
--- /dev/null
+++ b/user/xinput/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: Johannes Matheis <jomat+alpinebuild@jmt.gr>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=xinput
+pkgver=1.6.2
+pkgrel=0
+pkgdesc="Utility to configure and test XInput devices"
+url="http://xorg.freedesktop.org/"
+arch="all"
+options="!check" # No test suite.
+license="X11"
+makedepends="util-macros libx11-dev libxext-dev libxi-dev libxrandr-dev
+ libxinerama-dev"
+subpackages="$pkgname-doc"
+source="http://www.x.org/archive/individual/app/$pkgname-$pkgver.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="dbef3a87dd47bb8c593f1305bea7978697a12434a4992584e4124d745bb366812366b44fc205159137a3db6f7b8338effd1b90641a194497b19159b9fd91939e xinput-1.6.2.tar.bz2"
diff --git a/user/xkeyboard-config/APKBUILD b/user/xkeyboard-config/APKBUILD
index 28bd5ede7..c884ad87b 100644
--- a/user/xkeyboard-config/APKBUILD
+++ b/user/xkeyboard-config/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xkeyboard-config
-pkgver=2.24
+pkgver=2.25
pkgrel=0
pkgdesc="Keyboard configuration files for X11"
url="https://www.freedesktop.org/wiki/Software/XKeyboardConfig"
@@ -37,4 +37,4 @@ package() {
install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
-sha512sums="96b65d18a85443a9bf93d65a4423da6e2b3d44882dae6a03bf46768a92017e9762cf3721361ba399c2873d53782944d0292eb673484f1cd8a8bdbf643e7a1dc0 xkeyboard-config-2.24.tar.bz2"
+sha512sums="2d9d6bdd885edc8e03e5a2c136c3b29b4ea795122709fa210bf151c4e7416a44fa2928bb29137ee8c6691d8646c1f645748576dea3f940ce84c8d4d0f91e09eb xkeyboard-config-2.25.tar.bz2"
diff --git a/user/xmoto/APKBUILD b/user/xmoto/APKBUILD
new file mode 100644
index 000000000..7efa7a9c6
--- /dev/null
+++ b/user/xmoto/APKBUILD
@@ -0,0 +1,58 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=xmoto
+pkgver=0.5.11
+pkgrel=0
+pkgdesc="Challenging 2D motocross platform game"
+url="https://xmoto.tuxfamily.org/"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="bzip2-dev curl-dev glu-dev libjpeg-turbo-dev libpng-dev
+ libxdg-basedir-dev libxml2-dev lua5.3-dev mesa-dev ode-dev sdl-dev
+ sdl_mixer-dev sdl_net-dev sdl_ttf-dev sqlite-dev zlib-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://download.tuxfamily.org/xmoto/xmoto/0.5.11/xmoto-$pkgver-src.tar.gz
+ stupid-lua.patch
+ utf8.patch
+ "
+
+prepare() {
+ cd "$builddir"
+ default_prepare
+ update_config_sub
+ rm -r src/ode
+}
+
+build() {
+ cd "$builddir"
+ ./bootstrap
+ CPPFLAGS="$CPPFLAGS -D_GLIBCXX_USE_CXX11_ABI=0" \
+ LDFLAGS="$LDFLAGS $(pkg-config --libs lua)" \
+ ./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
+ install -D -m644 "$builddir"/extra/xmoto.desktop \
+ "$pkgdir"/usr/share/applications/xmoto.desktop
+ install -D -m644 "$builddir"/extra/xmoto.xpm \
+ "$pkgdir"/usr/share/icons/hicolor/48x48/apps/xmoto.xpm
+}
+
+sha512sums="7046745e8f7a045fa2ce1deb3fd75b73b233dc1092f5ecd6dd4e42938f70269a93a3a623a39a1f0520c90643a42dc1ce93c43ad07bf225ff6c50741cc02511f6 xmoto-0.5.11-src.tar.gz
+34dc4d83df72d0323d2995b35faacd6c097f1f381805a724c6a8a1edbf59c894e3db68057ef68b65f659d73e9d0976263bc5229b0502281d7c748519de86c55b stupid-lua.patch
+a43cafba12864bc2efd978fcef69ac5256b625dd581f02a93bafae7c4edaad9ebcadbd597fe31db77c85747400405c9fb6b55e494b9d6ded893e5d48f37e57ec utf8.patch"
diff --git a/user/xmoto/stupid-lua.patch b/user/xmoto/stupid-lua.patch
new file mode 100644
index 000000000..d99a1ed4a
--- /dev/null
+++ b/user/xmoto/stupid-lua.patch
@@ -0,0 +1,41 @@
+--- xmoto-0.5.11/configure.in.old 2014-03-29 10:35:24.000000000 +0000
++++ xmoto-0.5.11/configure.in 2018-09-29 03:51:05.210000000 +0000
+@@ -174,6 +174,7 @@
+ AC_CHECK_HEADER(lua50/lua.h, AC_DEFINE(HAVE_LUA50_LUA_H) [USE_LUA_VERSION="5.0"])
+ AC_CHECK_HEADER(lua51/lua.h, AC_DEFINE(HAVE_LUA51_LUA_H) [USE_LUA_VERSION="5.1"])
+ AC_CHECK_HEADER(lua5.1/lua.h, AC_DEFINE(HAVE_LUA5_1_LUA_H)[USE_LUA_VERSION="5.1"])
++AC_CHECK_HEADER(lua5.3/lua.h, AC_DEFINE(HAVE_LUA5_3_LUA_H)[USE_LUA_VERSION="5.3"])
+ AC_DEFINE(LUA_COMPAT_MODULE, 1)
+
+ AC_LANG_PUSH([C++])
+--- xmoto-0.5.11/src/include/xm_lua.h.old 2011-10-11 20:18:17.000000000 +0000
++++ xmoto-0.5.11/src/include/xm_lua.h 2018-09-29 03:51:49.230000000 +0000
+@@ -4,7 +4,11 @@
+ #include "lauxlib.h"
+ #include "lualib.h"
+ #else
+- #if defined(HAVE_LUA5_1_LUA_H)
++ #if defined(HAVE_LUA5_3_LUA_H)
++ #include <lua5.3/lua.h>
++ #include <lua5.3/lauxlib.h>
++ #include <lua5.3/lualib.h>
++ #elif defined(HAVE_LUA5_1_LUA_H)
+ #include <lua5.1/lua.h>
+ #include <lua5.1/lauxlib.h>
+ #include <lua5.1/lualib.h>
+--- xmoto-0.5.11/src/LuaLibBase.cpp.old 2014-03-29 09:46:24.000000000 +0000
++++ xmoto-0.5.11/src/LuaLibBase.cpp 2018-09-30 23:34:51.800000000 +0000
+@@ -42,7 +42,13 @@
+ luaL_requiref(m_pL, LUA_TABLIBNAME, luaopen_table, 1);
+ #endif
+
++#if LUA_VERSION_NUM < 503
+ luaL_openlib(m_pL, i_libname.c_str(), i_reg, 0);
++#else
++ lua_newtable(m_pL);
++ luaL_setfuncs(m_pL, i_reg, 0);
++ lua_setglobal(m_pL, i_libname.c_str());
++#endif
+ }
+
+ LuaLibBase::~LuaLibBase() {
diff --git a/user/xmoto/utf8.patch b/user/xmoto/utf8.patch
new file mode 100644
index 000000000..535bb515e
--- /dev/null
+++ b/user/xmoto/utf8.patch
@@ -0,0 +1,13 @@
+--- xmoto-0.5.11/src/helpers/utf8.h.old 2011-10-11 20:18:14.000000000 +0000
++++ xmoto-0.5.11/src/helpers/utf8.h 2018-09-30 23:29:10.310000000 +0000
+@@ -18,8 +18,8 @@
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ =============================================================================*/
+
+-#ifndef __UTF8_H__
+-#define __UTF8_H__
++#ifndef __HELPER_UTF8_H__
++#define __HELPER_UTF8_H__
+
+ #include <vector>
+ #include <string>
diff --git a/user/xorg-cf-files/APKBUILD b/user/xorg-cf-files/APKBUILD
new file mode 100644
index 000000000..5a438d2bf
--- /dev/null
+++ b/user/xorg-cf-files/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Johannes Matheis <jomat+alpinebuild@jmt.gr>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=xorg-cf-files
+pkgver=1.0.6
+pkgrel=0
+pkgdesc="Data files for the imake utility"
+url="http://xorg.freedesktop.org/"
+arch="noarch"
+license="X11"
+options="!check" # This package has no testsuite
+depends=""
+makedepends=""
+subpackages="$pkgname-doc"
+source="http://xorg.freedesktop.org/releases/individual/util/${pkgname}-${pkgver}.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
+
+md5sums="28649f34fa23143f1945aa2750e1472a xorg-cf-files-1.0.6.tar.bz2"
+sha256sums="4dcf5a9dbe3c6ecb9d2dd05e629b3d373eae9ba12d13942df87107fdc1b3934d xorg-cf-files-1.0.6.tar.bz2"
+sha512sums="1749a5fbcda2c15c300028abce79a3304cfb10f215bf98cf30558144eb64f9fa06a69203159f44405224ed567ac5bc0ff1222e3656367f69acc99f44871424fa xorg-cf-files-1.0.6.tar.bz2"
diff --git a/user/xorg-server/APKBUILD b/user/xorg-server/APKBUILD
index 78a942af4..80d9692a0 100644
--- a/user/xorg-server/APKBUILD
+++ b/user/xorg-server/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Łukasz Jendrysik <scadu@yandex.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xorg-server
-pkgver=1.20.1
+pkgver=1.20.2
pkgrel=0
pkgdesc="X.Org X11 server"
url="https://www.X.Org/"
@@ -143,6 +143,6 @@ xwayland() {
mv "$pkgdir"/usr/bin/Xwayland "$subpkgdir"/usr/bin/
}
-sha512sums="ef2b93a61683c8ca8d1f14b771e70db65ba119a73db8a46e7cdbf2ac2243e3f4b2732068eb5aa5d7b76f460db995a3c04390870198a5210ec30df4360ad9f94b xorg-server-1.20.1.tar.bz2
+sha512sums="1c87d78b14529dd4b438ef038118c8540d1d17bdd58bf08ec5408a2ddbe8d0dda48033a9a9477cfc2c4c304dd1078fa40968a03c4d0cd3398359dd0fadb8e7c7 xorg-server-1.20.2.tar.bz2
30a78f4278edd535c45ee3f80933427cb029a13abaa4b041f816515fdd8f64f00b9c6aef50d4eba2aaf0d4f333e730399864fd97fa18891273601c77a6637200 autoconfig-sis.patch
b799e757a22a61ac283adbd7a8df1ad4eccce0bb6cac38a0c962ba8438bba3cf6637a65bb64859e7b32399fca672283a49960207e186c271ba574580de360d09 fix-musl-arm.patch"
diff --git a/user/xorriso/APKBUILD b/user/xorriso/APKBUILD
index 7e79453c6..ebaff2e24 100644
--- a/user/xorriso/APKBUILD
+++ b/user/xorriso/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xorriso
-pkgver=1.4.9
+pkgver=1.5.0
pkgrel=0
pkgdesc="ISO 9660 Rock Ridge filesystem manipulator"
url="https://www.gnu.org/software/xorriso/"
@@ -34,4 +34,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="ca22e40f56e7ab61a6f4ac4a8d4189f68cce427a10d63e3b26af88b64bbd1c76ec6e3fa21818b7c2b6de5ce482caccc8b9de0fc16d8bfd7c9681fccfc8c8dd83 xorriso-1.4.9.tar.gz"
+sha512sums="39d74cff30532fba8ac3851245802323babbd2877129ab5bb14d0cab830ee3f2f678f41d922f3c12cb2c642f66f22006bc4ca457e6c1f766f3d1dbce37d29d31 xorriso-1.5.0.tar.gz"
diff --git a/user/xterm/APKBUILD b/user/xterm/APKBUILD
index 57656637c..7e35c3d49 100644
--- a/user/xterm/APKBUILD
+++ b/user/xterm/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
pkgname=xterm
-pkgver=335
+pkgver=337
pkgrel=0
pkgdesc="An X-based terminal emulator"
url="https://invisible-island.net/xterm/"
@@ -31,4 +31,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="386c3f4c9b3ee7750c4f03316fc94dfc6601d82b0fbac5714031e9e3c6f1acf5c949689fcc58deb8569516977eb88173356d3c890a263b7a1d0f383190a43362 xterm-335.tgz"
+sha512sums="fad31aa971a42cf38d3e3db2edc615b408d92226c305654b9276592c6dee075f31c7f082a3f549284f1685a31d5d9dedbda99c2c308a90bd741958f862806609 xterm-337.tgz"
diff --git a/user/xwininfo/APKBUILD b/user/xwininfo/APKBUILD
new file mode 100644
index 000000000..c9afec639
--- /dev/null
+++ b/user/xwininfo/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=xwininfo
+pkgver=1.1.4
+pkgrel=0
+pkgdesc="Window information utility for X"
+url="https://cgit.freedesktop.org/xorg/app/xwininfo"
+arch="all"
+options="!check" # No test suite.
+license="MIT AND X11"
+depends=""
+makedepends="libx11-dev libxext-dev util-macros"
+subpackages="$pkgname-doc"
+source="https://www.x.org/releases/individual/app/xwininfo-$pkgver.tar.bz2"
+
+build() {
+ cd "$builddir"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --infodir=/usr/share/info
+ make
+}
+
+package() {
+ cd "$builddir"
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="d3ab103a0a311e08d1eabc4346750c21eb7d2fbcdc27cab0989a2624b9cd488911614fcf9832603353450114b1231a8f8262cab16e090a0d458d83ec7b6b959b xwininfo-1.1.4.tar.bz2"